From 1369f6f8c0e95d604749be9ab001f8d485ab4aa8 Mon Sep 17 00:00:00 2001 From: kirbyydoge Date: Tue, 23 May 2023 19:30:08 +0300 Subject: [PATCH 1/5] Add ZC706 Vivado Project --- .../ZC706/ZC706.srcs/sim_1/tb_instr_mem.v | 80 + .../ZC706/ZC706.srcs/sim_1/tb_pcie_top.sv | 349 + .../ZC706.srcs/sim_1/tb_pcie_txn_buffer.v | 101 + .../axis_clock_converter.xci | 133 + .../sources_1/ip/data_fifo/data_fifo.xci | 594 + .../ip/instr_blk_mem/instr_blk_mem.xci | 316 + .../instr_blk_mem_sim/instr_blk_mem_sim.xci | 319 + .../sources_1/ip/instr_fifo/instr_fifo.xci | 593 + .../pcie_7x_0/doc/pcie_7x_v3_3_changelog.txt | 280 + .../sources_1/ip/pcie_7x_0/pcie_7x_0.dcp | Bin 0 -> 1227449 bytes .../sources_1/ip/pcie_7x_0/pcie_7x_0.veo | 240 + .../sources_1/ip/pcie_7x_0/pcie_7x_0.vho | 425 + .../sources_1/ip/pcie_7x_0/pcie_7x_0.xci | 631 + .../sources_1/ip/pcie_7x_0/pcie_7x_0.xml | 12604 +++ .../ip/pcie_7x_0/pcie_7x_0_sim_netlist.v | 66137 +++++++++++++ .../ip/pcie_7x_0/pcie_7x_0_sim_netlist.vhdl | 79081 ++++++++++++++++ .../sources_1/ip/pcie_7x_0/pcie_7x_0_stub.v | 241 + .../ip/pcie_7x_0/pcie_7x_0_stub.vhdl | 205 + .../sources_1/ip/pcie_7x_0/sim/pcie_7x_0.v | 1096 + .../pcie_7x_0/source/pcie_7x_0-PCIE_X0Y0.xdc | 156 + .../pcie_7x_0/source/pcie_7x_0_axi_basic_rx.v | 212 + .../source/pcie_7x_0_axi_basic_rx_null_gen.v | 383 + .../source/pcie_7x_0_axi_basic_rx_pipeline.v | 623 + .../source/pcie_7x_0_axi_basic_top.v | 282 + .../pcie_7x_0/source/pcie_7x_0_axi_basic_tx.v | 260 + .../source/pcie_7x_0_axi_basic_tx_pipeline.v | 543 + .../source/pcie_7x_0_axi_basic_tx_thrtl_ctl.v | 784 + .../ip/pcie_7x_0/source/pcie_7x_0_core_top.v | 2152 + .../ip/pcie_7x_0/source/pcie_7x_0_gt_common.v | 166 + .../source/pcie_7x_0_gt_rx_valid_filter_7x.v | 285 + .../ip/pcie_7x_0/source/pcie_7x_0_gt_top.v | 1027 + .../pcie_7x_0/source/pcie_7x_0_gt_wrapper.v | 2369 + .../source/pcie_7x_0_gtp_cpllpd_ovrd.v | 68 + .../pcie_7x_0/source/pcie_7x_0_gtp_pipe_drp.v | 370 + .../source/pcie_7x_0_gtp_pipe_rate.v | 461 + .../source/pcie_7x_0_gtp_pipe_reset.v | 537 + .../source/pcie_7x_0_gtx_cpllpd_ovrd.v | 68 + .../ip/pcie_7x_0/source/pcie_7x_0_pcie2_top.v | 1018 + .../ip/pcie_7x_0/source/pcie_7x_0_pcie_7x.v | 1634 + .../pcie_7x_0/source/pcie_7x_0_pcie_bram_7x.v | 212 + .../source/pcie_7x_0_pcie_bram_top_7x.v | 184 + .../source/pcie_7x_0_pcie_brams_7x.v | 296 + .../source/pcie_7x_0_pcie_pipe_lane.v | 328 + .../source/pcie_7x_0_pcie_pipe_misc.v | 219 + .../source/pcie_7x_0_pcie_pipe_pipeline.v | 798 + .../ip/pcie_7x_0/source/pcie_7x_0_pcie_top.v | 2080 + .../ip/pcie_7x_0/source/pcie_7x_0_pipe_drp.v | 782 + .../ip/pcie_7x_0/source/pcie_7x_0_pipe_eq.v | 830 + .../ip/pcie_7x_0/source/pcie_7x_0_pipe_rate.v | 1185 + .../pcie_7x_0/source/pcie_7x_0_pipe_reset.v | 576 + .../ip/pcie_7x_0/source/pcie_7x_0_pipe_sync.v | 645 + .../ip/pcie_7x_0/source/pcie_7x_0_pipe_user.v | 605 + .../pcie_7x_0/source/pcie_7x_0_pipe_wrapper.v | 1803 + .../ip/pcie_7x_0/source/pcie_7x_0_qpll_drp.v | 550 + .../pcie_7x_0/source/pcie_7x_0_qpll_reset.v | 370 + .../pcie_7x_0/source/pcie_7x_0_qpll_wrapper.v | 439 + .../ip/pcie_7x_0/source/pcie_7x_0_rxeq_scan.v | 366 + .../sources_1/ip/pcie_7x_0/synth/pcie_7x_0.v | 1106 + .../ip/pcie_7x_0/synth/pcie_7x_0_ooc.xdc | 76 + .../ip/pcie_7x_0/sys_clk_gen_ps_v.txt | 1 + .../sources_1/ip/pr_read_mem/pr_read_mem.xci | 318 + .../sources_1/ip/pr_ref_mem/pr_ref_mem.xci | 319 + .../sources_1/ip/rdback_fifo/rdback_fifo.xci | 585 + .../sources_1/ip/scratchpad/scratchpad.xci | 316 + .../ip/zq_calib_mem/zq_calib_mem.xci | 319 + projects/ZC706/ZC706.xpr | 1194 + projects/ZC706/coe/pr_read.coe | 15 + projects/ZC706/coe/pr_ref.coe | 51 + projects/ZC706/coe/pr_zq.coe | 42 + projects/ZC706/coe/simmem.coe | 398 + projects/ZC706/constraints/SODIMM.xdc | 819 + projects/ZC706/verilog/ddr3_adapter.v | 161 + projects/ZC706/verilog/instruction_buffer.v | 164 + projects/ZC706/verilog/pcie_app_7x.v | 207 + projects/ZC706/verilog/pcie_softmc_app.v | 957 + projects/ZC706/verilog/pcie_top.v | 706 + projects/ZC706/verilog/pcie_txn_buffer.v | 249 + projects/ZC706/verilog/phy/memctl_mig.v | 1015 + .../verilog/phy/mig_7series_v4_0_clk_ibuf.v | 130 + .../phy/mig_7series_v4_0_ddr_byte_group_io.v | 534 + .../phy/mig_7series_v4_0_ddr_byte_lane.v | 800 + .../phy/mig_7series_v4_0_ddr_calib_top.v | 2291 + .../phy/mig_7series_v4_0_ddr_if_post_fifo.v | 212 + .../verilog/phy/mig_7series_v4_0_ddr_mc_phy.v | 1804 + .../phy/mig_7series_v4_0_ddr_mc_phy_wrapper.v | 1684 + .../phy/mig_7series_v4_0_ddr_of_pre_fifo.v | 210 + .../phy/mig_7series_v4_0_ddr_phy_4lanes.v | 2056 + ...g_7series_v4_0_ddr_phy_ck_addr_cmd_delay.v | 233 + .../mig_7series_v4_0_ddr_phy_dqs_found_cal.v | 1198 + ...ig_7series_v4_0_ddr_phy_dqs_found_cal_hr.v | 1199 + .../phy/mig_7series_v4_0_ddr_phy_init.v | 5497 ++ .../phy/mig_7series_v4_0_ddr_phy_ocd_cntlr.v | 285 + .../phy/mig_7series_v4_0_ddr_phy_ocd_data.v | 231 + .../phy/mig_7series_v4_0_ddr_phy_ocd_edge.v | 231 + .../phy/mig_7series_v4_0_ddr_phy_ocd_lim.v | 598 + .../phy/mig_7series_v4_0_ddr_phy_ocd_mux.v | 207 + .../mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v | 594 + .../phy/mig_7series_v4_0_ddr_phy_ocd_samp.v | 329 + .../mig_7series_v4_0_ddr_phy_oclkdelay_cal.v | 552 + .../phy/mig_7series_v4_0_ddr_phy_prbs_rdlvl.v | 5683 ++ .../phy/mig_7series_v4_0_ddr_phy_rdlvl.v | 3380 + .../phy/mig_7series_v4_0_ddr_phy_tempmon.v | 559 + .../phy/mig_7series_v4_0_ddr_phy_top.v | 1444 + .../phy/mig_7series_v4_0_ddr_phy_wrcal.v | 1316 + .../phy/mig_7series_v4_0_ddr_phy_wrlvl.v | 1218 + ...mig_7series_v4_0_ddr_phy_wrlvl_off_delay.v | 246 + .../phy/mig_7series_v4_0_ddr_prbs_gen.v | 580 + .../phy/mig_7series_v4_0_ddr_skip_calib_tap.v | 837 + .../phy/mig_7series_v4_0_infrastructure.v | 767 + .../phy/mig_7series_v4_0_iodelay_ctrl.v | 355 + .../verilog/phy/mig_7series_v4_0_poc_cc.v | 203 + .../phy/mig_7series_v4_0_poc_edge_store.v | 117 + .../verilog/phy/mig_7series_v4_0_poc_meta.v | 302 + .../verilog/phy/mig_7series_v4_0_poc_pd.v | 131 + .../phy/mig_7series_v4_0_poc_tap_base.v | 301 + .../verilog/phy/mig_7series_v4_0_poc_top.v | 370 + .../verilog/phy/mig_7series_v4_0_tempmon.v | 381 + projects/ZC706/verilog/project.vh | 14 + projects/ZC706/verilog/softmc_top.v | 511 + projects/ZC706/verilog/zc706_pcie_4x_gen2.v | 582 + .../verilog/zc706_pcie_4x_gen2_pipe_clock.v | 578 + 121 files changed, 238859 insertions(+) create mode 100644 projects/ZC706/ZC706.srcs/sim_1/tb_instr_mem.v create mode 100644 projects/ZC706/ZC706.srcs/sim_1/tb_pcie_top.sv create mode 100644 projects/ZC706/ZC706.srcs/sim_1/tb_pcie_txn_buffer.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/axis_clock_converter/axis_clock_converter.xci create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/data_fifo/data_fifo.xci create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/instr_blk_mem/instr_blk_mem.xci create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/instr_blk_mem_sim/instr_blk_mem_sim.xci create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/instr_fifo/instr_fifo.xci create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/doc/pcie_7x_v3_3_changelog.txt create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0.dcp create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0.veo create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0.vho create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0.xci create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0.xml create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0_sim_netlist.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0_sim_netlist.vhdl create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0_stub.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0_stub.vhdl create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/sim/pcie_7x_0.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0-PCIE_X0Y0.xdc create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_rx.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_rx_null_gen.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_rx_pipeline.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_top.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_tx.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_tx_pipeline.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_tx_thrtl_ctl.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_core_top.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gt_common.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gt_rx_valid_filter_7x.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gt_top.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gt_wrapper.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gtp_cpllpd_ovrd.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gtp_pipe_drp.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gtp_pipe_rate.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gtp_pipe_reset.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gtx_cpllpd_ovrd.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie2_top.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_7x.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_bram_7x.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_bram_top_7x.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_brams_7x.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_pipe_lane.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_pipe_misc.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_pipe_pipeline.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_top.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_drp.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_eq.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_rate.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_reset.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_sync.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_user.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_wrapper.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_qpll_drp.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_qpll_reset.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_qpll_wrapper.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_rxeq_scan.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/synth/pcie_7x_0.v create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/synth/pcie_7x_0_ooc.xdc create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/sys_clk_gen_ps_v.txt create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pr_read_mem/pr_read_mem.xci create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/pr_ref_mem/pr_ref_mem.xci create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/rdback_fifo/rdback_fifo.xci create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/scratchpad/scratchpad.xci create mode 100644 projects/ZC706/ZC706.srcs/sources_1/ip/zq_calib_mem/zq_calib_mem.xci create mode 100644 projects/ZC706/ZC706.xpr create mode 100644 projects/ZC706/coe/pr_read.coe create mode 100644 projects/ZC706/coe/pr_ref.coe create mode 100644 projects/ZC706/coe/pr_zq.coe create mode 100644 projects/ZC706/coe/simmem.coe create mode 100644 projects/ZC706/constraints/SODIMM.xdc create mode 100644 projects/ZC706/verilog/ddr3_adapter.v create mode 100644 projects/ZC706/verilog/instruction_buffer.v create mode 100644 projects/ZC706/verilog/pcie_app_7x.v create mode 100644 projects/ZC706/verilog/pcie_softmc_app.v create mode 100644 projects/ZC706/verilog/pcie_top.v create mode 100644 projects/ZC706/verilog/pcie_txn_buffer.v create mode 100644 projects/ZC706/verilog/phy/memctl_mig.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_clk_ibuf.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_byte_group_io.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_byte_lane.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_calib_top.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_if_post_fifo.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_mc_phy.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_mc_phy_wrapper.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_of_pre_fifo.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_4lanes.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ck_addr_cmd_delay.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_dqs_found_cal.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_dqs_found_cal_hr.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_init.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_cntlr.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_data.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_edge.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_lim.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_mux.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_samp.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_oclkdelay_cal.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_prbs_rdlvl.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_rdlvl.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_tempmon.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_top.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_wrcal.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_wrlvl.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_wrlvl_off_delay.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_prbs_gen.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_skip_calib_tap.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_infrastructure.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_iodelay_ctrl.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_poc_cc.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_poc_edge_store.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_poc_meta.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_poc_pd.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_poc_tap_base.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_poc_top.v create mode 100644 projects/ZC706/verilog/phy/mig_7series_v4_0_tempmon.v create mode 100644 projects/ZC706/verilog/project.vh create mode 100644 projects/ZC706/verilog/softmc_top.v create mode 100644 projects/ZC706/verilog/zc706_pcie_4x_gen2.v create mode 100644 projects/ZC706/verilog/zc706_pcie_4x_gen2_pipe_clock.v diff --git a/projects/ZC706/ZC706.srcs/sim_1/tb_instr_mem.v b/projects/ZC706/ZC706.srcs/sim_1/tb_instr_mem.v new file mode 100644 index 0000000..8417af0 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sim_1/tb_instr_mem.v @@ -0,0 +1,80 @@ +`timescale 1ns / 1ps + +module tb_instr_mem(); + +localparam FIFO_SCALE = 4; +localparam DATA_WIDTH = 64; +localparam KEEP_WIDTH = DATA_WIDTH / 8; + +reg clk; +reg reset; + +reg [DATA_WIDTH-1:0] s_axis_tdata; +reg s_axis_tvalid; +reg [KEEP_WIDTH-1:0] s_axis_tkeep; +wire s_axis_tready; + +wire [DATA_WIDTH*FIFO_SCALE-1:0] m_axis_tdata; +wire m_axis_tvalid; +reg m_axis_tready; + +instruction_buffer #( + .C_DATA_WIDTH(DATA_WIDTH), + .FIFO_WIDTH(FIFO_SCALE * DATA_WIDTH) +) uut( + .clk(clk), + .reset(reset), + .s_axis_tdata(s_axis_tdata), + .s_axis_tready(s_axis_tready), + .s_axis_tkeep(s_axis_tkeep), + .s_axis_tvalid(s_axis_tvalid), + .m_axis_tdata(m_axis_tdata), + .m_axis_tready(m_axis_tready), + .m_axis_tvalid(m_axis_tvalid) +); + +always begin + clk = 0; + #5; + clk = 1; + #5; +end + +localparam TEST_LEN = 16; +reg [DATA_WIDTH-1:0] data [0:TEST_LEN-1]; +reg [KEEP_WIDTH-1:0] data_keep [0:TEST_LEN-1]; + +integer i; +integer j; +initial begin + for (i = 0; i < TEST_LEN; i = i+1) begin + for (j = 0; j < 8; j = j+1) begin + data[i][(KEEP_WIDTH - j - 1) * 8 +: 8] = (8 * i + j) & 'hFF; + end + /* + data_keep[i] = i % 4 == 0 ? 'h0F : + i % 4 == 1 ? 'hF0 : + i % 4 == 2 ? 'h0F : 'hFF ; + */ + data_keep[i] = i == 0 ? 'h0F : 'hFF ; + end + reset = 1; + s_axis_tdata = 0; + s_axis_tvalid = 0; + m_axis_tready = 0; + repeat(10) begin @(posedge clk); end #1; + reset = 0; + for (i = 0; i < TEST_LEN;) begin + s_axis_tdata = data[i]; + s_axis_tkeep = data_keep[i]; + s_axis_tvalid = 1; + if (s_axis_tready && s_axis_tvalid) begin + i = i+1; + end + @(posedge clk) #1; + end + s_axis_tvalid = 0; + m_axis_tready = 1; +end + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sim_1/tb_pcie_top.sv b/projects/ZC706/ZC706.srcs/sim_1/tb_pcie_top.sv new file mode 100644 index 0000000..6a406a2 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sim_1/tb_pcie_top.sv @@ -0,0 +1,349 @@ +`timescale 1ns / 1ps + +module tb_pcie_top(); + +localparam SOFTMC_STREAM_WIDTH = 256; +localparam C_DATA_WIDTH = 64; +localparam C_ADDR_WIDTH = 64; +localparam KEEP_WIDTH = C_DATA_WIDTH / 8; + +reg user_clk; +reg user_reset; +reg user_lnk_up; + +reg [7:0] cfg_bus_number; +reg [4:0] cfg_device_number; +reg [2:0] cfg_function_number; +wire cfg_interrupt; +wire cfg_interrupt_assert; +reg cfg_interrupt_rdy; +wire [7:0] cfg_interrupt_di; +reg cfg_interrupt_msienable; + +wire m_axis_rx_tready; +reg [C_DATA_WIDTH-1:0] m_axis_rx_tdata; +reg [KEEP_WIDTH-1:0] m_axis_rx_tkeep; +reg m_axis_rx_tlast; +reg m_axis_rx_tvalid; +reg [21:0] m_axis_rx_tuser; +reg tx_src_dsc; + +wire [C_DATA_WIDTH-1:0] s_axis_tx_tdata; +wire [KEEP_WIDTH-1:0] s_axis_tx_tkeep; +wire s_axis_tx_tlast; +wire s_axis_tx_tvalid; +reg s_axis_tx_tready; + +reg cfg_to_turnoff; +wire cfg_turnoff_ok; +reg [15:0] cfg_completer_id; + +wire [9:0] pci_cfg_dwaddr; +wire pci_cfg_rd_en; +wire [31:0] pci_cfg_dout; +wire pci_cfg_rd_wr_done; + +wire [15:0] cfg_dcommand; +reg [15:0] cfg_command; + +wire [SOFTMC_STREAM_WIDTH-1:0] softmc_h2c_tdata; +wire softmc_h2c_tvalid; +reg softmc_h2c_tready; +wire softmc_h2c_tlast; + +reg [SOFTMC_STREAM_WIDTH-1:0] softmc_c2h_tdata; +reg softmc_c2h_tvalid; +wire softmc_c2h_tready; +reg softmc_c2h_tlast; + +pcie_app_softmc uut( + .user_clk(user_clk), + .user_reset(user_reset), + .user_lnk_up(user_lnk_up), + + .softmc_h2c_tdata(softmc_h2c_tdata), + .softmc_h2c_tvalid(softmc_h2c_tvalid), + .softmc_h2c_tready(softmc_h2c_tready), + .softmc_h2c_tlast(softmc_h2c_tlast), + + .softmc_c2h_tdata(softmc_c2h_tdata), + .softmc_c2h_tvalid(softmc_c2h_tvalid), + .softmc_c2h_tready(softmc_c2h_tready), + .softmc_c2h_tlast(softmc_c2h_tlast), + + .cfg_bus_number(cfg_bus_number), + .cfg_device_number(cfg_device_number), + .cfg_function_number(cfg_function_number), + .cfg_interrupt(cfg_interrupt), + .cfg_interrupt_assert(cfg_interrupt_assert), + .cfg_interrupt_rdy(cfg_interrupt_rdy), + .cfg_interrupt_di(cfg_interrupt_di), + .cfg_interrupt_msienable(cfg_interrupt_msienable), + + .cfg_dcommand(cfg_dcommand), + .cfg_command(cfg_command), + + .pci_cfg_dwaddr(pci_cfg_dwaddr), + .pci_cfg_rd_en(pci_cfg_rd_en), + .pci_cfg_dout(pci_cfg_dout), + .pci_cfg_rd_wr_done(pci_cfg_rd_wr_done), + + .m_axis_rx_tready(m_axis_rx_tready), + .m_axis_rx_tdata(m_axis_rx_tdata), + .m_axis_rx_tkeep(m_axis_rx_tkeep), + .m_axis_rx_tlast(m_axis_rx_tlast), + .m_axis_rx_tvalid(m_axis_rx_tvalid), + .m_axis_rx_tuser(m_axis_rx_tuser), + + .tx_src_dsc(tx_src_dsc), + + .s_axis_tx_tdata(s_axis_tx_tdata), + .s_axis_tx_tkeep(s_axis_tx_tkeep), + .s_axis_tx_tlast(s_axis_tx_tlast), + .s_axis_tx_tvalid(s_axis_tx_tvalid), + .s_axis_tx_tready(s_axis_tx_tready), + + .cfg_to_turnoff(cfg_to_turnoff), + .cfg_turnoff_ok(cfg_turnoff_ok), + .cfg_completer_id(cfg_completer_id) +); + +always begin + user_clk = 0; + #5; + user_clk = 1; + #5; +end + + +// PCIe IP CFG Channel Simulation +localparam READ_LATENCY = 'd3; + +reg cfg_read_en; +reg cfg_read_en_prev; +wire cfg_read_en_spike; + +reg [31:0] cfg_dout [0:READ_LATENCY-1]; +reg cfg_rd_done [0:READ_LATENCY-1]; + +assign cfg_read_en_spike = cfg_read_en && !cfg_read_en_prev; +assign pci_cfg_dout = cfg_dout[0]; +assign pci_cfg_rd_wr_done = cfg_rd_done[0]; +assign cfg_dcommand = 'b0000_0000_0000_0000; + +integer j; +always @(posedge user_clk) begin + cfg_read_en <= pci_cfg_rd_en; + cfg_read_en_prev <= cfg_read_en; + cfg_dout[READ_LATENCY-1] <= pci_cfg_dwaddr == 'h04 ? 'hf0100000 : + pci_cfg_dwaddr == 'h05 ? 'hf0900000 : 'hffffffff; + cfg_rd_done[READ_LATENCY-1] <= cfg_read_en_spike; + for(j = 0; j < READ_LATENCY - 1; j = j + 1) begin + cfg_dout[j] <= cfg_dout[j+1]; + cfg_rd_done[j] <= cfg_rd_done[j+1]; + end +end + +// c2h data generator +localparam c2h_cap = 1024 * 8 * 8 / SOFTMC_STREAM_WIDTH; +reg [31:0] c2h_count; +reg [15:0] c2h_repeat; +always @(posedge user_clk) begin + if (user_reset) begin + softmc_c2h_tdata <= 0; + softmc_c2h_tvalid <= 0; + softmc_c2h_tlast <= 0; + c2h_repeat <= 0; + c2h_count <= 0; + end + else if (softmc_c2h_tready && softmc_c2h_tvalid) begin + softmc_c2h_tdata <= {(SOFTMC_STREAM_WIDTH/16){c2h_repeat}}; + softmc_c2h_tvalid <= c2h_count < (c2h_cap - 1); + softmc_c2h_tlast <= c2h_count == (c2h_cap - 2); + c2h_repeat <= c2h_repeat + (c2h_count < (c2h_cap - 1) ? 1 : 0); + c2h_count <= c2h_count + 1; + end + else if (!softmc_c2h_tvalid) begin + softmc_c2h_tdata <= {(SOFTMC_STREAM_WIDTH/16){c2h_repeat}}; + softmc_c2h_tvalid <= c2h_count < (c2h_cap); + softmc_c2h_tlast <= c2h_count == (c2h_cap - 1); + c2h_repeat <= c2h_repeat + (c2h_count < (c2h_cap) ? 1 : 0); + end +end + +always @(posedge user_clk) begin + if (cfg_interrupt) begin + cfg_command <= 'b0000_0100_0000_0100; + end + else begin + cfg_command <= 'b0000_0000_0000_0100; + end +end + +// TLPs +localparam CMD_LEN = 8; +localparam TEST_DATA_LEN = 10 + 2; // 20 Data + 3 Header -> 12 in DW pacets + +reg [C_DATA_WIDTH-1:0] tb_dw_queue [0:CMD_LEN-1]; +reg [KEEP_WIDTH-1:0] tb_keep_queue [0:CMD_LEN-1]; +reg tb_tlast_queue [0:CMD_LEN-1]; +reg [21:0] tb_user_queue [0:CMD_LEN-1]; + +reg [C_DATA_WIDTH-1:0] tb_cmp_queue [0:TEST_DATA_LEN-1]; +reg [KEEP_WIDTH-1:0] tb_cmp_keep_queue [0:TEST_DATA_LEN-1]; +reg tb_cmp_tlast_queue [0:TEST_DATA_LEN-1]; +reg [21:0] tb_cmp_user_queue [0:TEST_DATA_LEN-1]; + +integer i; +reg [7:0] data_repeat; +initial begin + softmc_h2c_tready = 0; + + tb_cmp_queue ['h00] = 'h0000000f_4a000014; + tb_cmp_keep_queue ['h00] = 'hff; + tb_cmp_tlast_queue ['h00] = 'h0; + tb_cmp_user_queue ['h00] = 'b00000000; + tb_cmp_queue ['h01] = 'h01010101_00000100; + tb_cmp_keep_queue ['h01] = 'hff; + tb_cmp_tlast_queue ['h01] = 'h0; + tb_cmp_user_queue ['h01] = 'b00000000; + for (i = 0; i < 9; i = i + 1) begin + data_repeat = 2 * i + 3; + tb_cmp_queue ['h02 + i][63:32] = {4{data_repeat}}; + data_repeat = 2 * i + 2; + tb_cmp_queue ['h02 + i][31:0] = {4{data_repeat}}; + tb_cmp_keep_queue ['h02 + i] = 'hff; + tb_cmp_tlast_queue ['h02 + i] = 'h0; + tb_cmp_user_queue ['h02 + i] = 'b00000000; + end + tb_cmp_queue ['h0b] = 'h00000000_14141414; + tb_cmp_keep_queue ['h0b] = 'h0f; + tb_cmp_tlast_queue ['h0b] = 'h1; + tb_cmp_user_queue ['h0b] = 'b00000000; + + tb_dw_queue ['h00] = 'h0000000f_40000001; + tb_keep_queue ['h00] = 'hff; + tb_tlast_queue ['h00] = 'h0; + tb_user_queue ['h00] = 'b00000100; + tb_dw_queue ['h01] = 'h000001f8_f0100008; + tb_keep_queue ['h01] = 'hff; + tb_tlast_queue ['h01] = 'h1; + tb_user_queue ['h01] = 'b00000100; + tb_dw_queue ['h02] = 'h0000000f_40000001; + tb_keep_queue ['h02] = 'hff; + tb_tlast_queue ['h02] = 'h0; + tb_user_queue ['h02] = 'b00000100; + tb_dw_queue ['h03] = 'h01000000_f0100004; + tb_keep_queue ['h03] = 'hff; + tb_tlast_queue ['h03] = 'h1; + tb_user_queue ['h03] = 'b00000100; + tb_dw_queue ['h04] = 'h0000000f_40000001; + tb_keep_queue ['h04] = 'hff; + tb_tlast_queue ['h04] = 'h0; + tb_user_queue ['h04] = 'b00000100; + tb_dw_queue ['h05] = 'h09005000_f0100000; + tb_keep_queue ['h05] = 'hff; + tb_tlast_queue ['h05] = 'h1; + tb_user_queue ['h05] = 'b00000100; + tb_dw_queue ['h06] = 'h0000000f_40000001; + tb_keep_queue ['h06] = 'hff; + tb_tlast_queue ['h06] = 'h0; + tb_user_queue ['h06] = 'b00000100; + tb_dw_queue ['h07] = 'h000002f8_f0100014; + tb_keep_queue ['h07] = 'hff; + tb_tlast_queue ['h07] = 'h1; + tb_user_queue ['h07] = 'b00000100; + + cfg_interrupt_msienable = 0; + + cfg_bus_number = 0; + cfg_device_number = 1; + cfg_function_number = 0; + cfg_interrupt_rdy = 0; + user_reset = 1; + user_lnk_up = 0; + m_axis_rx_tvalid = 0; + s_axis_tx_tready = 0; + #100; + @(posedge user_clk) #1; + user_reset = 0; + user_lnk_up = 1; + cfg_interrupt_rdy = 1; + s_axis_tx_tready = 1; + softmc_h2c_tready = 1; + + for (i = 0; i < CMD_LEN; ) begin + m_axis_rx_tdata = tb_dw_queue[i]; + m_axis_rx_tkeep = tb_keep_queue[i]; + m_axis_rx_tlast = tb_tlast_queue[i]; + m_axis_rx_tuser = tb_user_queue[i]; + m_axis_rx_tvalid = 1; + if (m_axis_rx_tready && m_axis_rx_tvalid) begin + i = i + 1; + end + @(posedge user_clk) #1; + end + m_axis_rx_tvalid = 0; + m_axis_rx_tlast = 0; + m_axis_rx_tkeep = 0; + + wait(s_axis_tx_tlast); + @(posedge user_clk) #1; + for (i = 0; i < TEST_DATA_LEN; ) begin + m_axis_rx_tdata = tb_cmp_queue[i]; + m_axis_rx_tkeep = tb_cmp_keep_queue[i]; + m_axis_rx_tlast = tb_cmp_tlast_queue[i]; + m_axis_rx_tuser = tb_cmp_user_queue[i]; + m_axis_rx_tvalid = 1; + if (m_axis_rx_tready && m_axis_rx_tvalid) begin + i = i + 1; + end + @(posedge user_clk) #1; + end + m_axis_rx_tvalid = 0; + m_axis_rx_tlast = 0; + m_axis_rx_tkeep = 0; + + wait(c2h_count == c2h_cap); + tb_dw_queue ['h00] = 'h0000000f_40000001; + tb_keep_queue ['h00] = 'hff; + tb_tlast_queue ['h00] = 'h0; + tb_user_queue ['h00] = 'b00000100; + tb_dw_queue ['h01] = 'h000002f8_f0100008; + tb_keep_queue ['h01] = 'hff; + tb_tlast_queue ['h01] = 'h1; + tb_user_queue ['h01] = 'b00000100; + tb_dw_queue ['h02] = 'h0000000f_40000001; + tb_keep_queue ['h02] = 'hff; + tb_tlast_queue ['h02] = 'h0; + tb_user_queue ['h02] = 'b00000100; + tb_dw_queue ['h03] = 'h01000000_f0100004; + tb_keep_queue ['h03] = 'hff; + tb_tlast_queue ['h03] = 'h1; + tb_user_queue ['h03] = 'b00000100; + tb_dw_queue ['h04] = 'h0000000f_40000001; + tb_keep_queue ['h04] = 'hff; + tb_tlast_queue ['h04] = 'h0; + tb_user_queue ['h04] = 'b00000100; + tb_dw_queue ['h05] = 'h03000020_f0100000; + tb_keep_queue ['h05] = 'hff; + tb_tlast_queue ['h05] = 'h1; + tb_user_queue ['h05] = 'b00000100; + + for (i = 0; i < CMD_LEN; ) begin + m_axis_rx_tdata = tb_dw_queue[i]; + m_axis_rx_tkeep = tb_keep_queue[i]; + m_axis_rx_tlast = tb_tlast_queue[i]; + m_axis_rx_tuser = tb_user_queue[i]; + m_axis_rx_tvalid = 1; + if (m_axis_rx_tready && m_axis_rx_tvalid) begin + i = i + 1; + end + @(posedge user_clk) #1; + end + m_axis_rx_tvalid = 0; + m_axis_rx_tlast = 0; + m_axis_rx_tkeep = 0; +end + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sim_1/tb_pcie_txn_buffer.v b/projects/ZC706/ZC706.srcs/sim_1/tb_pcie_txn_buffer.v new file mode 100644 index 0000000..8fc4050 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sim_1/tb_pcie_txn_buffer.v @@ -0,0 +1,101 @@ +`timescale 1ns / 1ps + +module tb_pcie_txn_buffer(); + +localparam C_IN_DATA_WIDTH = 128; +localparam C_OUT_DATA_WIDTH = 64; +localparam C_IN_KEEP = C_IN_DATA_WIDTH / 8; +localparam C_OUT_KEEP = C_OUT_DATA_WIDTH / 8; +localparam DATA_COUNT_WIDTH = 32; + +reg clk; +reg reset; +reg [C_IN_DATA_WIDTH-1:0] s_axis_tdata; +reg [C_IN_KEEP-1:0] s_axis_tkeep; +reg s_axis_tvalid; +wire s_axis_tready; +reg s_axis_tlast; +wire [C_OUT_DATA_WIDTH-1:0] m_axis_tdata; +wire [C_OUT_DATA_WIDTH/2-1:0] m_axis_upper_half_data; +wire [C_OUT_KEEP-1:0] m_axis_tkeep; +wire [C_OUT_KEEP/2-1:0] m_axis_upper_half_keep; +wire m_axis_tvalid; +wire m_axis_upper_half_valid; +reg m_axis_tready; +reg m_axis_upper_half_ready; +wire [DATA_COUNT_WIDTH-1:0] data_count; +wire programmed_stop; + +pcie_txn_buffer #( + .C_IN_DATA_WIDTH(C_IN_DATA_WIDTH), + .C_OUT_DATA_WIDTH(C_OUT_DATA_WIDTH) +) uut ( + .clk(clk), + .reset(reset), + .s_axis_tdata(s_axis_tdata), + .s_axis_tkeep(s_axis_tkeep), + .s_axis_tvalid(s_axis_tvalid), + .s_axis_tready(s_axis_tready), + .s_axis_tlast(s_axis_tlast), + .m_axis_tdata(m_axis_tdata), + .m_axis_upper_half_data(m_axis_upper_half_data), + .m_axis_tkeep(m_axis_tkeep), + .m_axis_upper_half_keep(m_axis_upper_half_keep), + .m_axis_tvalid(m_axis_tvalid), + .m_axis_upper_half_valid(m_axis_upper_half_valid), + .m_axis_tready(m_axis_tready), + .m_axis_upper_half_ready(m_axis_upper_half_ready), + .data_count(data_count), + .programmed_stop(programmed_stop) +); + +always begin + clk = 0; + #5; + clk = 1; + #5; +end + +integer i; + +localparam WRITE_LENGTH = 16; + +initial begin + s_axis_tdata = 0; + s_axis_tkeep = 0; + s_axis_tvalid = 0; + s_axis_tlast = 0; + m_axis_tready = 0; + m_axis_upper_half_ready = 0; + reset = 1; + repeat (10) @(posedge clk) #1; + reset = 0; + for (i = 0; i < WRITE_LENGTH;) begin + s_axis_tdata = {C_IN_KEEP{i[C_IN_KEEP-1:0]}}; + s_axis_tkeep = {C_IN_KEEP{1'b1}}; + s_axis_tvalid = 1; + if (s_axis_tready && s_axis_tvalid) begin + i = i + 1; + end + @(posedge clk) #2; + end + s_axis_tvalid = 0; + m_axis_tready = 0; + m_axis_upper_half_ready = 0; + wait(m_axis_tvalid); + @(posedge clk) #2; + m_axis_tready = 0; + m_axis_upper_half_ready = 1; + @(posedge clk) #2; + m_axis_tready = 1; + m_axis_upper_half_ready = 0; + wait(!m_axis_tvalid); + @(posedge clk) #2; + m_axis_tready = 1; + m_axis_upper_half_ready = 1; + repeat(5) @(posedge clk) #2; + m_axis_tready = 0; + m_axis_upper_half_ready = 0; +end + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/axis_clock_converter/axis_clock_converter.xci b/projects/ZC706/ZC706.srcs/sources_1/ip/axis_clock_converter/axis_clock_converter.xci new file mode 100644 index 0000000..0a1221f --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/axis_clock_converter/axis_clock_converter.xci @@ -0,0 +1,133 @@ + + + xilinx.com + xci + unknown + 1.0 + + + axis_clock_converter + + + + 100000000 + 1 + 1 + 1 + 0 + 0 + undef + 0.000 + 32 + 0 + 0 + 0 + ACTIVE_LOW + + + + 100000000 + 0 + 0 + 0.000 + 0 + ACTIVE_LOW + + 100000000 + 1 + 1 + 1 + 0 + 0 + undef + 0.000 + 32 + 0 + 0 + 0 + ACTIVE_LOW + + + + 100000000 + 0 + 0 + 0.000 + 0 + ACTIVE_LOW + 0 + 0b00000000000000000000000000011011 + 256 + 1 + 1 + 1 + zynq + 1 + 2 + 2 + 1 + 0 + 1:2 + axis_clock_converter + 1 + 1 + 0 + 1 + 2 + 32 + 0 + 0 + 0 + zynq + xilinx.com:zc706:part0:1.4 + + xc7z045 + ffg900 + VERILOG + + MIXED + -2 + + + TRUE + TRUE + IP_Flow + 23 + TRUE + ../../../../ZC706.gen/sources_1/ip/axis_clock_converter + + . + 2020.2 + OUT_OF_CONTEXT + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/data_fifo/data_fifo.xci b/projects/ZC706/ZC706.srcs/sources_1/ip/data_fifo/data_fifo.xci new file mode 100644 index 0000000..488039f --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/data_fifo/data_fifo.xci @@ -0,0 +1,594 @@ + + + xilinx.com + xci + unknown + 1.0 + + + data_fifo + + + + + + 100000000 + 0 + 0 + 0.000 + + + 100000000 + 0 + 0 + 0.000 + 1 + 0 + 0 + 0 + + 1 + 100000000 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0.000 + AXI4LITE + READ_WRITE + 0 + 0 + 0 + 0 + 0 + + 100000000 + 1 + 0 + 1 + 0 + 0 + undef + 0.000 + 32 + 0 + 0 + 0 + + + + 100000000 + 0 + 0 + 0.000 + + 100000000 + 0 + 0 + 0.000 + 0 + 1 + 0 + 0 + 0 + + 1 + 100000000 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0.000 + AXI4LITE + READ_WRITE + 0 + 0 + 0 + 0 + 0 + + 100000000 + 1 + 0 + 1 + 0 + 0 + undef + 0.000 + 32 + 0 + 0 + 0 + + + + 100000000 + 0 + 0 + 0.000 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 256 + 1 + 1 + 32 + 32 + 1 + 0 + 32 + 1 + 1 + 1 + 64 + 1 + 8 + 1 + 1 + 1 + 1 + 1 + 0 + 10 + BlankString + 18 + 288 + 32 + 64 + 32 + 64 + 2 + 0 + 18 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + zynq + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 2 + 1 + 2 + 1 + 2 + 0 + 1 + 1 + BlankString + 1 + 0 + 0 + 0 + 1 + 0 + 4kx4 + 512x72 + 512x36 + 1kx36 + 512x36 + 1kx36 + 512x36 + 2 + 62 + 14 + 1022 + 14 + 1022 + 14 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1022 + 63 + 15 + 1023 + 15 + 1023 + 15 + 1021 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 10 + 1024 + 1 + 10 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 10 + 1024 + 64 + 16 + 1024 + 16 + 1024 + 16 + 1 + 10 + 6 + 4 + 10 + 4 + 10 + 4 + 1 + 32 + 0 + 0 + false + false + false + 0 + 0 + Slave_Interface_Clock_Enable + Common_Clock + data_fifo + 64 + false + 10 + false + false + 0 + 2 + 62 + 14 + 1022 + 14 + 1022 + 14 + 3 + false + false + true + false + false + false + false + false + false + Hard_ECC + false + false + false + false + false + false + true + true + false + true + Data_FIFO + Data_FIFO + Data_FIFO + Data_FIFO + Data_FIFO + Data_FIFO + Common_Clock_Block_RAM + Common_Clock_Distributed_RAM + Common_Clock_Block_RAM + Common_Clock_Distributed_RAM + Common_Clock_Block_RAM + Common_Clock_Distributed_RAM + Common_Clock_Block_RAM + 1 + 1022 + 63 + 15 + 1023 + 15 + 1023 + 15 + 1021 + false + true + false + 0 + AXI_STREAM + false + false + false + false + false + false + false + false + false + false + false + false + false + false + 18 + 1024 + 64 + 16 + 1024 + 16 + 1024 + 16 + false + 18 + 1024 + Embedded_Reg + false + false + Active_High + Active_High + AXI4 + Standard_FIFO + No_Programmable_Empty_Threshold + No_Programmable_Empty_Threshold + No_Programmable_Empty_Threshold + No_Programmable_Empty_Threshold + No_Programmable_Empty_Threshold + No_Programmable_Empty_Threshold + No_Programmable_Empty_Threshold + No_Programmable_Full_Threshold + No_Programmable_Full_Threshold + No_Programmable_Full_Threshold + No_Programmable_Full_Threshold + No_Programmable_Full_Threshold + No_Programmable_Full_Threshold + No_Programmable_Full_Threshold + READ_WRITE + 0 + 1 + false + 10 + Fully_Registered + Fully_Registered + Fully_Registered + Fully_Registered + Fully_Registered + Fully_Registered + true + Asynchronous_Reset + false + 32 + 0 + 0 + 32 + 32 + 0 + false + false + Active_High + Active_High + true + false + false + false + false + Active_High + 0 + false + Active_High + 1 + false + 10 + false + FIFO + false + false + false + false + FIFO + FIFO + 2 + 2 + false + FIFO + FIFO + FIFO + zynq + xilinx.com:zc706:part0:1.4 + + xc7z045 + ffg900 + VERILOG + + MIXED + -2 + + + TRUE + TRUE + IP_Flow + 5 + TRUE + ../../../../ZC706.gen/sources_1/ip/data_fifo + + . + 2020.2 + OUT_OF_CONTEXT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/instr_blk_mem/instr_blk_mem.xci b/projects/ZC706/ZC706.srcs/sources_1/ip/instr_blk_mem/instr_blk_mem.xci new file mode 100644 index 0000000..bf2af3a --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/instr_blk_mem/instr_blk_mem.xci @@ -0,0 +1,316 @@ + + + xilinx.com + xci + unknown + 1.0 + + + instr_blk_mem + + + 4096 + 1 + 0 + 0 + 0 + + 1 + 100000000 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0.000 + AXI4LITE + READ_WRITE + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + 1 + 100000000 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0.000 + AXI4LITE + READ_WRITE + 0 + 0 + 0 + 0 + 0 + OTHER + NONE + 8192 + 32 + 1 + + OTHER + NONE + 8192 + 32 + 1 + + + 100000000 + 0 + 0 + 0.000 + 0 + 11 + 11 + 1 + 4 + 0 + 1 + 9 + 0 + 0 + 4 + NONE + 0 + 0 + 0 + ./ + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + Estimated Power for IP : 10.698001 mW + zynq + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + instr_blk_mem.mem + no_coe_file_loaded + 0 + 0 + 0 + 0 + 1 + 2048 + 2048 + 1 + 1 + 64 + 64 + 0 + 0 + CE + CE + ALL + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 2048 + 2048 + WRITE_FIRST + WRITE_FIRST + 64 + 64 + zynq + 4 + Memory_Slave + AXI4_Full + false + Minimum_Area + false + 9 + NONE + no_coe_file_loaded + ALL + instr_blk_mem + false + false + false + false + false + false + false + false + false + Use_ENA_Pin + Always_Enabled + Single_Bit_Error_Injection + false + Native + false + no_mem_loaded + Single_Port_RAM + WRITE_FIRST + WRITE_FIRST + 0 + 0 + BRAM + 0 + 100 + 100 + 50 + 0 + 0 + 0 + 8kx2 + false + false + 1 + 1 + 64 + 64 + false + false + false + false + 0 + false + false + CE + CE + SYNC + false + false + false + false + false + false + false + 2048 + 64 + 64 + No_ECC + false + false + false + Stand_Alone + zynq + xilinx.com:zc706:part0:1.4 + + xc7z045 + ffg900 + VERILOG + + MIXED + -2 + + + TRUE + TRUE + IP_Flow + 4 + TRUE + ../../../../ZC706.gen/sources_1/ip/instr_blk_mem + + . + 2020.2 + OUT_OF_CONTEXT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/instr_blk_mem_sim/instr_blk_mem_sim.xci b/projects/ZC706/ZC706.srcs/sources_1/ip/instr_blk_mem_sim/instr_blk_mem_sim.xci new file mode 100644 index 0000000..7b74ab8 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/instr_blk_mem_sim/instr_blk_mem_sim.xci @@ -0,0 +1,319 @@ + + + xilinx.com + xci + unknown + 1.0 + + + instr_blk_mem_sim + + + 4096 + 1 + 0 + 0 + 0 + + 1 + 100000000 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0.000 + AXI4LITE + READ_WRITE + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + 1 + 100000000 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0.000 + AXI4LITE + READ_WRITE + 0 + 0 + 0 + 0 + 0 + OTHER + NONE + 8192 + 32 + 1 + + OTHER + NONE + 8192 + 32 + 1 + + + 100000000 + 0 + 0 + 0.000 + 0 + 10 + 10 + 1 + 4 + 0 + 1 + 9 + 0 + 0 + 2 + NONE + 0 + 0 + 0 + ./ + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + Estimated Power for IP : 5.9043 mW + zynq + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + instr_blk_mem_sim.mem + instr_blk_mem_sim.mif + 0 + 1 + 0 + 0 + 1 + 1024 + 1024 + 1 + 1 + 64 + 64 + 0 + 0 + CE + CE + ALL + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + 1 + 1024 + 1024 + WRITE_FIRST + WRITE_FIRST + 64 + 64 + zynq + 4 + Memory_Slave + AXI4_Full + false + Minimum_Area + false + 9 + NONE + ../../../../coe/simmem.coe + ALL + instr_blk_mem_sim + false + false + false + false + false + false + false + false + false + Use_ENA_Pin + Always_Enabled + Single_Bit_Error_Injection + true + Native + true + no_mem_loaded + Single_Port_RAM + WRITE_FIRST + WRITE_FIRST + 0 + 0 + BRAM + 0 + 100 + 100 + 50 + 0 + 0 + 0 + 8kx2 + false + false + 1 + 1 + 64 + 64 + false + false + false + false + 0 + false + false + CE + CE + SYNC + false + false + false + false + false + false + false + 1024 + 64 + 64 + No_ECC + false + false + false + Stand_Alone + zynq + xilinx.com:zc706:part0:1.4 + + xc7z045 + ffg900 + VERILOG + + MIXED + -2 + + + TRUE + TRUE + IP_Flow + 4 + TRUE + ../../../../ZC706.gen/sources_1/ip/instr_blk_mem_sim + + . + 2020.2 + OUT_OF_CONTEXT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/instr_fifo/instr_fifo.xci b/projects/ZC706/ZC706.srcs/sources_1/ip/instr_fifo/instr_fifo.xci new file mode 100644 index 0000000..83e0abc --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/instr_fifo/instr_fifo.xci @@ -0,0 +1,593 @@ + + + xilinx.com + xci + unknown + 1.0 + + + instr_fifo + + + + + + 100000000 + 0 + 0 + 0.000 + + + 100000000 + 0 + 0 + 0.000 + 1 + 0 + 0 + 0 + + 1 + 100000000 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0.000 + AXI4LITE + READ_WRITE + 0 + 0 + 0 + 0 + 0 + + 100000000 + 0 + 1 + 1 + 0 + 0 + undef + 0.000 + 32 + 0 + 0 + 0 + + + + 100000000 + 0 + 0 + 0.000 + + 100000000 + 0 + 0 + 0.000 + 0 + 1 + 0 + 0 + 0 + + 1 + 100000000 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0.000 + AXI4LITE + READ_WRITE + 0 + 0 + 0 + 0 + 0 + + 100000000 + 0 + 1 + 1 + 0 + 0 + undef + 0.000 + 32 + 0 + 0 + 0 + + + + 100000000 + 0 + 0 + 0.000 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 256 + 1 + 1 + 32 + 32 + 1 + 0 + 32 + 1 + 1 + 1 + 64 + 1 + 8 + 1 + 1 + 1 + 1 + 1 + 0 + 10 + BlankString + 18 + 257 + 32 + 64 + 32 + 64 + 2 + 0 + 18 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + zynq + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 2 + 1 + 2 + 1 + 2 + 0 + 1 + 1 + BlankString + 1 + 0 + 0 + 0 + 1 + 0 + 4kx4 + 2kx18 + 512x36 + 1kx36 + 512x36 + 1kx36 + 512x36 + 2 + 2046 + 14 + 1022 + 14 + 1022 + 14 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1022 + 2047 + 15 + 1023 + 15 + 1023 + 15 + 1021 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 10 + 1024 + 1 + 10 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 10 + 1024 + 2048 + 16 + 1024 + 16 + 1024 + 16 + 1 + 10 + 11 + 4 + 10 + 4 + 10 + 4 + 1 + 32 + 0 + 0 + false + false + false + 0 + 0 + Slave_Interface_Clock_Enable + Common_Clock + instr_fifo + 64 + false + 10 + false + false + 0 + 2 + 2046 + 14 + 1022 + 14 + 1022 + 14 + 3 + false + false + false + false + false + false + false + false + false + Hard_ECC + false + false + false + false + false + false + true + true + true + true + Data_FIFO + Data_FIFO + Data_FIFO + Data_FIFO + Data_FIFO + Data_FIFO + Common_Clock_Block_RAM + Common_Clock_Distributed_RAM + Common_Clock_Block_RAM + Common_Clock_Distributed_RAM + Common_Clock_Block_RAM + Common_Clock_Distributed_RAM + Common_Clock_Block_RAM + 1 + 1022 + 2047 + 15 + 1023 + 15 + 1023 + 15 + 1021 + false + false + false + 0 + AXI_STREAM + false + false + false + false + false + false + false + false + false + false + false + false + false + false + 18 + 1024 + 2048 + 16 + 1024 + 16 + 1024 + 16 + false + 18 + 1024 + Embedded_Reg + false + false + Active_High + Active_High + AXI4 + Standard_FIFO + No_Programmable_Empty_Threshold + No_Programmable_Empty_Threshold + No_Programmable_Empty_Threshold + No_Programmable_Empty_Threshold + No_Programmable_Empty_Threshold + No_Programmable_Empty_Threshold + No_Programmable_Empty_Threshold + No_Programmable_Full_Threshold + No_Programmable_Full_Threshold + No_Programmable_Full_Threshold + No_Programmable_Full_Threshold + No_Programmable_Full_Threshold + No_Programmable_Full_Threshold + No_Programmable_Full_Threshold + READ_WRITE + 0 + 1 + false + 10 + Fully_Registered + Fully_Registered + Fully_Registered + Fully_Registered + Fully_Registered + Fully_Registered + true + Asynchronous_Reset + false + 32 + 0 + 0 + 32 + 32 + 0 + false + false + Active_High + Active_High + true + false + false + false + false + Active_High + 0 + false + Active_High + 1 + false + 10 + false + FIFO + false + false + false + false + FIFO + FIFO + 2 + 2 + false + FIFO + FIFO + FIFO + zynq + xilinx.com:zc706:part0:1.4 + + xc7z045 + ffg900 + VERILOG + + MIXED + -2 + + + TRUE + TRUE + IP_Flow + 5 + TRUE + ../../../../ZC706.gen/sources_1/ip/instr_fifo + + . + 2020.2 + OUT_OF_CONTEXT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/doc/pcie_7x_v3_3_changelog.txt b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/doc/pcie_7x_v3_3_changelog.txt new file mode 100644 index 0000000..32c4ed5 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/doc/pcie_7x_v3_3_changelog.txt @@ -0,0 +1,280 @@ +2020.2: + * Version 3.3 (Rev. 14) + * General: Added Zynq 7z030i,7z035i,7z045i and 7z100i device support + +2020.1.1: + * Version 3.3 (Rev. 13) + * No changes + +2020.1: + * Version 3.3 (Rev. 13) + * Revision change in one or more subcores + +2019.2.2: + * Version 3.3 (Rev. 12) + * No changes + +2019.2.1: + * Version 3.3 (Rev. 12) + * No changes + +2019.2: + * Version 3.3 (Rev. 12) + * Revision change in one or more subcores + +2019.1.3: + * Version 3.3 (Rev. 11) + * No changes + +2019.1.2: + * Version 3.3 (Rev. 11) + * No changes + +2019.1.1: + * Version 3.3 (Rev. 11) + * No changes + +2019.1: + * Version 3.3 (Rev. 11) + * General: Added new device xa7k160t. + * Revision change in one or more subcores + +2018.3.1: + * Version 3.3 (Rev. 10) + * No changes + +2018.3: + * Version 3.3 (Rev. 10) + * Bug Fix: Fixed JTAG debugger Issue. + * Bug Fix: Added waviers for lint errors. + * Revision change in one or more subcores + +2018.2: + * Version 3.3 (Rev. 9) + * Bug Fix: Updated MSIX TABLE & PBA OFFSET parameters. Which effects MSI-X functionality + * Revision change in one or more subcores + +2018.1: + * Version 3.3 (Rev. 8) + * General: Added support for xa7a12t(cpg238,csg325) and xa7a25t(cpg238,csg325) devices + * Revision change in one or more subcores + +2017.4: + * Version 3.3 (Rev. 7) + * General: Removed 'xx' in the Interface values + * Revision change in one or more subcores + +2017.3: + * Version 3.3 (Rev. 6) + * Bug Fix: Updated arrow colors for JTAG debugger LTSSM graph + * Feature Enhancement: Enabled support for cpg238 package for devices - xc7a12t,xc7a12ti,xc7a12tl,xc7a25t,xc7z25ti and xc7a25tl + * Revision change in one or more subcores + +2017.2: + * Version 3.3 (Rev. 5) + * Revision change in one or more subcores + +2017.1: + * Version 3.3 (Rev. 4) + * Bug Fix: Removed unwanted display messages + * Bug Fix: Removed option to select 250Mhz of UserClk_freq (AXI Interface Frequency) for the devices xc7z015,xc7z15i and xc7z12s since the timing does not meet + * Feature Enhancement: Added JTAG debugger support to debug LTSSM, Reset sequence and Rx detect sequence.User option is added in the 'Add.Debug Options' GUI page + * Revision change in one or more subcores + +2016.4: + * Version 3.3 (Rev. 3) + * General: Added support for xc7a12tl and xc7a25tl devices + * Revision change in one or more subcores + +2016.3: + * Version 3.3 (Rev. 2) + * Bug Fix: Updated text in core configuration GUI to display Capabilities Register value as 0x0142 when Slot Implemented option is selected for Rootport Mode + * Other: Added support for xc7a12t,xc7a12t,xc7a25t,xc7a25ti and xc7z012s devices + * Revision change in one or more subcores + +2016.2: + * Version 3.3 (Rev. 1) + * Reduced the number of characters on a single line by making a multi-line attribute assignment. + * Added CDC registers to the pl_phy_lnk_up and pl_received_hot_rst PCIe outputs. + * Revision change in one or more subcores + +2016.1: + * Version 3.3 + * Modified the width of pipe_tx_*_sigs, common_commands_in and common_commands_out + * Added Tandem support for xc7z035 + * Modified the mapping of logical and physical external pipe interface ports for End Point configurations so that it can be connected to Root Port instance directly + * Fixed issue with the default values of 'Base Class Menu' and 'Sub Class Interface Menu' and 'Class Code' update when Lookup Assistant option is used + * Removed the dependency of 'Include Shared Logic(clocking)in example design' on 'External PIPE Interface' pipe mode simulation option.No changes made to the 'Enable Pipe mode Simulation' option + * Revision change in one or more subcores + +2015.4.2: + * Version 3.2 (Rev. 1) + * No changes + +2015.4.1: + * Version 3.2 (Rev. 1) + * No changes + +2015.4: + * Version 3.2 (Rev. 1) + * Fixed unresolved instances of sys_clk_gen used in pipe mode simulations. This module is now delivered in 'source' directory + +2015.3: + * Version 3.2 + * For EXTERNAL PIPE INTERFACE mode, a new file xil_sig2pipe.v is delivered in the simulation directory and it replaces the phy_sig_gen.v. BFM/VIP’s should interface with the xil_sig2pipe instance in board.v + * IP revision number added to HDL module, library, and include file names, to support designs with both locked and upgraded IP instances + * Revision change in one or more subcores + +2015.2.1: + * Version 3.1 (Rev. 1) + * No changes + +2015.2: + * Version 3.1 (Rev. 1) + * Fixed GTP DRP write issue - (Xilinx Answer 62770) + * Added support for xq7z100 device + * Added support for Post Synthesis/Implementation netlist simulation for EP/Verilog mode, for non-PIPE mode only + +2015.1: + * Version 3.1 + * Added support for xc7a35ti,xc7a50ti,xc7a75ti,xc7a100ti and xc7a200ti devices. + * Added non-default input port pipe_txinhibit. + * Fixed issue with invalid link width and speeds for -1 speed grade for devices xc7z030i and xc7z015i devices (x8 is not supported and incase of xc7z015i only Gen1 speeds are supported when speedgrade -1 is selected). + * Added support for new packages: fbv484,fbv676,ffv1156,ffv900,fbv900 and ffv901 + * Added shared logic support for RP configuration. + * Modified the External Pipe Interface as Master for Rootport configuration and Slave for Endpoint and Legacy Endpoint configurations. + * Update to generate a 100MHz icap_clk for tandem configurations rather than using the ref_clk input. + * Removed 250Mhz User clock frequency option for all -1,-1I,-1M,-1Q,-1L speedgrades of Artix7 family. + +2014.4.1: + * Version 3.0 (Rev. 4) + * No changes + +2014.4: + * Version 3.0 (Rev. 4) + * Enhancement to allow debug cores to work better within Tandem designs. Build_stage1.tcl now runs befor place_design and handles bscan primitives. + * Added support for Artix7 xc7a15t, xc7a15tl and xa7a15t devices + * Added support for Zynq xc7z035 device + * Changed the pipe mode simulation options in GUI to radio buttons (No change in the functionality) + +2014.3: + * Version 3.0 (Rev. 3) + * Enabled PIPE Sim support for Root Port configuration + * Added support for Kintex7 Low voltage (0.9v) variants, for only Gen1 speed + * Added support for Kintex7 Defense grade Low voltage (0.9v) variants, for only Gen1 speed + * Fixed CPLL Power spike on power up issue (AR59294) + +2014.2: + * Version 3.0 (Rev. 2) + * Added AZynq7030 device support + * Added QArtix 50t device support + * Enabled PIPE simulation and External PIPE interface support only when shared logic option Shared Logic (clocking) in example design is selected + +2014.1: + * Version 3.0 (Rev. 1) + * Added Zynq7015 device support + * Added 35t,50t and 75t support for Artix7l and Aartix7 devices + * Added cpg236 and csg325 packages support for Artix7 devices + * Enabled Tandem PROM configuration support for Zynq 7030 and for Zynq7045 devices + * Enabled Tandem Configuration support for Kintex 420T device + * Changed the directory structure of the core without affecting the design hierarchy + +2013.4: + * Version 3.0 + * Added XC7Z200TSBG484 device support + * Added support Artix7 35t, 50t and 75t devices + * Added port level enablement for icap and startup signal interfaces + * Added 3 new ports - pipe_rxstatus, pipe_eyescandataerror and pipe_dmonitordout to the transceiver debug interface + * Added logic to power down CPLL until it is required during the PCIe link bring-up + +2013.3: + * Version 2.2 + * Reduced Warnings in Simulations + * Reduced Warnings in Synthesis + * Implemented Shared Logic for Clocking and Transeciver GT Common blocks to include either in core or example design + * Implemented Tarnsceiver Core Debug interface. Brought the debug signals to the port level + * Brought the Ext GT DRP signals upto the core top port level + * Added support for IPI integrator + * Updated xdc to match IP hierarchy + * Added support for Cadence IES and Synopsys VCS Simulators + * Added support for upgrade from previous versions + * Added support for Zynq 7100 device + * Added new pages Shared Logic and Core interface Parameters in GUI in Advanced mode + * Added Enablement of PCIe DRP interface and made the option true by default + * PCIe Sideband interface is broken into several smaller interfaces to connect with DMA IP in IPI + * Added support for External PIPE interface mode + +2013.2: + * Version 2.1 + * Enhancements in the Tandem Logic - added STARTUP Premitive and new ports related to this premitive (static ports) + * Removed the redundant blocks related to Tandem configuration logic + * Added AER_CAP_ECRC_GEN_CAPABLE parameter in XGUI + * Added option to select the Internal or external clocking module (Parameter PCIE_EXT_CLK) + * Marked Artix7 (fgg484 and fbg484) and Zynq devices as production. Added GES_and_Production option for Silicon_Rev parameter. Updated the Auto-Upgrade Script + * Added support for Artix7 and Kintex7 Lowvoltage family + * Shortened the example design xdc file name (PG updated) + * IPI Level 0 Support + * Added OOC flow support + * Fixed CDC issues with GT wrappers + * Removed the BETA tag for Tandem PROM and Tandem PCIe options + * For x8g1, 128-bit interface width configuration, Removed the optional 250MHz. Updated the Auto-upgrade script + +2013.1: + * Version 2.0 + * Lower case ports for Verilog + * Added Zynq Support + * Fixed Reset Sequence issue with GTPs + * Fixed TXOUTCLK flatline issue + * Fixed the issue with GUI to select the optional frequency for g2x4, 128-bit configuration. Now the selection for 250Mhz optional frequency is removed as it is not supported configuration + * Fixed XSIM issues with VHDL version of the core + * Changed upper case portlevel signals to lower case (clocking interface for partial re-configuration and ICAP interface) + * Added pipe_mmcm_rst_n signal at the port level as input in the core top file. + * All Kintex devices, Virtex 2000T, Artix 100t/ffg676, 200T/fbg676,ffg1156 are marked as Production. Option is added in GUI to select GES_and_Production + * Tandem Configuration - The option is enabled independent of the Dev board selection for Kintex 325/ffg900 and Virtex 485/ffg1761/PCIe Block X1Y0 + * Tandem Confguration - Create Bin files for stage 2, Back Up & restore of bitstream generation settings + +(c) Copyright 2002 - 2020 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/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0.dcp b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0.dcp new file mode 100644 index 0000000000000000000000000000000000000000..34352e386a73eda5148572eee25a0c93c2bacf04 GIT binary patch literal 1227449 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%0DDPQ~A))?oIe!;kckP`?{< zr=EM)lOvEVBgxfE;k(<0d%(bp8*MD`oQ0!b7X3+{^caakJ626gJ2+ih2>5dvGH-64 zzFZy%kOc9>**0FsLX0|0M-R{*iH4bK^bk0$x3!HJcA6^hqci1zw9w}J?V`m|I&8vi zVQQ4hj0)aFmm9}JhbwE^fXB+sG?_jeplx77mo{GwlmY9fGlhb&;5HVpX|M&;i#pUQ z|JD>8(n&PA=kjZ?0oIc~*0i5-iW%c05HBhX3@=t5$<`6?TbOZd!w;+jt!}wLKWqm~ zqV~1?;hm!)$B0Jv$RWb^S(I9}Vne5xW&vaHEIp;y-*OBKpHVx0J$4&n%WTS(y$Z6G zLuDAuex)?DOuJ-4ixt_%pFZ*#VcY&I6k@yhR|stpfI79%ZA9S|lIRP}-~hvjE7q+C z+-nb@ux3NhrQebn-AZ*rMsdsmDT{JIisgSPm`Xs(Cy)Y8^gk3g79izWq%W`o>whRG z>w2)Vwj`2$fzwAYT7mB}M$ClJ82sjR#u3vPuv+!hq@Yof3-nqK-Oa(|9OUFi{YNDb zbOh3EM)OI(QBv2s)BGW`K2YjC$hHHAr|M<(3X^QWuv|jriS`#=;BhFI^eI>5VcmG~ zFEee0A*XR}88Yef^G{udY@ATg*=&Zo0SbYErHjgS<34J0)yU6<8HjM13X;7Pzf^>q zBrc+kG^qeQcz=%!Xeb@xcT1g|Xj76TRk=SW16KbC@Zo4M-7iwB)vzfL$nU>gn`#^< zE4PC%fo<|}F}bZFA8Bk*#+CkL!lKp#!3xNs!o%XdU~{IGPnKL1!-_^@0EzCi!2TYM z?^fTDqA^iqMGh|khY2EKB!~z-@||~oOGfl?o(&C(G$cyV8NuHCuy4(L)UKrF4zMv1 zHpFd#&K*8j)&b?dU`5TAg5BZmlEx2)A(Sn?Y2lJdD`L@%)X@Q&Vy%CkU_j(1Tq&QtA|LT;BGXQxDAS@*#cD^Fc>PpQ}0U? zueDQI;~g>)2bWSuDCN>iu^?mkg}&^?$Y_uw991LdRrmSF(pws06>hm6Z;>k4+;$kr z2z!MTd6MSAN-K6)0A_MchM;O-<&8C`L=2=B=omdpZ`r1 zy*KE`fFxa{mPT*4G566Fa%#gNmA`r4W7LcKYblU40=tX3Nd|fIjVw#+;|MZrg0E7X z{yuGrgC??rIr^+vjx92q*B2=k)N=fIEnR%NVGj5d!V=+v zvPkfWjZt61`zB9v97-CzueMmu&GBD>Z>dPJ0UelmrluI|qas-V=c(o>F#^0jtgNSQ zUhbcqg4_Z*({Zti59EOVYXOcvvwmd!J9}R>JUzWrR&{71pn*Aj##;Afpzljl$!aL@ z|5|_#{$l}_h*(O?Jo#S>aCL_E|5$*hY`D7jhwIX+hL;ELuH3GdH=|Y^vf$uBW!2tY zi;j}4E~n3vk~-dw50?8Cb!}_QKmV9bBIHiTwk{mqPcEO`+3*K`pFRZ$0^(9)dM#OR zfY#vW&-cOY>Akqw=dYITPlvRIFXf`!tLx3cCd)Hi7mcs9+!1b;{NP@xD|KIluhBBD z_wg5Q%P)s2dRPC?(9O;-FF{74Ef3z7nO_212D+9__v^zWS@)r-KSe%vSl=0K`;_%u z0o|TXz4N1E*a4x6GP!Sq_f=hiPfxqO72Qv--i(TfF?DJ?zrqFVQ=bt>_A8;^HnR>1 zt0tES|Ny z$K(3#>?r2wuPG&*!Rk$bAR}%G4zEBS(8|uhcl+`3khZ=)d{JLP^nQhycyl-`yFZKy zsG>UlQ7VFH1-UWDJ#e%yvNm6whHr*knUn`7c#VP>*-8};zgzXU>E0wccY0^a@UN3a z0}suZdK?^W`mBQZUT>?+GyG_e+~1*-qY!I6!)_i_4iBw_oLL1j7fHtNaelWR)6p}d zL<_|c7dRVDf1~y_ziUI}?ibQ4rd0Ox6jG-sjFLpa*#_nn=|(P^y1+4v9a2k{~YJG_eC>i_MeSQ>959p zhu$&Ono2-;UvIv~^ELkIay0N|fOS8BUQV~<@arq=^&{`Wtlg{sSG~u3SePYbXbi9N z@1oox}!oinaM6jm1+SXY8hdpMj@n(UL&ndcN-Y7Tvyv>;A(H%?557MUU(d2 zqox+I=7Djjr86*H<0Ai%Efcjfwj>-#zq;lXLLbvwI*>Y|t7&05d-;+I>6 zA2*l(WJN%s2}KI4RuQ-5)-tlRESF{ww}Wg)CY~!CfuqTT}ggK=qRxE zB?$IW-yQnGLXLz{Aw=x;VtfeM0cZx;s+}vJl zc&E_ir8`uk-pHK4G${jDk1wwwlUlqGL1r{ke(Nz(YjX^lRjpSw&hy67rs)v*y;Qc4 zjZ@SKK5^MoM{XQUj}eU0hgfBGv#sy9mvH?^dZzZqYeNIr-&LB&?X#0=N15Jgcwf;^ zF^tle7;<&Zydbcxb3IcOI~=6*yk94 zc^11M3`ctiHxAp`Ez|y-w_{3n;k6xIp!ncFOIW4tKV|EKjZRgS>c{FjyO|iat@D=C zQ$Ow`rrN$h)s;VS+mA;&+(6mn?Wb11Kryxhfk}$ggrl@o5UZU zZB3g!nPr=Z>wON-HZE(1-I zOna+7qTaZtT)0d}FTu=lkYXV8u@EXJ%26C;1OXSx3RpsE^S>n?OYtt5Vl}fsZ=_K{ z`Mue&M8hX#6b$hJZj{H+a5n|Fv9h3CJKZcr182LO3nHufjo_vfj&FzAKwqOAyWWm} zZa&7u>7Jso?;Gw;&NT#gNH*0qgGeTqTD)nkt1E7A=P@gBBDk}RPqVFadL;7VF*W*Z2dfKAYV}h(9fREWVz%&+>lr)&>v{8m-|fWNT+V&YQOIA%`2S zas$HOeDzzuDpj+#L+Cf%8)UYW#(6Vy$kcy zoe1i^H0K1!sD5q0p2;*+8OW5KG>hq~TBoNprWL_f4w<$Kaf^hsMFyJ>uIIyZ(|mXW zwCT+;gc+x^NKrg-9ALG-H(lv z-ooo*ASbMI?ua(o9mK1KwD2Pz%zb5(uS6N3JDHt5RuBtSfU>7!M?={g?CLa$wKxSp49gO9l(8u@D&@8%1w+z@sH8;m0bI7;QveGgj_a zy2j$fS<1!o_O6;}20?2jF43YroSM+3Ih-*6yD^cBR7;wcW z9kYj6e(dEiXb`#E15jz*gwd8h_Y12s0UZ#dNJ>PhjYz)QnjTX{rpJD85LG@;p#_Zt z$C@*IZ<>lYa**`Baqz@ek~kZ|>$N0_p8(K4G)02=W^~W3(_MUTuksl-5D$|GaFte) z7+&OVQ$>j72xt&RIxC?Gjbg_#A7EPyJpwrmapD`%t+vLu@x7fe35aIWpo(q9ae!v3 z(Y%om%Jlm~Q0mPDN*MT;1kjUh?K}VE%dvfEsEZ114}WSyg7`*!&yPNTe%NnuiieZH zx=7;)vFgio&)}i`X;b-#%z5u#0zkb@&K z2L4?M5Kp*S>3^*&gT9Y)f77g|=eA4x@Ln*?rnEFLL*E_`I(gTzAvm_OX#C%(ar=_KEW1OCM=nPKb%W z?5-ZLQM6NC;*7DAmI1F$yn9hXw(sOO$2vwd6!_V#M}LKhxLMDY5~q6R?3*74z1qQa ze$9e8a$q+2Eb@JM2$FcnY*FDjX#>UUS9`|qpT2V_P>Olo*_PMMwV79{gn8X!UiZ!G z&H{o0?39|^akL!7K9zMHY(PSGf=f*y?0# z+gnCtT5mQisvBfvT^Si1&dG~Kq@%u0!HK&a;KXyD!R$)X&*K{_b05IJMLxDTF7NA| z#`c~y5xg!ZQAQQrc}@7dG8Uik$y!YKJIrf0-5OY)A!FMhjBpb2eXMmg7r0E?s=+B(+rpoJK?%N|B@Fa=zx8$) z^f-SdP(+>fk8GA#KfJ%kP3%_KIra2d4jWF4pZe@Nr?z>*?a!6l@1%@1D{wjbCO3 z4_qAX+zVd8rFm*=-2)@hAUB2-o7T@ukLselo2^|h+nnXwKWfiTjgp_URXq#mj(7n% zg;>qnjFTfjy|;GPFi-~$`ACKMJ-wM_K$lZYi|s=QAG{=ovLCy;B8b;b}N(6JzLzmXv3{9?F$%beJ%V! zOIh$v<_Ss(dr+{P7F2k0K}&rN*z7h%mZPsmOyTb;LY?O0M8g-dMeCe`J(W?A(n0BLchRP>QZO_QR*7u~5QnIq*j9fQqj2xX$?uPDdg z$M1M(ke4G;52n>th*iI6bQMn|-tUfDyFKN0Qb&Y#Xg|-7b(0q{SZT~Wouz5jSdz8K9zABl^r%a z0O%JgD!X72^x6M|NuazK*bQ@tf|3{sBzoyhLcADxHGpp`r5(0BkT^f|&!MxsSZq5t z7)T=DvVbV?^)mluFTSyL$H6_h*-Um>o!+L7yth&)N^f`S+T6T($MY`9X#20O{~X@) zNWKs58s+oVy!G%~$<`H>Y^Sb{dt3Ytc1GQ1Wu|onU@d{1#Vg$N@As zXjgo4)To&!MU8va8GiVAFQjV7$ac}wmWb!bJz!8jdjA*Ur#1JrU`-L`+c5e4Uy8cb z-F)#&-HZGGP;gsR=%>xU{aVC@4;R1SD8Zwmp8OaRlJ2Pa80xQ2ufv@1o@4#`4RlPU zUs;f_y9M@m8J>vHj+$ZxCG|;D7OUmg>l+Hjc0}Cx3EU-CnH?(jeQ%CLsn1}n*wM+2 zPpbfn741XOEtBPi^nHn{B$4_;#$sGA`RP)CREoOv z>ET5!3O})VtgU2K5+1#HQ88x*(}h-b6^m-A7?ni)fzjj|bCUm%}DEH;1RYU%JQ6 zf2BI-2-m}XfKv(aR2FhJJvvfFcYUN3&I8!SnuO89j`V_-uf*|wQ9)g~aGfZ=v)H;j z?6r$C+cp_+Jj2%xVq6pYH1@InM;GNa80s)h`31=h8NjL7n0OYEL+3TDDx2p zE*1iqw&h|*EJEdRGbb)r5e=gh5%aG1D>qd1N_Y4xz7$=VXf}-ExXmf733RBnsP`%END0`-*M$R#YFC8zKXcas;hORO z8}MUj)#%ax;|f7vM| ztK;3qwTG7yjXIK;FDJT5neXZw=+0p~@GkWY`>+r)uOQ+CUss8;w4G!>&g!gpOy|@# zcKX#PI`P)*8}VLZDriAn+6#4wGXtV3oczWjn$M$%-34G7fTzPh6didwMEa8h2Q2n) zG7uPd3SIqbe2h^3wwds@-yqjIO(l=}H<@g5W(qhQUCQ>ylbejr{JU70?UmuTsx{@d zv1F+sJ9#mw!`ykUVz9ed_*~p4&M}7ProH|u=Owu@c`oJL4Tv*)lr0+PHDGRtx|ekW zMYpRt&*ZV{a#C*uBwC3vHiw%KvUK6fF#@lEi^ObysP?ES(L1gvwswzHppJq6)G({# z>{AvcC&cvUZIg;5n*|>)s>;5seyT}{#VKm0k{gF>q)CIzq0BL$O{N|iOgo_$o{;&y+y}_8x>$6{Wf5tH~Ng{6! z(2EI}q%=Y1y00HTy=%|3v&JXtTslDHI#@@UN)~Gzn}W`E`Dkc-Q>khy^FP)X2#chC z6z#Dt(x+gM^^R>=<(+tBn9t=#(qh;I@Z>P<=)0P2&bZMY-a#*YpDRcB{Re*tgCJ{s zySbq4qW5Q_jqzV(8@anS*j7~MDJAW_x6Y3JNIJaEs=7OYp2#j^eWU`Nu9 zZ&wVgml(r+(_TS)f-6kTnl)~n!29zjCsv|J+Na4s>`K8CIFvfI>++7Hn~VwEYyzoo z6w0(`q@=x1u98>jBMY(~L(k-t7`mSW+51yX^zSo+Gm9$NYlF4inUpa7i^8xls#j63 z{PGO9(NU`C7XJIu&f4Jb*Hvm;lugz4ao&{%qD<`|6xm~$Z`8!k(~Vusl5eea)=m_5 z04<||G=|;DMbR=mLgEz1N~8%A82po7fKJa{98RET$=JimQBsDf+RNd21a;hj*JA{@ zfH(z`RKoILyy6`>ZUk)aLC@=Gm(4VBTz!YTkOl!Rxz?+mRxcx+pi!#(j1NY9y=)j| z6~!EE^P~V%g0wN=WU3Ge5)B_{tRyC$Jq0CdD@6m>46+DcV&CMCQC*=id=HEQZdKv} zaZxJk2G8G_ifZd>6d@u4KEg~XTKSayo3c(U(l&`8qzZJ_+y$Bgcvwe-G)i_)(UwkHh6ed@KcA#=k_Vv zWJZjxB4VaXhGO?6Nw##N0ii=oeIN&{?YFY-4tZe`o&BmPf!M^EF&%g zDpT02f$uRtJb8bm6QaTW;NZ}5HrVh) z3~3kNe+O@Kx-jg-C*?@jEE;KwO;E>0+7GV$YK^TBMR^I!w^V^!@ErY-^TtWE*|7?zLnmaH!zer;2>eBNuw;&Y$*FbtQ)b_V z$pN%uBQQGf0P@R;t|0t*B^MG5RYz&45Pa-};13K>Y`i!anb2zC3A{Tb>ctw-VmZuN z=^Y3%ljS4mb2R*4o39bLnMw;Lh1T~?9LEgCwy#LkvDQWW74@=Oc{Op5Vh1lumxO)C zM4vv1R_~LUkkQHa+oAAjPfo!P53?y^biK-4a3JNn-J&_B*%=aI-PG@IXK78M4Kkd>oRU=q zBVsDU|&H*@RV*I(0brgiHt?%EaZ zO^!--^Tn1ZCNO2SA@D*m~H7%`sZ6Bs#kwQoBsWx_KP z+AcqcwsgyM&cn^k#wmq{4?#Yg8*iwbmr z#866eH$bhQKpePB9uA(!BBgsdgdQ3iL1e-W5rqj?#*AGaC3Jn}Nlnsq9LY?!B+psl zL(7k2kFqAFjS+T&g*U3Rl^)aUu}+;b^VvqQSh3HTbSda7t_y$<LxPMC$^5I+((;3dI59LPAZWXO&n#Ahcm*=MLvbB$Jm^(0MrBw8&e zr&=vXJIm4fbAcEppOP(BQqwP1W*nt!L|gURXO$*pw8~WhTciV81^xrsoM*f_)5Q|# z;9HT_&*tB}VB`FqCCia$lg4-pC;q5g4{CqRU(T4%N(g83f_Vlz-aixMMm$3SCq8pw z!ETyOvJJEuv}rCGIvcgmRc)-eAz$@%MGNc4C>T+(i#Es{rHs^|bz}TWJFr6|2z_ki zWFsyM>B`^_8X+b}Lj>>2o(HV`?UofLrw+;WR}^M_1&7Gn;*+G~w&i@w-~dmGujt?e zMUu4#=)}r4sIhDep<>K2pB@ov2=DWJV>>dZ#T!SkXwG~-_A-%4(ttq2-mTvw2NLzt z3zUz~E=ffc`7Me{5&#fJV=oCAA}T~OxUoC6`smbAFBICi47j>(zXC*&LvrTxZPuwf zc}^p*KxCuIpF*BA+0T=l4q3aE=LtWa+X7vx5z;|R0KgRyw!6*yN*i|M`mCS|7?z3_ zewPNT>`p$B!8RwyqAbY-lUe28sr3#r8vc@thy#xs5Wy@038bb6Zxn(}fnKmO^Q5`( zMa9s(O?mbT1x62qL)#qP2mvpHDx{!R6plnbACg7k;p(m06!EUIV<^O*W2FO&OsW6(%c>>lxVxxSltAuSmNsqVXMSSYapi*V%LmjbfYQ%{#dYzm|x z9LRwz@InC=4PdVuz<^z$*(<>1=njxW<%R_>#H5k&pGb1#LA$)M;3X(Aqksz*I5+^I zQdIa}e;4>xF%E$e>1o;b?=j^;ReII;Aj0hYms}8SAD-Ahm?KK4PqY)Qnh%UZ&44y2 z-`7db`;hcp#K0=_^r48V_B8m!gOm}b2&8B-nUVY$twmdCOmuX~R|<);52%1(2y85&^$->&qeQ7K zSTUR!>Oi6BYouH=jD`lqrUZS`@m?F#sazdls`mW_i^h9O_GN+}!qwn6%k=uV68LX8E^`?at#1F%zI7qXitx zA|F$K&)_8Mb0d+H4q#zKSCaD-5DcMqXG4|i;ABv;_53^97gVNn%zmOcTPMKvuNQXPHKC)g1ZJ}&0_+$$YkL~7=T z3bI92Rm>vKW~OM!b+?$B;r}`6ps*{IREP)&qS`4}qQeL|O7b537Gkn8A_6L4u0!y(PXDR_>evX|1eB6rhGh*qaCOAq?x{Oo#)58inBSCCWQK$ zG#a|=2EEeOluE#gwy&nN6WETF*FnKepK;uJ*)V<^EUG@Qea!Blpg%?{K!(o6 zUGl<7HF+M8j}h|YWF(m?DalF<67b%%uhUz-Mfp=xoL=JZ>>)6l;`YR0kxw!5C`+l9 zcZR%t0jaai8+=s+sqWb2VGrNM6|=OG6cqFLB-+m)CY1@|jwkxLNoR2f&{X+^*MND4 zwS}9dI=D7P_?GvE&OsHywAJurB0)c1J1)!!6_dU&kW{H(^_7?p`eYzxlj?4Kh_8M8$F#uZ{4U%hhgND_S1jQ$DMiZI| z$j$@9rG~s$?X)Do-v3|Qkl0lFFH(lX8JjM8Owbe4@!UL9OoRx3o?ybuX8%^_LDE0* z1Z4gTSs+-qgIu7AnNcKIg0;= zgd1T<=+Do#6@7_hDPNF3_hJK>1>}b1F>@*orXzrWRh9+@2B%GO|yn^g0SgcdRXt?X19^uV>A5fmzE-Z=`#HRb+xy^)qd=lST>ARm;O zi={GRG1G#C{NRNS2=7he3SIpyX%7`;j~CLUMN2Xa;?THQachhLQUr2Rq*Eu1fwZVV zh)e)nBa*LbjwlKDxBlPLxIzo3bis_6kg#kKNd&`^mgpd0!W#W)C8kP#y@u6CX~3i; zzcB8zCIclmBET1At;s@Lx)MbRb1Igz{&^Af|M$)J66l;>^ZXwhIcvCCf_P*q;BdlL&BLjMSS?PG7}{038;`aWi%*3hLPtrlOU4T2+lvu=uQ9f zj(`Q$yph0mM6N;Bd1VG0vSOkMVP$|rWse8&dAqmzF;~s8`biV9qTx{9E5pY|o)>n} z{*|*AZz562V7D=mn(^Zow>=$LcXU@l;?ZIuBCQqyr5~f6j z0GAvYhvE|Lz|6@zI(Gx#L{dU_N8uw6^M~8w#I&!d6G!P5s|yin7unko@elIYCbOp+ zCMY$5Y1aIg-@mG9eQ3v(Jit-LmLvZK!6WflA^0X-5#qO72^P<+W=@E z<&Q?npi#vT0Y-;!nuQ|AV`%tjjpzZYAP_9TeLJWG7vEq~5H)&j|6n?_-)8>7LjR4}96 z5BT$KzWhF7`s6-OLb5>6A%@WYNF4f>RT`{xsXf)WT(spb93Ik8qt8+>iO6!%YVHDB zxts5@5%8Fe&#tZHCUcJ3`i?231?U=?q~sC-^WnGW0lk1Tcg?9q!r95EWvcq-3JFQS zgs!$a+)2`2iyZod+%-TI9q}!>Dog!#XxJRhgkNZncpMh6AzP` zKyJisMWF>SL^d6}obOctR)b)CLgbLT={PM;5=8)#R1_wGsdM0)leKbuZ67_?$pNor zzw_^mBW24o-H`HDkx=M1XalQU{+n^aZfPapB;UQ7B|H4$`M}QsZdSxInA< zzdupwoX>|vlow%>Eu%H*_6CyYX=jdmNy0eF9Lz<-d^`tThWY1_5`l=5}>-2@YIU6(2uJg*c&pM!V%ZvG+MQjNYCT z@iGBt1tZ|B&<8`m9*}-6b=}wJBSct)U%n9BcMlktTb26ty%C(W*$i3&F#bJyE)gHb zqlBGT$yc9AEoveTY_=#v#W2eh>=oq2E)k!gfSi{Pct(%l)UzKF&@A>phO*zfk`~?X zllB+aKTclEN;AE*K03565BK|xw4VPDVecFzS@5ijHm1#K+qP}n_Vl!E+qUhVwr$(C zt!caa)%?ym@7=rBTlfBx84;N~v-ZwiRVyRD{KD_6_}ks5skM!=pbvms{ZcZhS}3Pt zVA%QJSc@9}gINusTx8GK|8LByW5wEkvldxd3QXz}txPQKpZ{`q?RY-F8oFqK%cew6 zwqDPKy;?1QHNv7a{6I(rF!|V4WGlQ;*fedKEzn*dR-Eo<)*Pz@$hN4%nKixd?{EDF zhcKXCdPD~KtceN3$oXbk6aMn`ztI^TJ@~3byZY{+Rq`qCd(Lcsq9uwYojOjeI5^q?Sq{vuzi7iVuch zQy(q#OamZIY_Vo`&cnmnG{!tUua7#^Q)(V{YFP&h2Um?R0NexH3U@Iy`r?k8qn5zd z=50RFrk!Il@Oy*ZoBnZR=1?-H*2zu5+Uxs~>>gv&7Fjof6~~ZSC{2#w+g9IR`nL82 z3IXO>eH(2?Q2mfNMxJT2aqjmAMs$vC=bXhU4uFM%UZ@?x72)2YrX$1p&o{r<9O1S? z6+0hj`z&{drjN0T84&3SHZqQ*;Sy2Z61reP3&+{cWOO!e<}D)@2tWqJkRcn}ksr+*>@)B0GOv^IHGKAC zUd=q+f9lcGe|hV8O)4Qp$Hq)eCg4TP%fZ;D)Uq0+E?OiI!zR{VSz-gU#jjj_5Y3lzKi*b(j=F5Z!H*!0s z3RbZ_(GkcBec{A`@sP#-LqH?*@iluK91zbWPwaEEqIYAc-8!q%{s(>-4^=)nrbN_k z=-BCAHVd^z*%&Kg$AYQ*pY|-+5_|UMHwWjg^)>B(aY&;KbQ8glD>>VLQOX5-Tb^+7 z9qJ~{XFi@Dr%*ebJuj}YM8xg0T5S~J*0f2q#4tC3=C^`onCk*?z~$9i$~g89E8woB z?f(K;XJ#xJ4lFA^s>1l1&C2>M6cKhk{8OBL!hV0{LID%>|HF|)!REl+e#(Up6krT4 zd=-tX`U4SkDjT*?gxKW|4#CF!CV$BA2XQkE@h`yWUJ%SNj@k@_xRLV)T;Cb|CI>^@ zH`MZCS*%~aRaOJIXV(mb5pTJyfF~(2=xAoumvh!Zx{Cg{r3l~ zOhxecY&}0;*>c5fLwpw0m5_fYf+wL{sfWIu(&P;T8- zh{=w(i!=n1Z}{?K^o9Aml@1BGu^W~NO!Hl!oos(V+Y1`FA%oFm9BS{x#t~hZK!o9o zoaaDRo!H?(2Qz|=BFeU8&&aCw{y;|qJm5KPSFYecVoqQzshL@RJ33FN_|VR*-&ygJ zv-7k(t6h9Wetv$A`HW+`x%Z6NT?ai#O%a@_AFHUUys3a$70#^0x62iRd|rErOYLlH zr@80gA03yLen|@c&SGTB`pF{1Yu8OY=cc1;AgLeW*fVhhh!=X5cG3Jk#P@b{o%7d5 z33la4XJUJO|NCDc8QY(@C;-$mX9II5_r@+D*qCi{K)CU6eGF%(h_ZQBJF~iR5zx^9 z^PdP~?i z!56xm&H#LGTt_c||0Hr#xz$7RK(rHQsP&=CU$rRLaW4*{{!$l@pzgo6K~WFVt)Z$m zTLrM%n}|+dWHBLKfw+E(B(ve`Flgl>Rp5&S&4IedltBe( zfn5~^CZOks&6%>N>Y$&|24LWz zBRT+wOoEr`03Xi6n*S)i&jS=I-uGdb3Gbr4V-NYaWys5La? zqzQ|vTG?F*IwHan<|lV73i(ESb@Z9(Eh+X#A(*7H*0O^?NId}YbFU9lO_D-gIUe0P z9u-(EI<_>y8`Mo~8m8v&qNge(4=F>Oo5!<80%}#H=`veR%ejq0g930$lfaVkK`Mmw zLlRbX0X#^*Mq?n&`3uSrGar1_mjpKbO@WdUI9T1s_O4lSd+5^Z{w7|`HXY5`ulnC4 zys$F6vwB3-AVlwn*9kjFI8{onsazf@8@k6ov<0VccRO2-) z$9W`GhaxedRBx-9hCH8SMnO{OS6M{05YU!A9~scxe?k)xUntt8 zx=}LuSZ;#pMaaxzIl8A3B{rhbz)P;fhLO@Tr@BaTNqY9pR~F6raWoyR*4t!h%sX81 z41#nd?X%rrUP%6wGS8%hwpzH|08LSOjRqOCY?7%I2OIoo+QcXeGX9dH6BySSjaC?6 zHKscNPf}Y%(;O<6xQHhwtr3s;Q3?P-C`;K(oh>ZRSuFhY%IR>L3xm{#cNS9V2>M4r zGoaP*+|&k$!C8L72&TYk^er4i~MYMafq{i0It?4yz@k z47J$t0STN;BQz5m)=R*9vtgdj(LmVAnVF6%_T}Whf^qvTv$fTp4!iV7_E)IYoqi<9 z@%yt!)Ay3K#zW`4TBB@5zg%5-@ty3ng0NFvi{Z>s%0nbY;cX;&NVZb}#C>Z_w#$t} z1c?_HB=Ay~zeidu1X0EgNtJ#|MOD{vtzQzML@G-%1kMfs7gF1 zsS}SADNAW2OP+FwvRGbOyh2v|uetai7hnKujUq&ojg>%flTSi4CazmUtOU(nYXibR z@1s;XVw8BwIMgUb*$16Th!G!#6VNIlgNUw7;O(jsn4aqL9I!hDzy~g{*(Hadk>ut@v!;GR|40D7k&gp=;q>bZqiOL6fY*SUa{ z(Z)eaSO!$L#sP(p0C9@La|Z3#d%ucwZh{gBHLz0*XFTA4s|82V5gbvu@cWOGQ1iQo zgUlHCvzsjTIGSLwIcwe}8Wj|;T;4p`TDgYu_718s1$wl^mZ883DbFEq^ucYb!k8+Dccw%{M;IUO*2)+WCz4~taP{wtW1rl6s(C;iHu3v*&8b1IS=CcZSq!y}B*?H8_o<-m)jUiok6@U?cvjt&}6 z#C(6zQITO^ttL9sX(4i5=h}wnllGVJ%`>~~!>xCgMKztA$GtYai$m(5Y*UI7vHVN| z0sZJy{9|QUi(}4za|WCv<9EG_;d{Q2`Q+srK??_v=eQH?;v#^dD!$QQfn9Eul%TKP z+AhGHoAt9_;c-cf(J1|@=O*nU7q4QuJq*ESFh=)n_v$7}V;0+n3+_rFD*_NiibuKf*!^}?nGUGc@UV)faUtQ(O2SGLZ1Jl#0dvXcv z>)@?C!1}gW+}IgNg;}nGTwYCi;1E>)d9Y>W7)N$?B zRH4qAnAm)%Bk`cEuz&U@_(J7GY(JzGv6bgD6##D!U3Bae@D2cNre#^`qw{#r<5lzF zMUD6{m9*D&bnrJXX62;lbvDFsZHWb%YFpJR&998qm{ za|L}PNijWHy(bG-Oh_w)-Ql3?>+i>TbzT=>=S}6SM|*V};L%l^ zvq0F@7R{kfRQAZ!gyPoW)~dP9pGM05xO;dt1W5Zbbr-vIbY9`{ch7_K`yZ)sx#Z{P zbJ~XmX%R3Bw)gX|P3&03RtD8k01TcYbJb{h1V!czN9K)D=I)UZ6D2O}cJzHgk?l(S z*3I2R0y3|s_yywP<7n6KkFqayHL{HP^8;EGL8&h6$(?(ptJeJL+T2`xYiRu#N9L2& z1=uqpojZIuE^cw*qcI*TmAlFp?9|L2@hHFFA^zYYel@)>|M#`<%!g4d!82llCq`mN zvCqxbvmVMfKb3Ef+mBcAxR1iLkF~cu^sVlrujR6N&RQc=A~col!hr^W)nw;$4tXN; zSuF7v+A~j3=kWWRewt4S?{(kT+FFgIn)ml#h2jt&8lgpe{p?d*CFAcl?Kup{%B=&; z)uT1`&6D)?)(iemT4rqb9@+3EGR^NZ+w?V-_bRE%ekKizM>xt?cBcAwgPP}_Jw1Fs zB!uo?;Y}uo%!pV1P2bC4} z&)8`gDgL%l+rm$?-r2fU$7ePY(mZ}6ZDa>pnCJppiq&bKbK=6}6!)?#!k(QcO&6C(5a01mBas}utQlwddi`tc z^SF2SK}Ph_DGq8K=z;I2AeXU{T@URj;$t9qkV zX4Wts$hPxU_}aWFf+_rKp`(0SA6IwMmj;XLvn{{1$Mc(^=k??7nL`_vyrLFLmp$8f z=&eAw*bEL)WPWPhtfi^zUr5osj?=QUSS@#;xrO_@>uLd%y>&Yt8&Kfn;E|uFHf%oL zKjQKSFqp4e^U&|k4A}tS;a^^FkuX&yF@Cc{zm-l$u1?R4a8lcRZroMzsb||cIvvfd zBfP!0m)HL5EDPY*G_}QZW=XNd44Hq*q$V??hwgf=T)WqW2eZwVekgxw#PupKT8Mk> z{nHC8SZ&AUCOf2VfGxn9aSS^aT*%Hf0s!Fb!+ikP+^n;(t8hA$bKEN6XkBw!M-S*& z&}pH7zh=N^E-Av&IjLO3ZH2XK*fZLtQ5fpmGOyM~fpBHOd`yF{>a=$+?GRMN*`~op zNDImLcP;I*0cd@G4HVi_QeD)+6*zhCY3U!9T+ePiI-V1&3 zT40-c%3>KBQnRv3Wo#GbEiQlA{`pRnrqgk9B&|t_)ERT15TTXi`+G-vW2<^sFws&UIFjt8N_PV$-_cpw(mZIvN$<9PWZc9@d~^RKs_Dyg1wWasGyy3(_f1HI|hYJUJk z)v3A>S8lF~vPyEcZQg~0x22?!jPpclV{Z{hd0nbNHwhDEC@)(s)O-3V7<^4P?hI`x zZp!18E@6kW8B)(Z4s z3K4xX`xrp;YWKdt_&b-}uA??%d-tW8J)TjyRqtjf5}o%kS7XqNWBOh511IUP#SS^~ zz5xTCY$(o8SM%E-L8csdv8c;}(Cg_RZU1?WR$;cE)CLvgCf|HL?bN+$>A^cb-w5}w z{7XES-&?e{=qqXsZv}k8XMOeyg6Fp1290-m7@;R2FY3hGCe#$RwHl@1jy4}ytVyNl zHHv|poKDfulYQQHU^D!5d|!%x#`kXZzTYKyNwNweC{##M<9DT~3K&ur2ZFd_mxRl@ zi|}kxho}u*G#iO*QbqqG;F+Wv*LkGrqE&@%7~e+x6T&u(=l&yvt{Hb}@J`Z2E)QJQ zyNLn>wLw6n>YuPI?7SwO`UG&Y>Qr0Y@Kh7hyv`h02|xbB?kI2+r_hz#QAGwTbJ>7u zl<8T88sCof3tM3s>$il^w1Km|_qDM&F!6Hk#s{B-lgvtPILi4;X0i+t*aml?`F>#Sx9btb@==PCx6koJjKCNwh40>e5wEPqVFm^*nzKcX)#oW87|(>+C${m^)eln4O#R#L3!TbF{) z|1-3x2uuq7ON!bpdiuP~z27qR>3`T}Pk%&;pYYGX`0#J?P6Dzc0J!B9zrXh)ZS-`r z?lx`=>U>#-#w%3*Lf&(@YJyQ$uH#b0J8Bpu%rb29{kY%WX0AFY!X&hOzxJmw{X zH9bMU4_qN9|HtS7Hs&p6R-Rt|M@=wf22shwXHPLW-+QvUfw~vgs}Y3mX0i=TP&5rW z7CMajRTgA0ASJLha*dggut8i%X!1l1im@~jY23~jJPcS9aqqvpBaWX0vZJ9=5#U=d-ZSae4aJ8M8ftT~i z5Z6tpai2_r78L`AiDN{fLP@V>h2Q=GDAkyP$xs?cRmiiXX3=bsq!c9A_hki%jjUWp zGyTLySF7WgKL^7pP(Zm2&>Q%)@tc6>Jc;PGyT0td4_}VX_9~R;OS&A~1D}Qaa6;fD zIaMl7pkTo>(}_M*rx?~eJ^8pZdpsTsfN~5kqbJe`n3}QTYMlTv=FE}ZJ8zT)!dAGj zHV=T;L%Pk71HJ{AQC-P*+KIsi)UbMbn{p`WZpcB@hnQ$PDct>WVr}mOK=&I3%jNae z52c(W-op4Z_r}Eb_&xN!hJNrjVHT{&s}pwOZCNnN{b+Q|rx;16F3Ih1?B=IfTBqtO z1xF22kE$fad&gb!#vM1;{bAeBRwxau8E??nF_w0k^f*kI;Gjt}3KFAXVZuFvWV}zd#MWZ!qg0 z!^$TT1^gB*5En3PgFhDZMSfrpW5}RRx>wN3*8U_*`wBp#8Q+0SsaV@iuCFCWZ73r{ zQS~+-T+*N47kgfCY~IK1jJPqk)HXYndeJiTrU0dD9CCG%*Wd6uLD}KVyg3CwXnws` z_Ih6Pvh}uurRauW+1VE9t$}!4PVS6lpb1H89e5lZ3dj)Ktcor9NqTL@YhSlo^V9Vr z&`u_tTTfnxM$Be#Yk8HHy_q`i$Rk>|&U>Y>P4zEtS^iKm(jPI^-tmO$D`A}_HNwaoAf_wbqj4RUB6=%3 zLj&pJ7>RKc0A=AMKU~m%!BWQEn|;WhH3a=y@iT{=NbswWTF8 z)BV;xe#Mto6*sK(fs-wv5-!w!S_6^6f*R6qy9s*H5A_Go+@ME5pr8P)Tc)7EMI}I* z^7#Le-r5C$QkqhK09QrAf&({=UVsB@tZO3uXryDp__0V-gZ;w*(?b$*wtdt9Q6aL^ z2GNh!L?XbiSwzgx&kT~_?(q6dJBi%3FFq9>t*+9&EoH0RIN0mWqf+=c;O3_oL#vsf zhjreG0P0Wof9fbe)h5bBjp4*GgI|weE-Qp2`9)TX*N`%+5T^;VWf--_wxbZFdB0`o z2aw`^R=(QIfj3XFqi8RC)nIB3|Bk6bfT5_a9MWa3j2gk##+Qxrtr*f>=o(54)y5Bs zv;C(u4IzhaV0934q~SDS%e0TEuqD4-S-32tj=3ogs>`q6Eh$LRpNhvcfMTeXpbez)AzY3X6<)KTB7 z+d@l!SZ(RP;?6s|@bPSnmU9McqAB>km3K#4WuIb!`! z;o#5ds^|C`lO)yPWn9cC^yLSuq}ZF+EAcF ze~ov>eR(ar-$LI}qf<>|`@t0o55uvP-oR7hW;lz)d+F}e@Mb#Z#6i6Oz*5*NprAtZEc2Mv{e5T1#XH%byFHT@U{@WvkJgb5jWebKZ!hTPjFsv*`L1{!G$qUc<-JAFFdFO4k?idq(#<-U^7 zvGgU=F*Wdsxpp=H-e!;U5?LsYvnFJENKZW;gT4&|0?dM9D>}k6c%qE?QLUoDheby6}gT-KO4Dj zFyZt+uNQFVgn1oa98t>8I zSPcuRh8l*v-AYiDauQ^e3a_RVqntAyq9AP#rj-h}F^p6y*jOz{Iu&aMn3DgQOd^#^ zkoK|33zN>QOOVJa^y-gEsrBl&Nh@^gmw!oxc9r}&ZM1Z#iLd?lYM4K=dq{$S=CV0q zvlgFNdW}~HL-P4LW$lW#9$Fu~WjK(eo)_`$O}!l*#^(pu(JFv1T@pyQ!m+3GZUMXK_r#;1_V~nAIllcD{2Y<#!V>2p-Y|6$ z(su+>Av8%hoT&AHT@WD+oPdUEA;3?q`p1PGm6Cs)Rwc0I?fA|2;UxbzSU~TcE7$$a zgs9;D`{Bc6&yK~2z^hk}#uR-GUWza6F?%Xl?BOhO2M37~l(uoXvw#Fu^G>9ntZ2v2 z0^^v?ILQ*Hr9SAISpAEM3i>Dd?VOwc4+!WO)&E?-4!yMHdCc=#_1tl)0PgWvQgWv) z>%Y6d_5XVHCUGz>=?4{72jOs@lqpHRSm?ncM+C80{<#6WH@3h^JhFhKMJ)oAcoT(% zPwDhT)dv4xwxQyPAj1+uvA>JQ9l7K7i3aXMKm! zPBal0LD$Sh&5%o*&mAy}J2VT|zkm|w#oTvYh|#`^)ZBXw7!5k{ zAhPNn=F&#`RF1%j{Hh@HG^>^u4&~yez@j5wd%JQ?q#NjVPtkw7rm&dO9KyhXKVF1f z0I84$FFt^01t|&@4qUjix>My0$B{l>&_Jol;a5adC@^Fys`$QzrLfyc5h)iX zk{)Z6w~w6F%4vP!plKJ8D0;$CKT3)E=S7Fq26Y1jI;+ZvR$g7nKVn9GpRJrWuNPAq zExUeHC{HDC-!Y{%+5+kiPFCaLoMhx=+HW5=ta763dG>fh!u`D8x`Ew@M70sty5E_B z_eDHh@)0JRKdrnJh`lo~j0)(dAt%j=`b~g!tic%|!allmXpe7F*%3r5j`nF3iv)SQ zIV4q>)j?xk^g4~oE+X&>gc>=}=}*DAp%h5=m>ekfJZNb4Kol7QEzMuFNdoFE1=n?o z^MO<%52lczbe5BGptFu=C{Viff>)dt!G8z_se``eRGlF9V<{-jTn8m3-^SIHaZhrm zNm<*EqEf};Hv|_kGOUHUp{4temVyi&RkaVbC@lNrS3ZJdNTg~tspf(R;9l;G7Mt9E$MEvRMM;gtj4*dj4JQEftwFk>c z8tj(Trc^tE;cghL0&N;cNjZ2hnH<17KI+J)p=1~~ed7;K{y*&aopCQ=l8YrtT>;Xrcvz=z3Mx*K6E4v5JNcWzbw#^_$=ZBEM%kxPiaYhW#$xt#KA{55D8#LeB9Cz!|9g zmKbmHn28k8>^d2&kEVCVo8T$q-%(oMQAQgJvPx2F077YsyH+-3QDW_yFJ#h&@B ze`lsf;dLNfxv43X*-Q0&QEiThvVkU%Ns{yKZA^|53Hd@K-bq=?aAo=H*%W9J#!s*i z8zV|$?7@44EOa5Qn~r5RdU!%btu9VxKuNWkN~}C$_cKqJXj zX5Umt5igML$r zV2*#^f8X{fU-))*$X9 zBN-SAEL_8DfevMJXo}UqX^GWzwZKMV$rlJ|Le(J4G_sYE-7RvVm?dw13EaWTAh3!19*D zOG)@RLYbD~&JQ!3zIAk~pV3V<>y75ORl{3oLOOHJ&F9rF_0CIBPL|r?Xcrdc)`Xi| z&wXOF7GPaXRV2|iG-?SUoSxKm7I!LINvgmX$fHu1o+gIP*O$poGd-C%by|~SYvsB- zI^buB9+#8Dc^hYgp;8u_CBkxh-#3SMbjG2wx;|e=-w`w4zh+i@rd@#G5V-hLHtY2@ zva!Uopn(hplLe?^Tc?7}D;k|tBm4qr;6zD|L1LCbVoZtey(7;98{;uFtA*m4K~wbJ zt=L#%!p+t3+MRTv#S>33B$ zXv@8<{T0yG(5Sc>ysd$$!=m7+!>nLR0y+Wa|E1OQ>HpL^g7mTu@?V3mp~--`Z-C_2 zYN@=ggXGf;qEX!_J2e2w;0OkU6E{Ui2n*H&()Dskhzf{LAqMe=xi%09L4{pqm4kWl za4B6U@=4>r)(Yv-gT@k2Wxm$cwQ5e?{Svuq1f!@8SW@-#!J_CNX*V8Dx!5Z>zJ!hplTaW_OlC79S_nS5%fHwa?byi zke$UC&aG?t^0++oy${dqL|#wcSRj^04Sy$fy}uUoKt2`>FH2c70b2D$-NkdP5&TS^bqErFvmv>rVGhoG8DpHG1 zp{;ZtV8gG+7hC$VQLaZg_^;;;LuIRr$c-A?#I)0E{2yI4(fog{IQ42F&}=iTKf*gX z!)P1i1^y`c-y-wZd=AcBuzd5_=vH#}Zin6iGren-+4%=X2=DXNQSJj870rD<{G;i52uwlq#2 z?$k6msW1@1>*Xnt)4!QU&o!N8c!03L41`VFQO9V+ZWVEQT zfAif*QU3|YuP9BOJuM#+d3K(dr8r*0yRzKi?k4l)p<&CWzVm0@b0OVW`paXLCtm#o z!AmBv`|)k&oqp^lR{m*l>S!nPp)OYbcJionO_9qEC)-PluPXOY*1(yM4-;Qjocy3( zGifEqvSE~i*L%WoNCjv+3N02H`v%Jgi(Scw>IJ#6&m!R$%MoYD9151l`ok(A_FSC( z1V7+}fnL-x|4e;~f){%%Q!dOr?Eb#jt9d#&&%`a1?dAOQ$@;9c8P6WMLS5_(TAW34 zvRSmKJtN}K&@s;{v*0xHpZnL$(y&q1l(otI%-1Mm`N-H@?tqDF$3vxo)b^5B2WO{d zjcIgSf0Xu8Jzi!Jb*;Za(At-!}SMxEx|O?`RU#fO3nY z*T0|xITtW|RWE;urXP(_N#Oe_Bf(R1(M+ulTqPqu99v#Nd5ppL`2pJ~IU038m7Rny z_l3I3!={|P0WA=Tv)gko9CE9^RVyz;@|CCmQJyY$@M-+;V7kqJ8NsRn2Kk@{eAGxt=0fVzeqfG;n|7 zQA>qcrp{LD3W?X4D=wvEEKARBsEV^t7kF76$NLkc8XV4*{UDB&BV9aVte*PKW#-D} zOXkj$le}Eh{VbHi>7MEm5a~qF;^3YTheVrXT!(w4anFNUUF0XUC1r?|KCKdO<`-VO zcjm^DQ`hw*cTPK8day_J>OQJ8^?I)WH?;-9&e73Fai>~1^M!a+L3Tq{gWXxt+0Z6E zUm`bfbXGz)Alr@SxpdvHy4{--*f{TZ^)rd)&jX6V!vHwK*xX^Om(b?x-bC%fIX-S* z>@T52_QJD~JE)-z%iYXGcwa(2)`ky0ISJ`l!Qs>FXr-KbCGwe7XpWSV z7e~vsiCFY#l3{od6?gWN)H65D$MY?S8%?G} z7V@9w6l|upWEROD_h_oR#+*7ShQO=t7_?py)MU<0Qg6;t8xDVYeLC>PpjSYDh9V{A z{WWTm(FTe zY>>eQyD%(a9^P;x(cD2uaok@35sOsj?>ktsU#@AJpqrjaiBw^!CcGdVR|Acbtv-2nw=wVIOYJf=hyJ6C}G zI6p3F#gJW!VRkn@dE(HAw*ytEdgYDPK#o3Y?$m-BNhC8Ze0YCF8{PUvZ-IGec7KXi z_UU1vpefLbG#TlE^l$&xB~j6$Fh-Lr><;}1M9I)7`stl4S-1I=L`5mn=^t#Ebm_G+ zZOaI<({gf%WsLgO4=x!vQ$_HZqJ_=zQ8b=RHRA;wXUnuU=$(_MV{_O!VLT-<4^H-I z)aL1Ao)Y<}y^Qa?nKk8q6?`7qX!os|zBxGK=XH1)kd}%xh8Msr$lTblDQ7^DVIuDf z=ZIK05ptR{rE=@VJ;uvpx@Wkl$qscMB6p*=lsH#~m9D6x@=nB8%E8WDRqFp_g8ZawI?ZXor&7u$r?JPiy zU;4ZFKw){45Nhi7B)y$sD%MQeVj za&A=&Z@qM2mgKpBIFN{o*OoqYW8UGhZt{B@m#D(H3=nth_}lFS#ufDm~Ti29)?&_x?)a z43${7Jh3nQr4k3Wsk_uq!xyym^>xX^sS0X^eLFVi*_3hR--M_^TXG`}#ijsAmdn`j zc<M+Nb(-k3Sn1dqT&H;!!ctE%kgmR43wZQ01N z?r6)?slyGw&NP~#Bkl|yOXngVA*@Qgb-Tp|9h59AY;;X?B;5tucbc~ph#Ft zCX|=G8;Ta*_s&mgyUt`xska5qJ_D;f(=K%Ff6@O?OU6=;pnW-N~vWl^XIAsYXvJOf*u4FM8^qnx<3B zo_}#;kzeK5``q|$jEoShzDLFk)mckGv%_jYMAX)UW(SS=3+VsKu9>H!L?wzA%ecU*#O;mIImNJ^ zloOXObr76>Fg;S1JL>lIa#8eX$=yVm>mhTzctPI z)p7P%=g>c&^RLH$|LJhRc&h3Q_15gyi=-K@$r3A(|VoU=$ukU6`Hqz1<#@Nu7|$mlfe#>leacWee^N6ogjl0 zKS<1H(T;{481Ht39VcecC2mq7!JjrY+mZWD+#XGENDa0~dfHAJqm5CfA4ht=ATFObOhi^4*f>p_GtpG0)-S<}2Z$@diUm~=m$Sk%+*~?aH(97dp9tPq zCySN>AH~Uw%V0H1X{+wmyY`NCu=5+43f;V~ecBU{C1*5N80tpq5d6vIet)%yDmY$x zwjEj3j^11H=1Ft1w-`jy;M%jwKTC!lUXv+GOH`K{$q@QjI+gil@109l-3Iqnl{DQW zG%CLyK)>?)`;!yZm~Ij+QIoVCwFqv^SHTbCz(VNceTVF}?jBYamucxWc5>AvcJC~n z)!KdXsY#%9i534+LFtk!o=S1T>fmh<;MDT~La|2fmpuMjN4Pa9_YHRN!c>(u;ikSkPS(VcJ&c&&iHQ*$TLuv~B`h+!2Kt)4Z ziojvZfVnMtqp<1n9C>#Q+{Pj6xbFjWk6xP40P$2rqsV z(U1o#nu2kcYhUfZ8yQiGgH33vs1z|W91<*(39uK!;VVRN@>e5vVrH(ve z^J1T{{#B%U#3P23!R^C#Qn0{b7_C}S=%(@UD=K~%MVb%DWspU~z$TEU)i+u~>g!Lt zw({&E-Kb$&FD)(Z zJd>-u3}+CFWvFsZ_B@jjoZl!C`HguBJjJ5H zMCXUfX-fTPi9OkQYLdkb)B23Pr6!=@z*23%1%6gt`*%hjS{;>(EnRR26z-D#=WMjp zaqq{ZUEELw>Y9aXQe$}+Xh}+-8e?8xWFq$xFk0Yc;jc_~q+u=0jLjf1pyNWIYF3(N zejdhaWdx5}oe?B5oK2Q&8%N`4&mk1#D3XGeYL~XW8R5=2fENxf5*4cz_)rv_<-2nf zX!v`t@hh!KCCauL5;7?j9f))%Tc;sOsbW8x>QPnN+O<<7Otg|Ua{N&{8(~|dirtp) zmR6+C;l-k^@9tk=LcL@dSe*N>$O9CQyZ~E9v6j^pnF8ATu@zH>9GQ59XfM15EgJ!p zxNRs*vv?|k5J)pb@unY~5GA`oq{2AdDoK(9Xhxutjq(#>t?J=XeN{KGr(@eHcx5W; zhTm-=#^7P!Klp-2LWYc254e{!!fIa zBL2YGX%w|C_w&$J5ZYWR=onUe8hQq&Df94KO6&RBQru3`=Akx}SF^Omxb4M_!YxT0 zPSWB3mx=<=MW`hSQ0>(yz-a-7L$bm2{WmO<4e)>0XFh5Mry)q~*+DjB`P!1FVo2@L zK{iBv+JJAXP;)HL5MIK7K?86>;o|NAZNoN+p{at5K!@}Ih zNjqt>$zK;9oM`mN=sYFE-s7ZXjSj)8>C%Rl1@@)}^I{XY%JX;_xY1v|s=P;-{*N$N zloN24=;%h0a%yq}K}XtAAW47}!<^Z4Cxm7hxv=O9sQk&TCW4fLABQ|&^F{5&wA(b~ z_d|1ToqsxRimdqi(CL#!!L5$^(CF(5hWE-32h7*6;4f-)PDp71$1E;6g0K&VK6&uE zxs4&-m#NAt18XlD>+dYo%`~?iKK7z|*w}Z0iYS7QFz1x=nuRDU~DIG$e4Eyr+!0hb%R`4IW&xlmdeQwns1|lbZDnpF9lwgC$7DZCP z<+%$jxp$v>wbk>oO)9Fnrv)XeUhEk&!)&}q9p}_qDaQq668yh1#$A_I8fl`-&m5Aw z@LU`sT8p;!uD2CYj=_V<JDJ$V#I|kQwkEbc!Nj(0+s?$!+>_t?e(Sqf_x`by zs%Jk{r*`jiR`=?zuGSVvIdSq84u}F$NW@2*u|bHB2cg5S;LWWP8ypU~sa?gbH_)B% z*6}f95K}pP9ubu+u219eUwx?9JTFY8kXf<2f4s9A@Qkw=za=Hn#OX1su9SCCyuXRg zx}cSj`l{bWqA`;vrAg-?pJ@2CLH5%d<}A*iV=IuYmLpH?;F7K0kLjYw0#O0$DiB}d z`V({QTylp_6No9CGhKv(sk=bNmkEEfmpdZ#%)sZq3bJbOwad3xK%I4wO!SP-7vjZP< z<0A>gEc74U z6+lPyf&zkw2Wq!N4tQq9dhFY^gScfm8n3ezIz8Afk$+$)y0qDNT^sjy;{_tx9C(N% z5Qk{wOIrh+HI{d3Y9hGdoCUhM02h(_4X<$Zc1;DG+J3`%pqmG95d;zd7?ZoVYdYZ6 z^&2h%^||CCisLf{$R(hiX}Cz48(N$~cF!ULHjYBhrN48Wp$i^AUIan+d(n~(E;4`VYwiI1vi41F{c$$IW{ zNoRtpExUg~Tc08>Wo<%SlW!0{zV< z^{F8qrofGfXg-PmYXBUHJ}6z*DPL6)n;%PJK?-$uU(yT)WcwspMCgyh7$5e79X4&b z-$(l~z`Uwr%r<)&elcV#E$pU%X@Z;4A}Ue8^l-l?UG`|FAIIfiVXTjB{Np6J zlJ)Qz1*#=>WQrk1S(Wn?E3@On{Nq}P6;$l)VQMK}2B9R2eJZ9Kx+2!=j&lzL_ODg< z4M&B38#B?7)~TdbS3xfKfJG?yI5%VnTRj=1#$V?Q5ew$J)hqtn{!)ad!P)G8Z(lyo zHjpaEXIvItonN0R(EZ3PI&cW9F-`&>QgWpiJ)Cb_kF$t4F2Yr&*XPu4Qc{N5wa@1n zVEFyI{@n-V8=gmPBZ}Zf*1@PMi22f7hL0T9hCiA)KTaXM#FPYD5lRktH6k5JS}6zm zb$#4jY+Wtk#In42$64E3%#h9+fYZx|5ngb24ZV(?y#wKNom|*k;a8KllmwKR)>hQ$ z#@R54!g{|vCFrcXClZ=dLRxOD=QK?ah^f#K`ji|b0%jUHIXxcR{wZIiU0QSHza?r3 z&;LZwGtCodNmwAhBi8(K*@5>k2=qN-=SKYKjK%|Z8y0&k2vmIVQ5-~xT15`MF@e=E zSiuz27M^nx-Q$6Vz*xN%n@d!1!Bc#ppy>tK=%#8%iK-!m+1W(aFu05^q%1h)D*P*Z z5(qBdP4$Kn)eX1>N2_5l0Xk$c{vo@Fj$qE}>cUZEd2J)EjH#Z)&%Wu{Eau7o*O?>f z{ASl=^>)|*|)9)(3|}gbJM;uc%&ZP9Vjk6 zyBBmFJoVnp87RM0cV%4^R&i4I1&%I=w+up1q;6iCOr`kIDaeQ zp-)~({o{oC!5+w(*o4oc0BNrF$>>kG0N*G@#iV4OL{my zHxrefF(d@>#Q+vq8ov#J+e0t$i;FRw@Nz6O6vNgk?$ltRutdQT7#z;C|^`5KD zVBxz98O%_c=EFp-E@t<215gNkWdg=X^9kAsmgX1W%fbxLBK@(!Buz=Ethj>pDf`I>GD+4I`-xO5U`FJwGeGL>s=rL#`f##nxx7fZp92ryJx&wpFx9WkMr7gypq z=6pNqMe^x#;-B0_+WgPpGDW_u?BLMl>)xYpXKfM!@61D_OADlb1izAu(7!xw^dMpA z^^8gfy*4Pd^v|&kCyw-Q#wCqHw~Fi%1GPa-7`4pdUwO873o2$udZ~-T+HIj$JzN_V z6#80KPoP!}?Y|yhepDo!ACGLGeVDYS*YH~o9;NYdPKcSd-&uo|!h{ATkWn8D%tYnH zdU~NuTI+MYs(T%Aq=8j{GA)p#T@^t3Kf4I+AHd?;DB9F|7O`)pHvmrL8 zr%$53U-u%d6l2m+B;B@|SDQ$R_2dc_x}9?s8!%^rjB)9u68}lp3=@sba+WmIbwC*7 z@&h1PS^%U7fP9()klb(1H&WFQ?jC%kg(m4|s00x?w8}zem7OC3lj^HT^g6_fO_mCi zM67sk$W^>P-3vCxMNdI$)W(dB%qEmd3X__jh|F~|W+F5Ybh40ZX+joe? z=YktaUmxQ5LgxNbX5tz~%rV;!*GhkQ3Cu2^U}i%RT#O{#re15m z)QTLle0Y>2^y_lQ@;@5cVn>eetWv$Yc_3cp31`+osEW)#%yFNJmmii`n2XG<9%b}i z^k<;S67+*_0+A~4B2!IqJUkKk!g2V*nT^3eDum^TA~F|m3%XOHQi?~{g_n>U7ZFtA z=cXnc0>@;4A)Xewg+C%{dDkJ?trvcELDiS@*ik4faDyYyG*C2-9OlBHo~zrf6cvg6 z{gbtCe+VVk8BM9s&`>op3`aS|B1kNX9LHQjrO*)g8<7PdLlFSvUjwH;oODendkzwic4M6PO2UAW3T?lI3w4SSewQ+`q7TASD|oL0)C=OxqyHthf2QF zX($Z1u$!<_0h@xUu0r5=0VE9?)Ecl<=(1pns{lAn_;#5Bk;w@ux)!MF@*`R~o>#7L zU;=);N;xTwTkhf1))C>D*{Ap5*H3MAlm-SWxsLqtT1#!|V$iwU?Q$g$#yoeKlsu0; z1mDH?y?qaESn~(;P%zBtCwqo)ckPrsFf%X2R6~SiG8!1@$?56=9fX@j8Ug6ZhcEg8 zyx)B)XejA98`C%OW5?D`fVJ1ekHin>E=|fF-5uUi#8C=|f*sv;L=^~oq1pID_QAX1 zKuS;IoK0C6nn(_^Qwb+!ngYm)B_Zymdb+Ke)q0!znOrkdW*UK{eOjXa>J9dbgFhh~ zItg~Ne$8Y|koTfyzP!sGS+M(C^{_wtANtRr}ns2Pv9 z8sv5i5hE4Hd85SEVO*Q*jt%?-6Qfh$w+~eSOA_`GJR93|O~QEBW*$aSjM)?_H4rHLwgdFwCtcktonL^?~z(?YLoJF+$b~nMRoCHc>nqgs;b>owNvZtv-oTh_l> zK(TjbD3NB^lrqYuJ>wal0<2#;>OH&CR)TEvZmN5>J|FDq9qi=}4_Go0q=V%0@~U0! z&CL)Huz7nFuMNpT0Q-hYzS9n@jOpPq6B^;d zk;fYwyxAKUFEP2`|6lT$p|9o>l;T;|dodqU51(I$J|SMb`N7ZwRg&N5^Wz(#WZ37h zsoBBOm`fYY!(pY3Uq`DBAzGy~PITqx)!vK`LxbyIn)l&SE$!blweudA|D}%+RktoQ z)Eg)w$q80%CB5g~p_YpkTlDQf@3dlIW=##X2xllhdF83EL4LWlsvxqb6II?xRI!%$ zcW-X}_W!)t>#3>z(pJ6o$7=2Hw^PQ~|D!Jm`kvK8BrgOCv%f2@j1Zd_%#a{Pm-hOR zA8CxRRuv!F?yU{A;lcHjr-sa%!}7KB?04kIpBz!REzd=scx`BbtE#i`@tU&RaC9hT z$aafdg(tGF)TOYzq!yO1w>6_2N!lyzwhqb{7|U1BZy!Bwo6`R-1n}SDfPGIQ=UVColJ*=}G8#AE(^^p<0mnAd!uzZMbxVU2 zR{m)$G+gh36Poofjuh04V6t~U!^XPc<1(f;$B)Lf3S!nry}*UKP=~44DxGw$| zz2S%>`nW#5+cg#XIWi1(7iz-_w4WP;aq!k!MCcd#i5SzcLfDwh%YsiSO-RcrcK0&0 zXHsDTUM5M_!n!hGiq{)G+3%pU+#(o;lH9EEI@TMx+=5S^=))bA*tt%dw44M)%=s%_}7o zuJEr1u0uI#l@2KV?1FbSo{^eN-jS~mik*w*o#NSd=9@hT`IxS$v>()~Yvgd=I)vUZ zTLa$i9Th3G)(BD>C2c`?w4Rkj3VinTf+wr0xF@UB?AtZ*z6tC%i9a-Ex_`r@M6oK+ zyHg%Gnr~V?dMAx3$F;$eB3Hh{U{~{QrFYg_ zeN}a3WAHt%Yg{;1JUgs-zqV3oZ_006vWxeL*{mI}Vy5OIgEu+2TF&CQT3$H%Rhf9I z3|UwW9o@Y)EB*0aJc>>_Gca2wJiTjI!;S!&fOOj*TBZX|P2*Om3i5DG<`)1@#S5V*1xxX>J}^CxhJ$M72iK4eJmlmdf1ox`Zk7jF-~bK z;O|9?g55GP!(q>t>p92Edd2ELc$!X57Fg4sNcb|>3it&4OWPVS&!$+-pGbT)O{wJ| z9^2MPH!4VhSC4$Tw_V9?vDEVUTiT5}V#$CyI#)(JYKptYVHQu+)GtkeP=IbhfE4ae zG}SL3{Gp3DZ~uuIbQ%ZT{U}jNIC?I18k}fZ7^A_?tHl@~g}$~y2*PI&n2P%~^zyR% zSPLlGc@e!4yb_<)v%E{X9XnEHI<~WnXfQ`iWl#9@Hf|~9GA>rCzTa7)a+B*4>B7&Q zCS`Bo(@m*Ml7rY_I**HEaU+!`d2(Qy@en3H={-+A|Jtig(N$3JKXjCDI^8#2_ryou zb0PUc&*ermMLR2B=efWevvPAC?5G`bi$~#TnSyHN^JLqXriERIOI}hsnIk!ITUk$O z`hFbc2%bFkIXNx){-I9PQ{;7z?}+?}SDRjOTcO=cp39iyI62Kz=gT*bN8KKr`erbE zt9jrS3FS!XTF0S#Ca0=}UD%83ct&yu@hwFgm$(b>(Y*L3{ByiIHbF1${m1+>sQ=Nj zxFn;*7xvkEL64I)X>pqIznF*5UH!Hu3^p2;& zkKQ-ioUC=nYp?BAjDkf>3?Io>X(6?$)r{@)4m6Z-{{Y>x#RIXSJac!ch4W|KZVcoN z0n=OstDmjxA0{_9L4)xUmhBvujWzhML30tLFL*`sF^$leJ)sZao$gl2MYS#naC@Qr zeoeiCv+h=Zuc#9*vZKXu$t%^nr=Lme&Af3Hm;Z^lc>A!w`dQu1&zZ4c^uuuNq|}Tc z_(Af@t!Kkgd_>8Vt37PqL|b&EUI`$vC}|5mzaOj|-c1Z$UA<9A3Dh3!Z?IX1(|2Df zwx8_;X8raFv92E2L*nPe^6k4a#7zc&Ee^#JC3XyYBKFghsp>{-}5T-nGnB2-= z7(fIsQO0YCoR#A8be5+y{+TTh3y^<#ah%%Nc!(D(cak6!B;C!o^5w)-5QNIP0jjPn zkSf9aG|v;J?68!l44nr4MjP^-9iYbf;d8>#xYuO8xuIQ#lNFJB&OB$KCjjWT3?K(i zKM~KAteqWl@F8-)=U*<&N-@cer&CSB{v+{F2>#J_wC5E*Z+n-;#PA$8mR{(R^-+2v zWR95Zi^EMlM&`GWD+iO4?3c9jz++ZnJVB zb2bo?sccY2;n1A=+laEq=y55A81iB@3GCVyiiNT4*6O*TXM?rUA?GUJSiP~ zy_>#hdUzA`iMlzMbnflewwL4B?epA+xNF$ac#o_lVRJ3)Ke(WqqZ*f@Uc7sRIy(kZ z9@g>u(63^7DEHJ<8Xj+QSU@7rDNO_Gbt@zRn-jkjvr-6hn~{Q5)dBsjVSZC(m~cxU<4w_17jN zmGBxR=z|zKO*<&NMZ)5LfPJm7t)4qH`m1}_Z0FDIIT(EHt2(@QSIzq|$`C4T^Jw#! zY510i-1v|^)$`N5SwFo+wr%A*h%~c*5@~mErWx2@jaL(0<&+chTn4FIrd8|CcDJ}4 zEw?w?*L0)vjpeF=R97$ON1N-gXg#AsoL4hdU%4?3lh!=sP5GrxIMB-2R5?qovgsjp zv}io4rLVg6$d69?#(H^sS8v12uk)L5$_#Td0zlXXIF!Y9qNCd;XMZ?$jGLjZd#>|7iLDLEtyn{3l*vL!$hEbny}S{1xgkQds@S`m&;lEK-!8WicwnwEU4~LZM1EwP3lD zPNZ5zb69sU7#I_#k|XfuvxgbhbM(wdVA zasAb(u*pSYD6ff+#b3j|a4VC+BOK;6( zRtabDi81Xuf7a+>ObD}6$ix(dO#@E-AS9Ab9Z(UHI$5m<7$AoRWQf_eB!V5`tFJ#k*29lIR0WlWHNg#uK}oE@8ryJ1Xl zE<+X~YTAZH!KHKzXs7);g)nvuq*pUSyYk|O*h4OvHlYE zg7!fASS2NjmfMP>6tLq+4OT3zN;qI3x2PqJac0O+9GLvbh)J3=VUha}kfk_a*zXH~ z1SWXl+vRD(A>LoK3W-pzLMAy>Gscav;xN{v+jT39G~lAUa@$8*CK-w(ks5nH!~>7m zJ<`>Q0~u^4zF{VTPN;Xwgrm1KM<+oMmtNBhEteO*M>PX(_vBMRK@5QUqz-WjQtUm0 zUOWs?oqZA|XCvAn@lEBYfwhSuw*Irj*Jj$`dw+4%?C!SJeJ4HF~0LJtq)l}dIbojS4O+iY@X;hr*asWlzKS=QS(+e3{_7Q zP*jZ966heo6?8;b+qi-lvVcda8-C=xE^`X^5{POA1#qPs-x9EDN9igx1cbt?DVWMe zp;o9p3enT9R={dtHH07lQ&=g?BqVw=&=>rWEVRMPEF6PYDNv?YSjybbKVMOSS8xS@XAZ@UUU%2P{_w72LYO2}h{a*?X2d)( zts!RIQC)FG51&!(L$am}d%OctZZV@Ns@N~)1W8Buoral?BSP&gvxlOTKJ}Yw16^V3 zG+;tqCKi+=6K50o1+>!8jyFlIf;e}%N>}8V4j-gkp&TLqC%mIzllAEL=bYnOmlGC; zd92k0z=WOyRW2eys&s^X0Jkk7|hgJpzR;YyN)pP=4=-`7C9G2}ss z8M2R&cuH`B5b0bgIRA7PG@yxKm}Mo0U9%0~P`Uc;3L#y3DuY^| zRhzBxz*xXIQrNcOC+-Q77hIC0UNn+wW&}RT1Om#E7);@TI81$dthNxw4+q*&BS<@N zRkK7NSR;FGSS2Ly3H5}aRot2&w88Cbv_hh<ca-4eA!@?>IGvwhN0xRrghYKGeZ1>0sv986!Ey(2fTFQdY3D`~pO+)uV<$|8w#8 z*q4L0!jYN+Q!L$QgSJpAj1%psk_aH4H*-L+pOpY8ZmF6`dgdGuwzVtGD256kp7DBH zp%i7I=KS&Me1%yXp%g&aIMwv!PP9}iMNQzUa^RsflqwsDOAlxCdF*`UQzgpt1jA>~ zyn=zbMY8S-W@xd(t1*R&P#KC~L1MNoP5-6g4DB3!9yeReIxS|J8dsI(-8Dun0;Ue% zoD>Ms{BQqWJ^k9!C8(X5zJ!clDeJ=M9Tv4Q?hmRMA9Q0r5&^E3iVP+EFuG0s*$+cC z1twZBxtZ^KKHNlm93~5)*r<*Twxh0q3f5@94b{JCogjqv84ef3*i{P+!fnC_6=3F2O4}@gNypjA@pB%PX0s=Q1S9&Nif=_0(D${ttI@Sr3Sg!ZU|jY z-G`E})sK>p*o!iF56jAJy%=VvhJcIT+q{QRSSs}=p$mkh#{$yO4%e&%N{}WP5+uRO zNzwpN3Jp8FXbJj^2pe8j6`v;m{o>u#$<^~-!pYZK`A*W8=3vM-;p2fhpc{E^Z zjRdp_JPXbRD^(VPn{to>6hFLVOfq^jvWZkGAiP6UG~$su8mUSdgLt`=PWZQsW{5^w zeMCbDkB9r^_3Tz6s;$P_;w}wv&IyFH;7HpU$_E(d`qsQ2@h5;0s1rwKqt5M z-N~^6I=OGaENQGY+Jk9VC;-wA@kOp$JOW_xUnd9EwzT>*Zpi^^P4H(Uk^;oUxnSdJ zOf?FPGKx%W6hRO~^l!)}5SgG2?n}NFDpBkUEB5+aff_N1VPlabPZ1<6+iJOb~bNIz%#V z0Aj0=V$9gngvqU$#7XUhNHSbW)mBkjv5z4#KSEzzTG=2LI&VttdEHJ+J6mzFJ@WsCYBJRii(y z46A@rNo9J3dYzTi!RzznZAO13ONI5^DkOv7%Ic49EU61=kr=&&1x3Y@qk8le3|0Xy zFrAfP+LYn*l za^$n(Iy6g@7eLP#RH_znuYS|1>h4ifsIOnN+O1g%ux9(a0y7?-s`a?l#C@oR|7Hzd zq9a}Hb*&{<7#(l*aJ#!GUXdgCy)^?Z6nIyWW3_U7sEt5jvOC@)@Af^g~d ztS=*9i8(%(A4S(!rKlFNEUQ>=NrZWBO@htK+d-~MWwNV9KN~@!2po3(jm`{JUm6`c zF$)R#HtQuu+|iD*s1KJGW)~agxrRkK*BvP1PJ?l`l$Td#KE?e;@yC%TWg>O_Bbwd# zKrkxc$QwNl0ErAhvfnTDF%+lJWdK;;2kO5PUw~@w}aJ*C{fdJmN*p zakLj$SJUZ@m`6QhyeQ*Ir{tCqK7}kZ_lG;u zTenbpnU~4ir!kK*TKv(C)v^b08K$lQGY2oiuD|W;D-cS&iI?u#Ous4{x+@g$FLG=u zMW78OU2mq2=R13fxtE33RKk^p0f`LYkPMX#se0vcO|Dtz3fCA)TOV$em`j=on&ojr z8SG01kv}9|?<-M)&ebvFF~>ghFvpJfZVpK%*oygndu^4>D3ObeRO=0RJNT+vHmeMF zUgVL1k95qQGn!nmksXr{ZFGo@cT!OSN)%I&r=n=S01bY)fa%HVM7h!#VUSN59jjLx zDjlaurvUx{kxEB4rdDdGYRhB)%8*F&SIxk(XwSmxxXT;|Q#~TB#11 zf~;P7g(V{S6NwZ`tT1<-E@*VoEryVcJYp`GL{Z)rgU`f@XBgoZ%HXI_VtE-m?uLn# zu`#ZOtp&~c?`BVIDqYiS{Lt}q>r{iLDSP+gs;T`3 z8QYOl8KoesENYa;MKh^h8CyD7s4DnsFP194@(LDdATt_cY(WiE3#nwyqk&AC`$PTG zADN%QDG)2t8BJ!;&0ba$HGjhF9~|ObyGZ4~jw;{ZB^K2W04acITlM^Tkdk9C@XhG5;2J6la;7p4b zf;+MQuT}gzfCK4=LO(k?BOFapuig095s)=^(W_Jlj-#pdKaTkArYs!sTYokRlB&bf zXO7y<^^Xh#JOvv^VpzD?6o{d&(Q6I9@EiwwNgEcKl@;kFf{s;GAU_9bBH^;};J-%kO3TT{ zu3}C$u9mOuopLNIaXF5`v8A9&S7c+!9-W%Un^05dGP&i}h-1KFT@0qPuUF6{Itemo zf`YspYTCf&;cJXX&)~b2{YmDHnma_U+YT#R&UqD0P1AVUG$h26)-1!C;s%Zmt}9_W zev13u@#k;bKpao%yee~M4M-{(F|0cf|DPiR4C>Zvx~94TW??$h5hGR}hzFEaCHfzE zqsYn_{O(+J3G-IWnQEXfhtj0kuc8P$^#C`ots3JaLl*o9yQtb|7EeYx-;u~24k?i^ zilcf4lw@EgE2OXO>FCiN-5If_K{6TZwFn!Ug)eyi$)1kBbs^}5uj39Ao@OwAFybo0 zJizA5j~7mJ+8CrmMq-i^4&xO}i@?{ltm@ApppnWL!J6R}b`6Y84RG5N&{;pqHl;hE zGv+miPCVx@>3^bGmE1ZLN=m+pxwWBWf&<5JC@3ZYrNph^;e+^fSInGC8M?~M$VmF9 zA&WF~%D3OW1poM5Z-SOwB*e#(m|UrJNS)WZ@)7#!swXvRn)N#6(=%nY{{b0fP}d)N zbm^5eU^G_^Smm~{G#-iQ8cJHQrUnTZ43dUj5S`Kd4GMT)t{m*}JPb*&&bS`9(gSNj z0t(3;h@5BdJ2mD3QkmT%kmS-8Tg27EJ+qlnpinC`kUc z4!H8rLxzx8kQY)J#7TBw6>-|pTWmwI#7}~Gcd(()Q0SBh~QgiLlBwkKCtvUgh{7j zT)5#GUudSbXB2~eZpH~NdnPP_6>@+BX@G-Py6~QF2dMxD^Z*A7_1RF600)`?2Y
~g_*CxGFjwq!NYNRrSz(>+?2)xVI^WQ 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
wf!F0^8Wh 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%0D`JIN3S4VInT>%H)&$=_FoOb4s2!e-n#PV*MNE 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%0DSW64hwr3zR(oe34pR5upOYgFb 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
|teEFI_54&p=FVos!xIGJ;jHQuehfeL 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

0x1LL7aRkOoBP-2kiRr^R? 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

pCF1IdFusS5~ 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�AfS7oUbg*kC2ud{7{SD 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°p-4bR3sLu?m+I>K~C3wC=5a% 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≠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 z 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ⅅO0*Xrv3 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%0DA2^ABOK;MXNKG-@? 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 pci_exp_txp, + pci_exp_txn => pci_exp_txn, + pci_exp_rxp => pci_exp_rxp, + pci_exp_rxn => pci_exp_rxn, + pipe_pclk_in => pipe_pclk_in, + pipe_rxusrclk_in => pipe_rxusrclk_in, + pipe_rxoutclk_in => pipe_rxoutclk_in, + pipe_dclk_in => pipe_dclk_in, + pipe_userclk1_in => pipe_userclk1_in, + pipe_userclk2_in => pipe_userclk2_in, + pipe_oobclk_in => pipe_oobclk_in, + pipe_mmcm_lock_in => pipe_mmcm_lock_in, + pipe_txoutclk_out => pipe_txoutclk_out, + pipe_rxoutclk_out => pipe_rxoutclk_out, + pipe_pclk_sel_out => pipe_pclk_sel_out, + pipe_gen3_out => pipe_gen3_out, + user_clk_out => user_clk_out, + user_reset_out => user_reset_out, + user_lnk_up => user_lnk_up, + user_app_rdy => user_app_rdy, + tx_buf_av => tx_buf_av, + tx_cfg_req => tx_cfg_req, + tx_err_drop => tx_err_drop, + s_axis_tx_tready => s_axis_tx_tready, + s_axis_tx_tdata => s_axis_tx_tdata, + s_axis_tx_tkeep => s_axis_tx_tkeep, + s_axis_tx_tlast => s_axis_tx_tlast, + s_axis_tx_tvalid => s_axis_tx_tvalid, + s_axis_tx_tuser => s_axis_tx_tuser, + tx_cfg_gnt => tx_cfg_gnt, + m_axis_rx_tdata => m_axis_rx_tdata, + m_axis_rx_tkeep => m_axis_rx_tkeep, + m_axis_rx_tlast => m_axis_rx_tlast, + m_axis_rx_tvalid => m_axis_rx_tvalid, + m_axis_rx_tready => m_axis_rx_tready, + m_axis_rx_tuser => m_axis_rx_tuser, + rx_np_ok => rx_np_ok, + rx_np_req => rx_np_req, + fc_cpld => fc_cpld, + fc_cplh => fc_cplh, + fc_npd => fc_npd, + fc_nph => fc_nph, + fc_pd => fc_pd, + fc_ph => fc_ph, + fc_sel => fc_sel, + cfg_mgmt_do => cfg_mgmt_do, + cfg_mgmt_rd_wr_done => cfg_mgmt_rd_wr_done, + cfg_status => cfg_status, + cfg_command => cfg_command, + cfg_dstatus => cfg_dstatus, + cfg_dcommand => cfg_dcommand, + cfg_lstatus => cfg_lstatus, + cfg_lcommand => cfg_lcommand, + cfg_dcommand2 => cfg_dcommand2, + cfg_pcie_link_state => cfg_pcie_link_state, + cfg_pmcsr_pme_en => cfg_pmcsr_pme_en, + cfg_pmcsr_powerstate => cfg_pmcsr_powerstate, + cfg_pmcsr_pme_status => cfg_pmcsr_pme_status, + cfg_received_func_lvl_rst => cfg_received_func_lvl_rst, + cfg_mgmt_di => cfg_mgmt_di, + cfg_mgmt_byte_en => cfg_mgmt_byte_en, + cfg_mgmt_dwaddr => cfg_mgmt_dwaddr, + cfg_mgmt_wr_en => cfg_mgmt_wr_en, + cfg_mgmt_rd_en => cfg_mgmt_rd_en, + cfg_mgmt_wr_readonly => cfg_mgmt_wr_readonly, + cfg_err_ecrc => cfg_err_ecrc, + cfg_err_ur => cfg_err_ur, + cfg_err_cpl_timeout => cfg_err_cpl_timeout, + cfg_err_cpl_unexpect => cfg_err_cpl_unexpect, + cfg_err_cpl_abort => cfg_err_cpl_abort, + cfg_err_posted => cfg_err_posted, + cfg_err_cor => cfg_err_cor, + cfg_err_atomic_egress_blocked => cfg_err_atomic_egress_blocked, + cfg_err_internal_cor => cfg_err_internal_cor, + cfg_err_malformed => cfg_err_malformed, + cfg_err_mc_blocked => cfg_err_mc_blocked, + cfg_err_poisoned => cfg_err_poisoned, + cfg_err_norecovery => cfg_err_norecovery, + cfg_err_tlp_cpl_header => cfg_err_tlp_cpl_header, + cfg_err_cpl_rdy => cfg_err_cpl_rdy, + cfg_err_locked => cfg_err_locked, + cfg_err_acs => cfg_err_acs, + cfg_err_internal_uncor => cfg_err_internal_uncor, + cfg_trn_pending => cfg_trn_pending, + cfg_pm_halt_aspm_l0s => cfg_pm_halt_aspm_l0s, + cfg_pm_halt_aspm_l1 => cfg_pm_halt_aspm_l1, + cfg_pm_force_state_en => cfg_pm_force_state_en, + cfg_pm_force_state => cfg_pm_force_state, + cfg_dsn => cfg_dsn, + cfg_interrupt => cfg_interrupt, + cfg_interrupt_rdy => cfg_interrupt_rdy, + cfg_interrupt_assert => cfg_interrupt_assert, + cfg_interrupt_di => cfg_interrupt_di, + cfg_interrupt_do => cfg_interrupt_do, + cfg_interrupt_mmenable => cfg_interrupt_mmenable, + cfg_interrupt_msienable => cfg_interrupt_msienable, + cfg_interrupt_msixenable => cfg_interrupt_msixenable, + cfg_interrupt_msixfm => cfg_interrupt_msixfm, + cfg_interrupt_stat => cfg_interrupt_stat, + cfg_pciecap_interrupt_msgnum => cfg_pciecap_interrupt_msgnum, + cfg_to_turnoff => cfg_to_turnoff, + cfg_turnoff_ok => cfg_turnoff_ok, + cfg_bus_number => cfg_bus_number, + cfg_device_number => cfg_device_number, + cfg_function_number => cfg_function_number, + cfg_pm_wake => cfg_pm_wake, + cfg_pm_send_pme_to => cfg_pm_send_pme_to, + cfg_ds_bus_number => cfg_ds_bus_number, + cfg_ds_device_number => cfg_ds_device_number, + cfg_ds_function_number => cfg_ds_function_number, + cfg_mgmt_wr_rw1c_as_rw => cfg_mgmt_wr_rw1c_as_rw, + cfg_msg_received => cfg_msg_received, + cfg_msg_data => cfg_msg_data, + cfg_bridge_serr_en => cfg_bridge_serr_en, + cfg_slot_control_electromech_il_ctl_pulse => cfg_slot_control_electromech_il_ctl_pulse, + cfg_root_control_syserr_corr_err_en => cfg_root_control_syserr_corr_err_en, + cfg_root_control_syserr_non_fatal_err_en => cfg_root_control_syserr_non_fatal_err_en, + cfg_root_control_syserr_fatal_err_en => cfg_root_control_syserr_fatal_err_en, + cfg_root_control_pme_int_en => cfg_root_control_pme_int_en, + cfg_aer_rooterr_corr_err_reporting_en => cfg_aer_rooterr_corr_err_reporting_en, + cfg_aer_rooterr_non_fatal_err_reporting_en => cfg_aer_rooterr_non_fatal_err_reporting_en, + cfg_aer_rooterr_fatal_err_reporting_en => cfg_aer_rooterr_fatal_err_reporting_en, + cfg_aer_rooterr_corr_err_received => cfg_aer_rooterr_corr_err_received, + cfg_aer_rooterr_non_fatal_err_received => cfg_aer_rooterr_non_fatal_err_received, + cfg_aer_rooterr_fatal_err_received => cfg_aer_rooterr_fatal_err_received, + cfg_msg_received_err_cor => cfg_msg_received_err_cor, + cfg_msg_received_err_non_fatal => cfg_msg_received_err_non_fatal, + cfg_msg_received_err_fatal => cfg_msg_received_err_fatal, + cfg_msg_received_pm_as_nak => cfg_msg_received_pm_as_nak, + cfg_msg_received_pm_pme => cfg_msg_received_pm_pme, + cfg_msg_received_pme_to_ack => cfg_msg_received_pme_to_ack, + cfg_msg_received_assert_int_a => cfg_msg_received_assert_int_a, + cfg_msg_received_assert_int_b => cfg_msg_received_assert_int_b, + cfg_msg_received_assert_int_c => cfg_msg_received_assert_int_c, + cfg_msg_received_assert_int_d => cfg_msg_received_assert_int_d, + cfg_msg_received_deassert_int_a => cfg_msg_received_deassert_int_a, + cfg_msg_received_deassert_int_b => cfg_msg_received_deassert_int_b, + cfg_msg_received_deassert_int_c => cfg_msg_received_deassert_int_c, + cfg_msg_received_deassert_int_d => cfg_msg_received_deassert_int_d, + cfg_msg_received_setslotpowerlimit => cfg_msg_received_setslotpowerlimit, + pl_directed_link_change => pl_directed_link_change, + pl_directed_link_width => pl_directed_link_width, + pl_directed_link_speed => pl_directed_link_speed, + pl_directed_link_auton => pl_directed_link_auton, + pl_upstream_prefer_deemph => pl_upstream_prefer_deemph, + pl_sel_lnk_rate => pl_sel_lnk_rate, + pl_sel_lnk_width => pl_sel_lnk_width, + pl_ltssm_state => pl_ltssm_state, + pl_lane_reversal_mode => pl_lane_reversal_mode, + pl_phy_lnk_up => pl_phy_lnk_up, + pl_tx_pm_state => pl_tx_pm_state, + pl_rx_pm_state => pl_rx_pm_state, + pl_link_upcfg_cap => pl_link_upcfg_cap, + pl_link_gen2_cap => pl_link_gen2_cap, + pl_link_partner_gen2_supported => pl_link_partner_gen2_supported, + pl_initial_link_width => pl_initial_link_width, + pl_directed_change_done => pl_directed_change_done, + pl_received_hot_rst => pl_received_hot_rst, + pl_transmit_hot_rst => pl_transmit_hot_rst, + pl_downstream_deemph_source => pl_downstream_deemph_source, + cfg_err_aer_headerlog => cfg_err_aer_headerlog, + cfg_aer_interrupt_msgnum => cfg_aer_interrupt_msgnum, + cfg_err_aer_headerlog_set => cfg_err_aer_headerlog_set, + cfg_aer_ecrc_check_en => cfg_aer_ecrc_check_en, + cfg_aer_ecrc_gen_en => cfg_aer_ecrc_gen_en, + cfg_vc_tcvc_map => cfg_vc_tcvc_map, + sys_clk => sys_clk, + sys_rst_n => sys_rst_n, + pipe_mmcm_rst_n => pipe_mmcm_rst_n, + pcie_drp_clk => pcie_drp_clk, + pcie_drp_en => pcie_drp_en, + pcie_drp_we => pcie_drp_we, + pcie_drp_addr => pcie_drp_addr, + pcie_drp_di => pcie_drp_di, + pcie_drp_do => pcie_drp_do, + pcie_drp_rdy => pcie_drp_rdy + ); +-- INST_TAG_END ------ End INSTANTIATION Template --------- + +-- You must compile the wrapper file pcie_7x_0.vhd when simulating +-- the core, pcie_7x_0. When compiling the wrapper file, be sure to +-- reference the VHDL simulation library. + diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0.xci b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0.xci new file mode 100644 index 0000000..c708fa2 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0.xci @@ -0,0 +1,631 @@ + + + xilinx.com + xci + unknown + 1.0 + + + pcie_7x_0 + + + + + + 100000000 + 0 + 0 + 0.000 + + 0 + 0 + 0.000 + + 100000000 + 1 + 1 + 1 + 0 + 0 + undef + 0.000 + 8 + 0 + 0 + 22 + 0 + 0 + + 100000000 + 1 + 1 + 1 + 0 + 0 + undef + 0.000 + 8 + 0 + 0 + 4 + TRUE + TRUE + TRUE + TRUE + 64 + FALSE + TRUE + FALSE + FALSE + FALSE + 4 + FALSE + TRUE + FALSE + FALSE + TRUE + TRUE + FALSE + FALSE + FALSE + FFFF0000 + 00000000 + 00000000 + 00000000 + 00000000 + 00000000 + 0 + 000 + FALSE + FALSE + FALSE + 000 + FALSE + 000000 + FALSE + TRUE + pcie_7x_0 + TRUE + TRUE + FALSE + 0010 + 2 + FALSE + FALSE + FALSE + FALSE + FALSE + FALSE + FALSE + FALSE + 00 + FALSE + 0 + TRUE + FALSE + FALSE + FALSE + FALSE + FALSE + 100 + TRUE + 000 + 00000000000 + 0 + 7 + 3FF + 973 + 36 + 24 + 12 + 949 + 32 + true + 00 + FALSE + 10C + FALSE + 0000 + FALSE + 0 + 0000 + FALSE + 1 + 0 + TRUE + FALSE + 0 + FALSE + FALSE + 00 + 0 + 0 + 0 + 0 + 000 + 3F + 0 + 00 + FALSE + TRUE + 0 + TRUE + 0 + 60 + 0F + 000 + 00 + 00 + 00 + 00 + 00 + 00 + 0 + 0 + 0 + 0 + 0 + 0 + 000 + FALSE + 00001 + 00001 + 00001 + 00001 + 00001 + 00001 + 0 + 0 + 0 + FALSE + FALSE + 0 + FFF + 2 + 0 + 2 + FALSE + FALSE + FALSE + FALSE + FALSE + FALSE + FALSE + 0 + FALSE + FALSE + 0 + 0 + 2 + TRUE + 30 + 0 + 2 + 0 + TRUE + TRUE + FALSE + TRUE + TRUE + 000 + FALSE + FALSE + 000 + 000 + FALSE + 000 + ZC706 + 2 + 00000000 + 050000 + 3 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 7024 + 0000 + 0 + 0 + 0 + 0 + 0 + 000 + 111 + FALSE + 1 + TRUE + 2 + 000100 + 011 + TRUE + 3 + 0 + 00 + 0F + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + 00 + TRUE + 0007 + 10EE + 10EE + 00000000 + Absolute + 0000 + false + false + false + false + false + false + false + false + false + false + false + false + false + false + false + false + false + false + false + false + false + false + false + Maximum_of_64_ns + No_limit + false + 1M + 1M + 1M + 1M + 1M + 1M + 0 + 0 + 0 + 0 + 0 + 0 + false + true + false + Kilobytes + 64 + Memory + false + false + false + Megabytes + 1 + N/A + false + false + false + Kilobytes + 2 + N/A + false + false + false + Kilobytes + 2 + N/A + false + false + false + Kilobytes + 2 + N/A + false + false + Kilobytes + 2 + N/A + Memory_controller + false + false + 00000000 + 05 + 00 + 00 + pcie_7x_0 + 1 + false + false + Range_B + true + 0 + 0 + 0 + 0 + true + 0 + 0 + 0 + 0 + false + true + 0 + 0 + 0 + 0 + false + 0 + 0 + 0 + 0 + false + true + true + -3.5 + 7024 + PCI_Express_Endpoint_device + false + false + false + false + 00 + false + 3FF + false + false + false + false + false + false + false + false + false + false + false + false + false + false + true + false + Kilobytes + 2 + false + false + false + false + Disabled + true + 64_bit + INTA + 5.0_GT/s + true + false + false + false + BAR_0 + 0 + BAR_0 + 0 + 1 + 1024_bytes + X4 + 1_vector + true + 000000 + false + 3F + X0Y0 + false + true + None + High + No_function_number_bits_used + Disabled + false + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 64_byte + 0 + false + Custom + true + 100_MHz + Add + 0000 + 00 + false + GES_and_Production + false + false + false + false + false + false + false + 0 + false + false + 0 + 0 + RAM + 0007 + 10EE + 00 + None + 4'h2 + false + true + true + false + true + false + 250 + false + false + false + 10EE + ZC706 + true + true + true + true + false + true + false + false + false + false + false + true + Basic + None + false + true + true + false + false + zynq + xilinx.com:zc706:part0:1.2 + + xc7z045 + ffg900 + VERILOG + + MIXED + -2 + + + TRUE + TRUE + IP_Flow + 14 + TRUE + . + + . + 2020.2 + OUT_OF_CONTEXT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0.xml b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0.xml new file mode 100644 index 0000000..0e2f8e2 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0.xml @@ -0,0 +1,12604 @@ + + + xilinx.com + customized_ip + pcie_7x_0 + 1.0 + + + m_axis_rx + + + + + + + TDATA + + + m_axis_rx_tdata + + + + + TKEEP + + + m_axis_rx_tkeep + + + + + TLAST + + + m_axis_rx_tlast + + + + + TREADY + + + m_axis_rx_tready + + + + + TUSER + + + m_axis_rx_tuser + + + + + TVALID + + + m_axis_rx_tvalid + + + + + + TDATA_NUM_BYTES + 8 + + + none + + + + + TDEST_WIDTH + 0 + + + none + + + + + TID_WIDTH + 0 + + + none + + + + + TUSER_WIDTH + 22 + + + none + + + + + HAS_TREADY + 1 + + + none + + + + + HAS_TSTRB + 0 + + + none + + + + + HAS_TKEEP + 1 + + + none + + + + + HAS_TLAST + 1 + + + none + + + + + FREQ_HZ + 100000000 + + + none + + + + + PHASE + 0.000 + + + none + + + + + CLK_DOMAIN + + + + none + + + + + LAYERED_METADATA + undef + + + none + + + + + INSERT_VIP + 0 + + + simulation.rtl + + + + + + + s_axis_tx + + + + + + + TDATA + + + s_axis_tx_tdata + + + + + TKEEP + + + s_axis_tx_tkeep + + + + + TLAST + + + s_axis_tx_tlast + + + + + TREADY + + + s_axis_tx_tready + + + + + TUSER + + + s_axis_tx_tuser + + + + + TVALID + + + s_axis_tx_tvalid + + + + + + TDATA_NUM_BYTES + 8 + + + none + + + + + TDEST_WIDTH + 0 + + + none + + + + + TID_WIDTH + 0 + + + none + + + + + TUSER_WIDTH + 4 + + + none + + + + + HAS_TREADY + 1 + + + none + + + + + HAS_TSTRB + 0 + + + none + + + + + HAS_TKEEP + 1 + + + none + + + + + HAS_TLAST + 1 + + + none + + + + + FREQ_HZ + 100000000 + + + none + + + + + PHASE + 0.000 + + + none + + + + + CLK_DOMAIN + + + + none + + + + + LAYERED_METADATA + undef + + + none + + + + + INSERT_VIP + 0 + + + simulation.rtl + + + + + + + icap + icap + ICAP Interface + + + + + + + clk + + + icap_clk + + + + + csib + + + icap_csib + + + + + i + + + icap_i + + + + + o + + + icap_o + + + + + rdwrb + + + icap_rdwrb + + + + + + + false + + + + + + startup + startup + STARTUP Interface + + + + + + + cfgclk + + + startup_cfgclk + + + + + cfgmclk + + + startup_cfgmclk + + + + + clk + + + startup_clk + + + + + eos + + + startup_eos + + + + + gsr + + + startup_gsr + + + + + gts + + + startup_gts + + + + + keyclearb + + + startup_keyclearb + + + + + pack + + + startup_pack + + + + + preq + + + startup_preq + + + + + userdoneo + + + startup_usrdoneo + + + + + usrcclko + + + startup_usrcclko + + + + + usrclkts + + + startup_usrcclkts + + + + + usrdonets + + + startup_usrdonets + + + + + + + false + + + + + + pcie_7x_mgt + pcie_7x_mgt + PCI Express Serial Link + + + + + + + rxn + + + pci_exp_rxn + + + + + rxp + + + pci_exp_rxp + + + + + txn + + + pci_exp_txn + + + + + txp + + + pci_exp_txp + + + + + + pipe_clock + pipe_clock + PCIe External Pipe Clock + + + + + + + dclk_in + + + pipe_dclk_in + + + + + gen3_out + + + pipe_gen3_out + + + + + mmcm_lock_in + + + pipe_mmcm_lock_in + + + + + mmcm_rst_n + + + pipe_mmcm_rst_n + + + + + oobclk_in + + + pipe_oobclk_in + + + + + pclk_in + + + pipe_pclk_in + + + + + pclk_sel_out + + + pipe_pclk_sel_out + + + + + rxoutclk_in + + + pipe_rxoutclk_in + + + + + rxoutclk_out + + + pipe_rxoutclk_out + + + + + rxusrclk_in + + + pipe_rxusrclk_in + + + + + txoutclk_out + + + pipe_txoutclk_out + + + + + userclk1_in + + + pipe_userclk1_in + + + + + userclk2_in + + + pipe_userclk2_in + + + + + + + true + + + + + + drp + drp + DRP interface + + + + + + + DADDR + + + pcie_drp_addr + + + + + DEN + + + pcie_drp_en + + + + + DI + + + pcie_drp_di + + + + + DO + + + pcie_drp_do + + + + + DRDY + + + pcie_drp_rdy + + + + + DWE + + + pcie_drp_we + + + + + + + true + + + + + + CLK.sys_clk + CLK.sys_clk + sys_clk interface + + + + + + + CLK + + + sys_clk + + + + + + FREQ_HZ + 100000000 + + + none + + + + + FREQ_TOLERANCE_HZ + 0 + + + none + + + + + PHASE + 0.000 + + + none + + + + + CLK_DOMAIN + + + + none + + + + + ASSOCIATED_BUSIF + + + + none + + + + + ASSOCIATED_RESET + + + + none + + + + + INSERT_VIP + 0 + + + simulation.rtl + + + + + + + CLK.user_clk_out + CLK.user_clk_out + user_clk_out interface + + + + + + + CLK + + + user_clk_out + + + + + + ASSOCIATED_BUSIF + m_axis_rx:s_axis_tx + + + FREQ_HZ + 125000000 + + + ASSOCIATED_RESET + user_reset_out + + + FREQ_TOLERANCE_HZ + 0 + + + none + + + + + PHASE + 0.000 + + + none + + + + + CLK_DOMAIN + + + + none + + + + + INSERT_VIP + 0 + + + simulation.rtl + + + + + + + RST.sys_rst_n + RST.sys_rst_n + sys_rst_n interface + + + + + + + RST + + + sys_rst_n + + + + + + POLARITY + ACTIVE_LOW + + + INSERT_VIP + 0 + + + simulation.rtl + + + + + + + RST.user_reset_out + RST.user_reset_out + user_reset_out Interface + + + + + + + RST + + + user_reset_out + + + + + + POLARITY + ACTIVE_HIGH + + + INSERT_VIP + 0 + + + simulation.rtl + + + + + + + pcie2_cfg_err + pcie2_cfg_err + pcie config error for gen2 + + + + + + + acs + + + cfg_err_acs + + + + + aer_ecrc_check_en + + + cfg_aer_ecrc_check_en + + + + + aer_ecrc_gen_en + + + cfg_aer_ecrc_gen_en + + + + + aer_interrupt_msgnum + + + cfg_aer_interrupt_msgnum + + + + + atomic_egress_blocked + + + cfg_err_atomic_egress_blocked + + + + + cor + + + cfg_err_cor + + + + + cpl_abort + + + cfg_err_cpl_abort + + + + + cpl_rdy + + + cfg_err_cpl_rdy + + + + + cpl_timeout + + + cfg_err_cpl_timeout + + + + + cpl_unexpect + + + cfg_err_cpl_unexpect + + + + + ecrc + + + cfg_err_ecrc + + + + + err_aer_headerlog + + + cfg_err_aer_headerlog + + + + + err_aer_headerlog_set + + + cfg_err_aer_headerlog_set + + + + + internal_cor + + + cfg_err_internal_cor + + + + + internal_uncor + + + cfg_err_internal_uncor + + + + + locked + + + cfg_err_locked + + + + + malformed + + + cfg_err_malformed + + + + + mc_blocked + + + cfg_err_mc_blocked + + + + + norecovery + + + cfg_err_norecovery + + + + + poisoned + + + cfg_err_poisoned + + + + + posted + + + cfg_err_posted + + + + + tlp_cpl_header + + + cfg_err_tlp_cpl_header + + + + + ur + + + cfg_err_ur + + + + + + + true + + + + + + pcie2_cfg_interrupt + pcie2_cfg_interrupt + pcie config interrupt for gen2 + + + + + + + assert + + + cfg_interrupt_assert + + + + + interrupt + + + cfg_interrupt + + + + + mmenable + + + cfg_interrupt_mmenable + + + + + msienable + + + cfg_interrupt_msienable + + + + + msixenable + + + cfg_interrupt_msixenable + + + + + msixfm + + + cfg_interrupt_msixfm + + + + + pciecap_interrupt_msgnum + + + cfg_pciecap_interrupt_msgnum + + + + + rdy + + + cfg_interrupt_rdy + + + + + read_data + + + cfg_interrupt_do + + + + + stat + + + cfg_interrupt_stat + + + + + write_data + + + cfg_interrupt_di + + + + + + pcie2_cfg_status + pcie2_cfg_status + pcie config status for gen2 + + + + + + + aer_rooterr_corr_err_received + + + cfg_aer_rooterr_corr_err_received + + + + + aer_rooterr_corr_err_reporting_en + + + cfg_aer_rooterr_corr_err_reporting_en + + + + + aer_rooterr_fatal_err_received + + + cfg_aer_rooterr_fatal_err_received + + + + + aer_rooterr_fatal_err_reporting_en + + + cfg_aer_rooterr_fatal_err_reporting_en + + + + + aer_rooterr_non_fatal_err_received + + + cfg_aer_rooterr_non_fatal_err_received + + + + + aer_rooterr_non_fatal_err_reporting_en + + + cfg_aer_rooterr_non_fatal_err_reporting_en + + + + + bridge_serr_en + + + cfg_bridge_serr_en + + + + + bus_number + + + cfg_bus_number + + + + + command + + + cfg_command + + + + + dcommand + + + cfg_dcommand + + + + + dcommand2 + + + cfg_dcommand2 + + + + + device_number + + + cfg_device_number + + + + + dstatus + + + cfg_dstatus + + + + + function_number + + + cfg_function_number + + + + + lcommand + + + cfg_lcommand + + + + + lstatus + + + cfg_lstatus + + + + + pcie_link_state + + + cfg_pcie_link_state + + + + + pmcsr_pme_en + + + cfg_pmcsr_pme_en + + + + + pmcsr_pme_status + + + cfg_pmcsr_pme_status + + + + + pmcsr_powerstate + + + cfg_pmcsr_powerstate + + + + + received_func_lvl_rst + + + cfg_received_func_lvl_rst + + + + + root_control_pme_int_en + + + cfg_root_control_pme_int_en + + + + + root_control_syserr_corr_err_en + + + cfg_root_control_syserr_corr_err_en + + + + + root_control_syserr_fatal_err_en + + + cfg_root_control_syserr_fatal_err_en + + + + + root_control_syserr_non_fatal_err_en + + + cfg_root_control_syserr_non_fatal_err_en + + + + + slot_control_electromech_il_ctl_pulse + + + cfg_slot_control_electromech_il_ctl_pulse + + + + + status + + + cfg_status + + + + + turnoff + + + cfg_to_turnoff + + + + + tx_buf_av + + + tx_buf_av + + + + + tx_cfg_req + + + tx_cfg_req + + + + + tx_err_drop + + + tx_err_drop + + + + + vc_tcvc_map + + + cfg_vc_tcvc_map + + + + + + + true + + + + + + pcie_cfg_fc + pcie_cfg_fc + pcie config flowcontrol + + + + + + + CPLD + + + fc_cpld + + + + + CPLH + + + fc_cplh + + + + + NPD + + + fc_npd + + + + + NPH + + + fc_nph + + + + + PD + + + fc_pd + + + + + PH + + + fc_ph + + + + + SEL + + + fc_sel + + + + + + + true + + + + + + pcie2_cfg_control + pcie2_cfg_control + pcie config control for gen2 + + + + + + + ds_bus_number + + + cfg_ds_bus_number + + + + + ds_device_number + + + cfg_ds_device_number + + + + + ds_function_number + + + cfg_ds_function_number + + + + + dsn + + + cfg_dsn + + + + + pm_force_state + + + cfg_pm_force_state + + + + + pm_force_state_en + + + cfg_pm_force_state_en + + + + + pm_halt_aspm_l0s + + + cfg_pm_halt_aspm_l0s + + + + + pm_halt_aspm_l1 + + + cfg_pm_halt_aspm_l1 + + + + + pm_send_pme_to + + + cfg_pm_send_pme_to + + + + + pm_wake + + + cfg_pm_wake + + + + + rx_np_ok + + + rx_np_ok + + + + + rx_np_req + + + rx_np_req + + + + + trn_pending + + + cfg_trn_pending + + + + + turnoff_ok + + + cfg_turnoff_ok + + + + + tx_cfg_gnt + + + tx_cfg_gnt + + + + + + + true + + + + + + pcie2_cfg_msg_rcvd + pcie2_cfg_msg_rcvd + pcie config message received for gen2 + + + + + + + assert_int_a + + + cfg_msg_received_assert_int_a + + + + + assert_int_b + + + cfg_msg_received_assert_int_b + + + + + assert_int_c + + + cfg_msg_received_assert_int_c + + + + + assert_int_d + + + cfg_msg_received_assert_int_d + + + + + data + + + cfg_msg_data + + + + + deassert_int_a + + + cfg_msg_received_deassert_int_a + + + + + deassert_int_b + + + cfg_msg_received_deassert_int_b + + + + + deassert_int_c + + + cfg_msg_received_deassert_int_c + + + + + deassert_int_d + + + cfg_msg_received_deassert_int_d + + + + + err_cor + + + cfg_msg_received_err_cor + + + + + err_fatal + + + cfg_msg_received_err_fatal + + + + + err_non_fatal + + + cfg_msg_received_err_non_fatal + + + + + pm_pme + + + cfg_msg_received_pm_pme + + + + + pme_to_ack + + + cfg_msg_received_pme_to_ack + + + + + received + + + cfg_msg_received + + + + + received_pm_as_nak + + + cfg_msg_received_pm_as_nak + + + + + received_setslotpowerlimit + + + cfg_msg_received_setslotpowerlimit + + + + + + + true + + + + + + pcie_cfg_mgmt + pcie_cfg_mgmt + pcie config management for gen2 + + + + + + + ADDR + + + cfg_mgmt_dwaddr + + + + + BYTE_EN + + + cfg_mgmt_byte_en + + + + + READ_DATA + + + cfg_mgmt_do + + + + + READ_EN + + + cfg_mgmt_rd_en + + + + + READ_WRITE_DONE + + + cfg_mgmt_rd_wr_done + + + + + READONLY + + + cfg_mgmt_wr_readonly + + + + + TYPE1_CFG_REG_ACCESS + + + cfg_mgmt_wr_rw1c_as_rw + + + + + WRITE_DATA + + + cfg_mgmt_di + + + + + WRITE_EN + + + cfg_mgmt_wr_en + + + + + + + true + + + + + + pcie_qpll_drp + pcie_qpll_drp + pcie qpll drp for gen2 + + + + + + + clk + + + qpll_drp_clk + + + + + crscode + + + qpll_drp_crscode + + + + + done + + + qpll_drp_done + + + + + fsm + + + qpll_drp_fsm + + + + + gen3 + + + qpll_drp_gen3 + + + + + ovrd + + + qpll_drp_ovrd + + + + + qplld + + + qpll_qplld + + + + + qplllock + + + qpll_qplllock + + + + + qplloutclk + + + qpll_qplloutclk + + + + + qplloutrefclk + + + qpll_qplloutrefclk + + + + + qpllreset + + + qpll_qpllreset + + + + + reset + + + qpll_drp_reset + + + + + rst_n + + + qpll_drp_rst_n + + + + + start + + + qpll_drp_start + + + + + + + false + + + + + + pcie_sharedlogic_int_clk + pcie_sharedlogic_int_clk + pcie sharedlogic internal clock for gen2 + + + + + + + dclk + + + int_dclk_out + + + + + mmcm_lock + + + int_mmcm_lock_out + + + + + oobclk + + + int_oobclk_out + + + + + pclk_sel_slave + + + int_pclk_sel_slave + + + + + pclk_slave + + + int_pclk_out_slave + + + + + pipe_rxusrclk + + + int_pipe_rxusrclk_out + + + + + qplllock + + + int_qplllock_out + + + + + qplloutclk + + + int_qplloutclk_out + + + + + qplloutrefclk + + + int_qplloutrefclk_out + + + + + rxoutclk + + + int_rxoutclk_out + + + + + usrclk1 + + + int_userclk1_out + + + + + usrclk2 + + + int_userclk2_out + + + + + + + false + + + + + + transceiver_debug + transceiver_debug + Transceiver Debug Interface + + + + + + + cpll_lock + + + pipe_cpll_lock + + + + + debug + + + pipe_debug + + + + + debug_0 + + + pipe_debug_0 + + + + + debug_1 + + + pipe_debug_1 + + + + + debug_2 + + + pipe_debug_2 + + + + + debug_3 + + + pipe_debug_3 + + + + + debug_4 + + + pipe_debug_4 + + + + + debug_5 + + + pipe_debug_5 + + + + + debug_6 + + + pipe_debug_6 + + + + + debug_7 + + + pipe_debug_7 + + + + + debug_8 + + + pipe_debug_8 + + + + + debug_9 + + + pipe_debug_9 + + + + + dmonitorout + + + pipe_dmonitorout + + + + + drp_fsm + + + pipe_drp_fsm + + + + + eyescandataerror + + + pipe_eyescandataerror + + + + + gt_ch_drp_rdy + + + gt_ch_drp_rdy + + + + + loopback + + + pipe_loopback + + + + + qpll_lock + + + pipe_qpll_lock + + + + + qrst_fsm + + + pipe_qrst_fsm + + + + + qrst_idle + + + pipe_qrst_idle + + + + + rate_fsm + + + pipe_rate_fsm + + + + + rate_idle + + + pipe_rate_idle + + + + + rst_fsm + + + pipe_rst_fsm + + + + + rst_idle + + + pipe_rst_idle + + + + + rxbufstatus + + + pipe_rxbufstatus + + + + + rxcommadet + + + pipe_rxcommadet + + + + + rxdisperr + + + pipe_rxdisperr + + + + + rxdlysresetdone + + + pipe_rxdlysresetdone + + + + + rxnotintable + + + pipe_rxnotintable + + + + + rxphaligndone + + + pipe_rxphaligndone + + + + + rxpmaresetdone + + + pipe_rxpmaresetdone + + + + + rxprbscntreset + + + pipe_rxprbscntreset + + + + + rxprbserr + + + pipe_rxprbserr + + + + + rxprbssel + + + pipe_rxprbssel + + + + + rxstatus + + + pipe_rxstatus + + + + + rxsyncdone + + + pipe_rxsyncdone + + + + + sync_fsm_rx + + + pipe_sync_fsm_rx + + + + + sync_fsm_tx + + + pipe_sync_fsm_tx + + + + + txdlysresetdone + + + pipe_txdlysresetdone + + + + + txinhibit + + + pipe_txinhibit + + + + + txphaligndone + + + pipe_txphaligndone + + + + + txphinitdone + + + pipe_txphinitdone + + + + + txprbsforceerr + + + pipe_txprbsforceerr + + + + + txprbssel + + + pipe_txprbssel + + + + + + + false + + + + + + pcie2_pl + pcie2_pl + pcie pl for gen2 + + + + + + + directed_change_done + + + pl_directed_change_done + + + + + directed_link_auton + + + pl_directed_link_auton + + + + + directed_link_change + + + pl_directed_link_change + + + + + directed_link_speed + + + pl_directed_link_speed + + + + + directed_link_width + + + pl_directed_link_width + + + + + downstream_deemph_source + + + pl_downstream_deemph_source + + + + + initial_link_width + + + pl_initial_link_width + + + + + lane_reversal_mode + + + pl_lane_reversal_mode + + + + + link_gen2_cap + + + pl_link_gen2_cap + + + + + link_partner_gen2_supported + + + pl_link_partner_gen2_supported + + + + + link_upcfg_cap + + + pl_link_upcfg_cap + + + + + ltssm_state + + + pl_ltssm_state + + + + + phy_lnk_up + + + pl_phy_lnk_up + + + + + received_hot_rst + + + pl_received_hot_rst + + + + + rx_pm_state + + + pl_rx_pm_state + + + + + sel_lnk_rate + + + pl_sel_lnk_rate + + + + + sel_lnk_width + + + pl_sel_lnk_width + + + + + transmit_hot_rst + + + pl_transmit_hot_rst + + + + + tx_pm_state + + + pl_tx_pm_state + + + + + upstream_prefer_deemph + + + pl_upstream_prefer_deemph + + + + + + + true + + + + + + pcie_ext_ch_gt + pcie_ext_ch_gt + pcie ext ch gt for gen2 + + + + + + + DADDR + + + ext_ch_gt_drpaddr + + + + + DEN + + + ext_ch_gt_drpen + + + + + DI + + + ext_ch_gt_drpdi + + + + + DO + + + ext_ch_gt_drpdo + + + + + DRDY + + + ext_ch_gt_drprdy + + + + + DWE + + + ext_ch_gt_drpwe + + + + + + + false + + + + + + pcie2_ext_pipe_rp + pcie_ext_pipe_rp + External PIPE Interface + + + + + + + COMMANDS_IN + + + common_commands_in + + + + + COMMANDS_OUT + + + common_commands_out + + + + + RX_0 + + + pipe_rx_0_sigs + + + + + RX_1 + + + pipe_rx_1_sigs + + + + + RX_2 + + + pipe_rx_2_sigs + + + + + RX_3 + + + pipe_rx_3_sigs + + + + + RX_4 + + + pipe_rx_4_sigs + + + + + RX_5 + + + pipe_rx_5_sigs + + + + + RX_6 + + + pipe_rx_6_sigs + + + + + RX_7 + + + pipe_rx_7_sigs + + + + + TX_0 + + + pipe_tx_0_sigs + + + + + TX_1 + + + pipe_tx_1_sigs + + + + + TX_2 + + + pipe_tx_2_sigs + + + + + TX_3 + + + pipe_tx_3_sigs + + + + + TX_4 + + + pipe_tx_4_sigs + + + + + TX_5 + + + pipe_tx_5_sigs + + + + + TX_6 + + + pipe_tx_6_sigs + + + + + TX_7 + + + pipe_tx_7_sigs + + + + + + + false + + + + + + pcie2_ext_pipe_ep + pcie_ext_pipe_ep + External PIPE Interface + + + + + + + COMMANDS_IN + + + common_commands_out + + + + + COMMANDS_OUT + + + common_commands_in + + + + + RX_0 + + + pipe_tx_0_sigs + + + + + RX_1 + + + pipe_tx_1_sigs + + + + + RX_2 + + + pipe_tx_2_sigs + + + + + RX_3 + + + pipe_tx_3_sigs + + + + + RX_4 + + + pipe_tx_4_sigs + + + + + RX_5 + + + pipe_tx_5_sigs + + + + + RX_6 + + + pipe_tx_6_sigs + + + + + RX_7 + + + pipe_tx_7_sigs + + + + + TX_0 + + + pipe_rx_0_sigs + + + + + TX_1 + + + pipe_rx_1_sigs + + + + + TX_2 + + + pipe_rx_2_sigs + + + + + TX_3 + + + pipe_rx_3_sigs + + + + + TX_4 + + + pipe_rx_4_sigs + + + + + TX_5 + + + pipe_rx_5_sigs + + + + + TX_6 + + + pipe_rx_6_sigs + + + + + TX_7 + + + pipe_rx_7_sigs + + + + + + + false + + + + + + pcie2_ext_pipe_ep_legacy + pcie_ext_pipe_ep_legacy + External PIPE Interface + + + + + + + COMMANDS_IN + + + common_commands_out + + + + + COMMANDS_OUT + + + common_commands_in + + + + + RX_0 + + + pipe_tx_0_sigs + + + + + RX_1 + + + pipe_tx_1_sigs + + + + + RX_2 + + + pipe_tx_2_sigs + + + + + RX_3 + + + pipe_tx_3_sigs + + + + + RX_4 + + + pipe_tx_4_sigs + + + + + RX_5 + + + pipe_tx_5_sigs + + + + + RX_6 + + + pipe_tx_6_sigs + + + + + RX_7 + + + pipe_tx_7_sigs + + + + + TX_0 + + + pipe_rx_0_sigs + + + + + TX_1 + + + pipe_rx_1_sigs + + + + + TX_2 + + + pipe_rx_2_sigs + + + + + TX_3 + + + pipe_rx_3_sigs + + + + + TX_4 + + + pipe_rx_4_sigs + + + + + TX_5 + + + pipe_rx_5_sigs + + + + + TX_6 + + + pipe_rx_6_sigs + + + + + TX_7 + + + pipe_rx_7_sigs + + + + + + + false + + + + + + + + + xilinx_elaboratesubcores + Elaborate Sub-Cores + :vivado.xilinx.com:elaborate.subcores + + + outputProductCRC + 9:a59ead8b + + + + + xilinx_veriloginstantiationtemplate + Verilog Instantiation Template + verilogSource:vivado.xilinx.com:synthesis.template + verilog + + xilinx_veriloginstantiationtemplate_view_fileset + + + + GENtimestamp + Mon Jul 11 16:39:34 UTC 2022 + + + outputProductCRC + 9:203c374d + + + + + xilinx_verilogbehavioralsimulation + Verilog Simulation + verilogSource:vivado.xilinx.com:simulation + verilog + pcie_7x_0_pcie2_top + + xilinx_verilogbehavioralsimulation_view_fileset + + + + GENtimestamp + Mon Jul 11 16:39:36 UTC 2022 + + + outputProductCRC + 9:df3b5035 + + + + + xilinx_verilogsimulationwrapper + Verilog Simulation Wrapper + verilogSource:vivado.xilinx.com:simulation.wrapper + verilog + pcie_7x_0 + + xilinx_verilogsimulationwrapper_view_fileset + + + + GENtimestamp + Mon Jul 11 16:39:37 UTC 2022 + + + outputProductCRC + 9:df3b5035 + + + + + xilinx_versioninformation + Version Information + :vivado.xilinx.com:docs.versioninfo + + xilinx_versioninformation_view_fileset + + + + GENtimestamp + Mon Jul 11 16:39:37 UTC 2022 + + + outputProductCRC + 9:203c374d + + + + + xilinx_verilogsynthesis + Verilog Synthesis + verilogSource:vivado.xilinx.com:synthesis + verilog + pcie_7x_0_pcie2_top + + xilinx_verilogsynthesis_view_fileset + + + + GENtimestamp + Wed Jul 20 10:37:04 UTC 2022 + + + outputProductCRC + 9:203c374d + + + + + xilinx_synthesisconstraints + Synthesis Constraints + :vivado.xilinx.com:synthesis.constraints + + + outputProductCRC + 9:203c374d + + + + + xilinx_verilogsynthesiswrapper + Verilog Synthesis Wrapper + verilogSource:vivado.xilinx.com:synthesis.wrapper + verilog + pcie_7x_0 + + xilinx_verilogsynthesiswrapper_view_fileset + + + + GENtimestamp + Wed Jul 20 10:37:04 UTC 2022 + + + outputProductCRC + 9:203c374d + + + + + xilinx_externalfiles + External Files + :vivado.xilinx.com:external.files + + xilinx_externalfiles_view_fileset + + + + GENtimestamp + Tue May 23 16:05:53 UTC 2023 + + + outputProductCRC + 9:203c374d + + + + + + + pci_exp_txp + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + pci_exp_txn + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + pci_exp_rxp + + in + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + pci_exp_rxn + + in + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + int_pclk_out_slave + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + int_pipe_rxusrclk_out + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + int_rxoutclk_out + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + int_dclk_out + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + int_mmcm_lock_out + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + int_userclk1_out + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + int_userclk2_out + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + int_oobclk_out + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + int_qplllock_out + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + int_qplloutclk_out + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + int_qplloutrefclk_out + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + int_pclk_sel_slave + + in + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + pipe_pclk_in + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + pipe_rxusrclk_in + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + pipe_rxoutclk_in + + in + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + pipe_dclk_in + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + pipe_userclk1_in + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 1 + + + + + + true + + + + + + pipe_userclk2_in + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + pipe_oobclk_in + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + pipe_mmcm_lock_in + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 1 + + + + + + true + + + + + + pipe_txoutclk_out + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + pipe_rxoutclk_out + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + pipe_pclk_sel_out + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + pipe_gen3_out + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + user_clk_out + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + user_reset_out + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + user_lnk_up + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + user_app_rdy + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + tx_buf_av + + out + + 5 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + tx_cfg_req + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + tx_err_drop + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + s_axis_tx_tready + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axis_tx_tdata + + in + + 63 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axis_tx_tkeep + + in + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axis_tx_tlast + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axis_tx_tvalid + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axis_tx_tuser + + in + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + tx_cfg_gnt + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 1 + + + + + + true + + + + + + m_axis_rx_tdata + + out + + 63 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axis_rx_tkeep + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axis_rx_tlast + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axis_rx_tvalid + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axis_rx_tready + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axis_rx_tuser + + out + + 21 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + rx_np_ok + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 1 + + + + + + true + + + + + + rx_np_req + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 1 + + + + + + true + + + + + + fc_cpld + + out + + 11 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + fc_cplh + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + fc_npd + + out + + 11 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + fc_nph + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + fc_pd + + out + + 11 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + fc_ph + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + fc_sel + + in + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_mgmt_do + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_mgmt_rd_wr_done + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_status + + out + + 15 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_command + + out + + 15 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_dstatus + + out + + 15 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_dcommand + + out + + 15 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_lstatus + + out + + 15 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_lcommand + + out + + 15 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_dcommand2 + + out + + 15 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_pcie_link_state + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_pmcsr_pme_en + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_pmcsr_powerstate + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_pmcsr_pme_status + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_received_func_lvl_rst + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_mgmt_di + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_mgmt_byte_en + + in + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_mgmt_dwaddr + + in + + 9 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_mgmt_wr_en + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_mgmt_rd_en + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_mgmt_wr_readonly + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_err_ecrc + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_err_ur + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_err_cpl_timeout + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_err_cpl_unexpect + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_err_cpl_abort + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_err_posted + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_err_cor + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_err_atomic_egress_blocked + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_err_internal_cor + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_err_malformed + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_err_mc_blocked + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_err_poisoned + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_err_norecovery + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_err_tlp_cpl_header + + in + + 47 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_err_cpl_rdy + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_err_locked + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_err_acs + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_err_internal_uncor + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_trn_pending + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_pm_halt_aspm_l0s + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_pm_halt_aspm_l1 + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_pm_force_state_en + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_pm_force_state + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_dsn + + in + + 63 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_interrupt + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + cfg_interrupt_rdy + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + cfg_interrupt_assert + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + cfg_interrupt_di + + in + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + cfg_interrupt_do + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + cfg_interrupt_mmenable + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + cfg_interrupt_msienable + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + cfg_interrupt_msixenable + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + cfg_interrupt_msixfm + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + cfg_interrupt_stat + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + cfg_pciecap_interrupt_msgnum + + in + + 4 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + cfg_to_turnoff + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_turnoff_ok + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_bus_number + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_device_number + + out + + 4 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_function_number + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_pm_wake + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_pm_send_pme_to + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_ds_bus_number + + in + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_ds_device_number + + in + + 4 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_ds_function_number + + in + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_mgmt_wr_rw1c_as_rw + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_msg_received + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_msg_data + + out + + 15 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_bridge_serr_en + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_slot_control_electromech_il_ctl_pulse + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_root_control_syserr_corr_err_en + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_root_control_syserr_non_fatal_err_en + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_root_control_syserr_fatal_err_en + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_root_control_pme_int_en + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_aer_rooterr_corr_err_reporting_en + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_aer_rooterr_non_fatal_err_reporting_en + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_aer_rooterr_fatal_err_reporting_en + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_aer_rooterr_corr_err_received + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_aer_rooterr_non_fatal_err_received + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_aer_rooterr_fatal_err_received + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_msg_received_err_cor + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_msg_received_err_non_fatal + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_msg_received_err_fatal + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_msg_received_pm_as_nak + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_msg_received_pm_pme + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_msg_received_pme_to_ack + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_msg_received_assert_int_a + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_msg_received_assert_int_b + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_msg_received_assert_int_c + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_msg_received_assert_int_d + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_msg_received_deassert_int_a + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_msg_received_deassert_int_b + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_msg_received_deassert_int_c + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_msg_received_deassert_int_d + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_msg_received_setslotpowerlimit + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + pl_directed_link_change + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + pl_directed_link_width + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + pl_directed_link_speed + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + pl_directed_link_auton + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + pl_upstream_prefer_deemph + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 1 + + + + + + true + + + + + + pl_sel_lnk_rate + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + pl_sel_lnk_width + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + pl_ltssm_state + + out + + 5 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + pl_lane_reversal_mode + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + pl_phy_lnk_up + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + pl_tx_pm_state + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + pl_rx_pm_state + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + pl_link_upcfg_cap + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + pl_link_gen2_cap + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + pl_link_partner_gen2_supported + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + pl_initial_link_width + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + pl_directed_change_done + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + pl_received_hot_rst + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + pl_transmit_hot_rst + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + pl_downstream_deemph_source + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_err_aer_headerlog + + in + + 127 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_aer_interrupt_msgnum + + in + + 4 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + cfg_err_aer_headerlog_set + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_aer_ecrc_check_en + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_aer_ecrc_gen_en + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + cfg_vc_tcvc_map + + out + + 6 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + sys_clk + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + sys_rst_n + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + pipe_mmcm_rst_n + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 1 + + + + + + true + + + + + + startup_eos_in + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + startup_cfgclk + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + startup_cfgmclk + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + startup_eos + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + startup_preq + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + startup_clk + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + startup_gsr + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + startup_gts + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + startup_keyclearb + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 1 + + + + + + false + + + + + + startup_pack + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + startup_usrcclko + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 1 + + + + + + false + + + + + + startup_usrcclkts + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + startup_usrdoneo + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + startup_usrdonets + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 1 + + + + + + false + + + + + + icap_clk + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + icap_csib + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + icap_rdwrb + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + icap_i + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + icap_o + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + qpll_drp_crscode + + in + + 11 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + qpll_drp_fsm + + in + + 17 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + qpll_drp_done + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + qpll_drp_reset + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + qpll_qplllock + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + qpll_qplloutclk + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + qpll_qplloutrefclk + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + qpll_qplld + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + qpll_qpllreset + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + qpll_drp_clk + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + qpll_drp_rst_n + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + qpll_drp_ovrd + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + qpll_drp_gen3 + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + qpll_drp_start + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_txprbssel + + in + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + pipe_rxprbssel + + in + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + pipe_txprbsforceerr + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + pipe_rxprbscntreset + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + pipe_loopback + + in + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + pipe_rxprbserr + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_txinhibit + + in + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + pipe_rst_fsm + + out + + 4 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_qrst_fsm + + out + + 11 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_rate_fsm + + out + + 19 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_sync_fsm_tx + + out + + 23 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_sync_fsm_rx + + out + + 27 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_drp_fsm + + out + + 27 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_rst_idle + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_qrst_idle + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_rate_idle + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_eyescandataerror + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_rxstatus + + out + + 11 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_dmonitorout + + out + + 59 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_cpll_lock + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_qpll_lock + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_rxpmaresetdone + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_rxbufstatus + + out + + 11 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_txphaligndone + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_txphinitdone + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_txdlysresetdone + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_rxphaligndone + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_rxdlysresetdone + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_rxsyncdone + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_rxdisperr + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_rxnotintable + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_rxcommadet + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + gt_ch_drp_rdy + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_debug_1 + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_debug_2 + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_debug_3 + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_debug_4 + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_debug_5 + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_debug_6 + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_debug_7 + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_debug_8 + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_debug_9 + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_debug + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + ext_ch_gt_drpclk + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + ext_ch_gt_drpaddr + + in + + 35 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + ext_ch_gt_drpen + + in + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + ext_ch_gt_drpdi + + in + + 63 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + ext_ch_gt_drpwe + + in + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + ext_ch_gt_drpdo + + out + + 63 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + ext_ch_gt_drprdy + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pcie_drp_clk + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 1 + + + + + + true + + + + + + pcie_drp_en + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + pcie_drp_we + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + pcie_drp_addr + + in + + 8 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + pcie_drp_di + + in + + 15 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + true + + + + + + pcie_drp_do + + out + + 15 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + pcie_drp_rdy + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + true + + + + + + common_commands_in + + in + + 11 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + pipe_rx_0_sigs + + in + + 24 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + pipe_rx_1_sigs + + in + + 24 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + pipe_rx_2_sigs + + in + + 24 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + pipe_rx_3_sigs + + in + + 24 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + pipe_rx_4_sigs + + in + + 24 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + pipe_rx_5_sigs + + in + + 24 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + pipe_rx_6_sigs + + in + + 24 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + pipe_rx_7_sigs + + in + + 24 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + common_commands_out + + out + + 11 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_tx_0_sigs + + out + + 24 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_tx_1_sigs + + out + + 24 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_tx_2_sigs + + out + + 24 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_tx_3_sigs + + out + + 24 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_tx_4_sigs + + out + + 24 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_tx_5_sigs + + out + + 24 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_tx_6_sigs + + out + + 24 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + pipe_tx_7_sigs + + out + + 24 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + + + c_component_name + pcie_7x_0 + + + dev_port_type + 0000 + + + c_dev_port_type + 0 + + + c_header_type + 00 + + + c_upstream_facing + TRUE + + + max_lnk_wdt + 000100 + + + max_lnk_spd + 2 + + + c_gen1 + true + + + pci_exp_int_freq + 3 + + + c_pcie_fast_config + 0 + + + bar_0 + FFFF0000 + + + bar_1 + 00000000 + + + bar_2 + 00000000 + + + bar_3 + 00000000 + + + bar_4 + 00000000 + + + bar_5 + 00000000 + + + xrom_bar + 00000000 + + + cost_table + 1 + + + ven_id + 10EE + + + dev_id + 7024 + + + rev_id + 00 + + + subsys_ven_id + 10EE + + + subsys_id + 0007 + + + class_code + 050000 + + + cardbus_cis_ptr + 00000000 + + + cap_ver + 2 + + + c_pcie_cap_slot_implemented + FALSE + + + mps + 011 + + + cmps + 3 + + + ext_tag_fld_sup + FALSE + + + c_dev_control_ext_tag_default + FALSE + + + phantm_func_sup + 00 + + + c_phantom_functions + 0 + + + ep_l0s_accpt_lat + 000 + + + c_ep_l0s_accpt_lat + 0 + + + ep_l1_accpt_lat + 111 + + + c_ep_l1_accpt_lat + 7 + + + c_cpl_timeout_disable_sup + FALSE + + + c_cpl_timeout_range + 0010 + + + c_cpl_timeout_ranges_sup + 2 + + + c_buf_opt_bma + TRUE + + + c_perf_level_high + TRUE + + + c_tx_last_tlp + 30 + + + c_rx_ram_limit + FFF + + + c_fc_ph + 32 + + + c_fc_pd + 949 + + + c_fc_nph + 12 + + + c_fc_npd + 24 + + + c_fc_cplh + 36 + + + c_fc_cpld + 973 + + + c_cpl_inf + TRUE + + + c_cpl_infinite + TRUE + + + c_dll_lnk_actv_cap + FALSE + + + c_trgt_lnk_spd + 2 + + + c_hw_auton_spd_disable + FALSE + + + c_de_emph + FALSE + + + slot_clk + TRUE + + + c_rcb + 0 + + + c_root_cap_crs + FALSE + + + c_slot_cap_attn_butn + FALSE + + + c_slot_cap_attn_ind + FALSE + + + c_slot_cap_pwr_ctrl + FALSE + + + c_slot_cap_pwr_ind + FALSE + + + c_slot_cap_hotplug_surprise + FALSE + + + c_slot_cap_hotplug_cap + FALSE + + + c_slot_cap_mrl + FALSE + + + c_slot_cap_elec_interlock + FALSE + + + c_slot_cap_no_cmd_comp_sup + FALSE + + + c_slot_cap_pwr_limit_value + 0 + + + c_slot_cap_pwr_limit_scale + 0 + + + c_slot_cap_physical_slot_num + 0 + + + intx + TRUE + + + int_pin + 1 + + + c_msi_cap_on + FALSE + + + c_pm_cap_next_ptr + 60 + + + c_msi_64b_addr + TRUE + + + c_msi + 0 + + + c_msi_mult_msg_extn + 0 + + + c_msi_per_vctr_mask_cap + FALSE + + + c_msix_cap_on + FALSE + + + c_msix_next_ptr + 00 + + + c_pcie_cap_next_ptr + 00 + + + c_msix_table_size + 000 + + + c_msix_table_offset + 0 + + + c_msix_table_bir + 0 + + + c_msix_pba_offset + 0 + + + c_msix_pba_bir + 0 + + + dsi + 0 + + + c_dsi_bool + FALSE + + + d1_sup + 0 + + + c_d1_support + FALSE + + + d2_sup + 0 + + + c_d2_support + FALSE + + + pme_sup + 0F + + + c_pme_support + 0F + + + no_soft_rst + TRUE + + + pwr_con_d0_state + 00 + + + con_scl_fctr_d0_state + 0 + + + pwr_con_d1_state + 00 + + + con_scl_fctr_d1_state + 0 + + + pwr_con_d2_state + 00 + + + con_scl_fctr_d2_state + 0 + + + pwr_con_d3_state + 00 + + + con_scl_fctr_d3_state + 0 + + + pwr_dis_d0_state + 00 + + + dis_scl_fctr_d0_state + 0 + + + pwr_dis_d1_state + 00 + + + dis_scl_fctr_d1_state + 0 + + + pwr_dis_d2_state + 00 + + + dis_scl_fctr_d2_state + 0 + + + pwr_dis_d3_state + 00 + + + dis_scl_fctr_d3_state + 0 + + + c_dsn_cap_enabled + TRUE + + + c_dsn_base_ptr + 100 + + + c_vc_cap_enabled + FALSE + + + c_vc_base_ptr + 000 + + + c_vc_cap_reject_snoop + FALSE + + + c_vsec_cap_enabled + FALSE + + + c_vsec_base_ptr + 000 + + + c_vsec_next_ptr + 000 + + + c_dsn_next_ptr + 000 + + + c_vc_next_ptr + 000 + + + c_pci_cfg_space_addr + 3F + + + c_ext_pci_cfg_space_addr + 3FF + + + c_last_cfg_dw + 10C + + + c_enable_msg_route + 00000000000 + + + bram_lat + 0 + + + c_rx_raddr_lat + 0 + + + c_rx_rdata_lat + 2 + + + c_rx_write_lat + 0 + + + c_tx_raddr_lat + 0 + + + c_tx_rdata_lat + 2 + + + c_tx_write_lat + 0 + + + c_ll_ack_timeout_enable + FALSE + + + c_ll_ack_timeout_function + 0 + + + c_ll_ack_timeout + 0000 + + + c_ll_replay_timeout_enable + FALSE + + + c_ll_replay_timeout_func + 1 + + + c_ll_replay_timeout + 0000 + + + c_dis_lane_reverse + TRUE + + + c_upconfig_capable + TRUE + + + c_disable_scrambling + FALSE + + + c_disable_tx_aspm_l0s + FALSE + + + c_pcie_dbg_ports + TRUE + + + pci_exp_ref_freq + 0 + + + c_xlnx_ref_board + ZC706 + + + c_pcie_blk_locn + 0 + + + c_ur_atomic + FALSE + + + c_dev_cap2_atomicop32_completer_supported + FALSE + + + c_dev_cap2_atomicop64_completer_supported + FALSE + + + c_dev_cap2_cas128_completer_supported + FALSE + + + c_dev_cap2_tph_completer_supported + 00 + + + c_dev_cap2_ari_forwarding_supported + FALSE + + + c_dev_cap2_atomicop_routing_supported + FALSE + + + c_link_cap_aspm_optionality + FALSE + + + c_aer_cap_on + FALSE + + + c_aer_base_ptr + 000 + + + c_aer_cap_nextptr + 000 + + + c_aer_cap_ecrc_check_capable + FALSE + + + c_aer_cap_ecrc_gen_capable + FALSE + + + c_aer_cap_multiheader + FALSE + + + c_aer_cap_permit_rooterr_update + FALSE + + + c_rbar_cap_on + FALSE + + + c_rbar_base_ptr + 000 + + + c_rbar_cap_nextptr + 000 + + + c_rbar_num + 0 + + + c_rbar_cap_sup0 + 00001 + + + c_rbar_cap_index0 + 0 + + + c_rbar_cap_control_encodedbar0 + 00 + + + c_rbar_cap_sup1 + 00001 + + + c_rbar_cap_index1 + 0 + + + c_rbar_cap_control_encodedbar1 + 00 + + + c_rbar_cap_sup2 + 00001 + + + c_rbar_cap_index2 + 0 + + + c_rbar_cap_control_encodedbar2 + 00 + + + c_rbar_cap_sup3 + 00001 + + + c_rbar_cap_index3 + 0 + + + c_rbar_cap_control_encodedbar3 + 00 + + + c_rbar_cap_sup4 + 00001 + + + c_rbar_cap_index4 + 0 + + + c_rbar_cap_control_encodedbar4 + 00 + + + c_rbar_cap_sup5 + 00001 + + + c_rbar_cap_index5 + 0 + + + c_rbar_cap_control_encodedbar5 + 00 + + + c_recrc_check + 0 + + + c_recrc_check_trim + FALSE + + + c_disable_rx_poisoned_resp + FALSE + + + c_trn_np_fc + TRUE + + + c_ur_inv_req + TRUE + + + c_ur_prs_response + TRUE + + + c_silicon_rev + 2 + + + c_aer_cap_optional_err_support + 000000 + + + LINK_CAP_MAX_LINK_WIDTH + Link Cap Max Link Width + 4 + + + C_DATA_WIDTH + C Data Width + 64 + + + PIPE_SIM + FALSE + + + PCIE_EXT_CLK + TRUE + + + PCIE_EXT_GT_COMMON + FALSE + + + EXT_CH_GT_DRP + FALSE + + + TRANSCEIVER_CTRL_STATUS_PORTS + FALSE + + + SHARED_LOGIC_IN_CORE + FALSE + + + ERR_REPORTING_IF + TRUE + + + PL_INTERFACE + TRUE + + + CFG_MGMT_IF + TRUE + + + CFG_CTL_IF + TRUE + + + CFG_STATUS_IF + TRUE + + + RCV_MSG_IF + TRUE + + + CFG_FC_IF + TRUE + + + EXT_PIPE_INTERFACE + FALSE + + + EXT_STARTUP_PRIMITIVE + FALSE + + + KEEP_WIDTH + Keep Width + 8 + + + PCIE_ASYNC_EN + FALSE + + + ENABLE_JTAG_DBG + FALSE + + + REDUCE_OOB_FREQ + FALSE + + + + + + choice_list_17cdf587 + None + ZC706 + + + choice_list_24b724fb + Basic + Advanced + + + choice_list_46d2cd6c + Good + High + + + choice_list_52d29139 + Bytes + Kilobytes + Megabytes + Gigabytes + + + choice_list_55451da8 + X1 + X2 + X4 + X8 + + + choice_list_5977852d + 0 + 1 + 2 + 3 + 4 + 5 + + + choice_list_6b979ebc + 250 + + + choice_list_7a7dde49 + true + false + + + choice_list_81c5c2fa + 1M + 2M + 4M + 8M + 16M + 32M + 64M + 128M + 256M + 512M + 1G + 2G + 4G + 8G + 16G + 32G + 64G + 128G + 256G + 512G + + + choice_list_8313702b + 00 + 01 + + + choice_list_8af5a703 + 0 + 1 + + + choice_list_949abb3f + X0Y0 + + + choice_list_9d7b4c06 + Absolute + Add + Subtract + + + choice_list_ac75ef1e + Custom + + + choice_list_c15e8c67 + 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 + 256 + 512 + + + choice_list_c3d223d9 + Memory + + + choice_list_d1e1a340 + Kilobytes + Megabytes + Gigabytes + + + choice_list_ddd0b0f1 + 0 + 1 + 3 + + + choice_list_ec64e624 + N/A + + + choice_list_f1174048 + NONE + INTA + INTB + INTC + INTD + + + choice_list_f5f941aa + 2 + 4 + 8 + 16 + 32 + 64 + 128 + 256 + 512 + + + choice_pairs_0332e24c + 100_MHz + 250_MHz + + + choice_pairs_067d6dc7 + 4'h1 + 4'h2 + + + choice_pairs_0db949eb + Reserved + Wireless_controller + Satellite_communication_controllers + Data_acquisition_and_signal_processing_controllers + Intelligent_I/O_controllers + Docking_stations + Device_was_built_before_Class_Code_definitions_were_finalized + Memory_controller + Simple_communication_controllers + Serial_bus_controllers + Encryption/Decryption_controllers + Display_controller + Multimedia_device + Input_devices + Mass_storage_controller + Processors + Device_does_not_fit_in_any_defined_classes + Bridge_device + Network_controller + Base_system_peripherals + + + choice_pairs_26a64edf + 1_vector + 2_vectors + 4_vectors + 8_vectors + 16_vectors + 32_vectors + 256_vectors + + + choice_pairs_307ee298 + Maximum_of_64_ns + Maximum_of_128_ns + Maximum_of_256_ns + Maximum_of_512_ns + Maximum_of_1_us + Maximum_of_2_us + Maximum_of_4_us + No_limit + + + choice_pairs_395c7aad + 64_bit + 128_bit + + + choice_pairs_3f2631bf + 128_bytes + 256_bytes + 512_bytes + 1024_bytes + + + choice_pairs_49d248fb + BAR_0 + + + choice_pairs_4da2f4f7 + No_function_number_bits_used + First_MSB_of_function_number_used + First_2_MSBs_of_function_number_used + All_3_bits_of_function_number_used + + + choice_pairs_5a23eaa1 + None + Buffer_Write + Buffer_Write_and_Read + + + choice_pairs_6f377f25 + None + Enable_Pipe_Simulation + Enable_External_PIPE_Interface + + + choice_pairs_77d6f5f3 + dB: + -3.5 + 1 + + + choice_pairs_7b4ddf8d + Disabled + 16-bit_I/O_Addressing + 32-bit_I/O_Addressing + + + choice_pairs_817775ab + Disabled + 32-bit_Addressing + 64-bit_Addressing + + + choice_pairs_8d857fe8 + 64_byte + 128_byte + + + choice_pairs_b03f0655 + None + Tandem_PROM (Refer PG054) + + + choice_pairs_c7407e77 + Range_A + Range_B + Ranges_A_&_B + Ranges_B_&_C + Ranges_A,_B_&_C + Ranges_B,_C_&_D + Ranges_A,_B,_C_&_D + + + choice_pairs_c98117c0 + RAM + Other_memory_controller + Flash + + + choice_pairs_d06c0498 + 2.5_GT/s + 5.0_GT/s + + + choice_pairs_db58a2b2 + Initial_ES + GES_and_Production + + + choice_pairs_dbee2759 + Maximum_of_1_us + Maximum_of_2_us + Maximum_of_4_us + Maximum_of_8_us + Maximum_of_16_us + Maximum_of_32_us + Maximum_of_64_us + No_limit + + + choice_pairs_dc66c043 + PCI_Express_Endpoint_device + Legacy_PCI_Express_Endpoint_device + Root_Port_of_PCI_Express_Root_Complex + + + + + xilinx_veriloginstantiationtemplate_view_fileset + + pcie_7x_0.vho + vhdlTemplate + + + pcie_7x_0.veo + verilogTemplate + + + + xilinx_verilogbehavioralsimulation_view_fileset + + source/pcie_7x_0_pipe_eq.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pipe_drp.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pipe_rate.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pipe_reset.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pipe_sync.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_gtp_pipe_rate.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_gtp_pipe_drp.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_gtp_pipe_reset.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pipe_user.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pipe_wrapper.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_qpll_drp.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_qpll_reset.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_qpll_wrapper.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_rxeq_scan.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pcie_top.v + verilogSource + pcie_7x_0_pcie2_top + + + sys_clk_gen_ps_v.txt + text + + + source/pcie_7x_0_core_top.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_axi_basic_rx_null_gen.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_axi_basic_rx_pipeline.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_axi_basic_rx.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_axi_basic_top.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_axi_basic_tx_pipeline.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_axi_basic_tx_thrtl_ctl.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_axi_basic_tx.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pcie_7x.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pcie_bram_7x.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pcie_bram_top_7x.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pcie_brams_7x.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pcie_pipe_lane.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pcie_pipe_misc.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pcie_pipe_pipeline.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_gt_top.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_gt_common.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_gtp_cpllpd_ovrd.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_gtx_cpllpd_ovrd.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_gt_rx_valid_filter_7x.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_gt_wrapper.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pcie2_top.v + verilogSource + pcie_7x_0_pcie2_top + + + + xilinx_verilogsimulationwrapper_view_fileset + + sim/pcie_7x_0.v + verilogSource + xil_defaultlib + + + + xilinx_versioninformation_view_fileset + + doc/pcie_7x_v3_3_changelog.txt + text + + + + xilinx_verilogsynthesis_view_fileset + + source/pcie_7x_0_pipe_eq.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pipe_drp.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pipe_rate.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pipe_reset.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pipe_sync.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_gtp_pipe_rate.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_gtp_pipe_drp.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_gtp_pipe_reset.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pipe_user.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pipe_wrapper.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_qpll_drp.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_qpll_reset.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_qpll_wrapper.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_rxeq_scan.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pcie_top.v + verilogSource + pcie_7x_0_pcie2_top + + + sys_clk_gen_ps_v.txt + text + + + source/pcie_7x_0_core_top.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_axi_basic_rx_null_gen.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_axi_basic_rx_pipeline.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_axi_basic_rx.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_axi_basic_top.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_axi_basic_tx_pipeline.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_axi_basic_tx_thrtl_ctl.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_axi_basic_tx.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pcie_7x.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pcie_bram_7x.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pcie_bram_top_7x.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pcie_brams_7x.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pcie_pipe_lane.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pcie_pipe_misc.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pcie_pipe_pipeline.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_gt_top.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_gt_common.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_gtp_cpllpd_ovrd.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_gtx_cpllpd_ovrd.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_gt_rx_valid_filter_7x.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_gt_wrapper.v + verilogSource + pcie_7x_0_pcie2_top + + + source/pcie_7x_0-PCIE_X0Y0.xdc + xdc + pcie_7x_0_pcie2_top + + + synth/pcie_7x_0_ooc.xdc + xdc + USED_IN_implementation + USED_IN_out_of_context + USED_IN_synthesis + pcie_7x_0_pcie2_top + + + source/pcie_7x_0_pcie2_top.v + verilogSource + pcie_7x_0_pcie2_top + + + + xilinx_verilogsynthesiswrapper_view_fileset + + synth/pcie_7x_0.v + verilogSource + xil_defaultlib + + + + xilinx_externalfiles_view_fileset + + pcie_7x_0.dcp + dcp + USED_IN_implementation + USED_IN_synthesis + xil_defaultlib + + + pcie_7x_0_stub.v + verilogSource + USED_IN_synth_blackbox_stub + xil_defaultlib + + + pcie_7x_0_stub.vhdl + vhdlSource + USED_IN_synth_blackbox_stub + xil_defaultlib + + + pcie_7x_0_sim_netlist.v + verilogSource + USED_IN_simulation + USED_IN_single_language + xil_defaultlib + + + pcie_7x_0_sim_netlist.vhdl + vhdlSource + USED_IN_simulation + USED_IN_single_language + xil_defaultlib + + + + The Xilinx 7 Series Integrated Block for PCI Express (1-lane, 2-lane, 4-lane, and 8-lane) uses the 7-Series Integrated Hard IP Block for PCI Express in conjunction with flexible 7-Series architectural features to implement a PCI Express Base Specification v2.1 compliant PCI Express Endpoint or Root Port. Unique features of the LogiCORE Block for PCI Express are the high performance AXI Interface, optimal buffering for high bandwidth applications, and BAR checking and filtering. + + + mode_selection + Mode + Basic + + + Use_Class_Code_Lookup_Assistant + false + + + Component_Name + pcie_7x_0 + + + Device_Port_Type + PCI_Express_Endpoint_device + + + Maximum_Link_Width + X4 + + + Link_Speed + 5.0_GT/s + + + Interface_Width + 64_bit + + + User_Clk_Freq + 250 + + + Bar0_Enabled + true + + + Bar0_Type + Memory + + + Bar0_64bit + false + + + Bar0_Prefetchable + false + + + Bar0_Scale + Kilobytes + + + Bar0_Size + 64 + + + Bar1_Enabled + false + + + Bar1_Type + N/A + + + Bar1_64bit + false + + + Bar1_Prefetchable + false + + + Bar1_Scale + Megabytes + + + Bar1_Size + 1 + + + Bar2_Enabled + false + + + Bar2_Type + N/A + + + Bar2_64bit + false + + + Bar2_Prefetchable + false + + + Bar2_Scale + Kilobytes + + + Bar2_Size + 2 + + + Bar3_Enabled + false + + + Bar3_Type + N/A + + + Bar3_64bit + false + + + Bar3_Prefetchable + false + + + Bar3_Scale + Kilobytes + + + Bar3_Size + 2 + + + Bar4_Enabled + false + + + Bar4_Type + N/A + + + Bar4_64bit + false + + + Bar4_Prefetchable + false + + + Bar4_Scale + Kilobytes + + + Bar4_Size + 2 + + + Bar5_Enabled + false + + + Bar5_Type + N/A + + + Bar5_Prefetchable + false + + + Bar5_Scale + Kilobytes + + + Bar5_Size + 2 + + + Expansion_Rom_Enabled + false + + + Expansion_Rom_Scale + Kilobytes + + + Expansion_Rom_Size + 2 + + + IO_Base_Limit_Registers + Disabled + + + Prefetchable_Memory_Base_Limit_Registers + Disabled + + + Vendor_ID + 10EE + + + Device_ID + 7024 + + + Revision_ID + 00 + + + Subsystem_Vendor_ID + 10EE + + + Subsystem_ID + 0007 + + + Class_Code_Base + 05 + + + Class_Code_Sub + 00 + + + Class_Code_Interface + 00 + + + Base_Class_Menu + Memory_controller + + + Sub_Class_Interface_Menu + RAM + + + Cardbus_CIS_Pointer + 00000000 + + + PCIe_Cap_Slot_Implemented + false + + + Max_Payload_Size + 1024_bytes + + + Extended_Tag_Field + false + + + Extended_Tag_Default + false + + + Phantom_Functions + No_function_number_bits_used + + + Acceptable_L0s_Latency + Maximum_of_64_ns + + + Acceptable_L1_Latency + No_limit + + + Cpl_Finite + false + + + Cpl_Timeout_Disable_Sup + false + + + Cpl_Timeout_Range + Range_B + + + Buf_Opt_BMA + false + + + Perf_Level + High + + + Dll_Link_Active_Cap + false + + + RCB + 64_byte + + + Trgt_Link_Speed + 4'h2 + + + Hw_Auton_Spd_Disable + false + + + De_emph + -3.5 + + + Enable_Slot_Clock_Cfg + true + + + Root_Cap_CRS + false + + + Slot_Cap_Attn_Butn + false + + + Slot_Cap_Pwr_Ctrl + false + + + Slot_Cap_MRL + false + + + Slot_Cap_Attn_Ind + false + + + Slot_Cap_Pwr_Ind + false + + + Slot_Cap_HotPlug_Surprise + false + + + Slot_Cap_HotPlug_Cap + false + + + Slot_Cap_Elec_Interlock + false + + + Slot_Cap_No_Cmd_Comp_Sup + false + + + Slot_Cap_Pwr_Limit_Value + 0 + + + Slot_Cap_Pwr_Limit_Scale + 0 + + + Slot_Cap_Physical_Slot_Num + 0 + + + IntX_Generation + true + + + Legacy_Interrupt + INTA + + + MSI_Enabled + false + + + MSI_64b + true + + + Multiple_Message_Capable + 1_vector + + + MSI_Vec_Mask + false + + + MSIx_Enabled + false + + + MSIx_Table_Size + 1 + + + MSIx_Table_Offset + 0 + + + MSIx_Table_BIR + BAR_0 + + + MSIx_PBA_Offset + 0 + + + MSIx_PBA_BIR + BAR_0 + + + Device_Specific_Initialization + false + + + D1_Support + false + + + D2_Support + false + + + D0_PME_Support + true + + + D1_PME_Support + true + + + D2_PME_Support + true + + + D3hot_PME_Support + true + + + D3cold_PME_Support + false + + + No_Soft_Reset + true + + + D0_Power_Consumed + 0 + + + D0_Power_Consumed_Factor + 0 + + + D1_Power_Consumed + 0 + + + D1_Power_Consumed_Factor + 0 + + + D2_Power_Consumed + 0 + + + D2_Power_Consumed_Factor + 0 + + + D3_Power_Consumed + 0 + + + D3_Power_Consumed_Factor + 0 + + + D0_Power_Dissipated + 0 + + + D0_Power_Dissipated_Factor + 0 + + + D1_Power_Dissipated + 0 + + + D1_Power_Dissipated_Factor + 0 + + + D2_Power_Dissipated + 0 + + + D2_Power_Dissipated_Factor + 0 + + + D3_Power_Dissipated + 0 + + + D3_Power_Dissipated_Factor + 0 + + + DSN_Enabled + true + + + VC_Cap_Enabled + false + + + VC_Cap_Reject_Snoop + false + + + VSEC_Enabled + false + + + PCI_CFG_Space + false + + + PCI_CFG_Space_Addr + 3F + + + EXT_PCI_CFG_Space + false + + + EXT_PCI_CFG_Space_Addr + 3FF + + + Xlnx_Ref_Board + ZC706 + + + PCIe_Blk_Locn + X0Y0 + + + Trans_Buf_Pipeline + None + + + En_route_unlock + false + + + En_route_pme_to + false + + + En_route_err_cor + false + + + En_route_err_nfl + false + + + En_route_err_ftl + false + + + En_route_inta + false + + + En_route_intb + false + + + En_route_intc + false + + + En_route_intd + false + + + En_route_pm_pme + false + + + En_route_pme_to_ack + false + + + Receive_NP_Request + true + + + Enable_ACK_NAK_Timer + false + + + ACK_NAK_Timeout_Func + Absolute + + + ACK_NAK_Timeout_Value + 0000 + + + Enable_Replay_Timer + false + + + Replay_Timeout_Func + Add + + + Replay_Timeout_Value + 0000 + + + Enable_Lane_Reversal + false + + + Upconfigure_Capable + true + + + Force_No_Scrambling + false + + + Disable_Tx_ASPM_L0s + false + + + Downstream_Link_Num + 00 + + + UR_INV_REQ + true + + + UR_PRS_RESPONSE + true + + + Silicon_Rev + GES_and_Production + + + Pcie_fast_config + None + + + PCIe_Debug_Ports + true + + + Ref_Clk_Freq + 100_MHz + + + Cost_Table + 1 + + + UR_Atomic + false + + + ATOMICOP32_Completer_Supported + false + + + ATOMICOP64_Completer_Supported + false + + + CAS128_Completer_Supported + false + + + TPH_Completer_Supported + 00 + + + ARI_Forwarding_Supported + false + + + AtomicOp_Routing_Supported + false + + + ASPM_Optionality + false + + + AER_Enabled + false + + + AER_ECRC_Check_Capable + false + + + AER_ECRC_Gen_Capable + false + + + AER_Multiheader + false + + + AER_Permit_Root_Error_Update + false + + + AER_Correctable_Internal_Error + false + + + AER_Header_Log_Overflow + false + + + AER_Receiver_Error + false + + + AER_Surprise_Down + false + + + AER_Flow_Control_Protocol_Error + false + + + AER_Completion_Timeout + false + + + AER_Completer_Abort + false + + + AER_Receiver_Overflow + false + + + AER_ECRC_Error + false + + + AER_ACS_Violation + false + + + AER_Uncorrectable_Internal_Error + false + + + AER_MC_Blocked_TLP + false + + + AER_AtomicOp_Egress_Blocked + false + + + AER_TLP_Prefix_Blocked + false + + + Optional_Error_Support + 000000 + + + RBAR_Enabled + false + + + RBAR_Num + 0 + + + BAR_Index_Value0 + 0 + + + BAR0_Size_Vector + 1M + + + RBAR_Initial_Value0 + 0 + + + BAR_Index_Value1 + 0 + + + BAR1_Size_Vector + 1M + + + RBAR_Initial_Value1 + 0 + + + BAR_Index_Value2 + 0 + + + BAR2_Size_Vector + 1M + + + RBAR_Initial_Value2 + 0 + + + BAR_Index_Value3 + 0 + + + BAR3_Size_Vector + 1M + + + RBAR_Initial_Value3 + 0 + + + BAR_Index_Value4 + 0 + + + BAR4_Size_Vector + 1M + + + RBAR_Initial_Value4 + 0 + + + BAR_Index_Value5 + 0 + + + BAR5_Size_Vector + 1M + + + RBAR_Initial_Value5 + 0 + + + RECRC_Check + 0 + + + RECRC_Check_Trim + false + + + Disable_Rx_Poisoned_Resp + false + + + pipe_sim + false + + + en_ext_clk + true + + + en_ext_gt_common + false + + + en_ext_ch_gt_drp + false + + + en_transceiver_status_ports + false + + + shared_logic_in_core + false + + + pl_interface + true + + + cfg_mgmt_if + true + + + cfg_ctl_if + true + + + cfg_status_if + true + + + rcv_msg_if + true + + + cfg_fc_if + true + + + err_reporting_if + true + + + USE_BOARD_FLOW + Generate Board based IO Constraints + false + + + RESET_BOARD_INTERFACE + Custom + + + en_ext_pipe_interface + false + + + en_ext_startup + false + + + pipe_mode_sim + None + + + enable_jtag_dbg + false + + + reduce_oob_freq + false + + + + + 7 Series Integrated Block for PCI Express + + XPM_CDC + XPM_MEMORY + + 14 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2020.2 + + + + + + + + diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0_sim_netlist.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0_sim_netlist.v new file mode 100644 index 0000000..9d1d801 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0_sim_netlist.v @@ -0,0 +1,66137 @@ +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// -------------------------------------------------------------------------------- +// Tool Version: Vivado v.2020.2 (win64) Build 3064766 Wed Nov 18 09:12:45 MST 2020 +// Date : Wed Jul 20 13:38:01 2022 +// Host : DESKTOP-4NLVFC8 running 64-bit major release (build 9200) +// Command : write_verilog -force -mode funcsim -rename_top pcie_7x_0 -prefix +// pcie_7x_0_ pcie_7x_0_sim_netlist.v +// Design : pcie_7x_0 +// Purpose : This verilog netlist is a functional simulation representation of the design and should not be modified +// or synthesized. This netlist cannot be used for SDF annotated simulation. +// Device : xc7z045ffg900-2 +// -------------------------------------------------------------------------------- +`timescale 1 ps / 1 ps + +module pcie_7x_0_BRAM_TDP_MACRO_viv_ + (rdata, + pipe_userclk1_in, + mim_tx_wen, + mim_tx_ren, + MIMTXWADDR, + MIMTXRADDR, + wdata); + output [5:0]rdata; + input pipe_userclk1_in; + input mim_tx_wen; + input mim_tx_ren; + input [11:0]MIMTXWADDR; + input [11:0]MIMTXRADDR; + input [5:0]wdata; + + wire [11:0]MIMTXRADDR; + wire [11:0]MIMTXWADDR; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_60 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_61 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_75 ; + wire mim_tx_ren; + wire mim_tx_wen; + wire pipe_userclk1_in; + wire [5:0]rdata; + wire [5:0]wdata; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED ; + wire [7:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED ; + wire [8:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED ; + + (* BOX_TYPE = "PRIMITIVE" *) + RAMB36E1 #( + .DOA_REG(0), + .DOB_REG(1), + .EN_ECC_READ("FALSE"), + .EN_ECC_WRITE("FALSE"), + .INITP_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_10(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_11(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_12(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_13(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_14(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_15(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_16(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_17(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_18(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_19(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_20(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_21(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_22(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_23(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_24(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_25(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_26(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_27(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_28(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_29(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_30(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_31(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_32(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_33(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_34(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_35(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_36(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_37(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_38(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_39(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_40(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_41(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_42(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_43(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_44(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_45(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_46(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_47(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_48(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_49(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_50(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_51(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_52(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_53(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_54(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_55(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_56(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_57(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_58(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_59(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_60(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_61(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_62(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_63(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_64(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_65(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_66(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_67(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_68(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_69(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_70(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_71(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_72(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_73(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_74(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_75(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_76(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_77(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_78(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_79(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_A(36'h000000000), + .INIT_B(36'h000000000), + .INIT_FILE("NONE"), + .IS_CLKARDCLK_INVERTED(1'b0), + .IS_CLKBWRCLK_INVERTED(1'b0), + .IS_ENARDEN_INVERTED(1'b0), + .IS_ENBWREN_INVERTED(1'b0), + .IS_RSTRAMARSTRAM_INVERTED(1'b0), + .IS_RSTRAMB_INVERTED(1'b0), + .IS_RSTREGARSTREG_INVERTED(1'b0), + .IS_RSTREGB_INVERTED(1'b0), + .RAM_EXTENSION_A("NONE"), + .RAM_EXTENSION_B("NONE"), + .RAM_MODE("TDP"), + .RDADDR_COLLISION_HWCONFIG("DELAYED_WRITE"), + .READ_WIDTH_A(9), + .READ_WIDTH_B(9), + .RSTREG_PRIORITY_A("RSTREG"), + .RSTREG_PRIORITY_B("RSTREG"), + .SIM_COLLISION_CHECK("ALL"), + .SIM_DEVICE("7SERIES"), + .SRVAL_A(36'h000000000), + .SRVAL_B(36'h000000000), + .WRITE_MODE_A("NO_CHANGE"), + .WRITE_MODE_B("WRITE_FIRST"), + .WRITE_WIDTH_A(9), + .WRITE_WIDTH_B(9)) + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl + (.ADDRARDADDR({1'b1,MIMTXWADDR,1'b1,1'b1,1'b1}), + .ADDRBWRADDR({1'b1,MIMTXRADDR,1'b1,1'b1,1'b1}), + .CASCADEINA(1'b0), + .CASCADEINB(1'b0), + .CASCADEOUTA(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ), + .CASCADEOUTB(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ), + .CLKARDCLK(pipe_userclk1_in), + .CLKBWRCLK(pipe_userclk1_in), + .DBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ), + .DIADI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED [31:8],1'b0,1'b0,wdata}), + .DIBDI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED [31:8],1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .DIPADIP({1'b0,1'b0,1'b0,1'b0}), + .DIPBDIP({1'b0,1'b0,1'b0,1'b0}), + .DOADO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 }), + .DOBDO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_60 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_61 ,rdata}), + .DOPADOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 }), + .DOPBDOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_75 }), + .ECCPARITY(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED [7:0]), + .ENARDEN(mim_tx_wen), + .ENBWREN(mim_tx_ren), + .INJECTDBITERR(1'b0), + .INJECTSBITERR(1'b0), + .RDADDRECC(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED [8:0]), + .REGCEAREGCE(1'b0), + .REGCEB(1'b1), + .RSTRAMARSTRAM(1'b0), + .RSTRAMB(1'b0), + .RSTREGARSTREG(1'b0), + .RSTREGB(1'b0), + .SBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ), + .WEA({1'b1,1'b1,1'b1,1'b1}), + .WEBWE({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0})); +endmodule + +(* ORIG_REF_NAME = "BRAM_TDP_MACRO" *) +module pcie_7x_0_BRAM_TDP_MACRO_11 + (rdata, + pipe_userclk1_in, + mim_tx_wen, + mim_tx_ren, + MIMTXWADDR, + MIMTXRADDR, + wdata); + output [8:0]rdata; + input pipe_userclk1_in; + input mim_tx_wen; + input mim_tx_ren; + input [11:0]MIMTXWADDR; + input [11:0]MIMTXRADDR; + input [8:0]wdata; + + wire [11:0]MIMTXRADDR; + wire [11:0]MIMTXWADDR; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 ; + wire mim_tx_ren; + wire mim_tx_wen; + wire pipe_userclk1_in; + wire [8:0]rdata; + wire [8:0]wdata; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED ; + wire [7:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED ; + wire [8:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED ; + + (* BOX_TYPE = "PRIMITIVE" *) + RAMB36E1 #( + .DOA_REG(0), + .DOB_REG(1), + .EN_ECC_READ("FALSE"), + .EN_ECC_WRITE("FALSE"), + .INITP_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_10(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_11(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_12(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_13(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_14(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_15(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_16(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_17(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_18(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_19(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_20(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_21(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_22(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_23(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_24(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_25(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_26(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_27(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_28(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_29(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_30(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_31(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_32(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_33(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_34(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_35(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_36(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_37(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_38(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_39(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_40(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_41(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_42(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_43(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_44(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_45(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_46(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_47(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_48(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_49(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_50(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_51(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_52(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_53(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_54(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_55(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_56(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_57(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_58(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_59(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_60(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_61(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_62(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_63(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_64(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_65(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_66(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_67(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_68(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_69(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_70(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_71(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_72(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_73(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_74(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_75(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_76(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_77(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_78(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_79(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_A(36'h000000000), + .INIT_B(36'h000000000), + .INIT_FILE("NONE"), + .IS_CLKARDCLK_INVERTED(1'b0), + .IS_CLKBWRCLK_INVERTED(1'b0), + .IS_ENARDEN_INVERTED(1'b0), + .IS_ENBWREN_INVERTED(1'b0), + .IS_RSTRAMARSTRAM_INVERTED(1'b0), + .IS_RSTRAMB_INVERTED(1'b0), + .IS_RSTREGARSTREG_INVERTED(1'b0), + .IS_RSTREGB_INVERTED(1'b0), + .RAM_EXTENSION_A("NONE"), + .RAM_EXTENSION_B("NONE"), + .RAM_MODE("TDP"), + .RDADDR_COLLISION_HWCONFIG("DELAYED_WRITE"), + .READ_WIDTH_A(9), + .READ_WIDTH_B(9), + .RSTREG_PRIORITY_A("RSTREG"), + .RSTREG_PRIORITY_B("RSTREG"), + .SIM_COLLISION_CHECK("ALL"), + .SIM_DEVICE("7SERIES"), + .SRVAL_A(36'h000000000), + .SRVAL_B(36'h000000000), + .WRITE_MODE_A("NO_CHANGE"), + .WRITE_MODE_B("WRITE_FIRST"), + .WRITE_WIDTH_A(9), + .WRITE_WIDTH_B(9)) + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl + (.ADDRARDADDR({1'b1,MIMTXWADDR,1'b1,1'b1,1'b1}), + .ADDRBWRADDR({1'b1,MIMTXRADDR,1'b1,1'b1,1'b1}), + .CASCADEINA(1'b0), + .CASCADEINB(1'b0), + .CASCADEOUTA(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ), + .CASCADEOUTB(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ), + .CLKARDCLK(pipe_userclk1_in), + .CLKBWRCLK(pipe_userclk1_in), + .DBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ), + .DIADI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED [31:8],wdata[7:0]}), + .DIBDI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED [31:8],1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .DIPADIP({1'b0,1'b0,1'b0,wdata[8]}), + .DIPBDIP({1'b0,1'b0,1'b0,1'b0}), + .DOADO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 }), + .DOBDO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED [31:8],rdata[7:0]}), + .DOPADOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 }), + .DOPBDOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED [3:1],rdata[8]}), + .ECCPARITY(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED [7:0]), + .ENARDEN(mim_tx_wen), + .ENBWREN(mim_tx_ren), + .INJECTDBITERR(1'b0), + .INJECTSBITERR(1'b0), + .RDADDRECC(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED [8:0]), + .REGCEAREGCE(1'b0), + .REGCEB(1'b1), + .RSTRAMARSTRAM(1'b0), + .RSTRAMB(1'b0), + .RSTREGARSTREG(1'b0), + .RSTREGB(1'b0), + .SBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ), + .WEA({1'b1,1'b1,1'b1,1'b1}), + .WEBWE({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0})); +endmodule + +(* ORIG_REF_NAME = "BRAM_TDP_MACRO" *) +module pcie_7x_0_BRAM_TDP_MACRO_12 + (rdata, + pipe_userclk1_in, + mim_tx_wen, + mim_tx_ren, + MIMTXWADDR, + MIMTXRADDR, + wdata); + output [8:0]rdata; + input pipe_userclk1_in; + input mim_tx_wen; + input mim_tx_ren; + input [11:0]MIMTXWADDR; + input [11:0]MIMTXRADDR; + input [8:0]wdata; + + wire [11:0]MIMTXRADDR; + wire [11:0]MIMTXWADDR; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 ; + wire mim_tx_ren; + wire mim_tx_wen; + wire pipe_userclk1_in; + wire [8:0]rdata; + wire [8:0]wdata; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED ; + wire [7:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED ; + wire [8:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED ; + + (* BOX_TYPE = "PRIMITIVE" *) + RAMB36E1 #( + .DOA_REG(0), + .DOB_REG(1), + .EN_ECC_READ("FALSE"), + .EN_ECC_WRITE("FALSE"), + .INITP_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_10(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_11(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_12(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_13(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_14(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_15(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_16(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_17(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_18(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_19(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_20(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_21(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_22(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_23(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_24(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_25(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_26(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_27(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_28(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_29(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_30(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_31(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_32(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_33(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_34(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_35(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_36(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_37(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_38(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_39(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_40(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_41(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_42(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_43(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_44(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_45(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_46(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_47(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_48(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_49(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_50(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_51(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_52(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_53(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_54(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_55(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_56(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_57(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_58(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_59(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_60(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_61(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_62(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_63(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_64(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_65(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_66(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_67(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_68(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_69(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_70(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_71(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_72(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_73(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_74(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_75(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_76(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_77(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_78(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_79(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_A(36'h000000000), + .INIT_B(36'h000000000), + .INIT_FILE("NONE"), + .IS_CLKARDCLK_INVERTED(1'b0), + .IS_CLKBWRCLK_INVERTED(1'b0), + .IS_ENARDEN_INVERTED(1'b0), + .IS_ENBWREN_INVERTED(1'b0), + .IS_RSTRAMARSTRAM_INVERTED(1'b0), + .IS_RSTRAMB_INVERTED(1'b0), + .IS_RSTREGARSTREG_INVERTED(1'b0), + .IS_RSTREGB_INVERTED(1'b0), + .RAM_EXTENSION_A("NONE"), + .RAM_EXTENSION_B("NONE"), + .RAM_MODE("TDP"), + .RDADDR_COLLISION_HWCONFIG("DELAYED_WRITE"), + .READ_WIDTH_A(9), + .READ_WIDTH_B(9), + .RSTREG_PRIORITY_A("RSTREG"), + .RSTREG_PRIORITY_B("RSTREG"), + .SIM_COLLISION_CHECK("ALL"), + .SIM_DEVICE("7SERIES"), + .SRVAL_A(36'h000000000), + .SRVAL_B(36'h000000000), + .WRITE_MODE_A("NO_CHANGE"), + .WRITE_MODE_B("WRITE_FIRST"), + .WRITE_WIDTH_A(9), + .WRITE_WIDTH_B(9)) + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl + (.ADDRARDADDR({1'b1,MIMTXWADDR,1'b1,1'b1,1'b1}), + .ADDRBWRADDR({1'b1,MIMTXRADDR,1'b1,1'b1,1'b1}), + .CASCADEINA(1'b0), + .CASCADEINB(1'b0), + .CASCADEOUTA(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ), + .CASCADEOUTB(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ), + .CLKARDCLK(pipe_userclk1_in), + .CLKBWRCLK(pipe_userclk1_in), + .DBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ), + .DIADI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED [31:8],wdata[7:0]}), + .DIBDI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED [31:8],1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .DIPADIP({1'b0,1'b0,1'b0,wdata[8]}), + .DIPBDIP({1'b0,1'b0,1'b0,1'b0}), + .DOADO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 }), + .DOBDO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED [31:8],rdata[7:0]}), + .DOPADOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 }), + .DOPBDOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED [3:1],rdata[8]}), + .ECCPARITY(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED [7:0]), + .ENARDEN(mim_tx_wen), + .ENBWREN(mim_tx_ren), + .INJECTDBITERR(1'b0), + .INJECTSBITERR(1'b0), + .RDADDRECC(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED [8:0]), + .REGCEAREGCE(1'b0), + .REGCEB(1'b1), + .RSTRAMARSTRAM(1'b0), + .RSTRAMB(1'b0), + .RSTREGARSTREG(1'b0), + .RSTREGB(1'b0), + .SBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ), + .WEA({1'b1,1'b1,1'b1,1'b1}), + .WEBWE({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0})); +endmodule + +(* ORIG_REF_NAME = "BRAM_TDP_MACRO" *) +module pcie_7x_0_BRAM_TDP_MACRO_13 + (rdata, + pipe_userclk1_in, + mim_tx_wen, + mim_tx_ren, + MIMTXWADDR, + MIMTXRADDR, + wdata); + output [8:0]rdata; + input pipe_userclk1_in; + input mim_tx_wen; + input mim_tx_ren; + input [11:0]MIMTXWADDR; + input [11:0]MIMTXRADDR; + input [8:0]wdata; + + wire [11:0]MIMTXRADDR; + wire [11:0]MIMTXWADDR; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 ; + wire mim_tx_ren; + wire mim_tx_wen; + wire pipe_userclk1_in; + wire [8:0]rdata; + wire [8:0]wdata; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED ; + wire [7:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED ; + wire [8:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED ; + + (* BOX_TYPE = "PRIMITIVE" *) + RAMB36E1 #( + .DOA_REG(0), + .DOB_REG(1), + .EN_ECC_READ("FALSE"), + .EN_ECC_WRITE("FALSE"), + .INITP_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_10(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_11(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_12(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_13(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_14(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_15(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_16(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_17(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_18(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_19(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_20(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_21(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_22(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_23(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_24(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_25(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_26(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_27(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_28(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_29(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_30(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_31(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_32(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_33(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_34(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_35(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_36(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_37(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_38(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_39(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_40(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_41(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_42(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_43(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_44(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_45(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_46(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_47(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_48(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_49(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_50(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_51(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_52(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_53(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_54(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_55(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_56(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_57(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_58(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_59(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_60(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_61(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_62(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_63(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_64(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_65(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_66(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_67(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_68(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_69(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_70(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_71(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_72(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_73(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_74(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_75(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_76(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_77(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_78(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_79(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_A(36'h000000000), + .INIT_B(36'h000000000), + .INIT_FILE("NONE"), + .IS_CLKARDCLK_INVERTED(1'b0), + .IS_CLKBWRCLK_INVERTED(1'b0), + .IS_ENARDEN_INVERTED(1'b0), + .IS_ENBWREN_INVERTED(1'b0), + .IS_RSTRAMARSTRAM_INVERTED(1'b0), + .IS_RSTRAMB_INVERTED(1'b0), + .IS_RSTREGARSTREG_INVERTED(1'b0), + .IS_RSTREGB_INVERTED(1'b0), + .RAM_EXTENSION_A("NONE"), + .RAM_EXTENSION_B("NONE"), + .RAM_MODE("TDP"), + .RDADDR_COLLISION_HWCONFIG("DELAYED_WRITE"), + .READ_WIDTH_A(9), + .READ_WIDTH_B(9), + .RSTREG_PRIORITY_A("RSTREG"), + .RSTREG_PRIORITY_B("RSTREG"), + .SIM_COLLISION_CHECK("ALL"), + .SIM_DEVICE("7SERIES"), + .SRVAL_A(36'h000000000), + .SRVAL_B(36'h000000000), + .WRITE_MODE_A("NO_CHANGE"), + .WRITE_MODE_B("WRITE_FIRST"), + .WRITE_WIDTH_A(9), + .WRITE_WIDTH_B(9)) + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl + (.ADDRARDADDR({1'b1,MIMTXWADDR,1'b1,1'b1,1'b1}), + .ADDRBWRADDR({1'b1,MIMTXRADDR,1'b1,1'b1,1'b1}), + .CASCADEINA(1'b0), + .CASCADEINB(1'b0), + .CASCADEOUTA(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ), + .CASCADEOUTB(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ), + .CLKARDCLK(pipe_userclk1_in), + .CLKBWRCLK(pipe_userclk1_in), + .DBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ), + .DIADI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED [31:8],wdata[7:0]}), + .DIBDI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED [31:8],1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .DIPADIP({1'b0,1'b0,1'b0,wdata[8]}), + .DIPBDIP({1'b0,1'b0,1'b0,1'b0}), + .DOADO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 }), + .DOBDO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED [31:8],rdata[7:0]}), + .DOPADOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 }), + .DOPBDOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED [3:1],rdata[8]}), + .ECCPARITY(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED [7:0]), + .ENARDEN(mim_tx_wen), + .ENBWREN(mim_tx_ren), + .INJECTDBITERR(1'b0), + .INJECTSBITERR(1'b0), + .RDADDRECC(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED [8:0]), + .REGCEAREGCE(1'b0), + .REGCEB(1'b1), + .RSTRAMARSTRAM(1'b0), + .RSTRAMB(1'b0), + .RSTREGARSTREG(1'b0), + .RSTREGB(1'b0), + .SBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ), + .WEA({1'b1,1'b1,1'b1,1'b1}), + .WEBWE({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0})); +endmodule + +(* ORIG_REF_NAME = "BRAM_TDP_MACRO" *) +module pcie_7x_0_BRAM_TDP_MACRO_14 + (rdata, + pipe_userclk1_in, + mim_tx_wen, + mim_tx_ren, + MIMTXWADDR, + MIMTXRADDR, + wdata); + output [8:0]rdata; + input pipe_userclk1_in; + input mim_tx_wen; + input mim_tx_ren; + input [11:0]MIMTXWADDR; + input [11:0]MIMTXRADDR; + input [8:0]wdata; + + wire [11:0]MIMTXRADDR; + wire [11:0]MIMTXWADDR; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 ; + wire mim_tx_ren; + wire mim_tx_wen; + wire pipe_userclk1_in; + wire [8:0]rdata; + wire [8:0]wdata; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED ; + wire [7:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED ; + wire [8:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED ; + + (* BOX_TYPE = "PRIMITIVE" *) + RAMB36E1 #( + .DOA_REG(0), + .DOB_REG(1), + .EN_ECC_READ("FALSE"), + .EN_ECC_WRITE("FALSE"), + .INITP_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_10(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_11(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_12(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_13(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_14(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_15(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_16(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_17(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_18(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_19(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_20(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_21(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_22(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_23(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_24(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_25(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_26(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_27(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_28(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_29(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_30(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_31(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_32(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_33(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_34(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_35(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_36(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_37(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_38(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_39(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_40(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_41(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_42(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_43(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_44(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_45(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_46(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_47(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_48(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_49(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_50(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_51(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_52(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_53(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_54(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_55(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_56(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_57(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_58(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_59(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_60(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_61(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_62(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_63(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_64(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_65(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_66(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_67(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_68(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_69(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_70(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_71(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_72(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_73(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_74(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_75(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_76(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_77(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_78(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_79(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_A(36'h000000000), + .INIT_B(36'h000000000), + .INIT_FILE("NONE"), + .IS_CLKARDCLK_INVERTED(1'b0), + .IS_CLKBWRCLK_INVERTED(1'b0), + .IS_ENARDEN_INVERTED(1'b0), + .IS_ENBWREN_INVERTED(1'b0), + .IS_RSTRAMARSTRAM_INVERTED(1'b0), + .IS_RSTRAMB_INVERTED(1'b0), + .IS_RSTREGARSTREG_INVERTED(1'b0), + .IS_RSTREGB_INVERTED(1'b0), + .RAM_EXTENSION_A("NONE"), + .RAM_EXTENSION_B("NONE"), + .RAM_MODE("TDP"), + .RDADDR_COLLISION_HWCONFIG("DELAYED_WRITE"), + .READ_WIDTH_A(9), + .READ_WIDTH_B(9), + .RSTREG_PRIORITY_A("RSTREG"), + .RSTREG_PRIORITY_B("RSTREG"), + .SIM_COLLISION_CHECK("ALL"), + .SIM_DEVICE("7SERIES"), + .SRVAL_A(36'h000000000), + .SRVAL_B(36'h000000000), + .WRITE_MODE_A("NO_CHANGE"), + .WRITE_MODE_B("WRITE_FIRST"), + .WRITE_WIDTH_A(9), + .WRITE_WIDTH_B(9)) + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl + (.ADDRARDADDR({1'b1,MIMTXWADDR,1'b1,1'b1,1'b1}), + .ADDRBWRADDR({1'b1,MIMTXRADDR,1'b1,1'b1,1'b1}), + .CASCADEINA(1'b0), + .CASCADEINB(1'b0), + .CASCADEOUTA(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ), + .CASCADEOUTB(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ), + .CLKARDCLK(pipe_userclk1_in), + .CLKBWRCLK(pipe_userclk1_in), + .DBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ), + .DIADI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED [31:8],wdata[7:0]}), + .DIBDI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED [31:8],1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .DIPADIP({1'b0,1'b0,1'b0,wdata[8]}), + .DIPBDIP({1'b0,1'b0,1'b0,1'b0}), + .DOADO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 }), + .DOBDO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED [31:8],rdata[7:0]}), + .DOPADOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 }), + .DOPBDOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED [3:1],rdata[8]}), + .ECCPARITY(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED [7:0]), + .ENARDEN(mim_tx_wen), + .ENBWREN(mim_tx_ren), + .INJECTDBITERR(1'b0), + .INJECTSBITERR(1'b0), + .RDADDRECC(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED [8:0]), + .REGCEAREGCE(1'b0), + .REGCEB(1'b1), + .RSTRAMARSTRAM(1'b0), + .RSTRAMB(1'b0), + .RSTREGARSTREG(1'b0), + .RSTREGB(1'b0), + .SBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ), + .WEA({1'b1,1'b1,1'b1,1'b1}), + .WEBWE({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0})); +endmodule + +(* ORIG_REF_NAME = "BRAM_TDP_MACRO" *) +module pcie_7x_0_BRAM_TDP_MACRO_15 + (rdata, + pipe_userclk1_in, + mim_tx_wen, + mim_tx_ren, + MIMTXWADDR, + MIMTXRADDR, + wdata); + output [8:0]rdata; + input pipe_userclk1_in; + input mim_tx_wen; + input mim_tx_ren; + input [11:0]MIMTXWADDR; + input [11:0]MIMTXRADDR; + input [8:0]wdata; + + wire [11:0]MIMTXRADDR; + wire [11:0]MIMTXWADDR; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 ; + wire mim_tx_ren; + wire mim_tx_wen; + wire pipe_userclk1_in; + wire [8:0]rdata; + wire [8:0]wdata; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED ; + wire [7:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED ; + wire [8:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED ; + + (* BOX_TYPE = "PRIMITIVE" *) + RAMB36E1 #( + .DOA_REG(0), + .DOB_REG(1), + .EN_ECC_READ("FALSE"), + .EN_ECC_WRITE("FALSE"), + .INITP_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_10(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_11(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_12(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_13(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_14(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_15(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_16(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_17(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_18(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_19(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_20(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_21(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_22(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_23(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_24(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_25(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_26(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_27(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_28(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_29(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_30(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_31(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_32(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_33(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_34(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_35(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_36(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_37(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_38(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_39(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_40(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_41(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_42(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_43(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_44(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_45(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_46(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_47(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_48(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_49(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_50(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_51(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_52(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_53(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_54(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_55(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_56(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_57(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_58(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_59(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_60(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_61(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_62(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_63(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_64(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_65(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_66(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_67(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_68(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_69(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_70(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_71(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_72(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_73(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_74(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_75(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_76(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_77(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_78(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_79(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_A(36'h000000000), + .INIT_B(36'h000000000), + .INIT_FILE("NONE"), + .IS_CLKARDCLK_INVERTED(1'b0), + .IS_CLKBWRCLK_INVERTED(1'b0), + .IS_ENARDEN_INVERTED(1'b0), + .IS_ENBWREN_INVERTED(1'b0), + .IS_RSTRAMARSTRAM_INVERTED(1'b0), + .IS_RSTRAMB_INVERTED(1'b0), + .IS_RSTREGARSTREG_INVERTED(1'b0), + .IS_RSTREGB_INVERTED(1'b0), + .RAM_EXTENSION_A("NONE"), + .RAM_EXTENSION_B("NONE"), + .RAM_MODE("TDP"), + .RDADDR_COLLISION_HWCONFIG("DELAYED_WRITE"), + .READ_WIDTH_A(9), + .READ_WIDTH_B(9), + .RSTREG_PRIORITY_A("RSTREG"), + .RSTREG_PRIORITY_B("RSTREG"), + .SIM_COLLISION_CHECK("ALL"), + .SIM_DEVICE("7SERIES"), + .SRVAL_A(36'h000000000), + .SRVAL_B(36'h000000000), + .WRITE_MODE_A("NO_CHANGE"), + .WRITE_MODE_B("WRITE_FIRST"), + .WRITE_WIDTH_A(9), + .WRITE_WIDTH_B(9)) + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl + (.ADDRARDADDR({1'b1,MIMTXWADDR,1'b1,1'b1,1'b1}), + .ADDRBWRADDR({1'b1,MIMTXRADDR,1'b1,1'b1,1'b1}), + .CASCADEINA(1'b0), + .CASCADEINB(1'b0), + .CASCADEOUTA(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ), + .CASCADEOUTB(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ), + .CLKARDCLK(pipe_userclk1_in), + .CLKBWRCLK(pipe_userclk1_in), + .DBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ), + .DIADI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED [31:8],wdata[7:0]}), + .DIBDI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED [31:8],1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .DIPADIP({1'b0,1'b0,1'b0,wdata[8]}), + .DIPBDIP({1'b0,1'b0,1'b0,1'b0}), + .DOADO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 }), + .DOBDO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED [31:8],rdata[7:0]}), + .DOPADOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 }), + .DOPBDOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED [3:1],rdata[8]}), + .ECCPARITY(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED [7:0]), + .ENARDEN(mim_tx_wen), + .ENBWREN(mim_tx_ren), + .INJECTDBITERR(1'b0), + .INJECTSBITERR(1'b0), + .RDADDRECC(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED [8:0]), + .REGCEAREGCE(1'b0), + .REGCEB(1'b1), + .RSTRAMARSTRAM(1'b0), + .RSTRAMB(1'b0), + .RSTREGARSTREG(1'b0), + .RSTREGB(1'b0), + .SBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ), + .WEA({1'b1,1'b1,1'b1,1'b1}), + .WEBWE({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0})); +endmodule + +(* ORIG_REF_NAME = "BRAM_TDP_MACRO" *) +module pcie_7x_0_BRAM_TDP_MACRO_16 + (rdata, + pipe_userclk1_in, + mim_tx_wen, + mim_tx_ren, + MIMTXWADDR, + MIMTXRADDR, + wdata); + output [8:0]rdata; + input pipe_userclk1_in; + input mim_tx_wen; + input mim_tx_ren; + input [11:0]MIMTXWADDR; + input [11:0]MIMTXRADDR; + input [8:0]wdata; + + wire [11:0]MIMTXRADDR; + wire [11:0]MIMTXWADDR; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 ; + wire mim_tx_ren; + wire mim_tx_wen; + wire pipe_userclk1_in; + wire [8:0]rdata; + wire [8:0]wdata; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED ; + wire [7:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED ; + wire [8:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED ; + + (* BOX_TYPE = "PRIMITIVE" *) + RAMB36E1 #( + .DOA_REG(0), + .DOB_REG(1), + .EN_ECC_READ("FALSE"), + .EN_ECC_WRITE("FALSE"), + .INITP_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_10(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_11(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_12(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_13(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_14(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_15(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_16(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_17(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_18(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_19(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_20(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_21(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_22(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_23(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_24(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_25(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_26(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_27(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_28(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_29(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_30(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_31(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_32(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_33(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_34(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_35(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_36(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_37(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_38(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_39(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_40(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_41(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_42(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_43(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_44(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_45(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_46(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_47(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_48(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_49(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_50(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_51(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_52(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_53(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_54(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_55(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_56(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_57(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_58(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_59(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_60(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_61(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_62(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_63(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_64(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_65(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_66(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_67(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_68(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_69(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_70(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_71(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_72(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_73(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_74(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_75(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_76(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_77(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_78(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_79(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_A(36'h000000000), + .INIT_B(36'h000000000), + .INIT_FILE("NONE"), + .IS_CLKARDCLK_INVERTED(1'b0), + .IS_CLKBWRCLK_INVERTED(1'b0), + .IS_ENARDEN_INVERTED(1'b0), + .IS_ENBWREN_INVERTED(1'b0), + .IS_RSTRAMARSTRAM_INVERTED(1'b0), + .IS_RSTRAMB_INVERTED(1'b0), + .IS_RSTREGARSTREG_INVERTED(1'b0), + .IS_RSTREGB_INVERTED(1'b0), + .RAM_EXTENSION_A("NONE"), + .RAM_EXTENSION_B("NONE"), + .RAM_MODE("TDP"), + .RDADDR_COLLISION_HWCONFIG("DELAYED_WRITE"), + .READ_WIDTH_A(9), + .READ_WIDTH_B(9), + .RSTREG_PRIORITY_A("RSTREG"), + .RSTREG_PRIORITY_B("RSTREG"), + .SIM_COLLISION_CHECK("ALL"), + .SIM_DEVICE("7SERIES"), + .SRVAL_A(36'h000000000), + .SRVAL_B(36'h000000000), + .WRITE_MODE_A("NO_CHANGE"), + .WRITE_MODE_B("WRITE_FIRST"), + .WRITE_WIDTH_A(9), + .WRITE_WIDTH_B(9)) + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl + (.ADDRARDADDR({1'b1,MIMTXWADDR,1'b1,1'b1,1'b1}), + .ADDRBWRADDR({1'b1,MIMTXRADDR,1'b1,1'b1,1'b1}), + .CASCADEINA(1'b0), + .CASCADEINB(1'b0), + .CASCADEOUTA(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ), + .CASCADEOUTB(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ), + .CLKARDCLK(pipe_userclk1_in), + .CLKBWRCLK(pipe_userclk1_in), + .DBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ), + .DIADI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED [31:8],wdata[7:0]}), + .DIBDI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED [31:8],1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .DIPADIP({1'b0,1'b0,1'b0,wdata[8]}), + .DIPBDIP({1'b0,1'b0,1'b0,1'b0}), + .DOADO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 }), + .DOBDO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED [31:8],rdata[7:0]}), + .DOPADOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 }), + .DOPBDOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED [3:1],rdata[8]}), + .ECCPARITY(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED [7:0]), + .ENARDEN(mim_tx_wen), + .ENBWREN(mim_tx_ren), + .INJECTDBITERR(1'b0), + .INJECTSBITERR(1'b0), + .RDADDRECC(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED [8:0]), + .REGCEAREGCE(1'b0), + .REGCEB(1'b1), + .RSTRAMARSTRAM(1'b0), + .RSTRAMB(1'b0), + .RSTREGARSTREG(1'b0), + .RSTREGB(1'b0), + .SBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ), + .WEA({1'b1,1'b1,1'b1,1'b1}), + .WEBWE({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0})); +endmodule + +(* ORIG_REF_NAME = "BRAM_TDP_MACRO" *) +module pcie_7x_0_BRAM_TDP_MACRO_17 + (rdata, + pipe_userclk1_in, + mim_tx_wen, + mim_tx_ren, + MIMTXWADDR, + MIMTXRADDR, + wdata); + output [8:0]rdata; + input pipe_userclk1_in; + input mim_tx_wen; + input mim_tx_ren; + input [11:0]MIMTXWADDR; + input [11:0]MIMTXRADDR; + input [8:0]wdata; + + wire [11:0]MIMTXRADDR; + wire [11:0]MIMTXWADDR; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 ; + wire mim_tx_ren; + wire mim_tx_wen; + wire pipe_userclk1_in; + wire [8:0]rdata; + wire [8:0]wdata; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED ; + wire [7:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED ; + wire [8:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED ; + + (* BOX_TYPE = "PRIMITIVE" *) + RAMB36E1 #( + .DOA_REG(0), + .DOB_REG(1), + .EN_ECC_READ("FALSE"), + .EN_ECC_WRITE("FALSE"), + .INITP_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_10(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_11(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_12(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_13(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_14(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_15(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_16(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_17(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_18(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_19(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_20(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_21(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_22(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_23(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_24(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_25(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_26(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_27(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_28(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_29(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_30(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_31(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_32(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_33(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_34(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_35(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_36(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_37(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_38(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_39(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_40(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_41(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_42(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_43(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_44(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_45(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_46(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_47(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_48(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_49(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_50(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_51(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_52(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_53(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_54(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_55(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_56(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_57(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_58(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_59(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_60(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_61(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_62(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_63(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_64(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_65(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_66(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_67(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_68(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_69(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_70(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_71(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_72(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_73(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_74(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_75(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_76(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_77(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_78(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_79(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_A(36'h000000000), + .INIT_B(36'h000000000), + .INIT_FILE("NONE"), + .IS_CLKARDCLK_INVERTED(1'b0), + .IS_CLKBWRCLK_INVERTED(1'b0), + .IS_ENARDEN_INVERTED(1'b0), + .IS_ENBWREN_INVERTED(1'b0), + .IS_RSTRAMARSTRAM_INVERTED(1'b0), + .IS_RSTRAMB_INVERTED(1'b0), + .IS_RSTREGARSTREG_INVERTED(1'b0), + .IS_RSTREGB_INVERTED(1'b0), + .RAM_EXTENSION_A("NONE"), + .RAM_EXTENSION_B("NONE"), + .RAM_MODE("TDP"), + .RDADDR_COLLISION_HWCONFIG("DELAYED_WRITE"), + .READ_WIDTH_A(9), + .READ_WIDTH_B(9), + .RSTREG_PRIORITY_A("RSTREG"), + .RSTREG_PRIORITY_B("RSTREG"), + .SIM_COLLISION_CHECK("ALL"), + .SIM_DEVICE("7SERIES"), + .SRVAL_A(36'h000000000), + .SRVAL_B(36'h000000000), + .WRITE_MODE_A("NO_CHANGE"), + .WRITE_MODE_B("WRITE_FIRST"), + .WRITE_WIDTH_A(9), + .WRITE_WIDTH_B(9)) + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl + (.ADDRARDADDR({1'b1,MIMTXWADDR,1'b1,1'b1,1'b1}), + .ADDRBWRADDR({1'b1,MIMTXRADDR,1'b1,1'b1,1'b1}), + .CASCADEINA(1'b0), + .CASCADEINB(1'b0), + .CASCADEOUTA(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ), + .CASCADEOUTB(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ), + .CLKARDCLK(pipe_userclk1_in), + .CLKBWRCLK(pipe_userclk1_in), + .DBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ), + .DIADI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED [31:8],wdata[7:0]}), + .DIBDI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED [31:8],1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .DIPADIP({1'b0,1'b0,1'b0,wdata[8]}), + .DIPBDIP({1'b0,1'b0,1'b0,1'b0}), + .DOADO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 }), + .DOBDO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED [31:8],rdata[7:0]}), + .DOPADOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 }), + .DOPBDOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED [3:1],rdata[8]}), + .ECCPARITY(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED [7:0]), + .ENARDEN(mim_tx_wen), + .ENBWREN(mim_tx_ren), + .INJECTDBITERR(1'b0), + .INJECTSBITERR(1'b0), + .RDADDRECC(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED [8:0]), + .REGCEAREGCE(1'b0), + .REGCEB(1'b1), + .RSTRAMARSTRAM(1'b0), + .RSTRAMB(1'b0), + .RSTREGARSTREG(1'b0), + .RSTREGB(1'b0), + .SBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ), + .WEA({1'b1,1'b1,1'b1,1'b1}), + .WEBWE({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0})); +endmodule + +(* ORIG_REF_NAME = "BRAM_TDP_MACRO" *) +module pcie_7x_0_BRAM_TDP_MACRO_26 + (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 , + pipe_userclk1_in, + mim_rx_wen, + mim_rx_ren, + MIMRXWADDR, + MIMRXRADDR, + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 ); + output [4:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + input pipe_userclk1_in; + input mim_rx_wen; + input mim_rx_ren; + input [11:0]MIMRXWADDR; + input [11:0]MIMRXRADDR; + input [4:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 ; + + wire [11:0]MIMRXRADDR; + wire [11:0]MIMRXWADDR; + wire [4:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + wire [4:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_60 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_61 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_62 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_75 ; + wire mim_rx_ren; + wire mim_rx_wen; + wire pipe_userclk1_in; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED ; + wire [7:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED ; + wire [8:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED ; + + (* BOX_TYPE = "PRIMITIVE" *) + RAMB36E1 #( + .DOA_REG(0), + .DOB_REG(1), + .EN_ECC_READ("FALSE"), + .EN_ECC_WRITE("FALSE"), + .INITP_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_10(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_11(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_12(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_13(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_14(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_15(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_16(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_17(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_18(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_19(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_20(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_21(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_22(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_23(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_24(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_25(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_26(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_27(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_28(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_29(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_30(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_31(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_32(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_33(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_34(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_35(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_36(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_37(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_38(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_39(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_40(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_41(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_42(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_43(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_44(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_45(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_46(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_47(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_48(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_49(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_50(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_51(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_52(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_53(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_54(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_55(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_56(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_57(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_58(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_59(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_60(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_61(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_62(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_63(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_64(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_65(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_66(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_67(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_68(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_69(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_70(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_71(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_72(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_73(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_74(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_75(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_76(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_77(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_78(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_79(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_A(36'h000000000), + .INIT_B(36'h000000000), + .INIT_FILE("NONE"), + .IS_CLKARDCLK_INVERTED(1'b0), + .IS_CLKBWRCLK_INVERTED(1'b0), + .IS_ENARDEN_INVERTED(1'b0), + .IS_ENBWREN_INVERTED(1'b0), + .IS_RSTRAMARSTRAM_INVERTED(1'b0), + .IS_RSTRAMB_INVERTED(1'b0), + .IS_RSTREGARSTREG_INVERTED(1'b0), + .IS_RSTREGB_INVERTED(1'b0), + .RAM_EXTENSION_A("NONE"), + .RAM_EXTENSION_B("NONE"), + .RAM_MODE("TDP"), + .RDADDR_COLLISION_HWCONFIG("DELAYED_WRITE"), + .READ_WIDTH_A(9), + .READ_WIDTH_B(9), + .RSTREG_PRIORITY_A("RSTREG"), + .RSTREG_PRIORITY_B("RSTREG"), + .SIM_COLLISION_CHECK("ALL"), + .SIM_DEVICE("7SERIES"), + .SRVAL_A(36'h000000000), + .SRVAL_B(36'h000000000), + .WRITE_MODE_A("NO_CHANGE"), + .WRITE_MODE_B("WRITE_FIRST"), + .WRITE_WIDTH_A(9), + .WRITE_WIDTH_B(9)) + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl + (.ADDRARDADDR({1'b1,MIMRXWADDR,1'b1,1'b1,1'b1}), + .ADDRBWRADDR({1'b1,MIMRXRADDR,1'b1,1'b1,1'b1}), + .CASCADEINA(1'b0), + .CASCADEINB(1'b0), + .CASCADEOUTA(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ), + .CASCADEOUTB(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ), + .CLKARDCLK(pipe_userclk1_in), + .CLKBWRCLK(pipe_userclk1_in), + .DBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ), + .DIADI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED [31:8],1'b0,1'b0,1'b0,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 }), + .DIBDI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED [31:8],1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .DIPADIP({1'b0,1'b0,1'b0,1'b0}), + .DIPBDIP({1'b0,1'b0,1'b0,1'b0}), + .DOADO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 }), + .DOBDO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_60 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_61 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_62 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 }), + .DOPADOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 }), + .DOPBDOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_75 }), + .ECCPARITY(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED [7:0]), + .ENARDEN(mim_rx_wen), + .ENBWREN(mim_rx_ren), + .INJECTDBITERR(1'b0), + .INJECTSBITERR(1'b0), + .RDADDRECC(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED [8:0]), + .REGCEAREGCE(1'b0), + .REGCEB(1'b1), + .RSTRAMARSTRAM(1'b0), + .RSTRAMB(1'b0), + .RSTREGARSTREG(1'b0), + .RSTREGB(1'b0), + .SBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ), + .WEA({1'b1,1'b1,1'b1,1'b1}), + .WEBWE({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0})); +endmodule + +(* ORIG_REF_NAME = "BRAM_TDP_MACRO" *) +module pcie_7x_0_BRAM_TDP_MACRO_27 + (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 , + pipe_userclk1_in, + mim_rx_wen, + mim_rx_ren, + MIMRXWADDR, + MIMRXRADDR, + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 ); + output [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + input pipe_userclk1_in; + input mim_rx_wen; + input mim_rx_ren; + input [11:0]MIMRXWADDR; + input [11:0]MIMRXRADDR; + input [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 ; + + wire [11:0]MIMRXRADDR; + wire [11:0]MIMRXWADDR; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 ; + wire mim_rx_ren; + wire mim_rx_wen; + wire pipe_userclk1_in; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED ; + wire [7:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED ; + wire [8:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED ; + + (* BOX_TYPE = "PRIMITIVE" *) + RAMB36E1 #( + .DOA_REG(0), + .DOB_REG(1), + .EN_ECC_READ("FALSE"), + .EN_ECC_WRITE("FALSE"), + .INITP_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_10(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_11(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_12(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_13(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_14(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_15(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_16(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_17(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_18(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_19(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_20(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_21(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_22(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_23(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_24(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_25(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_26(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_27(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_28(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_29(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_30(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_31(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_32(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_33(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_34(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_35(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_36(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_37(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_38(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_39(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_40(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_41(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_42(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_43(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_44(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_45(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_46(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_47(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_48(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_49(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_50(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_51(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_52(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_53(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_54(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_55(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_56(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_57(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_58(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_59(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_60(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_61(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_62(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_63(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_64(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_65(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_66(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_67(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_68(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_69(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_70(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_71(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_72(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_73(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_74(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_75(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_76(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_77(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_78(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_79(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_A(36'h000000000), + .INIT_B(36'h000000000), + .INIT_FILE("NONE"), + .IS_CLKARDCLK_INVERTED(1'b0), + .IS_CLKBWRCLK_INVERTED(1'b0), + .IS_ENARDEN_INVERTED(1'b0), + .IS_ENBWREN_INVERTED(1'b0), + .IS_RSTRAMARSTRAM_INVERTED(1'b0), + .IS_RSTRAMB_INVERTED(1'b0), + .IS_RSTREGARSTREG_INVERTED(1'b0), + .IS_RSTREGB_INVERTED(1'b0), + .RAM_EXTENSION_A("NONE"), + .RAM_EXTENSION_B("NONE"), + .RAM_MODE("TDP"), + .RDADDR_COLLISION_HWCONFIG("DELAYED_WRITE"), + .READ_WIDTH_A(9), + .READ_WIDTH_B(9), + .RSTREG_PRIORITY_A("RSTREG"), + .RSTREG_PRIORITY_B("RSTREG"), + .SIM_COLLISION_CHECK("ALL"), + .SIM_DEVICE("7SERIES"), + .SRVAL_A(36'h000000000), + .SRVAL_B(36'h000000000), + .WRITE_MODE_A("NO_CHANGE"), + .WRITE_MODE_B("WRITE_FIRST"), + .WRITE_WIDTH_A(9), + .WRITE_WIDTH_B(9)) + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl + (.ADDRARDADDR({1'b1,MIMRXWADDR,1'b1,1'b1,1'b1}), + .ADDRBWRADDR({1'b1,MIMRXRADDR,1'b1,1'b1,1'b1}), + .CASCADEINA(1'b0), + .CASCADEINB(1'b0), + .CASCADEOUTA(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ), + .CASCADEOUTB(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ), + .CLKARDCLK(pipe_userclk1_in), + .CLKBWRCLK(pipe_userclk1_in), + .DBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ), + .DIADI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 [7:0]}), + .DIBDI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED [31:8],1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .DIPADIP({1'b0,1'b0,1'b0,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 [8]}), + .DIPBDIP({1'b0,1'b0,1'b0,1'b0}), + .DOADO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 }), + .DOBDO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 [7:0]}), + .DOPADOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 }), + .DOPBDOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 [8]}), + .ECCPARITY(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED [7:0]), + .ENARDEN(mim_rx_wen), + .ENBWREN(mim_rx_ren), + .INJECTDBITERR(1'b0), + .INJECTSBITERR(1'b0), + .RDADDRECC(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED [8:0]), + .REGCEAREGCE(1'b0), + .REGCEB(1'b1), + .RSTRAMARSTRAM(1'b0), + .RSTRAMB(1'b0), + .RSTREGARSTREG(1'b0), + .RSTREGB(1'b0), + .SBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ), + .WEA({1'b1,1'b1,1'b1,1'b1}), + .WEBWE({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0})); +endmodule + +(* ORIG_REF_NAME = "BRAM_TDP_MACRO" *) +module pcie_7x_0_BRAM_TDP_MACRO_28 + (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 , + pipe_userclk1_in, + mim_rx_wen, + mim_rx_ren, + MIMRXWADDR, + MIMRXRADDR, + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 ); + output [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + input pipe_userclk1_in; + input mim_rx_wen; + input mim_rx_ren; + input [11:0]MIMRXWADDR; + input [11:0]MIMRXRADDR; + input [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 ; + + wire [11:0]MIMRXRADDR; + wire [11:0]MIMRXWADDR; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 ; + wire mim_rx_ren; + wire mim_rx_wen; + wire pipe_userclk1_in; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED ; + wire [7:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED ; + wire [8:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED ; + + (* BOX_TYPE = "PRIMITIVE" *) + RAMB36E1 #( + .DOA_REG(0), + .DOB_REG(1), + .EN_ECC_READ("FALSE"), + .EN_ECC_WRITE("FALSE"), + .INITP_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_10(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_11(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_12(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_13(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_14(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_15(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_16(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_17(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_18(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_19(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_20(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_21(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_22(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_23(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_24(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_25(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_26(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_27(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_28(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_29(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_30(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_31(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_32(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_33(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_34(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_35(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_36(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_37(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_38(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_39(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_40(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_41(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_42(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_43(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_44(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_45(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_46(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_47(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_48(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_49(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_50(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_51(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_52(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_53(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_54(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_55(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_56(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_57(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_58(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_59(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_60(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_61(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_62(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_63(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_64(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_65(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_66(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_67(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_68(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_69(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_70(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_71(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_72(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_73(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_74(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_75(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_76(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_77(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_78(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_79(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_A(36'h000000000), + .INIT_B(36'h000000000), + .INIT_FILE("NONE"), + .IS_CLKARDCLK_INVERTED(1'b0), + .IS_CLKBWRCLK_INVERTED(1'b0), + .IS_ENARDEN_INVERTED(1'b0), + .IS_ENBWREN_INVERTED(1'b0), + .IS_RSTRAMARSTRAM_INVERTED(1'b0), + .IS_RSTRAMB_INVERTED(1'b0), + .IS_RSTREGARSTREG_INVERTED(1'b0), + .IS_RSTREGB_INVERTED(1'b0), + .RAM_EXTENSION_A("NONE"), + .RAM_EXTENSION_B("NONE"), + .RAM_MODE("TDP"), + .RDADDR_COLLISION_HWCONFIG("DELAYED_WRITE"), + .READ_WIDTH_A(9), + .READ_WIDTH_B(9), + .RSTREG_PRIORITY_A("RSTREG"), + .RSTREG_PRIORITY_B("RSTREG"), + .SIM_COLLISION_CHECK("ALL"), + .SIM_DEVICE("7SERIES"), + .SRVAL_A(36'h000000000), + .SRVAL_B(36'h000000000), + .WRITE_MODE_A("NO_CHANGE"), + .WRITE_MODE_B("WRITE_FIRST"), + .WRITE_WIDTH_A(9), + .WRITE_WIDTH_B(9)) + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl + (.ADDRARDADDR({1'b1,MIMRXWADDR,1'b1,1'b1,1'b1}), + .ADDRBWRADDR({1'b1,MIMRXRADDR,1'b1,1'b1,1'b1}), + .CASCADEINA(1'b0), + .CASCADEINB(1'b0), + .CASCADEOUTA(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ), + .CASCADEOUTB(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ), + .CLKARDCLK(pipe_userclk1_in), + .CLKBWRCLK(pipe_userclk1_in), + .DBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ), + .DIADI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 [7:0]}), + .DIBDI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED [31:8],1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .DIPADIP({1'b0,1'b0,1'b0,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 [8]}), + .DIPBDIP({1'b0,1'b0,1'b0,1'b0}), + .DOADO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 }), + .DOBDO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 [7:0]}), + .DOPADOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 }), + .DOPBDOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 [8]}), + .ECCPARITY(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED [7:0]), + .ENARDEN(mim_rx_wen), + .ENBWREN(mim_rx_ren), + .INJECTDBITERR(1'b0), + .INJECTSBITERR(1'b0), + .RDADDRECC(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED [8:0]), + .REGCEAREGCE(1'b0), + .REGCEB(1'b1), + .RSTRAMARSTRAM(1'b0), + .RSTRAMB(1'b0), + .RSTREGARSTREG(1'b0), + .RSTREGB(1'b0), + .SBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ), + .WEA({1'b1,1'b1,1'b1,1'b1}), + .WEBWE({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0})); +endmodule + +(* ORIG_REF_NAME = "BRAM_TDP_MACRO" *) +module pcie_7x_0_BRAM_TDP_MACRO_29 + (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 , + pipe_userclk1_in, + mim_rx_wen, + mim_rx_ren, + MIMRXWADDR, + MIMRXRADDR, + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 ); + output [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + input pipe_userclk1_in; + input mim_rx_wen; + input mim_rx_ren; + input [11:0]MIMRXWADDR; + input [11:0]MIMRXRADDR; + input [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 ; + + wire [11:0]MIMRXRADDR; + wire [11:0]MIMRXWADDR; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 ; + wire mim_rx_ren; + wire mim_rx_wen; + wire pipe_userclk1_in; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED ; + wire [7:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED ; + wire [8:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED ; + + (* BOX_TYPE = "PRIMITIVE" *) + RAMB36E1 #( + .DOA_REG(0), + .DOB_REG(1), + .EN_ECC_READ("FALSE"), + .EN_ECC_WRITE("FALSE"), + .INITP_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_10(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_11(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_12(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_13(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_14(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_15(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_16(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_17(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_18(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_19(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_20(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_21(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_22(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_23(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_24(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_25(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_26(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_27(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_28(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_29(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_30(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_31(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_32(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_33(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_34(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_35(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_36(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_37(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_38(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_39(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_40(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_41(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_42(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_43(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_44(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_45(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_46(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_47(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_48(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_49(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_50(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_51(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_52(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_53(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_54(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_55(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_56(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_57(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_58(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_59(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_60(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_61(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_62(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_63(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_64(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_65(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_66(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_67(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_68(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_69(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_70(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_71(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_72(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_73(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_74(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_75(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_76(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_77(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_78(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_79(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_A(36'h000000000), + .INIT_B(36'h000000000), + .INIT_FILE("NONE"), + .IS_CLKARDCLK_INVERTED(1'b0), + .IS_CLKBWRCLK_INVERTED(1'b0), + .IS_ENARDEN_INVERTED(1'b0), + .IS_ENBWREN_INVERTED(1'b0), + .IS_RSTRAMARSTRAM_INVERTED(1'b0), + .IS_RSTRAMB_INVERTED(1'b0), + .IS_RSTREGARSTREG_INVERTED(1'b0), + .IS_RSTREGB_INVERTED(1'b0), + .RAM_EXTENSION_A("NONE"), + .RAM_EXTENSION_B("NONE"), + .RAM_MODE("TDP"), + .RDADDR_COLLISION_HWCONFIG("DELAYED_WRITE"), + .READ_WIDTH_A(9), + .READ_WIDTH_B(9), + .RSTREG_PRIORITY_A("RSTREG"), + .RSTREG_PRIORITY_B("RSTREG"), + .SIM_COLLISION_CHECK("ALL"), + .SIM_DEVICE("7SERIES"), + .SRVAL_A(36'h000000000), + .SRVAL_B(36'h000000000), + .WRITE_MODE_A("NO_CHANGE"), + .WRITE_MODE_B("WRITE_FIRST"), + .WRITE_WIDTH_A(9), + .WRITE_WIDTH_B(9)) + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl + (.ADDRARDADDR({1'b1,MIMRXWADDR,1'b1,1'b1,1'b1}), + .ADDRBWRADDR({1'b1,MIMRXRADDR,1'b1,1'b1,1'b1}), + .CASCADEINA(1'b0), + .CASCADEINB(1'b0), + .CASCADEOUTA(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ), + .CASCADEOUTB(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ), + .CLKARDCLK(pipe_userclk1_in), + .CLKBWRCLK(pipe_userclk1_in), + .DBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ), + .DIADI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 [7:0]}), + .DIBDI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED [31:8],1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .DIPADIP({1'b0,1'b0,1'b0,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 [8]}), + .DIPBDIP({1'b0,1'b0,1'b0,1'b0}), + .DOADO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 }), + .DOBDO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 [7:0]}), + .DOPADOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 }), + .DOPBDOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 [8]}), + .ECCPARITY(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED [7:0]), + .ENARDEN(mim_rx_wen), + .ENBWREN(mim_rx_ren), + .INJECTDBITERR(1'b0), + .INJECTSBITERR(1'b0), + .RDADDRECC(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED [8:0]), + .REGCEAREGCE(1'b0), + .REGCEB(1'b1), + .RSTRAMARSTRAM(1'b0), + .RSTRAMB(1'b0), + .RSTREGARSTREG(1'b0), + .RSTREGB(1'b0), + .SBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ), + .WEA({1'b1,1'b1,1'b1,1'b1}), + .WEBWE({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0})); +endmodule + +(* ORIG_REF_NAME = "BRAM_TDP_MACRO" *) +module pcie_7x_0_BRAM_TDP_MACRO_30 + (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 , + pipe_userclk1_in, + mim_rx_wen, + mim_rx_ren, + MIMRXWADDR, + MIMRXRADDR, + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 ); + output [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + input pipe_userclk1_in; + input mim_rx_wen; + input mim_rx_ren; + input [11:0]MIMRXWADDR; + input [11:0]MIMRXRADDR; + input [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 ; + + wire [11:0]MIMRXRADDR; + wire [11:0]MIMRXWADDR; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 ; + wire mim_rx_ren; + wire mim_rx_wen; + wire pipe_userclk1_in; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED ; + wire [7:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED ; + wire [8:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED ; + + (* BOX_TYPE = "PRIMITIVE" *) + RAMB36E1 #( + .DOA_REG(0), + .DOB_REG(1), + .EN_ECC_READ("FALSE"), + .EN_ECC_WRITE("FALSE"), + .INITP_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_10(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_11(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_12(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_13(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_14(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_15(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_16(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_17(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_18(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_19(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_20(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_21(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_22(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_23(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_24(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_25(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_26(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_27(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_28(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_29(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_30(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_31(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_32(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_33(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_34(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_35(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_36(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_37(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_38(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_39(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_40(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_41(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_42(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_43(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_44(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_45(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_46(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_47(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_48(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_49(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_50(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_51(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_52(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_53(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_54(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_55(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_56(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_57(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_58(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_59(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_60(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_61(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_62(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_63(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_64(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_65(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_66(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_67(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_68(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_69(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_70(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_71(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_72(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_73(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_74(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_75(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_76(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_77(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_78(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_79(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_A(36'h000000000), + .INIT_B(36'h000000000), + .INIT_FILE("NONE"), + .IS_CLKARDCLK_INVERTED(1'b0), + .IS_CLKBWRCLK_INVERTED(1'b0), + .IS_ENARDEN_INVERTED(1'b0), + .IS_ENBWREN_INVERTED(1'b0), + .IS_RSTRAMARSTRAM_INVERTED(1'b0), + .IS_RSTRAMB_INVERTED(1'b0), + .IS_RSTREGARSTREG_INVERTED(1'b0), + .IS_RSTREGB_INVERTED(1'b0), + .RAM_EXTENSION_A("NONE"), + .RAM_EXTENSION_B("NONE"), + .RAM_MODE("TDP"), + .RDADDR_COLLISION_HWCONFIG("DELAYED_WRITE"), + .READ_WIDTH_A(9), + .READ_WIDTH_B(9), + .RSTREG_PRIORITY_A("RSTREG"), + .RSTREG_PRIORITY_B("RSTREG"), + .SIM_COLLISION_CHECK("ALL"), + .SIM_DEVICE("7SERIES"), + .SRVAL_A(36'h000000000), + .SRVAL_B(36'h000000000), + .WRITE_MODE_A("NO_CHANGE"), + .WRITE_MODE_B("WRITE_FIRST"), + .WRITE_WIDTH_A(9), + .WRITE_WIDTH_B(9)) + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl + (.ADDRARDADDR({1'b1,MIMRXWADDR,1'b1,1'b1,1'b1}), + .ADDRBWRADDR({1'b1,MIMRXRADDR,1'b1,1'b1,1'b1}), + .CASCADEINA(1'b0), + .CASCADEINB(1'b0), + .CASCADEOUTA(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ), + .CASCADEOUTB(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ), + .CLKARDCLK(pipe_userclk1_in), + .CLKBWRCLK(pipe_userclk1_in), + .DBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ), + .DIADI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 [7:0]}), + .DIBDI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED [31:8],1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .DIPADIP({1'b0,1'b0,1'b0,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 [8]}), + .DIPBDIP({1'b0,1'b0,1'b0,1'b0}), + .DOADO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 }), + .DOBDO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 [7:0]}), + .DOPADOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 }), + .DOPBDOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 [8]}), + .ECCPARITY(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED [7:0]), + .ENARDEN(mim_rx_wen), + .ENBWREN(mim_rx_ren), + .INJECTDBITERR(1'b0), + .INJECTSBITERR(1'b0), + .RDADDRECC(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED [8:0]), + .REGCEAREGCE(1'b0), + .REGCEB(1'b1), + .RSTRAMARSTRAM(1'b0), + .RSTRAMB(1'b0), + .RSTREGARSTREG(1'b0), + .RSTREGB(1'b0), + .SBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ), + .WEA({1'b1,1'b1,1'b1,1'b1}), + .WEBWE({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0})); +endmodule + +(* ORIG_REF_NAME = "BRAM_TDP_MACRO" *) +module pcie_7x_0_BRAM_TDP_MACRO_31 + (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 , + pipe_userclk1_in, + mim_rx_wen, + mim_rx_ren, + MIMRXWADDR, + MIMRXRADDR, + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 ); + output [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + input pipe_userclk1_in; + input mim_rx_wen; + input mim_rx_ren; + input [11:0]MIMRXWADDR; + input [11:0]MIMRXRADDR; + input [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 ; + + wire [11:0]MIMRXRADDR; + wire [11:0]MIMRXWADDR; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 ; + wire mim_rx_ren; + wire mim_rx_wen; + wire pipe_userclk1_in; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED ; + wire [7:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED ; + wire [8:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED ; + + (* BOX_TYPE = "PRIMITIVE" *) + RAMB36E1 #( + .DOA_REG(0), + .DOB_REG(1), + .EN_ECC_READ("FALSE"), + .EN_ECC_WRITE("FALSE"), + .INITP_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_10(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_11(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_12(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_13(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_14(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_15(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_16(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_17(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_18(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_19(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_20(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_21(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_22(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_23(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_24(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_25(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_26(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_27(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_28(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_29(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_30(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_31(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_32(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_33(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_34(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_35(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_36(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_37(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_38(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_39(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_40(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_41(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_42(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_43(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_44(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_45(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_46(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_47(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_48(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_49(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_50(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_51(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_52(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_53(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_54(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_55(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_56(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_57(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_58(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_59(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_60(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_61(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_62(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_63(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_64(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_65(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_66(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_67(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_68(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_69(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_70(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_71(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_72(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_73(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_74(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_75(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_76(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_77(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_78(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_79(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_A(36'h000000000), + .INIT_B(36'h000000000), + .INIT_FILE("NONE"), + .IS_CLKARDCLK_INVERTED(1'b0), + .IS_CLKBWRCLK_INVERTED(1'b0), + .IS_ENARDEN_INVERTED(1'b0), + .IS_ENBWREN_INVERTED(1'b0), + .IS_RSTRAMARSTRAM_INVERTED(1'b0), + .IS_RSTRAMB_INVERTED(1'b0), + .IS_RSTREGARSTREG_INVERTED(1'b0), + .IS_RSTREGB_INVERTED(1'b0), + .RAM_EXTENSION_A("NONE"), + .RAM_EXTENSION_B("NONE"), + .RAM_MODE("TDP"), + .RDADDR_COLLISION_HWCONFIG("DELAYED_WRITE"), + .READ_WIDTH_A(9), + .READ_WIDTH_B(9), + .RSTREG_PRIORITY_A("RSTREG"), + .RSTREG_PRIORITY_B("RSTREG"), + .SIM_COLLISION_CHECK("ALL"), + .SIM_DEVICE("7SERIES"), + .SRVAL_A(36'h000000000), + .SRVAL_B(36'h000000000), + .WRITE_MODE_A("NO_CHANGE"), + .WRITE_MODE_B("WRITE_FIRST"), + .WRITE_WIDTH_A(9), + .WRITE_WIDTH_B(9)) + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl + (.ADDRARDADDR({1'b1,MIMRXWADDR,1'b1,1'b1,1'b1}), + .ADDRBWRADDR({1'b1,MIMRXRADDR,1'b1,1'b1,1'b1}), + .CASCADEINA(1'b0), + .CASCADEINB(1'b0), + .CASCADEOUTA(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ), + .CASCADEOUTB(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ), + .CLKARDCLK(pipe_userclk1_in), + .CLKBWRCLK(pipe_userclk1_in), + .DBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ), + .DIADI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 [7:0]}), + .DIBDI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED [31:8],1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .DIPADIP({1'b0,1'b0,1'b0,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 [8]}), + .DIPBDIP({1'b0,1'b0,1'b0,1'b0}), + .DOADO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 }), + .DOBDO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 [7:0]}), + .DOPADOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 }), + .DOPBDOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 [8]}), + .ECCPARITY(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED [7:0]), + .ENARDEN(mim_rx_wen), + .ENBWREN(mim_rx_ren), + .INJECTDBITERR(1'b0), + .INJECTSBITERR(1'b0), + .RDADDRECC(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED [8:0]), + .REGCEAREGCE(1'b0), + .REGCEB(1'b1), + .RSTRAMARSTRAM(1'b0), + .RSTRAMB(1'b0), + .RSTREGARSTREG(1'b0), + .RSTREGB(1'b0), + .SBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ), + .WEA({1'b1,1'b1,1'b1,1'b1}), + .WEBWE({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0})); +endmodule + +(* ORIG_REF_NAME = "BRAM_TDP_MACRO" *) +module pcie_7x_0_BRAM_TDP_MACRO_32 + (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 , + pipe_userclk1_in, + mim_rx_wen, + mim_rx_ren, + MIMRXWADDR, + MIMRXRADDR, + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 ); + output [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + input pipe_userclk1_in; + input mim_rx_wen; + input mim_rx_ren; + input [11:0]MIMRXWADDR; + input [11:0]MIMRXRADDR; + input [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 ; + + wire [11:0]MIMRXRADDR; + wire [11:0]MIMRXWADDR; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 ; + wire mim_rx_ren; + wire mim_rx_wen; + wire pipe_userclk1_in; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED ; + wire [7:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED ; + wire [8:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED ; + + (* BOX_TYPE = "PRIMITIVE" *) + RAMB36E1 #( + .DOA_REG(0), + .DOB_REG(1), + .EN_ECC_READ("FALSE"), + .EN_ECC_WRITE("FALSE"), + .INITP_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_10(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_11(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_12(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_13(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_14(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_15(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_16(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_17(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_18(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_19(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_20(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_21(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_22(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_23(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_24(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_25(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_26(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_27(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_28(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_29(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_30(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_31(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_32(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_33(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_34(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_35(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_36(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_37(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_38(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_39(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_40(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_41(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_42(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_43(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_44(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_45(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_46(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_47(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_48(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_49(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_50(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_51(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_52(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_53(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_54(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_55(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_56(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_57(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_58(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_59(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_60(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_61(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_62(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_63(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_64(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_65(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_66(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_67(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_68(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_69(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_70(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_71(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_72(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_73(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_74(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_75(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_76(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_77(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_78(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_79(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_A(36'h000000000), + .INIT_B(36'h000000000), + .INIT_FILE("NONE"), + .IS_CLKARDCLK_INVERTED(1'b0), + .IS_CLKBWRCLK_INVERTED(1'b0), + .IS_ENARDEN_INVERTED(1'b0), + .IS_ENBWREN_INVERTED(1'b0), + .IS_RSTRAMARSTRAM_INVERTED(1'b0), + .IS_RSTRAMB_INVERTED(1'b0), + .IS_RSTREGARSTREG_INVERTED(1'b0), + .IS_RSTREGB_INVERTED(1'b0), + .RAM_EXTENSION_A("NONE"), + .RAM_EXTENSION_B("NONE"), + .RAM_MODE("TDP"), + .RDADDR_COLLISION_HWCONFIG("DELAYED_WRITE"), + .READ_WIDTH_A(9), + .READ_WIDTH_B(9), + .RSTREG_PRIORITY_A("RSTREG"), + .RSTREG_PRIORITY_B("RSTREG"), + .SIM_COLLISION_CHECK("ALL"), + .SIM_DEVICE("7SERIES"), + .SRVAL_A(36'h000000000), + .SRVAL_B(36'h000000000), + .WRITE_MODE_A("NO_CHANGE"), + .WRITE_MODE_B("WRITE_FIRST"), + .WRITE_WIDTH_A(9), + .WRITE_WIDTH_B(9)) + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl + (.ADDRARDADDR({1'b1,MIMRXWADDR,1'b1,1'b1,1'b1}), + .ADDRBWRADDR({1'b1,MIMRXRADDR,1'b1,1'b1,1'b1}), + .CASCADEINA(1'b0), + .CASCADEINB(1'b0), + .CASCADEOUTA(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ), + .CASCADEOUTB(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ), + .CLKARDCLK(pipe_userclk1_in), + .CLKBWRCLK(pipe_userclk1_in), + .DBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ), + .DIADI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 [7:0]}), + .DIBDI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED [31:8],1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .DIPADIP({1'b0,1'b0,1'b0,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 [8]}), + .DIPBDIP({1'b0,1'b0,1'b0,1'b0}), + .DOADO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 }), + .DOBDO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 [7:0]}), + .DOPADOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 }), + .DOPBDOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 [8]}), + .ECCPARITY(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED [7:0]), + .ENARDEN(mim_rx_wen), + .ENBWREN(mim_rx_ren), + .INJECTDBITERR(1'b0), + .INJECTSBITERR(1'b0), + .RDADDRECC(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED [8:0]), + .REGCEAREGCE(1'b0), + .REGCEB(1'b1), + .RSTRAMARSTRAM(1'b0), + .RSTRAMB(1'b0), + .RSTREGARSTREG(1'b0), + .RSTREGB(1'b0), + .SBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ), + .WEA({1'b1,1'b1,1'b1,1'b1}), + .WEBWE({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0})); +endmodule + +(* ORIG_REF_NAME = "BRAM_TDP_MACRO" *) +module pcie_7x_0_BRAM_TDP_MACRO_33 + (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 , + pipe_userclk1_in, + mim_rx_wen, + mim_rx_ren, + MIMRXWADDR, + MIMRXRADDR, + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 ); + output [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + input pipe_userclk1_in; + input mim_rx_wen; + input mim_rx_ren; + input [11:0]MIMRXWADDR; + input [11:0]MIMRXRADDR; + input [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 ; + + wire [11:0]MIMRXRADDR; + wire [11:0]MIMRXWADDR; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 ; + wire \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 ; + wire mim_rx_ren; + wire mim_rx_wen; + wire pipe_userclk1_in; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ; + wire \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED ; + wire [31:8]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED ; + wire [3:1]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED ; + wire [7:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED ; + wire [8:0]\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED ; + + (* BOX_TYPE = "PRIMITIVE" *) + RAMB36E1 #( + .DOA_REG(0), + .DOB_REG(1), + .EN_ECC_READ("FALSE"), + .EN_ECC_WRITE("FALSE"), + .INITP_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INITP_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_00(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_01(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_02(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_03(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_04(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_05(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_06(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_07(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_08(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_09(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_0F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_10(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_11(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_12(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_13(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_14(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_15(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_16(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_17(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_18(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_19(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_1F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_20(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_21(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_22(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_23(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_24(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_25(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_26(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_27(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_28(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_29(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_2F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_30(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_31(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_32(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_33(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_34(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_35(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_36(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_37(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_38(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_39(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_3F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_40(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_41(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_42(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_43(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_44(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_45(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_46(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_47(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_48(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_49(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_4F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_50(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_51(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_52(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_53(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_54(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_55(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_56(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_57(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_58(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_59(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_5F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_60(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_61(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_62(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_63(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_64(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_65(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_66(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_67(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_68(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_69(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_6F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_70(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_71(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_72(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_73(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_74(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_75(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_76(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_77(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_78(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_79(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7A(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7B(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7C(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7D(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7E(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_7F(256'h0000000000000000000000000000000000000000000000000000000000000000), + .INIT_A(36'h000000000), + .INIT_B(36'h000000000), + .INIT_FILE("NONE"), + .IS_CLKARDCLK_INVERTED(1'b0), + .IS_CLKBWRCLK_INVERTED(1'b0), + .IS_ENARDEN_INVERTED(1'b0), + .IS_ENBWREN_INVERTED(1'b0), + .IS_RSTRAMARSTRAM_INVERTED(1'b0), + .IS_RSTRAMB_INVERTED(1'b0), + .IS_RSTREGARSTREG_INVERTED(1'b0), + .IS_RSTREGB_INVERTED(1'b0), + .RAM_EXTENSION_A("NONE"), + .RAM_EXTENSION_B("NONE"), + .RAM_MODE("TDP"), + .RDADDR_COLLISION_HWCONFIG("DELAYED_WRITE"), + .READ_WIDTH_A(9), + .READ_WIDTH_B(9), + .RSTREG_PRIORITY_A("RSTREG"), + .RSTREG_PRIORITY_B("RSTREG"), + .SIM_COLLISION_CHECK("ALL"), + .SIM_DEVICE("7SERIES"), + .SRVAL_A(36'h000000000), + .SRVAL_B(36'h000000000), + .WRITE_MODE_A("NO_CHANGE"), + .WRITE_MODE_B("WRITE_FIRST"), + .WRITE_WIDTH_A(9), + .WRITE_WIDTH_B(9)) + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl + (.ADDRARDADDR({1'b1,MIMRXWADDR,1'b1,1'b1,1'b1}), + .ADDRBWRADDR({1'b1,MIMRXRADDR,1'b1,1'b1,1'b1}), + .CASCADEINA(1'b0), + .CASCADEINB(1'b0), + .CASCADEOUTA(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED ), + .CASCADEOUTB(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED ), + .CLKARDCLK(pipe_userclk1_in), + .CLKBWRCLK(pipe_userclk1_in), + .DBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED ), + .DIADI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 [7:0]}), + .DIBDI({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED [31:8],1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .DIPADIP({1'b0,1'b0,1'b0,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 [8]}), + .DIPBDIP({1'b0,1'b0,1'b0,1'b0}), + .DOADO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34 ,\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35 }), + .DOBDO({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED [31:8],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 [7:0]}), + .DOPADOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71 }), + .DOPBDOP({\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED [3:1],\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 [8]}), + .ECCPARITY(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED [7:0]), + .ENARDEN(mim_rx_wen), + .ENBWREN(mim_rx_ren), + .INJECTDBITERR(1'b0), + .INJECTSBITERR(1'b0), + .RDADDRECC(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED [8:0]), + .REGCEAREGCE(1'b0), + .REGCEB(1'b1), + .RSTRAMARSTRAM(1'b0), + .RSTRAMB(1'b0), + .RSTREGARSTREG(1'b0), + .RSTREGB(1'b0), + .SBITERR(\NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED ), + .WEA({1'b1,1'b1,1'b1,1'b1}), + .WEBWE({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0})); +endmodule + +(* CHECK_LICENSE_TYPE = "pcie_7x_0,pcie_7x_0_pcie2_top,{}" *) (* DowngradeIPIdentifiedWarnings = "yes" *) (* X_CORE_INFO = "pcie_7x_0_pcie2_top,Vivado 2020.2" *) +(* NotValidForBitStream *) +module pcie_7x_0 + (pci_exp_txp, + pci_exp_txn, + pci_exp_rxp, + pci_exp_rxn, + pipe_pclk_in, + pipe_rxusrclk_in, + pipe_rxoutclk_in, + pipe_dclk_in, + pipe_userclk1_in, + pipe_userclk2_in, + pipe_oobclk_in, + pipe_mmcm_lock_in, + pipe_txoutclk_out, + pipe_rxoutclk_out, + pipe_pclk_sel_out, + pipe_gen3_out, + user_clk_out, + user_reset_out, + user_lnk_up, + user_app_rdy, + tx_buf_av, + tx_cfg_req, + tx_err_drop, + s_axis_tx_tready, + s_axis_tx_tdata, + s_axis_tx_tkeep, + s_axis_tx_tlast, + s_axis_tx_tvalid, + s_axis_tx_tuser, + tx_cfg_gnt, + m_axis_rx_tdata, + m_axis_rx_tkeep, + m_axis_rx_tlast, + m_axis_rx_tvalid, + m_axis_rx_tready, + m_axis_rx_tuser, + rx_np_ok, + rx_np_req, + fc_cpld, + fc_cplh, + fc_npd, + fc_nph, + fc_pd, + fc_ph, + fc_sel, + cfg_mgmt_do, + cfg_mgmt_rd_wr_done, + cfg_status, + cfg_command, + cfg_dstatus, + cfg_dcommand, + cfg_lstatus, + cfg_lcommand, + cfg_dcommand2, + cfg_pcie_link_state, + cfg_pmcsr_pme_en, + cfg_pmcsr_powerstate, + cfg_pmcsr_pme_status, + cfg_received_func_lvl_rst, + cfg_mgmt_di, + cfg_mgmt_byte_en, + cfg_mgmt_dwaddr, + cfg_mgmt_wr_en, + cfg_mgmt_rd_en, + cfg_mgmt_wr_readonly, + cfg_err_ecrc, + cfg_err_ur, + cfg_err_cpl_timeout, + cfg_err_cpl_unexpect, + cfg_err_cpl_abort, + cfg_err_posted, + cfg_err_cor, + cfg_err_atomic_egress_blocked, + cfg_err_internal_cor, + cfg_err_malformed, + cfg_err_mc_blocked, + cfg_err_poisoned, + cfg_err_norecovery, + cfg_err_tlp_cpl_header, + cfg_err_cpl_rdy, + cfg_err_locked, + cfg_err_acs, + cfg_err_internal_uncor, + cfg_trn_pending, + cfg_pm_halt_aspm_l0s, + cfg_pm_halt_aspm_l1, + cfg_pm_force_state_en, + cfg_pm_force_state, + cfg_dsn, + cfg_interrupt, + cfg_interrupt_rdy, + cfg_interrupt_assert, + cfg_interrupt_di, + cfg_interrupt_do, + cfg_interrupt_mmenable, + cfg_interrupt_msienable, + cfg_interrupt_msixenable, + cfg_interrupt_msixfm, + cfg_interrupt_stat, + cfg_pciecap_interrupt_msgnum, + cfg_to_turnoff, + cfg_turnoff_ok, + cfg_bus_number, + cfg_device_number, + cfg_function_number, + cfg_pm_wake, + cfg_pm_send_pme_to, + cfg_ds_bus_number, + cfg_ds_device_number, + cfg_ds_function_number, + cfg_mgmt_wr_rw1c_as_rw, + cfg_msg_received, + cfg_msg_data, + cfg_bridge_serr_en, + cfg_slot_control_electromech_il_ctl_pulse, + cfg_root_control_syserr_corr_err_en, + cfg_root_control_syserr_non_fatal_err_en, + cfg_root_control_syserr_fatal_err_en, + cfg_root_control_pme_int_en, + cfg_aer_rooterr_corr_err_reporting_en, + cfg_aer_rooterr_non_fatal_err_reporting_en, + cfg_aer_rooterr_fatal_err_reporting_en, + cfg_aer_rooterr_corr_err_received, + cfg_aer_rooterr_non_fatal_err_received, + cfg_aer_rooterr_fatal_err_received, + cfg_msg_received_err_cor, + cfg_msg_received_err_non_fatal, + cfg_msg_received_err_fatal, + cfg_msg_received_pm_as_nak, + cfg_msg_received_pm_pme, + cfg_msg_received_pme_to_ack, + cfg_msg_received_assert_int_a, + cfg_msg_received_assert_int_b, + cfg_msg_received_assert_int_c, + cfg_msg_received_assert_int_d, + cfg_msg_received_deassert_int_a, + cfg_msg_received_deassert_int_b, + cfg_msg_received_deassert_int_c, + cfg_msg_received_deassert_int_d, + cfg_msg_received_setslotpowerlimit, + pl_directed_link_change, + pl_directed_link_width, + pl_directed_link_speed, + pl_directed_link_auton, + pl_upstream_prefer_deemph, + pl_sel_lnk_rate, + pl_sel_lnk_width, + pl_ltssm_state, + pl_lane_reversal_mode, + pl_phy_lnk_up, + pl_tx_pm_state, + pl_rx_pm_state, + pl_link_upcfg_cap, + pl_link_gen2_cap, + pl_link_partner_gen2_supported, + pl_initial_link_width, + pl_directed_change_done, + pl_received_hot_rst, + pl_transmit_hot_rst, + pl_downstream_deemph_source, + cfg_err_aer_headerlog, + cfg_aer_interrupt_msgnum, + cfg_err_aer_headerlog_set, + cfg_aer_ecrc_check_en, + cfg_aer_ecrc_gen_en, + cfg_vc_tcvc_map, + sys_clk, + sys_rst_n, + pipe_mmcm_rst_n, + pcie_drp_clk, + pcie_drp_en, + pcie_drp_we, + pcie_drp_addr, + pcie_drp_di, + pcie_drp_do, + pcie_drp_rdy); + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie_7x_mgt:1.0 pcie_7x_mgt txp" *) output [3:0]pci_exp_txp; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie_7x_mgt:1.0 pcie_7x_mgt txn" *) output [3:0]pci_exp_txn; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie_7x_mgt:1.0 pcie_7x_mgt rxp" *) input [3:0]pci_exp_rxp; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie_7x_mgt:1.0 pcie_7x_mgt rxn" *) input [3:0]pci_exp_rxn; + (* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock pclk_in" *) input pipe_pclk_in; + (* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock rxusrclk_in" *) input pipe_rxusrclk_in; + (* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock rxoutclk_in" *) input [3:0]pipe_rxoutclk_in; + (* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock dclk_in" *) input pipe_dclk_in; + (* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock userclk1_in" *) input pipe_userclk1_in; + (* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock userclk2_in" *) input pipe_userclk2_in; + (* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock oobclk_in" *) input pipe_oobclk_in; + (* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock mmcm_lock_in" *) input pipe_mmcm_lock_in; + (* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock txoutclk_out" *) output pipe_txoutclk_out; + (* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock rxoutclk_out" *) output [3:0]pipe_rxoutclk_out; + (* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock pclk_sel_out" *) output [3:0]pipe_pclk_sel_out; + (* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock gen3_out" *) output pipe_gen3_out; + (* X_INTERFACE_INFO = "xilinx.com:signal:clock:1.0 CLK.user_clk_out CLK" *) (* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME CLK.user_clk_out, ASSOCIATED_BUSIF m_axis_rx:s_axis_tx, FREQ_HZ 125000000, ASSOCIATED_RESET user_reset_out, FREQ_TOLERANCE_HZ 0, PHASE 0.000, INSERT_VIP 0" *) output user_clk_out; + (* X_INTERFACE_INFO = "xilinx.com:signal:reset:1.0 RST.user_reset_out RST" *) (* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME RST.user_reset_out, POLARITY ACTIVE_HIGH, INSERT_VIP 0" *) output user_reset_out; + output user_lnk_up; + output user_app_rdy; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status tx_buf_av" *) output [5:0]tx_buf_av; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status tx_cfg_req" *) output tx_cfg_req; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status tx_err_drop" *) output tx_err_drop; + (* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 s_axis_tx TREADY" *) output s_axis_tx_tready; + (* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 s_axis_tx TDATA" *) input [63:0]s_axis_tx_tdata; + (* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 s_axis_tx TKEEP" *) input [7:0]s_axis_tx_tkeep; + (* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 s_axis_tx TLAST" *) input s_axis_tx_tlast; + (* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 s_axis_tx TVALID" *) input s_axis_tx_tvalid; + (* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 s_axis_tx TUSER" *) (* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME s_axis_tx, TDATA_NUM_BYTES 8, TDEST_WIDTH 0, TID_WIDTH 0, TUSER_WIDTH 4, HAS_TREADY 1, HAS_TSTRB 0, HAS_TKEEP 1, HAS_TLAST 1, FREQ_HZ 100000000, PHASE 0.000, LAYERED_METADATA undef, INSERT_VIP 0" *) input [3:0]s_axis_tx_tuser; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control tx_cfg_gnt" *) input tx_cfg_gnt; + (* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 m_axis_rx TDATA" *) output [63:0]m_axis_rx_tdata; + (* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 m_axis_rx TKEEP" *) output [7:0]m_axis_rx_tkeep; + (* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 m_axis_rx TLAST" *) output m_axis_rx_tlast; + (* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 m_axis_rx TVALID" *) output m_axis_rx_tvalid; + (* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 m_axis_rx TREADY" *) input m_axis_rx_tready; + (* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 m_axis_rx TUSER" *) (* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME m_axis_rx, TDATA_NUM_BYTES 8, TDEST_WIDTH 0, TID_WIDTH 0, TUSER_WIDTH 22, HAS_TREADY 1, HAS_TSTRB 0, HAS_TKEEP 1, HAS_TLAST 1, FREQ_HZ 100000000, PHASE 0.000, LAYERED_METADATA undef, INSERT_VIP 0" *) output [21:0]m_axis_rx_tuser; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control rx_np_ok" *) input rx_np_ok; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control rx_np_req" *) input rx_np_req; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc CPLD" *) output [11:0]fc_cpld; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc CPLH" *) output [7:0]fc_cplh; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc NPD" *) output [11:0]fc_npd; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc NPH" *) output [7:0]fc_nph; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc PD" *) output [11:0]fc_pd; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc PH" *) output [7:0]fc_ph; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc SEL" *) input [2:0]fc_sel; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt READ_DATA" *) output [31:0]cfg_mgmt_do; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt READ_WRITE_DONE" *) output cfg_mgmt_rd_wr_done; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status status" *) output [15:0]cfg_status; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status command" *) output [15:0]cfg_command; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status dstatus" *) output [15:0]cfg_dstatus; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status dcommand" *) output [15:0]cfg_dcommand; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status lstatus" *) output [15:0]cfg_lstatus; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status lcommand" *) output [15:0]cfg_lcommand; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status dcommand2" *) output [15:0]cfg_dcommand2; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status pcie_link_state" *) output [2:0]cfg_pcie_link_state; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status pmcsr_pme_en" *) output cfg_pmcsr_pme_en; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status pmcsr_powerstate" *) output [1:0]cfg_pmcsr_powerstate; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status pmcsr_pme_status" *) output cfg_pmcsr_pme_status; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status received_func_lvl_rst" *) output cfg_received_func_lvl_rst; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt WRITE_DATA" *) input [31:0]cfg_mgmt_di; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt BYTE_EN" *) input [3:0]cfg_mgmt_byte_en; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt ADDR" *) input [9:0]cfg_mgmt_dwaddr; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt WRITE_EN" *) input cfg_mgmt_wr_en; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt READ_EN" *) input cfg_mgmt_rd_en; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt READONLY" *) input cfg_mgmt_wr_readonly; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err ecrc" *) input cfg_err_ecrc; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err ur" *) input cfg_err_ur; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err cpl_timeout" *) input cfg_err_cpl_timeout; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err cpl_unexpect" *) input cfg_err_cpl_unexpect; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err cpl_abort" *) input cfg_err_cpl_abort; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err posted" *) input cfg_err_posted; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err cor" *) input cfg_err_cor; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err atomic_egress_blocked" *) input cfg_err_atomic_egress_blocked; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err internal_cor" *) input cfg_err_internal_cor; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err malformed" *) input cfg_err_malformed; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err mc_blocked" *) input cfg_err_mc_blocked; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err poisoned" *) input cfg_err_poisoned; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err norecovery" *) input cfg_err_norecovery; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err tlp_cpl_header" *) input [47:0]cfg_err_tlp_cpl_header; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err cpl_rdy" *) output cfg_err_cpl_rdy; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err locked" *) input cfg_err_locked; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err acs" *) input cfg_err_acs; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err internal_uncor" *) input cfg_err_internal_uncor; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control trn_pending" *) input cfg_trn_pending; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control pm_halt_aspm_l0s" *) input cfg_pm_halt_aspm_l0s; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control pm_halt_aspm_l1" *) input cfg_pm_halt_aspm_l1; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control pm_force_state_en" *) input cfg_pm_force_state_en; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control pm_force_state" *) input [1:0]cfg_pm_force_state; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control dsn" *) input [63:0]cfg_dsn; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt interrupt" *) input cfg_interrupt; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt rdy" *) output cfg_interrupt_rdy; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt assert" *) input cfg_interrupt_assert; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt write_data" *) input [7:0]cfg_interrupt_di; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt read_data" *) output [7:0]cfg_interrupt_do; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt mmenable" *) output [2:0]cfg_interrupt_mmenable; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt msienable" *) output cfg_interrupt_msienable; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt msixenable" *) output cfg_interrupt_msixenable; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt msixfm" *) output cfg_interrupt_msixfm; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt stat" *) input cfg_interrupt_stat; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt pciecap_interrupt_msgnum" *) input [4:0]cfg_pciecap_interrupt_msgnum; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status turnoff" *) output cfg_to_turnoff; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control turnoff_ok" *) input cfg_turnoff_ok; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status bus_number" *) output [7:0]cfg_bus_number; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status device_number" *) output [4:0]cfg_device_number; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status function_number" *) output [2:0]cfg_function_number; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control pm_wake" *) input cfg_pm_wake; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control pm_send_pme_to" *) input cfg_pm_send_pme_to; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control ds_bus_number" *) input [7:0]cfg_ds_bus_number; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control ds_device_number" *) input [4:0]cfg_ds_device_number; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control ds_function_number" *) input [2:0]cfg_ds_function_number; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt TYPE1_CFG_REG_ACCESS" *) input cfg_mgmt_wr_rw1c_as_rw; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd received" *) output cfg_msg_received; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd data" *) output [15:0]cfg_msg_data; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status bridge_serr_en" *) output cfg_bridge_serr_en; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status slot_control_electromech_il_ctl_pulse" *) output cfg_slot_control_electromech_il_ctl_pulse; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status root_control_syserr_corr_err_en" *) output cfg_root_control_syserr_corr_err_en; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status root_control_syserr_non_fatal_err_en" *) output cfg_root_control_syserr_non_fatal_err_en; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status root_control_syserr_fatal_err_en" *) output cfg_root_control_syserr_fatal_err_en; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status root_control_pme_int_en" *) output cfg_root_control_pme_int_en; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status aer_rooterr_corr_err_reporting_en" *) output cfg_aer_rooterr_corr_err_reporting_en; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status aer_rooterr_non_fatal_err_reporting_en" *) output cfg_aer_rooterr_non_fatal_err_reporting_en; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status aer_rooterr_fatal_err_reporting_en" *) output cfg_aer_rooterr_fatal_err_reporting_en; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status aer_rooterr_corr_err_received" *) output cfg_aer_rooterr_corr_err_received; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status aer_rooterr_non_fatal_err_received" *) output cfg_aer_rooterr_non_fatal_err_received; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status aer_rooterr_fatal_err_received" *) output cfg_aer_rooterr_fatal_err_received; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd err_cor" *) output cfg_msg_received_err_cor; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd err_non_fatal" *) output cfg_msg_received_err_non_fatal; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd err_fatal" *) output cfg_msg_received_err_fatal; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd received_pm_as_nak" *) output cfg_msg_received_pm_as_nak; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd pm_pme" *) output cfg_msg_received_pm_pme; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd pme_to_ack" *) output cfg_msg_received_pme_to_ack; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd assert_int_a" *) output cfg_msg_received_assert_int_a; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd assert_int_b" *) output cfg_msg_received_assert_int_b; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd assert_int_c" *) output cfg_msg_received_assert_int_c; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd assert_int_d" *) output cfg_msg_received_assert_int_d; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd deassert_int_a" *) output cfg_msg_received_deassert_int_a; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd deassert_int_b" *) output cfg_msg_received_deassert_int_b; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd deassert_int_c" *) output cfg_msg_received_deassert_int_c; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd deassert_int_d" *) output cfg_msg_received_deassert_int_d; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd received_setslotpowerlimit" *) output cfg_msg_received_setslotpowerlimit; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl directed_link_change" *) input [1:0]pl_directed_link_change; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl directed_link_width" *) input [1:0]pl_directed_link_width; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl directed_link_speed" *) input pl_directed_link_speed; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl directed_link_auton" *) input pl_directed_link_auton; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl upstream_prefer_deemph" *) input pl_upstream_prefer_deemph; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl sel_lnk_rate" *) output pl_sel_lnk_rate; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl sel_lnk_width" *) output [1:0]pl_sel_lnk_width; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl ltssm_state" *) output [5:0]pl_ltssm_state; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl lane_reversal_mode" *) output [1:0]pl_lane_reversal_mode; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl phy_lnk_up" *) output pl_phy_lnk_up; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl tx_pm_state" *) output [2:0]pl_tx_pm_state; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl rx_pm_state" *) output [1:0]pl_rx_pm_state; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl link_upcfg_cap" *) output pl_link_upcfg_cap; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl link_gen2_cap" *) output pl_link_gen2_cap; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl link_partner_gen2_supported" *) output pl_link_partner_gen2_supported; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl initial_link_width" *) output [2:0]pl_initial_link_width; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl directed_change_done" *) output pl_directed_change_done; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl received_hot_rst" *) output pl_received_hot_rst; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl transmit_hot_rst" *) input pl_transmit_hot_rst; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl downstream_deemph_source" *) input pl_downstream_deemph_source; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err err_aer_headerlog" *) input [127:0]cfg_err_aer_headerlog; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err aer_interrupt_msgnum" *) input [4:0]cfg_aer_interrupt_msgnum; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err err_aer_headerlog_set" *) output cfg_err_aer_headerlog_set; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err aer_ecrc_check_en" *) output cfg_aer_ecrc_check_en; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err aer_ecrc_gen_en" *) output cfg_aer_ecrc_gen_en; + (* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status vc_tcvc_map" *) output [6:0]cfg_vc_tcvc_map; + (* X_INTERFACE_INFO = "xilinx.com:signal:clock:1.0 CLK.sys_clk CLK" *) (* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME CLK.sys_clk, FREQ_HZ 100000000, FREQ_TOLERANCE_HZ 0, PHASE 0.000, INSERT_VIP 0" *) input sys_clk; + (* X_INTERFACE_INFO = "xilinx.com:signal:reset:1.0 RST.sys_rst_n RST" *) (* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME RST.sys_rst_n, POLARITY ACTIVE_LOW, INSERT_VIP 0" *) input sys_rst_n; + (* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock mmcm_rst_n" *) input pipe_mmcm_rst_n; + input pcie_drp_clk; + (* X_INTERFACE_INFO = "xilinx.com:interface:drp:1.0 drp DEN" *) input pcie_drp_en; + (* X_INTERFACE_INFO = "xilinx.com:interface:drp:1.0 drp DWE" *) input pcie_drp_we; + (* X_INTERFACE_INFO = "xilinx.com:interface:drp:1.0 drp DADDR" *) input [8:0]pcie_drp_addr; + (* X_INTERFACE_INFO = "xilinx.com:interface:drp:1.0 drp DI" *) input [15:0]pcie_drp_di; + (* X_INTERFACE_INFO = "xilinx.com:interface:drp:1.0 drp DO" *) output [15:0]pcie_drp_do; + (* X_INTERFACE_INFO = "xilinx.com:interface:drp:1.0 drp DRDY" *) output pcie_drp_rdy; + + wire \ ; + wire \ ; + wire cfg_aer_ecrc_check_en; + wire cfg_aer_ecrc_gen_en; + wire [4:0]cfg_aer_interrupt_msgnum; + wire cfg_aer_rooterr_corr_err_received; + wire cfg_aer_rooterr_corr_err_reporting_en; + wire cfg_aer_rooterr_fatal_err_received; + wire cfg_aer_rooterr_fatal_err_reporting_en; + wire cfg_aer_rooterr_non_fatal_err_received; + wire cfg_aer_rooterr_non_fatal_err_reporting_en; + wire cfg_bridge_serr_en; + wire [7:0]cfg_bus_number; + wire [10:0]\^cfg_command ; + wire [14:0]\^cfg_dcommand ; + wire [11:0]\^cfg_dcommand2 ; + wire [4:0]cfg_device_number; + wire [7:0]cfg_ds_bus_number; + wire [4:0]cfg_ds_device_number; + wire [2:0]cfg_ds_function_number; + wire [63:0]cfg_dsn; + wire [5:0]\^cfg_dstatus ; + wire [127:0]cfg_err_aer_headerlog; + wire cfg_err_aer_headerlog_set; + wire cfg_err_atomic_egress_blocked; + wire cfg_err_cor; + wire cfg_err_cpl_abort; + wire cfg_err_cpl_rdy; + wire cfg_err_cpl_timeout; + wire cfg_err_cpl_unexpect; + wire cfg_err_ecrc; + wire cfg_err_internal_cor; + wire cfg_err_internal_uncor; + wire cfg_err_locked; + wire cfg_err_malformed; + wire cfg_err_mc_blocked; + wire cfg_err_norecovery; + wire cfg_err_poisoned; + wire cfg_err_posted; + wire [47:0]cfg_err_tlp_cpl_header; + wire cfg_err_ur; + wire [2:0]cfg_function_number; + wire cfg_interrupt; + wire cfg_interrupt_assert; + wire [7:0]cfg_interrupt_di; + wire [7:0]cfg_interrupt_do; + wire [2:0]cfg_interrupt_mmenable; + wire cfg_interrupt_msienable; + wire cfg_interrupt_msixenable; + wire cfg_interrupt_msixfm; + wire cfg_interrupt_rdy; + wire cfg_interrupt_stat; + wire [11:0]\^cfg_lcommand ; + wire [15:0]\^cfg_lstatus ; + wire [3:0]cfg_mgmt_byte_en; + wire [31:0]cfg_mgmt_di; + wire [31:0]cfg_mgmt_do; + wire [9:0]cfg_mgmt_dwaddr; + wire cfg_mgmt_rd_en; + wire cfg_mgmt_rd_wr_done; + wire cfg_mgmt_wr_en; + wire cfg_mgmt_wr_readonly; + wire cfg_mgmt_wr_rw1c_as_rw; + wire [15:0]cfg_msg_data; + wire cfg_msg_received; + wire cfg_msg_received_assert_int_a; + wire cfg_msg_received_assert_int_b; + wire cfg_msg_received_assert_int_c; + wire cfg_msg_received_assert_int_d; + wire cfg_msg_received_deassert_int_a; + wire cfg_msg_received_deassert_int_b; + wire cfg_msg_received_deassert_int_c; + wire cfg_msg_received_deassert_int_d; + wire cfg_msg_received_err_cor; + wire cfg_msg_received_err_fatal; + wire cfg_msg_received_err_non_fatal; + wire cfg_msg_received_pm_as_nak; + wire cfg_msg_received_pm_pme; + wire cfg_msg_received_pme_to_ack; + wire cfg_msg_received_setslotpowerlimit; + wire [2:0]cfg_pcie_link_state; + wire [4:0]cfg_pciecap_interrupt_msgnum; + wire [1:0]cfg_pm_force_state; + wire cfg_pm_force_state_en; + wire cfg_pm_halt_aspm_l0s; + wire cfg_pm_halt_aspm_l1; + wire cfg_pm_wake; + wire cfg_pmcsr_pme_en; + wire cfg_pmcsr_pme_status; + wire [1:0]cfg_pmcsr_powerstate; + wire cfg_received_func_lvl_rst; + wire cfg_root_control_pme_int_en; + wire cfg_root_control_syserr_corr_err_en; + wire cfg_root_control_syserr_fatal_err_en; + wire cfg_root_control_syserr_non_fatal_err_en; + wire cfg_slot_control_electromech_il_ctl_pulse; + wire cfg_to_turnoff; + wire cfg_trn_pending; + wire cfg_turnoff_ok; + wire [6:0]cfg_vc_tcvc_map; + wire [11:0]fc_cpld; + wire [7:0]fc_cplh; + wire [11:0]fc_npd; + wire [7:0]fc_nph; + wire [11:0]fc_pd; + wire [7:0]fc_ph; + wire [2:0]fc_sel; + wire [63:0]m_axis_rx_tdata; + wire [7:4]\^m_axis_rx_tkeep ; + wire m_axis_rx_tlast; + wire m_axis_rx_tready; + wire [21:0]\^m_axis_rx_tuser ; + wire m_axis_rx_tvalid; + wire [3:0]pci_exp_rxn; + wire [3:0]pci_exp_rxp; + wire [3:0]pci_exp_txn; + wire [3:0]pci_exp_txp; + wire [8:0]pcie_drp_addr; + wire pcie_drp_clk; + wire [15:0]pcie_drp_di; + wire [15:0]pcie_drp_do; + wire pcie_drp_en; + wire pcie_drp_rdy; + wire pcie_drp_we; + wire pipe_dclk_in; + wire pipe_gen3_out; + wire pipe_mmcm_lock_in; + wire pipe_oobclk_in; + wire pipe_pclk_in; + wire [3:0]pipe_pclk_sel_out; + wire [3:0]pipe_rxoutclk_out; + wire pipe_rxusrclk_in; + wire pipe_txoutclk_out; + wire pipe_userclk1_in; + wire pipe_userclk2_in; + wire pl_directed_change_done; + wire pl_directed_link_auton; + wire [1:0]pl_directed_link_change; + wire pl_directed_link_speed; + wire [1:0]pl_directed_link_width; + wire pl_downstream_deemph_source; + wire [2:0]pl_initial_link_width; + wire [1:0]pl_lane_reversal_mode; + wire pl_link_gen2_cap; + wire pl_link_partner_gen2_supported; + wire pl_link_upcfg_cap; + wire [5:0]pl_ltssm_state; + wire pl_phy_lnk_up; + wire pl_received_hot_rst; + wire [1:0]pl_rx_pm_state; + wire pl_sel_lnk_rate; + wire [1:0]pl_sel_lnk_width; + wire pl_transmit_hot_rst; + wire [2:0]pl_tx_pm_state; + wire pl_upstream_prefer_deemph; + wire rx_np_ok; + wire rx_np_req; + wire [63:0]s_axis_tx_tdata; + wire [7:0]s_axis_tx_tkeep; + wire s_axis_tx_tlast; + wire s_axis_tx_tready; + wire [3:0]s_axis_tx_tuser; + wire s_axis_tx_tvalid; + wire sys_clk; + wire sys_rst_n; + wire [5:0]tx_buf_av; + wire tx_cfg_gnt; + wire tx_cfg_req; + wire tx_err_drop; + wire user_clk_out; + wire user_lnk_up; + wire user_reset_out; + wire NLW_inst_ext_ch_gt_drpclk_UNCONNECTED; + wire NLW_inst_int_dclk_out_UNCONNECTED; + wire NLW_inst_int_mmcm_lock_out_UNCONNECTED; + wire NLW_inst_int_oobclk_out_UNCONNECTED; + wire NLW_inst_int_pclk_out_slave_UNCONNECTED; + wire NLW_inst_int_pipe_rxusrclk_out_UNCONNECTED; + wire NLW_inst_int_userclk1_out_UNCONNECTED; + wire NLW_inst_int_userclk2_out_UNCONNECTED; + wire NLW_inst_pipe_qrst_idle_UNCONNECTED; + wire NLW_inst_pipe_rate_idle_UNCONNECTED; + wire NLW_inst_pipe_rst_idle_UNCONNECTED; + wire NLW_inst_qpll_drp_clk_UNCONNECTED; + wire NLW_inst_qpll_drp_gen3_UNCONNECTED; + wire NLW_inst_qpll_drp_ovrd_UNCONNECTED; + wire NLW_inst_qpll_drp_rst_n_UNCONNECTED; + wire NLW_inst_qpll_drp_start_UNCONNECTED; + wire NLW_inst_qpll_qplld_UNCONNECTED; + wire NLW_inst_startup_cfgclk_UNCONNECTED; + wire NLW_inst_startup_cfgmclk_UNCONNECTED; + wire NLW_inst_startup_eos_UNCONNECTED; + wire NLW_inst_startup_preq_UNCONNECTED; + wire NLW_inst_user_app_rdy_UNCONNECTED; + wire [15:3]NLW_inst_cfg_command_UNCONNECTED; + wire [15:15]NLW_inst_cfg_dcommand_UNCONNECTED; + wire [15:12]NLW_inst_cfg_dcommand2_UNCONNECTED; + wire [15:4]NLW_inst_cfg_dstatus_UNCONNECTED; + wire [15:2]NLW_inst_cfg_lcommand_UNCONNECTED; + wire [12:2]NLW_inst_cfg_lstatus_UNCONNECTED; + wire [15:0]NLW_inst_cfg_status_UNCONNECTED; + wire [11:0]NLW_inst_common_commands_out_UNCONNECTED; + wire [63:0]NLW_inst_ext_ch_gt_drpdo_UNCONNECTED; + wire [3:0]NLW_inst_ext_ch_gt_drprdy_UNCONNECTED; + wire [3:0]NLW_inst_gt_ch_drp_rdy_UNCONNECTED; + wire [31:0]NLW_inst_icap_o_UNCONNECTED; + wire [1:0]NLW_inst_int_qplllock_out_UNCONNECTED; + wire [1:0]NLW_inst_int_qplloutclk_out_UNCONNECTED; + wire [1:0]NLW_inst_int_qplloutrefclk_out_UNCONNECTED; + wire [3:0]NLW_inst_int_rxoutclk_out_UNCONNECTED; + wire [3:0]NLW_inst_m_axis_rx_tkeep_UNCONNECTED; + wire [20:9]NLW_inst_m_axis_rx_tuser_UNCONNECTED; + wire [3:0]NLW_inst_pipe_cpll_lock_UNCONNECTED; + wire [31:0]NLW_inst_pipe_debug_UNCONNECTED; + wire [3:0]NLW_inst_pipe_debug_0_UNCONNECTED; + wire [3:0]NLW_inst_pipe_debug_1_UNCONNECTED; + wire [3:0]NLW_inst_pipe_debug_2_UNCONNECTED; + wire [3:0]NLW_inst_pipe_debug_3_UNCONNECTED; + wire [3:0]NLW_inst_pipe_debug_4_UNCONNECTED; + wire [3:0]NLW_inst_pipe_debug_5_UNCONNECTED; + wire [3:0]NLW_inst_pipe_debug_6_UNCONNECTED; + wire [3:0]NLW_inst_pipe_debug_7_UNCONNECTED; + wire [3:0]NLW_inst_pipe_debug_8_UNCONNECTED; + wire [3:0]NLW_inst_pipe_debug_9_UNCONNECTED; + wire [59:0]NLW_inst_pipe_dmonitorout_UNCONNECTED; + wire [27:0]NLW_inst_pipe_drp_fsm_UNCONNECTED; + wire [3:0]NLW_inst_pipe_eyescandataerror_UNCONNECTED; + wire [0:0]NLW_inst_pipe_qpll_lock_UNCONNECTED; + wire [11:0]NLW_inst_pipe_qrst_fsm_UNCONNECTED; + wire [19:0]NLW_inst_pipe_rate_fsm_UNCONNECTED; + wire [4:0]NLW_inst_pipe_rst_fsm_UNCONNECTED; + wire [11:0]NLW_inst_pipe_rxbufstatus_UNCONNECTED; + wire [3:0]NLW_inst_pipe_rxcommadet_UNCONNECTED; + wire [31:0]NLW_inst_pipe_rxdisperr_UNCONNECTED; + wire [3:0]NLW_inst_pipe_rxdlysresetdone_UNCONNECTED; + wire [31:0]NLW_inst_pipe_rxnotintable_UNCONNECTED; + wire [3:0]NLW_inst_pipe_rxphaligndone_UNCONNECTED; + wire [3:0]NLW_inst_pipe_rxpmaresetdone_UNCONNECTED; + wire [3:0]NLW_inst_pipe_rxprbserr_UNCONNECTED; + wire [11:0]NLW_inst_pipe_rxstatus_UNCONNECTED; + wire [3:0]NLW_inst_pipe_rxsyncdone_UNCONNECTED; + wire [27:0]NLW_inst_pipe_sync_fsm_rx_UNCONNECTED; + wire [23:0]NLW_inst_pipe_sync_fsm_tx_UNCONNECTED; + wire [24:0]NLW_inst_pipe_tx_0_sigs_UNCONNECTED; + wire [24:0]NLW_inst_pipe_tx_1_sigs_UNCONNECTED; + wire [24:0]NLW_inst_pipe_tx_2_sigs_UNCONNECTED; + wire [24:0]NLW_inst_pipe_tx_3_sigs_UNCONNECTED; + wire [24:0]NLW_inst_pipe_tx_4_sigs_UNCONNECTED; + wire [24:0]NLW_inst_pipe_tx_5_sigs_UNCONNECTED; + wire [24:0]NLW_inst_pipe_tx_6_sigs_UNCONNECTED; + wire [24:0]NLW_inst_pipe_tx_7_sigs_UNCONNECTED; + wire [3:0]NLW_inst_pipe_txdlysresetdone_UNCONNECTED; + wire [3:0]NLW_inst_pipe_txphaligndone_UNCONNECTED; + wire [3:0]NLW_inst_pipe_txphinitdone_UNCONNECTED; + wire [1:0]NLW_inst_qpll_qpllreset_UNCONNECTED; + + assign cfg_command[15] = \ ; + assign cfg_command[14] = \ ; + assign cfg_command[13] = \ ; + assign cfg_command[12] = \ ; + assign cfg_command[11] = \ ; + assign cfg_command[10] = \^cfg_command [10]; + assign cfg_command[9] = \ ; + assign cfg_command[8] = \^cfg_command [8]; + assign cfg_command[7] = \ ; + assign cfg_command[6] = \ ; + assign cfg_command[5] = \ ; + assign cfg_command[4] = \ ; + assign cfg_command[3] = \ ; + assign cfg_command[2:0] = \^cfg_command [2:0]; + assign cfg_dcommand[15] = \ ; + assign cfg_dcommand[14:0] = \^cfg_dcommand [14:0]; + assign cfg_dcommand2[15] = \ ; + assign cfg_dcommand2[14] = \ ; + assign cfg_dcommand2[13] = \ ; + assign cfg_dcommand2[12] = \ ; + assign cfg_dcommand2[11:0] = \^cfg_dcommand2 [11:0]; + assign cfg_dstatus[15] = \ ; + assign cfg_dstatus[14] = \ ; + assign cfg_dstatus[13] = \ ; + assign cfg_dstatus[12] = \ ; + assign cfg_dstatus[11] = \ ; + assign cfg_dstatus[10] = \ ; + assign cfg_dstatus[9] = \ ; + assign cfg_dstatus[8] = \ ; + assign cfg_dstatus[7] = \ ; + assign cfg_dstatus[6] = \ ; + assign cfg_dstatus[5] = \^cfg_dstatus [5]; + assign cfg_dstatus[4] = \ ; + assign cfg_dstatus[3:0] = \^cfg_dstatus [3:0]; + assign cfg_lcommand[15] = \ ; + assign cfg_lcommand[14] = \ ; + assign cfg_lcommand[13] = \ ; + assign cfg_lcommand[12] = \ ; + assign cfg_lcommand[11:3] = \^cfg_lcommand [11:3]; + assign cfg_lcommand[2] = \ ; + assign cfg_lcommand[1:0] = \^cfg_lcommand [1:0]; + assign cfg_lstatus[15:13] = \^cfg_lstatus [15:13]; + assign cfg_lstatus[12] = \ ; + assign cfg_lstatus[11] = \^cfg_lstatus [11]; + assign cfg_lstatus[10] = \ ; + assign cfg_lstatus[9] = \ ; + assign cfg_lstatus[8] = \ ; + assign cfg_lstatus[7:4] = \^cfg_lstatus [7:4]; + assign cfg_lstatus[3] = \ ; + assign cfg_lstatus[2] = \ ; + assign cfg_lstatus[1:0] = \^cfg_lstatus [1:0]; + assign cfg_status[15] = \ ; + assign cfg_status[14] = \ ; + assign cfg_status[13] = \ ; + assign cfg_status[12] = \ ; + assign cfg_status[11] = \ ; + assign cfg_status[10] = \ ; + assign cfg_status[9] = \ ; + assign cfg_status[8] = \ ; + assign cfg_status[7] = \ ; + assign cfg_status[6] = \ ; + assign cfg_status[5] = \ ; + assign cfg_status[4] = \ ; + assign cfg_status[3] = \ ; + assign cfg_status[2] = \ ; + assign cfg_status[1] = \ ; + assign cfg_status[0] = \ ; + assign m_axis_rx_tkeep[7:4] = \^m_axis_rx_tkeep [7:4]; + assign m_axis_rx_tkeep[3] = \ ; + assign m_axis_rx_tkeep[2] = \ ; + assign m_axis_rx_tkeep[1] = \ ; + assign m_axis_rx_tkeep[0] = \ ; + assign m_axis_rx_tuser[21] = \^m_axis_rx_tuser [21]; + assign m_axis_rx_tuser[20] = \ ; + assign m_axis_rx_tuser[19:17] = \^m_axis_rx_tuser [19:17]; + assign m_axis_rx_tuser[16] = \ ; + assign m_axis_rx_tuser[15] = \ ; + assign m_axis_rx_tuser[14] = \^m_axis_rx_tuser [14]; + assign m_axis_rx_tuser[13] = \ ; + assign m_axis_rx_tuser[12] = \ ; + assign m_axis_rx_tuser[11] = \ ; + assign m_axis_rx_tuser[10] = \ ; + assign m_axis_rx_tuser[9] = \ ; + assign m_axis_rx_tuser[8:0] = \^m_axis_rx_tuser [8:0]; + assign user_app_rdy = \ ; + GND GND + (.G(\ )); + VCC VCC + (.P(\ )); + (* CFG_CTL_IF = "TRUE" *) + (* CFG_FC_IF = "TRUE" *) + (* CFG_MGMT_IF = "TRUE" *) + (* CFG_STATUS_IF = "TRUE" *) + (* CLASS_CODE = "050000" *) + (* C_DATA_WIDTH = "64" *) + (* DowngradeIPIdentifiedWarnings = "yes" *) + (* ENABLE_JTAG_DBG = "FALSE" *) + (* ERR_REPORTING_IF = "TRUE" *) + (* EXT_CH_GT_DRP = "FALSE" *) + (* EXT_PIPE_INTERFACE = "FALSE" *) + (* EXT_STARTUP_PRIMITIVE = "FALSE" *) + (* KEEP_WIDTH = "8" *) + (* LINK_CAP_MAX_LINK_WIDTH = "4" *) + (* PCIE_ASYNC_EN = "FALSE" *) + (* PCIE_EXT_CLK = "TRUE" *) + (* PCIE_EXT_GT_COMMON = "FALSE" *) + (* PIPE_SIM = "FALSE" *) + (* PL_INTERFACE = "TRUE" *) + (* RCV_MSG_IF = "TRUE" *) + (* REDUCE_OOB_FREQ = "FALSE" *) + (* SHARED_LOGIC_IN_CORE = "FALSE" *) + (* TRANSCEIVER_CTRL_STATUS_PORTS = "FALSE" *) + (* bar_0 = "FFFF0000" *) + (* bar_1 = "00000000" *) + (* bar_2 = "00000000" *) + (* bar_3 = "00000000" *) + (* bar_4 = "00000000" *) + (* bar_5 = "00000000" *) + (* bram_lat = "0" *) + (* c_aer_base_ptr = "000" *) + (* c_aer_cap_ecrc_check_capable = "FALSE" *) + (* c_aer_cap_ecrc_gen_capable = "FALSE" *) + (* c_aer_cap_multiheader = "FALSE" *) + (* c_aer_cap_nextptr = "000" *) + (* c_aer_cap_on = "FALSE" *) + (* c_aer_cap_optional_err_support = "000000" *) + (* c_aer_cap_permit_rooterr_update = "FALSE" *) + (* c_buf_opt_bma = "TRUE" *) + (* c_component_name = "pcie_7x_0" *) + (* c_cpl_inf = "TRUE" *) + (* c_cpl_infinite = "TRUE" *) + (* c_cpl_timeout_disable_sup = "FALSE" *) + (* c_cpl_timeout_range = "0010" *) + (* c_cpl_timeout_ranges_sup = "2" *) + (* c_d1_support = "FALSE" *) + (* c_d2_support = "FALSE" *) + (* c_de_emph = "FALSE" *) + (* c_dev_cap2_ari_forwarding_supported = "FALSE" *) + (* c_dev_cap2_atomicop32_completer_supported = "FALSE" *) + (* c_dev_cap2_atomicop64_completer_supported = "FALSE" *) + (* c_dev_cap2_atomicop_routing_supported = "FALSE" *) + (* c_dev_cap2_cas128_completer_supported = "FALSE" *) + (* c_dev_cap2_tph_completer_supported = "00" *) + (* c_dev_control_ext_tag_default = "FALSE" *) + (* c_dev_port_type = "0" *) + (* c_dis_lane_reverse = "TRUE" *) + (* c_disable_rx_poisoned_resp = "FALSE" *) + (* c_disable_scrambling = "FALSE" *) + (* c_disable_tx_aspm_l0s = "FALSE" *) + (* c_dll_lnk_actv_cap = "FALSE" *) + (* c_dsi_bool = "FALSE" *) + (* c_dsn_base_ptr = "100" *) + (* c_dsn_cap_enabled = "TRUE" *) + (* c_dsn_next_ptr = "000" *) + (* c_enable_msg_route = "00000000000" *) + (* c_ep_l0s_accpt_lat = "0" *) + (* c_ep_l1_accpt_lat = "7" *) + (* c_ext_pci_cfg_space_addr = "3FF" *) + (* c_external_clocking = "TRUE" *) + (* c_fc_cpld = "973" *) + (* c_fc_cplh = "36" *) + (* c_fc_npd = "24" *) + (* c_fc_nph = "12" *) + (* c_fc_pd = "949" *) + (* c_fc_ph = "32" *) + (* c_gen1 = "1'b1" *) + (* c_header_type = "00" *) + (* c_hw_auton_spd_disable = "FALSE" *) + (* c_int_width = "64" *) + (* c_last_cfg_dw = "10C" *) + (* c_link_cap_aspm_optionality = "FALSE" *) + (* c_ll_ack_timeout = "0000" *) + (* c_ll_ack_timeout_enable = "FALSE" *) + (* c_ll_ack_timeout_function = "0" *) + (* c_ll_replay_timeout = "0000" *) + (* c_ll_replay_timeout_enable = "FALSE" *) + (* c_ll_replay_timeout_func = "1" *) + (* c_lnk_bndwdt_notif = "FALSE" *) + (* c_msi = "0" *) + (* c_msi_64b_addr = "TRUE" *) + (* c_msi_cap_on = "FALSE" *) + (* c_msi_mult_msg_extn = "0" *) + (* c_msi_per_vctr_mask_cap = "FALSE" *) + (* c_msix_cap_on = "FALSE" *) + (* c_msix_next_ptr = "00" *) + (* c_msix_pba_bir = "0" *) + (* c_msix_pba_offset = "0" *) + (* c_msix_table_bir = "0" *) + (* c_msix_table_offset = "0" *) + (* c_msix_table_size = "000" *) + (* c_pci_cfg_space_addr = "3F" *) + (* c_pcie_blk_locn = "0" *) + (* c_pcie_cap_next_ptr = "00" *) + (* c_pcie_cap_slot_implemented = "FALSE" *) + (* c_pcie_dbg_ports = "TRUE" *) + (* c_pcie_fast_config = "0" *) + (* c_perf_level_high = "TRUE" *) + (* c_phantom_functions = "0" *) + (* c_pm_cap_next_ptr = "60" *) + (* c_pme_support = "0F" *) + (* c_rbar_base_ptr = "000" *) + (* c_rbar_cap_control_encodedbar0 = "00" *) + (* c_rbar_cap_control_encodedbar1 = "00" *) + (* c_rbar_cap_control_encodedbar2 = "00" *) + (* c_rbar_cap_control_encodedbar3 = "00" *) + (* c_rbar_cap_control_encodedbar4 = "00" *) + (* c_rbar_cap_control_encodedbar5 = "00" *) + (* c_rbar_cap_index0 = "0" *) + (* c_rbar_cap_index1 = "0" *) + (* c_rbar_cap_index2 = "0" *) + (* c_rbar_cap_index3 = "0" *) + (* c_rbar_cap_index4 = "0" *) + (* c_rbar_cap_index5 = "0" *) + (* c_rbar_cap_nextptr = "000" *) + (* c_rbar_cap_on = "FALSE" *) + (* c_rbar_cap_sup0 = "00001" *) + (* c_rbar_cap_sup1 = "00001" *) + (* c_rbar_cap_sup2 = "00001" *) + (* c_rbar_cap_sup3 = "00001" *) + (* c_rbar_cap_sup4 = "00001" *) + (* c_rbar_cap_sup5 = "00001" *) + (* c_rbar_num = "0" *) + (* c_rcb = "0" *) + (* c_recrc_check = "0" *) + (* c_recrc_check_trim = "FALSE" *) + (* c_rev_gt_order = "FALSE" *) + (* c_root_cap_crs = "FALSE" *) + (* c_rx_raddr_lat = "0" *) + (* c_rx_ram_limit = "FFF" *) + (* c_rx_rdata_lat = "2" *) + (* c_rx_write_lat = "0" *) + (* c_silicon_rev = "2" *) + (* c_slot_cap_attn_butn = "FALSE" *) + (* c_slot_cap_attn_ind = "FALSE" *) + (* c_slot_cap_elec_interlock = "FALSE" *) + (* c_slot_cap_hotplug_cap = "FALSE" *) + (* c_slot_cap_hotplug_surprise = "FALSE" *) + (* c_slot_cap_mrl = "FALSE" *) + (* c_slot_cap_no_cmd_comp_sup = "FALSE" *) + (* c_slot_cap_physical_slot_num = "0" *) + (* c_slot_cap_pwr_ctrl = "FALSE" *) + (* c_slot_cap_pwr_ind = "FALSE" *) + (* c_slot_cap_pwr_limit_scale = "0" *) + (* c_slot_cap_pwr_limit_value = "0" *) + (* c_surprise_dn_err_cap = "FALSE" *) + (* c_trgt_lnk_spd = "2" *) + (* c_trn_np_fc = "TRUE" *) + (* c_tx_last_tlp = "30" *) + (* c_tx_raddr_lat = "0" *) + (* c_tx_rdata_lat = "2" *) + (* c_tx_write_lat = "0" *) + (* c_upconfig_capable = "TRUE" *) + (* c_upstream_facing = "TRUE" *) + (* c_ur_atomic = "FALSE" *) + (* c_ur_inv_req = "TRUE" *) + (* c_ur_prs_response = "TRUE" *) + (* c_vc_base_ptr = "000" *) + (* c_vc_cap_enabled = "FALSE" *) + (* c_vc_cap_reject_snoop = "FALSE" *) + (* c_vc_next_ptr = "000" *) + (* c_vsec_base_ptr = "000" *) + (* c_vsec_cap_enabled = "FALSE" *) + (* c_vsec_next_ptr = "000" *) + (* c_xlnx_ref_board = "ZC706" *) + (* cap_ver = "2" *) + (* cardbus_cis_ptr = "00000000" *) + (* cmps = "3" *) + (* con_scl_fctr_d0_state = "0" *) + (* con_scl_fctr_d1_state = "0" *) + (* con_scl_fctr_d2_state = "0" *) + (* con_scl_fctr_d3_state = "0" *) + (* cost_table = "1" *) + (* d1_sup = "0" *) + (* d2_sup = "0" *) + (* dev_id = "7024" *) + (* dev_port_type = "0000" *) + (* dis_scl_fctr_d0_state = "0" *) + (* dis_scl_fctr_d1_state = "0" *) + (* dis_scl_fctr_d2_state = "0" *) + (* dis_scl_fctr_d3_state = "0" *) + (* dsi = "0" *) + (* ep_l0s_accpt_lat = "000" *) + (* ep_l1_accpt_lat = "111" *) + (* ext_tag_fld_sup = "FALSE" *) + (* int_pin = "1" *) + (* intx = "TRUE" *) + (* max_lnk_spd = "2" *) + (* max_lnk_wdt = "000100" *) + (* mps = "011" *) + (* no_soft_rst = "TRUE" *) + (* pci_exp_int_freq = "3" *) + (* pci_exp_ref_freq = "0" *) + (* phantm_func_sup = "00" *) + (* pme_sup = "0F" *) + (* pwr_con_d0_state = "00" *) + (* pwr_con_d1_state = "00" *) + (* pwr_con_d2_state = "00" *) + (* pwr_con_d3_state = "00" *) + (* pwr_dis_d0_state = "00" *) + (* pwr_dis_d1_state = "00" *) + (* pwr_dis_d2_state = "00" *) + (* pwr_dis_d3_state = "00" *) + (* rev_id = "00" *) + (* slot_clk = "TRUE" *) + (* subsys_id = "0007" *) + (* subsys_ven_id = "10EE" *) + (* ven_id = "10EE" *) + (* xrom_bar = "00000000" *) + pcie_7x_0_pcie_7x_0_pcie2_top inst + (.cfg_aer_ecrc_check_en(cfg_aer_ecrc_check_en), + .cfg_aer_ecrc_gen_en(cfg_aer_ecrc_gen_en), + .cfg_aer_interrupt_msgnum(cfg_aer_interrupt_msgnum), + .cfg_aer_rooterr_corr_err_received(cfg_aer_rooterr_corr_err_received), + .cfg_aer_rooterr_corr_err_reporting_en(cfg_aer_rooterr_corr_err_reporting_en), + .cfg_aer_rooterr_fatal_err_received(cfg_aer_rooterr_fatal_err_received), + .cfg_aer_rooterr_fatal_err_reporting_en(cfg_aer_rooterr_fatal_err_reporting_en), + .cfg_aer_rooterr_non_fatal_err_received(cfg_aer_rooterr_non_fatal_err_received), + .cfg_aer_rooterr_non_fatal_err_reporting_en(cfg_aer_rooterr_non_fatal_err_reporting_en), + .cfg_bridge_serr_en(cfg_bridge_serr_en), + .cfg_bus_number(cfg_bus_number), + .cfg_command({NLW_inst_cfg_command_UNCONNECTED[15:11],\^cfg_command }), + .cfg_dcommand({NLW_inst_cfg_dcommand_UNCONNECTED[15],\^cfg_dcommand }), + .cfg_dcommand2({NLW_inst_cfg_dcommand2_UNCONNECTED[15:12],\^cfg_dcommand2 }), + .cfg_device_number(cfg_device_number), + .cfg_ds_bus_number(cfg_ds_bus_number), + .cfg_ds_device_number(cfg_ds_device_number), + .cfg_ds_function_number(cfg_ds_function_number), + .cfg_dsn(cfg_dsn), + .cfg_dstatus({NLW_inst_cfg_dstatus_UNCONNECTED[15:6],\^cfg_dstatus }), + .cfg_err_acs(1'b0), + .cfg_err_aer_headerlog(cfg_err_aer_headerlog), + .cfg_err_aer_headerlog_set(cfg_err_aer_headerlog_set), + .cfg_err_atomic_egress_blocked(cfg_err_atomic_egress_blocked), + .cfg_err_cor(cfg_err_cor), + .cfg_err_cpl_abort(cfg_err_cpl_abort), + .cfg_err_cpl_rdy(cfg_err_cpl_rdy), + .cfg_err_cpl_timeout(cfg_err_cpl_timeout), + .cfg_err_cpl_unexpect(cfg_err_cpl_unexpect), + .cfg_err_ecrc(cfg_err_ecrc), + .cfg_err_internal_cor(cfg_err_internal_cor), + .cfg_err_internal_uncor(cfg_err_internal_uncor), + .cfg_err_locked(cfg_err_locked), + .cfg_err_malformed(cfg_err_malformed), + .cfg_err_mc_blocked(cfg_err_mc_blocked), + .cfg_err_norecovery(cfg_err_norecovery), + .cfg_err_poisoned(cfg_err_poisoned), + .cfg_err_posted(cfg_err_posted), + .cfg_err_tlp_cpl_header(cfg_err_tlp_cpl_header), + .cfg_err_ur(cfg_err_ur), + .cfg_function_number(cfg_function_number), + .cfg_interrupt(cfg_interrupt), + .cfg_interrupt_assert(cfg_interrupt_assert), + .cfg_interrupt_di(cfg_interrupt_di), + .cfg_interrupt_do(cfg_interrupt_do), + .cfg_interrupt_mmenable(cfg_interrupt_mmenable), + .cfg_interrupt_msienable(cfg_interrupt_msienable), + .cfg_interrupt_msixenable(cfg_interrupt_msixenable), + .cfg_interrupt_msixfm(cfg_interrupt_msixfm), + .cfg_interrupt_rdy(cfg_interrupt_rdy), + .cfg_interrupt_stat(cfg_interrupt_stat), + .cfg_lcommand({NLW_inst_cfg_lcommand_UNCONNECTED[15:12],\^cfg_lcommand }), + .cfg_lstatus(\^cfg_lstatus ), + .cfg_mgmt_byte_en(cfg_mgmt_byte_en), + .cfg_mgmt_di(cfg_mgmt_di), + .cfg_mgmt_do(cfg_mgmt_do), + .cfg_mgmt_dwaddr(cfg_mgmt_dwaddr), + .cfg_mgmt_rd_en(cfg_mgmt_rd_en), + .cfg_mgmt_rd_wr_done(cfg_mgmt_rd_wr_done), + .cfg_mgmt_wr_en(cfg_mgmt_wr_en), + .cfg_mgmt_wr_readonly(cfg_mgmt_wr_readonly), + .cfg_mgmt_wr_rw1c_as_rw(cfg_mgmt_wr_rw1c_as_rw), + .cfg_msg_data(cfg_msg_data), + .cfg_msg_received(cfg_msg_received), + .cfg_msg_received_assert_int_a(cfg_msg_received_assert_int_a), + .cfg_msg_received_assert_int_b(cfg_msg_received_assert_int_b), + .cfg_msg_received_assert_int_c(cfg_msg_received_assert_int_c), + .cfg_msg_received_assert_int_d(cfg_msg_received_assert_int_d), + .cfg_msg_received_deassert_int_a(cfg_msg_received_deassert_int_a), + .cfg_msg_received_deassert_int_b(cfg_msg_received_deassert_int_b), + .cfg_msg_received_deassert_int_c(cfg_msg_received_deassert_int_c), + .cfg_msg_received_deassert_int_d(cfg_msg_received_deassert_int_d), + .cfg_msg_received_err_cor(cfg_msg_received_err_cor), + .cfg_msg_received_err_fatal(cfg_msg_received_err_fatal), + .cfg_msg_received_err_non_fatal(cfg_msg_received_err_non_fatal), + .cfg_msg_received_pm_as_nak(cfg_msg_received_pm_as_nak), + .cfg_msg_received_pm_pme(cfg_msg_received_pm_pme), + .cfg_msg_received_pme_to_ack(cfg_msg_received_pme_to_ack), + .cfg_msg_received_setslotpowerlimit(cfg_msg_received_setslotpowerlimit), + .cfg_pcie_link_state(cfg_pcie_link_state), + .cfg_pciecap_interrupt_msgnum(cfg_pciecap_interrupt_msgnum), + .cfg_pm_force_state(cfg_pm_force_state), + .cfg_pm_force_state_en(cfg_pm_force_state_en), + .cfg_pm_halt_aspm_l0s(cfg_pm_halt_aspm_l0s), + .cfg_pm_halt_aspm_l1(cfg_pm_halt_aspm_l1), + .cfg_pm_send_pme_to(1'b0), + .cfg_pm_wake(cfg_pm_wake), + .cfg_pmcsr_pme_en(cfg_pmcsr_pme_en), + .cfg_pmcsr_pme_status(cfg_pmcsr_pme_status), + .cfg_pmcsr_powerstate(cfg_pmcsr_powerstate), + .cfg_received_func_lvl_rst(cfg_received_func_lvl_rst), + .cfg_root_control_pme_int_en(cfg_root_control_pme_int_en), + .cfg_root_control_syserr_corr_err_en(cfg_root_control_syserr_corr_err_en), + .cfg_root_control_syserr_fatal_err_en(cfg_root_control_syserr_fatal_err_en), + .cfg_root_control_syserr_non_fatal_err_en(cfg_root_control_syserr_non_fatal_err_en), + .cfg_slot_control_electromech_il_ctl_pulse(cfg_slot_control_electromech_il_ctl_pulse), + .cfg_status(NLW_inst_cfg_status_UNCONNECTED[15:0]), + .cfg_to_turnoff(cfg_to_turnoff), + .cfg_trn_pending(cfg_trn_pending), + .cfg_turnoff_ok(cfg_turnoff_ok), + .cfg_vc_tcvc_map(cfg_vc_tcvc_map), + .common_commands_in({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .common_commands_out(NLW_inst_common_commands_out_UNCONNECTED[11:0]), + .ext_ch_gt_drpaddr({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .ext_ch_gt_drpclk(NLW_inst_ext_ch_gt_drpclk_UNCONNECTED), + .ext_ch_gt_drpdi({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .ext_ch_gt_drpdo(NLW_inst_ext_ch_gt_drpdo_UNCONNECTED[63:0]), + .ext_ch_gt_drpen({1'b0,1'b0,1'b0,1'b0}), + .ext_ch_gt_drprdy(NLW_inst_ext_ch_gt_drprdy_UNCONNECTED[3:0]), + .ext_ch_gt_drpwe({1'b0,1'b0,1'b0,1'b0}), + .fc_cpld(fc_cpld), + .fc_cplh(fc_cplh), + .fc_npd(fc_npd), + .fc_nph(fc_nph), + .fc_pd(fc_pd), + .fc_ph(fc_ph), + .fc_sel(fc_sel), + .gt_ch_drp_rdy(NLW_inst_gt_ch_drp_rdy_UNCONNECTED[3:0]), + .icap_clk(1'b0), + .icap_csib(1'b0), + .icap_i({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .icap_o(NLW_inst_icap_o_UNCONNECTED[31:0]), + .icap_rdwrb(1'b0), + .int_dclk_out(NLW_inst_int_dclk_out_UNCONNECTED), + .int_mmcm_lock_out(NLW_inst_int_mmcm_lock_out_UNCONNECTED), + .int_oobclk_out(NLW_inst_int_oobclk_out_UNCONNECTED), + .int_pclk_out_slave(NLW_inst_int_pclk_out_slave_UNCONNECTED), + .int_pclk_sel_slave({1'b0,1'b0,1'b0,1'b0}), + .int_pipe_rxusrclk_out(NLW_inst_int_pipe_rxusrclk_out_UNCONNECTED), + .int_qplllock_out(NLW_inst_int_qplllock_out_UNCONNECTED[1:0]), + .int_qplloutclk_out(NLW_inst_int_qplloutclk_out_UNCONNECTED[1:0]), + .int_qplloutrefclk_out(NLW_inst_int_qplloutrefclk_out_UNCONNECTED[1:0]), + .int_rxoutclk_out(NLW_inst_int_rxoutclk_out_UNCONNECTED[3:0]), + .int_userclk1_out(NLW_inst_int_userclk1_out_UNCONNECTED), + .int_userclk2_out(NLW_inst_int_userclk2_out_UNCONNECTED), + .m_axis_rx_tdata(m_axis_rx_tdata), + .m_axis_rx_tkeep({\^m_axis_rx_tkeep ,NLW_inst_m_axis_rx_tkeep_UNCONNECTED[3:0]}), + .m_axis_rx_tlast(m_axis_rx_tlast), + .m_axis_rx_tready(m_axis_rx_tready), + .m_axis_rx_tuser(\^m_axis_rx_tuser ), + .m_axis_rx_tvalid(m_axis_rx_tvalid), + .pci_exp_rxn(pci_exp_rxn), + .pci_exp_rxp(pci_exp_rxp), + .pci_exp_txn(pci_exp_txn), + .pci_exp_txp(pci_exp_txp), + .pcie_drp_addr(pcie_drp_addr), + .pcie_drp_clk(pcie_drp_clk), + .pcie_drp_di(pcie_drp_di), + .pcie_drp_do(pcie_drp_do), + .pcie_drp_en(pcie_drp_en), + .pcie_drp_rdy(pcie_drp_rdy), + .pcie_drp_we(pcie_drp_we), + .pipe_cpll_lock(NLW_inst_pipe_cpll_lock_UNCONNECTED[3:0]), + .pipe_dclk_in(pipe_dclk_in), + .pipe_debug(NLW_inst_pipe_debug_UNCONNECTED[31:0]), + .pipe_debug_0(NLW_inst_pipe_debug_0_UNCONNECTED[3:0]), + .pipe_debug_1(NLW_inst_pipe_debug_1_UNCONNECTED[3:0]), + .pipe_debug_2(NLW_inst_pipe_debug_2_UNCONNECTED[3:0]), + .pipe_debug_3(NLW_inst_pipe_debug_3_UNCONNECTED[3:0]), + .pipe_debug_4(NLW_inst_pipe_debug_4_UNCONNECTED[3:0]), + .pipe_debug_5(NLW_inst_pipe_debug_5_UNCONNECTED[3:0]), + .pipe_debug_6(NLW_inst_pipe_debug_6_UNCONNECTED[3:0]), + .pipe_debug_7(NLW_inst_pipe_debug_7_UNCONNECTED[3:0]), + .pipe_debug_8(NLW_inst_pipe_debug_8_UNCONNECTED[3:0]), + .pipe_debug_9(NLW_inst_pipe_debug_9_UNCONNECTED[3:0]), + .pipe_dmonitorout(NLW_inst_pipe_dmonitorout_UNCONNECTED[59:0]), + .pipe_drp_fsm(NLW_inst_pipe_drp_fsm_UNCONNECTED[27:0]), + .pipe_eyescandataerror(NLW_inst_pipe_eyescandataerror_UNCONNECTED[3:0]), + .pipe_gen3_out(pipe_gen3_out), + .pipe_loopback({1'b0,1'b0,1'b0}), + .pipe_mmcm_lock_in(pipe_mmcm_lock_in), + .pipe_mmcm_rst_n(1'b0), + .pipe_oobclk_in(pipe_oobclk_in), + .pipe_pclk_in(pipe_pclk_in), + .pipe_pclk_sel_out(pipe_pclk_sel_out), + .pipe_qpll_lock(NLW_inst_pipe_qpll_lock_UNCONNECTED[0]), + .pipe_qrst_fsm(NLW_inst_pipe_qrst_fsm_UNCONNECTED[11:0]), + .pipe_qrst_idle(NLW_inst_pipe_qrst_idle_UNCONNECTED), + .pipe_rate_fsm(NLW_inst_pipe_rate_fsm_UNCONNECTED[19:0]), + .pipe_rate_idle(NLW_inst_pipe_rate_idle_UNCONNECTED), + .pipe_rst_fsm(NLW_inst_pipe_rst_fsm_UNCONNECTED[4:0]), + .pipe_rst_idle(NLW_inst_pipe_rst_idle_UNCONNECTED), + .pipe_rx_0_sigs({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .pipe_rx_1_sigs({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .pipe_rx_2_sigs({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .pipe_rx_3_sigs({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .pipe_rx_4_sigs({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .pipe_rx_5_sigs({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .pipe_rx_6_sigs({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .pipe_rx_7_sigs({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .pipe_rxbufstatus(NLW_inst_pipe_rxbufstatus_UNCONNECTED[11:0]), + .pipe_rxcommadet(NLW_inst_pipe_rxcommadet_UNCONNECTED[3:0]), + .pipe_rxdisperr(NLW_inst_pipe_rxdisperr_UNCONNECTED[31:0]), + .pipe_rxdlysresetdone(NLW_inst_pipe_rxdlysresetdone_UNCONNECTED[3:0]), + .pipe_rxnotintable(NLW_inst_pipe_rxnotintable_UNCONNECTED[31:0]), + .pipe_rxoutclk_in({1'b0,1'b0,1'b0,1'b0}), + .pipe_rxoutclk_out(pipe_rxoutclk_out), + .pipe_rxphaligndone(NLW_inst_pipe_rxphaligndone_UNCONNECTED[3:0]), + .pipe_rxpmaresetdone(NLW_inst_pipe_rxpmaresetdone_UNCONNECTED[3:0]), + .pipe_rxprbscntreset(1'b0), + .pipe_rxprbserr(NLW_inst_pipe_rxprbserr_UNCONNECTED[3:0]), + .pipe_rxprbssel({1'b0,1'b0,1'b0}), + .pipe_rxstatus(NLW_inst_pipe_rxstatus_UNCONNECTED[11:0]), + .pipe_rxsyncdone(NLW_inst_pipe_rxsyncdone_UNCONNECTED[3:0]), + .pipe_rxusrclk_in(pipe_rxusrclk_in), + .pipe_sync_fsm_rx(NLW_inst_pipe_sync_fsm_rx_UNCONNECTED[27:0]), + .pipe_sync_fsm_tx(NLW_inst_pipe_sync_fsm_tx_UNCONNECTED[23:0]), + .pipe_tx_0_sigs(NLW_inst_pipe_tx_0_sigs_UNCONNECTED[24:0]), + .pipe_tx_1_sigs(NLW_inst_pipe_tx_1_sigs_UNCONNECTED[24:0]), + .pipe_tx_2_sigs(NLW_inst_pipe_tx_2_sigs_UNCONNECTED[24:0]), + .pipe_tx_3_sigs(NLW_inst_pipe_tx_3_sigs_UNCONNECTED[24:0]), + .pipe_tx_4_sigs(NLW_inst_pipe_tx_4_sigs_UNCONNECTED[24:0]), + .pipe_tx_5_sigs(NLW_inst_pipe_tx_5_sigs_UNCONNECTED[24:0]), + .pipe_tx_6_sigs(NLW_inst_pipe_tx_6_sigs_UNCONNECTED[24:0]), + .pipe_tx_7_sigs(NLW_inst_pipe_tx_7_sigs_UNCONNECTED[24:0]), + .pipe_txdlysresetdone(NLW_inst_pipe_txdlysresetdone_UNCONNECTED[3:0]), + .pipe_txinhibit({1'b0,1'b0,1'b0,1'b0}), + .pipe_txoutclk_out(pipe_txoutclk_out), + .pipe_txphaligndone(NLW_inst_pipe_txphaligndone_UNCONNECTED[3:0]), + .pipe_txphinitdone(NLW_inst_pipe_txphinitdone_UNCONNECTED[3:0]), + .pipe_txprbsforceerr(1'b0), + .pipe_txprbssel({1'b0,1'b0,1'b0}), + .pipe_userclk1_in(pipe_userclk1_in), + .pipe_userclk2_in(pipe_userclk2_in), + .pl_directed_change_done(pl_directed_change_done), + .pl_directed_link_auton(pl_directed_link_auton), + .pl_directed_link_change(pl_directed_link_change), + .pl_directed_link_speed(pl_directed_link_speed), + .pl_directed_link_width(pl_directed_link_width), + .pl_downstream_deemph_source(pl_downstream_deemph_source), + .pl_initial_link_width(pl_initial_link_width), + .pl_lane_reversal_mode(pl_lane_reversal_mode), + .pl_link_gen2_cap(pl_link_gen2_cap), + .pl_link_partner_gen2_supported(pl_link_partner_gen2_supported), + .pl_link_upcfg_cap(pl_link_upcfg_cap), + .pl_ltssm_state(pl_ltssm_state), + .pl_phy_lnk_up(pl_phy_lnk_up), + .pl_received_hot_rst(pl_received_hot_rst), + .pl_rx_pm_state(pl_rx_pm_state), + .pl_sel_lnk_rate(pl_sel_lnk_rate), + .pl_sel_lnk_width(pl_sel_lnk_width), + .pl_transmit_hot_rst(pl_transmit_hot_rst), + .pl_tx_pm_state(pl_tx_pm_state), + .pl_upstream_prefer_deemph(pl_upstream_prefer_deemph), + .qpll_drp_clk(NLW_inst_qpll_drp_clk_UNCONNECTED), + .qpll_drp_crscode({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .qpll_drp_done({1'b0,1'b0}), + .qpll_drp_fsm({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .qpll_drp_gen3(NLW_inst_qpll_drp_gen3_UNCONNECTED), + .qpll_drp_ovrd(NLW_inst_qpll_drp_ovrd_UNCONNECTED), + .qpll_drp_reset({1'b0,1'b0}), + .qpll_drp_rst_n(NLW_inst_qpll_drp_rst_n_UNCONNECTED), + .qpll_drp_start(NLW_inst_qpll_drp_start_UNCONNECTED), + .qpll_qplld(NLW_inst_qpll_qplld_UNCONNECTED), + .qpll_qplllock({1'b0,1'b0}), + .qpll_qplloutclk({1'b0,1'b0}), + .qpll_qplloutrefclk({1'b0,1'b0}), + .qpll_qpllreset(NLW_inst_qpll_qpllreset_UNCONNECTED[1:0]), + .rx_np_ok(rx_np_ok), + .rx_np_req(rx_np_req), + .s_axis_tx_tdata(s_axis_tx_tdata), + .s_axis_tx_tkeep({s_axis_tx_tkeep[7],1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .s_axis_tx_tlast(s_axis_tx_tlast), + .s_axis_tx_tready(s_axis_tx_tready), + .s_axis_tx_tuser(s_axis_tx_tuser), + .s_axis_tx_tvalid(s_axis_tx_tvalid), + .startup_cfgclk(NLW_inst_startup_cfgclk_UNCONNECTED), + .startup_cfgmclk(NLW_inst_startup_cfgmclk_UNCONNECTED), + .startup_clk(1'b0), + .startup_eos(NLW_inst_startup_eos_UNCONNECTED), + .startup_eos_in(1'b0), + .startup_gsr(1'b0), + .startup_gts(1'b0), + .startup_keyclearb(1'b1), + .startup_pack(1'b0), + .startup_preq(NLW_inst_startup_preq_UNCONNECTED), + .startup_usrcclko(1'b1), + .startup_usrcclkts(1'b0), + .startup_usrdoneo(1'b0), + .startup_usrdonets(1'b1), + .sys_clk(sys_clk), + .sys_rst_n(sys_rst_n), + .tx_buf_av(tx_buf_av), + .tx_cfg_gnt(tx_cfg_gnt), + .tx_cfg_req(tx_cfg_req), + .tx_err_drop(tx_err_drop), + .user_app_rdy(NLW_inst_user_app_rdy_UNCONNECTED), + .user_clk_out(user_clk_out), + .user_lnk_up(user_lnk_up), + .user_reset_out(user_reset_out)); +endmodule + +module pcie_7x_0_pcie_7x_0_axi_basic_rx + (E, + trn_rsrc_dsc_d, + m_axis_rx_tvalid_reg, + m_axis_rx_tkeep, + m_axis_rx_tlast, + trn_in_packet, + reg_dsc_detect_reg, + m_axis_rx_tuser, + Q, + \trn_rbar_hit_prev_reg[0] , + pipe_userclk2_in, + trn_rrem, + trn_rsrc_dsc, + rsrc_rdy_filtered, + trn_reof, + trn_rsrc_dsc_prev0, + trn_rsof, + trn_recrc_err, + trn_rerrfwd, + trn_in_packet_reg, + m_axis_rx_tready, + dsc_detect, + trn_rd, + trn_rbar_hit); + output [0:0]E; + output trn_rsrc_dsc_d; + output m_axis_rx_tvalid_reg; + output [0:0]m_axis_rx_tkeep; + output m_axis_rx_tlast; + output trn_in_packet; + output reg_dsc_detect_reg; + output [12:0]m_axis_rx_tuser; + output [63:0]Q; + input \trn_rbar_hit_prev_reg[0] ; + input pipe_userclk2_in; + input [0:0]trn_rrem; + input trn_rsrc_dsc; + input rsrc_rdy_filtered; + input trn_reof; + input trn_rsrc_dsc_prev0; + input trn_rsof; + input trn_recrc_err; + input trn_rerrfwd; + input trn_in_packet_reg; + input m_axis_rx_tready; + input dsc_detect; + input [63:0]trn_rd; + input [6:0]trn_rbar_hit; + + wire [0:0]E; + wire [63:0]Q; + wire dsc_detect; + wire [0:0]m_axis_rx_tkeep; + wire m_axis_rx_tlast; + wire m_axis_rx_tready; + wire [12:0]m_axis_rx_tuser; + wire m_axis_rx_tvalid_reg; + wire [10:0]new_pkt_len; + wire null_mux_sel; + wire pipe_userclk2_in; + wire reg_dsc_detect_reg; + wire rsrc_rdy_filtered; + wire rx_null_gen_inst_n_0; + wire rx_null_gen_inst_n_1; + wire rx_null_gen_inst_n_2; + wire rx_null_gen_inst_n_3; + wire rx_null_gen_inst_n_4; + wire rx_null_gen_inst_n_5; + wire rx_null_gen_inst_n_6; + wire rx_null_gen_inst_n_7; + wire rx_null_gen_inst_n_8; + wire rx_pipeline_inst_n_73; + wire rx_pipeline_inst_n_74; + wire rx_pipeline_inst_n_8; + wire trn_in_packet; + wire trn_in_packet_reg; + wire [6:0]trn_rbar_hit; + wire \trn_rbar_hit_prev_reg[0] ; + wire [63:0]trn_rd; + wire trn_recrc_err; + wire trn_reof; + wire trn_rerrfwd; + wire [0:0]trn_rrem; + wire trn_rsof; + wire trn_rsrc_dsc; + wire trn_rsrc_dsc_d; + wire trn_rsrc_dsc_prev0; + + pcie_7x_0_pcie_7x_0_axi_basic_rx_null_gen rx_null_gen_inst + (.D({rx_null_gen_inst_n_0,rx_null_gen_inst_n_1}), + .Q({Q[30:29],Q[15],Q[1:0]}), + .S({rx_null_gen_inst_n_7,rx_null_gen_inst_n_8}), + .cur_state_reg_0(\trn_rbar_hit_prev_reg[0] ), + .cur_state_reg_1(m_axis_rx_tvalid_reg), + .m_axis_rx_tready(m_axis_rx_tready), + .m_axis_rx_tuser(m_axis_rx_tuser[12]), + .\m_axis_rx_tuser_reg[19] (rx_pipeline_inst_n_74), + .\m_axis_rx_tuser_reg[21] (rx_pipeline_inst_n_73), + .new_pkt_len(new_pkt_len), + .null_mux_sel(null_mux_sel), + .null_mux_sel_reg(rx_null_gen_inst_n_5), + .null_mux_sel_reg_0(rx_null_gen_inst_n_6), + .null_mux_sel_reg_1(rx_pipeline_inst_n_8), + .pipe_userclk2_in(pipe_userclk2_in), + .\reg_pkt_len_counter_reg[0]_0 (rx_null_gen_inst_n_4), + .\reg_pkt_len_counter_reg[3]_0 (rx_null_gen_inst_n_3), + .\reg_tkeep[7]_i_7_0 (rx_null_gen_inst_n_2)); + pcie_7x_0_pcie_7x_0_axi_basic_rx_pipeline rx_pipeline_inst + (.D({rx_null_gen_inst_n_0,rx_null_gen_inst_n_1}), + .E(E), + .Q(Q), + .S({rx_null_gen_inst_n_7,rx_null_gen_inst_n_8}), + .data_prev_reg_0(rx_pipeline_inst_n_73), + .data_prev_reg_1(rx_pipeline_inst_n_74), + .dsc_detect(dsc_detect), + .m_axis_rx_tkeep(m_axis_rx_tkeep), + .m_axis_rx_tlast(m_axis_rx_tlast), + .m_axis_rx_tready(m_axis_rx_tready), + .m_axis_rx_tuser(m_axis_rx_tuser), + .m_axis_rx_tvalid_reg_0(m_axis_rx_tvalid_reg), + .new_pkt_len(new_pkt_len), + .null_mux_sel(null_mux_sel), + .null_mux_sel_reg_0(rx_null_gen_inst_n_5), + .pipe_userclk2_in(pipe_userclk2_in), + .reg_dsc_detect_reg_0(reg_dsc_detect_reg), + .\reg_tkeep_reg[7]_0 (rx_null_gen_inst_n_3), + .reg_tlast_reg_0(rx_null_gen_inst_n_6), + .rsrc_rdy_filtered(rsrc_rdy_filtered), + .trn_in_packet(trn_in_packet), + .trn_in_packet_reg_0(trn_in_packet_reg), + .trn_rbar_hit(trn_rbar_hit), + .\trn_rbar_hit_prev_reg[0]_0 (\trn_rbar_hit_prev_reg[0] ), + .trn_rd(trn_rd), + .trn_rdst_rdy_reg_0(rx_null_gen_inst_n_2), + .trn_rdst_rdy_reg_1(rx_null_gen_inst_n_4), + .trn_recrc_err(trn_recrc_err), + .trn_reof(trn_reof), + .trn_rerrfwd(trn_rerrfwd), + .trn_rrem(trn_rrem), + .trn_rsof(trn_rsof), + .trn_rsrc_dsc(trn_rsrc_dsc), + .trn_rsrc_dsc_d(trn_rsrc_dsc_d), + .trn_rsrc_dsc_prev0(trn_rsrc_dsc_prev0), + .user_reset_out_reg(rx_pipeline_inst_n_8)); +endmodule + +module pcie_7x_0_pcie_7x_0_axi_basic_rx_null_gen + (D, + \reg_tkeep[7]_i_7_0 , + \reg_pkt_len_counter_reg[3]_0 , + \reg_pkt_len_counter_reg[0]_0 , + null_mux_sel_reg, + null_mux_sel_reg_0, + S, + cur_state_reg_0, + pipe_userclk2_in, + null_mux_sel, + \m_axis_rx_tuser_reg[19] , + new_pkt_len, + m_axis_rx_tready, + null_mux_sel_reg_1, + cur_state_reg_1, + m_axis_rx_tuser, + \m_axis_rx_tuser_reg[21] , + Q); + output [1:0]D; + output \reg_tkeep[7]_i_7_0 ; + output \reg_pkt_len_counter_reg[3]_0 ; + output \reg_pkt_len_counter_reg[0]_0 ; + output null_mux_sel_reg; + output null_mux_sel_reg_0; + output [1:0]S; + input cur_state_reg_0; + input pipe_userclk2_in; + input null_mux_sel; + input \m_axis_rx_tuser_reg[19] ; + input [10:0]new_pkt_len; + input m_axis_rx_tready; + input null_mux_sel_reg_1; + input cur_state_reg_1; + input [0:0]m_axis_rx_tuser; + input \m_axis_rx_tuser_reg[21] ; + input [4:0]Q; + + wire [1:0]D; + wire [4:0]Q; + wire [1:0]S; + wire cur_state; + wire cur_state_reg_0; + wire cur_state_reg_1; + wire m_axis_rx_tready; + wire [0:0]m_axis_rx_tuser; + wire \m_axis_rx_tuser_reg[19] ; + wire \m_axis_rx_tuser_reg[21] ; + wire [10:0]new_pkt_len; + wire next_state; + wire null_mux_sel; + wire null_mux_sel_reg; + wire null_mux_sel_reg_0; + wire null_mux_sel_reg_1; + wire pipe_userclk2_in; + wire [11:1]pkt_len_counter; + wire [1:0]pkt_len_counter_0; + wire pkt_len_counter_dec__0_carry__0_i_1_n_0; + wire pkt_len_counter_dec__0_carry__0_i_2_n_0; + wire pkt_len_counter_dec__0_carry__0_i_3_n_0; + wire pkt_len_counter_dec__0_carry__0_i_4_n_0; + wire pkt_len_counter_dec__0_carry__0_n_0; + wire pkt_len_counter_dec__0_carry__0_n_1; + wire pkt_len_counter_dec__0_carry__0_n_2; + wire pkt_len_counter_dec__0_carry__0_n_3; + wire pkt_len_counter_dec__0_carry__1_i_1_n_0; + wire pkt_len_counter_dec__0_carry__1_i_2_n_0; + wire pkt_len_counter_dec__0_carry__1_i_3_n_0; + wire pkt_len_counter_dec__0_carry__1_n_2; + wire pkt_len_counter_dec__0_carry__1_n_3; + wire pkt_len_counter_dec__0_carry_i_1_n_0; + wire pkt_len_counter_dec__0_carry_i_2_n_0; + wire pkt_len_counter_dec__0_carry_i_3_n_0; + wire pkt_len_counter_dec__0_carry_i_4_n_0; + wire pkt_len_counter_dec__0_carry_i_5_n_0; + wire pkt_len_counter_dec__0_carry_n_0; + wire pkt_len_counter_dec__0_carry_n_1; + wire pkt_len_counter_dec__0_carry_n_2; + wire pkt_len_counter_dec__0_carry_n_3; + wire [11:0]reg_pkt_len_counter; + wire \reg_pkt_len_counter[11]_i_2_n_0 ; + wire \reg_pkt_len_counter[11]_i_3_n_0 ; + wire \reg_pkt_len_counter[11]_i_4_n_0 ; + wire \reg_pkt_len_counter_reg[0]_0 ; + wire \reg_pkt_len_counter_reg[3]_0 ; + wire \reg_tkeep[7]_i_4_n_0 ; + wire \reg_tkeep[7]_i_5_n_0 ; + wire \reg_tkeep[7]_i_6_n_0 ; + wire \reg_tkeep[7]_i_7_0 ; + wire \reg_tkeep[7]_i_7_n_0 ; + wire [11:2]sel0; + wire [3:2]NLW_pkt_len_counter_dec__0_carry__1_CO_UNCONNECTED; + wire [3:3]NLW_pkt_len_counter_dec__0_carry__1_O_UNCONNECTED; + + LUT5 #( + .INIT(32'hAAAAAAEA)) + cur_state_i_1 + (.I0(\reg_pkt_len_counter[11]_i_2_n_0 ), + .I1(m_axis_rx_tready), + .I2(cur_state_reg_1), + .I3(cur_state), + .I4(m_axis_rx_tuser), + .O(next_state)); + FDRE cur_state_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(next_state), + .Q(cur_state), + .R(cur_state_reg_0)); + LUT6 #( + .INIT(64'h5555555500000400)) + \m_axis_rx_tuser[19]_i_1 + (.I0(cur_state_reg_0), + .I1(\reg_tkeep[7]_i_7_0 ), + .I2(\reg_pkt_len_counter_reg[3]_0 ), + .I3(null_mux_sel), + .I4(pkt_len_counter_0[0]), + .I5(\m_axis_rx_tuser_reg[19] ), + .O(D[0])); + LUT6 #( + .INIT(64'h00000000FF80FF08)) + \m_axis_rx_tuser[21]_i_2 + (.I0(\reg_tkeep[7]_i_7_0 ), + .I1(null_mux_sel), + .I2(\reg_pkt_len_counter_reg[3]_0 ), + .I3(\m_axis_rx_tuser_reg[21] ), + .I4(pkt_len_counter_0[0]), + .I5(cur_state_reg_0), + .O(D[1])); + LUT6 #( + .INIT(64'h0000000077F7FFFF)) + null_mux_sel_i_1 + (.I0(\reg_tkeep[7]_i_7_0 ), + .I1(null_mux_sel), + .I2(pkt_len_counter_0[0]), + .I3(\reg_pkt_len_counter_reg[3]_0 ), + .I4(m_axis_rx_tready), + .I5(null_mux_sel_reg_1), + .O(null_mux_sel_reg)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 pkt_len_counter_dec__0_carry + (.CI(1'b0), + .CO({pkt_len_counter_dec__0_carry_n_0,pkt_len_counter_dec__0_carry_n_1,pkt_len_counter_dec__0_carry_n_2,pkt_len_counter_dec__0_carry_n_3}), + .CYINIT(1'b0), + .DI({reg_pkt_len_counter[3:2],pkt_len_counter_dec__0_carry_i_1_n_0,1'b0}), + .O(pkt_len_counter[4:1]), + .S({pkt_len_counter_dec__0_carry_i_2_n_0,pkt_len_counter_dec__0_carry_i_3_n_0,pkt_len_counter_dec__0_carry_i_4_n_0,pkt_len_counter_dec__0_carry_i_5_n_0})); + (* ADDER_THRESHOLD = "35" *) + CARRY4 pkt_len_counter_dec__0_carry__0 + (.CI(pkt_len_counter_dec__0_carry_n_0), + .CO({pkt_len_counter_dec__0_carry__0_n_0,pkt_len_counter_dec__0_carry__0_n_1,pkt_len_counter_dec__0_carry__0_n_2,pkt_len_counter_dec__0_carry__0_n_3}), + .CYINIT(1'b0), + .DI(reg_pkt_len_counter[7:4]), + .O(pkt_len_counter[8:5]), + .S({pkt_len_counter_dec__0_carry__0_i_1_n_0,pkt_len_counter_dec__0_carry__0_i_2_n_0,pkt_len_counter_dec__0_carry__0_i_3_n_0,pkt_len_counter_dec__0_carry__0_i_4_n_0})); + LUT2 #( + .INIT(4'h9)) + pkt_len_counter_dec__0_carry__0_i_1 + (.I0(reg_pkt_len_counter[7]), + .I1(reg_pkt_len_counter[8]), + .O(pkt_len_counter_dec__0_carry__0_i_1_n_0)); + LUT2 #( + .INIT(4'h9)) + pkt_len_counter_dec__0_carry__0_i_2 + (.I0(reg_pkt_len_counter[6]), + .I1(reg_pkt_len_counter[7]), + .O(pkt_len_counter_dec__0_carry__0_i_2_n_0)); + LUT2 #( + .INIT(4'h9)) + pkt_len_counter_dec__0_carry__0_i_3 + (.I0(reg_pkt_len_counter[5]), + .I1(reg_pkt_len_counter[6]), + .O(pkt_len_counter_dec__0_carry__0_i_3_n_0)); + LUT2 #( + .INIT(4'h9)) + pkt_len_counter_dec__0_carry__0_i_4 + (.I0(reg_pkt_len_counter[4]), + .I1(reg_pkt_len_counter[5]), + .O(pkt_len_counter_dec__0_carry__0_i_4_n_0)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 pkt_len_counter_dec__0_carry__1 + (.CI(pkt_len_counter_dec__0_carry__0_n_0), + .CO({NLW_pkt_len_counter_dec__0_carry__1_CO_UNCONNECTED[3:2],pkt_len_counter_dec__0_carry__1_n_2,pkt_len_counter_dec__0_carry__1_n_3}), + .CYINIT(1'b0), + .DI({1'b0,1'b0,reg_pkt_len_counter[9:8]}), + .O({NLW_pkt_len_counter_dec__0_carry__1_O_UNCONNECTED[3],pkt_len_counter[11:9]}), + .S({1'b0,pkt_len_counter_dec__0_carry__1_i_1_n_0,pkt_len_counter_dec__0_carry__1_i_2_n_0,pkt_len_counter_dec__0_carry__1_i_3_n_0})); + LUT2 #( + .INIT(4'h9)) + pkt_len_counter_dec__0_carry__1_i_1 + (.I0(reg_pkt_len_counter[10]), + .I1(reg_pkt_len_counter[11]), + .O(pkt_len_counter_dec__0_carry__1_i_1_n_0)); + LUT2 #( + .INIT(4'h9)) + pkt_len_counter_dec__0_carry__1_i_2 + (.I0(reg_pkt_len_counter[9]), + .I1(reg_pkt_len_counter[10]), + .O(pkt_len_counter_dec__0_carry__1_i_2_n_0)); + LUT2 #( + .INIT(4'h9)) + pkt_len_counter_dec__0_carry__1_i_3 + (.I0(reg_pkt_len_counter[8]), + .I1(reg_pkt_len_counter[9]), + .O(pkt_len_counter_dec__0_carry__1_i_3_n_0)); + LUT2 #( + .INIT(4'hB)) + pkt_len_counter_dec__0_carry_i_1 + (.I0(reg_pkt_len_counter[1]), + .I1(m_axis_rx_tready), + .O(pkt_len_counter_dec__0_carry_i_1_n_0)); + LUT2 #( + .INIT(4'h9)) + pkt_len_counter_dec__0_carry_i_2 + (.I0(reg_pkt_len_counter[3]), + .I1(reg_pkt_len_counter[4]), + .O(pkt_len_counter_dec__0_carry_i_2_n_0)); + LUT2 #( + .INIT(4'h9)) + pkt_len_counter_dec__0_carry_i_3 + (.I0(reg_pkt_len_counter[2]), + .I1(reg_pkt_len_counter[3]), + .O(pkt_len_counter_dec__0_carry_i_3_n_0)); + LUT3 #( + .INIT(8'hD2)) + pkt_len_counter_dec__0_carry_i_4 + (.I0(m_axis_rx_tready), + .I1(reg_pkt_len_counter[1]), + .I2(reg_pkt_len_counter[2]), + .O(pkt_len_counter_dec__0_carry_i_4_n_0)); + LUT2 #( + .INIT(4'h6)) + pkt_len_counter_dec__0_carry_i_5 + (.I0(reg_pkt_len_counter[1]), + .I1(m_axis_rx_tready), + .O(pkt_len_counter_dec__0_carry_i_5_n_0)); + (* SOFT_HLUTNM = "soft_lutpair214" *) + LUT3 #( + .INIT(8'hB8)) + \reg_pkt_len_counter[0]_i_1 + (.I0(reg_pkt_len_counter[0]), + .I1(\reg_pkt_len_counter[11]_i_2_n_0 ), + .I2(new_pkt_len[0]), + .O(pkt_len_counter_0[0])); + (* SOFT_HLUTNM = "soft_lutpair211" *) + LUT3 #( + .INIT(8'hB8)) + \reg_pkt_len_counter[10]_i_1 + (.I0(pkt_len_counter[10]), + .I1(\reg_pkt_len_counter[11]_i_2_n_0 ), + .I2(new_pkt_len[10]), + .O(sel0[10])); + (* SOFT_HLUTNM = "soft_lutpair211" *) + LUT2 #( + .INIT(4'h8)) + \reg_pkt_len_counter[11]_i_1 + (.I0(pkt_len_counter[11]), + .I1(\reg_pkt_len_counter[11]_i_2_n_0 ), + .O(sel0[11])); + LUT6 #( + .INIT(64'hAAAAAAA8AAAAAAAA)) + \reg_pkt_len_counter[11]_i_2 + (.I0(cur_state), + .I1(reg_pkt_len_counter[3]), + .I2(reg_pkt_len_counter[8]), + .I3(reg_pkt_len_counter[7]), + .I4(\reg_pkt_len_counter[11]_i_3_n_0 ), + .I5(\reg_pkt_len_counter[11]_i_4_n_0 ), + .O(\reg_pkt_len_counter[11]_i_2_n_0 )); + LUT4 #( + .INIT(16'hFFEF)) + \reg_pkt_len_counter[11]_i_3 + (.I0(reg_pkt_len_counter[5]), + .I1(reg_pkt_len_counter[4]), + .I2(m_axis_rx_tready), + .I3(reg_pkt_len_counter[9]), + .O(\reg_pkt_len_counter[11]_i_3_n_0 )); + LUT6 #( + .INIT(64'h0000000000000007)) + \reg_pkt_len_counter[11]_i_4 + (.I0(reg_pkt_len_counter[0]), + .I1(reg_pkt_len_counter[1]), + .I2(reg_pkt_len_counter[2]), + .I3(reg_pkt_len_counter[6]), + .I4(reg_pkt_len_counter[10]), + .I5(reg_pkt_len_counter[11]), + .O(\reg_pkt_len_counter[11]_i_4_n_0 )); + LUT3 #( + .INIT(8'hE2)) + \reg_pkt_len_counter[1]_i_1 + (.I0(new_pkt_len[1]), + .I1(\reg_pkt_len_counter[11]_i_2_n_0 ), + .I2(pkt_len_counter[1]), + .O(pkt_len_counter_0[1])); + (* SOFT_HLUTNM = "soft_lutpair210" *) + LUT3 #( + .INIT(8'hB8)) + \reg_pkt_len_counter[2]_i_1 + (.I0(pkt_len_counter[2]), + .I1(\reg_pkt_len_counter[11]_i_2_n_0 ), + .I2(new_pkt_len[2]), + .O(sel0[2])); + (* SOFT_HLUTNM = "soft_lutpair214" *) + LUT3 #( + .INIT(8'hB8)) + \reg_pkt_len_counter[3]_i_1 + (.I0(pkt_len_counter[3]), + .I1(\reg_pkt_len_counter[11]_i_2_n_0 ), + .I2(new_pkt_len[3]), + .O(sel0[3])); + LUT4 #( + .INIT(16'h1EEE)) + \reg_pkt_len_counter[3]_i_7 + (.I0(Q[2]), + .I1(Q[3]), + .I2(Q[1]), + .I3(Q[4]), + .O(S[1])); + LUT4 #( + .INIT(16'h6999)) + \reg_pkt_len_counter[3]_i_8 + (.I0(Q[3]), + .I1(Q[2]), + .I2(Q[4]), + .I3(Q[0]), + .O(S[0])); + (* SOFT_HLUTNM = "soft_lutpair208" *) + LUT3 #( + .INIT(8'hB8)) + \reg_pkt_len_counter[4]_i_1 + (.I0(pkt_len_counter[4]), + .I1(\reg_pkt_len_counter[11]_i_2_n_0 ), + .I2(new_pkt_len[4]), + .O(sel0[4])); + (* SOFT_HLUTNM = "soft_lutpair212" *) + LUT3 #( + .INIT(8'hB8)) + \reg_pkt_len_counter[5]_i_1 + (.I0(pkt_len_counter[5]), + .I1(\reg_pkt_len_counter[11]_i_2_n_0 ), + .I2(new_pkt_len[5]), + .O(sel0[5])); + (* SOFT_HLUTNM = "soft_lutpair209" *) + LUT3 #( + .INIT(8'hB8)) + \reg_pkt_len_counter[6]_i_1 + (.I0(pkt_len_counter[6]), + .I1(\reg_pkt_len_counter[11]_i_2_n_0 ), + .I2(new_pkt_len[6]), + .O(sel0[6])); + (* SOFT_HLUTNM = "soft_lutpair213" *) + LUT3 #( + .INIT(8'hB8)) + \reg_pkt_len_counter[7]_i_1 + (.I0(pkt_len_counter[7]), + .I1(\reg_pkt_len_counter[11]_i_2_n_0 ), + .I2(new_pkt_len[7]), + .O(sel0[7])); + (* SOFT_HLUTNM = "soft_lutpair207" *) + LUT3 #( + .INIT(8'hB8)) + \reg_pkt_len_counter[8]_i_1 + (.I0(pkt_len_counter[8]), + .I1(\reg_pkt_len_counter[11]_i_2_n_0 ), + .I2(new_pkt_len[8]), + .O(sel0[8])); + (* SOFT_HLUTNM = "soft_lutpair212" *) + LUT3 #( + .INIT(8'hB8)) + \reg_pkt_len_counter[9]_i_1 + (.I0(pkt_len_counter[9]), + .I1(\reg_pkt_len_counter[11]_i_2_n_0 ), + .I2(new_pkt_len[9]), + .O(sel0[9])); + FDRE \reg_pkt_len_counter_reg[0] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(pkt_len_counter_0[0]), + .Q(reg_pkt_len_counter[0]), + .R(cur_state_reg_0)); + FDRE \reg_pkt_len_counter_reg[10] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(sel0[10]), + .Q(reg_pkt_len_counter[10]), + .R(cur_state_reg_0)); + FDRE \reg_pkt_len_counter_reg[11] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(sel0[11]), + .Q(reg_pkt_len_counter[11]), + .R(cur_state_reg_0)); + FDRE \reg_pkt_len_counter_reg[1] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(pkt_len_counter_0[1]), + .Q(reg_pkt_len_counter[1]), + .R(cur_state_reg_0)); + FDRE \reg_pkt_len_counter_reg[2] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(sel0[2]), + .Q(reg_pkt_len_counter[2]), + .R(cur_state_reg_0)); + FDRE \reg_pkt_len_counter_reg[3] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(sel0[3]), + .Q(reg_pkt_len_counter[3]), + .R(cur_state_reg_0)); + FDRE \reg_pkt_len_counter_reg[4] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(sel0[4]), + .Q(reg_pkt_len_counter[4]), + .R(cur_state_reg_0)); + FDRE \reg_pkt_len_counter_reg[5] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(sel0[5]), + .Q(reg_pkt_len_counter[5]), + .R(cur_state_reg_0)); + FDRE \reg_pkt_len_counter_reg[6] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(sel0[6]), + .Q(reg_pkt_len_counter[6]), + .R(cur_state_reg_0)); + FDRE \reg_pkt_len_counter_reg[7] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(sel0[7]), + .Q(reg_pkt_len_counter[7]), + .R(cur_state_reg_0)); + FDRE \reg_pkt_len_counter_reg[8] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(sel0[8]), + .Q(reg_pkt_len_counter[8]), + .R(cur_state_reg_0)); + FDRE \reg_pkt_len_counter_reg[9] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(sel0[9]), + .Q(reg_pkt_len_counter[9]), + .R(cur_state_reg_0)); + LUT6 #( + .INIT(64'h0000000000000001)) + \reg_tkeep[7]_i_2 + (.I0(sel0[11]), + .I1(sel0[10]), + .I2(\reg_tkeep[7]_i_4_n_0 ), + .I3(\reg_tkeep[7]_i_5_n_0 ), + .I4(\reg_tkeep[7]_i_6_n_0 ), + .I5(\reg_tkeep[7]_i_7_n_0 ), + .O(\reg_tkeep[7]_i_7_0 )); + (* SOFT_HLUTNM = "soft_lutpair213" *) + LUT3 #( + .INIT(8'h47)) + \reg_tkeep[7]_i_3 + (.I0(pkt_len_counter[1]), + .I1(\reg_pkt_len_counter[11]_i_2_n_0 ), + .I2(new_pkt_len[1]), + .O(\reg_pkt_len_counter_reg[3]_0 )); + (* SOFT_HLUTNM = "soft_lutpair207" *) + LUT5 #( + .INIT(32'hFFFACCFA)) + \reg_tkeep[7]_i_4 + (.I0(new_pkt_len[8]), + .I1(pkt_len_counter[8]), + .I2(new_pkt_len[9]), + .I3(\reg_pkt_len_counter[11]_i_2_n_0 ), + .I4(pkt_len_counter[9]), + .O(\reg_tkeep[7]_i_4_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair209" *) + LUT5 #( + .INIT(32'hFFFACCFA)) + \reg_tkeep[7]_i_5 + (.I0(new_pkt_len[6]), + .I1(pkt_len_counter[6]), + .I2(new_pkt_len[7]), + .I3(\reg_pkt_len_counter[11]_i_2_n_0 ), + .I4(pkt_len_counter[7]), + .O(\reg_tkeep[7]_i_5_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair208" *) + LUT5 #( + .INIT(32'hFFFACCFA)) + \reg_tkeep[7]_i_6 + (.I0(new_pkt_len[4]), + .I1(pkt_len_counter[4]), + .I2(new_pkt_len[5]), + .I3(\reg_pkt_len_counter[11]_i_2_n_0 ), + .I4(pkt_len_counter[5]), + .O(\reg_tkeep[7]_i_6_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair210" *) + LUT5 #( + .INIT(32'hFFFACCFA)) + \reg_tkeep[7]_i_7 + (.I0(new_pkt_len[2]), + .I1(pkt_len_counter[2]), + .I2(new_pkt_len[3]), + .I3(\reg_pkt_len_counter[11]_i_2_n_0 ), + .I4(pkt_len_counter[3]), + .O(\reg_tkeep[7]_i_7_n_0 )); + LUT5 #( + .INIT(32'hFFFFB000)) + reg_tlast_i_1 + (.I0(\reg_pkt_len_counter_reg[3]_0 ), + .I1(pkt_len_counter_0[0]), + .I2(null_mux_sel), + .I3(\reg_tkeep[7]_i_7_0 ), + .I4(\m_axis_rx_tuser_reg[21] ), + .O(null_mux_sel_reg_0)); + LUT6 #( + .INIT(64'hB8308800FFFFFFFF)) + trn_rdst_rdy_i_3 + (.I0(pkt_len_counter[1]), + .I1(\reg_pkt_len_counter[11]_i_2_n_0 ), + .I2(new_pkt_len[1]), + .I3(reg_pkt_len_counter[0]), + .I4(new_pkt_len[0]), + .I5(null_mux_sel), + .O(\reg_pkt_len_counter_reg[0]_0 )); +endmodule + +module pcie_7x_0_pcie_7x_0_axi_basic_rx_pipeline + (E, + trn_rsrc_dsc_d, + m_axis_rx_tvalid_reg_0, + m_axis_rx_tkeep, + m_axis_rx_tlast, + null_mux_sel, + trn_in_packet, + reg_dsc_detect_reg_0, + user_reset_out_reg, + Q, + data_prev_reg_0, + data_prev_reg_1, + new_pkt_len, + m_axis_rx_tuser, + \trn_rbar_hit_prev_reg[0]_0 , + pipe_userclk2_in, + trn_rrem, + trn_rsrc_dsc, + rsrc_rdy_filtered, + trn_reof, + reg_tlast_reg_0, + trn_rsrc_dsc_prev0, + trn_rsof, + trn_recrc_err, + trn_rerrfwd, + null_mux_sel_reg_0, + trn_in_packet_reg_0, + m_axis_rx_tready, + dsc_detect, + trn_rdst_rdy_reg_0, + trn_rdst_rdy_reg_1, + \reg_tkeep_reg[7]_0 , + trn_rd, + trn_rbar_hit, + S, + D); + output [0:0]E; + output trn_rsrc_dsc_d; + output m_axis_rx_tvalid_reg_0; + output [0:0]m_axis_rx_tkeep; + output m_axis_rx_tlast; + output null_mux_sel; + output trn_in_packet; + output reg_dsc_detect_reg_0; + output user_reset_out_reg; + output [63:0]Q; + output data_prev_reg_0; + output data_prev_reg_1; + output [10:0]new_pkt_len; + output [12:0]m_axis_rx_tuser; + input \trn_rbar_hit_prev_reg[0]_0 ; + input pipe_userclk2_in; + input [0:0]trn_rrem; + input trn_rsrc_dsc; + input rsrc_rdy_filtered; + input trn_reof; + input reg_tlast_reg_0; + input trn_rsrc_dsc_prev0; + input trn_rsof; + input trn_recrc_err; + input trn_rerrfwd; + input null_mux_sel_reg_0; + input trn_in_packet_reg_0; + input m_axis_rx_tready; + input dsc_detect; + input trn_rdst_rdy_reg_0; + input trn_rdst_rdy_reg_1; + input \reg_tkeep_reg[7]_0 ; + input [63:0]trn_rd; + input [6:0]trn_rbar_hit; + input [1:0]S; + input [1:0]D; + + wire [1:0]D; + wire [0:0]E; + wire [63:0]Q; + wire [1:0]S; + wire data_hold; + wire data_prev; + wire data_prev_reg_0; + wire data_prev_reg_1; + wire dsc_detect; + wire \m_axis_rx_tdata[63]_i_1_n_0 ; + wire [0:0]m_axis_rx_tkeep; + wire m_axis_rx_tlast; + wire m_axis_rx_tready; + wire [12:0]m_axis_rx_tuser; + wire \m_axis_rx_tuser[0]_i_1_n_0 ; + wire \m_axis_rx_tuser[14]_i_1_n_0 ; + wire \m_axis_rx_tuser[14]_i_2_n_0 ; + wire \m_axis_rx_tuser[18]_i_1_n_0 ; + wire \m_axis_rx_tuser[1]_i_1_n_0 ; + wire \m_axis_rx_tuser[21]_i_1_n_0 ; + wire \m_axis_rx_tuser[2]_i_1_n_0 ; + wire \m_axis_rx_tuser[3]_i_1_n_0 ; + wire \m_axis_rx_tuser[4]_i_1_n_0 ; + wire \m_axis_rx_tuser[5]_i_1_n_0 ; + wire \m_axis_rx_tuser[6]_i_1_n_0 ; + wire \m_axis_rx_tuser[7]_i_1_n_0 ; + wire \m_axis_rx_tuser[8]_i_1_n_0 ; + wire m_axis_rx_tvalid_i_1_n_0; + wire m_axis_rx_tvalid_reg_0; + wire [10:0]new_pkt_len; + wire null_mux_sel; + wire null_mux_sel_reg_0; + wire [63:0]p_1_in; + wire [1:0]packet_overhead; + wire pipe_userclk2_in; + wire reg_dsc_detect_i_1_n_0; + wire reg_dsc_detect_reg_0; + wire \reg_pkt_len_counter[10]_i_3_n_0 ; + wire \reg_pkt_len_counter[10]_i_4_n_0 ; + wire \reg_pkt_len_counter[3]_i_5_n_0 ; + wire \reg_pkt_len_counter[3]_i_6_n_0 ; + wire \reg_pkt_len_counter[7]_i_3_n_0 ; + wire \reg_pkt_len_counter[7]_i_4_n_0 ; + wire \reg_pkt_len_counter[7]_i_5_n_0 ; + wire \reg_pkt_len_counter[7]_i_6_n_0 ; + wire \reg_pkt_len_counter_reg[10]_i_2_n_3 ; + wire \reg_pkt_len_counter_reg[3]_i_2_n_0 ; + wire \reg_pkt_len_counter_reg[3]_i_2_n_1 ; + wire \reg_pkt_len_counter_reg[3]_i_2_n_2 ; + wire \reg_pkt_len_counter_reg[3]_i_2_n_3 ; + wire \reg_pkt_len_counter_reg[7]_i_2_n_0 ; + wire \reg_pkt_len_counter_reg[7]_i_2_n_1 ; + wire \reg_pkt_len_counter_reg[7]_i_2_n_2 ; + wire \reg_pkt_len_counter_reg[7]_i_2_n_3 ; + wire [7:7]reg_tkeep; + wire \reg_tkeep_reg[7]_0 ; + wire reg_tlast_reg_0; + wire rsrc_rdy_filtered; + wire trn_in_packet; + wire trn_in_packet_reg_0; + wire [6:0]trn_rbar_hit; + wire [6:0]trn_rbar_hit_prev; + wire \trn_rbar_hit_prev_reg[0]_0 ; + wire [63:0]trn_rd; + wire [63:0]trn_rd_prev; + wire trn_rdst_rdy_i_1_n_0; + wire trn_rdst_rdy_i_2_n_0; + wire trn_rdst_rdy_reg_0; + wire trn_rdst_rdy_reg_1; + wire trn_recrc_err; + wire trn_recrc_err_prev; + wire trn_reof; + wire trn_reof_prev; + wire trn_rerrfwd; + wire trn_rerrfwd_prev; + wire [0:0]trn_rrem; + wire trn_rrem_prev; + wire trn_rsof; + wire trn_rsof_prev; + wire trn_rsrc_dsc; + wire trn_rsrc_dsc_d; + wire trn_rsrc_dsc_prev; + wire trn_rsrc_dsc_prev0; + wire trn_rsrc_rdy_prev; + wire user_reset_out_reg; + wire [3:1]\NLW_reg_pkt_len_counter_reg[10]_i_2_CO_UNCONNECTED ; + wire [3:2]\NLW_reg_pkt_len_counter_reg[10]_i_2_O_UNCONNECTED ; + + LUT2 #( + .INIT(4'h2)) + data_prev_i_1 + (.I0(m_axis_rx_tvalid_reg_0), + .I1(m_axis_rx_tready), + .O(data_hold)); + FDRE data_prev_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(data_hold), + .Q(data_prev), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + (* SOFT_HLUTNM = "soft_lutpair243" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[0]_i_1 + (.I0(trn_rd_prev[0]), + .I1(data_prev), + .I2(trn_rd[32]), + .O(p_1_in[0])); + (* SOFT_HLUTNM = "soft_lutpair246" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[10]_i_1 + (.I0(trn_rd_prev[10]), + .I1(data_prev), + .I2(trn_rd[42]), + .O(p_1_in[10])); + (* SOFT_HLUTNM = "soft_lutpair244" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[11]_i_1 + (.I0(trn_rd_prev[11]), + .I1(data_prev), + .I2(trn_rd[43]), + .O(p_1_in[11])); + (* SOFT_HLUTNM = "soft_lutpair241" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[12]_i_1 + (.I0(trn_rd_prev[12]), + .I1(data_prev), + .I2(trn_rd[44]), + .O(p_1_in[12])); + (* SOFT_HLUTNM = "soft_lutpair239" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[13]_i_1 + (.I0(trn_rd_prev[13]), + .I1(data_prev), + .I2(trn_rd[45]), + .O(p_1_in[13])); + (* SOFT_HLUTNM = "soft_lutpair249" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[14]_i_1 + (.I0(trn_rd_prev[14]), + .I1(data_prev), + .I2(trn_rd[46]), + .O(p_1_in[14])); + (* SOFT_HLUTNM = "soft_lutpair242" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[15]_i_1 + (.I0(trn_rd_prev[15]), + .I1(data_prev), + .I2(trn_rd[47]), + .O(p_1_in[15])); + (* SOFT_HLUTNM = "soft_lutpair238" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[16]_i_1 + (.I0(trn_rd_prev[16]), + .I1(data_prev), + .I2(trn_rd[48]), + .O(p_1_in[16])); + (* SOFT_HLUTNM = "soft_lutpair234" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[17]_i_1 + (.I0(trn_rd_prev[17]), + .I1(data_prev), + .I2(trn_rd[49]), + .O(p_1_in[17])); + (* SOFT_HLUTNM = "soft_lutpair232" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[18]_i_1 + (.I0(trn_rd_prev[18]), + .I1(data_prev), + .I2(trn_rd[50]), + .O(p_1_in[18])); + (* SOFT_HLUTNM = "soft_lutpair246" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[19]_i_1 + (.I0(trn_rd_prev[19]), + .I1(data_prev), + .I2(trn_rd[51]), + .O(p_1_in[19])); + (* SOFT_HLUTNM = "soft_lutpair249" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[1]_i_1 + (.I0(trn_rd_prev[1]), + .I1(data_prev), + .I2(trn_rd[33]), + .O(p_1_in[1])); + (* SOFT_HLUTNM = "soft_lutpair242" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[20]_i_1 + (.I0(trn_rd_prev[20]), + .I1(data_prev), + .I2(trn_rd[52]), + .O(p_1_in[20])); + (* SOFT_HLUTNM = "soft_lutpair237" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[21]_i_1 + (.I0(trn_rd_prev[21]), + .I1(data_prev), + .I2(trn_rd[53]), + .O(p_1_in[21])); + (* SOFT_HLUTNM = "soft_lutpair245" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[22]_i_1 + (.I0(trn_rd_prev[22]), + .I1(data_prev), + .I2(trn_rd[54]), + .O(p_1_in[22])); + (* SOFT_HLUTNM = "soft_lutpair247" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[23]_i_1 + (.I0(trn_rd_prev[23]), + .I1(data_prev), + .I2(trn_rd[55]), + .O(p_1_in[23])); + (* SOFT_HLUTNM = "soft_lutpair240" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[24]_i_1 + (.I0(trn_rd_prev[24]), + .I1(data_prev), + .I2(trn_rd[56]), + .O(p_1_in[24])); + (* SOFT_HLUTNM = "soft_lutpair231" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[25]_i_1 + (.I0(trn_rd_prev[25]), + .I1(data_prev), + .I2(trn_rd[57]), + .O(p_1_in[25])); + (* SOFT_HLUTNM = "soft_lutpair229" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[26]_i_1 + (.I0(trn_rd_prev[26]), + .I1(data_prev), + .I2(trn_rd[58]), + .O(p_1_in[26])); + (* SOFT_HLUTNM = "soft_lutpair232" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[27]_i_1 + (.I0(trn_rd_prev[27]), + .I1(data_prev), + .I2(trn_rd[59]), + .O(p_1_in[27])); + (* SOFT_HLUTNM = "soft_lutpair236" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[28]_i_1 + (.I0(trn_rd_prev[28]), + .I1(data_prev), + .I2(trn_rd[60]), + .O(p_1_in[28])); + (* SOFT_HLUTNM = "soft_lutpair228" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[29]_i_1 + (.I0(trn_rd_prev[29]), + .I1(data_prev), + .I2(trn_rd[61]), + .O(p_1_in[29])); + (* SOFT_HLUTNM = "soft_lutpair240" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[2]_i_1 + (.I0(trn_rd_prev[2]), + .I1(data_prev), + .I2(trn_rd[34]), + .O(p_1_in[2])); + (* SOFT_HLUTNM = "soft_lutpair227" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[30]_i_1 + (.I0(trn_rd_prev[30]), + .I1(data_prev), + .I2(trn_rd[62]), + .O(p_1_in[30])); + (* SOFT_HLUTNM = "soft_lutpair222" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[31]_i_1 + (.I0(trn_rd_prev[31]), + .I1(data_prev), + .I2(trn_rd[63]), + .O(p_1_in[31])); + (* SOFT_HLUTNM = "soft_lutpair226" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[32]_i_1 + (.I0(trn_rd_prev[32]), + .I1(data_prev), + .I2(trn_rd[0]), + .O(p_1_in[32])); + (* SOFT_HLUTNM = "soft_lutpair218" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[33]_i_1 + (.I0(trn_rd_prev[33]), + .I1(data_prev), + .I2(trn_rd[1]), + .O(p_1_in[33])); + (* SOFT_HLUTNM = "soft_lutpair225" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[34]_i_1 + (.I0(trn_rd_prev[34]), + .I1(data_prev), + .I2(trn_rd[2]), + .O(p_1_in[34])); + (* SOFT_HLUTNM = "soft_lutpair219" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[35]_i_1 + (.I0(trn_rd_prev[35]), + .I1(data_prev), + .I2(trn_rd[3]), + .O(p_1_in[35])); + (* SOFT_HLUTNM = "soft_lutpair227" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[36]_i_1 + (.I0(trn_rd_prev[36]), + .I1(data_prev), + .I2(trn_rd[4]), + .O(p_1_in[36])); + (* SOFT_HLUTNM = "soft_lutpair218" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[37]_i_1 + (.I0(trn_rd_prev[37]), + .I1(data_prev), + .I2(trn_rd[5]), + .O(p_1_in[37])); + (* SOFT_HLUTNM = "soft_lutpair225" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[38]_i_1 + (.I0(trn_rd_prev[38]), + .I1(data_prev), + .I2(trn_rd[6]), + .O(p_1_in[38])); + (* SOFT_HLUTNM = "soft_lutpair221" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[39]_i_1 + (.I0(trn_rd_prev[39]), + .I1(data_prev), + .I2(trn_rd[7]), + .O(p_1_in[39])); + (* SOFT_HLUTNM = "soft_lutpair248" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[3]_i_1 + (.I0(trn_rd_prev[3]), + .I1(data_prev), + .I2(trn_rd[35]), + .O(p_1_in[3])); + (* SOFT_HLUTNM = "soft_lutpair223" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[40]_i_1 + (.I0(trn_rd_prev[40]), + .I1(data_prev), + .I2(trn_rd[8]), + .O(p_1_in[40])); + (* SOFT_HLUTNM = "soft_lutpair222" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[41]_i_1 + (.I0(trn_rd_prev[41]), + .I1(data_prev), + .I2(trn_rd[9]), + .O(p_1_in[41])); + (* SOFT_HLUTNM = "soft_lutpair221" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[42]_i_1 + (.I0(trn_rd_prev[42]), + .I1(data_prev), + .I2(trn_rd[10]), + .O(p_1_in[42])); + (* SOFT_HLUTNM = "soft_lutpair223" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[43]_i_1 + (.I0(trn_rd_prev[43]), + .I1(data_prev), + .I2(trn_rd[11]), + .O(p_1_in[43])); + (* SOFT_HLUTNM = "soft_lutpair229" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[44]_i_1 + (.I0(trn_rd_prev[44]), + .I1(data_prev), + .I2(trn_rd[12]), + .O(p_1_in[44])); + (* SOFT_HLUTNM = "soft_lutpair228" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[45]_i_1 + (.I0(trn_rd_prev[45]), + .I1(data_prev), + .I2(trn_rd[13]), + .O(p_1_in[45])); + (* SOFT_HLUTNM = "soft_lutpair220" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[46]_i_1 + (.I0(trn_rd_prev[46]), + .I1(data_prev), + .I2(trn_rd[14]), + .O(p_1_in[46])); + (* SOFT_HLUTNM = "soft_lutpair231" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[47]_i_1 + (.I0(trn_rd_prev[47]), + .I1(data_prev), + .I2(trn_rd[15]), + .O(p_1_in[47])); + (* SOFT_HLUTNM = "soft_lutpair220" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[48]_i_1 + (.I0(trn_rd_prev[48]), + .I1(data_prev), + .I2(trn_rd[16]), + .O(p_1_in[48])); + (* SOFT_HLUTNM = "soft_lutpair235" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[49]_i_1 + (.I0(trn_rd_prev[49]), + .I1(data_prev), + .I2(trn_rd[17]), + .O(p_1_in[49])); + (* SOFT_HLUTNM = "soft_lutpair248" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[4]_i_1 + (.I0(trn_rd_prev[4]), + .I1(data_prev), + .I2(trn_rd[36]), + .O(p_1_in[4])); + (* SOFT_HLUTNM = "soft_lutpair233" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[50]_i_1 + (.I0(trn_rd_prev[50]), + .I1(data_prev), + .I2(trn_rd[18]), + .O(p_1_in[50])); + (* SOFT_HLUTNM = "soft_lutpair230" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[51]_i_1 + (.I0(trn_rd_prev[51]), + .I1(data_prev), + .I2(trn_rd[19]), + .O(p_1_in[51])); + (* SOFT_HLUTNM = "soft_lutpair219" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[52]_i_1 + (.I0(trn_rd_prev[52]), + .I1(data_prev), + .I2(trn_rd[20]), + .O(p_1_in[52])); + (* SOFT_HLUTNM = "soft_lutpair226" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[53]_i_1 + (.I0(trn_rd_prev[53]), + .I1(data_prev), + .I2(trn_rd[21]), + .O(p_1_in[53])); + (* SOFT_HLUTNM = "soft_lutpair224" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[54]_i_1 + (.I0(trn_rd_prev[54]), + .I1(data_prev), + .I2(trn_rd[22]), + .O(p_1_in[54])); + (* SOFT_HLUTNM = "soft_lutpair224" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[55]_i_1 + (.I0(trn_rd_prev[55]), + .I1(data_prev), + .I2(trn_rd[23]), + .O(p_1_in[55])); + (* SOFT_HLUTNM = "soft_lutpair239" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[56]_i_1 + (.I0(trn_rd_prev[56]), + .I1(data_prev), + .I2(trn_rd[24]), + .O(p_1_in[56])); + (* SOFT_HLUTNM = "soft_lutpair236" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[57]_i_1 + (.I0(trn_rd_prev[57]), + .I1(data_prev), + .I2(trn_rd[25]), + .O(p_1_in[57])); + (* SOFT_HLUTNM = "soft_lutpair238" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[58]_i_1 + (.I0(trn_rd_prev[58]), + .I1(data_prev), + .I2(trn_rd[26]), + .O(p_1_in[58])); + (* SOFT_HLUTNM = "soft_lutpair230" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[59]_i_1 + (.I0(trn_rd_prev[59]), + .I1(data_prev), + .I2(trn_rd[27]), + .O(p_1_in[59])); + (* SOFT_HLUTNM = "soft_lutpair237" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[5]_i_1 + (.I0(trn_rd_prev[5]), + .I1(data_prev), + .I2(trn_rd[37]), + .O(p_1_in[5])); + (* SOFT_HLUTNM = "soft_lutpair233" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[60]_i_1 + (.I0(trn_rd_prev[60]), + .I1(data_prev), + .I2(trn_rd[28]), + .O(p_1_in[60])); + (* SOFT_HLUTNM = "soft_lutpair243" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[61]_i_1 + (.I0(trn_rd_prev[61]), + .I1(data_prev), + .I2(trn_rd[29]), + .O(p_1_in[61])); + (* SOFT_HLUTNM = "soft_lutpair234" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[62]_i_1 + (.I0(trn_rd_prev[62]), + .I1(data_prev), + .I2(trn_rd[30]), + .O(p_1_in[62])); + LUT2 #( + .INIT(4'hB)) + \m_axis_rx_tdata[63]_i_1 + (.I0(m_axis_rx_tready), + .I1(m_axis_rx_tvalid_reg_0), + .O(\m_axis_rx_tdata[63]_i_1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair247" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[63]_i_2 + (.I0(trn_rd_prev[63]), + .I1(data_prev), + .I2(trn_rd[31]), + .O(p_1_in[63])); + (* SOFT_HLUTNM = "soft_lutpair235" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[6]_i_1 + (.I0(trn_rd_prev[6]), + .I1(data_prev), + .I2(trn_rd[38]), + .O(p_1_in[6])); + (* SOFT_HLUTNM = "soft_lutpair245" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[7]_i_1 + (.I0(trn_rd_prev[7]), + .I1(data_prev), + .I2(trn_rd[39]), + .O(p_1_in[7])); + (* SOFT_HLUTNM = "soft_lutpair244" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[8]_i_1 + (.I0(trn_rd_prev[8]), + .I1(data_prev), + .I2(trn_rd[40]), + .O(p_1_in[8])); + (* SOFT_HLUTNM = "soft_lutpair241" *) + LUT3 #( + .INIT(8'hB8)) + \m_axis_rx_tdata[9]_i_1 + (.I0(trn_rd_prev[9]), + .I1(data_prev), + .I2(trn_rd[41]), + .O(p_1_in[9])); + FDRE \m_axis_rx_tdata_reg[0] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[0]), + .Q(Q[0]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[10] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[10]), + .Q(Q[10]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[11] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[11]), + .Q(Q[11]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[12] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[12]), + .Q(Q[12]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[13] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[13]), + .Q(Q[13]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[14] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[14]), + .Q(Q[14]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[15] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[15]), + .Q(Q[15]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[16] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[16]), + .Q(Q[16]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[17] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[17]), + .Q(Q[17]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[18] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[18]), + .Q(Q[18]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[19] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[19]), + .Q(Q[19]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[1] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[1]), + .Q(Q[1]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[20] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[20]), + .Q(Q[20]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[21] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[21]), + .Q(Q[21]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[22] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[22]), + .Q(Q[22]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[23] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[23]), + .Q(Q[23]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[24] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[24]), + .Q(Q[24]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[25] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[25]), + .Q(Q[25]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[26] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[26]), + .Q(Q[26]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[27] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[27]), + .Q(Q[27]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[28] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[28]), + .Q(Q[28]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[29] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[29]), + .Q(Q[29]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[2] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[2]), + .Q(Q[2]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[30] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[30]), + .Q(Q[30]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[31] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[31]), + .Q(Q[31]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[32] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[32]), + .Q(Q[32]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[33] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[33]), + .Q(Q[33]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[34] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[34]), + .Q(Q[34]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[35] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[35]), + .Q(Q[35]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[36] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[36]), + .Q(Q[36]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[37] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[37]), + .Q(Q[37]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[38] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[38]), + .Q(Q[38]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[39] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[39]), + .Q(Q[39]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[3] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[3]), + .Q(Q[3]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[40] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[40]), + .Q(Q[40]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[41] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[41]), + .Q(Q[41]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[42] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[42]), + .Q(Q[42]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[43] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[43]), + .Q(Q[43]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[44] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[44]), + .Q(Q[44]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[45] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[45]), + .Q(Q[45]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[46] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[46]), + .Q(Q[46]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[47] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[47]), + .Q(Q[47]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[48] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[48]), + .Q(Q[48]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[49] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[49]), + .Q(Q[49]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[4] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[4]), + .Q(Q[4]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[50] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[50]), + .Q(Q[50]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[51] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[51]), + .Q(Q[51]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[52] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[52]), + .Q(Q[52]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[53] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[53]), + .Q(Q[53]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[54] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[54]), + .Q(Q[54]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[55] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[55]), + .Q(Q[55]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[56] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[56]), + .Q(Q[56]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[57] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[57]), + .Q(Q[57]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[58] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[58]), + .Q(Q[58]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[59] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[59]), + .Q(Q[59]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[5] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[5]), + .Q(Q[5]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[60] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[60]), + .Q(Q[60]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[61] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[61]), + .Q(Q[61]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[62] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[62]), + .Q(Q[62]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[63] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[63]), + .Q(Q[63]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[6] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[6]), + .Q(Q[6]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[7] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[7]), + .Q(Q[7]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[8] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[8]), + .Q(Q[8]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \m_axis_rx_tdata_reg[9] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(p_1_in[9]), + .Q(Q[9]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + LUT5 #( + .INIT(32'h000000E2)) + \m_axis_rx_tuser[0]_i_1 + (.I0(trn_recrc_err), + .I1(data_prev), + .I2(trn_recrc_err_prev), + .I3(\trn_rbar_hit_prev_reg[0]_0 ), + .I4(null_mux_sel), + .O(\m_axis_rx_tuser[0]_i_1_n_0 )); + LUT6 #( + .INIT(64'h0000000004F40404)) + \m_axis_rx_tuser[14]_i_1 + (.I0(trn_rsrc_dsc), + .I1(trn_rsof), + .I2(data_prev), + .I3(trn_rsrc_dsc_prev), + .I4(trn_rsof_prev), + .I5(\m_axis_rx_tuser[14]_i_2_n_0 ), + .O(\m_axis_rx_tuser[14]_i_1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair215" *) + LUT2 #( + .INIT(4'hE)) + \m_axis_rx_tuser[14]_i_2 + (.I0(\trn_rbar_hit_prev_reg[0]_0 ), + .I1(null_mux_sel), + .O(\m_axis_rx_tuser[14]_i_2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair216" *) + LUT1 #( + .INIT(2'h1)) + \m_axis_rx_tuser[18]_i_1 + (.I0(\trn_rbar_hit_prev_reg[0]_0 ), + .O(\m_axis_rx_tuser[18]_i_1_n_0 )); + LUT4 #( + .INIT(16'h00E2)) + \m_axis_rx_tuser[19]_i_2 + (.I0(trn_rrem), + .I1(data_prev), + .I2(trn_rrem_prev), + .I3(null_mux_sel), + .O(data_prev_reg_1)); + LUT5 #( + .INIT(32'h000000B8)) + \m_axis_rx_tuser[1]_i_1 + (.I0(trn_rerrfwd_prev), + .I1(data_prev), + .I2(trn_rerrfwd), + .I3(\trn_rbar_hit_prev_reg[0]_0 ), + .I4(null_mux_sel), + .O(\m_axis_rx_tuser[1]_i_1_n_0 )); + LUT3 #( + .INIT(8'hEF)) + \m_axis_rx_tuser[21]_i_1 + (.I0(\trn_rbar_hit_prev_reg[0]_0 ), + .I1(m_axis_rx_tready), + .I2(m_axis_rx_tvalid_reg_0), + .O(\m_axis_rx_tuser[21]_i_1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair216" *) + LUT5 #( + .INIT(32'h000000B8)) + \m_axis_rx_tuser[2]_i_1 + (.I0(trn_rbar_hit_prev[0]), + .I1(data_prev), + .I2(trn_rbar_hit[0]), + .I3(\trn_rbar_hit_prev_reg[0]_0 ), + .I4(null_mux_sel), + .O(\m_axis_rx_tuser[2]_i_1_n_0 )); + LUT5 #( + .INIT(32'h000000E2)) + \m_axis_rx_tuser[3]_i_1 + (.I0(trn_rbar_hit[1]), + .I1(data_prev), + .I2(trn_rbar_hit_prev[1]), + .I3(\trn_rbar_hit_prev_reg[0]_0 ), + .I4(null_mux_sel), + .O(\m_axis_rx_tuser[3]_i_1_n_0 )); + LUT5 #( + .INIT(32'h000000E2)) + \m_axis_rx_tuser[4]_i_1 + (.I0(trn_rbar_hit[2]), + .I1(data_prev), + .I2(trn_rbar_hit_prev[2]), + .I3(\trn_rbar_hit_prev_reg[0]_0 ), + .I4(null_mux_sel), + .O(\m_axis_rx_tuser[4]_i_1_n_0 )); + LUT5 #( + .INIT(32'h000000B8)) + \m_axis_rx_tuser[5]_i_1 + (.I0(trn_rbar_hit_prev[3]), + .I1(data_prev), + .I2(trn_rbar_hit[3]), + .I3(\trn_rbar_hit_prev_reg[0]_0 ), + .I4(null_mux_sel), + .O(\m_axis_rx_tuser[5]_i_1_n_0 )); + LUT5 #( + .INIT(32'h000000B8)) + \m_axis_rx_tuser[6]_i_1 + (.I0(trn_rbar_hit_prev[4]), + .I1(data_prev), + .I2(trn_rbar_hit[4]), + .I3(\trn_rbar_hit_prev_reg[0]_0 ), + .I4(null_mux_sel), + .O(\m_axis_rx_tuser[6]_i_1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair215" *) + LUT5 #( + .INIT(32'h000000E2)) + \m_axis_rx_tuser[7]_i_1 + (.I0(trn_rbar_hit[5]), + .I1(data_prev), + .I2(trn_rbar_hit_prev[5]), + .I3(\trn_rbar_hit_prev_reg[0]_0 ), + .I4(null_mux_sel), + .O(\m_axis_rx_tuser[7]_i_1_n_0 )); + LUT5 #( + .INIT(32'h000000E2)) + \m_axis_rx_tuser[8]_i_1 + (.I0(trn_rbar_hit[6]), + .I1(data_prev), + .I2(trn_rbar_hit_prev[6]), + .I3(\trn_rbar_hit_prev_reg[0]_0 ), + .I4(null_mux_sel), + .O(\m_axis_rx_tuser[8]_i_1_n_0 )); + FDRE \m_axis_rx_tuser_reg[0] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tuser[21]_i_1_n_0 ), + .D(\m_axis_rx_tuser[0]_i_1_n_0 ), + .Q(m_axis_rx_tuser[0]), + .R(1'b0)); + FDRE \m_axis_rx_tuser_reg[14] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tuser[21]_i_1_n_0 ), + .D(\m_axis_rx_tuser[14]_i_1_n_0 ), + .Q(m_axis_rx_tuser[9]), + .R(1'b0)); + FDRE \m_axis_rx_tuser_reg[18] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tuser[21]_i_1_n_0 ), + .D(\m_axis_rx_tuser[18]_i_1_n_0 ), + .Q(m_axis_rx_tuser[10]), + .R(1'b0)); + FDRE \m_axis_rx_tuser_reg[19] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tuser[21]_i_1_n_0 ), + .D(D[0]), + .Q(m_axis_rx_tuser[11]), + .R(1'b0)); + FDRE \m_axis_rx_tuser_reg[1] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tuser[21]_i_1_n_0 ), + .D(\m_axis_rx_tuser[1]_i_1_n_0 ), + .Q(m_axis_rx_tuser[1]), + .R(1'b0)); + FDRE \m_axis_rx_tuser_reg[21] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tuser[21]_i_1_n_0 ), + .D(D[1]), + .Q(m_axis_rx_tuser[12]), + .R(1'b0)); + FDRE \m_axis_rx_tuser_reg[2] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tuser[21]_i_1_n_0 ), + .D(\m_axis_rx_tuser[2]_i_1_n_0 ), + .Q(m_axis_rx_tuser[2]), + .R(1'b0)); + FDRE \m_axis_rx_tuser_reg[3] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tuser[21]_i_1_n_0 ), + .D(\m_axis_rx_tuser[3]_i_1_n_0 ), + .Q(m_axis_rx_tuser[3]), + .R(1'b0)); + FDRE \m_axis_rx_tuser_reg[4] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tuser[21]_i_1_n_0 ), + .D(\m_axis_rx_tuser[4]_i_1_n_0 ), + .Q(m_axis_rx_tuser[4]), + .R(1'b0)); + FDRE \m_axis_rx_tuser_reg[5] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tuser[21]_i_1_n_0 ), + .D(\m_axis_rx_tuser[5]_i_1_n_0 ), + .Q(m_axis_rx_tuser[5]), + .R(1'b0)); + FDRE \m_axis_rx_tuser_reg[6] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tuser[21]_i_1_n_0 ), + .D(\m_axis_rx_tuser[6]_i_1_n_0 ), + .Q(m_axis_rx_tuser[6]), + .R(1'b0)); + FDRE \m_axis_rx_tuser_reg[7] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tuser[21]_i_1_n_0 ), + .D(\m_axis_rx_tuser[7]_i_1_n_0 ), + .Q(m_axis_rx_tuser[7]), + .R(1'b0)); + FDRE \m_axis_rx_tuser_reg[8] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tuser[21]_i_1_n_0 ), + .D(\m_axis_rx_tuser[8]_i_1_n_0 ), + .Q(m_axis_rx_tuser[8]), + .R(1'b0)); + LUT6 #( + .INIT(64'hFFFFFFFFFFFFFECE)) + m_axis_rx_tvalid_i_1 + (.I0(rsrc_rdy_filtered), + .I1(null_mux_sel), + .I2(data_prev), + .I3(trn_rsrc_rdy_prev), + .I4(reg_dsc_detect_reg_0), + .I5(dsc_detect), + .O(m_axis_rx_tvalid_i_1_n_0)); + FDRE m_axis_rx_tvalid_reg + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(m_axis_rx_tvalid_i_1_n_0), + .Q(m_axis_rx_tvalid_reg_0), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + LUT6 #( + .INIT(64'hABAAABAAABAABBBB)) + null_mux_sel_i_2 + (.I0(\trn_rbar_hit_prev_reg[0]_0 ), + .I1(null_mux_sel), + .I2(m_axis_rx_tready), + .I3(m_axis_rx_tvalid_reg_0), + .I4(dsc_detect), + .I5(reg_dsc_detect_reg_0), + .O(user_reset_out_reg)); + FDRE null_mux_sel_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(null_mux_sel_reg_0), + .Q(null_mux_sel), + .R(1'b0)); + (* SOFT_HLUTNM = "soft_lutpair217" *) + LUT3 #( + .INIT(8'hDC)) + reg_dsc_detect_i_1 + (.I0(null_mux_sel), + .I1(dsc_detect), + .I2(reg_dsc_detect_reg_0), + .O(reg_dsc_detect_i_1_n_0)); + FDRE reg_dsc_detect_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(reg_dsc_detect_i_1_n_0), + .Q(reg_dsc_detect_reg_0), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + LUT2 #( + .INIT(4'h8)) + \reg_pkt_len_counter[10]_i_3 + (.I0(Q[30]), + .I1(Q[9]), + .O(\reg_pkt_len_counter[10]_i_3_n_0 )); + LUT2 #( + .INIT(4'h8)) + \reg_pkt_len_counter[10]_i_4 + (.I0(Q[30]), + .I1(Q[8]), + .O(\reg_pkt_len_counter[10]_i_4_n_0 )); + LUT2 #( + .INIT(4'hE)) + \reg_pkt_len_counter[3]_i_3 + (.I0(Q[29]), + .I1(Q[15]), + .O(packet_overhead[1])); + LUT2 #( + .INIT(4'h9)) + \reg_pkt_len_counter[3]_i_4 + (.I0(Q[15]), + .I1(Q[29]), + .O(packet_overhead[0])); + LUT2 #( + .INIT(4'h8)) + \reg_pkt_len_counter[3]_i_5 + (.I0(Q[30]), + .I1(Q[3]), + .O(\reg_pkt_len_counter[3]_i_5_n_0 )); + LUT2 #( + .INIT(4'h8)) + \reg_pkt_len_counter[3]_i_6 + (.I0(Q[30]), + .I1(Q[2]), + .O(\reg_pkt_len_counter[3]_i_6_n_0 )); + LUT2 #( + .INIT(4'h8)) + \reg_pkt_len_counter[7]_i_3 + (.I0(Q[30]), + .I1(Q[7]), + .O(\reg_pkt_len_counter[7]_i_3_n_0 )); + LUT2 #( + .INIT(4'h8)) + \reg_pkt_len_counter[7]_i_4 + (.I0(Q[30]), + .I1(Q[6]), + .O(\reg_pkt_len_counter[7]_i_4_n_0 )); + LUT2 #( + .INIT(4'h8)) + \reg_pkt_len_counter[7]_i_5 + (.I0(Q[30]), + .I1(Q[5]), + .O(\reg_pkt_len_counter[7]_i_5_n_0 )); + LUT2 #( + .INIT(4'h8)) + \reg_pkt_len_counter[7]_i_6 + (.I0(Q[30]), + .I1(Q[4]), + .O(\reg_pkt_len_counter[7]_i_6_n_0 )); + CARRY4 \reg_pkt_len_counter_reg[10]_i_2 + (.CI(\reg_pkt_len_counter_reg[7]_i_2_n_0 ), + .CO({\NLW_reg_pkt_len_counter_reg[10]_i_2_CO_UNCONNECTED [3],new_pkt_len[10],\NLW_reg_pkt_len_counter_reg[10]_i_2_CO_UNCONNECTED [1],\reg_pkt_len_counter_reg[10]_i_2_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\NLW_reg_pkt_len_counter_reg[10]_i_2_O_UNCONNECTED [3:2],new_pkt_len[9:8]}), + .S({1'b0,1'b1,\reg_pkt_len_counter[10]_i_3_n_0 ,\reg_pkt_len_counter[10]_i_4_n_0 })); + CARRY4 \reg_pkt_len_counter_reg[3]_i_2 + (.CI(1'b0), + .CO({\reg_pkt_len_counter_reg[3]_i_2_n_0 ,\reg_pkt_len_counter_reg[3]_i_2_n_1 ,\reg_pkt_len_counter_reg[3]_i_2_n_2 ,\reg_pkt_len_counter_reg[3]_i_2_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,packet_overhead}), + .O(new_pkt_len[3:0]), + .S({\reg_pkt_len_counter[3]_i_5_n_0 ,\reg_pkt_len_counter[3]_i_6_n_0 ,S})); + CARRY4 \reg_pkt_len_counter_reg[7]_i_2 + (.CI(\reg_pkt_len_counter_reg[3]_i_2_n_0 ), + .CO({\reg_pkt_len_counter_reg[7]_i_2_n_0 ,\reg_pkt_len_counter_reg[7]_i_2_n_1 ,\reg_pkt_len_counter_reg[7]_i_2_n_2 ,\reg_pkt_len_counter_reg[7]_i_2_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O(new_pkt_len[7:4]), + .S({\reg_pkt_len_counter[7]_i_3_n_0 ,\reg_pkt_len_counter[7]_i_4_n_0 ,\reg_pkt_len_counter[7]_i_5_n_0 ,\reg_pkt_len_counter[7]_i_6_n_0 })); + LUT6 #( + .INIT(64'h7F7F7F7070707F70)) + \reg_tkeep[7]_i_1 + (.I0(trn_rdst_rdy_reg_0), + .I1(\reg_tkeep_reg[7]_0 ), + .I2(null_mux_sel), + .I3(trn_rrem), + .I4(data_prev), + .I5(trn_rrem_prev), + .O(reg_tkeep)); + FDSE \reg_tkeep_reg[7] + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(reg_tkeep), + .Q(m_axis_rx_tkeep), + .S(\trn_rbar_hit_prev_reg[0]_0 )); + LUT4 #( + .INIT(16'h00E2)) + reg_tlast_i_2 + (.I0(trn_reof), + .I1(data_prev), + .I2(trn_reof_prev), + .I3(null_mux_sel), + .O(data_prev_reg_0)); + FDRE reg_tlast_reg + (.C(pipe_userclk2_in), + .CE(\m_axis_rx_tdata[63]_i_1_n_0 ), + .D(reg_tlast_reg_0), + .Q(m_axis_rx_tlast), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE trn_in_packet_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(trn_in_packet_reg_0), + .Q(trn_in_packet), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rbar_hit_prev_reg[0] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rbar_hit[0]), + .Q(trn_rbar_hit_prev[0]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rbar_hit_prev_reg[1] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rbar_hit[1]), + .Q(trn_rbar_hit_prev[1]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rbar_hit_prev_reg[2] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rbar_hit[2]), + .Q(trn_rbar_hit_prev[2]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rbar_hit_prev_reg[3] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rbar_hit[3]), + .Q(trn_rbar_hit_prev[3]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rbar_hit_prev_reg[4] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rbar_hit[4]), + .Q(trn_rbar_hit_prev[4]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rbar_hit_prev_reg[5] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rbar_hit[5]), + .Q(trn_rbar_hit_prev[5]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rbar_hit_prev_reg[6] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rbar_hit[6]), + .Q(trn_rbar_hit_prev[6]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[0] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[32]), + .Q(trn_rd_prev[0]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[10] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[42]), + .Q(trn_rd_prev[10]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[11] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[43]), + .Q(trn_rd_prev[11]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[12] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[44]), + .Q(trn_rd_prev[12]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[13] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[45]), + .Q(trn_rd_prev[13]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[14] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[46]), + .Q(trn_rd_prev[14]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[15] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[47]), + .Q(trn_rd_prev[15]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[16] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[48]), + .Q(trn_rd_prev[16]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[17] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[49]), + .Q(trn_rd_prev[17]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[18] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[50]), + .Q(trn_rd_prev[18]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[19] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[51]), + .Q(trn_rd_prev[19]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[1] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[33]), + .Q(trn_rd_prev[1]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[20] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[52]), + .Q(trn_rd_prev[20]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[21] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[53]), + .Q(trn_rd_prev[21]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[22] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[54]), + .Q(trn_rd_prev[22]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[23] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[55]), + .Q(trn_rd_prev[23]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[24] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[56]), + .Q(trn_rd_prev[24]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[25] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[57]), + .Q(trn_rd_prev[25]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[26] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[58]), + .Q(trn_rd_prev[26]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[27] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[59]), + .Q(trn_rd_prev[27]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[28] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[60]), + .Q(trn_rd_prev[28]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[29] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[61]), + .Q(trn_rd_prev[29]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[2] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[34]), + .Q(trn_rd_prev[2]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[30] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[62]), + .Q(trn_rd_prev[30]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[31] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[63]), + .Q(trn_rd_prev[31]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[32] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[0]), + .Q(trn_rd_prev[32]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[33] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[1]), + .Q(trn_rd_prev[33]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[34] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[2]), + .Q(trn_rd_prev[34]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[35] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[3]), + .Q(trn_rd_prev[35]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[36] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[4]), + .Q(trn_rd_prev[36]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[37] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[5]), + .Q(trn_rd_prev[37]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[38] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[6]), + .Q(trn_rd_prev[38]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[39] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[7]), + .Q(trn_rd_prev[39]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[3] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[35]), + .Q(trn_rd_prev[3]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[40] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[8]), + .Q(trn_rd_prev[40]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[41] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[9]), + .Q(trn_rd_prev[41]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[42] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[10]), + .Q(trn_rd_prev[42]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[43] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[11]), + .Q(trn_rd_prev[43]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[44] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[12]), + .Q(trn_rd_prev[44]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[45] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[13]), + .Q(trn_rd_prev[45]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[46] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[14]), + .Q(trn_rd_prev[46]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[47] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[15]), + .Q(trn_rd_prev[47]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[48] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[16]), + .Q(trn_rd_prev[48]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[49] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[17]), + .Q(trn_rd_prev[49]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[4] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[36]), + .Q(trn_rd_prev[4]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[50] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[18]), + .Q(trn_rd_prev[50]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[51] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[19]), + .Q(trn_rd_prev[51]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[52] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[20]), + .Q(trn_rd_prev[52]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[53] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[21]), + .Q(trn_rd_prev[53]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[54] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[22]), + .Q(trn_rd_prev[54]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[55] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[23]), + .Q(trn_rd_prev[55]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[56] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[24]), + .Q(trn_rd_prev[56]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[57] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[25]), + .Q(trn_rd_prev[57]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[58] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[26]), + .Q(trn_rd_prev[58]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[59] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[27]), + .Q(trn_rd_prev[59]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[5] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[37]), + .Q(trn_rd_prev[5]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[60] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[28]), + .Q(trn_rd_prev[60]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[61] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[29]), + .Q(trn_rd_prev[61]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[62] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[30]), + .Q(trn_rd_prev[62]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[63] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[31]), + .Q(trn_rd_prev[63]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[6] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[38]), + .Q(trn_rd_prev[6]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[7] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[39]), + .Q(trn_rd_prev[7]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[8] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[40]), + .Q(trn_rd_prev[8]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rd_prev_reg[9] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rd[41]), + .Q(trn_rd_prev[9]), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + LUT6 #( + .INIT(64'h3030FF3050505050)) + trn_rdst_rdy_i_1 + (.I0(m_axis_rx_tvalid_reg_0), + .I1(null_mux_sel), + .I2(trn_rdst_rdy_i_2_n_0), + .I3(trn_rdst_rdy_reg_0), + .I4(trn_rdst_rdy_reg_1), + .I5(m_axis_rx_tready), + .O(trn_rdst_rdy_i_1_n_0)); + (* SOFT_HLUTNM = "soft_lutpair217" *) + LUT2 #( + .INIT(4'h1)) + trn_rdst_rdy_i_2 + (.I0(reg_dsc_detect_reg_0), + .I1(dsc_detect), + .O(trn_rdst_rdy_i_2_n_0)); + FDRE trn_rdst_rdy_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(trn_rdst_rdy_i_1_n_0), + .Q(E), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE trn_recrc_err_prev_reg + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_recrc_err), + .Q(trn_recrc_err_prev), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE trn_reof_prev_reg + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_reof), + .Q(trn_reof_prev), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE trn_rerrfwd_prev_reg + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rerrfwd), + .Q(trn_rerrfwd_prev), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE \trn_rrem_prev_reg[0] + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rrem), + .Q(trn_rrem_prev), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE trn_rsof_prev_reg + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rsof), + .Q(trn_rsof_prev), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE trn_rsrc_dsc_d_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(trn_rsrc_dsc), + .Q(trn_rsrc_dsc_d), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE trn_rsrc_dsc_prev_reg + (.C(pipe_userclk2_in), + .CE(E), + .D(trn_rsrc_dsc_prev0), + .Q(trn_rsrc_dsc_prev), + .R(\trn_rbar_hit_prev_reg[0]_0 )); + FDRE trn_rsrc_rdy_prev_reg + (.C(pipe_userclk2_in), + .CE(E), + .D(rsrc_rdy_filtered), + .Q(trn_rsrc_rdy_prev), + .R(\trn_rbar_hit_prev_reg[0]_0 )); +endmodule + +module pcie_7x_0_pcie_7x_0_axi_basic_top + (E, + trn_rsrc_dsc_d, + m_axis_rx_tvalid_reg, + m_axis_rx_tkeep, + m_axis_rx_tlast, + reg_tcfg_gnt, + tready_thrtl_reg, + trn_teof, + trn_tsrc_rdy, + trn_trem, + trn_in_packet, + reg_dsc_detect, + ppm_L1_thrtl, + lnk_up_thrtl, + m_axis_rx_tuser, + ppm_L1_trig, + cfg_pm_turnoff_ok_n, + trn_tcfg_gnt, + trn_tsof, + Q, + \throttle_ctl_pipeline.reg_tdata_reg[63] , + \throttle_ctl_pipeline.reg_tuser_reg[3] , + \throttle_ctl_pipeline.reg_tkeep_reg[7] , + pipe_userclk2_in, + trn_rrem, + trn_rsrc_dsc, + rsrc_rdy_filtered, + trn_reof, + trn_rsrc_dsc_prev0, + trn_rsof, + trn_recrc_err, + trn_rerrfwd, + tx_cfg_gnt, + trn_tcfg_req, + trn_tdst_rdy, + tbuf_av_min_trig, + cfg_turnoff_ok, + s_axis_tx_tlast, + s_axis_tx_tvalid, + s_axis_tx_tkeep, + trn_in_packet_reg, + ppm_L1_thrtl_reg, + lnk_up_thrtl_reg, + m_axis_rx_tready, + dsc_detect, + out, + tcfg_req_trig, + tready_thrtl_i_5, + cfg_pcie_link_state, + s_axis_tx_tdata, + s_axis_tx_tuser, + trn_tbuf_av, + trn_rd, + trn_rbar_hit, + cfg_to_turnoff); + output [0:0]E; + output trn_rsrc_dsc_d; + output m_axis_rx_tvalid_reg; + output [0:0]m_axis_rx_tkeep; + output m_axis_rx_tlast; + output reg_tcfg_gnt; + output tready_thrtl_reg; + output trn_teof; + output trn_tsrc_rdy; + output [0:0]trn_trem; + output trn_in_packet; + output reg_dsc_detect; + output ppm_L1_thrtl; + output lnk_up_thrtl; + output [12:0]m_axis_rx_tuser; + output ppm_L1_trig; + output cfg_pm_turnoff_ok_n; + output trn_tcfg_gnt; + output trn_tsof; + output [63:0]Q; + output [63:0]\throttle_ctl_pipeline.reg_tdata_reg[63] ; + output [3:0]\throttle_ctl_pipeline.reg_tuser_reg[3] ; + input \throttle_ctl_pipeline.reg_tkeep_reg[7] ; + input pipe_userclk2_in; + input [0:0]trn_rrem; + input trn_rsrc_dsc; + input rsrc_rdy_filtered; + input trn_reof; + input trn_rsrc_dsc_prev0; + input trn_rsof; + input trn_recrc_err; + input trn_rerrfwd; + input tx_cfg_gnt; + input trn_tcfg_req; + input trn_tdst_rdy; + input tbuf_av_min_trig; + input cfg_turnoff_ok; + input s_axis_tx_tlast; + input s_axis_tx_tvalid; + input [0:0]s_axis_tx_tkeep; + input trn_in_packet_reg; + input ppm_L1_thrtl_reg; + input lnk_up_thrtl_reg; + input m_axis_rx_tready; + input dsc_detect; + input out; + input tcfg_req_trig; + input tready_thrtl_i_5; + input [2:0]cfg_pcie_link_state; + input [63:0]s_axis_tx_tdata; + input [3:0]s_axis_tx_tuser; + input [5:0]trn_tbuf_av; + input [63:0]trn_rd; + input [6:0]trn_rbar_hit; + input cfg_to_turnoff; + + wire [0:0]E; + wire [63:0]Q; + wire [2:0]cfg_pcie_link_state; + wire cfg_pm_turnoff_ok_n; + wire cfg_to_turnoff; + wire cfg_turnoff_ok; + wire dsc_detect; + wire lnk_up_thrtl; + wire lnk_up_thrtl_reg; + wire [0:0]m_axis_rx_tkeep; + wire m_axis_rx_tlast; + wire m_axis_rx_tready; + wire [12:0]m_axis_rx_tuser; + wire m_axis_rx_tvalid_reg; + wire out; + wire pipe_userclk2_in; + wire ppm_L1_thrtl; + wire ppm_L1_thrtl_reg; + wire ppm_L1_trig; + wire reg_dsc_detect; + wire reg_tcfg_gnt; + wire rsrc_rdy_filtered; + wire [63:0]s_axis_tx_tdata; + wire [0:0]s_axis_tx_tkeep; + wire s_axis_tx_tlast; + wire [3:0]s_axis_tx_tuser; + wire s_axis_tx_tvalid; + wire tbuf_av_min_trig; + wire tcfg_req_trig; + wire [63:0]\throttle_ctl_pipeline.reg_tdata_reg[63] ; + wire \throttle_ctl_pipeline.reg_tkeep_reg[7] ; + wire [3:0]\throttle_ctl_pipeline.reg_tuser_reg[3] ; + wire tready_thrtl_i_5; + wire tready_thrtl_reg; + wire trn_in_packet; + wire trn_in_packet_reg; + wire [6:0]trn_rbar_hit; + wire [63:0]trn_rd; + wire trn_recrc_err; + wire trn_reof; + wire trn_rerrfwd; + wire [0:0]trn_rrem; + wire trn_rsof; + wire trn_rsrc_dsc; + wire trn_rsrc_dsc_d; + wire trn_rsrc_dsc_prev0; + wire [5:0]trn_tbuf_av; + wire trn_tcfg_gnt; + wire trn_tcfg_req; + wire trn_tdst_rdy; + wire trn_teof; + wire [0:0]trn_trem; + wire trn_tsof; + wire trn_tsrc_rdy; + wire tx_cfg_gnt; + + pcie_7x_0_pcie_7x_0_axi_basic_rx rx_inst + (.E(E), + .Q(Q), + .dsc_detect(dsc_detect), + .m_axis_rx_tkeep(m_axis_rx_tkeep), + .m_axis_rx_tlast(m_axis_rx_tlast), + .m_axis_rx_tready(m_axis_rx_tready), + .m_axis_rx_tuser(m_axis_rx_tuser), + .m_axis_rx_tvalid_reg(m_axis_rx_tvalid_reg), + .pipe_userclk2_in(pipe_userclk2_in), + .reg_dsc_detect_reg(reg_dsc_detect), + .rsrc_rdy_filtered(rsrc_rdy_filtered), + .trn_in_packet(trn_in_packet), + .trn_in_packet_reg(trn_in_packet_reg), + .trn_rbar_hit(trn_rbar_hit), + .\trn_rbar_hit_prev_reg[0] (\throttle_ctl_pipeline.reg_tkeep_reg[7] ), + .trn_rd(trn_rd), + .trn_recrc_err(trn_recrc_err), + .trn_reof(trn_reof), + .trn_rerrfwd(trn_rerrfwd), + .trn_rrem(trn_rrem), + .trn_rsof(trn_rsof), + .trn_rsrc_dsc(trn_rsrc_dsc), + .trn_rsrc_dsc_d(trn_rsrc_dsc_d), + .trn_rsrc_dsc_prev0(trn_rsrc_dsc_prev0)); + pcie_7x_0_pcie_7x_0_axi_basic_tx tx_inst + (.cfg_pcie_link_state(cfg_pcie_link_state), + .cfg_pm_turnoff_ok_n(cfg_pm_turnoff_ok_n), + .cfg_to_turnoff(cfg_to_turnoff), + .cfg_turnoff_ok(cfg_turnoff_ok), + .lnk_up_thrtl(lnk_up_thrtl), + .lnk_up_thrtl_reg(lnk_up_thrtl_reg), + .out(out), + .pipe_userclk2_in(pipe_userclk2_in), + .ppm_L1_thrtl(ppm_L1_thrtl), + .ppm_L1_thrtl_reg(ppm_L1_thrtl_reg), + .ppm_L1_trig(ppm_L1_trig), + .reg_tcfg_gnt(reg_tcfg_gnt), + .s_axis_tx_tdata(s_axis_tx_tdata), + .s_axis_tx_tkeep(s_axis_tx_tkeep), + .s_axis_tx_tlast(s_axis_tx_tlast), + .s_axis_tx_tuser(s_axis_tx_tuser), + .s_axis_tx_tvalid(s_axis_tx_tvalid), + .tbuf_av_min_trig(tbuf_av_min_trig), + .tcfg_req_trig(tcfg_req_trig), + .\throttle_ctl_pipeline.reg_tdata_reg[63] (\throttle_ctl_pipeline.reg_tdata_reg[63] ), + .\throttle_ctl_pipeline.reg_tkeep_reg[7] (\throttle_ctl_pipeline.reg_tkeep_reg[7] ), + .\throttle_ctl_pipeline.reg_tuser_reg[3] (\throttle_ctl_pipeline.reg_tuser_reg[3] ), + .tready_thrtl_i_5(tready_thrtl_i_5), + .tready_thrtl_reg(tready_thrtl_reg), + .trn_tbuf_av(trn_tbuf_av), + .trn_tcfg_gnt(trn_tcfg_gnt), + .trn_tcfg_req(trn_tcfg_req), + .trn_tdst_rdy(trn_tdst_rdy), + .trn_teof(trn_teof), + .trn_trem(trn_trem), + .trn_tsof(trn_tsof), + .trn_tsrc_rdy(trn_tsrc_rdy), + .tx_cfg_gnt(tx_cfg_gnt)); +endmodule + +module pcie_7x_0_pcie_7x_0_axi_basic_tx + (reg_tcfg_gnt, + tready_thrtl_reg, + trn_teof, + trn_tsrc_rdy, + trn_trem, + ppm_L1_thrtl, + lnk_up_thrtl, + ppm_L1_trig, + cfg_pm_turnoff_ok_n, + trn_tcfg_gnt, + trn_tsof, + \throttle_ctl_pipeline.reg_tdata_reg[63] , + \throttle_ctl_pipeline.reg_tuser_reg[3] , + \throttle_ctl_pipeline.reg_tkeep_reg[7] , + tx_cfg_gnt, + pipe_userclk2_in, + trn_tcfg_req, + trn_tdst_rdy, + tbuf_av_min_trig, + cfg_turnoff_ok, + s_axis_tx_tlast, + s_axis_tx_tvalid, + s_axis_tx_tkeep, + ppm_L1_thrtl_reg, + lnk_up_thrtl_reg, + out, + tcfg_req_trig, + tready_thrtl_i_5, + cfg_pcie_link_state, + s_axis_tx_tdata, + s_axis_tx_tuser, + trn_tbuf_av, + cfg_to_turnoff); + output reg_tcfg_gnt; + output tready_thrtl_reg; + output trn_teof; + output trn_tsrc_rdy; + output [0:0]trn_trem; + output ppm_L1_thrtl; + output lnk_up_thrtl; + output ppm_L1_trig; + output cfg_pm_turnoff_ok_n; + output trn_tcfg_gnt; + output trn_tsof; + output [63:0]\throttle_ctl_pipeline.reg_tdata_reg[63] ; + output [3:0]\throttle_ctl_pipeline.reg_tuser_reg[3] ; + input \throttle_ctl_pipeline.reg_tkeep_reg[7] ; + input tx_cfg_gnt; + input pipe_userclk2_in; + input trn_tcfg_req; + input trn_tdst_rdy; + input tbuf_av_min_trig; + input cfg_turnoff_ok; + input s_axis_tx_tlast; + input s_axis_tx_tvalid; + input [0:0]s_axis_tx_tkeep; + input ppm_L1_thrtl_reg; + input lnk_up_thrtl_reg; + input out; + input tcfg_req_trig; + input tready_thrtl_i_5; + input [2:0]cfg_pcie_link_state; + input [63:0]s_axis_tx_tdata; + input [3:0]s_axis_tx_tuser; + input [5:0]trn_tbuf_av; + input cfg_to_turnoff; + + wire axi_in_packet; + wire [2:0]cfg_pcie_link_state; + wire cfg_pm_turnoff_ok_n; + wire cfg_to_turnoff; + wire cfg_turnoff_ok; + wire lnk_up_thrtl; + wire lnk_up_thrtl_reg; + wire out; + wire pipe_userclk2_in; + wire ppm_L1_thrtl; + wire ppm_L1_thrtl_reg; + wire ppm_L1_trig; + wire reg_disable_trn; + wire reg_tcfg_gnt; + wire reg_tsrc_rdy0; + wire [63:0]s_axis_tx_tdata; + wire [0:0]s_axis_tx_tkeep; + wire s_axis_tx_tlast; + wire [3:0]s_axis_tx_tuser; + wire s_axis_tx_tvalid; + wire tbuf_av_min_trig; + wire tcfg_req_trig; + wire [63:0]\throttle_ctl_pipeline.reg_tdata_reg[63] ; + wire \throttle_ctl_pipeline.reg_tkeep_reg[7] ; + wire [3:0]\throttle_ctl_pipeline.reg_tuser_reg[3] ; + wire \thrtl_ctl_enabled.tx_thrl_ctl_inst_n_4 ; + wire tready_thrtl_i_5; + wire tready_thrtl_reg; + wire [5:0]trn_tbuf_av; + wire trn_tcfg_gnt; + wire trn_tcfg_req; + wire trn_tdst_rdy; + wire trn_teof; + wire [0:0]trn_trem; + wire trn_tsof; + wire trn_tsrc_rdy; + wire tx_cfg_gnt; + + pcie_7x_0_pcie_7x_0_axi_basic_tx_thrtl_ctl \thrtl_ctl_enabled.tx_thrl_ctl_inst + (.axi_in_packet(axi_in_packet), + .cfg_pcie_link_state(cfg_pcie_link_state), + .cfg_pm_turnoff_ok_n(cfg_pm_turnoff_ok_n), + .cfg_to_turnoff(cfg_to_turnoff), + .cfg_turnoff_ok(cfg_turnoff_ok), + .lnk_up_thrtl(lnk_up_thrtl), + .lnk_up_thrtl_reg_0(lnk_up_thrtl_reg), + .out(out), + .pipe_userclk2_in(pipe_userclk2_in), + .ppm_L1_thrtl(ppm_L1_thrtl), + .ppm_L1_thrtl_reg_0(ppm_L1_thrtl_reg), + .ppm_L1_trig(ppm_L1_trig), + .reg_disable_trn(reg_disable_trn), + .reg_tcfg_gnt(reg_tcfg_gnt), + .reg_tsrc_rdy0(reg_tsrc_rdy0), + .s_axis_tx_tdata({s_axis_tx_tdata[30:29],s_axis_tx_tdata[15],s_axis_tx_tdata[0]}), + .s_axis_tx_tlast(s_axis_tx_tlast), + .s_axis_tx_tlast_0(\thrtl_ctl_enabled.tx_thrl_ctl_inst_n_4 ), + .s_axis_tx_tuser(s_axis_tx_tuser[0]), + .s_axis_tx_tvalid(s_axis_tx_tvalid), + .tbuf_av_min_trig(tbuf_av_min_trig), + .\tbuf_gap_cnt_reg[0]_0 (\throttle_ctl_pipeline.reg_tkeep_reg[7] ), + .tcfg_req_trig(tcfg_req_trig), + .tready_thrtl_i_5_0(tready_thrtl_i_5), + .tready_thrtl_reg_0(tready_thrtl_reg), + .trn_tbuf_av(trn_tbuf_av), + .trn_tcfg_gnt(trn_tcfg_gnt), + .trn_tcfg_req(trn_tcfg_req), + .trn_tdst_rdy(trn_tdst_rdy), + .tx_cfg_gnt(tx_cfg_gnt)); + pcie_7x_0_pcie_7x_0_axi_basic_tx_pipeline tx_pipeline_inst + (.axi_in_packet(axi_in_packet), + .axi_in_packet_reg_0(\thrtl_ctl_enabled.tx_thrl_ctl_inst_n_4 ), + .out(out), + .pipe_userclk2_in(pipe_userclk2_in), + .reg_disable_trn(reg_disable_trn), + .reg_tsrc_rdy0(reg_tsrc_rdy0), + .s_axis_tx_tdata(s_axis_tx_tdata), + .s_axis_tx_tkeep(s_axis_tx_tkeep), + .s_axis_tx_tlast(s_axis_tx_tlast), + .s_axis_tx_tuser(s_axis_tx_tuser), + .s_axis_tx_tvalid(s_axis_tx_tvalid), + .\throttle_ctl_pipeline.reg_tdata_reg[63]_0 (\throttle_ctl_pipeline.reg_tdata_reg[63] ), + .\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 (\throttle_ctl_pipeline.reg_tkeep_reg[7] ), + .\throttle_ctl_pipeline.reg_tuser_reg[3]_0 (\throttle_ctl_pipeline.reg_tuser_reg[3] ), + .\thrtl_ctl_trn_flush.reg_disable_trn_reg_0 (tready_thrtl_reg), + .trn_tdst_rdy(trn_tdst_rdy), + .trn_teof(trn_teof), + .trn_trem(trn_trem), + .trn_tsof(trn_tsof), + .trn_tsrc_rdy(trn_tsrc_rdy)); +endmodule + +module pcie_7x_0_pcie_7x_0_axi_basic_tx_pipeline + (trn_teof, + trn_tsrc_rdy, + trn_trem, + axi_in_packet, + reg_disable_trn, + trn_tsof, + \throttle_ctl_pipeline.reg_tdata_reg[63]_0 , + \throttle_ctl_pipeline.reg_tuser_reg[3]_0 , + \throttle_ctl_pipeline.reg_tkeep_reg[7]_0 , + s_axis_tx_tlast, + pipe_userclk2_in, + reg_tsrc_rdy0, + s_axis_tx_tvalid, + s_axis_tx_tkeep, + axi_in_packet_reg_0, + out, + \thrtl_ctl_trn_flush.reg_disable_trn_reg_0 , + trn_tdst_rdy, + s_axis_tx_tdata, + s_axis_tx_tuser); + output trn_teof; + output trn_tsrc_rdy; + output [0:0]trn_trem; + output axi_in_packet; + output reg_disable_trn; + output trn_tsof; + output [63:0]\throttle_ctl_pipeline.reg_tdata_reg[63]_0 ; + output [3:0]\throttle_ctl_pipeline.reg_tuser_reg[3]_0 ; + input \throttle_ctl_pipeline.reg_tkeep_reg[7]_0 ; + input s_axis_tx_tlast; + input pipe_userclk2_in; + input reg_tsrc_rdy0; + input s_axis_tx_tvalid; + input [0:0]s_axis_tx_tkeep; + input axi_in_packet_reg_0; + input out; + input \thrtl_ctl_trn_flush.reg_disable_trn_reg_0 ; + input trn_tdst_rdy; + input [63:0]s_axis_tx_tdata; + input [3:0]s_axis_tx_tuser; + + wire axi_in_packet; + wire axi_in_packet_reg_0; + wire out; + wire pipe_userclk2_in; + wire reg_disable_trn; + wire reg_tsrc_rdy0; + wire reg_tvalid; + wire [63:0]s_axis_tx_tdata; + wire [0:0]s_axis_tx_tkeep; + wire s_axis_tx_tlast; + wire [3:0]s_axis_tx_tuser; + wire s_axis_tx_tvalid; + wire [63:0]\throttle_ctl_pipeline.reg_tdata_reg[63]_0 ; + wire \throttle_ctl_pipeline.reg_tkeep_reg[7]_0 ; + wire [3:0]\throttle_ctl_pipeline.reg_tuser_reg[3]_0 ; + wire \thrtl_ctl_trn_flush.reg_disable_trn_i_1_n_0 ; + wire \thrtl_ctl_trn_flush.reg_disable_trn_reg_0 ; + wire trn_in_packet; + wire trn_in_packet_i_1__0_n_0; + wire trn_tdst_rdy; + wire trn_teof; + wire [0:0]trn_trem; + wire trn_tsof; + wire trn_tsrc_rdy; + + FDRE axi_in_packet_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(axi_in_packet_reg_0), + .Q(axi_in_packet), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + LUT2 #( + .INIT(4'h2)) + pcie_block_i_i_31 + (.I0(reg_tvalid), + .I1(trn_in_packet), + .O(trn_tsof)); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[0] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[0]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [0]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[10] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[10]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [10]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[11] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[11]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [11]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[12] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[12]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [12]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[13] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[13]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [13]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[14] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[14]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [14]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[15] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[15]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [15]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[16] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[16]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [16]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[17] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[17]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [17]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[18] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[18]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [18]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[19] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[19]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [19]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[1] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[1]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [1]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[20] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[20]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [20]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[21] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[21]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [21]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[22] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[22]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [22]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[23] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[23]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [23]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[24] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[24]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [24]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[25] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[25]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [25]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[26] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[26]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [26]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[27] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[27]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [27]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[28] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[28]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [28]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[29] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[29]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [29]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[2] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[2]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [2]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[30] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[30]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [30]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[31] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[31]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [31]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[32] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[32]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [32]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[33] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[33]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [33]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[34] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[34]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [34]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[35] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[35]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [35]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[36] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[36]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [36]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[37] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[37]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [37]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[38] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[38]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [38]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[39] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[39]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [39]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[3] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[3]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [3]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[40] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[40]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [40]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[41] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[41]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [41]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[42] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[42]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [42]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[43] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[43]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [43]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[44] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[44]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [44]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[45] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[45]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [45]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[46] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[46]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [46]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[47] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[47]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [47]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[48] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[48]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [48]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[49] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[49]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [49]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[4] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[4]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [4]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[50] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[50]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [50]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[51] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[51]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [51]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[52] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[52]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [52]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[53] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[53]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [53]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[54] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[54]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [54]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[55] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[55]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [55]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[56] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[56]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [56]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[57] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[57]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [57]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[58] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[58]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [58]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[59] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[59]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [59]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[5] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[5]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [5]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[60] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[60]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [60]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[61] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[61]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [61]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[62] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[62]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [62]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[63] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[63]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [63]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[6] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[6]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [6]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[7] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[7]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [7]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[8] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[8]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [8]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tdata_reg[9] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tdata[9]), + .Q(\throttle_ctl_pipeline.reg_tdata_reg[63]_0 [9]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tkeep_reg[7] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tkeep), + .Q(trn_trem), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tlast_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tlast), + .Q(trn_teof), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tsrc_rdy_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(reg_tsrc_rdy0), + .Q(trn_tsrc_rdy), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tuser_reg[0] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tuser[0]), + .Q(\throttle_ctl_pipeline.reg_tuser_reg[3]_0 [0]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tuser_reg[1] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tuser[1]), + .Q(\throttle_ctl_pipeline.reg_tuser_reg[3]_0 [1]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tuser_reg[2] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tuser[2]), + .Q(\throttle_ctl_pipeline.reg_tuser_reg[3]_0 [2]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tuser_reg[3] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tuser[3]), + .Q(\throttle_ctl_pipeline.reg_tuser_reg[3]_0 [3]), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + FDRE \throttle_ctl_pipeline.reg_tvalid_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(s_axis_tx_tvalid), + .Q(reg_tvalid), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + LUT6 #( + .INIT(64'h0FFFFFFF04444444)) + \thrtl_ctl_trn_flush.reg_disable_trn_i_1 + (.I0(out), + .I1(axi_in_packet), + .I2(\thrtl_ctl_trn_flush.reg_disable_trn_reg_0 ), + .I3(s_axis_tx_tvalid), + .I4(s_axis_tx_tlast), + .I5(reg_disable_trn), + .O(\thrtl_ctl_trn_flush.reg_disable_trn_i_1_n_0 )); + FDRE \thrtl_ctl_trn_flush.reg_disable_trn_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(\thrtl_ctl_trn_flush.reg_disable_trn_i_1_n_0 ), + .Q(reg_disable_trn), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); + LUT6 #( + .INIT(64'h0000F088F000F000)) + trn_in_packet_i_1__0 + (.I0(trn_tdst_rdy), + .I1(reg_tvalid), + .I2(out), + .I3(trn_in_packet), + .I4(trn_teof), + .I5(trn_tsrc_rdy), + .O(trn_in_packet_i_1__0_n_0)); + FDRE trn_in_packet_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(trn_in_packet_i_1__0_n_0), + .Q(trn_in_packet), + .R(\throttle_ctl_pipeline.reg_tkeep_reg[7]_0 )); +endmodule + +module pcie_7x_0_pcie_7x_0_axi_basic_tx_thrtl_ctl + (reg_tcfg_gnt, + tready_thrtl_reg_0, + ppm_L1_thrtl, + lnk_up_thrtl, + s_axis_tx_tlast_0, + ppm_L1_trig, + cfg_pm_turnoff_ok_n, + trn_tcfg_gnt, + reg_tsrc_rdy0, + \tbuf_gap_cnt_reg[0]_0 , + tx_cfg_gnt, + pipe_userclk2_in, + trn_tcfg_req, + trn_tdst_rdy, + tbuf_av_min_trig, + cfg_turnoff_ok, + ppm_L1_thrtl_reg_0, + lnk_up_thrtl_reg_0, + s_axis_tx_tlast, + s_axis_tx_tvalid, + axi_in_packet, + out, + tcfg_req_trig, + tready_thrtl_i_5_0, + cfg_pcie_link_state, + s_axis_tx_tdata, + s_axis_tx_tuser, + reg_disable_trn, + trn_tbuf_av, + cfg_to_turnoff); + output reg_tcfg_gnt; + output tready_thrtl_reg_0; + output ppm_L1_thrtl; + output lnk_up_thrtl; + output s_axis_tx_tlast_0; + output ppm_L1_trig; + output cfg_pm_turnoff_ok_n; + output trn_tcfg_gnt; + output reg_tsrc_rdy0; + input \tbuf_gap_cnt_reg[0]_0 ; + input tx_cfg_gnt; + input pipe_userclk2_in; + input trn_tcfg_req; + input trn_tdst_rdy; + input tbuf_av_min_trig; + input cfg_turnoff_ok; + input ppm_L1_thrtl_reg_0; + input lnk_up_thrtl_reg_0; + input s_axis_tx_tlast; + input s_axis_tx_tvalid; + input axi_in_packet; + input out; + input tcfg_req_trig; + input tready_thrtl_i_5_0; + input [2:0]cfg_pcie_link_state; + input [3:0]s_axis_tx_tdata; + input [0:0]s_axis_tx_tuser; + input reg_disable_trn; + input [5:0]trn_tbuf_av; + input cfg_to_turnoff; + + wire \L23_thrtl_ep.x7_L23_thrtl_ep.reg_to_turnoff ; + wire \L23_thrtl_ep.x7_L23_thrtl_ep.reg_to_turnoff_i_1_n_0 ; + wire axi_in_packet; + wire [2:0]cfg_pcie_link_state; + wire [2:0]cfg_pcie_link_state_d; + wire cfg_pm_turnoff_ok_n; + wire cfg_to_turnoff; + wire cfg_turnoff_ok; + wire cfg_turnoff_ok_pending; + wire cfg_turnoff_ok_pending_i_1_n_0; + wire cur_state; + wire cur_state_i_2_n_0; + wire \ecrc_pause_enabled.reg_tx_ecrc_pkt ; + wire \ecrc_pause_enabled.reg_tx_ecrc_pkt021_out ; + wire \ecrc_pause_enabled.reg_tx_ecrc_pkt_i_1_n_0 ; + wire lnk_up_thrtl; + wire lnk_up_thrtl_reg_0; + wire next_state; + wire out; + wire p_2_in; + wire pcie_block_i_i_36_n_0; + wire pipe_userclk2_in; + wire ppm_L1_thrtl; + wire ppm_L1_thrtl_reg_0; + wire ppm_L1_trig; + wire ppm_L23_thrtl; + wire ppm_L23_thrtl_i_1_n_0; + wire ppm_L23_trig; + wire reg_axi_in_pkt; + wire reg_axi_in_pkt_i_1_n_0; + wire reg_disable_trn; + wire reg_tcfg_gnt; + wire reg_tsrc_rdy0; + wire reg_turnoff_ok; + wire [3:0]s_axis_tx_tdata; + wire s_axis_tx_tlast; + wire s_axis_tx_tlast_0; + wire [0:0]s_axis_tx_tuser; + wire s_axis_tx_tvalid; + wire [5:0]tbuf_av_d; + wire tbuf_av_gap_thrtl; + wire tbuf_av_gap_thrtl_i_1_n_0; + wire tbuf_av_gap_trig; + wire tbuf_av_min_thrtl; + wire tbuf_av_min_trig; + wire \tbuf_gap_cnt[0]_i_1_n_0 ; + wire \tbuf_gap_cnt_reg[0]_0 ; + wire \tbuf_gap_cnt_reg_n_0_[0] ; + wire tcfg_gnt_pending; + wire tcfg_gnt_pending_i_1_n_0; + wire [1:0]tcfg_req_cnt; + wire \tcfg_req_cnt[0]_i_1_n_0 ; + wire \tcfg_req_cnt[1]_i_1_n_0 ; + wire tcfg_req_thrtl; + wire tcfg_req_thrtl_i_1_n_0; + wire tcfg_req_trig; + wire tready_thrtl0; + wire tready_thrtl_i_10_n_0; + wire tready_thrtl_i_12_n_0; + wire tready_thrtl_i_2_n_0; + wire tready_thrtl_i_3_n_0; + wire tready_thrtl_i_4_n_0; + wire tready_thrtl_i_5_0; + wire tready_thrtl_i_6_n_0; + wire tready_thrtl_i_7_n_0; + wire tready_thrtl_reg_0; + wire [5:0]trn_tbuf_av; + wire trn_tcfg_gnt; + wire trn_tcfg_req; + wire trn_tcfg_req_d; + wire trn_tdst_rdy; + wire trn_tdst_rdy_d; + wire tx_cfg_gnt; + + FDRE \L23_thrtl_ep.reg_turnoff_ok_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(cfg_turnoff_ok), + .Q(reg_turnoff_ok), + .R(\tbuf_gap_cnt_reg[0]_0 )); + (* SOFT_HLUTNM = "soft_lutpair255" *) + LUT2 #( + .INIT(4'hE)) + \L23_thrtl_ep.x7_L23_thrtl_ep.reg_to_turnoff_i_1 + (.I0(cfg_to_turnoff), + .I1(\L23_thrtl_ep.x7_L23_thrtl_ep.reg_to_turnoff ), + .O(\L23_thrtl_ep.x7_L23_thrtl_ep.reg_to_turnoff_i_1_n_0 )); + FDRE \L23_thrtl_ep.x7_L23_thrtl_ep.reg_to_turnoff_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(\L23_thrtl_ep.x7_L23_thrtl_ep.reg_to_turnoff_i_1_n_0 ), + .Q(\L23_thrtl_ep.x7_L23_thrtl_ep.reg_to_turnoff ), + .R(\tbuf_gap_cnt_reg[0]_0 )); + LUT4 #( + .INIT(16'h7F40)) + axi_in_packet_i_1 + (.I0(s_axis_tx_tlast), + .I1(s_axis_tx_tvalid), + .I2(tready_thrtl_reg_0), + .I3(axi_in_packet), + .O(s_axis_tx_tlast_0)); + FDRE \cfg_pcie_link_state_d_reg[0] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(cfg_pcie_link_state[0]), + .Q(cfg_pcie_link_state_d[0]), + .R(\tbuf_gap_cnt_reg[0]_0 )); + FDRE \cfg_pcie_link_state_d_reg[1] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(cfg_pcie_link_state[1]), + .Q(cfg_pcie_link_state_d[1]), + .R(\tbuf_gap_cnt_reg[0]_0 )); + FDRE \cfg_pcie_link_state_d_reg[2] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(cfg_pcie_link_state[2]), + .Q(cfg_pcie_link_state_d[2]), + .R(\tbuf_gap_cnt_reg[0]_0 )); + (* SOFT_HLUTNM = "soft_lutpair252" *) + LUT5 #( + .INIT(32'h75553000)) + cfg_turnoff_ok_pending_i_1 + (.I0(cfg_pm_turnoff_ok_n), + .I1(ppm_L23_thrtl), + .I2(reg_turnoff_ok), + .I3(\L23_thrtl_ep.x7_L23_thrtl_ep.reg_to_turnoff ), + .I4(cfg_turnoff_ok_pending), + .O(cfg_turnoff_ok_pending_i_1_n_0)); + FDRE cfg_turnoff_ok_pending_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(cfg_turnoff_ok_pending_i_1_n_0), + .Q(cfg_turnoff_ok_pending), + .R(\tbuf_gap_cnt_reg[0]_0 )); + LUT6 #( + .INIT(64'h5455445554555555)) + cur_state_i_1__0 + (.I0(cur_state_i_2_n_0), + .I1(cur_state), + .I2(s_axis_tx_tlast), + .I3(tready_thrtl_reg_0), + .I4(s_axis_tx_tvalid), + .I5(reg_axi_in_pkt), + .O(next_state)); + LUT6 #( + .INIT(64'h0000000000000001)) + cur_state_i_2 + (.I0(ppm_L1_thrtl), + .I1(lnk_up_thrtl), + .I2(tcfg_req_thrtl), + .I3(ppm_L23_thrtl), + .I4(tbuf_av_gap_thrtl), + .I5(tbuf_av_min_thrtl), + .O(cur_state_i_2_n_0)); + FDSE cur_state_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(next_state), + .Q(cur_state), + .S(\tbuf_gap_cnt_reg[0]_0 )); + LUT5 #( + .INIT(32'hBFFFAAAA)) + \ecrc_pause_enabled.reg_tx_ecrc_pkt_i_1 + (.I0(\ecrc_pause_enabled.reg_tx_ecrc_pkt021_out ), + .I1(tready_thrtl_reg_0), + .I2(s_axis_tx_tvalid), + .I3(s_axis_tx_tlast), + .I4(\ecrc_pause_enabled.reg_tx_ecrc_pkt ), + .O(\ecrc_pause_enabled.reg_tx_ecrc_pkt_i_1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair253" *) + LUT5 #( + .INIT(32'h00001444)) + \ecrc_pause_enabled.reg_tx_ecrc_pkt_i_2 + (.I0(tready_thrtl_i_7_n_0), + .I1(s_axis_tx_tdata[2]), + .I2(s_axis_tx_tdata[3]), + .I3(s_axis_tx_tdata[0]), + .I4(s_axis_tx_tlast), + .O(\ecrc_pause_enabled.reg_tx_ecrc_pkt021_out )); + FDRE \ecrc_pause_enabled.reg_tx_ecrc_pkt_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(\ecrc_pause_enabled.reg_tx_ecrc_pkt_i_1_n_0 ), + .Q(\ecrc_pause_enabled.reg_tx_ecrc_pkt ), + .R(\tbuf_gap_cnt_reg[0]_0 )); + FDSE lnk_up_thrtl_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(lnk_up_thrtl_reg_0), + .Q(lnk_up_thrtl), + .S(\tbuf_gap_cnt_reg[0]_0 )); + LUT6 #( + .INIT(64'h20202020A0AFA0A0)) + pcie_block_i_i_26 + (.I0(cfg_turnoff_ok_pending), + .I1(tcfg_gnt_pending), + .I2(cur_state), + .I3(pcie_block_i_i_36_n_0), + .I4(ppm_L23_thrtl), + .I5(tcfg_req_thrtl), + .O(cfg_pm_turnoff_ok_n)); + (* SOFT_HLUTNM = "soft_lutpair254" *) + LUT4 #( + .INIT(16'hA202)) + pcie_block_i_i_30 + (.I0(tcfg_req_thrtl), + .I1(pcie_block_i_i_36_n_0), + .I2(cur_state), + .I3(tcfg_gnt_pending), + .O(trn_tcfg_gnt)); + (* SOFT_HLUTNM = "soft_lutpair250" *) + LUT5 #( + .INIT(32'hFFFF20E0)) + pcie_block_i_i_36 + (.I0(reg_axi_in_pkt), + .I1(s_axis_tx_tvalid), + .I2(tready_thrtl_reg_0), + .I3(s_axis_tx_tlast), + .I4(cur_state_i_2_n_0), + .O(pcie_block_i_i_36_n_0)); + LUT6 #( + .INIT(64'h0000010000000000)) + ppm_L1_thrtl_i_2 + (.I0(cfg_pcie_link_state_d[1]), + .I1(cfg_pcie_link_state_d[2]), + .I2(cfg_pcie_link_state_d[0]), + .I3(cfg_pcie_link_state[0]), + .I4(cfg_pcie_link_state[1]), + .I5(cfg_pcie_link_state[2]), + .O(ppm_L1_trig)); + FDRE ppm_L1_thrtl_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(ppm_L1_thrtl_reg_0), + .Q(ppm_L1_thrtl), + .R(\tbuf_gap_cnt_reg[0]_0 )); + (* SOFT_HLUTNM = "soft_lutpair252" *) + LUT3 #( + .INIT(8'hF8)) + ppm_L23_thrtl_i_1 + (.I0(\L23_thrtl_ep.x7_L23_thrtl_ep.reg_to_turnoff ), + .I1(reg_turnoff_ok), + .I2(ppm_L23_thrtl), + .O(ppm_L23_thrtl_i_1_n_0)); + FDRE ppm_L23_thrtl_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(ppm_L23_thrtl_i_1_n_0), + .Q(ppm_L23_thrtl), + .R(\tbuf_gap_cnt_reg[0]_0 )); + LUT5 #( + .INIT(32'h00005F40)) + reg_axi_in_pkt_i_1 + (.I0(s_axis_tx_tlast), + .I1(tready_thrtl_reg_0), + .I2(s_axis_tx_tvalid), + .I3(reg_axi_in_pkt), + .I4(\tbuf_gap_cnt_reg[0]_0 ), + .O(reg_axi_in_pkt_i_1_n_0)); + FDRE reg_axi_in_pkt_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(reg_axi_in_pkt_i_1_n_0), + .Q(reg_axi_in_pkt), + .R(1'b0)); + FDRE reg_tcfg_gnt_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(tx_cfg_gnt), + .Q(reg_tcfg_gnt), + .R(\tbuf_gap_cnt_reg[0]_0 )); + FDRE \tbuf_av_d_reg[0] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(trn_tbuf_av[0]), + .Q(tbuf_av_d[0]), + .R(\tbuf_gap_cnt_reg[0]_0 )); + FDRE \tbuf_av_d_reg[1] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(trn_tbuf_av[1]), + .Q(tbuf_av_d[1]), + .R(\tbuf_gap_cnt_reg[0]_0 )); + FDRE \tbuf_av_d_reg[2] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(trn_tbuf_av[2]), + .Q(tbuf_av_d[2]), + .R(\tbuf_gap_cnt_reg[0]_0 )); + FDRE \tbuf_av_d_reg[3] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(trn_tbuf_av[3]), + .Q(tbuf_av_d[3]), + .R(\tbuf_gap_cnt_reg[0]_0 )); + FDRE \tbuf_av_d_reg[4] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(trn_tbuf_av[4]), + .Q(tbuf_av_d[4]), + .R(\tbuf_gap_cnt_reg[0]_0 )); + FDRE \tbuf_av_d_reg[5] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(trn_tbuf_av[5]), + .Q(tbuf_av_d[5]), + .R(\tbuf_gap_cnt_reg[0]_0 )); + LUT3 #( + .INIT(8'hEA)) + tbuf_av_gap_thrtl_i_1 + (.I0(tbuf_av_gap_trig), + .I1(\tbuf_gap_cnt_reg_n_0_[0] ), + .I2(tbuf_av_gap_thrtl), + .O(tbuf_av_gap_thrtl_i_1_n_0)); + FDRE tbuf_av_gap_thrtl_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(tbuf_av_gap_thrtl_i_1_n_0), + .Q(tbuf_av_gap_thrtl), + .R(\tbuf_gap_cnt_reg[0]_0 )); + FDRE tbuf_av_min_thrtl_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(tbuf_av_min_trig), + .Q(tbuf_av_min_thrtl), + .R(\tbuf_gap_cnt_reg[0]_0 )); + (* SOFT_HLUTNM = "soft_lutpair254" *) + LUT2 #( + .INIT(4'h7)) + \tbuf_gap_cnt[0]_i_1 + (.I0(tbuf_av_gap_thrtl), + .I1(cur_state), + .O(\tbuf_gap_cnt[0]_i_1_n_0 )); + FDRE \tbuf_gap_cnt_reg[0] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(\tbuf_gap_cnt[0]_i_1_n_0 ), + .Q(\tbuf_gap_cnt_reg_n_0_[0] ), + .R(\tbuf_gap_cnt_reg[0]_0 )); + LUT6 #( + .INIT(64'h44F44444F4F4F4F4)) + tcfg_gnt_pending_i_1 + (.I0(trn_tcfg_req_d), + .I1(trn_tcfg_req), + .I2(tcfg_gnt_pending), + .I3(cur_state), + .I4(pcie_block_i_i_36_n_0), + .I5(tcfg_req_thrtl), + .O(tcfg_gnt_pending_i_1_n_0)); + FDRE tcfg_gnt_pending_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(tcfg_gnt_pending_i_1_n_0), + .Q(tcfg_gnt_pending), + .R(\tbuf_gap_cnt_reg[0]_0 )); + LUT6 #( + .INIT(64'h0000000000000D00)) + \tcfg_req_cnt[0]_i_1 + (.I0(trn_tcfg_req), + .I1(trn_tcfg_req_d), + .I2(tcfg_gnt_pending), + .I3(tcfg_req_cnt[1]), + .I4(tcfg_req_cnt[0]), + .I5(\tbuf_gap_cnt_reg[0]_0 ), + .O(\tcfg_req_cnt[0]_i_1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair251" *) + LUT5 #( + .INIT(32'hFFFF88F8)) + \tcfg_req_cnt[1]_i_1 + (.I0(tcfg_req_cnt[0]), + .I1(tcfg_req_cnt[1]), + .I2(trn_tcfg_req), + .I3(trn_tcfg_req_d), + .I4(tcfg_gnt_pending), + .O(\tcfg_req_cnt[1]_i_1_n_0 )); + FDRE \tcfg_req_cnt_reg[0] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(\tcfg_req_cnt[0]_i_1_n_0 ), + .Q(tcfg_req_cnt[0]), + .R(1'b0)); + FDRE \tcfg_req_cnt_reg[1] + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(\tcfg_req_cnt[1]_i_1_n_0 ), + .Q(tcfg_req_cnt[1]), + .R(\tbuf_gap_cnt_reg[0]_0 )); + LUT6 #( + .INIT(64'hFFFFF8FF88888888)) + tcfg_req_thrtl_i_1 + (.I0(reg_tcfg_gnt), + .I1(trn_tcfg_req), + .I2(trn_tdst_rdy_d), + .I3(trn_tdst_rdy), + .I4(p_2_in), + .I5(tcfg_req_thrtl), + .O(tcfg_req_thrtl_i_1_n_0)); + (* SOFT_HLUTNM = "soft_lutpair251" *) + LUT2 #( + .INIT(4'hE)) + tcfg_req_thrtl_i_2 + (.I0(tcfg_req_cnt[1]), + .I1(tcfg_req_cnt[0]), + .O(p_2_in)); + FDRE tcfg_req_thrtl_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(tcfg_req_thrtl_i_1_n_0), + .Q(tcfg_req_thrtl), + .R(\tbuf_gap_cnt_reg[0]_0 )); + LUT4 #( + .INIT(16'h0080)) + \throttle_ctl_pipeline.reg_tsrc_rdy_i_1 + (.I0(tready_thrtl_reg_0), + .I1(s_axis_tx_tvalid), + .I2(out), + .I3(reg_disable_trn), + .O(reg_tsrc_rdy0)); + LUT6 #( + .INIT(64'hF1F1F1F10000F100)) + tready_thrtl_i_1 + (.I0(\ecrc_pause_enabled.reg_tx_ecrc_pkt ), + .I1(tready_thrtl_i_2_n_0), + .I2(tready_thrtl_i_3_n_0), + .I3(tready_thrtl_i_4_n_0), + .I4(tbuf_av_gap_trig), + .I5(tready_thrtl_i_6_n_0), + .O(tready_thrtl0)); + LUT6 #( + .INIT(64'h00002000AAAAAAAA)) + tready_thrtl_i_10 + (.I0(tready_thrtl_i_5_0), + .I1(tbuf_av_d[4]), + .I2(tbuf_av_d[0]), + .I3(tbuf_av_d[1]), + .I4(tready_thrtl_i_12_n_0), + .I5(tready_thrtl_i_3_n_0), + .O(tready_thrtl_i_10_n_0)); + LUT4 #( + .INIT(16'hFFEF)) + tready_thrtl_i_12 + (.I0(tbuf_av_d[5]), + .I1(tbuf_av_d[2]), + .I2(trn_tbuf_av[1]), + .I3(tbuf_av_d[3]), + .O(tready_thrtl_i_12_n_0)); + (* SOFT_HLUTNM = "soft_lutpair253" *) + LUT4 #( + .INIT(16'h0078)) + tready_thrtl_i_2 + (.I0(s_axis_tx_tdata[0]), + .I1(s_axis_tx_tdata[3]), + .I2(s_axis_tx_tdata[2]), + .I3(tready_thrtl_i_7_n_0), + .O(tready_thrtl_i_2_n_0)); + (* SOFT_HLUTNM = "soft_lutpair250" *) + LUT3 #( + .INIT(8'h7F)) + tready_thrtl_i_3 + (.I0(s_axis_tx_tlast), + .I1(s_axis_tx_tvalid), + .I2(tready_thrtl_reg_0), + .O(tready_thrtl_i_3_n_0)); + LUT6 #( + .INIT(64'h0000000000040000)) + tready_thrtl_i_4 + (.I0(ppm_L23_trig), + .I1(out), + .I2(tcfg_req_trig), + .I3(ppm_L1_trig), + .I4(cur_state_i_2_n_0), + .I5(tbuf_av_min_trig), + .O(tready_thrtl_i_4_n_0)); + LUT6 #( + .INIT(64'hFFFFFFFF00100000)) + tready_thrtl_i_5 + (.I0(tcfg_req_cnt[0]), + .I1(tcfg_req_cnt[1]), + .I2(trn_tdst_rdy), + .I3(trn_tdst_rdy_d), + .I4(tcfg_req_thrtl), + .I5(tready_thrtl_i_10_n_0), + .O(tbuf_av_gap_trig)); + LUT5 #( + .INIT(32'h000020E0)) + tready_thrtl_i_6 + (.I0(reg_axi_in_pkt), + .I1(s_axis_tx_tvalid), + .I2(tready_thrtl_reg_0), + .I3(s_axis_tx_tlast), + .I4(cur_state), + .O(tready_thrtl_i_6_n_0)); + LUT5 #( + .INIT(32'hFFFFDFFF)) + tready_thrtl_i_7 + (.I0(s_axis_tx_tuser), + .I1(s_axis_tx_tdata[1]), + .I2(s_axis_tx_tvalid), + .I3(tready_thrtl_reg_0), + .I4(reg_axi_in_pkt), + .O(tready_thrtl_i_7_n_0)); + (* SOFT_HLUTNM = "soft_lutpair255" *) + LUT2 #( + .INIT(4'h8)) + tready_thrtl_i_8 + (.I0(reg_turnoff_ok), + .I1(\L23_thrtl_ep.x7_L23_thrtl_ep.reg_to_turnoff ), + .O(ppm_L23_trig)); + FDRE tready_thrtl_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(tready_thrtl0), + .Q(tready_thrtl_reg_0), + .R(\tbuf_gap_cnt_reg[0]_0 )); + FDRE trn_tcfg_req_d_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(trn_tcfg_req), + .Q(trn_tcfg_req_d), + .R(\tbuf_gap_cnt_reg[0]_0 )); + FDSE trn_tdst_rdy_d_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(trn_tdst_rdy), + .Q(trn_tdst_rdy_d), + .S(\tbuf_gap_cnt_reg[0]_0 )); +endmodule + +module pcie_7x_0_pcie_7x_0_core_top + (pl_ltssm_state, + pl_phy_lnk_up, + user_reset_out, + m_axis_rx_tvalid, + s_axis_tx_tready, + cfg_aer_ecrc_check_en, + cfg_aer_ecrc_gen_en, + cfg_aer_rooterr_corr_err_received, + cfg_aer_rooterr_corr_err_reporting_en, + cfg_aer_rooterr_fatal_err_received, + cfg_aer_rooterr_fatal_err_reporting_en, + cfg_aer_rooterr_non_fatal_err_received, + cfg_aer_rooterr_non_fatal_err_reporting_en, + cfg_bridge_serr_en, + cfg_command, + cfg_dcommand2, + cfg_dcommand, + cfg_dstatus, + cfg_interrupt_msienable, + cfg_interrupt_msixenable, + cfg_interrupt_msixfm, + cfg_lcommand, + cfg_lstatus, + cfg_msg_received, + cfg_msg_received_assert_int_a, + cfg_msg_received_assert_int_b, + cfg_msg_received_assert_int_c, + cfg_msg_received_assert_int_d, + cfg_msg_received_deassert_int_a, + cfg_msg_received_deassert_int_b, + cfg_msg_received_deassert_int_c, + cfg_msg_received_deassert_int_d, + cfg_msg_received_err_cor, + cfg_msg_received_err_fatal, + cfg_msg_received_err_non_fatal, + cfg_msg_received_pm_as_nak, + cfg_to_turnoff, + cfg_msg_received_pme_to_ack, + cfg_msg_received_pm_pme, + cfg_msg_received_setslotpowerlimit, + cfg_pmcsr_pme_en, + cfg_pmcsr_pme_status, + cfg_root_control_pme_int_en, + cfg_root_control_syserr_corr_err_en, + cfg_root_control_syserr_fatal_err_en, + cfg_root_control_syserr_non_fatal_err_en, + cfg_slot_control_electromech_il_ctl_pulse, + pcie_drp_rdy, + pl_directed_change_done, + pl_link_gen2_cap, + pl_link_partner_gen2_supported, + pl_link_upcfg_cap, + pl_sel_lnk_rate, + tx_cfg_req, + tx_err_drop, + fc_cpld, + fc_npd, + fc_pd, + cfg_msg_data, + pcie_drp_do, + cfg_pmcsr_powerstate, + pl_lane_reversal_mode, + pl_rx_pm_state, + pl_sel_lnk_width, + cfg_interrupt_mmenable, + cfg_pcie_link_state, + pl_initial_link_width, + pl_tx_pm_state, + cfg_mgmt_do, + tx_buf_av, + cfg_vc_tcvc_map, + cfg_interrupt_do, + fc_cplh, + fc_nph, + fc_ph, + pipe_pclk_sel_out, + gen3_reg, + pci_exp_txn, + pci_exp_txp, + pipe_rxoutclk_out, + pipe_txoutclk_out, + user_lnk_up, + m_axis_rx_tdata, + m_axis_rx_tkeep, + m_axis_rx_tlast, + m_axis_rx_tuser, + cfg_bus_number, + cfg_device_number, + cfg_function_number, + pl_received_hot_rst, + cfg_mgmt_rd_wr_done, + cfg_err_aer_headerlog_set, + cfg_err_cpl_rdy, + cfg_interrupt_rdy, + cfg_received_func_lvl_rst, + pipe_pclk_in, + m_axis_rx_tready, + s_axis_tx_tlast, + s_axis_tx_tvalid, + pipe_userclk2_in, + pipe_userclk1_in, + pcie_drp_clk, + pcie_drp_en, + pcie_drp_we, + pl_directed_link_auton, + pl_directed_link_speed, + pl_downstream_deemph_source, + pl_transmit_hot_rst, + pl_upstream_prefer_deemph, + rx_np_ok, + rx_np_req, + cfg_err_aer_headerlog, + pcie_drp_di, + cfg_pm_force_state, + pl_directed_link_change, + pl_directed_link_width, + cfg_ds_function_number, + fc_sel, + cfg_mgmt_di, + cfg_err_tlp_cpl_header, + cfg_aer_interrupt_msgnum, + cfg_ds_device_number, + cfg_pciecap_interrupt_msgnum, + cfg_dsn, + cfg_ds_bus_number, + cfg_interrupt_di, + pcie_drp_addr, + cfg_mgmt_dwaddr, + pipe_mmcm_lock_in, + pipe_rxusrclk_in, + pipe_dclk_in, + sys_clk, + pipe_oobclk_in, + pci_exp_rxn, + pci_exp_rxp, + sys_rst_n, + tx_cfg_gnt, + cfg_turnoff_ok, + s_axis_tx_tdata, + s_axis_tx_tuser, + s_axis_tx_tkeep, + cfg_mgmt_byte_en, + cfg_trn_pending, + cfg_mgmt_wr_rw1c_as_rw, + cfg_mgmt_wr_readonly, + cfg_mgmt_wr_en, + cfg_mgmt_rd_en, + cfg_err_malformed, + cfg_err_cor, + cfg_err_ur, + cfg_err_ecrc, + cfg_err_cpl_timeout, + cfg_err_cpl_abort, + cfg_err_cpl_unexpect, + cfg_err_poisoned, + cfg_err_atomic_egress_blocked, + cfg_err_mc_blocked, + cfg_err_internal_uncor, + cfg_err_internal_cor, + cfg_err_posted, + cfg_err_locked, + cfg_err_norecovery, + cfg_interrupt, + cfg_interrupt_assert, + cfg_interrupt_stat, + cfg_pm_halt_aspm_l0s, + cfg_pm_halt_aspm_l1, + cfg_pm_force_state_en, + cfg_pm_wake); + output [5:0]pl_ltssm_state; + output pl_phy_lnk_up; + output user_reset_out; + output m_axis_rx_tvalid; + output s_axis_tx_tready; + output cfg_aer_ecrc_check_en; + output cfg_aer_ecrc_gen_en; + output cfg_aer_rooterr_corr_err_received; + output cfg_aer_rooterr_corr_err_reporting_en; + output cfg_aer_rooterr_fatal_err_received; + output cfg_aer_rooterr_fatal_err_reporting_en; + output cfg_aer_rooterr_non_fatal_err_received; + output cfg_aer_rooterr_non_fatal_err_reporting_en; + output cfg_bridge_serr_en; + output [4:0]cfg_command; + output [11:0]cfg_dcommand2; + output [14:0]cfg_dcommand; + output [3:0]cfg_dstatus; + output cfg_interrupt_msienable; + output cfg_interrupt_msixenable; + output cfg_interrupt_msixfm; + output [10:0]cfg_lcommand; + output [9:0]cfg_lstatus; + output cfg_msg_received; + output cfg_msg_received_assert_int_a; + output cfg_msg_received_assert_int_b; + output cfg_msg_received_assert_int_c; + output cfg_msg_received_assert_int_d; + output cfg_msg_received_deassert_int_a; + output cfg_msg_received_deassert_int_b; + output cfg_msg_received_deassert_int_c; + output cfg_msg_received_deassert_int_d; + output cfg_msg_received_err_cor; + output cfg_msg_received_err_fatal; + output cfg_msg_received_err_non_fatal; + output cfg_msg_received_pm_as_nak; + output cfg_to_turnoff; + output cfg_msg_received_pme_to_ack; + output cfg_msg_received_pm_pme; + output cfg_msg_received_setslotpowerlimit; + output cfg_pmcsr_pme_en; + output cfg_pmcsr_pme_status; + output cfg_root_control_pme_int_en; + output cfg_root_control_syserr_corr_err_en; + output cfg_root_control_syserr_fatal_err_en; + output cfg_root_control_syserr_non_fatal_err_en; + output cfg_slot_control_electromech_il_ctl_pulse; + output pcie_drp_rdy; + output pl_directed_change_done; + output pl_link_gen2_cap; + output pl_link_partner_gen2_supported; + output pl_link_upcfg_cap; + output pl_sel_lnk_rate; + output tx_cfg_req; + output tx_err_drop; + output [11:0]fc_cpld; + output [11:0]fc_npd; + output [11:0]fc_pd; + output [15:0]cfg_msg_data; + output [15:0]pcie_drp_do; + output [1:0]cfg_pmcsr_powerstate; + output [1:0]pl_lane_reversal_mode; + output [1:0]pl_rx_pm_state; + output [1:0]pl_sel_lnk_width; + output [2:0]cfg_interrupt_mmenable; + output [2:0]cfg_pcie_link_state; + output [2:0]pl_initial_link_width; + output [2:0]pl_tx_pm_state; + output [31:0]cfg_mgmt_do; + output [5:0]tx_buf_av; + output [6:0]cfg_vc_tcvc_map; + output [7:0]cfg_interrupt_do; + output [7:0]fc_cplh; + output [7:0]fc_nph; + output [7:0]fc_ph; + output [3:0]pipe_pclk_sel_out; + output gen3_reg; + output [3:0]pci_exp_txn; + output [3:0]pci_exp_txp; + output [3:0]pipe_rxoutclk_out; + output pipe_txoutclk_out; + output user_lnk_up; + output [63:0]m_axis_rx_tdata; + output [0:0]m_axis_rx_tkeep; + output m_axis_rx_tlast; + output [12:0]m_axis_rx_tuser; + output [7:0]cfg_bus_number; + output [4:0]cfg_device_number; + output [2:0]cfg_function_number; + output pl_received_hot_rst; + output cfg_mgmt_rd_wr_done; + output cfg_err_aer_headerlog_set; + output cfg_err_cpl_rdy; + output cfg_interrupt_rdy; + output cfg_received_func_lvl_rst; + input pipe_pclk_in; + input m_axis_rx_tready; + input s_axis_tx_tlast; + input s_axis_tx_tvalid; + input pipe_userclk2_in; + input pipe_userclk1_in; + input pcie_drp_clk; + input pcie_drp_en; + input pcie_drp_we; + input pl_directed_link_auton; + input pl_directed_link_speed; + input pl_downstream_deemph_source; + input pl_transmit_hot_rst; + input pl_upstream_prefer_deemph; + input rx_np_ok; + input rx_np_req; + input [127:0]cfg_err_aer_headerlog; + input [15:0]pcie_drp_di; + input [1:0]cfg_pm_force_state; + input [1:0]pl_directed_link_change; + input [1:0]pl_directed_link_width; + input [2:0]cfg_ds_function_number; + input [2:0]fc_sel; + input [31:0]cfg_mgmt_di; + input [47:0]cfg_err_tlp_cpl_header; + input [4:0]cfg_aer_interrupt_msgnum; + input [4:0]cfg_ds_device_number; + input [4:0]cfg_pciecap_interrupt_msgnum; + input [63:0]cfg_dsn; + input [7:0]cfg_ds_bus_number; + input [7:0]cfg_interrupt_di; + input [8:0]pcie_drp_addr; + input [9:0]cfg_mgmt_dwaddr; + input pipe_mmcm_lock_in; + input pipe_rxusrclk_in; + input pipe_dclk_in; + input sys_clk; + input pipe_oobclk_in; + input [3:0]pci_exp_rxn; + input [3:0]pci_exp_rxp; + input sys_rst_n; + input tx_cfg_gnt; + input cfg_turnoff_ok; + input [63:0]s_axis_tx_tdata; + input [3:0]s_axis_tx_tuser; + input [0:0]s_axis_tx_tkeep; + input [3:0]cfg_mgmt_byte_en; + input cfg_trn_pending; + input cfg_mgmt_wr_rw1c_as_rw; + input cfg_mgmt_wr_readonly; + input cfg_mgmt_wr_en; + input cfg_mgmt_rd_en; + input cfg_err_malformed; + input cfg_err_cor; + input cfg_err_ur; + input cfg_err_ecrc; + input cfg_err_cpl_timeout; + input cfg_err_cpl_abort; + input cfg_err_cpl_unexpect; + input cfg_err_poisoned; + input cfg_err_atomic_egress_blocked; + input cfg_err_mc_blocked; + input cfg_err_internal_uncor; + input cfg_err_internal_cor; + input cfg_err_posted; + input cfg_err_locked; + input cfg_err_norecovery; + input cfg_interrupt; + input cfg_interrupt_assert; + input cfg_interrupt_stat; + input cfg_pm_halt_aspm_l0s; + input cfg_pm_halt_aspm_l1; + input cfg_pm_force_state_en; + input cfg_pm_wake; + + wire \_inferred__0/store_ltssm_inferred_i_2_n_0 ; + wire \_inferred__0/store_ltssm_inferred_i_3_n_0 ; + wire bridge_reset_int; + wire cfg_aer_ecrc_check_en; + wire cfg_aer_ecrc_gen_en; + wire [4:0]cfg_aer_interrupt_msgnum; + wire cfg_aer_rooterr_corr_err_received; + wire cfg_aer_rooterr_corr_err_reporting_en; + wire cfg_aer_rooterr_fatal_err_received; + wire cfg_aer_rooterr_fatal_err_reporting_en; + wire cfg_aer_rooterr_non_fatal_err_received; + wire cfg_aer_rooterr_non_fatal_err_reporting_en; + wire cfg_bridge_serr_en; + wire [7:0]cfg_bus_number; + wire [4:0]cfg_command; + wire [14:0]cfg_dcommand; + wire [11:0]cfg_dcommand2; + wire [4:0]cfg_device_number; + wire [7:0]cfg_ds_bus_number; + wire [4:0]cfg_ds_device_number; + wire [2:0]cfg_ds_function_number; + wire [63:0]cfg_dsn; + wire [3:0]cfg_dstatus; + wire [127:0]cfg_err_aer_headerlog; + wire cfg_err_aer_headerlog_set; + wire cfg_err_atomic_egress_blocked; + wire cfg_err_cor; + wire cfg_err_cpl_abort; + wire cfg_err_cpl_rdy; + wire cfg_err_cpl_timeout; + wire cfg_err_cpl_unexpect; + wire cfg_err_ecrc; + wire cfg_err_internal_cor; + wire cfg_err_internal_uncor; + wire cfg_err_locked; + wire cfg_err_malformed; + wire cfg_err_mc_blocked; + wire cfg_err_norecovery; + wire cfg_err_poisoned; + wire cfg_err_posted; + wire [47:0]cfg_err_tlp_cpl_header; + wire cfg_err_ur; + wire [2:0]cfg_function_number; + wire cfg_interrupt; + wire cfg_interrupt_assert; + wire [7:0]cfg_interrupt_di; + wire [7:0]cfg_interrupt_do; + wire [2:0]cfg_interrupt_mmenable; + wire cfg_interrupt_msienable; + wire cfg_interrupt_msixenable; + wire cfg_interrupt_msixfm; + wire cfg_interrupt_rdy; + wire cfg_interrupt_stat; + wire [10:0]cfg_lcommand; + wire [9:0]cfg_lstatus; + wire [3:0]cfg_mgmt_byte_en; + wire [31:0]cfg_mgmt_di; + wire [31:0]cfg_mgmt_do; + wire [9:0]cfg_mgmt_dwaddr; + wire cfg_mgmt_rd_en; + wire cfg_mgmt_rd_wr_done; + wire cfg_mgmt_wr_en; + wire cfg_mgmt_wr_readonly; + wire cfg_mgmt_wr_rw1c_as_rw; + wire [15:0]cfg_msg_data; + wire cfg_msg_received; + wire cfg_msg_received_assert_int_a; + wire cfg_msg_received_assert_int_b; + wire cfg_msg_received_assert_int_c; + wire cfg_msg_received_assert_int_d; + wire cfg_msg_received_deassert_int_a; + wire cfg_msg_received_deassert_int_b; + wire cfg_msg_received_deassert_int_c; + wire cfg_msg_received_deassert_int_d; + wire cfg_msg_received_err_cor; + wire cfg_msg_received_err_fatal; + wire cfg_msg_received_err_non_fatal; + wire cfg_msg_received_pm_as_nak; + wire cfg_msg_received_pm_pme; + wire cfg_msg_received_pme_to_ack; + wire cfg_msg_received_setslotpowerlimit; + wire [2:0]cfg_pcie_link_state; + wire [4:0]cfg_pciecap_interrupt_msgnum; + wire [1:0]cfg_pm_force_state; + wire cfg_pm_force_state_en; + wire cfg_pm_halt_aspm_l0s; + wire cfg_pm_halt_aspm_l1; + wire cfg_pm_wake; + wire cfg_pmcsr_pme_en; + wire cfg_pmcsr_pme_status; + wire [1:0]cfg_pmcsr_powerstate; + wire cfg_received_func_lvl_rst; + wire cfg_root_control_pme_int_en; + wire cfg_root_control_syserr_corr_err_en; + wire cfg_root_control_syserr_fatal_err_en; + wire cfg_root_control_syserr_non_fatal_err_en; + wire cfg_slot_control_electromech_il_ctl_pulse; + wire cfg_to_turnoff; + wire cfg_trn_pending; + wire cfg_turnoff_ok; + wire [6:0]cfg_vc_tcvc_map; + wire [11:0]fc_cpld; + wire [7:0]fc_cplh; + wire [11:0]fc_npd; + wire [7:0]fc_nph; + wire [11:0]fc_pd; + wire [7:0]fc_ph; + wire [2:0]fc_sel; + wire gen3_reg; + wire gt_rx_phy_status_q; + wire gt_rxelecidle_q; + wire gt_top_i_n_10; + wire gt_top_i_n_120; + wire gt_top_i_n_13; + wire gt_top_i_n_5; + wire gt_top_i_n_6; + wire gt_top_i_n_7; + wire gt_top_i_n_78; + wire gt_top_i_n_79; + wire gt_top_i_n_8; + wire gt_top_i_n_80; + wire gt_top_i_n_81; + wire gt_top_i_n_82; + wire gt_top_i_n_83; + wire gt_top_i_n_84; + wire gt_top_i_n_85; + wire gt_top_i_n_86; + wire gt_top_i_n_87; + wire gt_top_i_n_88; + wire gt_top_i_n_89; + wire gt_top_i_n_9; + wire \ltssm_reg1_reg[0]_srl2_n_0 ; + wire \ltssm_reg1_reg[1]_srl2_n_0 ; + wire \ltssm_reg1_reg[2]_srl2_n_0 ; + wire \ltssm_reg1_reg[3]_srl2_n_0 ; + wire \ltssm_reg1_reg[4]_srl2_n_0 ; + wire \ltssm_reg1_reg[5]_srl2_n_0 ; + wire [5:0]ltssm_reg2; + wire [63:0]m_axis_rx_tdata; + wire [0:0]m_axis_rx_tkeep; + wire m_axis_rx_tlast; + wire m_axis_rx_tready; + wire [12:0]m_axis_rx_tuser; + wire m_axis_rx_tvalid; + wire [3:0]pci_exp_rxn; + wire [3:0]pci_exp_rxp; + wire [3:0]pci_exp_txn; + wire [3:0]pci_exp_txp; + wire pcie_block_i_i_32_n_0; + wire pcie_block_i_i_33_n_0; + wire pcie_block_i_i_34_n_0; + wire pcie_block_i_i_35_n_0; + wire [8:0]pcie_drp_addr; + wire pcie_drp_clk; + wire [15:0]pcie_drp_di; + wire [15:0]pcie_drp_do; + wire pcie_drp_en; + wire pcie_drp_rdy; + wire pcie_drp_we; + wire pcie_top_i_n_20; + wire phy_rdy_n; + wire pipe_dclk_in; + wire pipe_mmcm_lock_in; + wire pipe_oobclk_in; + wire pipe_pclk_in; + wire [3:0]pipe_pclk_sel_out; + wire pipe_rx0_chanisaligned_gt; + wire [1:0]pipe_rx0_char_is_k_gt; + wire [15:0]pipe_rx0_data_gt; + wire pipe_rx0_polarity_gt; + wire pipe_rx0_valid_gt; + wire pipe_rx1_chanisaligned_gt; + wire [1:0]pipe_rx1_char_is_k_gt; + wire [15:0]pipe_rx1_data_gt; + wire pipe_rx1_polarity_gt; + wire pipe_rx1_valid_gt; + wire pipe_rx2_chanisaligned_gt; + wire [1:0]pipe_rx2_char_is_k_gt; + wire [15:0]pipe_rx2_data_gt; + wire pipe_rx2_polarity_gt; + wire pipe_rx2_valid_gt; + wire pipe_rx3_chanisaligned_gt; + wire [1:0]pipe_rx3_char_is_k_gt; + wire [15:0]pipe_rx3_data_gt; + wire pipe_rx3_polarity_gt; + wire pipe_rx3_valid_gt; + wire [3:0]pipe_rxoutclk_out; + wire pipe_rxusrclk_in; + wire [1:0]pipe_tx0_char_is_k_gt; + wire pipe_tx0_compliance_gt; + wire [15:0]pipe_tx0_data_gt; + wire pipe_tx0_elec_idle_gt; + wire [1:0]pipe_tx0_powerdown_gt; + wire [1:0]pipe_tx1_char_is_k_gt; + wire pipe_tx1_compliance_gt; + wire [15:0]pipe_tx1_data_gt; + wire pipe_tx1_elec_idle_gt; + wire [1:0]pipe_tx1_powerdown_gt; + wire [1:0]pipe_tx2_char_is_k_gt; + wire pipe_tx2_compliance_gt; + wire [15:0]pipe_tx2_data_gt; + wire pipe_tx2_elec_idle_gt; + wire [1:0]pipe_tx2_powerdown_gt; + wire [1:0]pipe_tx3_char_is_k_gt; + wire pipe_tx3_compliance_gt; + wire [15:0]pipe_tx3_data_gt; + wire pipe_tx3_elec_idle_gt; + wire [1:0]pipe_tx3_powerdown_gt; + wire pipe_tx_deemph_gt; + wire [2:0]pipe_tx_margin_gt; + wire pipe_tx_rate_gt; + wire pipe_tx_rcvr_det_gt; + wire pipe_txoutclk_out; + wire pipe_userclk1_in; + wire pipe_userclk2_in; + wire pl_directed_change_done; + wire pl_directed_link_auton; + wire [1:0]pl_directed_link_change; + wire pl_directed_link_speed; + wire [1:0]pl_directed_link_width; + wire pl_downstream_deemph_source; + wire [2:0]pl_initial_link_width; + wire [1:0]pl_lane_reversal_mode; + wire pl_link_gen2_cap; + wire pl_link_partner_gen2_supported; + wire pl_link_upcfg_cap; + wire [5:0]pl_ltssm_state; + wire pl_phy_lnk_up; + wire pl_phy_lnk_up_sync; + wire pl_phy_lnk_up_wire; + wire pl_received_hot_rst; + wire pl_received_hot_rst_sync; + wire pl_received_hot_rst_wire; + wire [1:0]pl_rx_pm_state; + wire pl_sel_lnk_rate; + wire [1:0]pl_sel_lnk_width; + wire pl_transmit_hot_rst; + wire [2:0]pl_tx_pm_state; + wire pl_upstream_prefer_deemph; + wire rx_np_ok; + wire rx_np_req; + wire [63:0]s_axis_tx_tdata; + wire [0:0]s_axis_tx_tkeep; + wire s_axis_tx_tlast; + wire s_axis_tx_tready; + wire [3:0]s_axis_tx_tuser; + wire s_axis_tx_tvalid; + (* DONT_TOUCH *) wire store_ltssm; + wire sys_clk; + wire sys_or_hot_rst; + wire sys_rst_n; + wire trn_lnk_up; + wire [5:0]tx_buf_av; + wire tx_cfg_gnt; + wire tx_cfg_req; + wire tx_err_drop; + (* RTL_KEEP = "true" *) (* async_reg = "true" *) wire user_lnk_up_int; + (* async_reg = "true" *) wire user_lnk_up_mux; + wire user_reset_out; + + assign user_lnk_up = user_lnk_up_int; + LUT2 #( + .INIT(4'hE)) + \_inferred__0/store_ltssm_inferred_i_1 + (.I0(\_inferred__0/store_ltssm_inferred_i_2_n_0 ), + .I1(\_inferred__0/store_ltssm_inferred_i_3_n_0 ), + .O(store_ltssm)); + LUT6 #( + .INIT(64'h6FF6FFFFFFFF6FF6)) + \_inferred__0/store_ltssm_inferred_i_2 + (.I0(ltssm_reg2[0]), + .I1(pl_ltssm_state[0]), + .I2(pl_ltssm_state[2]), + .I3(ltssm_reg2[2]), + .I4(pl_ltssm_state[1]), + .I5(ltssm_reg2[1]), + .O(\_inferred__0/store_ltssm_inferred_i_2_n_0 )); + LUT6 #( + .INIT(64'h6FF6FFFFFFFF6FF6)) + \_inferred__0/store_ltssm_inferred_i_3 + (.I0(ltssm_reg2[3]), + .I1(pl_ltssm_state[3]), + .I2(pl_ltssm_state[5]), + .I3(ltssm_reg2[5]), + .I4(pl_ltssm_state[4]), + .I5(ltssm_reg2[4]), + .O(\_inferred__0/store_ltssm_inferred_i_3_n_0 )); + pcie_7x_0_pcie_7x_0_gt_top gt_top_i + (.D(pipe_rx0_char_is_k_gt), + .PIPE_POWERDOWN({pipe_tx3_powerdown_gt,pipe_tx2_powerdown_gt,pipe_tx1_powerdown_gt,pipe_tx0_powerdown_gt}), + .PIPE_RXCHANISALIGNED({pipe_rx3_chanisaligned_gt,pipe_rx2_chanisaligned_gt,pipe_rx1_chanisaligned_gt,pipe_rx0_chanisaligned_gt}), + .PIPE_RXPOLARITY({pipe_rx3_polarity_gt,pipe_rx2_polarity_gt,pipe_rx1_polarity_gt,pipe_rx0_polarity_gt}), + .PIPE_TXCOMPLIANCE({pipe_tx3_compliance_gt,pipe_tx2_compliance_gt,pipe_tx1_compliance_gt,pipe_tx0_compliance_gt}), + .PIPE_TXDATA({pipe_tx3_data_gt,pipe_tx2_data_gt,pipe_tx1_data_gt,pipe_tx0_data_gt}), + .PIPE_TXDATAK({pipe_tx3_char_is_k_gt,pipe_tx2_char_is_k_gt,pipe_tx1_char_is_k_gt,pipe_tx0_char_is_k_gt}), + .PIPE_TXELECIDLE({pipe_tx3_elec_idle_gt,pipe_tx2_elec_idle_gt,pipe_tx1_elec_idle_gt,pipe_tx0_elec_idle_gt}), + .Q(pipe_rx0_data_gt), + .USER_RATE_GEN3(gen3_reg), + .\cplllock_reg1_reg[3] (pipe_tx_margin_gt), + .gt_rx_phy_status_q(gt_rx_phy_status_q), + .gt_rx_phy_status_q_reg(gt_top_i_n_5), + .gt_rx_phy_status_q_reg_0(gt_top_i_n_7), + .gt_rx_phy_status_q_reg_1(gt_top_i_n_9), + .\gt_rx_status_q_reg[2] ({gt_top_i_n_78,gt_top_i_n_79,gt_top_i_n_80}), + .\gt_rx_status_q_reg[2]_0 ({gt_top_i_n_81,gt_top_i_n_82,gt_top_i_n_83}), + .\gt_rx_status_q_reg[2]_1 ({gt_top_i_n_84,gt_top_i_n_85,gt_top_i_n_86}), + .\gt_rx_status_q_reg[2]_2 ({gt_top_i_n_87,gt_top_i_n_88,gt_top_i_n_89}), + .\gt_rxdata_q_reg[15] (pipe_rx1_data_gt), + .\gt_rxdata_q_reg[15]_0 (pipe_rx2_data_gt), + .\gt_rxdata_q_reg[15]_1 (pipe_rx3_data_gt), + .gt_rxelecidle_q(gt_rxelecidle_q), + .gt_rxelecidle_q_reg(gt_top_i_n_6), + .gt_rxelecidle_q_reg_0(gt_top_i_n_8), + .gt_rxelecidle_q_reg_1(gt_top_i_n_10), + .gt_rxvalid_q_reg(pipe_rx1_char_is_k_gt), + .gt_rxvalid_q_reg_0(pipe_rx2_char_is_k_gt), + .gt_rxvalid_q_reg_1(pipe_rx3_char_is_k_gt), + .pci_exp_rxn(pci_exp_rxn), + .pci_exp_rxp(pci_exp_rxp), + .pci_exp_txn(pci_exp_txn), + .pci_exp_txp(pci_exp_txp), + .phy_rdy_n(phy_rdy_n), + .pipe_dclk_in(pipe_dclk_in), + .pipe_mmcm_lock_in(pipe_mmcm_lock_in), + .pipe_oobclk_in(pipe_oobclk_in), + .pipe_pclk_in(pipe_pclk_in), + .pipe_pclk_sel_out(pipe_pclk_sel_out), + .pipe_rx0_valid_gt(pipe_rx0_valid_gt), + .pipe_rx1_valid_gt(pipe_rx1_valid_gt), + .pipe_rx2_valid_gt(pipe_rx2_valid_gt), + .pipe_rx3_valid_gt(pipe_rx3_valid_gt), + .pipe_rxoutclk_out(pipe_rxoutclk_out), + .pipe_rxusrclk_in(pipe_rxusrclk_in), + .pipe_tx_deemph_gt(pipe_tx_deemph_gt), + .pipe_tx_rcvr_det_gt(pipe_tx_rcvr_det_gt), + .pipe_txoutclk_out(pipe_txoutclk_out), + .pl_ltssm_state(pl_ltssm_state), + .\rate_reg1_reg[0] (pipe_tx_rate_gt), + .reset_n_reg1_reg(sys_rst_n), + .sys_clk(sys_clk), + .sys_rst_n(gt_top_i_n_13), + .sys_rst_n_0(gt_top_i_n_120)); + (* srl_bus_name = "inst/\inst/ltssm_reg1_reg " *) + (* srl_name = "inst/\inst/ltssm_reg1_reg[0]_srl2 " *) + SRL16E #( + .INIT(16'h0000)) + \ltssm_reg1_reg[0]_srl2 + (.A0(1'b1), + .A1(1'b0), + .A2(1'b0), + .A3(1'b0), + .CE(1'b1), + .CLK(pipe_pclk_in), + .D(pl_ltssm_state[0]), + .Q(\ltssm_reg1_reg[0]_srl2_n_0 )); + (* srl_bus_name = "inst/\inst/ltssm_reg1_reg " *) + (* srl_name = "inst/\inst/ltssm_reg1_reg[1]_srl2 " *) + SRL16E #( + .INIT(16'h0000)) + \ltssm_reg1_reg[1]_srl2 + (.A0(1'b1), + .A1(1'b0), + .A2(1'b0), + .A3(1'b0), + .CE(1'b1), + .CLK(pipe_pclk_in), + .D(pl_ltssm_state[1]), + .Q(\ltssm_reg1_reg[1]_srl2_n_0 )); + (* srl_bus_name = "inst/\inst/ltssm_reg1_reg " *) + (* srl_name = "inst/\inst/ltssm_reg1_reg[2]_srl2 " *) + SRL16E #( + .INIT(16'h0000)) + \ltssm_reg1_reg[2]_srl2 + (.A0(1'b1), + .A1(1'b0), + .A2(1'b0), + .A3(1'b0), + .CE(1'b1), + .CLK(pipe_pclk_in), + .D(pl_ltssm_state[2]), + .Q(\ltssm_reg1_reg[2]_srl2_n_0 )); + (* srl_bus_name = "inst/\inst/ltssm_reg1_reg " *) + (* srl_name = "inst/\inst/ltssm_reg1_reg[3]_srl2 " *) + SRL16E #( + .INIT(16'h0000)) + \ltssm_reg1_reg[3]_srl2 + (.A0(1'b1), + .A1(1'b0), + .A2(1'b0), + .A3(1'b0), + .CE(1'b1), + .CLK(pipe_pclk_in), + .D(pl_ltssm_state[3]), + .Q(\ltssm_reg1_reg[3]_srl2_n_0 )); + (* srl_bus_name = "inst/\inst/ltssm_reg1_reg " *) + (* srl_name = "inst/\inst/ltssm_reg1_reg[4]_srl2 " *) + SRL16E #( + .INIT(16'h0000)) + \ltssm_reg1_reg[4]_srl2 + (.A0(1'b1), + .A1(1'b0), + .A2(1'b0), + .A3(1'b0), + .CE(1'b1), + .CLK(pipe_pclk_in), + .D(pl_ltssm_state[4]), + .Q(\ltssm_reg1_reg[4]_srl2_n_0 )); + (* srl_bus_name = "inst/\inst/ltssm_reg1_reg " *) + (* srl_name = "inst/\inst/ltssm_reg1_reg[5]_srl2 " *) + SRL16E #( + .INIT(16'h0000)) + \ltssm_reg1_reg[5]_srl2 + (.A0(1'b1), + .A1(1'b0), + .A2(1'b0), + .A3(1'b0), + .CE(1'b1), + .CLK(pipe_pclk_in), + .D(pl_ltssm_state[5]), + .Q(\ltssm_reg1_reg[5]_srl2_n_0 )); + FDRE #( + .INIT(1'b0)) + \ltssm_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\ltssm_reg1_reg[0]_srl2_n_0 ), + .Q(ltssm_reg2[0]), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \ltssm_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\ltssm_reg1_reg[1]_srl2_n_0 ), + .Q(ltssm_reg2[1]), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \ltssm_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\ltssm_reg1_reg[2]_srl2_n_0 ), + .Q(ltssm_reg2[2]), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \ltssm_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\ltssm_reg1_reg[3]_srl2_n_0 ), + .Q(ltssm_reg2[3]), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \ltssm_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\ltssm_reg1_reg[4]_srl2_n_0 ), + .Q(ltssm_reg2[4]), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \ltssm_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\ltssm_reg1_reg[5]_srl2_n_0 ), + .Q(ltssm_reg2[5]), + .R(1'b0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_32 + (.I0(cfg_mgmt_byte_en[3]), + .O(pcie_block_i_i_32_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_33 + (.I0(cfg_mgmt_byte_en[2]), + .O(pcie_block_i_i_33_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_34 + (.I0(cfg_mgmt_byte_en[1]), + .O(pcie_block_i_i_34_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_35 + (.I0(cfg_mgmt_byte_en[0]), + .O(pcie_block_i_i_35_n_0)); + pcie_7x_0_pcie_7x_0_pcie_top pcie_top_i + (.D(pipe_rx1_char_is_k_gt), + .PIPE_POWERDOWN({pipe_tx3_powerdown_gt,pipe_tx2_powerdown_gt,pipe_tx1_powerdown_gt,pipe_tx0_powerdown_gt}), + .PIPE_RXCHANISALIGNED({pipe_rx3_chanisaligned_gt,pipe_rx2_chanisaligned_gt,pipe_rx1_chanisaligned_gt,pipe_rx0_chanisaligned_gt}), + .PIPE_RXPOLARITY({pipe_rx3_polarity_gt,pipe_rx2_polarity_gt,pipe_rx1_polarity_gt,pipe_rx0_polarity_gt}), + .PIPE_TXCOMPLIANCE({pipe_tx3_compliance_gt,pipe_tx2_compliance_gt,pipe_tx1_compliance_gt,pipe_tx0_compliance_gt}), + .PIPE_TXDATA({pipe_tx3_data_gt,pipe_tx2_data_gt,pipe_tx1_data_gt,pipe_tx0_data_gt}), + .PIPE_TXDATAK({pipe_tx3_char_is_k_gt,pipe_tx2_char_is_k_gt,pipe_tx1_char_is_k_gt,pipe_tx0_char_is_k_gt}), + .PIPE_TXELECIDLE({pipe_tx3_elec_idle_gt,pipe_tx2_elec_idle_gt,pipe_tx1_elec_idle_gt,pipe_tx0_elec_idle_gt}), + .Q(pipe_tx_margin_gt), + .SR(phy_rdy_n), + .bridge_reset_int(bridge_reset_int), + .cfg_aer_ecrc_check_en(cfg_aer_ecrc_check_en), + .cfg_aer_ecrc_gen_en(cfg_aer_ecrc_gen_en), + .cfg_aer_interrupt_msgnum(cfg_aer_interrupt_msgnum), + .cfg_aer_rooterr_corr_err_received(cfg_aer_rooterr_corr_err_received), + .cfg_aer_rooterr_corr_err_reporting_en(cfg_aer_rooterr_corr_err_reporting_en), + .cfg_aer_rooterr_fatal_err_received(cfg_aer_rooterr_fatal_err_received), + .cfg_aer_rooterr_fatal_err_reporting_en(cfg_aer_rooterr_fatal_err_reporting_en), + .cfg_aer_rooterr_non_fatal_err_received(cfg_aer_rooterr_non_fatal_err_received), + .cfg_aer_rooterr_non_fatal_err_reporting_en(cfg_aer_rooterr_non_fatal_err_reporting_en), + .cfg_bridge_serr_en(cfg_bridge_serr_en), + .cfg_bus_number(cfg_bus_number), + .cfg_command(cfg_command), + .cfg_dcommand(cfg_dcommand), + .cfg_dcommand2(cfg_dcommand2), + .cfg_device_number(cfg_device_number), + .cfg_ds_bus_number(cfg_ds_bus_number), + .cfg_ds_device_number(cfg_ds_device_number), + .cfg_ds_function_number(cfg_ds_function_number), + .cfg_dsn(cfg_dsn), + .cfg_dstatus(cfg_dstatus), + .cfg_err_aer_headerlog(cfg_err_aer_headerlog), + .cfg_err_aer_headerlog_set(cfg_err_aer_headerlog_set), + .cfg_err_atomic_egress_blocked(cfg_err_atomic_egress_blocked), + .cfg_err_cor(cfg_err_cor), + .cfg_err_cpl_abort(cfg_err_cpl_abort), + .cfg_err_cpl_rdy(cfg_err_cpl_rdy), + .cfg_err_cpl_timeout(cfg_err_cpl_timeout), + .cfg_err_cpl_unexpect(cfg_err_cpl_unexpect), + .cfg_err_ecrc(cfg_err_ecrc), + .cfg_err_internal_cor(cfg_err_internal_cor), + .cfg_err_internal_uncor(cfg_err_internal_uncor), + .cfg_err_locked(cfg_err_locked), + .cfg_err_malformed(cfg_err_malformed), + .cfg_err_mc_blocked(cfg_err_mc_blocked), + .cfg_err_norecovery(cfg_err_norecovery), + .cfg_err_poisoned(cfg_err_poisoned), + .cfg_err_posted(cfg_err_posted), + .cfg_err_tlp_cpl_header(cfg_err_tlp_cpl_header), + .cfg_err_ur(cfg_err_ur), + .cfg_function_number(cfg_function_number), + .cfg_interrupt(cfg_interrupt), + .cfg_interrupt_assert(cfg_interrupt_assert), + .cfg_interrupt_di(cfg_interrupt_di), + .cfg_interrupt_do(cfg_interrupt_do), + .cfg_interrupt_mmenable(cfg_interrupt_mmenable), + .cfg_interrupt_msienable(cfg_interrupt_msienable), + .cfg_interrupt_msixenable(cfg_interrupt_msixenable), + .cfg_interrupt_msixfm(cfg_interrupt_msixfm), + .cfg_interrupt_rdy(cfg_interrupt_rdy), + .cfg_interrupt_stat(cfg_interrupt_stat), + .cfg_lcommand(cfg_lcommand), + .cfg_lstatus(cfg_lstatus), + .cfg_mgmt_byte_en_n({pcie_block_i_i_32_n_0,pcie_block_i_i_33_n_0,pcie_block_i_i_34_n_0,pcie_block_i_i_35_n_0}), + .cfg_mgmt_di(cfg_mgmt_di), + .cfg_mgmt_do(cfg_mgmt_do), + .cfg_mgmt_dwaddr(cfg_mgmt_dwaddr), + .cfg_mgmt_rd_en(cfg_mgmt_rd_en), + .cfg_mgmt_rd_wr_done(cfg_mgmt_rd_wr_done), + .cfg_mgmt_wr_en(cfg_mgmt_wr_en), + .cfg_mgmt_wr_readonly(cfg_mgmt_wr_readonly), + .cfg_mgmt_wr_rw1c_as_rw(cfg_mgmt_wr_rw1c_as_rw), + .cfg_msg_data(cfg_msg_data), + .cfg_msg_received(cfg_msg_received), + .cfg_msg_received_assert_int_a(cfg_msg_received_assert_int_a), + .cfg_msg_received_assert_int_b(cfg_msg_received_assert_int_b), + .cfg_msg_received_assert_int_c(cfg_msg_received_assert_int_c), + .cfg_msg_received_assert_int_d(cfg_msg_received_assert_int_d), + .cfg_msg_received_deassert_int_a(cfg_msg_received_deassert_int_a), + .cfg_msg_received_deassert_int_b(cfg_msg_received_deassert_int_b), + .cfg_msg_received_deassert_int_c(cfg_msg_received_deassert_int_c), + .cfg_msg_received_deassert_int_d(cfg_msg_received_deassert_int_d), + .cfg_msg_received_err_cor(cfg_msg_received_err_cor), + .cfg_msg_received_err_fatal(cfg_msg_received_err_fatal), + .cfg_msg_received_err_non_fatal(cfg_msg_received_err_non_fatal), + .cfg_msg_received_pm_as_nak(cfg_msg_received_pm_as_nak), + .cfg_msg_received_pm_pme(cfg_msg_received_pm_pme), + .cfg_msg_received_pme_to_ack(cfg_msg_received_pme_to_ack), + .cfg_msg_received_setslotpowerlimit(cfg_msg_received_setslotpowerlimit), + .cfg_pcie_link_state(cfg_pcie_link_state), + .cfg_pciecap_interrupt_msgnum(cfg_pciecap_interrupt_msgnum), + .cfg_pm_force_state(cfg_pm_force_state), + .cfg_pm_force_state_en(cfg_pm_force_state_en), + .cfg_pm_halt_aspm_l0s(cfg_pm_halt_aspm_l0s), + .cfg_pm_halt_aspm_l1(cfg_pm_halt_aspm_l1), + .cfg_pm_wake(cfg_pm_wake), + .cfg_pmcsr_pme_en(cfg_pmcsr_pme_en), + .cfg_pmcsr_pme_status(cfg_pmcsr_pme_status), + .cfg_pmcsr_powerstate(cfg_pmcsr_powerstate), + .cfg_received_func_lvl_rst(cfg_received_func_lvl_rst), + .cfg_root_control_pme_int_en(cfg_root_control_pme_int_en), + .cfg_root_control_syserr_corr_err_en(cfg_root_control_syserr_corr_err_en), + .cfg_root_control_syserr_fatal_err_en(cfg_root_control_syserr_fatal_err_en), + .cfg_root_control_syserr_non_fatal_err_en(cfg_root_control_syserr_non_fatal_err_en), + .cfg_slot_control_electromech_il_ctl_pulse(cfg_slot_control_electromech_il_ctl_pulse), + .cfg_to_turnoff(cfg_to_turnoff), + .cfg_trn_pending(cfg_trn_pending), + .cfg_turnoff_ok(cfg_turnoff_ok), + .cfg_vc_tcvc_map(cfg_vc_tcvc_map), + .fc_cpld(fc_cpld), + .fc_cplh(fc_cplh), + .fc_npd(fc_npd), + .fc_nph(fc_nph), + .fc_pd(fc_pd), + .fc_ph(fc_ph), + .fc_sel(fc_sel), + .gt_rx_phy_status_q(gt_rx_phy_status_q), + .gt_rxelecidle_q(gt_rxelecidle_q), + .m_axis_rx_tdata(m_axis_rx_tdata), + .m_axis_rx_tkeep(m_axis_rx_tkeep), + .m_axis_rx_tlast(m_axis_rx_tlast), + .m_axis_rx_tready(m_axis_rx_tready), + .m_axis_rx_tuser(m_axis_rx_tuser), + .m_axis_rx_tvalid_reg(m_axis_rx_tvalid), + .out(user_lnk_up_int), + .pcie_drp_addr(pcie_drp_addr), + .pcie_drp_clk(pcie_drp_clk), + .pcie_drp_di(pcie_drp_di), + .pcie_drp_do(pcie_drp_do), + .pcie_drp_en(pcie_drp_en), + .pcie_drp_rdy(pcie_drp_rdy), + .pcie_drp_we(pcie_drp_we), + .pipe_pclk_in(pipe_pclk_in), + .pipe_rx0_valid_gt(pipe_rx0_valid_gt), + .pipe_rx1_valid_gt(pipe_rx1_valid_gt), + .pipe_rx2_valid_gt(pipe_rx2_valid_gt), + .pipe_rx3_valid_gt(pipe_rx3_valid_gt), + .\pipe_stages_1.pipe_rx_char_is_k_q_reg[1] (pipe_rx2_char_is_k_gt), + .\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 (pipe_rx3_char_is_k_gt), + .\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 (pipe_rx0_char_is_k_gt), + .\pipe_stages_1.pipe_rx_data_q_reg[15] (pipe_rx1_data_gt), + .\pipe_stages_1.pipe_rx_data_q_reg[15]_0 (pipe_rx2_data_gt), + .\pipe_stages_1.pipe_rx_data_q_reg[15]_1 (pipe_rx3_data_gt), + .\pipe_stages_1.pipe_rx_data_q_reg[15]_2 (pipe_rx0_data_gt), + .\pipe_stages_1.pipe_rx_elec_idle_q_reg (gt_top_i_n_6), + .\pipe_stages_1.pipe_rx_elec_idle_q_reg_0 (gt_top_i_n_8), + .\pipe_stages_1.pipe_rx_elec_idle_q_reg_1 (gt_top_i_n_10), + .\pipe_stages_1.pipe_rx_phy_status_q_reg (gt_top_i_n_5), + .\pipe_stages_1.pipe_rx_phy_status_q_reg_0 (gt_top_i_n_7), + .\pipe_stages_1.pipe_rx_phy_status_q_reg_1 (gt_top_i_n_9), + .\pipe_stages_1.pipe_rx_status_q_reg[2] ({gt_top_i_n_78,gt_top_i_n_79,gt_top_i_n_80}), + .\pipe_stages_1.pipe_rx_status_q_reg[2]_0 ({gt_top_i_n_81,gt_top_i_n_82,gt_top_i_n_83}), + .\pipe_stages_1.pipe_rx_status_q_reg[2]_1 ({gt_top_i_n_84,gt_top_i_n_85,gt_top_i_n_86}), + .\pipe_stages_1.pipe_rx_status_q_reg[2]_2 ({gt_top_i_n_87,gt_top_i_n_88,gt_top_i_n_89}), + .\pipe_stages_1.pipe_tx_rate_q_reg (pipe_tx_rate_gt), + .pipe_tx_deemph_gt(pipe_tx_deemph_gt), + .pipe_tx_rcvr_det_gt(pipe_tx_rcvr_det_gt), + .pipe_userclk1_in(pipe_userclk1_in), + .pipe_userclk2_in(pipe_userclk2_in), + .pl_directed_change_done(pl_directed_change_done), + .pl_directed_link_auton(pl_directed_link_auton), + .pl_directed_link_change(pl_directed_link_change), + .pl_directed_link_speed(pl_directed_link_speed), + .pl_directed_link_width(pl_directed_link_width), + .pl_downstream_deemph_source(pl_downstream_deemph_source), + .pl_initial_link_width(pl_initial_link_width), + .pl_lane_reversal_mode(pl_lane_reversal_mode), + .pl_link_gen2_cap(pl_link_gen2_cap), + .pl_link_partner_gen2_supported(pl_link_partner_gen2_supported), + .pl_link_upcfg_cap(pl_link_upcfg_cap), + .pl_ltssm_state(pl_ltssm_state), + .pl_phy_lnk_up(pl_phy_lnk_up), + .pl_received_hot_rst(pl_received_hot_rst_wire), + .pl_rx_pm_state(pl_rx_pm_state), + .pl_sel_lnk_rate(pl_sel_lnk_rate), + .pl_sel_lnk_width(pl_sel_lnk_width), + .pl_transmit_hot_rst(pl_transmit_hot_rst), + .pl_tx_pm_state(pl_tx_pm_state), + .pl_upstream_prefer_deemph(pl_upstream_prefer_deemph), + .rx_np_ok(rx_np_ok), + .rx_np_req(rx_np_req), + .s_axis_tx_tdata(s_axis_tx_tdata), + .s_axis_tx_tkeep(s_axis_tx_tkeep), + .s_axis_tx_tlast(s_axis_tx_tlast), + .s_axis_tx_tuser(s_axis_tx_tuser), + .s_axis_tx_tvalid(s_axis_tx_tvalid), + .src_in(pl_phy_lnk_up_wire), + .sys_rst_n(gt_top_i_n_13), + .\throttle_ctl_pipeline.reg_tkeep_reg[7] (user_reset_out), + .tready_thrtl_reg(s_axis_tx_tready), + .trn_lnk_up(trn_lnk_up), + .trn_tbuf_av(tx_buf_av), + .trn_tcfg_req(tx_cfg_req), + .tx_cfg_gnt(tx_cfg_gnt), + .tx_err_drop(tx_err_drop), + .user_reset_int_reg(pcie_top_i_n_20)); + (* DEST_SYNC_FF = "2" *) + (* INIT_SYNC_FF = "0" *) + (* SIM_ASSERT_CHK = "0" *) + (* SRC_INPUT_REG = "0" *) + (* VERSION = "0" *) + (* XPM_CDC = "SINGLE" *) + (* XPM_MODULE = "TRUE" *) + pcie_7x_0_xpm_cdc_single__2 phy_lnk_up_cdc + (.dest_clk(pipe_userclk2_in), + .dest_out(pl_phy_lnk_up_sync), + .src_clk(1'b0), + .src_in(pl_phy_lnk_up_wire)); + FDRE pl_phy_lnk_up_q_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(pl_phy_lnk_up_sync), + .Q(pl_phy_lnk_up), + .R(gt_top_i_n_120)); + (* DEST_SYNC_FF = "2" *) + (* INIT_SYNC_FF = "0" *) + (* SIM_ASSERT_CHK = "0" *) + (* SRC_INPUT_REG = "0" *) + (* VERSION = "0" *) + (* XPM_CDC = "SINGLE" *) + (* XPM_MODULE = "TRUE" *) + pcie_7x_0_xpm_cdc_single pl_received_hot_rst_cdc + (.dest_clk(pipe_userclk2_in), + .dest_out(pl_received_hot_rst_sync), + .src_clk(1'b0), + .src_in(pl_received_hot_rst_wire)); + FDRE pl_received_hot_rst_q_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(pl_received_hot_rst_sync), + .Q(pl_received_hot_rst), + .R(gt_top_i_n_120)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + FDRE user_lnk_up_int_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(trn_lnk_up), + .Q(user_lnk_up_int), + .R(gt_top_i_n_120)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + FDRE user_lnk_up_mux_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(user_lnk_up_int), + .Q(user_lnk_up_mux), + .R(gt_top_i_n_120)); + FDPE user_reset_int_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(pcie_top_i_n_20), + .PRE(sys_or_hot_rst), + .Q(bridge_reset_int)); + LUT2 #( + .INIT(4'hB)) + user_reset_out_i_1 + (.I0(pl_received_hot_rst), + .I1(sys_rst_n), + .O(sys_or_hot_rst)); + FDPE user_reset_out_reg + (.C(pipe_userclk2_in), + .CE(1'b1), + .D(bridge_reset_int), + .PRE(sys_or_hot_rst), + .Q(user_reset_out)); +endmodule + +module pcie_7x_0_pcie_7x_0_gt_common + (QPLL_QPLLLOCK, + QPLL_QPLLOUTCLK, + QPLL_QPLLOUTREFCLK, + QPLL_DRP_DONE, + RST_DCLK_RESET, + pipe_dclk_in, + sys_clk, + QPLL_QPLLPD, + QPLL_QPLLRESET, + QRST_DRP_START, + QPLL_DRP_GEN3); + output QPLL_QPLLLOCK; + output QPLL_QPLLOUTCLK; + output QPLL_QPLLOUTREFCLK; + output QPLL_DRP_DONE; + input RST_DCLK_RESET; + input pipe_dclk_in; + input sys_clk; + input QPLL_QPLLPD; + input QPLL_QPLLRESET; + input QRST_DRP_START; + input QPLL_DRP_GEN3; + + wire QPLL_DRP_DONE; + wire QPLL_DRP_GEN3; + wire QPLL_QPLLLOCK; + wire QPLL_QPLLOUTCLK; + wire QPLL_QPLLOUTREFCLK; + wire QPLL_QPLLPD; + wire QPLL_QPLLRESET; + wire QRST_DRP_START; + wire RST_DCLK_RESET; + wire pipe_dclk_in; + wire [7:0]qpll_drp_addr; + wire [15:0]qpll_drp_di; + wire [15:0]qpll_drp_do; + wire qpll_drp_en; + wire qpll_drp_rdy; + wire qpll_drp_we; + wire sys_clk; + + pcie_7x_0_pcie_7x_0_qpll_drp qpll_drp_i + (.D(qpll_drp_do), + .Q({qpll_drp_addr[7],qpll_drp_addr[5],qpll_drp_addr[2:0]}), + .QPLL_DRP_DONE(QPLL_DRP_DONE), + .QPLL_DRP_GEN3(QPLL_DRP_GEN3), + .QPLL_QPLLLOCK(QPLL_QPLLLOCK), + .QRST_DRP_START(QRST_DRP_START), + .RST_DCLK_RESET(RST_DCLK_RESET), + .\di_reg[15]_0 (qpll_drp_di), + .pipe_dclk_in(pipe_dclk_in), + .qpll_drp_en(qpll_drp_en), + .qpll_drp_rdy(qpll_drp_rdy), + .qpll_drp_we(qpll_drp_we)); + pcie_7x_0_pcie_7x_0_qpll_wrapper qpll_wrapper_i + (.D(qpll_drp_do), + .Q({qpll_drp_addr[7],qpll_drp_addr[5],qpll_drp_addr[2:0]}), + .QPLL_QPLLLOCK(QPLL_QPLLLOCK), + .QPLL_QPLLOUTCLK(QPLL_QPLLOUTCLK), + .QPLL_QPLLOUTREFCLK(QPLL_QPLLOUTREFCLK), + .QPLL_QPLLPD(QPLL_QPLLPD), + .QPLL_QPLLRESET(QPLL_QPLLRESET), + .pipe_dclk_in(pipe_dclk_in), + .qpll_drp_en(qpll_drp_en), + .qpll_drp_rdy(qpll_drp_rdy), + .qpll_drp_we(qpll_drp_we), + .rdy_reg1_reg(qpll_drp_di), + .sys_clk(sys_clk)); +endmodule + +module pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x + (gt_rxvalid_q_reg_0, + gt_rx_phy_status_q, + gt_rxelecidle_q, + \pl_ltssm_state_q_reg[5] , + Q, + D, + \gt_rx_status_q_reg[2]_0 , + SR, + pipe_pclk_in, + gt_rx_phy_status_wire_filter, + PIPE_RXELECIDLE, + gt_rxvalid_q_reg_1, + PIPE_RXSTATUS, + \gt_rx_status_q_reg[0]_0 , + PIPE_RXDATAK, + PIPE_RXDATA); + output gt_rxvalid_q_reg_0; + output gt_rx_phy_status_q; + output gt_rxelecidle_q; + output \pl_ltssm_state_q_reg[5] ; + output [15:0]Q; + output [1:0]D; + output [2:0]\gt_rx_status_q_reg[2]_0 ; + input [0:0]SR; + input pipe_pclk_in; + input [0:0]gt_rx_phy_status_wire_filter; + input [0:0]PIPE_RXELECIDLE; + input gt_rxvalid_q_reg_1; + input [2:0]PIPE_RXSTATUS; + input [5:0]\gt_rx_status_q_reg[0]_0 ; + input [1:0]PIPE_RXDATAK; + input [15:0]PIPE_RXDATA; + + wire [1:0]D; + wire [15:0]PIPE_RXDATA; + wire [1:0]PIPE_RXDATAK; + wire [0:0]PIPE_RXELECIDLE; + wire [2:0]PIPE_RXSTATUS; + wire [15:0]Q; + wire [0:0]SR; + wire gt_rx_phy_status_q; + wire [0:0]gt_rx_phy_status_wire_filter; + wire \gt_rx_status_q[0]_i_1__2_n_0 ; + wire \gt_rx_status_q[1]_i_1__2_n_0 ; + wire \gt_rx_status_q[2]_i_1__2_n_0 ; + wire [5:0]\gt_rx_status_q_reg[0]_0 ; + wire [2:0]\gt_rx_status_q_reg[2]_0 ; + wire \gt_rxcharisk_q_reg_n_0_[0] ; + wire gt_rxelecidle_q; + wire gt_rxvalid_q__0; + wire gt_rxvalid_q_i_2_n_0; + wire gt_rxvalid_q_n_0; + wire gt_rxvalid_q_reg_0; + wire gt_rxvalid_q_reg_1; + wire p_1_in; + wire [4:0]p_1_in__0; + wire pipe_pclk_in; + wire \pl_ltssm_state_q_reg[5] ; + wire \reg_state_eios_det[0]_i_2_n_0 ; + wire \reg_state_eios_det[0]_i_3_n_0 ; + wire \reg_state_eios_det[0]_i_4_n_0 ; + wire \reg_state_eios_det[0]_i_5_n_0 ; + wire \reg_state_eios_det[1]_i_2_n_0 ; + wire \reg_state_eios_det[1]_i_3_n_0 ; + wire \reg_state_eios_det[2]_i_2_n_0 ; + wire \reg_state_eios_det[2]_i_3_n_0 ; + wire \reg_state_eios_det[3]_i_2_n_0 ; + wire \reg_state_eios_det[4]_i_1_n_0 ; + wire \reg_state_eios_det[4]_i_3_n_0 ; + wire reg_symbol_after_eios; + wire reg_symbol_after_eios_i_2_n_0; + wire [4:0]state_eios_det; + wire symbol_after_eios; + + FDRE gt_rx_phy_status_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gt_rx_phy_status_wire_filter), + .Q(gt_rx_phy_status_q), + .R(SR)); + (* SOFT_HLUTNM = "soft_lutpair4" *) + LUT3 #( + .INIT(8'hE0)) + \gt_rx_status_q[0]_i_1__2 + (.I0(gt_rxvalid_q_reg_0), + .I1(\pl_ltssm_state_q_reg[5] ), + .I2(PIPE_RXSTATUS[0]), + .O(\gt_rx_status_q[0]_i_1__2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair4" *) + LUT3 #( + .INIT(8'hE0)) + \gt_rx_status_q[1]_i_1__2 + (.I0(gt_rxvalid_q_reg_0), + .I1(\pl_ltssm_state_q_reg[5] ), + .I2(PIPE_RXSTATUS[1]), + .O(\gt_rx_status_q[1]_i_1__2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair5" *) + LUT3 #( + .INIT(8'hE0)) + \gt_rx_status_q[2]_i_1__2 + (.I0(gt_rxvalid_q_reg_0), + .I1(\pl_ltssm_state_q_reg[5] ), + .I2(PIPE_RXSTATUS[2]), + .O(\gt_rx_status_q[2]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFFBFFFFFF)) + \gt_rx_status_q[2]_i_2 + (.I0(\gt_rx_status_q_reg[0]_0 [5]), + .I1(\gt_rx_status_q_reg[0]_0 [4]), + .I2(\gt_rx_status_q_reg[0]_0 [3]), + .I3(\gt_rx_status_q_reg[0]_0 [2]), + .I4(\gt_rx_status_q_reg[0]_0 [1]), + .I5(\gt_rx_status_q_reg[0]_0 [0]), + .O(\pl_ltssm_state_q_reg[5] )); + FDRE \gt_rx_status_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\gt_rx_status_q[0]_i_1__2_n_0 ), + .Q(\gt_rx_status_q_reg[2]_0 [0]), + .R(SR)); + FDRE \gt_rx_status_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\gt_rx_status_q[1]_i_1__2_n_0 ), + .Q(\gt_rx_status_q_reg[2]_0 [1]), + .R(SR)); + FDRE \gt_rx_status_q_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\gt_rx_status_q[2]_i_1__2_n_0 ), + .Q(\gt_rx_status_q_reg[2]_0 [2]), + .R(SR)); + FDRE \gt_rxcharisk_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATAK[0]), + .Q(\gt_rxcharisk_q_reg_n_0_[0] ), + .R(SR)); + FDRE \gt_rxcharisk_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATAK[1]), + .Q(p_1_in), + .R(SR)); + FDRE \gt_rxdata_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[0]), + .Q(Q[0]), + .R(SR)); + FDRE \gt_rxdata_q_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[10]), + .Q(Q[10]), + .R(SR)); + FDRE \gt_rxdata_q_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[11]), + .Q(Q[11]), + .R(SR)); + FDRE \gt_rxdata_q_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[12]), + .Q(Q[12]), + .R(SR)); + FDRE \gt_rxdata_q_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[13]), + .Q(Q[13]), + .R(SR)); + FDRE \gt_rxdata_q_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[14]), + .Q(Q[14]), + .R(SR)); + FDRE \gt_rxdata_q_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[15]), + .Q(Q[15]), + .R(SR)); + FDRE \gt_rxdata_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[1]), + .Q(Q[1]), + .R(SR)); + FDRE \gt_rxdata_q_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[2]), + .Q(Q[2]), + .R(SR)); + FDRE \gt_rxdata_q_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[3]), + .Q(Q[3]), + .R(SR)); + FDRE \gt_rxdata_q_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[4]), + .Q(Q[4]), + .R(SR)); + FDRE \gt_rxdata_q_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[5]), + .Q(Q[5]), + .R(SR)); + FDRE \gt_rxdata_q_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[6]), + .Q(Q[6]), + .R(SR)); + FDRE \gt_rxdata_q_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[7]), + .Q(Q[7]), + .R(SR)); + FDRE \gt_rxdata_q_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[8]), + .Q(Q[8]), + .R(SR)); + FDRE \gt_rxdata_q_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[9]), + .Q(Q[9]), + .R(SR)); + FDRE gt_rxelecidle_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXELECIDLE), + .Q(gt_rxelecidle_q), + .R(SR)); + (* SOFT_HLUTNM = "soft_lutpair1" *) + LUT5 #( + .INIT(32'h00010116)) + gt_rxvalid_q + (.I0(state_eios_det[0]), + .I1(state_eios_det[1]), + .I2(state_eios_det[2]), + .I3(state_eios_det[3]), + .I4(state_eios_det[4]), + .O(gt_rxvalid_q_n_0)); + LUT5 #( + .INIT(32'hFFAAEAAA)) + gt_rxvalid_q_i_1 + (.I0(gt_rxvalid_q_i_2_n_0), + .I1(state_eios_det[2]), + .I2(\reg_state_eios_det[3]_i_2_n_0 ), + .I3(gt_rxvalid_q_reg_1), + .I4(state_eios_det[0]), + .O(gt_rxvalid_q__0)); + LUT6 #( + .INIT(64'hFFF50000CC550000)) + gt_rxvalid_q_i_2 + (.I0(gt_rxvalid_q_n_0), + .I1(\pl_ltssm_state_q_reg[5] ), + .I2(\reg_state_eios_det[4]_i_3_n_0 ), + .I3(state_eios_det[4]), + .I4(gt_rxvalid_q_reg_1), + .I5(\reg_state_eios_det[0]_i_3_n_0 ), + .O(gt_rxvalid_q_i_2_n_0)); + FDRE gt_rxvalid_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gt_rxvalid_q__0), + .Q(gt_rxvalid_q_reg_0), + .R(SR)); + (* SOFT_HLUTNM = "soft_lutpair2" *) + LUT2 #( + .INIT(4'h8)) + \pipe_stages_1.pipe_rx_char_is_k_q[0]_i_1 + (.I0(gt_rxvalid_q_reg_0), + .I1(\gt_rxcharisk_q_reg_n_0_[0] ), + .O(D[0])); + (* SOFT_HLUTNM = "soft_lutpair5" *) + LUT3 #( + .INIT(8'h08)) + \pipe_stages_1.pipe_rx_char_is_k_q[1]_i_1 + (.I0(gt_rxvalid_q_reg_0), + .I1(p_1_in), + .I2(symbol_after_eios), + .O(D[1])); + LUT6 #( + .INIT(64'hFFFFFFFFFEFEFEEE)) + \reg_state_eios_det[0]_i_1 + (.I0(state_eios_det[4]), + .I1(\reg_state_eios_det[0]_i_2_n_0 ), + .I2(\reg_state_eios_det[1]_i_2_n_0 ), + .I3(\reg_state_eios_det[0]_i_3_n_0 ), + .I4(\reg_state_eios_det[0]_i_4_n_0 ), + .I5(\reg_state_eios_det[0]_i_5_n_0 ), + .O(p_1_in__0[0])); + LUT6 #( + .INIT(64'hFFF3AAFFAA00AAAA)) + \reg_state_eios_det[0]_i_2 + (.I0(state_eios_det[2]), + .I1(Q[7]), + .I2(Q[6]), + .I3(Q[15]), + .I4(Q[14]), + .I5(state_eios_det[0]), + .O(\reg_state_eios_det[0]_i_2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair1" *) + LUT3 #( + .INIT(8'hFE)) + \reg_state_eios_det[0]_i_3 + (.I0(state_eios_det[3]), + .I1(state_eios_det[1]), + .I2(state_eios_det[2]), + .O(\reg_state_eios_det[0]_i_3_n_0 )); + LUT2 #( + .INIT(4'h8)) + \reg_state_eios_det[0]_i_4 + (.I0(Q[14]), + .I1(state_eios_det[0]), + .O(\reg_state_eios_det[0]_i_4_n_0 )); + LUT6 #( + .INIT(64'hFFE0E0E0FFE0FFE0)) + \reg_state_eios_det[0]_i_5 + (.I0(state_eios_det[0]), + .I1(state_eios_det[2]), + .I2(\reg_state_eios_det[2]_i_2_n_0 ), + .I3(\reg_state_eios_det[0]_i_3_n_0 ), + .I4(Q[7]), + .I5(Q[6]), + .O(\reg_state_eios_det[0]_i_5_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair0" *) + LUT5 #( + .INIT(32'h00000040)) + \reg_state_eios_det[1]_i_1 + (.I0(\reg_state_eios_det[1]_i_2_n_0 ), + .I1(state_eios_det[0]), + .I2(Q[7]), + .I3(Q[6]), + .I4(\reg_state_eios_det[3]_i_2_n_0 ), + .O(p_1_in__0[1])); + (* SOFT_HLUTNM = "soft_lutpair2" *) + LUT4 #( + .INIT(16'hBFFF)) + \reg_state_eios_det[1]_i_2 + (.I0(\reg_state_eios_det[1]_i_3_n_0 ), + .I1(\gt_rxcharisk_q_reg_n_0_[0] ), + .I2(Q[4]), + .I3(Q[5]), + .O(\reg_state_eios_det[1]_i_2_n_0 )); + LUT4 #( + .INIT(16'hEFFF)) + \reg_state_eios_det[1]_i_3 + (.I0(Q[1]), + .I1(Q[0]), + .I2(Q[3]), + .I3(Q[2]), + .O(\reg_state_eios_det[1]_i_3_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair3" *) + LUT4 #( + .INIT(16'h0040)) + \reg_state_eios_det[2]_i_1 + (.I0(Q[14]), + .I1(Q[15]), + .I2(state_eios_det[0]), + .I3(\reg_state_eios_det[2]_i_2_n_0 ), + .O(p_1_in__0[2])); + LUT4 #( + .INIT(16'hBFFF)) + \reg_state_eios_det[2]_i_2 + (.I0(\reg_state_eios_det[2]_i_3_n_0 ), + .I1(p_1_in), + .I2(Q[12]), + .I3(Q[13]), + .O(\reg_state_eios_det[2]_i_2_n_0 )); + LUT4 #( + .INIT(16'hEFFF)) + \reg_state_eios_det[2]_i_3 + (.I0(Q[9]), + .I1(Q[8]), + .I2(Q[11]), + .I3(Q[10]), + .O(\reg_state_eios_det[2]_i_3_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair6" *) + LUT3 #( + .INIT(8'h04)) + \reg_state_eios_det[3]_i_1 + (.I0(\reg_state_eios_det[3]_i_2_n_0 ), + .I1(state_eios_det[2]), + .I2(\reg_state_eios_det[4]_i_3_n_0 ), + .O(p_1_in__0[3])); + (* SOFT_HLUTNM = "soft_lutpair3" *) + LUT3 #( + .INIT(8'hFD)) + \reg_state_eios_det[3]_i_2 + (.I0(Q[14]), + .I1(Q[15]), + .I2(\reg_state_eios_det[2]_i_2_n_0 ), + .O(\reg_state_eios_det[3]_i_2_n_0 )); + LUT5 #( + .INIT(32'h00010116)) + \reg_state_eios_det[4]_i_1 + (.I0(state_eios_det[0]), + .I1(state_eios_det[4]), + .I2(state_eios_det[2]), + .I3(state_eios_det[1]), + .I4(state_eios_det[3]), + .O(\reg_state_eios_det[4]_i_1_n_0 )); + LUT3 #( + .INIT(8'h0E)) + \reg_state_eios_det[4]_i_2 + (.I0(state_eios_det[3]), + .I1(state_eios_det[1]), + .I2(\reg_state_eios_det[4]_i_3_n_0 ), + .O(p_1_in__0[4])); + (* SOFT_HLUTNM = "soft_lutpair0" *) + LUT3 #( + .INIT(8'hFD)) + \reg_state_eios_det[4]_i_3 + (.I0(Q[6]), + .I1(Q[7]), + .I2(\reg_state_eios_det[1]_i_2_n_0 ), + .O(\reg_state_eios_det[4]_i_3_n_0 )); + (* FSM_ENCODED_STATES = "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000" *) + FDSE \reg_state_eios_det_reg[0] + (.C(pipe_pclk_in), + .CE(\reg_state_eios_det[4]_i_1_n_0 ), + .D(p_1_in__0[0]), + .Q(state_eios_det[0]), + .S(SR)); + (* FSM_ENCODED_STATES = "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000" *) + FDRE \reg_state_eios_det_reg[1] + (.C(pipe_pclk_in), + .CE(\reg_state_eios_det[4]_i_1_n_0 ), + .D(p_1_in__0[1]), + .Q(state_eios_det[1]), + .R(SR)); + (* FSM_ENCODED_STATES = "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000" *) + FDRE \reg_state_eios_det_reg[2] + (.C(pipe_pclk_in), + .CE(\reg_state_eios_det[4]_i_1_n_0 ), + .D(p_1_in__0[2]), + .Q(state_eios_det[2]), + .R(SR)); + (* FSM_ENCODED_STATES = "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000" *) + FDRE \reg_state_eios_det_reg[3] + (.C(pipe_pclk_in), + .CE(\reg_state_eios_det[4]_i_1_n_0 ), + .D(p_1_in__0[3]), + .Q(state_eios_det[3]), + .R(SR)); + (* FSM_ENCODED_STATES = "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000" *) + FDRE \reg_state_eios_det_reg[4] + (.C(pipe_pclk_in), + .CE(\reg_state_eios_det[4]_i_1_n_0 ), + .D(p_1_in__0[4]), + .Q(state_eios_det[4]), + .R(SR)); + LUT6 #( + .INIT(64'h0000000000000010)) + reg_symbol_after_eios_i_1 + (.I0(\reg_state_eios_det[3]_i_2_n_0 ), + .I1(state_eios_det[0]), + .I2(state_eios_det[2]), + .I3(state_eios_det[3]), + .I4(state_eios_det[1]), + .I5(reg_symbol_after_eios_i_2_n_0), + .O(reg_symbol_after_eios)); + (* SOFT_HLUTNM = "soft_lutpair6" *) + LUT2 #( + .INIT(4'hE)) + reg_symbol_after_eios_i_2 + (.I0(\reg_state_eios_det[4]_i_3_n_0 ), + .I1(state_eios_det[4]), + .O(reg_symbol_after_eios_i_2_n_0)); + FDRE reg_symbol_after_eios_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(reg_symbol_after_eios), + .Q(symbol_after_eios), + .R(SR)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_gt_rx_valid_filter_7x" *) +module pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x_34 + (gt_rxvalid_q_reg_0, + gt_rx_phy_status_q_reg_0, + gt_rxelecidle_q_reg_0, + Q, + gt_rxvalid_q_reg_1, + \gt_rx_status_q_reg[2]_0 , + SR, + pipe_pclk_in, + gt_rx_phy_status_wire_filter, + PIPE_RXELECIDLE, + gt_rxvalid_q_reg_2, + \gt_rx_status_q_reg[0]_0 , + PIPE_RXSTATUS, + PIPE_RXDATAK, + PIPE_RXDATA); + output gt_rxvalid_q_reg_0; + output gt_rx_phy_status_q_reg_0; + output gt_rxelecidle_q_reg_0; + output [15:0]Q; + output [1:0]gt_rxvalid_q_reg_1; + output [2:0]\gt_rx_status_q_reg[2]_0 ; + input [0:0]SR; + input pipe_pclk_in; + input [0:0]gt_rx_phy_status_wire_filter; + input [0:0]PIPE_RXELECIDLE; + input gt_rxvalid_q_reg_2; + input \gt_rx_status_q_reg[0]_0 ; + input [2:0]PIPE_RXSTATUS; + input [1:0]PIPE_RXDATAK; + input [15:0]PIPE_RXDATA; + + wire [15:0]PIPE_RXDATA; + wire [1:0]PIPE_RXDATAK; + wire [0:0]PIPE_RXELECIDLE; + wire [2:0]PIPE_RXSTATUS; + wire [15:0]Q; + wire [0:0]SR; + wire gt_rx_phy_status_q_reg_0; + wire [0:0]gt_rx_phy_status_wire_filter; + wire \gt_rx_status_q[0]_i_1__1_n_0 ; + wire \gt_rx_status_q[1]_i_1__1_n_0 ; + wire \gt_rx_status_q[2]_i_1__1_n_0 ; + wire \gt_rx_status_q_reg[0]_0 ; + wire [2:0]\gt_rx_status_q_reg[2]_0 ; + wire \gt_rxcharisk_q_reg_n_0_[0] ; + wire gt_rxelecidle_q_reg_0; + wire gt_rxvalid_q__0; + wire gt_rxvalid_q_i_2__0_n_0; + wire gt_rxvalid_q_n_0; + wire gt_rxvalid_q_reg_0; + wire [1:0]gt_rxvalid_q_reg_1; + wire gt_rxvalid_q_reg_2; + wire p_1_in; + wire [4:0]p_1_in__0; + wire pipe_pclk_in; + wire \reg_state_eios_det[0]_i_2__0_n_0 ; + wire \reg_state_eios_det[0]_i_3__0_n_0 ; + wire \reg_state_eios_det[0]_i_4__0_n_0 ; + wire \reg_state_eios_det[0]_i_5__0_n_0 ; + wire \reg_state_eios_det[1]_i_2__0_n_0 ; + wire \reg_state_eios_det[1]_i_3__0_n_0 ; + wire \reg_state_eios_det[2]_i_2__0_n_0 ; + wire \reg_state_eios_det[2]_i_3__0_n_0 ; + wire \reg_state_eios_det[3]_i_2__0_n_0 ; + wire \reg_state_eios_det[4]_i_1__0_n_0 ; + wire \reg_state_eios_det[4]_i_3__0_n_0 ; + wire reg_symbol_after_eios; + wire reg_symbol_after_eios_i_2__0_n_0; + wire [4:0]state_eios_det; + wire symbol_after_eios; + + FDRE gt_rx_phy_status_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gt_rx_phy_status_wire_filter), + .Q(gt_rx_phy_status_q_reg_0), + .R(SR)); + (* SOFT_HLUTNM = "soft_lutpair11" *) + LUT3 #( + .INIT(8'hE0)) + \gt_rx_status_q[0]_i_1__1 + (.I0(gt_rxvalid_q_reg_0), + .I1(\gt_rx_status_q_reg[0]_0 ), + .I2(PIPE_RXSTATUS[0]), + .O(\gt_rx_status_q[0]_i_1__1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair11" *) + LUT3 #( + .INIT(8'hE0)) + \gt_rx_status_q[1]_i_1__1 + (.I0(gt_rxvalid_q_reg_0), + .I1(\gt_rx_status_q_reg[0]_0 ), + .I2(PIPE_RXSTATUS[1]), + .O(\gt_rx_status_q[1]_i_1__1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair12" *) + LUT3 #( + .INIT(8'hE0)) + \gt_rx_status_q[2]_i_1__1 + (.I0(gt_rxvalid_q_reg_0), + .I1(\gt_rx_status_q_reg[0]_0 ), + .I2(PIPE_RXSTATUS[2]), + .O(\gt_rx_status_q[2]_i_1__1_n_0 )); + FDRE \gt_rx_status_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\gt_rx_status_q[0]_i_1__1_n_0 ), + .Q(\gt_rx_status_q_reg[2]_0 [0]), + .R(SR)); + FDRE \gt_rx_status_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\gt_rx_status_q[1]_i_1__1_n_0 ), + .Q(\gt_rx_status_q_reg[2]_0 [1]), + .R(SR)); + FDRE \gt_rx_status_q_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\gt_rx_status_q[2]_i_1__1_n_0 ), + .Q(\gt_rx_status_q_reg[2]_0 [2]), + .R(SR)); + FDRE \gt_rxcharisk_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATAK[0]), + .Q(\gt_rxcharisk_q_reg_n_0_[0] ), + .R(SR)); + FDRE \gt_rxcharisk_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATAK[1]), + .Q(p_1_in), + .R(SR)); + FDRE \gt_rxdata_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[0]), + .Q(Q[0]), + .R(SR)); + FDRE \gt_rxdata_q_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[10]), + .Q(Q[10]), + .R(SR)); + FDRE \gt_rxdata_q_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[11]), + .Q(Q[11]), + .R(SR)); + FDRE \gt_rxdata_q_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[12]), + .Q(Q[12]), + .R(SR)); + FDRE \gt_rxdata_q_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[13]), + .Q(Q[13]), + .R(SR)); + FDRE \gt_rxdata_q_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[14]), + .Q(Q[14]), + .R(SR)); + FDRE \gt_rxdata_q_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[15]), + .Q(Q[15]), + .R(SR)); + FDRE \gt_rxdata_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[1]), + .Q(Q[1]), + .R(SR)); + FDRE \gt_rxdata_q_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[2]), + .Q(Q[2]), + .R(SR)); + FDRE \gt_rxdata_q_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[3]), + .Q(Q[3]), + .R(SR)); + FDRE \gt_rxdata_q_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[4]), + .Q(Q[4]), + .R(SR)); + FDRE \gt_rxdata_q_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[5]), + .Q(Q[5]), + .R(SR)); + FDRE \gt_rxdata_q_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[6]), + .Q(Q[6]), + .R(SR)); + FDRE \gt_rxdata_q_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[7]), + .Q(Q[7]), + .R(SR)); + FDRE \gt_rxdata_q_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[8]), + .Q(Q[8]), + .R(SR)); + FDRE \gt_rxdata_q_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[9]), + .Q(Q[9]), + .R(SR)); + FDRE gt_rxelecidle_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXELECIDLE), + .Q(gt_rxelecidle_q_reg_0), + .R(SR)); + (* SOFT_HLUTNM = "soft_lutpair8" *) + LUT5 #( + .INIT(32'h00010116)) + gt_rxvalid_q + (.I0(state_eios_det[0]), + .I1(state_eios_det[1]), + .I2(state_eios_det[2]), + .I3(state_eios_det[3]), + .I4(state_eios_det[4]), + .O(gt_rxvalid_q_n_0)); + LUT5 #( + .INIT(32'hFFAAEAAA)) + gt_rxvalid_q_i_1__0 + (.I0(gt_rxvalid_q_i_2__0_n_0), + .I1(state_eios_det[2]), + .I2(\reg_state_eios_det[3]_i_2__0_n_0 ), + .I3(gt_rxvalid_q_reg_2), + .I4(state_eios_det[0]), + .O(gt_rxvalid_q__0)); + LUT6 #( + .INIT(64'hFFF50000CC550000)) + gt_rxvalid_q_i_2__0 + (.I0(gt_rxvalid_q_n_0), + .I1(\gt_rx_status_q_reg[0]_0 ), + .I2(\reg_state_eios_det[4]_i_3__0_n_0 ), + .I3(state_eios_det[4]), + .I4(gt_rxvalid_q_reg_2), + .I5(\reg_state_eios_det[0]_i_3__0_n_0 ), + .O(gt_rxvalid_q_i_2__0_n_0)); + FDRE gt_rxvalid_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gt_rxvalid_q__0), + .Q(gt_rxvalid_q_reg_0), + .R(SR)); + (* SOFT_HLUTNM = "soft_lutpair9" *) + LUT2 #( + .INIT(4'h8)) + \pipe_stages_1.pipe_rx_char_is_k_q[0]_i_1__0 + (.I0(gt_rxvalid_q_reg_0), + .I1(\gt_rxcharisk_q_reg_n_0_[0] ), + .O(gt_rxvalid_q_reg_1[0])); + (* SOFT_HLUTNM = "soft_lutpair12" *) + LUT3 #( + .INIT(8'h08)) + \pipe_stages_1.pipe_rx_char_is_k_q[1]_i_1__0 + (.I0(gt_rxvalid_q_reg_0), + .I1(p_1_in), + .I2(symbol_after_eios), + .O(gt_rxvalid_q_reg_1[1])); + LUT6 #( + .INIT(64'hFFFFFFFFFEFEFEEE)) + \reg_state_eios_det[0]_i_1__0 + (.I0(state_eios_det[4]), + .I1(\reg_state_eios_det[0]_i_2__0_n_0 ), + .I2(\reg_state_eios_det[1]_i_2__0_n_0 ), + .I3(\reg_state_eios_det[0]_i_3__0_n_0 ), + .I4(\reg_state_eios_det[0]_i_4__0_n_0 ), + .I5(\reg_state_eios_det[0]_i_5__0_n_0 ), + .O(p_1_in__0[0])); + LUT6 #( + .INIT(64'hFFF3AAFFAA00AAAA)) + \reg_state_eios_det[0]_i_2__0 + (.I0(state_eios_det[2]), + .I1(Q[7]), + .I2(Q[6]), + .I3(Q[15]), + .I4(Q[14]), + .I5(state_eios_det[0]), + .O(\reg_state_eios_det[0]_i_2__0_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair8" *) + LUT3 #( + .INIT(8'hFE)) + \reg_state_eios_det[0]_i_3__0 + (.I0(state_eios_det[3]), + .I1(state_eios_det[1]), + .I2(state_eios_det[2]), + .O(\reg_state_eios_det[0]_i_3__0_n_0 )); + LUT2 #( + .INIT(4'h8)) + \reg_state_eios_det[0]_i_4__0 + (.I0(Q[14]), + .I1(state_eios_det[0]), + .O(\reg_state_eios_det[0]_i_4__0_n_0 )); + LUT6 #( + .INIT(64'hFFE0E0E0FFE0FFE0)) + \reg_state_eios_det[0]_i_5__0 + (.I0(state_eios_det[0]), + .I1(state_eios_det[2]), + .I2(\reg_state_eios_det[2]_i_2__0_n_0 ), + .I3(\reg_state_eios_det[0]_i_3__0_n_0 ), + .I4(Q[7]), + .I5(Q[6]), + .O(\reg_state_eios_det[0]_i_5__0_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair7" *) + LUT5 #( + .INIT(32'h00000040)) + \reg_state_eios_det[1]_i_1__0 + (.I0(\reg_state_eios_det[1]_i_2__0_n_0 ), + .I1(state_eios_det[0]), + .I2(Q[7]), + .I3(Q[6]), + .I4(\reg_state_eios_det[3]_i_2__0_n_0 ), + .O(p_1_in__0[1])); + (* SOFT_HLUTNM = "soft_lutpair9" *) + LUT4 #( + .INIT(16'hBFFF)) + \reg_state_eios_det[1]_i_2__0 + (.I0(\reg_state_eios_det[1]_i_3__0_n_0 ), + .I1(\gt_rxcharisk_q_reg_n_0_[0] ), + .I2(Q[4]), + .I3(Q[5]), + .O(\reg_state_eios_det[1]_i_2__0_n_0 )); + LUT4 #( + .INIT(16'hEFFF)) + \reg_state_eios_det[1]_i_3__0 + (.I0(Q[1]), + .I1(Q[0]), + .I2(Q[3]), + .I3(Q[2]), + .O(\reg_state_eios_det[1]_i_3__0_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair10" *) + LUT4 #( + .INIT(16'h0040)) + \reg_state_eios_det[2]_i_1__0 + (.I0(Q[14]), + .I1(Q[15]), + .I2(state_eios_det[0]), + .I3(\reg_state_eios_det[2]_i_2__0_n_0 ), + .O(p_1_in__0[2])); + LUT4 #( + .INIT(16'hBFFF)) + \reg_state_eios_det[2]_i_2__0 + (.I0(\reg_state_eios_det[2]_i_3__0_n_0 ), + .I1(p_1_in), + .I2(Q[12]), + .I3(Q[13]), + .O(\reg_state_eios_det[2]_i_2__0_n_0 )); + LUT4 #( + .INIT(16'hEFFF)) + \reg_state_eios_det[2]_i_3__0 + (.I0(Q[9]), + .I1(Q[8]), + .I2(Q[11]), + .I3(Q[10]), + .O(\reg_state_eios_det[2]_i_3__0_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair13" *) + LUT3 #( + .INIT(8'h04)) + \reg_state_eios_det[3]_i_1__0 + (.I0(\reg_state_eios_det[3]_i_2__0_n_0 ), + .I1(state_eios_det[2]), + .I2(\reg_state_eios_det[4]_i_3__0_n_0 ), + .O(p_1_in__0[3])); + (* SOFT_HLUTNM = "soft_lutpair10" *) + LUT3 #( + .INIT(8'hFD)) + \reg_state_eios_det[3]_i_2__0 + (.I0(Q[14]), + .I1(Q[15]), + .I2(\reg_state_eios_det[2]_i_2__0_n_0 ), + .O(\reg_state_eios_det[3]_i_2__0_n_0 )); + LUT5 #( + .INIT(32'h00010116)) + \reg_state_eios_det[4]_i_1__0 + (.I0(state_eios_det[0]), + .I1(state_eios_det[4]), + .I2(state_eios_det[2]), + .I3(state_eios_det[1]), + .I4(state_eios_det[3]), + .O(\reg_state_eios_det[4]_i_1__0_n_0 )); + LUT3 #( + .INIT(8'h0E)) + \reg_state_eios_det[4]_i_2__0 + (.I0(state_eios_det[3]), + .I1(state_eios_det[1]), + .I2(\reg_state_eios_det[4]_i_3__0_n_0 ), + .O(p_1_in__0[4])); + (* SOFT_HLUTNM = "soft_lutpair7" *) + LUT3 #( + .INIT(8'hFD)) + \reg_state_eios_det[4]_i_3__0 + (.I0(Q[6]), + .I1(Q[7]), + .I2(\reg_state_eios_det[1]_i_2__0_n_0 ), + .O(\reg_state_eios_det[4]_i_3__0_n_0 )); + (* FSM_ENCODED_STATES = "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000" *) + FDSE \reg_state_eios_det_reg[0] + (.C(pipe_pclk_in), + .CE(\reg_state_eios_det[4]_i_1__0_n_0 ), + .D(p_1_in__0[0]), + .Q(state_eios_det[0]), + .S(SR)); + (* FSM_ENCODED_STATES = "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000" *) + FDRE \reg_state_eios_det_reg[1] + (.C(pipe_pclk_in), + .CE(\reg_state_eios_det[4]_i_1__0_n_0 ), + .D(p_1_in__0[1]), + .Q(state_eios_det[1]), + .R(SR)); + (* FSM_ENCODED_STATES = "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000" *) + FDRE \reg_state_eios_det_reg[2] + (.C(pipe_pclk_in), + .CE(\reg_state_eios_det[4]_i_1__0_n_0 ), + .D(p_1_in__0[2]), + .Q(state_eios_det[2]), + .R(SR)); + (* FSM_ENCODED_STATES = "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000" *) + FDRE \reg_state_eios_det_reg[3] + (.C(pipe_pclk_in), + .CE(\reg_state_eios_det[4]_i_1__0_n_0 ), + .D(p_1_in__0[3]), + .Q(state_eios_det[3]), + .R(SR)); + (* FSM_ENCODED_STATES = "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000" *) + FDRE \reg_state_eios_det_reg[4] + (.C(pipe_pclk_in), + .CE(\reg_state_eios_det[4]_i_1__0_n_0 ), + .D(p_1_in__0[4]), + .Q(state_eios_det[4]), + .R(SR)); + LUT6 #( + .INIT(64'h0000000000000010)) + reg_symbol_after_eios_i_1__0 + (.I0(\reg_state_eios_det[3]_i_2__0_n_0 ), + .I1(state_eios_det[0]), + .I2(state_eios_det[2]), + .I3(state_eios_det[3]), + .I4(state_eios_det[1]), + .I5(reg_symbol_after_eios_i_2__0_n_0), + .O(reg_symbol_after_eios)); + (* SOFT_HLUTNM = "soft_lutpair13" *) + LUT2 #( + .INIT(4'hE)) + reg_symbol_after_eios_i_2__0 + (.I0(\reg_state_eios_det[4]_i_3__0_n_0 ), + .I1(state_eios_det[4]), + .O(reg_symbol_after_eios_i_2__0_n_0)); + FDRE reg_symbol_after_eios_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(reg_symbol_after_eios), + .Q(symbol_after_eios), + .R(SR)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_gt_rx_valid_filter_7x" *) +module pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x_35 + (gt_rxvalid_q_reg_0, + gt_rx_phy_status_q_reg_0, + gt_rxelecidle_q_reg_0, + Q, + gt_rxvalid_q_reg_1, + \gt_rx_status_q_reg[2]_0 , + SR, + pipe_pclk_in, + gt_rx_phy_status_wire_filter, + PIPE_RXELECIDLE, + gt_rxvalid_q_reg_2, + \gt_rx_status_q_reg[0]_0 , + PIPE_RXSTATUS, + PIPE_RXDATAK, + PIPE_RXDATA); + output gt_rxvalid_q_reg_0; + output gt_rx_phy_status_q_reg_0; + output gt_rxelecidle_q_reg_0; + output [15:0]Q; + output [1:0]gt_rxvalid_q_reg_1; + output [2:0]\gt_rx_status_q_reg[2]_0 ; + input [0:0]SR; + input pipe_pclk_in; + input [0:0]gt_rx_phy_status_wire_filter; + input [0:0]PIPE_RXELECIDLE; + input gt_rxvalid_q_reg_2; + input \gt_rx_status_q_reg[0]_0 ; + input [2:0]PIPE_RXSTATUS; + input [1:0]PIPE_RXDATAK; + input [15:0]PIPE_RXDATA; + + wire [15:0]PIPE_RXDATA; + wire [1:0]PIPE_RXDATAK; + wire [0:0]PIPE_RXELECIDLE; + wire [2:0]PIPE_RXSTATUS; + wire [15:0]Q; + wire [0:0]SR; + wire gt_rx_phy_status_q_reg_0; + wire [0:0]gt_rx_phy_status_wire_filter; + wire \gt_rx_status_q[0]_i_1__0_n_0 ; + wire \gt_rx_status_q[1]_i_1__0_n_0 ; + wire \gt_rx_status_q[2]_i_1__0_n_0 ; + wire \gt_rx_status_q_reg[0]_0 ; + wire [2:0]\gt_rx_status_q_reg[2]_0 ; + wire \gt_rxcharisk_q_reg_n_0_[0] ; + wire gt_rxelecidle_q_reg_0; + wire gt_rxvalid_q__0; + wire gt_rxvalid_q_i_2__1_n_0; + wire gt_rxvalid_q_n_0; + wire gt_rxvalid_q_reg_0; + wire [1:0]gt_rxvalid_q_reg_1; + wire gt_rxvalid_q_reg_2; + wire p_1_in; + wire [4:0]p_1_in__0; + wire pipe_pclk_in; + wire \reg_state_eios_det[0]_i_2__1_n_0 ; + wire \reg_state_eios_det[0]_i_3__1_n_0 ; + wire \reg_state_eios_det[0]_i_4__1_n_0 ; + wire \reg_state_eios_det[0]_i_5__1_n_0 ; + wire \reg_state_eios_det[1]_i_2__1_n_0 ; + wire \reg_state_eios_det[1]_i_3__1_n_0 ; + wire \reg_state_eios_det[2]_i_2__1_n_0 ; + wire \reg_state_eios_det[2]_i_3__1_n_0 ; + wire \reg_state_eios_det[3]_i_2__1_n_0 ; + wire \reg_state_eios_det[4]_i_1__1_n_0 ; + wire \reg_state_eios_det[4]_i_3__1_n_0 ; + wire reg_symbol_after_eios; + wire reg_symbol_after_eios_i_2__1_n_0; + wire [4:0]state_eios_det; + wire symbol_after_eios; + + FDRE gt_rx_phy_status_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gt_rx_phy_status_wire_filter), + .Q(gt_rx_phy_status_q_reg_0), + .R(SR)); + (* SOFT_HLUTNM = "soft_lutpair18" *) + LUT3 #( + .INIT(8'hE0)) + \gt_rx_status_q[0]_i_1__0 + (.I0(gt_rxvalid_q_reg_0), + .I1(\gt_rx_status_q_reg[0]_0 ), + .I2(PIPE_RXSTATUS[0]), + .O(\gt_rx_status_q[0]_i_1__0_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair18" *) + LUT3 #( + .INIT(8'hE0)) + \gt_rx_status_q[1]_i_1__0 + (.I0(gt_rxvalid_q_reg_0), + .I1(\gt_rx_status_q_reg[0]_0 ), + .I2(PIPE_RXSTATUS[1]), + .O(\gt_rx_status_q[1]_i_1__0_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair19" *) + LUT3 #( + .INIT(8'hE0)) + \gt_rx_status_q[2]_i_1__0 + (.I0(gt_rxvalid_q_reg_0), + .I1(\gt_rx_status_q_reg[0]_0 ), + .I2(PIPE_RXSTATUS[2]), + .O(\gt_rx_status_q[2]_i_1__0_n_0 )); + FDRE \gt_rx_status_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\gt_rx_status_q[0]_i_1__0_n_0 ), + .Q(\gt_rx_status_q_reg[2]_0 [0]), + .R(SR)); + FDRE \gt_rx_status_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\gt_rx_status_q[1]_i_1__0_n_0 ), + .Q(\gt_rx_status_q_reg[2]_0 [1]), + .R(SR)); + FDRE \gt_rx_status_q_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\gt_rx_status_q[2]_i_1__0_n_0 ), + .Q(\gt_rx_status_q_reg[2]_0 [2]), + .R(SR)); + FDRE \gt_rxcharisk_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATAK[0]), + .Q(\gt_rxcharisk_q_reg_n_0_[0] ), + .R(SR)); + FDRE \gt_rxcharisk_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATAK[1]), + .Q(p_1_in), + .R(SR)); + FDRE \gt_rxdata_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[0]), + .Q(Q[0]), + .R(SR)); + FDRE \gt_rxdata_q_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[10]), + .Q(Q[10]), + .R(SR)); + FDRE \gt_rxdata_q_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[11]), + .Q(Q[11]), + .R(SR)); + FDRE \gt_rxdata_q_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[12]), + .Q(Q[12]), + .R(SR)); + FDRE \gt_rxdata_q_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[13]), + .Q(Q[13]), + .R(SR)); + FDRE \gt_rxdata_q_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[14]), + .Q(Q[14]), + .R(SR)); + FDRE \gt_rxdata_q_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[15]), + .Q(Q[15]), + .R(SR)); + FDRE \gt_rxdata_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[1]), + .Q(Q[1]), + .R(SR)); + FDRE \gt_rxdata_q_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[2]), + .Q(Q[2]), + .R(SR)); + FDRE \gt_rxdata_q_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[3]), + .Q(Q[3]), + .R(SR)); + FDRE \gt_rxdata_q_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[4]), + .Q(Q[4]), + .R(SR)); + FDRE \gt_rxdata_q_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[5]), + .Q(Q[5]), + .R(SR)); + FDRE \gt_rxdata_q_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[6]), + .Q(Q[6]), + .R(SR)); + FDRE \gt_rxdata_q_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[7]), + .Q(Q[7]), + .R(SR)); + FDRE \gt_rxdata_q_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[8]), + .Q(Q[8]), + .R(SR)); + FDRE \gt_rxdata_q_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[9]), + .Q(Q[9]), + .R(SR)); + FDRE gt_rxelecidle_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXELECIDLE), + .Q(gt_rxelecidle_q_reg_0), + .R(SR)); + (* SOFT_HLUTNM = "soft_lutpair15" *) + LUT5 #( + .INIT(32'h00010116)) + gt_rxvalid_q + (.I0(state_eios_det[0]), + .I1(state_eios_det[1]), + .I2(state_eios_det[2]), + .I3(state_eios_det[3]), + .I4(state_eios_det[4]), + .O(gt_rxvalid_q_n_0)); + LUT5 #( + .INIT(32'hFFAAEAAA)) + gt_rxvalid_q_i_1__1 + (.I0(gt_rxvalid_q_i_2__1_n_0), + .I1(state_eios_det[2]), + .I2(\reg_state_eios_det[3]_i_2__1_n_0 ), + .I3(gt_rxvalid_q_reg_2), + .I4(state_eios_det[0]), + .O(gt_rxvalid_q__0)); + LUT6 #( + .INIT(64'hFFF50000CC550000)) + gt_rxvalid_q_i_2__1 + (.I0(gt_rxvalid_q_n_0), + .I1(\gt_rx_status_q_reg[0]_0 ), + .I2(\reg_state_eios_det[4]_i_3__1_n_0 ), + .I3(state_eios_det[4]), + .I4(gt_rxvalid_q_reg_2), + .I5(\reg_state_eios_det[0]_i_3__1_n_0 ), + .O(gt_rxvalid_q_i_2__1_n_0)); + FDRE gt_rxvalid_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gt_rxvalid_q__0), + .Q(gt_rxvalid_q_reg_0), + .R(SR)); + (* SOFT_HLUTNM = "soft_lutpair16" *) + LUT2 #( + .INIT(4'h8)) + \pipe_stages_1.pipe_rx_char_is_k_q[0]_i_1__1 + (.I0(gt_rxvalid_q_reg_0), + .I1(\gt_rxcharisk_q_reg_n_0_[0] ), + .O(gt_rxvalid_q_reg_1[0])); + (* SOFT_HLUTNM = "soft_lutpair19" *) + LUT3 #( + .INIT(8'h08)) + \pipe_stages_1.pipe_rx_char_is_k_q[1]_i_1__1 + (.I0(gt_rxvalid_q_reg_0), + .I1(p_1_in), + .I2(symbol_after_eios), + .O(gt_rxvalid_q_reg_1[1])); + LUT6 #( + .INIT(64'hFFFFFFFFFEFEFEEE)) + \reg_state_eios_det[0]_i_1__1 + (.I0(state_eios_det[4]), + .I1(\reg_state_eios_det[0]_i_2__1_n_0 ), + .I2(\reg_state_eios_det[1]_i_2__1_n_0 ), + .I3(\reg_state_eios_det[0]_i_3__1_n_0 ), + .I4(\reg_state_eios_det[0]_i_4__1_n_0 ), + .I5(\reg_state_eios_det[0]_i_5__1_n_0 ), + .O(p_1_in__0[0])); + LUT6 #( + .INIT(64'hFFF3AAFFAA00AAAA)) + \reg_state_eios_det[0]_i_2__1 + (.I0(state_eios_det[2]), + .I1(Q[7]), + .I2(Q[6]), + .I3(Q[15]), + .I4(Q[14]), + .I5(state_eios_det[0]), + .O(\reg_state_eios_det[0]_i_2__1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair15" *) + LUT3 #( + .INIT(8'hFE)) + \reg_state_eios_det[0]_i_3__1 + (.I0(state_eios_det[3]), + .I1(state_eios_det[1]), + .I2(state_eios_det[2]), + .O(\reg_state_eios_det[0]_i_3__1_n_0 )); + LUT2 #( + .INIT(4'h8)) + \reg_state_eios_det[0]_i_4__1 + (.I0(Q[14]), + .I1(state_eios_det[0]), + .O(\reg_state_eios_det[0]_i_4__1_n_0 )); + LUT6 #( + .INIT(64'hFFE0E0E0FFE0FFE0)) + \reg_state_eios_det[0]_i_5__1 + (.I0(state_eios_det[0]), + .I1(state_eios_det[2]), + .I2(\reg_state_eios_det[2]_i_2__1_n_0 ), + .I3(\reg_state_eios_det[0]_i_3__1_n_0 ), + .I4(Q[7]), + .I5(Q[6]), + .O(\reg_state_eios_det[0]_i_5__1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair14" *) + LUT5 #( + .INIT(32'h00000040)) + \reg_state_eios_det[1]_i_1__1 + (.I0(\reg_state_eios_det[1]_i_2__1_n_0 ), + .I1(state_eios_det[0]), + .I2(Q[7]), + .I3(Q[6]), + .I4(\reg_state_eios_det[3]_i_2__1_n_0 ), + .O(p_1_in__0[1])); + (* SOFT_HLUTNM = "soft_lutpair16" *) + LUT4 #( + .INIT(16'hBFFF)) + \reg_state_eios_det[1]_i_2__1 + (.I0(\reg_state_eios_det[1]_i_3__1_n_0 ), + .I1(\gt_rxcharisk_q_reg_n_0_[0] ), + .I2(Q[4]), + .I3(Q[5]), + .O(\reg_state_eios_det[1]_i_2__1_n_0 )); + LUT4 #( + .INIT(16'hEFFF)) + \reg_state_eios_det[1]_i_3__1 + (.I0(Q[1]), + .I1(Q[0]), + .I2(Q[3]), + .I3(Q[2]), + .O(\reg_state_eios_det[1]_i_3__1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair17" *) + LUT4 #( + .INIT(16'h0040)) + \reg_state_eios_det[2]_i_1__1 + (.I0(Q[14]), + .I1(Q[15]), + .I2(state_eios_det[0]), + .I3(\reg_state_eios_det[2]_i_2__1_n_0 ), + .O(p_1_in__0[2])); + LUT4 #( + .INIT(16'hBFFF)) + \reg_state_eios_det[2]_i_2__1 + (.I0(\reg_state_eios_det[2]_i_3__1_n_0 ), + .I1(p_1_in), + .I2(Q[12]), + .I3(Q[13]), + .O(\reg_state_eios_det[2]_i_2__1_n_0 )); + LUT4 #( + .INIT(16'hEFFF)) + \reg_state_eios_det[2]_i_3__1 + (.I0(Q[9]), + .I1(Q[8]), + .I2(Q[11]), + .I3(Q[10]), + .O(\reg_state_eios_det[2]_i_3__1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair20" *) + LUT3 #( + .INIT(8'h04)) + \reg_state_eios_det[3]_i_1__1 + (.I0(\reg_state_eios_det[3]_i_2__1_n_0 ), + .I1(state_eios_det[2]), + .I2(\reg_state_eios_det[4]_i_3__1_n_0 ), + .O(p_1_in__0[3])); + (* SOFT_HLUTNM = "soft_lutpair17" *) + LUT3 #( + .INIT(8'hFD)) + \reg_state_eios_det[3]_i_2__1 + (.I0(Q[14]), + .I1(Q[15]), + .I2(\reg_state_eios_det[2]_i_2__1_n_0 ), + .O(\reg_state_eios_det[3]_i_2__1_n_0 )); + LUT5 #( + .INIT(32'h00010116)) + \reg_state_eios_det[4]_i_1__1 + (.I0(state_eios_det[0]), + .I1(state_eios_det[4]), + .I2(state_eios_det[2]), + .I3(state_eios_det[1]), + .I4(state_eios_det[3]), + .O(\reg_state_eios_det[4]_i_1__1_n_0 )); + LUT3 #( + .INIT(8'h0E)) + \reg_state_eios_det[4]_i_2__1 + (.I0(state_eios_det[3]), + .I1(state_eios_det[1]), + .I2(\reg_state_eios_det[4]_i_3__1_n_0 ), + .O(p_1_in__0[4])); + (* SOFT_HLUTNM = "soft_lutpair14" *) + LUT3 #( + .INIT(8'hFD)) + \reg_state_eios_det[4]_i_3__1 + (.I0(Q[6]), + .I1(Q[7]), + .I2(\reg_state_eios_det[1]_i_2__1_n_0 ), + .O(\reg_state_eios_det[4]_i_3__1_n_0 )); + (* FSM_ENCODED_STATES = "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000" *) + FDSE \reg_state_eios_det_reg[0] + (.C(pipe_pclk_in), + .CE(\reg_state_eios_det[4]_i_1__1_n_0 ), + .D(p_1_in__0[0]), + .Q(state_eios_det[0]), + .S(SR)); + (* FSM_ENCODED_STATES = "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000" *) + FDRE \reg_state_eios_det_reg[1] + (.C(pipe_pclk_in), + .CE(\reg_state_eios_det[4]_i_1__1_n_0 ), + .D(p_1_in__0[1]), + .Q(state_eios_det[1]), + .R(SR)); + (* FSM_ENCODED_STATES = "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000" *) + FDRE \reg_state_eios_det_reg[2] + (.C(pipe_pclk_in), + .CE(\reg_state_eios_det[4]_i_1__1_n_0 ), + .D(p_1_in__0[2]), + .Q(state_eios_det[2]), + .R(SR)); + (* FSM_ENCODED_STATES = "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000" *) + FDRE \reg_state_eios_det_reg[3] + (.C(pipe_pclk_in), + .CE(\reg_state_eios_det[4]_i_1__1_n_0 ), + .D(p_1_in__0[3]), + .Q(state_eios_det[3]), + .R(SR)); + (* FSM_ENCODED_STATES = "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000" *) + FDRE \reg_state_eios_det_reg[4] + (.C(pipe_pclk_in), + .CE(\reg_state_eios_det[4]_i_1__1_n_0 ), + .D(p_1_in__0[4]), + .Q(state_eios_det[4]), + .R(SR)); + LUT6 #( + .INIT(64'h0000000000000010)) + reg_symbol_after_eios_i_1__1 + (.I0(\reg_state_eios_det[3]_i_2__1_n_0 ), + .I1(state_eios_det[0]), + .I2(state_eios_det[2]), + .I3(state_eios_det[3]), + .I4(state_eios_det[1]), + .I5(reg_symbol_after_eios_i_2__1_n_0), + .O(reg_symbol_after_eios)); + (* SOFT_HLUTNM = "soft_lutpair20" *) + LUT2 #( + .INIT(4'hE)) + reg_symbol_after_eios_i_2__1 + (.I0(\reg_state_eios_det[4]_i_3__1_n_0 ), + .I1(state_eios_det[4]), + .O(reg_symbol_after_eios_i_2__1_n_0)); + FDRE reg_symbol_after_eios_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(reg_symbol_after_eios), + .Q(symbol_after_eios), + .R(SR)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_gt_rx_valid_filter_7x" *) +module pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x_36 + (gt_rxvalid_q_reg_0, + gt_rx_phy_status_q_reg_0, + gt_rxelecidle_q_reg_0, + Q, + gt_rxvalid_q_reg_1, + \gt_rx_status_q_reg[2]_0 , + SR, + pipe_pclk_in, + gt_rx_phy_status_wire_filter, + PIPE_RXELECIDLE, + gt_rxvalid_q_reg_2, + \gt_rx_status_q_reg[0]_0 , + PIPE_RXSTATUS, + PIPE_RXDATAK, + PIPE_RXDATA); + output gt_rxvalid_q_reg_0; + output gt_rx_phy_status_q_reg_0; + output gt_rxelecidle_q_reg_0; + output [15:0]Q; + output [1:0]gt_rxvalid_q_reg_1; + output [2:0]\gt_rx_status_q_reg[2]_0 ; + input [0:0]SR; + input pipe_pclk_in; + input [0:0]gt_rx_phy_status_wire_filter; + input [0:0]PIPE_RXELECIDLE; + input gt_rxvalid_q_reg_2; + input \gt_rx_status_q_reg[0]_0 ; + input [2:0]PIPE_RXSTATUS; + input [1:0]PIPE_RXDATAK; + input [15:0]PIPE_RXDATA; + + wire [15:0]PIPE_RXDATA; + wire [1:0]PIPE_RXDATAK; + wire [0:0]PIPE_RXELECIDLE; + wire [2:0]PIPE_RXSTATUS; + wire [15:0]Q; + wire [0:0]SR; + wire gt_rx_phy_status_q_reg_0; + wire [0:0]gt_rx_phy_status_wire_filter; + wire \gt_rx_status_q[0]_i_1_n_0 ; + wire \gt_rx_status_q[1]_i_1_n_0 ; + wire \gt_rx_status_q[2]_i_1_n_0 ; + wire \gt_rx_status_q_reg[0]_0 ; + wire [2:0]\gt_rx_status_q_reg[2]_0 ; + wire \gt_rxcharisk_q_reg_n_0_[0] ; + wire gt_rxelecidle_q_reg_0; + wire gt_rxvalid_q__0; + wire gt_rxvalid_q_i_2__2_n_0; + wire gt_rxvalid_q_n_0; + wire gt_rxvalid_q_reg_0; + wire [1:0]gt_rxvalid_q_reg_1; + wire gt_rxvalid_q_reg_2; + wire p_1_in; + wire [4:0]p_1_in__0; + wire pipe_pclk_in; + wire \reg_state_eios_det[0]_i_2__2_n_0 ; + wire \reg_state_eios_det[0]_i_3__2_n_0 ; + wire \reg_state_eios_det[0]_i_4__2_n_0 ; + wire \reg_state_eios_det[0]_i_5__2_n_0 ; + wire \reg_state_eios_det[1]_i_2__2_n_0 ; + wire \reg_state_eios_det[1]_i_3__2_n_0 ; + wire \reg_state_eios_det[2]_i_2__2_n_0 ; + wire \reg_state_eios_det[2]_i_3__2_n_0 ; + wire \reg_state_eios_det[3]_i_2__2_n_0 ; + wire \reg_state_eios_det[4]_i_1__2_n_0 ; + wire \reg_state_eios_det[4]_i_3__2_n_0 ; + wire reg_symbol_after_eios; + wire reg_symbol_after_eios_i_2__2_n_0; + wire [4:0]state_eios_det; + wire symbol_after_eios; + + FDRE gt_rx_phy_status_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gt_rx_phy_status_wire_filter), + .Q(gt_rx_phy_status_q_reg_0), + .R(SR)); + (* SOFT_HLUTNM = "soft_lutpair25" *) + LUT3 #( + .INIT(8'hE0)) + \gt_rx_status_q[0]_i_1 + (.I0(gt_rxvalid_q_reg_0), + .I1(\gt_rx_status_q_reg[0]_0 ), + .I2(PIPE_RXSTATUS[0]), + .O(\gt_rx_status_q[0]_i_1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair25" *) + LUT3 #( + .INIT(8'hE0)) + \gt_rx_status_q[1]_i_1 + (.I0(gt_rxvalid_q_reg_0), + .I1(\gt_rx_status_q_reg[0]_0 ), + .I2(PIPE_RXSTATUS[1]), + .O(\gt_rx_status_q[1]_i_1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair26" *) + LUT3 #( + .INIT(8'hE0)) + \gt_rx_status_q[2]_i_1 + (.I0(gt_rxvalid_q_reg_0), + .I1(\gt_rx_status_q_reg[0]_0 ), + .I2(PIPE_RXSTATUS[2]), + .O(\gt_rx_status_q[2]_i_1_n_0 )); + FDRE \gt_rx_status_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\gt_rx_status_q[0]_i_1_n_0 ), + .Q(\gt_rx_status_q_reg[2]_0 [0]), + .R(SR)); + FDRE \gt_rx_status_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\gt_rx_status_q[1]_i_1_n_0 ), + .Q(\gt_rx_status_q_reg[2]_0 [1]), + .R(SR)); + FDRE \gt_rx_status_q_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\gt_rx_status_q[2]_i_1_n_0 ), + .Q(\gt_rx_status_q_reg[2]_0 [2]), + .R(SR)); + FDRE \gt_rxcharisk_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATAK[0]), + .Q(\gt_rxcharisk_q_reg_n_0_[0] ), + .R(SR)); + FDRE \gt_rxcharisk_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATAK[1]), + .Q(p_1_in), + .R(SR)); + FDRE \gt_rxdata_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[0]), + .Q(Q[0]), + .R(SR)); + FDRE \gt_rxdata_q_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[10]), + .Q(Q[10]), + .R(SR)); + FDRE \gt_rxdata_q_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[11]), + .Q(Q[11]), + .R(SR)); + FDRE \gt_rxdata_q_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[12]), + .Q(Q[12]), + .R(SR)); + FDRE \gt_rxdata_q_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[13]), + .Q(Q[13]), + .R(SR)); + FDRE \gt_rxdata_q_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[14]), + .Q(Q[14]), + .R(SR)); + FDRE \gt_rxdata_q_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[15]), + .Q(Q[15]), + .R(SR)); + FDRE \gt_rxdata_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[1]), + .Q(Q[1]), + .R(SR)); + FDRE \gt_rxdata_q_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[2]), + .Q(Q[2]), + .R(SR)); + FDRE \gt_rxdata_q_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[3]), + .Q(Q[3]), + .R(SR)); + FDRE \gt_rxdata_q_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[4]), + .Q(Q[4]), + .R(SR)); + FDRE \gt_rxdata_q_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[5]), + .Q(Q[5]), + .R(SR)); + FDRE \gt_rxdata_q_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[6]), + .Q(Q[6]), + .R(SR)); + FDRE \gt_rxdata_q_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[7]), + .Q(Q[7]), + .R(SR)); + FDRE \gt_rxdata_q_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[8]), + .Q(Q[8]), + .R(SR)); + FDRE \gt_rxdata_q_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXDATA[9]), + .Q(Q[9]), + .R(SR)); + FDRE gt_rxelecidle_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXELECIDLE), + .Q(gt_rxelecidle_q_reg_0), + .R(SR)); + (* SOFT_HLUTNM = "soft_lutpair22" *) + LUT5 #( + .INIT(32'h00010116)) + gt_rxvalid_q + (.I0(state_eios_det[0]), + .I1(state_eios_det[1]), + .I2(state_eios_det[2]), + .I3(state_eios_det[3]), + .I4(state_eios_det[4]), + .O(gt_rxvalid_q_n_0)); + LUT5 #( + .INIT(32'hFFAAEAAA)) + gt_rxvalid_q_i_1__2 + (.I0(gt_rxvalid_q_i_2__2_n_0), + .I1(state_eios_det[2]), + .I2(\reg_state_eios_det[3]_i_2__2_n_0 ), + .I3(gt_rxvalid_q_reg_2), + .I4(state_eios_det[0]), + .O(gt_rxvalid_q__0)); + LUT6 #( + .INIT(64'hFFF50000CC550000)) + gt_rxvalid_q_i_2__2 + (.I0(gt_rxvalid_q_n_0), + .I1(\gt_rx_status_q_reg[0]_0 ), + .I2(\reg_state_eios_det[4]_i_3__2_n_0 ), + .I3(state_eios_det[4]), + .I4(gt_rxvalid_q_reg_2), + .I5(\reg_state_eios_det[0]_i_3__2_n_0 ), + .O(gt_rxvalid_q_i_2__2_n_0)); + FDRE gt_rxvalid_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gt_rxvalid_q__0), + .Q(gt_rxvalid_q_reg_0), + .R(SR)); + (* SOFT_HLUTNM = "soft_lutpair23" *) + LUT2 #( + .INIT(4'h8)) + \pipe_stages_1.pipe_rx_char_is_k_q[0]_i_1__2 + (.I0(gt_rxvalid_q_reg_0), + .I1(\gt_rxcharisk_q_reg_n_0_[0] ), + .O(gt_rxvalid_q_reg_1[0])); + (* SOFT_HLUTNM = "soft_lutpair26" *) + LUT3 #( + .INIT(8'h08)) + \pipe_stages_1.pipe_rx_char_is_k_q[1]_i_1__2 + (.I0(gt_rxvalid_q_reg_0), + .I1(p_1_in), + .I2(symbol_after_eios), + .O(gt_rxvalid_q_reg_1[1])); + LUT6 #( + .INIT(64'hFFFFFFFFFEFEFEEE)) + \reg_state_eios_det[0]_i_1__2 + (.I0(state_eios_det[4]), + .I1(\reg_state_eios_det[0]_i_2__2_n_0 ), + .I2(\reg_state_eios_det[1]_i_2__2_n_0 ), + .I3(\reg_state_eios_det[0]_i_3__2_n_0 ), + .I4(\reg_state_eios_det[0]_i_4__2_n_0 ), + .I5(\reg_state_eios_det[0]_i_5__2_n_0 ), + .O(p_1_in__0[0])); + LUT6 #( + .INIT(64'hFFAA8A8AFF00FFAA)) + \reg_state_eios_det[0]_i_2__2 + (.I0(state_eios_det[0]), + .I1(Q[6]), + .I2(Q[7]), + .I3(state_eios_det[2]), + .I4(Q[15]), + .I5(Q[14]), + .O(\reg_state_eios_det[0]_i_2__2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair22" *) + LUT3 #( + .INIT(8'hFE)) + \reg_state_eios_det[0]_i_3__2 + (.I0(state_eios_det[3]), + .I1(state_eios_det[1]), + .I2(state_eios_det[2]), + .O(\reg_state_eios_det[0]_i_3__2_n_0 )); + LUT2 #( + .INIT(4'h2)) + \reg_state_eios_det[0]_i_4__2 + (.I0(state_eios_det[0]), + .I1(Q[15]), + .O(\reg_state_eios_det[0]_i_4__2_n_0 )); + LUT6 #( + .INIT(64'hFFE0E0E0FFE0FFE0)) + \reg_state_eios_det[0]_i_5__2 + (.I0(state_eios_det[0]), + .I1(state_eios_det[2]), + .I2(\reg_state_eios_det[2]_i_2__2_n_0 ), + .I3(\reg_state_eios_det[0]_i_3__2_n_0 ), + .I4(Q[7]), + .I5(Q[6]), + .O(\reg_state_eios_det[0]_i_5__2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair21" *) + LUT5 #( + .INIT(32'h00000040)) + \reg_state_eios_det[1]_i_1__2 + (.I0(\reg_state_eios_det[1]_i_2__2_n_0 ), + .I1(state_eios_det[0]), + .I2(Q[7]), + .I3(Q[6]), + .I4(\reg_state_eios_det[3]_i_2__2_n_0 ), + .O(p_1_in__0[1])); + (* SOFT_HLUTNM = "soft_lutpair23" *) + LUT4 #( + .INIT(16'hBFFF)) + \reg_state_eios_det[1]_i_2__2 + (.I0(\reg_state_eios_det[1]_i_3__2_n_0 ), + .I1(\gt_rxcharisk_q_reg_n_0_[0] ), + .I2(Q[4]), + .I3(Q[5]), + .O(\reg_state_eios_det[1]_i_2__2_n_0 )); + LUT4 #( + .INIT(16'hEFFF)) + \reg_state_eios_det[1]_i_3__2 + (.I0(Q[1]), + .I1(Q[0]), + .I2(Q[3]), + .I3(Q[2]), + .O(\reg_state_eios_det[1]_i_3__2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair24" *) + LUT4 #( + .INIT(16'h0040)) + \reg_state_eios_det[2]_i_1__2 + (.I0(Q[14]), + .I1(Q[15]), + .I2(state_eios_det[0]), + .I3(\reg_state_eios_det[2]_i_2__2_n_0 ), + .O(p_1_in__0[2])); + LUT4 #( + .INIT(16'hBFFF)) + \reg_state_eios_det[2]_i_2__2 + (.I0(\reg_state_eios_det[2]_i_3__2_n_0 ), + .I1(p_1_in), + .I2(Q[12]), + .I3(Q[13]), + .O(\reg_state_eios_det[2]_i_2__2_n_0 )); + LUT4 #( + .INIT(16'hEFFF)) + \reg_state_eios_det[2]_i_3__2 + (.I0(Q[9]), + .I1(Q[8]), + .I2(Q[11]), + .I3(Q[10]), + .O(\reg_state_eios_det[2]_i_3__2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair27" *) + LUT3 #( + .INIT(8'h04)) + \reg_state_eios_det[3]_i_1__2 + (.I0(\reg_state_eios_det[3]_i_2__2_n_0 ), + .I1(state_eios_det[2]), + .I2(\reg_state_eios_det[4]_i_3__2_n_0 ), + .O(p_1_in__0[3])); + (* SOFT_HLUTNM = "soft_lutpair24" *) + LUT3 #( + .INIT(8'hFD)) + \reg_state_eios_det[3]_i_2__2 + (.I0(Q[14]), + .I1(Q[15]), + .I2(\reg_state_eios_det[2]_i_2__2_n_0 ), + .O(\reg_state_eios_det[3]_i_2__2_n_0 )); + LUT5 #( + .INIT(32'h00010116)) + \reg_state_eios_det[4]_i_1__2 + (.I0(state_eios_det[0]), + .I1(state_eios_det[4]), + .I2(state_eios_det[2]), + .I3(state_eios_det[1]), + .I4(state_eios_det[3]), + .O(\reg_state_eios_det[4]_i_1__2_n_0 )); + LUT3 #( + .INIT(8'h0E)) + \reg_state_eios_det[4]_i_2__2 + (.I0(state_eios_det[3]), + .I1(state_eios_det[1]), + .I2(\reg_state_eios_det[4]_i_3__2_n_0 ), + .O(p_1_in__0[4])); + (* SOFT_HLUTNM = "soft_lutpair21" *) + LUT3 #( + .INIT(8'hFD)) + \reg_state_eios_det[4]_i_3__2 + (.I0(Q[6]), + .I1(Q[7]), + .I2(\reg_state_eios_det[1]_i_2__2_n_0 ), + .O(\reg_state_eios_det[4]_i_3__2_n_0 )); + (* FSM_ENCODED_STATES = "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000" *) + FDSE \reg_state_eios_det_reg[0] + (.C(pipe_pclk_in), + .CE(\reg_state_eios_det[4]_i_1__2_n_0 ), + .D(p_1_in__0[0]), + .Q(state_eios_det[0]), + .S(SR)); + (* FSM_ENCODED_STATES = "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000" *) + FDRE \reg_state_eios_det_reg[1] + (.C(pipe_pclk_in), + .CE(\reg_state_eios_det[4]_i_1__2_n_0 ), + .D(p_1_in__0[1]), + .Q(state_eios_det[1]), + .R(SR)); + (* FSM_ENCODED_STATES = "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000" *) + FDRE \reg_state_eios_det_reg[2] + (.C(pipe_pclk_in), + .CE(\reg_state_eios_det[4]_i_1__2_n_0 ), + .D(p_1_in__0[2]), + .Q(state_eios_det[2]), + .R(SR)); + (* FSM_ENCODED_STATES = "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000" *) + FDRE \reg_state_eios_det_reg[3] + (.C(pipe_pclk_in), + .CE(\reg_state_eios_det[4]_i_1__2_n_0 ), + .D(p_1_in__0[3]), + .Q(state_eios_det[3]), + .R(SR)); + (* FSM_ENCODED_STATES = "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000" *) + FDRE \reg_state_eios_det_reg[4] + (.C(pipe_pclk_in), + .CE(\reg_state_eios_det[4]_i_1__2_n_0 ), + .D(p_1_in__0[4]), + .Q(state_eios_det[4]), + .R(SR)); + LUT6 #( + .INIT(64'h0000000000000010)) + reg_symbol_after_eios_i_1__2 + (.I0(\reg_state_eios_det[3]_i_2__2_n_0 ), + .I1(state_eios_det[0]), + .I2(state_eios_det[2]), + .I3(state_eios_det[3]), + .I4(state_eios_det[1]), + .I5(reg_symbol_after_eios_i_2__2_n_0), + .O(reg_symbol_after_eios)); + (* SOFT_HLUTNM = "soft_lutpair27" *) + LUT2 #( + .INIT(4'hE)) + reg_symbol_after_eios_i_2__2 + (.I0(\reg_state_eios_det[4]_i_3__2_n_0 ), + .I1(state_eios_det[4]), + .O(reg_symbol_after_eios_i_2__2_n_0)); + FDRE reg_symbol_after_eios_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(reg_symbol_after_eios), + .Q(symbol_after_eios), + .R(SR)); +endmodule + +module pcie_7x_0_pcie_7x_0_gt_top + (pipe_rx0_valid_gt, + phy_rdy_n, + pipe_rx1_valid_gt, + pipe_rx2_valid_gt, + pipe_rx3_valid_gt, + gt_rx_phy_status_q_reg, + gt_rxelecidle_q_reg, + gt_rx_phy_status_q_reg_0, + gt_rxelecidle_q_reg_0, + gt_rx_phy_status_q_reg_1, + gt_rxelecidle_q_reg_1, + gt_rx_phy_status_q, + gt_rxelecidle_q, + sys_rst_n, + Q, + \gt_rxdata_q_reg[15] , + \gt_rxdata_q_reg[15]_0 , + \gt_rxdata_q_reg[15]_1 , + \gt_rx_status_q_reg[2] , + \gt_rx_status_q_reg[2]_0 , + \gt_rx_status_q_reg[2]_1 , + \gt_rx_status_q_reg[2]_2 , + D, + gt_rxvalid_q_reg, + gt_rxvalid_q_reg_0, + gt_rxvalid_q_reg_1, + pipe_pclk_sel_out, + USER_RATE_GEN3, + pci_exp_txn, + pci_exp_txp, + PIPE_RXCHANISALIGNED, + pipe_rxoutclk_out, + pipe_txoutclk_out, + sys_rst_n_0, + pipe_pclk_in, + pipe_mmcm_lock_in, + pl_ltssm_state, + pipe_rxusrclk_in, + pipe_dclk_in, + \rate_reg1_reg[0] , + sys_clk, + pipe_oobclk_in, + PIPE_TXELECIDLE, + PIPE_TXCOMPLIANCE, + pci_exp_rxn, + pci_exp_rxp, + PIPE_RXPOLARITY, + pipe_tx_deemph_gt, + pipe_tx_rcvr_det_gt, + PIPE_POWERDOWN, + \cplllock_reg1_reg[3] , + PIPE_TXDATA, + PIPE_TXDATAK, + reset_n_reg1_reg); + output pipe_rx0_valid_gt; + output phy_rdy_n; + output pipe_rx1_valid_gt; + output pipe_rx2_valid_gt; + output pipe_rx3_valid_gt; + output gt_rx_phy_status_q_reg; + output gt_rxelecidle_q_reg; + output gt_rx_phy_status_q_reg_0; + output gt_rxelecidle_q_reg_0; + output gt_rx_phy_status_q_reg_1; + output gt_rxelecidle_q_reg_1; + output gt_rx_phy_status_q; + output gt_rxelecidle_q; + output sys_rst_n; + output [15:0]Q; + output [15:0]\gt_rxdata_q_reg[15] ; + output [15:0]\gt_rxdata_q_reg[15]_0 ; + output [15:0]\gt_rxdata_q_reg[15]_1 ; + output [2:0]\gt_rx_status_q_reg[2] ; + output [2:0]\gt_rx_status_q_reg[2]_0 ; + output [2:0]\gt_rx_status_q_reg[2]_1 ; + output [2:0]\gt_rx_status_q_reg[2]_2 ; + output [1:0]D; + output [1:0]gt_rxvalid_q_reg; + output [1:0]gt_rxvalid_q_reg_0; + output [1:0]gt_rxvalid_q_reg_1; + output [3:0]pipe_pclk_sel_out; + output USER_RATE_GEN3; + output [3:0]pci_exp_txn; + output [3:0]pci_exp_txp; + output [3:0]PIPE_RXCHANISALIGNED; + output [3:0]pipe_rxoutclk_out; + output pipe_txoutclk_out; + output sys_rst_n_0; + input pipe_pclk_in; + input pipe_mmcm_lock_in; + input [5:0]pl_ltssm_state; + input pipe_rxusrclk_in; + input pipe_dclk_in; + input [0:0]\rate_reg1_reg[0] ; + input sys_clk; + input pipe_oobclk_in; + input [3:0]PIPE_TXELECIDLE; + input [3:0]PIPE_TXCOMPLIANCE; + input [3:0]pci_exp_rxn; + input [3:0]pci_exp_rxp; + input [3:0]PIPE_RXPOLARITY; + input pipe_tx_deemph_gt; + input pipe_tx_rcvr_det_gt; + input [7:0]PIPE_POWERDOWN; + input [2:0]\cplllock_reg1_reg[3] ; + input [63:0]PIPE_TXDATA; + input [7:0]PIPE_TXDATAK; + input reset_n_reg1_reg; + + wire [1:0]D; + wire [7:0]PIPE_POWERDOWN; + wire [3:0]PIPE_RXCHANISALIGNED; + wire [3:0]PIPE_RXPOLARITY; + wire [3:0]PIPE_TXCOMPLIANCE; + wire [63:0]PIPE_TXDATA; + wire [7:0]PIPE_TXDATAK; + wire [3:0]PIPE_TXELECIDLE; + wire [15:0]Q; + wire USER_RATE_GEN3; + wire [2:0]\cplllock_reg1_reg[3] ; + wire [13:0]gt_rx_data_k_wire_filter; + wire [111:0]gt_rx_data_wire_filter; + wire [3:0]gt_rx_elec_idle_wire_filter; + wire gt_rx_phy_status_q; + wire gt_rx_phy_status_q_reg; + wire gt_rx_phy_status_q_reg_0; + wire gt_rx_phy_status_q_reg_1; + wire [3:0]gt_rx_phy_status_wire_filter; + wire [2:0]\gt_rx_status_q_reg[2] ; + wire [2:0]\gt_rx_status_q_reg[2]_0 ; + wire [2:0]\gt_rx_status_q_reg[2]_1 ; + wire [2:0]\gt_rx_status_q_reg[2]_2 ; + wire \gt_rx_valid_filter[0].GT_RX_VALID_FILTER_7x_inst_n_3 ; + wire [15:0]\gt_rxdata_q_reg[15] ; + wire [15:0]\gt_rxdata_q_reg[15]_0 ; + wire [15:0]\gt_rxdata_q_reg[15]_1 ; + wire gt_rxelecidle_q; + wire gt_rxelecidle_q_reg; + wire gt_rxelecidle_q_reg_0; + wire gt_rxelecidle_q_reg_1; + wire [1:0]gt_rxvalid_q_reg; + wire [1:0]gt_rxvalid_q_reg_0; + wire [1:0]gt_rxvalid_q_reg_1; + wire [3:0]pci_exp_rxn; + wire [3:0]pci_exp_rxp; + wire [3:0]pci_exp_txn; + wire [3:0]pci_exp_txp; + wire phy_rdy_n; + wire pipe_dclk_in; + wire \pipe_lane[0].gt_wrapper_i/CPLLPD0 ; + wire \pipe_lane[0].gt_wrapper_i/cpllpd ; + wire \pipe_lane[1].gt_wrapper_i/CPLLPD0 ; + wire \pipe_lane[1].gt_wrapper_i/cpllpd ; + wire \pipe_lane[2].gt_wrapper_i/CPLLPD0 ; + wire \pipe_lane[2].gt_wrapper_i/cpllpd ; + wire \pipe_lane[3].gt_wrapper_i/CPLLPD0 ; + wire \pipe_lane[3].gt_wrapper_i/cpllpd ; + wire pipe_mmcm_lock_in; + wire pipe_oobclk_in; + wire pipe_pclk_in; + wire [3:0]pipe_pclk_sel_out; + wire pipe_rx0_valid_gt; + wire pipe_rx1_valid_gt; + wire pipe_rx2_valid_gt; + wire pipe_rx3_valid_gt; + wire [3:0]pipe_rxoutclk_out; + wire pipe_rxusrclk_in; + wire pipe_tx_deemph_gt; + wire pipe_tx_rcvr_det_gt; + wire pipe_txoutclk_out; + wire pipe_wrapper_i_n_100; + wire pipe_wrapper_i_n_101; + wire pipe_wrapper_i_n_102; + wire pipe_wrapper_i_n_103; + wire pipe_wrapper_i_n_104; + wire pipe_wrapper_i_n_105; + wire pipe_wrapper_i_n_106; + wire pipe_wrapper_i_n_107; + wire pipe_wrapper_i_n_108; + wire pipe_wrapper_i_n_109; + wire pipe_wrapper_i_n_110; + wire pipe_wrapper_i_n_111; + wire pipe_wrapper_i_n_112; + wire pipe_wrapper_i_n_113; + wire pipe_wrapper_i_n_25; + wire pipe_wrapper_i_n_26; + wire pipe_wrapper_i_n_27; + wire [5:0]pl_ltssm_state; + wire [5:0]pl_ltssm_state_q; + wire rate_cpllpd_0; + wire rate_cpllpd_1; + wire rate_cpllpd_2; + wire rate_cpllpd_3; + wire [0:0]\rate_reg1_reg[0] ; + wire reg_clock_locked; + wire reg_clock_locked_i_1_n_0; + wire reset_n_reg1_reg; + wire sys_clk; + wire sys_rst_n; + wire sys_rst_n_0; + + pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x \gt_rx_valid_filter[0].GT_RX_VALID_FILTER_7x_inst + (.D(D), + .PIPE_RXDATA(gt_rx_data_wire_filter[15:0]), + .PIPE_RXDATAK(gt_rx_data_k_wire_filter[1:0]), + .PIPE_RXELECIDLE(gt_rx_elec_idle_wire_filter[0]), + .PIPE_RXSTATUS({pipe_wrapper_i_n_25,pipe_wrapper_i_n_26,pipe_wrapper_i_n_27}), + .Q(Q), + .SR(phy_rdy_n), + .gt_rx_phy_status_q(gt_rx_phy_status_q), + .gt_rx_phy_status_wire_filter(gt_rx_phy_status_wire_filter[0]), + .\gt_rx_status_q_reg[0]_0 (pl_ltssm_state_q), + .\gt_rx_status_q_reg[2]_0 (\gt_rx_status_q_reg[2]_2 ), + .gt_rxelecidle_q(gt_rxelecidle_q), + .gt_rxvalid_q_reg_0(pipe_rx0_valid_gt), + .gt_rxvalid_q_reg_1(pipe_wrapper_i_n_110), + .pipe_pclk_in(pipe_pclk_in), + .\pl_ltssm_state_q_reg[5] (\gt_rx_valid_filter[0].GT_RX_VALID_FILTER_7x_inst_n_3 )); + pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x_34 \gt_rx_valid_filter[1].GT_RX_VALID_FILTER_7x_inst + (.PIPE_RXDATA(gt_rx_data_wire_filter[47:32]), + .PIPE_RXDATAK(gt_rx_data_k_wire_filter[5:4]), + .PIPE_RXELECIDLE(gt_rx_elec_idle_wire_filter[1]), + .PIPE_RXSTATUS({pipe_wrapper_i_n_100,pipe_wrapper_i_n_101,pipe_wrapper_i_n_102}), + .Q(\gt_rxdata_q_reg[15] ), + .SR(phy_rdy_n), + .gt_rx_phy_status_q_reg_0(gt_rx_phy_status_q_reg), + .gt_rx_phy_status_wire_filter(gt_rx_phy_status_wire_filter[1]), + .\gt_rx_status_q_reg[0]_0 (\gt_rx_valid_filter[0].GT_RX_VALID_FILTER_7x_inst_n_3 ), + .\gt_rx_status_q_reg[2]_0 (\gt_rx_status_q_reg[2] ), + .gt_rxelecidle_q_reg_0(gt_rxelecidle_q_reg), + .gt_rxvalid_q_reg_0(pipe_rx1_valid_gt), + .gt_rxvalid_q_reg_1(gt_rxvalid_q_reg), + .gt_rxvalid_q_reg_2(pipe_wrapper_i_n_111), + .pipe_pclk_in(pipe_pclk_in)); + pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x_35 \gt_rx_valid_filter[2].GT_RX_VALID_FILTER_7x_inst + (.PIPE_RXDATA(gt_rx_data_wire_filter[79:64]), + .PIPE_RXDATAK(gt_rx_data_k_wire_filter[9:8]), + .PIPE_RXELECIDLE(gt_rx_elec_idle_wire_filter[2]), + .PIPE_RXSTATUS({pipe_wrapper_i_n_103,pipe_wrapper_i_n_104,pipe_wrapper_i_n_105}), + .Q(\gt_rxdata_q_reg[15]_0 ), + .SR(phy_rdy_n), + .gt_rx_phy_status_q_reg_0(gt_rx_phy_status_q_reg_0), + .gt_rx_phy_status_wire_filter(gt_rx_phy_status_wire_filter[2]), + .\gt_rx_status_q_reg[0]_0 (\gt_rx_valid_filter[0].GT_RX_VALID_FILTER_7x_inst_n_3 ), + .\gt_rx_status_q_reg[2]_0 (\gt_rx_status_q_reg[2]_0 ), + .gt_rxelecidle_q_reg_0(gt_rxelecidle_q_reg_0), + .gt_rxvalid_q_reg_0(pipe_rx2_valid_gt), + .gt_rxvalid_q_reg_1(gt_rxvalid_q_reg_0), + .gt_rxvalid_q_reg_2(pipe_wrapper_i_n_112), + .pipe_pclk_in(pipe_pclk_in)); + pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x_36 \gt_rx_valid_filter[3].GT_RX_VALID_FILTER_7x_inst + (.PIPE_RXDATA(gt_rx_data_wire_filter[111:96]), + .PIPE_RXDATAK(gt_rx_data_k_wire_filter[13:12]), + .PIPE_RXELECIDLE(gt_rx_elec_idle_wire_filter[3]), + .PIPE_RXSTATUS({pipe_wrapper_i_n_106,pipe_wrapper_i_n_107,pipe_wrapper_i_n_108}), + .Q(\gt_rxdata_q_reg[15]_1 ), + .SR(phy_rdy_n), + .gt_rx_phy_status_q_reg_0(gt_rx_phy_status_q_reg_1), + .gt_rx_phy_status_wire_filter(gt_rx_phy_status_wire_filter[3]), + .\gt_rx_status_q_reg[0]_0 (\gt_rx_valid_filter[0].GT_RX_VALID_FILTER_7x_inst_n_3 ), + .\gt_rx_status_q_reg[2]_0 (\gt_rx_status_q_reg[2]_1 ), + .gt_rxelecidle_q_reg_0(gt_rxelecidle_q_reg_1), + .gt_rxvalid_q_reg_0(pipe_rx3_valid_gt), + .gt_rxvalid_q_reg_1(gt_rxvalid_q_reg_1), + .gt_rxvalid_q_reg_2(pipe_wrapper_i_n_113), + .pipe_pclk_in(pipe_pclk_in)); + LUT2 #( + .INIT(4'hE)) + \gtx_channel.gtxe2_channel_i_i_1 + (.I0(\pipe_lane[0].gt_wrapper_i/cpllpd ), + .I1(rate_cpllpd_0), + .O(\pipe_lane[0].gt_wrapper_i/CPLLPD0 )); + LUT2 #( + .INIT(4'hE)) + \gtx_channel.gtxe2_channel_i_i_1__0 + (.I0(\pipe_lane[1].gt_wrapper_i/cpllpd ), + .I1(rate_cpllpd_1), + .O(\pipe_lane[1].gt_wrapper_i/CPLLPD0 )); + LUT2 #( + .INIT(4'hE)) + \gtx_channel.gtxe2_channel_i_i_1__1 + (.I0(\pipe_lane[2].gt_wrapper_i/cpllpd ), + .I1(rate_cpllpd_2), + .O(\pipe_lane[2].gt_wrapper_i/CPLLPD0 )); + LUT2 #( + .INIT(4'hE)) + \gtx_channel.gtxe2_channel_i_i_1__2 + (.I0(\pipe_lane[3].gt_wrapper_i/cpllpd ), + .I1(rate_cpllpd_3), + .O(\pipe_lane[3].gt_wrapper_i/CPLLPD0 )); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_29 + (.I0(phy_rdy_n), + .O(sys_rst_n)); + FDRE phy_rdy_n_int_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_wrapper_i_n_109), + .Q(phy_rdy_n), + .R(1'b0)); + pcie_7x_0_pcie_7x_0_pipe_wrapper pipe_wrapper_i + (.CPLLPD0(\pipe_lane[0].gt_wrapper_i/CPLLPD0 ), + .CPLLPD0_3(\pipe_lane[1].gt_wrapper_i/CPLLPD0 ), + .CPLLPD0_4(\pipe_lane[2].gt_wrapper_i/CPLLPD0 ), + .CPLLPD0_5(\pipe_lane[3].gt_wrapper_i/CPLLPD0 ), + .PIPE_POWERDOWN(PIPE_POWERDOWN), + .PIPE_RXCHANISALIGNED(PIPE_RXCHANISALIGNED), + .PIPE_RXPOLARITY(PIPE_RXPOLARITY), + .PIPE_RXSTATUS({pipe_wrapper_i_n_25,pipe_wrapper_i_n_26,pipe_wrapper_i_n_27}), + .PIPE_TXCOMPLIANCE(PIPE_TXCOMPLIANCE), + .PIPE_TXDATA(PIPE_TXDATA), + .PIPE_TXDATAK(PIPE_TXDATAK), + .PIPE_TXELECIDLE(PIPE_TXELECIDLE), + .\cplllock_reg1_reg[3] (\cplllock_reg1_reg[3] ), + .cpllpd(\pipe_lane[0].gt_wrapper_i/cpllpd ), + .cpllpd_0(\pipe_lane[1].gt_wrapper_i/cpllpd ), + .cpllpd_1(\pipe_lane[2].gt_wrapper_i/cpllpd ), + .cpllpd_2(\pipe_lane[3].gt_wrapper_i/cpllpd ), + .gen3_reg(USER_RATE_GEN3), + .gt_rx_data_k_wire_filter({gt_rx_data_k_wire_filter[13:12],gt_rx_data_k_wire_filter[9:8],gt_rx_data_k_wire_filter[5:4],gt_rx_data_k_wire_filter[1:0]}), + .gt_rx_data_wire_filter({gt_rx_data_wire_filter[111:96],gt_rx_data_wire_filter[79:64],gt_rx_data_wire_filter[47:32],gt_rx_data_wire_filter[15:0]}), + .gt_rx_elec_idle_wire_filter(gt_rx_elec_idle_wire_filter), + .gt_rx_phy_status_wire_filter(gt_rx_phy_status_wire_filter), + .gt_rxvalid_q_reg(pipe_wrapper_i_n_110), + .gt_rxvalid_q_reg_0(pipe_wrapper_i_n_111), + .gt_rxvalid_q_reg_1(pipe_wrapper_i_n_112), + .gt_rxvalid_q_reg_2(pipe_wrapper_i_n_113), + .pci_exp_rxn(pci_exp_rxn), + .pci_exp_rxp(pci_exp_rxp), + .pci_exp_txn(pci_exp_txn), + .pci_exp_txp(pci_exp_txp), + .pipe_dclk_in(pipe_dclk_in), + .pipe_dclk_in_0({pipe_wrapper_i_n_100,pipe_wrapper_i_n_101,pipe_wrapper_i_n_102}), + .pipe_dclk_in_1({pipe_wrapper_i_n_103,pipe_wrapper_i_n_104,pipe_wrapper_i_n_105}), + .pipe_dclk_in_2({pipe_wrapper_i_n_106,pipe_wrapper_i_n_107,pipe_wrapper_i_n_108}), + .pipe_mmcm_lock_in(pipe_mmcm_lock_in), + .pipe_oobclk_in(pipe_oobclk_in), + .pipe_pclk_in(pipe_pclk_in), + .pipe_pclk_sel_out(pipe_pclk_sel_out), + .pipe_rx0_valid_gt(pipe_rx0_valid_gt), + .pipe_rx1_valid_gt(pipe_rx1_valid_gt), + .pipe_rx2_valid_gt(pipe_rx2_valid_gt), + .pipe_rx3_valid_gt(pipe_rx3_valid_gt), + .pipe_rxoutclk_out(pipe_rxoutclk_out), + .pipe_rxusrclk_in(pipe_rxusrclk_in), + .pipe_tx_deemph_gt(pipe_tx_deemph_gt), + .pipe_tx_rcvr_det_gt(pipe_tx_rcvr_det_gt), + .pipe_txoutclk_out(pipe_txoutclk_out), + .rate_cpllpd_0(rate_cpllpd_0), + .rate_cpllpd_1(rate_cpllpd_1), + .rate_cpllpd_2(rate_cpllpd_2), + .rate_cpllpd_3(rate_cpllpd_3), + .\rate_reg1_reg[0] (\rate_reg1_reg[0] ), + .reg_clock_locked(reg_clock_locked), + .reg_clock_locked_reg(pipe_wrapper_i_n_109), + .reset_n_reg1_reg_0(sys_rst_n_0), + .sys_clk(sys_clk)); + FDCE \pl_ltssm_state_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .CLR(reg_clock_locked_i_1_n_0), + .D(pl_ltssm_state[0]), + .Q(pl_ltssm_state_q[0])); + FDCE \pl_ltssm_state_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .CLR(reg_clock_locked_i_1_n_0), + .D(pl_ltssm_state[1]), + .Q(pl_ltssm_state_q[1])); + FDCE \pl_ltssm_state_q_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .CLR(reg_clock_locked_i_1_n_0), + .D(pl_ltssm_state[2]), + .Q(pl_ltssm_state_q[2])); + FDCE \pl_ltssm_state_q_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .CLR(reg_clock_locked_i_1_n_0), + .D(pl_ltssm_state[3]), + .Q(pl_ltssm_state_q[3])); + FDCE \pl_ltssm_state_q_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .CLR(reg_clock_locked_i_1_n_0), + .D(pl_ltssm_state[4]), + .Q(pl_ltssm_state_q[4])); + FDCE \pl_ltssm_state_q_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .CLR(reg_clock_locked_i_1_n_0), + .D(pl_ltssm_state[5]), + .Q(pl_ltssm_state_q[5])); + LUT1 #( + .INIT(2'h1)) + pl_phy_lnk_up_q_i_1 + (.I0(reset_n_reg1_reg), + .O(sys_rst_n_0)); + LUT1 #( + .INIT(2'h1)) + reg_clock_locked_i_1 + (.I0(pipe_mmcm_lock_in), + .O(reg_clock_locked_i_1_n_0)); + FDCE reg_clock_locked_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .CLR(reg_clock_locked_i_1_n_0), + .D(1'b1), + .Q(reg_clock_locked)); +endmodule + +module pcie_7x_0_pcie_7x_0_gt_wrapper + (cpllpd, + QRST_CPLLLOCK, + DRP_RDY, + pci_exp_txn, + pci_exp_txp, + RATE_PHYSTATUS, + gt_rxcdrlock_0, + PIPE_RXCHANISALIGNED, + pipe_dclk_in_0, + gt_rx_elec_idle_wire_filter, + pipe_rxoutclk_out, + SYNC_RXPHALIGNDONE_M, + RATE_RXRATEDONE, + USER_RXRESETDONE, + gt_rxvalid_0, + pipe_dclk_in_1, + pipe_txoutclk_out, + pipe_dclk_in_2, + pipe_dclk_in_3, + RATE_TXRATEDONE, + USER_TXRESETDONE, + DRP_DO, + PIPE_RXSTATUS, + RXCHBONDO, + gt_rx_data_wire_filter, + gt_rx_data_k_wire_filter, + gt_cpllpdrefclk, + CPLLPD0, + pipe_dclk_in, + \cplllock_reg1_reg[0] , + \cplllock_reg1_reg[0]_0 , + sys_clk, + DRP_GTXRESET, + pci_exp_rxn, + pci_exp_rxp, + QPLL_QPLLOUTCLK, + QPLL_QPLLOUTREFCLK, + rxchbonden_0, + \cplllock_reg1_reg[0]_1 , + rate_txpmareset_0, + PIPE_RXPOLARITY, + rst_userrdy, + pipe_rxusrclk_in, + pipe_tx_deemph_gt, + pipe_tx_rcvr_det_gt, + sync_txdlyen_0, + SYNC_TXDLYSRESET, + PIPE_TXELECIDLE, + SYNC_TXPHALIGN, + SYNC_TXPHINIT, + pipe_pclk_in, + DRPDI, + PIPE_POWERDOWN, + RXSYSCLKSEL, + RXRATE, + \cplllock_reg1_reg[0]_2 , + USER_OOBCLK, + TXPOSTCURSOR, + TXPRECURSOR, + PIPE_TXDATA, + TXMAINCURSOR, + PIPE_TXCOMPLIANCE, + PIPE_TXDATAK, + DRPADDR, + rate_cpllreset_0, + RST_CPLLRESET); + output cpllpd; + output [0:0]QRST_CPLLLOCK; + output DRP_RDY; + output [0:0]pci_exp_txn; + output [0:0]pci_exp_txp; + output RATE_PHYSTATUS; + output gt_rxcdrlock_0; + output [0:0]PIPE_RXCHANISALIGNED; + output pipe_dclk_in_0; + output [0:0]gt_rx_elec_idle_wire_filter; + output [0:0]pipe_rxoutclk_out; + output SYNC_RXPHALIGNDONE_M; + output RATE_RXRATEDONE; + output USER_RXRESETDONE; + output gt_rxvalid_0; + output pipe_dclk_in_1; + output pipe_txoutclk_out; + output pipe_dclk_in_2; + output pipe_dclk_in_3; + output RATE_TXRATEDONE; + output USER_TXRESETDONE; + output [15:0]DRP_DO; + output [2:0]PIPE_RXSTATUS; + output [4:0]RXCHBONDO; + output [15:0]gt_rx_data_wire_filter; + output [1:0]gt_rx_data_k_wire_filter; + input gt_cpllpdrefclk; + input CPLLPD0; + input pipe_dclk_in; + input \cplllock_reg1_reg[0] ; + input \cplllock_reg1_reg[0]_0 ; + input sys_clk; + input DRP_GTXRESET; + input [0:0]pci_exp_rxn; + input [0:0]pci_exp_rxp; + input QPLL_QPLLOUTCLK; + input QPLL_QPLLOUTREFCLK; + input rxchbonden_0; + input \cplllock_reg1_reg[0]_1 ; + input rate_txpmareset_0; + input [0:0]PIPE_RXPOLARITY; + input rst_userrdy; + input pipe_rxusrclk_in; + input pipe_tx_deemph_gt; + input pipe_tx_rcvr_det_gt; + input sync_txdlyen_0; + input SYNC_TXDLYSRESET; + input [0:0]PIPE_TXELECIDLE; + input SYNC_TXPHALIGN; + input SYNC_TXPHINIT; + input pipe_pclk_in; + input [15:0]DRPDI; + input [1:0]PIPE_POWERDOWN; + input [0:0]RXSYSCLKSEL; + input [0:0]RXRATE; + input [2:0]\cplllock_reg1_reg[0]_2 ; + input USER_OOBCLK; + input [4:0]TXPOSTCURSOR; + input [4:0]TXPRECURSOR; + input [15:0]PIPE_TXDATA; + input [6:0]TXMAINCURSOR; + input [0:0]PIPE_TXCOMPLIANCE; + input [1:0]PIPE_TXDATAK; + input [7:0]DRPADDR; + input rate_cpllreset_0; + input RST_CPLLRESET; + + wire CPLLPD0; + wire CPLLRESET0; + wire [7:0]DRPADDR; + wire [15:0]DRPDI; + wire [15:0]DRP_DO; + wire DRP_GTXRESET; + wire DRP_RDY; + wire [1:0]PIPE_POWERDOWN; + wire [0:0]PIPE_RXCHANISALIGNED; + wire [0:0]PIPE_RXPOLARITY; + wire [2:0]PIPE_RXSTATUS; + wire [0:0]PIPE_TXCOMPLIANCE; + wire [15:0]PIPE_TXDATA; + wire [1:0]PIPE_TXDATAK; + wire [0:0]PIPE_TXELECIDLE; + wire QPLL_QPLLOUTCLK; + wire QPLL_QPLLOUTREFCLK; + wire [0:0]QRST_CPLLLOCK; + wire RATE_PHYSTATUS; + wire RATE_RXRATEDONE; + wire RATE_TXRATEDONE; + wire RST_CPLLRESET; + wire [4:0]RXCHBONDO; + wire [0:0]RXRATE; + wire [0:0]RXSYSCLKSEL; + wire SYNC_RXPHALIGNDONE_M; + wire SYNC_TXDLYSRESET; + wire SYNC_TXPHALIGN; + wire SYNC_TXPHINIT; + wire [6:0]TXMAINCURSOR; + wire [4:0]TXPOSTCURSOR; + wire [4:0]TXPRECURSOR; + wire USER_OOBCLK; + wire USER_RXRESETDONE; + wire USER_TXRESETDONE; + wire \cplllock_reg1_reg[0] ; + wire \cplllock_reg1_reg[0]_0 ; + wire \cplllock_reg1_reg[0]_1 ; + wire [2:0]\cplllock_reg1_reg[0]_2 ; + wire cpllpd; + wire gt_cpllpdrefclk; + wire [1:0]gt_rx_data_k_wire_filter; + wire [15:0]gt_rx_data_wire_filter; + wire [0:0]gt_rx_elec_idle_wire_filter; + wire gt_rxcdrlock_0; + wire gt_rxvalid_0; + wire \gtx_channel.gtxe2_channel_i_n_10 ; + wire \gtx_channel.gtxe2_channel_i_n_138 ; + wire \gtx_channel.gtxe2_channel_i_n_139 ; + wire \gtx_channel.gtxe2_channel_i_n_140 ; + wire \gtx_channel.gtxe2_channel_i_n_141 ; + wire \gtx_channel.gtxe2_channel_i_n_142 ; + wire \gtx_channel.gtxe2_channel_i_n_143 ; + wire \gtx_channel.gtxe2_channel_i_n_144 ; + wire \gtx_channel.gtxe2_channel_i_n_145 ; + wire \gtx_channel.gtxe2_channel_i_n_146 ; + wire \gtx_channel.gtxe2_channel_i_n_147 ; + wire \gtx_channel.gtxe2_channel_i_n_148 ; + wire \gtx_channel.gtxe2_channel_i_n_149 ; + wire \gtx_channel.gtxe2_channel_i_n_150 ; + wire \gtx_channel.gtxe2_channel_i_n_151 ; + wire \gtx_channel.gtxe2_channel_i_n_152 ; + wire \gtx_channel.gtxe2_channel_i_n_153 ; + wire \gtx_channel.gtxe2_channel_i_n_16 ; + wire \gtx_channel.gtxe2_channel_i_n_177 ; + wire \gtx_channel.gtxe2_channel_i_n_178 ; + wire \gtx_channel.gtxe2_channel_i_n_179 ; + wire \gtx_channel.gtxe2_channel_i_n_180 ; + wire \gtx_channel.gtxe2_channel_i_n_181 ; + wire \gtx_channel.gtxe2_channel_i_n_182 ; + wire \gtx_channel.gtxe2_channel_i_n_183 ; + wire \gtx_channel.gtxe2_channel_i_n_184 ; + wire \gtx_channel.gtxe2_channel_i_n_189 ; + wire \gtx_channel.gtxe2_channel_i_n_190 ; + wire \gtx_channel.gtxe2_channel_i_n_191 ; + wire \gtx_channel.gtxe2_channel_i_n_192 ; + wire \gtx_channel.gtxe2_channel_i_n_197 ; + wire \gtx_channel.gtxe2_channel_i_n_198 ; + wire \gtx_channel.gtxe2_channel_i_n_201 ; + wire \gtx_channel.gtxe2_channel_i_n_202 ; + wire \gtx_channel.gtxe2_channel_i_n_203 ; + wire \gtx_channel.gtxe2_channel_i_n_204 ; + wire \gtx_channel.gtxe2_channel_i_n_205 ; + wire \gtx_channel.gtxe2_channel_i_n_206 ; + wire \gtx_channel.gtxe2_channel_i_n_207 ; + wire \gtx_channel.gtxe2_channel_i_n_208 ; + wire \gtx_channel.gtxe2_channel_i_n_209 ; + wire \gtx_channel.gtxe2_channel_i_n_210 ; + wire \gtx_channel.gtxe2_channel_i_n_211 ; + wire \gtx_channel.gtxe2_channel_i_n_212 ; + wire \gtx_channel.gtxe2_channel_i_n_213 ; + wire \gtx_channel.gtxe2_channel_i_n_214 ; + wire \gtx_channel.gtxe2_channel_i_n_215 ; + wire \gtx_channel.gtxe2_channel_i_n_216 ; + wire \gtx_channel.gtxe2_channel_i_n_27 ; + wire \gtx_channel.gtxe2_channel_i_n_4 ; + wire \gtx_channel.gtxe2_channel_i_n_82 ; + wire \gtx_channel.gtxe2_channel_i_n_83 ; + wire \gtx_channel.gtxe2_channel_i_n_84 ; + wire \gtx_channel.gtxe2_channel_i_n_9 ; + wire [0:0]pci_exp_rxn; + wire [0:0]pci_exp_rxp; + wire [0:0]pci_exp_txn; + wire [0:0]pci_exp_txp; + wire pipe_dclk_in; + wire pipe_dclk_in_0; + wire pipe_dclk_in_1; + wire pipe_dclk_in_2; + wire pipe_dclk_in_3; + wire pipe_pclk_in; + wire [0:0]pipe_rxoutclk_out; + wire pipe_rxusrclk_in; + wire pipe_tx_deemph_gt; + wire pipe_tx_rcvr_det_gt; + wire pipe_txoutclk_out; + wire rate_cpllreset_0; + wire rate_txpmareset_0; + wire rst_userrdy; + wire rxchbonden_0; + wire sync_txdlyen_0; + wire sys_clk; + wire \NLW_gtx_channel.gtxe2_channel_i_CPLLFBCLKLOST_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_CPLLREFCLKLOST_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_GTREFCLKMONITOR_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXCHANBONDSEQ_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXCHANREALIGN_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXCOMINITDET_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXCOMSASDET_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXCOMWAKEDET_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXDATAVALID_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXHEADERVALID_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKFABRIC_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKPCS_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXQPISENN_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXQPISENP_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXSTARTOFSEQ_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_TXCOMFINISH_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_TXGEARBOXREADY_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKFABRIC_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKPCS_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_TXQPISENN_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_TXQPISENP_UNCONNECTED ; + wire [15:0]\NLW_gtx_channel.gtxe2_channel_i_PCSRSVDOUT_UNCONNECTED ; + wire [7:4]\NLW_gtx_channel.gtxe2_channel_i_RXCHARISCOMMA_UNCONNECTED ; + wire [7:4]\NLW_gtx_channel.gtxe2_channel_i_RXCHARISK_UNCONNECTED ; + wire [1:0]\NLW_gtx_channel.gtxe2_channel_i_RXCLKCORCNT_UNCONNECTED ; + wire [63:32]\NLW_gtx_channel.gtxe2_channel_i_RXDATA_UNCONNECTED ; + wire [2:0]\NLW_gtx_channel.gtxe2_channel_i_RXHEADER_UNCONNECTED ; + wire [6:0]\NLW_gtx_channel.gtxe2_channel_i_RXMONITOROUT_UNCONNECTED ; + wire [4:0]\NLW_gtx_channel.gtxe2_channel_i_RXPHMONITOR_UNCONNECTED ; + wire [4:0]\NLW_gtx_channel.gtxe2_channel_i_RXPHSLIPMONITOR_UNCONNECTED ; + wire [9:0]\NLW_gtx_channel.gtxe2_channel_i_TSTOUT_UNCONNECTED ; + wire [1:0]\NLW_gtx_channel.gtxe2_channel_i_TXBUFSTATUS_UNCONNECTED ; + + pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd_60 cpllPDInst + (.CPLLRESET0(CPLLRESET0), + .RST_CPLLRESET(RST_CPLLRESET), + .cpllpd(cpllpd), + .gt_cpllpdrefclk(gt_cpllpdrefclk), + .rate_cpllreset_0(rate_cpllreset_0)); + (* BOX_TYPE = "PRIMITIVE" *) + GTXE2_CHANNEL #( + .ALIGN_COMMA_DOUBLE("FALSE"), + .ALIGN_COMMA_ENABLE(10'b1111111111), + .ALIGN_COMMA_WORD(1), + .ALIGN_MCOMMA_DET("TRUE"), + .ALIGN_MCOMMA_VALUE(10'b1010000011), + .ALIGN_PCOMMA_DET("TRUE"), + .ALIGN_PCOMMA_VALUE(10'b0101111100), + .CBCC_DATA_SOURCE_SEL("DECODED"), + .CHAN_BOND_KEEP_ALIGN("TRUE"), + .CHAN_BOND_MAX_SKEW(7), + .CHAN_BOND_SEQ_1_1(10'b0001001010), + .CHAN_BOND_SEQ_1_2(10'b0001001010), + .CHAN_BOND_SEQ_1_3(10'b0001001010), + .CHAN_BOND_SEQ_1_4(10'b0110111100), + .CHAN_BOND_SEQ_1_ENABLE(4'b1111), + .CHAN_BOND_SEQ_2_1(10'b0001000101), + .CHAN_BOND_SEQ_2_2(10'b0001000101), + .CHAN_BOND_SEQ_2_3(10'b0001000101), + .CHAN_BOND_SEQ_2_4(10'b0110111100), + .CHAN_BOND_SEQ_2_ENABLE(4'b1111), + .CHAN_BOND_SEQ_2_USE("TRUE"), + .CHAN_BOND_SEQ_LEN(4), + .CLK_CORRECT_USE("TRUE"), + .CLK_COR_KEEP_IDLE("TRUE"), + .CLK_COR_MAX_LAT(20), + .CLK_COR_MIN_LAT(18), + .CLK_COR_PRECEDENCE("TRUE"), + .CLK_COR_REPEAT_WAIT(0), + .CLK_COR_SEQ_1_1(10'b0100011100), + .CLK_COR_SEQ_1_2(10'b0000000000), + .CLK_COR_SEQ_1_3(10'b0000000000), + .CLK_COR_SEQ_1_4(10'b0000000000), + .CLK_COR_SEQ_1_ENABLE(4'b1111), + .CLK_COR_SEQ_2_1(10'b0000000000), + .CLK_COR_SEQ_2_2(10'b0000000000), + .CLK_COR_SEQ_2_3(10'b0000000000), + .CLK_COR_SEQ_2_4(10'b0000000000), + .CLK_COR_SEQ_2_ENABLE(4'b0000), + .CLK_COR_SEQ_2_USE("FALSE"), + .CLK_COR_SEQ_LEN(1), + .CPLL_CFG(24'hA407CC), + .CPLL_FBDIV(5), + .CPLL_FBDIV_45(5), + .CPLL_INIT_CFG(24'h00001E), + .CPLL_LOCK_CFG(16'h01E8), + .CPLL_REFCLK_DIV(1), + .DEC_MCOMMA_DETECT("TRUE"), + .DEC_PCOMMA_DETECT("TRUE"), + .DEC_VALID_COMMA_ONLY("FALSE"), + .DMONITOR_CFG(24'h000B01), + .ES_CONTROL(6'b000000), + .ES_ERRDET_EN("FALSE"), + .ES_EYE_SCAN_EN("FALSE"), + .ES_HORZ_OFFSET(12'h000), + .ES_PMA_CFG(10'b0000000000), + .ES_PRESCALE(5'b00000), + .ES_QUALIFIER(80'h00000000000000000000), + .ES_QUAL_MASK(80'h00000000000000000000), + .ES_SDATA_MASK(80'h00000000000000000000), + .ES_VERT_OFFSET(9'b000000000), + .FTS_DESKEW_SEQ_ENABLE(4'b1111), + .FTS_LANE_DESKEW_CFG(4'b1111), + .FTS_LANE_DESKEW_EN("TRUE"), + .GEARBOX_MODE(3'b000), + .IS_CPLLLOCKDETCLK_INVERTED(1'b0), + .IS_DRPCLK_INVERTED(1'b0), + .IS_GTGREFCLK_INVERTED(1'b0), + .IS_RXUSRCLK2_INVERTED(1'b0), + .IS_RXUSRCLK_INVERTED(1'b0), + .IS_TXPHDLYTSTCLK_INVERTED(1'b0), + .IS_TXUSRCLK2_INVERTED(1'b0), + .IS_TXUSRCLK_INVERTED(1'b0), + .OUTREFCLK_SEL_INV(2'b11), + .PCS_PCIE_EN("TRUE"), + .PCS_RSVD_ATTR(48'h0000000001CF), + .PD_TRANS_TIME_FROM_P2(12'h03C), + .PD_TRANS_TIME_NONE_P2(8'h09), + .PD_TRANS_TIME_TO_P2(8'h64), + .PMA_RSV(32'h00018480), + .PMA_RSV2(16'h2050), + .PMA_RSV3(2'b00), + .PMA_RSV4(32'h00000000), + .RXBUFRESET_TIME(5'b00001), + .RXBUF_ADDR_MODE("FULL"), + .RXBUF_EIDLE_HI_CNT(4'b0100), + .RXBUF_EIDLE_LO_CNT(4'b0000), + .RXBUF_EN("TRUE"), + .RXBUF_RESET_ON_CB_CHANGE("TRUE"), + .RXBUF_RESET_ON_COMMAALIGN("FALSE"), + .RXBUF_RESET_ON_EIDLE("TRUE"), + .RXBUF_RESET_ON_RATE_CHANGE("TRUE"), + .RXBUF_THRESH_OVFLW(61), + .RXBUF_THRESH_OVRD("FALSE"), + .RXBUF_THRESH_UNDFLW(4), + .RXCDRFREQRESET_TIME(5'b00001), + .RXCDRPHRESET_TIME(5'b00001), + .RXCDR_CFG(72'h03000023FF10200020), + .RXCDR_FR_RESET_ON_EIDLE(1'b0), + .RXCDR_HOLD_DURING_EIDLE(1'b1), + .RXCDR_LOCK_CFG(6'b010101), + .RXCDR_PH_RESET_ON_EIDLE(1'b0), + .RXDFELPMRESET_TIME(7'b0001111), + .RXDLY_CFG(16'h001F), + .RXDLY_LCFG(9'h030), + .RXDLY_TAP_CFG(16'h0000), + .RXGEARBOX_EN("FALSE"), + .RXISCANRESET_TIME(5'b00001), + .RXLPM_HF_CFG(14'b00000011110000), + .RXLPM_LF_CFG(14'b00000011110000), + .RXOOB_CFG(7'b0000110), + .RXOUT_DIV(2), + .RXPCSRESET_TIME(5'b00001), + .RXPHDLY_CFG(24'h004020), + .RXPH_CFG(24'h000000), + .RXPH_MONITOR_SEL(5'b00000), + .RXPMARESET_TIME(5'b00011), + .RXPRBS_ERR_LOOPBACK(1'b0), + .RXSLIDE_AUTO_WAIT(7), + .RXSLIDE_MODE("PMA"), + .RX_BIAS_CFG(12'b000000000100), + .RX_BUFFER_CFG(6'b000000), + .RX_CLK25_DIV(4), + .RX_CLKMUX_PD(1'b1), + .RX_CM_SEL(2'b11), + .RX_CM_TRIM(3'b010), + .RX_DATA_WIDTH(20), + .RX_DDI_SEL(6'b000000), + .RX_DEBUG_CFG(12'b000000000000), + .RX_DEFER_RESET_BUF_EN("TRUE"), + .RX_DFE_GAIN_CFG(23'h020FEA), + .RX_DFE_H2_CFG(12'b000000000000), + .RX_DFE_H3_CFG(12'b000001000000), + .RX_DFE_H4_CFG(11'b00011110000), + .RX_DFE_H5_CFG(11'b00011100000), + .RX_DFE_KL_CFG(13'b0000011111110), + .RX_DFE_KL_CFG2(32'h3290D86C), + .RX_DFE_LPM_CFG(16'h0954), + .RX_DFE_LPM_HOLD_DURING_EIDLE(1'b1), + .RX_DFE_UT_CFG(17'b10001111000000000), + .RX_DFE_VP_CFG(17'b00011111100000011), + .RX_DFE_XYD_CFG(13'b0000000000000), + .RX_DISPERR_SEQ_MATCH("TRUE"), + .RX_INT_DATAWIDTH(0), + .RX_OS_CFG(13'b0000010000000), + .RX_SIG_VALID_DLY(4), + .RX_XCLK_SEL("RXREC"), + .SAS_MAX_COM(64), + .SAS_MIN_COM(36), + .SATA_BURST_SEQ_LEN(4'b1111), + .SATA_BURST_VAL(3'b100), + .SATA_CPLL_CFG("VCO_3000MHZ"), + .SATA_EIDLE_VAL(3'b100), + .SATA_MAX_BURST(8), + .SATA_MAX_INIT(21), + .SATA_MAX_WAKE(7), + .SATA_MIN_BURST(4), + .SATA_MIN_INIT(12), + .SATA_MIN_WAKE(4), + .SHOW_REALIGN_COMMA("FALSE"), + .SIM_CPLLREFCLK_SEL(3'b001), + .SIM_RECEIVER_DETECT_PASS("TRUE"), + .SIM_RESET_SPEEDUP("FALSE"), + .SIM_TX_EIDLE_DRIVE_LEVEL("1"), + .SIM_VERSION("3.0"), + .TERM_RCAL_CFG(5'b10000), + .TERM_RCAL_OVRD(1'b0), + .TRANS_TIME_RATE(8'h0E), + .TST_RSV(32'h00000000), + .TXBUF_EN("FALSE"), + .TXBUF_RESET_ON_RATE_CHANGE("TRUE"), + .TXDLY_CFG(16'h001F), + .TXDLY_LCFG(9'h030), + .TXDLY_TAP_CFG(16'h0000), + .TXGEARBOX_EN("FALSE"), + .TXOUT_DIV(2), + .TXPCSRESET_TIME(5'b00001), + .TXPHDLY_CFG(24'h084020), + .TXPH_CFG(16'h0780), + .TXPH_MONITOR_SEL(5'b00000), + .TXPMARESET_TIME(5'b00011), + .TX_CLK25_DIV(4), + .TX_CLKMUX_PD(1'b1), + .TX_DATA_WIDTH(20), + .TX_DEEMPH0(5'b10100), + .TX_DEEMPH1(5'b01011), + .TX_DRIVE_MODE("PIPE"), + .TX_EIDLE_ASSERT_DELAY(3'b010), + .TX_EIDLE_DEASSERT_DELAY(3'b100), + .TX_INT_DATAWIDTH(0), + .TX_LOOPBACK_DRIVE_HIZ("FALSE"), + .TX_MAINCURSOR_SEL(1'b0), + .TX_MARGIN_FULL_0(7'b1001111), + .TX_MARGIN_FULL_1(7'b1001110), + .TX_MARGIN_FULL_2(7'b1001101), + .TX_MARGIN_FULL_3(7'b1001100), + .TX_MARGIN_FULL_4(7'b1000011), + .TX_MARGIN_LOW_0(7'b1000101), + .TX_MARGIN_LOW_1(7'b1000110), + .TX_MARGIN_LOW_2(7'b1000011), + .TX_MARGIN_LOW_3(7'b1000010), + .TX_MARGIN_LOW_4(7'b1000000), + .TX_PREDRIVER_MODE(1'b0), + .TX_QPI_STATUS_EN(1'b0), + .TX_RXDETECT_CFG(14'h0064), + .TX_RXDETECT_REF(3'b011), + .TX_XCLK_SEL("TXUSR"), + .UCODEER_CLR(1'b0)) + \gtx_channel.gtxe2_channel_i + (.CFGRESET(1'b0), + .CLKRSVD({1'b0,1'b0,1'b0,USER_OOBCLK}), + .CPLLFBCLKLOST(\NLW_gtx_channel.gtxe2_channel_i_CPLLFBCLKLOST_UNCONNECTED ), + .CPLLLOCK(QRST_CPLLLOCK), + .CPLLLOCKDETCLK(1'b0), + .CPLLLOCKEN(1'b1), + .CPLLPD(CPLLPD0), + .CPLLREFCLKLOST(\NLW_gtx_channel.gtxe2_channel_i_CPLLREFCLKLOST_UNCONNECTED ), + .CPLLREFCLKSEL({1'b0,1'b0,1'b1}), + .CPLLRESET(CPLLRESET0), + .DMONITOROUT({\gtx_channel.gtxe2_channel_i_n_177 ,\gtx_channel.gtxe2_channel_i_n_178 ,\gtx_channel.gtxe2_channel_i_n_179 ,\gtx_channel.gtxe2_channel_i_n_180 ,\gtx_channel.gtxe2_channel_i_n_181 ,\gtx_channel.gtxe2_channel_i_n_182 ,\gtx_channel.gtxe2_channel_i_n_183 ,\gtx_channel.gtxe2_channel_i_n_184 }), + .DRPADDR({1'b0,DRPADDR}), + .DRPCLK(pipe_dclk_in), + .DRPDI(DRPDI), + .DRPDO(DRP_DO), + .DRPEN(\cplllock_reg1_reg[0] ), + .DRPRDY(DRP_RDY), + .DRPWE(\cplllock_reg1_reg[0]_0 ), + .EYESCANDATAERROR(\gtx_channel.gtxe2_channel_i_n_4 ), + .EYESCANMODE(1'b0), + .EYESCANRESET(1'b0), + .EYESCANTRIGGER(1'b0), + .GTGREFCLK(1'b0), + .GTNORTHREFCLK0(1'b0), + .GTNORTHREFCLK1(1'b0), + .GTREFCLK0(sys_clk), + .GTREFCLK1(1'b0), + .GTREFCLKMONITOR(\NLW_gtx_channel.gtxe2_channel_i_GTREFCLKMONITOR_UNCONNECTED ), + .GTRESETSEL(1'b0), + .GTRSVD({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .GTRXRESET(DRP_GTXRESET), + .GTSOUTHREFCLK0(1'b0), + .GTSOUTHREFCLK1(1'b0), + .GTTXRESET(DRP_GTXRESET), + .GTXRXN(pci_exp_rxn), + .GTXRXP(pci_exp_rxp), + .GTXTXN(pci_exp_txn), + .GTXTXP(pci_exp_txp), + .LOOPBACK({1'b0,1'b0,1'b0}), + .PCSRSVDIN({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .PCSRSVDIN2({1'b0,1'b0,1'b0,1'b0,1'b0}), + .PCSRSVDOUT(\NLW_gtx_channel.gtxe2_channel_i_PCSRSVDOUT_UNCONNECTED [15:0]), + .PHYSTATUS(RATE_PHYSTATUS), + .PMARSVDIN({1'b0,1'b0,1'b0,1'b0,1'b0}), + .PMARSVDIN2({1'b0,1'b0,1'b0,1'b0,1'b0}), + .QPLLCLK(QPLL_QPLLOUTCLK), + .QPLLREFCLK(QPLL_QPLLOUTREFCLK), + .RESETOVRD(1'b0), + .RX8B10BEN(rxchbonden_0), + .RXBUFRESET(1'b0), + .RXBUFSTATUS({\gtx_channel.gtxe2_channel_i_n_82 ,\gtx_channel.gtxe2_channel_i_n_83 ,\gtx_channel.gtxe2_channel_i_n_84 }), + .RXBYTEISALIGNED(\gtx_channel.gtxe2_channel_i_n_9 ), + .RXBYTEREALIGN(\gtx_channel.gtxe2_channel_i_n_10 ), + .RXCDRFREQRESET(1'b0), + .RXCDRHOLD(1'b0), + .RXCDRLOCK(gt_rxcdrlock_0), + .RXCDROVRDEN(1'b0), + .RXCDRRESET(1'b0), + .RXCDRRESETRSV(1'b0), + .RXCHANBONDSEQ(\NLW_gtx_channel.gtxe2_channel_i_RXCHANBONDSEQ_UNCONNECTED ), + .RXCHANISALIGNED(PIPE_RXCHANISALIGNED), + .RXCHANREALIGN(\NLW_gtx_channel.gtxe2_channel_i_RXCHANREALIGN_UNCONNECTED ), + .RXCHARISCOMMA({\NLW_gtx_channel.gtxe2_channel_i_RXCHARISCOMMA_UNCONNECTED [7:4],\gtx_channel.gtxe2_channel_i_n_189 ,\gtx_channel.gtxe2_channel_i_n_190 ,\gtx_channel.gtxe2_channel_i_n_191 ,\gtx_channel.gtxe2_channel_i_n_192 }), + .RXCHARISK({\NLW_gtx_channel.gtxe2_channel_i_RXCHARISK_UNCONNECTED [7:4],\gtx_channel.gtxe2_channel_i_n_197 ,\gtx_channel.gtxe2_channel_i_n_198 ,gt_rx_data_k_wire_filter}), + .RXCHBONDEN(rxchbonden_0), + .RXCHBONDI({1'b0,1'b0,1'b0,1'b0,1'b0}), + .RXCHBONDLEVEL({1'b0,1'b0,1'b1}), + .RXCHBONDMASTER(rxchbonden_0), + .RXCHBONDO(RXCHBONDO), + .RXCHBONDSLAVE(1'b0), + .RXCLKCORCNT(\NLW_gtx_channel.gtxe2_channel_i_RXCLKCORCNT_UNCONNECTED [1:0]), + .RXCOMINITDET(\NLW_gtx_channel.gtxe2_channel_i_RXCOMINITDET_UNCONNECTED ), + .RXCOMMADET(\gtx_channel.gtxe2_channel_i_n_16 ), + .RXCOMMADETEN(1'b1), + .RXCOMSASDET(\NLW_gtx_channel.gtxe2_channel_i_RXCOMSASDET_UNCONNECTED ), + .RXCOMWAKEDET(\NLW_gtx_channel.gtxe2_channel_i_RXCOMWAKEDET_UNCONNECTED ), + .RXDATA({\NLW_gtx_channel.gtxe2_channel_i_RXDATA_UNCONNECTED [63:32],\gtx_channel.gtxe2_channel_i_n_138 ,\gtx_channel.gtxe2_channel_i_n_139 ,\gtx_channel.gtxe2_channel_i_n_140 ,\gtx_channel.gtxe2_channel_i_n_141 ,\gtx_channel.gtxe2_channel_i_n_142 ,\gtx_channel.gtxe2_channel_i_n_143 ,\gtx_channel.gtxe2_channel_i_n_144 ,\gtx_channel.gtxe2_channel_i_n_145 ,\gtx_channel.gtxe2_channel_i_n_146 ,\gtx_channel.gtxe2_channel_i_n_147 ,\gtx_channel.gtxe2_channel_i_n_148 ,\gtx_channel.gtxe2_channel_i_n_149 ,\gtx_channel.gtxe2_channel_i_n_150 ,\gtx_channel.gtxe2_channel_i_n_151 ,\gtx_channel.gtxe2_channel_i_n_152 ,\gtx_channel.gtxe2_channel_i_n_153 ,gt_rx_data_wire_filter}), + .RXDATAVALID(\NLW_gtx_channel.gtxe2_channel_i_RXDATAVALID_UNCONNECTED ), + .RXDDIEN(1'b0), + .RXDFEAGCHOLD(\cplllock_reg1_reg[0]_1 ), + .RXDFEAGCOVRDEN(1'b0), + .RXDFECM1EN(1'b0), + .RXDFELFHOLD(1'b0), + .RXDFELFOVRDEN(1'b1), + .RXDFELPMRESET(1'b0), + .RXDFETAP2HOLD(1'b0), + .RXDFETAP2OVRDEN(1'b0), + .RXDFETAP3HOLD(1'b0), + .RXDFETAP3OVRDEN(1'b0), + .RXDFETAP4HOLD(1'b0), + .RXDFETAP4OVRDEN(1'b0), + .RXDFETAP5HOLD(1'b0), + .RXDFETAP5OVRDEN(1'b0), + .RXDFEUTHOLD(1'b0), + .RXDFEUTOVRDEN(1'b0), + .RXDFEVPHOLD(1'b0), + .RXDFEVPOVRDEN(1'b0), + .RXDFEVSEN(1'b0), + .RXDFEXYDEN(1'b0), + .RXDFEXYDHOLD(1'b0), + .RXDFEXYDOVRDEN(1'b0), + .RXDISPERR({\gtx_channel.gtxe2_channel_i_n_201 ,\gtx_channel.gtxe2_channel_i_n_202 ,\gtx_channel.gtxe2_channel_i_n_203 ,\gtx_channel.gtxe2_channel_i_n_204 ,\gtx_channel.gtxe2_channel_i_n_205 ,\gtx_channel.gtxe2_channel_i_n_206 ,\gtx_channel.gtxe2_channel_i_n_207 ,\gtx_channel.gtxe2_channel_i_n_208 }), + .RXDLYBYPASS(1'b1), + .RXDLYEN(1'b0), + .RXDLYOVRDEN(1'b0), + .RXDLYSRESET(1'b0), + .RXDLYSRESETDONE(pipe_dclk_in_0), + .RXELECIDLE(gt_rx_elec_idle_wire_filter), + .RXELECIDLEMODE({1'b0,1'b0}), + .RXGEARBOXSLIP(1'b0), + .RXHEADER(\NLW_gtx_channel.gtxe2_channel_i_RXHEADER_UNCONNECTED [2:0]), + .RXHEADERVALID(\NLW_gtx_channel.gtxe2_channel_i_RXHEADERVALID_UNCONNECTED ), + .RXLPMEN(rxchbonden_0), + .RXLPMHFHOLD(1'b0), + .RXLPMHFOVRDEN(1'b0), + .RXLPMLFHOLD(1'b0), + .RXLPMLFKLOVRDEN(1'b0), + .RXMCOMMAALIGNEN(rxchbonden_0), + .RXMONITOROUT(\NLW_gtx_channel.gtxe2_channel_i_RXMONITOROUT_UNCONNECTED [6:0]), + .RXMONITORSEL({1'b0,1'b0}), + .RXNOTINTABLE({\gtx_channel.gtxe2_channel_i_n_209 ,\gtx_channel.gtxe2_channel_i_n_210 ,\gtx_channel.gtxe2_channel_i_n_211 ,\gtx_channel.gtxe2_channel_i_n_212 ,\gtx_channel.gtxe2_channel_i_n_213 ,\gtx_channel.gtxe2_channel_i_n_214 ,\gtx_channel.gtxe2_channel_i_n_215 ,\gtx_channel.gtxe2_channel_i_n_216 }), + .RXOOBRESET(1'b0), + .RXOSHOLD(1'b0), + .RXOSOVRDEN(1'b0), + .RXOUTCLK(pipe_rxoutclk_out), + .RXOUTCLKFABRIC(\NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKFABRIC_UNCONNECTED ), + .RXOUTCLKPCS(\NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKPCS_UNCONNECTED ), + .RXOUTCLKSEL({1'b0,1'b0,1'b0}), + .RXPCOMMAALIGNEN(rxchbonden_0), + .RXPCSRESET(1'b0), + .RXPD(PIPE_POWERDOWN), + .RXPHALIGN(1'b0), + .RXPHALIGNDONE(SYNC_RXPHALIGNDONE_M), + .RXPHALIGNEN(1'b0), + .RXPHDLYPD(1'b0), + .RXPHDLYRESET(1'b0), + .RXPHMONITOR(\NLW_gtx_channel.gtxe2_channel_i_RXPHMONITOR_UNCONNECTED [4:0]), + .RXPHOVRDEN(1'b0), + .RXPHSLIPMONITOR(\NLW_gtx_channel.gtxe2_channel_i_RXPHSLIPMONITOR_UNCONNECTED [4:0]), + .RXPMARESET(rate_txpmareset_0), + .RXPOLARITY(PIPE_RXPOLARITY), + .RXPRBSCNTRESET(1'b0), + .RXPRBSERR(\gtx_channel.gtxe2_channel_i_n_27 ), + .RXPRBSSEL({1'b0,1'b0,1'b0}), + .RXQPIEN(1'b0), + .RXQPISENN(\NLW_gtx_channel.gtxe2_channel_i_RXQPISENN_UNCONNECTED ), + .RXQPISENP(\NLW_gtx_channel.gtxe2_channel_i_RXQPISENP_UNCONNECTED ), + .RXRATE({1'b0,1'b0,RXRATE}), + .RXRATEDONE(RATE_RXRATEDONE), + .RXRESETDONE(USER_RXRESETDONE), + .RXSLIDE(1'b0), + .RXSTARTOFSEQ(\NLW_gtx_channel.gtxe2_channel_i_RXSTARTOFSEQ_UNCONNECTED ), + .RXSTATUS(PIPE_RXSTATUS), + .RXSYSCLKSEL({1'b0,RXSYSCLKSEL}), + .RXUSERRDY(rst_userrdy), + .RXUSRCLK(pipe_rxusrclk_in), + .RXUSRCLK2(pipe_rxusrclk_in), + .RXVALID(gt_rxvalid_0), + .SETERRSTATUS(1'b0), + .TSTIN({1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1}), + .TSTOUT(\NLW_gtx_channel.gtxe2_channel_i_TSTOUT_UNCONNECTED [9:0]), + .TX8B10BBYPASS({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .TX8B10BEN(rxchbonden_0), + .TXBUFDIFFCTRL({1'b1,1'b0,1'b0}), + .TXBUFSTATUS(\NLW_gtx_channel.gtxe2_channel_i_TXBUFSTATUS_UNCONNECTED [1:0]), + .TXCHARDISPMODE({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,PIPE_TXCOMPLIANCE}), + .TXCHARDISPVAL({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .TXCHARISK({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,PIPE_TXDATAK}), + .TXCOMFINISH(\NLW_gtx_channel.gtxe2_channel_i_TXCOMFINISH_UNCONNECTED ), + .TXCOMINIT(1'b0), + .TXCOMSAS(1'b0), + .TXCOMWAKE(1'b0), + .TXDATA({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,PIPE_TXDATA}), + .TXDEEMPH(pipe_tx_deemph_gt), + .TXDETECTRX(pipe_tx_rcvr_det_gt), + .TXDIFFCTRL({1'b1,1'b1,1'b0,1'b0}), + .TXDIFFPD(1'b0), + .TXDLYBYPASS(1'b0), + .TXDLYEN(sync_txdlyen_0), + .TXDLYHOLD(1'b0), + .TXDLYOVRDEN(1'b0), + .TXDLYSRESET(SYNC_TXDLYSRESET), + .TXDLYSRESETDONE(pipe_dclk_in_1), + .TXDLYUPDOWN(1'b0), + .TXELECIDLE(PIPE_TXELECIDLE), + .TXGEARBOXREADY(\NLW_gtx_channel.gtxe2_channel_i_TXGEARBOXREADY_UNCONNECTED ), + .TXHEADER({1'b0,1'b0,1'b0}), + .TXINHIBIT(1'b0), + .TXMAINCURSOR(TXMAINCURSOR), + .TXMARGIN(\cplllock_reg1_reg[0]_2 ), + .TXOUTCLK(pipe_txoutclk_out), + .TXOUTCLKFABRIC(\NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKFABRIC_UNCONNECTED ), + .TXOUTCLKPCS(\NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKPCS_UNCONNECTED ), + .TXOUTCLKSEL({1'b0,1'b1,1'b1}), + .TXPCSRESET(1'b0), + .TXPD(PIPE_POWERDOWN), + .TXPDELECIDLEMODE(1'b0), + .TXPHALIGN(SYNC_TXPHALIGN), + .TXPHALIGNDONE(pipe_dclk_in_2), + .TXPHALIGNEN(1'b1), + .TXPHDLYPD(1'b0), + .TXPHDLYRESET(1'b0), + .TXPHDLYTSTCLK(1'b0), + .TXPHINIT(SYNC_TXPHINIT), + .TXPHINITDONE(pipe_dclk_in_3), + .TXPHOVRDEN(1'b0), + .TXPISOPD(1'b0), + .TXPMARESET(rate_txpmareset_0), + .TXPOLARITY(1'b0), + .TXPOSTCURSOR(TXPOSTCURSOR), + .TXPOSTCURSORINV(1'b0), + .TXPRBSFORCEERR(1'b0), + .TXPRBSSEL({1'b0,1'b0,1'b0}), + .TXPRECURSOR(TXPRECURSOR), + .TXPRECURSORINV(1'b0), + .TXQPIBIASEN(1'b0), + .TXQPISENN(\NLW_gtx_channel.gtxe2_channel_i_TXQPISENN_UNCONNECTED ), + .TXQPISENP(\NLW_gtx_channel.gtxe2_channel_i_TXQPISENP_UNCONNECTED ), + .TXQPISTRONGPDOWN(1'b0), + .TXQPIWEAKPUP(1'b0), + .TXRATE({1'b0,1'b0,RXRATE}), + .TXRATEDONE(RATE_TXRATEDONE), + .TXRESETDONE(USER_TXRESETDONE), + .TXSEQUENCE({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .TXSTARTSEQ(1'b0), + .TXSWING(1'b0), + .TXSYSCLKSEL({1'b0,RXSYSCLKSEL}), + .TXUSERRDY(rst_userrdy), + .TXUSRCLK(pipe_pclk_in), + .TXUSRCLK2(pipe_pclk_in)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_gt_wrapper" *) +module pcie_7x_0_pcie_7x_0_gt_wrapper_37 + (cpllpd_0, + QRST_CPLLLOCK, + DRP_RDY, + pci_exp_txn, + pci_exp_txp, + RATE_PHYSTATUS, + gt_rxcdrlock_1, + PIPE_RXCHANISALIGNED, + pipe_dclk_in_0, + gt_rx_elec_idle_wire_filter, + pipe_rxoutclk_out, + pipe_dclk_in_1, + RATE_RXRATEDONE, + USER_RXRESETDONE, + gt_rxvalid_1, + pipe_dclk_in_2, + pipe_dclk_in_3, + pipe_dclk_in_4, + RATE_TXRATEDONE, + USER_TXRESETDONE, + DRP_DO, + pipe_dclk_in_5, + gt_rx_data_wire_filter, + gt_rx_data_k_wire_filter, + gt_cpllpdrefclk, + CPLLPD0_3, + pipe_dclk_in, + \cplllock_reg1_reg[1] , + \cplllock_reg1_reg[1]_0 , + sys_clk, + DRP_GTXRESET, + pci_exp_rxn, + pci_exp_rxp, + QPLL_QPLLOUTCLK, + QPLL_QPLLOUTREFCLK, + rxchbonden_1, + \cplllock_reg1_reg[1]_1 , + rate_txpmareset_1, + PIPE_RXPOLARITY, + rst_userrdy, + pipe_rxusrclk_in, + pipe_tx_deemph_gt, + pipe_tx_rcvr_det_gt, + SYNC_TXDLYSRESET, + PIPE_TXELECIDLE, + SYNC_TXPHALIGN, + SYNC_TXPHINIT, + pipe_pclk_in, + DRPDI, + PIPE_POWERDOWN, + RXSYSCLKSEL, + RXRATE, + \cplllock_reg1_reg[1]_2 , + USER_OOBCLK, + RXCHBONDO, + TXPOSTCURSOR, + TXPRECURSOR, + PIPE_TXDATA, + TXMAINCURSOR, + PIPE_TXCOMPLIANCE, + PIPE_TXDATAK, + DRPADDR, + rate_cpllreset_1, + RST_CPLLRESET); + output cpllpd_0; + output [0:0]QRST_CPLLLOCK; + output DRP_RDY; + output [0:0]pci_exp_txn; + output [0:0]pci_exp_txp; + output RATE_PHYSTATUS; + output gt_rxcdrlock_1; + output [0:0]PIPE_RXCHANISALIGNED; + output pipe_dclk_in_0; + output [0:0]gt_rx_elec_idle_wire_filter; + output [0:0]pipe_rxoutclk_out; + output pipe_dclk_in_1; + output RATE_RXRATEDONE; + output USER_RXRESETDONE; + output gt_rxvalid_1; + output pipe_dclk_in_2; + output pipe_dclk_in_3; + output pipe_dclk_in_4; + output RATE_TXRATEDONE; + output USER_TXRESETDONE; + output [15:0]DRP_DO; + output [2:0]pipe_dclk_in_5; + output [15:0]gt_rx_data_wire_filter; + output [1:0]gt_rx_data_k_wire_filter; + input gt_cpllpdrefclk; + input CPLLPD0_3; + input pipe_dclk_in; + input \cplllock_reg1_reg[1] ; + input \cplllock_reg1_reg[1]_0 ; + input sys_clk; + input DRP_GTXRESET; + input [0:0]pci_exp_rxn; + input [0:0]pci_exp_rxp; + input QPLL_QPLLOUTCLK; + input QPLL_QPLLOUTREFCLK; + input rxchbonden_1; + input \cplllock_reg1_reg[1]_1 ; + input rate_txpmareset_1; + input [0:0]PIPE_RXPOLARITY; + input rst_userrdy; + input pipe_rxusrclk_in; + input pipe_tx_deemph_gt; + input pipe_tx_rcvr_det_gt; + input SYNC_TXDLYSRESET; + input [0:0]PIPE_TXELECIDLE; + input SYNC_TXPHALIGN; + input SYNC_TXPHINIT; + input pipe_pclk_in; + input [15:0]DRPDI; + input [1:0]PIPE_POWERDOWN; + input [0:0]RXSYSCLKSEL; + input [0:0]RXRATE; + input [2:0]\cplllock_reg1_reg[1]_2 ; + input USER_OOBCLK; + input [4:0]RXCHBONDO; + input [4:0]TXPOSTCURSOR; + input [4:0]TXPRECURSOR; + input [15:0]PIPE_TXDATA; + input [6:0]TXMAINCURSOR; + input [0:0]PIPE_TXCOMPLIANCE; + input [1:0]PIPE_TXDATAK; + input [7:0]DRPADDR; + input rate_cpllreset_1; + input RST_CPLLRESET; + + wire CPLLPD0_3; + wire CPLLRESET0; + wire [7:0]DRPADDR; + wire [15:0]DRPDI; + wire [15:0]DRP_DO; + wire DRP_GTXRESET; + wire DRP_RDY; + wire [1:0]PIPE_POWERDOWN; + wire [0:0]PIPE_RXCHANISALIGNED; + wire [0:0]PIPE_RXPOLARITY; + wire [0:0]PIPE_TXCOMPLIANCE; + wire [15:0]PIPE_TXDATA; + wire [1:0]PIPE_TXDATAK; + wire [0:0]PIPE_TXELECIDLE; + wire QPLL_QPLLOUTCLK; + wire QPLL_QPLLOUTREFCLK; + wire [0:0]QRST_CPLLLOCK; + wire RATE_PHYSTATUS; + wire RATE_RXRATEDONE; + wire RATE_TXRATEDONE; + wire RST_CPLLRESET; + wire [4:0]RXCHBONDO; + wire [0:0]RXRATE; + wire [0:0]RXSYSCLKSEL; + wire SYNC_TXDLYSRESET; + wire SYNC_TXPHALIGN; + wire SYNC_TXPHINIT; + wire [6:0]TXMAINCURSOR; + wire [4:0]TXPOSTCURSOR; + wire [4:0]TXPRECURSOR; + wire USER_OOBCLK; + wire USER_RXRESETDONE; + wire USER_TXRESETDONE; + wire \cplllock_reg1_reg[1] ; + wire \cplllock_reg1_reg[1]_0 ; + wire \cplllock_reg1_reg[1]_1 ; + wire [2:0]\cplllock_reg1_reg[1]_2 ; + wire cpllpd_0; + wire gt_cpllpdrefclk; + wire [1:0]gt_rx_data_k_wire_filter; + wire [15:0]gt_rx_data_wire_filter; + wire [0:0]gt_rx_elec_idle_wire_filter; + wire gt_rxcdrlock_1; + wire gt_rxvalid_1; + wire \gtx_channel.gtxe2_channel_i_n_10 ; + wire \gtx_channel.gtxe2_channel_i_n_138 ; + wire \gtx_channel.gtxe2_channel_i_n_139 ; + wire \gtx_channel.gtxe2_channel_i_n_140 ; + wire \gtx_channel.gtxe2_channel_i_n_141 ; + wire \gtx_channel.gtxe2_channel_i_n_142 ; + wire \gtx_channel.gtxe2_channel_i_n_143 ; + wire \gtx_channel.gtxe2_channel_i_n_144 ; + wire \gtx_channel.gtxe2_channel_i_n_145 ; + wire \gtx_channel.gtxe2_channel_i_n_146 ; + wire \gtx_channel.gtxe2_channel_i_n_147 ; + wire \gtx_channel.gtxe2_channel_i_n_148 ; + wire \gtx_channel.gtxe2_channel_i_n_149 ; + wire \gtx_channel.gtxe2_channel_i_n_150 ; + wire \gtx_channel.gtxe2_channel_i_n_151 ; + wire \gtx_channel.gtxe2_channel_i_n_152 ; + wire \gtx_channel.gtxe2_channel_i_n_153 ; + wire \gtx_channel.gtxe2_channel_i_n_16 ; + wire \gtx_channel.gtxe2_channel_i_n_177 ; + wire \gtx_channel.gtxe2_channel_i_n_178 ; + wire \gtx_channel.gtxe2_channel_i_n_179 ; + wire \gtx_channel.gtxe2_channel_i_n_180 ; + wire \gtx_channel.gtxe2_channel_i_n_181 ; + wire \gtx_channel.gtxe2_channel_i_n_182 ; + wire \gtx_channel.gtxe2_channel_i_n_183 ; + wire \gtx_channel.gtxe2_channel_i_n_184 ; + wire \gtx_channel.gtxe2_channel_i_n_189 ; + wire \gtx_channel.gtxe2_channel_i_n_190 ; + wire \gtx_channel.gtxe2_channel_i_n_191 ; + wire \gtx_channel.gtxe2_channel_i_n_192 ; + wire \gtx_channel.gtxe2_channel_i_n_197 ; + wire \gtx_channel.gtxe2_channel_i_n_198 ; + wire \gtx_channel.gtxe2_channel_i_n_201 ; + wire \gtx_channel.gtxe2_channel_i_n_202 ; + wire \gtx_channel.gtxe2_channel_i_n_203 ; + wire \gtx_channel.gtxe2_channel_i_n_204 ; + wire \gtx_channel.gtxe2_channel_i_n_205 ; + wire \gtx_channel.gtxe2_channel_i_n_206 ; + wire \gtx_channel.gtxe2_channel_i_n_207 ; + wire \gtx_channel.gtxe2_channel_i_n_208 ; + wire \gtx_channel.gtxe2_channel_i_n_209 ; + wire \gtx_channel.gtxe2_channel_i_n_210 ; + wire \gtx_channel.gtxe2_channel_i_n_211 ; + wire \gtx_channel.gtxe2_channel_i_n_212 ; + wire \gtx_channel.gtxe2_channel_i_n_213 ; + wire \gtx_channel.gtxe2_channel_i_n_214 ; + wire \gtx_channel.gtxe2_channel_i_n_215 ; + wire \gtx_channel.gtxe2_channel_i_n_216 ; + wire \gtx_channel.gtxe2_channel_i_n_27 ; + wire \gtx_channel.gtxe2_channel_i_n_37 ; + wire \gtx_channel.gtxe2_channel_i_n_4 ; + wire \gtx_channel.gtxe2_channel_i_n_82 ; + wire \gtx_channel.gtxe2_channel_i_n_83 ; + wire \gtx_channel.gtxe2_channel_i_n_84 ; + wire \gtx_channel.gtxe2_channel_i_n_9 ; + wire \gtx_channel.gtxe2_channel_i_n_91 ; + wire \gtx_channel.gtxe2_channel_i_n_92 ; + wire \gtx_channel.gtxe2_channel_i_n_93 ; + wire \gtx_channel.gtxe2_channel_i_n_94 ; + wire \gtx_channel.gtxe2_channel_i_n_95 ; + wire [0:0]pci_exp_rxn; + wire [0:0]pci_exp_rxp; + wire [0:0]pci_exp_txn; + wire [0:0]pci_exp_txp; + wire pipe_dclk_in; + wire pipe_dclk_in_0; + wire pipe_dclk_in_1; + wire pipe_dclk_in_2; + wire pipe_dclk_in_3; + wire pipe_dclk_in_4; + wire [2:0]pipe_dclk_in_5; + wire pipe_pclk_in; + wire [0:0]pipe_rxoutclk_out; + wire pipe_rxusrclk_in; + wire pipe_tx_deemph_gt; + wire pipe_tx_rcvr_det_gt; + wire rate_cpllreset_1; + wire rate_txpmareset_1; + wire rst_userrdy; + wire rxchbonden_1; + wire sys_clk; + wire \NLW_gtx_channel.gtxe2_channel_i_CPLLFBCLKLOST_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_CPLLREFCLKLOST_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_GTREFCLKMONITOR_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXCHANBONDSEQ_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXCHANREALIGN_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXCOMINITDET_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXCOMSASDET_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXCOMWAKEDET_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXDATAVALID_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXHEADERVALID_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKFABRIC_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKPCS_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXQPISENN_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXQPISENP_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXSTARTOFSEQ_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_TXCOMFINISH_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_TXGEARBOXREADY_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKFABRIC_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKPCS_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_TXQPISENN_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_TXQPISENP_UNCONNECTED ; + wire [15:0]\NLW_gtx_channel.gtxe2_channel_i_PCSRSVDOUT_UNCONNECTED ; + wire [7:4]\NLW_gtx_channel.gtxe2_channel_i_RXCHARISCOMMA_UNCONNECTED ; + wire [7:4]\NLW_gtx_channel.gtxe2_channel_i_RXCHARISK_UNCONNECTED ; + wire [1:0]\NLW_gtx_channel.gtxe2_channel_i_RXCLKCORCNT_UNCONNECTED ; + wire [63:32]\NLW_gtx_channel.gtxe2_channel_i_RXDATA_UNCONNECTED ; + wire [2:0]\NLW_gtx_channel.gtxe2_channel_i_RXHEADER_UNCONNECTED ; + wire [6:0]\NLW_gtx_channel.gtxe2_channel_i_RXMONITOROUT_UNCONNECTED ; + wire [4:0]\NLW_gtx_channel.gtxe2_channel_i_RXPHMONITOR_UNCONNECTED ; + wire [4:0]\NLW_gtx_channel.gtxe2_channel_i_RXPHSLIPMONITOR_UNCONNECTED ; + wire [9:0]\NLW_gtx_channel.gtxe2_channel_i_TSTOUT_UNCONNECTED ; + wire [1:0]\NLW_gtx_channel.gtxe2_channel_i_TXBUFSTATUS_UNCONNECTED ; + + pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd_58 cpllPDInst + (.CPLLRESET0(CPLLRESET0), + .RST_CPLLRESET(RST_CPLLRESET), + .cpllpd_0(cpllpd_0), + .gt_cpllpdrefclk(gt_cpllpdrefclk), + .rate_cpllreset_1(rate_cpllreset_1)); + (* BOX_TYPE = "PRIMITIVE" *) + GTXE2_CHANNEL #( + .ALIGN_COMMA_DOUBLE("FALSE"), + .ALIGN_COMMA_ENABLE(10'b1111111111), + .ALIGN_COMMA_WORD(1), + .ALIGN_MCOMMA_DET("TRUE"), + .ALIGN_MCOMMA_VALUE(10'b1010000011), + .ALIGN_PCOMMA_DET("TRUE"), + .ALIGN_PCOMMA_VALUE(10'b0101111100), + .CBCC_DATA_SOURCE_SEL("DECODED"), + .CHAN_BOND_KEEP_ALIGN("TRUE"), + .CHAN_BOND_MAX_SKEW(7), + .CHAN_BOND_SEQ_1_1(10'b0001001010), + .CHAN_BOND_SEQ_1_2(10'b0001001010), + .CHAN_BOND_SEQ_1_3(10'b0001001010), + .CHAN_BOND_SEQ_1_4(10'b0110111100), + .CHAN_BOND_SEQ_1_ENABLE(4'b1111), + .CHAN_BOND_SEQ_2_1(10'b0001000101), + .CHAN_BOND_SEQ_2_2(10'b0001000101), + .CHAN_BOND_SEQ_2_3(10'b0001000101), + .CHAN_BOND_SEQ_2_4(10'b0110111100), + .CHAN_BOND_SEQ_2_ENABLE(4'b1111), + .CHAN_BOND_SEQ_2_USE("TRUE"), + .CHAN_BOND_SEQ_LEN(4), + .CLK_CORRECT_USE("TRUE"), + .CLK_COR_KEEP_IDLE("TRUE"), + .CLK_COR_MAX_LAT(20), + .CLK_COR_MIN_LAT(18), + .CLK_COR_PRECEDENCE("TRUE"), + .CLK_COR_REPEAT_WAIT(0), + .CLK_COR_SEQ_1_1(10'b0100011100), + .CLK_COR_SEQ_1_2(10'b0000000000), + .CLK_COR_SEQ_1_3(10'b0000000000), + .CLK_COR_SEQ_1_4(10'b0000000000), + .CLK_COR_SEQ_1_ENABLE(4'b1111), + .CLK_COR_SEQ_2_1(10'b0000000000), + .CLK_COR_SEQ_2_2(10'b0000000000), + .CLK_COR_SEQ_2_3(10'b0000000000), + .CLK_COR_SEQ_2_4(10'b0000000000), + .CLK_COR_SEQ_2_ENABLE(4'b0000), + .CLK_COR_SEQ_2_USE("FALSE"), + .CLK_COR_SEQ_LEN(1), + .CPLL_CFG(24'hA407CC), + .CPLL_FBDIV(5), + .CPLL_FBDIV_45(5), + .CPLL_INIT_CFG(24'h00001E), + .CPLL_LOCK_CFG(16'h01E8), + .CPLL_REFCLK_DIV(1), + .DEC_MCOMMA_DETECT("TRUE"), + .DEC_PCOMMA_DETECT("TRUE"), + .DEC_VALID_COMMA_ONLY("FALSE"), + .DMONITOR_CFG(24'h000B01), + .ES_CONTROL(6'b000000), + .ES_ERRDET_EN("FALSE"), + .ES_EYE_SCAN_EN("FALSE"), + .ES_HORZ_OFFSET(12'h000), + .ES_PMA_CFG(10'b0000000000), + .ES_PRESCALE(5'b00000), + .ES_QUALIFIER(80'h00000000000000000000), + .ES_QUAL_MASK(80'h00000000000000000000), + .ES_SDATA_MASK(80'h00000000000000000000), + .ES_VERT_OFFSET(9'b000000000), + .FTS_DESKEW_SEQ_ENABLE(4'b1111), + .FTS_LANE_DESKEW_CFG(4'b1111), + .FTS_LANE_DESKEW_EN("TRUE"), + .GEARBOX_MODE(3'b000), + .IS_CPLLLOCKDETCLK_INVERTED(1'b0), + .IS_DRPCLK_INVERTED(1'b0), + .IS_GTGREFCLK_INVERTED(1'b0), + .IS_RXUSRCLK2_INVERTED(1'b0), + .IS_RXUSRCLK_INVERTED(1'b0), + .IS_TXPHDLYTSTCLK_INVERTED(1'b0), + .IS_TXUSRCLK2_INVERTED(1'b0), + .IS_TXUSRCLK_INVERTED(1'b0), + .OUTREFCLK_SEL_INV(2'b11), + .PCS_PCIE_EN("TRUE"), + .PCS_RSVD_ATTR(48'h0000000001CF), + .PD_TRANS_TIME_FROM_P2(12'h03C), + .PD_TRANS_TIME_NONE_P2(8'h09), + .PD_TRANS_TIME_TO_P2(8'h64), + .PMA_RSV(32'h00018480), + .PMA_RSV2(16'h2050), + .PMA_RSV3(2'b00), + .PMA_RSV4(32'h00000000), + .RXBUFRESET_TIME(5'b00001), + .RXBUF_ADDR_MODE("FULL"), + .RXBUF_EIDLE_HI_CNT(4'b0100), + .RXBUF_EIDLE_LO_CNT(4'b0000), + .RXBUF_EN("TRUE"), + .RXBUF_RESET_ON_CB_CHANGE("TRUE"), + .RXBUF_RESET_ON_COMMAALIGN("FALSE"), + .RXBUF_RESET_ON_EIDLE("TRUE"), + .RXBUF_RESET_ON_RATE_CHANGE("TRUE"), + .RXBUF_THRESH_OVFLW(61), + .RXBUF_THRESH_OVRD("FALSE"), + .RXBUF_THRESH_UNDFLW(4), + .RXCDRFREQRESET_TIME(5'b00001), + .RXCDRPHRESET_TIME(5'b00001), + .RXCDR_CFG(72'h03000023FF10200020), + .RXCDR_FR_RESET_ON_EIDLE(1'b0), + .RXCDR_HOLD_DURING_EIDLE(1'b1), + .RXCDR_LOCK_CFG(6'b010101), + .RXCDR_PH_RESET_ON_EIDLE(1'b0), + .RXDFELPMRESET_TIME(7'b0001111), + .RXDLY_CFG(16'h001F), + .RXDLY_LCFG(9'h030), + .RXDLY_TAP_CFG(16'h0000), + .RXGEARBOX_EN("FALSE"), + .RXISCANRESET_TIME(5'b00001), + .RXLPM_HF_CFG(14'b00000011110000), + .RXLPM_LF_CFG(14'b00000011110000), + .RXOOB_CFG(7'b0000110), + .RXOUT_DIV(2), + .RXPCSRESET_TIME(5'b00001), + .RXPHDLY_CFG(24'h004020), + .RXPH_CFG(24'h000000), + .RXPH_MONITOR_SEL(5'b00000), + .RXPMARESET_TIME(5'b00011), + .RXPRBS_ERR_LOOPBACK(1'b0), + .RXSLIDE_AUTO_WAIT(7), + .RXSLIDE_MODE("PMA"), + .RX_BIAS_CFG(12'b000000000100), + .RX_BUFFER_CFG(6'b000000), + .RX_CLK25_DIV(4), + .RX_CLKMUX_PD(1'b1), + .RX_CM_SEL(2'b11), + .RX_CM_TRIM(3'b010), + .RX_DATA_WIDTH(20), + .RX_DDI_SEL(6'b000000), + .RX_DEBUG_CFG(12'b000000000000), + .RX_DEFER_RESET_BUF_EN("TRUE"), + .RX_DFE_GAIN_CFG(23'h020FEA), + .RX_DFE_H2_CFG(12'b000000000000), + .RX_DFE_H3_CFG(12'b000001000000), + .RX_DFE_H4_CFG(11'b00011110000), + .RX_DFE_H5_CFG(11'b00011100000), + .RX_DFE_KL_CFG(13'b0000011111110), + .RX_DFE_KL_CFG2(32'h3290D86C), + .RX_DFE_LPM_CFG(16'h0954), + .RX_DFE_LPM_HOLD_DURING_EIDLE(1'b1), + .RX_DFE_UT_CFG(17'b10001111000000000), + .RX_DFE_VP_CFG(17'b00011111100000011), + .RX_DFE_XYD_CFG(13'b0000000000000), + .RX_DISPERR_SEQ_MATCH("TRUE"), + .RX_INT_DATAWIDTH(0), + .RX_OS_CFG(13'b0000010000000), + .RX_SIG_VALID_DLY(4), + .RX_XCLK_SEL("RXREC"), + .SAS_MAX_COM(64), + .SAS_MIN_COM(36), + .SATA_BURST_SEQ_LEN(4'b1111), + .SATA_BURST_VAL(3'b100), + .SATA_CPLL_CFG("VCO_3000MHZ"), + .SATA_EIDLE_VAL(3'b100), + .SATA_MAX_BURST(8), + .SATA_MAX_INIT(21), + .SATA_MAX_WAKE(7), + .SATA_MIN_BURST(4), + .SATA_MIN_INIT(12), + .SATA_MIN_WAKE(4), + .SHOW_REALIGN_COMMA("FALSE"), + .SIM_CPLLREFCLK_SEL(3'b001), + .SIM_RECEIVER_DETECT_PASS("TRUE"), + .SIM_RESET_SPEEDUP("FALSE"), + .SIM_TX_EIDLE_DRIVE_LEVEL("1"), + .SIM_VERSION("3.0"), + .TERM_RCAL_CFG(5'b10000), + .TERM_RCAL_OVRD(1'b0), + .TRANS_TIME_RATE(8'h0E), + .TST_RSV(32'h00000000), + .TXBUF_EN("FALSE"), + .TXBUF_RESET_ON_RATE_CHANGE("TRUE"), + .TXDLY_CFG(16'h001F), + .TXDLY_LCFG(9'h030), + .TXDLY_TAP_CFG(16'h0000), + .TXGEARBOX_EN("FALSE"), + .TXOUT_DIV(2), + .TXPCSRESET_TIME(5'b00001), + .TXPHDLY_CFG(24'h084020), + .TXPH_CFG(16'h0780), + .TXPH_MONITOR_SEL(5'b00000), + .TXPMARESET_TIME(5'b00011), + .TX_CLK25_DIV(4), + .TX_CLKMUX_PD(1'b1), + .TX_DATA_WIDTH(20), + .TX_DEEMPH0(5'b10100), + .TX_DEEMPH1(5'b01011), + .TX_DRIVE_MODE("PIPE"), + .TX_EIDLE_ASSERT_DELAY(3'b010), + .TX_EIDLE_DEASSERT_DELAY(3'b100), + .TX_INT_DATAWIDTH(0), + .TX_LOOPBACK_DRIVE_HIZ("FALSE"), + .TX_MAINCURSOR_SEL(1'b0), + .TX_MARGIN_FULL_0(7'b1001111), + .TX_MARGIN_FULL_1(7'b1001110), + .TX_MARGIN_FULL_2(7'b1001101), + .TX_MARGIN_FULL_3(7'b1001100), + .TX_MARGIN_FULL_4(7'b1000011), + .TX_MARGIN_LOW_0(7'b1000101), + .TX_MARGIN_LOW_1(7'b1000110), + .TX_MARGIN_LOW_2(7'b1000011), + .TX_MARGIN_LOW_3(7'b1000010), + .TX_MARGIN_LOW_4(7'b1000000), + .TX_PREDRIVER_MODE(1'b0), + .TX_QPI_STATUS_EN(1'b0), + .TX_RXDETECT_CFG(14'h0064), + .TX_RXDETECT_REF(3'b011), + .TX_XCLK_SEL("TXUSR"), + .UCODEER_CLR(1'b0)) + \gtx_channel.gtxe2_channel_i + (.CFGRESET(1'b0), + .CLKRSVD({1'b0,1'b0,1'b0,USER_OOBCLK}), + .CPLLFBCLKLOST(\NLW_gtx_channel.gtxe2_channel_i_CPLLFBCLKLOST_UNCONNECTED ), + .CPLLLOCK(QRST_CPLLLOCK), + .CPLLLOCKDETCLK(1'b0), + .CPLLLOCKEN(1'b1), + .CPLLPD(CPLLPD0_3), + .CPLLREFCLKLOST(\NLW_gtx_channel.gtxe2_channel_i_CPLLREFCLKLOST_UNCONNECTED ), + .CPLLREFCLKSEL({1'b0,1'b0,1'b1}), + .CPLLRESET(CPLLRESET0), + .DMONITOROUT({\gtx_channel.gtxe2_channel_i_n_177 ,\gtx_channel.gtxe2_channel_i_n_178 ,\gtx_channel.gtxe2_channel_i_n_179 ,\gtx_channel.gtxe2_channel_i_n_180 ,\gtx_channel.gtxe2_channel_i_n_181 ,\gtx_channel.gtxe2_channel_i_n_182 ,\gtx_channel.gtxe2_channel_i_n_183 ,\gtx_channel.gtxe2_channel_i_n_184 }), + .DRPADDR({1'b0,DRPADDR}), + .DRPCLK(pipe_dclk_in), + .DRPDI(DRPDI), + .DRPDO(DRP_DO), + .DRPEN(\cplllock_reg1_reg[1] ), + .DRPRDY(DRP_RDY), + .DRPWE(\cplllock_reg1_reg[1]_0 ), + .EYESCANDATAERROR(\gtx_channel.gtxe2_channel_i_n_4 ), + .EYESCANMODE(1'b0), + .EYESCANRESET(1'b0), + .EYESCANTRIGGER(1'b0), + .GTGREFCLK(1'b0), + .GTNORTHREFCLK0(1'b0), + .GTNORTHREFCLK1(1'b0), + .GTREFCLK0(sys_clk), + .GTREFCLK1(1'b0), + .GTREFCLKMONITOR(\NLW_gtx_channel.gtxe2_channel_i_GTREFCLKMONITOR_UNCONNECTED ), + .GTRESETSEL(1'b0), + .GTRSVD({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .GTRXRESET(DRP_GTXRESET), + .GTSOUTHREFCLK0(1'b0), + .GTSOUTHREFCLK1(1'b0), + .GTTXRESET(DRP_GTXRESET), + .GTXRXN(pci_exp_rxn), + .GTXRXP(pci_exp_rxp), + .GTXTXN(pci_exp_txn), + .GTXTXP(pci_exp_txp), + .LOOPBACK({1'b0,1'b0,1'b0}), + .PCSRSVDIN({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .PCSRSVDIN2({1'b0,1'b0,1'b0,1'b0,1'b0}), + .PCSRSVDOUT(\NLW_gtx_channel.gtxe2_channel_i_PCSRSVDOUT_UNCONNECTED [15:0]), + .PHYSTATUS(RATE_PHYSTATUS), + .PMARSVDIN({1'b0,1'b0,1'b0,1'b0,1'b0}), + .PMARSVDIN2({1'b0,1'b0,1'b0,1'b0,1'b0}), + .QPLLCLK(QPLL_QPLLOUTCLK), + .QPLLREFCLK(QPLL_QPLLOUTREFCLK), + .RESETOVRD(1'b0), + .RX8B10BEN(rxchbonden_1), + .RXBUFRESET(1'b0), + .RXBUFSTATUS({\gtx_channel.gtxe2_channel_i_n_82 ,\gtx_channel.gtxe2_channel_i_n_83 ,\gtx_channel.gtxe2_channel_i_n_84 }), + .RXBYTEISALIGNED(\gtx_channel.gtxe2_channel_i_n_9 ), + .RXBYTEREALIGN(\gtx_channel.gtxe2_channel_i_n_10 ), + .RXCDRFREQRESET(1'b0), + .RXCDRHOLD(1'b0), + .RXCDRLOCK(gt_rxcdrlock_1), + .RXCDROVRDEN(1'b0), + .RXCDRRESET(1'b0), + .RXCDRRESETRSV(1'b0), + .RXCHANBONDSEQ(\NLW_gtx_channel.gtxe2_channel_i_RXCHANBONDSEQ_UNCONNECTED ), + .RXCHANISALIGNED(PIPE_RXCHANISALIGNED), + .RXCHANREALIGN(\NLW_gtx_channel.gtxe2_channel_i_RXCHANREALIGN_UNCONNECTED ), + .RXCHARISCOMMA({\NLW_gtx_channel.gtxe2_channel_i_RXCHARISCOMMA_UNCONNECTED [7:4],\gtx_channel.gtxe2_channel_i_n_189 ,\gtx_channel.gtxe2_channel_i_n_190 ,\gtx_channel.gtxe2_channel_i_n_191 ,\gtx_channel.gtxe2_channel_i_n_192 }), + .RXCHARISK({\NLW_gtx_channel.gtxe2_channel_i_RXCHARISK_UNCONNECTED [7:4],\gtx_channel.gtxe2_channel_i_n_197 ,\gtx_channel.gtxe2_channel_i_n_198 ,gt_rx_data_k_wire_filter}), + .RXCHBONDEN(rxchbonden_1), + .RXCHBONDI(RXCHBONDO), + .RXCHBONDLEVEL({1'b0,1'b0,1'b0}), + .RXCHBONDMASTER(1'b0), + .RXCHBONDO({\gtx_channel.gtxe2_channel_i_n_91 ,\gtx_channel.gtxe2_channel_i_n_92 ,\gtx_channel.gtxe2_channel_i_n_93 ,\gtx_channel.gtxe2_channel_i_n_94 ,\gtx_channel.gtxe2_channel_i_n_95 }), + .RXCHBONDSLAVE(rxchbonden_1), + .RXCLKCORCNT(\NLW_gtx_channel.gtxe2_channel_i_RXCLKCORCNT_UNCONNECTED [1:0]), + .RXCOMINITDET(\NLW_gtx_channel.gtxe2_channel_i_RXCOMINITDET_UNCONNECTED ), + .RXCOMMADET(\gtx_channel.gtxe2_channel_i_n_16 ), + .RXCOMMADETEN(1'b1), + .RXCOMSASDET(\NLW_gtx_channel.gtxe2_channel_i_RXCOMSASDET_UNCONNECTED ), + .RXCOMWAKEDET(\NLW_gtx_channel.gtxe2_channel_i_RXCOMWAKEDET_UNCONNECTED ), + .RXDATA({\NLW_gtx_channel.gtxe2_channel_i_RXDATA_UNCONNECTED [63:32],\gtx_channel.gtxe2_channel_i_n_138 ,\gtx_channel.gtxe2_channel_i_n_139 ,\gtx_channel.gtxe2_channel_i_n_140 ,\gtx_channel.gtxe2_channel_i_n_141 ,\gtx_channel.gtxe2_channel_i_n_142 ,\gtx_channel.gtxe2_channel_i_n_143 ,\gtx_channel.gtxe2_channel_i_n_144 ,\gtx_channel.gtxe2_channel_i_n_145 ,\gtx_channel.gtxe2_channel_i_n_146 ,\gtx_channel.gtxe2_channel_i_n_147 ,\gtx_channel.gtxe2_channel_i_n_148 ,\gtx_channel.gtxe2_channel_i_n_149 ,\gtx_channel.gtxe2_channel_i_n_150 ,\gtx_channel.gtxe2_channel_i_n_151 ,\gtx_channel.gtxe2_channel_i_n_152 ,\gtx_channel.gtxe2_channel_i_n_153 ,gt_rx_data_wire_filter}), + .RXDATAVALID(\NLW_gtx_channel.gtxe2_channel_i_RXDATAVALID_UNCONNECTED ), + .RXDDIEN(1'b0), + .RXDFEAGCHOLD(\cplllock_reg1_reg[1]_1 ), + .RXDFEAGCOVRDEN(1'b0), + .RXDFECM1EN(1'b0), + .RXDFELFHOLD(1'b0), + .RXDFELFOVRDEN(1'b1), + .RXDFELPMRESET(1'b0), + .RXDFETAP2HOLD(1'b0), + .RXDFETAP2OVRDEN(1'b0), + .RXDFETAP3HOLD(1'b0), + .RXDFETAP3OVRDEN(1'b0), + .RXDFETAP4HOLD(1'b0), + .RXDFETAP4OVRDEN(1'b0), + .RXDFETAP5HOLD(1'b0), + .RXDFETAP5OVRDEN(1'b0), + .RXDFEUTHOLD(1'b0), + .RXDFEUTOVRDEN(1'b0), + .RXDFEVPHOLD(1'b0), + .RXDFEVPOVRDEN(1'b0), + .RXDFEVSEN(1'b0), + .RXDFEXYDEN(1'b0), + .RXDFEXYDHOLD(1'b0), + .RXDFEXYDOVRDEN(1'b0), + .RXDISPERR({\gtx_channel.gtxe2_channel_i_n_201 ,\gtx_channel.gtxe2_channel_i_n_202 ,\gtx_channel.gtxe2_channel_i_n_203 ,\gtx_channel.gtxe2_channel_i_n_204 ,\gtx_channel.gtxe2_channel_i_n_205 ,\gtx_channel.gtxe2_channel_i_n_206 ,\gtx_channel.gtxe2_channel_i_n_207 ,\gtx_channel.gtxe2_channel_i_n_208 }), + .RXDLYBYPASS(1'b1), + .RXDLYEN(1'b0), + .RXDLYOVRDEN(1'b0), + .RXDLYSRESET(1'b0), + .RXDLYSRESETDONE(pipe_dclk_in_0), + .RXELECIDLE(gt_rx_elec_idle_wire_filter), + .RXELECIDLEMODE({1'b0,1'b0}), + .RXGEARBOXSLIP(1'b0), + .RXHEADER(\NLW_gtx_channel.gtxe2_channel_i_RXHEADER_UNCONNECTED [2:0]), + .RXHEADERVALID(\NLW_gtx_channel.gtxe2_channel_i_RXHEADERVALID_UNCONNECTED ), + .RXLPMEN(rxchbonden_1), + .RXLPMHFHOLD(1'b0), + .RXLPMHFOVRDEN(1'b0), + .RXLPMLFHOLD(1'b0), + .RXLPMLFKLOVRDEN(1'b0), + .RXMCOMMAALIGNEN(rxchbonden_1), + .RXMONITOROUT(\NLW_gtx_channel.gtxe2_channel_i_RXMONITOROUT_UNCONNECTED [6:0]), + .RXMONITORSEL({1'b0,1'b0}), + .RXNOTINTABLE({\gtx_channel.gtxe2_channel_i_n_209 ,\gtx_channel.gtxe2_channel_i_n_210 ,\gtx_channel.gtxe2_channel_i_n_211 ,\gtx_channel.gtxe2_channel_i_n_212 ,\gtx_channel.gtxe2_channel_i_n_213 ,\gtx_channel.gtxe2_channel_i_n_214 ,\gtx_channel.gtxe2_channel_i_n_215 ,\gtx_channel.gtxe2_channel_i_n_216 }), + .RXOOBRESET(1'b0), + .RXOSHOLD(1'b0), + .RXOSOVRDEN(1'b0), + .RXOUTCLK(pipe_rxoutclk_out), + .RXOUTCLKFABRIC(\NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKFABRIC_UNCONNECTED ), + .RXOUTCLKPCS(\NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKPCS_UNCONNECTED ), + .RXOUTCLKSEL({1'b0,1'b0,1'b0}), + .RXPCOMMAALIGNEN(rxchbonden_1), + .RXPCSRESET(1'b0), + .RXPD(PIPE_POWERDOWN), + .RXPHALIGN(1'b0), + .RXPHALIGNDONE(pipe_dclk_in_1), + .RXPHALIGNEN(1'b0), + .RXPHDLYPD(1'b0), + .RXPHDLYRESET(1'b0), + .RXPHMONITOR(\NLW_gtx_channel.gtxe2_channel_i_RXPHMONITOR_UNCONNECTED [4:0]), + .RXPHOVRDEN(1'b0), + .RXPHSLIPMONITOR(\NLW_gtx_channel.gtxe2_channel_i_RXPHSLIPMONITOR_UNCONNECTED [4:0]), + .RXPMARESET(rate_txpmareset_1), + .RXPOLARITY(PIPE_RXPOLARITY), + .RXPRBSCNTRESET(1'b0), + .RXPRBSERR(\gtx_channel.gtxe2_channel_i_n_27 ), + .RXPRBSSEL({1'b0,1'b0,1'b0}), + .RXQPIEN(1'b0), + .RXQPISENN(\NLW_gtx_channel.gtxe2_channel_i_RXQPISENN_UNCONNECTED ), + .RXQPISENP(\NLW_gtx_channel.gtxe2_channel_i_RXQPISENP_UNCONNECTED ), + .RXRATE({1'b0,1'b0,RXRATE}), + .RXRATEDONE(RATE_RXRATEDONE), + .RXRESETDONE(USER_RXRESETDONE), + .RXSLIDE(1'b0), + .RXSTARTOFSEQ(\NLW_gtx_channel.gtxe2_channel_i_RXSTARTOFSEQ_UNCONNECTED ), + .RXSTATUS(pipe_dclk_in_5), + .RXSYSCLKSEL({1'b0,RXSYSCLKSEL}), + .RXUSERRDY(rst_userrdy), + .RXUSRCLK(pipe_rxusrclk_in), + .RXUSRCLK2(pipe_rxusrclk_in), + .RXVALID(gt_rxvalid_1), + .SETERRSTATUS(1'b0), + .TSTIN({1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1}), + .TSTOUT(\NLW_gtx_channel.gtxe2_channel_i_TSTOUT_UNCONNECTED [9:0]), + .TX8B10BBYPASS({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .TX8B10BEN(rxchbonden_1), + .TXBUFDIFFCTRL({1'b1,1'b0,1'b0}), + .TXBUFSTATUS(\NLW_gtx_channel.gtxe2_channel_i_TXBUFSTATUS_UNCONNECTED [1:0]), + .TXCHARDISPMODE({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,PIPE_TXCOMPLIANCE}), + .TXCHARDISPVAL({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .TXCHARISK({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,PIPE_TXDATAK}), + .TXCOMFINISH(\NLW_gtx_channel.gtxe2_channel_i_TXCOMFINISH_UNCONNECTED ), + .TXCOMINIT(1'b0), + .TXCOMSAS(1'b0), + .TXCOMWAKE(1'b0), + .TXDATA({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,PIPE_TXDATA}), + .TXDEEMPH(pipe_tx_deemph_gt), + .TXDETECTRX(pipe_tx_rcvr_det_gt), + .TXDIFFCTRL({1'b1,1'b1,1'b0,1'b0}), + .TXDIFFPD(1'b0), + .TXDLYBYPASS(1'b0), + .TXDLYEN(1'b0), + .TXDLYHOLD(1'b0), + .TXDLYOVRDEN(1'b0), + .TXDLYSRESET(SYNC_TXDLYSRESET), + .TXDLYSRESETDONE(pipe_dclk_in_2), + .TXDLYUPDOWN(1'b0), + .TXELECIDLE(PIPE_TXELECIDLE), + .TXGEARBOXREADY(\NLW_gtx_channel.gtxe2_channel_i_TXGEARBOXREADY_UNCONNECTED ), + .TXHEADER({1'b0,1'b0,1'b0}), + .TXINHIBIT(1'b0), + .TXMAINCURSOR(TXMAINCURSOR), + .TXMARGIN(\cplllock_reg1_reg[1]_2 ), + .TXOUTCLK(\gtx_channel.gtxe2_channel_i_n_37 ), + .TXOUTCLKFABRIC(\NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKFABRIC_UNCONNECTED ), + .TXOUTCLKPCS(\NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKPCS_UNCONNECTED ), + .TXOUTCLKSEL({1'b0,1'b0,1'b0}), + .TXPCSRESET(1'b0), + .TXPD(PIPE_POWERDOWN), + .TXPDELECIDLEMODE(1'b0), + .TXPHALIGN(SYNC_TXPHALIGN), + .TXPHALIGNDONE(pipe_dclk_in_3), + .TXPHALIGNEN(1'b1), + .TXPHDLYPD(1'b0), + .TXPHDLYRESET(1'b0), + .TXPHDLYTSTCLK(1'b0), + .TXPHINIT(SYNC_TXPHINIT), + .TXPHINITDONE(pipe_dclk_in_4), + .TXPHOVRDEN(1'b0), + .TXPISOPD(1'b0), + .TXPMARESET(rate_txpmareset_1), + .TXPOLARITY(1'b0), + .TXPOSTCURSOR(TXPOSTCURSOR), + .TXPOSTCURSORINV(1'b0), + .TXPRBSFORCEERR(1'b0), + .TXPRBSSEL({1'b0,1'b0,1'b0}), + .TXPRECURSOR(TXPRECURSOR), + .TXPRECURSORINV(1'b0), + .TXQPIBIASEN(1'b0), + .TXQPISENN(\NLW_gtx_channel.gtxe2_channel_i_TXQPISENN_UNCONNECTED ), + .TXQPISENP(\NLW_gtx_channel.gtxe2_channel_i_TXQPISENP_UNCONNECTED ), + .TXQPISTRONGPDOWN(1'b0), + .TXQPIWEAKPUP(1'b0), + .TXRATE({1'b0,1'b0,RXRATE}), + .TXRATEDONE(RATE_TXRATEDONE), + .TXRESETDONE(USER_TXRESETDONE), + .TXSEQUENCE({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .TXSTARTSEQ(1'b0), + .TXSWING(1'b0), + .TXSYSCLKSEL({1'b0,RXSYSCLKSEL}), + .TXUSERRDY(rst_userrdy), + .TXUSRCLK(pipe_pclk_in), + .TXUSRCLK2(pipe_pclk_in)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_gt_wrapper" *) +module pcie_7x_0_pcie_7x_0_gt_wrapper_43 + (cpllpd_1, + QRST_CPLLLOCK, + DRP_RDY, + pci_exp_txn, + pci_exp_txp, + RATE_PHYSTATUS, + gt_rxcdrlock_2, + PIPE_RXCHANISALIGNED, + pipe_dclk_in_0, + gt_rx_elec_idle_wire_filter, + pipe_rxoutclk_out, + pipe_dclk_in_1, + RATE_RXRATEDONE, + USER_RXRESETDONE, + gt_rxvalid_2, + pipe_dclk_in_2, + pipe_dclk_in_3, + pipe_dclk_in_4, + RATE_TXRATEDONE, + USER_TXRESETDONE, + DRP_DO, + pipe_dclk_in_5, + gt_rx_data_wire_filter, + gt_rx_data_k_wire_filter, + gt_cpllpdrefclk, + CPLLPD0_4, + pipe_dclk_in, + \cplllock_reg1_reg[2] , + \cplllock_reg1_reg[2]_0 , + sys_clk, + DRP_GTXRESET, + pci_exp_rxn, + pci_exp_rxp, + QPLL_QPLLOUTCLK, + QPLL_QPLLOUTREFCLK, + rxchbonden_2, + \cplllock_reg1_reg[2]_1 , + rate_txpmareset_2, + PIPE_RXPOLARITY, + rst_userrdy, + pipe_rxusrclk_in, + pipe_tx_deemph_gt, + pipe_tx_rcvr_det_gt, + SYNC_TXDLYSRESET, + PIPE_TXELECIDLE, + SYNC_TXPHALIGN, + SYNC_TXPHINIT, + pipe_pclk_in, + DRPDI, + PIPE_POWERDOWN, + RXSYSCLKSEL, + RXRATE, + \cplllock_reg1_reg[2]_2 , + USER_OOBCLK, + RXCHBONDO, + TXPOSTCURSOR, + TXPRECURSOR, + PIPE_TXDATA, + TXMAINCURSOR, + PIPE_TXCOMPLIANCE, + PIPE_TXDATAK, + DRPADDR, + rate_cpllreset_2, + RST_CPLLRESET); + output cpllpd_1; + output [0:0]QRST_CPLLLOCK; + output DRP_RDY; + output [0:0]pci_exp_txn; + output [0:0]pci_exp_txp; + output RATE_PHYSTATUS; + output gt_rxcdrlock_2; + output [0:0]PIPE_RXCHANISALIGNED; + output pipe_dclk_in_0; + output [0:0]gt_rx_elec_idle_wire_filter; + output [0:0]pipe_rxoutclk_out; + output pipe_dclk_in_1; + output RATE_RXRATEDONE; + output USER_RXRESETDONE; + output gt_rxvalid_2; + output pipe_dclk_in_2; + output pipe_dclk_in_3; + output pipe_dclk_in_4; + output RATE_TXRATEDONE; + output USER_TXRESETDONE; + output [15:0]DRP_DO; + output [2:0]pipe_dclk_in_5; + output [15:0]gt_rx_data_wire_filter; + output [1:0]gt_rx_data_k_wire_filter; + input gt_cpllpdrefclk; + input CPLLPD0_4; + input pipe_dclk_in; + input \cplllock_reg1_reg[2] ; + input \cplllock_reg1_reg[2]_0 ; + input sys_clk; + input DRP_GTXRESET; + input [0:0]pci_exp_rxn; + input [0:0]pci_exp_rxp; + input QPLL_QPLLOUTCLK; + input QPLL_QPLLOUTREFCLK; + input rxchbonden_2; + input \cplllock_reg1_reg[2]_1 ; + input rate_txpmareset_2; + input [0:0]PIPE_RXPOLARITY; + input rst_userrdy; + input pipe_rxusrclk_in; + input pipe_tx_deemph_gt; + input pipe_tx_rcvr_det_gt; + input SYNC_TXDLYSRESET; + input [0:0]PIPE_TXELECIDLE; + input SYNC_TXPHALIGN; + input SYNC_TXPHINIT; + input pipe_pclk_in; + input [15:0]DRPDI; + input [1:0]PIPE_POWERDOWN; + input [0:0]RXSYSCLKSEL; + input [0:0]RXRATE; + input [2:0]\cplllock_reg1_reg[2]_2 ; + input USER_OOBCLK; + input [4:0]RXCHBONDO; + input [4:0]TXPOSTCURSOR; + input [4:0]TXPRECURSOR; + input [15:0]PIPE_TXDATA; + input [6:0]TXMAINCURSOR; + input [0:0]PIPE_TXCOMPLIANCE; + input [1:0]PIPE_TXDATAK; + input [7:0]DRPADDR; + input rate_cpllreset_2; + input RST_CPLLRESET; + + wire CPLLPD0_4; + wire CPLLRESET0; + wire [7:0]DRPADDR; + wire [15:0]DRPDI; + wire [15:0]DRP_DO; + wire DRP_GTXRESET; + wire DRP_RDY; + wire [1:0]PIPE_POWERDOWN; + wire [0:0]PIPE_RXCHANISALIGNED; + wire [0:0]PIPE_RXPOLARITY; + wire [0:0]PIPE_TXCOMPLIANCE; + wire [15:0]PIPE_TXDATA; + wire [1:0]PIPE_TXDATAK; + wire [0:0]PIPE_TXELECIDLE; + wire QPLL_QPLLOUTCLK; + wire QPLL_QPLLOUTREFCLK; + wire [0:0]QRST_CPLLLOCK; + wire RATE_PHYSTATUS; + wire RATE_RXRATEDONE; + wire RATE_TXRATEDONE; + wire RST_CPLLRESET; + wire [4:0]RXCHBONDO; + wire [0:0]RXRATE; + wire [0:0]RXSYSCLKSEL; + wire SYNC_TXDLYSRESET; + wire SYNC_TXPHALIGN; + wire SYNC_TXPHINIT; + wire [6:0]TXMAINCURSOR; + wire [4:0]TXPOSTCURSOR; + wire [4:0]TXPRECURSOR; + wire USER_OOBCLK; + wire USER_RXRESETDONE; + wire USER_TXRESETDONE; + wire \cplllock_reg1_reg[2] ; + wire \cplllock_reg1_reg[2]_0 ; + wire \cplllock_reg1_reg[2]_1 ; + wire [2:0]\cplllock_reg1_reg[2]_2 ; + wire cpllpd_1; + wire gt_cpllpdrefclk; + wire [1:0]gt_rx_data_k_wire_filter; + wire [15:0]gt_rx_data_wire_filter; + wire [0:0]gt_rx_elec_idle_wire_filter; + wire gt_rxcdrlock_2; + wire gt_rxvalid_2; + wire \gtx_channel.gtxe2_channel_i_n_10 ; + wire \gtx_channel.gtxe2_channel_i_n_138 ; + wire \gtx_channel.gtxe2_channel_i_n_139 ; + wire \gtx_channel.gtxe2_channel_i_n_140 ; + wire \gtx_channel.gtxe2_channel_i_n_141 ; + wire \gtx_channel.gtxe2_channel_i_n_142 ; + wire \gtx_channel.gtxe2_channel_i_n_143 ; + wire \gtx_channel.gtxe2_channel_i_n_144 ; + wire \gtx_channel.gtxe2_channel_i_n_145 ; + wire \gtx_channel.gtxe2_channel_i_n_146 ; + wire \gtx_channel.gtxe2_channel_i_n_147 ; + wire \gtx_channel.gtxe2_channel_i_n_148 ; + wire \gtx_channel.gtxe2_channel_i_n_149 ; + wire \gtx_channel.gtxe2_channel_i_n_150 ; + wire \gtx_channel.gtxe2_channel_i_n_151 ; + wire \gtx_channel.gtxe2_channel_i_n_152 ; + wire \gtx_channel.gtxe2_channel_i_n_153 ; + wire \gtx_channel.gtxe2_channel_i_n_16 ; + wire \gtx_channel.gtxe2_channel_i_n_177 ; + wire \gtx_channel.gtxe2_channel_i_n_178 ; + wire \gtx_channel.gtxe2_channel_i_n_179 ; + wire \gtx_channel.gtxe2_channel_i_n_180 ; + wire \gtx_channel.gtxe2_channel_i_n_181 ; + wire \gtx_channel.gtxe2_channel_i_n_182 ; + wire \gtx_channel.gtxe2_channel_i_n_183 ; + wire \gtx_channel.gtxe2_channel_i_n_184 ; + wire \gtx_channel.gtxe2_channel_i_n_189 ; + wire \gtx_channel.gtxe2_channel_i_n_190 ; + wire \gtx_channel.gtxe2_channel_i_n_191 ; + wire \gtx_channel.gtxe2_channel_i_n_192 ; + wire \gtx_channel.gtxe2_channel_i_n_197 ; + wire \gtx_channel.gtxe2_channel_i_n_198 ; + wire \gtx_channel.gtxe2_channel_i_n_201 ; + wire \gtx_channel.gtxe2_channel_i_n_202 ; + wire \gtx_channel.gtxe2_channel_i_n_203 ; + wire \gtx_channel.gtxe2_channel_i_n_204 ; + wire \gtx_channel.gtxe2_channel_i_n_205 ; + wire \gtx_channel.gtxe2_channel_i_n_206 ; + wire \gtx_channel.gtxe2_channel_i_n_207 ; + wire \gtx_channel.gtxe2_channel_i_n_208 ; + wire \gtx_channel.gtxe2_channel_i_n_209 ; + wire \gtx_channel.gtxe2_channel_i_n_210 ; + wire \gtx_channel.gtxe2_channel_i_n_211 ; + wire \gtx_channel.gtxe2_channel_i_n_212 ; + wire \gtx_channel.gtxe2_channel_i_n_213 ; + wire \gtx_channel.gtxe2_channel_i_n_214 ; + wire \gtx_channel.gtxe2_channel_i_n_215 ; + wire \gtx_channel.gtxe2_channel_i_n_216 ; + wire \gtx_channel.gtxe2_channel_i_n_27 ; + wire \gtx_channel.gtxe2_channel_i_n_37 ; + wire \gtx_channel.gtxe2_channel_i_n_4 ; + wire \gtx_channel.gtxe2_channel_i_n_82 ; + wire \gtx_channel.gtxe2_channel_i_n_83 ; + wire \gtx_channel.gtxe2_channel_i_n_84 ; + wire \gtx_channel.gtxe2_channel_i_n_9 ; + wire \gtx_channel.gtxe2_channel_i_n_91 ; + wire \gtx_channel.gtxe2_channel_i_n_92 ; + wire \gtx_channel.gtxe2_channel_i_n_93 ; + wire \gtx_channel.gtxe2_channel_i_n_94 ; + wire \gtx_channel.gtxe2_channel_i_n_95 ; + wire [0:0]pci_exp_rxn; + wire [0:0]pci_exp_rxp; + wire [0:0]pci_exp_txn; + wire [0:0]pci_exp_txp; + wire pipe_dclk_in; + wire pipe_dclk_in_0; + wire pipe_dclk_in_1; + wire pipe_dclk_in_2; + wire pipe_dclk_in_3; + wire pipe_dclk_in_4; + wire [2:0]pipe_dclk_in_5; + wire pipe_pclk_in; + wire [0:0]pipe_rxoutclk_out; + wire pipe_rxusrclk_in; + wire pipe_tx_deemph_gt; + wire pipe_tx_rcvr_det_gt; + wire rate_cpllreset_2; + wire rate_txpmareset_2; + wire rst_userrdy; + wire rxchbonden_2; + wire sys_clk; + wire \NLW_gtx_channel.gtxe2_channel_i_CPLLFBCLKLOST_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_CPLLREFCLKLOST_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_GTREFCLKMONITOR_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXCHANBONDSEQ_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXCHANREALIGN_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXCOMINITDET_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXCOMSASDET_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXCOMWAKEDET_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXDATAVALID_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXHEADERVALID_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKFABRIC_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKPCS_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXQPISENN_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXQPISENP_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXSTARTOFSEQ_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_TXCOMFINISH_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_TXGEARBOXREADY_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKFABRIC_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKPCS_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_TXQPISENN_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_TXQPISENP_UNCONNECTED ; + wire [15:0]\NLW_gtx_channel.gtxe2_channel_i_PCSRSVDOUT_UNCONNECTED ; + wire [7:4]\NLW_gtx_channel.gtxe2_channel_i_RXCHARISCOMMA_UNCONNECTED ; + wire [7:4]\NLW_gtx_channel.gtxe2_channel_i_RXCHARISK_UNCONNECTED ; + wire [1:0]\NLW_gtx_channel.gtxe2_channel_i_RXCLKCORCNT_UNCONNECTED ; + wire [63:32]\NLW_gtx_channel.gtxe2_channel_i_RXDATA_UNCONNECTED ; + wire [2:0]\NLW_gtx_channel.gtxe2_channel_i_RXHEADER_UNCONNECTED ; + wire [6:0]\NLW_gtx_channel.gtxe2_channel_i_RXMONITOROUT_UNCONNECTED ; + wire [4:0]\NLW_gtx_channel.gtxe2_channel_i_RXPHMONITOR_UNCONNECTED ; + wire [4:0]\NLW_gtx_channel.gtxe2_channel_i_RXPHSLIPMONITOR_UNCONNECTED ; + wire [9:0]\NLW_gtx_channel.gtxe2_channel_i_TSTOUT_UNCONNECTED ; + wire [1:0]\NLW_gtx_channel.gtxe2_channel_i_TXBUFSTATUS_UNCONNECTED ; + + pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd_56 cpllPDInst + (.CPLLRESET0(CPLLRESET0), + .RST_CPLLRESET(RST_CPLLRESET), + .cpllpd_1(cpllpd_1), + .gt_cpllpdrefclk(gt_cpllpdrefclk), + .rate_cpllreset_2(rate_cpllreset_2)); + (* BOX_TYPE = "PRIMITIVE" *) + GTXE2_CHANNEL #( + .ALIGN_COMMA_DOUBLE("FALSE"), + .ALIGN_COMMA_ENABLE(10'b1111111111), + .ALIGN_COMMA_WORD(1), + .ALIGN_MCOMMA_DET("TRUE"), + .ALIGN_MCOMMA_VALUE(10'b1010000011), + .ALIGN_PCOMMA_DET("TRUE"), + .ALIGN_PCOMMA_VALUE(10'b0101111100), + .CBCC_DATA_SOURCE_SEL("DECODED"), + .CHAN_BOND_KEEP_ALIGN("TRUE"), + .CHAN_BOND_MAX_SKEW(7), + .CHAN_BOND_SEQ_1_1(10'b0001001010), + .CHAN_BOND_SEQ_1_2(10'b0001001010), + .CHAN_BOND_SEQ_1_3(10'b0001001010), + .CHAN_BOND_SEQ_1_4(10'b0110111100), + .CHAN_BOND_SEQ_1_ENABLE(4'b1111), + .CHAN_BOND_SEQ_2_1(10'b0001000101), + .CHAN_BOND_SEQ_2_2(10'b0001000101), + .CHAN_BOND_SEQ_2_3(10'b0001000101), + .CHAN_BOND_SEQ_2_4(10'b0110111100), + .CHAN_BOND_SEQ_2_ENABLE(4'b1111), + .CHAN_BOND_SEQ_2_USE("TRUE"), + .CHAN_BOND_SEQ_LEN(4), + .CLK_CORRECT_USE("TRUE"), + .CLK_COR_KEEP_IDLE("TRUE"), + .CLK_COR_MAX_LAT(20), + .CLK_COR_MIN_LAT(18), + .CLK_COR_PRECEDENCE("TRUE"), + .CLK_COR_REPEAT_WAIT(0), + .CLK_COR_SEQ_1_1(10'b0100011100), + .CLK_COR_SEQ_1_2(10'b0000000000), + .CLK_COR_SEQ_1_3(10'b0000000000), + .CLK_COR_SEQ_1_4(10'b0000000000), + .CLK_COR_SEQ_1_ENABLE(4'b1111), + .CLK_COR_SEQ_2_1(10'b0000000000), + .CLK_COR_SEQ_2_2(10'b0000000000), + .CLK_COR_SEQ_2_3(10'b0000000000), + .CLK_COR_SEQ_2_4(10'b0000000000), + .CLK_COR_SEQ_2_ENABLE(4'b0000), + .CLK_COR_SEQ_2_USE("FALSE"), + .CLK_COR_SEQ_LEN(1), + .CPLL_CFG(24'hA407CC), + .CPLL_FBDIV(5), + .CPLL_FBDIV_45(5), + .CPLL_INIT_CFG(24'h00001E), + .CPLL_LOCK_CFG(16'h01E8), + .CPLL_REFCLK_DIV(1), + .DEC_MCOMMA_DETECT("TRUE"), + .DEC_PCOMMA_DETECT("TRUE"), + .DEC_VALID_COMMA_ONLY("FALSE"), + .DMONITOR_CFG(24'h000B01), + .ES_CONTROL(6'b000000), + .ES_ERRDET_EN("FALSE"), + .ES_EYE_SCAN_EN("FALSE"), + .ES_HORZ_OFFSET(12'h000), + .ES_PMA_CFG(10'b0000000000), + .ES_PRESCALE(5'b00000), + .ES_QUALIFIER(80'h00000000000000000000), + .ES_QUAL_MASK(80'h00000000000000000000), + .ES_SDATA_MASK(80'h00000000000000000000), + .ES_VERT_OFFSET(9'b000000000), + .FTS_DESKEW_SEQ_ENABLE(4'b1111), + .FTS_LANE_DESKEW_CFG(4'b1111), + .FTS_LANE_DESKEW_EN("TRUE"), + .GEARBOX_MODE(3'b000), + .IS_CPLLLOCKDETCLK_INVERTED(1'b0), + .IS_DRPCLK_INVERTED(1'b0), + .IS_GTGREFCLK_INVERTED(1'b0), + .IS_RXUSRCLK2_INVERTED(1'b0), + .IS_RXUSRCLK_INVERTED(1'b0), + .IS_TXPHDLYTSTCLK_INVERTED(1'b0), + .IS_TXUSRCLK2_INVERTED(1'b0), + .IS_TXUSRCLK_INVERTED(1'b0), + .OUTREFCLK_SEL_INV(2'b11), + .PCS_PCIE_EN("TRUE"), + .PCS_RSVD_ATTR(48'h0000000001CF), + .PD_TRANS_TIME_FROM_P2(12'h03C), + .PD_TRANS_TIME_NONE_P2(8'h09), + .PD_TRANS_TIME_TO_P2(8'h64), + .PMA_RSV(32'h00018480), + .PMA_RSV2(16'h2050), + .PMA_RSV3(2'b00), + .PMA_RSV4(32'h00000000), + .RXBUFRESET_TIME(5'b00001), + .RXBUF_ADDR_MODE("FULL"), + .RXBUF_EIDLE_HI_CNT(4'b0100), + .RXBUF_EIDLE_LO_CNT(4'b0000), + .RXBUF_EN("TRUE"), + .RXBUF_RESET_ON_CB_CHANGE("TRUE"), + .RXBUF_RESET_ON_COMMAALIGN("FALSE"), + .RXBUF_RESET_ON_EIDLE("TRUE"), + .RXBUF_RESET_ON_RATE_CHANGE("TRUE"), + .RXBUF_THRESH_OVFLW(61), + .RXBUF_THRESH_OVRD("FALSE"), + .RXBUF_THRESH_UNDFLW(4), + .RXCDRFREQRESET_TIME(5'b00001), + .RXCDRPHRESET_TIME(5'b00001), + .RXCDR_CFG(72'h03000023FF10200020), + .RXCDR_FR_RESET_ON_EIDLE(1'b0), + .RXCDR_HOLD_DURING_EIDLE(1'b1), + .RXCDR_LOCK_CFG(6'b010101), + .RXCDR_PH_RESET_ON_EIDLE(1'b0), + .RXDFELPMRESET_TIME(7'b0001111), + .RXDLY_CFG(16'h001F), + .RXDLY_LCFG(9'h030), + .RXDLY_TAP_CFG(16'h0000), + .RXGEARBOX_EN("FALSE"), + .RXISCANRESET_TIME(5'b00001), + .RXLPM_HF_CFG(14'b00000011110000), + .RXLPM_LF_CFG(14'b00000011110000), + .RXOOB_CFG(7'b0000110), + .RXOUT_DIV(2), + .RXPCSRESET_TIME(5'b00001), + .RXPHDLY_CFG(24'h004020), + .RXPH_CFG(24'h000000), + .RXPH_MONITOR_SEL(5'b00000), + .RXPMARESET_TIME(5'b00011), + .RXPRBS_ERR_LOOPBACK(1'b0), + .RXSLIDE_AUTO_WAIT(7), + .RXSLIDE_MODE("PMA"), + .RX_BIAS_CFG(12'b000000000100), + .RX_BUFFER_CFG(6'b000000), + .RX_CLK25_DIV(4), + .RX_CLKMUX_PD(1'b1), + .RX_CM_SEL(2'b11), + .RX_CM_TRIM(3'b010), + .RX_DATA_WIDTH(20), + .RX_DDI_SEL(6'b000000), + .RX_DEBUG_CFG(12'b000000000000), + .RX_DEFER_RESET_BUF_EN("TRUE"), + .RX_DFE_GAIN_CFG(23'h020FEA), + .RX_DFE_H2_CFG(12'b000000000000), + .RX_DFE_H3_CFG(12'b000001000000), + .RX_DFE_H4_CFG(11'b00011110000), + .RX_DFE_H5_CFG(11'b00011100000), + .RX_DFE_KL_CFG(13'b0000011111110), + .RX_DFE_KL_CFG2(32'h3290D86C), + .RX_DFE_LPM_CFG(16'h0954), + .RX_DFE_LPM_HOLD_DURING_EIDLE(1'b1), + .RX_DFE_UT_CFG(17'b10001111000000000), + .RX_DFE_VP_CFG(17'b00011111100000011), + .RX_DFE_XYD_CFG(13'b0000000000000), + .RX_DISPERR_SEQ_MATCH("TRUE"), + .RX_INT_DATAWIDTH(0), + .RX_OS_CFG(13'b0000010000000), + .RX_SIG_VALID_DLY(4), + .RX_XCLK_SEL("RXREC"), + .SAS_MAX_COM(64), + .SAS_MIN_COM(36), + .SATA_BURST_SEQ_LEN(4'b1111), + .SATA_BURST_VAL(3'b100), + .SATA_CPLL_CFG("VCO_3000MHZ"), + .SATA_EIDLE_VAL(3'b100), + .SATA_MAX_BURST(8), + .SATA_MAX_INIT(21), + .SATA_MAX_WAKE(7), + .SATA_MIN_BURST(4), + .SATA_MIN_INIT(12), + .SATA_MIN_WAKE(4), + .SHOW_REALIGN_COMMA("FALSE"), + .SIM_CPLLREFCLK_SEL(3'b001), + .SIM_RECEIVER_DETECT_PASS("TRUE"), + .SIM_RESET_SPEEDUP("FALSE"), + .SIM_TX_EIDLE_DRIVE_LEVEL("1"), + .SIM_VERSION("3.0"), + .TERM_RCAL_CFG(5'b10000), + .TERM_RCAL_OVRD(1'b0), + .TRANS_TIME_RATE(8'h0E), + .TST_RSV(32'h00000000), + .TXBUF_EN("FALSE"), + .TXBUF_RESET_ON_RATE_CHANGE("TRUE"), + .TXDLY_CFG(16'h001F), + .TXDLY_LCFG(9'h030), + .TXDLY_TAP_CFG(16'h0000), + .TXGEARBOX_EN("FALSE"), + .TXOUT_DIV(2), + .TXPCSRESET_TIME(5'b00001), + .TXPHDLY_CFG(24'h084020), + .TXPH_CFG(16'h0780), + .TXPH_MONITOR_SEL(5'b00000), + .TXPMARESET_TIME(5'b00011), + .TX_CLK25_DIV(4), + .TX_CLKMUX_PD(1'b1), + .TX_DATA_WIDTH(20), + .TX_DEEMPH0(5'b10100), + .TX_DEEMPH1(5'b01011), + .TX_DRIVE_MODE("PIPE"), + .TX_EIDLE_ASSERT_DELAY(3'b010), + .TX_EIDLE_DEASSERT_DELAY(3'b100), + .TX_INT_DATAWIDTH(0), + .TX_LOOPBACK_DRIVE_HIZ("FALSE"), + .TX_MAINCURSOR_SEL(1'b0), + .TX_MARGIN_FULL_0(7'b1001111), + .TX_MARGIN_FULL_1(7'b1001110), + .TX_MARGIN_FULL_2(7'b1001101), + .TX_MARGIN_FULL_3(7'b1001100), + .TX_MARGIN_FULL_4(7'b1000011), + .TX_MARGIN_LOW_0(7'b1000101), + .TX_MARGIN_LOW_1(7'b1000110), + .TX_MARGIN_LOW_2(7'b1000011), + .TX_MARGIN_LOW_3(7'b1000010), + .TX_MARGIN_LOW_4(7'b1000000), + .TX_PREDRIVER_MODE(1'b0), + .TX_QPI_STATUS_EN(1'b0), + .TX_RXDETECT_CFG(14'h0064), + .TX_RXDETECT_REF(3'b011), + .TX_XCLK_SEL("TXUSR"), + .UCODEER_CLR(1'b0)) + \gtx_channel.gtxe2_channel_i + (.CFGRESET(1'b0), + .CLKRSVD({1'b0,1'b0,1'b0,USER_OOBCLK}), + .CPLLFBCLKLOST(\NLW_gtx_channel.gtxe2_channel_i_CPLLFBCLKLOST_UNCONNECTED ), + .CPLLLOCK(QRST_CPLLLOCK), + .CPLLLOCKDETCLK(1'b0), + .CPLLLOCKEN(1'b1), + .CPLLPD(CPLLPD0_4), + .CPLLREFCLKLOST(\NLW_gtx_channel.gtxe2_channel_i_CPLLREFCLKLOST_UNCONNECTED ), + .CPLLREFCLKSEL({1'b0,1'b0,1'b1}), + .CPLLRESET(CPLLRESET0), + .DMONITOROUT({\gtx_channel.gtxe2_channel_i_n_177 ,\gtx_channel.gtxe2_channel_i_n_178 ,\gtx_channel.gtxe2_channel_i_n_179 ,\gtx_channel.gtxe2_channel_i_n_180 ,\gtx_channel.gtxe2_channel_i_n_181 ,\gtx_channel.gtxe2_channel_i_n_182 ,\gtx_channel.gtxe2_channel_i_n_183 ,\gtx_channel.gtxe2_channel_i_n_184 }), + .DRPADDR({1'b0,DRPADDR}), + .DRPCLK(pipe_dclk_in), + .DRPDI(DRPDI), + .DRPDO(DRP_DO), + .DRPEN(\cplllock_reg1_reg[2] ), + .DRPRDY(DRP_RDY), + .DRPWE(\cplllock_reg1_reg[2]_0 ), + .EYESCANDATAERROR(\gtx_channel.gtxe2_channel_i_n_4 ), + .EYESCANMODE(1'b0), + .EYESCANRESET(1'b0), + .EYESCANTRIGGER(1'b0), + .GTGREFCLK(1'b0), + .GTNORTHREFCLK0(1'b0), + .GTNORTHREFCLK1(1'b0), + .GTREFCLK0(sys_clk), + .GTREFCLK1(1'b0), + .GTREFCLKMONITOR(\NLW_gtx_channel.gtxe2_channel_i_GTREFCLKMONITOR_UNCONNECTED ), + .GTRESETSEL(1'b0), + .GTRSVD({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .GTRXRESET(DRP_GTXRESET), + .GTSOUTHREFCLK0(1'b0), + .GTSOUTHREFCLK1(1'b0), + .GTTXRESET(DRP_GTXRESET), + .GTXRXN(pci_exp_rxn), + .GTXRXP(pci_exp_rxp), + .GTXTXN(pci_exp_txn), + .GTXTXP(pci_exp_txp), + .LOOPBACK({1'b0,1'b0,1'b0}), + .PCSRSVDIN({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .PCSRSVDIN2({1'b0,1'b0,1'b0,1'b0,1'b0}), + .PCSRSVDOUT(\NLW_gtx_channel.gtxe2_channel_i_PCSRSVDOUT_UNCONNECTED [15:0]), + .PHYSTATUS(RATE_PHYSTATUS), + .PMARSVDIN({1'b0,1'b0,1'b0,1'b0,1'b0}), + .PMARSVDIN2({1'b0,1'b0,1'b0,1'b0,1'b0}), + .QPLLCLK(QPLL_QPLLOUTCLK), + .QPLLREFCLK(QPLL_QPLLOUTREFCLK), + .RESETOVRD(1'b0), + .RX8B10BEN(rxchbonden_2), + .RXBUFRESET(1'b0), + .RXBUFSTATUS({\gtx_channel.gtxe2_channel_i_n_82 ,\gtx_channel.gtxe2_channel_i_n_83 ,\gtx_channel.gtxe2_channel_i_n_84 }), + .RXBYTEISALIGNED(\gtx_channel.gtxe2_channel_i_n_9 ), + .RXBYTEREALIGN(\gtx_channel.gtxe2_channel_i_n_10 ), + .RXCDRFREQRESET(1'b0), + .RXCDRHOLD(1'b0), + .RXCDRLOCK(gt_rxcdrlock_2), + .RXCDROVRDEN(1'b0), + .RXCDRRESET(1'b0), + .RXCDRRESETRSV(1'b0), + .RXCHANBONDSEQ(\NLW_gtx_channel.gtxe2_channel_i_RXCHANBONDSEQ_UNCONNECTED ), + .RXCHANISALIGNED(PIPE_RXCHANISALIGNED), + .RXCHANREALIGN(\NLW_gtx_channel.gtxe2_channel_i_RXCHANREALIGN_UNCONNECTED ), + .RXCHARISCOMMA({\NLW_gtx_channel.gtxe2_channel_i_RXCHARISCOMMA_UNCONNECTED [7:4],\gtx_channel.gtxe2_channel_i_n_189 ,\gtx_channel.gtxe2_channel_i_n_190 ,\gtx_channel.gtxe2_channel_i_n_191 ,\gtx_channel.gtxe2_channel_i_n_192 }), + .RXCHARISK({\NLW_gtx_channel.gtxe2_channel_i_RXCHARISK_UNCONNECTED [7:4],\gtx_channel.gtxe2_channel_i_n_197 ,\gtx_channel.gtxe2_channel_i_n_198 ,gt_rx_data_k_wire_filter}), + .RXCHBONDEN(rxchbonden_2), + .RXCHBONDI(RXCHBONDO), + .RXCHBONDLEVEL({1'b0,1'b0,1'b0}), + .RXCHBONDMASTER(1'b0), + .RXCHBONDO({\gtx_channel.gtxe2_channel_i_n_91 ,\gtx_channel.gtxe2_channel_i_n_92 ,\gtx_channel.gtxe2_channel_i_n_93 ,\gtx_channel.gtxe2_channel_i_n_94 ,\gtx_channel.gtxe2_channel_i_n_95 }), + .RXCHBONDSLAVE(rxchbonden_2), + .RXCLKCORCNT(\NLW_gtx_channel.gtxe2_channel_i_RXCLKCORCNT_UNCONNECTED [1:0]), + .RXCOMINITDET(\NLW_gtx_channel.gtxe2_channel_i_RXCOMINITDET_UNCONNECTED ), + .RXCOMMADET(\gtx_channel.gtxe2_channel_i_n_16 ), + .RXCOMMADETEN(1'b1), + .RXCOMSASDET(\NLW_gtx_channel.gtxe2_channel_i_RXCOMSASDET_UNCONNECTED ), + .RXCOMWAKEDET(\NLW_gtx_channel.gtxe2_channel_i_RXCOMWAKEDET_UNCONNECTED ), + .RXDATA({\NLW_gtx_channel.gtxe2_channel_i_RXDATA_UNCONNECTED [63:32],\gtx_channel.gtxe2_channel_i_n_138 ,\gtx_channel.gtxe2_channel_i_n_139 ,\gtx_channel.gtxe2_channel_i_n_140 ,\gtx_channel.gtxe2_channel_i_n_141 ,\gtx_channel.gtxe2_channel_i_n_142 ,\gtx_channel.gtxe2_channel_i_n_143 ,\gtx_channel.gtxe2_channel_i_n_144 ,\gtx_channel.gtxe2_channel_i_n_145 ,\gtx_channel.gtxe2_channel_i_n_146 ,\gtx_channel.gtxe2_channel_i_n_147 ,\gtx_channel.gtxe2_channel_i_n_148 ,\gtx_channel.gtxe2_channel_i_n_149 ,\gtx_channel.gtxe2_channel_i_n_150 ,\gtx_channel.gtxe2_channel_i_n_151 ,\gtx_channel.gtxe2_channel_i_n_152 ,\gtx_channel.gtxe2_channel_i_n_153 ,gt_rx_data_wire_filter}), + .RXDATAVALID(\NLW_gtx_channel.gtxe2_channel_i_RXDATAVALID_UNCONNECTED ), + .RXDDIEN(1'b0), + .RXDFEAGCHOLD(\cplllock_reg1_reg[2]_1 ), + .RXDFEAGCOVRDEN(1'b0), + .RXDFECM1EN(1'b0), + .RXDFELFHOLD(1'b0), + .RXDFELFOVRDEN(1'b1), + .RXDFELPMRESET(1'b0), + .RXDFETAP2HOLD(1'b0), + .RXDFETAP2OVRDEN(1'b0), + .RXDFETAP3HOLD(1'b0), + .RXDFETAP3OVRDEN(1'b0), + .RXDFETAP4HOLD(1'b0), + .RXDFETAP4OVRDEN(1'b0), + .RXDFETAP5HOLD(1'b0), + .RXDFETAP5OVRDEN(1'b0), + .RXDFEUTHOLD(1'b0), + .RXDFEUTOVRDEN(1'b0), + .RXDFEVPHOLD(1'b0), + .RXDFEVPOVRDEN(1'b0), + .RXDFEVSEN(1'b0), + .RXDFEXYDEN(1'b0), + .RXDFEXYDHOLD(1'b0), + .RXDFEXYDOVRDEN(1'b0), + .RXDISPERR({\gtx_channel.gtxe2_channel_i_n_201 ,\gtx_channel.gtxe2_channel_i_n_202 ,\gtx_channel.gtxe2_channel_i_n_203 ,\gtx_channel.gtxe2_channel_i_n_204 ,\gtx_channel.gtxe2_channel_i_n_205 ,\gtx_channel.gtxe2_channel_i_n_206 ,\gtx_channel.gtxe2_channel_i_n_207 ,\gtx_channel.gtxe2_channel_i_n_208 }), + .RXDLYBYPASS(1'b1), + .RXDLYEN(1'b0), + .RXDLYOVRDEN(1'b0), + .RXDLYSRESET(1'b0), + .RXDLYSRESETDONE(pipe_dclk_in_0), + .RXELECIDLE(gt_rx_elec_idle_wire_filter), + .RXELECIDLEMODE({1'b0,1'b0}), + .RXGEARBOXSLIP(1'b0), + .RXHEADER(\NLW_gtx_channel.gtxe2_channel_i_RXHEADER_UNCONNECTED [2:0]), + .RXHEADERVALID(\NLW_gtx_channel.gtxe2_channel_i_RXHEADERVALID_UNCONNECTED ), + .RXLPMEN(rxchbonden_2), + .RXLPMHFHOLD(1'b0), + .RXLPMHFOVRDEN(1'b0), + .RXLPMLFHOLD(1'b0), + .RXLPMLFKLOVRDEN(1'b0), + .RXMCOMMAALIGNEN(rxchbonden_2), + .RXMONITOROUT(\NLW_gtx_channel.gtxe2_channel_i_RXMONITOROUT_UNCONNECTED [6:0]), + .RXMONITORSEL({1'b0,1'b0}), + .RXNOTINTABLE({\gtx_channel.gtxe2_channel_i_n_209 ,\gtx_channel.gtxe2_channel_i_n_210 ,\gtx_channel.gtxe2_channel_i_n_211 ,\gtx_channel.gtxe2_channel_i_n_212 ,\gtx_channel.gtxe2_channel_i_n_213 ,\gtx_channel.gtxe2_channel_i_n_214 ,\gtx_channel.gtxe2_channel_i_n_215 ,\gtx_channel.gtxe2_channel_i_n_216 }), + .RXOOBRESET(1'b0), + .RXOSHOLD(1'b0), + .RXOSOVRDEN(1'b0), + .RXOUTCLK(pipe_rxoutclk_out), + .RXOUTCLKFABRIC(\NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKFABRIC_UNCONNECTED ), + .RXOUTCLKPCS(\NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKPCS_UNCONNECTED ), + .RXOUTCLKSEL({1'b0,1'b0,1'b0}), + .RXPCOMMAALIGNEN(rxchbonden_2), + .RXPCSRESET(1'b0), + .RXPD(PIPE_POWERDOWN), + .RXPHALIGN(1'b0), + .RXPHALIGNDONE(pipe_dclk_in_1), + .RXPHALIGNEN(1'b0), + .RXPHDLYPD(1'b0), + .RXPHDLYRESET(1'b0), + .RXPHMONITOR(\NLW_gtx_channel.gtxe2_channel_i_RXPHMONITOR_UNCONNECTED [4:0]), + .RXPHOVRDEN(1'b0), + .RXPHSLIPMONITOR(\NLW_gtx_channel.gtxe2_channel_i_RXPHSLIPMONITOR_UNCONNECTED [4:0]), + .RXPMARESET(rate_txpmareset_2), + .RXPOLARITY(PIPE_RXPOLARITY), + .RXPRBSCNTRESET(1'b0), + .RXPRBSERR(\gtx_channel.gtxe2_channel_i_n_27 ), + .RXPRBSSEL({1'b0,1'b0,1'b0}), + .RXQPIEN(1'b0), + .RXQPISENN(\NLW_gtx_channel.gtxe2_channel_i_RXQPISENN_UNCONNECTED ), + .RXQPISENP(\NLW_gtx_channel.gtxe2_channel_i_RXQPISENP_UNCONNECTED ), + .RXRATE({1'b0,1'b0,RXRATE}), + .RXRATEDONE(RATE_RXRATEDONE), + .RXRESETDONE(USER_RXRESETDONE), + .RXSLIDE(1'b0), + .RXSTARTOFSEQ(\NLW_gtx_channel.gtxe2_channel_i_RXSTARTOFSEQ_UNCONNECTED ), + .RXSTATUS(pipe_dclk_in_5), + .RXSYSCLKSEL({1'b0,RXSYSCLKSEL}), + .RXUSERRDY(rst_userrdy), + .RXUSRCLK(pipe_rxusrclk_in), + .RXUSRCLK2(pipe_rxusrclk_in), + .RXVALID(gt_rxvalid_2), + .SETERRSTATUS(1'b0), + .TSTIN({1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1}), + .TSTOUT(\NLW_gtx_channel.gtxe2_channel_i_TSTOUT_UNCONNECTED [9:0]), + .TX8B10BBYPASS({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .TX8B10BEN(rxchbonden_2), + .TXBUFDIFFCTRL({1'b1,1'b0,1'b0}), + .TXBUFSTATUS(\NLW_gtx_channel.gtxe2_channel_i_TXBUFSTATUS_UNCONNECTED [1:0]), + .TXCHARDISPMODE({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,PIPE_TXCOMPLIANCE}), + .TXCHARDISPVAL({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .TXCHARISK({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,PIPE_TXDATAK}), + .TXCOMFINISH(\NLW_gtx_channel.gtxe2_channel_i_TXCOMFINISH_UNCONNECTED ), + .TXCOMINIT(1'b0), + .TXCOMSAS(1'b0), + .TXCOMWAKE(1'b0), + .TXDATA({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,PIPE_TXDATA}), + .TXDEEMPH(pipe_tx_deemph_gt), + .TXDETECTRX(pipe_tx_rcvr_det_gt), + .TXDIFFCTRL({1'b1,1'b1,1'b0,1'b0}), + .TXDIFFPD(1'b0), + .TXDLYBYPASS(1'b0), + .TXDLYEN(1'b0), + .TXDLYHOLD(1'b0), + .TXDLYOVRDEN(1'b0), + .TXDLYSRESET(SYNC_TXDLYSRESET), + .TXDLYSRESETDONE(pipe_dclk_in_2), + .TXDLYUPDOWN(1'b0), + .TXELECIDLE(PIPE_TXELECIDLE), + .TXGEARBOXREADY(\NLW_gtx_channel.gtxe2_channel_i_TXGEARBOXREADY_UNCONNECTED ), + .TXHEADER({1'b0,1'b0,1'b0}), + .TXINHIBIT(1'b0), + .TXMAINCURSOR(TXMAINCURSOR), + .TXMARGIN(\cplllock_reg1_reg[2]_2 ), + .TXOUTCLK(\gtx_channel.gtxe2_channel_i_n_37 ), + .TXOUTCLKFABRIC(\NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKFABRIC_UNCONNECTED ), + .TXOUTCLKPCS(\NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKPCS_UNCONNECTED ), + .TXOUTCLKSEL({1'b0,1'b0,1'b0}), + .TXPCSRESET(1'b0), + .TXPD(PIPE_POWERDOWN), + .TXPDELECIDLEMODE(1'b0), + .TXPHALIGN(SYNC_TXPHALIGN), + .TXPHALIGNDONE(pipe_dclk_in_3), + .TXPHALIGNEN(1'b1), + .TXPHDLYPD(1'b0), + .TXPHDLYRESET(1'b0), + .TXPHDLYTSTCLK(1'b0), + .TXPHINIT(SYNC_TXPHINIT), + .TXPHINITDONE(pipe_dclk_in_4), + .TXPHOVRDEN(1'b0), + .TXPISOPD(1'b0), + .TXPMARESET(rate_txpmareset_2), + .TXPOLARITY(1'b0), + .TXPOSTCURSOR(TXPOSTCURSOR), + .TXPOSTCURSORINV(1'b0), + .TXPRBSFORCEERR(1'b0), + .TXPRBSSEL({1'b0,1'b0,1'b0}), + .TXPRECURSOR(TXPRECURSOR), + .TXPRECURSORINV(1'b0), + .TXQPIBIASEN(1'b0), + .TXQPISENN(\NLW_gtx_channel.gtxe2_channel_i_TXQPISENN_UNCONNECTED ), + .TXQPISENP(\NLW_gtx_channel.gtxe2_channel_i_TXQPISENP_UNCONNECTED ), + .TXQPISTRONGPDOWN(1'b0), + .TXQPIWEAKPUP(1'b0), + .TXRATE({1'b0,1'b0,RXRATE}), + .TXRATEDONE(RATE_TXRATEDONE), + .TXRESETDONE(USER_TXRESETDONE), + .TXSEQUENCE({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .TXSTARTSEQ(1'b0), + .TXSWING(1'b0), + .TXSYSCLKSEL({1'b0,RXSYSCLKSEL}), + .TXUSERRDY(rst_userrdy), + .TXUSRCLK(pipe_pclk_in), + .TXUSRCLK2(pipe_pclk_in)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_gt_wrapper" *) +module pcie_7x_0_pcie_7x_0_gt_wrapper_49 + (cpllpd_2, + QRST_CPLLLOCK, + DRP_RDY, + pci_exp_txn, + pci_exp_txp, + RATE_PHYSTATUS, + gt_rxcdrlock_3, + PIPE_RXCHANISALIGNED, + pipe_dclk_in_0, + gt_rx_elec_idle_wire_filter, + pipe_rxoutclk_out, + pipe_dclk_in_1, + RATE_RXRATEDONE, + USER_RXRESETDONE, + gt_rxvalid_3, + pipe_dclk_in_2, + pipe_dclk_in_3, + pipe_dclk_in_4, + RATE_TXRATEDONE, + USER_TXRESETDONE, + DRP_DO, + pipe_dclk_in_5, + gt_rx_data_wire_filter, + gt_rx_data_k_wire_filter, + gt_cpllpdrefclk, + CPLLPD0_5, + pipe_dclk_in, + \cplllock_reg1_reg[3] , + \cplllock_reg1_reg[3]_0 , + sys_clk, + DRP_GTXRESET, + pci_exp_rxn, + pci_exp_rxp, + QPLL_QPLLOUTCLK, + QPLL_QPLLOUTREFCLK, + rxchbonden_3, + \cplllock_reg1_reg[3]_1 , + rate_txpmareset_3, + PIPE_RXPOLARITY, + rst_userrdy, + pipe_rxusrclk_in, + pipe_tx_deemph_gt, + pipe_tx_rcvr_det_gt, + SYNC_TXDLYSRESET, + PIPE_TXELECIDLE, + SYNC_TXPHALIGN, + SYNC_TXPHINIT, + pipe_pclk_in, + DRPDI, + PIPE_POWERDOWN, + RXSYSCLKSEL, + RXRATE, + \cplllock_reg1_reg[3]_2 , + USER_OOBCLK, + RXCHBONDO, + TXPOSTCURSOR, + TXPRECURSOR, + PIPE_TXDATA, + TXMAINCURSOR, + PIPE_TXCOMPLIANCE, + PIPE_TXDATAK, + DRPADDR, + rate_cpllreset_3, + RST_CPLLRESET); + output cpllpd_2; + output [0:0]QRST_CPLLLOCK; + output DRP_RDY; + output [0:0]pci_exp_txn; + output [0:0]pci_exp_txp; + output RATE_PHYSTATUS; + output gt_rxcdrlock_3; + output [0:0]PIPE_RXCHANISALIGNED; + output pipe_dclk_in_0; + output [0:0]gt_rx_elec_idle_wire_filter; + output [0:0]pipe_rxoutclk_out; + output pipe_dclk_in_1; + output RATE_RXRATEDONE; + output USER_RXRESETDONE; + output gt_rxvalid_3; + output pipe_dclk_in_2; + output pipe_dclk_in_3; + output pipe_dclk_in_4; + output RATE_TXRATEDONE; + output USER_TXRESETDONE; + output [15:0]DRP_DO; + output [2:0]pipe_dclk_in_5; + output [15:0]gt_rx_data_wire_filter; + output [1:0]gt_rx_data_k_wire_filter; + input gt_cpllpdrefclk; + input CPLLPD0_5; + input pipe_dclk_in; + input \cplllock_reg1_reg[3] ; + input \cplllock_reg1_reg[3]_0 ; + input sys_clk; + input DRP_GTXRESET; + input [0:0]pci_exp_rxn; + input [0:0]pci_exp_rxp; + input QPLL_QPLLOUTCLK; + input QPLL_QPLLOUTREFCLK; + input rxchbonden_3; + input \cplllock_reg1_reg[3]_1 ; + input rate_txpmareset_3; + input [0:0]PIPE_RXPOLARITY; + input rst_userrdy; + input pipe_rxusrclk_in; + input pipe_tx_deemph_gt; + input pipe_tx_rcvr_det_gt; + input SYNC_TXDLYSRESET; + input [0:0]PIPE_TXELECIDLE; + input SYNC_TXPHALIGN; + input SYNC_TXPHINIT; + input pipe_pclk_in; + input [15:0]DRPDI; + input [1:0]PIPE_POWERDOWN; + input [0:0]RXSYSCLKSEL; + input [0:0]RXRATE; + input [2:0]\cplllock_reg1_reg[3]_2 ; + input USER_OOBCLK; + input [4:0]RXCHBONDO; + input [4:0]TXPOSTCURSOR; + input [4:0]TXPRECURSOR; + input [15:0]PIPE_TXDATA; + input [6:0]TXMAINCURSOR; + input [0:0]PIPE_TXCOMPLIANCE; + input [1:0]PIPE_TXDATAK; + input [7:0]DRPADDR; + input rate_cpllreset_3; + input RST_CPLLRESET; + + wire CPLLPD0_5; + wire CPLLRESET0; + wire [7:0]DRPADDR; + wire [15:0]DRPDI; + wire [15:0]DRP_DO; + wire DRP_GTXRESET; + wire DRP_RDY; + wire [1:0]PIPE_POWERDOWN; + wire [0:0]PIPE_RXCHANISALIGNED; + wire [0:0]PIPE_RXPOLARITY; + wire [0:0]PIPE_TXCOMPLIANCE; + wire [15:0]PIPE_TXDATA; + wire [1:0]PIPE_TXDATAK; + wire [0:0]PIPE_TXELECIDLE; + wire QPLL_QPLLOUTCLK; + wire QPLL_QPLLOUTREFCLK; + wire [0:0]QRST_CPLLLOCK; + wire RATE_PHYSTATUS; + wire RATE_RXRATEDONE; + wire RATE_TXRATEDONE; + wire RST_CPLLRESET; + wire [4:0]RXCHBONDO; + wire [0:0]RXRATE; + wire [0:0]RXSYSCLKSEL; + wire SYNC_TXDLYSRESET; + wire SYNC_TXPHALIGN; + wire SYNC_TXPHINIT; + wire [6:0]TXMAINCURSOR; + wire [4:0]TXPOSTCURSOR; + wire [4:0]TXPRECURSOR; + wire USER_OOBCLK; + wire USER_RXRESETDONE; + wire USER_TXRESETDONE; + wire \cplllock_reg1_reg[3] ; + wire \cplllock_reg1_reg[3]_0 ; + wire \cplllock_reg1_reg[3]_1 ; + wire [2:0]\cplllock_reg1_reg[3]_2 ; + wire cpllpd_2; + wire gt_cpllpdrefclk; + wire [1:0]gt_rx_data_k_wire_filter; + wire [15:0]gt_rx_data_wire_filter; + wire [0:0]gt_rx_elec_idle_wire_filter; + wire gt_rxcdrlock_3; + wire gt_rxvalid_3; + wire \gtx_channel.gtxe2_channel_i_n_10 ; + wire \gtx_channel.gtxe2_channel_i_n_138 ; + wire \gtx_channel.gtxe2_channel_i_n_139 ; + wire \gtx_channel.gtxe2_channel_i_n_140 ; + wire \gtx_channel.gtxe2_channel_i_n_141 ; + wire \gtx_channel.gtxe2_channel_i_n_142 ; + wire \gtx_channel.gtxe2_channel_i_n_143 ; + wire \gtx_channel.gtxe2_channel_i_n_144 ; + wire \gtx_channel.gtxe2_channel_i_n_145 ; + wire \gtx_channel.gtxe2_channel_i_n_146 ; + wire \gtx_channel.gtxe2_channel_i_n_147 ; + wire \gtx_channel.gtxe2_channel_i_n_148 ; + wire \gtx_channel.gtxe2_channel_i_n_149 ; + wire \gtx_channel.gtxe2_channel_i_n_150 ; + wire \gtx_channel.gtxe2_channel_i_n_151 ; + wire \gtx_channel.gtxe2_channel_i_n_152 ; + wire \gtx_channel.gtxe2_channel_i_n_153 ; + wire \gtx_channel.gtxe2_channel_i_n_16 ; + wire \gtx_channel.gtxe2_channel_i_n_177 ; + wire \gtx_channel.gtxe2_channel_i_n_178 ; + wire \gtx_channel.gtxe2_channel_i_n_179 ; + wire \gtx_channel.gtxe2_channel_i_n_180 ; + wire \gtx_channel.gtxe2_channel_i_n_181 ; + wire \gtx_channel.gtxe2_channel_i_n_182 ; + wire \gtx_channel.gtxe2_channel_i_n_183 ; + wire \gtx_channel.gtxe2_channel_i_n_184 ; + wire \gtx_channel.gtxe2_channel_i_n_189 ; + wire \gtx_channel.gtxe2_channel_i_n_190 ; + wire \gtx_channel.gtxe2_channel_i_n_191 ; + wire \gtx_channel.gtxe2_channel_i_n_192 ; + wire \gtx_channel.gtxe2_channel_i_n_197 ; + wire \gtx_channel.gtxe2_channel_i_n_198 ; + wire \gtx_channel.gtxe2_channel_i_n_201 ; + wire \gtx_channel.gtxe2_channel_i_n_202 ; + wire \gtx_channel.gtxe2_channel_i_n_203 ; + wire \gtx_channel.gtxe2_channel_i_n_204 ; + wire \gtx_channel.gtxe2_channel_i_n_205 ; + wire \gtx_channel.gtxe2_channel_i_n_206 ; + wire \gtx_channel.gtxe2_channel_i_n_207 ; + wire \gtx_channel.gtxe2_channel_i_n_208 ; + wire \gtx_channel.gtxe2_channel_i_n_209 ; + wire \gtx_channel.gtxe2_channel_i_n_210 ; + wire \gtx_channel.gtxe2_channel_i_n_211 ; + wire \gtx_channel.gtxe2_channel_i_n_212 ; + wire \gtx_channel.gtxe2_channel_i_n_213 ; + wire \gtx_channel.gtxe2_channel_i_n_214 ; + wire \gtx_channel.gtxe2_channel_i_n_215 ; + wire \gtx_channel.gtxe2_channel_i_n_216 ; + wire \gtx_channel.gtxe2_channel_i_n_27 ; + wire \gtx_channel.gtxe2_channel_i_n_37 ; + wire \gtx_channel.gtxe2_channel_i_n_4 ; + wire \gtx_channel.gtxe2_channel_i_n_82 ; + wire \gtx_channel.gtxe2_channel_i_n_83 ; + wire \gtx_channel.gtxe2_channel_i_n_84 ; + wire \gtx_channel.gtxe2_channel_i_n_9 ; + wire \gtx_channel.gtxe2_channel_i_n_91 ; + wire \gtx_channel.gtxe2_channel_i_n_92 ; + wire \gtx_channel.gtxe2_channel_i_n_93 ; + wire \gtx_channel.gtxe2_channel_i_n_94 ; + wire \gtx_channel.gtxe2_channel_i_n_95 ; + wire [0:0]pci_exp_rxn; + wire [0:0]pci_exp_rxp; + wire [0:0]pci_exp_txn; + wire [0:0]pci_exp_txp; + wire pipe_dclk_in; + wire pipe_dclk_in_0; + wire pipe_dclk_in_1; + wire pipe_dclk_in_2; + wire pipe_dclk_in_3; + wire pipe_dclk_in_4; + wire [2:0]pipe_dclk_in_5; + wire pipe_pclk_in; + wire [0:0]pipe_rxoutclk_out; + wire pipe_rxusrclk_in; + wire pipe_tx_deemph_gt; + wire pipe_tx_rcvr_det_gt; + wire rate_cpllreset_3; + wire rate_txpmareset_3; + wire rst_userrdy; + wire rxchbonden_3; + wire sys_clk; + wire \NLW_gtx_channel.gtxe2_channel_i_CPLLFBCLKLOST_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_CPLLREFCLKLOST_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_GTREFCLKMONITOR_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXCHANBONDSEQ_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXCHANREALIGN_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXCOMINITDET_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXCOMSASDET_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXCOMWAKEDET_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXDATAVALID_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXHEADERVALID_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKFABRIC_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKPCS_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXQPISENN_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXQPISENP_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_RXSTARTOFSEQ_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_TXCOMFINISH_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_TXGEARBOXREADY_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKFABRIC_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKPCS_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_TXQPISENN_UNCONNECTED ; + wire \NLW_gtx_channel.gtxe2_channel_i_TXQPISENP_UNCONNECTED ; + wire [15:0]\NLW_gtx_channel.gtxe2_channel_i_PCSRSVDOUT_UNCONNECTED ; + wire [7:4]\NLW_gtx_channel.gtxe2_channel_i_RXCHARISCOMMA_UNCONNECTED ; + wire [7:4]\NLW_gtx_channel.gtxe2_channel_i_RXCHARISK_UNCONNECTED ; + wire [1:0]\NLW_gtx_channel.gtxe2_channel_i_RXCLKCORCNT_UNCONNECTED ; + wire [63:32]\NLW_gtx_channel.gtxe2_channel_i_RXDATA_UNCONNECTED ; + wire [2:0]\NLW_gtx_channel.gtxe2_channel_i_RXHEADER_UNCONNECTED ; + wire [6:0]\NLW_gtx_channel.gtxe2_channel_i_RXMONITOROUT_UNCONNECTED ; + wire [4:0]\NLW_gtx_channel.gtxe2_channel_i_RXPHMONITOR_UNCONNECTED ; + wire [4:0]\NLW_gtx_channel.gtxe2_channel_i_RXPHSLIPMONITOR_UNCONNECTED ; + wire [9:0]\NLW_gtx_channel.gtxe2_channel_i_TSTOUT_UNCONNECTED ; + wire [1:0]\NLW_gtx_channel.gtxe2_channel_i_TXBUFSTATUS_UNCONNECTED ; + + pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd cpllPDInst + (.CPLLRESET0(CPLLRESET0), + .RST_CPLLRESET(RST_CPLLRESET), + .cpllpd_2(cpllpd_2), + .gt_cpllpdrefclk(gt_cpllpdrefclk), + .rate_cpllreset_3(rate_cpllreset_3)); + (* BOX_TYPE = "PRIMITIVE" *) + GTXE2_CHANNEL #( + .ALIGN_COMMA_DOUBLE("FALSE"), + .ALIGN_COMMA_ENABLE(10'b1111111111), + .ALIGN_COMMA_WORD(1), + .ALIGN_MCOMMA_DET("TRUE"), + .ALIGN_MCOMMA_VALUE(10'b1010000011), + .ALIGN_PCOMMA_DET("TRUE"), + .ALIGN_PCOMMA_VALUE(10'b0101111100), + .CBCC_DATA_SOURCE_SEL("DECODED"), + .CHAN_BOND_KEEP_ALIGN("TRUE"), + .CHAN_BOND_MAX_SKEW(7), + .CHAN_BOND_SEQ_1_1(10'b0001001010), + .CHAN_BOND_SEQ_1_2(10'b0001001010), + .CHAN_BOND_SEQ_1_3(10'b0001001010), + .CHAN_BOND_SEQ_1_4(10'b0110111100), + .CHAN_BOND_SEQ_1_ENABLE(4'b1111), + .CHAN_BOND_SEQ_2_1(10'b0001000101), + .CHAN_BOND_SEQ_2_2(10'b0001000101), + .CHAN_BOND_SEQ_2_3(10'b0001000101), + .CHAN_BOND_SEQ_2_4(10'b0110111100), + .CHAN_BOND_SEQ_2_ENABLE(4'b1111), + .CHAN_BOND_SEQ_2_USE("TRUE"), + .CHAN_BOND_SEQ_LEN(4), + .CLK_CORRECT_USE("TRUE"), + .CLK_COR_KEEP_IDLE("TRUE"), + .CLK_COR_MAX_LAT(20), + .CLK_COR_MIN_LAT(18), + .CLK_COR_PRECEDENCE("TRUE"), + .CLK_COR_REPEAT_WAIT(0), + .CLK_COR_SEQ_1_1(10'b0100011100), + .CLK_COR_SEQ_1_2(10'b0000000000), + .CLK_COR_SEQ_1_3(10'b0000000000), + .CLK_COR_SEQ_1_4(10'b0000000000), + .CLK_COR_SEQ_1_ENABLE(4'b1111), + .CLK_COR_SEQ_2_1(10'b0000000000), + .CLK_COR_SEQ_2_2(10'b0000000000), + .CLK_COR_SEQ_2_3(10'b0000000000), + .CLK_COR_SEQ_2_4(10'b0000000000), + .CLK_COR_SEQ_2_ENABLE(4'b0000), + .CLK_COR_SEQ_2_USE("FALSE"), + .CLK_COR_SEQ_LEN(1), + .CPLL_CFG(24'hA407CC), + .CPLL_FBDIV(5), + .CPLL_FBDIV_45(5), + .CPLL_INIT_CFG(24'h00001E), + .CPLL_LOCK_CFG(16'h01E8), + .CPLL_REFCLK_DIV(1), + .DEC_MCOMMA_DETECT("TRUE"), + .DEC_PCOMMA_DETECT("TRUE"), + .DEC_VALID_COMMA_ONLY("FALSE"), + .DMONITOR_CFG(24'h000B01), + .ES_CONTROL(6'b000000), + .ES_ERRDET_EN("FALSE"), + .ES_EYE_SCAN_EN("FALSE"), + .ES_HORZ_OFFSET(12'h000), + .ES_PMA_CFG(10'b0000000000), + .ES_PRESCALE(5'b00000), + .ES_QUALIFIER(80'h00000000000000000000), + .ES_QUAL_MASK(80'h00000000000000000000), + .ES_SDATA_MASK(80'h00000000000000000000), + .ES_VERT_OFFSET(9'b000000000), + .FTS_DESKEW_SEQ_ENABLE(4'b1111), + .FTS_LANE_DESKEW_CFG(4'b1111), + .FTS_LANE_DESKEW_EN("TRUE"), + .GEARBOX_MODE(3'b000), + .IS_CPLLLOCKDETCLK_INVERTED(1'b0), + .IS_DRPCLK_INVERTED(1'b0), + .IS_GTGREFCLK_INVERTED(1'b0), + .IS_RXUSRCLK2_INVERTED(1'b0), + .IS_RXUSRCLK_INVERTED(1'b0), + .IS_TXPHDLYTSTCLK_INVERTED(1'b0), + .IS_TXUSRCLK2_INVERTED(1'b0), + .IS_TXUSRCLK_INVERTED(1'b0), + .OUTREFCLK_SEL_INV(2'b11), + .PCS_PCIE_EN("TRUE"), + .PCS_RSVD_ATTR(48'h0000000001CF), + .PD_TRANS_TIME_FROM_P2(12'h03C), + .PD_TRANS_TIME_NONE_P2(8'h09), + .PD_TRANS_TIME_TO_P2(8'h64), + .PMA_RSV(32'h00018480), + .PMA_RSV2(16'h2050), + .PMA_RSV3(2'b00), + .PMA_RSV4(32'h00000000), + .RXBUFRESET_TIME(5'b00001), + .RXBUF_ADDR_MODE("FULL"), + .RXBUF_EIDLE_HI_CNT(4'b0100), + .RXBUF_EIDLE_LO_CNT(4'b0000), + .RXBUF_EN("TRUE"), + .RXBUF_RESET_ON_CB_CHANGE("TRUE"), + .RXBUF_RESET_ON_COMMAALIGN("FALSE"), + .RXBUF_RESET_ON_EIDLE("TRUE"), + .RXBUF_RESET_ON_RATE_CHANGE("TRUE"), + .RXBUF_THRESH_OVFLW(61), + .RXBUF_THRESH_OVRD("FALSE"), + .RXBUF_THRESH_UNDFLW(4), + .RXCDRFREQRESET_TIME(5'b00001), + .RXCDRPHRESET_TIME(5'b00001), + .RXCDR_CFG(72'h03000023FF10200020), + .RXCDR_FR_RESET_ON_EIDLE(1'b0), + .RXCDR_HOLD_DURING_EIDLE(1'b1), + .RXCDR_LOCK_CFG(6'b010101), + .RXCDR_PH_RESET_ON_EIDLE(1'b0), + .RXDFELPMRESET_TIME(7'b0001111), + .RXDLY_CFG(16'h001F), + .RXDLY_LCFG(9'h030), + .RXDLY_TAP_CFG(16'h0000), + .RXGEARBOX_EN("FALSE"), + .RXISCANRESET_TIME(5'b00001), + .RXLPM_HF_CFG(14'b00000011110000), + .RXLPM_LF_CFG(14'b00000011110000), + .RXOOB_CFG(7'b0000110), + .RXOUT_DIV(2), + .RXPCSRESET_TIME(5'b00001), + .RXPHDLY_CFG(24'h004020), + .RXPH_CFG(24'h000000), + .RXPH_MONITOR_SEL(5'b00000), + .RXPMARESET_TIME(5'b00011), + .RXPRBS_ERR_LOOPBACK(1'b0), + .RXSLIDE_AUTO_WAIT(7), + .RXSLIDE_MODE("PMA"), + .RX_BIAS_CFG(12'b000000000100), + .RX_BUFFER_CFG(6'b000000), + .RX_CLK25_DIV(4), + .RX_CLKMUX_PD(1'b1), + .RX_CM_SEL(2'b11), + .RX_CM_TRIM(3'b010), + .RX_DATA_WIDTH(20), + .RX_DDI_SEL(6'b000000), + .RX_DEBUG_CFG(12'b000000000000), + .RX_DEFER_RESET_BUF_EN("TRUE"), + .RX_DFE_GAIN_CFG(23'h020FEA), + .RX_DFE_H2_CFG(12'b000000000000), + .RX_DFE_H3_CFG(12'b000001000000), + .RX_DFE_H4_CFG(11'b00011110000), + .RX_DFE_H5_CFG(11'b00011100000), + .RX_DFE_KL_CFG(13'b0000011111110), + .RX_DFE_KL_CFG2(32'h3290D86C), + .RX_DFE_LPM_CFG(16'h0954), + .RX_DFE_LPM_HOLD_DURING_EIDLE(1'b1), + .RX_DFE_UT_CFG(17'b10001111000000000), + .RX_DFE_VP_CFG(17'b00011111100000011), + .RX_DFE_XYD_CFG(13'b0000000000000), + .RX_DISPERR_SEQ_MATCH("TRUE"), + .RX_INT_DATAWIDTH(0), + .RX_OS_CFG(13'b0000010000000), + .RX_SIG_VALID_DLY(4), + .RX_XCLK_SEL("RXREC"), + .SAS_MAX_COM(64), + .SAS_MIN_COM(36), + .SATA_BURST_SEQ_LEN(4'b1111), + .SATA_BURST_VAL(3'b100), + .SATA_CPLL_CFG("VCO_3000MHZ"), + .SATA_EIDLE_VAL(3'b100), + .SATA_MAX_BURST(8), + .SATA_MAX_INIT(21), + .SATA_MAX_WAKE(7), + .SATA_MIN_BURST(4), + .SATA_MIN_INIT(12), + .SATA_MIN_WAKE(4), + .SHOW_REALIGN_COMMA("FALSE"), + .SIM_CPLLREFCLK_SEL(3'b001), + .SIM_RECEIVER_DETECT_PASS("TRUE"), + .SIM_RESET_SPEEDUP("FALSE"), + .SIM_TX_EIDLE_DRIVE_LEVEL("1"), + .SIM_VERSION("3.0"), + .TERM_RCAL_CFG(5'b10000), + .TERM_RCAL_OVRD(1'b0), + .TRANS_TIME_RATE(8'h0E), + .TST_RSV(32'h00000000), + .TXBUF_EN("FALSE"), + .TXBUF_RESET_ON_RATE_CHANGE("TRUE"), + .TXDLY_CFG(16'h001F), + .TXDLY_LCFG(9'h030), + .TXDLY_TAP_CFG(16'h0000), + .TXGEARBOX_EN("FALSE"), + .TXOUT_DIV(2), + .TXPCSRESET_TIME(5'b00001), + .TXPHDLY_CFG(24'h084020), + .TXPH_CFG(16'h0780), + .TXPH_MONITOR_SEL(5'b00000), + .TXPMARESET_TIME(5'b00011), + .TX_CLK25_DIV(4), + .TX_CLKMUX_PD(1'b1), + .TX_DATA_WIDTH(20), + .TX_DEEMPH0(5'b10100), + .TX_DEEMPH1(5'b01011), + .TX_DRIVE_MODE("PIPE"), + .TX_EIDLE_ASSERT_DELAY(3'b010), + .TX_EIDLE_DEASSERT_DELAY(3'b100), + .TX_INT_DATAWIDTH(0), + .TX_LOOPBACK_DRIVE_HIZ("FALSE"), + .TX_MAINCURSOR_SEL(1'b0), + .TX_MARGIN_FULL_0(7'b1001111), + .TX_MARGIN_FULL_1(7'b1001110), + .TX_MARGIN_FULL_2(7'b1001101), + .TX_MARGIN_FULL_3(7'b1001100), + .TX_MARGIN_FULL_4(7'b1000011), + .TX_MARGIN_LOW_0(7'b1000101), + .TX_MARGIN_LOW_1(7'b1000110), + .TX_MARGIN_LOW_2(7'b1000011), + .TX_MARGIN_LOW_3(7'b1000010), + .TX_MARGIN_LOW_4(7'b1000000), + .TX_PREDRIVER_MODE(1'b0), + .TX_QPI_STATUS_EN(1'b0), + .TX_RXDETECT_CFG(14'h0064), + .TX_RXDETECT_REF(3'b011), + .TX_XCLK_SEL("TXUSR"), + .UCODEER_CLR(1'b0)) + \gtx_channel.gtxe2_channel_i + (.CFGRESET(1'b0), + .CLKRSVD({1'b0,1'b0,1'b0,USER_OOBCLK}), + .CPLLFBCLKLOST(\NLW_gtx_channel.gtxe2_channel_i_CPLLFBCLKLOST_UNCONNECTED ), + .CPLLLOCK(QRST_CPLLLOCK), + .CPLLLOCKDETCLK(1'b0), + .CPLLLOCKEN(1'b1), + .CPLLPD(CPLLPD0_5), + .CPLLREFCLKLOST(\NLW_gtx_channel.gtxe2_channel_i_CPLLREFCLKLOST_UNCONNECTED ), + .CPLLREFCLKSEL({1'b0,1'b0,1'b1}), + .CPLLRESET(CPLLRESET0), + .DMONITOROUT({\gtx_channel.gtxe2_channel_i_n_177 ,\gtx_channel.gtxe2_channel_i_n_178 ,\gtx_channel.gtxe2_channel_i_n_179 ,\gtx_channel.gtxe2_channel_i_n_180 ,\gtx_channel.gtxe2_channel_i_n_181 ,\gtx_channel.gtxe2_channel_i_n_182 ,\gtx_channel.gtxe2_channel_i_n_183 ,\gtx_channel.gtxe2_channel_i_n_184 }), + .DRPADDR({1'b0,DRPADDR}), + .DRPCLK(pipe_dclk_in), + .DRPDI(DRPDI), + .DRPDO(DRP_DO), + .DRPEN(\cplllock_reg1_reg[3] ), + .DRPRDY(DRP_RDY), + .DRPWE(\cplllock_reg1_reg[3]_0 ), + .EYESCANDATAERROR(\gtx_channel.gtxe2_channel_i_n_4 ), + .EYESCANMODE(1'b0), + .EYESCANRESET(1'b0), + .EYESCANTRIGGER(1'b0), + .GTGREFCLK(1'b0), + .GTNORTHREFCLK0(1'b0), + .GTNORTHREFCLK1(1'b0), + .GTREFCLK0(sys_clk), + .GTREFCLK1(1'b0), + .GTREFCLKMONITOR(\NLW_gtx_channel.gtxe2_channel_i_GTREFCLKMONITOR_UNCONNECTED ), + .GTRESETSEL(1'b0), + .GTRSVD({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .GTRXRESET(DRP_GTXRESET), + .GTSOUTHREFCLK0(1'b0), + .GTSOUTHREFCLK1(1'b0), + .GTTXRESET(DRP_GTXRESET), + .GTXRXN(pci_exp_rxn), + .GTXRXP(pci_exp_rxp), + .GTXTXN(pci_exp_txn), + .GTXTXP(pci_exp_txp), + .LOOPBACK({1'b0,1'b0,1'b0}), + .PCSRSVDIN({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .PCSRSVDIN2({1'b0,1'b0,1'b0,1'b0,1'b0}), + .PCSRSVDOUT(\NLW_gtx_channel.gtxe2_channel_i_PCSRSVDOUT_UNCONNECTED [15:0]), + .PHYSTATUS(RATE_PHYSTATUS), + .PMARSVDIN({1'b0,1'b0,1'b0,1'b0,1'b0}), + .PMARSVDIN2({1'b0,1'b0,1'b0,1'b0,1'b0}), + .QPLLCLK(QPLL_QPLLOUTCLK), + .QPLLREFCLK(QPLL_QPLLOUTREFCLK), + .RESETOVRD(1'b0), + .RX8B10BEN(rxchbonden_3), + .RXBUFRESET(1'b0), + .RXBUFSTATUS({\gtx_channel.gtxe2_channel_i_n_82 ,\gtx_channel.gtxe2_channel_i_n_83 ,\gtx_channel.gtxe2_channel_i_n_84 }), + .RXBYTEISALIGNED(\gtx_channel.gtxe2_channel_i_n_9 ), + .RXBYTEREALIGN(\gtx_channel.gtxe2_channel_i_n_10 ), + .RXCDRFREQRESET(1'b0), + .RXCDRHOLD(1'b0), + .RXCDRLOCK(gt_rxcdrlock_3), + .RXCDROVRDEN(1'b0), + .RXCDRRESET(1'b0), + .RXCDRRESETRSV(1'b0), + .RXCHANBONDSEQ(\NLW_gtx_channel.gtxe2_channel_i_RXCHANBONDSEQ_UNCONNECTED ), + .RXCHANISALIGNED(PIPE_RXCHANISALIGNED), + .RXCHANREALIGN(\NLW_gtx_channel.gtxe2_channel_i_RXCHANREALIGN_UNCONNECTED ), + .RXCHARISCOMMA({\NLW_gtx_channel.gtxe2_channel_i_RXCHARISCOMMA_UNCONNECTED [7:4],\gtx_channel.gtxe2_channel_i_n_189 ,\gtx_channel.gtxe2_channel_i_n_190 ,\gtx_channel.gtxe2_channel_i_n_191 ,\gtx_channel.gtxe2_channel_i_n_192 }), + .RXCHARISK({\NLW_gtx_channel.gtxe2_channel_i_RXCHARISK_UNCONNECTED [7:4],\gtx_channel.gtxe2_channel_i_n_197 ,\gtx_channel.gtxe2_channel_i_n_198 ,gt_rx_data_k_wire_filter}), + .RXCHBONDEN(rxchbonden_3), + .RXCHBONDI(RXCHBONDO), + .RXCHBONDLEVEL({1'b0,1'b0,1'b0}), + .RXCHBONDMASTER(1'b0), + .RXCHBONDO({\gtx_channel.gtxe2_channel_i_n_91 ,\gtx_channel.gtxe2_channel_i_n_92 ,\gtx_channel.gtxe2_channel_i_n_93 ,\gtx_channel.gtxe2_channel_i_n_94 ,\gtx_channel.gtxe2_channel_i_n_95 }), + .RXCHBONDSLAVE(rxchbonden_3), + .RXCLKCORCNT(\NLW_gtx_channel.gtxe2_channel_i_RXCLKCORCNT_UNCONNECTED [1:0]), + .RXCOMINITDET(\NLW_gtx_channel.gtxe2_channel_i_RXCOMINITDET_UNCONNECTED ), + .RXCOMMADET(\gtx_channel.gtxe2_channel_i_n_16 ), + .RXCOMMADETEN(1'b1), + .RXCOMSASDET(\NLW_gtx_channel.gtxe2_channel_i_RXCOMSASDET_UNCONNECTED ), + .RXCOMWAKEDET(\NLW_gtx_channel.gtxe2_channel_i_RXCOMWAKEDET_UNCONNECTED ), + .RXDATA({\NLW_gtx_channel.gtxe2_channel_i_RXDATA_UNCONNECTED [63:32],\gtx_channel.gtxe2_channel_i_n_138 ,\gtx_channel.gtxe2_channel_i_n_139 ,\gtx_channel.gtxe2_channel_i_n_140 ,\gtx_channel.gtxe2_channel_i_n_141 ,\gtx_channel.gtxe2_channel_i_n_142 ,\gtx_channel.gtxe2_channel_i_n_143 ,\gtx_channel.gtxe2_channel_i_n_144 ,\gtx_channel.gtxe2_channel_i_n_145 ,\gtx_channel.gtxe2_channel_i_n_146 ,\gtx_channel.gtxe2_channel_i_n_147 ,\gtx_channel.gtxe2_channel_i_n_148 ,\gtx_channel.gtxe2_channel_i_n_149 ,\gtx_channel.gtxe2_channel_i_n_150 ,\gtx_channel.gtxe2_channel_i_n_151 ,\gtx_channel.gtxe2_channel_i_n_152 ,\gtx_channel.gtxe2_channel_i_n_153 ,gt_rx_data_wire_filter}), + .RXDATAVALID(\NLW_gtx_channel.gtxe2_channel_i_RXDATAVALID_UNCONNECTED ), + .RXDDIEN(1'b0), + .RXDFEAGCHOLD(\cplllock_reg1_reg[3]_1 ), + .RXDFEAGCOVRDEN(1'b0), + .RXDFECM1EN(1'b0), + .RXDFELFHOLD(1'b0), + .RXDFELFOVRDEN(1'b1), + .RXDFELPMRESET(1'b0), + .RXDFETAP2HOLD(1'b0), + .RXDFETAP2OVRDEN(1'b0), + .RXDFETAP3HOLD(1'b0), + .RXDFETAP3OVRDEN(1'b0), + .RXDFETAP4HOLD(1'b0), + .RXDFETAP4OVRDEN(1'b0), + .RXDFETAP5HOLD(1'b0), + .RXDFETAP5OVRDEN(1'b0), + .RXDFEUTHOLD(1'b0), + .RXDFEUTOVRDEN(1'b0), + .RXDFEVPHOLD(1'b0), + .RXDFEVPOVRDEN(1'b0), + .RXDFEVSEN(1'b0), + .RXDFEXYDEN(1'b0), + .RXDFEXYDHOLD(1'b0), + .RXDFEXYDOVRDEN(1'b0), + .RXDISPERR({\gtx_channel.gtxe2_channel_i_n_201 ,\gtx_channel.gtxe2_channel_i_n_202 ,\gtx_channel.gtxe2_channel_i_n_203 ,\gtx_channel.gtxe2_channel_i_n_204 ,\gtx_channel.gtxe2_channel_i_n_205 ,\gtx_channel.gtxe2_channel_i_n_206 ,\gtx_channel.gtxe2_channel_i_n_207 ,\gtx_channel.gtxe2_channel_i_n_208 }), + .RXDLYBYPASS(1'b1), + .RXDLYEN(1'b0), + .RXDLYOVRDEN(1'b0), + .RXDLYSRESET(1'b0), + .RXDLYSRESETDONE(pipe_dclk_in_0), + .RXELECIDLE(gt_rx_elec_idle_wire_filter), + .RXELECIDLEMODE({1'b0,1'b0}), + .RXGEARBOXSLIP(1'b0), + .RXHEADER(\NLW_gtx_channel.gtxe2_channel_i_RXHEADER_UNCONNECTED [2:0]), + .RXHEADERVALID(\NLW_gtx_channel.gtxe2_channel_i_RXHEADERVALID_UNCONNECTED ), + .RXLPMEN(rxchbonden_3), + .RXLPMHFHOLD(1'b0), + .RXLPMHFOVRDEN(1'b0), + .RXLPMLFHOLD(1'b0), + .RXLPMLFKLOVRDEN(1'b0), + .RXMCOMMAALIGNEN(rxchbonden_3), + .RXMONITOROUT(\NLW_gtx_channel.gtxe2_channel_i_RXMONITOROUT_UNCONNECTED [6:0]), + .RXMONITORSEL({1'b0,1'b0}), + .RXNOTINTABLE({\gtx_channel.gtxe2_channel_i_n_209 ,\gtx_channel.gtxe2_channel_i_n_210 ,\gtx_channel.gtxe2_channel_i_n_211 ,\gtx_channel.gtxe2_channel_i_n_212 ,\gtx_channel.gtxe2_channel_i_n_213 ,\gtx_channel.gtxe2_channel_i_n_214 ,\gtx_channel.gtxe2_channel_i_n_215 ,\gtx_channel.gtxe2_channel_i_n_216 }), + .RXOOBRESET(1'b0), + .RXOSHOLD(1'b0), + .RXOSOVRDEN(1'b0), + .RXOUTCLK(pipe_rxoutclk_out), + .RXOUTCLKFABRIC(\NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKFABRIC_UNCONNECTED ), + .RXOUTCLKPCS(\NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKPCS_UNCONNECTED ), + .RXOUTCLKSEL({1'b0,1'b0,1'b0}), + .RXPCOMMAALIGNEN(rxchbonden_3), + .RXPCSRESET(1'b0), + .RXPD(PIPE_POWERDOWN), + .RXPHALIGN(1'b0), + .RXPHALIGNDONE(pipe_dclk_in_1), + .RXPHALIGNEN(1'b0), + .RXPHDLYPD(1'b0), + .RXPHDLYRESET(1'b0), + .RXPHMONITOR(\NLW_gtx_channel.gtxe2_channel_i_RXPHMONITOR_UNCONNECTED [4:0]), + .RXPHOVRDEN(1'b0), + .RXPHSLIPMONITOR(\NLW_gtx_channel.gtxe2_channel_i_RXPHSLIPMONITOR_UNCONNECTED [4:0]), + .RXPMARESET(rate_txpmareset_3), + .RXPOLARITY(PIPE_RXPOLARITY), + .RXPRBSCNTRESET(1'b0), + .RXPRBSERR(\gtx_channel.gtxe2_channel_i_n_27 ), + .RXPRBSSEL({1'b0,1'b0,1'b0}), + .RXQPIEN(1'b0), + .RXQPISENN(\NLW_gtx_channel.gtxe2_channel_i_RXQPISENN_UNCONNECTED ), + .RXQPISENP(\NLW_gtx_channel.gtxe2_channel_i_RXQPISENP_UNCONNECTED ), + .RXRATE({1'b0,1'b0,RXRATE}), + .RXRATEDONE(RATE_RXRATEDONE), + .RXRESETDONE(USER_RXRESETDONE), + .RXSLIDE(1'b0), + .RXSTARTOFSEQ(\NLW_gtx_channel.gtxe2_channel_i_RXSTARTOFSEQ_UNCONNECTED ), + .RXSTATUS(pipe_dclk_in_5), + .RXSYSCLKSEL({1'b0,RXSYSCLKSEL}), + .RXUSERRDY(rst_userrdy), + .RXUSRCLK(pipe_rxusrclk_in), + .RXUSRCLK2(pipe_rxusrclk_in), + .RXVALID(gt_rxvalid_3), + .SETERRSTATUS(1'b0), + .TSTIN({1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1}), + .TSTOUT(\NLW_gtx_channel.gtxe2_channel_i_TSTOUT_UNCONNECTED [9:0]), + .TX8B10BBYPASS({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .TX8B10BEN(rxchbonden_3), + .TXBUFDIFFCTRL({1'b1,1'b0,1'b0}), + .TXBUFSTATUS(\NLW_gtx_channel.gtxe2_channel_i_TXBUFSTATUS_UNCONNECTED [1:0]), + .TXCHARDISPMODE({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,PIPE_TXCOMPLIANCE}), + .TXCHARDISPVAL({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .TXCHARISK({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,PIPE_TXDATAK}), + .TXCOMFINISH(\NLW_gtx_channel.gtxe2_channel_i_TXCOMFINISH_UNCONNECTED ), + .TXCOMINIT(1'b0), + .TXCOMSAS(1'b0), + .TXCOMWAKE(1'b0), + .TXDATA({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,PIPE_TXDATA}), + .TXDEEMPH(pipe_tx_deemph_gt), + .TXDETECTRX(pipe_tx_rcvr_det_gt), + .TXDIFFCTRL({1'b1,1'b1,1'b0,1'b0}), + .TXDIFFPD(1'b0), + .TXDLYBYPASS(1'b0), + .TXDLYEN(1'b0), + .TXDLYHOLD(1'b0), + .TXDLYOVRDEN(1'b0), + .TXDLYSRESET(SYNC_TXDLYSRESET), + .TXDLYSRESETDONE(pipe_dclk_in_2), + .TXDLYUPDOWN(1'b0), + .TXELECIDLE(PIPE_TXELECIDLE), + .TXGEARBOXREADY(\NLW_gtx_channel.gtxe2_channel_i_TXGEARBOXREADY_UNCONNECTED ), + .TXHEADER({1'b0,1'b0,1'b0}), + .TXINHIBIT(1'b0), + .TXMAINCURSOR(TXMAINCURSOR), + .TXMARGIN(\cplllock_reg1_reg[3]_2 ), + .TXOUTCLK(\gtx_channel.gtxe2_channel_i_n_37 ), + .TXOUTCLKFABRIC(\NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKFABRIC_UNCONNECTED ), + .TXOUTCLKPCS(\NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKPCS_UNCONNECTED ), + .TXOUTCLKSEL({1'b0,1'b0,1'b0}), + .TXPCSRESET(1'b0), + .TXPD(PIPE_POWERDOWN), + .TXPDELECIDLEMODE(1'b0), + .TXPHALIGN(SYNC_TXPHALIGN), + .TXPHALIGNDONE(pipe_dclk_in_3), + .TXPHALIGNEN(1'b1), + .TXPHDLYPD(1'b0), + .TXPHDLYRESET(1'b0), + .TXPHDLYTSTCLK(1'b0), + .TXPHINIT(SYNC_TXPHINIT), + .TXPHINITDONE(pipe_dclk_in_4), + .TXPHOVRDEN(1'b0), + .TXPISOPD(1'b0), + .TXPMARESET(rate_txpmareset_3), + .TXPOLARITY(1'b0), + .TXPOSTCURSOR(TXPOSTCURSOR), + .TXPOSTCURSORINV(1'b0), + .TXPRBSFORCEERR(1'b0), + .TXPRBSSEL({1'b0,1'b0,1'b0}), + .TXPRECURSOR(TXPRECURSOR), + .TXPRECURSORINV(1'b0), + .TXQPIBIASEN(1'b0), + .TXQPISENN(\NLW_gtx_channel.gtxe2_channel_i_TXQPISENN_UNCONNECTED ), + .TXQPISENP(\NLW_gtx_channel.gtxe2_channel_i_TXQPISENP_UNCONNECTED ), + .TXQPISTRONGPDOWN(1'b0), + .TXQPIWEAKPUP(1'b0), + .TXRATE({1'b0,1'b0,RXRATE}), + .TXRATEDONE(RATE_TXRATEDONE), + .TXRESETDONE(USER_TXRESETDONE), + .TXSEQUENCE({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .TXSTARTSEQ(1'b0), + .TXSWING(1'b0), + .TXSYSCLKSEL({1'b0,RXSYSCLKSEL}), + .TXUSERRDY(rst_userrdy), + .TXUSRCLK(pipe_pclk_in), + .TXUSRCLK2(pipe_pclk_in)); +endmodule + +module pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd + (cpllpd_2, + CPLLRESET0, + gt_cpllpdrefclk, + rate_cpllreset_3, + RST_CPLLRESET); + output cpllpd_2; + output CPLLRESET0; + input gt_cpllpdrefclk; + input rate_cpllreset_3; + input RST_CPLLRESET; + + wire CPLLRESET0; + wire RST_CPLLRESET; + wire cpllpd_2; + wire \cpllpd_wait_reg[31]_srl32_n_1 ; + wire \cpllpd_wait_reg[63]_srl32_n_1 ; + wire \cpllpd_wait_reg[94]_srl31_n_0 ; + wire \cpllreset_wait_reg[126]_srl31_n_0 ; + wire \cpllreset_wait_reg[31]_srl32_n_1 ; + wire \cpllreset_wait_reg[63]_srl32_n_1 ; + wire \cpllreset_wait_reg[95]_srl32_n_1 ; + wire cpllrst; + wire gt_cpllpdrefclk; + wire rate_cpllreset_3; + wire \NLW_cpllpd_wait_reg[31]_srl32_Q_UNCONNECTED ; + wire \NLW_cpllpd_wait_reg[63]_srl32_Q_UNCONNECTED ; + wire \NLW_cpllpd_wait_reg[94]_srl31_Q31_UNCONNECTED ; + wire \NLW_cpllreset_wait_reg[126]_srl31_Q31_UNCONNECTED ; + wire \NLW_cpllreset_wait_reg[31]_srl32_Q_UNCONNECTED ; + wire \NLW_cpllreset_wait_reg[63]_srl32_Q_UNCONNECTED ; + wire \NLW_cpllreset_wait_reg[95]_srl32_Q_UNCONNECTED ; + + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg[31]_srl32 " *) + SRLC32E #( + .INIT(32'hFFFFFFFF)) + \cpllpd_wait_reg[31]_srl32 + (.A({1'b1,1'b1,1'b1,1'b1,1'b1}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(1'b0), + .Q(\NLW_cpllpd_wait_reg[31]_srl32_Q_UNCONNECTED ), + .Q31(\cpllpd_wait_reg[31]_srl32_n_1 )); + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg[63]_srl32 " *) + SRLC32E #( + .INIT(32'hFFFFFFFF)) + \cpllpd_wait_reg[63]_srl32 + (.A({1'b1,1'b1,1'b1,1'b1,1'b1}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(\cpllpd_wait_reg[31]_srl32_n_1 ), + .Q(\NLW_cpllpd_wait_reg[63]_srl32_Q_UNCONNECTED ), + .Q31(\cpllpd_wait_reg[63]_srl32_n_1 )); + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg[94]_srl31 " *) + SRLC32E #( + .INIT(32'h7FFFFFFF)) + \cpllpd_wait_reg[94]_srl31 + (.A({1'b1,1'b1,1'b1,1'b1,1'b0}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(\cpllpd_wait_reg[63]_srl32_n_1 ), + .Q(\cpllpd_wait_reg[94]_srl31_n_0 ), + .Q31(\NLW_cpllpd_wait_reg[94]_srl31_Q31_UNCONNECTED )); + (* equivalent_register_removal = "no" *) + FDRE #( + .INIT(1'b1)) + \cpllpd_wait_reg[95] + (.C(gt_cpllpdrefclk), + .CE(1'b1), + .D(\cpllpd_wait_reg[94]_srl31_n_0 ), + .Q(cpllpd_2), + .R(1'b0)); + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[126]_srl31 " *) + SRLC32E #( + .INIT(32'h00000000)) + \cpllreset_wait_reg[126]_srl31 + (.A({1'b1,1'b1,1'b1,1'b1,1'b0}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(\cpllreset_wait_reg[95]_srl32_n_1 ), + .Q(\cpllreset_wait_reg[126]_srl31_n_0 ), + .Q31(\NLW_cpllreset_wait_reg[126]_srl31_Q31_UNCONNECTED )); + (* equivalent_register_removal = "no" *) + FDRE #( + .INIT(1'b0)) + \cpllreset_wait_reg[127] + (.C(gt_cpllpdrefclk), + .CE(1'b1), + .D(\cpllreset_wait_reg[126]_srl31_n_0 ), + .Q(cpllrst), + .R(1'b0)); + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[31]_srl32 " *) + SRLC32E #( + .INIT(32'h000000FF)) + \cpllreset_wait_reg[31]_srl32 + (.A({1'b1,1'b1,1'b1,1'b1,1'b1}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(1'b0), + .Q(\NLW_cpllreset_wait_reg[31]_srl32_Q_UNCONNECTED ), + .Q31(\cpllreset_wait_reg[31]_srl32_n_1 )); + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[63]_srl32 " *) + SRLC32E #( + .INIT(32'h00000000)) + \cpllreset_wait_reg[63]_srl32 + (.A({1'b1,1'b1,1'b1,1'b1,1'b1}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(\cpllreset_wait_reg[31]_srl32_n_1 ), + .Q(\NLW_cpllreset_wait_reg[63]_srl32_Q_UNCONNECTED ), + .Q31(\cpllreset_wait_reg[63]_srl32_n_1 )); + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[95]_srl32 " *) + SRLC32E #( + .INIT(32'h00000000)) + \cpllreset_wait_reg[95]_srl32 + (.A({1'b1,1'b1,1'b1,1'b1,1'b1}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(\cpllreset_wait_reg[63]_srl32_n_1 ), + .Q(\NLW_cpllreset_wait_reg[95]_srl32_Q_UNCONNECTED ), + .Q31(\cpllreset_wait_reg[95]_srl32_n_1 )); + LUT3 #( + .INIT(8'hFE)) + \gtx_channel.gtxe2_channel_i_i_2__2 + (.I0(cpllrst), + .I1(rate_cpllreset_3), + .I2(RST_CPLLRESET), + .O(CPLLRESET0)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_gtx_cpllpd_ovrd" *) +module pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd_56 + (cpllpd_1, + CPLLRESET0, + gt_cpllpdrefclk, + rate_cpllreset_2, + RST_CPLLRESET); + output cpllpd_1; + output CPLLRESET0; + input gt_cpllpdrefclk; + input rate_cpllreset_2; + input RST_CPLLRESET; + + wire CPLLRESET0; + wire RST_CPLLRESET; + wire cpllpd_1; + wire \cpllpd_wait_reg[31]_srl32_n_1 ; + wire \cpllpd_wait_reg[63]_srl32_n_1 ; + wire \cpllpd_wait_reg[94]_srl31_n_0 ; + wire \cpllreset_wait_reg[126]_srl31_n_0 ; + wire \cpllreset_wait_reg[31]_srl32_n_1 ; + wire \cpllreset_wait_reg[63]_srl32_n_1 ; + wire \cpllreset_wait_reg[95]_srl32_n_1 ; + wire cpllrst; + wire gt_cpllpdrefclk; + wire rate_cpllreset_2; + wire \NLW_cpllpd_wait_reg[31]_srl32_Q_UNCONNECTED ; + wire \NLW_cpllpd_wait_reg[63]_srl32_Q_UNCONNECTED ; + wire \NLW_cpllpd_wait_reg[94]_srl31_Q31_UNCONNECTED ; + wire \NLW_cpllreset_wait_reg[126]_srl31_Q31_UNCONNECTED ; + wire \NLW_cpllreset_wait_reg[31]_srl32_Q_UNCONNECTED ; + wire \NLW_cpllreset_wait_reg[63]_srl32_Q_UNCONNECTED ; + wire \NLW_cpllreset_wait_reg[95]_srl32_Q_UNCONNECTED ; + + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg[31]_srl32 " *) + SRLC32E #( + .INIT(32'hFFFFFFFF)) + \cpllpd_wait_reg[31]_srl32 + (.A({1'b1,1'b1,1'b1,1'b1,1'b1}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(1'b0), + .Q(\NLW_cpllpd_wait_reg[31]_srl32_Q_UNCONNECTED ), + .Q31(\cpllpd_wait_reg[31]_srl32_n_1 )); + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg[63]_srl32 " *) + SRLC32E #( + .INIT(32'hFFFFFFFF)) + \cpllpd_wait_reg[63]_srl32 + (.A({1'b1,1'b1,1'b1,1'b1,1'b1}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(\cpllpd_wait_reg[31]_srl32_n_1 ), + .Q(\NLW_cpllpd_wait_reg[63]_srl32_Q_UNCONNECTED ), + .Q31(\cpllpd_wait_reg[63]_srl32_n_1 )); + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg[94]_srl31 " *) + SRLC32E #( + .INIT(32'h7FFFFFFF)) + \cpllpd_wait_reg[94]_srl31 + (.A({1'b1,1'b1,1'b1,1'b1,1'b0}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(\cpllpd_wait_reg[63]_srl32_n_1 ), + .Q(\cpllpd_wait_reg[94]_srl31_n_0 ), + .Q31(\NLW_cpllpd_wait_reg[94]_srl31_Q31_UNCONNECTED )); + (* equivalent_register_removal = "no" *) + FDRE #( + .INIT(1'b1)) + \cpllpd_wait_reg[95] + (.C(gt_cpllpdrefclk), + .CE(1'b1), + .D(\cpllpd_wait_reg[94]_srl31_n_0 ), + .Q(cpllpd_1), + .R(1'b0)); + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[126]_srl31 " *) + SRLC32E #( + .INIT(32'h00000000)) + \cpllreset_wait_reg[126]_srl31 + (.A({1'b1,1'b1,1'b1,1'b1,1'b0}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(\cpllreset_wait_reg[95]_srl32_n_1 ), + .Q(\cpllreset_wait_reg[126]_srl31_n_0 ), + .Q31(\NLW_cpllreset_wait_reg[126]_srl31_Q31_UNCONNECTED )); + (* equivalent_register_removal = "no" *) + FDRE #( + .INIT(1'b0)) + \cpllreset_wait_reg[127] + (.C(gt_cpllpdrefclk), + .CE(1'b1), + .D(\cpllreset_wait_reg[126]_srl31_n_0 ), + .Q(cpllrst), + .R(1'b0)); + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[31]_srl32 " *) + SRLC32E #( + .INIT(32'h000000FF)) + \cpllreset_wait_reg[31]_srl32 + (.A({1'b1,1'b1,1'b1,1'b1,1'b1}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(1'b0), + .Q(\NLW_cpllreset_wait_reg[31]_srl32_Q_UNCONNECTED ), + .Q31(\cpllreset_wait_reg[31]_srl32_n_1 )); + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[63]_srl32 " *) + SRLC32E #( + .INIT(32'h00000000)) + \cpllreset_wait_reg[63]_srl32 + (.A({1'b1,1'b1,1'b1,1'b1,1'b1}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(\cpllreset_wait_reg[31]_srl32_n_1 ), + .Q(\NLW_cpllreset_wait_reg[63]_srl32_Q_UNCONNECTED ), + .Q31(\cpllreset_wait_reg[63]_srl32_n_1 )); + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[95]_srl32 " *) + SRLC32E #( + .INIT(32'h00000000)) + \cpllreset_wait_reg[95]_srl32 + (.A({1'b1,1'b1,1'b1,1'b1,1'b1}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(\cpllreset_wait_reg[63]_srl32_n_1 ), + .Q(\NLW_cpllreset_wait_reg[95]_srl32_Q_UNCONNECTED ), + .Q31(\cpllreset_wait_reg[95]_srl32_n_1 )); + LUT3 #( + .INIT(8'hFE)) + \gtx_channel.gtxe2_channel_i_i_2__1 + (.I0(cpllrst), + .I1(rate_cpllreset_2), + .I2(RST_CPLLRESET), + .O(CPLLRESET0)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_gtx_cpllpd_ovrd" *) +module pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd_58 + (cpllpd_0, + CPLLRESET0, + gt_cpllpdrefclk, + rate_cpllreset_1, + RST_CPLLRESET); + output cpllpd_0; + output CPLLRESET0; + input gt_cpllpdrefclk; + input rate_cpllreset_1; + input RST_CPLLRESET; + + wire CPLLRESET0; + wire RST_CPLLRESET; + wire cpllpd_0; + wire \cpllpd_wait_reg[31]_srl32_n_1 ; + wire \cpllpd_wait_reg[63]_srl32_n_1 ; + wire \cpllpd_wait_reg[94]_srl31_n_0 ; + wire \cpllreset_wait_reg[126]_srl31_n_0 ; + wire \cpllreset_wait_reg[31]_srl32_n_1 ; + wire \cpllreset_wait_reg[63]_srl32_n_1 ; + wire \cpllreset_wait_reg[95]_srl32_n_1 ; + wire cpllrst; + wire gt_cpllpdrefclk; + wire rate_cpllreset_1; + wire \NLW_cpllpd_wait_reg[31]_srl32_Q_UNCONNECTED ; + wire \NLW_cpllpd_wait_reg[63]_srl32_Q_UNCONNECTED ; + wire \NLW_cpllpd_wait_reg[94]_srl31_Q31_UNCONNECTED ; + wire \NLW_cpllreset_wait_reg[126]_srl31_Q31_UNCONNECTED ; + wire \NLW_cpllreset_wait_reg[31]_srl32_Q_UNCONNECTED ; + wire \NLW_cpllreset_wait_reg[63]_srl32_Q_UNCONNECTED ; + wire \NLW_cpllreset_wait_reg[95]_srl32_Q_UNCONNECTED ; + + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg[31]_srl32 " *) + SRLC32E #( + .INIT(32'hFFFFFFFF)) + \cpllpd_wait_reg[31]_srl32 + (.A({1'b1,1'b1,1'b1,1'b1,1'b1}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(1'b0), + .Q(\NLW_cpllpd_wait_reg[31]_srl32_Q_UNCONNECTED ), + .Q31(\cpllpd_wait_reg[31]_srl32_n_1 )); + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg[63]_srl32 " *) + SRLC32E #( + .INIT(32'hFFFFFFFF)) + \cpllpd_wait_reg[63]_srl32 + (.A({1'b1,1'b1,1'b1,1'b1,1'b1}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(\cpllpd_wait_reg[31]_srl32_n_1 ), + .Q(\NLW_cpllpd_wait_reg[63]_srl32_Q_UNCONNECTED ), + .Q31(\cpllpd_wait_reg[63]_srl32_n_1 )); + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg[94]_srl31 " *) + SRLC32E #( + .INIT(32'h7FFFFFFF)) + \cpllpd_wait_reg[94]_srl31 + (.A({1'b1,1'b1,1'b1,1'b1,1'b0}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(\cpllpd_wait_reg[63]_srl32_n_1 ), + .Q(\cpllpd_wait_reg[94]_srl31_n_0 ), + .Q31(\NLW_cpllpd_wait_reg[94]_srl31_Q31_UNCONNECTED )); + (* equivalent_register_removal = "no" *) + FDRE #( + .INIT(1'b1)) + \cpllpd_wait_reg[95] + (.C(gt_cpllpdrefclk), + .CE(1'b1), + .D(\cpllpd_wait_reg[94]_srl31_n_0 ), + .Q(cpllpd_0), + .R(1'b0)); + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[126]_srl31 " *) + SRLC32E #( + .INIT(32'h00000000)) + \cpllreset_wait_reg[126]_srl31 + (.A({1'b1,1'b1,1'b1,1'b1,1'b0}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(\cpllreset_wait_reg[95]_srl32_n_1 ), + .Q(\cpllreset_wait_reg[126]_srl31_n_0 ), + .Q31(\NLW_cpllreset_wait_reg[126]_srl31_Q31_UNCONNECTED )); + (* equivalent_register_removal = "no" *) + FDRE #( + .INIT(1'b0)) + \cpllreset_wait_reg[127] + (.C(gt_cpllpdrefclk), + .CE(1'b1), + .D(\cpllreset_wait_reg[126]_srl31_n_0 ), + .Q(cpllrst), + .R(1'b0)); + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[31]_srl32 " *) + SRLC32E #( + .INIT(32'h000000FF)) + \cpllreset_wait_reg[31]_srl32 + (.A({1'b1,1'b1,1'b1,1'b1,1'b1}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(1'b0), + .Q(\NLW_cpllreset_wait_reg[31]_srl32_Q_UNCONNECTED ), + .Q31(\cpllreset_wait_reg[31]_srl32_n_1 )); + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[63]_srl32 " *) + SRLC32E #( + .INIT(32'h00000000)) + \cpllreset_wait_reg[63]_srl32 + (.A({1'b1,1'b1,1'b1,1'b1,1'b1}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(\cpllreset_wait_reg[31]_srl32_n_1 ), + .Q(\NLW_cpllreset_wait_reg[63]_srl32_Q_UNCONNECTED ), + .Q31(\cpllreset_wait_reg[63]_srl32_n_1 )); + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[95]_srl32 " *) + SRLC32E #( + .INIT(32'h00000000)) + \cpllreset_wait_reg[95]_srl32 + (.A({1'b1,1'b1,1'b1,1'b1,1'b1}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(\cpllreset_wait_reg[63]_srl32_n_1 ), + .Q(\NLW_cpllreset_wait_reg[95]_srl32_Q_UNCONNECTED ), + .Q31(\cpllreset_wait_reg[95]_srl32_n_1 )); + LUT3 #( + .INIT(8'hFE)) + \gtx_channel.gtxe2_channel_i_i_2__0 + (.I0(cpllrst), + .I1(rate_cpllreset_1), + .I2(RST_CPLLRESET), + .O(CPLLRESET0)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_gtx_cpllpd_ovrd" *) +module pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd_60 + (cpllpd, + CPLLRESET0, + gt_cpllpdrefclk, + rate_cpllreset_0, + RST_CPLLRESET); + output cpllpd; + output CPLLRESET0; + input gt_cpllpdrefclk; + input rate_cpllreset_0; + input RST_CPLLRESET; + + wire CPLLRESET0; + wire RST_CPLLRESET; + wire cpllpd; + wire \cpllpd_wait_reg[31]_srl32_n_1 ; + wire \cpllpd_wait_reg[63]_srl32_n_1 ; + wire \cpllpd_wait_reg[94]_srl31_n_0 ; + wire \cpllreset_wait_reg[126]_srl31_n_0 ; + wire \cpllreset_wait_reg[31]_srl32_n_1 ; + wire \cpllreset_wait_reg[63]_srl32_n_1 ; + wire \cpllreset_wait_reg[95]_srl32_n_1 ; + wire cpllrst; + wire gt_cpllpdrefclk; + wire rate_cpllreset_0; + wire \NLW_cpllpd_wait_reg[31]_srl32_Q_UNCONNECTED ; + wire \NLW_cpllpd_wait_reg[63]_srl32_Q_UNCONNECTED ; + wire \NLW_cpllpd_wait_reg[94]_srl31_Q31_UNCONNECTED ; + wire \NLW_cpllreset_wait_reg[126]_srl31_Q31_UNCONNECTED ; + wire \NLW_cpllreset_wait_reg[31]_srl32_Q_UNCONNECTED ; + wire \NLW_cpllreset_wait_reg[63]_srl32_Q_UNCONNECTED ; + wire \NLW_cpllreset_wait_reg[95]_srl32_Q_UNCONNECTED ; + + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg[31]_srl32 " *) + SRLC32E #( + .INIT(32'hFFFFFFFF)) + \cpllpd_wait_reg[31]_srl32 + (.A({1'b1,1'b1,1'b1,1'b1,1'b1}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(1'b0), + .Q(\NLW_cpllpd_wait_reg[31]_srl32_Q_UNCONNECTED ), + .Q31(\cpllpd_wait_reg[31]_srl32_n_1 )); + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg[63]_srl32 " *) + SRLC32E #( + .INIT(32'hFFFFFFFF)) + \cpllpd_wait_reg[63]_srl32 + (.A({1'b1,1'b1,1'b1,1'b1,1'b1}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(\cpllpd_wait_reg[31]_srl32_n_1 ), + .Q(\NLW_cpllpd_wait_reg[63]_srl32_Q_UNCONNECTED ), + .Q31(\cpllpd_wait_reg[63]_srl32_n_1 )); + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg[94]_srl31 " *) + SRLC32E #( + .INIT(32'h7FFFFFFF)) + \cpllpd_wait_reg[94]_srl31 + (.A({1'b1,1'b1,1'b1,1'b1,1'b0}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(\cpllpd_wait_reg[63]_srl32_n_1 ), + .Q(\cpllpd_wait_reg[94]_srl31_n_0 ), + .Q31(\NLW_cpllpd_wait_reg[94]_srl31_Q31_UNCONNECTED )); + (* equivalent_register_removal = "no" *) + FDRE #( + .INIT(1'b1)) + \cpllpd_wait_reg[95] + (.C(gt_cpllpdrefclk), + .CE(1'b1), + .D(\cpllpd_wait_reg[94]_srl31_n_0 ), + .Q(cpllpd), + .R(1'b0)); + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[126]_srl31 " *) + SRLC32E #( + .INIT(32'h00000000)) + \cpllreset_wait_reg[126]_srl31 + (.A({1'b1,1'b1,1'b1,1'b1,1'b0}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(\cpllreset_wait_reg[95]_srl32_n_1 ), + .Q(\cpllreset_wait_reg[126]_srl31_n_0 ), + .Q31(\NLW_cpllreset_wait_reg[126]_srl31_Q31_UNCONNECTED )); + (* equivalent_register_removal = "no" *) + FDRE #( + .INIT(1'b0)) + \cpllreset_wait_reg[127] + (.C(gt_cpllpdrefclk), + .CE(1'b1), + .D(\cpllreset_wait_reg[126]_srl31_n_0 ), + .Q(cpllrst), + .R(1'b0)); + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[31]_srl32 " *) + SRLC32E #( + .INIT(32'h000000FF)) + \cpllreset_wait_reg[31]_srl32 + (.A({1'b1,1'b1,1'b1,1'b1,1'b1}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(1'b0), + .Q(\NLW_cpllreset_wait_reg[31]_srl32_Q_UNCONNECTED ), + .Q31(\cpllreset_wait_reg[31]_srl32_n_1 )); + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[63]_srl32 " *) + SRLC32E #( + .INIT(32'h00000000)) + \cpllreset_wait_reg[63]_srl32 + (.A({1'b1,1'b1,1'b1,1'b1,1'b1}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(\cpllreset_wait_reg[31]_srl32_n_1 ), + .Q(\NLW_cpllreset_wait_reg[63]_srl32_Q_UNCONNECTED ), + .Q31(\cpllreset_wait_reg[63]_srl32_n_1 )); + (* srl_bus_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg " *) + (* srl_name = "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[95]_srl32 " *) + SRLC32E #( + .INIT(32'h00000000)) + \cpllreset_wait_reg[95]_srl32 + (.A({1'b1,1'b1,1'b1,1'b1,1'b1}), + .CE(1'b1), + .CLK(gt_cpllpdrefclk), + .D(\cpllreset_wait_reg[63]_srl32_n_1 ), + .Q(\NLW_cpllreset_wait_reg[95]_srl32_Q_UNCONNECTED ), + .Q31(\cpllreset_wait_reg[95]_srl32_n_1 )); + LUT3 #( + .INIT(8'hFE)) + \gtx_channel.gtxe2_channel_i_i_2 + (.I0(cpllrst), + .I1(rate_cpllreset_0), + .I2(RST_CPLLRESET), + .O(CPLLRESET0)); +endmodule + +(* CFG_CTL_IF = "TRUE" *) (* CFG_FC_IF = "TRUE" *) (* CFG_MGMT_IF = "TRUE" *) +(* CFG_STATUS_IF = "TRUE" *) (* C_DATA_WIDTH = "64" *) (* DowngradeIPIdentifiedWarnings = "yes" *) +(* ENABLE_JTAG_DBG = "FALSE" *) (* ERR_REPORTING_IF = "TRUE" *) (* EXT_CH_GT_DRP = "FALSE" *) +(* EXT_PIPE_INTERFACE = "FALSE" *) (* EXT_STARTUP_PRIMITIVE = "FALSE" *) (* KEEP_WIDTH = "8" *) +(* LINK_CAP_MAX_LINK_WIDTH = "4" *) (* PCIE_ASYNC_EN = "FALSE" *) (* PCIE_EXT_CLK = "TRUE" *) +(* PCIE_EXT_GT_COMMON = "FALSE" *) (* PIPE_SIM = "FALSE" *) (* PL_INTERFACE = "TRUE" *) +(* RCV_MSG_IF = "TRUE" *) (* REDUCE_OOB_FREQ = "FALSE" *) (* SHARED_LOGIC_IN_CORE = "FALSE" *) +(* TRANSCEIVER_CTRL_STATUS_PORTS = "FALSE" *) (* bar_0 = "FFFF0000" *) (* bar_1 = "00000000" *) +(* bar_2 = "00000000" *) (* bar_3 = "00000000" *) (* bar_4 = "00000000" *) +(* bar_5 = "00000000" *) (* bram_lat = "0" *) (* c_aer_base_ptr = "000" *) +(* c_aer_cap_ecrc_check_capable = "FALSE" *) (* c_aer_cap_ecrc_gen_capable = "FALSE" *) (* c_aer_cap_multiheader = "FALSE" *) +(* c_aer_cap_nextptr = "000" *) (* c_aer_cap_on = "FALSE" *) (* c_aer_cap_optional_err_support = "000000" *) +(* c_aer_cap_permit_rooterr_update = "FALSE" *) (* c_buf_opt_bma = "TRUE" *) (* c_component_name = "pcie_7x_0" *) +(* c_cpl_inf = "TRUE" *) (* c_cpl_infinite = "TRUE" *) (* c_cpl_timeout_disable_sup = "FALSE" *) +(* c_cpl_timeout_range = "0010" *) (* c_cpl_timeout_ranges_sup = "2" *) (* c_d1_support = "FALSE" *) +(* c_d2_support = "FALSE" *) (* c_de_emph = "FALSE" *) (* c_dev_cap2_ari_forwarding_supported = "FALSE" *) +(* c_dev_cap2_atomicop32_completer_supported = "FALSE" *) (* c_dev_cap2_atomicop64_completer_supported = "FALSE" *) (* c_dev_cap2_atomicop_routing_supported = "FALSE" *) +(* c_dev_cap2_cas128_completer_supported = "FALSE" *) (* c_dev_cap2_tph_completer_supported = "00" *) (* c_dev_control_ext_tag_default = "FALSE" *) +(* c_dev_port_type = "0" *) (* c_dis_lane_reverse = "TRUE" *) (* c_disable_rx_poisoned_resp = "FALSE" *) +(* c_disable_scrambling = "FALSE" *) (* c_disable_tx_aspm_l0s = "FALSE" *) (* c_dll_lnk_actv_cap = "FALSE" *) +(* c_dsi_bool = "FALSE" *) (* c_dsn_base_ptr = "100" *) (* c_dsn_cap_enabled = "TRUE" *) +(* c_dsn_next_ptr = "000" *) (* c_enable_msg_route = "00000000000" *) (* c_ep_l0s_accpt_lat = "0" *) +(* c_ep_l1_accpt_lat = "7" *) (* c_ext_pci_cfg_space_addr = "3FF" *) (* c_external_clocking = "TRUE" *) +(* c_fc_cpld = "973" *) (* c_fc_cplh = "36" *) (* c_fc_npd = "24" *) +(* c_fc_nph = "12" *) (* c_fc_pd = "949" *) (* c_fc_ph = "32" *) +(* c_gen1 = "1'b1" *) (* c_header_type = "00" *) (* c_hw_auton_spd_disable = "FALSE" *) +(* c_int_width = "64" *) (* c_last_cfg_dw = "10C" *) (* c_link_cap_aspm_optionality = "FALSE" *) +(* c_ll_ack_timeout = "0000" *) (* c_ll_ack_timeout_enable = "FALSE" *) (* c_ll_ack_timeout_function = "0" *) +(* c_ll_replay_timeout = "0000" *) (* c_ll_replay_timeout_enable = "FALSE" *) (* c_ll_replay_timeout_func = "1" *) +(* c_lnk_bndwdt_notif = "FALSE" *) (* c_msi = "0" *) (* c_msi_64b_addr = "TRUE" *) +(* c_msi_cap_on = "FALSE" *) (* c_msi_mult_msg_extn = "0" *) (* c_msi_per_vctr_mask_cap = "FALSE" *) +(* c_msix_cap_on = "FALSE" *) (* c_msix_next_ptr = "00" *) (* c_msix_pba_bir = "0" *) +(* c_msix_pba_offset = "0" *) (* c_msix_table_bir = "0" *) (* c_msix_table_offset = "0" *) +(* c_msix_table_size = "000" *) (* c_pci_cfg_space_addr = "3F" *) (* c_pcie_blk_locn = "0" *) +(* c_pcie_cap_next_ptr = "00" *) (* c_pcie_cap_slot_implemented = "FALSE" *) (* c_pcie_dbg_ports = "TRUE" *) +(* c_pcie_fast_config = "0" *) (* c_perf_level_high = "TRUE" *) (* c_phantom_functions = "0" *) +(* c_pm_cap_next_ptr = "60" *) (* c_pme_support = "0F" *) (* c_rbar_base_ptr = "000" *) +(* c_rbar_cap_control_encodedbar0 = "00" *) (* c_rbar_cap_control_encodedbar1 = "00" *) (* c_rbar_cap_control_encodedbar2 = "00" *) +(* c_rbar_cap_control_encodedbar3 = "00" *) (* c_rbar_cap_control_encodedbar4 = "00" *) (* c_rbar_cap_control_encodedbar5 = "00" *) +(* c_rbar_cap_index0 = "0" *) (* c_rbar_cap_index1 = "0" *) (* c_rbar_cap_index2 = "0" *) +(* c_rbar_cap_index3 = "0" *) (* c_rbar_cap_index4 = "0" *) (* c_rbar_cap_index5 = "0" *) +(* c_rbar_cap_nextptr = "000" *) (* c_rbar_cap_on = "FALSE" *) (* c_rbar_cap_sup0 = "00001" *) +(* c_rbar_cap_sup1 = "00001" *) (* c_rbar_cap_sup2 = "00001" *) (* c_rbar_cap_sup3 = "00001" *) +(* c_rbar_cap_sup4 = "00001" *) (* c_rbar_cap_sup5 = "00001" *) (* c_rbar_num = "0" *) +(* c_rcb = "0" *) (* c_recrc_check = "0" *) (* c_recrc_check_trim = "FALSE" *) +(* c_rev_gt_order = "FALSE" *) (* c_root_cap_crs = "FALSE" *) (* c_rx_raddr_lat = "0" *) +(* c_rx_ram_limit = "FFF" *) (* c_rx_rdata_lat = "2" *) (* c_rx_write_lat = "0" *) +(* c_silicon_rev = "2" *) (* c_slot_cap_attn_butn = "FALSE" *) (* c_slot_cap_attn_ind = "FALSE" *) +(* c_slot_cap_elec_interlock = "FALSE" *) (* c_slot_cap_hotplug_cap = "FALSE" *) (* c_slot_cap_hotplug_surprise = "FALSE" *) +(* c_slot_cap_mrl = "FALSE" *) (* c_slot_cap_no_cmd_comp_sup = "FALSE" *) (* c_slot_cap_physical_slot_num = "0" *) +(* c_slot_cap_pwr_ctrl = "FALSE" *) (* c_slot_cap_pwr_ind = "FALSE" *) (* c_slot_cap_pwr_limit_scale = "0" *) +(* c_slot_cap_pwr_limit_value = "0" *) (* c_surprise_dn_err_cap = "FALSE" *) (* c_trgt_lnk_spd = "2" *) +(* c_trn_np_fc = "TRUE" *) (* c_tx_last_tlp = "30" *) (* c_tx_raddr_lat = "0" *) +(* c_tx_rdata_lat = "2" *) (* c_tx_write_lat = "0" *) (* c_upconfig_capable = "TRUE" *) +(* c_upstream_facing = "TRUE" *) (* c_ur_atomic = "FALSE" *) (* c_ur_inv_req = "TRUE" *) +(* c_ur_prs_response = "TRUE" *) (* c_vc_base_ptr = "000" *) (* c_vc_cap_enabled = "FALSE" *) +(* c_vc_cap_reject_snoop = "FALSE" *) (* c_vc_next_ptr = "000" *) (* c_vsec_base_ptr = "000" *) +(* c_vsec_cap_enabled = "FALSE" *) (* c_vsec_next_ptr = "000" *) (* c_xlnx_ref_board = "ZC706" *) +(* cap_ver = "2" *) (* cardbus_cis_ptr = "00000000" *) (* class_code = "050000" *) +(* cmps = "3" *) (* con_scl_fctr_d0_state = "0" *) (* con_scl_fctr_d1_state = "0" *) +(* con_scl_fctr_d2_state = "0" *) (* con_scl_fctr_d3_state = "0" *) (* cost_table = "1" *) +(* d1_sup = "0" *) (* d2_sup = "0" *) (* dev_id = "7024" *) +(* dev_port_type = "0000" *) (* dis_scl_fctr_d0_state = "0" *) (* dis_scl_fctr_d1_state = "0" *) +(* dis_scl_fctr_d2_state = "0" *) (* dis_scl_fctr_d3_state = "0" *) (* dsi = "0" *) +(* ep_l0s_accpt_lat = "000" *) (* ep_l1_accpt_lat = "111" *) (* ext_tag_fld_sup = "FALSE" *) +(* int_pin = "1" *) (* intx = "TRUE" *) (* max_lnk_spd = "2" *) +(* max_lnk_wdt = "000100" *) (* mps = "011" *) (* no_soft_rst = "TRUE" *) +(* pci_exp_int_freq = "3" *) (* pci_exp_ref_freq = "0" *) (* phantm_func_sup = "00" *) +(* pme_sup = "0F" *) (* pwr_con_d0_state = "00" *) (* pwr_con_d1_state = "00" *) +(* pwr_con_d2_state = "00" *) (* pwr_con_d3_state = "00" *) (* pwr_dis_d0_state = "00" *) +(* pwr_dis_d1_state = "00" *) (* pwr_dis_d2_state = "00" *) (* pwr_dis_d3_state = "00" *) +(* rev_id = "00" *) (* slot_clk = "TRUE" *) (* subsys_id = "0007" *) +(* subsys_ven_id = "10EE" *) (* ven_id = "10EE" *) (* xrom_bar = "00000000" *) +module pcie_7x_0_pcie_7x_0_pcie2_top + (pci_exp_txn, + pci_exp_txp, + pci_exp_rxn, + pci_exp_rxp, + int_pclk_out_slave, + int_pipe_rxusrclk_out, + int_rxoutclk_out, + int_dclk_out, + int_userclk1_out, + int_userclk2_out, + int_oobclk_out, + int_mmcm_lock_out, + int_qplllock_out, + int_qplloutclk_out, + int_qplloutrefclk_out, + int_pclk_sel_slave, + pipe_pclk_in, + pipe_rxusrclk_in, + pipe_rxoutclk_in, + pipe_dclk_in, + pipe_userclk1_in, + pipe_userclk2_in, + pipe_oobclk_in, + pipe_mmcm_lock_in, + pipe_txoutclk_out, + pipe_rxoutclk_out, + pipe_pclk_sel_out, + pipe_gen3_out, + qpll_drp_crscode, + qpll_drp_fsm, + qpll_drp_done, + qpll_drp_reset, + qpll_qplllock, + qpll_qplloutclk, + qpll_qplloutrefclk, + qpll_qplld, + qpll_qpllreset, + qpll_drp_clk, + qpll_drp_rst_n, + qpll_drp_ovrd, + qpll_drp_gen3, + qpll_drp_start, + user_clk_out, + user_reset_out, + user_lnk_up, + user_app_rdy, + tx_buf_av, + tx_err_drop, + tx_cfg_req, + s_axis_tx_tdata, + s_axis_tx_tvalid, + s_axis_tx_tready, + s_axis_tx_tkeep, + s_axis_tx_tlast, + s_axis_tx_tuser, + tx_cfg_gnt, + m_axis_rx_tdata, + m_axis_rx_tvalid, + m_axis_rx_tready, + m_axis_rx_tkeep, + m_axis_rx_tlast, + m_axis_rx_tuser, + rx_np_ok, + rx_np_req, + fc_cpld, + fc_cplh, + fc_npd, + fc_nph, + fc_pd, + fc_ph, + fc_sel, + cfg_mgmt_do, + cfg_mgmt_rd_wr_done, + cfg_status, + cfg_command, + cfg_dstatus, + cfg_dcommand, + cfg_lstatus, + cfg_lcommand, + cfg_dcommand2, + cfg_pcie_link_state, + cfg_pmcsr_pme_en, + cfg_pmcsr_powerstate, + cfg_pmcsr_pme_status, + cfg_received_func_lvl_rst, + cfg_mgmt_di, + cfg_mgmt_byte_en, + cfg_mgmt_dwaddr, + cfg_mgmt_wr_en, + cfg_mgmt_rd_en, + cfg_mgmt_wr_readonly, + cfg_err_ecrc, + cfg_err_ur, + cfg_err_cpl_timeout, + cfg_err_cpl_unexpect, + cfg_err_cpl_abort, + cfg_err_posted, + cfg_err_cor, + cfg_err_atomic_egress_blocked, + cfg_err_internal_cor, + cfg_err_malformed, + cfg_err_mc_blocked, + cfg_err_poisoned, + cfg_err_norecovery, + cfg_err_tlp_cpl_header, + cfg_err_cpl_rdy, + cfg_err_locked, + cfg_err_acs, + cfg_err_internal_uncor, + cfg_trn_pending, + cfg_pm_halt_aspm_l0s, + cfg_pm_halt_aspm_l1, + cfg_pm_force_state_en, + cfg_pm_force_state, + cfg_dsn, + cfg_msg_received, + cfg_msg_data, + cfg_interrupt, + cfg_interrupt_rdy, + cfg_interrupt_assert, + cfg_interrupt_di, + cfg_interrupt_do, + cfg_interrupt_mmenable, + cfg_interrupt_msienable, + cfg_interrupt_msixenable, + cfg_interrupt_msixfm, + cfg_interrupt_stat, + cfg_pciecap_interrupt_msgnum, + cfg_to_turnoff, + cfg_turnoff_ok, + cfg_bus_number, + cfg_device_number, + cfg_function_number, + cfg_pm_wake, + cfg_msg_received_pm_as_nak, + cfg_msg_received_setslotpowerlimit, + cfg_pm_send_pme_to, + cfg_ds_bus_number, + cfg_ds_device_number, + cfg_ds_function_number, + cfg_mgmt_wr_rw1c_as_rw, + cfg_bridge_serr_en, + cfg_slot_control_electromech_il_ctl_pulse, + cfg_root_control_syserr_corr_err_en, + cfg_root_control_syserr_non_fatal_err_en, + cfg_root_control_syserr_fatal_err_en, + cfg_root_control_pme_int_en, + cfg_aer_rooterr_corr_err_reporting_en, + cfg_aer_rooterr_non_fatal_err_reporting_en, + cfg_aer_rooterr_fatal_err_reporting_en, + cfg_aer_rooterr_corr_err_received, + cfg_aer_rooterr_non_fatal_err_received, + cfg_aer_rooterr_fatal_err_received, + cfg_msg_received_err_cor, + cfg_msg_received_err_non_fatal, + cfg_msg_received_err_fatal, + cfg_msg_received_pm_pme, + cfg_msg_received_pme_to_ack, + cfg_msg_received_assert_int_a, + cfg_msg_received_assert_int_b, + cfg_msg_received_assert_int_c, + cfg_msg_received_assert_int_d, + cfg_msg_received_deassert_int_a, + cfg_msg_received_deassert_int_b, + cfg_msg_received_deassert_int_c, + cfg_msg_received_deassert_int_d, + pl_directed_link_change, + pl_directed_link_width, + pl_directed_link_speed, + pl_directed_link_auton, + pl_upstream_prefer_deemph, + pl_sel_lnk_rate, + pl_sel_lnk_width, + pl_ltssm_state, + pl_lane_reversal_mode, + pl_phy_lnk_up, + pl_tx_pm_state, + pl_rx_pm_state, + pl_link_upcfg_cap, + pl_link_gen2_cap, + pl_link_partner_gen2_supported, + pl_initial_link_width, + pl_directed_change_done, + pl_received_hot_rst, + pl_transmit_hot_rst, + pl_downstream_deemph_source, + cfg_err_aer_headerlog, + cfg_aer_interrupt_msgnum, + cfg_err_aer_headerlog_set, + cfg_aer_ecrc_check_en, + cfg_aer_ecrc_gen_en, + cfg_vc_tcvc_map, + pcie_drp_clk, + pcie_drp_en, + pcie_drp_we, + pcie_drp_addr, + pcie_drp_di, + pcie_drp_rdy, + pcie_drp_do, + startup_eos_in, + startup_cfgclk, + startup_cfgmclk, + startup_eos, + startup_preq, + startup_clk, + startup_gsr, + startup_gts, + startup_keyclearb, + startup_pack, + startup_usrcclko, + startup_usrcclkts, + startup_usrdoneo, + startup_usrdonets, + icap_clk, + icap_csib, + icap_rdwrb, + icap_i, + icap_o, + pipe_txprbssel, + pipe_rxprbssel, + pipe_txprbsforceerr, + pipe_rxprbscntreset, + pipe_loopback, + pipe_rxprbserr, + pipe_txinhibit, + pipe_rst_fsm, + pipe_qrst_fsm, + pipe_rate_fsm, + pipe_sync_fsm_tx, + pipe_sync_fsm_rx, + pipe_drp_fsm, + pipe_rst_idle, + pipe_qrst_idle, + pipe_rate_idle, + pipe_eyescandataerror, + pipe_rxstatus, + pipe_dmonitorout, + pipe_cpll_lock, + pipe_qpll_lock, + pipe_rxpmaresetdone, + pipe_rxbufstatus, + pipe_txphaligndone, + pipe_txphinitdone, + pipe_txdlysresetdone, + pipe_rxphaligndone, + pipe_rxdlysresetdone, + pipe_rxsyncdone, + pipe_rxdisperr, + pipe_rxnotintable, + pipe_rxcommadet, + gt_ch_drp_rdy, + pipe_debug_0, + pipe_debug_1, + pipe_debug_2, + pipe_debug_3, + pipe_debug_4, + pipe_debug_5, + pipe_debug_6, + pipe_debug_7, + pipe_debug_8, + pipe_debug_9, + pipe_debug, + ext_ch_gt_drpclk, + ext_ch_gt_drpaddr, + ext_ch_gt_drpen, + ext_ch_gt_drpdi, + ext_ch_gt_drpwe, + ext_ch_gt_drpdo, + ext_ch_gt_drprdy, + common_commands_in, + pipe_rx_0_sigs, + pipe_rx_1_sigs, + pipe_rx_2_sigs, + pipe_rx_3_sigs, + pipe_rx_4_sigs, + pipe_rx_5_sigs, + pipe_rx_6_sigs, + pipe_rx_7_sigs, + common_commands_out, + pipe_tx_0_sigs, + pipe_tx_1_sigs, + pipe_tx_2_sigs, + pipe_tx_3_sigs, + pipe_tx_4_sigs, + pipe_tx_5_sigs, + pipe_tx_6_sigs, + pipe_tx_7_sigs, + pipe_mmcm_rst_n, + sys_clk, + sys_rst_n); + output [3:0]pci_exp_txn; + output [3:0]pci_exp_txp; + input [3:0]pci_exp_rxn; + input [3:0]pci_exp_rxp; + output int_pclk_out_slave; + output int_pipe_rxusrclk_out; + output [3:0]int_rxoutclk_out; + output int_dclk_out; + output int_userclk1_out; + output int_userclk2_out; + output int_oobclk_out; + output int_mmcm_lock_out; + output [1:0]int_qplllock_out; + output [1:0]int_qplloutclk_out; + output [1:0]int_qplloutrefclk_out; + input [3:0]int_pclk_sel_slave; + input pipe_pclk_in; + input pipe_rxusrclk_in; + input [3:0]pipe_rxoutclk_in; + input pipe_dclk_in; + input pipe_userclk1_in; + input pipe_userclk2_in; + input pipe_oobclk_in; + input pipe_mmcm_lock_in; + output pipe_txoutclk_out; + output [3:0]pipe_rxoutclk_out; + output [3:0]pipe_pclk_sel_out; + output pipe_gen3_out; + input [11:0]qpll_drp_crscode; + input [17:0]qpll_drp_fsm; + input [1:0]qpll_drp_done; + input [1:0]qpll_drp_reset; + input [1:0]qpll_qplllock; + input [1:0]qpll_qplloutclk; + input [1:0]qpll_qplloutrefclk; + output qpll_qplld; + output [1:0]qpll_qpllreset; + output qpll_drp_clk; + output qpll_drp_rst_n; + output qpll_drp_ovrd; + output qpll_drp_gen3; + output qpll_drp_start; + output user_clk_out; + output user_reset_out; + output user_lnk_up; + output user_app_rdy; + output [5:0]tx_buf_av; + output tx_err_drop; + output tx_cfg_req; + input [63:0]s_axis_tx_tdata; + input s_axis_tx_tvalid; + output s_axis_tx_tready; + input [7:0]s_axis_tx_tkeep; + input s_axis_tx_tlast; + input [3:0]s_axis_tx_tuser; + input tx_cfg_gnt; + output [63:0]m_axis_rx_tdata; + output m_axis_rx_tvalid; + input m_axis_rx_tready; + output [7:0]m_axis_rx_tkeep; + output m_axis_rx_tlast; + output [21:0]m_axis_rx_tuser; + input rx_np_ok; + input rx_np_req; + output [11:0]fc_cpld; + output [7:0]fc_cplh; + output [11:0]fc_npd; + output [7:0]fc_nph; + output [11:0]fc_pd; + output [7:0]fc_ph; + input [2:0]fc_sel; + output [31:0]cfg_mgmt_do; + output cfg_mgmt_rd_wr_done; + output [15:0]cfg_status; + output [15:0]cfg_command; + output [15:0]cfg_dstatus; + output [15:0]cfg_dcommand; + output [15:0]cfg_lstatus; + output [15:0]cfg_lcommand; + output [15:0]cfg_dcommand2; + output [2:0]cfg_pcie_link_state; + output cfg_pmcsr_pme_en; + output [1:0]cfg_pmcsr_powerstate; + output cfg_pmcsr_pme_status; + output cfg_received_func_lvl_rst; + input [31:0]cfg_mgmt_di; + input [3:0]cfg_mgmt_byte_en; + input [9:0]cfg_mgmt_dwaddr; + input cfg_mgmt_wr_en; + input cfg_mgmt_rd_en; + input cfg_mgmt_wr_readonly; + input cfg_err_ecrc; + input cfg_err_ur; + input cfg_err_cpl_timeout; + input cfg_err_cpl_unexpect; + input cfg_err_cpl_abort; + input cfg_err_posted; + input cfg_err_cor; + input cfg_err_atomic_egress_blocked; + input cfg_err_internal_cor; + input cfg_err_malformed; + input cfg_err_mc_blocked; + input cfg_err_poisoned; + input cfg_err_norecovery; + input [47:0]cfg_err_tlp_cpl_header; + output cfg_err_cpl_rdy; + input cfg_err_locked; + input cfg_err_acs; + input cfg_err_internal_uncor; + input cfg_trn_pending; + input cfg_pm_halt_aspm_l0s; + input cfg_pm_halt_aspm_l1; + input cfg_pm_force_state_en; + input [1:0]cfg_pm_force_state; + input [63:0]cfg_dsn; + output cfg_msg_received; + output [15:0]cfg_msg_data; + input cfg_interrupt; + output cfg_interrupt_rdy; + input cfg_interrupt_assert; + input [7:0]cfg_interrupt_di; + output [7:0]cfg_interrupt_do; + output [2:0]cfg_interrupt_mmenable; + output cfg_interrupt_msienable; + output cfg_interrupt_msixenable; + output cfg_interrupt_msixfm; + input cfg_interrupt_stat; + input [4:0]cfg_pciecap_interrupt_msgnum; + output cfg_to_turnoff; + input cfg_turnoff_ok; + output [7:0]cfg_bus_number; + output [4:0]cfg_device_number; + output [2:0]cfg_function_number; + input cfg_pm_wake; + output cfg_msg_received_pm_as_nak; + output cfg_msg_received_setslotpowerlimit; + input cfg_pm_send_pme_to; + input [7:0]cfg_ds_bus_number; + input [4:0]cfg_ds_device_number; + input [2:0]cfg_ds_function_number; + input cfg_mgmt_wr_rw1c_as_rw; + output cfg_bridge_serr_en; + output cfg_slot_control_electromech_il_ctl_pulse; + output cfg_root_control_syserr_corr_err_en; + output cfg_root_control_syserr_non_fatal_err_en; + output cfg_root_control_syserr_fatal_err_en; + output cfg_root_control_pme_int_en; + output cfg_aer_rooterr_corr_err_reporting_en; + output cfg_aer_rooterr_non_fatal_err_reporting_en; + output cfg_aer_rooterr_fatal_err_reporting_en; + output cfg_aer_rooterr_corr_err_received; + output cfg_aer_rooterr_non_fatal_err_received; + output cfg_aer_rooterr_fatal_err_received; + output cfg_msg_received_err_cor; + output cfg_msg_received_err_non_fatal; + output cfg_msg_received_err_fatal; + output cfg_msg_received_pm_pme; + output cfg_msg_received_pme_to_ack; + output cfg_msg_received_assert_int_a; + output cfg_msg_received_assert_int_b; + output cfg_msg_received_assert_int_c; + output cfg_msg_received_assert_int_d; + output cfg_msg_received_deassert_int_a; + output cfg_msg_received_deassert_int_b; + output cfg_msg_received_deassert_int_c; + output cfg_msg_received_deassert_int_d; + input [1:0]pl_directed_link_change; + input [1:0]pl_directed_link_width; + input pl_directed_link_speed; + input pl_directed_link_auton; + input pl_upstream_prefer_deemph; + output pl_sel_lnk_rate; + output [1:0]pl_sel_lnk_width; + output [5:0]pl_ltssm_state; + output [1:0]pl_lane_reversal_mode; + output pl_phy_lnk_up; + output [2:0]pl_tx_pm_state; + output [1:0]pl_rx_pm_state; + output pl_link_upcfg_cap; + output pl_link_gen2_cap; + output pl_link_partner_gen2_supported; + output [2:0]pl_initial_link_width; + output pl_directed_change_done; + output pl_received_hot_rst; + input pl_transmit_hot_rst; + input pl_downstream_deemph_source; + input [127:0]cfg_err_aer_headerlog; + input [4:0]cfg_aer_interrupt_msgnum; + output cfg_err_aer_headerlog_set; + output cfg_aer_ecrc_check_en; + output cfg_aer_ecrc_gen_en; + output [6:0]cfg_vc_tcvc_map; + input pcie_drp_clk; + input pcie_drp_en; + input pcie_drp_we; + input [8:0]pcie_drp_addr; + input [15:0]pcie_drp_di; + output pcie_drp_rdy; + output [15:0]pcie_drp_do; + input startup_eos_in; + output startup_cfgclk; + output startup_cfgmclk; + output startup_eos; + output startup_preq; + input startup_clk; + input startup_gsr; + input startup_gts; + input startup_keyclearb; + input startup_pack; + input startup_usrcclko; + input startup_usrcclkts; + input startup_usrdoneo; + input startup_usrdonets; + input icap_clk; + input icap_csib; + input icap_rdwrb; + input [31:0]icap_i; + output [31:0]icap_o; + input [2:0]pipe_txprbssel; + input [2:0]pipe_rxprbssel; + input pipe_txprbsforceerr; + input pipe_rxprbscntreset; + input [2:0]pipe_loopback; + output [3:0]pipe_rxprbserr; + input [3:0]pipe_txinhibit; + output [4:0]pipe_rst_fsm; + output [11:0]pipe_qrst_fsm; + output [19:0]pipe_rate_fsm; + output [23:0]pipe_sync_fsm_tx; + output [27:0]pipe_sync_fsm_rx; + output [27:0]pipe_drp_fsm; + output pipe_rst_idle; + output pipe_qrst_idle; + output pipe_rate_idle; + output [3:0]pipe_eyescandataerror; + output [11:0]pipe_rxstatus; + output [59:0]pipe_dmonitorout; + output [3:0]pipe_cpll_lock; + output [0:0]pipe_qpll_lock; + output [3:0]pipe_rxpmaresetdone; + output [11:0]pipe_rxbufstatus; + output [3:0]pipe_txphaligndone; + output [3:0]pipe_txphinitdone; + output [3:0]pipe_txdlysresetdone; + output [3:0]pipe_rxphaligndone; + output [3:0]pipe_rxdlysresetdone; + output [3:0]pipe_rxsyncdone; + output [31:0]pipe_rxdisperr; + output [31:0]pipe_rxnotintable; + output [3:0]pipe_rxcommadet; + output [3:0]gt_ch_drp_rdy; + output [3:0]pipe_debug_0; + output [3:0]pipe_debug_1; + output [3:0]pipe_debug_2; + output [3:0]pipe_debug_3; + output [3:0]pipe_debug_4; + output [3:0]pipe_debug_5; + output [3:0]pipe_debug_6; + output [3:0]pipe_debug_7; + output [3:0]pipe_debug_8; + output [3:0]pipe_debug_9; + output [31:0]pipe_debug; + output ext_ch_gt_drpclk; + input [35:0]ext_ch_gt_drpaddr; + input [3:0]ext_ch_gt_drpen; + input [63:0]ext_ch_gt_drpdi; + input [3:0]ext_ch_gt_drpwe; + output [63:0]ext_ch_gt_drpdo; + output [3:0]ext_ch_gt_drprdy; + input [11:0]common_commands_in; + input [24:0]pipe_rx_0_sigs; + input [24:0]pipe_rx_1_sigs; + input [24:0]pipe_rx_2_sigs; + input [24:0]pipe_rx_3_sigs; + input [24:0]pipe_rx_4_sigs; + input [24:0]pipe_rx_5_sigs; + input [24:0]pipe_rx_6_sigs; + input [24:0]pipe_rx_7_sigs; + output [11:0]common_commands_out; + output [24:0]pipe_tx_0_sigs; + output [24:0]pipe_tx_1_sigs; + output [24:0]pipe_tx_2_sigs; + output [24:0]pipe_tx_3_sigs; + output [24:0]pipe_tx_4_sigs; + output [24:0]pipe_tx_5_sigs; + output [24:0]pipe_tx_6_sigs; + output [24:0]pipe_tx_7_sigs; + input pipe_mmcm_rst_n; + input sys_clk; + input sys_rst_n; + + wire \ ; + wire cfg_aer_ecrc_check_en; + wire cfg_aer_ecrc_gen_en; + wire [4:0]cfg_aer_interrupt_msgnum; + wire cfg_aer_rooterr_corr_err_received; + wire cfg_aer_rooterr_corr_err_reporting_en; + wire cfg_aer_rooterr_fatal_err_received; + wire cfg_aer_rooterr_fatal_err_reporting_en; + wire cfg_aer_rooterr_non_fatal_err_received; + wire cfg_aer_rooterr_non_fatal_err_reporting_en; + wire cfg_bridge_serr_en; + wire [7:0]cfg_bus_number; + wire [10:0]\^cfg_command ; + wire [14:0]\^cfg_dcommand ; + wire [11:0]\^cfg_dcommand2 ; + wire [4:0]cfg_device_number; + wire [7:0]cfg_ds_bus_number; + wire [4:0]cfg_ds_device_number; + wire [2:0]cfg_ds_function_number; + wire [63:0]cfg_dsn; + wire [3:0]\^cfg_dstatus ; + wire [127:0]cfg_err_aer_headerlog; + wire cfg_err_aer_headerlog_set; + wire cfg_err_atomic_egress_blocked; + wire cfg_err_cor; + wire cfg_err_cpl_abort; + wire cfg_err_cpl_rdy; + wire cfg_err_cpl_timeout; + wire cfg_err_cpl_unexpect; + wire cfg_err_ecrc; + wire cfg_err_internal_cor; + wire cfg_err_internal_uncor; + wire cfg_err_locked; + wire cfg_err_malformed; + wire cfg_err_mc_blocked; + wire cfg_err_norecovery; + wire cfg_err_poisoned; + wire cfg_err_posted; + wire [47:0]cfg_err_tlp_cpl_header; + wire cfg_err_ur; + wire [2:0]cfg_function_number; + wire cfg_interrupt; + wire cfg_interrupt_assert; + wire [7:0]cfg_interrupt_di; + wire [7:0]cfg_interrupt_do; + wire [2:0]cfg_interrupt_mmenable; + wire cfg_interrupt_msienable; + wire cfg_interrupt_msixenable; + wire cfg_interrupt_msixfm; + wire cfg_interrupt_rdy; + wire cfg_interrupt_stat; + wire [11:0]\^cfg_lcommand ; + wire [15:0]\^cfg_lstatus ; + wire [3:0]cfg_mgmt_byte_en; + wire [31:0]cfg_mgmt_di; + wire [31:0]cfg_mgmt_do; + wire [9:0]cfg_mgmt_dwaddr; + wire cfg_mgmt_rd_en; + wire cfg_mgmt_rd_wr_done; + wire cfg_mgmt_wr_en; + wire cfg_mgmt_wr_readonly; + wire cfg_mgmt_wr_rw1c_as_rw; + wire [15:0]cfg_msg_data; + wire cfg_msg_received; + wire cfg_msg_received_assert_int_a; + wire cfg_msg_received_assert_int_b; + wire cfg_msg_received_assert_int_c; + wire cfg_msg_received_assert_int_d; + wire cfg_msg_received_deassert_int_a; + wire cfg_msg_received_deassert_int_b; + wire cfg_msg_received_deassert_int_c; + wire cfg_msg_received_deassert_int_d; + wire cfg_msg_received_err_cor; + wire cfg_msg_received_err_fatal; + wire cfg_msg_received_err_non_fatal; + wire cfg_msg_received_pm_as_nak; + wire cfg_msg_received_pm_pme; + wire cfg_msg_received_pme_to_ack; + wire cfg_msg_received_setslotpowerlimit; + wire [2:0]cfg_pcie_link_state; + wire [4:0]cfg_pciecap_interrupt_msgnum; + wire [1:0]cfg_pm_force_state; + wire cfg_pm_force_state_en; + wire cfg_pm_halt_aspm_l0s; + wire cfg_pm_halt_aspm_l1; + wire cfg_pm_wake; + wire cfg_pmcsr_pme_en; + wire cfg_pmcsr_pme_status; + wire [1:0]cfg_pmcsr_powerstate; + wire cfg_received_func_lvl_rst; + wire cfg_root_control_pme_int_en; + wire cfg_root_control_syserr_corr_err_en; + wire cfg_root_control_syserr_fatal_err_en; + wire cfg_root_control_syserr_non_fatal_err_en; + wire cfg_slot_control_electromech_il_ctl_pulse; + wire cfg_to_turnoff; + wire cfg_trn_pending; + wire cfg_turnoff_ok; + wire [6:0]cfg_vc_tcvc_map; + wire [11:0]fc_cpld; + wire [7:0]fc_cplh; + wire [11:0]fc_npd; + wire [7:0]fc_nph; + wire [11:0]fc_pd; + wire [7:0]fc_ph; + wire [2:0]fc_sel; + wire [63:0]m_axis_rx_tdata; + wire [6:6]\^m_axis_rx_tkeep ; + wire m_axis_rx_tlast; + wire m_axis_rx_tready; + wire [21:0]\^m_axis_rx_tuser ; + wire m_axis_rx_tvalid; + wire [3:0]pci_exp_rxn; + wire [3:0]pci_exp_rxp; + wire [3:0]pci_exp_txn; + wire [3:0]pci_exp_txp; + wire [8:0]pcie_drp_addr; + wire pcie_drp_clk; + wire [15:0]pcie_drp_di; + wire [15:0]pcie_drp_do; + wire pcie_drp_en; + wire pcie_drp_rdy; + wire pcie_drp_we; + wire pipe_dclk_in; + wire pipe_gen3_out; + wire pipe_mmcm_lock_in; + wire pipe_oobclk_in; + wire pipe_pclk_in; + wire [3:0]pipe_pclk_sel_out; + wire [3:0]pipe_rxoutclk_out; + wire pipe_rxusrclk_in; + wire pipe_txoutclk_out; + wire pipe_userclk1_in; + wire pipe_userclk2_in; + wire pl_directed_change_done; + wire pl_directed_link_auton; + wire [1:0]pl_directed_link_change; + wire pl_directed_link_speed; + wire [1:0]pl_directed_link_width; + wire pl_downstream_deemph_source; + wire [2:0]pl_initial_link_width; + wire [1:0]pl_lane_reversal_mode; + wire pl_link_gen2_cap; + wire pl_link_partner_gen2_supported; + wire pl_link_upcfg_cap; + wire [5:0]pl_ltssm_state; + wire pl_phy_lnk_up; + wire pl_received_hot_rst; + wire [1:0]pl_rx_pm_state; + wire pl_sel_lnk_rate; + wire [1:0]pl_sel_lnk_width; + wire pl_transmit_hot_rst; + wire [2:0]pl_tx_pm_state; + wire pl_upstream_prefer_deemph; + wire rx_np_ok; + wire rx_np_req; + wire [63:0]s_axis_tx_tdata; + wire [7:0]s_axis_tx_tkeep; + wire s_axis_tx_tlast; + wire s_axis_tx_tready; + wire [3:0]s_axis_tx_tuser; + wire s_axis_tx_tvalid; + wire sys_clk; + wire sys_rst_n; + wire [5:0]tx_buf_av; + wire tx_cfg_gnt; + wire tx_cfg_req; + wire tx_err_drop; + wire user_lnk_up; + wire user_reset_out; + + assign cfg_command[15] = \ ; + assign cfg_command[14] = \ ; + assign cfg_command[13] = \ ; + assign cfg_command[12] = \ ; + assign cfg_command[11] = \ ; + assign cfg_command[10] = \^cfg_command [10]; + assign cfg_command[9] = \ ; + assign cfg_command[8] = \^cfg_command [8]; + assign cfg_command[7] = \ ; + assign cfg_command[6] = \ ; + assign cfg_command[5] = \ ; + assign cfg_command[4] = \ ; + assign cfg_command[3] = \ ; + assign cfg_command[2:0] = \^cfg_command [2:0]; + assign cfg_dcommand[15] = \ ; + assign cfg_dcommand[14:0] = \^cfg_dcommand [14:0]; + assign cfg_dcommand2[15] = \ ; + assign cfg_dcommand2[14] = \ ; + assign cfg_dcommand2[13] = \ ; + assign cfg_dcommand2[12] = \ ; + assign cfg_dcommand2[11:0] = \^cfg_dcommand2 [11:0]; + assign cfg_dstatus[15] = \ ; + assign cfg_dstatus[14] = \ ; + assign cfg_dstatus[13] = \ ; + assign cfg_dstatus[12] = \ ; + assign cfg_dstatus[11] = \ ; + assign cfg_dstatus[10] = \ ; + assign cfg_dstatus[9] = \ ; + assign cfg_dstatus[8] = \ ; + assign cfg_dstatus[7] = \ ; + assign cfg_dstatus[6] = \ ; + assign cfg_dstatus[5] = cfg_trn_pending; + assign cfg_dstatus[4] = \ ; + assign cfg_dstatus[3:0] = \^cfg_dstatus [3:0]; + assign cfg_lcommand[15] = \ ; + assign cfg_lcommand[14] = \ ; + assign cfg_lcommand[13] = \ ; + assign cfg_lcommand[12] = \ ; + assign cfg_lcommand[11:3] = \^cfg_lcommand [11:3]; + assign cfg_lcommand[2] = \ ; + assign cfg_lcommand[1:0] = \^cfg_lcommand [1:0]; + assign cfg_lstatus[15:13] = \^cfg_lstatus [15:13]; + assign cfg_lstatus[12] = \ ; + assign cfg_lstatus[11] = \^cfg_lstatus [11]; + assign cfg_lstatus[10] = \ ; + assign cfg_lstatus[9] = \ ; + assign cfg_lstatus[8] = \ ; + assign cfg_lstatus[7:4] = \^cfg_lstatus [7:4]; + assign cfg_lstatus[3] = \ ; + assign cfg_lstatus[2] = \ ; + assign cfg_lstatus[1:0] = \^cfg_lstatus [1:0]; + assign cfg_status[15] = \ ; + assign cfg_status[14] = \ ; + assign cfg_status[13] = \ ; + assign cfg_status[12] = \ ; + assign cfg_status[11] = \ ; + assign cfg_status[10] = \ ; + assign cfg_status[9] = \ ; + assign cfg_status[8] = \ ; + assign cfg_status[7] = \ ; + assign cfg_status[6] = \ ; + assign cfg_status[5] = \ ; + assign cfg_status[4] = \ ; + assign cfg_status[3] = \ ; + assign cfg_status[2] = \ ; + assign cfg_status[1] = \ ; + assign cfg_status[0] = \ ; + assign common_commands_out[11] = \ ; + assign common_commands_out[10] = \ ; + assign common_commands_out[9] = \ ; + assign common_commands_out[8] = \ ; + assign common_commands_out[7] = \ ; + assign common_commands_out[6] = \ ; + assign common_commands_out[5] = \ ; + assign common_commands_out[4] = \ ; + assign common_commands_out[3] = \ ; + assign common_commands_out[2] = \ ; + assign common_commands_out[1] = \ ; + assign common_commands_out[0] = \ ; + assign ext_ch_gt_drpclk = \ ; + assign ext_ch_gt_drpdo[63] = \ ; + assign ext_ch_gt_drpdo[62] = \ ; + assign ext_ch_gt_drpdo[61] = \ ; + assign ext_ch_gt_drpdo[60] = \ ; + assign ext_ch_gt_drpdo[59] = \ ; + assign ext_ch_gt_drpdo[58] = \ ; + assign ext_ch_gt_drpdo[57] = \ ; + assign ext_ch_gt_drpdo[56] = \ ; + assign ext_ch_gt_drpdo[55] = \ ; + assign ext_ch_gt_drpdo[54] = \ ; + assign ext_ch_gt_drpdo[53] = \ ; + assign ext_ch_gt_drpdo[52] = \ ; + assign ext_ch_gt_drpdo[51] = \ ; + assign ext_ch_gt_drpdo[50] = \ ; + assign ext_ch_gt_drpdo[49] = \ ; + assign ext_ch_gt_drpdo[48] = \ ; + assign ext_ch_gt_drpdo[47] = \ ; + assign ext_ch_gt_drpdo[46] = \ ; + assign ext_ch_gt_drpdo[45] = \ ; + assign ext_ch_gt_drpdo[44] = \ ; + assign ext_ch_gt_drpdo[43] = \ ; + assign ext_ch_gt_drpdo[42] = \ ; + assign ext_ch_gt_drpdo[41] = \ ; + assign ext_ch_gt_drpdo[40] = \ ; + assign ext_ch_gt_drpdo[39] = \ ; + assign ext_ch_gt_drpdo[38] = \ ; + assign ext_ch_gt_drpdo[37] = \ ; + assign ext_ch_gt_drpdo[36] = \ ; + assign ext_ch_gt_drpdo[35] = \ ; + assign ext_ch_gt_drpdo[34] = \ ; + assign ext_ch_gt_drpdo[33] = \ ; + assign ext_ch_gt_drpdo[32] = \ ; + assign ext_ch_gt_drpdo[31] = \ ; + assign ext_ch_gt_drpdo[30] = \ ; + assign ext_ch_gt_drpdo[29] = \ ; + assign ext_ch_gt_drpdo[28] = \ ; + assign ext_ch_gt_drpdo[27] = \ ; + assign ext_ch_gt_drpdo[26] = \ ; + assign ext_ch_gt_drpdo[25] = \ ; + assign ext_ch_gt_drpdo[24] = \ ; + assign ext_ch_gt_drpdo[23] = \ ; + assign ext_ch_gt_drpdo[22] = \ ; + assign ext_ch_gt_drpdo[21] = \ ; + assign ext_ch_gt_drpdo[20] = \ ; + assign ext_ch_gt_drpdo[19] = \ ; + assign ext_ch_gt_drpdo[18] = \ ; + assign ext_ch_gt_drpdo[17] = \ ; + assign ext_ch_gt_drpdo[16] = \ ; + assign ext_ch_gt_drpdo[15] = \ ; + assign ext_ch_gt_drpdo[14] = \ ; + assign ext_ch_gt_drpdo[13] = \ ; + assign ext_ch_gt_drpdo[12] = \ ; + assign ext_ch_gt_drpdo[11] = \ ; + assign ext_ch_gt_drpdo[10] = \ ; + assign ext_ch_gt_drpdo[9] = \ ; + assign ext_ch_gt_drpdo[8] = \ ; + assign ext_ch_gt_drpdo[7] = \ ; + assign ext_ch_gt_drpdo[6] = \ ; + assign ext_ch_gt_drpdo[5] = \ ; + assign ext_ch_gt_drpdo[4] = \ ; + assign ext_ch_gt_drpdo[3] = \ ; + assign ext_ch_gt_drpdo[2] = \ ; + assign ext_ch_gt_drpdo[1] = \ ; + assign ext_ch_gt_drpdo[0] = \ ; + assign ext_ch_gt_drprdy[3] = \ ; + assign ext_ch_gt_drprdy[2] = \ ; + assign ext_ch_gt_drprdy[1] = \ ; + assign ext_ch_gt_drprdy[0] = \ ; + assign gt_ch_drp_rdy[3] = \ ; + assign gt_ch_drp_rdy[2] = \ ; + assign gt_ch_drp_rdy[1] = \ ; + assign gt_ch_drp_rdy[0] = \ ; + assign icap_o[31] = \ ; + assign icap_o[30] = \ ; + assign icap_o[29] = \ ; + assign icap_o[28] = \ ; + assign icap_o[27] = \ ; + assign icap_o[26] = \ ; + assign icap_o[25] = \ ; + assign icap_o[24] = \ ; + assign icap_o[23] = \ ; + assign icap_o[22] = \ ; + assign icap_o[21] = \ ; + assign icap_o[20] = \ ; + assign icap_o[19] = \ ; + assign icap_o[18] = \ ; + assign icap_o[17] = \ ; + assign icap_o[16] = \ ; + assign icap_o[15] = \ ; + assign icap_o[14] = \ ; + assign icap_o[13] = \ ; + assign icap_o[12] = \ ; + assign icap_o[11] = \ ; + assign icap_o[10] = \ ; + assign icap_o[9] = \ ; + assign icap_o[8] = \ ; + assign icap_o[7] = \ ; + assign icap_o[6] = \ ; + assign icap_o[5] = \ ; + assign icap_o[4] = \ ; + assign icap_o[3] = \ ; + assign icap_o[2] = \ ; + assign icap_o[1] = \ ; + assign icap_o[0] = \ ; + assign int_dclk_out = \ ; + assign int_mmcm_lock_out = \ ; + assign int_oobclk_out = \ ; + assign int_pclk_out_slave = \ ; + assign int_pipe_rxusrclk_out = \ ; + assign int_qplllock_out[1] = \ ; + assign int_qplllock_out[0] = \ ; + assign int_qplloutclk_out[1] = \ ; + assign int_qplloutclk_out[0] = \ ; + assign int_qplloutrefclk_out[1] = \ ; + assign int_qplloutrefclk_out[0] = \ ; + assign int_rxoutclk_out[3] = \ ; + assign int_rxoutclk_out[2] = \ ; + assign int_rxoutclk_out[1] = \ ; + assign int_rxoutclk_out[0] = \ ; + assign int_userclk1_out = \ ; + assign int_userclk2_out = \ ; + assign m_axis_rx_tkeep[7] = \^m_axis_rx_tkeep [6]; + assign m_axis_rx_tkeep[6] = \^m_axis_rx_tkeep [6]; + assign m_axis_rx_tkeep[5] = \^m_axis_rx_tkeep [6]; + assign m_axis_rx_tkeep[4] = \^m_axis_rx_tkeep [6]; + assign m_axis_rx_tkeep[3] = \ ; + assign m_axis_rx_tkeep[2] = \ ; + assign m_axis_rx_tkeep[1] = \ ; + assign m_axis_rx_tkeep[0] = \ ; + assign m_axis_rx_tuser[21] = \^m_axis_rx_tuser [21]; + assign m_axis_rx_tuser[20] = \ ; + assign m_axis_rx_tuser[19] = \^m_axis_rx_tuser [19]; + assign m_axis_rx_tuser[18] = \^m_axis_rx_tuser [17]; + assign m_axis_rx_tuser[17] = \^m_axis_rx_tuser [17]; + assign m_axis_rx_tuser[16] = \ ; + assign m_axis_rx_tuser[15] = \ ; + assign m_axis_rx_tuser[14] = \^m_axis_rx_tuser [14]; + assign m_axis_rx_tuser[13] = \ ; + assign m_axis_rx_tuser[12] = \ ; + assign m_axis_rx_tuser[11] = \ ; + assign m_axis_rx_tuser[10] = \ ; + assign m_axis_rx_tuser[9] = \ ; + assign m_axis_rx_tuser[8:0] = \^m_axis_rx_tuser [8:0]; + assign pipe_cpll_lock[3] = \ ; + assign pipe_cpll_lock[2] = \ ; + assign pipe_cpll_lock[1] = \ ; + assign pipe_cpll_lock[0] = \ ; + assign pipe_debug[31] = \ ; + assign pipe_debug[30] = \ ; + assign pipe_debug[29] = \ ; + assign pipe_debug[28] = \ ; + assign pipe_debug[27] = \ ; + assign pipe_debug[26] = \ ; + assign pipe_debug[25] = \ ; + assign pipe_debug[24] = \ ; + assign pipe_debug[23] = \ ; + assign pipe_debug[22] = \ ; + assign pipe_debug[21] = \ ; + assign pipe_debug[20] = \ ; + assign pipe_debug[19] = \ ; + assign pipe_debug[18] = \ ; + assign pipe_debug[17] = \ ; + assign pipe_debug[16] = \ ; + assign pipe_debug[15] = \ ; + assign pipe_debug[14] = \ ; + assign pipe_debug[13] = \ ; + assign pipe_debug[12] = \ ; + assign pipe_debug[11] = \ ; + assign pipe_debug[10] = \ ; + assign pipe_debug[9] = \ ; + assign pipe_debug[8] = \ ; + assign pipe_debug[7] = \ ; + assign pipe_debug[6] = \ ; + assign pipe_debug[5] = \ ; + assign pipe_debug[4] = \ ; + assign pipe_debug[3] = \ ; + assign pipe_debug[2] = \ ; + assign pipe_debug[1] = \ ; + assign pipe_debug[0] = \ ; + assign pipe_debug_0[3] = \ ; + assign pipe_debug_0[2] = \ ; + assign pipe_debug_0[1] = \ ; + assign pipe_debug_0[0] = \ ; + assign pipe_debug_1[3] = \ ; + assign pipe_debug_1[2] = \ ; + assign pipe_debug_1[1] = \ ; + assign pipe_debug_1[0] = \ ; + assign pipe_debug_2[3] = \ ; + assign pipe_debug_2[2] = \ ; + assign pipe_debug_2[1] = \ ; + assign pipe_debug_2[0] = \ ; + assign pipe_debug_3[3] = \ ; + assign pipe_debug_3[2] = \ ; + assign pipe_debug_3[1] = \ ; + assign pipe_debug_3[0] = \ ; + assign pipe_debug_4[3] = \ ; + assign pipe_debug_4[2] = \ ; + assign pipe_debug_4[1] = \ ; + assign pipe_debug_4[0] = \ ; + assign pipe_debug_5[3] = \ ; + assign pipe_debug_5[2] = \ ; + assign pipe_debug_5[1] = \ ; + assign pipe_debug_5[0] = \ ; + assign pipe_debug_6[3] = \ ; + assign pipe_debug_6[2] = \ ; + assign pipe_debug_6[1] = \ ; + assign pipe_debug_6[0] = \ ; + assign pipe_debug_7[3] = \ ; + assign pipe_debug_7[2] = \ ; + assign pipe_debug_7[1] = \ ; + assign pipe_debug_7[0] = \ ; + assign pipe_debug_8[3] = \ ; + assign pipe_debug_8[2] = \ ; + assign pipe_debug_8[1] = \ ; + assign pipe_debug_8[0] = \ ; + assign pipe_debug_9[3] = \ ; + assign pipe_debug_9[2] = \ ; + assign pipe_debug_9[1] = \ ; + assign pipe_debug_9[0] = \ ; + assign pipe_dmonitorout[59] = \ ; + assign pipe_dmonitorout[58] = \ ; + assign pipe_dmonitorout[57] = \ ; + assign pipe_dmonitorout[56] = \ ; + assign pipe_dmonitorout[55] = \ ; + assign pipe_dmonitorout[54] = \ ; + assign pipe_dmonitorout[53] = \ ; + assign pipe_dmonitorout[52] = \ ; + assign pipe_dmonitorout[51] = \ ; + assign pipe_dmonitorout[50] = \ ; + assign pipe_dmonitorout[49] = \ ; + assign pipe_dmonitorout[48] = \ ; + assign pipe_dmonitorout[47] = \ ; + assign pipe_dmonitorout[46] = \ ; + assign pipe_dmonitorout[45] = \ ; + assign pipe_dmonitorout[44] = \ ; + assign pipe_dmonitorout[43] = \ ; + assign pipe_dmonitorout[42] = \ ; + assign pipe_dmonitorout[41] = \ ; + assign pipe_dmonitorout[40] = \ ; + assign pipe_dmonitorout[39] = \ ; + assign pipe_dmonitorout[38] = \ ; + assign pipe_dmonitorout[37] = \ ; + assign pipe_dmonitorout[36] = \ ; + assign pipe_dmonitorout[35] = \ ; + assign pipe_dmonitorout[34] = \ ; + assign pipe_dmonitorout[33] = \ ; + assign pipe_dmonitorout[32] = \ ; + assign pipe_dmonitorout[31] = \ ; + assign pipe_dmonitorout[30] = \ ; + assign pipe_dmonitorout[29] = \ ; + assign pipe_dmonitorout[28] = \ ; + assign pipe_dmonitorout[27] = \ ; + assign pipe_dmonitorout[26] = \ ; + assign pipe_dmonitorout[25] = \ ; + assign pipe_dmonitorout[24] = \ ; + assign pipe_dmonitorout[23] = \ ; + assign pipe_dmonitorout[22] = \ ; + assign pipe_dmonitorout[21] = \ ; + assign pipe_dmonitorout[20] = \ ; + assign pipe_dmonitorout[19] = \ ; + assign pipe_dmonitorout[18] = \ ; + assign pipe_dmonitorout[17] = \ ; + assign pipe_dmonitorout[16] = \ ; + assign pipe_dmonitorout[15] = \ ; + assign pipe_dmonitorout[14] = \ ; + assign pipe_dmonitorout[13] = \ ; + assign pipe_dmonitorout[12] = \ ; + assign pipe_dmonitorout[11] = \ ; + assign pipe_dmonitorout[10] = \ ; + assign pipe_dmonitorout[9] = \ ; + assign pipe_dmonitorout[8] = \ ; + assign pipe_dmonitorout[7] = \ ; + assign pipe_dmonitorout[6] = \ ; + assign pipe_dmonitorout[5] = \ ; + assign pipe_dmonitorout[4] = \ ; + assign pipe_dmonitorout[3] = \ ; + assign pipe_dmonitorout[2] = \ ; + assign pipe_dmonitorout[1] = \ ; + assign pipe_dmonitorout[0] = \ ; + assign pipe_drp_fsm[27] = \ ; + assign pipe_drp_fsm[26] = \ ; + assign pipe_drp_fsm[25] = \ ; + assign pipe_drp_fsm[24] = \ ; + assign pipe_drp_fsm[23] = \ ; + assign pipe_drp_fsm[22] = \ ; + assign pipe_drp_fsm[21] = \ ; + assign pipe_drp_fsm[20] = \ ; + assign pipe_drp_fsm[19] = \ ; + assign pipe_drp_fsm[18] = \ ; + assign pipe_drp_fsm[17] = \ ; + assign pipe_drp_fsm[16] = \ ; + assign pipe_drp_fsm[15] = \ ; + assign pipe_drp_fsm[14] = \ ; + assign pipe_drp_fsm[13] = \ ; + assign pipe_drp_fsm[12] = \ ; + assign pipe_drp_fsm[11] = \ ; + assign pipe_drp_fsm[10] = \ ; + assign pipe_drp_fsm[9] = \ ; + assign pipe_drp_fsm[8] = \ ; + assign pipe_drp_fsm[7] = \ ; + assign pipe_drp_fsm[6] = \ ; + assign pipe_drp_fsm[5] = \ ; + assign pipe_drp_fsm[4] = \ ; + assign pipe_drp_fsm[3] = \ ; + assign pipe_drp_fsm[2] = \ ; + assign pipe_drp_fsm[1] = \ ; + assign pipe_drp_fsm[0] = \ ; + assign pipe_eyescandataerror[3] = \ ; + assign pipe_eyescandataerror[2] = \ ; + assign pipe_eyescandataerror[1] = \ ; + assign pipe_eyescandataerror[0] = \ ; + assign pipe_qpll_lock[0] = \ ; + assign pipe_qrst_fsm[11] = \ ; + assign pipe_qrst_fsm[10] = \ ; + assign pipe_qrst_fsm[9] = \ ; + assign pipe_qrst_fsm[8] = \ ; + assign pipe_qrst_fsm[7] = \ ; + assign pipe_qrst_fsm[6] = \ ; + assign pipe_qrst_fsm[5] = \ ; + assign pipe_qrst_fsm[4] = \ ; + assign pipe_qrst_fsm[3] = \ ; + assign pipe_qrst_fsm[2] = \ ; + assign pipe_qrst_fsm[1] = \ ; + assign pipe_qrst_fsm[0] = \ ; + assign pipe_qrst_idle = \ ; + assign pipe_rate_fsm[19] = \ ; + assign pipe_rate_fsm[18] = \ ; + assign pipe_rate_fsm[17] = \ ; + assign pipe_rate_fsm[16] = \ ; + assign pipe_rate_fsm[15] = \ ; + assign pipe_rate_fsm[14] = \ ; + assign pipe_rate_fsm[13] = \ ; + assign pipe_rate_fsm[12] = \ ; + assign pipe_rate_fsm[11] = \ ; + assign pipe_rate_fsm[10] = \ ; + assign pipe_rate_fsm[9] = \ ; + assign pipe_rate_fsm[8] = \ ; + assign pipe_rate_fsm[7] = \ ; + assign pipe_rate_fsm[6] = \ ; + assign pipe_rate_fsm[5] = \ ; + assign pipe_rate_fsm[4] = \ ; + assign pipe_rate_fsm[3] = \ ; + assign pipe_rate_fsm[2] = \ ; + assign pipe_rate_fsm[1] = \ ; + assign pipe_rate_fsm[0] = \ ; + assign pipe_rate_idle = \ ; + assign pipe_rst_fsm[4] = \ ; + assign pipe_rst_fsm[3] = \ ; + assign pipe_rst_fsm[2] = \ ; + assign pipe_rst_fsm[1] = \ ; + assign pipe_rst_fsm[0] = \ ; + assign pipe_rst_idle = \ ; + assign pipe_rxbufstatus[11] = \ ; + assign pipe_rxbufstatus[10] = \ ; + assign pipe_rxbufstatus[9] = \ ; + assign pipe_rxbufstatus[8] = \ ; + assign pipe_rxbufstatus[7] = \ ; + assign pipe_rxbufstatus[6] = \ ; + assign pipe_rxbufstatus[5] = \ ; + assign pipe_rxbufstatus[4] = \ ; + assign pipe_rxbufstatus[3] = \ ; + assign pipe_rxbufstatus[2] = \ ; + assign pipe_rxbufstatus[1] = \ ; + assign pipe_rxbufstatus[0] = \ ; + assign pipe_rxcommadet[3] = \ ; + assign pipe_rxcommadet[2] = \ ; + assign pipe_rxcommadet[1] = \ ; + assign pipe_rxcommadet[0] = \ ; + assign pipe_rxdisperr[31] = \ ; + assign pipe_rxdisperr[30] = \ ; + assign pipe_rxdisperr[29] = \ ; + assign pipe_rxdisperr[28] = \ ; + assign pipe_rxdisperr[27] = \ ; + assign pipe_rxdisperr[26] = \ ; + assign pipe_rxdisperr[25] = \ ; + assign pipe_rxdisperr[24] = \ ; + assign pipe_rxdisperr[23] = \ ; + assign pipe_rxdisperr[22] = \ ; + assign pipe_rxdisperr[21] = \ ; + assign pipe_rxdisperr[20] = \ ; + assign pipe_rxdisperr[19] = \ ; + assign pipe_rxdisperr[18] = \ ; + assign pipe_rxdisperr[17] = \ ; + assign pipe_rxdisperr[16] = \ ; + assign pipe_rxdisperr[15] = \ ; + assign pipe_rxdisperr[14] = \ ; + assign pipe_rxdisperr[13] = \ ; + assign pipe_rxdisperr[12] = \ ; + assign pipe_rxdisperr[11] = \ ; + assign pipe_rxdisperr[10] = \ ; + assign pipe_rxdisperr[9] = \ ; + assign pipe_rxdisperr[8] = \ ; + assign pipe_rxdisperr[7] = \ ; + assign pipe_rxdisperr[6] = \ ; + assign pipe_rxdisperr[5] = \ ; + assign pipe_rxdisperr[4] = \ ; + assign pipe_rxdisperr[3] = \ ; + assign pipe_rxdisperr[2] = \ ; + assign pipe_rxdisperr[1] = \ ; + assign pipe_rxdisperr[0] = \ ; + assign pipe_rxdlysresetdone[3] = \ ; + assign pipe_rxdlysresetdone[2] = \ ; + assign pipe_rxdlysresetdone[1] = \ ; + assign pipe_rxdlysresetdone[0] = \ ; + assign pipe_rxnotintable[31] = \ ; + assign pipe_rxnotintable[30] = \ ; + assign pipe_rxnotintable[29] = \ ; + assign pipe_rxnotintable[28] = \ ; + assign pipe_rxnotintable[27] = \ ; + assign pipe_rxnotintable[26] = \ ; + assign pipe_rxnotintable[25] = \ ; + assign pipe_rxnotintable[24] = \ ; + assign pipe_rxnotintable[23] = \ ; + assign pipe_rxnotintable[22] = \ ; + assign pipe_rxnotintable[21] = \ ; + assign pipe_rxnotintable[20] = \ ; + assign pipe_rxnotintable[19] = \ ; + assign pipe_rxnotintable[18] = \ ; + assign pipe_rxnotintable[17] = \ ; + assign pipe_rxnotintable[16] = \ ; + assign pipe_rxnotintable[15] = \ ; + assign pipe_rxnotintable[14] = \ ; + assign pipe_rxnotintable[13] = \ ; + assign pipe_rxnotintable[12] = \ ; + assign pipe_rxnotintable[11] = \ ; + assign pipe_rxnotintable[10] = \ ; + assign pipe_rxnotintable[9] = \ ; + assign pipe_rxnotintable[8] = \ ; + assign pipe_rxnotintable[7] = \ ; + assign pipe_rxnotintable[6] = \ ; + assign pipe_rxnotintable[5] = \ ; + assign pipe_rxnotintable[4] = \ ; + assign pipe_rxnotintable[3] = \ ; + assign pipe_rxnotintable[2] = \ ; + assign pipe_rxnotintable[1] = \ ; + assign pipe_rxnotintable[0] = \ ; + assign pipe_rxphaligndone[3] = \ ; + assign pipe_rxphaligndone[2] = \ ; + assign pipe_rxphaligndone[1] = \ ; + assign pipe_rxphaligndone[0] = \ ; + assign pipe_rxpmaresetdone[3] = \ ; + assign pipe_rxpmaresetdone[2] = \ ; + assign pipe_rxpmaresetdone[1] = \ ; + assign pipe_rxpmaresetdone[0] = \ ; + assign pipe_rxprbserr[3] = \ ; + assign pipe_rxprbserr[2] = \ ; + assign pipe_rxprbserr[1] = \ ; + assign pipe_rxprbserr[0] = \ ; + assign pipe_rxstatus[11] = \ ; + assign pipe_rxstatus[10] = \ ; + assign pipe_rxstatus[9] = \ ; + assign pipe_rxstatus[8] = \ ; + assign pipe_rxstatus[7] = \ ; + assign pipe_rxstatus[6] = \ ; + assign pipe_rxstatus[5] = \ ; + assign pipe_rxstatus[4] = \ ; + assign pipe_rxstatus[3] = \ ; + assign pipe_rxstatus[2] = \ ; + assign pipe_rxstatus[1] = \ ; + assign pipe_rxstatus[0] = \ ; + assign pipe_rxsyncdone[3] = \ ; + assign pipe_rxsyncdone[2] = \ ; + assign pipe_rxsyncdone[1] = \ ; + assign pipe_rxsyncdone[0] = \ ; + assign pipe_sync_fsm_rx[27] = \ ; + assign pipe_sync_fsm_rx[26] = \ ; + assign pipe_sync_fsm_rx[25] = \ ; + assign pipe_sync_fsm_rx[24] = \ ; + assign pipe_sync_fsm_rx[23] = \ ; + assign pipe_sync_fsm_rx[22] = \ ; + assign pipe_sync_fsm_rx[21] = \ ; + assign pipe_sync_fsm_rx[20] = \ ; + assign pipe_sync_fsm_rx[19] = \ ; + assign pipe_sync_fsm_rx[18] = \ ; + assign pipe_sync_fsm_rx[17] = \ ; + assign pipe_sync_fsm_rx[16] = \ ; + assign pipe_sync_fsm_rx[15] = \ ; + assign pipe_sync_fsm_rx[14] = \ ; + assign pipe_sync_fsm_rx[13] = \ ; + assign pipe_sync_fsm_rx[12] = \ ; + assign pipe_sync_fsm_rx[11] = \ ; + assign pipe_sync_fsm_rx[10] = \ ; + assign pipe_sync_fsm_rx[9] = \ ; + assign pipe_sync_fsm_rx[8] = \ ; + assign pipe_sync_fsm_rx[7] = \ ; + assign pipe_sync_fsm_rx[6] = \ ; + assign pipe_sync_fsm_rx[5] = \ ; + assign pipe_sync_fsm_rx[4] = \ ; + assign pipe_sync_fsm_rx[3] = \ ; + assign pipe_sync_fsm_rx[2] = \ ; + assign pipe_sync_fsm_rx[1] = \ ; + assign pipe_sync_fsm_rx[0] = \ ; + assign pipe_sync_fsm_tx[23] = \ ; + assign pipe_sync_fsm_tx[22] = \ ; + assign pipe_sync_fsm_tx[21] = \ ; + assign pipe_sync_fsm_tx[20] = \ ; + assign pipe_sync_fsm_tx[19] = \ ; + assign pipe_sync_fsm_tx[18] = \ ; + assign pipe_sync_fsm_tx[17] = \ ; + assign pipe_sync_fsm_tx[16] = \ ; + assign pipe_sync_fsm_tx[15] = \ ; + assign pipe_sync_fsm_tx[14] = \ ; + assign pipe_sync_fsm_tx[13] = \ ; + assign pipe_sync_fsm_tx[12] = \ ; + assign pipe_sync_fsm_tx[11] = \ ; + assign pipe_sync_fsm_tx[10] = \ ; + assign pipe_sync_fsm_tx[9] = \ ; + assign pipe_sync_fsm_tx[8] = \ ; + assign pipe_sync_fsm_tx[7] = \ ; + assign pipe_sync_fsm_tx[6] = \ ; + assign pipe_sync_fsm_tx[5] = \ ; + assign pipe_sync_fsm_tx[4] = \ ; + assign pipe_sync_fsm_tx[3] = \ ; + assign pipe_sync_fsm_tx[2] = \ ; + assign pipe_sync_fsm_tx[1] = \ ; + assign pipe_sync_fsm_tx[0] = \ ; + assign pipe_tx_0_sigs[24] = \ ; + assign pipe_tx_0_sigs[23] = \ ; + assign pipe_tx_0_sigs[22] = \ ; + assign pipe_tx_0_sigs[21] = \ ; + assign pipe_tx_0_sigs[20] = \ ; + assign pipe_tx_0_sigs[19] = \ ; + assign pipe_tx_0_sigs[18] = \ ; + assign pipe_tx_0_sigs[17] = \ ; + assign pipe_tx_0_sigs[16] = \ ; + assign pipe_tx_0_sigs[15] = \ ; + assign pipe_tx_0_sigs[14] = \ ; + assign pipe_tx_0_sigs[13] = \ ; + assign pipe_tx_0_sigs[12] = \ ; + assign pipe_tx_0_sigs[11] = \ ; + assign pipe_tx_0_sigs[10] = \ ; + assign pipe_tx_0_sigs[9] = \ ; + assign pipe_tx_0_sigs[8] = \ ; + assign pipe_tx_0_sigs[7] = \ ; + assign pipe_tx_0_sigs[6] = \ ; + assign pipe_tx_0_sigs[5] = \ ; + assign pipe_tx_0_sigs[4] = \ ; + assign pipe_tx_0_sigs[3] = \ ; + assign pipe_tx_0_sigs[2] = \ ; + assign pipe_tx_0_sigs[1] = \ ; + assign pipe_tx_0_sigs[0] = \ ; + assign pipe_tx_1_sigs[24] = \ ; + assign pipe_tx_1_sigs[23] = \ ; + assign pipe_tx_1_sigs[22] = \ ; + assign pipe_tx_1_sigs[21] = \ ; + assign pipe_tx_1_sigs[20] = \ ; + assign pipe_tx_1_sigs[19] = \ ; + assign pipe_tx_1_sigs[18] = \ ; + assign pipe_tx_1_sigs[17] = \ ; + assign pipe_tx_1_sigs[16] = \ ; + assign pipe_tx_1_sigs[15] = \ ; + assign pipe_tx_1_sigs[14] = \ ; + assign pipe_tx_1_sigs[13] = \ ; + assign pipe_tx_1_sigs[12] = \ ; + assign pipe_tx_1_sigs[11] = \ ; + assign pipe_tx_1_sigs[10] = \ ; + assign pipe_tx_1_sigs[9] = \ ; + assign pipe_tx_1_sigs[8] = \ ; + assign pipe_tx_1_sigs[7] = \ ; + assign pipe_tx_1_sigs[6] = \ ; + assign pipe_tx_1_sigs[5] = \ ; + assign pipe_tx_1_sigs[4] = \ ; + assign pipe_tx_1_sigs[3] = \ ; + assign pipe_tx_1_sigs[2] = \ ; + assign pipe_tx_1_sigs[1] = \ ; + assign pipe_tx_1_sigs[0] = \ ; + assign pipe_tx_2_sigs[24] = \ ; + assign pipe_tx_2_sigs[23] = \ ; + assign pipe_tx_2_sigs[22] = \ ; + assign pipe_tx_2_sigs[21] = \ ; + assign pipe_tx_2_sigs[20] = \ ; + assign pipe_tx_2_sigs[19] = \ ; + assign pipe_tx_2_sigs[18] = \ ; + assign pipe_tx_2_sigs[17] = \ ; + assign pipe_tx_2_sigs[16] = \ ; + assign pipe_tx_2_sigs[15] = \ ; + assign pipe_tx_2_sigs[14] = \ ; + assign pipe_tx_2_sigs[13] = \ ; + assign pipe_tx_2_sigs[12] = \ ; + assign pipe_tx_2_sigs[11] = \ ; + assign pipe_tx_2_sigs[10] = \ ; + assign pipe_tx_2_sigs[9] = \ ; + assign pipe_tx_2_sigs[8] = \ ; + assign pipe_tx_2_sigs[7] = \ ; + assign pipe_tx_2_sigs[6] = \ ; + assign pipe_tx_2_sigs[5] = \ ; + assign pipe_tx_2_sigs[4] = \ ; + assign pipe_tx_2_sigs[3] = \ ; + assign pipe_tx_2_sigs[2] = \ ; + assign pipe_tx_2_sigs[1] = \ ; + assign pipe_tx_2_sigs[0] = \ ; + assign pipe_tx_3_sigs[24] = \ ; + assign pipe_tx_3_sigs[23] = \ ; + assign pipe_tx_3_sigs[22] = \ ; + assign pipe_tx_3_sigs[21] = \ ; + assign pipe_tx_3_sigs[20] = \ ; + assign pipe_tx_3_sigs[19] = \ ; + assign pipe_tx_3_sigs[18] = \ ; + assign pipe_tx_3_sigs[17] = \ ; + assign pipe_tx_3_sigs[16] = \ ; + assign pipe_tx_3_sigs[15] = \ ; + assign pipe_tx_3_sigs[14] = \ ; + assign pipe_tx_3_sigs[13] = \ ; + assign pipe_tx_3_sigs[12] = \ ; + assign pipe_tx_3_sigs[11] = \ ; + assign pipe_tx_3_sigs[10] = \ ; + assign pipe_tx_3_sigs[9] = \ ; + assign pipe_tx_3_sigs[8] = \ ; + assign pipe_tx_3_sigs[7] = \ ; + assign pipe_tx_3_sigs[6] = \ ; + assign pipe_tx_3_sigs[5] = \ ; + assign pipe_tx_3_sigs[4] = \ ; + assign pipe_tx_3_sigs[3] = \ ; + assign pipe_tx_3_sigs[2] = \ ; + assign pipe_tx_3_sigs[1] = \ ; + assign pipe_tx_3_sigs[0] = \ ; + assign pipe_tx_4_sigs[24] = \ ; + assign pipe_tx_4_sigs[23] = \ ; + assign pipe_tx_4_sigs[22] = \ ; + assign pipe_tx_4_sigs[21] = \ ; + assign pipe_tx_4_sigs[20] = \ ; + assign pipe_tx_4_sigs[19] = \ ; + assign pipe_tx_4_sigs[18] = \ ; + assign pipe_tx_4_sigs[17] = \ ; + assign pipe_tx_4_sigs[16] = \ ; + assign pipe_tx_4_sigs[15] = \ ; + assign pipe_tx_4_sigs[14] = \ ; + assign pipe_tx_4_sigs[13] = \ ; + assign pipe_tx_4_sigs[12] = \ ; + assign pipe_tx_4_sigs[11] = \ ; + assign pipe_tx_4_sigs[10] = \ ; + assign pipe_tx_4_sigs[9] = \ ; + assign pipe_tx_4_sigs[8] = \ ; + assign pipe_tx_4_sigs[7] = \ ; + assign pipe_tx_4_sigs[6] = \ ; + assign pipe_tx_4_sigs[5] = \ ; + assign pipe_tx_4_sigs[4] = \ ; + assign pipe_tx_4_sigs[3] = \ ; + assign pipe_tx_4_sigs[2] = \ ; + assign pipe_tx_4_sigs[1] = \ ; + assign pipe_tx_4_sigs[0] = \ ; + assign pipe_tx_5_sigs[24] = \ ; + assign pipe_tx_5_sigs[23] = \ ; + assign pipe_tx_5_sigs[22] = \ ; + assign pipe_tx_5_sigs[21] = \ ; + assign pipe_tx_5_sigs[20] = \ ; + assign pipe_tx_5_sigs[19] = \ ; + assign pipe_tx_5_sigs[18] = \ ; + assign pipe_tx_5_sigs[17] = \ ; + assign pipe_tx_5_sigs[16] = \ ; + assign pipe_tx_5_sigs[15] = \ ; + assign pipe_tx_5_sigs[14] = \ ; + assign pipe_tx_5_sigs[13] = \ ; + assign pipe_tx_5_sigs[12] = \ ; + assign pipe_tx_5_sigs[11] = \ ; + assign pipe_tx_5_sigs[10] = \ ; + assign pipe_tx_5_sigs[9] = \ ; + assign pipe_tx_5_sigs[8] = \ ; + assign pipe_tx_5_sigs[7] = \ ; + assign pipe_tx_5_sigs[6] = \ ; + assign pipe_tx_5_sigs[5] = \ ; + assign pipe_tx_5_sigs[4] = \ ; + assign pipe_tx_5_sigs[3] = \ ; + assign pipe_tx_5_sigs[2] = \ ; + assign pipe_tx_5_sigs[1] = \ ; + assign pipe_tx_5_sigs[0] = \ ; + assign pipe_tx_6_sigs[24] = \ ; + assign pipe_tx_6_sigs[23] = \ ; + assign pipe_tx_6_sigs[22] = \ ; + assign pipe_tx_6_sigs[21] = \ ; + assign pipe_tx_6_sigs[20] = \ ; + assign pipe_tx_6_sigs[19] = \ ; + assign pipe_tx_6_sigs[18] = \ ; + assign pipe_tx_6_sigs[17] = \ ; + assign pipe_tx_6_sigs[16] = \ ; + assign pipe_tx_6_sigs[15] = \ ; + assign pipe_tx_6_sigs[14] = \ ; + assign pipe_tx_6_sigs[13] = \ ; + assign pipe_tx_6_sigs[12] = \ ; + assign pipe_tx_6_sigs[11] = \ ; + assign pipe_tx_6_sigs[10] = \ ; + assign pipe_tx_6_sigs[9] = \ ; + assign pipe_tx_6_sigs[8] = \ ; + assign pipe_tx_6_sigs[7] = \ ; + assign pipe_tx_6_sigs[6] = \ ; + assign pipe_tx_6_sigs[5] = \ ; + assign pipe_tx_6_sigs[4] = \ ; + assign pipe_tx_6_sigs[3] = \ ; + assign pipe_tx_6_sigs[2] = \ ; + assign pipe_tx_6_sigs[1] = \ ; + assign pipe_tx_6_sigs[0] = \ ; + assign pipe_tx_7_sigs[24] = \ ; + assign pipe_tx_7_sigs[23] = \ ; + assign pipe_tx_7_sigs[22] = \ ; + assign pipe_tx_7_sigs[21] = \ ; + assign pipe_tx_7_sigs[20] = \ ; + assign pipe_tx_7_sigs[19] = \ ; + assign pipe_tx_7_sigs[18] = \ ; + assign pipe_tx_7_sigs[17] = \ ; + assign pipe_tx_7_sigs[16] = \ ; + assign pipe_tx_7_sigs[15] = \ ; + assign pipe_tx_7_sigs[14] = \ ; + assign pipe_tx_7_sigs[13] = \ ; + assign pipe_tx_7_sigs[12] = \ ; + assign pipe_tx_7_sigs[11] = \ ; + assign pipe_tx_7_sigs[10] = \ ; + assign pipe_tx_7_sigs[9] = \ ; + assign pipe_tx_7_sigs[8] = \ ; + assign pipe_tx_7_sigs[7] = \ ; + assign pipe_tx_7_sigs[6] = \ ; + assign pipe_tx_7_sigs[5] = \ ; + assign pipe_tx_7_sigs[4] = \ ; + assign pipe_tx_7_sigs[3] = \ ; + assign pipe_tx_7_sigs[2] = \ ; + assign pipe_tx_7_sigs[1] = \ ; + assign pipe_tx_7_sigs[0] = \ ; + assign pipe_txdlysresetdone[3] = \ ; + assign pipe_txdlysresetdone[2] = \ ; + assign pipe_txdlysresetdone[1] = \ ; + assign pipe_txdlysresetdone[0] = \ ; + assign pipe_txphaligndone[3] = \ ; + assign pipe_txphaligndone[2] = \ ; + assign pipe_txphaligndone[1] = \ ; + assign pipe_txphaligndone[0] = \ ; + assign pipe_txphinitdone[3] = \ ; + assign pipe_txphinitdone[2] = \ ; + assign pipe_txphinitdone[1] = \ ; + assign pipe_txphinitdone[0] = \ ; + assign qpll_drp_clk = \ ; + assign qpll_drp_gen3 = \ ; + assign qpll_drp_ovrd = \ ; + assign qpll_drp_rst_n = \ ; + assign qpll_drp_start = \ ; + assign qpll_qplld = \ ; + assign qpll_qpllreset[1] = \ ; + assign qpll_qpllreset[0] = \ ; + assign startup_cfgclk = \ ; + assign startup_cfgmclk = \ ; + assign startup_eos = \ ; + assign startup_preq = \ ; + assign user_app_rdy = \ ; + assign user_clk_out = pipe_userclk2_in; + GND GND + (.G(\ )); + pcie_7x_0_pcie_7x_0_core_top inst + (.cfg_aer_ecrc_check_en(cfg_aer_ecrc_check_en), + .cfg_aer_ecrc_gen_en(cfg_aer_ecrc_gen_en), + .cfg_aer_interrupt_msgnum(cfg_aer_interrupt_msgnum), + .cfg_aer_rooterr_corr_err_received(cfg_aer_rooterr_corr_err_received), + .cfg_aer_rooterr_corr_err_reporting_en(cfg_aer_rooterr_corr_err_reporting_en), + .cfg_aer_rooterr_fatal_err_received(cfg_aer_rooterr_fatal_err_received), + .cfg_aer_rooterr_fatal_err_reporting_en(cfg_aer_rooterr_fatal_err_reporting_en), + .cfg_aer_rooterr_non_fatal_err_received(cfg_aer_rooterr_non_fatal_err_received), + .cfg_aer_rooterr_non_fatal_err_reporting_en(cfg_aer_rooterr_non_fatal_err_reporting_en), + .cfg_bridge_serr_en(cfg_bridge_serr_en), + .cfg_bus_number(cfg_bus_number), + .cfg_command({\^cfg_command [10],\^cfg_command [8],\^cfg_command [2:0]}), + .cfg_dcommand(\^cfg_dcommand ), + .cfg_dcommand2(\^cfg_dcommand2 ), + .cfg_device_number(cfg_device_number), + .cfg_ds_bus_number(cfg_ds_bus_number), + .cfg_ds_device_number(cfg_ds_device_number), + .cfg_ds_function_number(cfg_ds_function_number), + .cfg_dsn(cfg_dsn), + .cfg_dstatus(\^cfg_dstatus ), + .cfg_err_aer_headerlog(cfg_err_aer_headerlog), + .cfg_err_aer_headerlog_set(cfg_err_aer_headerlog_set), + .cfg_err_atomic_egress_blocked(cfg_err_atomic_egress_blocked), + .cfg_err_cor(cfg_err_cor), + .cfg_err_cpl_abort(cfg_err_cpl_abort), + .cfg_err_cpl_rdy(cfg_err_cpl_rdy), + .cfg_err_cpl_timeout(cfg_err_cpl_timeout), + .cfg_err_cpl_unexpect(cfg_err_cpl_unexpect), + .cfg_err_ecrc(cfg_err_ecrc), + .cfg_err_internal_cor(cfg_err_internal_cor), + .cfg_err_internal_uncor(cfg_err_internal_uncor), + .cfg_err_locked(cfg_err_locked), + .cfg_err_malformed(cfg_err_malformed), + .cfg_err_mc_blocked(cfg_err_mc_blocked), + .cfg_err_norecovery(cfg_err_norecovery), + .cfg_err_poisoned(cfg_err_poisoned), + .cfg_err_posted(cfg_err_posted), + .cfg_err_tlp_cpl_header(cfg_err_tlp_cpl_header), + .cfg_err_ur(cfg_err_ur), + .cfg_function_number(cfg_function_number), + .cfg_interrupt(cfg_interrupt), + .cfg_interrupt_assert(cfg_interrupt_assert), + .cfg_interrupt_di(cfg_interrupt_di), + .cfg_interrupt_do(cfg_interrupt_do), + .cfg_interrupt_mmenable(cfg_interrupt_mmenable), + .cfg_interrupt_msienable(cfg_interrupt_msienable), + .cfg_interrupt_msixenable(cfg_interrupt_msixenable), + .cfg_interrupt_msixfm(cfg_interrupt_msixfm), + .cfg_interrupt_rdy(cfg_interrupt_rdy), + .cfg_interrupt_stat(cfg_interrupt_stat), + .cfg_lcommand({\^cfg_lcommand [11:3],\^cfg_lcommand [1:0]}), + .cfg_lstatus({\^cfg_lstatus [15:13],\^cfg_lstatus [11],\^cfg_lstatus [7:4],\^cfg_lstatus [1:0]}), + .cfg_mgmt_byte_en(cfg_mgmt_byte_en), + .cfg_mgmt_di(cfg_mgmt_di), + .cfg_mgmt_do(cfg_mgmt_do), + .cfg_mgmt_dwaddr(cfg_mgmt_dwaddr), + .cfg_mgmt_rd_en(cfg_mgmt_rd_en), + .cfg_mgmt_rd_wr_done(cfg_mgmt_rd_wr_done), + .cfg_mgmt_wr_en(cfg_mgmt_wr_en), + .cfg_mgmt_wr_readonly(cfg_mgmt_wr_readonly), + .cfg_mgmt_wr_rw1c_as_rw(cfg_mgmt_wr_rw1c_as_rw), + .cfg_msg_data(cfg_msg_data), + .cfg_msg_received(cfg_msg_received), + .cfg_msg_received_assert_int_a(cfg_msg_received_assert_int_a), + .cfg_msg_received_assert_int_b(cfg_msg_received_assert_int_b), + .cfg_msg_received_assert_int_c(cfg_msg_received_assert_int_c), + .cfg_msg_received_assert_int_d(cfg_msg_received_assert_int_d), + .cfg_msg_received_deassert_int_a(cfg_msg_received_deassert_int_a), + .cfg_msg_received_deassert_int_b(cfg_msg_received_deassert_int_b), + .cfg_msg_received_deassert_int_c(cfg_msg_received_deassert_int_c), + .cfg_msg_received_deassert_int_d(cfg_msg_received_deassert_int_d), + .cfg_msg_received_err_cor(cfg_msg_received_err_cor), + .cfg_msg_received_err_fatal(cfg_msg_received_err_fatal), + .cfg_msg_received_err_non_fatal(cfg_msg_received_err_non_fatal), + .cfg_msg_received_pm_as_nak(cfg_msg_received_pm_as_nak), + .cfg_msg_received_pm_pme(cfg_msg_received_pm_pme), + .cfg_msg_received_pme_to_ack(cfg_msg_received_pme_to_ack), + .cfg_msg_received_setslotpowerlimit(cfg_msg_received_setslotpowerlimit), + .cfg_pcie_link_state(cfg_pcie_link_state), + .cfg_pciecap_interrupt_msgnum(cfg_pciecap_interrupt_msgnum), + .cfg_pm_force_state(cfg_pm_force_state), + .cfg_pm_force_state_en(cfg_pm_force_state_en), + .cfg_pm_halt_aspm_l0s(cfg_pm_halt_aspm_l0s), + .cfg_pm_halt_aspm_l1(cfg_pm_halt_aspm_l1), + .cfg_pm_wake(cfg_pm_wake), + .cfg_pmcsr_pme_en(cfg_pmcsr_pme_en), + .cfg_pmcsr_pme_status(cfg_pmcsr_pme_status), + .cfg_pmcsr_powerstate(cfg_pmcsr_powerstate), + .cfg_received_func_lvl_rst(cfg_received_func_lvl_rst), + .cfg_root_control_pme_int_en(cfg_root_control_pme_int_en), + .cfg_root_control_syserr_corr_err_en(cfg_root_control_syserr_corr_err_en), + .cfg_root_control_syserr_fatal_err_en(cfg_root_control_syserr_fatal_err_en), + .cfg_root_control_syserr_non_fatal_err_en(cfg_root_control_syserr_non_fatal_err_en), + .cfg_slot_control_electromech_il_ctl_pulse(cfg_slot_control_electromech_il_ctl_pulse), + .cfg_to_turnoff(cfg_to_turnoff), + .cfg_trn_pending(cfg_trn_pending), + .cfg_turnoff_ok(cfg_turnoff_ok), + .cfg_vc_tcvc_map(cfg_vc_tcvc_map), + .fc_cpld(fc_cpld), + .fc_cplh(fc_cplh), + .fc_npd(fc_npd), + .fc_nph(fc_nph), + .fc_pd(fc_pd), + .fc_ph(fc_ph), + .fc_sel(fc_sel), + .gen3_reg(pipe_gen3_out), + .m_axis_rx_tdata(m_axis_rx_tdata), + .m_axis_rx_tkeep(\^m_axis_rx_tkeep ), + .m_axis_rx_tlast(m_axis_rx_tlast), + .m_axis_rx_tready(m_axis_rx_tready), + .m_axis_rx_tuser({\^m_axis_rx_tuser [21],\^m_axis_rx_tuser [19],\^m_axis_rx_tuser [17],\^m_axis_rx_tuser [14],\^m_axis_rx_tuser [8:0]}), + .m_axis_rx_tvalid(m_axis_rx_tvalid), + .pci_exp_rxn(pci_exp_rxn), + .pci_exp_rxp(pci_exp_rxp), + .pci_exp_txn(pci_exp_txn), + .pci_exp_txp(pci_exp_txp), + .pcie_drp_addr(pcie_drp_addr), + .pcie_drp_clk(pcie_drp_clk), + .pcie_drp_di(pcie_drp_di), + .pcie_drp_do(pcie_drp_do), + .pcie_drp_en(pcie_drp_en), + .pcie_drp_rdy(pcie_drp_rdy), + .pcie_drp_we(pcie_drp_we), + .pipe_dclk_in(pipe_dclk_in), + .pipe_mmcm_lock_in(pipe_mmcm_lock_in), + .pipe_oobclk_in(pipe_oobclk_in), + .pipe_pclk_in(pipe_pclk_in), + .pipe_pclk_sel_out(pipe_pclk_sel_out), + .pipe_rxoutclk_out(pipe_rxoutclk_out), + .pipe_rxusrclk_in(pipe_rxusrclk_in), + .pipe_txoutclk_out(pipe_txoutclk_out), + .pipe_userclk1_in(pipe_userclk1_in), + .pipe_userclk2_in(pipe_userclk2_in), + .pl_directed_change_done(pl_directed_change_done), + .pl_directed_link_auton(pl_directed_link_auton), + .pl_directed_link_change(pl_directed_link_change), + .pl_directed_link_speed(pl_directed_link_speed), + .pl_directed_link_width(pl_directed_link_width), + .pl_downstream_deemph_source(pl_downstream_deemph_source), + .pl_initial_link_width(pl_initial_link_width), + .pl_lane_reversal_mode(pl_lane_reversal_mode), + .pl_link_gen2_cap(pl_link_gen2_cap), + .pl_link_partner_gen2_supported(pl_link_partner_gen2_supported), + .pl_link_upcfg_cap(pl_link_upcfg_cap), + .pl_ltssm_state(pl_ltssm_state), + .pl_phy_lnk_up(pl_phy_lnk_up), + .pl_received_hot_rst(pl_received_hot_rst), + .pl_rx_pm_state(pl_rx_pm_state), + .pl_sel_lnk_rate(pl_sel_lnk_rate), + .pl_sel_lnk_width(pl_sel_lnk_width), + .pl_transmit_hot_rst(pl_transmit_hot_rst), + .pl_tx_pm_state(pl_tx_pm_state), + .pl_upstream_prefer_deemph(pl_upstream_prefer_deemph), + .rx_np_ok(rx_np_ok), + .rx_np_req(rx_np_req), + .s_axis_tx_tdata(s_axis_tx_tdata), + .s_axis_tx_tkeep(s_axis_tx_tkeep[7]), + .s_axis_tx_tlast(s_axis_tx_tlast), + .s_axis_tx_tready(s_axis_tx_tready), + .s_axis_tx_tuser(s_axis_tx_tuser), + .s_axis_tx_tvalid(s_axis_tx_tvalid), + .sys_clk(sys_clk), + .sys_rst_n(sys_rst_n), + .tx_buf_av(tx_buf_av), + .tx_cfg_gnt(tx_cfg_gnt), + .tx_cfg_req(tx_cfg_req), + .tx_err_drop(tx_err_drop), + .user_lnk_up(user_lnk_up), + .user_reset_out(user_reset_out)); +endmodule + +module pcie_7x_0_pcie_7x_0_pcie_7x + (user_reset_int_reg, + src_in, + cfg_mgmt_rd_wr_done, + cfg_err_aer_headerlog_set, + cfg_err_cpl_rdy, + cfg_interrupt_rdy, + E, + cfg_msg_received, + cfg_received_func_lvl_rst, + trn_in_packet_reg, + trn_reof, + trn_rsof, + trn_rsrc_dsc, + ppm_L1_thrtl_reg, + cfg_pcie_link_state, + dsc_detect, + rsrc_rdy_filtered, + trn_rsrc_dsc_prev0, + tcfg_req_trig, + trn_tcfg_req, + pcie_drp_clk_0, + trn_tbuf_av, + tbuf_av_min_trig, + lnk_up_thrtl_reg, + trn_tdst_rdy, + cfg_aer_ecrc_check_en, + cfg_aer_ecrc_gen_en, + cfg_aer_rooterr_corr_err_received, + cfg_aer_rooterr_corr_err_reporting_en, + cfg_aer_rooterr_fatal_err_received, + cfg_aer_rooterr_fatal_err_reporting_en, + cfg_aer_rooterr_non_fatal_err_received, + cfg_aer_rooterr_non_fatal_err_reporting_en, + cfg_bridge_serr_en, + cfg_command, + cfg_dcommand2, + cfg_dcommand, + cfg_dstatus, + cfg_interrupt_msienable, + cfg_interrupt_msixenable, + cfg_interrupt_msixfm, + cfg_lcommand, + cfg_lstatus, + cfg_msg_received_assert_int_a, + cfg_msg_received_assert_int_b, + cfg_msg_received_assert_int_c, + cfg_msg_received_assert_int_d, + cfg_msg_received_deassert_int_a, + cfg_msg_received_deassert_int_b, + cfg_msg_received_deassert_int_c, + cfg_msg_received_deassert_int_d, + cfg_msg_received_err_cor, + cfg_msg_received_err_fatal, + cfg_msg_received_err_non_fatal, + cfg_msg_received_pm_as_nak, + cfg_to_turnoff, + cfg_msg_received_pme_to_ack, + cfg_msg_received_pm_pme, + cfg_msg_received_setslotpowerlimit, + cfg_pmcsr_pme_en, + cfg_pmcsr_pme_status, + cfg_root_control_pme_int_en, + cfg_root_control_syserr_corr_err_en, + cfg_root_control_syserr_fatal_err_en, + cfg_root_control_syserr_non_fatal_err_en, + cfg_slot_control_electromech_il_ctl_pulse, + pcie_drp_rdy, + pipe_rx0_polarity, + pipe_rx1_polarity, + pipe_rx2_polarity, + pipe_rx3_polarity, + pipe_tx0_compliance, + pipe_tx0_elec_idle, + pipe_tx1_compliance, + pipe_tx1_elec_idle, + pipe_tx2_compliance, + pipe_tx2_elec_idle, + pipe_tx3_compliance, + pipe_tx3_elec_idle, + pipe_tx_deemph, + pipe_tx_rate, + pipe_tx_rcvr_det, + pl_directed_change_done, + pl_link_gen2_cap, + pl_link_partner_gen2_supported, + pl_link_upcfg_cap, + pl_received_hot_rst, + pl_sel_lnk_rate, + trn_lnk_up, + trn_recrc_err, + trn_rerrfwd, + tx_err_drop, + fc_cpld, + fc_npd, + fc_pd, + pcie_drp_clk_1, + cfg_msg_data, + pcie_drp_do, + pipe_tx0_data, + pipe_tx1_data, + pipe_tx2_data, + pipe_tx3_data, + cfg_pmcsr_powerstate, + pipe_tx0_char_is_k, + pipe_tx0_powerdown, + pipe_tx1_char_is_k, + pipe_tx1_powerdown, + pipe_tx2_char_is_k, + pipe_tx2_powerdown, + pipe_tx3_char_is_k, + pipe_tx3_powerdown, + pl_lane_reversal_mode, + pl_rx_pm_state, + pl_sel_lnk_width, + pcie_drp_clk_2, + cfg_interrupt_mmenable, + pipe_tx_margin, + pl_initial_link_width, + pl_tx_pm_state, + cfg_mgmt_do, + pl_ltssm_state, + cfg_vc_tcvc_map, + cfg_interrupt_do, + fc_cplh, + fc_nph, + fc_ph, + trn_rbar_hit, + bridge_reset_int, + pl_phy_lnk_up, + cfg_trn_pending, + cfg_mgmt_wr_rw1c_as_rw, + cfg_mgmt_wr_readonly, + cfg_mgmt_wr_en, + cfg_mgmt_rd_en, + cfg_err_malformed, + cfg_err_cor, + cfg_err_ur, + cfg_err_ecrc, + cfg_err_cpl_timeout, + cfg_err_cpl_abort, + cfg_err_cpl_unexpect, + cfg_err_poisoned, + cfg_err_atomic_egress_blocked, + cfg_err_mc_blocked, + cfg_err_internal_uncor, + cfg_err_internal_cor, + cfg_err_posted, + cfg_err_locked, + cfg_err_norecovery, + cfg_interrupt, + cfg_interrupt_assert, + cfg_interrupt_stat, + cfg_pm_halt_aspm_l0s, + cfg_pm_halt_aspm_l1, + cfg_pm_force_state_en, + cfg_pm_wake, + trn_in_packet, + trn_rdst_rdy, + ppm_L1_trig, + ppm_L1_thrtl, + trn_rsrc_dsc_d, + reg_dsc_detect, + reg_tcfg_gnt, + lnk_up_thrtl, + out, + pipe_userclk1_in, + cfg_pm_turnoff_ok_n, + pcie_drp_clk, + pcie_drp_en, + pcie_drp_we, + pipe_pclk_in, + pipe_rx0_chanisaligned, + pipe_rx0_elec_idle, + pipe_rx0_phy_status, + pipe_rx0_valid, + pipe_rx1_chanisaligned, + pipe_rx1_elec_idle, + pipe_rx1_phy_status, + pipe_rx1_valid, + pipe_rx2_chanisaligned, + pipe_rx2_elec_idle, + pipe_rx2_phy_status, + pipe_rx2_valid, + pipe_rx3_chanisaligned, + pipe_rx3_elec_idle, + pipe_rx3_phy_status, + pipe_rx3_valid, + pl_directed_link_auton, + pl_directed_link_speed, + pl_downstream_deemph_source, + pl_transmit_hot_rst, + pl_upstream_prefer_deemph, + sys_rst_n, + rx_np_ok, + rx_np_req, + trn_tcfg_gnt, + cfg_aer_ecrc_check_en_0, + trn_teof, + trn_tsof, + trn_tsrc_rdy, + pipe_userclk2_in, + cfg_err_aer_headerlog, + trn_td, + pcie_drp_di, + Q, + cfg_aer_ecrc_check_en_1, + cfg_aer_ecrc_check_en_2, + cfg_aer_ecrc_check_en_3, + cfg_pm_force_state, + cfg_aer_ecrc_check_en_4, + cfg_aer_ecrc_check_en_5, + cfg_aer_ecrc_check_en_6, + cfg_aer_ecrc_check_en_7, + pl_directed_link_change, + pl_directed_link_width, + trn_trem, + cfg_ds_function_number, + cfg_aer_ecrc_check_en_8, + cfg_aer_ecrc_check_en_9, + cfg_aer_ecrc_check_en_10, + cfg_aer_ecrc_check_en_11, + fc_sel, + cfg_mgmt_di, + cfg_mgmt_byte_en_n, + cfg_err_tlp_cpl_header, + cfg_aer_interrupt_msgnum, + cfg_ds_device_number, + cfg_pciecap_interrupt_msgnum, + cfg_dsn, + cfg_ds_bus_number, + cfg_interrupt_di, + pcie_drp_addr, + cfg_mgmt_dwaddr); + output user_reset_int_reg; + output src_in; + output cfg_mgmt_rd_wr_done; + output cfg_err_aer_headerlog_set; + output cfg_err_cpl_rdy; + output cfg_interrupt_rdy; + output [0:0]E; + output cfg_msg_received; + output cfg_received_func_lvl_rst; + output trn_in_packet_reg; + output trn_reof; + output trn_rsof; + output trn_rsrc_dsc; + output ppm_L1_thrtl_reg; + output [2:0]cfg_pcie_link_state; + output dsc_detect; + output rsrc_rdy_filtered; + output trn_rsrc_dsc_prev0; + output tcfg_req_trig; + output trn_tcfg_req; + output pcie_drp_clk_0; + output [5:0]trn_tbuf_av; + output tbuf_av_min_trig; + output lnk_up_thrtl_reg; + output trn_tdst_rdy; + output cfg_aer_ecrc_check_en; + output cfg_aer_ecrc_gen_en; + output cfg_aer_rooterr_corr_err_received; + output cfg_aer_rooterr_corr_err_reporting_en; + output cfg_aer_rooterr_fatal_err_received; + output cfg_aer_rooterr_fatal_err_reporting_en; + output cfg_aer_rooterr_non_fatal_err_received; + output cfg_aer_rooterr_non_fatal_err_reporting_en; + output cfg_bridge_serr_en; + output [4:0]cfg_command; + output [11:0]cfg_dcommand2; + output [14:0]cfg_dcommand; + output [3:0]cfg_dstatus; + output cfg_interrupt_msienable; + output cfg_interrupt_msixenable; + output cfg_interrupt_msixfm; + output [10:0]cfg_lcommand; + output [9:0]cfg_lstatus; + output cfg_msg_received_assert_int_a; + output cfg_msg_received_assert_int_b; + output cfg_msg_received_assert_int_c; + output cfg_msg_received_assert_int_d; + output cfg_msg_received_deassert_int_a; + output cfg_msg_received_deassert_int_b; + output cfg_msg_received_deassert_int_c; + output cfg_msg_received_deassert_int_d; + output cfg_msg_received_err_cor; + output cfg_msg_received_err_fatal; + output cfg_msg_received_err_non_fatal; + output cfg_msg_received_pm_as_nak; + output cfg_to_turnoff; + output cfg_msg_received_pme_to_ack; + output cfg_msg_received_pm_pme; + output cfg_msg_received_setslotpowerlimit; + output cfg_pmcsr_pme_en; + output cfg_pmcsr_pme_status; + output cfg_root_control_pme_int_en; + output cfg_root_control_syserr_corr_err_en; + output cfg_root_control_syserr_fatal_err_en; + output cfg_root_control_syserr_non_fatal_err_en; + output cfg_slot_control_electromech_il_ctl_pulse; + output pcie_drp_rdy; + output pipe_rx0_polarity; + output pipe_rx1_polarity; + output pipe_rx2_polarity; + output pipe_rx3_polarity; + output pipe_tx0_compliance; + output pipe_tx0_elec_idle; + output pipe_tx1_compliance; + output pipe_tx1_elec_idle; + output pipe_tx2_compliance; + output pipe_tx2_elec_idle; + output pipe_tx3_compliance; + output pipe_tx3_elec_idle; + output pipe_tx_deemph; + output pipe_tx_rate; + output pipe_tx_rcvr_det; + output pl_directed_change_done; + output pl_link_gen2_cap; + output pl_link_partner_gen2_supported; + output pl_link_upcfg_cap; + output pl_received_hot_rst; + output pl_sel_lnk_rate; + output trn_lnk_up; + output trn_recrc_err; + output trn_rerrfwd; + output tx_err_drop; + output [11:0]fc_cpld; + output [11:0]fc_npd; + output [11:0]fc_pd; + output [63:0]pcie_drp_clk_1; + output [15:0]cfg_msg_data; + output [15:0]pcie_drp_do; + output [15:0]pipe_tx0_data; + output [15:0]pipe_tx1_data; + output [15:0]pipe_tx2_data; + output [15:0]pipe_tx3_data; + output [1:0]cfg_pmcsr_powerstate; + output [1:0]pipe_tx0_char_is_k; + output [1:0]pipe_tx0_powerdown; + output [1:0]pipe_tx1_char_is_k; + output [1:0]pipe_tx1_powerdown; + output [1:0]pipe_tx2_char_is_k; + output [1:0]pipe_tx2_powerdown; + output [1:0]pipe_tx3_char_is_k; + output [1:0]pipe_tx3_powerdown; + output [1:0]pl_lane_reversal_mode; + output [1:0]pl_rx_pm_state; + output [1:0]pl_sel_lnk_width; + output [0:0]pcie_drp_clk_2; + output [2:0]cfg_interrupt_mmenable; + output [2:0]pipe_tx_margin; + output [2:0]pl_initial_link_width; + output [2:0]pl_tx_pm_state; + output [31:0]cfg_mgmt_do; + output [5:0]pl_ltssm_state; + output [6:0]cfg_vc_tcvc_map; + output [7:0]cfg_interrupt_do; + output [7:0]fc_cplh; + output [7:0]fc_nph; + output [7:0]fc_ph; + output [6:0]trn_rbar_hit; + input bridge_reset_int; + input pl_phy_lnk_up; + input cfg_trn_pending; + input cfg_mgmt_wr_rw1c_as_rw; + input cfg_mgmt_wr_readonly; + input cfg_mgmt_wr_en; + input cfg_mgmt_rd_en; + input cfg_err_malformed; + input cfg_err_cor; + input cfg_err_ur; + input cfg_err_ecrc; + input cfg_err_cpl_timeout; + input cfg_err_cpl_abort; + input cfg_err_cpl_unexpect; + input cfg_err_poisoned; + input cfg_err_atomic_egress_blocked; + input cfg_err_mc_blocked; + input cfg_err_internal_uncor; + input cfg_err_internal_cor; + input cfg_err_posted; + input cfg_err_locked; + input cfg_err_norecovery; + input cfg_interrupt; + input cfg_interrupt_assert; + input cfg_interrupt_stat; + input cfg_pm_halt_aspm_l0s; + input cfg_pm_halt_aspm_l1; + input cfg_pm_force_state_en; + input cfg_pm_wake; + input trn_in_packet; + input trn_rdst_rdy; + input ppm_L1_trig; + input ppm_L1_thrtl; + input trn_rsrc_dsc_d; + input reg_dsc_detect; + input reg_tcfg_gnt; + input lnk_up_thrtl; + input out; + input pipe_userclk1_in; + input cfg_pm_turnoff_ok_n; + input pcie_drp_clk; + input pcie_drp_en; + input pcie_drp_we; + input pipe_pclk_in; + input pipe_rx0_chanisaligned; + input pipe_rx0_elec_idle; + input pipe_rx0_phy_status; + input pipe_rx0_valid; + input pipe_rx1_chanisaligned; + input pipe_rx1_elec_idle; + input pipe_rx1_phy_status; + input pipe_rx1_valid; + input pipe_rx2_chanisaligned; + input pipe_rx2_elec_idle; + input pipe_rx2_phy_status; + input pipe_rx2_valid; + input pipe_rx3_chanisaligned; + input pipe_rx3_elec_idle; + input pipe_rx3_phy_status; + input pipe_rx3_valid; + input pl_directed_link_auton; + input pl_directed_link_speed; + input pl_downstream_deemph_source; + input pl_transmit_hot_rst; + input pl_upstream_prefer_deemph; + input sys_rst_n; + input rx_np_ok; + input rx_np_req; + input trn_tcfg_gnt; + input [3:0]cfg_aer_ecrc_check_en_0; + input trn_teof; + input trn_tsof; + input trn_tsrc_rdy; + input pipe_userclk2_in; + input [127:0]cfg_err_aer_headerlog; + input [63:0]trn_td; + input [15:0]pcie_drp_di; + input [15:0]Q; + input [15:0]cfg_aer_ecrc_check_en_1; + input [15:0]cfg_aer_ecrc_check_en_2; + input [15:0]cfg_aer_ecrc_check_en_3; + input [1:0]cfg_pm_force_state; + input [1:0]cfg_aer_ecrc_check_en_4; + input [1:0]cfg_aer_ecrc_check_en_5; + input [1:0]cfg_aer_ecrc_check_en_6; + input [1:0]cfg_aer_ecrc_check_en_7; + input [1:0]pl_directed_link_change; + input [1:0]pl_directed_link_width; + input [0:0]trn_trem; + input [2:0]cfg_ds_function_number; + input [2:0]cfg_aer_ecrc_check_en_8; + input [2:0]cfg_aer_ecrc_check_en_9; + input [2:0]cfg_aer_ecrc_check_en_10; + input [2:0]cfg_aer_ecrc_check_en_11; + input [2:0]fc_sel; + input [31:0]cfg_mgmt_di; + input [3:0]cfg_mgmt_byte_en_n; + input [47:0]cfg_err_tlp_cpl_header; + input [4:0]cfg_aer_interrupt_msgnum; + input [4:0]cfg_ds_device_number; + input [4:0]cfg_pciecap_interrupt_msgnum; + input [63:0]cfg_dsn; + input [7:0]cfg_ds_bus_number; + input [7:0]cfg_interrupt_di; + input [8:0]pcie_drp_addr; + input [9:0]cfg_mgmt_dwaddr; + + wire [0:0]E; + wire [15:0]Q; + wire bridge_reset_int; + wire cfg_aer_ecrc_check_en; + wire [3:0]cfg_aer_ecrc_check_en_0; + wire [15:0]cfg_aer_ecrc_check_en_1; + wire [2:0]cfg_aer_ecrc_check_en_10; + wire [2:0]cfg_aer_ecrc_check_en_11; + wire [15:0]cfg_aer_ecrc_check_en_2; + wire [15:0]cfg_aer_ecrc_check_en_3; + wire [1:0]cfg_aer_ecrc_check_en_4; + wire [1:0]cfg_aer_ecrc_check_en_5; + wire [1:0]cfg_aer_ecrc_check_en_6; + wire [1:0]cfg_aer_ecrc_check_en_7; + wire [2:0]cfg_aer_ecrc_check_en_8; + wire [2:0]cfg_aer_ecrc_check_en_9; + wire cfg_aer_ecrc_gen_en; + wire [4:0]cfg_aer_interrupt_msgnum; + wire cfg_aer_rooterr_corr_err_received; + wire cfg_aer_rooterr_corr_err_reporting_en; + wire cfg_aer_rooterr_fatal_err_received; + wire cfg_aer_rooterr_fatal_err_reporting_en; + wire cfg_aer_rooterr_non_fatal_err_received; + wire cfg_aer_rooterr_non_fatal_err_reporting_en; + wire cfg_bridge_serr_en; + wire [4:0]cfg_command; + wire [14:0]cfg_dcommand; + wire [11:0]cfg_dcommand2; + wire [7:0]cfg_ds_bus_number; + wire [4:0]cfg_ds_device_number; + wire [2:0]cfg_ds_function_number; + wire [63:0]cfg_dsn; + wire [3:0]cfg_dstatus; + wire [127:0]cfg_err_aer_headerlog; + wire cfg_err_aer_headerlog_set; + wire cfg_err_aer_headerlog_set_n; + wire cfg_err_atomic_egress_blocked; + wire cfg_err_cor; + wire cfg_err_cpl_abort; + wire cfg_err_cpl_rdy; + wire cfg_err_cpl_rdy_n; + wire cfg_err_cpl_timeout; + wire cfg_err_cpl_unexpect; + wire cfg_err_ecrc; + wire cfg_err_internal_cor; + wire cfg_err_internal_uncor; + wire cfg_err_locked; + wire cfg_err_malformed; + wire cfg_err_mc_blocked; + wire cfg_err_norecovery; + wire cfg_err_poisoned; + wire cfg_err_posted; + wire [47:0]cfg_err_tlp_cpl_header; + wire cfg_err_ur; + wire cfg_interrupt; + wire cfg_interrupt_assert; + wire [7:0]cfg_interrupt_di; + wire [7:0]cfg_interrupt_do; + wire [2:0]cfg_interrupt_mmenable; + wire cfg_interrupt_msienable; + wire cfg_interrupt_msixenable; + wire cfg_interrupt_msixfm; + wire cfg_interrupt_rdy; + wire cfg_interrupt_rdy_n; + wire cfg_interrupt_stat; + wire [10:0]cfg_lcommand; + wire [9:0]cfg_lstatus; + wire [3:0]cfg_mgmt_byte_en_n; + wire [31:0]cfg_mgmt_di; + wire [31:0]cfg_mgmt_do; + wire [9:0]cfg_mgmt_dwaddr; + wire cfg_mgmt_rd_en; + wire cfg_mgmt_rd_wr_done; + wire cfg_mgmt_rd_wr_done_n; + wire cfg_mgmt_wr_en; + wire cfg_mgmt_wr_readonly; + wire cfg_mgmt_wr_rw1c_as_rw; + wire [15:0]cfg_msg_data; + wire cfg_msg_received; + wire cfg_msg_received_assert_int_a; + wire cfg_msg_received_assert_int_b; + wire cfg_msg_received_assert_int_c; + wire cfg_msg_received_assert_int_d; + wire cfg_msg_received_deassert_int_a; + wire cfg_msg_received_deassert_int_b; + wire cfg_msg_received_deassert_int_c; + wire cfg_msg_received_deassert_int_d; + wire cfg_msg_received_err_cor; + wire cfg_msg_received_err_fatal; + wire cfg_msg_received_err_non_fatal; + wire cfg_msg_received_pm_as_nak; + wire cfg_msg_received_pm_pme; + wire cfg_msg_received_pme_to_ack; + wire cfg_msg_received_setslotpowerlimit; + wire [2:0]cfg_pcie_link_state; + wire [4:0]cfg_pciecap_interrupt_msgnum; + wire [1:0]cfg_pm_force_state; + wire cfg_pm_force_state_en; + wire cfg_pm_halt_aspm_l0s; + wire cfg_pm_halt_aspm_l1; + wire cfg_pm_turnoff_ok_n; + wire cfg_pm_wake; + wire cfg_pmcsr_pme_en; + wire cfg_pmcsr_pme_status; + wire [1:0]cfg_pmcsr_powerstate; + wire cfg_received_func_lvl_rst; + wire cfg_received_func_lvl_rst_n; + wire cfg_root_control_pme_int_en; + wire cfg_root_control_syserr_corr_err_en; + wire cfg_root_control_syserr_fatal_err_en; + wire cfg_root_control_syserr_non_fatal_err_en; + wire cfg_slot_control_electromech_il_ctl_pulse; + wire cfg_to_turnoff; + wire cfg_trn_pending; + wire [6:0]cfg_vc_tcvc_map; + wire dsc_detect; + wire [11:0]fc_cpld; + wire [7:0]fc_cplh; + wire [11:0]fc_npd; + wire [7:0]fc_nph; + wire [11:0]fc_pd; + wire [7:0]fc_ph; + wire [2:0]fc_sel; + wire lnk_up_thrtl; + wire lnk_up_thrtl_reg; + wire [12:0]mim_rx_raddr; + wire [67:0]mim_rx_rdata; + wire mim_rx_ren; + wire [12:0]mim_rx_waddr; + wire [67:0]mim_rx_wdata; + wire mim_rx_wen; + wire [12:0]mim_tx_raddr; + wire [68:0]mim_tx_rdata; + wire mim_tx_ren; + wire [12:0]mim_tx_waddr; + wire [68:0]mim_tx_wdata; + wire mim_tx_wen; + wire out; + wire pcie_block_i_i_10_n_0; + wire pcie_block_i_i_11_n_0; + wire pcie_block_i_i_12_n_0; + wire pcie_block_i_i_13_n_0; + wire pcie_block_i_i_14_n_0; + wire pcie_block_i_i_15_n_0; + wire pcie_block_i_i_16_n_0; + wire pcie_block_i_i_17_n_0; + wire pcie_block_i_i_18_n_0; + wire pcie_block_i_i_19_n_0; + wire pcie_block_i_i_1_n_0; + wire pcie_block_i_i_20_n_0; + wire pcie_block_i_i_21_n_0; + wire pcie_block_i_i_22_n_0; + wire pcie_block_i_i_23_n_0; + wire pcie_block_i_i_24_n_0; + wire pcie_block_i_i_25_n_0; + wire pcie_block_i_i_27_n_0; + wire pcie_block_i_i_28_n_0; + wire pcie_block_i_i_2_n_0; + wire pcie_block_i_i_3_n_0; + wire pcie_block_i_i_4_n_0; + wire pcie_block_i_i_5_n_0; + wire pcie_block_i_i_6_n_0; + wire pcie_block_i_i_7_n_0; + wire pcie_block_i_i_8_n_0; + wire pcie_block_i_i_9_n_0; + wire pcie_block_i_n_100; + wire pcie_block_i_n_101; + wire pcie_block_i_n_102; + wire pcie_block_i_n_103; + wire pcie_block_i_n_104; + wire pcie_block_i_n_105; + wire pcie_block_i_n_106; + wire pcie_block_i_n_107; + wire pcie_block_i_n_108; + wire pcie_block_i_n_1097; + wire pcie_block_i_n_1098; + wire pcie_block_i_n_1099; + wire pcie_block_i_n_1100; + wire pcie_block_i_n_1101; + wire pcie_block_i_n_1102; + wire pcie_block_i_n_1103; + wire pcie_block_i_n_1143; + wire pcie_block_i_n_140; + wire pcie_block_i_n_141; + wire pcie_block_i_n_142; + wire pcie_block_i_n_143; + wire pcie_block_i_n_144; + wire pcie_block_i_n_145; + wire pcie_block_i_n_146; + wire pcie_block_i_n_155; + wire pcie_block_i_n_156; + wire pcie_block_i_n_157; + wire pcie_block_i_n_158; + wire pcie_block_i_n_159; + wire pcie_block_i_n_160; + wire pcie_block_i_n_169; + wire pcie_block_i_n_172; + wire pcie_block_i_n_173; + wire pcie_block_i_n_174; + wire pcie_block_i_n_175; + wire pcie_block_i_n_176; + wire pcie_block_i_n_177; + wire pcie_block_i_n_178; + wire pcie_block_i_n_179; + wire pcie_block_i_n_180; + wire pcie_block_i_n_181; + wire pcie_block_i_n_182; + wire pcie_block_i_n_183; + wire pcie_block_i_n_184; + wire pcie_block_i_n_185; + wire pcie_block_i_n_186; + wire pcie_block_i_n_187; + wire pcie_block_i_n_188; + wire pcie_block_i_n_189; + wire pcie_block_i_n_190; + wire pcie_block_i_n_191; + wire pcie_block_i_n_192; + wire pcie_block_i_n_193; + wire pcie_block_i_n_194; + wire pcie_block_i_n_195; + wire pcie_block_i_n_610; + wire pcie_block_i_n_611; + wire pcie_block_i_n_618; + wire pcie_block_i_n_619; + wire pcie_block_i_n_687; + wire pcie_block_i_n_688; + wire pcie_block_i_n_689; + wire pcie_block_i_n_690; + wire pcie_block_i_n_691; + wire pcie_block_i_n_704; + wire pcie_block_i_n_705; + wire pcie_block_i_n_706; + wire pcie_block_i_n_707; + wire pcie_block_i_n_708; + wire pcie_block_i_n_709; + wire pcie_block_i_n_710; + wire pcie_block_i_n_711; + wire pcie_block_i_n_712; + wire pcie_block_i_n_713; + wire pcie_block_i_n_714; + wire pcie_block_i_n_715; + wire pcie_block_i_n_716; + wire pcie_block_i_n_717; + wire pcie_block_i_n_718; + wire pcie_block_i_n_719; + wire pcie_block_i_n_72; + wire pcie_block_i_n_720; + wire pcie_block_i_n_721; + wire pcie_block_i_n_722; + wire pcie_block_i_n_723; + wire pcie_block_i_n_724; + wire pcie_block_i_n_725; + wire pcie_block_i_n_726; + wire pcie_block_i_n_727; + wire pcie_block_i_n_728; + wire pcie_block_i_n_729; + wire pcie_block_i_n_730; + wire pcie_block_i_n_731; + wire pcie_block_i_n_732; + wire pcie_block_i_n_733; + wire pcie_block_i_n_734; + wire pcie_block_i_n_735; + wire pcie_block_i_n_736; + wire pcie_block_i_n_737; + wire pcie_block_i_n_738; + wire pcie_block_i_n_739; + wire pcie_block_i_n_740; + wire pcie_block_i_n_741; + wire pcie_block_i_n_742; + wire pcie_block_i_n_743; + wire pcie_block_i_n_744; + wire pcie_block_i_n_745; + wire pcie_block_i_n_746; + wire pcie_block_i_n_747; + wire pcie_block_i_n_748; + wire pcie_block_i_n_749; + wire pcie_block_i_n_75; + wire pcie_block_i_n_750; + wire pcie_block_i_n_751; + wire pcie_block_i_n_752; + wire pcie_block_i_n_753; + wire pcie_block_i_n_754; + wire pcie_block_i_n_755; + wire pcie_block_i_n_756; + wire pcie_block_i_n_757; + wire pcie_block_i_n_758; + wire pcie_block_i_n_759; + wire pcie_block_i_n_76; + wire pcie_block_i_n_760; + wire pcie_block_i_n_761; + wire pcie_block_i_n_762; + wire pcie_block_i_n_763; + wire pcie_block_i_n_764; + wire pcie_block_i_n_765; + wire pcie_block_i_n_766; + wire pcie_block_i_n_767; + wire pcie_block_i_n_768; + wire pcie_block_i_n_769; + wire pcie_block_i_n_77; + wire pcie_block_i_n_770; + wire pcie_block_i_n_771; + wire pcie_block_i_n_772; + wire pcie_block_i_n_773; + wire pcie_block_i_n_774; + wire pcie_block_i_n_775; + wire pcie_block_i_n_776; + wire pcie_block_i_n_777; + wire pcie_block_i_n_778; + wire pcie_block_i_n_779; + wire pcie_block_i_n_78; + wire pcie_block_i_n_780; + wire pcie_block_i_n_781; + wire pcie_block_i_n_782; + wire pcie_block_i_n_783; + wire pcie_block_i_n_784; + wire pcie_block_i_n_785; + wire pcie_block_i_n_786; + wire pcie_block_i_n_787; + wire pcie_block_i_n_788; + wire pcie_block_i_n_789; + wire pcie_block_i_n_790; + wire pcie_block_i_n_791; + wire pcie_block_i_n_792; + wire pcie_block_i_n_793; + wire pcie_block_i_n_794; + wire pcie_block_i_n_795; + wire pcie_block_i_n_796; + wire pcie_block_i_n_797; + wire pcie_block_i_n_798; + wire pcie_block_i_n_799; + wire pcie_block_i_n_800; + wire pcie_block_i_n_801; + wire pcie_block_i_n_802; + wire pcie_block_i_n_803; + wire pcie_block_i_n_804; + wire pcie_block_i_n_805; + wire pcie_block_i_n_806; + wire pcie_block_i_n_807; + wire pcie_block_i_n_808; + wire pcie_block_i_n_809; + wire pcie_block_i_n_810; + wire pcie_block_i_n_811; + wire pcie_block_i_n_812; + wire pcie_block_i_n_813; + wire pcie_block_i_n_814; + wire pcie_block_i_n_815; + wire pcie_block_i_n_816; + wire pcie_block_i_n_817; + wire pcie_block_i_n_818; + wire pcie_block_i_n_819; + wire pcie_block_i_n_820; + wire pcie_block_i_n_821; + wire pcie_block_i_n_822; + wire pcie_block_i_n_823; + wire pcie_block_i_n_824; + wire pcie_block_i_n_825; + wire pcie_block_i_n_826; + wire pcie_block_i_n_827; + wire pcie_block_i_n_828; + wire pcie_block_i_n_829; + wire pcie_block_i_n_830; + wire pcie_block_i_n_831; + wire pcie_block_i_n_832; + wire pcie_block_i_n_833; + wire pcie_block_i_n_834; + wire pcie_block_i_n_835; + wire pcie_block_i_n_836; + wire pcie_block_i_n_837; + wire pcie_block_i_n_838; + wire pcie_block_i_n_839; + wire pcie_block_i_n_84; + wire pcie_block_i_n_840; + wire pcie_block_i_n_841; + wire pcie_block_i_n_842; + wire pcie_block_i_n_843; + wire pcie_block_i_n_844; + wire pcie_block_i_n_845; + wire pcie_block_i_n_846; + wire pcie_block_i_n_847; + wire pcie_block_i_n_848; + wire pcie_block_i_n_849; + wire pcie_block_i_n_85; + wire pcie_block_i_n_850; + wire pcie_block_i_n_851; + wire pcie_block_i_n_852; + wire pcie_block_i_n_853; + wire pcie_block_i_n_854; + wire pcie_block_i_n_855; + wire pcie_block_i_n_856; + wire pcie_block_i_n_857; + wire pcie_block_i_n_858; + wire pcie_block_i_n_859; + wire pcie_block_i_n_86; + wire pcie_block_i_n_860; + wire pcie_block_i_n_861; + wire pcie_block_i_n_862; + wire pcie_block_i_n_863; + wire pcie_block_i_n_864; + wire pcie_block_i_n_865; + wire pcie_block_i_n_866; + wire pcie_block_i_n_867; + wire pcie_block_i_n_868; + wire pcie_block_i_n_869; + wire pcie_block_i_n_87; + wire pcie_block_i_n_870; + wire pcie_block_i_n_871; + wire pcie_block_i_n_872; + wire pcie_block_i_n_873; + wire pcie_block_i_n_874; + wire pcie_block_i_n_875; + wire pcie_block_i_n_876; + wire pcie_block_i_n_877; + wire pcie_block_i_n_878; + wire pcie_block_i_n_879; + wire pcie_block_i_n_88; + wire pcie_block_i_n_880; + wire pcie_block_i_n_881; + wire pcie_block_i_n_882; + wire pcie_block_i_n_883; + wire pcie_block_i_n_884; + wire pcie_block_i_n_885; + wire pcie_block_i_n_886; + wire pcie_block_i_n_887; + wire pcie_block_i_n_888; + wire pcie_block_i_n_889; + wire pcie_block_i_n_89; + wire pcie_block_i_n_890; + wire pcie_block_i_n_891; + wire pcie_block_i_n_892; + wire pcie_block_i_n_893; + wire pcie_block_i_n_894; + wire pcie_block_i_n_895; + wire pcie_block_i_n_896; + wire pcie_block_i_n_897; + wire pcie_block_i_n_898; + wire pcie_block_i_n_899; + wire pcie_block_i_n_90; + wire pcie_block_i_n_900; + wire pcie_block_i_n_901; + wire pcie_block_i_n_902; + wire pcie_block_i_n_903; + wire pcie_block_i_n_904; + wire pcie_block_i_n_905; + wire pcie_block_i_n_906; + wire pcie_block_i_n_907; + wire pcie_block_i_n_908; + wire pcie_block_i_n_909; + wire pcie_block_i_n_91; + wire pcie_block_i_n_910; + wire pcie_block_i_n_911; + wire pcie_block_i_n_912; + wire pcie_block_i_n_913; + wire pcie_block_i_n_914; + wire pcie_block_i_n_915; + wire pcie_block_i_n_916; + wire pcie_block_i_n_917; + wire pcie_block_i_n_918; + wire pcie_block_i_n_919; + wire pcie_block_i_n_92; + wire pcie_block_i_n_920; + wire pcie_block_i_n_921; + wire pcie_block_i_n_922; + wire pcie_block_i_n_923; + wire pcie_block_i_n_924; + wire pcie_block_i_n_925; + wire pcie_block_i_n_926; + wire pcie_block_i_n_927; + wire pcie_block_i_n_928; + wire pcie_block_i_n_929; + wire pcie_block_i_n_93; + wire pcie_block_i_n_930; + wire pcie_block_i_n_931; + wire pcie_block_i_n_932; + wire pcie_block_i_n_933; + wire pcie_block_i_n_934; + wire pcie_block_i_n_935; + wire pcie_block_i_n_936; + wire pcie_block_i_n_937; + wire pcie_block_i_n_938; + wire pcie_block_i_n_939; + wire pcie_block_i_n_94; + wire pcie_block_i_n_940; + wire pcie_block_i_n_941; + wire pcie_block_i_n_942; + wire pcie_block_i_n_943; + wire pcie_block_i_n_944; + wire pcie_block_i_n_945; + wire pcie_block_i_n_946; + wire pcie_block_i_n_947; + wire pcie_block_i_n_948; + wire pcie_block_i_n_949; + wire pcie_block_i_n_95; + wire pcie_block_i_n_950; + wire pcie_block_i_n_951; + wire pcie_block_i_n_952; + wire pcie_block_i_n_953; + wire pcie_block_i_n_954; + wire pcie_block_i_n_955; + wire pcie_block_i_n_956; + wire pcie_block_i_n_957; + wire pcie_block_i_n_958; + wire pcie_block_i_n_959; + wire pcie_block_i_n_96; + wire pcie_block_i_n_98; + wire pcie_block_i_n_99; + wire [8:0]pcie_drp_addr; + wire pcie_drp_clk; + wire pcie_drp_clk_0; + wire [63:0]pcie_drp_clk_1; + wire [0:0]pcie_drp_clk_2; + wire [15:0]pcie_drp_di; + wire [15:0]pcie_drp_do; + wire pcie_drp_en; + wire pcie_drp_rdy; + wire pcie_drp_we; + wire pipe_pclk_in; + wire pipe_rx0_chanisaligned; + wire pipe_rx0_elec_idle; + wire pipe_rx0_phy_status; + wire pipe_rx0_polarity; + wire pipe_rx0_valid; + wire pipe_rx1_chanisaligned; + wire pipe_rx1_elec_idle; + wire pipe_rx1_phy_status; + wire pipe_rx1_polarity; + wire pipe_rx1_valid; + wire pipe_rx2_chanisaligned; + wire pipe_rx2_elec_idle; + wire pipe_rx2_phy_status; + wire pipe_rx2_polarity; + wire pipe_rx2_valid; + wire pipe_rx3_chanisaligned; + wire pipe_rx3_elec_idle; + wire pipe_rx3_phy_status; + wire pipe_rx3_polarity; + wire pipe_rx3_valid; + wire pipe_rx4_polarity; + wire pipe_rx5_polarity; + wire pipe_rx6_polarity; + wire pipe_rx7_polarity; + wire [1:0]pipe_tx0_char_is_k; + wire pipe_tx0_compliance; + wire [15:0]pipe_tx0_data; + wire pipe_tx0_elec_idle; + wire [1:0]pipe_tx0_powerdown; + wire [1:0]pipe_tx1_char_is_k; + wire pipe_tx1_compliance; + wire [15:0]pipe_tx1_data; + wire pipe_tx1_elec_idle; + wire [1:0]pipe_tx1_powerdown; + wire [1:0]pipe_tx2_char_is_k; + wire pipe_tx2_compliance; + wire [15:0]pipe_tx2_data; + wire pipe_tx2_elec_idle; + wire [1:0]pipe_tx2_powerdown; + wire [1:0]pipe_tx3_char_is_k; + wire pipe_tx3_compliance; + wire [15:0]pipe_tx3_data; + wire pipe_tx3_elec_idle; + wire [1:0]pipe_tx3_powerdown; + wire [1:0]pipe_tx4_char_is_k; + wire pipe_tx4_compliance; + wire [15:0]pipe_tx4_data; + wire pipe_tx4_elec_idle; + wire [1:0]pipe_tx4_powerdown; + wire [1:0]pipe_tx5_char_is_k; + wire pipe_tx5_compliance; + wire [15:0]pipe_tx5_data; + wire pipe_tx5_elec_idle; + wire [1:0]pipe_tx5_powerdown; + wire [1:0]pipe_tx6_char_is_k; + wire pipe_tx6_compliance; + wire [15:0]pipe_tx6_data; + wire pipe_tx6_elec_idle; + wire [1:0]pipe_tx6_powerdown; + wire [1:0]pipe_tx7_char_is_k; + wire pipe_tx7_compliance; + wire [15:0]pipe_tx7_data; + wire pipe_tx7_elec_idle; + wire [1:0]pipe_tx7_powerdown; + wire pipe_tx_deemph; + wire [2:0]pipe_tx_margin; + wire pipe_tx_rate; + wire pipe_tx_rcvr_det; + wire pipe_userclk1_in; + wire pipe_userclk2_in; + wire pl_directed_change_done; + wire pl_directed_link_auton; + wire [1:0]pl_directed_link_change; + wire pl_directed_link_speed; + wire [1:0]pl_directed_link_width; + wire pl_downstream_deemph_source; + wire [2:0]pl_initial_link_width; + wire [1:0]pl_lane_reversal_mode; + wire pl_link_gen2_cap; + wire pl_link_partner_gen2_supported; + wire pl_link_upcfg_cap; + wire [5:0]pl_ltssm_state; + wire pl_phy_lnk_up; + wire pl_phy_lnk_up_n; + wire pl_received_hot_rst; + wire [1:0]pl_rx_pm_state; + wire pl_sel_lnk_rate; + wire [1:0]pl_sel_lnk_width; + wire pl_transmit_hot_rst; + wire [2:0]pl_tx_pm_state; + wire pl_upstream_prefer_deemph; + wire ppm_L1_thrtl; + wire ppm_L1_thrtl_reg; + wire ppm_L1_trig; + wire reg_dsc_detect; + wire reg_tcfg_gnt; + wire rsrc_rdy_filtered; + wire rx_np_ok; + wire rx_np_req; + wire src_in; + wire sys_rst_n; + wire tbuf_av_min_trig; + wire tcfg_req_trig; + wire trn_in_packet; + wire trn_in_packet_reg; + wire trn_lnk_up; + wire [6:0]trn_rbar_hit; + wire [127:64]trn_rd; + wire trn_rdst_rdy; + wire trn_recrc_err; + wire trn_reof; + wire trn_rerrfwd; + wire [1:1]trn_rrem; + wire trn_rsof; + wire trn_rsrc_dsc; + wire trn_rsrc_dsc_d; + wire trn_rsrc_dsc_prev0; + wire trn_rsrc_rdy; + wire [5:0]trn_tbuf_av; + wire trn_tcfg_gnt; + wire trn_tcfg_req; + wire [63:0]trn_td; + wire trn_tdst_rdy; + wire trn_teof; + wire [0:0]trn_trem; + wire trn_tsof; + wire trn_tsrc_rdy; + wire tx_err_drop; + wire user_reset_int_reg; + wire user_rst_n; + wire [3:1]NLW_pcie_block_i_TRNTDSTRDY_UNCONNECTED; + + LUT1 #( + .INIT(2'h1)) + \cfg_bus_number_d[7]_i_2 + (.I0(cfg_msg_received), + .O(E)); + LUT1 #( + .INIT(2'h1)) + cfg_err_aer_headerlog_set_INST_0 + (.I0(cfg_err_aer_headerlog_set_n), + .O(cfg_err_aer_headerlog_set)); + LUT1 #( + .INIT(2'h1)) + cfg_err_cpl_rdy_INST_0 + (.I0(cfg_err_cpl_rdy_n), + .O(cfg_err_cpl_rdy)); + LUT1 #( + .INIT(2'h1)) + cfg_interrupt_rdy_INST_0 + (.I0(cfg_interrupt_rdy_n), + .O(cfg_interrupt_rdy)); + LUT1 #( + .INIT(2'h1)) + cfg_mgmt_rd_wr_done_INST_0 + (.I0(cfg_mgmt_rd_wr_done_n), + .O(cfg_mgmt_rd_wr_done)); + LUT1 #( + .INIT(2'h1)) + cfg_received_func_lvl_rst_INST_0 + (.I0(cfg_received_func_lvl_rst_n), + .O(cfg_received_func_lvl_rst)); + LUT3 #( + .INIT(8'h4F)) + lnk_up_thrtl_i_1 + (.I0(trn_tdst_rdy), + .I1(lnk_up_thrtl), + .I2(out), + .O(lnk_up_thrtl_reg)); + LUT6 #( + .INIT(64'h0000000027000000)) + m_axis_rx_tvalid_i_2 + (.I0(trn_reof), + .I1(trn_rdst_rdy), + .I2(trn_rsof), + .I3(trn_rsrc_dsc), + .I4(trn_in_packet), + .I5(trn_rsrc_dsc_d), + .O(dsc_detect)); + (* BOX_TYPE = "PRIMITIVE" *) + PCIE_2_1 #( + .AER_BASE_PTR(12'h000), + .AER_CAP_ECRC_CHECK_CAPABLE("FALSE"), + .AER_CAP_ECRC_GEN_CAPABLE("FALSE"), + .AER_CAP_ID(16'h0001), + .AER_CAP_MULTIHEADER("FALSE"), + .AER_CAP_NEXTPTR(12'h000), + .AER_CAP_ON("FALSE"), + .AER_CAP_OPTIONAL_ERR_SUPPORT(24'h000000), + .AER_CAP_PERMIT_ROOTERR_UPDATE("FALSE"), + .AER_CAP_VERSION(4'h1), + .ALLOW_X8_GEN2("FALSE"), + .BAR0(32'hFFFF0000), + .BAR1(32'h00000000), + .BAR2(32'h00000000), + .BAR3(32'h00000000), + .BAR4(32'h00000000), + .BAR5(32'h00000000), + .CAPABILITIES_PTR(8'h40), + .CARDBUS_CIS_POINTER(32'h00000000), + .CFG_ECRC_ERR_CPLSTAT(0), + .CLASS_CODE(24'h050000), + .CMD_INTX_IMPLEMENTED("TRUE"), + .CPL_TIMEOUT_DISABLE_SUPPORTED("FALSE"), + .CPL_TIMEOUT_RANGES_SUPPORTED(4'h2), + .CRM_MODULE_RSTS(7'h00), + .DEV_CAP2_ARI_FORWARDING_SUPPORTED("FALSE"), + .DEV_CAP2_ATOMICOP32_COMPLETER_SUPPORTED("FALSE"), + .DEV_CAP2_ATOMICOP64_COMPLETER_SUPPORTED("FALSE"), + .DEV_CAP2_ATOMICOP_ROUTING_SUPPORTED("FALSE"), + .DEV_CAP2_CAS128_COMPLETER_SUPPORTED("FALSE"), + .DEV_CAP2_ENDEND_TLP_PREFIX_SUPPORTED("FALSE"), + .DEV_CAP2_EXTENDED_FMT_FIELD_SUPPORTED("FALSE"), + .DEV_CAP2_LTR_MECHANISM_SUPPORTED("FALSE"), + .DEV_CAP2_MAX_ENDEND_TLP_PREFIXES(2'h0), + .DEV_CAP2_NO_RO_ENABLED_PRPR_PASSING("FALSE"), + .DEV_CAP2_TPH_COMPLETER_SUPPORTED(2'h0), + .DEV_CAP_ENABLE_SLOT_PWR_LIMIT_SCALE("TRUE"), + .DEV_CAP_ENABLE_SLOT_PWR_LIMIT_VALUE("TRUE"), + .DEV_CAP_ENDPOINT_L0S_LATENCY(0), + .DEV_CAP_ENDPOINT_L1_LATENCY(7), + .DEV_CAP_EXT_TAG_SUPPORTED("FALSE"), + .DEV_CAP_FUNCTION_LEVEL_RESET_CAPABLE("FALSE"), + .DEV_CAP_MAX_PAYLOAD_SUPPORTED(3), + .DEV_CAP_PHANTOM_FUNCTIONS_SUPPORT(0), + .DEV_CAP_ROLE_BASED_ERROR("TRUE"), + .DEV_CAP_RSVD_14_12(0), + .DEV_CAP_RSVD_17_16(0), + .DEV_CAP_RSVD_31_29(0), + .DEV_CONTROL_AUX_POWER_SUPPORTED("FALSE"), + .DEV_CONTROL_EXT_TAG_DEFAULT("FALSE"), + .DISABLE_ASPM_L1_TIMER("FALSE"), + .DISABLE_BAR_FILTERING("FALSE"), + .DISABLE_ERR_MSG("FALSE"), + .DISABLE_ID_CHECK("FALSE"), + .DISABLE_LANE_REVERSAL("TRUE"), + .DISABLE_LOCKED_FILTER("FALSE"), + .DISABLE_PPM_FILTER("FALSE"), + .DISABLE_RX_POISONED_RESP("FALSE"), + .DISABLE_RX_TC_FILTER("FALSE"), + .DISABLE_SCRAMBLING("FALSE"), + .DNSTREAM_LINK_NUM(8'h00), + .DSN_BASE_PTR(12'h100), + .DSN_CAP_ID(16'h0003), + .DSN_CAP_NEXTPTR(12'h000), + .DSN_CAP_ON("TRUE"), + .DSN_CAP_VERSION(4'h1), + .ENABLE_MSG_ROUTE(11'h000), + .ENABLE_RX_TD_ECRC_TRIM("FALSE"), + .ENDEND_TLP_PREFIX_FORWARDING_SUPPORTED("FALSE"), + .ENTER_RVRY_EI_L0("TRUE"), + .EXIT_LOOPBACK_ON_EI("TRUE"), + .EXPANSION_ROM(32'h00000000), + .EXT_CFG_CAP_PTR(6'h3F), + .EXT_CFG_XP_CAP_PTR(10'h3FF), + .HEADER_TYPE(8'h00), + .INFER_EI(5'h00), + .INTERRUPT_PIN(8'h01), + .INTERRUPT_STAT_AUTO("TRUE"), + .IS_SWITCH("FALSE"), + .LAST_CONFIG_DWORD(10'h3FF), + .LINK_CAP_ASPM_OPTIONALITY("FALSE"), + .LINK_CAP_ASPM_SUPPORT(1), + .LINK_CAP_CLOCK_POWER_MANAGEMENT("FALSE"), + .LINK_CAP_DLL_LINK_ACTIVE_REPORTING_CAP("FALSE"), + .LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN1(7), + .LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN2(7), + .LINK_CAP_L0S_EXIT_LATENCY_GEN1(7), + .LINK_CAP_L0S_EXIT_LATENCY_GEN2(7), + .LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN1(7), + .LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN2(7), + .LINK_CAP_L1_EXIT_LATENCY_GEN1(7), + .LINK_CAP_L1_EXIT_LATENCY_GEN2(7), + .LINK_CAP_LINK_BANDWIDTH_NOTIFICATION_CAP("FALSE"), + .LINK_CAP_MAX_LINK_SPEED(4'h2), + .LINK_CAP_MAX_LINK_WIDTH(6'h04), + .LINK_CAP_RSVD_23(0), + .LINK_CAP_SURPRISE_DOWN_ERROR_CAPABLE("FALSE"), + .LINK_CONTROL_RCB(0), + .LINK_CTRL2_DEEMPHASIS("FALSE"), + .LINK_CTRL2_HW_AUTONOMOUS_SPEED_DISABLE("FALSE"), + .LINK_CTRL2_TARGET_LINK_SPEED(4'h2), + .LINK_STATUS_SLOT_CLOCK_CONFIG("TRUE"), + .LL_ACK_TIMEOUT(15'h0000), + .LL_ACK_TIMEOUT_EN("FALSE"), + .LL_ACK_TIMEOUT_FUNC(0), + .LL_REPLAY_TIMEOUT(15'h0000), + .LL_REPLAY_TIMEOUT_EN("FALSE"), + .LL_REPLAY_TIMEOUT_FUNC(1), + .LTSSM_MAX_LINK_WIDTH(6'h04), + .MPS_FORCE("FALSE"), + .MSIX_BASE_PTR(8'h9C), + .MSIX_CAP_ID(8'h11), + .MSIX_CAP_NEXTPTR(8'h00), + .MSIX_CAP_ON("FALSE"), + .MSIX_CAP_PBA_BIR(0), + .MSIX_CAP_PBA_OFFSET(29'h00000000), + .MSIX_CAP_TABLE_BIR(0), + .MSIX_CAP_TABLE_OFFSET(29'h00000000), + .MSIX_CAP_TABLE_SIZE(11'h000), + .MSI_BASE_PTR(8'h48), + .MSI_CAP_64_BIT_ADDR_CAPABLE("TRUE"), + .MSI_CAP_ID(8'h05), + .MSI_CAP_MULTIMSGCAP(0), + .MSI_CAP_MULTIMSG_EXTENSION(0), + .MSI_CAP_NEXTPTR(8'h60), + .MSI_CAP_ON("FALSE"), + .MSI_CAP_PER_VECTOR_MASKING_CAPABLE("FALSE"), + .N_FTS_COMCLK_GEN1(255), + .N_FTS_COMCLK_GEN2(255), + .N_FTS_GEN1(255), + .N_FTS_GEN2(255), + .PCIE_BASE_PTR(8'h60), + .PCIE_CAP_CAPABILITY_ID(8'h10), + .PCIE_CAP_CAPABILITY_VERSION(4'h2), + .PCIE_CAP_DEVICE_PORT_TYPE(4'h0), + .PCIE_CAP_NEXTPTR(8'h00), + .PCIE_CAP_ON("TRUE"), + .PCIE_CAP_RSVD_15_14(0), + .PCIE_CAP_SLOT_IMPLEMENTED("FALSE"), + .PCIE_REVISION(2), + .PL_AUTO_CONFIG(0), + .PL_FAST_TRAIN("TRUE"), + .PM_ASPML0S_TIMEOUT(15'h0000), + .PM_ASPML0S_TIMEOUT_EN("FALSE"), + .PM_ASPML0S_TIMEOUT_FUNC(0), + .PM_ASPM_FASTEXIT("FALSE"), + .PM_BASE_PTR(8'h40), + .PM_CAP_AUXCURRENT(0), + .PM_CAP_D1SUPPORT("FALSE"), + .PM_CAP_D2SUPPORT("FALSE"), + .PM_CAP_DSI("FALSE"), + .PM_CAP_ID(8'h01), + .PM_CAP_NEXTPTR(8'h60), + .PM_CAP_ON("TRUE"), + .PM_CAP_PMESUPPORT(5'h0F), + .PM_CAP_PME_CLOCK("FALSE"), + .PM_CAP_RSVD_04(0), + .PM_CAP_VERSION(3), + .PM_CSR_B2B3("FALSE"), + .PM_CSR_BPCCEN("FALSE"), + .PM_CSR_NOSOFTRST("TRUE"), + .PM_DATA0(8'h00), + .PM_DATA1(8'h00), + .PM_DATA2(8'h00), + .PM_DATA3(8'h00), + .PM_DATA4(8'h00), + .PM_DATA5(8'h00), + .PM_DATA6(8'h00), + .PM_DATA7(8'h00), + .PM_DATA_SCALE0(2'h0), + .PM_DATA_SCALE1(2'h0), + .PM_DATA_SCALE2(2'h0), + .PM_DATA_SCALE3(2'h0), + .PM_DATA_SCALE4(2'h0), + .PM_DATA_SCALE5(2'h0), + .PM_DATA_SCALE6(2'h0), + .PM_DATA_SCALE7(2'h0), + .PM_MF("FALSE"), + .RBAR_BASE_PTR(12'h000), + .RBAR_CAP_CONTROL_ENCODEDBAR0(5'h00), + .RBAR_CAP_CONTROL_ENCODEDBAR1(5'h00), + .RBAR_CAP_CONTROL_ENCODEDBAR2(5'h00), + .RBAR_CAP_CONTROL_ENCODEDBAR3(5'h00), + .RBAR_CAP_CONTROL_ENCODEDBAR4(5'h00), + .RBAR_CAP_CONTROL_ENCODEDBAR5(5'h00), + .RBAR_CAP_ID(16'h0015), + .RBAR_CAP_INDEX0(3'h0), + .RBAR_CAP_INDEX1(3'h0), + .RBAR_CAP_INDEX2(3'h0), + .RBAR_CAP_INDEX3(3'h0), + .RBAR_CAP_INDEX4(3'h0), + .RBAR_CAP_INDEX5(3'h0), + .RBAR_CAP_NEXTPTR(12'h000), + .RBAR_CAP_ON("FALSE"), + .RBAR_CAP_SUP0(32'h00000001), + .RBAR_CAP_SUP1(32'h00000001), + .RBAR_CAP_SUP2(32'h00000001), + .RBAR_CAP_SUP3(32'h00000001), + .RBAR_CAP_SUP4(32'h00000001), + .RBAR_CAP_SUP5(32'h00000001), + .RBAR_CAP_VERSION(4'h1), + .RBAR_NUM(3'h0), + .RECRC_CHK(0), + .RECRC_CHK_TRIM("FALSE"), + .ROOT_CAP_CRS_SW_VISIBILITY("FALSE"), + .RP_AUTO_SPD(2'h1), + .RP_AUTO_SPD_LOOPCNT(5'h1F), + .SELECT_DLL_IF("FALSE"), + .SIM_VERSION("1.0"), + .SLOT_CAP_ATT_BUTTON_PRESENT("FALSE"), + .SLOT_CAP_ATT_INDICATOR_PRESENT("FALSE"), + .SLOT_CAP_ELEC_INTERLOCK_PRESENT("FALSE"), + .SLOT_CAP_HOTPLUG_CAPABLE("FALSE"), + .SLOT_CAP_HOTPLUG_SURPRISE("FALSE"), + .SLOT_CAP_MRL_SENSOR_PRESENT("FALSE"), + .SLOT_CAP_NO_CMD_COMPLETED_SUPPORT("FALSE"), + .SLOT_CAP_PHYSICAL_SLOT_NUM(13'h0000), + .SLOT_CAP_POWER_CONTROLLER_PRESENT("FALSE"), + .SLOT_CAP_POWER_INDICATOR_PRESENT("FALSE"), + .SLOT_CAP_SLOT_POWER_LIMIT_SCALE(0), + .SLOT_CAP_SLOT_POWER_LIMIT_VALUE(8'h00), + .SPARE_BIT0(0), + .SPARE_BIT1(0), + .SPARE_BIT2(0), + .SPARE_BIT3(0), + .SPARE_BIT4(0), + .SPARE_BIT5(0), + .SPARE_BIT6(0), + .SPARE_BIT7(0), + .SPARE_BIT8(0), + .SPARE_BYTE0(8'h00), + .SPARE_BYTE1(8'h00), + .SPARE_BYTE2(8'h00), + .SPARE_BYTE3(8'h00), + .SPARE_WORD0(32'h00000000), + .SPARE_WORD1(32'h00000000), + .SPARE_WORD2(32'h00000000), + .SPARE_WORD3(32'h00000000), + .SSL_MESSAGE_AUTO("FALSE"), + .TECRC_EP_INV("FALSE"), + .TL_RBYPASS("FALSE"), + .TL_RX_RAM_RADDR_LATENCY(0), + .TL_RX_RAM_RDATA_LATENCY(2), + .TL_RX_RAM_WRITE_LATENCY(0), + .TL_TFC_DISABLE("FALSE"), + .TL_TX_CHECKS_DISABLE("FALSE"), + .TL_TX_RAM_RADDR_LATENCY(0), + .TL_TX_RAM_RDATA_LATENCY(2), + .TL_TX_RAM_WRITE_LATENCY(0), + .TRN_DW("FALSE"), + .TRN_NP_FC("TRUE"), + .UPCONFIG_CAPABLE("TRUE"), + .UPSTREAM_FACING("TRUE"), + .UR_ATOMIC("FALSE"), + .UR_CFG1("TRUE"), + .UR_INV_REQ("TRUE"), + .UR_PRS_RESPONSE("TRUE"), + .USER_CLK2_DIV2("FALSE"), + .USER_CLK_FREQ(3), + .USE_RID_PINS("FALSE"), + .VC0_CPL_INFINITE("TRUE"), + .VC0_RX_RAM_LIMIT(13'h0FFF), + .VC0_TOTAL_CREDITS_CD(973), + .VC0_TOTAL_CREDITS_CH(36), + .VC0_TOTAL_CREDITS_NPD(24), + .VC0_TOTAL_CREDITS_NPH(12), + .VC0_TOTAL_CREDITS_PD(949), + .VC0_TOTAL_CREDITS_PH(32), + .VC0_TX_LASTPACKET(30), + .VC_BASE_PTR(12'h000), + .VC_CAP_ID(16'h0002), + .VC_CAP_NEXTPTR(12'h000), + .VC_CAP_ON("FALSE"), + .VC_CAP_REJECT_SNOOP_TRANSACTIONS("FALSE"), + .VC_CAP_VERSION(4'h1), + .VSEC_BASE_PTR(12'h000), + .VSEC_CAP_HDR_ID(16'h1234), + .VSEC_CAP_HDR_LENGTH(12'h018), + .VSEC_CAP_HDR_REVISION(4'h1), + .VSEC_CAP_ID(16'h000B), + .VSEC_CAP_IS_LINK_VISIBLE("TRUE"), + .VSEC_CAP_NEXTPTR(12'h000), + .VSEC_CAP_ON("FALSE"), + .VSEC_CAP_VERSION(4'h1)) + pcie_block_i + (.CFGAERECRCCHECKEN(cfg_aer_ecrc_check_en), + .CFGAERECRCGENEN(cfg_aer_ecrc_gen_en), + .CFGAERINTERRUPTMSGNUM(cfg_aer_interrupt_msgnum), + .CFGAERROOTERRCORRERRRECEIVED(cfg_aer_rooterr_corr_err_received), + .CFGAERROOTERRCORRERRREPORTINGEN(cfg_aer_rooterr_corr_err_reporting_en), + .CFGAERROOTERRFATALERRRECEIVED(cfg_aer_rooterr_fatal_err_received), + .CFGAERROOTERRFATALERRREPORTINGEN(cfg_aer_rooterr_fatal_err_reporting_en), + .CFGAERROOTERRNONFATALERRRECEIVED(cfg_aer_rooterr_non_fatal_err_received), + .CFGAERROOTERRNONFATALERRREPORTINGEN(cfg_aer_rooterr_non_fatal_err_reporting_en), + .CFGBRIDGESERREN(cfg_bridge_serr_en), + .CFGCOMMANDBUSMASTERENABLE(cfg_command[2]), + .CFGCOMMANDINTERRUPTDISABLE(cfg_command[4]), + .CFGCOMMANDIOENABLE(cfg_command[0]), + .CFGCOMMANDMEMENABLE(cfg_command[1]), + .CFGCOMMANDSERREN(cfg_command[3]), + .CFGDEVCONTROL2ARIFORWARDEN(cfg_dcommand2[5]), + .CFGDEVCONTROL2ATOMICEGRESSBLOCK(cfg_dcommand2[7]), + .CFGDEVCONTROL2ATOMICREQUESTEREN(cfg_dcommand2[6]), + .CFGDEVCONTROL2CPLTIMEOUTDIS(cfg_dcommand2[4]), + .CFGDEVCONTROL2CPLTIMEOUTVAL(cfg_dcommand2[3:0]), + .CFGDEVCONTROL2IDOCPLEN(cfg_dcommand2[9]), + .CFGDEVCONTROL2IDOREQEN(cfg_dcommand2[8]), + .CFGDEVCONTROL2LTREN(cfg_dcommand2[10]), + .CFGDEVCONTROL2TLPPREFIXBLOCK(cfg_dcommand2[11]), + .CFGDEVCONTROLAUXPOWEREN(cfg_dcommand[10]), + .CFGDEVCONTROLCORRERRREPORTINGEN(cfg_dcommand[0]), + .CFGDEVCONTROLENABLERO(cfg_dcommand[4]), + .CFGDEVCONTROLEXTTAGEN(cfg_dcommand[8]), + .CFGDEVCONTROLFATALERRREPORTINGEN(cfg_dcommand[2]), + .CFGDEVCONTROLMAXPAYLOAD(cfg_dcommand[7:5]), + .CFGDEVCONTROLMAXREADREQ(cfg_dcommand[14:12]), + .CFGDEVCONTROLNONFATALREPORTINGEN(cfg_dcommand[1]), + .CFGDEVCONTROLNOSNOOPEN(cfg_dcommand[11]), + .CFGDEVCONTROLPHANTOMEN(cfg_dcommand[9]), + .CFGDEVCONTROLURERRREPORTINGEN(cfg_dcommand[3]), + .CFGDEVID({1'b0,1'b1,1'b1,1'b1,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b1,1'b0,1'b0,1'b1,1'b0,1'b0}), + .CFGDEVSTATUSCORRERRDETECTED(cfg_dstatus[0]), + .CFGDEVSTATUSFATALERRDETECTED(cfg_dstatus[2]), + .CFGDEVSTATUSNONFATALERRDETECTED(cfg_dstatus[1]), + .CFGDEVSTATUSURDETECTED(cfg_dstatus[3]), + .CFGDSBUSNUMBER(cfg_ds_bus_number), + .CFGDSDEVICENUMBER(cfg_ds_device_number), + .CFGDSFUNCTIONNUMBER(cfg_ds_function_number), + .CFGDSN(cfg_dsn), + .CFGERRACSN(1'b1), + .CFGERRAERHEADERLOG(cfg_err_aer_headerlog), + .CFGERRAERHEADERLOGSETN(cfg_err_aer_headerlog_set_n), + .CFGERRATOMICEGRESSBLOCKEDN(pcie_block_i_i_1_n_0), + .CFGERRCORN(pcie_block_i_i_2_n_0), + .CFGERRCPLABORTN(pcie_block_i_i_3_n_0), + .CFGERRCPLRDYN(cfg_err_cpl_rdy_n), + .CFGERRCPLTIMEOUTN(pcie_block_i_i_4_n_0), + .CFGERRCPLUNEXPECTN(pcie_block_i_i_5_n_0), + .CFGERRECRCN(pcie_block_i_i_6_n_0), + .CFGERRINTERNALCORN(pcie_block_i_i_7_n_0), + .CFGERRINTERNALUNCORN(pcie_block_i_i_8_n_0), + .CFGERRLOCKEDN(pcie_block_i_i_9_n_0), + .CFGERRMALFORMEDN(pcie_block_i_i_10_n_0), + .CFGERRMCBLOCKEDN(pcie_block_i_i_11_n_0), + .CFGERRNORECOVERYN(pcie_block_i_i_12_n_0), + .CFGERRPOISONEDN(pcie_block_i_i_13_n_0), + .CFGERRPOSTEDN(pcie_block_i_i_14_n_0), + .CFGERRTLPCPLHEADER(cfg_err_tlp_cpl_header), + .CFGERRURN(pcie_block_i_i_15_n_0), + .CFGFORCECOMMONCLOCKOFF(1'b0), + .CFGFORCEEXTENDEDSYNCON(1'b0), + .CFGFORCEMPS({1'b0,1'b0,1'b0}), + .CFGINTERRUPTASSERTN(pcie_block_i_i_16_n_0), + .CFGINTERRUPTDI(cfg_interrupt_di), + .CFGINTERRUPTDO(cfg_interrupt_do), + .CFGINTERRUPTMMENABLE(cfg_interrupt_mmenable), + .CFGINTERRUPTMSIENABLE(cfg_interrupt_msienable), + .CFGINTERRUPTMSIXENABLE(cfg_interrupt_msixenable), + .CFGINTERRUPTMSIXFM(cfg_interrupt_msixfm), + .CFGINTERRUPTN(pcie_block_i_i_17_n_0), + .CFGINTERRUPTRDYN(cfg_interrupt_rdy_n), + .CFGINTERRUPTSTATN(pcie_block_i_i_18_n_0), + .CFGLINKCONTROLASPMCONTROL(cfg_lcommand[1:0]), + .CFGLINKCONTROLAUTOBANDWIDTHINTEN(cfg_lcommand[10]), + .CFGLINKCONTROLBANDWIDTHINTEN(cfg_lcommand[9]), + .CFGLINKCONTROLCLOCKPMEN(cfg_lcommand[7]), + .CFGLINKCONTROLCOMMONCLOCK(cfg_lcommand[5]), + .CFGLINKCONTROLEXTENDEDSYNC(cfg_lcommand[6]), + .CFGLINKCONTROLHWAUTOWIDTHDIS(cfg_lcommand[8]), + .CFGLINKCONTROLLINKDISABLE(cfg_lcommand[3]), + .CFGLINKCONTROLRCB(cfg_lcommand[2]), + .CFGLINKCONTROLRETRAINLINK(cfg_lcommand[4]), + .CFGLINKSTATUSAUTOBANDWIDTHSTATUS(cfg_lstatus[9]), + .CFGLINKSTATUSBANDWIDTHSTATUS(cfg_lstatus[8]), + .CFGLINKSTATUSCURRENTSPEED(cfg_lstatus[1:0]), + .CFGLINKSTATUSDLLACTIVE(cfg_lstatus[7]), + .CFGLINKSTATUSLINKTRAINING(cfg_lstatus[6]), + .CFGLINKSTATUSNEGOTIATEDWIDTH(cfg_lstatus[5:2]), + .CFGMGMTBYTEENN(cfg_mgmt_byte_en_n), + .CFGMGMTDI(cfg_mgmt_di), + .CFGMGMTDO(cfg_mgmt_do), + .CFGMGMTDWADDR(cfg_mgmt_dwaddr), + .CFGMGMTRDENN(pcie_block_i_i_19_n_0), + .CFGMGMTRDWRDONEN(cfg_mgmt_rd_wr_done_n), + .CFGMGMTWRENN(pcie_block_i_i_20_n_0), + .CFGMGMTWRREADONLYN(pcie_block_i_i_21_n_0), + .CFGMGMTWRRW1CASRWN(pcie_block_i_i_22_n_0), + .CFGMSGDATA(cfg_msg_data), + .CFGMSGRECEIVED(cfg_msg_received), + .CFGMSGRECEIVEDASSERTINTA(cfg_msg_received_assert_int_a), + .CFGMSGRECEIVEDASSERTINTB(cfg_msg_received_assert_int_b), + .CFGMSGRECEIVEDASSERTINTC(cfg_msg_received_assert_int_c), + .CFGMSGRECEIVEDASSERTINTD(cfg_msg_received_assert_int_d), + .CFGMSGRECEIVEDDEASSERTINTA(cfg_msg_received_deassert_int_a), + .CFGMSGRECEIVEDDEASSERTINTB(cfg_msg_received_deassert_int_b), + .CFGMSGRECEIVEDDEASSERTINTC(cfg_msg_received_deassert_int_c), + .CFGMSGRECEIVEDDEASSERTINTD(cfg_msg_received_deassert_int_d), + .CFGMSGRECEIVEDERRCOR(cfg_msg_received_err_cor), + .CFGMSGRECEIVEDERRFATAL(cfg_msg_received_err_fatal), + .CFGMSGRECEIVEDERRNONFATAL(cfg_msg_received_err_non_fatal), + .CFGMSGRECEIVEDPMASNAK(cfg_msg_received_pm_as_nak), + .CFGMSGRECEIVEDPMETO(cfg_to_turnoff), + .CFGMSGRECEIVEDPMETOACK(cfg_msg_received_pme_to_ack), + .CFGMSGRECEIVEDPMPME(cfg_msg_received_pm_pme), + .CFGMSGRECEIVEDSETSLOTPOWERLIMIT(cfg_msg_received_setslotpowerlimit), + .CFGMSGRECEIVEDUNLOCK(pcie_block_i_n_72), + .CFGPCIECAPINTERRUPTMSGNUM(cfg_pciecap_interrupt_msgnum), + .CFGPCIELINKSTATE(cfg_pcie_link_state), + .CFGPMCSRPMEEN(cfg_pmcsr_pme_en), + .CFGPMCSRPMESTATUS(cfg_pmcsr_pme_status), + .CFGPMCSRPOWERSTATE(cfg_pmcsr_powerstate), + .CFGPMFORCESTATE(cfg_pm_force_state), + .CFGPMFORCESTATEENN(pcie_block_i_i_23_n_0), + .CFGPMHALTASPML0SN(pcie_block_i_i_24_n_0), + .CFGPMHALTASPML1N(pcie_block_i_i_25_n_0), + .CFGPMRCVASREQL1N(pcie_block_i_n_75), + .CFGPMRCVENTERL1N(pcie_block_i_n_76), + .CFGPMRCVENTERL23N(pcie_block_i_n_77), + .CFGPMRCVREQACKN(pcie_block_i_n_78), + .CFGPMSENDPMETON(1'b1), + .CFGPMTURNOFFOKN(cfg_pm_turnoff_ok_n), + .CFGPMWAKEN(pcie_block_i_i_27_n_0), + .CFGPORTNUMBER({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .CFGREVID({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .CFGROOTCONTROLPMEINTEN(cfg_root_control_pme_int_en), + .CFGROOTCONTROLSYSERRCORRERREN(cfg_root_control_syserr_corr_err_en), + .CFGROOTCONTROLSYSERRFATALERREN(cfg_root_control_syserr_fatal_err_en), + .CFGROOTCONTROLSYSERRNONFATALERREN(cfg_root_control_syserr_non_fatal_err_en), + .CFGSLOTCONTROLELECTROMECHILCTLPULSE(cfg_slot_control_electromech_il_ctl_pulse), + .CFGSUBSYSID({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b1,1'b1,1'b1}), + .CFGSUBSYSVENDID({1'b0,1'b0,1'b0,1'b1,1'b0,1'b0,1'b0,1'b0,1'b1,1'b1,1'b1,1'b0,1'b1,1'b1,1'b1,1'b0}), + .CFGTRANSACTION(pcie_block_i_n_84), + .CFGTRANSACTIONADDR({pcie_block_i_n_1097,pcie_block_i_n_1098,pcie_block_i_n_1099,pcie_block_i_n_1100,pcie_block_i_n_1101,pcie_block_i_n_1102,pcie_block_i_n_1103}), + .CFGTRANSACTIONTYPE(pcie_block_i_n_85), + .CFGTRNPENDINGN(pcie_block_i_i_28_n_0), + .CFGVCTCVCMAP(cfg_vc_tcvc_map), + .CFGVENDID({1'b0,1'b0,1'b0,1'b1,1'b0,1'b0,1'b0,1'b0,1'b1,1'b1,1'b1,1'b0,1'b1,1'b1,1'b1,1'b0}), + .CMRSTN(1'b1), + .CMSTICKYRSTN(1'b1), + .DBGMODE({1'b0,1'b0}), + .DBGSCLRA(pcie_block_i_n_86), + .DBGSCLRB(pcie_block_i_n_87), + .DBGSCLRC(pcie_block_i_n_88), + .DBGSCLRD(pcie_block_i_n_89), + .DBGSCLRE(pcie_block_i_n_90), + .DBGSCLRF(pcie_block_i_n_91), + .DBGSCLRG(pcie_block_i_n_92), + .DBGSCLRH(pcie_block_i_n_93), + .DBGSCLRI(pcie_block_i_n_94), + .DBGSCLRJ(pcie_block_i_n_95), + .DBGSCLRK(pcie_block_i_n_96), + .DBGSUBMODE(1'b0), + .DBGVECA({pcie_block_i_n_704,pcie_block_i_n_705,pcie_block_i_n_706,pcie_block_i_n_707,pcie_block_i_n_708,pcie_block_i_n_709,pcie_block_i_n_710,pcie_block_i_n_711,pcie_block_i_n_712,pcie_block_i_n_713,pcie_block_i_n_714,pcie_block_i_n_715,pcie_block_i_n_716,pcie_block_i_n_717,pcie_block_i_n_718,pcie_block_i_n_719,pcie_block_i_n_720,pcie_block_i_n_721,pcie_block_i_n_722,pcie_block_i_n_723,pcie_block_i_n_724,pcie_block_i_n_725,pcie_block_i_n_726,pcie_block_i_n_727,pcie_block_i_n_728,pcie_block_i_n_729,pcie_block_i_n_730,pcie_block_i_n_731,pcie_block_i_n_732,pcie_block_i_n_733,pcie_block_i_n_734,pcie_block_i_n_735,pcie_block_i_n_736,pcie_block_i_n_737,pcie_block_i_n_738,pcie_block_i_n_739,pcie_block_i_n_740,pcie_block_i_n_741,pcie_block_i_n_742,pcie_block_i_n_743,pcie_block_i_n_744,pcie_block_i_n_745,pcie_block_i_n_746,pcie_block_i_n_747,pcie_block_i_n_748,pcie_block_i_n_749,pcie_block_i_n_750,pcie_block_i_n_751,pcie_block_i_n_752,pcie_block_i_n_753,pcie_block_i_n_754,pcie_block_i_n_755,pcie_block_i_n_756,pcie_block_i_n_757,pcie_block_i_n_758,pcie_block_i_n_759,pcie_block_i_n_760,pcie_block_i_n_761,pcie_block_i_n_762,pcie_block_i_n_763,pcie_block_i_n_764,pcie_block_i_n_765,pcie_block_i_n_766,pcie_block_i_n_767}), + .DBGVECB({pcie_block_i_n_768,pcie_block_i_n_769,pcie_block_i_n_770,pcie_block_i_n_771,pcie_block_i_n_772,pcie_block_i_n_773,pcie_block_i_n_774,pcie_block_i_n_775,pcie_block_i_n_776,pcie_block_i_n_777,pcie_block_i_n_778,pcie_block_i_n_779,pcie_block_i_n_780,pcie_block_i_n_781,pcie_block_i_n_782,pcie_block_i_n_783,pcie_block_i_n_784,pcie_block_i_n_785,pcie_block_i_n_786,pcie_block_i_n_787,pcie_block_i_n_788,pcie_block_i_n_789,pcie_block_i_n_790,pcie_block_i_n_791,pcie_block_i_n_792,pcie_block_i_n_793,pcie_block_i_n_794,pcie_block_i_n_795,pcie_block_i_n_796,pcie_block_i_n_797,pcie_block_i_n_798,pcie_block_i_n_799,pcie_block_i_n_800,pcie_block_i_n_801,pcie_block_i_n_802,pcie_block_i_n_803,pcie_block_i_n_804,pcie_block_i_n_805,pcie_block_i_n_806,pcie_block_i_n_807,pcie_block_i_n_808,pcie_block_i_n_809,pcie_block_i_n_810,pcie_block_i_n_811,pcie_block_i_n_812,pcie_block_i_n_813,pcie_block_i_n_814,pcie_block_i_n_815,pcie_block_i_n_816,pcie_block_i_n_817,pcie_block_i_n_818,pcie_block_i_n_819,pcie_block_i_n_820,pcie_block_i_n_821,pcie_block_i_n_822,pcie_block_i_n_823,pcie_block_i_n_824,pcie_block_i_n_825,pcie_block_i_n_826,pcie_block_i_n_827,pcie_block_i_n_828,pcie_block_i_n_829,pcie_block_i_n_830,pcie_block_i_n_831}), + .DBGVECC({pcie_block_i_n_172,pcie_block_i_n_173,pcie_block_i_n_174,pcie_block_i_n_175,pcie_block_i_n_176,pcie_block_i_n_177,pcie_block_i_n_178,pcie_block_i_n_179,pcie_block_i_n_180,pcie_block_i_n_181,pcie_block_i_n_182,pcie_block_i_n_183}), + .DLRSTN(1'b1), + .DRPADDR(pcie_drp_addr), + .DRPCLK(pcie_drp_clk), + .DRPDI(pcie_drp_di), + .DRPDO(pcie_drp_do), + .DRPEN(pcie_drp_en), + .DRPRDY(pcie_drp_rdy), + .DRPWE(pcie_drp_we), + .FUNCLVLRSTN(1'b1), + .LL2BADDLLPERR(pcie_block_i_n_98), + .LL2BADTLPERR(pcie_block_i_n_99), + .LL2LINKSTATUS({pcie_block_i_n_687,pcie_block_i_n_688,pcie_block_i_n_689,pcie_block_i_n_690,pcie_block_i_n_691}), + .LL2PROTOCOLERR(pcie_block_i_n_100), + .LL2RECEIVERERR(pcie_block_i_n_101), + .LL2REPLAYROERR(pcie_block_i_n_102), + .LL2REPLAYTOERR(pcie_block_i_n_103), + .LL2SENDASREQL1(1'b0), + .LL2SENDENTERL1(1'b0), + .LL2SENDENTERL23(1'b0), + .LL2SENDPMACK(1'b0), + .LL2SUSPENDNOW(1'b0), + .LL2SUSPENDOK(pcie_block_i_n_104), + .LL2TFCINIT1SEQ(pcie_block_i_n_105), + .LL2TFCINIT2SEQ(pcie_block_i_n_106), + .LL2TLPRCV(1'b0), + .LL2TXIDLE(pcie_block_i_n_107), + .LNKCLKEN(pcie_block_i_n_108), + .MIMRXRADDR(mim_rx_raddr), + .MIMRXRDATA(mim_rx_rdata), + .MIMRXREN(mim_rx_ren), + .MIMRXWADDR(mim_rx_waddr), + .MIMRXWDATA(mim_rx_wdata), + .MIMRXWEN(mim_rx_wen), + .MIMTXRADDR(mim_tx_raddr), + .MIMTXRDATA(mim_tx_rdata), + .MIMTXREN(mim_tx_ren), + .MIMTXWADDR(mim_tx_waddr), + .MIMTXWDATA(mim_tx_wdata), + .MIMTXWEN(mim_tx_wen), + .PIPECLK(pipe_pclk_in), + .PIPERX0CHANISALIGNED(pipe_rx0_chanisaligned), + .PIPERX0CHARISK(cfg_aer_ecrc_check_en_4), + .PIPERX0DATA(Q), + .PIPERX0ELECIDLE(pipe_rx0_elec_idle), + .PIPERX0PHYSTATUS(pipe_rx0_phy_status), + .PIPERX0POLARITY(pipe_rx0_polarity), + .PIPERX0STATUS(cfg_aer_ecrc_check_en_8), + .PIPERX0VALID(pipe_rx0_valid), + .PIPERX1CHANISALIGNED(pipe_rx1_chanisaligned), + .PIPERX1CHARISK(cfg_aer_ecrc_check_en_5), + .PIPERX1DATA(cfg_aer_ecrc_check_en_1), + .PIPERX1ELECIDLE(pipe_rx1_elec_idle), + .PIPERX1PHYSTATUS(pipe_rx1_phy_status), + .PIPERX1POLARITY(pipe_rx1_polarity), + .PIPERX1STATUS(cfg_aer_ecrc_check_en_9), + .PIPERX1VALID(pipe_rx1_valid), + .PIPERX2CHANISALIGNED(pipe_rx2_chanisaligned), + .PIPERX2CHARISK(cfg_aer_ecrc_check_en_6), + .PIPERX2DATA(cfg_aer_ecrc_check_en_2), + .PIPERX2ELECIDLE(pipe_rx2_elec_idle), + .PIPERX2PHYSTATUS(pipe_rx2_phy_status), + .PIPERX2POLARITY(pipe_rx2_polarity), + .PIPERX2STATUS(cfg_aer_ecrc_check_en_10), + .PIPERX2VALID(pipe_rx2_valid), + .PIPERX3CHANISALIGNED(pipe_rx3_chanisaligned), + .PIPERX3CHARISK(cfg_aer_ecrc_check_en_7), + .PIPERX3DATA(cfg_aer_ecrc_check_en_3), + .PIPERX3ELECIDLE(pipe_rx3_elec_idle), + .PIPERX3PHYSTATUS(pipe_rx3_phy_status), + .PIPERX3POLARITY(pipe_rx3_polarity), + .PIPERX3STATUS(cfg_aer_ecrc_check_en_11), + .PIPERX3VALID(pipe_rx3_valid), + .PIPERX4CHANISALIGNED(1'b0), + .PIPERX4CHARISK({1'b0,1'b0}), + .PIPERX4DATA({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .PIPERX4ELECIDLE(1'b1), + .PIPERX4PHYSTATUS(1'b0), + .PIPERX4POLARITY(pipe_rx4_polarity), + .PIPERX4STATUS({1'b0,1'b0,1'b0}), + .PIPERX4VALID(1'b0), + .PIPERX5CHANISALIGNED(1'b0), + .PIPERX5CHARISK({1'b0,1'b0}), + .PIPERX5DATA({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .PIPERX5ELECIDLE(1'b1), + .PIPERX5PHYSTATUS(1'b0), + .PIPERX5POLARITY(pipe_rx5_polarity), + .PIPERX5STATUS({1'b0,1'b0,1'b0}), + .PIPERX5VALID(1'b0), + .PIPERX6CHANISALIGNED(1'b0), + .PIPERX6CHARISK({1'b0,1'b0}), + .PIPERX6DATA({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .PIPERX6ELECIDLE(1'b1), + .PIPERX6PHYSTATUS(1'b0), + .PIPERX6POLARITY(pipe_rx6_polarity), + .PIPERX6STATUS({1'b0,1'b0,1'b0}), + .PIPERX6VALID(1'b0), + .PIPERX7CHANISALIGNED(1'b0), + .PIPERX7CHARISK({1'b0,1'b0}), + .PIPERX7DATA({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .PIPERX7ELECIDLE(1'b1), + .PIPERX7PHYSTATUS(1'b0), + .PIPERX7POLARITY(pipe_rx7_polarity), + .PIPERX7STATUS({1'b0,1'b0,1'b0}), + .PIPERX7VALID(1'b0), + .PIPETX0CHARISK(pipe_tx0_char_is_k), + .PIPETX0COMPLIANCE(pipe_tx0_compliance), + .PIPETX0DATA(pipe_tx0_data), + .PIPETX0ELECIDLE(pipe_tx0_elec_idle), + .PIPETX0POWERDOWN(pipe_tx0_powerdown), + .PIPETX1CHARISK(pipe_tx1_char_is_k), + .PIPETX1COMPLIANCE(pipe_tx1_compliance), + .PIPETX1DATA(pipe_tx1_data), + .PIPETX1ELECIDLE(pipe_tx1_elec_idle), + .PIPETX1POWERDOWN(pipe_tx1_powerdown), + .PIPETX2CHARISK(pipe_tx2_char_is_k), + .PIPETX2COMPLIANCE(pipe_tx2_compliance), + .PIPETX2DATA(pipe_tx2_data), + .PIPETX2ELECIDLE(pipe_tx2_elec_idle), + .PIPETX2POWERDOWN(pipe_tx2_powerdown), + .PIPETX3CHARISK(pipe_tx3_char_is_k), + .PIPETX3COMPLIANCE(pipe_tx3_compliance), + .PIPETX3DATA(pipe_tx3_data), + .PIPETX3ELECIDLE(pipe_tx3_elec_idle), + .PIPETX3POWERDOWN(pipe_tx3_powerdown), + .PIPETX4CHARISK(pipe_tx4_char_is_k), + .PIPETX4COMPLIANCE(pipe_tx4_compliance), + .PIPETX4DATA(pipe_tx4_data), + .PIPETX4ELECIDLE(pipe_tx4_elec_idle), + .PIPETX4POWERDOWN(pipe_tx4_powerdown), + .PIPETX5CHARISK(pipe_tx5_char_is_k), + .PIPETX5COMPLIANCE(pipe_tx5_compliance), + .PIPETX5DATA(pipe_tx5_data), + .PIPETX5ELECIDLE(pipe_tx5_elec_idle), + .PIPETX5POWERDOWN(pipe_tx5_powerdown), + .PIPETX6CHARISK(pipe_tx6_char_is_k), + .PIPETX6COMPLIANCE(pipe_tx6_compliance), + .PIPETX6DATA(pipe_tx6_data), + .PIPETX6ELECIDLE(pipe_tx6_elec_idle), + .PIPETX6POWERDOWN(pipe_tx6_powerdown), + .PIPETX7CHARISK(pipe_tx7_char_is_k), + .PIPETX7COMPLIANCE(pipe_tx7_compliance), + .PIPETX7DATA(pipe_tx7_data), + .PIPETX7ELECIDLE(pipe_tx7_elec_idle), + .PIPETX7POWERDOWN(pipe_tx7_powerdown), + .PIPETXDEEMPH(pipe_tx_deemph), + .PIPETXMARGIN(pipe_tx_margin), + .PIPETXRATE(pipe_tx_rate), + .PIPETXRCVRDET(pipe_tx_rcvr_det), + .PIPETXRESET(pcie_block_i_n_140), + .PL2DIRECTEDLSTATE({1'b0,1'b0,1'b0,1'b0,1'b0}), + .PL2L0REQ(pcie_block_i_n_141), + .PL2LINKUP(pcie_block_i_n_142), + .PL2RECEIVERERR(pcie_block_i_n_143), + .PL2RECOVERY(pcie_block_i_n_144), + .PL2RXELECIDLE(pcie_block_i_n_145), + .PL2RXPMSTATE({pcie_block_i_n_610,pcie_block_i_n_611}), + .PL2SUSPENDOK(pcie_block_i_n_146), + .PLDBGMODE({1'b0,1'b0,1'b0}), + .PLDBGVEC({pcie_block_i_n_184,pcie_block_i_n_185,pcie_block_i_n_186,pcie_block_i_n_187,pcie_block_i_n_188,pcie_block_i_n_189,pcie_block_i_n_190,pcie_block_i_n_191,pcie_block_i_n_192,pcie_block_i_n_193,pcie_block_i_n_194,pcie_block_i_n_195}), + .PLDIRECTEDCHANGEDONE(pl_directed_change_done), + .PLDIRECTEDLINKAUTON(pl_directed_link_auton), + .PLDIRECTEDLINKCHANGE(pl_directed_link_change), + .PLDIRECTEDLINKSPEED(pl_directed_link_speed), + .PLDIRECTEDLINKWIDTH(pl_directed_link_width), + .PLDIRECTEDLTSSMNEW({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .PLDIRECTEDLTSSMNEWVLD(1'b0), + .PLDIRECTEDLTSSMSTALL(1'b0), + .PLDOWNSTREAMDEEMPHSOURCE(pl_downstream_deemph_source), + .PLINITIALLINKWIDTH(pl_initial_link_width), + .PLLANEREVERSALMODE(pl_lane_reversal_mode), + .PLLINKGEN2CAP(pl_link_gen2_cap), + .PLLINKPARTNERGEN2SUPPORTED(pl_link_partner_gen2_supported), + .PLLINKUPCFGCAP(pl_link_upcfg_cap), + .PLLTSSMSTATE(pl_ltssm_state), + .PLPHYLNKUPN(pl_phy_lnk_up_n), + .PLRECEIVEDHOTRST(pl_received_hot_rst), + .PLRSTN(1'b1), + .PLRXPMSTATE(pl_rx_pm_state), + .PLSELLNKRATE(pl_sel_lnk_rate), + .PLSELLNKWIDTH(pl_sel_lnk_width), + .PLTRANSMITHOTRST(pl_transmit_hot_rst), + .PLTXPMSTATE(pl_tx_pm_state), + .PLUPSTREAMPREFERDEEMPH(pl_upstream_prefer_deemph), + .RECEIVEDFUNCLVLRSTN(cfg_received_func_lvl_rst_n), + .SYSRSTN(sys_rst_n), + .TL2ASPMSUSPENDCREDITCHECK(1'b0), + .TL2ASPMSUSPENDCREDITCHECKOK(pcie_block_i_n_155), + .TL2ASPMSUSPENDREQ(pcie_block_i_n_156), + .TL2ERRFCPE(pcie_block_i_n_157), + .TL2ERRHDR({pcie_block_i_n_832,pcie_block_i_n_833,pcie_block_i_n_834,pcie_block_i_n_835,pcie_block_i_n_836,pcie_block_i_n_837,pcie_block_i_n_838,pcie_block_i_n_839,pcie_block_i_n_840,pcie_block_i_n_841,pcie_block_i_n_842,pcie_block_i_n_843,pcie_block_i_n_844,pcie_block_i_n_845,pcie_block_i_n_846,pcie_block_i_n_847,pcie_block_i_n_848,pcie_block_i_n_849,pcie_block_i_n_850,pcie_block_i_n_851,pcie_block_i_n_852,pcie_block_i_n_853,pcie_block_i_n_854,pcie_block_i_n_855,pcie_block_i_n_856,pcie_block_i_n_857,pcie_block_i_n_858,pcie_block_i_n_859,pcie_block_i_n_860,pcie_block_i_n_861,pcie_block_i_n_862,pcie_block_i_n_863,pcie_block_i_n_864,pcie_block_i_n_865,pcie_block_i_n_866,pcie_block_i_n_867,pcie_block_i_n_868,pcie_block_i_n_869,pcie_block_i_n_870,pcie_block_i_n_871,pcie_block_i_n_872,pcie_block_i_n_873,pcie_block_i_n_874,pcie_block_i_n_875,pcie_block_i_n_876,pcie_block_i_n_877,pcie_block_i_n_878,pcie_block_i_n_879,pcie_block_i_n_880,pcie_block_i_n_881,pcie_block_i_n_882,pcie_block_i_n_883,pcie_block_i_n_884,pcie_block_i_n_885,pcie_block_i_n_886,pcie_block_i_n_887,pcie_block_i_n_888,pcie_block_i_n_889,pcie_block_i_n_890,pcie_block_i_n_891,pcie_block_i_n_892,pcie_block_i_n_893,pcie_block_i_n_894,pcie_block_i_n_895}), + .TL2ERRMALFORMED(pcie_block_i_n_158), + .TL2ERRRXOVERFLOW(pcie_block_i_n_159), + .TL2PPMSUSPENDOK(pcie_block_i_n_160), + .TL2PPMSUSPENDREQ(1'b0), + .TLRSTN(1'b1), + .TRNFCCPLD(fc_cpld), + .TRNFCCPLH(fc_cplh), + .TRNFCNPD(fc_npd), + .TRNFCNPH(fc_nph), + .TRNFCPD(fc_pd), + .TRNFCPH(fc_ph), + .TRNFCSEL(fc_sel), + .TRNLNKUP(trn_lnk_up), + .TRNRBARHIT({pcie_block_i_n_1143,trn_rbar_hit}), + .TRNRD({trn_rd,pcie_drp_clk_1}), + .TRNRDLLPDATA({pcie_block_i_n_896,pcie_block_i_n_897,pcie_block_i_n_898,pcie_block_i_n_899,pcie_block_i_n_900,pcie_block_i_n_901,pcie_block_i_n_902,pcie_block_i_n_903,pcie_block_i_n_904,pcie_block_i_n_905,pcie_block_i_n_906,pcie_block_i_n_907,pcie_block_i_n_908,pcie_block_i_n_909,pcie_block_i_n_910,pcie_block_i_n_911,pcie_block_i_n_912,pcie_block_i_n_913,pcie_block_i_n_914,pcie_block_i_n_915,pcie_block_i_n_916,pcie_block_i_n_917,pcie_block_i_n_918,pcie_block_i_n_919,pcie_block_i_n_920,pcie_block_i_n_921,pcie_block_i_n_922,pcie_block_i_n_923,pcie_block_i_n_924,pcie_block_i_n_925,pcie_block_i_n_926,pcie_block_i_n_927,pcie_block_i_n_928,pcie_block_i_n_929,pcie_block_i_n_930,pcie_block_i_n_931,pcie_block_i_n_932,pcie_block_i_n_933,pcie_block_i_n_934,pcie_block_i_n_935,pcie_block_i_n_936,pcie_block_i_n_937,pcie_block_i_n_938,pcie_block_i_n_939,pcie_block_i_n_940,pcie_block_i_n_941,pcie_block_i_n_942,pcie_block_i_n_943,pcie_block_i_n_944,pcie_block_i_n_945,pcie_block_i_n_946,pcie_block_i_n_947,pcie_block_i_n_948,pcie_block_i_n_949,pcie_block_i_n_950,pcie_block_i_n_951,pcie_block_i_n_952,pcie_block_i_n_953,pcie_block_i_n_954,pcie_block_i_n_955,pcie_block_i_n_956,pcie_block_i_n_957,pcie_block_i_n_958,pcie_block_i_n_959}), + .TRNRDLLPSRCRDY({pcie_block_i_n_618,pcie_block_i_n_619}), + .TRNRDSTRDY(trn_rdst_rdy), + .TRNRECRCERR(trn_recrc_err), + .TRNREOF(trn_reof), + .TRNRERRFWD(trn_rerrfwd), + .TRNRFCPRET(1'b1), + .TRNRNPOK(rx_np_ok), + .TRNRNPREQ(rx_np_req), + .TRNRREM({trn_rrem,pcie_drp_clk_2}), + .TRNRSOF(trn_rsof), + .TRNRSRCDSC(trn_rsrc_dsc), + .TRNRSRCRDY(trn_rsrc_rdy), + .TRNTBUFAV(trn_tbuf_av), + .TRNTCFGGNT(trn_tcfg_gnt), + .TRNTCFGREQ(trn_tcfg_req), + .TRNTD({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,trn_td}), + .TRNTDLLPDATA({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .TRNTDLLPDSTRDY(pcie_block_i_n_169), + .TRNTDLLPSRCRDY(1'b0), + .TRNTDSTRDY({NLW_pcie_block_i_TRNTDSTRDY_UNCONNECTED[3:1],trn_tdst_rdy}), + .TRNTECRCGEN(cfg_aer_ecrc_check_en_0[0]), + .TRNTEOF(trn_teof), + .TRNTERRDROP(tx_err_drop), + .TRNTERRFWD(cfg_aer_ecrc_check_en_0[1]), + .TRNTREM({1'b0,trn_trem}), + .TRNTSOF(trn_tsof), + .TRNTSRCDSC(cfg_aer_ecrc_check_en_0[3]), + .TRNTSRCRDY(trn_tsrc_rdy), + .TRNTSTR(cfg_aer_ecrc_check_en_0[2]), + .USERCLK(pipe_userclk1_in), + .USERCLK2(pipe_userclk2_in), + .USERRSTN(user_rst_n)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_1 + (.I0(cfg_err_atomic_egress_blocked), + .O(pcie_block_i_i_1_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_10 + (.I0(cfg_err_malformed), + .O(pcie_block_i_i_10_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_11 + (.I0(cfg_err_mc_blocked), + .O(pcie_block_i_i_11_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_12 + (.I0(cfg_err_norecovery), + .O(pcie_block_i_i_12_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_13 + (.I0(cfg_err_poisoned), + .O(pcie_block_i_i_13_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_14 + (.I0(cfg_err_posted), + .O(pcie_block_i_i_14_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_15 + (.I0(cfg_err_ur), + .O(pcie_block_i_i_15_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_16 + (.I0(cfg_interrupt_assert), + .O(pcie_block_i_i_16_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_17 + (.I0(cfg_interrupt), + .O(pcie_block_i_i_17_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_18 + (.I0(cfg_interrupt_stat), + .O(pcie_block_i_i_18_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_19 + (.I0(cfg_mgmt_rd_en), + .O(pcie_block_i_i_19_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_2 + (.I0(cfg_err_cor), + .O(pcie_block_i_i_2_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_20 + (.I0(cfg_mgmt_wr_en), + .O(pcie_block_i_i_20_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_21 + (.I0(cfg_mgmt_wr_readonly), + .O(pcie_block_i_i_21_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_22 + (.I0(cfg_mgmt_wr_rw1c_as_rw), + .O(pcie_block_i_i_22_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_23 + (.I0(cfg_pm_force_state_en), + .O(pcie_block_i_i_23_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_24 + (.I0(cfg_pm_halt_aspm_l0s), + .O(pcie_block_i_i_24_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_25 + (.I0(cfg_pm_halt_aspm_l1), + .O(pcie_block_i_i_25_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_27 + (.I0(cfg_pm_wake), + .O(pcie_block_i_i_27_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_28 + (.I0(cfg_trn_pending), + .O(pcie_block_i_i_28_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_3 + (.I0(cfg_err_cpl_abort), + .O(pcie_block_i_i_3_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_4 + (.I0(cfg_err_cpl_timeout), + .O(pcie_block_i_i_4_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_5 + (.I0(cfg_err_cpl_unexpect), + .O(pcie_block_i_i_5_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_6 + (.I0(cfg_err_ecrc), + .O(pcie_block_i_i_6_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_7 + (.I0(cfg_err_internal_cor), + .O(pcie_block_i_i_7_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_8 + (.I0(cfg_err_internal_uncor), + .O(pcie_block_i_i_8_n_0)); + LUT1 #( + .INIT(2'h1)) + pcie_block_i_i_9 + (.I0(cfg_err_locked), + .O(pcie_block_i_i_9_n_0)); + pcie_7x_0_pcie_7x_0_pcie_bram_top_7x pcie_bram_top + (.MIMRXRADDR(mim_rx_raddr[11:0]), + .MIMRXWADDR(mim_rx_waddr[11:0]), + .MIMTXRADDR(mim_tx_raddr[11:0]), + .MIMTXWADDR(mim_tx_waddr[11:0]), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl (mim_rx_rdata), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 (mim_rx_wdata), + .mim_rx_ren(mim_rx_ren), + .mim_rx_wen(mim_rx_wen), + .mim_tx_ren(mim_tx_ren), + .mim_tx_wen(mim_tx_wen), + .pipe_userclk1_in(pipe_userclk1_in), + .rdata(mim_tx_rdata), + .wdata(mim_tx_wdata)); + LUT1 #( + .INIT(2'h1)) + phy_lnk_up_cdc_i_1 + (.I0(pl_phy_lnk_up_n), + .O(src_in)); + LUT5 #( + .INIT(32'hFFFEAAAA)) + ppm_L1_thrtl_i_1 + (.I0(ppm_L1_trig), + .I1(cfg_pcie_link_state[0]), + .I2(cfg_pcie_link_state[2]), + .I3(cfg_pcie_link_state[1]), + .I4(ppm_L1_thrtl), + .O(ppm_L1_thrtl_reg)); + LUT5 #( + .INIT(32'h00000001)) + tbuf_av_min_thrtl_i_1 + (.I0(trn_tbuf_av[5]), + .I1(trn_tbuf_av[4]), + .I2(trn_tbuf_av[3]), + .I3(trn_tbuf_av[2]), + .I4(trn_tbuf_av[1]), + .O(tbuf_av_min_trig)); + LUT6 #( + .INIT(64'h0000000100010001)) + tready_thrtl_i_11 + (.I0(trn_tbuf_av[5]), + .I1(trn_tbuf_av[4]), + .I2(trn_tbuf_av[3]), + .I3(trn_tbuf_av[2]), + .I4(trn_tbuf_av[0]), + .I5(trn_tbuf_av[1]), + .O(pcie_drp_clk_0)); + LUT2 #( + .INIT(4'h8)) + tready_thrtl_i_9 + (.I0(trn_tcfg_req), + .I1(reg_tcfg_gnt), + .O(tcfg_req_trig)); + LUT6 #( + .INIT(64'h08000000AEAA2AAA)) + trn_in_packet_i_1 + (.I0(trn_in_packet), + .I1(trn_rdst_rdy), + .I2(trn_reof), + .I3(trn_rsrc_rdy), + .I4(trn_rsof), + .I5(trn_rsrc_dsc), + .O(trn_in_packet_reg)); + (* SOFT_HLUTNM = "soft_lutpair256" *) + LUT2 #( + .INIT(4'hE)) + trn_rsrc_dsc_prev_i_1 + (.I0(trn_rsrc_dsc), + .I1(reg_dsc_detect), + .O(trn_rsrc_dsc_prev0)); + (* SOFT_HLUTNM = "soft_lutpair256" *) + LUT4 #( + .INIT(16'hAA08)) + trn_rsrc_rdy_prev_i_1 + (.I0(trn_rsrc_rdy), + .I1(trn_rsof), + .I2(trn_rsrc_dsc), + .I3(trn_in_packet), + .O(rsrc_rdy_filtered)); + LUT3 #( + .INIT(8'h2A)) + user_reset_int_i_1 + (.I0(bridge_reset_int), + .I1(pl_phy_lnk_up), + .I2(user_rst_n), + .O(user_reset_int_reg)); +endmodule + +module pcie_7x_0_pcie_7x_0_pcie_bram_7x + (rdata, + pipe_userclk1_in, + mim_tx_wen, + mim_tx_ren, + MIMTXWADDR, + MIMTXRADDR, + wdata); + output [8:0]rdata; + input pipe_userclk1_in; + input mim_tx_wen; + input mim_tx_ren; + input [11:0]MIMTXWADDR; + input [11:0]MIMTXRADDR; + input [8:0]wdata; + + wire [11:0]MIMTXRADDR; + wire [11:0]MIMTXWADDR; + wire mim_tx_ren; + wire mim_tx_wen; + wire pipe_userclk1_in; + wire [8:0]rdata; + wire [8:0]wdata; + + pcie_7x_0_BRAM_TDP_MACRO_17 \use_tdp.ramb36 + (.MIMTXRADDR(MIMTXRADDR), + .MIMTXWADDR(MIMTXWADDR), + .mim_tx_ren(mim_tx_ren), + .mim_tx_wen(mim_tx_wen), + .pipe_userclk1_in(pipe_userclk1_in), + .rdata(rdata), + .wdata(wdata)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pcie_bram_7x" *) +module pcie_7x_0_pcie_7x_0_pcie_bram_7x_10 + (rdata, + pipe_userclk1_in, + mim_tx_wen, + mim_tx_ren, + MIMTXWADDR, + MIMTXRADDR, + wdata); + output [5:0]rdata; + input pipe_userclk1_in; + input mim_tx_wen; + input mim_tx_ren; + input [11:0]MIMTXWADDR; + input [11:0]MIMTXRADDR; + input [5:0]wdata; + + wire [11:0]MIMTXRADDR; + wire [11:0]MIMTXWADDR; + wire mim_tx_ren; + wire mim_tx_wen; + wire pipe_userclk1_in; + wire [5:0]rdata; + wire [5:0]wdata; + + pcie_7x_0_BRAM_TDP_MACRO_viv_ \use_tdp.ramb36 + (.MIMTXRADDR(MIMTXRADDR), + .MIMTXWADDR(MIMTXWADDR), + .mim_tx_ren(mim_tx_ren), + .mim_tx_wen(mim_tx_wen), + .pipe_userclk1_in(pipe_userclk1_in), + .rdata(rdata), + .wdata(wdata)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pcie_bram_7x" *) +module pcie_7x_0_pcie_7x_0_pcie_bram_7x_18 + (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl , + pipe_userclk1_in, + mim_rx_wen, + mim_rx_ren, + MIMRXWADDR, + MIMRXRADDR, + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ); + output [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ; + input pipe_userclk1_in; + input mim_rx_wen; + input mim_rx_ren; + input [11:0]MIMRXWADDR; + input [11:0]MIMRXRADDR; + input [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + + wire [11:0]MIMRXRADDR; + wire [11:0]MIMRXWADDR; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + wire mim_rx_ren; + wire mim_rx_wen; + wire pipe_userclk1_in; + + pcie_7x_0_BRAM_TDP_MACRO_33 \use_tdp.ramb36 + (.MIMRXRADDR(MIMRXRADDR), + .MIMRXWADDR(MIMRXWADDR), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ), + .mim_rx_ren(mim_rx_ren), + .mim_rx_wen(mim_rx_wen), + .pipe_userclk1_in(pipe_userclk1_in)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pcie_bram_7x" *) +module pcie_7x_0_pcie_7x_0_pcie_bram_7x_19 + (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl , + pipe_userclk1_in, + mim_rx_wen, + mim_rx_ren, + MIMRXWADDR, + MIMRXRADDR, + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ); + output [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ; + input pipe_userclk1_in; + input mim_rx_wen; + input mim_rx_ren; + input [11:0]MIMRXWADDR; + input [11:0]MIMRXRADDR; + input [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + + wire [11:0]MIMRXRADDR; + wire [11:0]MIMRXWADDR; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + wire mim_rx_ren; + wire mim_rx_wen; + wire pipe_userclk1_in; + + pcie_7x_0_BRAM_TDP_MACRO_32 \use_tdp.ramb36 + (.MIMRXRADDR(MIMRXRADDR), + .MIMRXWADDR(MIMRXWADDR), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ), + .mim_rx_ren(mim_rx_ren), + .mim_rx_wen(mim_rx_wen), + .pipe_userclk1_in(pipe_userclk1_in)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pcie_bram_7x" *) +module pcie_7x_0_pcie_7x_0_pcie_bram_7x_20 + (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl , + pipe_userclk1_in, + mim_rx_wen, + mim_rx_ren, + MIMRXWADDR, + MIMRXRADDR, + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ); + output [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ; + input pipe_userclk1_in; + input mim_rx_wen; + input mim_rx_ren; + input [11:0]MIMRXWADDR; + input [11:0]MIMRXRADDR; + input [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + + wire [11:0]MIMRXRADDR; + wire [11:0]MIMRXWADDR; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + wire mim_rx_ren; + wire mim_rx_wen; + wire pipe_userclk1_in; + + pcie_7x_0_BRAM_TDP_MACRO_31 \use_tdp.ramb36 + (.MIMRXRADDR(MIMRXRADDR), + .MIMRXWADDR(MIMRXWADDR), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ), + .mim_rx_ren(mim_rx_ren), + .mim_rx_wen(mim_rx_wen), + .pipe_userclk1_in(pipe_userclk1_in)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pcie_bram_7x" *) +module pcie_7x_0_pcie_7x_0_pcie_bram_7x_21 + (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl , + pipe_userclk1_in, + mim_rx_wen, + mim_rx_ren, + MIMRXWADDR, + MIMRXRADDR, + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ); + output [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ; + input pipe_userclk1_in; + input mim_rx_wen; + input mim_rx_ren; + input [11:0]MIMRXWADDR; + input [11:0]MIMRXRADDR; + input [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + + wire [11:0]MIMRXRADDR; + wire [11:0]MIMRXWADDR; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + wire mim_rx_ren; + wire mim_rx_wen; + wire pipe_userclk1_in; + + pcie_7x_0_BRAM_TDP_MACRO_30 \use_tdp.ramb36 + (.MIMRXRADDR(MIMRXRADDR), + .MIMRXWADDR(MIMRXWADDR), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ), + .mim_rx_ren(mim_rx_ren), + .mim_rx_wen(mim_rx_wen), + .pipe_userclk1_in(pipe_userclk1_in)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pcie_bram_7x" *) +module pcie_7x_0_pcie_7x_0_pcie_bram_7x_22 + (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl , + pipe_userclk1_in, + mim_rx_wen, + mim_rx_ren, + MIMRXWADDR, + MIMRXRADDR, + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ); + output [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ; + input pipe_userclk1_in; + input mim_rx_wen; + input mim_rx_ren; + input [11:0]MIMRXWADDR; + input [11:0]MIMRXRADDR; + input [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + + wire [11:0]MIMRXRADDR; + wire [11:0]MIMRXWADDR; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + wire mim_rx_ren; + wire mim_rx_wen; + wire pipe_userclk1_in; + + pcie_7x_0_BRAM_TDP_MACRO_29 \use_tdp.ramb36 + (.MIMRXRADDR(MIMRXRADDR), + .MIMRXWADDR(MIMRXWADDR), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ), + .mim_rx_ren(mim_rx_ren), + .mim_rx_wen(mim_rx_wen), + .pipe_userclk1_in(pipe_userclk1_in)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pcie_bram_7x" *) +module pcie_7x_0_pcie_7x_0_pcie_bram_7x_23 + (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl , + pipe_userclk1_in, + mim_rx_wen, + mim_rx_ren, + MIMRXWADDR, + MIMRXRADDR, + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ); + output [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ; + input pipe_userclk1_in; + input mim_rx_wen; + input mim_rx_ren; + input [11:0]MIMRXWADDR; + input [11:0]MIMRXRADDR; + input [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + + wire [11:0]MIMRXRADDR; + wire [11:0]MIMRXWADDR; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + wire mim_rx_ren; + wire mim_rx_wen; + wire pipe_userclk1_in; + + pcie_7x_0_BRAM_TDP_MACRO_28 \use_tdp.ramb36 + (.MIMRXRADDR(MIMRXRADDR), + .MIMRXWADDR(MIMRXWADDR), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ), + .mim_rx_ren(mim_rx_ren), + .mim_rx_wen(mim_rx_wen), + .pipe_userclk1_in(pipe_userclk1_in)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pcie_bram_7x" *) +module pcie_7x_0_pcie_7x_0_pcie_bram_7x_24 + (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl , + pipe_userclk1_in, + mim_rx_wen, + mim_rx_ren, + MIMRXWADDR, + MIMRXRADDR, + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ); + output [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ; + input pipe_userclk1_in; + input mim_rx_wen; + input mim_rx_ren; + input [11:0]MIMRXWADDR; + input [11:0]MIMRXRADDR; + input [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + + wire [11:0]MIMRXRADDR; + wire [11:0]MIMRXWADDR; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ; + wire [8:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + wire mim_rx_ren; + wire mim_rx_wen; + wire pipe_userclk1_in; + + pcie_7x_0_BRAM_TDP_MACRO_27 \use_tdp.ramb36 + (.MIMRXRADDR(MIMRXRADDR), + .MIMRXWADDR(MIMRXWADDR), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ), + .mim_rx_ren(mim_rx_ren), + .mim_rx_wen(mim_rx_wen), + .pipe_userclk1_in(pipe_userclk1_in)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pcie_bram_7x" *) +module pcie_7x_0_pcie_7x_0_pcie_bram_7x_25 + (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl , + pipe_userclk1_in, + mim_rx_wen, + mim_rx_ren, + MIMRXWADDR, + MIMRXRADDR, + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ); + output [4:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ; + input pipe_userclk1_in; + input mim_rx_wen; + input mim_rx_ren; + input [11:0]MIMRXWADDR; + input [11:0]MIMRXRADDR; + input [4:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + + wire [11:0]MIMRXRADDR; + wire [11:0]MIMRXWADDR; + wire [4:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ; + wire [4:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + wire mim_rx_ren; + wire mim_rx_wen; + wire pipe_userclk1_in; + + pcie_7x_0_BRAM_TDP_MACRO_26 \use_tdp.ramb36 + (.MIMRXRADDR(MIMRXRADDR), + .MIMRXWADDR(MIMRXWADDR), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ), + .mim_rx_ren(mim_rx_ren), + .mim_rx_wen(mim_rx_wen), + .pipe_userclk1_in(pipe_userclk1_in)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pcie_bram_7x" *) +module pcie_7x_0_pcie_7x_0_pcie_bram_7x_4 + (rdata, + pipe_userclk1_in, + mim_tx_wen, + mim_tx_ren, + MIMTXWADDR, + MIMTXRADDR, + wdata); + output [8:0]rdata; + input pipe_userclk1_in; + input mim_tx_wen; + input mim_tx_ren; + input [11:0]MIMTXWADDR; + input [11:0]MIMTXRADDR; + input [8:0]wdata; + + wire [11:0]MIMTXRADDR; + wire [11:0]MIMTXWADDR; + wire mim_tx_ren; + wire mim_tx_wen; + wire pipe_userclk1_in; + wire [8:0]rdata; + wire [8:0]wdata; + + pcie_7x_0_BRAM_TDP_MACRO_16 \use_tdp.ramb36 + (.MIMTXRADDR(MIMTXRADDR), + .MIMTXWADDR(MIMTXWADDR), + .mim_tx_ren(mim_tx_ren), + .mim_tx_wen(mim_tx_wen), + .pipe_userclk1_in(pipe_userclk1_in), + .rdata(rdata), + .wdata(wdata)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pcie_bram_7x" *) +module pcie_7x_0_pcie_7x_0_pcie_bram_7x_5 + (rdata, + pipe_userclk1_in, + mim_tx_wen, + mim_tx_ren, + MIMTXWADDR, + MIMTXRADDR, + wdata); + output [8:0]rdata; + input pipe_userclk1_in; + input mim_tx_wen; + input mim_tx_ren; + input [11:0]MIMTXWADDR; + input [11:0]MIMTXRADDR; + input [8:0]wdata; + + wire [11:0]MIMTXRADDR; + wire [11:0]MIMTXWADDR; + wire mim_tx_ren; + wire mim_tx_wen; + wire pipe_userclk1_in; + wire [8:0]rdata; + wire [8:0]wdata; + + pcie_7x_0_BRAM_TDP_MACRO_15 \use_tdp.ramb36 + (.MIMTXRADDR(MIMTXRADDR), + .MIMTXWADDR(MIMTXWADDR), + .mim_tx_ren(mim_tx_ren), + .mim_tx_wen(mim_tx_wen), + .pipe_userclk1_in(pipe_userclk1_in), + .rdata(rdata), + .wdata(wdata)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pcie_bram_7x" *) +module pcie_7x_0_pcie_7x_0_pcie_bram_7x_6 + (rdata, + pipe_userclk1_in, + mim_tx_wen, + mim_tx_ren, + MIMTXWADDR, + MIMTXRADDR, + wdata); + output [8:0]rdata; + input pipe_userclk1_in; + input mim_tx_wen; + input mim_tx_ren; + input [11:0]MIMTXWADDR; + input [11:0]MIMTXRADDR; + input [8:0]wdata; + + wire [11:0]MIMTXRADDR; + wire [11:0]MIMTXWADDR; + wire mim_tx_ren; + wire mim_tx_wen; + wire pipe_userclk1_in; + wire [8:0]rdata; + wire [8:0]wdata; + + pcie_7x_0_BRAM_TDP_MACRO_14 \use_tdp.ramb36 + (.MIMTXRADDR(MIMTXRADDR), + .MIMTXWADDR(MIMTXWADDR), + .mim_tx_ren(mim_tx_ren), + .mim_tx_wen(mim_tx_wen), + .pipe_userclk1_in(pipe_userclk1_in), + .rdata(rdata), + .wdata(wdata)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pcie_bram_7x" *) +module pcie_7x_0_pcie_7x_0_pcie_bram_7x_7 + (rdata, + pipe_userclk1_in, + mim_tx_wen, + mim_tx_ren, + MIMTXWADDR, + MIMTXRADDR, + wdata); + output [8:0]rdata; + input pipe_userclk1_in; + input mim_tx_wen; + input mim_tx_ren; + input [11:0]MIMTXWADDR; + input [11:0]MIMTXRADDR; + input [8:0]wdata; + + wire [11:0]MIMTXRADDR; + wire [11:0]MIMTXWADDR; + wire mim_tx_ren; + wire mim_tx_wen; + wire pipe_userclk1_in; + wire [8:0]rdata; + wire [8:0]wdata; + + pcie_7x_0_BRAM_TDP_MACRO_13 \use_tdp.ramb36 + (.MIMTXRADDR(MIMTXRADDR), + .MIMTXWADDR(MIMTXWADDR), + .mim_tx_ren(mim_tx_ren), + .mim_tx_wen(mim_tx_wen), + .pipe_userclk1_in(pipe_userclk1_in), + .rdata(rdata), + .wdata(wdata)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pcie_bram_7x" *) +module pcie_7x_0_pcie_7x_0_pcie_bram_7x_8 + (rdata, + pipe_userclk1_in, + mim_tx_wen, + mim_tx_ren, + MIMTXWADDR, + MIMTXRADDR, + wdata); + output [8:0]rdata; + input pipe_userclk1_in; + input mim_tx_wen; + input mim_tx_ren; + input [11:0]MIMTXWADDR; + input [11:0]MIMTXRADDR; + input [8:0]wdata; + + wire [11:0]MIMTXRADDR; + wire [11:0]MIMTXWADDR; + wire mim_tx_ren; + wire mim_tx_wen; + wire pipe_userclk1_in; + wire [8:0]rdata; + wire [8:0]wdata; + + pcie_7x_0_BRAM_TDP_MACRO_12 \use_tdp.ramb36 + (.MIMTXRADDR(MIMTXRADDR), + .MIMTXWADDR(MIMTXWADDR), + .mim_tx_ren(mim_tx_ren), + .mim_tx_wen(mim_tx_wen), + .pipe_userclk1_in(pipe_userclk1_in), + .rdata(rdata), + .wdata(wdata)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pcie_bram_7x" *) +module pcie_7x_0_pcie_7x_0_pcie_bram_7x_9 + (rdata, + pipe_userclk1_in, + mim_tx_wen, + mim_tx_ren, + MIMTXWADDR, + MIMTXRADDR, + wdata); + output [8:0]rdata; + input pipe_userclk1_in; + input mim_tx_wen; + input mim_tx_ren; + input [11:0]MIMTXWADDR; + input [11:0]MIMTXRADDR; + input [8:0]wdata; + + wire [11:0]MIMTXRADDR; + wire [11:0]MIMTXWADDR; + wire mim_tx_ren; + wire mim_tx_wen; + wire pipe_userclk1_in; + wire [8:0]rdata; + wire [8:0]wdata; + + pcie_7x_0_BRAM_TDP_MACRO_11 \use_tdp.ramb36 + (.MIMTXRADDR(MIMTXRADDR), + .MIMTXWADDR(MIMTXWADDR), + .mim_tx_ren(mim_tx_ren), + .mim_tx_wen(mim_tx_wen), + .pipe_userclk1_in(pipe_userclk1_in), + .rdata(rdata), + .wdata(wdata)); +endmodule + +module pcie_7x_0_pcie_7x_0_pcie_bram_top_7x + (rdata, + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl , + pipe_userclk1_in, + mim_tx_wen, + mim_tx_ren, + MIMTXWADDR, + MIMTXRADDR, + wdata, + mim_rx_wen, + mim_rx_ren, + MIMRXWADDR, + MIMRXRADDR, + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ); + output [68:0]rdata; + output [67:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ; + input pipe_userclk1_in; + input mim_tx_wen; + input mim_tx_ren; + input [11:0]MIMTXWADDR; + input [11:0]MIMTXRADDR; + input [68:0]wdata; + input mim_rx_wen; + input mim_rx_ren; + input [11:0]MIMRXWADDR; + input [11:0]MIMRXRADDR; + input [67:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + + wire [11:0]MIMRXRADDR; + wire [11:0]MIMRXWADDR; + wire [11:0]MIMTXRADDR; + wire [11:0]MIMTXWADDR; + wire [67:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ; + wire [67:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + wire mim_rx_ren; + wire mim_rx_wen; + wire mim_tx_ren; + wire mim_tx_wen; + wire pipe_userclk1_in; + wire [68:0]rdata; + wire [68:0]wdata; + + pcie_7x_0_pcie_7x_0_pcie_brams_7x pcie_brams_rx + (.MIMRXRADDR(MIMRXRADDR), + .MIMRXWADDR(MIMRXWADDR), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ), + .mim_rx_ren(mim_rx_ren), + .mim_rx_wen(mim_rx_wen), + .pipe_userclk1_in(pipe_userclk1_in)); + pcie_7x_0_pcie_7x_0_pcie_brams_7x_3 pcie_brams_tx + (.MIMTXRADDR(MIMTXRADDR), + .MIMTXWADDR(MIMTXWADDR), + .mim_tx_ren(mim_tx_ren), + .mim_tx_wen(mim_tx_wen), + .pipe_userclk1_in(pipe_userclk1_in), + .rdata(rdata), + .wdata(wdata)); +endmodule + +module pcie_7x_0_pcie_7x_0_pcie_brams_7x + (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl , + pipe_userclk1_in, + mim_rx_wen, + mim_rx_ren, + MIMRXWADDR, + MIMRXRADDR, + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ); + output [67:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ; + input pipe_userclk1_in; + input mim_rx_wen; + input mim_rx_ren; + input [11:0]MIMRXWADDR; + input [11:0]MIMRXRADDR; + input [67:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + + wire [11:0]MIMRXRADDR; + wire [11:0]MIMRXWADDR; + wire [67:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl ; + wire [67:0]\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 ; + wire mim_rx_ren; + wire mim_rx_wen; + wire pipe_userclk1_in; + + pcie_7x_0_pcie_7x_0_pcie_bram_7x_18 \brams[0].ram + (.MIMRXRADDR(MIMRXRADDR), + .MIMRXWADDR(MIMRXWADDR), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl [8:0]), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 [8:0]), + .mim_rx_ren(mim_rx_ren), + .mim_rx_wen(mim_rx_wen), + .pipe_userclk1_in(pipe_userclk1_in)); + pcie_7x_0_pcie_7x_0_pcie_bram_7x_19 \brams[1].ram + (.MIMRXRADDR(MIMRXRADDR), + .MIMRXWADDR(MIMRXWADDR), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl [17:9]), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 [17:9]), + .mim_rx_ren(mim_rx_ren), + .mim_rx_wen(mim_rx_wen), + .pipe_userclk1_in(pipe_userclk1_in)); + pcie_7x_0_pcie_7x_0_pcie_bram_7x_20 \brams[2].ram + (.MIMRXRADDR(MIMRXRADDR), + .MIMRXWADDR(MIMRXWADDR), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl [26:18]), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 [26:18]), + .mim_rx_ren(mim_rx_ren), + .mim_rx_wen(mim_rx_wen), + .pipe_userclk1_in(pipe_userclk1_in)); + pcie_7x_0_pcie_7x_0_pcie_bram_7x_21 \brams[3].ram + (.MIMRXRADDR(MIMRXRADDR), + .MIMRXWADDR(MIMRXWADDR), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl [35:27]), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 [35:27]), + .mim_rx_ren(mim_rx_ren), + .mim_rx_wen(mim_rx_wen), + .pipe_userclk1_in(pipe_userclk1_in)); + pcie_7x_0_pcie_7x_0_pcie_bram_7x_22 \brams[4].ram + (.MIMRXRADDR(MIMRXRADDR), + .MIMRXWADDR(MIMRXWADDR), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl [44:36]), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 [44:36]), + .mim_rx_ren(mim_rx_ren), + .mim_rx_wen(mim_rx_wen), + .pipe_userclk1_in(pipe_userclk1_in)); + pcie_7x_0_pcie_7x_0_pcie_bram_7x_23 \brams[5].ram + (.MIMRXRADDR(MIMRXRADDR), + .MIMRXWADDR(MIMRXWADDR), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl [53:45]), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 [53:45]), + .mim_rx_ren(mim_rx_ren), + .mim_rx_wen(mim_rx_wen), + .pipe_userclk1_in(pipe_userclk1_in)); + pcie_7x_0_pcie_7x_0_pcie_bram_7x_24 \brams[6].ram + (.MIMRXRADDR(MIMRXRADDR), + .MIMRXWADDR(MIMRXWADDR), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl [62:54]), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 [62:54]), + .mim_rx_ren(mim_rx_ren), + .mim_rx_wen(mim_rx_wen), + .pipe_userclk1_in(pipe_userclk1_in)); + pcie_7x_0_pcie_7x_0_pcie_bram_7x_25 \brams[7].ram + (.MIMRXRADDR(MIMRXRADDR), + .MIMRXWADDR(MIMRXWADDR), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl [67:63]), + .\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 (\genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0 [67:63]), + .mim_rx_ren(mim_rx_ren), + .mim_rx_wen(mim_rx_wen), + .pipe_userclk1_in(pipe_userclk1_in)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pcie_brams_7x" *) +module pcie_7x_0_pcie_7x_0_pcie_brams_7x_3 + (rdata, + pipe_userclk1_in, + mim_tx_wen, + mim_tx_ren, + MIMTXWADDR, + MIMTXRADDR, + wdata); + output [68:0]rdata; + input pipe_userclk1_in; + input mim_tx_wen; + input mim_tx_ren; + input [11:0]MIMTXWADDR; + input [11:0]MIMTXRADDR; + input [68:0]wdata; + + wire [11:0]MIMTXRADDR; + wire [11:0]MIMTXWADDR; + wire mim_tx_ren; + wire mim_tx_wen; + wire pipe_userclk1_in; + wire [68:0]rdata; + wire [68:0]wdata; + + pcie_7x_0_pcie_7x_0_pcie_bram_7x \brams[0].ram + (.MIMTXRADDR(MIMTXRADDR), + .MIMTXWADDR(MIMTXWADDR), + .mim_tx_ren(mim_tx_ren), + .mim_tx_wen(mim_tx_wen), + .pipe_userclk1_in(pipe_userclk1_in), + .rdata(rdata[8:0]), + .wdata(wdata[8:0])); + pcie_7x_0_pcie_7x_0_pcie_bram_7x_4 \brams[1].ram + (.MIMTXRADDR(MIMTXRADDR), + .MIMTXWADDR(MIMTXWADDR), + .mim_tx_ren(mim_tx_ren), + .mim_tx_wen(mim_tx_wen), + .pipe_userclk1_in(pipe_userclk1_in), + .rdata(rdata[17:9]), + .wdata(wdata[17:9])); + pcie_7x_0_pcie_7x_0_pcie_bram_7x_5 \brams[2].ram + (.MIMTXRADDR(MIMTXRADDR), + .MIMTXWADDR(MIMTXWADDR), + .mim_tx_ren(mim_tx_ren), + .mim_tx_wen(mim_tx_wen), + .pipe_userclk1_in(pipe_userclk1_in), + .rdata(rdata[26:18]), + .wdata(wdata[26:18])); + pcie_7x_0_pcie_7x_0_pcie_bram_7x_6 \brams[3].ram + (.MIMTXRADDR(MIMTXRADDR), + .MIMTXWADDR(MIMTXWADDR), + .mim_tx_ren(mim_tx_ren), + .mim_tx_wen(mim_tx_wen), + .pipe_userclk1_in(pipe_userclk1_in), + .rdata(rdata[35:27]), + .wdata(wdata[35:27])); + pcie_7x_0_pcie_7x_0_pcie_bram_7x_7 \brams[4].ram + (.MIMTXRADDR(MIMTXRADDR), + .MIMTXWADDR(MIMTXWADDR), + .mim_tx_ren(mim_tx_ren), + .mim_tx_wen(mim_tx_wen), + .pipe_userclk1_in(pipe_userclk1_in), + .rdata(rdata[44:36]), + .wdata(wdata[44:36])); + pcie_7x_0_pcie_7x_0_pcie_bram_7x_8 \brams[5].ram + (.MIMTXRADDR(MIMTXRADDR), + .MIMTXWADDR(MIMTXWADDR), + .mim_tx_ren(mim_tx_ren), + .mim_tx_wen(mim_tx_wen), + .pipe_userclk1_in(pipe_userclk1_in), + .rdata(rdata[53:45]), + .wdata(wdata[53:45])); + pcie_7x_0_pcie_7x_0_pcie_bram_7x_9 \brams[6].ram + (.MIMTXRADDR(MIMTXRADDR), + .MIMTXWADDR(MIMTXWADDR), + .mim_tx_ren(mim_tx_ren), + .mim_tx_wen(mim_tx_wen), + .pipe_userclk1_in(pipe_userclk1_in), + .rdata(rdata[62:54]), + .wdata(wdata[62:54])); + pcie_7x_0_pcie_7x_0_pcie_bram_7x_10 \brams[7].ram + (.MIMTXRADDR(MIMTXRADDR), + .MIMTXWADDR(MIMTXWADDR), + .mim_tx_ren(mim_tx_ren), + .mim_tx_wen(mim_tx_wen), + .pipe_userclk1_in(pipe_userclk1_in), + .rdata(rdata[68:63]), + .wdata(wdata[68:63])); +endmodule + +module pcie_7x_0_pcie_7x_0_pcie_pipe_lane + (pipe_rx1_valid, + pipe_rx1_chanisaligned, + pipe_rx1_phy_status, + pipe_rx1_elec_idle, + PIPE_RXPOLARITY, + PIPE_TXCOMPLIANCE, + PIPE_TXELECIDLE, + Q, + \pipe_stages_1.pipe_rx_data_q_reg[15]_0 , + \pipe_stages_1.pipe_rx_status_q_reg[2]_0 , + PIPE_TXDATAK, + PIPE_TXDATA, + PIPE_POWERDOWN, + SR, + pipe_rx1_valid_gt, + pipe_pclk_in, + PIPE_RXCHANISALIGNED, + \pipe_stages_1.pipe_rx_phy_status_q_reg_0 , + \pipe_stages_1.pipe_rx_elec_idle_q_reg_0 , + pipe_rx1_polarity, + pipe_tx1_compliance, + pipe_tx1_elec_idle, + D, + \pipe_stages_1.pipe_rx_data_q_reg[15]_1 , + \pipe_stages_1.pipe_rx_status_q_reg[2]_1 , + \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 , + \pipe_stages_1.pipe_tx_data_q_reg[15]_0 , + \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 ); + output pipe_rx1_valid; + output pipe_rx1_chanisaligned; + output pipe_rx1_phy_status; + output pipe_rx1_elec_idle; + output [0:0]PIPE_RXPOLARITY; + output [0:0]PIPE_TXCOMPLIANCE; + output [0:0]PIPE_TXELECIDLE; + output [1:0]Q; + output [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_0 ; + output [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_0 ; + output [1:0]PIPE_TXDATAK; + output [15:0]PIPE_TXDATA; + output [1:0]PIPE_POWERDOWN; + input [0:0]SR; + input pipe_rx1_valid_gt; + input pipe_pclk_in; + input [0:0]PIPE_RXCHANISALIGNED; + input \pipe_stages_1.pipe_rx_phy_status_q_reg_0 ; + input \pipe_stages_1.pipe_rx_elec_idle_q_reg_0 ; + input pipe_rx1_polarity; + input pipe_tx1_compliance; + input pipe_tx1_elec_idle; + input [1:0]D; + input [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_1 ; + input [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_1 ; + input [1:0]\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 ; + input [15:0]\pipe_stages_1.pipe_tx_data_q_reg[15]_0 ; + input [1:0]\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 ; + + wire [1:0]D; + wire [1:0]PIPE_POWERDOWN; + wire [0:0]PIPE_RXCHANISALIGNED; + wire [0:0]PIPE_RXPOLARITY; + wire [0:0]PIPE_TXCOMPLIANCE; + wire [15:0]PIPE_TXDATA; + wire [1:0]PIPE_TXDATAK; + wire [0:0]PIPE_TXELECIDLE; + wire [1:0]Q; + wire [0:0]SR; + wire pipe_pclk_in; + wire pipe_rx1_chanisaligned; + wire pipe_rx1_elec_idle; + wire pipe_rx1_phy_status; + wire pipe_rx1_polarity; + wire pipe_rx1_valid; + wire pipe_rx1_valid_gt; + wire [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_0 ; + wire [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_1 ; + wire \pipe_stages_1.pipe_rx_elec_idle_q_reg_0 ; + wire \pipe_stages_1.pipe_rx_phy_status_q_reg_0 ; + wire [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_0 ; + wire [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_1 ; + wire [1:0]\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 ; + wire [15:0]\pipe_stages_1.pipe_tx_data_q_reg[15]_0 ; + wire [1:0]\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 ; + wire pipe_tx1_compliance; + wire pipe_tx1_elec_idle; + + FDRE \pipe_stages_1.pipe_rx_chanisaligned_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXCHANISALIGNED), + .Q(pipe_rx1_chanisaligned), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_char_is_k_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(D[0]), + .Q(Q[0]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_char_is_k_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(D[1]), + .Q(Q[1]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [0]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [0]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [10]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [10]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [11]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [11]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [12]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [12]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [13]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [13]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [14]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [14]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [15]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [15]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [1]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [1]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [2]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [2]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [3]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [3]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [4]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [4]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [5]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [5]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [6]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [6]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [7]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [7]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [8]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [8]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [9]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [9]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_elec_idle_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_elec_idle_q_reg_0 ), + .Q(pipe_rx1_elec_idle), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_phy_status_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_phy_status_q_reg_0 ), + .Q(pipe_rx1_phy_status), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_polarity_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_rx1_polarity), + .Q(PIPE_RXPOLARITY), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_status_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_status_q_reg[2]_1 [0]), + .Q(\pipe_stages_1.pipe_rx_status_q_reg[2]_0 [0]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_status_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_status_q_reg[2]_1 [1]), + .Q(\pipe_stages_1.pipe_rx_status_q_reg[2]_0 [1]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_status_q_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_status_q_reg[2]_1 [2]), + .Q(\pipe_stages_1.pipe_rx_status_q_reg[2]_0 [2]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_valid_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_rx1_valid_gt), + .Q(pipe_rx1_valid), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_char_is_k_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 [0]), + .Q(PIPE_TXDATAK[0]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_char_is_k_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 [1]), + .Q(PIPE_TXDATAK[1]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_compliance_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_tx1_compliance), + .Q(PIPE_TXCOMPLIANCE), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [0]), + .Q(PIPE_TXDATA[0]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [10]), + .Q(PIPE_TXDATA[10]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [11]), + .Q(PIPE_TXDATA[11]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [12]), + .Q(PIPE_TXDATA[12]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [13]), + .Q(PIPE_TXDATA[13]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [14]), + .Q(PIPE_TXDATA[14]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [15]), + .Q(PIPE_TXDATA[15]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [1]), + .Q(PIPE_TXDATA[1]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [2]), + .Q(PIPE_TXDATA[2]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [3]), + .Q(PIPE_TXDATA[3]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [4]), + .Q(PIPE_TXDATA[4]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [5]), + .Q(PIPE_TXDATA[5]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [6]), + .Q(PIPE_TXDATA[6]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [7]), + .Q(PIPE_TXDATA[7]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [8]), + .Q(PIPE_TXDATA[8]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [9]), + .Q(PIPE_TXDATA[9]), + .R(SR)); + FDSE \pipe_stages_1.pipe_tx_elec_idle_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_tx1_elec_idle), + .Q(PIPE_TXELECIDLE), + .S(SR)); + FDRE \pipe_stages_1.pipe_tx_powerdown_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 [0]), + .Q(PIPE_POWERDOWN[0]), + .R(SR)); + FDSE \pipe_stages_1.pipe_tx_powerdown_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 [1]), + .Q(PIPE_POWERDOWN[1]), + .S(SR)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pcie_pipe_lane" *) +module pcie_7x_0_pcie_7x_0_pcie_pipe_lane_0 + (PIPE_RXPOLARITY, + PIPE_TXCOMPLIANCE, + PIPE_TXELECIDLE, + pipe_rx2_valid, + pipe_rx2_chanisaligned, + pipe_rx2_phy_status, + pipe_rx2_elec_idle, + PIPE_TXDATAK, + PIPE_TXDATA, + PIPE_POWERDOWN, + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 , + \pipe_stages_1.pipe_rx_data_q_reg[15]_0 , + \pipe_stages_1.pipe_rx_status_q_reg[2]_0 , + SR, + pipe_rx2_polarity, + pipe_pclk_in, + pipe_tx2_compliance, + pipe_tx2_elec_idle, + pipe_rx2_valid_gt, + PIPE_RXCHANISALIGNED, + \pipe_stages_1.pipe_rx_phy_status_q_reg_0 , + \pipe_stages_1.pipe_rx_elec_idle_q_reg_0 , + \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 , + \pipe_stages_1.pipe_tx_data_q_reg[15]_0 , + \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 , + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 , + \pipe_stages_1.pipe_rx_data_q_reg[15]_1 , + \pipe_stages_1.pipe_rx_status_q_reg[2]_1 ); + output [0:0]PIPE_RXPOLARITY; + output [0:0]PIPE_TXCOMPLIANCE; + output [0:0]PIPE_TXELECIDLE; + output pipe_rx2_valid; + output pipe_rx2_chanisaligned; + output pipe_rx2_phy_status; + output pipe_rx2_elec_idle; + output [1:0]PIPE_TXDATAK; + output [15:0]PIPE_TXDATA; + output [1:0]PIPE_POWERDOWN; + output [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 ; + output [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_0 ; + output [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_0 ; + input [0:0]SR; + input pipe_rx2_polarity; + input pipe_pclk_in; + input pipe_tx2_compliance; + input pipe_tx2_elec_idle; + input pipe_rx2_valid_gt; + input [0:0]PIPE_RXCHANISALIGNED; + input \pipe_stages_1.pipe_rx_phy_status_q_reg_0 ; + input \pipe_stages_1.pipe_rx_elec_idle_q_reg_0 ; + input [1:0]\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 ; + input [15:0]\pipe_stages_1.pipe_tx_data_q_reg[15]_0 ; + input [1:0]\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 ; + input [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 ; + input [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_1 ; + input [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_1 ; + + wire [1:0]PIPE_POWERDOWN; + wire [0:0]PIPE_RXCHANISALIGNED; + wire [0:0]PIPE_RXPOLARITY; + wire [0:0]PIPE_TXCOMPLIANCE; + wire [15:0]PIPE_TXDATA; + wire [1:0]PIPE_TXDATAK; + wire [0:0]PIPE_TXELECIDLE; + wire [0:0]SR; + wire pipe_pclk_in; + wire pipe_rx2_chanisaligned; + wire pipe_rx2_elec_idle; + wire pipe_rx2_phy_status; + wire pipe_rx2_polarity; + wire pipe_rx2_valid; + wire pipe_rx2_valid_gt; + wire [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 ; + wire [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 ; + wire [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_0 ; + wire [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_1 ; + wire \pipe_stages_1.pipe_rx_elec_idle_q_reg_0 ; + wire \pipe_stages_1.pipe_rx_phy_status_q_reg_0 ; + wire [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_0 ; + wire [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_1 ; + wire [1:0]\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 ; + wire [15:0]\pipe_stages_1.pipe_tx_data_q_reg[15]_0 ; + wire [1:0]\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 ; + wire pipe_tx2_compliance; + wire pipe_tx2_elec_idle; + + FDRE \pipe_stages_1.pipe_rx_chanisaligned_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXCHANISALIGNED), + .Q(pipe_rx2_chanisaligned), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_char_is_k_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 [0]), + .Q(\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 [0]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_char_is_k_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 [1]), + .Q(\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 [1]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [0]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [0]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [10]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [10]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [11]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [11]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [12]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [12]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [13]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [13]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [14]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [14]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [15]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [15]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [1]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [1]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [2]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [2]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [3]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [3]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [4]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [4]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [5]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [5]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [6]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [6]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [7]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [7]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [8]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [8]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [9]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [9]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_elec_idle_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_elec_idle_q_reg_0 ), + .Q(pipe_rx2_elec_idle), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_phy_status_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_phy_status_q_reg_0 ), + .Q(pipe_rx2_phy_status), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_polarity_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_rx2_polarity), + .Q(PIPE_RXPOLARITY), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_status_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_status_q_reg[2]_1 [0]), + .Q(\pipe_stages_1.pipe_rx_status_q_reg[2]_0 [0]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_status_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_status_q_reg[2]_1 [1]), + .Q(\pipe_stages_1.pipe_rx_status_q_reg[2]_0 [1]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_status_q_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_status_q_reg[2]_1 [2]), + .Q(\pipe_stages_1.pipe_rx_status_q_reg[2]_0 [2]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_valid_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_rx2_valid_gt), + .Q(pipe_rx2_valid), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_char_is_k_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 [0]), + .Q(PIPE_TXDATAK[0]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_char_is_k_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 [1]), + .Q(PIPE_TXDATAK[1]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_compliance_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_tx2_compliance), + .Q(PIPE_TXCOMPLIANCE), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [0]), + .Q(PIPE_TXDATA[0]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [10]), + .Q(PIPE_TXDATA[10]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [11]), + .Q(PIPE_TXDATA[11]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [12]), + .Q(PIPE_TXDATA[12]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [13]), + .Q(PIPE_TXDATA[13]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [14]), + .Q(PIPE_TXDATA[14]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [15]), + .Q(PIPE_TXDATA[15]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [1]), + .Q(PIPE_TXDATA[1]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [2]), + .Q(PIPE_TXDATA[2]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [3]), + .Q(PIPE_TXDATA[3]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [4]), + .Q(PIPE_TXDATA[4]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [5]), + .Q(PIPE_TXDATA[5]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [6]), + .Q(PIPE_TXDATA[6]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [7]), + .Q(PIPE_TXDATA[7]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [8]), + .Q(PIPE_TXDATA[8]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [9]), + .Q(PIPE_TXDATA[9]), + .R(SR)); + FDSE \pipe_stages_1.pipe_tx_elec_idle_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_tx2_elec_idle), + .Q(PIPE_TXELECIDLE), + .S(SR)); + FDRE \pipe_stages_1.pipe_tx_powerdown_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 [0]), + .Q(PIPE_POWERDOWN[0]), + .R(SR)); + FDSE \pipe_stages_1.pipe_tx_powerdown_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 [1]), + .Q(PIPE_POWERDOWN[1]), + .S(SR)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pcie_pipe_lane" *) +module pcie_7x_0_pcie_7x_0_pcie_pipe_lane_1 + (PIPE_RXPOLARITY, + PIPE_TXCOMPLIANCE, + PIPE_TXELECIDLE, + pipe_rx3_valid, + pipe_rx3_chanisaligned, + pipe_rx3_phy_status, + pipe_rx3_elec_idle, + PIPE_TXDATAK, + PIPE_TXDATA, + PIPE_POWERDOWN, + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 , + \pipe_stages_1.pipe_rx_data_q_reg[15]_0 , + \pipe_stages_1.pipe_rx_status_q_reg[2]_0 , + SR, + pipe_rx3_polarity, + pipe_pclk_in, + pipe_tx3_compliance, + pipe_tx3_elec_idle, + pipe_rx3_valid_gt, + PIPE_RXCHANISALIGNED, + \pipe_stages_1.pipe_rx_phy_status_q_reg_0 , + \pipe_stages_1.pipe_rx_elec_idle_q_reg_0 , + \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 , + \pipe_stages_1.pipe_tx_data_q_reg[15]_0 , + \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 , + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 , + \pipe_stages_1.pipe_rx_data_q_reg[15]_1 , + \pipe_stages_1.pipe_rx_status_q_reg[2]_1 ); + output [0:0]PIPE_RXPOLARITY; + output [0:0]PIPE_TXCOMPLIANCE; + output [0:0]PIPE_TXELECIDLE; + output pipe_rx3_valid; + output pipe_rx3_chanisaligned; + output pipe_rx3_phy_status; + output pipe_rx3_elec_idle; + output [1:0]PIPE_TXDATAK; + output [15:0]PIPE_TXDATA; + output [1:0]PIPE_POWERDOWN; + output [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 ; + output [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_0 ; + output [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_0 ; + input [0:0]SR; + input pipe_rx3_polarity; + input pipe_pclk_in; + input pipe_tx3_compliance; + input pipe_tx3_elec_idle; + input pipe_rx3_valid_gt; + input [0:0]PIPE_RXCHANISALIGNED; + input \pipe_stages_1.pipe_rx_phy_status_q_reg_0 ; + input \pipe_stages_1.pipe_rx_elec_idle_q_reg_0 ; + input [1:0]\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 ; + input [15:0]\pipe_stages_1.pipe_tx_data_q_reg[15]_0 ; + input [1:0]\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 ; + input [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 ; + input [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_1 ; + input [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_1 ; + + wire [1:0]PIPE_POWERDOWN; + wire [0:0]PIPE_RXCHANISALIGNED; + wire [0:0]PIPE_RXPOLARITY; + wire [0:0]PIPE_TXCOMPLIANCE; + wire [15:0]PIPE_TXDATA; + wire [1:0]PIPE_TXDATAK; + wire [0:0]PIPE_TXELECIDLE; + wire [0:0]SR; + wire pipe_pclk_in; + wire pipe_rx3_chanisaligned; + wire pipe_rx3_elec_idle; + wire pipe_rx3_phy_status; + wire pipe_rx3_polarity; + wire pipe_rx3_valid; + wire pipe_rx3_valid_gt; + wire [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 ; + wire [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 ; + wire [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_0 ; + wire [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_1 ; + wire \pipe_stages_1.pipe_rx_elec_idle_q_reg_0 ; + wire \pipe_stages_1.pipe_rx_phy_status_q_reg_0 ; + wire [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_0 ; + wire [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_1 ; + wire [1:0]\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 ; + wire [15:0]\pipe_stages_1.pipe_tx_data_q_reg[15]_0 ; + wire [1:0]\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 ; + wire pipe_tx3_compliance; + wire pipe_tx3_elec_idle; + + FDRE \pipe_stages_1.pipe_rx_chanisaligned_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXCHANISALIGNED), + .Q(pipe_rx3_chanisaligned), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_char_is_k_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 [0]), + .Q(\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 [0]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_char_is_k_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 [1]), + .Q(\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 [1]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [0]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [0]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [10]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [10]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [11]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [11]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [12]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [12]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [13]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [13]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [14]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [14]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [15]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [15]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [1]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [1]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [2]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [2]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [3]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [3]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [4]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [4]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [5]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [5]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [6]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [6]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [7]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [7]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [8]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [8]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [9]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [9]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_elec_idle_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_elec_idle_q_reg_0 ), + .Q(pipe_rx3_elec_idle), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_phy_status_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_phy_status_q_reg_0 ), + .Q(pipe_rx3_phy_status), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_polarity_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_rx3_polarity), + .Q(PIPE_RXPOLARITY), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_status_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_status_q_reg[2]_1 [0]), + .Q(\pipe_stages_1.pipe_rx_status_q_reg[2]_0 [0]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_status_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_status_q_reg[2]_1 [1]), + .Q(\pipe_stages_1.pipe_rx_status_q_reg[2]_0 [1]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_status_q_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_status_q_reg[2]_1 [2]), + .Q(\pipe_stages_1.pipe_rx_status_q_reg[2]_0 [2]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_valid_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_rx3_valid_gt), + .Q(pipe_rx3_valid), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_char_is_k_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 [0]), + .Q(PIPE_TXDATAK[0]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_char_is_k_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 [1]), + .Q(PIPE_TXDATAK[1]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_compliance_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_tx3_compliance), + .Q(PIPE_TXCOMPLIANCE), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [0]), + .Q(PIPE_TXDATA[0]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [10]), + .Q(PIPE_TXDATA[10]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [11]), + .Q(PIPE_TXDATA[11]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [12]), + .Q(PIPE_TXDATA[12]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [13]), + .Q(PIPE_TXDATA[13]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [14]), + .Q(PIPE_TXDATA[14]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [15]), + .Q(PIPE_TXDATA[15]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [1]), + .Q(PIPE_TXDATA[1]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [2]), + .Q(PIPE_TXDATA[2]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [3]), + .Q(PIPE_TXDATA[3]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [4]), + .Q(PIPE_TXDATA[4]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [5]), + .Q(PIPE_TXDATA[5]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [6]), + .Q(PIPE_TXDATA[6]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [7]), + .Q(PIPE_TXDATA[7]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [8]), + .Q(PIPE_TXDATA[8]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [9]), + .Q(PIPE_TXDATA[9]), + .R(SR)); + FDSE \pipe_stages_1.pipe_tx_elec_idle_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_tx3_elec_idle), + .Q(PIPE_TXELECIDLE), + .S(SR)); + FDRE \pipe_stages_1.pipe_tx_powerdown_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 [0]), + .Q(PIPE_POWERDOWN[0]), + .R(SR)); + FDSE \pipe_stages_1.pipe_tx_powerdown_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 [1]), + .Q(PIPE_POWERDOWN[1]), + .S(SR)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pcie_pipe_lane" *) +module pcie_7x_0_pcie_7x_0_pcie_pipe_lane_2 + (PIPE_RXPOLARITY, + PIPE_TXCOMPLIANCE, + PIPE_TXELECIDLE, + pipe_rx0_valid, + pipe_rx0_chanisaligned, + pipe_rx0_phy_status, + pipe_rx0_elec_idle, + PIPE_TXDATAK, + PIPE_TXDATA, + PIPE_POWERDOWN, + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 , + \pipe_stages_1.pipe_rx_data_q_reg[15]_0 , + \pipe_stages_1.pipe_rx_status_q_reg[2]_0 , + SR, + pipe_rx0_polarity, + pipe_pclk_in, + pipe_tx0_compliance, + pipe_tx0_elec_idle, + pipe_rx0_valid_gt, + PIPE_RXCHANISALIGNED, + gt_rx_phy_status_q, + gt_rxelecidle_q, + \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 , + \pipe_stages_1.pipe_tx_data_q_reg[15]_0 , + \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 , + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 , + \pipe_stages_1.pipe_rx_data_q_reg[15]_1 , + \pipe_stages_1.pipe_rx_status_q_reg[2]_1 ); + output [0:0]PIPE_RXPOLARITY; + output [0:0]PIPE_TXCOMPLIANCE; + output [0:0]PIPE_TXELECIDLE; + output pipe_rx0_valid; + output pipe_rx0_chanisaligned; + output pipe_rx0_phy_status; + output pipe_rx0_elec_idle; + output [1:0]PIPE_TXDATAK; + output [15:0]PIPE_TXDATA; + output [1:0]PIPE_POWERDOWN; + output [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 ; + output [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_0 ; + output [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_0 ; + input [0:0]SR; + input pipe_rx0_polarity; + input pipe_pclk_in; + input pipe_tx0_compliance; + input pipe_tx0_elec_idle; + input pipe_rx0_valid_gt; + input [0:0]PIPE_RXCHANISALIGNED; + input gt_rx_phy_status_q; + input gt_rxelecidle_q; + input [1:0]\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 ; + input [15:0]\pipe_stages_1.pipe_tx_data_q_reg[15]_0 ; + input [1:0]\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 ; + input [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 ; + input [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_1 ; + input [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_1 ; + + wire [1:0]PIPE_POWERDOWN; + wire [0:0]PIPE_RXCHANISALIGNED; + wire [0:0]PIPE_RXPOLARITY; + wire [0:0]PIPE_TXCOMPLIANCE; + wire [15:0]PIPE_TXDATA; + wire [1:0]PIPE_TXDATAK; + wire [0:0]PIPE_TXELECIDLE; + wire [0:0]SR; + wire gt_rx_phy_status_q; + wire gt_rxelecidle_q; + wire pipe_pclk_in; + wire pipe_rx0_chanisaligned; + wire pipe_rx0_elec_idle; + wire pipe_rx0_phy_status; + wire pipe_rx0_polarity; + wire pipe_rx0_valid; + wire pipe_rx0_valid_gt; + wire [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 ; + wire [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 ; + wire [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_0 ; + wire [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_1 ; + wire [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_0 ; + wire [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_1 ; + wire [1:0]\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 ; + wire [15:0]\pipe_stages_1.pipe_tx_data_q_reg[15]_0 ; + wire [1:0]\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 ; + wire pipe_tx0_compliance; + wire pipe_tx0_elec_idle; + + FDRE \pipe_stages_1.pipe_rx_chanisaligned_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_RXCHANISALIGNED), + .Q(pipe_rx0_chanisaligned), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_char_is_k_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 [0]), + .Q(\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 [0]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_char_is_k_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 [1]), + .Q(\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 [1]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [0]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [0]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [10]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [10]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [11]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [11]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [12]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [12]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [13]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [13]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [14]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [14]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [15]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [15]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [1]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [1]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [2]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [2]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [3]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [3]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [4]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [4]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [5]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [5]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [6]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [6]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [7]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [7]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [8]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [8]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_data_q_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_data_q_reg[15]_1 [9]), + .Q(\pipe_stages_1.pipe_rx_data_q_reg[15]_0 [9]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_elec_idle_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gt_rxelecidle_q), + .Q(pipe_rx0_elec_idle), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_phy_status_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gt_rx_phy_status_q), + .Q(pipe_rx0_phy_status), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_polarity_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_rx0_polarity), + .Q(PIPE_RXPOLARITY), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_status_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_status_q_reg[2]_1 [0]), + .Q(\pipe_stages_1.pipe_rx_status_q_reg[2]_0 [0]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_status_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_status_q_reg[2]_1 [1]), + .Q(\pipe_stages_1.pipe_rx_status_q_reg[2]_0 [1]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_status_q_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_rx_status_q_reg[2]_1 [2]), + .Q(\pipe_stages_1.pipe_rx_status_q_reg[2]_0 [2]), + .R(SR)); + FDRE \pipe_stages_1.pipe_rx_valid_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_rx0_valid_gt), + .Q(pipe_rx0_valid), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_char_is_k_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 [0]), + .Q(PIPE_TXDATAK[0]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_char_is_k_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 [1]), + .Q(PIPE_TXDATAK[1]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_compliance_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_tx0_compliance), + .Q(PIPE_TXCOMPLIANCE), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [0]), + .Q(PIPE_TXDATA[0]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [10]), + .Q(PIPE_TXDATA[10]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [11]), + .Q(PIPE_TXDATA[11]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [12]), + .Q(PIPE_TXDATA[12]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [13]), + .Q(PIPE_TXDATA[13]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [14]), + .Q(PIPE_TXDATA[14]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [15]), + .Q(PIPE_TXDATA[15]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [1]), + .Q(PIPE_TXDATA[1]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [2]), + .Q(PIPE_TXDATA[2]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [3]), + .Q(PIPE_TXDATA[3]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [4]), + .Q(PIPE_TXDATA[4]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [5]), + .Q(PIPE_TXDATA[5]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [6]), + .Q(PIPE_TXDATA[6]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [7]), + .Q(PIPE_TXDATA[7]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [8]), + .Q(PIPE_TXDATA[8]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_data_q_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_data_q_reg[15]_0 [9]), + .Q(PIPE_TXDATA[9]), + .R(SR)); + FDSE \pipe_stages_1.pipe_tx_elec_idle_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_tx0_elec_idle), + .Q(PIPE_TXELECIDLE), + .S(SR)); + FDRE \pipe_stages_1.pipe_tx_powerdown_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 [0]), + .Q(PIPE_POWERDOWN[0]), + .R(SR)); + FDSE \pipe_stages_1.pipe_tx_powerdown_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 [1]), + .Q(PIPE_POWERDOWN[1]), + .S(SR)); +endmodule + +module pcie_7x_0_pcie_7x_0_pcie_pipe_misc + (pipe_tx_rcvr_det_gt, + \pipe_stages_1.pipe_tx_rate_q_reg_0 , + pipe_tx_deemph_gt, + \pipe_stages_1.pipe_tx_margin_q_reg[2]_0 , + SR, + pipe_tx_rcvr_det, + pipe_pclk_in, + pipe_tx_rate, + pipe_tx_deemph, + \pipe_stages_1.pipe_tx_margin_q_reg[2]_1 ); + output pipe_tx_rcvr_det_gt; + output [0:0]\pipe_stages_1.pipe_tx_rate_q_reg_0 ; + output pipe_tx_deemph_gt; + output [2:0]\pipe_stages_1.pipe_tx_margin_q_reg[2]_0 ; + input [0:0]SR; + input pipe_tx_rcvr_det; + input pipe_pclk_in; + input pipe_tx_rate; + input pipe_tx_deemph; + input [2:0]\pipe_stages_1.pipe_tx_margin_q_reg[2]_1 ; + + wire [0:0]SR; + wire pipe_pclk_in; + wire [2:0]\pipe_stages_1.pipe_tx_margin_q_reg[2]_0 ; + wire [2:0]\pipe_stages_1.pipe_tx_margin_q_reg[2]_1 ; + wire [0:0]\pipe_stages_1.pipe_tx_rate_q_reg_0 ; + wire pipe_tx_deemph; + wire pipe_tx_deemph_gt; + wire pipe_tx_rate; + wire pipe_tx_rcvr_det; + wire pipe_tx_rcvr_det_gt; + + FDSE \pipe_stages_1.pipe_tx_deemph_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_tx_deemph), + .Q(pipe_tx_deemph_gt), + .S(SR)); + FDRE \pipe_stages_1.pipe_tx_margin_q_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_margin_q_reg[2]_1 [0]), + .Q(\pipe_stages_1.pipe_tx_margin_q_reg[2]_0 [0]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_margin_q_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_margin_q_reg[2]_1 [1]), + .Q(\pipe_stages_1.pipe_tx_margin_q_reg[2]_0 [1]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_margin_q_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\pipe_stages_1.pipe_tx_margin_q_reg[2]_1 [2]), + .Q(\pipe_stages_1.pipe_tx_margin_q_reg[2]_0 [2]), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_rate_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_tx_rate), + .Q(\pipe_stages_1.pipe_tx_rate_q_reg_0 ), + .R(SR)); + FDRE \pipe_stages_1.pipe_tx_rcvr_det_q_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_tx_rcvr_det), + .Q(pipe_tx_rcvr_det_gt), + .R(SR)); +endmodule + +module pcie_7x_0_pcie_7x_0_pcie_pipe_pipeline + (pipe_rx1_valid, + pipe_rx1_chanisaligned, + pipe_rx1_phy_status, + pipe_rx1_elec_idle, + PIPE_RXPOLARITY, + PIPE_TXCOMPLIANCE, + PIPE_TXELECIDLE, + pipe_rx2_valid, + pipe_rx2_chanisaligned, + pipe_rx2_phy_status, + pipe_rx2_elec_idle, + pipe_rx3_valid, + pipe_rx3_chanisaligned, + pipe_rx3_phy_status, + pipe_rx3_elec_idle, + pipe_tx_rcvr_det_gt, + \pipe_stages_1.pipe_tx_rate_q_reg , + pipe_tx_deemph_gt, + pipe_rx0_valid, + pipe_rx0_chanisaligned, + pipe_rx0_phy_status, + pipe_rx0_elec_idle, + Q, + \pipe_stages_1.pipe_rx_data_q_reg[15] , + \pipe_stages_1.pipe_rx_status_q_reg[2] , + PIPE_TXDATAK, + PIPE_TXDATA, + PIPE_POWERDOWN, + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1] , + \pipe_stages_1.pipe_rx_data_q_reg[15]_0 , + \pipe_stages_1.pipe_rx_status_q_reg[2]_0 , + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 , + \pipe_stages_1.pipe_rx_data_q_reg[15]_1 , + \pipe_stages_1.pipe_rx_status_q_reg[2]_1 , + \pipe_stages_1.pipe_tx_margin_q_reg[2] , + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 , + \pipe_stages_1.pipe_rx_data_q_reg[15]_2 , + \pipe_stages_1.pipe_rx_status_q_reg[2]_2 , + SR, + pipe_rx1_valid_gt, + pipe_pclk_in, + PIPE_RXCHANISALIGNED, + \pipe_stages_1.pipe_rx_phy_status_q_reg , + \pipe_stages_1.pipe_rx_elec_idle_q_reg , + pipe_rx0_polarity, + pipe_rx1_polarity, + pipe_rx2_polarity, + pipe_rx3_polarity, + pipe_tx0_compliance, + pipe_tx1_compliance, + pipe_tx2_compliance, + pipe_tx3_compliance, + pipe_tx0_elec_idle, + pipe_tx1_elec_idle, + pipe_tx2_elec_idle, + pipe_tx3_elec_idle, + pipe_rx2_valid_gt, + \pipe_stages_1.pipe_rx_phy_status_q_reg_0 , + \pipe_stages_1.pipe_rx_elec_idle_q_reg_0 , + pipe_rx3_valid_gt, + \pipe_stages_1.pipe_rx_phy_status_q_reg_1 , + \pipe_stages_1.pipe_rx_elec_idle_q_reg_1 , + pipe_tx_rcvr_det, + pipe_tx_rate, + pipe_tx_deemph, + pipe_rx0_valid_gt, + gt_rx_phy_status_q, + gt_rxelecidle_q, + D, + \pipe_stages_1.pipe_rx_data_q_reg[15]_3 , + \pipe_stages_1.pipe_rx_status_q_reg[2]_3 , + \pipe_stages_1.pipe_tx_char_is_k_q_reg[1] , + \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 , + \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_1 , + \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_2 , + \pipe_stages_1.pipe_tx_data_q_reg[15] , + \pipe_stages_1.pipe_tx_data_q_reg[15]_0 , + \pipe_stages_1.pipe_tx_data_q_reg[15]_1 , + \pipe_stages_1.pipe_tx_data_q_reg[15]_2 , + \pipe_stages_1.pipe_tx_powerdown_q_reg[1] , + \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 , + \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_1 , + \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_2 , + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_2 , + \pipe_stages_1.pipe_rx_data_q_reg[15]_4 , + \pipe_stages_1.pipe_rx_status_q_reg[2]_4 , + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_3 , + \pipe_stages_1.pipe_rx_data_q_reg[15]_5 , + \pipe_stages_1.pipe_rx_status_q_reg[2]_5 , + \pipe_stages_1.pipe_tx_margin_q_reg[2]_0 , + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_4 , + \pipe_stages_1.pipe_rx_data_q_reg[15]_6 , + \pipe_stages_1.pipe_rx_status_q_reg[2]_6 ); + output pipe_rx1_valid; + output pipe_rx1_chanisaligned; + output pipe_rx1_phy_status; + output pipe_rx1_elec_idle; + output [3:0]PIPE_RXPOLARITY; + output [3:0]PIPE_TXCOMPLIANCE; + output [3:0]PIPE_TXELECIDLE; + output pipe_rx2_valid; + output pipe_rx2_chanisaligned; + output pipe_rx2_phy_status; + output pipe_rx2_elec_idle; + output pipe_rx3_valid; + output pipe_rx3_chanisaligned; + output pipe_rx3_phy_status; + output pipe_rx3_elec_idle; + output pipe_tx_rcvr_det_gt; + output [0:0]\pipe_stages_1.pipe_tx_rate_q_reg ; + output pipe_tx_deemph_gt; + output pipe_rx0_valid; + output pipe_rx0_chanisaligned; + output pipe_rx0_phy_status; + output pipe_rx0_elec_idle; + output [1:0]Q; + output [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15] ; + output [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2] ; + output [7:0]PIPE_TXDATAK; + output [63:0]PIPE_TXDATA; + output [7:0]PIPE_POWERDOWN; + output [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1] ; + output [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_0 ; + output [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_0 ; + output [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 ; + output [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_1 ; + output [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_1 ; + output [2:0]\pipe_stages_1.pipe_tx_margin_q_reg[2] ; + output [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 ; + output [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_2 ; + output [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_2 ; + input [0:0]SR; + input pipe_rx1_valid_gt; + input pipe_pclk_in; + input [3:0]PIPE_RXCHANISALIGNED; + input \pipe_stages_1.pipe_rx_phy_status_q_reg ; + input \pipe_stages_1.pipe_rx_elec_idle_q_reg ; + input pipe_rx0_polarity; + input pipe_rx1_polarity; + input pipe_rx2_polarity; + input pipe_rx3_polarity; + input pipe_tx0_compliance; + input pipe_tx1_compliance; + input pipe_tx2_compliance; + input pipe_tx3_compliance; + input pipe_tx0_elec_idle; + input pipe_tx1_elec_idle; + input pipe_tx2_elec_idle; + input pipe_tx3_elec_idle; + input pipe_rx2_valid_gt; + input \pipe_stages_1.pipe_rx_phy_status_q_reg_0 ; + input \pipe_stages_1.pipe_rx_elec_idle_q_reg_0 ; + input pipe_rx3_valid_gt; + input \pipe_stages_1.pipe_rx_phy_status_q_reg_1 ; + input \pipe_stages_1.pipe_rx_elec_idle_q_reg_1 ; + input pipe_tx_rcvr_det; + input pipe_tx_rate; + input pipe_tx_deemph; + input pipe_rx0_valid_gt; + input gt_rx_phy_status_q; + input gt_rxelecidle_q; + input [1:0]D; + input [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_3 ; + input [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_3 ; + input [1:0]\pipe_stages_1.pipe_tx_char_is_k_q_reg[1] ; + input [1:0]\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 ; + input [1:0]\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_1 ; + input [1:0]\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_2 ; + input [15:0]\pipe_stages_1.pipe_tx_data_q_reg[15] ; + input [15:0]\pipe_stages_1.pipe_tx_data_q_reg[15]_0 ; + input [15:0]\pipe_stages_1.pipe_tx_data_q_reg[15]_1 ; + input [15:0]\pipe_stages_1.pipe_tx_data_q_reg[15]_2 ; + input [1:0]\pipe_stages_1.pipe_tx_powerdown_q_reg[1] ; + input [1:0]\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 ; + input [1:0]\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_1 ; + input [1:0]\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_2 ; + input [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_2 ; + input [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_4 ; + input [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_4 ; + input [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_3 ; + input [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_5 ; + input [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_5 ; + input [2:0]\pipe_stages_1.pipe_tx_margin_q_reg[2]_0 ; + input [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_4 ; + input [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_6 ; + input [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_6 ; + + wire [1:0]D; + wire [7:0]PIPE_POWERDOWN; + wire [3:0]PIPE_RXCHANISALIGNED; + wire [3:0]PIPE_RXPOLARITY; + wire [3:0]PIPE_TXCOMPLIANCE; + wire [63:0]PIPE_TXDATA; + wire [7:0]PIPE_TXDATAK; + wire [3:0]PIPE_TXELECIDLE; + wire [1:0]Q; + wire [0:0]SR; + wire gt_rx_phy_status_q; + wire gt_rxelecidle_q; + wire pipe_pclk_in; + wire pipe_rx0_chanisaligned; + wire pipe_rx0_elec_idle; + wire pipe_rx0_phy_status; + wire pipe_rx0_polarity; + wire pipe_rx0_valid; + wire pipe_rx0_valid_gt; + wire pipe_rx1_chanisaligned; + wire pipe_rx1_elec_idle; + wire pipe_rx1_phy_status; + wire pipe_rx1_polarity; + wire pipe_rx1_valid; + wire pipe_rx1_valid_gt; + wire pipe_rx2_chanisaligned; + wire pipe_rx2_elec_idle; + wire pipe_rx2_phy_status; + wire pipe_rx2_polarity; + wire pipe_rx2_valid; + wire pipe_rx2_valid_gt; + wire pipe_rx3_chanisaligned; + wire pipe_rx3_elec_idle; + wire pipe_rx3_phy_status; + wire pipe_rx3_polarity; + wire pipe_rx3_valid; + wire pipe_rx3_valid_gt; + wire [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1] ; + wire [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 ; + wire [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 ; + wire [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_2 ; + wire [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_3 ; + wire [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_4 ; + wire [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15] ; + wire [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_0 ; + wire [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_1 ; + wire [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_2 ; + wire [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_3 ; + wire [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_4 ; + wire [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_5 ; + wire [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_6 ; + wire \pipe_stages_1.pipe_rx_elec_idle_q_reg ; + wire \pipe_stages_1.pipe_rx_elec_idle_q_reg_0 ; + wire \pipe_stages_1.pipe_rx_elec_idle_q_reg_1 ; + wire \pipe_stages_1.pipe_rx_phy_status_q_reg ; + wire \pipe_stages_1.pipe_rx_phy_status_q_reg_0 ; + wire \pipe_stages_1.pipe_rx_phy_status_q_reg_1 ; + wire [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2] ; + wire [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_0 ; + wire [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_1 ; + wire [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_2 ; + wire [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_3 ; + wire [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_4 ; + wire [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_5 ; + wire [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_6 ; + wire [1:0]\pipe_stages_1.pipe_tx_char_is_k_q_reg[1] ; + wire [1:0]\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 ; + wire [1:0]\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_1 ; + wire [1:0]\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_2 ; + wire [15:0]\pipe_stages_1.pipe_tx_data_q_reg[15] ; + wire [15:0]\pipe_stages_1.pipe_tx_data_q_reg[15]_0 ; + wire [15:0]\pipe_stages_1.pipe_tx_data_q_reg[15]_1 ; + wire [15:0]\pipe_stages_1.pipe_tx_data_q_reg[15]_2 ; + wire [2:0]\pipe_stages_1.pipe_tx_margin_q_reg[2] ; + wire [2:0]\pipe_stages_1.pipe_tx_margin_q_reg[2]_0 ; + wire [1:0]\pipe_stages_1.pipe_tx_powerdown_q_reg[1] ; + wire [1:0]\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 ; + wire [1:0]\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_1 ; + wire [1:0]\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_2 ; + wire [0:0]\pipe_stages_1.pipe_tx_rate_q_reg ; + wire pipe_tx0_compliance; + wire pipe_tx0_elec_idle; + wire pipe_tx1_compliance; + wire pipe_tx1_elec_idle; + wire pipe_tx2_compliance; + wire pipe_tx2_elec_idle; + wire pipe_tx3_compliance; + wire pipe_tx3_elec_idle; + wire pipe_tx_deemph; + wire pipe_tx_deemph_gt; + wire pipe_tx_rate; + wire pipe_tx_rcvr_det; + wire pipe_tx_rcvr_det_gt; + + pcie_7x_0_pcie_7x_0_pcie_pipe_lane \pipe_2_lane.pipe_lane_1_i + (.D(D), + .PIPE_POWERDOWN(PIPE_POWERDOWN[3:2]), + .PIPE_RXCHANISALIGNED(PIPE_RXCHANISALIGNED[1]), + .PIPE_RXPOLARITY(PIPE_RXPOLARITY[1]), + .PIPE_TXCOMPLIANCE(PIPE_TXCOMPLIANCE[1]), + .PIPE_TXDATA(PIPE_TXDATA[31:16]), + .PIPE_TXDATAK(PIPE_TXDATAK[3:2]), + .PIPE_TXELECIDLE(PIPE_TXELECIDLE[1]), + .Q(Q), + .SR(SR), + .pipe_pclk_in(pipe_pclk_in), + .pipe_rx1_chanisaligned(pipe_rx1_chanisaligned), + .pipe_rx1_elec_idle(pipe_rx1_elec_idle), + .pipe_rx1_phy_status(pipe_rx1_phy_status), + .pipe_rx1_polarity(pipe_rx1_polarity), + .pipe_rx1_valid(pipe_rx1_valid), + .pipe_rx1_valid_gt(pipe_rx1_valid_gt), + .\pipe_stages_1.pipe_rx_data_q_reg[15]_0 (\pipe_stages_1.pipe_rx_data_q_reg[15] ), + .\pipe_stages_1.pipe_rx_data_q_reg[15]_1 (\pipe_stages_1.pipe_rx_data_q_reg[15]_3 ), + .\pipe_stages_1.pipe_rx_elec_idle_q_reg_0 (\pipe_stages_1.pipe_rx_elec_idle_q_reg ), + .\pipe_stages_1.pipe_rx_phy_status_q_reg_0 (\pipe_stages_1.pipe_rx_phy_status_q_reg ), + .\pipe_stages_1.pipe_rx_status_q_reg[2]_0 (\pipe_stages_1.pipe_rx_status_q_reg[2] ), + .\pipe_stages_1.pipe_rx_status_q_reg[2]_1 (\pipe_stages_1.pipe_rx_status_q_reg[2]_3 ), + .\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 (\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 ), + .\pipe_stages_1.pipe_tx_data_q_reg[15]_0 (\pipe_stages_1.pipe_tx_data_q_reg[15]_0 ), + .\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 (\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 ), + .pipe_tx1_compliance(pipe_tx1_compliance), + .pipe_tx1_elec_idle(pipe_tx1_elec_idle)); + pcie_7x_0_pcie_7x_0_pcie_pipe_lane_0 \pipe_4_lane.pipe_lane_2_i + (.PIPE_POWERDOWN(PIPE_POWERDOWN[5:4]), + .PIPE_RXCHANISALIGNED(PIPE_RXCHANISALIGNED[2]), + .PIPE_RXPOLARITY(PIPE_RXPOLARITY[2]), + .PIPE_TXCOMPLIANCE(PIPE_TXCOMPLIANCE[2]), + .PIPE_TXDATA(PIPE_TXDATA[47:32]), + .PIPE_TXDATAK(PIPE_TXDATAK[5:4]), + .PIPE_TXELECIDLE(PIPE_TXELECIDLE[2]), + .SR(SR), + .pipe_pclk_in(pipe_pclk_in), + .pipe_rx2_chanisaligned(pipe_rx2_chanisaligned), + .pipe_rx2_elec_idle(pipe_rx2_elec_idle), + .pipe_rx2_phy_status(pipe_rx2_phy_status), + .pipe_rx2_polarity(pipe_rx2_polarity), + .pipe_rx2_valid(pipe_rx2_valid), + .pipe_rx2_valid_gt(pipe_rx2_valid_gt), + .\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 (\pipe_stages_1.pipe_rx_char_is_k_q_reg[1] ), + .\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 (\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_2 ), + .\pipe_stages_1.pipe_rx_data_q_reg[15]_0 (\pipe_stages_1.pipe_rx_data_q_reg[15]_0 ), + .\pipe_stages_1.pipe_rx_data_q_reg[15]_1 (\pipe_stages_1.pipe_rx_data_q_reg[15]_4 ), + .\pipe_stages_1.pipe_rx_elec_idle_q_reg_0 (\pipe_stages_1.pipe_rx_elec_idle_q_reg_0 ), + .\pipe_stages_1.pipe_rx_phy_status_q_reg_0 (\pipe_stages_1.pipe_rx_phy_status_q_reg_0 ), + .\pipe_stages_1.pipe_rx_status_q_reg[2]_0 (\pipe_stages_1.pipe_rx_status_q_reg[2]_0 ), + .\pipe_stages_1.pipe_rx_status_q_reg[2]_1 (\pipe_stages_1.pipe_rx_status_q_reg[2]_4 ), + .\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 (\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_1 ), + .\pipe_stages_1.pipe_tx_data_q_reg[15]_0 (\pipe_stages_1.pipe_tx_data_q_reg[15]_1 ), + .\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 (\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_1 ), + .pipe_tx2_compliance(pipe_tx2_compliance), + .pipe_tx2_elec_idle(pipe_tx2_elec_idle)); + pcie_7x_0_pcie_7x_0_pcie_pipe_lane_1 \pipe_4_lane.pipe_lane_3_i + (.PIPE_POWERDOWN(PIPE_POWERDOWN[7:6]), + .PIPE_RXCHANISALIGNED(PIPE_RXCHANISALIGNED[3]), + .PIPE_RXPOLARITY(PIPE_RXPOLARITY[3]), + .PIPE_TXCOMPLIANCE(PIPE_TXCOMPLIANCE[3]), + .PIPE_TXDATA(PIPE_TXDATA[63:48]), + .PIPE_TXDATAK(PIPE_TXDATAK[7:6]), + .PIPE_TXELECIDLE(PIPE_TXELECIDLE[3]), + .SR(SR), + .pipe_pclk_in(pipe_pclk_in), + .pipe_rx3_chanisaligned(pipe_rx3_chanisaligned), + .pipe_rx3_elec_idle(pipe_rx3_elec_idle), + .pipe_rx3_phy_status(pipe_rx3_phy_status), + .pipe_rx3_polarity(pipe_rx3_polarity), + .pipe_rx3_valid(pipe_rx3_valid), + .pipe_rx3_valid_gt(pipe_rx3_valid_gt), + .\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 (\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 ), + .\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 (\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_3 ), + .\pipe_stages_1.pipe_rx_data_q_reg[15]_0 (\pipe_stages_1.pipe_rx_data_q_reg[15]_1 ), + .\pipe_stages_1.pipe_rx_data_q_reg[15]_1 (\pipe_stages_1.pipe_rx_data_q_reg[15]_5 ), + .\pipe_stages_1.pipe_rx_elec_idle_q_reg_0 (\pipe_stages_1.pipe_rx_elec_idle_q_reg_1 ), + .\pipe_stages_1.pipe_rx_phy_status_q_reg_0 (\pipe_stages_1.pipe_rx_phy_status_q_reg_1 ), + .\pipe_stages_1.pipe_rx_status_q_reg[2]_0 (\pipe_stages_1.pipe_rx_status_q_reg[2]_1 ), + .\pipe_stages_1.pipe_rx_status_q_reg[2]_1 (\pipe_stages_1.pipe_rx_status_q_reg[2]_5 ), + .\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 (\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_2 ), + .\pipe_stages_1.pipe_tx_data_q_reg[15]_0 (\pipe_stages_1.pipe_tx_data_q_reg[15]_2 ), + .\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 (\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_2 ), + .pipe_tx3_compliance(pipe_tx3_compliance), + .pipe_tx3_elec_idle(pipe_tx3_elec_idle)); + pcie_7x_0_pcie_7x_0_pcie_pipe_lane_2 pipe_lane_0_i + (.PIPE_POWERDOWN(PIPE_POWERDOWN[1:0]), + .PIPE_RXCHANISALIGNED(PIPE_RXCHANISALIGNED[0]), + .PIPE_RXPOLARITY(PIPE_RXPOLARITY[0]), + .PIPE_TXCOMPLIANCE(PIPE_TXCOMPLIANCE[0]), + .PIPE_TXDATA(PIPE_TXDATA[15:0]), + .PIPE_TXDATAK(PIPE_TXDATAK[1:0]), + .PIPE_TXELECIDLE(PIPE_TXELECIDLE[0]), + .SR(SR), + .gt_rx_phy_status_q(gt_rx_phy_status_q), + .gt_rxelecidle_q(gt_rxelecidle_q), + .pipe_pclk_in(pipe_pclk_in), + .pipe_rx0_chanisaligned(pipe_rx0_chanisaligned), + .pipe_rx0_elec_idle(pipe_rx0_elec_idle), + .pipe_rx0_phy_status(pipe_rx0_phy_status), + .pipe_rx0_polarity(pipe_rx0_polarity), + .pipe_rx0_valid(pipe_rx0_valid), + .pipe_rx0_valid_gt(pipe_rx0_valid_gt), + .\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 (\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 ), + .\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 (\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_4 ), + .\pipe_stages_1.pipe_rx_data_q_reg[15]_0 (\pipe_stages_1.pipe_rx_data_q_reg[15]_2 ), + .\pipe_stages_1.pipe_rx_data_q_reg[15]_1 (\pipe_stages_1.pipe_rx_data_q_reg[15]_6 ), + .\pipe_stages_1.pipe_rx_status_q_reg[2]_0 (\pipe_stages_1.pipe_rx_status_q_reg[2]_2 ), + .\pipe_stages_1.pipe_rx_status_q_reg[2]_1 (\pipe_stages_1.pipe_rx_status_q_reg[2]_6 ), + .\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 (\pipe_stages_1.pipe_tx_char_is_k_q_reg[1] ), + .\pipe_stages_1.pipe_tx_data_q_reg[15]_0 (\pipe_stages_1.pipe_tx_data_q_reg[15] ), + .\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 (\pipe_stages_1.pipe_tx_powerdown_q_reg[1] ), + .pipe_tx0_compliance(pipe_tx0_compliance), + .pipe_tx0_elec_idle(pipe_tx0_elec_idle)); + pcie_7x_0_pcie_7x_0_pcie_pipe_misc pipe_misc_i + (.SR(SR), + .pipe_pclk_in(pipe_pclk_in), + .\pipe_stages_1.pipe_tx_margin_q_reg[2]_0 (\pipe_stages_1.pipe_tx_margin_q_reg[2] ), + .\pipe_stages_1.pipe_tx_margin_q_reg[2]_1 (\pipe_stages_1.pipe_tx_margin_q_reg[2]_0 ), + .\pipe_stages_1.pipe_tx_rate_q_reg_0 (\pipe_stages_1.pipe_tx_rate_q_reg ), + .pipe_tx_deemph(pipe_tx_deemph), + .pipe_tx_deemph_gt(pipe_tx_deemph_gt), + .pipe_tx_rate(pipe_tx_rate), + .pipe_tx_rcvr_det(pipe_tx_rcvr_det), + .pipe_tx_rcvr_det_gt(pipe_tx_rcvr_det_gt)); +endmodule + +module pcie_7x_0_pcie_7x_0_pcie_top + (m_axis_rx_tvalid_reg, + m_axis_rx_tkeep, + m_axis_rx_tlast, + trn_tcfg_req, + tready_thrtl_reg, + PIPE_RXPOLARITY, + PIPE_TXCOMPLIANCE, + PIPE_TXELECIDLE, + pipe_tx_rcvr_det_gt, + \pipe_stages_1.pipe_tx_rate_q_reg , + pipe_tx_deemph_gt, + user_reset_int_reg, + src_in, + cfg_mgmt_rd_wr_done, + cfg_err_aer_headerlog_set, + cfg_err_cpl_rdy, + cfg_interrupt_rdy, + cfg_msg_received, + cfg_received_func_lvl_rst, + cfg_pcie_link_state, + m_axis_rx_tdata, + m_axis_rx_tuser, + trn_tbuf_av, + cfg_to_turnoff, + cfg_bus_number, + cfg_msg_data, + cfg_device_number, + cfg_function_number, + PIPE_TXDATAK, + PIPE_TXDATA, + PIPE_POWERDOWN, + Q, + cfg_aer_ecrc_check_en, + cfg_aer_ecrc_gen_en, + cfg_aer_rooterr_corr_err_received, + cfg_aer_rooterr_corr_err_reporting_en, + cfg_aer_rooterr_fatal_err_received, + cfg_aer_rooterr_fatal_err_reporting_en, + cfg_aer_rooterr_non_fatal_err_received, + cfg_aer_rooterr_non_fatal_err_reporting_en, + cfg_bridge_serr_en, + cfg_command, + cfg_dcommand2, + cfg_dcommand, + cfg_dstatus, + cfg_interrupt_msienable, + cfg_interrupt_msixenable, + cfg_interrupt_msixfm, + cfg_lcommand, + cfg_lstatus, + cfg_msg_received_assert_int_a, + cfg_msg_received_assert_int_b, + cfg_msg_received_assert_int_c, + cfg_msg_received_assert_int_d, + cfg_msg_received_deassert_int_a, + cfg_msg_received_deassert_int_b, + cfg_msg_received_deassert_int_c, + cfg_msg_received_deassert_int_d, + cfg_msg_received_err_cor, + cfg_msg_received_err_fatal, + cfg_msg_received_err_non_fatal, + cfg_msg_received_pm_as_nak, + cfg_msg_received_pme_to_ack, + cfg_msg_received_pm_pme, + cfg_msg_received_setslotpowerlimit, + cfg_pmcsr_pme_en, + cfg_pmcsr_pme_status, + cfg_root_control_pme_int_en, + cfg_root_control_syserr_corr_err_en, + cfg_root_control_syserr_fatal_err_en, + cfg_root_control_syserr_non_fatal_err_en, + cfg_slot_control_electromech_il_ctl_pulse, + pcie_drp_rdy, + pl_directed_change_done, + pl_link_gen2_cap, + pl_link_partner_gen2_supported, + pl_link_upcfg_cap, + pl_received_hot_rst, + pl_sel_lnk_rate, + trn_lnk_up, + tx_err_drop, + fc_cpld, + fc_npd, + fc_pd, + pcie_drp_do, + cfg_pmcsr_powerstate, + pl_lane_reversal_mode, + pl_rx_pm_state, + pl_sel_lnk_width, + cfg_interrupt_mmenable, + pl_initial_link_width, + pl_tx_pm_state, + cfg_mgmt_do, + pl_ltssm_state, + cfg_vc_tcvc_map, + cfg_interrupt_do, + fc_cplh, + fc_nph, + fc_ph, + \throttle_ctl_pipeline.reg_tkeep_reg[7] , + pipe_userclk2_in, + tx_cfg_gnt, + cfg_turnoff_ok, + s_axis_tx_tlast, + s_axis_tx_tvalid, + s_axis_tx_tkeep, + SR, + pipe_rx1_valid_gt, + pipe_pclk_in, + PIPE_RXCHANISALIGNED, + \pipe_stages_1.pipe_rx_phy_status_q_reg , + \pipe_stages_1.pipe_rx_elec_idle_q_reg , + pipe_rx2_valid_gt, + \pipe_stages_1.pipe_rx_phy_status_q_reg_0 , + \pipe_stages_1.pipe_rx_elec_idle_q_reg_0 , + pipe_rx3_valid_gt, + \pipe_stages_1.pipe_rx_phy_status_q_reg_1 , + \pipe_stages_1.pipe_rx_elec_idle_q_reg_1 , + pipe_rx0_valid_gt, + gt_rx_phy_status_q, + gt_rxelecidle_q, + bridge_reset_int, + pl_phy_lnk_up, + m_axis_rx_tready, + cfg_trn_pending, + cfg_mgmt_wr_rw1c_as_rw, + cfg_mgmt_wr_readonly, + cfg_mgmt_wr_en, + cfg_mgmt_rd_en, + cfg_err_malformed, + cfg_err_cor, + cfg_err_ur, + cfg_err_ecrc, + cfg_err_cpl_timeout, + cfg_err_cpl_abort, + cfg_err_cpl_unexpect, + cfg_err_poisoned, + cfg_err_atomic_egress_blocked, + cfg_err_mc_blocked, + cfg_err_internal_uncor, + cfg_err_internal_cor, + cfg_err_posted, + cfg_err_locked, + cfg_err_norecovery, + cfg_interrupt, + cfg_interrupt_assert, + cfg_interrupt_stat, + cfg_pm_halt_aspm_l0s, + cfg_pm_halt_aspm_l1, + cfg_pm_force_state_en, + cfg_pm_wake, + out, + s_axis_tx_tdata, + s_axis_tx_tuser, + D, + \pipe_stages_1.pipe_rx_data_q_reg[15] , + \pipe_stages_1.pipe_rx_status_q_reg[2] , + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1] , + \pipe_stages_1.pipe_rx_data_q_reg[15]_0 , + \pipe_stages_1.pipe_rx_status_q_reg[2]_0 , + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 , + \pipe_stages_1.pipe_rx_data_q_reg[15]_1 , + \pipe_stages_1.pipe_rx_status_q_reg[2]_1 , + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 , + \pipe_stages_1.pipe_rx_data_q_reg[15]_2 , + \pipe_stages_1.pipe_rx_status_q_reg[2]_2 , + pipe_userclk1_in, + pcie_drp_clk, + pcie_drp_en, + pcie_drp_we, + pl_directed_link_auton, + pl_directed_link_speed, + pl_downstream_deemph_source, + pl_transmit_hot_rst, + pl_upstream_prefer_deemph, + sys_rst_n, + rx_np_ok, + rx_np_req, + cfg_err_aer_headerlog, + pcie_drp_di, + cfg_pm_force_state, + pl_directed_link_change, + pl_directed_link_width, + cfg_ds_function_number, + fc_sel, + cfg_mgmt_di, + cfg_mgmt_byte_en_n, + cfg_err_tlp_cpl_header, + cfg_aer_interrupt_msgnum, + cfg_ds_device_number, + cfg_pciecap_interrupt_msgnum, + cfg_dsn, + cfg_ds_bus_number, + cfg_interrupt_di, + pcie_drp_addr, + cfg_mgmt_dwaddr); + output m_axis_rx_tvalid_reg; + output [0:0]m_axis_rx_tkeep; + output m_axis_rx_tlast; + output trn_tcfg_req; + output tready_thrtl_reg; + output [3:0]PIPE_RXPOLARITY; + output [3:0]PIPE_TXCOMPLIANCE; + output [3:0]PIPE_TXELECIDLE; + output pipe_tx_rcvr_det_gt; + output [0:0]\pipe_stages_1.pipe_tx_rate_q_reg ; + output pipe_tx_deemph_gt; + output user_reset_int_reg; + output src_in; + output cfg_mgmt_rd_wr_done; + output cfg_err_aer_headerlog_set; + output cfg_err_cpl_rdy; + output cfg_interrupt_rdy; + output cfg_msg_received; + output cfg_received_func_lvl_rst; + output [2:0]cfg_pcie_link_state; + output [63:0]m_axis_rx_tdata; + output [12:0]m_axis_rx_tuser; + output [5:0]trn_tbuf_av; + output cfg_to_turnoff; + output [7:0]cfg_bus_number; + output [15:0]cfg_msg_data; + output [4:0]cfg_device_number; + output [2:0]cfg_function_number; + output [7:0]PIPE_TXDATAK; + output [63:0]PIPE_TXDATA; + output [7:0]PIPE_POWERDOWN; + output [2:0]Q; + output cfg_aer_ecrc_check_en; + output cfg_aer_ecrc_gen_en; + output cfg_aer_rooterr_corr_err_received; + output cfg_aer_rooterr_corr_err_reporting_en; + output cfg_aer_rooterr_fatal_err_received; + output cfg_aer_rooterr_fatal_err_reporting_en; + output cfg_aer_rooterr_non_fatal_err_received; + output cfg_aer_rooterr_non_fatal_err_reporting_en; + output cfg_bridge_serr_en; + output [4:0]cfg_command; + output [11:0]cfg_dcommand2; + output [14:0]cfg_dcommand; + output [3:0]cfg_dstatus; + output cfg_interrupt_msienable; + output cfg_interrupt_msixenable; + output cfg_interrupt_msixfm; + output [10:0]cfg_lcommand; + output [9:0]cfg_lstatus; + output cfg_msg_received_assert_int_a; + output cfg_msg_received_assert_int_b; + output cfg_msg_received_assert_int_c; + output cfg_msg_received_assert_int_d; + output cfg_msg_received_deassert_int_a; + output cfg_msg_received_deassert_int_b; + output cfg_msg_received_deassert_int_c; + output cfg_msg_received_deassert_int_d; + output cfg_msg_received_err_cor; + output cfg_msg_received_err_fatal; + output cfg_msg_received_err_non_fatal; + output cfg_msg_received_pm_as_nak; + output cfg_msg_received_pme_to_ack; + output cfg_msg_received_pm_pme; + output cfg_msg_received_setslotpowerlimit; + output cfg_pmcsr_pme_en; + output cfg_pmcsr_pme_status; + output cfg_root_control_pme_int_en; + output cfg_root_control_syserr_corr_err_en; + output cfg_root_control_syserr_fatal_err_en; + output cfg_root_control_syserr_non_fatal_err_en; + output cfg_slot_control_electromech_il_ctl_pulse; + output pcie_drp_rdy; + output pl_directed_change_done; + output pl_link_gen2_cap; + output pl_link_partner_gen2_supported; + output pl_link_upcfg_cap; + output pl_received_hot_rst; + output pl_sel_lnk_rate; + output trn_lnk_up; + output tx_err_drop; + output [11:0]fc_cpld; + output [11:0]fc_npd; + output [11:0]fc_pd; + output [15:0]pcie_drp_do; + output [1:0]cfg_pmcsr_powerstate; + output [1:0]pl_lane_reversal_mode; + output [1:0]pl_rx_pm_state; + output [1:0]pl_sel_lnk_width; + output [2:0]cfg_interrupt_mmenable; + output [2:0]pl_initial_link_width; + output [2:0]pl_tx_pm_state; + output [31:0]cfg_mgmt_do; + output [5:0]pl_ltssm_state; + output [6:0]cfg_vc_tcvc_map; + output [7:0]cfg_interrupt_do; + output [7:0]fc_cplh; + output [7:0]fc_nph; + output [7:0]fc_ph; + input \throttle_ctl_pipeline.reg_tkeep_reg[7] ; + input pipe_userclk2_in; + input tx_cfg_gnt; + input cfg_turnoff_ok; + input s_axis_tx_tlast; + input s_axis_tx_tvalid; + input [0:0]s_axis_tx_tkeep; + input [0:0]SR; + input pipe_rx1_valid_gt; + input pipe_pclk_in; + input [3:0]PIPE_RXCHANISALIGNED; + input \pipe_stages_1.pipe_rx_phy_status_q_reg ; + input \pipe_stages_1.pipe_rx_elec_idle_q_reg ; + input pipe_rx2_valid_gt; + input \pipe_stages_1.pipe_rx_phy_status_q_reg_0 ; + input \pipe_stages_1.pipe_rx_elec_idle_q_reg_0 ; + input pipe_rx3_valid_gt; + input \pipe_stages_1.pipe_rx_phy_status_q_reg_1 ; + input \pipe_stages_1.pipe_rx_elec_idle_q_reg_1 ; + input pipe_rx0_valid_gt; + input gt_rx_phy_status_q; + input gt_rxelecidle_q; + input bridge_reset_int; + input pl_phy_lnk_up; + input m_axis_rx_tready; + input cfg_trn_pending; + input cfg_mgmt_wr_rw1c_as_rw; + input cfg_mgmt_wr_readonly; + input cfg_mgmt_wr_en; + input cfg_mgmt_rd_en; + input cfg_err_malformed; + input cfg_err_cor; + input cfg_err_ur; + input cfg_err_ecrc; + input cfg_err_cpl_timeout; + input cfg_err_cpl_abort; + input cfg_err_cpl_unexpect; + input cfg_err_poisoned; + input cfg_err_atomic_egress_blocked; + input cfg_err_mc_blocked; + input cfg_err_internal_uncor; + input cfg_err_internal_cor; + input cfg_err_posted; + input cfg_err_locked; + input cfg_err_norecovery; + input cfg_interrupt; + input cfg_interrupt_assert; + input cfg_interrupt_stat; + input cfg_pm_halt_aspm_l0s; + input cfg_pm_halt_aspm_l1; + input cfg_pm_force_state_en; + input cfg_pm_wake; + input out; + input [63:0]s_axis_tx_tdata; + input [3:0]s_axis_tx_tuser; + input [1:0]D; + input [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15] ; + input [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2] ; + input [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1] ; + input [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_0 ; + input [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_0 ; + input [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 ; + input [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_1 ; + input [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_1 ; + input [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 ; + input [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_2 ; + input [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_2 ; + input pipe_userclk1_in; + input pcie_drp_clk; + input pcie_drp_en; + input pcie_drp_we; + input pl_directed_link_auton; + input pl_directed_link_speed; + input pl_downstream_deemph_source; + input pl_transmit_hot_rst; + input pl_upstream_prefer_deemph; + input sys_rst_n; + input rx_np_ok; + input rx_np_req; + input [127:0]cfg_err_aer_headerlog; + input [15:0]pcie_drp_di; + input [1:0]cfg_pm_force_state; + input [1:0]pl_directed_link_change; + input [1:0]pl_directed_link_width; + input [2:0]cfg_ds_function_number; + input [2:0]fc_sel; + input [31:0]cfg_mgmt_di; + input [3:0]cfg_mgmt_byte_en_n; + input [47:0]cfg_err_tlp_cpl_header; + input [4:0]cfg_aer_interrupt_msgnum; + input [4:0]cfg_ds_device_number; + input [4:0]cfg_pciecap_interrupt_msgnum; + input [63:0]cfg_dsn; + input [7:0]cfg_ds_bus_number; + input [7:0]cfg_interrupt_di; + input [8:0]pcie_drp_addr; + input [9:0]cfg_mgmt_dwaddr; + + wire [1:0]D; + wire [7:0]PIPE_POWERDOWN; + wire [3:0]PIPE_RXCHANISALIGNED; + wire [3:0]PIPE_RXPOLARITY; + wire [3:0]PIPE_TXCOMPLIANCE; + wire [63:0]PIPE_TXDATA; + wire [7:0]PIPE_TXDATAK; + wire [3:0]PIPE_TXELECIDLE; + wire [2:0]Q; + wire [0:0]SR; + wire bridge_reset_int; + wire cfg_aer_ecrc_check_en; + wire cfg_aer_ecrc_gen_en; + wire [4:0]cfg_aer_interrupt_msgnum; + wire cfg_aer_rooterr_corr_err_received; + wire cfg_aer_rooterr_corr_err_reporting_en; + wire cfg_aer_rooterr_fatal_err_received; + wire cfg_aer_rooterr_fatal_err_reporting_en; + wire cfg_aer_rooterr_non_fatal_err_received; + wire cfg_aer_rooterr_non_fatal_err_reporting_en; + wire cfg_bridge_serr_en; + wire [7:0]cfg_bus_number; + wire [4:0]cfg_command; + wire [14:0]cfg_dcommand; + wire [11:0]cfg_dcommand2; + wire [4:0]cfg_device_number; + wire [7:0]cfg_ds_bus_number; + wire [4:0]cfg_ds_device_number; + wire [2:0]cfg_ds_function_number; + wire [63:0]cfg_dsn; + wire [3:0]cfg_dstatus; + wire [127:0]cfg_err_aer_headerlog; + wire cfg_err_aer_headerlog_set; + wire cfg_err_atomic_egress_blocked; + wire cfg_err_cor; + wire cfg_err_cpl_abort; + wire cfg_err_cpl_rdy; + wire cfg_err_cpl_timeout; + wire cfg_err_cpl_unexpect; + wire cfg_err_ecrc; + wire cfg_err_internal_cor; + wire cfg_err_internal_uncor; + wire cfg_err_locked; + wire cfg_err_malformed; + wire cfg_err_mc_blocked; + wire cfg_err_norecovery; + wire cfg_err_poisoned; + wire cfg_err_posted; + wire [47:0]cfg_err_tlp_cpl_header; + wire cfg_err_ur; + wire [2:0]cfg_function_number; + wire cfg_interrupt; + wire cfg_interrupt_assert; + wire [7:0]cfg_interrupt_di; + wire [7:0]cfg_interrupt_do; + wire [2:0]cfg_interrupt_mmenable; + wire cfg_interrupt_msienable; + wire cfg_interrupt_msixenable; + wire cfg_interrupt_msixfm; + wire cfg_interrupt_rdy; + wire cfg_interrupt_stat; + wire [10:0]cfg_lcommand; + wire [9:0]cfg_lstatus; + wire [3:0]cfg_mgmt_byte_en_n; + wire [31:0]cfg_mgmt_di; + wire [31:0]cfg_mgmt_do; + wire [9:0]cfg_mgmt_dwaddr; + wire cfg_mgmt_rd_en; + wire cfg_mgmt_rd_wr_done; + wire cfg_mgmt_wr_en; + wire cfg_mgmt_wr_readonly; + wire cfg_mgmt_wr_rw1c_as_rw; + wire [15:0]cfg_msg_data; + wire cfg_msg_received; + wire cfg_msg_received_assert_int_a; + wire cfg_msg_received_assert_int_b; + wire cfg_msg_received_assert_int_c; + wire cfg_msg_received_assert_int_d; + wire cfg_msg_received_deassert_int_a; + wire cfg_msg_received_deassert_int_b; + wire cfg_msg_received_deassert_int_c; + wire cfg_msg_received_deassert_int_d; + wire cfg_msg_received_err_cor; + wire cfg_msg_received_err_fatal; + wire cfg_msg_received_err_non_fatal; + wire cfg_msg_received_pm_as_nak; + wire cfg_msg_received_pm_pme; + wire cfg_msg_received_pme_to_ack; + wire cfg_msg_received_setslotpowerlimit; + wire [2:0]cfg_pcie_link_state; + wire [4:0]cfg_pciecap_interrupt_msgnum; + wire [1:0]cfg_pm_force_state; + wire cfg_pm_force_state_en; + wire cfg_pm_halt_aspm_l0s; + wire cfg_pm_halt_aspm_l1; + wire cfg_pm_wake; + wire cfg_pmcsr_pme_en; + wire cfg_pmcsr_pme_status; + wire [1:0]cfg_pmcsr_powerstate; + wire cfg_received_func_lvl_rst; + wire cfg_root_control_pme_int_en; + wire cfg_root_control_syserr_corr_err_en; + wire cfg_root_control_syserr_fatal_err_en; + wire cfg_root_control_syserr_non_fatal_err_en; + wire cfg_slot_control_electromech_il_ctl_pulse; + wire cfg_to_turnoff; + wire cfg_trn_pending; + wire cfg_turnoff_ok; + wire cfg_turnoff_ok_w; + wire [6:0]cfg_vc_tcvc_map; + wire [11:0]fc_cpld; + wire [7:0]fc_cplh; + wire [11:0]fc_npd; + wire [7:0]fc_nph; + wire [11:0]fc_pd; + wire [7:0]fc_ph; + wire [2:0]fc_sel; + wire gt_rx_phy_status_q; + wire gt_rxelecidle_q; + wire [63:0]m_axis_rx_tdata; + wire [0:0]m_axis_rx_tkeep; + wire m_axis_rx_tlast; + wire m_axis_rx_tready; + wire [12:0]m_axis_rx_tuser; + wire m_axis_rx_tvalid_reg; + wire out; + wire pcie_7x_i_n_13; + wire pcie_7x_i_n_22; + wire pcie_7x_i_n_30; + wire pcie_7x_i_n_6; + wire pcie_7x_i_n_9; + wire [8:0]pcie_drp_addr; + wire pcie_drp_clk; + wire [15:0]pcie_drp_di; + wire [15:0]pcie_drp_do; + wire pcie_drp_en; + wire pcie_drp_rdy; + wire pcie_drp_we; + wire pipe_pclk_in; + wire pipe_rx0_chanisaligned; + wire [1:0]pipe_rx0_char_is_k; + wire [15:0]pipe_rx0_data; + wire pipe_rx0_elec_idle; + wire pipe_rx0_phy_status; + wire pipe_rx0_polarity; + wire [2:0]pipe_rx0_status; + wire pipe_rx0_valid; + wire pipe_rx0_valid_gt; + wire pipe_rx1_chanisaligned; + wire [1:0]pipe_rx1_char_is_k; + wire [15:0]pipe_rx1_data; + wire pipe_rx1_elec_idle; + wire pipe_rx1_phy_status; + wire pipe_rx1_polarity; + wire [2:0]pipe_rx1_status; + wire pipe_rx1_valid; + wire pipe_rx1_valid_gt; + wire pipe_rx2_chanisaligned; + wire [1:0]pipe_rx2_char_is_k; + wire [15:0]pipe_rx2_data; + wire pipe_rx2_elec_idle; + wire pipe_rx2_phy_status; + wire pipe_rx2_polarity; + wire [2:0]pipe_rx2_status; + wire pipe_rx2_valid; + wire pipe_rx2_valid_gt; + wire pipe_rx3_chanisaligned; + wire [1:0]pipe_rx3_char_is_k; + wire [15:0]pipe_rx3_data; + wire pipe_rx3_elec_idle; + wire pipe_rx3_phy_status; + wire pipe_rx3_polarity; + wire [2:0]pipe_rx3_status; + wire pipe_rx3_valid; + wire pipe_rx3_valid_gt; + wire [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1] ; + wire [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 ; + wire [1:0]\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 ; + wire [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15] ; + wire [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_0 ; + wire [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_1 ; + wire [15:0]\pipe_stages_1.pipe_rx_data_q_reg[15]_2 ; + wire \pipe_stages_1.pipe_rx_elec_idle_q_reg ; + wire \pipe_stages_1.pipe_rx_elec_idle_q_reg_0 ; + wire \pipe_stages_1.pipe_rx_elec_idle_q_reg_1 ; + wire \pipe_stages_1.pipe_rx_phy_status_q_reg ; + wire \pipe_stages_1.pipe_rx_phy_status_q_reg_0 ; + wire \pipe_stages_1.pipe_rx_phy_status_q_reg_1 ; + wire [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2] ; + wire [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_0 ; + wire [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_1 ; + wire [2:0]\pipe_stages_1.pipe_rx_status_q_reg[2]_2 ; + wire [0:0]\pipe_stages_1.pipe_tx_rate_q_reg ; + wire [1:0]pipe_tx0_char_is_k; + wire pipe_tx0_compliance; + wire [15:0]pipe_tx0_data; + wire pipe_tx0_elec_idle; + wire [1:0]pipe_tx0_powerdown; + wire [1:0]pipe_tx1_char_is_k; + wire pipe_tx1_compliance; + wire [15:0]pipe_tx1_data; + wire pipe_tx1_elec_idle; + wire [1:0]pipe_tx1_powerdown; + wire [1:0]pipe_tx2_char_is_k; + wire pipe_tx2_compliance; + wire [15:0]pipe_tx2_data; + wire pipe_tx2_elec_idle; + wire [1:0]pipe_tx2_powerdown; + wire [1:0]pipe_tx3_char_is_k; + wire pipe_tx3_compliance; + wire [15:0]pipe_tx3_data; + wire pipe_tx3_elec_idle; + wire [1:0]pipe_tx3_powerdown; + wire pipe_tx_deemph; + wire pipe_tx_deemph_gt; + wire [2:0]pipe_tx_margin; + wire pipe_tx_rate; + wire pipe_tx_rcvr_det; + wire pipe_tx_rcvr_det_gt; + wire pipe_userclk1_in; + wire pipe_userclk2_in; + wire pl_directed_change_done; + wire pl_directed_link_auton; + wire [1:0]pl_directed_link_change; + wire pl_directed_link_speed; + wire [1:0]pl_directed_link_width; + wire pl_downstream_deemph_source; + wire [2:0]pl_initial_link_width; + wire [1:0]pl_lane_reversal_mode; + wire pl_link_gen2_cap; + wire pl_link_partner_gen2_supported; + wire pl_link_upcfg_cap; + wire [5:0]pl_ltssm_state; + wire pl_phy_lnk_up; + wire pl_received_hot_rst; + wire [1:0]pl_rx_pm_state; + wire pl_sel_lnk_rate; + wire [1:0]pl_sel_lnk_width; + wire pl_transmit_hot_rst; + wire [2:0]pl_tx_pm_state; + wire pl_upstream_prefer_deemph; + wire \rx_inst/rx_pipeline_inst/dsc_detect ; + wire \rx_inst/rx_pipeline_inst/reg_dsc_detect ; + wire \rx_inst/rx_pipeline_inst/rsrc_rdy_filtered ; + wire \rx_inst/rx_pipeline_inst/trn_in_packet ; + wire \rx_inst/rx_pipeline_inst/trn_rsrc_dsc_d ; + wire \rx_inst/rx_pipeline_inst/trn_rsrc_dsc_prev0 ; + wire rx_np_ok; + wire rx_np_req; + wire [63:0]s_axis_tx_tdata; + wire [0:0]s_axis_tx_tkeep; + wire s_axis_tx_tlast; + wire [3:0]s_axis_tx_tuser; + wire s_axis_tx_tvalid; + wire src_in; + wire sys_rst_n; + wire \throttle_ctl_pipeline.reg_tkeep_reg[7] ; + wire tready_thrtl_reg; + wire trn_lnk_up; + wire [6:0]trn_rbar_hit; + wire [63:0]trn_rd; + wire trn_rdst_rdy; + wire trn_recrc_err; + wire trn_reof; + wire trn_rerrfwd; + wire [0:0]trn_rrem; + wire trn_rsof; + wire trn_rsrc_dsc; + wire [5:0]trn_tbuf_av; + wire trn_tcfg_gnt; + wire trn_tcfg_req; + wire [63:0]trn_td; + wire trn_tdst_rdy; + wire trn_tecrc_gen; + wire trn_teof; + wire trn_terrfwd; + wire trn_trem; + wire trn_tsof; + wire trn_tsrc_dsc; + wire trn_tsrc_rdy; + wire trn_tstr; + wire tx_cfg_gnt; + wire tx_err_drop; + wire \tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/lnk_up_thrtl ; + wire \tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/ppm_L1_thrtl ; + wire \tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/ppm_L1_trig ; + wire \tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/reg_tcfg_gnt ; + wire \tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/tbuf_av_min_trig ; + wire \tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/tcfg_req_trig ; + wire \tx_inst/tx_pipeline_inst/reg_disable_trn2 ; + wire user_reset_int_reg; + + pcie_7x_0_pcie_7x_0_axi_basic_top axi_basic_top + (.E(trn_rdst_rdy), + .Q(m_axis_rx_tdata), + .cfg_pcie_link_state(cfg_pcie_link_state), + .cfg_pm_turnoff_ok_n(cfg_turnoff_ok_w), + .cfg_to_turnoff(cfg_to_turnoff), + .cfg_turnoff_ok(cfg_turnoff_ok), + .dsc_detect(\rx_inst/rx_pipeline_inst/dsc_detect ), + .lnk_up_thrtl(\tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/lnk_up_thrtl ), + .lnk_up_thrtl_reg(pcie_7x_i_n_30), + .m_axis_rx_tkeep(m_axis_rx_tkeep), + .m_axis_rx_tlast(m_axis_rx_tlast), + .m_axis_rx_tready(m_axis_rx_tready), + .m_axis_rx_tuser(m_axis_rx_tuser), + .m_axis_rx_tvalid_reg(m_axis_rx_tvalid_reg), + .out(out), + .pipe_userclk2_in(pipe_userclk2_in), + .ppm_L1_thrtl(\tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/ppm_L1_thrtl ), + .ppm_L1_thrtl_reg(pcie_7x_i_n_13), + .ppm_L1_trig(\tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/ppm_L1_trig ), + .reg_dsc_detect(\rx_inst/rx_pipeline_inst/reg_dsc_detect ), + .reg_tcfg_gnt(\tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/reg_tcfg_gnt ), + .rsrc_rdy_filtered(\rx_inst/rx_pipeline_inst/rsrc_rdy_filtered ), + .s_axis_tx_tdata(s_axis_tx_tdata), + .s_axis_tx_tkeep(s_axis_tx_tkeep), + .s_axis_tx_tlast(s_axis_tx_tlast), + .s_axis_tx_tuser(s_axis_tx_tuser), + .s_axis_tx_tvalid(s_axis_tx_tvalid), + .tbuf_av_min_trig(\tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/tbuf_av_min_trig ), + .tcfg_req_trig(\tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/tcfg_req_trig ), + .\throttle_ctl_pipeline.reg_tdata_reg[63] ({trn_td[31:0],trn_td[63:32]}), + .\throttle_ctl_pipeline.reg_tkeep_reg[7] (\throttle_ctl_pipeline.reg_tkeep_reg[7] ), + .\throttle_ctl_pipeline.reg_tuser_reg[3] ({trn_tsrc_dsc,trn_tstr,trn_terrfwd,trn_tecrc_gen}), + .tready_thrtl_i_5(pcie_7x_i_n_22), + .tready_thrtl_reg(tready_thrtl_reg), + .trn_in_packet(\rx_inst/rx_pipeline_inst/trn_in_packet ), + .trn_in_packet_reg(pcie_7x_i_n_9), + .trn_rbar_hit(trn_rbar_hit), + .trn_rd(trn_rd), + .trn_recrc_err(trn_recrc_err), + .trn_reof(trn_reof), + .trn_rerrfwd(trn_rerrfwd), + .trn_rrem(trn_rrem), + .trn_rsof(trn_rsof), + .trn_rsrc_dsc(trn_rsrc_dsc), + .trn_rsrc_dsc_d(\rx_inst/rx_pipeline_inst/trn_rsrc_dsc_d ), + .trn_rsrc_dsc_prev0(\rx_inst/rx_pipeline_inst/trn_rsrc_dsc_prev0 ), + .trn_tbuf_av(trn_tbuf_av), + .trn_tcfg_gnt(trn_tcfg_gnt), + .trn_tcfg_req(trn_tcfg_req), + .trn_tdst_rdy(trn_tdst_rdy), + .trn_teof(trn_teof), + .trn_trem(trn_trem), + .trn_tsof(trn_tsof), + .trn_tsrc_rdy(trn_tsrc_rdy), + .tx_cfg_gnt(tx_cfg_gnt)); + LUT1 #( + .INIT(2'h1)) + \cfg_bus_number_d[7]_i_1 + (.I0(out), + .O(\tx_inst/tx_pipeline_inst/reg_disable_trn2 )); + FDRE \cfg_bus_number_d_reg[0] + (.C(pipe_userclk2_in), + .CE(pcie_7x_i_n_6), + .D(cfg_msg_data[8]), + .Q(cfg_bus_number[0]), + .R(\tx_inst/tx_pipeline_inst/reg_disable_trn2 )); + FDRE \cfg_bus_number_d_reg[1] + (.C(pipe_userclk2_in), + .CE(pcie_7x_i_n_6), + .D(cfg_msg_data[9]), + .Q(cfg_bus_number[1]), + .R(\tx_inst/tx_pipeline_inst/reg_disable_trn2 )); + FDRE \cfg_bus_number_d_reg[2] + (.C(pipe_userclk2_in), + .CE(pcie_7x_i_n_6), + .D(cfg_msg_data[10]), + .Q(cfg_bus_number[2]), + .R(\tx_inst/tx_pipeline_inst/reg_disable_trn2 )); + FDRE \cfg_bus_number_d_reg[3] + (.C(pipe_userclk2_in), + .CE(pcie_7x_i_n_6), + .D(cfg_msg_data[11]), + .Q(cfg_bus_number[3]), + .R(\tx_inst/tx_pipeline_inst/reg_disable_trn2 )); + FDRE \cfg_bus_number_d_reg[4] + (.C(pipe_userclk2_in), + .CE(pcie_7x_i_n_6), + .D(cfg_msg_data[12]), + .Q(cfg_bus_number[4]), + .R(\tx_inst/tx_pipeline_inst/reg_disable_trn2 )); + FDRE \cfg_bus_number_d_reg[5] + (.C(pipe_userclk2_in), + .CE(pcie_7x_i_n_6), + .D(cfg_msg_data[13]), + .Q(cfg_bus_number[5]), + .R(\tx_inst/tx_pipeline_inst/reg_disable_trn2 )); + FDRE \cfg_bus_number_d_reg[6] + (.C(pipe_userclk2_in), + .CE(pcie_7x_i_n_6), + .D(cfg_msg_data[14]), + .Q(cfg_bus_number[6]), + .R(\tx_inst/tx_pipeline_inst/reg_disable_trn2 )); + FDRE \cfg_bus_number_d_reg[7] + (.C(pipe_userclk2_in), + .CE(pcie_7x_i_n_6), + .D(cfg_msg_data[15]), + .Q(cfg_bus_number[7]), + .R(\tx_inst/tx_pipeline_inst/reg_disable_trn2 )); + FDRE \cfg_device_number_d_reg[0] + (.C(pipe_userclk2_in), + .CE(pcie_7x_i_n_6), + .D(cfg_msg_data[3]), + .Q(cfg_device_number[0]), + .R(\tx_inst/tx_pipeline_inst/reg_disable_trn2 )); + FDRE \cfg_device_number_d_reg[1] + (.C(pipe_userclk2_in), + .CE(pcie_7x_i_n_6), + .D(cfg_msg_data[4]), + .Q(cfg_device_number[1]), + .R(\tx_inst/tx_pipeline_inst/reg_disable_trn2 )); + FDRE \cfg_device_number_d_reg[2] + (.C(pipe_userclk2_in), + .CE(pcie_7x_i_n_6), + .D(cfg_msg_data[5]), + .Q(cfg_device_number[2]), + .R(\tx_inst/tx_pipeline_inst/reg_disable_trn2 )); + FDRE \cfg_device_number_d_reg[3] + (.C(pipe_userclk2_in), + .CE(pcie_7x_i_n_6), + .D(cfg_msg_data[6]), + .Q(cfg_device_number[3]), + .R(\tx_inst/tx_pipeline_inst/reg_disable_trn2 )); + FDRE \cfg_device_number_d_reg[4] + (.C(pipe_userclk2_in), + .CE(pcie_7x_i_n_6), + .D(cfg_msg_data[7]), + .Q(cfg_device_number[4]), + .R(\tx_inst/tx_pipeline_inst/reg_disable_trn2 )); + FDRE \cfg_function_number_d_reg[0] + (.C(pipe_userclk2_in), + .CE(pcie_7x_i_n_6), + .D(cfg_msg_data[0]), + .Q(cfg_function_number[0]), + .R(\tx_inst/tx_pipeline_inst/reg_disable_trn2 )); + FDRE \cfg_function_number_d_reg[1] + (.C(pipe_userclk2_in), + .CE(pcie_7x_i_n_6), + .D(cfg_msg_data[1]), + .Q(cfg_function_number[1]), + .R(\tx_inst/tx_pipeline_inst/reg_disable_trn2 )); + FDRE \cfg_function_number_d_reg[2] + (.C(pipe_userclk2_in), + .CE(pcie_7x_i_n_6), + .D(cfg_msg_data[2]), + .Q(cfg_function_number[2]), + .R(\tx_inst/tx_pipeline_inst/reg_disable_trn2 )); + pcie_7x_0_pcie_7x_0_pcie_7x pcie_7x_i + (.E(pcie_7x_i_n_6), + .Q(pipe_rx0_data), + .bridge_reset_int(bridge_reset_int), + .cfg_aer_ecrc_check_en(cfg_aer_ecrc_check_en), + .cfg_aer_ecrc_check_en_0({trn_tsrc_dsc,trn_tstr,trn_terrfwd,trn_tecrc_gen}), + .cfg_aer_ecrc_check_en_1(pipe_rx1_data), + .cfg_aer_ecrc_check_en_10(pipe_rx2_status), + .cfg_aer_ecrc_check_en_11(pipe_rx3_status), + .cfg_aer_ecrc_check_en_2(pipe_rx2_data), + .cfg_aer_ecrc_check_en_3(pipe_rx3_data), + .cfg_aer_ecrc_check_en_4(pipe_rx0_char_is_k), + .cfg_aer_ecrc_check_en_5(pipe_rx1_char_is_k), + .cfg_aer_ecrc_check_en_6(pipe_rx2_char_is_k), + .cfg_aer_ecrc_check_en_7(pipe_rx3_char_is_k), + .cfg_aer_ecrc_check_en_8(pipe_rx0_status), + .cfg_aer_ecrc_check_en_9(pipe_rx1_status), + .cfg_aer_ecrc_gen_en(cfg_aer_ecrc_gen_en), + .cfg_aer_interrupt_msgnum(cfg_aer_interrupt_msgnum), + .cfg_aer_rooterr_corr_err_received(cfg_aer_rooterr_corr_err_received), + .cfg_aer_rooterr_corr_err_reporting_en(cfg_aer_rooterr_corr_err_reporting_en), + .cfg_aer_rooterr_fatal_err_received(cfg_aer_rooterr_fatal_err_received), + .cfg_aer_rooterr_fatal_err_reporting_en(cfg_aer_rooterr_fatal_err_reporting_en), + .cfg_aer_rooterr_non_fatal_err_received(cfg_aer_rooterr_non_fatal_err_received), + .cfg_aer_rooterr_non_fatal_err_reporting_en(cfg_aer_rooterr_non_fatal_err_reporting_en), + .cfg_bridge_serr_en(cfg_bridge_serr_en), + .cfg_command(cfg_command), + .cfg_dcommand(cfg_dcommand), + .cfg_dcommand2(cfg_dcommand2), + .cfg_ds_bus_number(cfg_ds_bus_number), + .cfg_ds_device_number(cfg_ds_device_number), + .cfg_ds_function_number(cfg_ds_function_number), + .cfg_dsn(cfg_dsn), + .cfg_dstatus(cfg_dstatus), + .cfg_err_aer_headerlog(cfg_err_aer_headerlog), + .cfg_err_aer_headerlog_set(cfg_err_aer_headerlog_set), + .cfg_err_atomic_egress_blocked(cfg_err_atomic_egress_blocked), + .cfg_err_cor(cfg_err_cor), + .cfg_err_cpl_abort(cfg_err_cpl_abort), + .cfg_err_cpl_rdy(cfg_err_cpl_rdy), + .cfg_err_cpl_timeout(cfg_err_cpl_timeout), + .cfg_err_cpl_unexpect(cfg_err_cpl_unexpect), + .cfg_err_ecrc(cfg_err_ecrc), + .cfg_err_internal_cor(cfg_err_internal_cor), + .cfg_err_internal_uncor(cfg_err_internal_uncor), + .cfg_err_locked(cfg_err_locked), + .cfg_err_malformed(cfg_err_malformed), + .cfg_err_mc_blocked(cfg_err_mc_blocked), + .cfg_err_norecovery(cfg_err_norecovery), + .cfg_err_poisoned(cfg_err_poisoned), + .cfg_err_posted(cfg_err_posted), + .cfg_err_tlp_cpl_header(cfg_err_tlp_cpl_header), + .cfg_err_ur(cfg_err_ur), + .cfg_interrupt(cfg_interrupt), + .cfg_interrupt_assert(cfg_interrupt_assert), + .cfg_interrupt_di(cfg_interrupt_di), + .cfg_interrupt_do(cfg_interrupt_do), + .cfg_interrupt_mmenable(cfg_interrupt_mmenable), + .cfg_interrupt_msienable(cfg_interrupt_msienable), + .cfg_interrupt_msixenable(cfg_interrupt_msixenable), + .cfg_interrupt_msixfm(cfg_interrupt_msixfm), + .cfg_interrupt_rdy(cfg_interrupt_rdy), + .cfg_interrupt_stat(cfg_interrupt_stat), + .cfg_lcommand(cfg_lcommand), + .cfg_lstatus(cfg_lstatus), + .cfg_mgmt_byte_en_n(cfg_mgmt_byte_en_n), + .cfg_mgmt_di(cfg_mgmt_di), + .cfg_mgmt_do(cfg_mgmt_do), + .cfg_mgmt_dwaddr(cfg_mgmt_dwaddr), + .cfg_mgmt_rd_en(cfg_mgmt_rd_en), + .cfg_mgmt_rd_wr_done(cfg_mgmt_rd_wr_done), + .cfg_mgmt_wr_en(cfg_mgmt_wr_en), + .cfg_mgmt_wr_readonly(cfg_mgmt_wr_readonly), + .cfg_mgmt_wr_rw1c_as_rw(cfg_mgmt_wr_rw1c_as_rw), + .cfg_msg_data(cfg_msg_data), + .cfg_msg_received(cfg_msg_received), + .cfg_msg_received_assert_int_a(cfg_msg_received_assert_int_a), + .cfg_msg_received_assert_int_b(cfg_msg_received_assert_int_b), + .cfg_msg_received_assert_int_c(cfg_msg_received_assert_int_c), + .cfg_msg_received_assert_int_d(cfg_msg_received_assert_int_d), + .cfg_msg_received_deassert_int_a(cfg_msg_received_deassert_int_a), + .cfg_msg_received_deassert_int_b(cfg_msg_received_deassert_int_b), + .cfg_msg_received_deassert_int_c(cfg_msg_received_deassert_int_c), + .cfg_msg_received_deassert_int_d(cfg_msg_received_deassert_int_d), + .cfg_msg_received_err_cor(cfg_msg_received_err_cor), + .cfg_msg_received_err_fatal(cfg_msg_received_err_fatal), + .cfg_msg_received_err_non_fatal(cfg_msg_received_err_non_fatal), + .cfg_msg_received_pm_as_nak(cfg_msg_received_pm_as_nak), + .cfg_msg_received_pm_pme(cfg_msg_received_pm_pme), + .cfg_msg_received_pme_to_ack(cfg_msg_received_pme_to_ack), + .cfg_msg_received_setslotpowerlimit(cfg_msg_received_setslotpowerlimit), + .cfg_pcie_link_state(cfg_pcie_link_state), + .cfg_pciecap_interrupt_msgnum(cfg_pciecap_interrupt_msgnum), + .cfg_pm_force_state(cfg_pm_force_state), + .cfg_pm_force_state_en(cfg_pm_force_state_en), + .cfg_pm_halt_aspm_l0s(cfg_pm_halt_aspm_l0s), + .cfg_pm_halt_aspm_l1(cfg_pm_halt_aspm_l1), + .cfg_pm_turnoff_ok_n(cfg_turnoff_ok_w), + .cfg_pm_wake(cfg_pm_wake), + .cfg_pmcsr_pme_en(cfg_pmcsr_pme_en), + .cfg_pmcsr_pme_status(cfg_pmcsr_pme_status), + .cfg_pmcsr_powerstate(cfg_pmcsr_powerstate), + .cfg_received_func_lvl_rst(cfg_received_func_lvl_rst), + .cfg_root_control_pme_int_en(cfg_root_control_pme_int_en), + .cfg_root_control_syserr_corr_err_en(cfg_root_control_syserr_corr_err_en), + .cfg_root_control_syserr_fatal_err_en(cfg_root_control_syserr_fatal_err_en), + .cfg_root_control_syserr_non_fatal_err_en(cfg_root_control_syserr_non_fatal_err_en), + .cfg_slot_control_electromech_il_ctl_pulse(cfg_slot_control_electromech_il_ctl_pulse), + .cfg_to_turnoff(cfg_to_turnoff), + .cfg_trn_pending(cfg_trn_pending), + .cfg_vc_tcvc_map(cfg_vc_tcvc_map), + .dsc_detect(\rx_inst/rx_pipeline_inst/dsc_detect ), + .fc_cpld(fc_cpld), + .fc_cplh(fc_cplh), + .fc_npd(fc_npd), + .fc_nph(fc_nph), + .fc_pd(fc_pd), + .fc_ph(fc_ph), + .fc_sel(fc_sel), + .lnk_up_thrtl(\tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/lnk_up_thrtl ), + .lnk_up_thrtl_reg(pcie_7x_i_n_30), + .out(out), + .pcie_drp_addr(pcie_drp_addr), + .pcie_drp_clk(pcie_drp_clk), + .pcie_drp_clk_0(pcie_7x_i_n_22), + .pcie_drp_clk_1(trn_rd), + .pcie_drp_clk_2(trn_rrem), + .pcie_drp_di(pcie_drp_di), + .pcie_drp_do(pcie_drp_do), + .pcie_drp_en(pcie_drp_en), + .pcie_drp_rdy(pcie_drp_rdy), + .pcie_drp_we(pcie_drp_we), + .pipe_pclk_in(pipe_pclk_in), + .pipe_rx0_chanisaligned(pipe_rx0_chanisaligned), + .pipe_rx0_elec_idle(pipe_rx0_elec_idle), + .pipe_rx0_phy_status(pipe_rx0_phy_status), + .pipe_rx0_polarity(pipe_rx0_polarity), + .pipe_rx0_valid(pipe_rx0_valid), + .pipe_rx1_chanisaligned(pipe_rx1_chanisaligned), + .pipe_rx1_elec_idle(pipe_rx1_elec_idle), + .pipe_rx1_phy_status(pipe_rx1_phy_status), + .pipe_rx1_polarity(pipe_rx1_polarity), + .pipe_rx1_valid(pipe_rx1_valid), + .pipe_rx2_chanisaligned(pipe_rx2_chanisaligned), + .pipe_rx2_elec_idle(pipe_rx2_elec_idle), + .pipe_rx2_phy_status(pipe_rx2_phy_status), + .pipe_rx2_polarity(pipe_rx2_polarity), + .pipe_rx2_valid(pipe_rx2_valid), + .pipe_rx3_chanisaligned(pipe_rx3_chanisaligned), + .pipe_rx3_elec_idle(pipe_rx3_elec_idle), + .pipe_rx3_phy_status(pipe_rx3_phy_status), + .pipe_rx3_polarity(pipe_rx3_polarity), + .pipe_rx3_valid(pipe_rx3_valid), + .pipe_tx0_char_is_k(pipe_tx0_char_is_k), + .pipe_tx0_compliance(pipe_tx0_compliance), + .pipe_tx0_data(pipe_tx0_data), + .pipe_tx0_elec_idle(pipe_tx0_elec_idle), + .pipe_tx0_powerdown(pipe_tx0_powerdown), + .pipe_tx1_char_is_k(pipe_tx1_char_is_k), + .pipe_tx1_compliance(pipe_tx1_compliance), + .pipe_tx1_data(pipe_tx1_data), + .pipe_tx1_elec_idle(pipe_tx1_elec_idle), + .pipe_tx1_powerdown(pipe_tx1_powerdown), + .pipe_tx2_char_is_k(pipe_tx2_char_is_k), + .pipe_tx2_compliance(pipe_tx2_compliance), + .pipe_tx2_data(pipe_tx2_data), + .pipe_tx2_elec_idle(pipe_tx2_elec_idle), + .pipe_tx2_powerdown(pipe_tx2_powerdown), + .pipe_tx3_char_is_k(pipe_tx3_char_is_k), + .pipe_tx3_compliance(pipe_tx3_compliance), + .pipe_tx3_data(pipe_tx3_data), + .pipe_tx3_elec_idle(pipe_tx3_elec_idle), + .pipe_tx3_powerdown(pipe_tx3_powerdown), + .pipe_tx_deemph(pipe_tx_deemph), + .pipe_tx_margin(pipe_tx_margin), + .pipe_tx_rate(pipe_tx_rate), + .pipe_tx_rcvr_det(pipe_tx_rcvr_det), + .pipe_userclk1_in(pipe_userclk1_in), + .pipe_userclk2_in(pipe_userclk2_in), + .pl_directed_change_done(pl_directed_change_done), + .pl_directed_link_auton(pl_directed_link_auton), + .pl_directed_link_change(pl_directed_link_change), + .pl_directed_link_speed(pl_directed_link_speed), + .pl_directed_link_width(pl_directed_link_width), + .pl_downstream_deemph_source(pl_downstream_deemph_source), + .pl_initial_link_width(pl_initial_link_width), + .pl_lane_reversal_mode(pl_lane_reversal_mode), + .pl_link_gen2_cap(pl_link_gen2_cap), + .pl_link_partner_gen2_supported(pl_link_partner_gen2_supported), + .pl_link_upcfg_cap(pl_link_upcfg_cap), + .pl_ltssm_state(pl_ltssm_state), + .pl_phy_lnk_up(pl_phy_lnk_up), + .pl_received_hot_rst(pl_received_hot_rst), + .pl_rx_pm_state(pl_rx_pm_state), + .pl_sel_lnk_rate(pl_sel_lnk_rate), + .pl_sel_lnk_width(pl_sel_lnk_width), + .pl_transmit_hot_rst(pl_transmit_hot_rst), + .pl_tx_pm_state(pl_tx_pm_state), + .pl_upstream_prefer_deemph(pl_upstream_prefer_deemph), + .ppm_L1_thrtl(\tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/ppm_L1_thrtl ), + .ppm_L1_thrtl_reg(pcie_7x_i_n_13), + .ppm_L1_trig(\tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/ppm_L1_trig ), + .reg_dsc_detect(\rx_inst/rx_pipeline_inst/reg_dsc_detect ), + .reg_tcfg_gnt(\tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/reg_tcfg_gnt ), + .rsrc_rdy_filtered(\rx_inst/rx_pipeline_inst/rsrc_rdy_filtered ), + .rx_np_ok(rx_np_ok), + .rx_np_req(rx_np_req), + .src_in(src_in), + .sys_rst_n(sys_rst_n), + .tbuf_av_min_trig(\tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/tbuf_av_min_trig ), + .tcfg_req_trig(\tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/tcfg_req_trig ), + .trn_in_packet(\rx_inst/rx_pipeline_inst/trn_in_packet ), + .trn_in_packet_reg(pcie_7x_i_n_9), + .trn_lnk_up(trn_lnk_up), + .trn_rbar_hit(trn_rbar_hit), + .trn_rdst_rdy(trn_rdst_rdy), + .trn_recrc_err(trn_recrc_err), + .trn_reof(trn_reof), + .trn_rerrfwd(trn_rerrfwd), + .trn_rsof(trn_rsof), + .trn_rsrc_dsc(trn_rsrc_dsc), + .trn_rsrc_dsc_d(\rx_inst/rx_pipeline_inst/trn_rsrc_dsc_d ), + .trn_rsrc_dsc_prev0(\rx_inst/rx_pipeline_inst/trn_rsrc_dsc_prev0 ), + .trn_tbuf_av(trn_tbuf_av), + .trn_tcfg_gnt(trn_tcfg_gnt), + .trn_tcfg_req(trn_tcfg_req), + .trn_td(trn_td), + .trn_tdst_rdy(trn_tdst_rdy), + .trn_teof(trn_teof), + .trn_trem(trn_trem), + .trn_tsof(trn_tsof), + .trn_tsrc_rdy(trn_tsrc_rdy), + .tx_err_drop(tx_err_drop), + .user_reset_int_reg(user_reset_int_reg)); + pcie_7x_0_pcie_7x_0_pcie_pipe_pipeline pcie_pipe_pipeline_i + (.D(D), + .PIPE_POWERDOWN(PIPE_POWERDOWN), + .PIPE_RXCHANISALIGNED(PIPE_RXCHANISALIGNED), + .PIPE_RXPOLARITY(PIPE_RXPOLARITY), + .PIPE_TXCOMPLIANCE(PIPE_TXCOMPLIANCE), + .PIPE_TXDATA(PIPE_TXDATA), + .PIPE_TXDATAK(PIPE_TXDATAK), + .PIPE_TXELECIDLE(PIPE_TXELECIDLE), + .Q(pipe_rx1_char_is_k), + .SR(SR), + .gt_rx_phy_status_q(gt_rx_phy_status_q), + .gt_rxelecidle_q(gt_rxelecidle_q), + .pipe_pclk_in(pipe_pclk_in), + .pipe_rx0_chanisaligned(pipe_rx0_chanisaligned), + .pipe_rx0_elec_idle(pipe_rx0_elec_idle), + .pipe_rx0_phy_status(pipe_rx0_phy_status), + .pipe_rx0_polarity(pipe_rx0_polarity), + .pipe_rx0_valid(pipe_rx0_valid), + .pipe_rx0_valid_gt(pipe_rx0_valid_gt), + .pipe_rx1_chanisaligned(pipe_rx1_chanisaligned), + .pipe_rx1_elec_idle(pipe_rx1_elec_idle), + .pipe_rx1_phy_status(pipe_rx1_phy_status), + .pipe_rx1_polarity(pipe_rx1_polarity), + .pipe_rx1_valid(pipe_rx1_valid), + .pipe_rx1_valid_gt(pipe_rx1_valid_gt), + .pipe_rx2_chanisaligned(pipe_rx2_chanisaligned), + .pipe_rx2_elec_idle(pipe_rx2_elec_idle), + .pipe_rx2_phy_status(pipe_rx2_phy_status), + .pipe_rx2_polarity(pipe_rx2_polarity), + .pipe_rx2_valid(pipe_rx2_valid), + .pipe_rx2_valid_gt(pipe_rx2_valid_gt), + .pipe_rx3_chanisaligned(pipe_rx3_chanisaligned), + .pipe_rx3_elec_idle(pipe_rx3_elec_idle), + .pipe_rx3_phy_status(pipe_rx3_phy_status), + .pipe_rx3_polarity(pipe_rx3_polarity), + .pipe_rx3_valid(pipe_rx3_valid), + .pipe_rx3_valid_gt(pipe_rx3_valid_gt), + .\pipe_stages_1.pipe_rx_char_is_k_q_reg[1] (pipe_rx2_char_is_k), + .\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 (pipe_rx3_char_is_k), + .\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 (pipe_rx0_char_is_k), + .\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_2 (\pipe_stages_1.pipe_rx_char_is_k_q_reg[1] ), + .\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_3 (\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0 ), + .\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_4 (\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1 ), + .\pipe_stages_1.pipe_rx_data_q_reg[15] (pipe_rx1_data), + .\pipe_stages_1.pipe_rx_data_q_reg[15]_0 (pipe_rx2_data), + .\pipe_stages_1.pipe_rx_data_q_reg[15]_1 (pipe_rx3_data), + .\pipe_stages_1.pipe_rx_data_q_reg[15]_2 (pipe_rx0_data), + .\pipe_stages_1.pipe_rx_data_q_reg[15]_3 (\pipe_stages_1.pipe_rx_data_q_reg[15] ), + .\pipe_stages_1.pipe_rx_data_q_reg[15]_4 (\pipe_stages_1.pipe_rx_data_q_reg[15]_0 ), + .\pipe_stages_1.pipe_rx_data_q_reg[15]_5 (\pipe_stages_1.pipe_rx_data_q_reg[15]_1 ), + .\pipe_stages_1.pipe_rx_data_q_reg[15]_6 (\pipe_stages_1.pipe_rx_data_q_reg[15]_2 ), + .\pipe_stages_1.pipe_rx_elec_idle_q_reg (\pipe_stages_1.pipe_rx_elec_idle_q_reg ), + .\pipe_stages_1.pipe_rx_elec_idle_q_reg_0 (\pipe_stages_1.pipe_rx_elec_idle_q_reg_0 ), + .\pipe_stages_1.pipe_rx_elec_idle_q_reg_1 (\pipe_stages_1.pipe_rx_elec_idle_q_reg_1 ), + .\pipe_stages_1.pipe_rx_phy_status_q_reg (\pipe_stages_1.pipe_rx_phy_status_q_reg ), + .\pipe_stages_1.pipe_rx_phy_status_q_reg_0 (\pipe_stages_1.pipe_rx_phy_status_q_reg_0 ), + .\pipe_stages_1.pipe_rx_phy_status_q_reg_1 (\pipe_stages_1.pipe_rx_phy_status_q_reg_1 ), + .\pipe_stages_1.pipe_rx_status_q_reg[2] (pipe_rx1_status), + .\pipe_stages_1.pipe_rx_status_q_reg[2]_0 (pipe_rx2_status), + .\pipe_stages_1.pipe_rx_status_q_reg[2]_1 (pipe_rx3_status), + .\pipe_stages_1.pipe_rx_status_q_reg[2]_2 (pipe_rx0_status), + .\pipe_stages_1.pipe_rx_status_q_reg[2]_3 (\pipe_stages_1.pipe_rx_status_q_reg[2] ), + .\pipe_stages_1.pipe_rx_status_q_reg[2]_4 (\pipe_stages_1.pipe_rx_status_q_reg[2]_0 ), + .\pipe_stages_1.pipe_rx_status_q_reg[2]_5 (\pipe_stages_1.pipe_rx_status_q_reg[2]_1 ), + .\pipe_stages_1.pipe_rx_status_q_reg[2]_6 (\pipe_stages_1.pipe_rx_status_q_reg[2]_2 ), + .\pipe_stages_1.pipe_tx_char_is_k_q_reg[1] (pipe_tx0_char_is_k), + .\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0 (pipe_tx1_char_is_k), + .\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_1 (pipe_tx2_char_is_k), + .\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_2 (pipe_tx3_char_is_k), + .\pipe_stages_1.pipe_tx_data_q_reg[15] (pipe_tx0_data), + .\pipe_stages_1.pipe_tx_data_q_reg[15]_0 (pipe_tx1_data), + .\pipe_stages_1.pipe_tx_data_q_reg[15]_1 (pipe_tx2_data), + .\pipe_stages_1.pipe_tx_data_q_reg[15]_2 (pipe_tx3_data), + .\pipe_stages_1.pipe_tx_margin_q_reg[2] (Q), + .\pipe_stages_1.pipe_tx_margin_q_reg[2]_0 (pipe_tx_margin), + .\pipe_stages_1.pipe_tx_powerdown_q_reg[1] (pipe_tx0_powerdown), + .\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0 (pipe_tx1_powerdown), + .\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_1 (pipe_tx2_powerdown), + .\pipe_stages_1.pipe_tx_powerdown_q_reg[1]_2 (pipe_tx3_powerdown), + .\pipe_stages_1.pipe_tx_rate_q_reg (\pipe_stages_1.pipe_tx_rate_q_reg ), + .pipe_tx0_compliance(pipe_tx0_compliance), + .pipe_tx0_elec_idle(pipe_tx0_elec_idle), + .pipe_tx1_compliance(pipe_tx1_compliance), + .pipe_tx1_elec_idle(pipe_tx1_elec_idle), + .pipe_tx2_compliance(pipe_tx2_compliance), + .pipe_tx2_elec_idle(pipe_tx2_elec_idle), + .pipe_tx3_compliance(pipe_tx3_compliance), + .pipe_tx3_elec_idle(pipe_tx3_elec_idle), + .pipe_tx_deemph(pipe_tx_deemph), + .pipe_tx_deemph_gt(pipe_tx_deemph_gt), + .pipe_tx_rate(pipe_tx_rate), + .pipe_tx_rcvr_det(pipe_tx_rcvr_det), + .pipe_tx_rcvr_det_gt(pipe_tx_rcvr_det_gt)); +endmodule + +module pcie_7x_0_pcie_7x_0_pipe_drp + (\fsm_reg[1]_0 , + \fsm_reg[1]_1 , + DRPDI, + DRPADDR, + DRP_DONE, + RST_DCLK_RESET, + RATE_DRP_X16X20_MODE, + pipe_dclk_in, + RATE_DRP_START, + DRP_RDY, + \rate_reg1_reg[0]_0 , + RATE_DRP_X16, + D, + DRP_GTXRESET); + output \fsm_reg[1]_0 ; + output \fsm_reg[1]_1 ; + output [15:0]DRPDI; + output [7:0]DRPADDR; + output DRP_DONE; + input RST_DCLK_RESET; + input RATE_DRP_X16X20_MODE; + input pipe_dclk_in; + input RATE_DRP_START; + input DRP_RDY; + input [0:0]\rate_reg1_reg[0]_0 ; + input RATE_DRP_X16; + input [15:0]D; + input DRP_GTXRESET; + + wire [15:0]D; + wire [7:0]DRPADDR; + wire [15:0]DRPDI; + wire DRP_DONE; + wire DRP_GTXRESET; + wire DRP_RDY; + wire RATE_DRP_START; + wire RATE_DRP_X16; + wire RATE_DRP_X16X20_MODE; + wire RST_DCLK_RESET; + wire [7:0]addr_reg; + wire \addr_reg[4]_i_1_n_0 ; + wire \addr_reg[6]_i_1_n_0 ; + wire [15:15]data_pma_rsv_a; + wire [15:0]di_reg; + wire \di_reg[0]_i_2_n_0 ; + wire \di_reg[0]_i_3_n_0 ; + wire \di_reg[11]_i_2_n_0 ; + wire \di_reg[11]_i_3_n_0 ; + wire \di_reg[11]_i_4_n_0 ; + wire \di_reg[11]_i_5_n_0 ; + wire \di_reg[12]_i_2_n_0 ; + wire \di_reg[12]_i_3_n_0 ; + wire \di_reg[13]_i_2_n_0 ; + wire \di_reg[13]_i_3_n_0 ; + wire \di_reg[14]_i_2_n_0 ; + wire \di_reg[15]_i_2_n_0 ; + wire \di_reg[1]_i_2_n_0 ; + wire \di_reg[1]_i_3_n_0 ; + wire \di_reg[2]_i_2_n_0 ; + wire \di_reg[2]_i_3_n_0 ; + wire \di_reg[3]_i_2_n_0 ; + wire \di_reg[3]_i_3_n_0 ; + wire \di_reg[4]_i_2_n_0 ; + wire \di_reg[4]_i_3_n_0 ; + wire \di_reg[4]_i_4_n_0 ; + wire \di_reg[5]_i_2_n_0 ; + wire \di_reg[5]_i_3_n_0 ; + wire \di_reg[6]_i_2_n_0 ; + wire \di_reg[6]_i_3_n_0 ; + wire \di_reg[7]_i_2_n_0 ; + wire \di_reg[7]_i_3_n_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [15:0]do_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [15:0]do_reg2; + wire done_i_1__0_n_0; + wire [7:0]drp_addr_0; + wire [15:0]drp_di_0; + wire [2:0]fsm; + wire fsm1; + wire \fsm[0]_i_2__0_n_0 ; + wire \fsm_reg[1]_0 ; + wire \fsm_reg[1]_1 ; + wire \fsm_reg_n_0_[0] ; + wire \fsm_reg_n_0_[1] ; + wire \fsm_reg_n_0_[2] ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gtxreset_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gtxreset_reg2; + wire [4:0]index; + wire \index[0]_i_1_n_0 ; + wire \index[1]_i_1_n_0 ; + wire \index[2]_i_1_n_0 ; + wire \index[3]_i_1_n_0 ; + wire \index[3]_i_2_n_0 ; + wire \index[4]_i_1_n_0 ; + wire \index[4]_i_2_n_0 ; + wire \index[4]_i_3_n_0 ; + wire [0:0]load_cnt; + wire \load_cnt[0]_i_1_n_0 ; + wire pipe_dclk_in; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rate_reg1; + wire [0:0]\rate_reg1_reg[0]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rate_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rdy_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rdy_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire start_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire start_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire x16_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire x16_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire x16x20_mode_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire x16x20_mode_reg2; + + LUT6 #( + .INIT(64'h1736415517364154)) + \addr_reg[0]_i_1 + (.I0(index[4]), + .I1(index[3]), + .I2(index[2]), + .I3(index[1]), + .I4(index[0]), + .I5(x16x20_mode_reg2), + .O(addr_reg[0])); + (* SOFT_HLUTNM = "soft_lutpair30" *) + LUT5 #( + .INIT(32'h40500F00)) + \addr_reg[1]_i_1 + (.I0(index[4]), + .I1(index[0]), + .I2(index[3]), + .I3(index[1]), + .I4(index[2]), + .O(addr_reg[1])); + (* SOFT_HLUTNM = "soft_lutpair30" *) + LUT5 #( + .INIT(32'h05105A00)) + \addr_reg[2]_i_1 + (.I0(index[4]), + .I1(index[0]), + .I2(index[3]), + .I3(index[2]), + .I4(index[1]), + .O(addr_reg[2])); + LUT6 #( + .INIT(64'h5767576753265327)) + \addr_reg[3]_i_1 + (.I0(index[4]), + .I1(index[3]), + .I2(index[2]), + .I3(index[1]), + .I4(x16x20_mode_reg2), + .I5(index[0]), + .O(addr_reg[3])); + LUT6 #( + .INIT(64'h00000000FAAFFF04)) + \addr_reg[4]_i_1 + (.I0(index[0]), + .I1(x16x20_mode_reg2), + .I2(index[1]), + .I3(index[2]), + .I4(index[3]), + .I5(index[4]), + .O(\addr_reg[4]_i_1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair29" *) + LUT5 #( + .INIT(32'h001A0F0A)) + \addr_reg[5]_i_1 + (.I0(index[4]), + .I1(index[0]), + .I2(index[3]), + .I3(index[1]), + .I4(index[2]), + .O(addr_reg[5])); + (* SOFT_HLUTNM = "soft_lutpair29" *) + LUT5 #( + .INIT(32'h00001454)) + \addr_reg[6]_i_1 + (.I0(index[2]), + .I1(index[1]), + .I2(index[3]), + .I3(index[0]), + .I4(index[4]), + .O(\addr_reg[6]_i_1_n_0 )); + LUT6 #( + .INIT(64'h5252424223236263)) + \addr_reg[7]_i_1 + (.I0(index[4]), + .I1(index[3]), + .I2(index[2]), + .I3(x16x20_mode_reg2), + .I4(index[0]), + .I5(index[1]), + .O(addr_reg[7])); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(addr_reg[0]), + .Q(drp_addr_0[0]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(addr_reg[1]), + .Q(drp_addr_0[1]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(addr_reg[2]), + .Q(drp_addr_0[2]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[3] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(addr_reg[3]), + .Q(drp_addr_0[3]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[4] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\addr_reg[4]_i_1_n_0 ), + .Q(drp_addr_0[4]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[5] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(addr_reg[5]), + .Q(drp_addr_0[5]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[6] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\addr_reg[6]_i_1_n_0 ), + .Q(drp_addr_0[6]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[7] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(addr_reg[7]), + .Q(drp_addr_0[7]), + .R(RST_DCLK_RESET)); + LUT6 #( + .INIT(64'hFF5E7F6FA1001000)) + \di_reg[0]_i_2 + (.I0(index[3]), + .I1(index[2]), + .I2(index[1]), + .I3(data_pma_rsv_a), + .I4(index[0]), + .I5(do_reg2[0]), + .O(\di_reg[0]_i_2_n_0 )); + LUT5 #( + .INIT(32'h000005D0)) + \di_reg[0]_i_3 + (.I0(index[0]), + .I1(do_reg2[0]), + .I2(index[2]), + .I3(index[1]), + .I4(index[3]), + .O(\di_reg[0]_i_3_n_0 )); + LUT6 #( + .INIT(64'h45555F5540000000)) + \di_reg[10]_i_1 + (.I0(index[4]), + .I1(\di_reg[15]_i_2_n_0 ), + .I2(index[1]), + .I3(index[2]), + .I4(index[3]), + .I5(do_reg2[10]), + .O(di_reg[10])); + LUT6 #( + .INIT(64'h4F40DDDD4F408888)) + \di_reg[11]_i_2 + (.I0(index[3]), + .I1(do_reg2[11]), + .I2(index[1]), + .I3(\di_reg[11]_i_4_n_0 ), + .I4(index[2]), + .I5(\di_reg[11]_i_5_n_0 ), + .O(\di_reg[11]_i_2_n_0 )); + LUT6 #( + .INIT(64'h0000000008080838)) + \di_reg[11]_i_3 + (.I0(do_reg2[11]), + .I1(index[2]), + .I2(index[1]), + .I3(data_pma_rsv_a), + .I4(index[0]), + .I5(index[3]), + .O(\di_reg[11]_i_3_n_0 )); + LUT4 #( + .INIT(16'hB8BB)) + \di_reg[11]_i_4 + (.I0(do_reg2[11]), + .I1(index[0]), + .I2(rate_reg2[0]), + .I3(rate_reg2[1]), + .O(\di_reg[11]_i_4_n_0 )); + LUT5 #( + .INIT(32'hEFFF0100)) + \di_reg[11]_i_5 + (.I0(index[1]), + .I1(index[0]), + .I2(x16_reg2), + .I3(x16x20_mode_reg2), + .I4(do_reg2[11]), + .O(\di_reg[11]_i_5_n_0 )); + LUT6 #( + .INIT(64'h777EFFFF01080000)) + \di_reg[12]_i_2 + (.I0(index[3]), + .I1(index[1]), + .I2(index[0]), + .I3(data_pma_rsv_a), + .I4(index[2]), + .I5(do_reg2[12]), + .O(\di_reg[12]_i_2_n_0 )); + LUT5 #( + .INIT(32'h00000B08)) + \di_reg[12]_i_3 + (.I0(do_reg2[12]), + .I1(index[2]), + .I2(index[1]), + .I3(index[0]), + .I4(index[3]), + .O(\di_reg[12]_i_3_n_0 )); + LUT6 #( + .INIT(64'h767FFFFF00090000)) + \di_reg[13]_i_2 + (.I0(index[3]), + .I1(index[1]), + .I2(index[0]), + .I3(data_pma_rsv_a), + .I4(index[2]), + .I5(do_reg2[13]), + .O(\di_reg[13]_i_2_n_0 )); + LUT6 #( + .INIT(64'h0000000008380808)) + \di_reg[13]_i_3 + (.I0(do_reg2[13]), + .I1(index[2]), + .I2(index[1]), + .I3(index[0]), + .I4(data_pma_rsv_a), + .I5(index[3]), + .O(\di_reg[13]_i_3_n_0 )); + LUT6 #( + .INIT(64'h0040FFFF00400000)) + \di_reg[14]_i_1 + (.I0(index[1]), + .I1(index[2]), + .I2(do_reg2[14]), + .I3(index[3]), + .I4(index[4]), + .I5(\di_reg[14]_i_2_n_0 ), + .O(di_reg[14])); + LUT6 #( + .INIT(64'h653BFFF721080080)) + \di_reg[14]_i_2 + (.I0(index[3]), + .I1(index[1]), + .I2(data_pma_rsv_a), + .I3(index[0]), + .I4(index[2]), + .I5(do_reg2[14]), + .O(\di_reg[14]_i_2_n_0 )); + LUT2 #( + .INIT(4'hB)) + \di_reg[14]_i_3__2 + (.I0(rate_reg2[0]), + .I1(rate_reg2[1]), + .O(data_pma_rsv_a)); + LUT6 #( + .INIT(64'h45555F5540000000)) + \di_reg[15]_i_1 + (.I0(index[4]), + .I1(\di_reg[15]_i_2_n_0 ), + .I2(index[1]), + .I3(index[2]), + .I4(index[3]), + .I5(do_reg2[15]), + .O(di_reg[15])); + LUT3 #( + .INIT(8'h0D)) + \di_reg[15]_i_2 + (.I0(rate_reg2[1]), + .I1(rate_reg2[0]), + .I2(index[0]), + .O(\di_reg[15]_i_2_n_0 )); + LUT6 #( + .INIT(64'h5FEE4E0076FF1000)) + \di_reg[1]_i_2 + (.I0(index[3]), + .I1(index[2]), + .I2(data_pma_rsv_a), + .I3(index[1]), + .I4(do_reg2[1]), + .I5(index[0]), + .O(\di_reg[1]_i_2_n_0 )); + LUT5 #( + .INIT(32'h000005D0)) + \di_reg[1]_i_3 + (.I0(index[0]), + .I1(do_reg2[1]), + .I2(index[2]), + .I3(index[1]), + .I4(index[3]), + .O(\di_reg[1]_i_3_n_0 )); + LUT6 #( + .INIT(64'h5DEE080067FF0100)) + \di_reg[2]_i_2 + (.I0(index[3]), + .I1(index[2]), + .I2(data_pma_rsv_a), + .I3(index[1]), + .I4(do_reg2[2]), + .I5(index[0]), + .O(\di_reg[2]_i_2_n_0 )); + LUT5 #( + .INIT(32'h00000380)) + \di_reg[2]_i_3 + (.I0(do_reg2[2]), + .I1(index[0]), + .I2(index[2]), + .I3(index[1]), + .I4(index[3]), + .O(\di_reg[2]_i_3_n_0 )); + LUT6 #( + .INIT(64'h43FFFFFF40000000)) + \di_reg[3]_i_2 + (.I0(data_pma_rsv_a), + .I1(index[2]), + .I2(index[0]), + .I3(index[1]), + .I4(index[3]), + .I5(do_reg2[3]), + .O(\di_reg[3]_i_2_n_0 )); + LUT6 #( + .INIT(64'h000000000033D100)) + \di_reg[3]_i_3 + (.I0(data_pma_rsv_a), + .I1(index[0]), + .I2(do_reg2[3]), + .I3(index[2]), + .I4(index[1]), + .I5(index[3]), + .O(\di_reg[3]_i_3_n_0 )); + LUT5 #( + .INIT(32'h30BB3088)) + \di_reg[4]_i_1 + (.I0(\di_reg[4]_i_2_n_0 ), + .I1(index[4]), + .I2(\di_reg[4]_i_3_n_0 ), + .I3(index[3]), + .I4(\di_reg[4]_i_4_n_0 ), + .O(di_reg[4])); + LUT6 #( + .INIT(64'h0F0400F0000400F0)) + \di_reg[4]_i_2 + (.I0(rate_reg2[0]), + .I1(rate_reg2[1]), + .I2(index[1]), + .I3(index[2]), + .I4(index[0]), + .I5(do_reg2[4]), + .O(\di_reg[4]_i_2_n_0 )); + LUT6 #( + .INIT(64'h400FFFFF40000000)) + \di_reg[4]_i_3 + (.I0(rate_reg2[0]), + .I1(rate_reg2[1]), + .I2(index[2]), + .I3(index[0]), + .I4(index[1]), + .I5(do_reg2[4]), + .O(\di_reg[4]_i_3_n_0 )); + LUT6 #( + .INIT(64'hBF00BF01FF40FE40)) + \di_reg[4]_i_4 + (.I0(index[2]), + .I1(index[1]), + .I2(index[0]), + .I3(do_reg2[4]), + .I4(x16x20_mode_reg2), + .I5(data_pma_rsv_a), + .O(\di_reg[4]_i_4_n_0 )); + LUT6 #( + .INIT(64'h7F7F7F7E00000000)) + \di_reg[5]_i_2 + (.I0(index[3]), + .I1(index[2]), + .I2(index[1]), + .I3(index[0]), + .I4(x16x20_mode_reg2), + .I5(do_reg2[5]), + .O(\di_reg[5]_i_2_n_0 )); + LUT6 #( + .INIT(64'h00000000038F0380)) + \di_reg[5]_i_3 + (.I0(do_reg2[5]), + .I1(index[0]), + .I2(index[2]), + .I3(index[1]), + .I4(data_pma_rsv_a), + .I5(index[3]), + .O(\di_reg[5]_i_3_n_0 )); + LUT6 #( + .INIT(64'h7D7F7D7E00000000)) + \di_reg[6]_i_2 + (.I0(index[3]), + .I1(index[2]), + .I2(index[1]), + .I3(index[0]), + .I4(x16x20_mode_reg2), + .I5(do_reg2[6]), + .O(\di_reg[6]_i_2_n_0 )); + LUT5 #( + .INIT(32'h00000380)) + \di_reg[6]_i_3 + (.I0(do_reg2[6]), + .I1(index[0]), + .I2(index[2]), + .I3(index[1]), + .I4(index[3]), + .O(\di_reg[6]_i_3_n_0 )); + LUT5 #( + .INIT(32'h7FFF0900)) + \di_reg[7]_i_2 + (.I0(index[2]), + .I1(index[1]), + .I2(index[0]), + .I3(index[3]), + .I4(do_reg2[7]), + .O(\di_reg[7]_i_2_n_0 )); + LUT6 #( + .INIT(64'h0000000003800383)) + \di_reg[7]_i_3 + (.I0(do_reg2[7]), + .I1(index[0]), + .I2(index[2]), + .I3(index[1]), + .I4(data_pma_rsv_a), + .I5(index[3]), + .O(\di_reg[7]_i_3_n_0 )); + LUT6 #( + .INIT(64'h03333F7300000040)) + \di_reg[8]_i_1 + (.I0(index[0]), + .I1(index[4]), + .I2(index[1]), + .I3(index[2]), + .I4(index[3]), + .I5(do_reg2[8]), + .O(di_reg[8])); + LUT6 #( + .INIT(64'h03333F7300000040)) + \di_reg[9]_i_1 + (.I0(index[0]), + .I1(index[4]), + .I2(index[1]), + .I3(index[2]), + .I4(index[3]), + .I5(do_reg2[9]), + .O(di_reg[9])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[0]), + .Q(drp_di_0[0]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[0]_i_1 + (.I0(\di_reg[0]_i_2_n_0 ), + .I1(\di_reg[0]_i_3_n_0 ), + .O(di_reg[0]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[10] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[10]), + .Q(drp_di_0[10]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[11] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[11]), + .Q(drp_di_0[11]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[11]_i_1 + (.I0(\di_reg[11]_i_2_n_0 ), + .I1(\di_reg[11]_i_3_n_0 ), + .O(di_reg[11]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[12] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[12]), + .Q(drp_di_0[12]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[12]_i_1 + (.I0(\di_reg[12]_i_2_n_0 ), + .I1(\di_reg[12]_i_3_n_0 ), + .O(di_reg[12]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[13] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[13]), + .Q(drp_di_0[13]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[13]_i_1 + (.I0(\di_reg[13]_i_2_n_0 ), + .I1(\di_reg[13]_i_3_n_0 ), + .O(di_reg[13]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[14] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[14]), + .Q(drp_di_0[14]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[15] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[15]), + .Q(drp_di_0[15]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[1]), + .Q(drp_di_0[1]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[1]_i_1 + (.I0(\di_reg[1]_i_2_n_0 ), + .I1(\di_reg[1]_i_3_n_0 ), + .O(di_reg[1]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[2]), + .Q(drp_di_0[2]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[2]_i_1 + (.I0(\di_reg[2]_i_2_n_0 ), + .I1(\di_reg[2]_i_3_n_0 ), + .O(di_reg[2]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[3] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[3]), + .Q(drp_di_0[3]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[3]_i_1 + (.I0(\di_reg[3]_i_2_n_0 ), + .I1(\di_reg[3]_i_3_n_0 ), + .O(di_reg[3]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[4] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[4]), + .Q(drp_di_0[4]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[5] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[5]), + .Q(drp_di_0[5]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[5]_i_1 + (.I0(\di_reg[5]_i_2_n_0 ), + .I1(\di_reg[5]_i_3_n_0 ), + .O(di_reg[5]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[6] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[6]), + .Q(drp_di_0[6]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[6]_i_1 + (.I0(\di_reg[6]_i_2_n_0 ), + .I1(\di_reg[6]_i_3_n_0 ), + .O(di_reg[6]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[7] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[7]), + .Q(drp_di_0[7]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[7]_i_1 + (.I0(\di_reg[7]_i_2_n_0 ), + .I1(\di_reg[7]_i_3_n_0 ), + .O(di_reg[7]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[8] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[8]), + .Q(drp_di_0[8]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[9] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[9]), + .Q(drp_di_0[9]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[0]), + .Q(do_reg1[0]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[10] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[10]), + .Q(do_reg1[10]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[11] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[11]), + .Q(do_reg1[11]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[12] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[12]), + .Q(do_reg1[12]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[13] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[13]), + .Q(do_reg1[13]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[14] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[14]), + .Q(do_reg1[14]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[15] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[15]), + .Q(do_reg1[15]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[1]), + .Q(do_reg1[1]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[2]), + .Q(do_reg1[2]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[3] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[3]), + .Q(do_reg1[3]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[4] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[4]), + .Q(do_reg1[4]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[5] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[5]), + .Q(do_reg1[5]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[6] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[6]), + .Q(do_reg1[6]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[7] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[7]), + .Q(do_reg1[7]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[8] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[8]), + .Q(do_reg1[8]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[9] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[9]), + .Q(do_reg1[9]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[0]), + .Q(do_reg2[0]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[10] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[10]), + .Q(do_reg2[10]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[11] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[11]), + .Q(do_reg2[11]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[12] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[12]), + .Q(do_reg2[12]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[13] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[13]), + .Q(do_reg2[13]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[14] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[14]), + .Q(do_reg2[14]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[15] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[15]), + .Q(do_reg2[15]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[1]), + .Q(do_reg2[1]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[2]), + .Q(do_reg2[2]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[3] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[3]), + .Q(do_reg2[3]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[4] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[4]), + .Q(do_reg2[4]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[5] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[5]), + .Q(do_reg2[5]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[6] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[6]), + .Q(do_reg2[6]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[7] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[7]), + .Q(do_reg2[7]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[8] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[8]), + .Q(do_reg2[8]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[9] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[9]), + .Q(do_reg2[9]), + .R(RST_DCLK_RESET)); + LUT4 #( + .INIT(16'h0001)) + done_i_1__0 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(start_reg2), + .I3(\fsm_reg_n_0_[1] ), + .O(done_i_1__0_n_0)); + FDRE #( + .INIT(1'b0)) + done_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(done_i_1__0_n_0), + .Q(DRP_DONE), + .R(RST_DCLK_RESET)); + LUT6 #( + .INIT(64'h0737FFFF07370000)) + \fsm[0]_i_1__0 + (.I0(fsm1), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(rdy_reg2), + .I4(\fsm_reg_n_0_[2] ), + .I5(\fsm[0]_i_2__0_n_0 ), + .O(fsm[0])); + LUT5 #( + .INIT(32'h47FF47CC)) + \fsm[0]_i_2__0 + (.I0(rdy_reg2), + .I1(\fsm_reg_n_0_[1] ), + .I2(load_cnt), + .I3(\fsm_reg_n_0_[0] ), + .I4(start_reg2), + .O(\fsm[0]_i_2__0_n_0 )); + LUT5 #( + .INIT(32'h1D501850)) + \fsm[1]_i_1__0 + (.I0(\fsm_reg_n_0_[2] ), + .I1(rdy_reg2), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(load_cnt), + .O(fsm[1])); + LUT4 #( + .INIT(16'h6222)) + \fsm[2]_i_1 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(rdy_reg2), + .O(fsm[2])); + FDRE #( + .INIT(1'b0)) + \fsm_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(fsm[0]), + .Q(\fsm_reg_n_0_[0] ), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \fsm_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(fsm[1]), + .Q(\fsm_reg_n_0_[1] ), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \fsm_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(fsm[2]), + .Q(\fsm_reg_n_0_[2] ), + .R(RST_DCLK_RESET)); + (* SOFT_HLUTNM = "soft_lutpair37" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_10 + (.I0(drp_di_0[11]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[11])); + (* SOFT_HLUTNM = "soft_lutpair37" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_11 + (.I0(drp_di_0[10]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[10])); + (* SOFT_HLUTNM = "soft_lutpair36" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_12 + (.I0(drp_di_0[9]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[9])); + (* SOFT_HLUTNM = "soft_lutpair36" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_13 + (.I0(drp_di_0[8]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[8])); + (* SOFT_HLUTNM = "soft_lutpair35" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_14 + (.I0(drp_di_0[7]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[7])); + (* SOFT_HLUTNM = "soft_lutpair35" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_15 + (.I0(drp_di_0[6]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[6])); + (* SOFT_HLUTNM = "soft_lutpair34" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_16 + (.I0(drp_di_0[5]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[5])); + (* SOFT_HLUTNM = "soft_lutpair34" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_17 + (.I0(drp_di_0[4]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[4])); + (* SOFT_HLUTNM = "soft_lutpair33" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_18 + (.I0(drp_di_0[3]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[3])); + (* SOFT_HLUTNM = "soft_lutpair33" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_19 + (.I0(drp_di_0[2]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[2])); + (* SOFT_HLUTNM = "soft_lutpair32" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_20 + (.I0(drp_di_0[1]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[1])); + (* SOFT_HLUTNM = "soft_lutpair31" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_21 + (.I0(drp_di_0[0]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[0])); + (* SOFT_HLUTNM = "soft_lutpair31" *) + LUT3 #( + .INIT(8'h12)) + \gtx_channel.gtxe2_channel_i_i_3 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[2] ), + .O(\fsm_reg[1]_0 )); + (* SOFT_HLUTNM = "soft_lutpair43" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_39__0 + (.I0(drp_addr_0[7]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[7])); + (* SOFT_HLUTNM = "soft_lutpair32" *) + LUT3 #( + .INIT(8'h10)) + \gtx_channel.gtxe2_channel_i_i_4 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[2] ), + .O(\fsm_reg[1]_1 )); + (* SOFT_HLUTNM = "soft_lutpair43" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_40 + (.I0(drp_addr_0[6]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[6])); + (* SOFT_HLUTNM = "soft_lutpair42" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_41 + (.I0(drp_addr_0[5]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[5])); + (* SOFT_HLUTNM = "soft_lutpair42" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_42 + (.I0(drp_addr_0[4]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[4])); + (* SOFT_HLUTNM = "soft_lutpair41" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_43 + (.I0(drp_addr_0[3]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[3])); + (* SOFT_HLUTNM = "soft_lutpair41" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_44 + (.I0(drp_addr_0[2]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[2])); + (* SOFT_HLUTNM = "soft_lutpair40" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_45 + (.I0(drp_addr_0[1]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[1])); + (* SOFT_HLUTNM = "soft_lutpair40" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_46 + (.I0(drp_addr_0[0]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[0])); + (* SOFT_HLUTNM = "soft_lutpair39" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_6 + (.I0(drp_di_0[15]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[15])); + (* SOFT_HLUTNM = "soft_lutpair39" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_7 + (.I0(drp_di_0[14]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[14])); + (* SOFT_HLUTNM = "soft_lutpair38" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_8 + (.I0(drp_di_0[13]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[13])); + (* SOFT_HLUTNM = "soft_lutpair38" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_9 + (.I0(drp_di_0[12]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[12])); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gtxreset_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(DRP_GTXRESET), + .Q(gtxreset_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gtxreset_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(gtxreset_reg1), + .Q(gtxreset_reg2), + .R(RST_DCLK_RESET)); + (* SOFT_HLUTNM = "soft_lutpair28" *) + LUT4 #( + .INIT(16'h0100)) + \index[0]_i_1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(fsm1), + .I2(index[0]), + .I3(\fsm_reg_n_0_[2] ), + .O(\index[0]_i_1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair28" *) + LUT5 #( + .INIT(32'h00140000)) + \index[1]_i_1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(index[1]), + .I2(index[0]), + .I3(fsm1), + .I4(\fsm_reg_n_0_[2] ), + .O(\index[1]_i_1_n_0 )); + LUT6 #( + .INIT(64'h0000144400000000)) + \index[2]_i_1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(index[2]), + .I2(index[1]), + .I3(index[0]), + .I4(fsm1), + .I5(\fsm_reg_n_0_[2] ), + .O(\index[2]_i_1_n_0 )); + LUT6 #( + .INIT(64'h0000144400000000)) + \index[3]_i_1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(index[3]), + .I2(index[2]), + .I3(\index[3]_i_2_n_0 ), + .I4(fsm1), + .I5(\fsm_reg_n_0_[2] ), + .O(\index[3]_i_1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair44" *) + LUT2 #( + .INIT(4'h8)) + \index[3]_i_2 + (.I0(index[1]), + .I1(index[0]), + .O(\index[3]_i_2_n_0 )); + LUT3 #( + .INIT(8'hA1)) + \index[4]_i_1 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[2] ), + .O(\index[4]_i_1_n_0 )); + LUT6 #( + .INIT(64'h0000144400000000)) + \index[4]_i_2 + (.I0(\fsm_reg_n_0_[0] ), + .I1(index[4]), + .I2(index[3]), + .I3(\index[4]_i_3_n_0 ), + .I4(fsm1), + .I5(\fsm_reg_n_0_[2] ), + .O(\index[4]_i_2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair44" *) + LUT3 #( + .INIT(8'h80)) + \index[4]_i_3 + (.I0(index[2]), + .I1(index[0]), + .I2(index[1]), + .O(\index[4]_i_3_n_0 )); + LUT6 #( + .INIT(64'h1000000110000000)) + \index[4]_i_4 + (.I0(index[3]), + .I1(index[1]), + .I2(index[0]), + .I3(index[4]), + .I4(index[2]), + .I5(x16x20_mode_reg2), + .O(fsm1)); + FDRE #( + .INIT(1'b0)) + \index_reg[0] + (.C(pipe_dclk_in), + .CE(\index[4]_i_1_n_0 ), + .D(\index[0]_i_1_n_0 ), + .Q(index[0]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \index_reg[1] + (.C(pipe_dclk_in), + .CE(\index[4]_i_1_n_0 ), + .D(\index[1]_i_1_n_0 ), + .Q(index[1]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \index_reg[2] + (.C(pipe_dclk_in), + .CE(\index[4]_i_1_n_0 ), + .D(\index[2]_i_1_n_0 ), + .Q(index[2]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \index_reg[3] + (.C(pipe_dclk_in), + .CE(\index[4]_i_1_n_0 ), + .D(\index[3]_i_1_n_0 ), + .Q(index[3]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \index_reg[4] + (.C(pipe_dclk_in), + .CE(\index[4]_i_1_n_0 ), + .D(\index[4]_i_2_n_0 ), + .Q(index[4]), + .R(RST_DCLK_RESET)); + LUT3 #( + .INIT(8'h10)) + \load_cnt[0]_i_1 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[0] ), + .O(\load_cnt[0]_i_1_n_0 )); + FDRE #( + .INIT(1'b0)) + \load_cnt_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\load_cnt[0]_i_1_n_0 ), + .Q(load_cnt), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_reg1_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\rate_reg1_reg[0]_0 ), + .Q(rate_reg1[0]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_reg1_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rate_reg1[1]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_reg2_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(rate_reg1[0]), + .Q(rate_reg2[0]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_reg2_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(rate_reg1[1]), + .Q(rate_reg2[1]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rdy_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(DRP_RDY), + .Q(rdy_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rdy_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(rdy_reg1), + .Q(rdy_reg2), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE start_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(RATE_DRP_START), + .Q(start_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE start_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(start_reg1), + .Q(start_reg2), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE x16_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(RATE_DRP_X16), + .Q(x16_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE x16_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(x16_reg1), + .Q(x16_reg2), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE x16x20_mode_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(RATE_DRP_X16X20_MODE), + .Q(x16x20_mode_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE x16x20_mode_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(x16x20_mode_reg1), + .Q(x16x20_mode_reg2), + .R(RST_DCLK_RESET)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pipe_drp" *) +module pcie_7x_0_pcie_7x_0_pipe_drp_38 + (\fsm_reg[1]_0 , + \fsm_reg[1]_1 , + DRPADDR, + DRPDI, + DRP_DONE, + RST_DCLK_RESET, + RATE_DRP_X16X20_MODE, + pipe_dclk_in, + RATE_DRP_START, + DRP_RDY, + \rate_reg1_reg[0]_0 , + RATE_DRP_X16, + D, + DRP_GTXRESET); + output \fsm_reg[1]_0 ; + output \fsm_reg[1]_1 ; + output [7:0]DRPADDR; + output [15:0]DRPDI; + output DRP_DONE; + input RST_DCLK_RESET; + input RATE_DRP_X16X20_MODE; + input pipe_dclk_in; + input RATE_DRP_START; + input DRP_RDY; + input [0:0]\rate_reg1_reg[0]_0 ; + input RATE_DRP_X16; + input [15:0]D; + input DRP_GTXRESET; + + wire [15:0]D; + wire [7:0]DRPADDR; + wire [15:0]DRPDI; + wire DRP_DONE; + wire DRP_GTXRESET; + wire DRP_RDY; + wire RATE_DRP_START; + wire RATE_DRP_X16; + wire RATE_DRP_X16X20_MODE; + wire RST_DCLK_RESET; + wire [7:0]addr_reg; + wire \addr_reg[4]_i_1__0_n_0 ; + wire \addr_reg[6]_i_1__0_n_0 ; + wire [15:15]data_pma_rsv_a; + wire [15:0]di_reg; + wire \di_reg[0]_i_2__0_n_0 ; + wire \di_reg[0]_i_3__0_n_0 ; + wire \di_reg[11]_i_2__0_n_0 ; + wire \di_reg[11]_i_3__0_n_0 ; + wire \di_reg[11]_i_4__0_n_0 ; + wire \di_reg[11]_i_5__0_n_0 ; + wire \di_reg[12]_i_2__0_n_0 ; + wire \di_reg[12]_i_3__0_n_0 ; + wire \di_reg[13]_i_2__0_n_0 ; + wire \di_reg[13]_i_3__0_n_0 ; + wire \di_reg[14]_i_2__0_n_0 ; + wire \di_reg[15]_i_2__0_n_0 ; + wire \di_reg[1]_i_2__0_n_0 ; + wire \di_reg[1]_i_3__0_n_0 ; + wire \di_reg[2]_i_2__0_n_0 ; + wire \di_reg[2]_i_3__0_n_0 ; + wire \di_reg[3]_i_2__0_n_0 ; + wire \di_reg[3]_i_3__0_n_0 ; + wire \di_reg[4]_i_2__0_n_0 ; + wire \di_reg[4]_i_3__0_n_0 ; + wire \di_reg[4]_i_4__0_n_0 ; + wire \di_reg[5]_i_2__0_n_0 ; + wire \di_reg[5]_i_3__0_n_0 ; + wire \di_reg[6]_i_2__0_n_0 ; + wire \di_reg[6]_i_3__0_n_0 ; + wire \di_reg[7]_i_2__0_n_0 ; + wire \di_reg[7]_i_3__0_n_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [15:0]do_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [15:0]do_reg2; + wire done_i_1__1_n_0; + wire [7:0]drp_addr_9; + wire [15:0]drp_di_16; + wire [2:0]fsm; + wire fsm1; + wire \fsm[0]_i_2__3_n_0 ; + wire \fsm_reg[1]_0 ; + wire \fsm_reg[1]_1 ; + wire \fsm_reg_n_0_[0] ; + wire \fsm_reg_n_0_[1] ; + wire \fsm_reg_n_0_[2] ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gtxreset_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gtxreset_reg2; + wire [4:0]index; + wire \index[0]_i_1__0_n_0 ; + wire \index[1]_i_1__0_n_0 ; + wire \index[2]_i_1__0_n_0 ; + wire \index[3]_i_1__0_n_0 ; + wire \index[3]_i_2__0_n_0 ; + wire \index[4]_i_1__0_n_0 ; + wire \index[4]_i_2__0_n_0 ; + wire \index[4]_i_3__0_n_0 ; + wire [0:0]load_cnt; + wire \load_cnt[0]_i_1__1_n_0 ; + wire pipe_dclk_in; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rate_reg1; + wire [0:0]\rate_reg1_reg[0]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rate_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rdy_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rdy_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire start_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire start_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire x16_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire x16_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire x16x20_mode_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire x16x20_mode_reg2; + + LUT6 #( + .INIT(64'h1736415517364154)) + \addr_reg[0]_i_1__0 + (.I0(index[4]), + .I1(index[3]), + .I2(index[2]), + .I3(index[1]), + .I4(index[0]), + .I5(x16x20_mode_reg2), + .O(addr_reg[0])); + (* SOFT_HLUTNM = "soft_lutpair82" *) + LUT5 #( + .INIT(32'h40500F00)) + \addr_reg[1]_i_1__0 + (.I0(index[4]), + .I1(index[0]), + .I2(index[3]), + .I3(index[1]), + .I4(index[2]), + .O(addr_reg[1])); + (* SOFT_HLUTNM = "soft_lutpair82" *) + LUT5 #( + .INIT(32'h05105A00)) + \addr_reg[2]_i_1__0 + (.I0(index[4]), + .I1(index[0]), + .I2(index[3]), + .I3(index[2]), + .I4(index[1]), + .O(addr_reg[2])); + LUT6 #( + .INIT(64'h5767576753265327)) + \addr_reg[3]_i_1__0 + (.I0(index[4]), + .I1(index[3]), + .I2(index[2]), + .I3(index[1]), + .I4(x16x20_mode_reg2), + .I5(index[0]), + .O(addr_reg[3])); + LUT6 #( + .INIT(64'h00000000FAAFFF04)) + \addr_reg[4]_i_1__0 + (.I0(index[0]), + .I1(x16x20_mode_reg2), + .I2(index[1]), + .I3(index[2]), + .I4(index[3]), + .I5(index[4]), + .O(\addr_reg[4]_i_1__0_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair81" *) + LUT5 #( + .INIT(32'h001A0F0A)) + \addr_reg[5]_i_1__0 + (.I0(index[4]), + .I1(index[0]), + .I2(index[3]), + .I3(index[1]), + .I4(index[2]), + .O(addr_reg[5])); + (* SOFT_HLUTNM = "soft_lutpair81" *) + LUT5 #( + .INIT(32'h00001454)) + \addr_reg[6]_i_1__0 + (.I0(index[2]), + .I1(index[1]), + .I2(index[3]), + .I3(index[0]), + .I4(index[4]), + .O(\addr_reg[6]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'h5252424223236263)) + \addr_reg[7]_i_1__0 + (.I0(index[4]), + .I1(index[3]), + .I2(index[2]), + .I3(x16x20_mode_reg2), + .I4(index[0]), + .I5(index[1]), + .O(addr_reg[7])); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(addr_reg[0]), + .Q(drp_addr_9[0]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(addr_reg[1]), + .Q(drp_addr_9[1]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(addr_reg[2]), + .Q(drp_addr_9[2]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[3] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(addr_reg[3]), + .Q(drp_addr_9[3]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[4] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\addr_reg[4]_i_1__0_n_0 ), + .Q(drp_addr_9[4]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[5] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(addr_reg[5]), + .Q(drp_addr_9[5]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[6] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\addr_reg[6]_i_1__0_n_0 ), + .Q(drp_addr_9[6]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[7] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(addr_reg[7]), + .Q(drp_addr_9[7]), + .R(RST_DCLK_RESET)); + LUT6 #( + .INIT(64'hFF5E7F6FA1001000)) + \di_reg[0]_i_2__0 + (.I0(index[3]), + .I1(index[2]), + .I2(index[1]), + .I3(data_pma_rsv_a), + .I4(index[0]), + .I5(do_reg2[0]), + .O(\di_reg[0]_i_2__0_n_0 )); + LUT5 #( + .INIT(32'h000005D0)) + \di_reg[0]_i_3__0 + (.I0(index[0]), + .I1(do_reg2[0]), + .I2(index[2]), + .I3(index[1]), + .I4(index[3]), + .O(\di_reg[0]_i_3__0_n_0 )); + LUT6 #( + .INIT(64'h45555F5540000000)) + \di_reg[10]_i_1__0 + (.I0(index[4]), + .I1(\di_reg[15]_i_2__0_n_0 ), + .I2(index[1]), + .I3(index[2]), + .I4(index[3]), + .I5(do_reg2[10]), + .O(di_reg[10])); + LUT6 #( + .INIT(64'h4F40DDDD4F408888)) + \di_reg[11]_i_2__0 + (.I0(index[3]), + .I1(do_reg2[11]), + .I2(index[1]), + .I3(\di_reg[11]_i_4__0_n_0 ), + .I4(index[2]), + .I5(\di_reg[11]_i_5__0_n_0 ), + .O(\di_reg[11]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'h0000000008080838)) + \di_reg[11]_i_3__0 + (.I0(do_reg2[11]), + .I1(index[2]), + .I2(index[1]), + .I3(data_pma_rsv_a), + .I4(index[0]), + .I5(index[3]), + .O(\di_reg[11]_i_3__0_n_0 )); + LUT4 #( + .INIT(16'hB8BB)) + \di_reg[11]_i_4__0 + (.I0(do_reg2[11]), + .I1(index[0]), + .I2(rate_reg2[0]), + .I3(rate_reg2[1]), + .O(\di_reg[11]_i_4__0_n_0 )); + LUT5 #( + .INIT(32'hEFFF0100)) + \di_reg[11]_i_5__0 + (.I0(index[1]), + .I1(index[0]), + .I2(x16_reg2), + .I3(x16x20_mode_reg2), + .I4(do_reg2[11]), + .O(\di_reg[11]_i_5__0_n_0 )); + LUT6 #( + .INIT(64'h777EFFFF01080000)) + \di_reg[12]_i_2__0 + (.I0(index[3]), + .I1(index[1]), + .I2(index[0]), + .I3(data_pma_rsv_a), + .I4(index[2]), + .I5(do_reg2[12]), + .O(\di_reg[12]_i_2__0_n_0 )); + LUT5 #( + .INIT(32'h00000B08)) + \di_reg[12]_i_3__0 + (.I0(do_reg2[12]), + .I1(index[2]), + .I2(index[1]), + .I3(index[0]), + .I4(index[3]), + .O(\di_reg[12]_i_3__0_n_0 )); + LUT6 #( + .INIT(64'h767FFFFF00090000)) + \di_reg[13]_i_2__0 + (.I0(index[3]), + .I1(index[1]), + .I2(index[0]), + .I3(data_pma_rsv_a), + .I4(index[2]), + .I5(do_reg2[13]), + .O(\di_reg[13]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'h0000000008380808)) + \di_reg[13]_i_3__0 + (.I0(do_reg2[13]), + .I1(index[2]), + .I2(index[1]), + .I3(index[0]), + .I4(data_pma_rsv_a), + .I5(index[3]), + .O(\di_reg[13]_i_3__0_n_0 )); + LUT6 #( + .INIT(64'h0040FFFF00400000)) + \di_reg[14]_i_1__0 + (.I0(index[1]), + .I1(index[2]), + .I2(do_reg2[14]), + .I3(index[3]), + .I4(index[4]), + .I5(\di_reg[14]_i_2__0_n_0 ), + .O(di_reg[14])); + LUT6 #( + .INIT(64'h653BFFF721080080)) + \di_reg[14]_i_2__0 + (.I0(index[3]), + .I1(index[1]), + .I2(data_pma_rsv_a), + .I3(index[0]), + .I4(index[2]), + .I5(do_reg2[14]), + .O(\di_reg[14]_i_2__0_n_0 )); + LUT2 #( + .INIT(4'hB)) + \di_reg[14]_i_3__1 + (.I0(rate_reg2[0]), + .I1(rate_reg2[1]), + .O(data_pma_rsv_a)); + LUT6 #( + .INIT(64'h45555F5540000000)) + \di_reg[15]_i_1__0 + (.I0(index[4]), + .I1(\di_reg[15]_i_2__0_n_0 ), + .I2(index[1]), + .I3(index[2]), + .I4(index[3]), + .I5(do_reg2[15]), + .O(di_reg[15])); + LUT3 #( + .INIT(8'h0D)) + \di_reg[15]_i_2__0 + (.I0(rate_reg2[1]), + .I1(rate_reg2[0]), + .I2(index[0]), + .O(\di_reg[15]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'h5FEE4E0076FF1000)) + \di_reg[1]_i_2__0 + (.I0(index[3]), + .I1(index[2]), + .I2(data_pma_rsv_a), + .I3(index[1]), + .I4(do_reg2[1]), + .I5(index[0]), + .O(\di_reg[1]_i_2__0_n_0 )); + LUT5 #( + .INIT(32'h000005D0)) + \di_reg[1]_i_3__0 + (.I0(index[0]), + .I1(do_reg2[1]), + .I2(index[2]), + .I3(index[1]), + .I4(index[3]), + .O(\di_reg[1]_i_3__0_n_0 )); + LUT6 #( + .INIT(64'h5DEE080067FF0100)) + \di_reg[2]_i_2__0 + (.I0(index[3]), + .I1(index[2]), + .I2(data_pma_rsv_a), + .I3(index[1]), + .I4(do_reg2[2]), + .I5(index[0]), + .O(\di_reg[2]_i_2__0_n_0 )); + LUT5 #( + .INIT(32'h00000380)) + \di_reg[2]_i_3__0 + (.I0(do_reg2[2]), + .I1(index[0]), + .I2(index[2]), + .I3(index[1]), + .I4(index[3]), + .O(\di_reg[2]_i_3__0_n_0 )); + LUT6 #( + .INIT(64'h43FFFFFF40000000)) + \di_reg[3]_i_2__0 + (.I0(data_pma_rsv_a), + .I1(index[2]), + .I2(index[0]), + .I3(index[1]), + .I4(index[3]), + .I5(do_reg2[3]), + .O(\di_reg[3]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'h000000000033D100)) + \di_reg[3]_i_3__0 + (.I0(data_pma_rsv_a), + .I1(index[0]), + .I2(do_reg2[3]), + .I3(index[2]), + .I4(index[1]), + .I5(index[3]), + .O(\di_reg[3]_i_3__0_n_0 )); + LUT5 #( + .INIT(32'h30BB3088)) + \di_reg[4]_i_1__0 + (.I0(\di_reg[4]_i_2__0_n_0 ), + .I1(index[4]), + .I2(\di_reg[4]_i_3__0_n_0 ), + .I3(index[3]), + .I4(\di_reg[4]_i_4__0_n_0 ), + .O(di_reg[4])); + LUT6 #( + .INIT(64'h0F0400F0000400F0)) + \di_reg[4]_i_2__0 + (.I0(rate_reg2[0]), + .I1(rate_reg2[1]), + .I2(index[1]), + .I3(index[2]), + .I4(index[0]), + .I5(do_reg2[4]), + .O(\di_reg[4]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'h400FFFFF40000000)) + \di_reg[4]_i_3__0 + (.I0(rate_reg2[0]), + .I1(rate_reg2[1]), + .I2(index[2]), + .I3(index[0]), + .I4(index[1]), + .I5(do_reg2[4]), + .O(\di_reg[4]_i_3__0_n_0 )); + LUT6 #( + .INIT(64'hBF00BF01FF40FE40)) + \di_reg[4]_i_4__0 + (.I0(index[2]), + .I1(index[1]), + .I2(index[0]), + .I3(do_reg2[4]), + .I4(x16x20_mode_reg2), + .I5(data_pma_rsv_a), + .O(\di_reg[4]_i_4__0_n_0 )); + LUT6 #( + .INIT(64'h7F7F7F7E00000000)) + \di_reg[5]_i_2__0 + (.I0(index[3]), + .I1(index[2]), + .I2(index[1]), + .I3(index[0]), + .I4(x16x20_mode_reg2), + .I5(do_reg2[5]), + .O(\di_reg[5]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'h00000000038F0380)) + \di_reg[5]_i_3__0 + (.I0(do_reg2[5]), + .I1(index[0]), + .I2(index[2]), + .I3(index[1]), + .I4(data_pma_rsv_a), + .I5(index[3]), + .O(\di_reg[5]_i_3__0_n_0 )); + LUT6 #( + .INIT(64'h7D7F7D7E00000000)) + \di_reg[6]_i_2__0 + (.I0(index[3]), + .I1(index[2]), + .I2(index[1]), + .I3(index[0]), + .I4(x16x20_mode_reg2), + .I5(do_reg2[6]), + .O(\di_reg[6]_i_2__0_n_0 )); + LUT5 #( + .INIT(32'h00000380)) + \di_reg[6]_i_3__0 + (.I0(do_reg2[6]), + .I1(index[0]), + .I2(index[2]), + .I3(index[1]), + .I4(index[3]), + .O(\di_reg[6]_i_3__0_n_0 )); + LUT5 #( + .INIT(32'h7FFF0900)) + \di_reg[7]_i_2__0 + (.I0(index[2]), + .I1(index[1]), + .I2(index[0]), + .I3(index[3]), + .I4(do_reg2[7]), + .O(\di_reg[7]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'h0000000003800383)) + \di_reg[7]_i_3__0 + (.I0(do_reg2[7]), + .I1(index[0]), + .I2(index[2]), + .I3(index[1]), + .I4(data_pma_rsv_a), + .I5(index[3]), + .O(\di_reg[7]_i_3__0_n_0 )); + LUT6 #( + .INIT(64'h03333F7300000040)) + \di_reg[8]_i_1__0 + (.I0(index[0]), + .I1(index[4]), + .I2(index[1]), + .I3(index[2]), + .I4(index[3]), + .I5(do_reg2[8]), + .O(di_reg[8])); + LUT6 #( + .INIT(64'h03333F7300000040)) + \di_reg[9]_i_1__0 + (.I0(index[0]), + .I1(index[4]), + .I2(index[1]), + .I3(index[2]), + .I4(index[3]), + .I5(do_reg2[9]), + .O(di_reg[9])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[0]), + .Q(drp_di_16[0]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[0]_i_1__0 + (.I0(\di_reg[0]_i_2__0_n_0 ), + .I1(\di_reg[0]_i_3__0_n_0 ), + .O(di_reg[0]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[10] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[10]), + .Q(drp_di_16[10]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[11] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[11]), + .Q(drp_di_16[11]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[11]_i_1__0 + (.I0(\di_reg[11]_i_2__0_n_0 ), + .I1(\di_reg[11]_i_3__0_n_0 ), + .O(di_reg[11]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[12] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[12]), + .Q(drp_di_16[12]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[12]_i_1__0 + (.I0(\di_reg[12]_i_2__0_n_0 ), + .I1(\di_reg[12]_i_3__0_n_0 ), + .O(di_reg[12]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[13] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[13]), + .Q(drp_di_16[13]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[13]_i_1__0 + (.I0(\di_reg[13]_i_2__0_n_0 ), + .I1(\di_reg[13]_i_3__0_n_0 ), + .O(di_reg[13]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[14] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[14]), + .Q(drp_di_16[14]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[15] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[15]), + .Q(drp_di_16[15]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[1]), + .Q(drp_di_16[1]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[1]_i_1__0 + (.I0(\di_reg[1]_i_2__0_n_0 ), + .I1(\di_reg[1]_i_3__0_n_0 ), + .O(di_reg[1]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[2]), + .Q(drp_di_16[2]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[2]_i_1__0 + (.I0(\di_reg[2]_i_2__0_n_0 ), + .I1(\di_reg[2]_i_3__0_n_0 ), + .O(di_reg[2]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[3] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[3]), + .Q(drp_di_16[3]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[3]_i_1__0 + (.I0(\di_reg[3]_i_2__0_n_0 ), + .I1(\di_reg[3]_i_3__0_n_0 ), + .O(di_reg[3]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[4] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[4]), + .Q(drp_di_16[4]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[5] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[5]), + .Q(drp_di_16[5]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[5]_i_1__0 + (.I0(\di_reg[5]_i_2__0_n_0 ), + .I1(\di_reg[5]_i_3__0_n_0 ), + .O(di_reg[5]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[6] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[6]), + .Q(drp_di_16[6]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[6]_i_1__0 + (.I0(\di_reg[6]_i_2__0_n_0 ), + .I1(\di_reg[6]_i_3__0_n_0 ), + .O(di_reg[6]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[7] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[7]), + .Q(drp_di_16[7]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[7]_i_1__0 + (.I0(\di_reg[7]_i_2__0_n_0 ), + .I1(\di_reg[7]_i_3__0_n_0 ), + .O(di_reg[7]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[8] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[8]), + .Q(drp_di_16[8]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[9] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[9]), + .Q(drp_di_16[9]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[0]), + .Q(do_reg1[0]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[10] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[10]), + .Q(do_reg1[10]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[11] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[11]), + .Q(do_reg1[11]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[12] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[12]), + .Q(do_reg1[12]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[13] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[13]), + .Q(do_reg1[13]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[14] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[14]), + .Q(do_reg1[14]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[15] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[15]), + .Q(do_reg1[15]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[1]), + .Q(do_reg1[1]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[2]), + .Q(do_reg1[2]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[3] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[3]), + .Q(do_reg1[3]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[4] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[4]), + .Q(do_reg1[4]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[5] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[5]), + .Q(do_reg1[5]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[6] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[6]), + .Q(do_reg1[6]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[7] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[7]), + .Q(do_reg1[7]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[8] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[8]), + .Q(do_reg1[8]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[9] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[9]), + .Q(do_reg1[9]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[0]), + .Q(do_reg2[0]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[10] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[10]), + .Q(do_reg2[10]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[11] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[11]), + .Q(do_reg2[11]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[12] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[12]), + .Q(do_reg2[12]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[13] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[13]), + .Q(do_reg2[13]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[14] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[14]), + .Q(do_reg2[14]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[15] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[15]), + .Q(do_reg2[15]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[1]), + .Q(do_reg2[1]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[2]), + .Q(do_reg2[2]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[3] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[3]), + .Q(do_reg2[3]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[4] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[4]), + .Q(do_reg2[4]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[5] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[5]), + .Q(do_reg2[5]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[6] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[6]), + .Q(do_reg2[6]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[7] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[7]), + .Q(do_reg2[7]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[8] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[8]), + .Q(do_reg2[8]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[9] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[9]), + .Q(do_reg2[9]), + .R(RST_DCLK_RESET)); + LUT4 #( + .INIT(16'h0001)) + done_i_1__1 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(start_reg2), + .I3(\fsm_reg_n_0_[1] ), + .O(done_i_1__1_n_0)); + FDRE #( + .INIT(1'b0)) + done_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(done_i_1__1_n_0), + .Q(DRP_DONE), + .R(RST_DCLK_RESET)); + LUT6 #( + .INIT(64'h0737FFFF07370000)) + \fsm[0]_i_1__3 + (.I0(fsm1), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(rdy_reg2), + .I4(\fsm_reg_n_0_[2] ), + .I5(\fsm[0]_i_2__3_n_0 ), + .O(fsm[0])); + LUT5 #( + .INIT(32'h47FF47CC)) + \fsm[0]_i_2__3 + (.I0(rdy_reg2), + .I1(\fsm_reg_n_0_[1] ), + .I2(load_cnt), + .I3(\fsm_reg_n_0_[0] ), + .I4(start_reg2), + .O(\fsm[0]_i_2__3_n_0 )); + LUT5 #( + .INIT(32'h1D501850)) + \fsm[1]_i_1__3 + (.I0(\fsm_reg_n_0_[2] ), + .I1(rdy_reg2), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(load_cnt), + .O(fsm[1])); + LUT4 #( + .INIT(16'h6222)) + \fsm[2]_i_1__1 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(rdy_reg2), + .O(fsm[2])); + FDRE #( + .INIT(1'b0)) + \fsm_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(fsm[0]), + .Q(\fsm_reg_n_0_[0] ), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \fsm_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(fsm[1]), + .Q(\fsm_reg_n_0_[1] ), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \fsm_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(fsm[2]), + .Q(\fsm_reg_n_0_[2] ), + .R(RST_DCLK_RESET)); + (* SOFT_HLUTNM = "soft_lutpair93" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_10__0 + (.I0(drp_di_16[11]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[11])); + (* SOFT_HLUTNM = "soft_lutpair93" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_11__0 + (.I0(drp_di_16[10]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[10])); + (* SOFT_HLUTNM = "soft_lutpair92" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_12__0 + (.I0(drp_di_16[9]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[9])); + (* SOFT_HLUTNM = "soft_lutpair92" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_13__0 + (.I0(drp_di_16[8]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[8])); + (* SOFT_HLUTNM = "soft_lutpair91" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_14__0 + (.I0(drp_di_16[7]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[7])); + (* SOFT_HLUTNM = "soft_lutpair91" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_15__0 + (.I0(drp_di_16[6]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[6])); + (* SOFT_HLUTNM = "soft_lutpair90" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_16__0 + (.I0(drp_di_16[5]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[5])); + (* SOFT_HLUTNM = "soft_lutpair90" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_17__0 + (.I0(drp_di_16[4]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[4])); + (* SOFT_HLUTNM = "soft_lutpair89" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_18__0 + (.I0(drp_di_16[3]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[3])); + (* SOFT_HLUTNM = "soft_lutpair89" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_19__0 + (.I0(drp_di_16[2]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[2])); + (* SOFT_HLUTNM = "soft_lutpair88" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_20__0 + (.I0(drp_di_16[1]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[1])); + (* SOFT_HLUTNM = "soft_lutpair88" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_21__0 + (.I0(drp_di_16[0]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[0])); + (* SOFT_HLUTNM = "soft_lutpair87" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_39__1 + (.I0(drp_addr_9[7]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[7])); + (* SOFT_HLUTNM = "soft_lutpair83" *) + LUT3 #( + .INIT(8'h12)) + \gtx_channel.gtxe2_channel_i_i_3__0 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[2] ), + .O(\fsm_reg[1]_0 )); + (* SOFT_HLUTNM = "soft_lutpair87" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_40__0 + (.I0(drp_addr_9[6]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[6])); + (* SOFT_HLUTNM = "soft_lutpair86" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_41__0 + (.I0(drp_addr_9[5]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[5])); + (* SOFT_HLUTNM = "soft_lutpair86" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_42__0 + (.I0(drp_addr_9[4]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[4])); + (* SOFT_HLUTNM = "soft_lutpair85" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_43__0 + (.I0(drp_addr_9[3]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[3])); + (* SOFT_HLUTNM = "soft_lutpair85" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_44__0 + (.I0(drp_addr_9[2]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[2])); + (* SOFT_HLUTNM = "soft_lutpair84" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_45__0 + (.I0(drp_addr_9[1]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[1])); + (* SOFT_HLUTNM = "soft_lutpair83" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_46__0 + (.I0(drp_addr_9[0]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[0])); + (* SOFT_HLUTNM = "soft_lutpair84" *) + LUT3 #( + .INIT(8'h10)) + \gtx_channel.gtxe2_channel_i_i_4__0 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[2] ), + .O(\fsm_reg[1]_1 )); + (* SOFT_HLUTNM = "soft_lutpair95" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_6__0 + (.I0(drp_di_16[15]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[15])); + (* SOFT_HLUTNM = "soft_lutpair95" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_7__0 + (.I0(drp_di_16[14]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[14])); + (* SOFT_HLUTNM = "soft_lutpair94" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_8__0 + (.I0(drp_di_16[13]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[13])); + (* SOFT_HLUTNM = "soft_lutpair94" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_9__0 + (.I0(drp_di_16[12]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[12])); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gtxreset_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(DRP_GTXRESET), + .Q(gtxreset_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gtxreset_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(gtxreset_reg1), + .Q(gtxreset_reg2), + .R(RST_DCLK_RESET)); + (* SOFT_HLUTNM = "soft_lutpair80" *) + LUT4 #( + .INIT(16'h0100)) + \index[0]_i_1__0 + (.I0(\fsm_reg_n_0_[0] ), + .I1(fsm1), + .I2(index[0]), + .I3(\fsm_reg_n_0_[2] ), + .O(\index[0]_i_1__0_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair80" *) + LUT5 #( + .INIT(32'h00140000)) + \index[1]_i_1__0 + (.I0(\fsm_reg_n_0_[0] ), + .I1(index[1]), + .I2(index[0]), + .I3(fsm1), + .I4(\fsm_reg_n_0_[2] ), + .O(\index[1]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'h0000144400000000)) + \index[2]_i_1__0 + (.I0(\fsm_reg_n_0_[0] ), + .I1(index[2]), + .I2(index[1]), + .I3(index[0]), + .I4(fsm1), + .I5(\fsm_reg_n_0_[2] ), + .O(\index[2]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'h0000144400000000)) + \index[3]_i_1__0 + (.I0(\fsm_reg_n_0_[0] ), + .I1(index[3]), + .I2(index[2]), + .I3(\index[3]_i_2__0_n_0 ), + .I4(fsm1), + .I5(\fsm_reg_n_0_[2] ), + .O(\index[3]_i_1__0_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair96" *) + LUT2 #( + .INIT(4'h8)) + \index[3]_i_2__0 + (.I0(index[1]), + .I1(index[0]), + .O(\index[3]_i_2__0_n_0 )); + LUT3 #( + .INIT(8'hA1)) + \index[4]_i_1__0 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[2] ), + .O(\index[4]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'h0000144400000000)) + \index[4]_i_2__0 + (.I0(\fsm_reg_n_0_[0] ), + .I1(index[4]), + .I2(index[3]), + .I3(\index[4]_i_3__0_n_0 ), + .I4(fsm1), + .I5(\fsm_reg_n_0_[2] ), + .O(\index[4]_i_2__0_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair96" *) + LUT3 #( + .INIT(8'h80)) + \index[4]_i_3__0 + (.I0(index[2]), + .I1(index[0]), + .I2(index[1]), + .O(\index[4]_i_3__0_n_0 )); + LUT6 #( + .INIT(64'h1000000110000000)) + \index[4]_i_4__0 + (.I0(index[3]), + .I1(index[1]), + .I2(index[0]), + .I3(index[4]), + .I4(index[2]), + .I5(x16x20_mode_reg2), + .O(fsm1)); + FDRE #( + .INIT(1'b0)) + \index_reg[0] + (.C(pipe_dclk_in), + .CE(\index[4]_i_1__0_n_0 ), + .D(\index[0]_i_1__0_n_0 ), + .Q(index[0]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \index_reg[1] + (.C(pipe_dclk_in), + .CE(\index[4]_i_1__0_n_0 ), + .D(\index[1]_i_1__0_n_0 ), + .Q(index[1]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \index_reg[2] + (.C(pipe_dclk_in), + .CE(\index[4]_i_1__0_n_0 ), + .D(\index[2]_i_1__0_n_0 ), + .Q(index[2]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \index_reg[3] + (.C(pipe_dclk_in), + .CE(\index[4]_i_1__0_n_0 ), + .D(\index[3]_i_1__0_n_0 ), + .Q(index[3]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \index_reg[4] + (.C(pipe_dclk_in), + .CE(\index[4]_i_1__0_n_0 ), + .D(\index[4]_i_2__0_n_0 ), + .Q(index[4]), + .R(RST_DCLK_RESET)); + LUT3 #( + .INIT(8'h10)) + \load_cnt[0]_i_1__1 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[0] ), + .O(\load_cnt[0]_i_1__1_n_0 )); + FDRE #( + .INIT(1'b0)) + \load_cnt_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\load_cnt[0]_i_1__1_n_0 ), + .Q(load_cnt), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_reg1_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\rate_reg1_reg[0]_0 ), + .Q(rate_reg1[0]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_reg1_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rate_reg1[1]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_reg2_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(rate_reg1[0]), + .Q(rate_reg2[0]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_reg2_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(rate_reg1[1]), + .Q(rate_reg2[1]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rdy_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(DRP_RDY), + .Q(rdy_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rdy_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(rdy_reg1), + .Q(rdy_reg2), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE start_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(RATE_DRP_START), + .Q(start_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE start_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(start_reg1), + .Q(start_reg2), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE x16_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(RATE_DRP_X16), + .Q(x16_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE x16_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(x16_reg1), + .Q(x16_reg2), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE x16x20_mode_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(RATE_DRP_X16X20_MODE), + .Q(x16x20_mode_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE x16x20_mode_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(x16x20_mode_reg1), + .Q(x16x20_mode_reg2), + .R(RST_DCLK_RESET)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pipe_drp" *) +module pcie_7x_0_pcie_7x_0_pipe_drp_44 + (\fsm_reg[1]_0 , + \fsm_reg[1]_1 , + DRPADDR, + DRPDI, + DRP_DONE, + RST_DCLK_RESET, + RATE_DRP_X16X20_MODE, + pipe_dclk_in, + RATE_DRP_START, + DRP_RDY, + \rate_reg1_reg[0]_0 , + RATE_DRP_X16, + D, + DRP_GTXRESET); + output \fsm_reg[1]_0 ; + output \fsm_reg[1]_1 ; + output [7:0]DRPADDR; + output [15:0]DRPDI; + output DRP_DONE; + input RST_DCLK_RESET; + input RATE_DRP_X16X20_MODE; + input pipe_dclk_in; + input RATE_DRP_START; + input DRP_RDY; + input [0:0]\rate_reg1_reg[0]_0 ; + input RATE_DRP_X16; + input [15:0]D; + input DRP_GTXRESET; + + wire [15:0]D; + wire [7:0]DRPADDR; + wire [15:0]DRPDI; + wire DRP_DONE; + wire DRP_GTXRESET; + wire DRP_RDY; + wire RATE_DRP_START; + wire RATE_DRP_X16; + wire RATE_DRP_X16X20_MODE; + wire RST_DCLK_RESET; + wire [7:0]addr_reg; + wire \addr_reg[4]_i_1__1_n_0 ; + wire \addr_reg[6]_i_1__1_n_0 ; + wire [15:15]data_pma_rsv_a; + wire [15:0]di_reg; + wire \di_reg[0]_i_2__1_n_0 ; + wire \di_reg[0]_i_3__1_n_0 ; + wire \di_reg[11]_i_2__1_n_0 ; + wire \di_reg[11]_i_3__1_n_0 ; + wire \di_reg[11]_i_4__1_n_0 ; + wire \di_reg[11]_i_5__1_n_0 ; + wire \di_reg[12]_i_2__1_n_0 ; + wire \di_reg[12]_i_3__1_n_0 ; + wire \di_reg[13]_i_2__1_n_0 ; + wire \di_reg[13]_i_3__1_n_0 ; + wire \di_reg[14]_i_2__1_n_0 ; + wire \di_reg[15]_i_2__1_n_0 ; + wire \di_reg[1]_i_2__1_n_0 ; + wire \di_reg[1]_i_3__1_n_0 ; + wire \di_reg[2]_i_2__1_n_0 ; + wire \di_reg[2]_i_3__1_n_0 ; + wire \di_reg[3]_i_2__1_n_0 ; + wire \di_reg[3]_i_3__1_n_0 ; + wire \di_reg[4]_i_2__1_n_0 ; + wire \di_reg[4]_i_3__1_n_0 ; + wire \di_reg[4]_i_4__1_n_0 ; + wire \di_reg[5]_i_2__1_n_0 ; + wire \di_reg[5]_i_3__1_n_0 ; + wire \di_reg[6]_i_2__1_n_0 ; + wire \di_reg[6]_i_3__1_n_0 ; + wire \di_reg[7]_i_2__1_n_0 ; + wire \di_reg[7]_i_3__1_n_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [15:0]do_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [15:0]do_reg2; + wire done_i_1__2_n_0; + wire [7:0]drp_addr_18; + wire [15:0]drp_di_32; + wire [2:0]fsm; + wire fsm1; + wire \fsm[0]_i_2__5_n_0 ; + wire \fsm_reg[1]_0 ; + wire \fsm_reg[1]_1 ; + wire \fsm_reg_n_0_[0] ; + wire \fsm_reg_n_0_[1] ; + wire \fsm_reg_n_0_[2] ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gtxreset_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gtxreset_reg2; + wire [4:0]index; + wire \index[0]_i_1__1_n_0 ; + wire \index[1]_i_1__1_n_0 ; + wire \index[2]_i_1__1_n_0 ; + wire \index[3]_i_1__1_n_0 ; + wire \index[3]_i_2__1_n_0 ; + wire \index[4]_i_1__1_n_0 ; + wire \index[4]_i_2__1_n_0 ; + wire \index[4]_i_3__1_n_0 ; + wire [0:0]load_cnt; + wire \load_cnt[0]_i_1__2_n_0 ; + wire pipe_dclk_in; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rate_reg1; + wire [0:0]\rate_reg1_reg[0]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rate_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rdy_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rdy_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire start_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire start_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire x16_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire x16_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire x16x20_mode_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire x16x20_mode_reg2; + + LUT6 #( + .INIT(64'h1736415517364154)) + \addr_reg[0]_i_1__1 + (.I0(index[4]), + .I1(index[3]), + .I2(index[2]), + .I3(index[1]), + .I4(index[0]), + .I5(x16x20_mode_reg2), + .O(addr_reg[0])); + (* SOFT_HLUTNM = "soft_lutpair124" *) + LUT5 #( + .INIT(32'h40500F00)) + \addr_reg[1]_i_1__1 + (.I0(index[4]), + .I1(index[0]), + .I2(index[3]), + .I3(index[1]), + .I4(index[2]), + .O(addr_reg[1])); + (* SOFT_HLUTNM = "soft_lutpair124" *) + LUT5 #( + .INIT(32'h05105A00)) + \addr_reg[2]_i_1__1 + (.I0(index[4]), + .I1(index[0]), + .I2(index[3]), + .I3(index[2]), + .I4(index[1]), + .O(addr_reg[2])); + LUT6 #( + .INIT(64'h5767576753265327)) + \addr_reg[3]_i_1__1 + (.I0(index[4]), + .I1(index[3]), + .I2(index[2]), + .I3(index[1]), + .I4(x16x20_mode_reg2), + .I5(index[0]), + .O(addr_reg[3])); + LUT6 #( + .INIT(64'h00000000FAAFFF04)) + \addr_reg[4]_i_1__1 + (.I0(index[0]), + .I1(x16x20_mode_reg2), + .I2(index[1]), + .I3(index[2]), + .I4(index[3]), + .I5(index[4]), + .O(\addr_reg[4]_i_1__1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair123" *) + LUT5 #( + .INIT(32'h001A0F0A)) + \addr_reg[5]_i_1__1 + (.I0(index[4]), + .I1(index[0]), + .I2(index[3]), + .I3(index[1]), + .I4(index[2]), + .O(addr_reg[5])); + (* SOFT_HLUTNM = "soft_lutpair123" *) + LUT5 #( + .INIT(32'h00001454)) + \addr_reg[6]_i_1__1 + (.I0(index[2]), + .I1(index[1]), + .I2(index[3]), + .I3(index[0]), + .I4(index[4]), + .O(\addr_reg[6]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'h5252424223236263)) + \addr_reg[7]_i_1__1 + (.I0(index[4]), + .I1(index[3]), + .I2(index[2]), + .I3(x16x20_mode_reg2), + .I4(index[0]), + .I5(index[1]), + .O(addr_reg[7])); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(addr_reg[0]), + .Q(drp_addr_18[0]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(addr_reg[1]), + .Q(drp_addr_18[1]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(addr_reg[2]), + .Q(drp_addr_18[2]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[3] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(addr_reg[3]), + .Q(drp_addr_18[3]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[4] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\addr_reg[4]_i_1__1_n_0 ), + .Q(drp_addr_18[4]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[5] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(addr_reg[5]), + .Q(drp_addr_18[5]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[6] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\addr_reg[6]_i_1__1_n_0 ), + .Q(drp_addr_18[6]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[7] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(addr_reg[7]), + .Q(drp_addr_18[7]), + .R(RST_DCLK_RESET)); + LUT6 #( + .INIT(64'hFF5E7F6FA1001000)) + \di_reg[0]_i_2__1 + (.I0(index[3]), + .I1(index[2]), + .I2(index[1]), + .I3(data_pma_rsv_a), + .I4(index[0]), + .I5(do_reg2[0]), + .O(\di_reg[0]_i_2__1_n_0 )); + LUT5 #( + .INIT(32'h000005D0)) + \di_reg[0]_i_3__1 + (.I0(index[0]), + .I1(do_reg2[0]), + .I2(index[2]), + .I3(index[1]), + .I4(index[3]), + .O(\di_reg[0]_i_3__1_n_0 )); + LUT6 #( + .INIT(64'h45555F5540000000)) + \di_reg[10]_i_1__1 + (.I0(index[4]), + .I1(\di_reg[15]_i_2__1_n_0 ), + .I2(index[1]), + .I3(index[2]), + .I4(index[3]), + .I5(do_reg2[10]), + .O(di_reg[10])); + LUT6 #( + .INIT(64'h4F40DDDD4F408888)) + \di_reg[11]_i_2__1 + (.I0(index[3]), + .I1(do_reg2[11]), + .I2(index[1]), + .I3(\di_reg[11]_i_4__1_n_0 ), + .I4(index[2]), + .I5(\di_reg[11]_i_5__1_n_0 ), + .O(\di_reg[11]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'h0000000008080838)) + \di_reg[11]_i_3__1 + (.I0(do_reg2[11]), + .I1(index[2]), + .I2(index[1]), + .I3(data_pma_rsv_a), + .I4(index[0]), + .I5(index[3]), + .O(\di_reg[11]_i_3__1_n_0 )); + LUT4 #( + .INIT(16'hB8BB)) + \di_reg[11]_i_4__1 + (.I0(do_reg2[11]), + .I1(index[0]), + .I2(rate_reg2[0]), + .I3(rate_reg2[1]), + .O(\di_reg[11]_i_4__1_n_0 )); + LUT5 #( + .INIT(32'hEFFF0100)) + \di_reg[11]_i_5__1 + (.I0(index[1]), + .I1(index[0]), + .I2(x16_reg2), + .I3(x16x20_mode_reg2), + .I4(do_reg2[11]), + .O(\di_reg[11]_i_5__1_n_0 )); + LUT6 #( + .INIT(64'h777EFFFF01080000)) + \di_reg[12]_i_2__1 + (.I0(index[3]), + .I1(index[1]), + .I2(index[0]), + .I3(data_pma_rsv_a), + .I4(index[2]), + .I5(do_reg2[12]), + .O(\di_reg[12]_i_2__1_n_0 )); + LUT5 #( + .INIT(32'h00000B08)) + \di_reg[12]_i_3__1 + (.I0(do_reg2[12]), + .I1(index[2]), + .I2(index[1]), + .I3(index[0]), + .I4(index[3]), + .O(\di_reg[12]_i_3__1_n_0 )); + LUT6 #( + .INIT(64'h767FFFFF00090000)) + \di_reg[13]_i_2__1 + (.I0(index[3]), + .I1(index[1]), + .I2(index[0]), + .I3(data_pma_rsv_a), + .I4(index[2]), + .I5(do_reg2[13]), + .O(\di_reg[13]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'h0000000008380808)) + \di_reg[13]_i_3__1 + (.I0(do_reg2[13]), + .I1(index[2]), + .I2(index[1]), + .I3(index[0]), + .I4(data_pma_rsv_a), + .I5(index[3]), + .O(\di_reg[13]_i_3__1_n_0 )); + LUT6 #( + .INIT(64'h0040FFFF00400000)) + \di_reg[14]_i_1__1 + (.I0(index[1]), + .I1(index[2]), + .I2(do_reg2[14]), + .I3(index[3]), + .I4(index[4]), + .I5(\di_reg[14]_i_2__1_n_0 ), + .O(di_reg[14])); + LUT6 #( + .INIT(64'h653BFFF721080080)) + \di_reg[14]_i_2__1 + (.I0(index[3]), + .I1(index[1]), + .I2(data_pma_rsv_a), + .I3(index[0]), + .I4(index[2]), + .I5(do_reg2[14]), + .O(\di_reg[14]_i_2__1_n_0 )); + LUT2 #( + .INIT(4'hB)) + \di_reg[14]_i_3__0 + (.I0(rate_reg2[0]), + .I1(rate_reg2[1]), + .O(data_pma_rsv_a)); + LUT6 #( + .INIT(64'h45555F5540000000)) + \di_reg[15]_i_1__1 + (.I0(index[4]), + .I1(\di_reg[15]_i_2__1_n_0 ), + .I2(index[1]), + .I3(index[2]), + .I4(index[3]), + .I5(do_reg2[15]), + .O(di_reg[15])); + LUT3 #( + .INIT(8'h0D)) + \di_reg[15]_i_2__1 + (.I0(rate_reg2[1]), + .I1(rate_reg2[0]), + .I2(index[0]), + .O(\di_reg[15]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'h5FEE4E0076FF1000)) + \di_reg[1]_i_2__1 + (.I0(index[3]), + .I1(index[2]), + .I2(data_pma_rsv_a), + .I3(index[1]), + .I4(do_reg2[1]), + .I5(index[0]), + .O(\di_reg[1]_i_2__1_n_0 )); + LUT5 #( + .INIT(32'h000005D0)) + \di_reg[1]_i_3__1 + (.I0(index[0]), + .I1(do_reg2[1]), + .I2(index[2]), + .I3(index[1]), + .I4(index[3]), + .O(\di_reg[1]_i_3__1_n_0 )); + LUT6 #( + .INIT(64'h5DEE080067FF0100)) + \di_reg[2]_i_2__1 + (.I0(index[3]), + .I1(index[2]), + .I2(data_pma_rsv_a), + .I3(index[1]), + .I4(do_reg2[2]), + .I5(index[0]), + .O(\di_reg[2]_i_2__1_n_0 )); + LUT5 #( + .INIT(32'h00000380)) + \di_reg[2]_i_3__1 + (.I0(do_reg2[2]), + .I1(index[0]), + .I2(index[2]), + .I3(index[1]), + .I4(index[3]), + .O(\di_reg[2]_i_3__1_n_0 )); + LUT6 #( + .INIT(64'h43FFFFFF40000000)) + \di_reg[3]_i_2__1 + (.I0(data_pma_rsv_a), + .I1(index[2]), + .I2(index[0]), + .I3(index[1]), + .I4(index[3]), + .I5(do_reg2[3]), + .O(\di_reg[3]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'h000000000033D100)) + \di_reg[3]_i_3__1 + (.I0(data_pma_rsv_a), + .I1(index[0]), + .I2(do_reg2[3]), + .I3(index[2]), + .I4(index[1]), + .I5(index[3]), + .O(\di_reg[3]_i_3__1_n_0 )); + LUT5 #( + .INIT(32'h30BB3088)) + \di_reg[4]_i_1__1 + (.I0(\di_reg[4]_i_2__1_n_0 ), + .I1(index[4]), + .I2(\di_reg[4]_i_3__1_n_0 ), + .I3(index[3]), + .I4(\di_reg[4]_i_4__1_n_0 ), + .O(di_reg[4])); + LUT6 #( + .INIT(64'h0F0400F0000400F0)) + \di_reg[4]_i_2__1 + (.I0(rate_reg2[0]), + .I1(rate_reg2[1]), + .I2(index[1]), + .I3(index[2]), + .I4(index[0]), + .I5(do_reg2[4]), + .O(\di_reg[4]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'h400FFFFF40000000)) + \di_reg[4]_i_3__1 + (.I0(rate_reg2[0]), + .I1(rate_reg2[1]), + .I2(index[2]), + .I3(index[0]), + .I4(index[1]), + .I5(do_reg2[4]), + .O(\di_reg[4]_i_3__1_n_0 )); + LUT6 #( + .INIT(64'hBF00BF01FF40FE40)) + \di_reg[4]_i_4__1 + (.I0(index[2]), + .I1(index[1]), + .I2(index[0]), + .I3(do_reg2[4]), + .I4(x16x20_mode_reg2), + .I5(data_pma_rsv_a), + .O(\di_reg[4]_i_4__1_n_0 )); + LUT6 #( + .INIT(64'h7F7F7F7E00000000)) + \di_reg[5]_i_2__1 + (.I0(index[3]), + .I1(index[2]), + .I2(index[1]), + .I3(index[0]), + .I4(x16x20_mode_reg2), + .I5(do_reg2[5]), + .O(\di_reg[5]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'h00000000038F0380)) + \di_reg[5]_i_3__1 + (.I0(do_reg2[5]), + .I1(index[0]), + .I2(index[2]), + .I3(index[1]), + .I4(data_pma_rsv_a), + .I5(index[3]), + .O(\di_reg[5]_i_3__1_n_0 )); + LUT6 #( + .INIT(64'h7D7F7D7E00000000)) + \di_reg[6]_i_2__1 + (.I0(index[3]), + .I1(index[2]), + .I2(index[1]), + .I3(index[0]), + .I4(x16x20_mode_reg2), + .I5(do_reg2[6]), + .O(\di_reg[6]_i_2__1_n_0 )); + LUT5 #( + .INIT(32'h00000380)) + \di_reg[6]_i_3__1 + (.I0(do_reg2[6]), + .I1(index[0]), + .I2(index[2]), + .I3(index[1]), + .I4(index[3]), + .O(\di_reg[6]_i_3__1_n_0 )); + LUT5 #( + .INIT(32'h7FFF0900)) + \di_reg[7]_i_2__1 + (.I0(index[2]), + .I1(index[1]), + .I2(index[0]), + .I3(index[3]), + .I4(do_reg2[7]), + .O(\di_reg[7]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'h0000000003800383)) + \di_reg[7]_i_3__1 + (.I0(do_reg2[7]), + .I1(index[0]), + .I2(index[2]), + .I3(index[1]), + .I4(data_pma_rsv_a), + .I5(index[3]), + .O(\di_reg[7]_i_3__1_n_0 )); + LUT6 #( + .INIT(64'h03333F7300000040)) + \di_reg[8]_i_1__1 + (.I0(index[0]), + .I1(index[4]), + .I2(index[1]), + .I3(index[2]), + .I4(index[3]), + .I5(do_reg2[8]), + .O(di_reg[8])); + LUT6 #( + .INIT(64'h03333F7300000040)) + \di_reg[9]_i_1__1 + (.I0(index[0]), + .I1(index[4]), + .I2(index[1]), + .I3(index[2]), + .I4(index[3]), + .I5(do_reg2[9]), + .O(di_reg[9])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[0]), + .Q(drp_di_32[0]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[0]_i_1__1 + (.I0(\di_reg[0]_i_2__1_n_0 ), + .I1(\di_reg[0]_i_3__1_n_0 ), + .O(di_reg[0]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[10] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[10]), + .Q(drp_di_32[10]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[11] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[11]), + .Q(drp_di_32[11]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[11]_i_1__1 + (.I0(\di_reg[11]_i_2__1_n_0 ), + .I1(\di_reg[11]_i_3__1_n_0 ), + .O(di_reg[11]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[12] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[12]), + .Q(drp_di_32[12]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[12]_i_1__1 + (.I0(\di_reg[12]_i_2__1_n_0 ), + .I1(\di_reg[12]_i_3__1_n_0 ), + .O(di_reg[12]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[13] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[13]), + .Q(drp_di_32[13]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[13]_i_1__1 + (.I0(\di_reg[13]_i_2__1_n_0 ), + .I1(\di_reg[13]_i_3__1_n_0 ), + .O(di_reg[13]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[14] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[14]), + .Q(drp_di_32[14]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[15] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[15]), + .Q(drp_di_32[15]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[1]), + .Q(drp_di_32[1]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[1]_i_1__1 + (.I0(\di_reg[1]_i_2__1_n_0 ), + .I1(\di_reg[1]_i_3__1_n_0 ), + .O(di_reg[1]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[2]), + .Q(drp_di_32[2]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[2]_i_1__1 + (.I0(\di_reg[2]_i_2__1_n_0 ), + .I1(\di_reg[2]_i_3__1_n_0 ), + .O(di_reg[2]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[3] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[3]), + .Q(drp_di_32[3]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[3]_i_1__1 + (.I0(\di_reg[3]_i_2__1_n_0 ), + .I1(\di_reg[3]_i_3__1_n_0 ), + .O(di_reg[3]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[4] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[4]), + .Q(drp_di_32[4]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[5] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[5]), + .Q(drp_di_32[5]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[5]_i_1__1 + (.I0(\di_reg[5]_i_2__1_n_0 ), + .I1(\di_reg[5]_i_3__1_n_0 ), + .O(di_reg[5]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[6] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[6]), + .Q(drp_di_32[6]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[6]_i_1__1 + (.I0(\di_reg[6]_i_2__1_n_0 ), + .I1(\di_reg[6]_i_3__1_n_0 ), + .O(di_reg[6]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[7] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[7]), + .Q(drp_di_32[7]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[7]_i_1__1 + (.I0(\di_reg[7]_i_2__1_n_0 ), + .I1(\di_reg[7]_i_3__1_n_0 ), + .O(di_reg[7]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[8] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[8]), + .Q(drp_di_32[8]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[9] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[9]), + .Q(drp_di_32[9]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[0]), + .Q(do_reg1[0]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[10] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[10]), + .Q(do_reg1[10]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[11] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[11]), + .Q(do_reg1[11]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[12] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[12]), + .Q(do_reg1[12]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[13] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[13]), + .Q(do_reg1[13]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[14] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[14]), + .Q(do_reg1[14]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[15] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[15]), + .Q(do_reg1[15]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[1]), + .Q(do_reg1[1]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[2]), + .Q(do_reg1[2]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[3] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[3]), + .Q(do_reg1[3]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[4] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[4]), + .Q(do_reg1[4]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[5] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[5]), + .Q(do_reg1[5]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[6] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[6]), + .Q(do_reg1[6]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[7] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[7]), + .Q(do_reg1[7]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[8] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[8]), + .Q(do_reg1[8]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[9] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[9]), + .Q(do_reg1[9]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[0]), + .Q(do_reg2[0]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[10] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[10]), + .Q(do_reg2[10]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[11] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[11]), + .Q(do_reg2[11]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[12] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[12]), + .Q(do_reg2[12]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[13] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[13]), + .Q(do_reg2[13]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[14] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[14]), + .Q(do_reg2[14]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[15] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[15]), + .Q(do_reg2[15]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[1]), + .Q(do_reg2[1]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[2]), + .Q(do_reg2[2]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[3] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[3]), + .Q(do_reg2[3]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[4] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[4]), + .Q(do_reg2[4]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[5] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[5]), + .Q(do_reg2[5]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[6] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[6]), + .Q(do_reg2[6]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[7] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[7]), + .Q(do_reg2[7]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[8] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[8]), + .Q(do_reg2[8]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[9] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[9]), + .Q(do_reg2[9]), + .R(RST_DCLK_RESET)); + LUT4 #( + .INIT(16'h0001)) + done_i_1__2 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(start_reg2), + .I3(\fsm_reg_n_0_[1] ), + .O(done_i_1__2_n_0)); + FDRE #( + .INIT(1'b0)) + done_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(done_i_1__2_n_0), + .Q(DRP_DONE), + .R(RST_DCLK_RESET)); + LUT6 #( + .INIT(64'h0737FFFF07370000)) + \fsm[0]_i_1__5 + (.I0(fsm1), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(rdy_reg2), + .I4(\fsm_reg_n_0_[2] ), + .I5(\fsm[0]_i_2__5_n_0 ), + .O(fsm[0])); + LUT5 #( + .INIT(32'h47FF47CC)) + \fsm[0]_i_2__5 + (.I0(rdy_reg2), + .I1(\fsm_reg_n_0_[1] ), + .I2(load_cnt), + .I3(\fsm_reg_n_0_[0] ), + .I4(start_reg2), + .O(\fsm[0]_i_2__5_n_0 )); + LUT5 #( + .INIT(32'h1D501850)) + \fsm[1]_i_1__5 + (.I0(\fsm_reg_n_0_[2] ), + .I1(rdy_reg2), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(load_cnt), + .O(fsm[1])); + LUT4 #( + .INIT(16'h6222)) + \fsm[2]_i_1__2 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(rdy_reg2), + .O(fsm[2])); + FDRE #( + .INIT(1'b0)) + \fsm_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(fsm[0]), + .Q(\fsm_reg_n_0_[0] ), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \fsm_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(fsm[1]), + .Q(\fsm_reg_n_0_[1] ), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \fsm_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(fsm[2]), + .Q(\fsm_reg_n_0_[2] ), + .R(RST_DCLK_RESET)); + (* SOFT_HLUTNM = "soft_lutpair135" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_10__1 + (.I0(drp_di_32[11]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[11])); + (* SOFT_HLUTNM = "soft_lutpair135" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_11__1 + (.I0(drp_di_32[10]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[10])); + (* SOFT_HLUTNM = "soft_lutpair134" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_12__1 + (.I0(drp_di_32[9]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[9])); + (* SOFT_HLUTNM = "soft_lutpair134" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_13__1 + (.I0(drp_di_32[8]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[8])); + (* SOFT_HLUTNM = "soft_lutpair133" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_14__1 + (.I0(drp_di_32[7]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[7])); + (* SOFT_HLUTNM = "soft_lutpair133" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_15__1 + (.I0(drp_di_32[6]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[6])); + (* SOFT_HLUTNM = "soft_lutpair132" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_16__1 + (.I0(drp_di_32[5]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[5])); + (* SOFT_HLUTNM = "soft_lutpair132" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_17__1 + (.I0(drp_di_32[4]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[4])); + (* SOFT_HLUTNM = "soft_lutpair131" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_18__1 + (.I0(drp_di_32[3]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[3])); + (* SOFT_HLUTNM = "soft_lutpair131" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_19__1 + (.I0(drp_di_32[2]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[2])); + (* SOFT_HLUTNM = "soft_lutpair130" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_20__1 + (.I0(drp_di_32[1]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[1])); + (* SOFT_HLUTNM = "soft_lutpair130" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_21__1 + (.I0(drp_di_32[0]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[0])); + (* SOFT_HLUTNM = "soft_lutpair129" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_39__2 + (.I0(drp_addr_18[7]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[7])); + (* SOFT_HLUTNM = "soft_lutpair125" *) + LUT3 #( + .INIT(8'h12)) + \gtx_channel.gtxe2_channel_i_i_3__1 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[2] ), + .O(\fsm_reg[1]_0 )); + (* SOFT_HLUTNM = "soft_lutpair129" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_40__1 + (.I0(drp_addr_18[6]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[6])); + (* SOFT_HLUTNM = "soft_lutpair128" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_41__1 + (.I0(drp_addr_18[5]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[5])); + (* SOFT_HLUTNM = "soft_lutpair128" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_42__1 + (.I0(drp_addr_18[4]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[4])); + (* SOFT_HLUTNM = "soft_lutpair127" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_43__1 + (.I0(drp_addr_18[3]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[3])); + (* SOFT_HLUTNM = "soft_lutpair127" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_44__1 + (.I0(drp_addr_18[2]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[2])); + (* SOFT_HLUTNM = "soft_lutpair126" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_45__1 + (.I0(drp_addr_18[1]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[1])); + (* SOFT_HLUTNM = "soft_lutpair125" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_46__1 + (.I0(drp_addr_18[0]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[0])); + (* SOFT_HLUTNM = "soft_lutpair126" *) + LUT3 #( + .INIT(8'h10)) + \gtx_channel.gtxe2_channel_i_i_4__1 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[2] ), + .O(\fsm_reg[1]_1 )); + (* SOFT_HLUTNM = "soft_lutpair137" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_6__1 + (.I0(drp_di_32[15]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[15])); + (* SOFT_HLUTNM = "soft_lutpair137" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_7__1 + (.I0(drp_di_32[14]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[14])); + (* SOFT_HLUTNM = "soft_lutpair136" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_8__1 + (.I0(drp_di_32[13]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[13])); + (* SOFT_HLUTNM = "soft_lutpair136" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_9__1 + (.I0(drp_di_32[12]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[12])); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gtxreset_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(DRP_GTXRESET), + .Q(gtxreset_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gtxreset_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(gtxreset_reg1), + .Q(gtxreset_reg2), + .R(RST_DCLK_RESET)); + (* SOFT_HLUTNM = "soft_lutpair122" *) + LUT4 #( + .INIT(16'h0100)) + \index[0]_i_1__1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(fsm1), + .I2(index[0]), + .I3(\fsm_reg_n_0_[2] ), + .O(\index[0]_i_1__1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair122" *) + LUT5 #( + .INIT(32'h00140000)) + \index[1]_i_1__1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(index[1]), + .I2(index[0]), + .I3(fsm1), + .I4(\fsm_reg_n_0_[2] ), + .O(\index[1]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'h0000144400000000)) + \index[2]_i_1__1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(index[2]), + .I2(index[1]), + .I3(index[0]), + .I4(fsm1), + .I5(\fsm_reg_n_0_[2] ), + .O(\index[2]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'h0000144400000000)) + \index[3]_i_1__1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(index[3]), + .I2(index[2]), + .I3(\index[3]_i_2__1_n_0 ), + .I4(fsm1), + .I5(\fsm_reg_n_0_[2] ), + .O(\index[3]_i_1__1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair138" *) + LUT2 #( + .INIT(4'h8)) + \index[3]_i_2__1 + (.I0(index[1]), + .I1(index[0]), + .O(\index[3]_i_2__1_n_0 )); + LUT3 #( + .INIT(8'hA1)) + \index[4]_i_1__1 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[2] ), + .O(\index[4]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'h0000144400000000)) + \index[4]_i_2__1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(index[4]), + .I2(index[3]), + .I3(\index[4]_i_3__1_n_0 ), + .I4(fsm1), + .I5(\fsm_reg_n_0_[2] ), + .O(\index[4]_i_2__1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair138" *) + LUT3 #( + .INIT(8'h80)) + \index[4]_i_3__1 + (.I0(index[2]), + .I1(index[0]), + .I2(index[1]), + .O(\index[4]_i_3__1_n_0 )); + LUT6 #( + .INIT(64'h1000000110000000)) + \index[4]_i_4__1 + (.I0(index[3]), + .I1(index[1]), + .I2(index[0]), + .I3(index[4]), + .I4(index[2]), + .I5(x16x20_mode_reg2), + .O(fsm1)); + FDRE #( + .INIT(1'b0)) + \index_reg[0] + (.C(pipe_dclk_in), + .CE(\index[4]_i_1__1_n_0 ), + .D(\index[0]_i_1__1_n_0 ), + .Q(index[0]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \index_reg[1] + (.C(pipe_dclk_in), + .CE(\index[4]_i_1__1_n_0 ), + .D(\index[1]_i_1__1_n_0 ), + .Q(index[1]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \index_reg[2] + (.C(pipe_dclk_in), + .CE(\index[4]_i_1__1_n_0 ), + .D(\index[2]_i_1__1_n_0 ), + .Q(index[2]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \index_reg[3] + (.C(pipe_dclk_in), + .CE(\index[4]_i_1__1_n_0 ), + .D(\index[3]_i_1__1_n_0 ), + .Q(index[3]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \index_reg[4] + (.C(pipe_dclk_in), + .CE(\index[4]_i_1__1_n_0 ), + .D(\index[4]_i_2__1_n_0 ), + .Q(index[4]), + .R(RST_DCLK_RESET)); + LUT3 #( + .INIT(8'h10)) + \load_cnt[0]_i_1__2 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[0] ), + .O(\load_cnt[0]_i_1__2_n_0 )); + FDRE #( + .INIT(1'b0)) + \load_cnt_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\load_cnt[0]_i_1__2_n_0 ), + .Q(load_cnt), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_reg1_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\rate_reg1_reg[0]_0 ), + .Q(rate_reg1[0]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_reg1_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rate_reg1[1]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_reg2_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(rate_reg1[0]), + .Q(rate_reg2[0]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_reg2_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(rate_reg1[1]), + .Q(rate_reg2[1]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rdy_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(DRP_RDY), + .Q(rdy_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rdy_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(rdy_reg1), + .Q(rdy_reg2), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE start_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(RATE_DRP_START), + .Q(start_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE start_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(start_reg1), + .Q(start_reg2), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE x16_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(RATE_DRP_X16), + .Q(x16_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE x16_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(x16_reg1), + .Q(x16_reg2), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE x16x20_mode_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(RATE_DRP_X16X20_MODE), + .Q(x16x20_mode_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE x16x20_mode_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(x16x20_mode_reg1), + .Q(x16x20_mode_reg2), + .R(RST_DCLK_RESET)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pipe_drp" *) +module pcie_7x_0_pcie_7x_0_pipe_drp_50 + (\fsm_reg[1]_0 , + \fsm_reg[1]_1 , + DRPADDR, + DRPDI, + DRP_DONE, + RST_DCLK_RESET, + RATE_DRP_X16X20_MODE, + pipe_dclk_in, + RATE_DRP_START, + DRP_RDY, + \rate_reg1_reg[0]_0 , + RATE_DRP_X16, + D, + DRP_GTXRESET); + output \fsm_reg[1]_0 ; + output \fsm_reg[1]_1 ; + output [7:0]DRPADDR; + output [15:0]DRPDI; + output DRP_DONE; + input RST_DCLK_RESET; + input RATE_DRP_X16X20_MODE; + input pipe_dclk_in; + input RATE_DRP_START; + input DRP_RDY; + input [0:0]\rate_reg1_reg[0]_0 ; + input RATE_DRP_X16; + input [15:0]D; + input DRP_GTXRESET; + + wire [15:0]D; + wire [7:0]DRPADDR; + wire [15:0]DRPDI; + wire DRP_DONE; + wire DRP_GTXRESET; + wire DRP_RDY; + wire RATE_DRP_START; + wire RATE_DRP_X16; + wire RATE_DRP_X16X20_MODE; + wire RST_DCLK_RESET; + wire [7:0]addr_reg; + wire \addr_reg[4]_i_1__2_n_0 ; + wire \addr_reg[6]_i_1__2_n_0 ; + wire [15:15]data_pma_rsv_a; + wire [15:0]di_reg; + wire \di_reg[0]_i_2__2_n_0 ; + wire \di_reg[0]_i_3__2_n_0 ; + wire \di_reg[11]_i_2__2_n_0 ; + wire \di_reg[11]_i_3__2_n_0 ; + wire \di_reg[11]_i_4__2_n_0 ; + wire \di_reg[11]_i_5__2_n_0 ; + wire \di_reg[12]_i_2__2_n_0 ; + wire \di_reg[12]_i_3__2_n_0 ; + wire \di_reg[13]_i_2__2_n_0 ; + wire \di_reg[13]_i_3__2_n_0 ; + wire \di_reg[14]_i_2__2_n_0 ; + wire \di_reg[15]_i_2__2_n_0 ; + wire \di_reg[1]_i_2__2_n_0 ; + wire \di_reg[1]_i_3__2_n_0 ; + wire \di_reg[2]_i_2__2_n_0 ; + wire \di_reg[2]_i_3__2_n_0 ; + wire \di_reg[3]_i_2__2_n_0 ; + wire \di_reg[3]_i_3__2_n_0 ; + wire \di_reg[4]_i_2__2_n_0 ; + wire \di_reg[4]_i_3__2_n_0 ; + wire \di_reg[4]_i_4__2_n_0 ; + wire \di_reg[5]_i_2__2_n_0 ; + wire \di_reg[5]_i_3__2_n_0 ; + wire \di_reg[6]_i_2__2_n_0 ; + wire \di_reg[6]_i_3__2_n_0 ; + wire \di_reg[7]_i_2__2_n_0 ; + wire \di_reg[7]_i_3__2_n_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [15:0]do_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [15:0]do_reg2; + wire done_i_1__3_n_0; + wire [7:0]drp_addr_27; + wire [15:0]drp_di_48; + wire [2:0]fsm; + wire fsm1; + wire \fsm[0]_i_2__7_n_0 ; + wire \fsm_reg[1]_0 ; + wire \fsm_reg[1]_1 ; + wire \fsm_reg_n_0_[0] ; + wire \fsm_reg_n_0_[1] ; + wire \fsm_reg_n_0_[2] ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gtxreset_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gtxreset_reg2; + wire [4:0]index; + wire \index[0]_i_1__2_n_0 ; + wire \index[1]_i_1__2_n_0 ; + wire \index[2]_i_1__2_n_0 ; + wire \index[3]_i_1__2_n_0 ; + wire \index[3]_i_2__2_n_0 ; + wire \index[4]_i_1__2_n_0 ; + wire \index[4]_i_2__2_n_0 ; + wire \index[4]_i_3__2_n_0 ; + wire [0:0]load_cnt; + wire \load_cnt[0]_i_1__3_n_0 ; + wire pipe_dclk_in; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rate_reg1; + wire [0:0]\rate_reg1_reg[0]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rate_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rdy_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rdy_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire start_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire start_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire x16_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire x16_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire x16x20_mode_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire x16x20_mode_reg2; + + LUT6 #( + .INIT(64'h1736415517364154)) + \addr_reg[0]_i_1__2 + (.I0(index[4]), + .I1(index[3]), + .I2(index[2]), + .I3(index[1]), + .I4(index[0]), + .I5(x16x20_mode_reg2), + .O(addr_reg[0])); + (* SOFT_HLUTNM = "soft_lutpair165" *) + LUT5 #( + .INIT(32'h40500F00)) + \addr_reg[1]_i_1__2 + (.I0(index[4]), + .I1(index[0]), + .I2(index[3]), + .I3(index[1]), + .I4(index[2]), + .O(addr_reg[1])); + (* SOFT_HLUTNM = "soft_lutpair165" *) + LUT5 #( + .INIT(32'h05105A00)) + \addr_reg[2]_i_1__2 + (.I0(index[4]), + .I1(index[0]), + .I2(index[3]), + .I3(index[2]), + .I4(index[1]), + .O(addr_reg[2])); + LUT6 #( + .INIT(64'h5767576753265327)) + \addr_reg[3]_i_1__2 + (.I0(index[4]), + .I1(index[3]), + .I2(index[2]), + .I3(index[1]), + .I4(x16x20_mode_reg2), + .I5(index[0]), + .O(addr_reg[3])); + LUT6 #( + .INIT(64'h00000000FAAFFF04)) + \addr_reg[4]_i_1__2 + (.I0(index[0]), + .I1(x16x20_mode_reg2), + .I2(index[1]), + .I3(index[2]), + .I4(index[3]), + .I5(index[4]), + .O(\addr_reg[4]_i_1__2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair164" *) + LUT5 #( + .INIT(32'h001A0F0A)) + \addr_reg[5]_i_1__2 + (.I0(index[4]), + .I1(index[0]), + .I2(index[3]), + .I3(index[1]), + .I4(index[2]), + .O(addr_reg[5])); + (* SOFT_HLUTNM = "soft_lutpair164" *) + LUT5 #( + .INIT(32'h00001454)) + \addr_reg[6]_i_1__2 + (.I0(index[2]), + .I1(index[1]), + .I2(index[3]), + .I3(index[0]), + .I4(index[4]), + .O(\addr_reg[6]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'h5252424223236263)) + \addr_reg[7]_i_1__2 + (.I0(index[4]), + .I1(index[3]), + .I2(index[2]), + .I3(x16x20_mode_reg2), + .I4(index[0]), + .I5(index[1]), + .O(addr_reg[7])); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(addr_reg[0]), + .Q(drp_addr_27[0]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(addr_reg[1]), + .Q(drp_addr_27[1]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(addr_reg[2]), + .Q(drp_addr_27[2]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[3] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(addr_reg[3]), + .Q(drp_addr_27[3]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[4] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\addr_reg[4]_i_1__2_n_0 ), + .Q(drp_addr_27[4]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[5] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(addr_reg[5]), + .Q(drp_addr_27[5]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[6] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\addr_reg[6]_i_1__2_n_0 ), + .Q(drp_addr_27[6]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg_reg[7] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(addr_reg[7]), + .Q(drp_addr_27[7]), + .R(RST_DCLK_RESET)); + LUT6 #( + .INIT(64'hFF5E7F6FA1001000)) + \di_reg[0]_i_2__2 + (.I0(index[3]), + .I1(index[2]), + .I2(index[1]), + .I3(data_pma_rsv_a), + .I4(index[0]), + .I5(do_reg2[0]), + .O(\di_reg[0]_i_2__2_n_0 )); + LUT5 #( + .INIT(32'h000005D0)) + \di_reg[0]_i_3__2 + (.I0(index[0]), + .I1(do_reg2[0]), + .I2(index[2]), + .I3(index[1]), + .I4(index[3]), + .O(\di_reg[0]_i_3__2_n_0 )); + LUT6 #( + .INIT(64'h45555F5540000000)) + \di_reg[10]_i_1__2 + (.I0(index[4]), + .I1(\di_reg[15]_i_2__2_n_0 ), + .I2(index[1]), + .I3(index[2]), + .I4(index[3]), + .I5(do_reg2[10]), + .O(di_reg[10])); + LUT6 #( + .INIT(64'h4F40DDDD4F408888)) + \di_reg[11]_i_2__2 + (.I0(index[3]), + .I1(do_reg2[11]), + .I2(index[1]), + .I3(\di_reg[11]_i_4__2_n_0 ), + .I4(index[2]), + .I5(\di_reg[11]_i_5__2_n_0 ), + .O(\di_reg[11]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'h0000000008080838)) + \di_reg[11]_i_3__2 + (.I0(do_reg2[11]), + .I1(index[2]), + .I2(index[1]), + .I3(data_pma_rsv_a), + .I4(index[0]), + .I5(index[3]), + .O(\di_reg[11]_i_3__2_n_0 )); + LUT4 #( + .INIT(16'hB8BB)) + \di_reg[11]_i_4__2 + (.I0(do_reg2[11]), + .I1(index[0]), + .I2(rate_reg2[0]), + .I3(rate_reg2[1]), + .O(\di_reg[11]_i_4__2_n_0 )); + LUT5 #( + .INIT(32'hEFFF0100)) + \di_reg[11]_i_5__2 + (.I0(index[1]), + .I1(index[0]), + .I2(x16_reg2), + .I3(x16x20_mode_reg2), + .I4(do_reg2[11]), + .O(\di_reg[11]_i_5__2_n_0 )); + LUT6 #( + .INIT(64'h777EFFFF01080000)) + \di_reg[12]_i_2__2 + (.I0(index[3]), + .I1(index[1]), + .I2(index[0]), + .I3(data_pma_rsv_a), + .I4(index[2]), + .I5(do_reg2[12]), + .O(\di_reg[12]_i_2__2_n_0 )); + LUT5 #( + .INIT(32'h00000B08)) + \di_reg[12]_i_3__2 + (.I0(do_reg2[12]), + .I1(index[2]), + .I2(index[1]), + .I3(index[0]), + .I4(index[3]), + .O(\di_reg[12]_i_3__2_n_0 )); + LUT6 #( + .INIT(64'h767FFFFF00090000)) + \di_reg[13]_i_2__2 + (.I0(index[3]), + .I1(index[1]), + .I2(index[0]), + .I3(data_pma_rsv_a), + .I4(index[2]), + .I5(do_reg2[13]), + .O(\di_reg[13]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'h0000000008380808)) + \di_reg[13]_i_3__2 + (.I0(do_reg2[13]), + .I1(index[2]), + .I2(index[1]), + .I3(index[0]), + .I4(data_pma_rsv_a), + .I5(index[3]), + .O(\di_reg[13]_i_3__2_n_0 )); + LUT6 #( + .INIT(64'h0040FFFF00400000)) + \di_reg[14]_i_1__2 + (.I0(index[1]), + .I1(index[2]), + .I2(do_reg2[14]), + .I3(index[3]), + .I4(index[4]), + .I5(\di_reg[14]_i_2__2_n_0 ), + .O(di_reg[14])); + LUT6 #( + .INIT(64'h653BFFF721080080)) + \di_reg[14]_i_2__2 + (.I0(index[3]), + .I1(index[1]), + .I2(data_pma_rsv_a), + .I3(index[0]), + .I4(index[2]), + .I5(do_reg2[14]), + .O(\di_reg[14]_i_2__2_n_0 )); + LUT2 #( + .INIT(4'hB)) + \di_reg[14]_i_3 + (.I0(rate_reg2[0]), + .I1(rate_reg2[1]), + .O(data_pma_rsv_a)); + LUT6 #( + .INIT(64'h45555F5540000000)) + \di_reg[15]_i_1__2 + (.I0(index[4]), + .I1(\di_reg[15]_i_2__2_n_0 ), + .I2(index[1]), + .I3(index[2]), + .I4(index[3]), + .I5(do_reg2[15]), + .O(di_reg[15])); + LUT3 #( + .INIT(8'h0D)) + \di_reg[15]_i_2__2 + (.I0(rate_reg2[1]), + .I1(rate_reg2[0]), + .I2(index[0]), + .O(\di_reg[15]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'h5FEE4E0076FF1000)) + \di_reg[1]_i_2__2 + (.I0(index[3]), + .I1(index[2]), + .I2(data_pma_rsv_a), + .I3(index[1]), + .I4(do_reg2[1]), + .I5(index[0]), + .O(\di_reg[1]_i_2__2_n_0 )); + LUT5 #( + .INIT(32'h000005D0)) + \di_reg[1]_i_3__2 + (.I0(index[0]), + .I1(do_reg2[1]), + .I2(index[2]), + .I3(index[1]), + .I4(index[3]), + .O(\di_reg[1]_i_3__2_n_0 )); + LUT6 #( + .INIT(64'h5DEE080067FF0100)) + \di_reg[2]_i_2__2 + (.I0(index[3]), + .I1(index[2]), + .I2(data_pma_rsv_a), + .I3(index[1]), + .I4(do_reg2[2]), + .I5(index[0]), + .O(\di_reg[2]_i_2__2_n_0 )); + LUT5 #( + .INIT(32'h00000380)) + \di_reg[2]_i_3__2 + (.I0(do_reg2[2]), + .I1(index[0]), + .I2(index[2]), + .I3(index[1]), + .I4(index[3]), + .O(\di_reg[2]_i_3__2_n_0 )); + LUT6 #( + .INIT(64'h43FFFFFF40000000)) + \di_reg[3]_i_2__2 + (.I0(data_pma_rsv_a), + .I1(index[2]), + .I2(index[0]), + .I3(index[1]), + .I4(index[3]), + .I5(do_reg2[3]), + .O(\di_reg[3]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'h000000000033D100)) + \di_reg[3]_i_3__2 + (.I0(data_pma_rsv_a), + .I1(index[0]), + .I2(do_reg2[3]), + .I3(index[2]), + .I4(index[1]), + .I5(index[3]), + .O(\di_reg[3]_i_3__2_n_0 )); + LUT5 #( + .INIT(32'h30BB3088)) + \di_reg[4]_i_1__2 + (.I0(\di_reg[4]_i_2__2_n_0 ), + .I1(index[4]), + .I2(\di_reg[4]_i_3__2_n_0 ), + .I3(index[3]), + .I4(\di_reg[4]_i_4__2_n_0 ), + .O(di_reg[4])); + LUT6 #( + .INIT(64'h0F0400F0000400F0)) + \di_reg[4]_i_2__2 + (.I0(rate_reg2[0]), + .I1(rate_reg2[1]), + .I2(index[1]), + .I3(index[2]), + .I4(index[0]), + .I5(do_reg2[4]), + .O(\di_reg[4]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'h400FFFFF40000000)) + \di_reg[4]_i_3__2 + (.I0(rate_reg2[0]), + .I1(rate_reg2[1]), + .I2(index[2]), + .I3(index[0]), + .I4(index[1]), + .I5(do_reg2[4]), + .O(\di_reg[4]_i_3__2_n_0 )); + LUT6 #( + .INIT(64'hBF00BF01FF40FE40)) + \di_reg[4]_i_4__2 + (.I0(index[2]), + .I1(index[1]), + .I2(index[0]), + .I3(do_reg2[4]), + .I4(x16x20_mode_reg2), + .I5(data_pma_rsv_a), + .O(\di_reg[4]_i_4__2_n_0 )); + LUT6 #( + .INIT(64'h7F7F7F7E00000000)) + \di_reg[5]_i_2__2 + (.I0(index[3]), + .I1(index[2]), + .I2(index[1]), + .I3(index[0]), + .I4(x16x20_mode_reg2), + .I5(do_reg2[5]), + .O(\di_reg[5]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'h00000000038F0380)) + \di_reg[5]_i_3__2 + (.I0(do_reg2[5]), + .I1(index[0]), + .I2(index[2]), + .I3(index[1]), + .I4(data_pma_rsv_a), + .I5(index[3]), + .O(\di_reg[5]_i_3__2_n_0 )); + LUT6 #( + .INIT(64'h7D7F7D7E00000000)) + \di_reg[6]_i_2__2 + (.I0(index[3]), + .I1(index[2]), + .I2(index[1]), + .I3(index[0]), + .I4(x16x20_mode_reg2), + .I5(do_reg2[6]), + .O(\di_reg[6]_i_2__2_n_0 )); + LUT5 #( + .INIT(32'h00000380)) + \di_reg[6]_i_3__2 + (.I0(do_reg2[6]), + .I1(index[0]), + .I2(index[2]), + .I3(index[1]), + .I4(index[3]), + .O(\di_reg[6]_i_3__2_n_0 )); + LUT5 #( + .INIT(32'h7FFF0900)) + \di_reg[7]_i_2__2 + (.I0(index[2]), + .I1(index[1]), + .I2(index[0]), + .I3(index[3]), + .I4(do_reg2[7]), + .O(\di_reg[7]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'h0000000003800383)) + \di_reg[7]_i_3__2 + (.I0(do_reg2[7]), + .I1(index[0]), + .I2(index[2]), + .I3(index[1]), + .I4(data_pma_rsv_a), + .I5(index[3]), + .O(\di_reg[7]_i_3__2_n_0 )); + LUT6 #( + .INIT(64'h03333F7300000040)) + \di_reg[8]_i_1__2 + (.I0(index[0]), + .I1(index[4]), + .I2(index[1]), + .I3(index[2]), + .I4(index[3]), + .I5(do_reg2[8]), + .O(di_reg[8])); + LUT6 #( + .INIT(64'h03333F7300000040)) + \di_reg[9]_i_1__2 + (.I0(index[0]), + .I1(index[4]), + .I2(index[1]), + .I3(index[2]), + .I4(index[3]), + .I5(do_reg2[9]), + .O(di_reg[9])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[0]), + .Q(drp_di_48[0]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[0]_i_1__2 + (.I0(\di_reg[0]_i_2__2_n_0 ), + .I1(\di_reg[0]_i_3__2_n_0 ), + .O(di_reg[0]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[10] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[10]), + .Q(drp_di_48[10]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[11] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[11]), + .Q(drp_di_48[11]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[11]_i_1__2 + (.I0(\di_reg[11]_i_2__2_n_0 ), + .I1(\di_reg[11]_i_3__2_n_0 ), + .O(di_reg[11]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[12] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[12]), + .Q(drp_di_48[12]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[12]_i_1__2 + (.I0(\di_reg[12]_i_2__2_n_0 ), + .I1(\di_reg[12]_i_3__2_n_0 ), + .O(di_reg[12]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[13] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[13]), + .Q(drp_di_48[13]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[13]_i_1__2 + (.I0(\di_reg[13]_i_2__2_n_0 ), + .I1(\di_reg[13]_i_3__2_n_0 ), + .O(di_reg[13]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[14] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[14]), + .Q(drp_di_48[14]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[15] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[15]), + .Q(drp_di_48[15]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[1]), + .Q(drp_di_48[1]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[1]_i_1__2 + (.I0(\di_reg[1]_i_2__2_n_0 ), + .I1(\di_reg[1]_i_3__2_n_0 ), + .O(di_reg[1]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[2]), + .Q(drp_di_48[2]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[2]_i_1__2 + (.I0(\di_reg[2]_i_2__2_n_0 ), + .I1(\di_reg[2]_i_3__2_n_0 ), + .O(di_reg[2]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[3] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[3]), + .Q(drp_di_48[3]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[3]_i_1__2 + (.I0(\di_reg[3]_i_2__2_n_0 ), + .I1(\di_reg[3]_i_3__2_n_0 ), + .O(di_reg[3]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[4] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[4]), + .Q(drp_di_48[4]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[5] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[5]), + .Q(drp_di_48[5]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[5]_i_1__2 + (.I0(\di_reg[5]_i_2__2_n_0 ), + .I1(\di_reg[5]_i_3__2_n_0 ), + .O(di_reg[5]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[6] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[6]), + .Q(drp_di_48[6]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[6]_i_1__2 + (.I0(\di_reg[6]_i_2__2_n_0 ), + .I1(\di_reg[6]_i_3__2_n_0 ), + .O(di_reg[6]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[7] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[7]), + .Q(drp_di_48[7]), + .R(RST_DCLK_RESET)); + MUXF7 \di_reg_reg[7]_i_1__2 + (.I0(\di_reg[7]_i_2__2_n_0 ), + .I1(\di_reg[7]_i_3__2_n_0 ), + .O(di_reg[7]), + .S(index[4])); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[8] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[8]), + .Q(drp_di_48[8]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg_reg[9] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di_reg[9]), + .Q(drp_di_48[9]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[0]), + .Q(do_reg1[0]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[10] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[10]), + .Q(do_reg1[10]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[11] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[11]), + .Q(do_reg1[11]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[12] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[12]), + .Q(do_reg1[12]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[13] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[13]), + .Q(do_reg1[13]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[14] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[14]), + .Q(do_reg1[14]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[15] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[15]), + .Q(do_reg1[15]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[1]), + .Q(do_reg1[1]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[2]), + .Q(do_reg1[2]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[3] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[3]), + .Q(do_reg1[3]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[4] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[4]), + .Q(do_reg1[4]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[5] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[5]), + .Q(do_reg1[5]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[6] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[6]), + .Q(do_reg1[6]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[7] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[7]), + .Q(do_reg1[7]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[8] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[8]), + .Q(do_reg1[8]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[9] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[9]), + .Q(do_reg1[9]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[0]), + .Q(do_reg2[0]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[10] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[10]), + .Q(do_reg2[10]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[11] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[11]), + .Q(do_reg2[11]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[12] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[12]), + .Q(do_reg2[12]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[13] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[13]), + .Q(do_reg2[13]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[14] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[14]), + .Q(do_reg2[14]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[15] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[15]), + .Q(do_reg2[15]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[1]), + .Q(do_reg2[1]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[2]), + .Q(do_reg2[2]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[3] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[3]), + .Q(do_reg2[3]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[4] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[4]), + .Q(do_reg2[4]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[5] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[5]), + .Q(do_reg2[5]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[6] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[6]), + .Q(do_reg2[6]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[7] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[7]), + .Q(do_reg2[7]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[8] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[8]), + .Q(do_reg2[8]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[9] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[9]), + .Q(do_reg2[9]), + .R(RST_DCLK_RESET)); + LUT4 #( + .INIT(16'h0001)) + done_i_1__3 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(start_reg2), + .I3(\fsm_reg_n_0_[1] ), + .O(done_i_1__3_n_0)); + FDRE #( + .INIT(1'b0)) + done_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(done_i_1__3_n_0), + .Q(DRP_DONE), + .R(RST_DCLK_RESET)); + LUT6 #( + .INIT(64'h0737FFFF07370000)) + \fsm[0]_i_1__7 + (.I0(fsm1), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(rdy_reg2), + .I4(\fsm_reg_n_0_[2] ), + .I5(\fsm[0]_i_2__7_n_0 ), + .O(fsm[0])); + LUT5 #( + .INIT(32'h47FF47CC)) + \fsm[0]_i_2__7 + (.I0(rdy_reg2), + .I1(\fsm_reg_n_0_[1] ), + .I2(load_cnt), + .I3(\fsm_reg_n_0_[0] ), + .I4(start_reg2), + .O(\fsm[0]_i_2__7_n_0 )); + LUT5 #( + .INIT(32'h1D501850)) + \fsm[1]_i_1__7 + (.I0(\fsm_reg_n_0_[2] ), + .I1(rdy_reg2), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(load_cnt), + .O(fsm[1])); + LUT4 #( + .INIT(16'h6222)) + \fsm[2]_i_1__3 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(rdy_reg2), + .O(fsm[2])); + FDRE #( + .INIT(1'b0)) + \fsm_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(fsm[0]), + .Q(\fsm_reg_n_0_[0] ), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \fsm_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(fsm[1]), + .Q(\fsm_reg_n_0_[1] ), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \fsm_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(fsm[2]), + .Q(\fsm_reg_n_0_[2] ), + .R(RST_DCLK_RESET)); + (* SOFT_HLUTNM = "soft_lutpair177" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_10__2 + (.I0(drp_di_48[12]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[12])); + (* SOFT_HLUTNM = "soft_lutpair176" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_11__2 + (.I0(drp_di_48[11]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[11])); + (* SOFT_HLUTNM = "soft_lutpair176" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_12__2 + (.I0(drp_di_48[10]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[10])); + (* SOFT_HLUTNM = "soft_lutpair175" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_13__2 + (.I0(drp_di_48[9]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[9])); + (* SOFT_HLUTNM = "soft_lutpair175" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_14__2 + (.I0(drp_di_48[8]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[8])); + (* SOFT_HLUTNM = "soft_lutpair174" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_15__2 + (.I0(drp_di_48[7]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[7])); + (* SOFT_HLUTNM = "soft_lutpair174" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_16__2 + (.I0(drp_di_48[6]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[6])); + (* SOFT_HLUTNM = "soft_lutpair173" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_17__2 + (.I0(drp_di_48[5]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[5])); + (* SOFT_HLUTNM = "soft_lutpair173" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_18__2 + (.I0(drp_di_48[4]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[4])); + (* SOFT_HLUTNM = "soft_lutpair172" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_19__2 + (.I0(drp_di_48[3]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[3])); + (* SOFT_HLUTNM = "soft_lutpair172" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_20__2 + (.I0(drp_di_48[2]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[2])); + (* SOFT_HLUTNM = "soft_lutpair171" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_21__2 + (.I0(drp_di_48[1]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[1])); + (* SOFT_HLUTNM = "soft_lutpair171" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_22__2 + (.I0(drp_di_48[0]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[0])); + (* SOFT_HLUTNM = "soft_lutpair166" *) + LUT3 #( + .INIT(8'h12)) + \gtx_channel.gtxe2_channel_i_i_3__2 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[2] ), + .O(\fsm_reg[1]_0 )); + (* SOFT_HLUTNM = "soft_lutpair170" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_40__2 + (.I0(drp_addr_27[7]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[7])); + (* SOFT_HLUTNM = "soft_lutpair170" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_41__2 + (.I0(drp_addr_27[6]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[6])); + (* SOFT_HLUTNM = "soft_lutpair169" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_42__2 + (.I0(drp_addr_27[5]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[5])); + (* SOFT_HLUTNM = "soft_lutpair169" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_43__2 + (.I0(drp_addr_27[4]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[4])); + (* SOFT_HLUTNM = "soft_lutpair168" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_44__2 + (.I0(drp_addr_27[3]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[3])); + (* SOFT_HLUTNM = "soft_lutpair168" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_45__2 + (.I0(drp_addr_27[2]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[2])); + (* SOFT_HLUTNM = "soft_lutpair167" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_46__2 + (.I0(drp_addr_27[1]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[1])); + (* SOFT_HLUTNM = "soft_lutpair166" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_47 + (.I0(drp_addr_27[0]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPADDR[0])); + (* SOFT_HLUTNM = "soft_lutpair167" *) + LUT3 #( + .INIT(8'h10)) + \gtx_channel.gtxe2_channel_i_i_4__2 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[2] ), + .O(\fsm_reg[1]_1 )); + (* SOFT_HLUTNM = "soft_lutpair178" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_7__2 + (.I0(drp_di_48[15]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[15])); + (* SOFT_HLUTNM = "soft_lutpair178" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_8__2 + (.I0(drp_di_48[14]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[14])); + (* SOFT_HLUTNM = "soft_lutpair177" *) + LUT4 #( + .INIT(16'hAAA8)) + \gtx_channel.gtxe2_channel_i_i_9__2 + (.I0(drp_di_48[13]), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .O(DRPDI[13])); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gtxreset_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(DRP_GTXRESET), + .Q(gtxreset_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gtxreset_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(gtxreset_reg1), + .Q(gtxreset_reg2), + .R(RST_DCLK_RESET)); + (* SOFT_HLUTNM = "soft_lutpair163" *) + LUT4 #( + .INIT(16'h0100)) + \index[0]_i_1__2 + (.I0(\fsm_reg_n_0_[0] ), + .I1(fsm1), + .I2(index[0]), + .I3(\fsm_reg_n_0_[2] ), + .O(\index[0]_i_1__2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair163" *) + LUT5 #( + .INIT(32'h00140000)) + \index[1]_i_1__2 + (.I0(\fsm_reg_n_0_[0] ), + .I1(index[1]), + .I2(index[0]), + .I3(fsm1), + .I4(\fsm_reg_n_0_[2] ), + .O(\index[1]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'h0000144400000000)) + \index[2]_i_1__2 + (.I0(\fsm_reg_n_0_[0] ), + .I1(index[2]), + .I2(index[1]), + .I3(index[0]), + .I4(fsm1), + .I5(\fsm_reg_n_0_[2] ), + .O(\index[2]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'h0000144400000000)) + \index[3]_i_1__2 + (.I0(\fsm_reg_n_0_[0] ), + .I1(index[3]), + .I2(index[2]), + .I3(\index[3]_i_2__2_n_0 ), + .I4(fsm1), + .I5(\fsm_reg_n_0_[2] ), + .O(\index[3]_i_1__2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair179" *) + LUT2 #( + .INIT(4'h8)) + \index[3]_i_2__2 + (.I0(index[1]), + .I1(index[0]), + .O(\index[3]_i_2__2_n_0 )); + LUT3 #( + .INIT(8'hA1)) + \index[4]_i_1__2 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[2] ), + .O(\index[4]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'h0000144400000000)) + \index[4]_i_2__2 + (.I0(\fsm_reg_n_0_[0] ), + .I1(index[4]), + .I2(index[3]), + .I3(\index[4]_i_3__2_n_0 ), + .I4(fsm1), + .I5(\fsm_reg_n_0_[2] ), + .O(\index[4]_i_2__2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair179" *) + LUT3 #( + .INIT(8'h80)) + \index[4]_i_3__2 + (.I0(index[2]), + .I1(index[0]), + .I2(index[1]), + .O(\index[4]_i_3__2_n_0 )); + LUT6 #( + .INIT(64'h1000000110000000)) + \index[4]_i_4__2 + (.I0(index[3]), + .I1(index[1]), + .I2(index[0]), + .I3(index[4]), + .I4(index[2]), + .I5(x16x20_mode_reg2), + .O(fsm1)); + FDRE #( + .INIT(1'b0)) + \index_reg[0] + (.C(pipe_dclk_in), + .CE(\index[4]_i_1__2_n_0 ), + .D(\index[0]_i_1__2_n_0 ), + .Q(index[0]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \index_reg[1] + (.C(pipe_dclk_in), + .CE(\index[4]_i_1__2_n_0 ), + .D(\index[1]_i_1__2_n_0 ), + .Q(index[1]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \index_reg[2] + (.C(pipe_dclk_in), + .CE(\index[4]_i_1__2_n_0 ), + .D(\index[2]_i_1__2_n_0 ), + .Q(index[2]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \index_reg[3] + (.C(pipe_dclk_in), + .CE(\index[4]_i_1__2_n_0 ), + .D(\index[3]_i_1__2_n_0 ), + .Q(index[3]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \index_reg[4] + (.C(pipe_dclk_in), + .CE(\index[4]_i_1__2_n_0 ), + .D(\index[4]_i_2__2_n_0 ), + .Q(index[4]), + .R(RST_DCLK_RESET)); + LUT3 #( + .INIT(8'h10)) + \load_cnt[0]_i_1__3 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[0] ), + .O(\load_cnt[0]_i_1__3_n_0 )); + FDRE #( + .INIT(1'b0)) + \load_cnt_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\load_cnt[0]_i_1__3_n_0 ), + .Q(load_cnt), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_reg1_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\rate_reg1_reg[0]_0 ), + .Q(rate_reg1[0]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_reg1_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rate_reg1[1]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_reg2_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(rate_reg1[0]), + .Q(rate_reg2[0]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_reg2_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(rate_reg1[1]), + .Q(rate_reg2[1]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rdy_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(DRP_RDY), + .Q(rdy_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rdy_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(rdy_reg1), + .Q(rdy_reg2), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE start_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(RATE_DRP_START), + .Q(start_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE start_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(start_reg1), + .Q(start_reg2), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE x16_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(RATE_DRP_X16), + .Q(x16_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE x16_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(x16_reg1), + .Q(x16_reg2), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE x16x20_mode_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(RATE_DRP_X16X20_MODE), + .Q(x16x20_mode_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE x16x20_mode_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(x16x20_mode_reg1), + .Q(x16x20_mode_reg2), + .R(RST_DCLK_RESET)); +endmodule + +module pcie_7x_0_pcie_7x_0_pipe_eq + (TXPRECURSOR, + TXMAINCURSOR, + TXPOSTCURSOR, + USER_RXEQ_ADAPT_DONE, + RST_CPLLRESET, + pipe_pclk_in, + USER_RATE_GEN3); + output [4:0]TXPRECURSOR; + output [6:0]TXMAINCURSOR; + output [4:0]TXPOSTCURSOR; + output USER_RXEQ_ADAPT_DONE; + input RST_CPLLRESET; + input pipe_pclk_in; + input USER_RATE_GEN3; + + wire \FSM_onehot_fsm_rx[1]_i_1_n_0 ; + wire \FSM_onehot_fsm_rx[1]_i_2_n_0 ; + wire \FSM_onehot_fsm_rx[3]_i_1_n_0 ; + wire \FSM_onehot_fsm_rx[4]_i_1_n_0 ; + wire \FSM_onehot_fsm_rx_reg_n_0_[1] ; + wire \FSM_onehot_fsm_rx_reg_n_0_[2] ; + wire \FSM_onehot_fsm_rx_reg_n_0_[3] ; + wire \FSM_onehot_fsm_rx_reg_n_0_[4] ; + wire \FSM_onehot_fsm_rx_reg_n_0_[5] ; + wire \FSM_onehot_fsm_rx_reg_n_0_[6] ; + wire \FSM_sequential_fsm_tx[1]_i_2_n_0 ; + wire \FSM_sequential_fsm_tx[2]_i_2_n_0 ; + wire RST_CPLLRESET; + wire [6:0]TXMAINCURSOR; + wire [4:0]TXPOSTCURSOR; + wire [4:0]TXPRECURSOR; + wire USER_RATE_GEN3; + wire USER_RXEQ_ADAPT_DONE; + wire [2:0]fsm_tx; + wire [2:0]fsm_tx__0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gen3_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gen3_reg2; + wire [17:0]p_0_out; + wire pipe_pclk_in; + wire rxeq_adapt_done_i_2_n_0; + wire rxeq_adapt_done_reg_i_2_n_0; + wire rxeq_adapt_done_reg_reg_n_0; + wire [2:0]rxeq_cnt; + wire \rxeq_cnt_reg_n_0_[0] ; + wire \rxeq_cnt_reg_n_0_[1] ; + wire \rxeq_cnt_reg_n_0_[2] ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rxeq_control_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rxeq_control_reg2; + wire [5:0]rxeq_fs; + wire \rxeq_fs[5]_i_1_n_0 ; + wire \rxeq_fs_reg_n_0_[0] ; + wire \rxeq_fs_reg_n_0_[1] ; + wire \rxeq_fs_reg_n_0_[2] ; + wire \rxeq_fs_reg_n_0_[3] ; + wire \rxeq_fs_reg_n_0_[4] ; + wire \rxeq_fs_reg_n_0_[5] ; + wire [5:0]rxeq_lf; + wire \rxeq_lf[5]_i_1_n_0 ; + wire \rxeq_lf_reg_n_0_[0] ; + wire \rxeq_lf_reg_n_0_[1] ; + wire \rxeq_lf_reg_n_0_[2] ; + wire \rxeq_lf_reg_n_0_[3] ; + wire \rxeq_lf_reg_n_0_[4] ; + wire \rxeq_lf_reg_n_0_[5] ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]rxeq_lffs_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]rxeq_lffs_reg2; + wire rxeq_new_txcoeff_req; + wire rxeq_new_txcoeff_req_reg_n_0; + wire \rxeq_preset[0]_i_1_n_0 ; + wire \rxeq_preset[1]_i_1_n_0 ; + wire \rxeq_preset[2]_i_1_n_0 ; + wire \rxeq_preset[2]_i_2_n_0 ; + wire \rxeq_preset[2]_i_3_n_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [2:0]rxeq_preset_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [2:0]rxeq_preset_reg2; + wire \rxeq_preset_reg_n_0_[0] ; + wire \rxeq_preset_reg_n_0_[1] ; + wire \rxeq_preset_reg_n_0_[2] ; + wire rxeq_preset_valid; + wire rxeq_scan_i_n_0; + wire rxeq_scan_i_n_1; + wire rxeq_scan_i_n_2; + wire rxeq_scan_i_n_4; + wire rxeq_scan_i_n_5; + wire [17:0]rxeq_txcoeff; + wire \rxeq_txcoeff_reg_n_0_[0] ; + wire \rxeq_txcoeff_reg_n_0_[10] ; + wire \rxeq_txcoeff_reg_n_0_[11] ; + wire \rxeq_txcoeff_reg_n_0_[12] ; + wire \rxeq_txcoeff_reg_n_0_[13] ; + wire \rxeq_txcoeff_reg_n_0_[14] ; + wire \rxeq_txcoeff_reg_n_0_[15] ; + wire \rxeq_txcoeff_reg_n_0_[16] ; + wire \rxeq_txcoeff_reg_n_0_[17] ; + wire \rxeq_txcoeff_reg_n_0_[1] ; + wire \rxeq_txcoeff_reg_n_0_[2] ; + wire \rxeq_txcoeff_reg_n_0_[3] ; + wire \rxeq_txcoeff_reg_n_0_[4] ; + wire \rxeq_txcoeff_reg_n_0_[5] ; + wire \rxeq_txcoeff_reg_n_0_[6] ; + wire \rxeq_txcoeff_reg_n_0_[7] ; + wire \rxeq_txcoeff_reg_n_0_[8] ; + wire \rxeq_txcoeff_reg_n_0_[9] ; + wire [3:0]rxeq_txpreset; + wire \rxeq_txpreset[3]_i_1_n_0 ; + wire \rxeq_txpreset[3]_i_3_n_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]rxeq_txpreset_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]rxeq_txpreset_reg2; + wire \rxeq_txpreset_reg_n_0_[0] ; + wire \rxeq_txpreset_reg_n_0_[1] ; + wire \rxeq_txpreset_reg_n_0_[2] ; + wire \rxeq_txpreset_reg_n_0_[3] ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxeq_user_en_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxeq_user_en_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxeq_user_mode_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxeq_user_mode_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [17:0]rxeq_user_txcoeff_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [17:0]rxeq_user_txcoeff_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]txeq_control_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]txeq_control_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]txeq_deemph_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]txeq_deemph_reg2; + wire \txeq_preset[17]_i_1_n_0 ; + wire \txeq_preset[3]_i_1_n_0 ; + wire \txeq_preset[7]_i_1_n_0 ; + wire txeq_preset_done; + wire txeq_preset_done_i_1_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]txeq_preset_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]txeq_preset_reg2; + wire \txeq_preset_reg_n_0_[0] ; + wire \txeq_preset_reg_n_0_[10] ; + wire \txeq_preset_reg_n_0_[11] ; + wire \txeq_preset_reg_n_0_[12] ; + wire \txeq_preset_reg_n_0_[13] ; + wire \txeq_preset_reg_n_0_[14] ; + wire \txeq_preset_reg_n_0_[15] ; + wire \txeq_preset_reg_n_0_[16] ; + wire \txeq_preset_reg_n_0_[17] ; + wire \txeq_preset_reg_n_0_[1] ; + wire \txeq_preset_reg_n_0_[2] ; + wire \txeq_preset_reg_n_0_[3] ; + wire \txeq_preset_reg_n_0_[7] ; + wire \txeq_preset_reg_n_0_[8] ; + wire \txeq_preset_reg_n_0_[9] ; + wire txeq_txcoeff; + wire \txeq_txcoeff[0]_i_1_n_0 ; + wire \txeq_txcoeff[0]_i_2_n_0 ; + wire \txeq_txcoeff[10]_i_1_n_0 ; + wire \txeq_txcoeff[10]_i_2_n_0 ; + wire \txeq_txcoeff[11]_i_1_n_0 ; + wire \txeq_txcoeff[11]_i_2_n_0 ; + wire \txeq_txcoeff[12]_i_1_n_0 ; + wire \txeq_txcoeff[12]_i_2_n_0 ; + wire \txeq_txcoeff[13]_i_1_n_0 ; + wire \txeq_txcoeff[13]_i_2_n_0 ; + wire \txeq_txcoeff[14]_i_1_n_0 ; + wire \txeq_txcoeff[14]_i_2_n_0 ; + wire \txeq_txcoeff[15]_i_1_n_0 ; + wire \txeq_txcoeff[15]_i_2_n_0 ; + wire \txeq_txcoeff[16]_i_1_n_0 ; + wire \txeq_txcoeff[16]_i_2_n_0 ; + wire \txeq_txcoeff[17]_i_1_n_0 ; + wire \txeq_txcoeff[17]_i_2_n_0 ; + wire \txeq_txcoeff[18]_i_2_n_0 ; + wire \txeq_txcoeff[18]_i_3_n_0 ; + wire \txeq_txcoeff[1]_i_1_n_0 ; + wire \txeq_txcoeff[1]_i_2_n_0 ; + wire \txeq_txcoeff[2]_i_1_n_0 ; + wire \txeq_txcoeff[2]_i_2_n_0 ; + wire \txeq_txcoeff[3]_i_1_n_0 ; + wire \txeq_txcoeff[3]_i_2_n_0 ; + wire \txeq_txcoeff[4]_i_1_n_0 ; + wire \txeq_txcoeff[4]_i_2_n_0 ; + wire \txeq_txcoeff[5]_i_1_n_0 ; + wire \txeq_txcoeff[5]_i_2_n_0 ; + wire \txeq_txcoeff[6]_i_1_n_0 ; + wire \txeq_txcoeff[6]_i_2_n_0 ; + wire \txeq_txcoeff[7]_i_1_n_0 ; + wire \txeq_txcoeff[7]_i_2_n_0 ; + wire \txeq_txcoeff[8]_i_1_n_0 ; + wire \txeq_txcoeff[8]_i_2_n_0 ; + wire \txeq_txcoeff[9]_i_1_n_0 ; + wire \txeq_txcoeff[9]_i_2_n_0 ; + wire [1:0]txeq_txcoeff_cnt; + wire \txeq_txcoeff_cnt_reg_n_0_[0] ; + wire \txeq_txcoeff_cnt_reg_n_0_[1] ; + wire \txeq_txcoeff_reg_n_0_[0] ; + wire \txeq_txcoeff_reg_n_0_[10] ; + wire \txeq_txcoeff_reg_n_0_[11] ; + wire \txeq_txcoeff_reg_n_0_[12] ; + wire \txeq_txcoeff_reg_n_0_[13] ; + wire \txeq_txcoeff_reg_n_0_[14] ; + wire \txeq_txcoeff_reg_n_0_[15] ; + wire \txeq_txcoeff_reg_n_0_[16] ; + wire \txeq_txcoeff_reg_n_0_[17] ; + wire \txeq_txcoeff_reg_n_0_[18] ; + wire \txeq_txcoeff_reg_n_0_[1] ; + wire \txeq_txcoeff_reg_n_0_[2] ; + wire \txeq_txcoeff_reg_n_0_[3] ; + wire \txeq_txcoeff_reg_n_0_[4] ; + wire \txeq_txcoeff_reg_n_0_[5] ; + wire \txeq_txcoeff_reg_n_0_[6] ; + wire \txeq_txcoeff_reg_n_0_[7] ; + wire \txeq_txcoeff_reg_n_0_[8] ; + wire \txeq_txcoeff_reg_n_0_[9] ; + + LUT5 #( + .INIT(32'hABABABAA)) + \FSM_onehot_fsm_rx[1]_i_1 + (.I0(\FSM_onehot_fsm_rx[1]_i_2_n_0 ), + .I1(rxeq_control_reg2[1]), + .I2(rxeq_control_reg2[0]), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[6] ), + .O(\FSM_onehot_fsm_rx[1]_i_1_n_0 )); + LUT6 #( + .INIT(64'h0000000000000001)) + \FSM_onehot_fsm_rx[1]_i_2 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[6] ), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I5(\FSM_onehot_fsm_rx_reg_n_0_[5] ), + .O(\FSM_onehot_fsm_rx[1]_i_2_n_0 )); + LUT6 #( + .INIT(64'hFFFFF8FF88888888)) + \FSM_onehot_fsm_rx[3]_i_1 + (.I0(rxeq_control_reg2[1]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I2(\rxeq_cnt_reg_n_0_[2] ), + .I3(\rxeq_cnt_reg_n_0_[1] ), + .I4(\rxeq_cnt_reg_n_0_[0] ), + .I5(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .O(\FSM_onehot_fsm_rx[3]_i_1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair50" *) + LUT5 #( + .INIT(32'h2ABA2AAA)) + \FSM_onehot_fsm_rx[4]_i_1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(\rxeq_cnt_reg_n_0_[2] ), + .I2(\rxeq_cnt_reg_n_0_[1] ), + .I3(\rxeq_cnt_reg_n_0_[0] ), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .O(\FSM_onehot_fsm_rx[4]_i_1_n_0 )); + (* FSM_ENCODED_STATES = "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001" *) + FDSE #( + .INIT(1'b0)) + \FSM_onehot_fsm_rx_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm_rx[1]_i_1_n_0 ), + .Q(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .S(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_rx_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_scan_i_n_2), + .Q(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_rx_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm_rx[3]_i_1_n_0 ), + .Q(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_rx_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm_rx[4]_i_1_n_0 ), + .Q(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_rx_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_scan_i_n_1), + .Q(\FSM_onehot_fsm_rx_reg_n_0_[5] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_rx_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_scan_i_n_0), + .Q(\FSM_onehot_fsm_rx_reg_n_0_[6] ), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'hC04FC043C04FF04F)) + \FSM_sequential_fsm_tx[0]_i_1 + (.I0(\FSM_sequential_fsm_tx[1]_i_2_n_0 ), + .I1(fsm_tx[0]), + .I2(fsm_tx[1]), + .I3(fsm_tx[2]), + .I4(txeq_control_reg2[1]), + .I5(txeq_control_reg2[0]), + .O(fsm_tx__0[0])); + LUT6 #( + .INIT(64'h3F703F7C3F7C0F70)) + \FSM_sequential_fsm_tx[1]_i_1 + (.I0(\FSM_sequential_fsm_tx[1]_i_2_n_0 ), + .I1(fsm_tx[0]), + .I2(fsm_tx[1]), + .I3(fsm_tx[2]), + .I4(txeq_control_reg2[1]), + .I5(txeq_control_reg2[0]), + .O(fsm_tx__0[1])); + (* SOFT_HLUTNM = "soft_lutpair48" *) + LUT2 #( + .INIT(4'h2)) + \FSM_sequential_fsm_tx[1]_i_2 + (.I0(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .O(\FSM_sequential_fsm_tx[1]_i_2_n_0 )); + LUT6 #( + .INIT(64'h3A2A2A227F7F7F77)) + \FSM_sequential_fsm_tx[2]_i_1 + (.I0(fsm_tx[2]), + .I1(fsm_tx[1]), + .I2(fsm_tx[0]), + .I3(txeq_control_reg2[1]), + .I4(txeq_control_reg2[0]), + .I5(\FSM_sequential_fsm_tx[2]_i_2_n_0 ), + .O(fsm_tx__0[2])); + (* SOFT_HLUTNM = "soft_lutpair48" *) + LUT5 #( + .INIT(32'hD0FFDFFF)) + \FSM_sequential_fsm_tx[2]_i_2 + (.I0(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I2(fsm_tx[0]), + .I3(fsm_tx[1]), + .I4(txeq_preset_done), + .O(\FSM_sequential_fsm_tx[2]_i_2_n_0 )); + (* FSM_ENCODED_STATES = "FSM_TXEQ_QUERY:101,FSM_TXEQ_PRESET:010,FSM_TXEQ_TXCOEFF:011,FSM_TXEQ_REMAP:100,FSM_TXEQ_DONE:110,FSM_TXEQ_IDLE:001,iSTATE:000" *) + FDSE #( + .INIT(1'b0)) + \FSM_sequential_fsm_tx_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm_tx__0[0]), + .Q(fsm_tx[0]), + .S(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_TXEQ_QUERY:101,FSM_TXEQ_PRESET:010,FSM_TXEQ_TXCOEFF:011,FSM_TXEQ_REMAP:100,FSM_TXEQ_DONE:110,FSM_TXEQ_IDLE:001,iSTATE:000" *) + FDRE #( + .INIT(1'b0)) + \FSM_sequential_fsm_tx_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm_tx__0[1]), + .Q(fsm_tx[1]), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_TXEQ_QUERY:101,FSM_TXEQ_PRESET:010,FSM_TXEQ_TXCOEFF:011,FSM_TXEQ_REMAP:100,FSM_TXEQ_DONE:110,FSM_TXEQ_IDLE:001,iSTATE:000" *) + FDRE #( + .INIT(1'b0)) + \FSM_sequential_fsm_tx_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm_tx__0[2]), + .Q(fsm_tx[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gen3_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_RATE_GEN3), + .Q(gen3_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gen3_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gen3_reg1), + .Q(gen3_reg2), + .R(RST_CPLLRESET)); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_22 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[17] ), + .O(TXPOSTCURSOR[4])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_23 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[16] ), + .O(TXPOSTCURSOR[3])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_24 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[15] ), + .O(TXPOSTCURSOR[2])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_25 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[14] ), + .O(TXPOSTCURSOR[1])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_26 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[13] ), + .O(TXPOSTCURSOR[0])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_27 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[4] ), + .O(TXPRECURSOR[4])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_28 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[3] ), + .O(TXPRECURSOR[3])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_29 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[2] ), + .O(TXPRECURSOR[2])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_30 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[1] ), + .O(TXPRECURSOR[1])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_31 + (.I0(\txeq_txcoeff_reg_n_0_[0] ), + .I1(gen3_reg2), + .O(TXPRECURSOR[0])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_32 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[12] ), + .O(TXMAINCURSOR[6])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_33 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[11] ), + .O(TXMAINCURSOR[5])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_34 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[10] ), + .O(TXMAINCURSOR[4])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_35 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[9] ), + .O(TXMAINCURSOR[3])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_36 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[8] ), + .O(TXMAINCURSOR[2])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_37 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[7] ), + .O(TXMAINCURSOR[1])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_38 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[6] ), + .O(TXMAINCURSOR[0])); + LUT6 #( + .INIT(64'hFFFFFFFEFFFFFFFF)) + rxeq_adapt_done_i_2 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[5] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I5(\FSM_onehot_fsm_rx_reg_n_0_[6] ), + .O(rxeq_adapt_done_i_2_n_0)); + FDRE #( + .INIT(1'b0)) + rxeq_adapt_done_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_scan_i_n_5), + .Q(USER_RXEQ_ADAPT_DONE), + .R(RST_CPLLRESET)); + LUT3 #( + .INIT(8'h08)) + rxeq_adapt_done_reg_i_2 + (.I0(rxeq_control_reg2[0]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I2(rxeq_control_reg2[1]), + .O(rxeq_adapt_done_reg_i_2_n_0)); + FDRE #( + .INIT(1'b0)) + rxeq_adapt_done_reg_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_scan_i_n_4), + .Q(rxeq_adapt_done_reg_reg_n_0), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h8888FFF8)) + \rxeq_cnt[0]_i_1 + (.I0(rxeq_control_reg2[1]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I4(\rxeq_cnt_reg_n_0_[0] ), + .O(rxeq_cnt[0])); + (* SOFT_HLUTNM = "soft_lutpair51" *) + LUT4 #( + .INIT(16'h6660)) + \rxeq_cnt[1]_i_1 + (.I0(\rxeq_cnt_reg_n_0_[0] ), + .I1(\rxeq_cnt_reg_n_0_[1] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .O(rxeq_cnt[1])); + (* SOFT_HLUTNM = "soft_lutpair50" *) + LUT5 #( + .INIT(32'h78787800)) + \rxeq_cnt[2]_i_1 + (.I0(\rxeq_cnt_reg_n_0_[1] ), + .I1(\rxeq_cnt_reg_n_0_[0] ), + .I2(\rxeq_cnt_reg_n_0_[2] ), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .O(rxeq_cnt[2])); + FDRE #( + .INIT(1'b0)) + \rxeq_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_cnt[0]), + .Q(\rxeq_cnt_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_cnt[1]), + .Q(\rxeq_cnt_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_cnt_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_cnt[2]), + .Q(\rxeq_cnt_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_control_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_control_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_control_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_control_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_control_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_control_reg1[0]), + .Q(rxeq_control_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_control_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_control_reg1[1]), + .Q(rxeq_control_reg2[1]), + .R(RST_CPLLRESET)); + LUT2 #( + .INIT(4'h8)) + \rxeq_fs[0]_i_1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(rxeq_lffs_reg2[0]), + .O(rxeq_fs[0])); + LUT2 #( + .INIT(4'h8)) + \rxeq_fs[1]_i_1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(rxeq_lffs_reg2[1]), + .O(rxeq_fs[1])); + LUT2 #( + .INIT(4'h8)) + \rxeq_fs[2]_i_1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(rxeq_lffs_reg2[2]), + .O(rxeq_fs[2])); + LUT2 #( + .INIT(4'h8)) + \rxeq_fs[3]_i_1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(rxeq_lffs_reg2[3]), + .O(rxeq_fs[3])); + LUT2 #( + .INIT(4'h8)) + \rxeq_fs[4]_i_1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(rxeq_lffs_reg2[4]), + .O(rxeq_fs[4])); + LUT3 #( + .INIT(8'hF8)) + \rxeq_fs[5]_i_1 + (.I0(rxeq_control_reg2[1]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I2(\FSM_onehot_fsm_rx[1]_i_2_n_0 ), + .O(\rxeq_fs[5]_i_1_n_0 )); + LUT2 #( + .INIT(4'h8)) + \rxeq_fs[5]_i_2 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(rxeq_lffs_reg2[5]), + .O(rxeq_fs[5])); + FDRE #( + .INIT(1'b0)) + \rxeq_fs_reg[0] + (.C(pipe_pclk_in), + .CE(\rxeq_fs[5]_i_1_n_0 ), + .D(rxeq_fs[0]), + .Q(\rxeq_fs_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_fs_reg[1] + (.C(pipe_pclk_in), + .CE(\rxeq_fs[5]_i_1_n_0 ), + .D(rxeq_fs[1]), + .Q(\rxeq_fs_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_fs_reg[2] + (.C(pipe_pclk_in), + .CE(\rxeq_fs[5]_i_1_n_0 ), + .D(rxeq_fs[2]), + .Q(\rxeq_fs_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_fs_reg[3] + (.C(pipe_pclk_in), + .CE(\rxeq_fs[5]_i_1_n_0 ), + .D(rxeq_fs[3]), + .Q(\rxeq_fs_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_fs_reg[4] + (.C(pipe_pclk_in), + .CE(\rxeq_fs[5]_i_1_n_0 ), + .D(rxeq_fs[4]), + .Q(\rxeq_fs_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_fs_reg[5] + (.C(pipe_pclk_in), + .CE(\rxeq_fs[5]_i_1_n_0 ), + .D(rxeq_fs[5]), + .Q(\rxeq_fs_reg_n_0_[5] ), + .R(RST_CPLLRESET)); + LUT2 #( + .INIT(4'h8)) + \rxeq_lf[0]_i_1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(rxeq_lffs_reg2[0]), + .O(rxeq_lf[0])); + LUT2 #( + .INIT(4'h8)) + \rxeq_lf[1]_i_1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(rxeq_lffs_reg2[1]), + .O(rxeq_lf[1])); + LUT2 #( + .INIT(4'h8)) + \rxeq_lf[2]_i_1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(rxeq_lffs_reg2[2]), + .O(rxeq_lf[2])); + LUT2 #( + .INIT(4'h8)) + \rxeq_lf[3]_i_1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(rxeq_lffs_reg2[3]), + .O(rxeq_lf[3])); + LUT2 #( + .INIT(4'h8)) + \rxeq_lf[4]_i_1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(rxeq_lffs_reg2[4]), + .O(rxeq_lf[4])); + LUT5 #( + .INIT(32'hEAAAAAAA)) + \rxeq_lf[5]_i_1 + (.I0(\FSM_onehot_fsm_rx[1]_i_2_n_0 ), + .I1(\rxeq_cnt_reg_n_0_[2] ), + .I2(\rxeq_cnt_reg_n_0_[0] ), + .I3(\rxeq_cnt_reg_n_0_[1] ), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .O(\rxeq_lf[5]_i_1_n_0 )); + LUT2 #( + .INIT(4'h8)) + \rxeq_lf[5]_i_2 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(rxeq_lffs_reg2[5]), + .O(rxeq_lf[5])); + FDRE #( + .INIT(1'b0)) + \rxeq_lf_reg[0] + (.C(pipe_pclk_in), + .CE(\rxeq_lf[5]_i_1_n_0 ), + .D(rxeq_lf[0]), + .Q(\rxeq_lf_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_lf_reg[1] + (.C(pipe_pclk_in), + .CE(\rxeq_lf[5]_i_1_n_0 ), + .D(rxeq_lf[1]), + .Q(\rxeq_lf_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_lf_reg[2] + (.C(pipe_pclk_in), + .CE(\rxeq_lf[5]_i_1_n_0 ), + .D(rxeq_lf[2]), + .Q(\rxeq_lf_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_lf_reg[3] + (.C(pipe_pclk_in), + .CE(\rxeq_lf[5]_i_1_n_0 ), + .D(rxeq_lf[3]), + .Q(\rxeq_lf_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_lf_reg[4] + (.C(pipe_pclk_in), + .CE(\rxeq_lf[5]_i_1_n_0 ), + .D(rxeq_lf[4]), + .Q(\rxeq_lf_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_lf_reg[5] + (.C(pipe_pclk_in), + .CE(\rxeq_lf[5]_i_1_n_0 ), + .D(rxeq_lf[5]), + .Q(\rxeq_lf_reg_n_0_[5] ), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_lffs_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_lffs_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_lffs_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_lffs_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg1_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_lffs_reg1[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg1_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_lffs_reg1[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_lffs_reg1[0]), + .Q(rxeq_lffs_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_lffs_reg1[1]), + .Q(rxeq_lffs_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_lffs_reg1[2]), + .Q(rxeq_lffs_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_lffs_reg1[3]), + .Q(rxeq_lffs_reg2[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_lffs_reg1[4]), + .Q(rxeq_lffs_reg2[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_lffs_reg1[5]), + .Q(rxeq_lffs_reg2[5]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + rxeq_new_txcoeff_req_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_new_txcoeff_req), + .Q(rxeq_new_txcoeff_req_reg_n_0), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'hA8FFA800)) + \rxeq_preset[0]_i_1 + (.I0(rxeq_preset_reg2[0]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I3(\rxeq_preset[2]_i_2_n_0 ), + .I4(\rxeq_preset_reg_n_0_[0] ), + .O(\rxeq_preset[0]_i_1_n_0 )); + LUT5 #( + .INIT(32'hA8FFA800)) + \rxeq_preset[1]_i_1 + (.I0(rxeq_preset_reg2[1]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I3(\rxeq_preset[2]_i_2_n_0 ), + .I4(\rxeq_preset_reg_n_0_[1] ), + .O(\rxeq_preset[1]_i_1_n_0 )); + LUT5 #( + .INIT(32'hA8FFA800)) + \rxeq_preset[2]_i_1 + (.I0(rxeq_preset_reg2[2]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I3(\rxeq_preset[2]_i_2_n_0 ), + .I4(\rxeq_preset_reg_n_0_[2] ), + .O(\rxeq_preset[2]_i_1_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFFFFF0002)) + \rxeq_preset[2]_i_2 + (.I0(\rxeq_preset[2]_i_3_n_0 ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[6] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[5] ), + .I4(rxeq_adapt_done_reg_i_2_n_0), + .I5(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .O(\rxeq_preset[2]_i_2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair51" *) + LUT2 #( + .INIT(4'h1)) + \rxeq_preset[2]_i_3 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .O(\rxeq_preset[2]_i_3_n_0 )); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_preset_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_preset_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_preset_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_preset_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_preset_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_preset_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_preset_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_preset_reg1[0]), + .Q(rxeq_preset_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_preset_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_preset_reg1[1]), + .Q(rxeq_preset_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_preset_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_preset_reg1[2]), + .Q(rxeq_preset_reg2[2]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_preset_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rxeq_preset[0]_i_1_n_0 ), + .Q(\rxeq_preset_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_preset_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rxeq_preset[1]_i_1_n_0 ), + .Q(\rxeq_preset_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_preset_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rxeq_preset[2]_i_1_n_0 ), + .Q(\rxeq_preset_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + rxeq_preset_valid_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .Q(rxeq_preset_valid), + .R(RST_CPLLRESET)); + pcie_7x_0_pcie_7x_0_rxeq_scan_59 rxeq_scan_i + (.D({rxeq_scan_i_n_0,rxeq_scan_i_n_1,rxeq_scan_i_n_2}), + .\FSM_onehot_fsm_rx_reg[5] ({\rxeq_cnt_reg_n_0_[2] ,\rxeq_cnt_reg_n_0_[1] ,\rxeq_cnt_reg_n_0_[0] }), + .Q({\FSM_onehot_fsm_rx_reg_n_0_[6] ,\FSM_onehot_fsm_rx_reg_n_0_[5] ,\FSM_onehot_fsm_rx_reg_n_0_[4] ,\FSM_onehot_fsm_rx_reg_n_0_[2] ,\FSM_onehot_fsm_rx_reg_n_0_[1] }), + .RST_CPLLRESET(RST_CPLLRESET), + .USER_RXEQ_ADAPT_DONE(USER_RXEQ_ADAPT_DONE), + .adapt_done_reg_0(rxeq_scan_i_n_4), + .\fs_reg1_reg[5]_0 ({\rxeq_fs_reg_n_0_[5] ,\rxeq_fs_reg_n_0_[4] ,\rxeq_fs_reg_n_0_[3] ,\rxeq_fs_reg_n_0_[2] ,\rxeq_fs_reg_n_0_[1] ,\rxeq_fs_reg_n_0_[0] }), + .\lf_reg1_reg[5]_0 ({\rxeq_lf_reg_n_0_[5] ,\rxeq_lf_reg_n_0_[4] ,\rxeq_lf_reg_n_0_[3] ,\rxeq_lf_reg_n_0_[2] ,\rxeq_lf_reg_n_0_[1] ,\rxeq_lf_reg_n_0_[0] }), + .new_txcoeff_done_reg_0(rxeq_scan_i_n_5), + .new_txcoeff_req_reg1_reg_0(rxeq_new_txcoeff_req_reg_n_0), + .out(rxeq_control_reg2), + .pipe_pclk_in(pipe_pclk_in), + .\preset_reg1_reg[2]_0 ({\rxeq_preset_reg_n_0_[2] ,\rxeq_preset_reg_n_0_[1] ,\rxeq_preset_reg_n_0_[0] }), + .rxeq_adapt_done_reg(rxeq_adapt_done_i_2_n_0), + .rxeq_adapt_done_reg_reg(\FSM_onehot_fsm_rx[1]_i_2_n_0 ), + .rxeq_adapt_done_reg_reg_0(rxeq_adapt_done_reg_i_2_n_0), + .rxeq_adapt_done_reg_reg_1(rxeq_adapt_done_reg_reg_n_0), + .rxeq_new_txcoeff_req(rxeq_new_txcoeff_req), + .rxeq_preset_valid(rxeq_preset_valid), + .\txcoeff_reg1_reg[17]_0 ({\rxeq_txcoeff_reg_n_0_[17] ,\rxeq_txcoeff_reg_n_0_[16] ,\rxeq_txcoeff_reg_n_0_[15] ,\rxeq_txcoeff_reg_n_0_[14] ,\rxeq_txcoeff_reg_n_0_[13] ,\rxeq_txcoeff_reg_n_0_[12] ,\rxeq_txcoeff_reg_n_0_[11] ,\rxeq_txcoeff_reg_n_0_[10] ,\rxeq_txcoeff_reg_n_0_[9] ,\rxeq_txcoeff_reg_n_0_[8] ,\rxeq_txcoeff_reg_n_0_[7] ,\rxeq_txcoeff_reg_n_0_[6] ,\rxeq_txcoeff_reg_n_0_[5] ,\rxeq_txcoeff_reg_n_0_[4] ,\rxeq_txcoeff_reg_n_0_[3] ,\rxeq_txcoeff_reg_n_0_[2] ,\rxeq_txcoeff_reg_n_0_[1] ,\rxeq_txcoeff_reg_n_0_[0] }), + .\txpreset_reg1_reg[3]_0 ({\rxeq_txpreset_reg_n_0_[3] ,\rxeq_txpreset_reg_n_0_[2] ,\rxeq_txpreset_reg_n_0_[1] ,\rxeq_txpreset_reg_n_0_[0] })); + (* SOFT_HLUTNM = "soft_lutpair52" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[0]_i_1 + (.I0(\rxeq_txcoeff_reg_n_0_[6] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[0])); + (* SOFT_HLUTNM = "soft_lutpair57" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[10]_i_1 + (.I0(\rxeq_txcoeff_reg_n_0_[16] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[10])); + (* SOFT_HLUTNM = "soft_lutpair57" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[11]_i_1 + (.I0(\rxeq_txcoeff_reg_n_0_[17] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[11])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[12]_i_1 + (.I0(txeq_deemph_reg2[0]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[12])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[13]_i_1 + (.I0(txeq_deemph_reg2[1]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[13])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[14]_i_1 + (.I0(txeq_deemph_reg2[2]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[14])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[15]_i_1 + (.I0(txeq_deemph_reg2[3]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[15])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[16]_i_1 + (.I0(txeq_deemph_reg2[4]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[16])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[17]_i_1 + (.I0(txeq_deemph_reg2[5]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[17])); + (* SOFT_HLUTNM = "soft_lutpair52" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[1]_i_1 + (.I0(\rxeq_txcoeff_reg_n_0_[7] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[1])); + (* SOFT_HLUTNM = "soft_lutpair53" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[2]_i_1 + (.I0(\rxeq_txcoeff_reg_n_0_[8] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[2])); + (* SOFT_HLUTNM = "soft_lutpair53" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[3]_i_1 + (.I0(\rxeq_txcoeff_reg_n_0_[9] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[3])); + (* SOFT_HLUTNM = "soft_lutpair54" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[4]_i_1 + (.I0(\rxeq_txcoeff_reg_n_0_[10] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[4])); + (* SOFT_HLUTNM = "soft_lutpair54" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[5]_i_1 + (.I0(\rxeq_txcoeff_reg_n_0_[11] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[5])); + (* SOFT_HLUTNM = "soft_lutpair55" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[6]_i_1 + (.I0(\rxeq_txcoeff_reg_n_0_[12] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[6])); + (* SOFT_HLUTNM = "soft_lutpair55" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[7]_i_1 + (.I0(\rxeq_txcoeff_reg_n_0_[13] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[7])); + (* SOFT_HLUTNM = "soft_lutpair56" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[8]_i_1 + (.I0(\rxeq_txcoeff_reg_n_0_[14] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[8])); + (* SOFT_HLUTNM = "soft_lutpair56" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[9]_i_1 + (.I0(\rxeq_txcoeff_reg_n_0_[15] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[9])); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[0] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1_n_0 ), + .D(rxeq_txcoeff[0]), + .Q(\rxeq_txcoeff_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[10] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1_n_0 ), + .D(rxeq_txcoeff[10]), + .Q(\rxeq_txcoeff_reg_n_0_[10] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[11] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1_n_0 ), + .D(rxeq_txcoeff[11]), + .Q(\rxeq_txcoeff_reg_n_0_[11] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[12] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1_n_0 ), + .D(rxeq_txcoeff[12]), + .Q(\rxeq_txcoeff_reg_n_0_[12] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[13] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1_n_0 ), + .D(rxeq_txcoeff[13]), + .Q(\rxeq_txcoeff_reg_n_0_[13] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[14] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1_n_0 ), + .D(rxeq_txcoeff[14]), + .Q(\rxeq_txcoeff_reg_n_0_[14] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[15] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1_n_0 ), + .D(rxeq_txcoeff[15]), + .Q(\rxeq_txcoeff_reg_n_0_[15] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[16] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1_n_0 ), + .D(rxeq_txcoeff[16]), + .Q(\rxeq_txcoeff_reg_n_0_[16] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[17] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1_n_0 ), + .D(rxeq_txcoeff[17]), + .Q(\rxeq_txcoeff_reg_n_0_[17] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[1] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1_n_0 ), + .D(rxeq_txcoeff[1]), + .Q(\rxeq_txcoeff_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[2] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1_n_0 ), + .D(rxeq_txcoeff[2]), + .Q(\rxeq_txcoeff_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[3] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1_n_0 ), + .D(rxeq_txcoeff[3]), + .Q(\rxeq_txcoeff_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[4] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1_n_0 ), + .D(rxeq_txcoeff[4]), + .Q(\rxeq_txcoeff_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[5] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1_n_0 ), + .D(rxeq_txcoeff[5]), + .Q(\rxeq_txcoeff_reg_n_0_[5] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[6] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1_n_0 ), + .D(rxeq_txcoeff[6]), + .Q(\rxeq_txcoeff_reg_n_0_[6] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[7] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1_n_0 ), + .D(rxeq_txcoeff[7]), + .Q(\rxeq_txcoeff_reg_n_0_[7] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[8] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1_n_0 ), + .D(rxeq_txcoeff[8]), + .Q(\rxeq_txcoeff_reg_n_0_[8] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[9] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1_n_0 ), + .D(rxeq_txcoeff[9]), + .Q(\rxeq_txcoeff_reg_n_0_[9] ), + .R(RST_CPLLRESET)); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txpreset[0]_i_1 + (.I0(rxeq_txpreset_reg2[0]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txpreset[0])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txpreset[1]_i_1 + (.I0(rxeq_txpreset_reg2[1]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txpreset[1])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txpreset[2]_i_1 + (.I0(rxeq_txpreset_reg2[2]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txpreset[2])); + LUT5 #( + .INIT(32'hFFFFF404)) + \rxeq_txpreset[3]_i_1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[6] ), + .I1(\rxeq_txpreset[3]_i_3_n_0 ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I3(rxeq_control_reg2[1]), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .O(\rxeq_txpreset[3]_i_1_n_0 )); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txpreset[3]_i_2 + (.I0(rxeq_txpreset_reg2[3]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txpreset[3])); + LUT3 #( + .INIT(8'h01)) + \rxeq_txpreset[3]_i_3 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[5] ), + .O(\rxeq_txpreset[3]_i_3_n_0 )); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_txpreset_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_txpreset_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_txpreset_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_txpreset_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_txpreset_reg1[0]), + .Q(rxeq_txpreset_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_txpreset_reg1[1]), + .Q(rxeq_txpreset_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_txpreset_reg1[2]), + .Q(rxeq_txpreset_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_txpreset_reg1[3]), + .Q(rxeq_txpreset_reg2[3]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txpreset_reg[0] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1_n_0 ), + .D(rxeq_txpreset[0]), + .Q(\rxeq_txpreset_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txpreset_reg[1] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1_n_0 ), + .D(rxeq_txpreset[1]), + .Q(\rxeq_txpreset_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txpreset_reg[2] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1_n_0 ), + .D(rxeq_txpreset[2]), + .Q(\rxeq_txpreset_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txpreset_reg[3] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1_n_0 ), + .D(rxeq_txpreset[3]), + .Q(\rxeq_txpreset_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxeq_user_en_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_en_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxeq_user_en_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_en_reg1), + .Q(rxeq_user_en_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxeq_user_mode_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_mode_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxeq_user_mode_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_mode_reg1), + .Q(rxeq_user_mode_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[10]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[11]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[12]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[13]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[14]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[15]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[16] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[16]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[17] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[17]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[6]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[7]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[8]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[9]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[0]), + .Q(rxeq_user_txcoeff_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[10]), + .Q(rxeq_user_txcoeff_reg2[10]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[11]), + .Q(rxeq_user_txcoeff_reg2[11]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[12]), + .Q(rxeq_user_txcoeff_reg2[12]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[13]), + .Q(rxeq_user_txcoeff_reg2[13]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[14]), + .Q(rxeq_user_txcoeff_reg2[14]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[15]), + .Q(rxeq_user_txcoeff_reg2[15]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[16] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[16]), + .Q(rxeq_user_txcoeff_reg2[16]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[17] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[17]), + .Q(rxeq_user_txcoeff_reg2[17]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[1]), + .Q(rxeq_user_txcoeff_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[2]), + .Q(rxeq_user_txcoeff_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[3]), + .Q(rxeq_user_txcoeff_reg2[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[4]), + .Q(rxeq_user_txcoeff_reg2[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[5]), + .Q(rxeq_user_txcoeff_reg2[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[6]), + .Q(rxeq_user_txcoeff_reg2[6]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[7]), + .Q(rxeq_user_txcoeff_reg2[7]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[8]), + .Q(rxeq_user_txcoeff_reg2[8]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[9]), + .Q(rxeq_user_txcoeff_reg2[9]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_control_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_control_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_control_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_control_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_control_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_control_reg1[0]), + .Q(txeq_control_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_control_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_control_reg1[1]), + .Q(txeq_control_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDSE \txeq_deemph_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_deemph_reg1[0]), + .S(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_deemph_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_deemph_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_deemph_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg1_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_deemph_reg1[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg1_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_deemph_reg1[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDSE \txeq_deemph_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_deemph_reg1[0]), + .Q(txeq_deemph_reg2[0]), + .S(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_deemph_reg1[1]), + .Q(txeq_deemph_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_deemph_reg1[2]), + .Q(txeq_deemph_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_deemph_reg1[3]), + .Q(txeq_deemph_reg2[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_deemph_reg1[4]), + .Q(txeq_deemph_reg2[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_deemph_reg1[5]), + .Q(txeq_deemph_reg2[5]), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h00001000)) + \txeq_preset[0]_i_1 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[2]), + .I2(txeq_preset_reg2[0]), + .I3(txeq_preset_reg2[3]), + .I4(txeq_preset_reg2[1]), + .O(p_0_out[0])); + LUT5 #( + .INIT(32'hABEAABAF)) + \txeq_preset[10]_i_1 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[2]), + .I2(txeq_preset_reg2[0]), + .I3(txeq_preset_reg2[3]), + .I4(txeq_preset_reg2[1]), + .O(p_0_out[10])); + LUT5 #( + .INIT(32'hFFFF200D)) + \txeq_preset[11]_i_1 + (.I0(txeq_preset_reg2[1]), + .I1(txeq_preset_reg2[3]), + .I2(txeq_preset_reg2[2]), + .I3(txeq_preset_reg2[0]), + .I4(RST_CPLLRESET), + .O(p_0_out[11])); + LUT5 #( + .INIT(32'h01151110)) + \txeq_preset[12]_i_1 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[3]), + .I2(txeq_preset_reg2[1]), + .I3(txeq_preset_reg2[2]), + .I4(txeq_preset_reg2[0]), + .O(p_0_out[12])); + LUT5 #( + .INIT(32'h01000010)) + \txeq_preset[13]_i_1 + (.I0(txeq_preset_reg2[2]), + .I1(RST_CPLLRESET), + .I2(txeq_preset_reg2[0]), + .I3(txeq_preset_reg2[3]), + .I4(txeq_preset_reg2[1]), + .O(p_0_out[13])); + LUT5 #( + .INIT(32'h01000010)) + \txeq_preset[14]_i_1 + (.I0(txeq_preset_reg2[2]), + .I1(RST_CPLLRESET), + .I2(txeq_preset_reg2[3]), + .I3(txeq_preset_reg2[1]), + .I4(txeq_preset_reg2[0]), + .O(p_0_out[14])); + LUT4 #( + .INIT(16'hF0F1)) + \txeq_preset[15]_i_1 + (.I0(txeq_preset_reg2[2]), + .I1(txeq_preset_reg2[1]), + .I2(RST_CPLLRESET), + .I3(txeq_preset_reg2[3]), + .O(p_0_out[15])); + LUT4 #( + .INIT(16'h0006)) + \txeq_preset[16]_i_1 + (.I0(txeq_preset_reg2[3]), + .I1(txeq_preset_reg2[0]), + .I2(txeq_preset_reg2[2]), + .I3(RST_CPLLRESET), + .O(p_0_out[16])); + LUT4 #( + .INIT(16'hAABA)) + \txeq_preset[17]_i_1 + (.I0(RST_CPLLRESET), + .I1(fsm_tx[0]), + .I2(fsm_tx[1]), + .I3(fsm_tx[2]), + .O(\txeq_preset[17]_i_1_n_0 )); + LUT5 #( + .INIT(32'hFFFF400D)) + \txeq_preset[17]_i_2 + (.I0(txeq_preset_reg2[3]), + .I1(txeq_preset_reg2[1]), + .I2(txeq_preset_reg2[2]), + .I3(txeq_preset_reg2[0]), + .I4(RST_CPLLRESET), + .O(p_0_out[17])); + LUT5 #( + .INIT(32'h00001004)) + \txeq_preset[1]_i_1 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[3]), + .I2(txeq_preset_reg2[1]), + .I3(txeq_preset_reg2[2]), + .I4(txeq_preset_reg2[0]), + .O(p_0_out[1])); + LUT4 #( + .INIT(16'h0E00)) + \txeq_preset[2]_i_1 + (.I0(txeq_preset_reg2[2]), + .I1(txeq_preset_reg2[0]), + .I2(RST_CPLLRESET), + .I3(txeq_preset_reg2[3]), + .O(p_0_out[2])); + LUT5 #( + .INIT(32'h01440140)) + \txeq_preset[3]_i_1 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[2]), + .I2(txeq_preset_reg2[1]), + .I3(txeq_preset_reg2[3]), + .I4(txeq_preset_reg2[0]), + .O(\txeq_preset[3]_i_1_n_0 )); + LUT5 #( + .INIT(32'h00001400)) + \txeq_preset[7]_i_1 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[0]), + .I2(txeq_preset_reg2[2]), + .I3(txeq_preset_reg2[1]), + .I4(txeq_preset_reg2[3]), + .O(\txeq_preset[7]_i_1_n_0 )); + LUT5 #( + .INIT(32'hAAAFBEAF)) + \txeq_preset[8]_i_1 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[0]), + .I2(txeq_preset_reg2[2]), + .I3(txeq_preset_reg2[1]), + .I4(txeq_preset_reg2[3]), + .O(p_0_out[8])); + LUT5 #( + .INIT(32'hCCFCCFCD)) + \txeq_preset[9]_i_1 + (.I0(txeq_preset_reg2[1]), + .I1(RST_CPLLRESET), + .I2(txeq_preset_reg2[2]), + .I3(txeq_preset_reg2[3]), + .I4(txeq_preset_reg2[0]), + .O(p_0_out[9])); + (* SOFT_HLUTNM = "soft_lutpair49" *) + LUT3 #( + .INIT(8'h04)) + txeq_preset_done_i_1 + (.I0(fsm_tx[2]), + .I1(fsm_tx[1]), + .I2(fsm_tx[0]), + .O(txeq_preset_done_i_1_n_0)); + FDRE #( + .INIT(1'b0)) + txeq_preset_done_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_preset_done_i_1_n_0), + .Q(txeq_preset_done), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_preset_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_preset_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_preset_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_preset_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_preset_reg1[0]), + .Q(txeq_preset_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_preset_reg1[1]), + .Q(txeq_preset_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_preset_reg1[2]), + .Q(txeq_preset_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_preset_reg1[3]), + .Q(txeq_preset_reg2[3]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[0] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1_n_0 ), + .D(p_0_out[0]), + .Q(\txeq_preset_reg_n_0_[0] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[10] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1_n_0 ), + .D(p_0_out[10]), + .Q(\txeq_preset_reg_n_0_[10] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[11] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1_n_0 ), + .D(p_0_out[11]), + .Q(\txeq_preset_reg_n_0_[11] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[12] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1_n_0 ), + .D(p_0_out[12]), + .Q(\txeq_preset_reg_n_0_[12] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[13] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1_n_0 ), + .D(p_0_out[13]), + .Q(\txeq_preset_reg_n_0_[13] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[14] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1_n_0 ), + .D(p_0_out[14]), + .Q(\txeq_preset_reg_n_0_[14] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[15] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1_n_0 ), + .D(p_0_out[15]), + .Q(\txeq_preset_reg_n_0_[15] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[16] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1_n_0 ), + .D(p_0_out[16]), + .Q(\txeq_preset_reg_n_0_[16] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[17] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1_n_0 ), + .D(p_0_out[17]), + .Q(\txeq_preset_reg_n_0_[17] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[1] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1_n_0 ), + .D(p_0_out[1]), + .Q(\txeq_preset_reg_n_0_[1] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[2] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1_n_0 ), + .D(p_0_out[2]), + .Q(\txeq_preset_reg_n_0_[2] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[3] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1_n_0 ), + .D(\txeq_preset[3]_i_1_n_0 ), + .Q(\txeq_preset_reg_n_0_[3] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[7] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1_n_0 ), + .D(\txeq_preset[7]_i_1_n_0 ), + .Q(\txeq_preset_reg_n_0_[7] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[8] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1_n_0 ), + .D(p_0_out[8]), + .Q(\txeq_preset_reg_n_0_[8] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[9] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1_n_0 ), + .D(p_0_out[9]), + .Q(\txeq_preset_reg_n_0_[9] ), + .R(1'b0)); + LUT5 #( + .INIT(32'h45404040)) + \txeq_txcoeff[0]_i_1 + (.I0(fsm_tx[2]), + .I1(\txeq_txcoeff[0]_i_2_n_0 ), + .I2(fsm_tx[1]), + .I3(fsm_tx[0]), + .I4(\txeq_txcoeff_reg_n_0_[6] ), + .O(\txeq_txcoeff[0]_i_1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[0]_i_2 + (.I0(\txeq_txcoeff_reg_n_0_[6] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[7] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[0] ), + .O(\txeq_txcoeff[0]_i_2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[10]_i_1 + (.I0(\txeq_txcoeff_reg_n_0_[9] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[10]_i_2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[16] ), + .O(\txeq_txcoeff[10]_i_1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[10]_i_2 + (.I0(\txeq_txcoeff_reg_n_0_[16] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[17] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[10] ), + .O(\txeq_txcoeff[10]_i_2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[11]_i_1 + (.I0(\txeq_txcoeff_reg_n_0_[10] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[11]_i_2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[17] ), + .O(\txeq_txcoeff[11]_i_1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[11]_i_2 + (.I0(\txeq_txcoeff_reg_n_0_[17] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[18] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[11] ), + .O(\txeq_txcoeff[11]_i_2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[12]_i_1 + (.I0(\txeq_txcoeff_reg_n_0_[11] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[12]_i_2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[18] ), + .O(\txeq_txcoeff[12]_i_1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[12]_i_2 + (.I0(\txeq_txcoeff_reg_n_0_[18] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(txeq_deemph_reg2[0]), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[12] ), + .O(\txeq_txcoeff[12]_i_2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[13]_i_1 + (.I0(\txeq_txcoeff_reg_n_0_[12] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[13]_i_2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(txeq_deemph_reg2[0]), + .O(\txeq_txcoeff[13]_i_1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[13]_i_2 + (.I0(txeq_deemph_reg2[0]), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(txeq_deemph_reg2[1]), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[13] ), + .O(\txeq_txcoeff[13]_i_2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[14]_i_1 + (.I0(\txeq_txcoeff_reg_n_0_[13] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[14]_i_2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(txeq_deemph_reg2[1]), + .O(\txeq_txcoeff[14]_i_1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[14]_i_2 + (.I0(txeq_deemph_reg2[1]), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(txeq_deemph_reg2[2]), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[14] ), + .O(\txeq_txcoeff[14]_i_2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[15]_i_1 + (.I0(\txeq_txcoeff_reg_n_0_[14] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[15]_i_2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(txeq_deemph_reg2[2]), + .O(\txeq_txcoeff[15]_i_1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[15]_i_2 + (.I0(txeq_deemph_reg2[2]), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(txeq_deemph_reg2[3]), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[15] ), + .O(\txeq_txcoeff[15]_i_2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[16]_i_1 + (.I0(\txeq_txcoeff_reg_n_0_[15] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[16]_i_2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(txeq_deemph_reg2[3]), + .O(\txeq_txcoeff[16]_i_1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[16]_i_2 + (.I0(txeq_deemph_reg2[3]), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(txeq_deemph_reg2[4]), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[16] ), + .O(\txeq_txcoeff[16]_i_2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[17]_i_1 + (.I0(\txeq_txcoeff_reg_n_0_[16] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[17]_i_2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(txeq_deemph_reg2[4]), + .O(\txeq_txcoeff[17]_i_1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[17]_i_2 + (.I0(txeq_deemph_reg2[4]), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(txeq_deemph_reg2[5]), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[17] ), + .O(\txeq_txcoeff[17]_i_2_n_0 )); + LUT5 #( + .INIT(32'hFF040FFF)) + \txeq_txcoeff[18]_i_1 + (.I0(txeq_control_reg2[0]), + .I1(txeq_control_reg2[1]), + .I2(fsm_tx[2]), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .O(txeq_txcoeff)); + LUT6 #( + .INIT(64'h22F3220022002200)) + \txeq_txcoeff[18]_i_2 + (.I0(\txeq_txcoeff_reg_n_0_[17] ), + .I1(fsm_tx[1]), + .I2(\txeq_txcoeff[18]_i_3_n_0 ), + .I3(fsm_tx[2]), + .I4(txeq_deemph_reg2[5]), + .I5(fsm_tx[0]), + .O(\txeq_txcoeff[18]_i_2_n_0 )); + LUT2 #( + .INIT(4'hB)) + \txeq_txcoeff[18]_i_3 + (.I0(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .O(\txeq_txcoeff[18]_i_3_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[1]_i_1 + (.I0(\txeq_txcoeff_reg_n_0_[0] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[1]_i_2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[7] ), + .O(\txeq_txcoeff[1]_i_1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[1]_i_2 + (.I0(\txeq_txcoeff_reg_n_0_[7] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[8] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[1] ), + .O(\txeq_txcoeff[1]_i_2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[2]_i_1 + (.I0(\txeq_txcoeff_reg_n_0_[1] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[2]_i_2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[8] ), + .O(\txeq_txcoeff[2]_i_1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[2]_i_2 + (.I0(\txeq_txcoeff_reg_n_0_[8] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[9] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[2] ), + .O(\txeq_txcoeff[2]_i_2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[3]_i_1 + (.I0(\txeq_txcoeff_reg_n_0_[2] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[3]_i_2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[9] ), + .O(\txeq_txcoeff[3]_i_1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[3]_i_2 + (.I0(\txeq_txcoeff_reg_n_0_[9] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[10] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[3] ), + .O(\txeq_txcoeff[3]_i_2_n_0 )); + LUT4 #( + .INIT(16'h2F20)) + \txeq_txcoeff[4]_i_1 + (.I0(\txeq_txcoeff_reg_n_0_[3] ), + .I1(fsm_tx[1]), + .I2(fsm_tx[2]), + .I3(\txeq_txcoeff[4]_i_2_n_0 ), + .O(\txeq_txcoeff[4]_i_1_n_0 )); + LUT6 #( + .INIT(64'hCACCCCCC00000000)) + \txeq_txcoeff[4]_i_2 + (.I0(\txeq_txcoeff_reg_n_0_[11] ), + .I1(\txeq_txcoeff_reg_n_0_[10] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I3(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I4(fsm_tx[1]), + .I5(fsm_tx[0]), + .O(\txeq_txcoeff[4]_i_2_n_0 )); + LUT4 #( + .INIT(16'h2F20)) + \txeq_txcoeff[5]_i_1 + (.I0(\txeq_txcoeff_reg_n_0_[4] ), + .I1(fsm_tx[1]), + .I2(fsm_tx[2]), + .I3(\txeq_txcoeff[5]_i_2_n_0 ), + .O(\txeq_txcoeff[5]_i_1_n_0 )); + LUT6 #( + .INIT(64'hCACCCCCC00000000)) + \txeq_txcoeff[5]_i_2 + (.I0(\txeq_txcoeff_reg_n_0_[12] ), + .I1(\txeq_txcoeff_reg_n_0_[11] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I3(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I4(fsm_tx[1]), + .I5(fsm_tx[0]), + .O(\txeq_txcoeff[5]_i_2_n_0 )); + LUT4 #( + .INIT(16'h2F20)) + \txeq_txcoeff[6]_i_1 + (.I0(\txeq_txcoeff_reg_n_0_[5] ), + .I1(fsm_tx[1]), + .I2(fsm_tx[2]), + .I3(\txeq_txcoeff[6]_i_2_n_0 ), + .O(\txeq_txcoeff[6]_i_1_n_0 )); + LUT6 #( + .INIT(64'hCACCCCCC00000000)) + \txeq_txcoeff[6]_i_2 + (.I0(\txeq_txcoeff_reg_n_0_[13] ), + .I1(\txeq_txcoeff_reg_n_0_[12] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I3(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I4(fsm_tx[1]), + .I5(fsm_tx[0]), + .O(\txeq_txcoeff[6]_i_2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[7]_i_1 + (.I0(\txeq_txcoeff_reg_n_0_[6] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[7]_i_2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[13] ), + .O(\txeq_txcoeff[7]_i_1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[7]_i_2 + (.I0(\txeq_txcoeff_reg_n_0_[13] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[14] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[7] ), + .O(\txeq_txcoeff[7]_i_2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[8]_i_1 + (.I0(\txeq_txcoeff_reg_n_0_[7] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[8]_i_2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[14] ), + .O(\txeq_txcoeff[8]_i_1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[8]_i_2 + (.I0(\txeq_txcoeff_reg_n_0_[14] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[15] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[8] ), + .O(\txeq_txcoeff[8]_i_2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[9]_i_1 + (.I0(\txeq_txcoeff_reg_n_0_[8] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[9]_i_2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[15] ), + .O(\txeq_txcoeff[9]_i_1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[9]_i_2 + (.I0(\txeq_txcoeff_reg_n_0_[15] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[16] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[9] ), + .O(\txeq_txcoeff[9]_i_2_n_0 )); + LUT6 #( + .INIT(64'h000004000F000400)) + \txeq_txcoeff_cnt[0]_i_1 + (.I0(txeq_control_reg2[0]), + .I1(txeq_control_reg2[1]), + .I2(fsm_tx[2]), + .I3(fsm_tx[0]), + .I4(fsm_tx[1]), + .I5(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .O(txeq_txcoeff_cnt[0])); + (* SOFT_HLUTNM = "soft_lutpair49" *) + LUT5 #( + .INIT(32'h00006000)) + \txeq_txcoeff_cnt[1]_i_1 + (.I0(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I2(fsm_tx[0]), + .I3(fsm_tx[1]), + .I4(fsm_tx[2]), + .O(txeq_txcoeff_cnt[1])); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_txcoeff_cnt[0]), + .Q(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_txcoeff_cnt[1]), + .Q(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[0] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[0]_i_1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[10] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[10]_i_1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[10] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[11] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[11]_i_1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[11] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[12] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[12]_i_1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[12] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[13] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[13]_i_1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[13] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[14] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[14]_i_1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[14] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[15] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[15]_i_1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[15] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[16] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[16]_i_1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[16] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[17] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[17]_i_1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[17] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[18] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[18]_i_2_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[18] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[1] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[1]_i_1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[2] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[2]_i_1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[3] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[3]_i_1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[4] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[4]_i_1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[5] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[5]_i_1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[5] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[6] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[6]_i_1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[6] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[7] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[7]_i_1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[7] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[8] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[8]_i_1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[8] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[9] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[9]_i_1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[9] ), + .R(RST_CPLLRESET)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pipe_eq" *) +module pcie_7x_0_pcie_7x_0_pipe_eq_39 + (TXPRECURSOR, + TXMAINCURSOR, + TXPOSTCURSOR, + USER_RXEQ_ADAPT_DONE, + RST_CPLLRESET, + pipe_pclk_in, + rate_gen3_1); + output [4:0]TXPRECURSOR; + output [6:0]TXMAINCURSOR; + output [4:0]TXPOSTCURSOR; + output USER_RXEQ_ADAPT_DONE; + input RST_CPLLRESET; + input pipe_pclk_in; + input rate_gen3_1; + + wire \FSM_onehot_fsm_rx[1]_i_1__0_n_0 ; + wire \FSM_onehot_fsm_rx[1]_i_2__0_n_0 ; + wire \FSM_onehot_fsm_rx[3]_i_1__0_n_0 ; + wire \FSM_onehot_fsm_rx[4]_i_1__0_n_0 ; + wire \FSM_onehot_fsm_rx_reg_n_0_[1] ; + wire \FSM_onehot_fsm_rx_reg_n_0_[2] ; + wire \FSM_onehot_fsm_rx_reg_n_0_[3] ; + wire \FSM_onehot_fsm_rx_reg_n_0_[4] ; + wire \FSM_onehot_fsm_rx_reg_n_0_[5] ; + wire \FSM_onehot_fsm_rx_reg_n_0_[6] ; + wire \FSM_sequential_fsm_tx[1]_i_2__0_n_0 ; + wire \FSM_sequential_fsm_tx[2]_i_2__0_n_0 ; + wire RST_CPLLRESET; + wire [6:0]TXMAINCURSOR; + wire [4:0]TXPOSTCURSOR; + wire [4:0]TXPRECURSOR; + wire USER_RXEQ_ADAPT_DONE; + wire [2:0]fsm_tx; + wire [2:0]fsm_tx__0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gen3_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gen3_reg2; + wire [17:0]p_0_out; + wire pipe_pclk_in; + wire rate_gen3_1; + wire rxeq_adapt_done_i_2__0_n_0; + wire rxeq_adapt_done_reg_i_2__0_n_0; + wire rxeq_adapt_done_reg_reg_n_0; + wire [2:0]rxeq_cnt; + wire \rxeq_cnt_reg_n_0_[0] ; + wire \rxeq_cnt_reg_n_0_[1] ; + wire \rxeq_cnt_reg_n_0_[2] ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rxeq_control_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rxeq_control_reg2; + wire [5:0]rxeq_fs; + wire \rxeq_fs[5]_i_1__0_n_0 ; + wire \rxeq_fs_reg_n_0_[0] ; + wire \rxeq_fs_reg_n_0_[1] ; + wire \rxeq_fs_reg_n_0_[2] ; + wire \rxeq_fs_reg_n_0_[3] ; + wire \rxeq_fs_reg_n_0_[4] ; + wire \rxeq_fs_reg_n_0_[5] ; + wire [5:0]rxeq_lf; + wire \rxeq_lf[5]_i_1__0_n_0 ; + wire \rxeq_lf_reg_n_0_[0] ; + wire \rxeq_lf_reg_n_0_[1] ; + wire \rxeq_lf_reg_n_0_[2] ; + wire \rxeq_lf_reg_n_0_[3] ; + wire \rxeq_lf_reg_n_0_[4] ; + wire \rxeq_lf_reg_n_0_[5] ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]rxeq_lffs_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]rxeq_lffs_reg2; + wire rxeq_new_txcoeff_req; + wire rxeq_new_txcoeff_req_reg_n_0; + wire \rxeq_preset[0]_i_1__0_n_0 ; + wire \rxeq_preset[1]_i_1__0_n_0 ; + wire \rxeq_preset[2]_i_1__0_n_0 ; + wire \rxeq_preset[2]_i_2__0_n_0 ; + wire \rxeq_preset[2]_i_3__0_n_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [2:0]rxeq_preset_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [2:0]rxeq_preset_reg2; + wire \rxeq_preset_reg_n_0_[0] ; + wire \rxeq_preset_reg_n_0_[1] ; + wire \rxeq_preset_reg_n_0_[2] ; + wire rxeq_preset_valid; + wire rxeq_scan_i_n_0; + wire rxeq_scan_i_n_1; + wire rxeq_scan_i_n_2; + wire rxeq_scan_i_n_4; + wire rxeq_scan_i_n_5; + wire [17:0]rxeq_txcoeff; + wire \rxeq_txcoeff_reg_n_0_[0] ; + wire \rxeq_txcoeff_reg_n_0_[10] ; + wire \rxeq_txcoeff_reg_n_0_[11] ; + wire \rxeq_txcoeff_reg_n_0_[12] ; + wire \rxeq_txcoeff_reg_n_0_[13] ; + wire \rxeq_txcoeff_reg_n_0_[14] ; + wire \rxeq_txcoeff_reg_n_0_[15] ; + wire \rxeq_txcoeff_reg_n_0_[16] ; + wire \rxeq_txcoeff_reg_n_0_[17] ; + wire \rxeq_txcoeff_reg_n_0_[1] ; + wire \rxeq_txcoeff_reg_n_0_[2] ; + wire \rxeq_txcoeff_reg_n_0_[3] ; + wire \rxeq_txcoeff_reg_n_0_[4] ; + wire \rxeq_txcoeff_reg_n_0_[5] ; + wire \rxeq_txcoeff_reg_n_0_[6] ; + wire \rxeq_txcoeff_reg_n_0_[7] ; + wire \rxeq_txcoeff_reg_n_0_[8] ; + wire \rxeq_txcoeff_reg_n_0_[9] ; + wire [3:0]rxeq_txpreset; + wire \rxeq_txpreset[3]_i_1__0_n_0 ; + wire \rxeq_txpreset[3]_i_3__0_n_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]rxeq_txpreset_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]rxeq_txpreset_reg2; + wire \rxeq_txpreset_reg_n_0_[0] ; + wire \rxeq_txpreset_reg_n_0_[1] ; + wire \rxeq_txpreset_reg_n_0_[2] ; + wire \rxeq_txpreset_reg_n_0_[3] ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxeq_user_en_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxeq_user_en_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxeq_user_mode_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxeq_user_mode_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [17:0]rxeq_user_txcoeff_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [17:0]rxeq_user_txcoeff_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]txeq_control_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]txeq_control_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]txeq_deemph_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]txeq_deemph_reg2; + wire \txeq_preset[17]_i_1__0_n_0 ; + wire \txeq_preset[3]_i_1__0_n_0 ; + wire \txeq_preset[7]_i_1__0_n_0 ; + wire txeq_preset_done; + wire txeq_preset_done_i_1__0_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]txeq_preset_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]txeq_preset_reg2; + wire \txeq_preset_reg_n_0_[0] ; + wire \txeq_preset_reg_n_0_[10] ; + wire \txeq_preset_reg_n_0_[11] ; + wire \txeq_preset_reg_n_0_[12] ; + wire \txeq_preset_reg_n_0_[13] ; + wire \txeq_preset_reg_n_0_[14] ; + wire \txeq_preset_reg_n_0_[15] ; + wire \txeq_preset_reg_n_0_[16] ; + wire \txeq_preset_reg_n_0_[17] ; + wire \txeq_preset_reg_n_0_[1] ; + wire \txeq_preset_reg_n_0_[2] ; + wire \txeq_preset_reg_n_0_[3] ; + wire \txeq_preset_reg_n_0_[7] ; + wire \txeq_preset_reg_n_0_[8] ; + wire \txeq_preset_reg_n_0_[9] ; + wire txeq_txcoeff; + wire \txeq_txcoeff[0]_i_1__0_n_0 ; + wire \txeq_txcoeff[0]_i_2__0_n_0 ; + wire \txeq_txcoeff[10]_i_1__0_n_0 ; + wire \txeq_txcoeff[10]_i_2__0_n_0 ; + wire \txeq_txcoeff[11]_i_1__0_n_0 ; + wire \txeq_txcoeff[11]_i_2__0_n_0 ; + wire \txeq_txcoeff[12]_i_1__0_n_0 ; + wire \txeq_txcoeff[12]_i_2__0_n_0 ; + wire \txeq_txcoeff[13]_i_1__0_n_0 ; + wire \txeq_txcoeff[13]_i_2__0_n_0 ; + wire \txeq_txcoeff[14]_i_1__0_n_0 ; + wire \txeq_txcoeff[14]_i_2__0_n_0 ; + wire \txeq_txcoeff[15]_i_1__0_n_0 ; + wire \txeq_txcoeff[15]_i_2__0_n_0 ; + wire \txeq_txcoeff[16]_i_1__0_n_0 ; + wire \txeq_txcoeff[16]_i_2__0_n_0 ; + wire \txeq_txcoeff[17]_i_1__0_n_0 ; + wire \txeq_txcoeff[17]_i_2__0_n_0 ; + wire \txeq_txcoeff[18]_i_2__0_n_0 ; + wire \txeq_txcoeff[18]_i_3__0_n_0 ; + wire \txeq_txcoeff[1]_i_1__0_n_0 ; + wire \txeq_txcoeff[1]_i_2__0_n_0 ; + wire \txeq_txcoeff[2]_i_1__0_n_0 ; + wire \txeq_txcoeff[2]_i_2__0_n_0 ; + wire \txeq_txcoeff[3]_i_1__0_n_0 ; + wire \txeq_txcoeff[3]_i_2__0_n_0 ; + wire \txeq_txcoeff[4]_i_1__0_n_0 ; + wire \txeq_txcoeff[4]_i_2__0_n_0 ; + wire \txeq_txcoeff[5]_i_1__0_n_0 ; + wire \txeq_txcoeff[5]_i_2__0_n_0 ; + wire \txeq_txcoeff[6]_i_1__0_n_0 ; + wire \txeq_txcoeff[6]_i_2__0_n_0 ; + wire \txeq_txcoeff[7]_i_1__0_n_0 ; + wire \txeq_txcoeff[7]_i_2__0_n_0 ; + wire \txeq_txcoeff[8]_i_1__0_n_0 ; + wire \txeq_txcoeff[8]_i_2__0_n_0 ; + wire \txeq_txcoeff[9]_i_1__0_n_0 ; + wire \txeq_txcoeff[9]_i_2__0_n_0 ; + wire [1:0]txeq_txcoeff_cnt; + wire \txeq_txcoeff_cnt_reg_n_0_[0] ; + wire \txeq_txcoeff_cnt_reg_n_0_[1] ; + wire \txeq_txcoeff_reg_n_0_[0] ; + wire \txeq_txcoeff_reg_n_0_[10] ; + wire \txeq_txcoeff_reg_n_0_[11] ; + wire \txeq_txcoeff_reg_n_0_[12] ; + wire \txeq_txcoeff_reg_n_0_[13] ; + wire \txeq_txcoeff_reg_n_0_[14] ; + wire \txeq_txcoeff_reg_n_0_[15] ; + wire \txeq_txcoeff_reg_n_0_[16] ; + wire \txeq_txcoeff_reg_n_0_[17] ; + wire \txeq_txcoeff_reg_n_0_[18] ; + wire \txeq_txcoeff_reg_n_0_[1] ; + wire \txeq_txcoeff_reg_n_0_[2] ; + wire \txeq_txcoeff_reg_n_0_[3] ; + wire \txeq_txcoeff_reg_n_0_[4] ; + wire \txeq_txcoeff_reg_n_0_[5] ; + wire \txeq_txcoeff_reg_n_0_[6] ; + wire \txeq_txcoeff_reg_n_0_[7] ; + wire \txeq_txcoeff_reg_n_0_[8] ; + wire \txeq_txcoeff_reg_n_0_[9] ; + + LUT5 #( + .INIT(32'hABABABAA)) + \FSM_onehot_fsm_rx[1]_i_1__0 + (.I0(\FSM_onehot_fsm_rx[1]_i_2__0_n_0 ), + .I1(rxeq_control_reg2[1]), + .I2(rxeq_control_reg2[0]), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[6] ), + .O(\FSM_onehot_fsm_rx[1]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'h0000000000000001)) + \FSM_onehot_fsm_rx[1]_i_2__0 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[6] ), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I5(\FSM_onehot_fsm_rx_reg_n_0_[5] ), + .O(\FSM_onehot_fsm_rx[1]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'hFFFFF8FF88888888)) + \FSM_onehot_fsm_rx[3]_i_1__0 + (.I0(rxeq_control_reg2[1]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I2(\rxeq_cnt_reg_n_0_[2] ), + .I3(\rxeq_cnt_reg_n_0_[1] ), + .I4(\rxeq_cnt_reg_n_0_[0] ), + .I5(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .O(\FSM_onehot_fsm_rx[3]_i_1__0_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair102" *) + LUT5 #( + .INIT(32'h2ABA2AAA)) + \FSM_onehot_fsm_rx[4]_i_1__0 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(\rxeq_cnt_reg_n_0_[2] ), + .I2(\rxeq_cnt_reg_n_0_[1] ), + .I3(\rxeq_cnt_reg_n_0_[0] ), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .O(\FSM_onehot_fsm_rx[4]_i_1__0_n_0 )); + (* FSM_ENCODED_STATES = "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001" *) + FDSE #( + .INIT(1'b0)) + \FSM_onehot_fsm_rx_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm_rx[1]_i_1__0_n_0 ), + .Q(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .S(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_rx_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_scan_i_n_2), + .Q(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_rx_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm_rx[3]_i_1__0_n_0 ), + .Q(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_rx_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm_rx[4]_i_1__0_n_0 ), + .Q(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_rx_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_scan_i_n_1), + .Q(\FSM_onehot_fsm_rx_reg_n_0_[5] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_rx_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_scan_i_n_0), + .Q(\FSM_onehot_fsm_rx_reg_n_0_[6] ), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'hC04FC043C04FF04F)) + \FSM_sequential_fsm_tx[0]_i_1__0 + (.I0(\FSM_sequential_fsm_tx[1]_i_2__0_n_0 ), + .I1(fsm_tx[0]), + .I2(fsm_tx[1]), + .I3(fsm_tx[2]), + .I4(txeq_control_reg2[1]), + .I5(txeq_control_reg2[0]), + .O(fsm_tx__0[0])); + LUT6 #( + .INIT(64'h3F703F7C3F7C0F70)) + \FSM_sequential_fsm_tx[1]_i_1__0 + (.I0(\FSM_sequential_fsm_tx[1]_i_2__0_n_0 ), + .I1(fsm_tx[0]), + .I2(fsm_tx[1]), + .I3(fsm_tx[2]), + .I4(txeq_control_reg2[1]), + .I5(txeq_control_reg2[0]), + .O(fsm_tx__0[1])); + (* SOFT_HLUTNM = "soft_lutpair100" *) + LUT2 #( + .INIT(4'h2)) + \FSM_sequential_fsm_tx[1]_i_2__0 + (.I0(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .O(\FSM_sequential_fsm_tx[1]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'h3A2A2A227F7F7F77)) + \FSM_sequential_fsm_tx[2]_i_1__0 + (.I0(fsm_tx[2]), + .I1(fsm_tx[1]), + .I2(fsm_tx[0]), + .I3(txeq_control_reg2[1]), + .I4(txeq_control_reg2[0]), + .I5(\FSM_sequential_fsm_tx[2]_i_2__0_n_0 ), + .O(fsm_tx__0[2])); + (* SOFT_HLUTNM = "soft_lutpair100" *) + LUT5 #( + .INIT(32'hD0FFDFFF)) + \FSM_sequential_fsm_tx[2]_i_2__0 + (.I0(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I2(fsm_tx[0]), + .I3(fsm_tx[1]), + .I4(txeq_preset_done), + .O(\FSM_sequential_fsm_tx[2]_i_2__0_n_0 )); + (* FSM_ENCODED_STATES = "FSM_TXEQ_QUERY:101,FSM_TXEQ_PRESET:010,FSM_TXEQ_TXCOEFF:011,FSM_TXEQ_REMAP:100,FSM_TXEQ_DONE:110,FSM_TXEQ_IDLE:001,iSTATE:000" *) + FDSE #( + .INIT(1'b0)) + \FSM_sequential_fsm_tx_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm_tx__0[0]), + .Q(fsm_tx[0]), + .S(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_TXEQ_QUERY:101,FSM_TXEQ_PRESET:010,FSM_TXEQ_TXCOEFF:011,FSM_TXEQ_REMAP:100,FSM_TXEQ_DONE:110,FSM_TXEQ_IDLE:001,iSTATE:000" *) + FDRE #( + .INIT(1'b0)) + \FSM_sequential_fsm_tx_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm_tx__0[1]), + .Q(fsm_tx[1]), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_TXEQ_QUERY:101,FSM_TXEQ_PRESET:010,FSM_TXEQ_TXCOEFF:011,FSM_TXEQ_REMAP:100,FSM_TXEQ_DONE:110,FSM_TXEQ_IDLE:001,iSTATE:000" *) + FDRE #( + .INIT(1'b0)) + \FSM_sequential_fsm_tx_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm_tx__0[2]), + .Q(fsm_tx[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gen3_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rate_gen3_1), + .Q(gen3_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gen3_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gen3_reg1), + .Q(gen3_reg2), + .R(RST_CPLLRESET)); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_22__0 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[17] ), + .O(TXPOSTCURSOR[4])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_23__0 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[16] ), + .O(TXPOSTCURSOR[3])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_24__0 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[15] ), + .O(TXPOSTCURSOR[2])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_25__0 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[14] ), + .O(TXPOSTCURSOR[1])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_26__0 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[13] ), + .O(TXPOSTCURSOR[0])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_27__0 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[4] ), + .O(TXPRECURSOR[4])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_28__0 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[3] ), + .O(TXPRECURSOR[3])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_29__0 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[2] ), + .O(TXPRECURSOR[2])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_30__0 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[1] ), + .O(TXPRECURSOR[1])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_31__0 + (.I0(\txeq_txcoeff_reg_n_0_[0] ), + .I1(gen3_reg2), + .O(TXPRECURSOR[0])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_32__0 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[12] ), + .O(TXMAINCURSOR[6])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_33__0 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[11] ), + .O(TXMAINCURSOR[5])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_34__0 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[10] ), + .O(TXMAINCURSOR[4])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_35__0 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[9] ), + .O(TXMAINCURSOR[3])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_36__0 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[8] ), + .O(TXMAINCURSOR[2])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_37__0 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[7] ), + .O(TXMAINCURSOR[1])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_38__0 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[6] ), + .O(TXMAINCURSOR[0])); + LUT6 #( + .INIT(64'hFFFFFFFEFFFFFFFF)) + rxeq_adapt_done_i_2__0 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[5] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I5(\FSM_onehot_fsm_rx_reg_n_0_[6] ), + .O(rxeq_adapt_done_i_2__0_n_0)); + FDRE #( + .INIT(1'b0)) + rxeq_adapt_done_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_scan_i_n_5), + .Q(USER_RXEQ_ADAPT_DONE), + .R(RST_CPLLRESET)); + LUT3 #( + .INIT(8'h08)) + rxeq_adapt_done_reg_i_2__0 + (.I0(rxeq_control_reg2[0]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I2(rxeq_control_reg2[1]), + .O(rxeq_adapt_done_reg_i_2__0_n_0)); + FDRE #( + .INIT(1'b0)) + rxeq_adapt_done_reg_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_scan_i_n_4), + .Q(rxeq_adapt_done_reg_reg_n_0), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h8888FFF8)) + \rxeq_cnt[0]_i_1__0 + (.I0(rxeq_control_reg2[1]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I4(\rxeq_cnt_reg_n_0_[0] ), + .O(rxeq_cnt[0])); + (* SOFT_HLUTNM = "soft_lutpair103" *) + LUT4 #( + .INIT(16'h6660)) + \rxeq_cnt[1]_i_1__0 + (.I0(\rxeq_cnt_reg_n_0_[0] ), + .I1(\rxeq_cnt_reg_n_0_[1] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .O(rxeq_cnt[1])); + (* SOFT_HLUTNM = "soft_lutpair102" *) + LUT5 #( + .INIT(32'h78787800)) + \rxeq_cnt[2]_i_1__0 + (.I0(\rxeq_cnt_reg_n_0_[1] ), + .I1(\rxeq_cnt_reg_n_0_[0] ), + .I2(\rxeq_cnt_reg_n_0_[2] ), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .O(rxeq_cnt[2])); + FDRE #( + .INIT(1'b0)) + \rxeq_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_cnt[0]), + .Q(\rxeq_cnt_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_cnt[1]), + .Q(\rxeq_cnt_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_cnt_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_cnt[2]), + .Q(\rxeq_cnt_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_control_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_control_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_control_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_control_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_control_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_control_reg1[0]), + .Q(rxeq_control_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_control_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_control_reg1[1]), + .Q(rxeq_control_reg2[1]), + .R(RST_CPLLRESET)); + LUT2 #( + .INIT(4'h8)) + \rxeq_fs[0]_i_1__0 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(rxeq_lffs_reg2[0]), + .O(rxeq_fs[0])); + LUT2 #( + .INIT(4'h8)) + \rxeq_fs[1]_i_1__0 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(rxeq_lffs_reg2[1]), + .O(rxeq_fs[1])); + LUT2 #( + .INIT(4'h8)) + \rxeq_fs[2]_i_1__0 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(rxeq_lffs_reg2[2]), + .O(rxeq_fs[2])); + LUT2 #( + .INIT(4'h8)) + \rxeq_fs[3]_i_1__0 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(rxeq_lffs_reg2[3]), + .O(rxeq_fs[3])); + LUT2 #( + .INIT(4'h8)) + \rxeq_fs[4]_i_1__0 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(rxeq_lffs_reg2[4]), + .O(rxeq_fs[4])); + LUT3 #( + .INIT(8'hF8)) + \rxeq_fs[5]_i_1__0 + (.I0(rxeq_control_reg2[1]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I2(\FSM_onehot_fsm_rx[1]_i_2__0_n_0 ), + .O(\rxeq_fs[5]_i_1__0_n_0 )); + LUT2 #( + .INIT(4'h8)) + \rxeq_fs[5]_i_2__0 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(rxeq_lffs_reg2[5]), + .O(rxeq_fs[5])); + FDRE #( + .INIT(1'b0)) + \rxeq_fs_reg[0] + (.C(pipe_pclk_in), + .CE(\rxeq_fs[5]_i_1__0_n_0 ), + .D(rxeq_fs[0]), + .Q(\rxeq_fs_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_fs_reg[1] + (.C(pipe_pclk_in), + .CE(\rxeq_fs[5]_i_1__0_n_0 ), + .D(rxeq_fs[1]), + .Q(\rxeq_fs_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_fs_reg[2] + (.C(pipe_pclk_in), + .CE(\rxeq_fs[5]_i_1__0_n_0 ), + .D(rxeq_fs[2]), + .Q(\rxeq_fs_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_fs_reg[3] + (.C(pipe_pclk_in), + .CE(\rxeq_fs[5]_i_1__0_n_0 ), + .D(rxeq_fs[3]), + .Q(\rxeq_fs_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_fs_reg[4] + (.C(pipe_pclk_in), + .CE(\rxeq_fs[5]_i_1__0_n_0 ), + .D(rxeq_fs[4]), + .Q(\rxeq_fs_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_fs_reg[5] + (.C(pipe_pclk_in), + .CE(\rxeq_fs[5]_i_1__0_n_0 ), + .D(rxeq_fs[5]), + .Q(\rxeq_fs_reg_n_0_[5] ), + .R(RST_CPLLRESET)); + LUT2 #( + .INIT(4'h8)) + \rxeq_lf[0]_i_1__0 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(rxeq_lffs_reg2[0]), + .O(rxeq_lf[0])); + LUT2 #( + .INIT(4'h8)) + \rxeq_lf[1]_i_1__0 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(rxeq_lffs_reg2[1]), + .O(rxeq_lf[1])); + LUT2 #( + .INIT(4'h8)) + \rxeq_lf[2]_i_1__0 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(rxeq_lffs_reg2[2]), + .O(rxeq_lf[2])); + LUT2 #( + .INIT(4'h8)) + \rxeq_lf[3]_i_1__0 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(rxeq_lffs_reg2[3]), + .O(rxeq_lf[3])); + LUT2 #( + .INIT(4'h8)) + \rxeq_lf[4]_i_1__0 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(rxeq_lffs_reg2[4]), + .O(rxeq_lf[4])); + LUT5 #( + .INIT(32'hEAAAAAAA)) + \rxeq_lf[5]_i_1__0 + (.I0(\FSM_onehot_fsm_rx[1]_i_2__0_n_0 ), + .I1(\rxeq_cnt_reg_n_0_[2] ), + .I2(\rxeq_cnt_reg_n_0_[0] ), + .I3(\rxeq_cnt_reg_n_0_[1] ), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .O(\rxeq_lf[5]_i_1__0_n_0 )); + LUT2 #( + .INIT(4'h8)) + \rxeq_lf[5]_i_2__0 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(rxeq_lffs_reg2[5]), + .O(rxeq_lf[5])); + FDRE #( + .INIT(1'b0)) + \rxeq_lf_reg[0] + (.C(pipe_pclk_in), + .CE(\rxeq_lf[5]_i_1__0_n_0 ), + .D(rxeq_lf[0]), + .Q(\rxeq_lf_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_lf_reg[1] + (.C(pipe_pclk_in), + .CE(\rxeq_lf[5]_i_1__0_n_0 ), + .D(rxeq_lf[1]), + .Q(\rxeq_lf_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_lf_reg[2] + (.C(pipe_pclk_in), + .CE(\rxeq_lf[5]_i_1__0_n_0 ), + .D(rxeq_lf[2]), + .Q(\rxeq_lf_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_lf_reg[3] + (.C(pipe_pclk_in), + .CE(\rxeq_lf[5]_i_1__0_n_0 ), + .D(rxeq_lf[3]), + .Q(\rxeq_lf_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_lf_reg[4] + (.C(pipe_pclk_in), + .CE(\rxeq_lf[5]_i_1__0_n_0 ), + .D(rxeq_lf[4]), + .Q(\rxeq_lf_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_lf_reg[5] + (.C(pipe_pclk_in), + .CE(\rxeq_lf[5]_i_1__0_n_0 ), + .D(rxeq_lf[5]), + .Q(\rxeq_lf_reg_n_0_[5] ), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_lffs_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_lffs_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_lffs_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_lffs_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg1_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_lffs_reg1[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg1_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_lffs_reg1[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_lffs_reg1[0]), + .Q(rxeq_lffs_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_lffs_reg1[1]), + .Q(rxeq_lffs_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_lffs_reg1[2]), + .Q(rxeq_lffs_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_lffs_reg1[3]), + .Q(rxeq_lffs_reg2[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_lffs_reg1[4]), + .Q(rxeq_lffs_reg2[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_lffs_reg1[5]), + .Q(rxeq_lffs_reg2[5]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + rxeq_new_txcoeff_req_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_new_txcoeff_req), + .Q(rxeq_new_txcoeff_req_reg_n_0), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'hA8FFA800)) + \rxeq_preset[0]_i_1__0 + (.I0(rxeq_preset_reg2[0]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I3(\rxeq_preset[2]_i_2__0_n_0 ), + .I4(\rxeq_preset_reg_n_0_[0] ), + .O(\rxeq_preset[0]_i_1__0_n_0 )); + LUT5 #( + .INIT(32'hA8FFA800)) + \rxeq_preset[1]_i_1__0 + (.I0(rxeq_preset_reg2[1]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I3(\rxeq_preset[2]_i_2__0_n_0 ), + .I4(\rxeq_preset_reg_n_0_[1] ), + .O(\rxeq_preset[1]_i_1__0_n_0 )); + LUT5 #( + .INIT(32'hA8FFA800)) + \rxeq_preset[2]_i_1__0 + (.I0(rxeq_preset_reg2[2]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I3(\rxeq_preset[2]_i_2__0_n_0 ), + .I4(\rxeq_preset_reg_n_0_[2] ), + .O(\rxeq_preset[2]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFFFFF0002)) + \rxeq_preset[2]_i_2__0 + (.I0(\rxeq_preset[2]_i_3__0_n_0 ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[6] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[5] ), + .I4(rxeq_adapt_done_reg_i_2__0_n_0), + .I5(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .O(\rxeq_preset[2]_i_2__0_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair103" *) + LUT2 #( + .INIT(4'h1)) + \rxeq_preset[2]_i_3__0 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .O(\rxeq_preset[2]_i_3__0_n_0 )); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_preset_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_preset_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_preset_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_preset_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_preset_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_preset_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_preset_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_preset_reg1[0]), + .Q(rxeq_preset_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_preset_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_preset_reg1[1]), + .Q(rxeq_preset_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_preset_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_preset_reg1[2]), + .Q(rxeq_preset_reg2[2]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_preset_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rxeq_preset[0]_i_1__0_n_0 ), + .Q(\rxeq_preset_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_preset_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rxeq_preset[1]_i_1__0_n_0 ), + .Q(\rxeq_preset_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_preset_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rxeq_preset[2]_i_1__0_n_0 ), + .Q(\rxeq_preset_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + rxeq_preset_valid_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .Q(rxeq_preset_valid), + .R(RST_CPLLRESET)); + pcie_7x_0_pcie_7x_0_rxeq_scan_57 rxeq_scan_i + (.D({rxeq_scan_i_n_0,rxeq_scan_i_n_1,rxeq_scan_i_n_2}), + .\FSM_onehot_fsm_rx_reg[5] ({\rxeq_cnt_reg_n_0_[2] ,\rxeq_cnt_reg_n_0_[1] ,\rxeq_cnt_reg_n_0_[0] }), + .Q({\FSM_onehot_fsm_rx_reg_n_0_[6] ,\FSM_onehot_fsm_rx_reg_n_0_[5] ,\FSM_onehot_fsm_rx_reg_n_0_[4] ,\FSM_onehot_fsm_rx_reg_n_0_[2] ,\FSM_onehot_fsm_rx_reg_n_0_[1] }), + .RST_CPLLRESET(RST_CPLLRESET), + .USER_RXEQ_ADAPT_DONE(USER_RXEQ_ADAPT_DONE), + .adapt_done_reg_0(rxeq_scan_i_n_4), + .\fs_reg1_reg[5]_0 ({\rxeq_fs_reg_n_0_[5] ,\rxeq_fs_reg_n_0_[4] ,\rxeq_fs_reg_n_0_[3] ,\rxeq_fs_reg_n_0_[2] ,\rxeq_fs_reg_n_0_[1] ,\rxeq_fs_reg_n_0_[0] }), + .\lf_reg1_reg[5]_0 ({\rxeq_lf_reg_n_0_[5] ,\rxeq_lf_reg_n_0_[4] ,\rxeq_lf_reg_n_0_[3] ,\rxeq_lf_reg_n_0_[2] ,\rxeq_lf_reg_n_0_[1] ,\rxeq_lf_reg_n_0_[0] }), + .new_txcoeff_done_reg_0(rxeq_scan_i_n_5), + .new_txcoeff_req_reg1_reg_0(rxeq_new_txcoeff_req_reg_n_0), + .out(rxeq_control_reg2), + .pipe_pclk_in(pipe_pclk_in), + .\preset_reg1_reg[2]_0 ({\rxeq_preset_reg_n_0_[2] ,\rxeq_preset_reg_n_0_[1] ,\rxeq_preset_reg_n_0_[0] }), + .rxeq_adapt_done_reg(rxeq_adapt_done_i_2__0_n_0), + .rxeq_adapt_done_reg_reg(\FSM_onehot_fsm_rx[1]_i_2__0_n_0 ), + .rxeq_adapt_done_reg_reg_0(rxeq_adapt_done_reg_i_2__0_n_0), + .rxeq_adapt_done_reg_reg_1(rxeq_adapt_done_reg_reg_n_0), + .rxeq_new_txcoeff_req(rxeq_new_txcoeff_req), + .rxeq_preset_valid(rxeq_preset_valid), + .\txcoeff_reg1_reg[17]_0 ({\rxeq_txcoeff_reg_n_0_[17] ,\rxeq_txcoeff_reg_n_0_[16] ,\rxeq_txcoeff_reg_n_0_[15] ,\rxeq_txcoeff_reg_n_0_[14] ,\rxeq_txcoeff_reg_n_0_[13] ,\rxeq_txcoeff_reg_n_0_[12] ,\rxeq_txcoeff_reg_n_0_[11] ,\rxeq_txcoeff_reg_n_0_[10] ,\rxeq_txcoeff_reg_n_0_[9] ,\rxeq_txcoeff_reg_n_0_[8] ,\rxeq_txcoeff_reg_n_0_[7] ,\rxeq_txcoeff_reg_n_0_[6] ,\rxeq_txcoeff_reg_n_0_[5] ,\rxeq_txcoeff_reg_n_0_[4] ,\rxeq_txcoeff_reg_n_0_[3] ,\rxeq_txcoeff_reg_n_0_[2] ,\rxeq_txcoeff_reg_n_0_[1] ,\rxeq_txcoeff_reg_n_0_[0] }), + .\txpreset_reg1_reg[3]_0 ({\rxeq_txpreset_reg_n_0_[3] ,\rxeq_txpreset_reg_n_0_[2] ,\rxeq_txpreset_reg_n_0_[1] ,\rxeq_txpreset_reg_n_0_[0] })); + (* SOFT_HLUTNM = "soft_lutpair104" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[0]_i_1__0 + (.I0(\rxeq_txcoeff_reg_n_0_[6] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[0])); + (* SOFT_HLUTNM = "soft_lutpair109" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[10]_i_1__0 + (.I0(\rxeq_txcoeff_reg_n_0_[16] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[10])); + (* SOFT_HLUTNM = "soft_lutpair109" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[11]_i_1__0 + (.I0(\rxeq_txcoeff_reg_n_0_[17] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[11])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[12]_i_1__0 + (.I0(txeq_deemph_reg2[0]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[12])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[13]_i_1__0 + (.I0(txeq_deemph_reg2[1]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[13])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[14]_i_1__0 + (.I0(txeq_deemph_reg2[2]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[14])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[15]_i_1__0 + (.I0(txeq_deemph_reg2[3]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[15])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[16]_i_1__0 + (.I0(txeq_deemph_reg2[4]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[16])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[17]_i_1__0 + (.I0(txeq_deemph_reg2[5]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[17])); + (* SOFT_HLUTNM = "soft_lutpair104" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[1]_i_1__0 + (.I0(\rxeq_txcoeff_reg_n_0_[7] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[1])); + (* SOFT_HLUTNM = "soft_lutpair105" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[2]_i_1__0 + (.I0(\rxeq_txcoeff_reg_n_0_[8] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[2])); + (* SOFT_HLUTNM = "soft_lutpair105" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[3]_i_1__0 + (.I0(\rxeq_txcoeff_reg_n_0_[9] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[3])); + (* SOFT_HLUTNM = "soft_lutpair106" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[4]_i_1__0 + (.I0(\rxeq_txcoeff_reg_n_0_[10] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[4])); + (* SOFT_HLUTNM = "soft_lutpair106" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[5]_i_1__0 + (.I0(\rxeq_txcoeff_reg_n_0_[11] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[5])); + (* SOFT_HLUTNM = "soft_lutpair107" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[6]_i_1__0 + (.I0(\rxeq_txcoeff_reg_n_0_[12] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[6])); + (* SOFT_HLUTNM = "soft_lutpair107" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[7]_i_1__0 + (.I0(\rxeq_txcoeff_reg_n_0_[13] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[7])); + (* SOFT_HLUTNM = "soft_lutpair108" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[8]_i_1__0 + (.I0(\rxeq_txcoeff_reg_n_0_[14] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[8])); + (* SOFT_HLUTNM = "soft_lutpair108" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[9]_i_1__0 + (.I0(\rxeq_txcoeff_reg_n_0_[15] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[9])); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[0] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__0_n_0 ), + .D(rxeq_txcoeff[0]), + .Q(\rxeq_txcoeff_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[10] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__0_n_0 ), + .D(rxeq_txcoeff[10]), + .Q(\rxeq_txcoeff_reg_n_0_[10] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[11] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__0_n_0 ), + .D(rxeq_txcoeff[11]), + .Q(\rxeq_txcoeff_reg_n_0_[11] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[12] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__0_n_0 ), + .D(rxeq_txcoeff[12]), + .Q(\rxeq_txcoeff_reg_n_0_[12] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[13] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__0_n_0 ), + .D(rxeq_txcoeff[13]), + .Q(\rxeq_txcoeff_reg_n_0_[13] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[14] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__0_n_0 ), + .D(rxeq_txcoeff[14]), + .Q(\rxeq_txcoeff_reg_n_0_[14] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[15] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__0_n_0 ), + .D(rxeq_txcoeff[15]), + .Q(\rxeq_txcoeff_reg_n_0_[15] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[16] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__0_n_0 ), + .D(rxeq_txcoeff[16]), + .Q(\rxeq_txcoeff_reg_n_0_[16] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[17] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__0_n_0 ), + .D(rxeq_txcoeff[17]), + .Q(\rxeq_txcoeff_reg_n_0_[17] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[1] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__0_n_0 ), + .D(rxeq_txcoeff[1]), + .Q(\rxeq_txcoeff_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[2] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__0_n_0 ), + .D(rxeq_txcoeff[2]), + .Q(\rxeq_txcoeff_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[3] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__0_n_0 ), + .D(rxeq_txcoeff[3]), + .Q(\rxeq_txcoeff_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[4] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__0_n_0 ), + .D(rxeq_txcoeff[4]), + .Q(\rxeq_txcoeff_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[5] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__0_n_0 ), + .D(rxeq_txcoeff[5]), + .Q(\rxeq_txcoeff_reg_n_0_[5] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[6] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__0_n_0 ), + .D(rxeq_txcoeff[6]), + .Q(\rxeq_txcoeff_reg_n_0_[6] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[7] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__0_n_0 ), + .D(rxeq_txcoeff[7]), + .Q(\rxeq_txcoeff_reg_n_0_[7] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[8] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__0_n_0 ), + .D(rxeq_txcoeff[8]), + .Q(\rxeq_txcoeff_reg_n_0_[8] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[9] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__0_n_0 ), + .D(rxeq_txcoeff[9]), + .Q(\rxeq_txcoeff_reg_n_0_[9] ), + .R(RST_CPLLRESET)); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txpreset[0]_i_1__0 + (.I0(rxeq_txpreset_reg2[0]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txpreset[0])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txpreset[1]_i_1__0 + (.I0(rxeq_txpreset_reg2[1]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txpreset[1])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txpreset[2]_i_1__0 + (.I0(rxeq_txpreset_reg2[2]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txpreset[2])); + LUT5 #( + .INIT(32'hFFFFF404)) + \rxeq_txpreset[3]_i_1__0 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[6] ), + .I1(\rxeq_txpreset[3]_i_3__0_n_0 ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I3(rxeq_control_reg2[1]), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .O(\rxeq_txpreset[3]_i_1__0_n_0 )); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txpreset[3]_i_2__0 + (.I0(rxeq_txpreset_reg2[3]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txpreset[3])); + LUT3 #( + .INIT(8'h01)) + \rxeq_txpreset[3]_i_3__0 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[5] ), + .O(\rxeq_txpreset[3]_i_3__0_n_0 )); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_txpreset_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_txpreset_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_txpreset_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_txpreset_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_txpreset_reg1[0]), + .Q(rxeq_txpreset_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_txpreset_reg1[1]), + .Q(rxeq_txpreset_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_txpreset_reg1[2]), + .Q(rxeq_txpreset_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_txpreset_reg1[3]), + .Q(rxeq_txpreset_reg2[3]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txpreset_reg[0] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__0_n_0 ), + .D(rxeq_txpreset[0]), + .Q(\rxeq_txpreset_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txpreset_reg[1] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__0_n_0 ), + .D(rxeq_txpreset[1]), + .Q(\rxeq_txpreset_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txpreset_reg[2] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__0_n_0 ), + .D(rxeq_txpreset[2]), + .Q(\rxeq_txpreset_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txpreset_reg[3] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__0_n_0 ), + .D(rxeq_txpreset[3]), + .Q(\rxeq_txpreset_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxeq_user_en_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_en_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxeq_user_en_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_en_reg1), + .Q(rxeq_user_en_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxeq_user_mode_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_mode_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxeq_user_mode_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_mode_reg1), + .Q(rxeq_user_mode_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[10]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[11]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[12]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[13]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[14]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[15]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[16] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[16]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[17] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[17]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[6]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[7]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[8]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[9]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[0]), + .Q(rxeq_user_txcoeff_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[10]), + .Q(rxeq_user_txcoeff_reg2[10]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[11]), + .Q(rxeq_user_txcoeff_reg2[11]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[12]), + .Q(rxeq_user_txcoeff_reg2[12]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[13]), + .Q(rxeq_user_txcoeff_reg2[13]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[14]), + .Q(rxeq_user_txcoeff_reg2[14]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[15]), + .Q(rxeq_user_txcoeff_reg2[15]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[16] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[16]), + .Q(rxeq_user_txcoeff_reg2[16]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[17] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[17]), + .Q(rxeq_user_txcoeff_reg2[17]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[1]), + .Q(rxeq_user_txcoeff_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[2]), + .Q(rxeq_user_txcoeff_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[3]), + .Q(rxeq_user_txcoeff_reg2[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[4]), + .Q(rxeq_user_txcoeff_reg2[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[5]), + .Q(rxeq_user_txcoeff_reg2[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[6]), + .Q(rxeq_user_txcoeff_reg2[6]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[7]), + .Q(rxeq_user_txcoeff_reg2[7]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[8]), + .Q(rxeq_user_txcoeff_reg2[8]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[9]), + .Q(rxeq_user_txcoeff_reg2[9]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_control_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_control_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_control_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_control_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_control_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_control_reg1[0]), + .Q(txeq_control_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_control_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_control_reg1[1]), + .Q(txeq_control_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDSE \txeq_deemph_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_deemph_reg1[0]), + .S(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_deemph_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_deemph_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_deemph_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg1_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_deemph_reg1[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg1_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_deemph_reg1[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDSE \txeq_deemph_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_deemph_reg1[0]), + .Q(txeq_deemph_reg2[0]), + .S(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_deemph_reg1[1]), + .Q(txeq_deemph_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_deemph_reg1[2]), + .Q(txeq_deemph_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_deemph_reg1[3]), + .Q(txeq_deemph_reg2[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_deemph_reg1[4]), + .Q(txeq_deemph_reg2[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_deemph_reg1[5]), + .Q(txeq_deemph_reg2[5]), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h00001000)) + \txeq_preset[0]_i_1__0 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[2]), + .I2(txeq_preset_reg2[0]), + .I3(txeq_preset_reg2[3]), + .I4(txeq_preset_reg2[1]), + .O(p_0_out[0])); + LUT5 #( + .INIT(32'hABEAABAF)) + \txeq_preset[10]_i_1__0 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[2]), + .I2(txeq_preset_reg2[0]), + .I3(txeq_preset_reg2[3]), + .I4(txeq_preset_reg2[1]), + .O(p_0_out[10])); + LUT5 #( + .INIT(32'hFFFF200D)) + \txeq_preset[11]_i_1__0 + (.I0(txeq_preset_reg2[1]), + .I1(txeq_preset_reg2[3]), + .I2(txeq_preset_reg2[2]), + .I3(txeq_preset_reg2[0]), + .I4(RST_CPLLRESET), + .O(p_0_out[11])); + LUT5 #( + .INIT(32'h01151110)) + \txeq_preset[12]_i_1__0 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[3]), + .I2(txeq_preset_reg2[1]), + .I3(txeq_preset_reg2[2]), + .I4(txeq_preset_reg2[0]), + .O(p_0_out[12])); + LUT5 #( + .INIT(32'h01000010)) + \txeq_preset[13]_i_1__0 + (.I0(txeq_preset_reg2[2]), + .I1(RST_CPLLRESET), + .I2(txeq_preset_reg2[0]), + .I3(txeq_preset_reg2[3]), + .I4(txeq_preset_reg2[1]), + .O(p_0_out[13])); + LUT5 #( + .INIT(32'h01000010)) + \txeq_preset[14]_i_1__0 + (.I0(txeq_preset_reg2[2]), + .I1(RST_CPLLRESET), + .I2(txeq_preset_reg2[3]), + .I3(txeq_preset_reg2[1]), + .I4(txeq_preset_reg2[0]), + .O(p_0_out[14])); + LUT4 #( + .INIT(16'hF0F1)) + \txeq_preset[15]_i_1__0 + (.I0(txeq_preset_reg2[2]), + .I1(txeq_preset_reg2[1]), + .I2(RST_CPLLRESET), + .I3(txeq_preset_reg2[3]), + .O(p_0_out[15])); + LUT4 #( + .INIT(16'h0006)) + \txeq_preset[16]_i_1__0 + (.I0(txeq_preset_reg2[3]), + .I1(txeq_preset_reg2[0]), + .I2(txeq_preset_reg2[2]), + .I3(RST_CPLLRESET), + .O(p_0_out[16])); + LUT4 #( + .INIT(16'hAABA)) + \txeq_preset[17]_i_1__0 + (.I0(RST_CPLLRESET), + .I1(fsm_tx[0]), + .I2(fsm_tx[1]), + .I3(fsm_tx[2]), + .O(\txeq_preset[17]_i_1__0_n_0 )); + LUT5 #( + .INIT(32'hFFFF400D)) + \txeq_preset[17]_i_2__0 + (.I0(txeq_preset_reg2[3]), + .I1(txeq_preset_reg2[1]), + .I2(txeq_preset_reg2[2]), + .I3(txeq_preset_reg2[0]), + .I4(RST_CPLLRESET), + .O(p_0_out[17])); + LUT5 #( + .INIT(32'h00001004)) + \txeq_preset[1]_i_1__0 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[3]), + .I2(txeq_preset_reg2[1]), + .I3(txeq_preset_reg2[2]), + .I4(txeq_preset_reg2[0]), + .O(p_0_out[1])); + LUT4 #( + .INIT(16'h0E00)) + \txeq_preset[2]_i_1__0 + (.I0(txeq_preset_reg2[2]), + .I1(txeq_preset_reg2[0]), + .I2(RST_CPLLRESET), + .I3(txeq_preset_reg2[3]), + .O(p_0_out[2])); + LUT5 #( + .INIT(32'h01440140)) + \txeq_preset[3]_i_1__0 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[2]), + .I2(txeq_preset_reg2[1]), + .I3(txeq_preset_reg2[3]), + .I4(txeq_preset_reg2[0]), + .O(\txeq_preset[3]_i_1__0_n_0 )); + LUT5 #( + .INIT(32'h00001400)) + \txeq_preset[7]_i_1__0 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[0]), + .I2(txeq_preset_reg2[2]), + .I3(txeq_preset_reg2[1]), + .I4(txeq_preset_reg2[3]), + .O(\txeq_preset[7]_i_1__0_n_0 )); + LUT5 #( + .INIT(32'hAAAFBEAF)) + \txeq_preset[8]_i_1__0 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[0]), + .I2(txeq_preset_reg2[2]), + .I3(txeq_preset_reg2[1]), + .I4(txeq_preset_reg2[3]), + .O(p_0_out[8])); + LUT5 #( + .INIT(32'hCCFCCFCD)) + \txeq_preset[9]_i_1__0 + (.I0(txeq_preset_reg2[1]), + .I1(RST_CPLLRESET), + .I2(txeq_preset_reg2[2]), + .I3(txeq_preset_reg2[3]), + .I4(txeq_preset_reg2[0]), + .O(p_0_out[9])); + (* SOFT_HLUTNM = "soft_lutpair101" *) + LUT3 #( + .INIT(8'h04)) + txeq_preset_done_i_1__0 + (.I0(fsm_tx[2]), + .I1(fsm_tx[1]), + .I2(fsm_tx[0]), + .O(txeq_preset_done_i_1__0_n_0)); + FDRE #( + .INIT(1'b0)) + txeq_preset_done_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_preset_done_i_1__0_n_0), + .Q(txeq_preset_done), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_preset_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_preset_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_preset_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_preset_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_preset_reg1[0]), + .Q(txeq_preset_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_preset_reg1[1]), + .Q(txeq_preset_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_preset_reg1[2]), + .Q(txeq_preset_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_preset_reg1[3]), + .Q(txeq_preset_reg2[3]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[0] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__0_n_0 ), + .D(p_0_out[0]), + .Q(\txeq_preset_reg_n_0_[0] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[10] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__0_n_0 ), + .D(p_0_out[10]), + .Q(\txeq_preset_reg_n_0_[10] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[11] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__0_n_0 ), + .D(p_0_out[11]), + .Q(\txeq_preset_reg_n_0_[11] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[12] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__0_n_0 ), + .D(p_0_out[12]), + .Q(\txeq_preset_reg_n_0_[12] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[13] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__0_n_0 ), + .D(p_0_out[13]), + .Q(\txeq_preset_reg_n_0_[13] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[14] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__0_n_0 ), + .D(p_0_out[14]), + .Q(\txeq_preset_reg_n_0_[14] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[15] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__0_n_0 ), + .D(p_0_out[15]), + .Q(\txeq_preset_reg_n_0_[15] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[16] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__0_n_0 ), + .D(p_0_out[16]), + .Q(\txeq_preset_reg_n_0_[16] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[17] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__0_n_0 ), + .D(p_0_out[17]), + .Q(\txeq_preset_reg_n_0_[17] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[1] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__0_n_0 ), + .D(p_0_out[1]), + .Q(\txeq_preset_reg_n_0_[1] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[2] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__0_n_0 ), + .D(p_0_out[2]), + .Q(\txeq_preset_reg_n_0_[2] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[3] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__0_n_0 ), + .D(\txeq_preset[3]_i_1__0_n_0 ), + .Q(\txeq_preset_reg_n_0_[3] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[7] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__0_n_0 ), + .D(\txeq_preset[7]_i_1__0_n_0 ), + .Q(\txeq_preset_reg_n_0_[7] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[8] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__0_n_0 ), + .D(p_0_out[8]), + .Q(\txeq_preset_reg_n_0_[8] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[9] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__0_n_0 ), + .D(p_0_out[9]), + .Q(\txeq_preset_reg_n_0_[9] ), + .R(1'b0)); + LUT5 #( + .INIT(32'h45404040)) + \txeq_txcoeff[0]_i_1__0 + (.I0(fsm_tx[2]), + .I1(\txeq_txcoeff[0]_i_2__0_n_0 ), + .I2(fsm_tx[1]), + .I3(fsm_tx[0]), + .I4(\txeq_txcoeff_reg_n_0_[6] ), + .O(\txeq_txcoeff[0]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[0]_i_2__0 + (.I0(\txeq_txcoeff_reg_n_0_[6] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[7] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[0] ), + .O(\txeq_txcoeff[0]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[10]_i_1__0 + (.I0(\txeq_txcoeff_reg_n_0_[9] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[10]_i_2__0_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[16] ), + .O(\txeq_txcoeff[10]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[10]_i_2__0 + (.I0(\txeq_txcoeff_reg_n_0_[16] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[17] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[10] ), + .O(\txeq_txcoeff[10]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[11]_i_1__0 + (.I0(\txeq_txcoeff_reg_n_0_[10] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[11]_i_2__0_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[17] ), + .O(\txeq_txcoeff[11]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[11]_i_2__0 + (.I0(\txeq_txcoeff_reg_n_0_[17] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[18] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[11] ), + .O(\txeq_txcoeff[11]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[12]_i_1__0 + (.I0(\txeq_txcoeff_reg_n_0_[11] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[12]_i_2__0_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[18] ), + .O(\txeq_txcoeff[12]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[12]_i_2__0 + (.I0(\txeq_txcoeff_reg_n_0_[18] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(txeq_deemph_reg2[0]), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[12] ), + .O(\txeq_txcoeff[12]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[13]_i_1__0 + (.I0(\txeq_txcoeff_reg_n_0_[12] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[13]_i_2__0_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(txeq_deemph_reg2[0]), + .O(\txeq_txcoeff[13]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[13]_i_2__0 + (.I0(txeq_deemph_reg2[0]), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(txeq_deemph_reg2[1]), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[13] ), + .O(\txeq_txcoeff[13]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[14]_i_1__0 + (.I0(\txeq_txcoeff_reg_n_0_[13] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[14]_i_2__0_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(txeq_deemph_reg2[1]), + .O(\txeq_txcoeff[14]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[14]_i_2__0 + (.I0(txeq_deemph_reg2[1]), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(txeq_deemph_reg2[2]), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[14] ), + .O(\txeq_txcoeff[14]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[15]_i_1__0 + (.I0(\txeq_txcoeff_reg_n_0_[14] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[15]_i_2__0_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(txeq_deemph_reg2[2]), + .O(\txeq_txcoeff[15]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[15]_i_2__0 + (.I0(txeq_deemph_reg2[2]), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(txeq_deemph_reg2[3]), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[15] ), + .O(\txeq_txcoeff[15]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[16]_i_1__0 + (.I0(\txeq_txcoeff_reg_n_0_[15] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[16]_i_2__0_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(txeq_deemph_reg2[3]), + .O(\txeq_txcoeff[16]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[16]_i_2__0 + (.I0(txeq_deemph_reg2[3]), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(txeq_deemph_reg2[4]), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[16] ), + .O(\txeq_txcoeff[16]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[17]_i_1__0 + (.I0(\txeq_txcoeff_reg_n_0_[16] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[17]_i_2__0_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(txeq_deemph_reg2[4]), + .O(\txeq_txcoeff[17]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[17]_i_2__0 + (.I0(txeq_deemph_reg2[4]), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(txeq_deemph_reg2[5]), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[17] ), + .O(\txeq_txcoeff[17]_i_2__0_n_0 )); + LUT5 #( + .INIT(32'hFF040FFF)) + \txeq_txcoeff[18]_i_1__0 + (.I0(txeq_control_reg2[0]), + .I1(txeq_control_reg2[1]), + .I2(fsm_tx[2]), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .O(txeq_txcoeff)); + LUT6 #( + .INIT(64'h22F3220022002200)) + \txeq_txcoeff[18]_i_2__0 + (.I0(\txeq_txcoeff_reg_n_0_[17] ), + .I1(fsm_tx[1]), + .I2(\txeq_txcoeff[18]_i_3__0_n_0 ), + .I3(fsm_tx[2]), + .I4(txeq_deemph_reg2[5]), + .I5(fsm_tx[0]), + .O(\txeq_txcoeff[18]_i_2__0_n_0 )); + LUT2 #( + .INIT(4'hB)) + \txeq_txcoeff[18]_i_3__0 + (.I0(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .O(\txeq_txcoeff[18]_i_3__0_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[1]_i_1__0 + (.I0(\txeq_txcoeff_reg_n_0_[0] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[1]_i_2__0_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[7] ), + .O(\txeq_txcoeff[1]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[1]_i_2__0 + (.I0(\txeq_txcoeff_reg_n_0_[7] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[8] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[1] ), + .O(\txeq_txcoeff[1]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[2]_i_1__0 + (.I0(\txeq_txcoeff_reg_n_0_[1] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[2]_i_2__0_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[8] ), + .O(\txeq_txcoeff[2]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[2]_i_2__0 + (.I0(\txeq_txcoeff_reg_n_0_[8] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[9] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[2] ), + .O(\txeq_txcoeff[2]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[3]_i_1__0 + (.I0(\txeq_txcoeff_reg_n_0_[2] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[3]_i_2__0_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[9] ), + .O(\txeq_txcoeff[3]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[3]_i_2__0 + (.I0(\txeq_txcoeff_reg_n_0_[9] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[10] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[3] ), + .O(\txeq_txcoeff[3]_i_2__0_n_0 )); + LUT4 #( + .INIT(16'h2F20)) + \txeq_txcoeff[4]_i_1__0 + (.I0(\txeq_txcoeff_reg_n_0_[3] ), + .I1(fsm_tx[1]), + .I2(fsm_tx[2]), + .I3(\txeq_txcoeff[4]_i_2__0_n_0 ), + .O(\txeq_txcoeff[4]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'hCACCCCCC00000000)) + \txeq_txcoeff[4]_i_2__0 + (.I0(\txeq_txcoeff_reg_n_0_[11] ), + .I1(\txeq_txcoeff_reg_n_0_[10] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I3(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I4(fsm_tx[1]), + .I5(fsm_tx[0]), + .O(\txeq_txcoeff[4]_i_2__0_n_0 )); + LUT4 #( + .INIT(16'h2F20)) + \txeq_txcoeff[5]_i_1__0 + (.I0(\txeq_txcoeff_reg_n_0_[4] ), + .I1(fsm_tx[1]), + .I2(fsm_tx[2]), + .I3(\txeq_txcoeff[5]_i_2__0_n_0 ), + .O(\txeq_txcoeff[5]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'hCACCCCCC00000000)) + \txeq_txcoeff[5]_i_2__0 + (.I0(\txeq_txcoeff_reg_n_0_[12] ), + .I1(\txeq_txcoeff_reg_n_0_[11] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I3(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I4(fsm_tx[1]), + .I5(fsm_tx[0]), + .O(\txeq_txcoeff[5]_i_2__0_n_0 )); + LUT4 #( + .INIT(16'h2F20)) + \txeq_txcoeff[6]_i_1__0 + (.I0(\txeq_txcoeff_reg_n_0_[5] ), + .I1(fsm_tx[1]), + .I2(fsm_tx[2]), + .I3(\txeq_txcoeff[6]_i_2__0_n_0 ), + .O(\txeq_txcoeff[6]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'hCACCCCCC00000000)) + \txeq_txcoeff[6]_i_2__0 + (.I0(\txeq_txcoeff_reg_n_0_[13] ), + .I1(\txeq_txcoeff_reg_n_0_[12] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I3(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I4(fsm_tx[1]), + .I5(fsm_tx[0]), + .O(\txeq_txcoeff[6]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[7]_i_1__0 + (.I0(\txeq_txcoeff_reg_n_0_[6] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[7]_i_2__0_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[13] ), + .O(\txeq_txcoeff[7]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[7]_i_2__0 + (.I0(\txeq_txcoeff_reg_n_0_[13] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[14] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[7] ), + .O(\txeq_txcoeff[7]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[8]_i_1__0 + (.I0(\txeq_txcoeff_reg_n_0_[7] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[8]_i_2__0_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[14] ), + .O(\txeq_txcoeff[8]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[8]_i_2__0 + (.I0(\txeq_txcoeff_reg_n_0_[14] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[15] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[8] ), + .O(\txeq_txcoeff[8]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[9]_i_1__0 + (.I0(\txeq_txcoeff_reg_n_0_[8] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[9]_i_2__0_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[15] ), + .O(\txeq_txcoeff[9]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[9]_i_2__0 + (.I0(\txeq_txcoeff_reg_n_0_[15] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[16] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[9] ), + .O(\txeq_txcoeff[9]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'h000004000F000400)) + \txeq_txcoeff_cnt[0]_i_1__0 + (.I0(txeq_control_reg2[0]), + .I1(txeq_control_reg2[1]), + .I2(fsm_tx[2]), + .I3(fsm_tx[0]), + .I4(fsm_tx[1]), + .I5(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .O(txeq_txcoeff_cnt[0])); + (* SOFT_HLUTNM = "soft_lutpair101" *) + LUT5 #( + .INIT(32'h00006000)) + \txeq_txcoeff_cnt[1]_i_1__0 + (.I0(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I2(fsm_tx[0]), + .I3(fsm_tx[1]), + .I4(fsm_tx[2]), + .O(txeq_txcoeff_cnt[1])); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_txcoeff_cnt[0]), + .Q(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_txcoeff_cnt[1]), + .Q(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[0] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[0]_i_1__0_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[10] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[10]_i_1__0_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[10] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[11] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[11]_i_1__0_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[11] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[12] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[12]_i_1__0_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[12] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[13] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[13]_i_1__0_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[13] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[14] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[14]_i_1__0_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[14] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[15] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[15]_i_1__0_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[15] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[16] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[16]_i_1__0_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[16] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[17] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[17]_i_1__0_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[17] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[18] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[18]_i_2__0_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[18] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[1] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[1]_i_1__0_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[2] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[2]_i_1__0_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[3] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[3]_i_1__0_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[4] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[4]_i_1__0_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[5] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[5]_i_1__0_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[5] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[6] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[6]_i_1__0_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[6] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[7] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[7]_i_1__0_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[7] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[8] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[8]_i_1__0_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[8] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[9] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[9]_i_1__0_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[9] ), + .R(RST_CPLLRESET)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pipe_eq" *) +module pcie_7x_0_pcie_7x_0_pipe_eq_45 + (TXPRECURSOR, + TXMAINCURSOR, + TXPOSTCURSOR, + USER_RXEQ_ADAPT_DONE, + RST_CPLLRESET, + pipe_pclk_in, + rate_gen3_2); + output [4:0]TXPRECURSOR; + output [6:0]TXMAINCURSOR; + output [4:0]TXPOSTCURSOR; + output USER_RXEQ_ADAPT_DONE; + input RST_CPLLRESET; + input pipe_pclk_in; + input rate_gen3_2; + + wire \FSM_onehot_fsm_rx[1]_i_1__1_n_0 ; + wire \FSM_onehot_fsm_rx[1]_i_2__1_n_0 ; + wire \FSM_onehot_fsm_rx[3]_i_1__1_n_0 ; + wire \FSM_onehot_fsm_rx[4]_i_1__1_n_0 ; + wire \FSM_onehot_fsm_rx_reg_n_0_[1] ; + wire \FSM_onehot_fsm_rx_reg_n_0_[2] ; + wire \FSM_onehot_fsm_rx_reg_n_0_[3] ; + wire \FSM_onehot_fsm_rx_reg_n_0_[4] ; + wire \FSM_onehot_fsm_rx_reg_n_0_[5] ; + wire \FSM_onehot_fsm_rx_reg_n_0_[6] ; + wire \FSM_sequential_fsm_tx[1]_i_2__1_n_0 ; + wire \FSM_sequential_fsm_tx[2]_i_2__1_n_0 ; + wire RST_CPLLRESET; + wire [6:0]TXMAINCURSOR; + wire [4:0]TXPOSTCURSOR; + wire [4:0]TXPRECURSOR; + wire USER_RXEQ_ADAPT_DONE; + wire [2:0]fsm_tx; + wire [2:0]fsm_tx__0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gen3_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gen3_reg2; + wire [17:0]p_0_out; + wire pipe_pclk_in; + wire rate_gen3_2; + wire rxeq_adapt_done_i_2__1_n_0; + wire rxeq_adapt_done_reg_i_2__1_n_0; + wire rxeq_adapt_done_reg_reg_n_0; + wire [2:0]rxeq_cnt; + wire \rxeq_cnt_reg_n_0_[0] ; + wire \rxeq_cnt_reg_n_0_[1] ; + wire \rxeq_cnt_reg_n_0_[2] ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rxeq_control_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rxeq_control_reg2; + wire [5:0]rxeq_fs; + wire \rxeq_fs[5]_i_1__1_n_0 ; + wire \rxeq_fs_reg_n_0_[0] ; + wire \rxeq_fs_reg_n_0_[1] ; + wire \rxeq_fs_reg_n_0_[2] ; + wire \rxeq_fs_reg_n_0_[3] ; + wire \rxeq_fs_reg_n_0_[4] ; + wire \rxeq_fs_reg_n_0_[5] ; + wire [5:0]rxeq_lf; + wire \rxeq_lf[5]_i_1__1_n_0 ; + wire \rxeq_lf_reg_n_0_[0] ; + wire \rxeq_lf_reg_n_0_[1] ; + wire \rxeq_lf_reg_n_0_[2] ; + wire \rxeq_lf_reg_n_0_[3] ; + wire \rxeq_lf_reg_n_0_[4] ; + wire \rxeq_lf_reg_n_0_[5] ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]rxeq_lffs_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]rxeq_lffs_reg2; + wire rxeq_new_txcoeff_req; + wire rxeq_new_txcoeff_req_reg_n_0; + wire \rxeq_preset[0]_i_1__1_n_0 ; + wire \rxeq_preset[1]_i_1__1_n_0 ; + wire \rxeq_preset[2]_i_1__1_n_0 ; + wire \rxeq_preset[2]_i_2__1_n_0 ; + wire \rxeq_preset[2]_i_3__1_n_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [2:0]rxeq_preset_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [2:0]rxeq_preset_reg2; + wire \rxeq_preset_reg_n_0_[0] ; + wire \rxeq_preset_reg_n_0_[1] ; + wire \rxeq_preset_reg_n_0_[2] ; + wire rxeq_preset_valid; + wire rxeq_scan_i_n_0; + wire rxeq_scan_i_n_1; + wire rxeq_scan_i_n_2; + wire rxeq_scan_i_n_4; + wire rxeq_scan_i_n_5; + wire [17:0]rxeq_txcoeff; + wire \rxeq_txcoeff_reg_n_0_[0] ; + wire \rxeq_txcoeff_reg_n_0_[10] ; + wire \rxeq_txcoeff_reg_n_0_[11] ; + wire \rxeq_txcoeff_reg_n_0_[12] ; + wire \rxeq_txcoeff_reg_n_0_[13] ; + wire \rxeq_txcoeff_reg_n_0_[14] ; + wire \rxeq_txcoeff_reg_n_0_[15] ; + wire \rxeq_txcoeff_reg_n_0_[16] ; + wire \rxeq_txcoeff_reg_n_0_[17] ; + wire \rxeq_txcoeff_reg_n_0_[1] ; + wire \rxeq_txcoeff_reg_n_0_[2] ; + wire \rxeq_txcoeff_reg_n_0_[3] ; + wire \rxeq_txcoeff_reg_n_0_[4] ; + wire \rxeq_txcoeff_reg_n_0_[5] ; + wire \rxeq_txcoeff_reg_n_0_[6] ; + wire \rxeq_txcoeff_reg_n_0_[7] ; + wire \rxeq_txcoeff_reg_n_0_[8] ; + wire \rxeq_txcoeff_reg_n_0_[9] ; + wire [3:0]rxeq_txpreset; + wire \rxeq_txpreset[3]_i_1__1_n_0 ; + wire \rxeq_txpreset[3]_i_3__1_n_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]rxeq_txpreset_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]rxeq_txpreset_reg2; + wire \rxeq_txpreset_reg_n_0_[0] ; + wire \rxeq_txpreset_reg_n_0_[1] ; + wire \rxeq_txpreset_reg_n_0_[2] ; + wire \rxeq_txpreset_reg_n_0_[3] ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxeq_user_en_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxeq_user_en_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxeq_user_mode_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxeq_user_mode_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [17:0]rxeq_user_txcoeff_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [17:0]rxeq_user_txcoeff_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]txeq_control_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]txeq_control_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]txeq_deemph_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]txeq_deemph_reg2; + wire \txeq_preset[17]_i_1__1_n_0 ; + wire \txeq_preset[3]_i_1__1_n_0 ; + wire \txeq_preset[7]_i_1__1_n_0 ; + wire txeq_preset_done; + wire txeq_preset_done_i_1__1_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]txeq_preset_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]txeq_preset_reg2; + wire \txeq_preset_reg_n_0_[0] ; + wire \txeq_preset_reg_n_0_[10] ; + wire \txeq_preset_reg_n_0_[11] ; + wire \txeq_preset_reg_n_0_[12] ; + wire \txeq_preset_reg_n_0_[13] ; + wire \txeq_preset_reg_n_0_[14] ; + wire \txeq_preset_reg_n_0_[15] ; + wire \txeq_preset_reg_n_0_[16] ; + wire \txeq_preset_reg_n_0_[17] ; + wire \txeq_preset_reg_n_0_[1] ; + wire \txeq_preset_reg_n_0_[2] ; + wire \txeq_preset_reg_n_0_[3] ; + wire \txeq_preset_reg_n_0_[7] ; + wire \txeq_preset_reg_n_0_[8] ; + wire \txeq_preset_reg_n_0_[9] ; + wire txeq_txcoeff; + wire \txeq_txcoeff[0]_i_1__1_n_0 ; + wire \txeq_txcoeff[0]_i_2__1_n_0 ; + wire \txeq_txcoeff[10]_i_1__1_n_0 ; + wire \txeq_txcoeff[10]_i_2__1_n_0 ; + wire \txeq_txcoeff[11]_i_1__1_n_0 ; + wire \txeq_txcoeff[11]_i_2__1_n_0 ; + wire \txeq_txcoeff[12]_i_1__1_n_0 ; + wire \txeq_txcoeff[12]_i_2__1_n_0 ; + wire \txeq_txcoeff[13]_i_1__1_n_0 ; + wire \txeq_txcoeff[13]_i_2__1_n_0 ; + wire \txeq_txcoeff[14]_i_1__1_n_0 ; + wire \txeq_txcoeff[14]_i_2__1_n_0 ; + wire \txeq_txcoeff[15]_i_1__1_n_0 ; + wire \txeq_txcoeff[15]_i_2__1_n_0 ; + wire \txeq_txcoeff[16]_i_1__1_n_0 ; + wire \txeq_txcoeff[16]_i_2__1_n_0 ; + wire \txeq_txcoeff[17]_i_1__1_n_0 ; + wire \txeq_txcoeff[17]_i_2__1_n_0 ; + wire \txeq_txcoeff[18]_i_2__1_n_0 ; + wire \txeq_txcoeff[18]_i_3__1_n_0 ; + wire \txeq_txcoeff[1]_i_1__1_n_0 ; + wire \txeq_txcoeff[1]_i_2__1_n_0 ; + wire \txeq_txcoeff[2]_i_1__1_n_0 ; + wire \txeq_txcoeff[2]_i_2__1_n_0 ; + wire \txeq_txcoeff[3]_i_1__1_n_0 ; + wire \txeq_txcoeff[3]_i_2__1_n_0 ; + wire \txeq_txcoeff[4]_i_1__1_n_0 ; + wire \txeq_txcoeff[4]_i_2__1_n_0 ; + wire \txeq_txcoeff[5]_i_1__1_n_0 ; + wire \txeq_txcoeff[5]_i_2__1_n_0 ; + wire \txeq_txcoeff[6]_i_1__1_n_0 ; + wire \txeq_txcoeff[6]_i_2__1_n_0 ; + wire \txeq_txcoeff[7]_i_1__1_n_0 ; + wire \txeq_txcoeff[7]_i_2__1_n_0 ; + wire \txeq_txcoeff[8]_i_1__1_n_0 ; + wire \txeq_txcoeff[8]_i_2__1_n_0 ; + wire \txeq_txcoeff[9]_i_1__1_n_0 ; + wire \txeq_txcoeff[9]_i_2__1_n_0 ; + wire [1:0]txeq_txcoeff_cnt; + wire \txeq_txcoeff_cnt_reg_n_0_[0] ; + wire \txeq_txcoeff_cnt_reg_n_0_[1] ; + wire \txeq_txcoeff_reg_n_0_[0] ; + wire \txeq_txcoeff_reg_n_0_[10] ; + wire \txeq_txcoeff_reg_n_0_[11] ; + wire \txeq_txcoeff_reg_n_0_[12] ; + wire \txeq_txcoeff_reg_n_0_[13] ; + wire \txeq_txcoeff_reg_n_0_[14] ; + wire \txeq_txcoeff_reg_n_0_[15] ; + wire \txeq_txcoeff_reg_n_0_[16] ; + wire \txeq_txcoeff_reg_n_0_[17] ; + wire \txeq_txcoeff_reg_n_0_[18] ; + wire \txeq_txcoeff_reg_n_0_[1] ; + wire \txeq_txcoeff_reg_n_0_[2] ; + wire \txeq_txcoeff_reg_n_0_[3] ; + wire \txeq_txcoeff_reg_n_0_[4] ; + wire \txeq_txcoeff_reg_n_0_[5] ; + wire \txeq_txcoeff_reg_n_0_[6] ; + wire \txeq_txcoeff_reg_n_0_[7] ; + wire \txeq_txcoeff_reg_n_0_[8] ; + wire \txeq_txcoeff_reg_n_0_[9] ; + + LUT5 #( + .INIT(32'hABABABAA)) + \FSM_onehot_fsm_rx[1]_i_1__1 + (.I0(\FSM_onehot_fsm_rx[1]_i_2__1_n_0 ), + .I1(rxeq_control_reg2[1]), + .I2(rxeq_control_reg2[0]), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[6] ), + .O(\FSM_onehot_fsm_rx[1]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'h0000000000000001)) + \FSM_onehot_fsm_rx[1]_i_2__1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[6] ), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I5(\FSM_onehot_fsm_rx_reg_n_0_[5] ), + .O(\FSM_onehot_fsm_rx[1]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'hFFFFF8FF88888888)) + \FSM_onehot_fsm_rx[3]_i_1__1 + (.I0(rxeq_control_reg2[1]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I2(\rxeq_cnt_reg_n_0_[2] ), + .I3(\rxeq_cnt_reg_n_0_[1] ), + .I4(\rxeq_cnt_reg_n_0_[0] ), + .I5(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .O(\FSM_onehot_fsm_rx[3]_i_1__1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair144" *) + LUT5 #( + .INIT(32'h2ABA2AAA)) + \FSM_onehot_fsm_rx[4]_i_1__1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(\rxeq_cnt_reg_n_0_[2] ), + .I2(\rxeq_cnt_reg_n_0_[1] ), + .I3(\rxeq_cnt_reg_n_0_[0] ), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .O(\FSM_onehot_fsm_rx[4]_i_1__1_n_0 )); + (* FSM_ENCODED_STATES = "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001" *) + FDSE #( + .INIT(1'b0)) + \FSM_onehot_fsm_rx_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm_rx[1]_i_1__1_n_0 ), + .Q(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .S(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_rx_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_scan_i_n_2), + .Q(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_rx_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm_rx[3]_i_1__1_n_0 ), + .Q(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_rx_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm_rx[4]_i_1__1_n_0 ), + .Q(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_rx_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_scan_i_n_1), + .Q(\FSM_onehot_fsm_rx_reg_n_0_[5] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_rx_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_scan_i_n_0), + .Q(\FSM_onehot_fsm_rx_reg_n_0_[6] ), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'hC04FC043C04FF04F)) + \FSM_sequential_fsm_tx[0]_i_1__1 + (.I0(\FSM_sequential_fsm_tx[1]_i_2__1_n_0 ), + .I1(fsm_tx[0]), + .I2(fsm_tx[1]), + .I3(fsm_tx[2]), + .I4(txeq_control_reg2[1]), + .I5(txeq_control_reg2[0]), + .O(fsm_tx__0[0])); + LUT6 #( + .INIT(64'h3F703F7C3F7C0F70)) + \FSM_sequential_fsm_tx[1]_i_1__1 + (.I0(\FSM_sequential_fsm_tx[1]_i_2__1_n_0 ), + .I1(fsm_tx[0]), + .I2(fsm_tx[1]), + .I3(fsm_tx[2]), + .I4(txeq_control_reg2[1]), + .I5(txeq_control_reg2[0]), + .O(fsm_tx__0[1])); + (* SOFT_HLUTNM = "soft_lutpair142" *) + LUT2 #( + .INIT(4'h2)) + \FSM_sequential_fsm_tx[1]_i_2__1 + (.I0(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .O(\FSM_sequential_fsm_tx[1]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'h3A2A2A227F7F7F77)) + \FSM_sequential_fsm_tx[2]_i_1__1 + (.I0(fsm_tx[2]), + .I1(fsm_tx[1]), + .I2(fsm_tx[0]), + .I3(txeq_control_reg2[1]), + .I4(txeq_control_reg2[0]), + .I5(\FSM_sequential_fsm_tx[2]_i_2__1_n_0 ), + .O(fsm_tx__0[2])); + (* SOFT_HLUTNM = "soft_lutpair142" *) + LUT5 #( + .INIT(32'hD0FFDFFF)) + \FSM_sequential_fsm_tx[2]_i_2__1 + (.I0(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I2(fsm_tx[0]), + .I3(fsm_tx[1]), + .I4(txeq_preset_done), + .O(\FSM_sequential_fsm_tx[2]_i_2__1_n_0 )); + (* FSM_ENCODED_STATES = "FSM_TXEQ_QUERY:101,FSM_TXEQ_PRESET:010,FSM_TXEQ_TXCOEFF:011,FSM_TXEQ_REMAP:100,FSM_TXEQ_DONE:110,FSM_TXEQ_IDLE:001,iSTATE:000" *) + FDSE #( + .INIT(1'b0)) + \FSM_sequential_fsm_tx_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm_tx__0[0]), + .Q(fsm_tx[0]), + .S(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_TXEQ_QUERY:101,FSM_TXEQ_PRESET:010,FSM_TXEQ_TXCOEFF:011,FSM_TXEQ_REMAP:100,FSM_TXEQ_DONE:110,FSM_TXEQ_IDLE:001,iSTATE:000" *) + FDRE #( + .INIT(1'b0)) + \FSM_sequential_fsm_tx_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm_tx__0[1]), + .Q(fsm_tx[1]), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_TXEQ_QUERY:101,FSM_TXEQ_PRESET:010,FSM_TXEQ_TXCOEFF:011,FSM_TXEQ_REMAP:100,FSM_TXEQ_DONE:110,FSM_TXEQ_IDLE:001,iSTATE:000" *) + FDRE #( + .INIT(1'b0)) + \FSM_sequential_fsm_tx_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm_tx__0[2]), + .Q(fsm_tx[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gen3_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rate_gen3_2), + .Q(gen3_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gen3_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gen3_reg1), + .Q(gen3_reg2), + .R(RST_CPLLRESET)); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_22__1 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[17] ), + .O(TXPOSTCURSOR[4])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_23__1 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[16] ), + .O(TXPOSTCURSOR[3])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_24__1 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[15] ), + .O(TXPOSTCURSOR[2])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_25__1 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[14] ), + .O(TXPOSTCURSOR[1])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_26__1 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[13] ), + .O(TXPOSTCURSOR[0])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_27__1 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[4] ), + .O(TXPRECURSOR[4])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_28__1 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[3] ), + .O(TXPRECURSOR[3])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_29__1 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[2] ), + .O(TXPRECURSOR[2])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_30__1 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[1] ), + .O(TXPRECURSOR[1])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_31__1 + (.I0(\txeq_txcoeff_reg_n_0_[0] ), + .I1(gen3_reg2), + .O(TXPRECURSOR[0])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_32__1 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[12] ), + .O(TXMAINCURSOR[6])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_33__1 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[11] ), + .O(TXMAINCURSOR[5])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_34__1 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[10] ), + .O(TXMAINCURSOR[4])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_35__1 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[9] ), + .O(TXMAINCURSOR[3])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_36__1 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[8] ), + .O(TXMAINCURSOR[2])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_37__1 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[7] ), + .O(TXMAINCURSOR[1])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_38__1 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[6] ), + .O(TXMAINCURSOR[0])); + LUT6 #( + .INIT(64'hFFFFFFFEFFFFFFFF)) + rxeq_adapt_done_i_2__1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[5] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I5(\FSM_onehot_fsm_rx_reg_n_0_[6] ), + .O(rxeq_adapt_done_i_2__1_n_0)); + FDRE #( + .INIT(1'b0)) + rxeq_adapt_done_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_scan_i_n_5), + .Q(USER_RXEQ_ADAPT_DONE), + .R(RST_CPLLRESET)); + LUT3 #( + .INIT(8'h08)) + rxeq_adapt_done_reg_i_2__1 + (.I0(rxeq_control_reg2[0]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I2(rxeq_control_reg2[1]), + .O(rxeq_adapt_done_reg_i_2__1_n_0)); + FDRE #( + .INIT(1'b0)) + rxeq_adapt_done_reg_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_scan_i_n_4), + .Q(rxeq_adapt_done_reg_reg_n_0), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h8888FFF8)) + \rxeq_cnt[0]_i_1__1 + (.I0(rxeq_control_reg2[1]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I4(\rxeq_cnt_reg_n_0_[0] ), + .O(rxeq_cnt[0])); + (* SOFT_HLUTNM = "soft_lutpair145" *) + LUT4 #( + .INIT(16'h6660)) + \rxeq_cnt[1]_i_1__1 + (.I0(\rxeq_cnt_reg_n_0_[0] ), + .I1(\rxeq_cnt_reg_n_0_[1] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .O(rxeq_cnt[1])); + (* SOFT_HLUTNM = "soft_lutpair144" *) + LUT5 #( + .INIT(32'h78787800)) + \rxeq_cnt[2]_i_1__1 + (.I0(\rxeq_cnt_reg_n_0_[1] ), + .I1(\rxeq_cnt_reg_n_0_[0] ), + .I2(\rxeq_cnt_reg_n_0_[2] ), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .O(rxeq_cnt[2])); + FDRE #( + .INIT(1'b0)) + \rxeq_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_cnt[0]), + .Q(\rxeq_cnt_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_cnt[1]), + .Q(\rxeq_cnt_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_cnt_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_cnt[2]), + .Q(\rxeq_cnt_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_control_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_control_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_control_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_control_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_control_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_control_reg1[0]), + .Q(rxeq_control_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_control_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_control_reg1[1]), + .Q(rxeq_control_reg2[1]), + .R(RST_CPLLRESET)); + LUT2 #( + .INIT(4'h8)) + \rxeq_fs[0]_i_1__1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(rxeq_lffs_reg2[0]), + .O(rxeq_fs[0])); + LUT2 #( + .INIT(4'h8)) + \rxeq_fs[1]_i_1__1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(rxeq_lffs_reg2[1]), + .O(rxeq_fs[1])); + LUT2 #( + .INIT(4'h8)) + \rxeq_fs[2]_i_1__1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(rxeq_lffs_reg2[2]), + .O(rxeq_fs[2])); + LUT2 #( + .INIT(4'h8)) + \rxeq_fs[3]_i_1__1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(rxeq_lffs_reg2[3]), + .O(rxeq_fs[3])); + LUT2 #( + .INIT(4'h8)) + \rxeq_fs[4]_i_1__1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(rxeq_lffs_reg2[4]), + .O(rxeq_fs[4])); + LUT3 #( + .INIT(8'hF8)) + \rxeq_fs[5]_i_1__1 + (.I0(rxeq_control_reg2[1]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I2(\FSM_onehot_fsm_rx[1]_i_2__1_n_0 ), + .O(\rxeq_fs[5]_i_1__1_n_0 )); + LUT2 #( + .INIT(4'h8)) + \rxeq_fs[5]_i_2__1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(rxeq_lffs_reg2[5]), + .O(rxeq_fs[5])); + FDRE #( + .INIT(1'b0)) + \rxeq_fs_reg[0] + (.C(pipe_pclk_in), + .CE(\rxeq_fs[5]_i_1__1_n_0 ), + .D(rxeq_fs[0]), + .Q(\rxeq_fs_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_fs_reg[1] + (.C(pipe_pclk_in), + .CE(\rxeq_fs[5]_i_1__1_n_0 ), + .D(rxeq_fs[1]), + .Q(\rxeq_fs_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_fs_reg[2] + (.C(pipe_pclk_in), + .CE(\rxeq_fs[5]_i_1__1_n_0 ), + .D(rxeq_fs[2]), + .Q(\rxeq_fs_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_fs_reg[3] + (.C(pipe_pclk_in), + .CE(\rxeq_fs[5]_i_1__1_n_0 ), + .D(rxeq_fs[3]), + .Q(\rxeq_fs_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_fs_reg[4] + (.C(pipe_pclk_in), + .CE(\rxeq_fs[5]_i_1__1_n_0 ), + .D(rxeq_fs[4]), + .Q(\rxeq_fs_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_fs_reg[5] + (.C(pipe_pclk_in), + .CE(\rxeq_fs[5]_i_1__1_n_0 ), + .D(rxeq_fs[5]), + .Q(\rxeq_fs_reg_n_0_[5] ), + .R(RST_CPLLRESET)); + LUT2 #( + .INIT(4'h8)) + \rxeq_lf[0]_i_1__1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(rxeq_lffs_reg2[0]), + .O(rxeq_lf[0])); + LUT2 #( + .INIT(4'h8)) + \rxeq_lf[1]_i_1__1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(rxeq_lffs_reg2[1]), + .O(rxeq_lf[1])); + LUT2 #( + .INIT(4'h8)) + \rxeq_lf[2]_i_1__1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(rxeq_lffs_reg2[2]), + .O(rxeq_lf[2])); + LUT2 #( + .INIT(4'h8)) + \rxeq_lf[3]_i_1__1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(rxeq_lffs_reg2[3]), + .O(rxeq_lf[3])); + LUT2 #( + .INIT(4'h8)) + \rxeq_lf[4]_i_1__1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(rxeq_lffs_reg2[4]), + .O(rxeq_lf[4])); + LUT5 #( + .INIT(32'hEAAAAAAA)) + \rxeq_lf[5]_i_1__1 + (.I0(\FSM_onehot_fsm_rx[1]_i_2__1_n_0 ), + .I1(\rxeq_cnt_reg_n_0_[2] ), + .I2(\rxeq_cnt_reg_n_0_[0] ), + .I3(\rxeq_cnt_reg_n_0_[1] ), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .O(\rxeq_lf[5]_i_1__1_n_0 )); + LUT2 #( + .INIT(4'h8)) + \rxeq_lf[5]_i_2__1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(rxeq_lffs_reg2[5]), + .O(rxeq_lf[5])); + FDRE #( + .INIT(1'b0)) + \rxeq_lf_reg[0] + (.C(pipe_pclk_in), + .CE(\rxeq_lf[5]_i_1__1_n_0 ), + .D(rxeq_lf[0]), + .Q(\rxeq_lf_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_lf_reg[1] + (.C(pipe_pclk_in), + .CE(\rxeq_lf[5]_i_1__1_n_0 ), + .D(rxeq_lf[1]), + .Q(\rxeq_lf_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_lf_reg[2] + (.C(pipe_pclk_in), + .CE(\rxeq_lf[5]_i_1__1_n_0 ), + .D(rxeq_lf[2]), + .Q(\rxeq_lf_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_lf_reg[3] + (.C(pipe_pclk_in), + .CE(\rxeq_lf[5]_i_1__1_n_0 ), + .D(rxeq_lf[3]), + .Q(\rxeq_lf_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_lf_reg[4] + (.C(pipe_pclk_in), + .CE(\rxeq_lf[5]_i_1__1_n_0 ), + .D(rxeq_lf[4]), + .Q(\rxeq_lf_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_lf_reg[5] + (.C(pipe_pclk_in), + .CE(\rxeq_lf[5]_i_1__1_n_0 ), + .D(rxeq_lf[5]), + .Q(\rxeq_lf_reg_n_0_[5] ), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_lffs_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_lffs_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_lffs_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_lffs_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg1_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_lffs_reg1[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg1_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_lffs_reg1[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_lffs_reg1[0]), + .Q(rxeq_lffs_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_lffs_reg1[1]), + .Q(rxeq_lffs_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_lffs_reg1[2]), + .Q(rxeq_lffs_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_lffs_reg1[3]), + .Q(rxeq_lffs_reg2[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_lffs_reg1[4]), + .Q(rxeq_lffs_reg2[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_lffs_reg1[5]), + .Q(rxeq_lffs_reg2[5]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + rxeq_new_txcoeff_req_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_new_txcoeff_req), + .Q(rxeq_new_txcoeff_req_reg_n_0), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'hA8FFA800)) + \rxeq_preset[0]_i_1__1 + (.I0(rxeq_preset_reg2[0]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I3(\rxeq_preset[2]_i_2__1_n_0 ), + .I4(\rxeq_preset_reg_n_0_[0] ), + .O(\rxeq_preset[0]_i_1__1_n_0 )); + LUT5 #( + .INIT(32'hA8FFA800)) + \rxeq_preset[1]_i_1__1 + (.I0(rxeq_preset_reg2[1]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I3(\rxeq_preset[2]_i_2__1_n_0 ), + .I4(\rxeq_preset_reg_n_0_[1] ), + .O(\rxeq_preset[1]_i_1__1_n_0 )); + LUT5 #( + .INIT(32'hA8FFA800)) + \rxeq_preset[2]_i_1__1 + (.I0(rxeq_preset_reg2[2]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I3(\rxeq_preset[2]_i_2__1_n_0 ), + .I4(\rxeq_preset_reg_n_0_[2] ), + .O(\rxeq_preset[2]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFFFFF0002)) + \rxeq_preset[2]_i_2__1 + (.I0(\rxeq_preset[2]_i_3__1_n_0 ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[6] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[5] ), + .I4(rxeq_adapt_done_reg_i_2__1_n_0), + .I5(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .O(\rxeq_preset[2]_i_2__1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair145" *) + LUT2 #( + .INIT(4'h1)) + \rxeq_preset[2]_i_3__1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .O(\rxeq_preset[2]_i_3__1_n_0 )); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_preset_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_preset_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_preset_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_preset_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_preset_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_preset_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_preset_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_preset_reg1[0]), + .Q(rxeq_preset_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_preset_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_preset_reg1[1]), + .Q(rxeq_preset_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_preset_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_preset_reg1[2]), + .Q(rxeq_preset_reg2[2]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_preset_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rxeq_preset[0]_i_1__1_n_0 ), + .Q(\rxeq_preset_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_preset_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rxeq_preset[1]_i_1__1_n_0 ), + .Q(\rxeq_preset_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_preset_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rxeq_preset[2]_i_1__1_n_0 ), + .Q(\rxeq_preset_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + rxeq_preset_valid_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .Q(rxeq_preset_valid), + .R(RST_CPLLRESET)); + pcie_7x_0_pcie_7x_0_rxeq_scan_55 rxeq_scan_i + (.D({rxeq_scan_i_n_0,rxeq_scan_i_n_1,rxeq_scan_i_n_2}), + .\FSM_onehot_fsm_rx_reg[5] ({\rxeq_cnt_reg_n_0_[2] ,\rxeq_cnt_reg_n_0_[1] ,\rxeq_cnt_reg_n_0_[0] }), + .Q({\FSM_onehot_fsm_rx_reg_n_0_[6] ,\FSM_onehot_fsm_rx_reg_n_0_[5] ,\FSM_onehot_fsm_rx_reg_n_0_[4] ,\FSM_onehot_fsm_rx_reg_n_0_[2] ,\FSM_onehot_fsm_rx_reg_n_0_[1] }), + .RST_CPLLRESET(RST_CPLLRESET), + .USER_RXEQ_ADAPT_DONE(USER_RXEQ_ADAPT_DONE), + .adapt_done_reg_0(rxeq_scan_i_n_4), + .\fs_reg1_reg[5]_0 ({\rxeq_fs_reg_n_0_[5] ,\rxeq_fs_reg_n_0_[4] ,\rxeq_fs_reg_n_0_[3] ,\rxeq_fs_reg_n_0_[2] ,\rxeq_fs_reg_n_0_[1] ,\rxeq_fs_reg_n_0_[0] }), + .\lf_reg1_reg[5]_0 ({\rxeq_lf_reg_n_0_[5] ,\rxeq_lf_reg_n_0_[4] ,\rxeq_lf_reg_n_0_[3] ,\rxeq_lf_reg_n_0_[2] ,\rxeq_lf_reg_n_0_[1] ,\rxeq_lf_reg_n_0_[0] }), + .new_txcoeff_done_reg_0(rxeq_scan_i_n_5), + .new_txcoeff_req_reg1_reg_0(rxeq_new_txcoeff_req_reg_n_0), + .out(rxeq_control_reg2), + .pipe_pclk_in(pipe_pclk_in), + .\preset_reg1_reg[2]_0 ({\rxeq_preset_reg_n_0_[2] ,\rxeq_preset_reg_n_0_[1] ,\rxeq_preset_reg_n_0_[0] }), + .rxeq_adapt_done_reg(rxeq_adapt_done_i_2__1_n_0), + .rxeq_adapt_done_reg_reg(\FSM_onehot_fsm_rx[1]_i_2__1_n_0 ), + .rxeq_adapt_done_reg_reg_0(rxeq_adapt_done_reg_i_2__1_n_0), + .rxeq_adapt_done_reg_reg_1(rxeq_adapt_done_reg_reg_n_0), + .rxeq_new_txcoeff_req(rxeq_new_txcoeff_req), + .rxeq_preset_valid(rxeq_preset_valid), + .\txcoeff_reg1_reg[17]_0 ({\rxeq_txcoeff_reg_n_0_[17] ,\rxeq_txcoeff_reg_n_0_[16] ,\rxeq_txcoeff_reg_n_0_[15] ,\rxeq_txcoeff_reg_n_0_[14] ,\rxeq_txcoeff_reg_n_0_[13] ,\rxeq_txcoeff_reg_n_0_[12] ,\rxeq_txcoeff_reg_n_0_[11] ,\rxeq_txcoeff_reg_n_0_[10] ,\rxeq_txcoeff_reg_n_0_[9] ,\rxeq_txcoeff_reg_n_0_[8] ,\rxeq_txcoeff_reg_n_0_[7] ,\rxeq_txcoeff_reg_n_0_[6] ,\rxeq_txcoeff_reg_n_0_[5] ,\rxeq_txcoeff_reg_n_0_[4] ,\rxeq_txcoeff_reg_n_0_[3] ,\rxeq_txcoeff_reg_n_0_[2] ,\rxeq_txcoeff_reg_n_0_[1] ,\rxeq_txcoeff_reg_n_0_[0] }), + .\txpreset_reg1_reg[3]_0 ({\rxeq_txpreset_reg_n_0_[3] ,\rxeq_txpreset_reg_n_0_[2] ,\rxeq_txpreset_reg_n_0_[1] ,\rxeq_txpreset_reg_n_0_[0] })); + (* SOFT_HLUTNM = "soft_lutpair146" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[0]_i_1__1 + (.I0(\rxeq_txcoeff_reg_n_0_[6] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[0])); + (* SOFT_HLUTNM = "soft_lutpair151" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[10]_i_1__1 + (.I0(\rxeq_txcoeff_reg_n_0_[16] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[10])); + (* SOFT_HLUTNM = "soft_lutpair151" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[11]_i_1__1 + (.I0(\rxeq_txcoeff_reg_n_0_[17] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[11])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[12]_i_1__1 + (.I0(txeq_deemph_reg2[0]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[12])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[13]_i_1__1 + (.I0(txeq_deemph_reg2[1]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[13])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[14]_i_1__1 + (.I0(txeq_deemph_reg2[2]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[14])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[15]_i_1__1 + (.I0(txeq_deemph_reg2[3]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[15])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[16]_i_1__1 + (.I0(txeq_deemph_reg2[4]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[16])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[17]_i_1__1 + (.I0(txeq_deemph_reg2[5]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[17])); + (* SOFT_HLUTNM = "soft_lutpair146" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[1]_i_1__1 + (.I0(\rxeq_txcoeff_reg_n_0_[7] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[1])); + (* SOFT_HLUTNM = "soft_lutpair147" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[2]_i_1__1 + (.I0(\rxeq_txcoeff_reg_n_0_[8] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[2])); + (* SOFT_HLUTNM = "soft_lutpair147" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[3]_i_1__1 + (.I0(\rxeq_txcoeff_reg_n_0_[9] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[3])); + (* SOFT_HLUTNM = "soft_lutpair148" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[4]_i_1__1 + (.I0(\rxeq_txcoeff_reg_n_0_[10] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[4])); + (* SOFT_HLUTNM = "soft_lutpair148" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[5]_i_1__1 + (.I0(\rxeq_txcoeff_reg_n_0_[11] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[5])); + (* SOFT_HLUTNM = "soft_lutpair149" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[6]_i_1__1 + (.I0(\rxeq_txcoeff_reg_n_0_[12] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[6])); + (* SOFT_HLUTNM = "soft_lutpair149" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[7]_i_1__1 + (.I0(\rxeq_txcoeff_reg_n_0_[13] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[7])); + (* SOFT_HLUTNM = "soft_lutpair150" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[8]_i_1__1 + (.I0(\rxeq_txcoeff_reg_n_0_[14] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[8])); + (* SOFT_HLUTNM = "soft_lutpair150" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[9]_i_1__1 + (.I0(\rxeq_txcoeff_reg_n_0_[15] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[9])); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[0] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__1_n_0 ), + .D(rxeq_txcoeff[0]), + .Q(\rxeq_txcoeff_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[10] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__1_n_0 ), + .D(rxeq_txcoeff[10]), + .Q(\rxeq_txcoeff_reg_n_0_[10] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[11] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__1_n_0 ), + .D(rxeq_txcoeff[11]), + .Q(\rxeq_txcoeff_reg_n_0_[11] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[12] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__1_n_0 ), + .D(rxeq_txcoeff[12]), + .Q(\rxeq_txcoeff_reg_n_0_[12] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[13] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__1_n_0 ), + .D(rxeq_txcoeff[13]), + .Q(\rxeq_txcoeff_reg_n_0_[13] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[14] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__1_n_0 ), + .D(rxeq_txcoeff[14]), + .Q(\rxeq_txcoeff_reg_n_0_[14] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[15] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__1_n_0 ), + .D(rxeq_txcoeff[15]), + .Q(\rxeq_txcoeff_reg_n_0_[15] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[16] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__1_n_0 ), + .D(rxeq_txcoeff[16]), + .Q(\rxeq_txcoeff_reg_n_0_[16] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[17] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__1_n_0 ), + .D(rxeq_txcoeff[17]), + .Q(\rxeq_txcoeff_reg_n_0_[17] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[1] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__1_n_0 ), + .D(rxeq_txcoeff[1]), + .Q(\rxeq_txcoeff_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[2] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__1_n_0 ), + .D(rxeq_txcoeff[2]), + .Q(\rxeq_txcoeff_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[3] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__1_n_0 ), + .D(rxeq_txcoeff[3]), + .Q(\rxeq_txcoeff_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[4] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__1_n_0 ), + .D(rxeq_txcoeff[4]), + .Q(\rxeq_txcoeff_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[5] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__1_n_0 ), + .D(rxeq_txcoeff[5]), + .Q(\rxeq_txcoeff_reg_n_0_[5] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[6] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__1_n_0 ), + .D(rxeq_txcoeff[6]), + .Q(\rxeq_txcoeff_reg_n_0_[6] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[7] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__1_n_0 ), + .D(rxeq_txcoeff[7]), + .Q(\rxeq_txcoeff_reg_n_0_[7] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[8] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__1_n_0 ), + .D(rxeq_txcoeff[8]), + .Q(\rxeq_txcoeff_reg_n_0_[8] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[9] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__1_n_0 ), + .D(rxeq_txcoeff[9]), + .Q(\rxeq_txcoeff_reg_n_0_[9] ), + .R(RST_CPLLRESET)); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txpreset[0]_i_1__1 + (.I0(rxeq_txpreset_reg2[0]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txpreset[0])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txpreset[1]_i_1__1 + (.I0(rxeq_txpreset_reg2[1]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txpreset[1])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txpreset[2]_i_1__1 + (.I0(rxeq_txpreset_reg2[2]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txpreset[2])); + LUT5 #( + .INIT(32'hFFFFF404)) + \rxeq_txpreset[3]_i_1__1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[6] ), + .I1(\rxeq_txpreset[3]_i_3__1_n_0 ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I3(rxeq_control_reg2[1]), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .O(\rxeq_txpreset[3]_i_1__1_n_0 )); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txpreset[3]_i_2__1 + (.I0(rxeq_txpreset_reg2[3]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txpreset[3])); + LUT3 #( + .INIT(8'h01)) + \rxeq_txpreset[3]_i_3__1 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[5] ), + .O(\rxeq_txpreset[3]_i_3__1_n_0 )); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_txpreset_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_txpreset_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_txpreset_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_txpreset_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_txpreset_reg1[0]), + .Q(rxeq_txpreset_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_txpreset_reg1[1]), + .Q(rxeq_txpreset_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_txpreset_reg1[2]), + .Q(rxeq_txpreset_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_txpreset_reg1[3]), + .Q(rxeq_txpreset_reg2[3]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txpreset_reg[0] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__1_n_0 ), + .D(rxeq_txpreset[0]), + .Q(\rxeq_txpreset_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txpreset_reg[1] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__1_n_0 ), + .D(rxeq_txpreset[1]), + .Q(\rxeq_txpreset_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txpreset_reg[2] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__1_n_0 ), + .D(rxeq_txpreset[2]), + .Q(\rxeq_txpreset_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txpreset_reg[3] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__1_n_0 ), + .D(rxeq_txpreset[3]), + .Q(\rxeq_txpreset_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxeq_user_en_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_en_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxeq_user_en_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_en_reg1), + .Q(rxeq_user_en_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxeq_user_mode_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_mode_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxeq_user_mode_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_mode_reg1), + .Q(rxeq_user_mode_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[10]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[11]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[12]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[13]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[14]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[15]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[16] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[16]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[17] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[17]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[6]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[7]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[8]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[9]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[0]), + .Q(rxeq_user_txcoeff_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[10]), + .Q(rxeq_user_txcoeff_reg2[10]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[11]), + .Q(rxeq_user_txcoeff_reg2[11]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[12]), + .Q(rxeq_user_txcoeff_reg2[12]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[13]), + .Q(rxeq_user_txcoeff_reg2[13]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[14]), + .Q(rxeq_user_txcoeff_reg2[14]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[15]), + .Q(rxeq_user_txcoeff_reg2[15]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[16] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[16]), + .Q(rxeq_user_txcoeff_reg2[16]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[17] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[17]), + .Q(rxeq_user_txcoeff_reg2[17]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[1]), + .Q(rxeq_user_txcoeff_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[2]), + .Q(rxeq_user_txcoeff_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[3]), + .Q(rxeq_user_txcoeff_reg2[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[4]), + .Q(rxeq_user_txcoeff_reg2[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[5]), + .Q(rxeq_user_txcoeff_reg2[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[6]), + .Q(rxeq_user_txcoeff_reg2[6]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[7]), + .Q(rxeq_user_txcoeff_reg2[7]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[8]), + .Q(rxeq_user_txcoeff_reg2[8]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[9]), + .Q(rxeq_user_txcoeff_reg2[9]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_control_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_control_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_control_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_control_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_control_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_control_reg1[0]), + .Q(txeq_control_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_control_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_control_reg1[1]), + .Q(txeq_control_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDSE \txeq_deemph_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_deemph_reg1[0]), + .S(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_deemph_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_deemph_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_deemph_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg1_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_deemph_reg1[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg1_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_deemph_reg1[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDSE \txeq_deemph_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_deemph_reg1[0]), + .Q(txeq_deemph_reg2[0]), + .S(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_deemph_reg1[1]), + .Q(txeq_deemph_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_deemph_reg1[2]), + .Q(txeq_deemph_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_deemph_reg1[3]), + .Q(txeq_deemph_reg2[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_deemph_reg1[4]), + .Q(txeq_deemph_reg2[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_deemph_reg1[5]), + .Q(txeq_deemph_reg2[5]), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h00001000)) + \txeq_preset[0]_i_1__1 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[2]), + .I2(txeq_preset_reg2[0]), + .I3(txeq_preset_reg2[3]), + .I4(txeq_preset_reg2[1]), + .O(p_0_out[0])); + LUT5 #( + .INIT(32'hABEAABAF)) + \txeq_preset[10]_i_1__1 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[2]), + .I2(txeq_preset_reg2[0]), + .I3(txeq_preset_reg2[3]), + .I4(txeq_preset_reg2[1]), + .O(p_0_out[10])); + LUT5 #( + .INIT(32'hFFFF200D)) + \txeq_preset[11]_i_1__1 + (.I0(txeq_preset_reg2[1]), + .I1(txeq_preset_reg2[3]), + .I2(txeq_preset_reg2[2]), + .I3(txeq_preset_reg2[0]), + .I4(RST_CPLLRESET), + .O(p_0_out[11])); + LUT5 #( + .INIT(32'h01151110)) + \txeq_preset[12]_i_1__1 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[3]), + .I2(txeq_preset_reg2[1]), + .I3(txeq_preset_reg2[2]), + .I4(txeq_preset_reg2[0]), + .O(p_0_out[12])); + LUT5 #( + .INIT(32'h01000010)) + \txeq_preset[13]_i_1__1 + (.I0(txeq_preset_reg2[2]), + .I1(RST_CPLLRESET), + .I2(txeq_preset_reg2[0]), + .I3(txeq_preset_reg2[3]), + .I4(txeq_preset_reg2[1]), + .O(p_0_out[13])); + LUT5 #( + .INIT(32'h01000010)) + \txeq_preset[14]_i_1__1 + (.I0(txeq_preset_reg2[2]), + .I1(RST_CPLLRESET), + .I2(txeq_preset_reg2[3]), + .I3(txeq_preset_reg2[1]), + .I4(txeq_preset_reg2[0]), + .O(p_0_out[14])); + LUT4 #( + .INIT(16'hF0F1)) + \txeq_preset[15]_i_1__1 + (.I0(txeq_preset_reg2[2]), + .I1(txeq_preset_reg2[1]), + .I2(RST_CPLLRESET), + .I3(txeq_preset_reg2[3]), + .O(p_0_out[15])); + LUT4 #( + .INIT(16'h0006)) + \txeq_preset[16]_i_1__1 + (.I0(txeq_preset_reg2[3]), + .I1(txeq_preset_reg2[0]), + .I2(txeq_preset_reg2[2]), + .I3(RST_CPLLRESET), + .O(p_0_out[16])); + LUT4 #( + .INIT(16'hAABA)) + \txeq_preset[17]_i_1__1 + (.I0(RST_CPLLRESET), + .I1(fsm_tx[0]), + .I2(fsm_tx[1]), + .I3(fsm_tx[2]), + .O(\txeq_preset[17]_i_1__1_n_0 )); + LUT5 #( + .INIT(32'hFFFF400D)) + \txeq_preset[17]_i_2__1 + (.I0(txeq_preset_reg2[3]), + .I1(txeq_preset_reg2[1]), + .I2(txeq_preset_reg2[2]), + .I3(txeq_preset_reg2[0]), + .I4(RST_CPLLRESET), + .O(p_0_out[17])); + LUT5 #( + .INIT(32'h00001004)) + \txeq_preset[1]_i_1__1 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[3]), + .I2(txeq_preset_reg2[1]), + .I3(txeq_preset_reg2[2]), + .I4(txeq_preset_reg2[0]), + .O(p_0_out[1])); + LUT4 #( + .INIT(16'h0E00)) + \txeq_preset[2]_i_1__1 + (.I0(txeq_preset_reg2[2]), + .I1(txeq_preset_reg2[0]), + .I2(RST_CPLLRESET), + .I3(txeq_preset_reg2[3]), + .O(p_0_out[2])); + LUT5 #( + .INIT(32'h01440140)) + \txeq_preset[3]_i_1__1 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[2]), + .I2(txeq_preset_reg2[1]), + .I3(txeq_preset_reg2[3]), + .I4(txeq_preset_reg2[0]), + .O(\txeq_preset[3]_i_1__1_n_0 )); + LUT5 #( + .INIT(32'h00001400)) + \txeq_preset[7]_i_1__1 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[0]), + .I2(txeq_preset_reg2[2]), + .I3(txeq_preset_reg2[1]), + .I4(txeq_preset_reg2[3]), + .O(\txeq_preset[7]_i_1__1_n_0 )); + LUT5 #( + .INIT(32'hAAAFBEAF)) + \txeq_preset[8]_i_1__1 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[0]), + .I2(txeq_preset_reg2[2]), + .I3(txeq_preset_reg2[1]), + .I4(txeq_preset_reg2[3]), + .O(p_0_out[8])); + LUT5 #( + .INIT(32'hCCFCCFCD)) + \txeq_preset[9]_i_1__1 + (.I0(txeq_preset_reg2[1]), + .I1(RST_CPLLRESET), + .I2(txeq_preset_reg2[2]), + .I3(txeq_preset_reg2[3]), + .I4(txeq_preset_reg2[0]), + .O(p_0_out[9])); + (* SOFT_HLUTNM = "soft_lutpair143" *) + LUT3 #( + .INIT(8'h04)) + txeq_preset_done_i_1__1 + (.I0(fsm_tx[2]), + .I1(fsm_tx[1]), + .I2(fsm_tx[0]), + .O(txeq_preset_done_i_1__1_n_0)); + FDRE #( + .INIT(1'b0)) + txeq_preset_done_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_preset_done_i_1__1_n_0), + .Q(txeq_preset_done), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_preset_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_preset_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_preset_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_preset_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_preset_reg1[0]), + .Q(txeq_preset_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_preset_reg1[1]), + .Q(txeq_preset_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_preset_reg1[2]), + .Q(txeq_preset_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_preset_reg1[3]), + .Q(txeq_preset_reg2[3]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[0] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__1_n_0 ), + .D(p_0_out[0]), + .Q(\txeq_preset_reg_n_0_[0] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[10] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__1_n_0 ), + .D(p_0_out[10]), + .Q(\txeq_preset_reg_n_0_[10] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[11] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__1_n_0 ), + .D(p_0_out[11]), + .Q(\txeq_preset_reg_n_0_[11] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[12] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__1_n_0 ), + .D(p_0_out[12]), + .Q(\txeq_preset_reg_n_0_[12] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[13] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__1_n_0 ), + .D(p_0_out[13]), + .Q(\txeq_preset_reg_n_0_[13] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[14] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__1_n_0 ), + .D(p_0_out[14]), + .Q(\txeq_preset_reg_n_0_[14] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[15] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__1_n_0 ), + .D(p_0_out[15]), + .Q(\txeq_preset_reg_n_0_[15] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[16] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__1_n_0 ), + .D(p_0_out[16]), + .Q(\txeq_preset_reg_n_0_[16] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[17] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__1_n_0 ), + .D(p_0_out[17]), + .Q(\txeq_preset_reg_n_0_[17] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[1] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__1_n_0 ), + .D(p_0_out[1]), + .Q(\txeq_preset_reg_n_0_[1] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[2] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__1_n_0 ), + .D(p_0_out[2]), + .Q(\txeq_preset_reg_n_0_[2] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[3] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__1_n_0 ), + .D(\txeq_preset[3]_i_1__1_n_0 ), + .Q(\txeq_preset_reg_n_0_[3] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[7] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__1_n_0 ), + .D(\txeq_preset[7]_i_1__1_n_0 ), + .Q(\txeq_preset_reg_n_0_[7] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[8] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__1_n_0 ), + .D(p_0_out[8]), + .Q(\txeq_preset_reg_n_0_[8] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[9] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__1_n_0 ), + .D(p_0_out[9]), + .Q(\txeq_preset_reg_n_0_[9] ), + .R(1'b0)); + LUT5 #( + .INIT(32'h45404040)) + \txeq_txcoeff[0]_i_1__1 + (.I0(fsm_tx[2]), + .I1(\txeq_txcoeff[0]_i_2__1_n_0 ), + .I2(fsm_tx[1]), + .I3(fsm_tx[0]), + .I4(\txeq_txcoeff_reg_n_0_[6] ), + .O(\txeq_txcoeff[0]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[0]_i_2__1 + (.I0(\txeq_txcoeff_reg_n_0_[6] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[7] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[0] ), + .O(\txeq_txcoeff[0]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[10]_i_1__1 + (.I0(\txeq_txcoeff_reg_n_0_[9] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[10]_i_2__1_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[16] ), + .O(\txeq_txcoeff[10]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[10]_i_2__1 + (.I0(\txeq_txcoeff_reg_n_0_[16] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[17] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[10] ), + .O(\txeq_txcoeff[10]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[11]_i_1__1 + (.I0(\txeq_txcoeff_reg_n_0_[10] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[11]_i_2__1_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[17] ), + .O(\txeq_txcoeff[11]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[11]_i_2__1 + (.I0(\txeq_txcoeff_reg_n_0_[17] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[18] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[11] ), + .O(\txeq_txcoeff[11]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[12]_i_1__1 + (.I0(\txeq_txcoeff_reg_n_0_[11] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[12]_i_2__1_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[18] ), + .O(\txeq_txcoeff[12]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[12]_i_2__1 + (.I0(\txeq_txcoeff_reg_n_0_[18] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(txeq_deemph_reg2[0]), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[12] ), + .O(\txeq_txcoeff[12]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[13]_i_1__1 + (.I0(\txeq_txcoeff_reg_n_0_[12] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[13]_i_2__1_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(txeq_deemph_reg2[0]), + .O(\txeq_txcoeff[13]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[13]_i_2__1 + (.I0(txeq_deemph_reg2[0]), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(txeq_deemph_reg2[1]), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[13] ), + .O(\txeq_txcoeff[13]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[14]_i_1__1 + (.I0(\txeq_txcoeff_reg_n_0_[13] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[14]_i_2__1_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(txeq_deemph_reg2[1]), + .O(\txeq_txcoeff[14]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[14]_i_2__1 + (.I0(txeq_deemph_reg2[1]), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(txeq_deemph_reg2[2]), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[14] ), + .O(\txeq_txcoeff[14]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[15]_i_1__1 + (.I0(\txeq_txcoeff_reg_n_0_[14] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[15]_i_2__1_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(txeq_deemph_reg2[2]), + .O(\txeq_txcoeff[15]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[15]_i_2__1 + (.I0(txeq_deemph_reg2[2]), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(txeq_deemph_reg2[3]), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[15] ), + .O(\txeq_txcoeff[15]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[16]_i_1__1 + (.I0(\txeq_txcoeff_reg_n_0_[15] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[16]_i_2__1_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(txeq_deemph_reg2[3]), + .O(\txeq_txcoeff[16]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[16]_i_2__1 + (.I0(txeq_deemph_reg2[3]), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(txeq_deemph_reg2[4]), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[16] ), + .O(\txeq_txcoeff[16]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[17]_i_1__1 + (.I0(\txeq_txcoeff_reg_n_0_[16] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[17]_i_2__1_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(txeq_deemph_reg2[4]), + .O(\txeq_txcoeff[17]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[17]_i_2__1 + (.I0(txeq_deemph_reg2[4]), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(txeq_deemph_reg2[5]), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[17] ), + .O(\txeq_txcoeff[17]_i_2__1_n_0 )); + LUT5 #( + .INIT(32'hFF040FFF)) + \txeq_txcoeff[18]_i_1__1 + (.I0(txeq_control_reg2[0]), + .I1(txeq_control_reg2[1]), + .I2(fsm_tx[2]), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .O(txeq_txcoeff)); + LUT6 #( + .INIT(64'h22F3220022002200)) + \txeq_txcoeff[18]_i_2__1 + (.I0(\txeq_txcoeff_reg_n_0_[17] ), + .I1(fsm_tx[1]), + .I2(\txeq_txcoeff[18]_i_3__1_n_0 ), + .I3(fsm_tx[2]), + .I4(txeq_deemph_reg2[5]), + .I5(fsm_tx[0]), + .O(\txeq_txcoeff[18]_i_2__1_n_0 )); + LUT2 #( + .INIT(4'hB)) + \txeq_txcoeff[18]_i_3__1 + (.I0(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .O(\txeq_txcoeff[18]_i_3__1_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[1]_i_1__1 + (.I0(\txeq_txcoeff_reg_n_0_[0] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[1]_i_2__1_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[7] ), + .O(\txeq_txcoeff[1]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[1]_i_2__1 + (.I0(\txeq_txcoeff_reg_n_0_[7] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[8] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[1] ), + .O(\txeq_txcoeff[1]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[2]_i_1__1 + (.I0(\txeq_txcoeff_reg_n_0_[1] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[2]_i_2__1_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[8] ), + .O(\txeq_txcoeff[2]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[2]_i_2__1 + (.I0(\txeq_txcoeff_reg_n_0_[8] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[9] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[2] ), + .O(\txeq_txcoeff[2]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[3]_i_1__1 + (.I0(\txeq_txcoeff_reg_n_0_[2] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[3]_i_2__1_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[9] ), + .O(\txeq_txcoeff[3]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[3]_i_2__1 + (.I0(\txeq_txcoeff_reg_n_0_[9] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[10] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[3] ), + .O(\txeq_txcoeff[3]_i_2__1_n_0 )); + LUT4 #( + .INIT(16'h2F20)) + \txeq_txcoeff[4]_i_1__1 + (.I0(\txeq_txcoeff_reg_n_0_[3] ), + .I1(fsm_tx[1]), + .I2(fsm_tx[2]), + .I3(\txeq_txcoeff[4]_i_2__1_n_0 ), + .O(\txeq_txcoeff[4]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'hCACCCCCC00000000)) + \txeq_txcoeff[4]_i_2__1 + (.I0(\txeq_txcoeff_reg_n_0_[11] ), + .I1(\txeq_txcoeff_reg_n_0_[10] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I3(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I4(fsm_tx[1]), + .I5(fsm_tx[0]), + .O(\txeq_txcoeff[4]_i_2__1_n_0 )); + LUT4 #( + .INIT(16'h2F20)) + \txeq_txcoeff[5]_i_1__1 + (.I0(\txeq_txcoeff_reg_n_0_[4] ), + .I1(fsm_tx[1]), + .I2(fsm_tx[2]), + .I3(\txeq_txcoeff[5]_i_2__1_n_0 ), + .O(\txeq_txcoeff[5]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'hCACCCCCC00000000)) + \txeq_txcoeff[5]_i_2__1 + (.I0(\txeq_txcoeff_reg_n_0_[12] ), + .I1(\txeq_txcoeff_reg_n_0_[11] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I3(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I4(fsm_tx[1]), + .I5(fsm_tx[0]), + .O(\txeq_txcoeff[5]_i_2__1_n_0 )); + LUT4 #( + .INIT(16'h2F20)) + \txeq_txcoeff[6]_i_1__1 + (.I0(\txeq_txcoeff_reg_n_0_[5] ), + .I1(fsm_tx[1]), + .I2(fsm_tx[2]), + .I3(\txeq_txcoeff[6]_i_2__1_n_0 ), + .O(\txeq_txcoeff[6]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'hCACCCCCC00000000)) + \txeq_txcoeff[6]_i_2__1 + (.I0(\txeq_txcoeff_reg_n_0_[13] ), + .I1(\txeq_txcoeff_reg_n_0_[12] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I3(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I4(fsm_tx[1]), + .I5(fsm_tx[0]), + .O(\txeq_txcoeff[6]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[7]_i_1__1 + (.I0(\txeq_txcoeff_reg_n_0_[6] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[7]_i_2__1_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[13] ), + .O(\txeq_txcoeff[7]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[7]_i_2__1 + (.I0(\txeq_txcoeff_reg_n_0_[13] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[14] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[7] ), + .O(\txeq_txcoeff[7]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[8]_i_1__1 + (.I0(\txeq_txcoeff_reg_n_0_[7] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[8]_i_2__1_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[14] ), + .O(\txeq_txcoeff[8]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[8]_i_2__1 + (.I0(\txeq_txcoeff_reg_n_0_[14] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[15] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[8] ), + .O(\txeq_txcoeff[8]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[9]_i_1__1 + (.I0(\txeq_txcoeff_reg_n_0_[8] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[9]_i_2__1_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[15] ), + .O(\txeq_txcoeff[9]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[9]_i_2__1 + (.I0(\txeq_txcoeff_reg_n_0_[15] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[16] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[9] ), + .O(\txeq_txcoeff[9]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'h000004000F000400)) + \txeq_txcoeff_cnt[0]_i_1__1 + (.I0(txeq_control_reg2[0]), + .I1(txeq_control_reg2[1]), + .I2(fsm_tx[2]), + .I3(fsm_tx[0]), + .I4(fsm_tx[1]), + .I5(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .O(txeq_txcoeff_cnt[0])); + (* SOFT_HLUTNM = "soft_lutpair143" *) + LUT5 #( + .INIT(32'h00006000)) + \txeq_txcoeff_cnt[1]_i_1__1 + (.I0(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I2(fsm_tx[0]), + .I3(fsm_tx[1]), + .I4(fsm_tx[2]), + .O(txeq_txcoeff_cnt[1])); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_txcoeff_cnt[0]), + .Q(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_txcoeff_cnt[1]), + .Q(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[0] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[0]_i_1__1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[10] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[10]_i_1__1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[10] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[11] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[11]_i_1__1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[11] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[12] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[12]_i_1__1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[12] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[13] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[13]_i_1__1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[13] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[14] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[14]_i_1__1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[14] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[15] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[15]_i_1__1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[15] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[16] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[16]_i_1__1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[16] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[17] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[17]_i_1__1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[17] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[18] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[18]_i_2__1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[18] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[1] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[1]_i_1__1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[2] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[2]_i_1__1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[3] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[3]_i_1__1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[4] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[4]_i_1__1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[5] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[5]_i_1__1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[5] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[6] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[6]_i_1__1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[6] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[7] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[7]_i_1__1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[7] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[8] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[8]_i_1__1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[8] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[9] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[9]_i_1__1_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[9] ), + .R(RST_CPLLRESET)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pipe_eq" *) +module pcie_7x_0_pcie_7x_0_pipe_eq_51 + (TXPRECURSOR, + TXMAINCURSOR, + TXPOSTCURSOR, + USER_RXEQ_ADAPT_DONE, + RST_CPLLRESET, + pipe_pclk_in, + rate_gen3_3); + output [4:0]TXPRECURSOR; + output [6:0]TXMAINCURSOR; + output [4:0]TXPOSTCURSOR; + output USER_RXEQ_ADAPT_DONE; + input RST_CPLLRESET; + input pipe_pclk_in; + input rate_gen3_3; + + wire \FSM_onehot_fsm_rx[1]_i_1__2_n_0 ; + wire \FSM_onehot_fsm_rx[1]_i_2__2_n_0 ; + wire \FSM_onehot_fsm_rx[3]_i_1__2_n_0 ; + wire \FSM_onehot_fsm_rx[4]_i_1__2_n_0 ; + wire \FSM_onehot_fsm_rx_reg_n_0_[1] ; + wire \FSM_onehot_fsm_rx_reg_n_0_[2] ; + wire \FSM_onehot_fsm_rx_reg_n_0_[3] ; + wire \FSM_onehot_fsm_rx_reg_n_0_[4] ; + wire \FSM_onehot_fsm_rx_reg_n_0_[5] ; + wire \FSM_onehot_fsm_rx_reg_n_0_[6] ; + wire \FSM_sequential_fsm_tx[1]_i_2__2_n_0 ; + wire \FSM_sequential_fsm_tx[2]_i_2__2_n_0 ; + wire RST_CPLLRESET; + wire [6:0]TXMAINCURSOR; + wire [4:0]TXPOSTCURSOR; + wire [4:0]TXPRECURSOR; + wire USER_RXEQ_ADAPT_DONE; + wire [2:0]fsm_tx; + wire [2:0]fsm_tx__0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gen3_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gen3_reg2; + wire [17:0]p_0_out; + wire pipe_pclk_in; + wire rate_gen3_3; + wire rxeq_adapt_done_i_2__2_n_0; + wire rxeq_adapt_done_reg_i_2__2_n_0; + wire rxeq_adapt_done_reg_reg_n_0; + wire [2:0]rxeq_cnt; + wire \rxeq_cnt_reg_n_0_[0] ; + wire \rxeq_cnt_reg_n_0_[1] ; + wire \rxeq_cnt_reg_n_0_[2] ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rxeq_control_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rxeq_control_reg2; + wire [5:0]rxeq_fs; + wire \rxeq_fs[5]_i_1__2_n_0 ; + wire \rxeq_fs_reg_n_0_[0] ; + wire \rxeq_fs_reg_n_0_[1] ; + wire \rxeq_fs_reg_n_0_[2] ; + wire \rxeq_fs_reg_n_0_[3] ; + wire \rxeq_fs_reg_n_0_[4] ; + wire \rxeq_fs_reg_n_0_[5] ; + wire [5:0]rxeq_lf; + wire \rxeq_lf[5]_i_1__2_n_0 ; + wire \rxeq_lf_reg_n_0_[0] ; + wire \rxeq_lf_reg_n_0_[1] ; + wire \rxeq_lf_reg_n_0_[2] ; + wire \rxeq_lf_reg_n_0_[3] ; + wire \rxeq_lf_reg_n_0_[4] ; + wire \rxeq_lf_reg_n_0_[5] ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]rxeq_lffs_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]rxeq_lffs_reg2; + wire rxeq_new_txcoeff_req; + wire rxeq_new_txcoeff_req_reg_n_0; + wire \rxeq_preset[0]_i_1__2_n_0 ; + wire \rxeq_preset[1]_i_1__2_n_0 ; + wire \rxeq_preset[2]_i_1__2_n_0 ; + wire \rxeq_preset[2]_i_2__2_n_0 ; + wire \rxeq_preset[2]_i_3__2_n_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [2:0]rxeq_preset_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [2:0]rxeq_preset_reg2; + wire \rxeq_preset_reg_n_0_[0] ; + wire \rxeq_preset_reg_n_0_[1] ; + wire \rxeq_preset_reg_n_0_[2] ; + wire rxeq_preset_valid; + wire rxeq_scan_i_n_0; + wire rxeq_scan_i_n_1; + wire rxeq_scan_i_n_2; + wire rxeq_scan_i_n_4; + wire rxeq_scan_i_n_5; + wire [17:0]rxeq_txcoeff; + wire \rxeq_txcoeff_reg_n_0_[0] ; + wire \rxeq_txcoeff_reg_n_0_[10] ; + wire \rxeq_txcoeff_reg_n_0_[11] ; + wire \rxeq_txcoeff_reg_n_0_[12] ; + wire \rxeq_txcoeff_reg_n_0_[13] ; + wire \rxeq_txcoeff_reg_n_0_[14] ; + wire \rxeq_txcoeff_reg_n_0_[15] ; + wire \rxeq_txcoeff_reg_n_0_[16] ; + wire \rxeq_txcoeff_reg_n_0_[17] ; + wire \rxeq_txcoeff_reg_n_0_[1] ; + wire \rxeq_txcoeff_reg_n_0_[2] ; + wire \rxeq_txcoeff_reg_n_0_[3] ; + wire \rxeq_txcoeff_reg_n_0_[4] ; + wire \rxeq_txcoeff_reg_n_0_[5] ; + wire \rxeq_txcoeff_reg_n_0_[6] ; + wire \rxeq_txcoeff_reg_n_0_[7] ; + wire \rxeq_txcoeff_reg_n_0_[8] ; + wire \rxeq_txcoeff_reg_n_0_[9] ; + wire [3:0]rxeq_txpreset; + wire \rxeq_txpreset[3]_i_1__2_n_0 ; + wire \rxeq_txpreset[3]_i_3__2_n_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]rxeq_txpreset_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]rxeq_txpreset_reg2; + wire \rxeq_txpreset_reg_n_0_[0] ; + wire \rxeq_txpreset_reg_n_0_[1] ; + wire \rxeq_txpreset_reg_n_0_[2] ; + wire \rxeq_txpreset_reg_n_0_[3] ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxeq_user_en_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxeq_user_en_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxeq_user_mode_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxeq_user_mode_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [17:0]rxeq_user_txcoeff_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [17:0]rxeq_user_txcoeff_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]txeq_control_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]txeq_control_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]txeq_deemph_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]txeq_deemph_reg2; + wire \txeq_preset[17]_i_1__2_n_0 ; + wire \txeq_preset[3]_i_1__2_n_0 ; + wire \txeq_preset[7]_i_1__2_n_0 ; + wire txeq_preset_done; + wire txeq_preset_done_i_1__2_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]txeq_preset_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]txeq_preset_reg2; + wire \txeq_preset_reg_n_0_[0] ; + wire \txeq_preset_reg_n_0_[10] ; + wire \txeq_preset_reg_n_0_[11] ; + wire \txeq_preset_reg_n_0_[12] ; + wire \txeq_preset_reg_n_0_[13] ; + wire \txeq_preset_reg_n_0_[14] ; + wire \txeq_preset_reg_n_0_[15] ; + wire \txeq_preset_reg_n_0_[16] ; + wire \txeq_preset_reg_n_0_[17] ; + wire \txeq_preset_reg_n_0_[1] ; + wire \txeq_preset_reg_n_0_[2] ; + wire \txeq_preset_reg_n_0_[3] ; + wire \txeq_preset_reg_n_0_[7] ; + wire \txeq_preset_reg_n_0_[8] ; + wire \txeq_preset_reg_n_0_[9] ; + wire txeq_txcoeff; + wire \txeq_txcoeff[0]_i_1__2_n_0 ; + wire \txeq_txcoeff[0]_i_2__2_n_0 ; + wire \txeq_txcoeff[10]_i_1__2_n_0 ; + wire \txeq_txcoeff[10]_i_2__2_n_0 ; + wire \txeq_txcoeff[11]_i_1__2_n_0 ; + wire \txeq_txcoeff[11]_i_2__2_n_0 ; + wire \txeq_txcoeff[12]_i_1__2_n_0 ; + wire \txeq_txcoeff[12]_i_2__2_n_0 ; + wire \txeq_txcoeff[13]_i_1__2_n_0 ; + wire \txeq_txcoeff[13]_i_2__2_n_0 ; + wire \txeq_txcoeff[14]_i_1__2_n_0 ; + wire \txeq_txcoeff[14]_i_2__2_n_0 ; + wire \txeq_txcoeff[15]_i_1__2_n_0 ; + wire \txeq_txcoeff[15]_i_2__2_n_0 ; + wire \txeq_txcoeff[16]_i_1__2_n_0 ; + wire \txeq_txcoeff[16]_i_2__2_n_0 ; + wire \txeq_txcoeff[17]_i_1__2_n_0 ; + wire \txeq_txcoeff[17]_i_2__2_n_0 ; + wire \txeq_txcoeff[18]_i_2__2_n_0 ; + wire \txeq_txcoeff[18]_i_3__2_n_0 ; + wire \txeq_txcoeff[1]_i_1__2_n_0 ; + wire \txeq_txcoeff[1]_i_2__2_n_0 ; + wire \txeq_txcoeff[2]_i_1__2_n_0 ; + wire \txeq_txcoeff[2]_i_2__2_n_0 ; + wire \txeq_txcoeff[3]_i_1__2_n_0 ; + wire \txeq_txcoeff[3]_i_2__2_n_0 ; + wire \txeq_txcoeff[4]_i_1__2_n_0 ; + wire \txeq_txcoeff[4]_i_2__2_n_0 ; + wire \txeq_txcoeff[5]_i_1__2_n_0 ; + wire \txeq_txcoeff[5]_i_2__2_n_0 ; + wire \txeq_txcoeff[6]_i_1__2_n_0 ; + wire \txeq_txcoeff[6]_i_2__2_n_0 ; + wire \txeq_txcoeff[7]_i_1__2_n_0 ; + wire \txeq_txcoeff[7]_i_2__2_n_0 ; + wire \txeq_txcoeff[8]_i_1__2_n_0 ; + wire \txeq_txcoeff[8]_i_2__2_n_0 ; + wire \txeq_txcoeff[9]_i_1__2_n_0 ; + wire \txeq_txcoeff[9]_i_2__2_n_0 ; + wire [1:0]txeq_txcoeff_cnt; + wire \txeq_txcoeff_cnt_reg_n_0_[0] ; + wire \txeq_txcoeff_cnt_reg_n_0_[1] ; + wire \txeq_txcoeff_reg_n_0_[0] ; + wire \txeq_txcoeff_reg_n_0_[10] ; + wire \txeq_txcoeff_reg_n_0_[11] ; + wire \txeq_txcoeff_reg_n_0_[12] ; + wire \txeq_txcoeff_reg_n_0_[13] ; + wire \txeq_txcoeff_reg_n_0_[14] ; + wire \txeq_txcoeff_reg_n_0_[15] ; + wire \txeq_txcoeff_reg_n_0_[16] ; + wire \txeq_txcoeff_reg_n_0_[17] ; + wire \txeq_txcoeff_reg_n_0_[18] ; + wire \txeq_txcoeff_reg_n_0_[1] ; + wire \txeq_txcoeff_reg_n_0_[2] ; + wire \txeq_txcoeff_reg_n_0_[3] ; + wire \txeq_txcoeff_reg_n_0_[4] ; + wire \txeq_txcoeff_reg_n_0_[5] ; + wire \txeq_txcoeff_reg_n_0_[6] ; + wire \txeq_txcoeff_reg_n_0_[7] ; + wire \txeq_txcoeff_reg_n_0_[8] ; + wire \txeq_txcoeff_reg_n_0_[9] ; + + LUT5 #( + .INIT(32'hABABABAA)) + \FSM_onehot_fsm_rx[1]_i_1__2 + (.I0(\FSM_onehot_fsm_rx[1]_i_2__2_n_0 ), + .I1(rxeq_control_reg2[1]), + .I2(rxeq_control_reg2[0]), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[6] ), + .O(\FSM_onehot_fsm_rx[1]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'h0000000000000001)) + \FSM_onehot_fsm_rx[1]_i_2__2 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[6] ), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I5(\FSM_onehot_fsm_rx_reg_n_0_[5] ), + .O(\FSM_onehot_fsm_rx[1]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'hFFFFF8FF88888888)) + \FSM_onehot_fsm_rx[3]_i_1__2 + (.I0(rxeq_control_reg2[1]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I2(\rxeq_cnt_reg_n_0_[2] ), + .I3(\rxeq_cnt_reg_n_0_[1] ), + .I4(\rxeq_cnt_reg_n_0_[0] ), + .I5(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .O(\FSM_onehot_fsm_rx[3]_i_1__2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair185" *) + LUT5 #( + .INIT(32'h2ABA2AAA)) + \FSM_onehot_fsm_rx[4]_i_1__2 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(\rxeq_cnt_reg_n_0_[2] ), + .I2(\rxeq_cnt_reg_n_0_[1] ), + .I3(\rxeq_cnt_reg_n_0_[0] ), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .O(\FSM_onehot_fsm_rx[4]_i_1__2_n_0 )); + (* FSM_ENCODED_STATES = "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001" *) + FDSE #( + .INIT(1'b0)) + \FSM_onehot_fsm_rx_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm_rx[1]_i_1__2_n_0 ), + .Q(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .S(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_rx_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_scan_i_n_2), + .Q(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_rx_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm_rx[3]_i_1__2_n_0 ), + .Q(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_rx_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm_rx[4]_i_1__2_n_0 ), + .Q(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_rx_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_scan_i_n_1), + .Q(\FSM_onehot_fsm_rx_reg_n_0_[5] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_rx_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_scan_i_n_0), + .Q(\FSM_onehot_fsm_rx_reg_n_0_[6] ), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'hC04FC043C04FF04F)) + \FSM_sequential_fsm_tx[0]_i_1__2 + (.I0(\FSM_sequential_fsm_tx[1]_i_2__2_n_0 ), + .I1(fsm_tx[0]), + .I2(fsm_tx[1]), + .I3(fsm_tx[2]), + .I4(txeq_control_reg2[1]), + .I5(txeq_control_reg2[0]), + .O(fsm_tx__0[0])); + LUT6 #( + .INIT(64'h3F703F7C3F7C0F70)) + \FSM_sequential_fsm_tx[1]_i_1__2 + (.I0(\FSM_sequential_fsm_tx[1]_i_2__2_n_0 ), + .I1(fsm_tx[0]), + .I2(fsm_tx[1]), + .I3(fsm_tx[2]), + .I4(txeq_control_reg2[1]), + .I5(txeq_control_reg2[0]), + .O(fsm_tx__0[1])); + (* SOFT_HLUTNM = "soft_lutpair183" *) + LUT2 #( + .INIT(4'h2)) + \FSM_sequential_fsm_tx[1]_i_2__2 + (.I0(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .O(\FSM_sequential_fsm_tx[1]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'h3A2A2A227F7F7F77)) + \FSM_sequential_fsm_tx[2]_i_1__2 + (.I0(fsm_tx[2]), + .I1(fsm_tx[1]), + .I2(fsm_tx[0]), + .I3(txeq_control_reg2[1]), + .I4(txeq_control_reg2[0]), + .I5(\FSM_sequential_fsm_tx[2]_i_2__2_n_0 ), + .O(fsm_tx__0[2])); + (* SOFT_HLUTNM = "soft_lutpair183" *) + LUT5 #( + .INIT(32'hD0FFDFFF)) + \FSM_sequential_fsm_tx[2]_i_2__2 + (.I0(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I2(fsm_tx[0]), + .I3(fsm_tx[1]), + .I4(txeq_preset_done), + .O(\FSM_sequential_fsm_tx[2]_i_2__2_n_0 )); + (* FSM_ENCODED_STATES = "FSM_TXEQ_QUERY:101,FSM_TXEQ_PRESET:010,FSM_TXEQ_TXCOEFF:011,FSM_TXEQ_REMAP:100,FSM_TXEQ_DONE:110,FSM_TXEQ_IDLE:001,iSTATE:000" *) + FDSE #( + .INIT(1'b0)) + \FSM_sequential_fsm_tx_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm_tx__0[0]), + .Q(fsm_tx[0]), + .S(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_TXEQ_QUERY:101,FSM_TXEQ_PRESET:010,FSM_TXEQ_TXCOEFF:011,FSM_TXEQ_REMAP:100,FSM_TXEQ_DONE:110,FSM_TXEQ_IDLE:001,iSTATE:000" *) + FDRE #( + .INIT(1'b0)) + \FSM_sequential_fsm_tx_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm_tx__0[1]), + .Q(fsm_tx[1]), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_TXEQ_QUERY:101,FSM_TXEQ_PRESET:010,FSM_TXEQ_TXCOEFF:011,FSM_TXEQ_REMAP:100,FSM_TXEQ_DONE:110,FSM_TXEQ_IDLE:001,iSTATE:000" *) + FDRE #( + .INIT(1'b0)) + \FSM_sequential_fsm_tx_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm_tx__0[2]), + .Q(fsm_tx[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gen3_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rate_gen3_3), + .Q(gen3_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gen3_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gen3_reg1), + .Q(gen3_reg2), + .R(RST_CPLLRESET)); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_23__2 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[17] ), + .O(TXPOSTCURSOR[4])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_24__2 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[16] ), + .O(TXPOSTCURSOR[3])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_25__2 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[15] ), + .O(TXPOSTCURSOR[2])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_26__2 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[14] ), + .O(TXPOSTCURSOR[1])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_27__2 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[13] ), + .O(TXPOSTCURSOR[0])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_28__2 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[4] ), + .O(TXPRECURSOR[4])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_29__2 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[3] ), + .O(TXPRECURSOR[3])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_30__2 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[2] ), + .O(TXPRECURSOR[2])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_31__2 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[1] ), + .O(TXPRECURSOR[1])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_32__2 + (.I0(\txeq_txcoeff_reg_n_0_[0] ), + .I1(gen3_reg2), + .O(TXPRECURSOR[0])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_33__2 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[12] ), + .O(TXMAINCURSOR[6])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_34__2 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[11] ), + .O(TXMAINCURSOR[5])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_35__2 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[10] ), + .O(TXMAINCURSOR[4])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_36__2 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[9] ), + .O(TXMAINCURSOR[3])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_37__2 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[8] ), + .O(TXMAINCURSOR[2])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_38__2 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[7] ), + .O(TXMAINCURSOR[1])); + LUT2 #( + .INIT(4'h8)) + \gtx_channel.gtxe2_channel_i_i_39 + (.I0(gen3_reg2), + .I1(\txeq_txcoeff_reg_n_0_[6] ), + .O(TXMAINCURSOR[0])); + LUT6 #( + .INIT(64'hFFFFFFFEFFFFFFFF)) + rxeq_adapt_done_i_2__2 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[5] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I5(\FSM_onehot_fsm_rx_reg_n_0_[6] ), + .O(rxeq_adapt_done_i_2__2_n_0)); + FDRE #( + .INIT(1'b0)) + rxeq_adapt_done_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_scan_i_n_5), + .Q(USER_RXEQ_ADAPT_DONE), + .R(RST_CPLLRESET)); + LUT3 #( + .INIT(8'h08)) + rxeq_adapt_done_reg_i_2__2 + (.I0(rxeq_control_reg2[0]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I2(rxeq_control_reg2[1]), + .O(rxeq_adapt_done_reg_i_2__2_n_0)); + FDRE #( + .INIT(1'b0)) + rxeq_adapt_done_reg_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_scan_i_n_4), + .Q(rxeq_adapt_done_reg_reg_n_0), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h8888FFF8)) + \rxeq_cnt[0]_i_1__2 + (.I0(rxeq_control_reg2[1]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I4(\rxeq_cnt_reg_n_0_[0] ), + .O(rxeq_cnt[0])); + (* SOFT_HLUTNM = "soft_lutpair186" *) + LUT4 #( + .INIT(16'h6660)) + \rxeq_cnt[1]_i_1__2 + (.I0(\rxeq_cnt_reg_n_0_[0] ), + .I1(\rxeq_cnt_reg_n_0_[1] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .O(rxeq_cnt[1])); + (* SOFT_HLUTNM = "soft_lutpair185" *) + LUT5 #( + .INIT(32'h78787800)) + \rxeq_cnt[2]_i_1__2 + (.I0(\rxeq_cnt_reg_n_0_[1] ), + .I1(\rxeq_cnt_reg_n_0_[0] ), + .I2(\rxeq_cnt_reg_n_0_[2] ), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .O(rxeq_cnt[2])); + FDRE #( + .INIT(1'b0)) + \rxeq_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_cnt[0]), + .Q(\rxeq_cnt_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_cnt[1]), + .Q(\rxeq_cnt_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_cnt_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_cnt[2]), + .Q(\rxeq_cnt_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_control_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_control_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_control_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_control_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_control_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_control_reg1[0]), + .Q(rxeq_control_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_control_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_control_reg1[1]), + .Q(rxeq_control_reg2[1]), + .R(RST_CPLLRESET)); + LUT2 #( + .INIT(4'h8)) + \rxeq_fs[0]_i_1__2 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(rxeq_lffs_reg2[0]), + .O(rxeq_fs[0])); + LUT2 #( + .INIT(4'h8)) + \rxeq_fs[1]_i_1__2 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(rxeq_lffs_reg2[1]), + .O(rxeq_fs[1])); + LUT2 #( + .INIT(4'h8)) + \rxeq_fs[2]_i_1__2 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(rxeq_lffs_reg2[2]), + .O(rxeq_fs[2])); + LUT2 #( + .INIT(4'h8)) + \rxeq_fs[3]_i_1__2 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(rxeq_lffs_reg2[3]), + .O(rxeq_fs[3])); + LUT2 #( + .INIT(4'h8)) + \rxeq_fs[4]_i_1__2 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(rxeq_lffs_reg2[4]), + .O(rxeq_fs[4])); + LUT3 #( + .INIT(8'hF8)) + \rxeq_fs[5]_i_1__2 + (.I0(rxeq_control_reg2[1]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I2(\FSM_onehot_fsm_rx[1]_i_2__2_n_0 ), + .O(\rxeq_fs[5]_i_1__2_n_0 )); + LUT2 #( + .INIT(4'h8)) + \rxeq_fs[5]_i_2__2 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(rxeq_lffs_reg2[5]), + .O(rxeq_fs[5])); + FDRE #( + .INIT(1'b0)) + \rxeq_fs_reg[0] + (.C(pipe_pclk_in), + .CE(\rxeq_fs[5]_i_1__2_n_0 ), + .D(rxeq_fs[0]), + .Q(\rxeq_fs_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_fs_reg[1] + (.C(pipe_pclk_in), + .CE(\rxeq_fs[5]_i_1__2_n_0 ), + .D(rxeq_fs[1]), + .Q(\rxeq_fs_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_fs_reg[2] + (.C(pipe_pclk_in), + .CE(\rxeq_fs[5]_i_1__2_n_0 ), + .D(rxeq_fs[2]), + .Q(\rxeq_fs_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_fs_reg[3] + (.C(pipe_pclk_in), + .CE(\rxeq_fs[5]_i_1__2_n_0 ), + .D(rxeq_fs[3]), + .Q(\rxeq_fs_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_fs_reg[4] + (.C(pipe_pclk_in), + .CE(\rxeq_fs[5]_i_1__2_n_0 ), + .D(rxeq_fs[4]), + .Q(\rxeq_fs_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_fs_reg[5] + (.C(pipe_pclk_in), + .CE(\rxeq_fs[5]_i_1__2_n_0 ), + .D(rxeq_fs[5]), + .Q(\rxeq_fs_reg_n_0_[5] ), + .R(RST_CPLLRESET)); + LUT2 #( + .INIT(4'h8)) + \rxeq_lf[0]_i_1__2 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(rxeq_lffs_reg2[0]), + .O(rxeq_lf[0])); + LUT2 #( + .INIT(4'h8)) + \rxeq_lf[1]_i_1__2 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(rxeq_lffs_reg2[1]), + .O(rxeq_lf[1])); + LUT2 #( + .INIT(4'h8)) + \rxeq_lf[2]_i_1__2 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(rxeq_lffs_reg2[2]), + .O(rxeq_lf[2])); + LUT2 #( + .INIT(4'h8)) + \rxeq_lf[3]_i_1__2 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(rxeq_lffs_reg2[3]), + .O(rxeq_lf[3])); + LUT2 #( + .INIT(4'h8)) + \rxeq_lf[4]_i_1__2 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(rxeq_lffs_reg2[4]), + .O(rxeq_lf[4])); + LUT5 #( + .INIT(32'hEAAAAAAA)) + \rxeq_lf[5]_i_1__2 + (.I0(\FSM_onehot_fsm_rx[1]_i_2__2_n_0 ), + .I1(\rxeq_cnt_reg_n_0_[2] ), + .I2(\rxeq_cnt_reg_n_0_[0] ), + .I3(\rxeq_cnt_reg_n_0_[1] ), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .O(\rxeq_lf[5]_i_1__2_n_0 )); + LUT2 #( + .INIT(4'h8)) + \rxeq_lf[5]_i_2__2 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I1(rxeq_lffs_reg2[5]), + .O(rxeq_lf[5])); + FDRE #( + .INIT(1'b0)) + \rxeq_lf_reg[0] + (.C(pipe_pclk_in), + .CE(\rxeq_lf[5]_i_1__2_n_0 ), + .D(rxeq_lf[0]), + .Q(\rxeq_lf_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_lf_reg[1] + (.C(pipe_pclk_in), + .CE(\rxeq_lf[5]_i_1__2_n_0 ), + .D(rxeq_lf[1]), + .Q(\rxeq_lf_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_lf_reg[2] + (.C(pipe_pclk_in), + .CE(\rxeq_lf[5]_i_1__2_n_0 ), + .D(rxeq_lf[2]), + .Q(\rxeq_lf_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_lf_reg[3] + (.C(pipe_pclk_in), + .CE(\rxeq_lf[5]_i_1__2_n_0 ), + .D(rxeq_lf[3]), + .Q(\rxeq_lf_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_lf_reg[4] + (.C(pipe_pclk_in), + .CE(\rxeq_lf[5]_i_1__2_n_0 ), + .D(rxeq_lf[4]), + .Q(\rxeq_lf_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_lf_reg[5] + (.C(pipe_pclk_in), + .CE(\rxeq_lf[5]_i_1__2_n_0 ), + .D(rxeq_lf[5]), + .Q(\rxeq_lf_reg_n_0_[5] ), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_lffs_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_lffs_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_lffs_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_lffs_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg1_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_lffs_reg1[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg1_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_lffs_reg1[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_lffs_reg1[0]), + .Q(rxeq_lffs_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_lffs_reg1[1]), + .Q(rxeq_lffs_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_lffs_reg1[2]), + .Q(rxeq_lffs_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_lffs_reg1[3]), + .Q(rxeq_lffs_reg2[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_lffs_reg1[4]), + .Q(rxeq_lffs_reg2[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_lffs_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_lffs_reg1[5]), + .Q(rxeq_lffs_reg2[5]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + rxeq_new_txcoeff_req_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_new_txcoeff_req), + .Q(rxeq_new_txcoeff_req_reg_n_0), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'hA8FFA800)) + \rxeq_preset[0]_i_1__2 + (.I0(rxeq_preset_reg2[0]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I3(\rxeq_preset[2]_i_2__2_n_0 ), + .I4(\rxeq_preset_reg_n_0_[0] ), + .O(\rxeq_preset[0]_i_1__2_n_0 )); + LUT5 #( + .INIT(32'hA8FFA800)) + \rxeq_preset[1]_i_1__2 + (.I0(rxeq_preset_reg2[1]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I3(\rxeq_preset[2]_i_2__2_n_0 ), + .I4(\rxeq_preset_reg_n_0_[1] ), + .O(\rxeq_preset[1]_i_1__2_n_0 )); + LUT5 #( + .INIT(32'hA8FFA800)) + \rxeq_preset[2]_i_1__2 + (.I0(rxeq_preset_reg2[2]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I3(\rxeq_preset[2]_i_2__2_n_0 ), + .I4(\rxeq_preset_reg_n_0_[2] ), + .O(\rxeq_preset[2]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFFFFF0002)) + \rxeq_preset[2]_i_2__2 + (.I0(\rxeq_preset[2]_i_3__2_n_0 ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[6] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I3(\FSM_onehot_fsm_rx_reg_n_0_[5] ), + .I4(rxeq_adapt_done_reg_i_2__2_n_0), + .I5(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .O(\rxeq_preset[2]_i_2__2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair186" *) + LUT2 #( + .INIT(4'h1)) + \rxeq_preset[2]_i_3__2 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .O(\rxeq_preset[2]_i_3__2_n_0 )); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_preset_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_preset_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_preset_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_preset_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_preset_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_preset_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_preset_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_preset_reg1[0]), + .Q(rxeq_preset_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_preset_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_preset_reg1[1]), + .Q(rxeq_preset_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_preset_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_preset_reg1[2]), + .Q(rxeq_preset_reg2[2]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_preset_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rxeq_preset[0]_i_1__2_n_0 ), + .Q(\rxeq_preset_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_preset_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rxeq_preset[1]_i_1__2_n_0 ), + .Q(\rxeq_preset_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_preset_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rxeq_preset[2]_i_1__2_n_0 ), + .Q(\rxeq_preset_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + rxeq_preset_valid_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .Q(rxeq_preset_valid), + .R(RST_CPLLRESET)); + pcie_7x_0_pcie_7x_0_rxeq_scan rxeq_scan_i + (.D({rxeq_scan_i_n_0,rxeq_scan_i_n_1,rxeq_scan_i_n_2}), + .\FSM_onehot_fsm_rx_reg[5] ({\rxeq_cnt_reg_n_0_[2] ,\rxeq_cnt_reg_n_0_[1] ,\rxeq_cnt_reg_n_0_[0] }), + .Q({\FSM_onehot_fsm_rx_reg_n_0_[6] ,\FSM_onehot_fsm_rx_reg_n_0_[5] ,\FSM_onehot_fsm_rx_reg_n_0_[4] ,\FSM_onehot_fsm_rx_reg_n_0_[2] ,\FSM_onehot_fsm_rx_reg_n_0_[1] }), + .RST_CPLLRESET(RST_CPLLRESET), + .USER_RXEQ_ADAPT_DONE(USER_RXEQ_ADAPT_DONE), + .adapt_done_reg_0(rxeq_scan_i_n_4), + .\fs_reg1_reg[5]_0 ({\rxeq_fs_reg_n_0_[5] ,\rxeq_fs_reg_n_0_[4] ,\rxeq_fs_reg_n_0_[3] ,\rxeq_fs_reg_n_0_[2] ,\rxeq_fs_reg_n_0_[1] ,\rxeq_fs_reg_n_0_[0] }), + .\lf_reg1_reg[5]_0 ({\rxeq_lf_reg_n_0_[5] ,\rxeq_lf_reg_n_0_[4] ,\rxeq_lf_reg_n_0_[3] ,\rxeq_lf_reg_n_0_[2] ,\rxeq_lf_reg_n_0_[1] ,\rxeq_lf_reg_n_0_[0] }), + .new_txcoeff_done_reg_0(rxeq_scan_i_n_5), + .new_txcoeff_req_reg1_reg_0(rxeq_new_txcoeff_req_reg_n_0), + .out(rxeq_control_reg2), + .pipe_pclk_in(pipe_pclk_in), + .\preset_reg1_reg[2]_0 ({\rxeq_preset_reg_n_0_[2] ,\rxeq_preset_reg_n_0_[1] ,\rxeq_preset_reg_n_0_[0] }), + .rxeq_adapt_done_reg(rxeq_adapt_done_i_2__2_n_0), + .rxeq_adapt_done_reg_reg(\FSM_onehot_fsm_rx[1]_i_2__2_n_0 ), + .rxeq_adapt_done_reg_reg_0(rxeq_adapt_done_reg_i_2__2_n_0), + .rxeq_adapt_done_reg_reg_1(rxeq_adapt_done_reg_reg_n_0), + .rxeq_new_txcoeff_req(rxeq_new_txcoeff_req), + .rxeq_preset_valid(rxeq_preset_valid), + .\txcoeff_reg1_reg[17]_0 ({\rxeq_txcoeff_reg_n_0_[17] ,\rxeq_txcoeff_reg_n_0_[16] ,\rxeq_txcoeff_reg_n_0_[15] ,\rxeq_txcoeff_reg_n_0_[14] ,\rxeq_txcoeff_reg_n_0_[13] ,\rxeq_txcoeff_reg_n_0_[12] ,\rxeq_txcoeff_reg_n_0_[11] ,\rxeq_txcoeff_reg_n_0_[10] ,\rxeq_txcoeff_reg_n_0_[9] ,\rxeq_txcoeff_reg_n_0_[8] ,\rxeq_txcoeff_reg_n_0_[7] ,\rxeq_txcoeff_reg_n_0_[6] ,\rxeq_txcoeff_reg_n_0_[5] ,\rxeq_txcoeff_reg_n_0_[4] ,\rxeq_txcoeff_reg_n_0_[3] ,\rxeq_txcoeff_reg_n_0_[2] ,\rxeq_txcoeff_reg_n_0_[1] ,\rxeq_txcoeff_reg_n_0_[0] }), + .\txpreset_reg1_reg[3]_0 ({\rxeq_txpreset_reg_n_0_[3] ,\rxeq_txpreset_reg_n_0_[2] ,\rxeq_txpreset_reg_n_0_[1] ,\rxeq_txpreset_reg_n_0_[0] })); + (* SOFT_HLUTNM = "soft_lutpair187" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[0]_i_1__2 + (.I0(\rxeq_txcoeff_reg_n_0_[6] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[0])); + (* SOFT_HLUTNM = "soft_lutpair192" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[10]_i_1__2 + (.I0(\rxeq_txcoeff_reg_n_0_[16] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[10])); + (* SOFT_HLUTNM = "soft_lutpair192" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[11]_i_1__2 + (.I0(\rxeq_txcoeff_reg_n_0_[17] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[11])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[12]_i_1__2 + (.I0(txeq_deemph_reg2[0]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[12])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[13]_i_1__2 + (.I0(txeq_deemph_reg2[1]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[13])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[14]_i_1__2 + (.I0(txeq_deemph_reg2[2]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[14])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[15]_i_1__2 + (.I0(txeq_deemph_reg2[3]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[15])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[16]_i_1__2 + (.I0(txeq_deemph_reg2[4]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[16])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[17]_i_1__2 + (.I0(txeq_deemph_reg2[5]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[17])); + (* SOFT_HLUTNM = "soft_lutpair187" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[1]_i_1__2 + (.I0(\rxeq_txcoeff_reg_n_0_[7] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[1])); + (* SOFT_HLUTNM = "soft_lutpair188" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[2]_i_1__2 + (.I0(\rxeq_txcoeff_reg_n_0_[8] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[2])); + (* SOFT_HLUTNM = "soft_lutpair188" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[3]_i_1__2 + (.I0(\rxeq_txcoeff_reg_n_0_[9] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[3])); + (* SOFT_HLUTNM = "soft_lutpair189" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[4]_i_1__2 + (.I0(\rxeq_txcoeff_reg_n_0_[10] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[4])); + (* SOFT_HLUTNM = "soft_lutpair189" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[5]_i_1__2 + (.I0(\rxeq_txcoeff_reg_n_0_[11] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[5])); + (* SOFT_HLUTNM = "soft_lutpair190" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[6]_i_1__2 + (.I0(\rxeq_txcoeff_reg_n_0_[12] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[6])); + (* SOFT_HLUTNM = "soft_lutpair190" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[7]_i_1__2 + (.I0(\rxeq_txcoeff_reg_n_0_[13] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[7])); + (* SOFT_HLUTNM = "soft_lutpair191" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[8]_i_1__2 + (.I0(\rxeq_txcoeff_reg_n_0_[14] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[8])); + (* SOFT_HLUTNM = "soft_lutpair191" *) + LUT3 #( + .INIT(8'hA8)) + \rxeq_txcoeff[9]_i_1__2 + (.I0(\rxeq_txcoeff_reg_n_0_[15] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txcoeff[9])); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[0] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__2_n_0 ), + .D(rxeq_txcoeff[0]), + .Q(\rxeq_txcoeff_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[10] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__2_n_0 ), + .D(rxeq_txcoeff[10]), + .Q(\rxeq_txcoeff_reg_n_0_[10] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[11] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__2_n_0 ), + .D(rxeq_txcoeff[11]), + .Q(\rxeq_txcoeff_reg_n_0_[11] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[12] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__2_n_0 ), + .D(rxeq_txcoeff[12]), + .Q(\rxeq_txcoeff_reg_n_0_[12] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[13] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__2_n_0 ), + .D(rxeq_txcoeff[13]), + .Q(\rxeq_txcoeff_reg_n_0_[13] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[14] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__2_n_0 ), + .D(rxeq_txcoeff[14]), + .Q(\rxeq_txcoeff_reg_n_0_[14] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[15] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__2_n_0 ), + .D(rxeq_txcoeff[15]), + .Q(\rxeq_txcoeff_reg_n_0_[15] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[16] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__2_n_0 ), + .D(rxeq_txcoeff[16]), + .Q(\rxeq_txcoeff_reg_n_0_[16] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[17] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__2_n_0 ), + .D(rxeq_txcoeff[17]), + .Q(\rxeq_txcoeff_reg_n_0_[17] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[1] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__2_n_0 ), + .D(rxeq_txcoeff[1]), + .Q(\rxeq_txcoeff_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[2] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__2_n_0 ), + .D(rxeq_txcoeff[2]), + .Q(\rxeq_txcoeff_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[3] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__2_n_0 ), + .D(rxeq_txcoeff[3]), + .Q(\rxeq_txcoeff_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[4] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__2_n_0 ), + .D(rxeq_txcoeff[4]), + .Q(\rxeq_txcoeff_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[5] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__2_n_0 ), + .D(rxeq_txcoeff[5]), + .Q(\rxeq_txcoeff_reg_n_0_[5] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[6] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__2_n_0 ), + .D(rxeq_txcoeff[6]), + .Q(\rxeq_txcoeff_reg_n_0_[6] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[7] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__2_n_0 ), + .D(rxeq_txcoeff[7]), + .Q(\rxeq_txcoeff_reg_n_0_[7] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[8] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__2_n_0 ), + .D(rxeq_txcoeff[8]), + .Q(\rxeq_txcoeff_reg_n_0_[8] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txcoeff_reg[9] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__2_n_0 ), + .D(rxeq_txcoeff[9]), + .Q(\rxeq_txcoeff_reg_n_0_[9] ), + .R(RST_CPLLRESET)); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txpreset[0]_i_1__2 + (.I0(rxeq_txpreset_reg2[0]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txpreset[0])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txpreset[1]_i_1__2 + (.I0(rxeq_txpreset_reg2[1]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txpreset[1])); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txpreset[2]_i_1__2 + (.I0(rxeq_txpreset_reg2[2]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txpreset[2])); + LUT5 #( + .INIT(32'hFFFFF404)) + \rxeq_txpreset[3]_i_1__2 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[6] ), + .I1(\rxeq_txpreset[3]_i_3__2_n_0 ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .I3(rxeq_control_reg2[1]), + .I4(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .O(\rxeq_txpreset[3]_i_1__2_n_0 )); + LUT3 #( + .INIT(8'hA8)) + \rxeq_txpreset[3]_i_2__2 + (.I0(rxeq_txpreset_reg2[3]), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[3] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[1] ), + .O(rxeq_txpreset[3])); + LUT3 #( + .INIT(8'h01)) + \rxeq_txpreset[3]_i_3__2 + (.I0(\FSM_onehot_fsm_rx_reg_n_0_[2] ), + .I1(\FSM_onehot_fsm_rx_reg_n_0_[4] ), + .I2(\FSM_onehot_fsm_rx_reg_n_0_[5] ), + .O(\rxeq_txpreset[3]_i_3__2_n_0 )); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_txpreset_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_txpreset_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_txpreset_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_txpreset_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_txpreset_reg1[0]), + .Q(rxeq_txpreset_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_txpreset_reg1[1]), + .Q(rxeq_txpreset_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_txpreset_reg1[2]), + .Q(rxeq_txpreset_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_txpreset_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_txpreset_reg1[3]), + .Q(rxeq_txpreset_reg2[3]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txpreset_reg[0] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__2_n_0 ), + .D(rxeq_txpreset[0]), + .Q(\rxeq_txpreset_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txpreset_reg[1] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__2_n_0 ), + .D(rxeq_txpreset[1]), + .Q(\rxeq_txpreset_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txpreset_reg[2] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__2_n_0 ), + .D(rxeq_txpreset[2]), + .Q(\rxeq_txpreset_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxeq_txpreset_reg[3] + (.C(pipe_pclk_in), + .CE(\rxeq_txpreset[3]_i_1__2_n_0 ), + .D(rxeq_txpreset[3]), + .Q(\rxeq_txpreset_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxeq_user_en_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_en_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxeq_user_en_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_en_reg1), + .Q(rxeq_user_en_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxeq_user_mode_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_mode_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxeq_user_mode_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_mode_reg1), + .Q(rxeq_user_mode_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[10]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[11]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[12]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[13]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[14]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[15]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[16] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[16]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[17] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[17]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[6]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[7]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[8]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg1_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxeq_user_txcoeff_reg1[9]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[0]), + .Q(rxeq_user_txcoeff_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[10]), + .Q(rxeq_user_txcoeff_reg2[10]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[11]), + .Q(rxeq_user_txcoeff_reg2[11]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[12]), + .Q(rxeq_user_txcoeff_reg2[12]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[13]), + .Q(rxeq_user_txcoeff_reg2[13]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[14]), + .Q(rxeq_user_txcoeff_reg2[14]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[15]), + .Q(rxeq_user_txcoeff_reg2[15]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[16] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[16]), + .Q(rxeq_user_txcoeff_reg2[16]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[17] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[17]), + .Q(rxeq_user_txcoeff_reg2[17]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[1]), + .Q(rxeq_user_txcoeff_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[2]), + .Q(rxeq_user_txcoeff_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[3]), + .Q(rxeq_user_txcoeff_reg2[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[4]), + .Q(rxeq_user_txcoeff_reg2[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[5]), + .Q(rxeq_user_txcoeff_reg2[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[6]), + .Q(rxeq_user_txcoeff_reg2[6]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[7]), + .Q(rxeq_user_txcoeff_reg2[7]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[8]), + .Q(rxeq_user_txcoeff_reg2[8]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxeq_user_txcoeff_reg2_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_user_txcoeff_reg1[9]), + .Q(rxeq_user_txcoeff_reg2[9]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_control_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_control_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_control_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_control_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_control_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_control_reg1[0]), + .Q(txeq_control_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_control_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_control_reg1[1]), + .Q(txeq_control_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDSE \txeq_deemph_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_deemph_reg1[0]), + .S(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_deemph_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_deemph_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_deemph_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg1_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_deemph_reg1[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg1_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_deemph_reg1[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDSE \txeq_deemph_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_deemph_reg1[0]), + .Q(txeq_deemph_reg2[0]), + .S(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_deemph_reg1[1]), + .Q(txeq_deemph_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_deemph_reg1[2]), + .Q(txeq_deemph_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_deemph_reg1[3]), + .Q(txeq_deemph_reg2[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_deemph_reg1[4]), + .Q(txeq_deemph_reg2[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_deemph_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_deemph_reg1[5]), + .Q(txeq_deemph_reg2[5]), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h00001000)) + \txeq_preset[0]_i_1__2 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[2]), + .I2(txeq_preset_reg2[0]), + .I3(txeq_preset_reg2[3]), + .I4(txeq_preset_reg2[1]), + .O(p_0_out[0])); + LUT5 #( + .INIT(32'hABEAABAF)) + \txeq_preset[10]_i_1__2 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[2]), + .I2(txeq_preset_reg2[0]), + .I3(txeq_preset_reg2[3]), + .I4(txeq_preset_reg2[1]), + .O(p_0_out[10])); + LUT5 #( + .INIT(32'hFFFF200D)) + \txeq_preset[11]_i_1__2 + (.I0(txeq_preset_reg2[1]), + .I1(txeq_preset_reg2[3]), + .I2(txeq_preset_reg2[2]), + .I3(txeq_preset_reg2[0]), + .I4(RST_CPLLRESET), + .O(p_0_out[11])); + LUT5 #( + .INIT(32'h01151110)) + \txeq_preset[12]_i_1__2 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[3]), + .I2(txeq_preset_reg2[1]), + .I3(txeq_preset_reg2[2]), + .I4(txeq_preset_reg2[0]), + .O(p_0_out[12])); + LUT5 #( + .INIT(32'h01000010)) + \txeq_preset[13]_i_1__2 + (.I0(txeq_preset_reg2[2]), + .I1(RST_CPLLRESET), + .I2(txeq_preset_reg2[0]), + .I3(txeq_preset_reg2[3]), + .I4(txeq_preset_reg2[1]), + .O(p_0_out[13])); + LUT5 #( + .INIT(32'h01000010)) + \txeq_preset[14]_i_1__2 + (.I0(txeq_preset_reg2[2]), + .I1(RST_CPLLRESET), + .I2(txeq_preset_reg2[3]), + .I3(txeq_preset_reg2[1]), + .I4(txeq_preset_reg2[0]), + .O(p_0_out[14])); + LUT4 #( + .INIT(16'hF0F1)) + \txeq_preset[15]_i_1__2 + (.I0(txeq_preset_reg2[2]), + .I1(txeq_preset_reg2[1]), + .I2(RST_CPLLRESET), + .I3(txeq_preset_reg2[3]), + .O(p_0_out[15])); + LUT4 #( + .INIT(16'h0006)) + \txeq_preset[16]_i_1__2 + (.I0(txeq_preset_reg2[3]), + .I1(txeq_preset_reg2[0]), + .I2(txeq_preset_reg2[2]), + .I3(RST_CPLLRESET), + .O(p_0_out[16])); + LUT4 #( + .INIT(16'hAABA)) + \txeq_preset[17]_i_1__2 + (.I0(RST_CPLLRESET), + .I1(fsm_tx[0]), + .I2(fsm_tx[1]), + .I3(fsm_tx[2]), + .O(\txeq_preset[17]_i_1__2_n_0 )); + LUT5 #( + .INIT(32'hFFFF400D)) + \txeq_preset[17]_i_2__2 + (.I0(txeq_preset_reg2[3]), + .I1(txeq_preset_reg2[1]), + .I2(txeq_preset_reg2[2]), + .I3(txeq_preset_reg2[0]), + .I4(RST_CPLLRESET), + .O(p_0_out[17])); + LUT5 #( + .INIT(32'h00001004)) + \txeq_preset[1]_i_1__2 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[3]), + .I2(txeq_preset_reg2[1]), + .I3(txeq_preset_reg2[2]), + .I4(txeq_preset_reg2[0]), + .O(p_0_out[1])); + LUT4 #( + .INIT(16'h0E00)) + \txeq_preset[2]_i_1__2 + (.I0(txeq_preset_reg2[2]), + .I1(txeq_preset_reg2[0]), + .I2(RST_CPLLRESET), + .I3(txeq_preset_reg2[3]), + .O(p_0_out[2])); + LUT5 #( + .INIT(32'h01440140)) + \txeq_preset[3]_i_1__2 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[2]), + .I2(txeq_preset_reg2[1]), + .I3(txeq_preset_reg2[3]), + .I4(txeq_preset_reg2[0]), + .O(\txeq_preset[3]_i_1__2_n_0 )); + LUT5 #( + .INIT(32'h00001400)) + \txeq_preset[7]_i_1__2 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[0]), + .I2(txeq_preset_reg2[2]), + .I3(txeq_preset_reg2[1]), + .I4(txeq_preset_reg2[3]), + .O(\txeq_preset[7]_i_1__2_n_0 )); + LUT5 #( + .INIT(32'hAAAFBEAF)) + \txeq_preset[8]_i_1__2 + (.I0(RST_CPLLRESET), + .I1(txeq_preset_reg2[0]), + .I2(txeq_preset_reg2[2]), + .I3(txeq_preset_reg2[1]), + .I4(txeq_preset_reg2[3]), + .O(p_0_out[8])); + LUT5 #( + .INIT(32'hCCFCCFCD)) + \txeq_preset[9]_i_1__2 + (.I0(txeq_preset_reg2[1]), + .I1(RST_CPLLRESET), + .I2(txeq_preset_reg2[2]), + .I3(txeq_preset_reg2[3]), + .I4(txeq_preset_reg2[0]), + .O(p_0_out[9])); + (* SOFT_HLUTNM = "soft_lutpair184" *) + LUT3 #( + .INIT(8'h04)) + txeq_preset_done_i_1__2 + (.I0(fsm_tx[2]), + .I1(fsm_tx[1]), + .I2(fsm_tx[0]), + .O(txeq_preset_done_i_1__2_n_0)); + FDRE #( + .INIT(1'b0)) + txeq_preset_done_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_preset_done_i_1__2_n_0), + .Q(txeq_preset_done), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_preset_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_preset_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_preset_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txeq_preset_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_preset_reg1[0]), + .Q(txeq_preset_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_preset_reg1[1]), + .Q(txeq_preset_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_preset_reg1[2]), + .Q(txeq_preset_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txeq_preset_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_preset_reg1[3]), + .Q(txeq_preset_reg2[3]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[0] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__2_n_0 ), + .D(p_0_out[0]), + .Q(\txeq_preset_reg_n_0_[0] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[10] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__2_n_0 ), + .D(p_0_out[10]), + .Q(\txeq_preset_reg_n_0_[10] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[11] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__2_n_0 ), + .D(p_0_out[11]), + .Q(\txeq_preset_reg_n_0_[11] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[12] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__2_n_0 ), + .D(p_0_out[12]), + .Q(\txeq_preset_reg_n_0_[12] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[13] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__2_n_0 ), + .D(p_0_out[13]), + .Q(\txeq_preset_reg_n_0_[13] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[14] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__2_n_0 ), + .D(p_0_out[14]), + .Q(\txeq_preset_reg_n_0_[14] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[15] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__2_n_0 ), + .D(p_0_out[15]), + .Q(\txeq_preset_reg_n_0_[15] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[16] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__2_n_0 ), + .D(p_0_out[16]), + .Q(\txeq_preset_reg_n_0_[16] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[17] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__2_n_0 ), + .D(p_0_out[17]), + .Q(\txeq_preset_reg_n_0_[17] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[1] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__2_n_0 ), + .D(p_0_out[1]), + .Q(\txeq_preset_reg_n_0_[1] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[2] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__2_n_0 ), + .D(p_0_out[2]), + .Q(\txeq_preset_reg_n_0_[2] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[3] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__2_n_0 ), + .D(\txeq_preset[3]_i_1__2_n_0 ), + .Q(\txeq_preset_reg_n_0_[3] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[7] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__2_n_0 ), + .D(\txeq_preset[7]_i_1__2_n_0 ), + .Q(\txeq_preset_reg_n_0_[7] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[8] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__2_n_0 ), + .D(p_0_out[8]), + .Q(\txeq_preset_reg_n_0_[8] ), + .R(1'b0)); + FDRE #( + .INIT(1'b0)) + \txeq_preset_reg[9] + (.C(pipe_pclk_in), + .CE(\txeq_preset[17]_i_1__2_n_0 ), + .D(p_0_out[9]), + .Q(\txeq_preset_reg_n_0_[9] ), + .R(1'b0)); + LUT5 #( + .INIT(32'h45404040)) + \txeq_txcoeff[0]_i_1__2 + (.I0(fsm_tx[2]), + .I1(\txeq_txcoeff[0]_i_2__2_n_0 ), + .I2(fsm_tx[1]), + .I3(fsm_tx[0]), + .I4(\txeq_txcoeff_reg_n_0_[6] ), + .O(\txeq_txcoeff[0]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[0]_i_2__2 + (.I0(\txeq_txcoeff_reg_n_0_[6] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[7] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[0] ), + .O(\txeq_txcoeff[0]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[10]_i_1__2 + (.I0(\txeq_txcoeff_reg_n_0_[9] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[10]_i_2__2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[16] ), + .O(\txeq_txcoeff[10]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[10]_i_2__2 + (.I0(\txeq_txcoeff_reg_n_0_[16] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[17] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[10] ), + .O(\txeq_txcoeff[10]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[11]_i_1__2 + (.I0(\txeq_txcoeff_reg_n_0_[10] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[11]_i_2__2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[17] ), + .O(\txeq_txcoeff[11]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[11]_i_2__2 + (.I0(\txeq_txcoeff_reg_n_0_[17] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[18] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[11] ), + .O(\txeq_txcoeff[11]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[12]_i_1__2 + (.I0(\txeq_txcoeff_reg_n_0_[11] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[12]_i_2__2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[18] ), + .O(\txeq_txcoeff[12]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[12]_i_2__2 + (.I0(\txeq_txcoeff_reg_n_0_[18] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(txeq_deemph_reg2[0]), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[12] ), + .O(\txeq_txcoeff[12]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[13]_i_1__2 + (.I0(\txeq_txcoeff_reg_n_0_[12] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[13]_i_2__2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(txeq_deemph_reg2[0]), + .O(\txeq_txcoeff[13]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[13]_i_2__2 + (.I0(txeq_deemph_reg2[0]), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(txeq_deemph_reg2[1]), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[13] ), + .O(\txeq_txcoeff[13]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[14]_i_1__2 + (.I0(\txeq_txcoeff_reg_n_0_[13] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[14]_i_2__2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(txeq_deemph_reg2[1]), + .O(\txeq_txcoeff[14]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[14]_i_2__2 + (.I0(txeq_deemph_reg2[1]), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(txeq_deemph_reg2[2]), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[14] ), + .O(\txeq_txcoeff[14]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[15]_i_1__2 + (.I0(\txeq_txcoeff_reg_n_0_[14] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[15]_i_2__2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(txeq_deemph_reg2[2]), + .O(\txeq_txcoeff[15]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[15]_i_2__2 + (.I0(txeq_deemph_reg2[2]), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(txeq_deemph_reg2[3]), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[15] ), + .O(\txeq_txcoeff[15]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[16]_i_1__2 + (.I0(\txeq_txcoeff_reg_n_0_[15] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[16]_i_2__2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(txeq_deemph_reg2[3]), + .O(\txeq_txcoeff[16]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[16]_i_2__2 + (.I0(txeq_deemph_reg2[3]), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(txeq_deemph_reg2[4]), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[16] ), + .O(\txeq_txcoeff[16]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[17]_i_1__2 + (.I0(\txeq_txcoeff_reg_n_0_[16] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[17]_i_2__2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(txeq_deemph_reg2[4]), + .O(\txeq_txcoeff[17]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[17]_i_2__2 + (.I0(txeq_deemph_reg2[4]), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(txeq_deemph_reg2[5]), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[17] ), + .O(\txeq_txcoeff[17]_i_2__2_n_0 )); + LUT5 #( + .INIT(32'hFF040FFF)) + \txeq_txcoeff[18]_i_1__2 + (.I0(txeq_control_reg2[0]), + .I1(txeq_control_reg2[1]), + .I2(fsm_tx[2]), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .O(txeq_txcoeff)); + LUT6 #( + .INIT(64'h22F3220022002200)) + \txeq_txcoeff[18]_i_2__2 + (.I0(\txeq_txcoeff_reg_n_0_[17] ), + .I1(fsm_tx[1]), + .I2(\txeq_txcoeff[18]_i_3__2_n_0 ), + .I3(fsm_tx[2]), + .I4(txeq_deemph_reg2[5]), + .I5(fsm_tx[0]), + .O(\txeq_txcoeff[18]_i_2__2_n_0 )); + LUT2 #( + .INIT(4'hB)) + \txeq_txcoeff[18]_i_3__2 + (.I0(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .O(\txeq_txcoeff[18]_i_3__2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[1]_i_1__2 + (.I0(\txeq_txcoeff_reg_n_0_[0] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[1]_i_2__2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[7] ), + .O(\txeq_txcoeff[1]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[1]_i_2__2 + (.I0(\txeq_txcoeff_reg_n_0_[7] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[8] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[1] ), + .O(\txeq_txcoeff[1]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[2]_i_1__2 + (.I0(\txeq_txcoeff_reg_n_0_[1] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[2]_i_2__2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[8] ), + .O(\txeq_txcoeff[2]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[2]_i_2__2 + (.I0(\txeq_txcoeff_reg_n_0_[8] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[9] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[2] ), + .O(\txeq_txcoeff[2]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[3]_i_1__2 + (.I0(\txeq_txcoeff_reg_n_0_[2] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[3]_i_2__2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[9] ), + .O(\txeq_txcoeff[3]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[3]_i_2__2 + (.I0(\txeq_txcoeff_reg_n_0_[9] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[10] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[3] ), + .O(\txeq_txcoeff[3]_i_2__2_n_0 )); + LUT4 #( + .INIT(16'h2F20)) + \txeq_txcoeff[4]_i_1__2 + (.I0(\txeq_txcoeff_reg_n_0_[3] ), + .I1(fsm_tx[1]), + .I2(fsm_tx[2]), + .I3(\txeq_txcoeff[4]_i_2__2_n_0 ), + .O(\txeq_txcoeff[4]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'hCACCCCCC00000000)) + \txeq_txcoeff[4]_i_2__2 + (.I0(\txeq_txcoeff_reg_n_0_[11] ), + .I1(\txeq_txcoeff_reg_n_0_[10] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I3(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I4(fsm_tx[1]), + .I5(fsm_tx[0]), + .O(\txeq_txcoeff[4]_i_2__2_n_0 )); + LUT4 #( + .INIT(16'h2F20)) + \txeq_txcoeff[5]_i_1__2 + (.I0(\txeq_txcoeff_reg_n_0_[4] ), + .I1(fsm_tx[1]), + .I2(fsm_tx[2]), + .I3(\txeq_txcoeff[5]_i_2__2_n_0 ), + .O(\txeq_txcoeff[5]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'hCACCCCCC00000000)) + \txeq_txcoeff[5]_i_2__2 + (.I0(\txeq_txcoeff_reg_n_0_[12] ), + .I1(\txeq_txcoeff_reg_n_0_[11] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I3(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I4(fsm_tx[1]), + .I5(fsm_tx[0]), + .O(\txeq_txcoeff[5]_i_2__2_n_0 )); + LUT4 #( + .INIT(16'h2F20)) + \txeq_txcoeff[6]_i_1__2 + (.I0(\txeq_txcoeff_reg_n_0_[5] ), + .I1(fsm_tx[1]), + .I2(fsm_tx[2]), + .I3(\txeq_txcoeff[6]_i_2__2_n_0 ), + .O(\txeq_txcoeff[6]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'hCACCCCCC00000000)) + \txeq_txcoeff[6]_i_2__2 + (.I0(\txeq_txcoeff_reg_n_0_[13] ), + .I1(\txeq_txcoeff_reg_n_0_[12] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I3(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I4(fsm_tx[1]), + .I5(fsm_tx[0]), + .O(\txeq_txcoeff[6]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[7]_i_1__2 + (.I0(\txeq_txcoeff_reg_n_0_[6] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[7]_i_2__2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[13] ), + .O(\txeq_txcoeff[7]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[7]_i_2__2 + (.I0(\txeq_txcoeff_reg_n_0_[13] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[14] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[7] ), + .O(\txeq_txcoeff[7]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[8]_i_1__2 + (.I0(\txeq_txcoeff_reg_n_0_[7] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[8]_i_2__2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[14] ), + .O(\txeq_txcoeff[8]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[8]_i_2__2 + (.I0(\txeq_txcoeff_reg_n_0_[14] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[15] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[8] ), + .O(\txeq_txcoeff[8]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'h30BB308830883088)) + \txeq_txcoeff[9]_i_1__2 + (.I0(\txeq_txcoeff_reg_n_0_[8] ), + .I1(fsm_tx[2]), + .I2(\txeq_txcoeff[9]_i_2__2_n_0 ), + .I3(fsm_tx[1]), + .I4(fsm_tx[0]), + .I5(\txeq_txcoeff_reg_n_0_[15] ), + .O(\txeq_txcoeff[9]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'hBA8AFFFFBA8A0000)) + \txeq_txcoeff[9]_i_2__2 + (.I0(\txeq_txcoeff_reg_n_0_[15] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I2(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I3(\txeq_txcoeff_reg_n_0_[16] ), + .I4(fsm_tx[0]), + .I5(\txeq_preset_reg_n_0_[9] ), + .O(\txeq_txcoeff[9]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'h000004000F000400)) + \txeq_txcoeff_cnt[0]_i_1__2 + (.I0(txeq_control_reg2[0]), + .I1(txeq_control_reg2[1]), + .I2(fsm_tx[2]), + .I3(fsm_tx[0]), + .I4(fsm_tx[1]), + .I5(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .O(txeq_txcoeff_cnt[0])); + (* SOFT_HLUTNM = "soft_lutpair184" *) + LUT5 #( + .INIT(32'h00006000)) + \txeq_txcoeff_cnt[1]_i_1__2 + (.I0(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .I1(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .I2(fsm_tx[0]), + .I3(fsm_tx[1]), + .I4(fsm_tx[2]), + .O(txeq_txcoeff_cnt[1])); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_txcoeff_cnt[0]), + .Q(\txeq_txcoeff_cnt_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txeq_txcoeff_cnt[1]), + .Q(\txeq_txcoeff_cnt_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[0] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[0]_i_1__2_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[0] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[10] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[10]_i_1__2_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[10] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[11] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[11]_i_1__2_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[11] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[12] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[12]_i_1__2_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[12] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[13] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[13]_i_1__2_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[13] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[14] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[14]_i_1__2_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[14] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[15] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[15]_i_1__2_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[15] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[16] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[16]_i_1__2_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[16] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[17] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[17]_i_1__2_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[17] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[18] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[18]_i_2__2_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[18] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[1] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[1]_i_1__2_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[1] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[2] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[2]_i_1__2_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[3] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[3]_i_1__2_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[4] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[4]_i_1__2_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[5] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[5]_i_1__2_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[5] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[6] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[6]_i_1__2_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[6] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[7] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[7]_i_1__2_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[7] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[8] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[8]_i_1__2_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[8] ), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txeq_txcoeff_reg[9] + (.C(pipe_pclk_in), + .CE(txeq_txcoeff), + .D(\txeq_txcoeff[9]_i_1__2_n_0 ), + .Q(\txeq_txcoeff_reg_n_0_[9] ), + .R(RST_CPLLRESET)); +endmodule + +module pcie_7x_0_pcie_7x_0_pipe_rate + (SYNC_TXSYNC_START, + rxchbonden_0, + USER_RATE_GEN3, + RATE_DRP_START, + RATE_DRP_X16X20_MODE, + RATE_DRP_X16, + USER_RATE_RXSYNC, + SYNC_RXSYNC_START, + USER_RATE_DONE, + USER_RESETOVRD_START, + SYNC_RATE_IDLE, + rate_txpmareset_0, + RXSYSCLKSEL, + pipe_pclk_sel_out, + RXRATE, + QRST_QPLLPD_IN, + rate_cpllpd_0, + QRST_QPLLRESET_IN, + rate_cpllreset_0, + RST_TXSYNC_START, + RST_CPLLRESET, + pipe_pclk_in, + \rate_in_reg1_reg[0]_0 , + RST_IDLE, + QRST_CPLLLOCK, + RATE_QPLLLOCK, + RATE_DRP_DONE, + pipe_mmcm_lock_in, + RATE_PHYSTATUS, + USER_TXRESETDONE, + USER_RXRESETDONE, + RATE_TXRATEDONE, + RATE_RXRATEDONE, + RATE_TXSYNC_DONE, + user_active_lane_0, + out, + \fsm[0]_i_9_0 ); + output SYNC_TXSYNC_START; + output rxchbonden_0; + output USER_RATE_GEN3; + output RATE_DRP_START; + output RATE_DRP_X16X20_MODE; + output RATE_DRP_X16; + output USER_RATE_RXSYNC; + output SYNC_RXSYNC_START; + output USER_RATE_DONE; + output USER_RESETOVRD_START; + output SYNC_RATE_IDLE; + output rate_txpmareset_0; + output [0:0]RXSYSCLKSEL; + output [0:0]pipe_pclk_sel_out; + output [0:0]RXRATE; + output [0:0]QRST_QPLLPD_IN; + output rate_cpllpd_0; + output [0:0]QRST_QPLLRESET_IN; + output rate_cpllreset_0; + input RST_TXSYNC_START; + input RST_CPLLRESET; + input pipe_pclk_in; + input [0:0]\rate_in_reg1_reg[0]_0 ; + input RST_IDLE; + input [0:0]QRST_CPLLLOCK; + input RATE_QPLLLOCK; + input RATE_DRP_DONE; + input pipe_mmcm_lock_in; + input RATE_PHYSTATUS; + input USER_TXRESETDONE; + input USER_RXRESETDONE; + input RATE_TXRATEDONE; + input RATE_RXRATEDONE; + input RATE_TXSYNC_DONE; + input user_active_lane_0; + input out; + input \fsm[0]_i_9_0 ; + + wire [0:0]QRST_CPLLLOCK; + wire [0:0]QRST_QPLLPD_IN; + wire [0:0]QRST_QPLLRESET_IN; + wire RATE_DRP_DONE; + wire RATE_DRP_START; + wire RATE_DRP_X16; + wire RATE_DRP_X16X20_MODE; + wire RATE_PHYSTATUS; + wire RATE_QPLLLOCK; + wire RATE_RXRATEDONE; + wire RATE_TXRATEDONE; + wire RATE_TXSYNC_DONE; + wire RST_CPLLRESET; + wire RST_IDLE; + wire RST_TXSYNC_START; + wire [0:0]RXRATE; + wire [0:0]RXSYSCLKSEL; + wire SYNC_RATE_IDLE; + wire SYNC_RXSYNC_START; + wire SYNC_TXSYNC_START; + wire USER_RATE_DONE; + wire USER_RATE_GEN3; + wire USER_RATE_RXSYNC; + wire USER_RESETOVRD_START; + wire USER_RXRESETDONE; + wire USER_TXRESETDONE; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire cplllock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire cplllock_reg2; + wire cpllpd_i_1_n_0; + wire cpllreset_i_1__0_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire drp_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire drp_done_reg2; + wire drp_start_i_1_n_0; + wire drp_x16_i_1_n_0; + wire drp_x16x20_mode_i_1_n_0; + wire [4:0]fsm; + wire fsm1; + wire \fsm[0]_i_10_n_0 ; + wire \fsm[0]_i_11_n_0 ; + wire \fsm[0]_i_12_n_0 ; + wire \fsm[0]_i_2_n_0 ; + wire \fsm[0]_i_3_n_0 ; + wire \fsm[0]_i_4_n_0 ; + wire \fsm[0]_i_5_n_0 ; + wire \fsm[0]_i_7_n_0 ; + wire \fsm[0]_i_8_n_0 ; + wire \fsm[0]_i_9_0 ; + wire \fsm[0]_i_9_n_0 ; + wire \fsm[1]_i_2_n_0 ; + wire \fsm[1]_i_3_n_0 ; + wire \fsm[1]_i_4_n_0 ; + wire \fsm[1]_i_5_n_0 ; + wire \fsm[1]_i_6_n_0 ; + wire \fsm[1]_i_7_n_0 ; + wire \fsm[1]_i_8_n_0 ; + wire \fsm[2]_i_2_n_0 ; + wire \fsm[2]_i_3_n_0 ; + wire \fsm[2]_i_4_n_0 ; + wire \fsm[2]_i_5_n_0 ; + wire \fsm[2]_i_6_n_0 ; + wire \fsm[3]_i_2_n_0 ; + wire \fsm[3]_i_3_n_0 ; + wire \fsm[3]_i_4_n_0 ; + wire \fsm[3]_i_6_n_0 ; + wire \fsm[4]_i_2_n_0 ; + wire \fsm[4]_i_3_n_0 ; + wire \fsm_reg_n_0_[0] ; + wire \fsm_reg_n_0_[1] ; + wire \fsm_reg_n_0_[2] ; + wire \fsm_reg_n_0_[3] ; + wire \fsm_reg_n_0_[4] ; + wire gen3_exit; + wire gen3_exit_i_1_n_0; + wire gen3_exit_i_2_n_0; + wire gen3_i_1_n_0; + wire gen3_i_2_n_0; + wire gen3_i_3_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire mmcm_lock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire mmcm_lock_reg2; + wire out; + wire [3:0]p_0_in__0; + wire pclk_sel_i_1_n_0; + wire pclk_sel_i_2_n_0; + wire phystatus; + wire phystatus_i_1_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire phystatus_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire phystatus_reg2; + wire pipe_mmcm_lock_in; + wire pipe_pclk_in; + wire [0:0]pipe_pclk_sel_out; + wire pll_lock; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire qplllock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire qplllock_reg2; + wire qpllpd; + wire qpllpd_i_1__0_n_0; + wire qpllreset; + wire qpllreset_i_1__0_n_0; + wire rate_cpllpd_0; + wire rate_cpllreset_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rate_in_reg1; + wire [0:0]\rate_in_reg1_reg[0]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rate_in_reg2; + wire \rate_out[0]_i_1_n_0 ; + wire \rate_out[0]_i_2_n_0 ; + wire rate_txpmareset_0; + wire ratedone; + wire ratedone_i_1_n_0; + wire ratedone_i_2_n_0; + wire ratedone_i_3_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire resetovrd_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire resetovrd_done_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rst_idle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rst_idle_reg2; + wire rxchbonden_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxpmaresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxpmaresetdone_reg2; + wire rxratedone; + wire rxratedone_i_1_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxratedone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxratedone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxresetdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsync_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsync_done_reg2; + wire \sysclksel[0]_i_1_n_0 ; + wire \sysclksel[0]_i_2_n_0 ; + wire \txdata_wait_cnt[3]_i_2_n_0 ; + wire \txdata_wait_cnt[3]_i_3_n_0 ; + wire [3:0]txdata_wait_cnt_reg; + wire txpmareset0; + wire txpmareset_i_1_n_0; + wire txpmareset_i_2_n_0; + wire txratedone; + wire txratedone_i_1_n_0; + wire txratedone_i_2_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txratedone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txratedone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txresetdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsync_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsync_done_reg2; + wire user_active_lane_0; + + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE cplllock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(QRST_CPLLLOCK), + .Q(cplllock_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE cplllock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(cplllock_reg1), + .Q(cplllock_reg2), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0400FFFF04000000)) + cpllpd_i_1 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(rate_in_reg2[0]), + .I3(rate_in_reg2[1]), + .I4(qpllpd), + .I5(rate_cpllpd_0), + .O(cpllpd_i_1_n_0)); + (* SOFT_HLUTNM = "soft_lutpair70" *) + LUT5 #( + .INIT(32'h80000900)) + cpllpd_i_2 + (.I0(\fsm_reg_n_0_[4] ), + .I1(\fsm_reg_n_0_[3] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(\fsm_reg_n_0_[2] ), + .O(qpllpd)); + FDRE #( + .INIT(1'b0)) + cpllpd_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(cpllpd_i_1_n_0), + .Q(rate_cpllpd_0), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0400FFFF04000000)) + cpllreset_i_1__0 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(rate_in_reg2[0]), + .I3(rate_in_reg2[1]), + .I4(qpllreset), + .I5(rate_cpllreset_0), + .O(cpllreset_i_1__0_n_0)); + (* SOFT_HLUTNM = "soft_lutpair71" *) + LUT5 #( + .INIT(32'h80001004)) + cpllreset_i_2__0 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[3] ), + .I3(\fsm_reg_n_0_[4] ), + .I4(\fsm_reg_n_0_[0] ), + .O(qpllreset)); + FDRE #( + .INIT(1'b0)) + cpllreset_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(cpllreset_i_1__0_n_0), + .Q(rate_cpllreset_0), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE drp_done_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RATE_DRP_DONE), + .Q(drp_done_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE drp_done_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(drp_done_reg1), + .Q(drp_done_reg2), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair74" *) + LUT5 #( + .INIT(32'h08420100)) + drp_start_i_1 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[4] ), + .I3(\fsm_reg_n_0_[2] ), + .I4(\fsm_reg_n_0_[0] ), + .O(drp_start_i_1_n_0)); + FDRE #( + .INIT(1'b0)) + drp_start_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(drp_start_i_1_n_0), + .Q(RATE_DRP_START), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair75" *) + LUT5 #( + .INIT(32'h20100014)) + drp_x16_i_1 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[0] ), + .O(drp_x16_i_1_n_0)); + FDRE #( + .INIT(1'b0)) + drp_x16_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(drp_x16_i_1_n_0), + .Q(RATE_DRP_X16), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair76" *) + LUT5 #( + .INIT(32'h20080074)) + drp_x16x20_mode_i_1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[3] ), + .I4(\fsm_reg_n_0_[1] ), + .O(drp_x16x20_mode_i_1_n_0)); + FDRE #( + .INIT(1'b0)) + drp_x16x20_mode_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(drp_x16x20_mode_i_1_n_0), + .Q(RATE_DRP_X16X20_MODE), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair69" *) + LUT5 #( + .INIT(32'hFFFF3210)) + \fsm[0]_i_1 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm[0]_i_2_n_0 ), + .I3(\fsm[0]_i_3_n_0 ), + .I4(\fsm[0]_i_4_n_0 ), + .O(fsm[0])); + LUT6 #( + .INIT(64'h0901595100000000)) + \fsm[0]_i_10 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(rxsync_done_reg2), + .I4(txsync_done_reg2), + .I5(\fsm_reg_n_0_[3] ), + .O(\fsm[0]_i_10_n_0 )); + LUT6 #( + .INIT(64'h1101111101000110)) + \fsm[0]_i_11 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[3] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(rxpmaresetdone_reg2), + .I5(drp_done_reg2), + .O(\fsm[0]_i_11_n_0 )); + LUT5 #( + .INIT(32'h20202320)) + \fsm[0]_i_12 + (.I0(drp_done_reg2), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(mmcm_lock_reg2), + .I4(rxpmaresetdone_reg2), + .O(\fsm[0]_i_12_n_0 )); + LUT6 #( + .INIT(64'h0F0F3F3F47444744)) + \fsm[0]_i_2 + (.I0(drp_done_reg2), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm[0]_i_5_n_0 ), + .I4(pll_lock), + .I5(\fsm_reg_n_0_[1] ), + .O(\fsm[0]_i_2_n_0 )); + LUT6 #( + .INIT(64'hF3F3AAAAFF00AAAA)) + \fsm[0]_i_3 + (.I0(\fsm[0]_i_7_n_0 ), + .I1(\fsm_reg_n_0_[0] ), + .I2(drp_done_reg2), + .I3(\fsm[0]_i_8_n_0 ), + .I4(\fsm_reg_n_0_[2] ), + .I5(\fsm_reg_n_0_[1] ), + .O(\fsm[0]_i_3_n_0 )); + LUT6 #( + .INIT(64'hFFFFFF4000000000)) + \fsm[0]_i_4 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm[0]_i_9_n_0 ), + .I3(\fsm[0]_i_10_n_0 ), + .I4(\fsm[0]_i_11_n_0 ), + .I5(\fsm_reg_n_0_[4] ), + .O(\fsm[0]_i_4_n_0 )); + LUT4 #( + .INIT(16'h6FF6)) + \fsm[0]_i_5 + (.I0(rate_in_reg2[1]), + .I1(rate_in_reg1[1]), + .I2(rate_in_reg2[0]), + .I3(rate_in_reg1[0]), + .O(\fsm[0]_i_5_n_0 )); + LUT4 #( + .INIT(16'hFB08)) + \fsm[0]_i_6 + (.I0(qplllock_reg2), + .I1(rate_in_reg2[1]), + .I2(rate_in_reg2[0]), + .I3(cplllock_reg2), + .O(pll_lock)); + LUT6 #( + .INIT(64'hAAAAAAAAEAAAAAAA)) + \fsm[0]_i_7 + (.I0(\fsm[0]_i_12_n_0 ), + .I1(pll_lock), + .I2(rst_idle_reg2), + .I3(drp_done_reg2), + .I4(\fsm_reg_n_0_[1] ), + .I5(\fsm_reg_n_0_[0] ), + .O(\fsm[0]_i_7_n_0 )); + LUT6 #( + .INIT(64'hFFFF5D5500005D55)) + \fsm[0]_i_8 + (.I0(user_active_lane_0), + .I1(txresetdone_reg2), + .I2(phystatus_reg2), + .I3(rxresetdone_reg2), + .I4(\fsm_reg_n_0_[0] ), + .I5(\fsm[1]_i_7_n_0 ), + .O(\fsm[0]_i_8_n_0 )); + LUT5 #( + .INIT(32'h33330FAA)) + \fsm[0]_i_9 + (.I0(drp_done_reg2), + .I1(resetovrd_done_reg2), + .I2(fsm1), + .I3(\fsm_reg_n_0_[0] ), + .I4(\fsm_reg_n_0_[1] ), + .O(\fsm[0]_i_9_n_0 )); + LUT6 #( + .INIT(64'hFFE4FFE4FFE400E4)) + \fsm[1]_i_1 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm[1]_i_2_n_0 ), + .I2(\fsm[1]_i_3_n_0 ), + .I3(\fsm_reg_n_0_[4] ), + .I4(\fsm[1]_i_4_n_0 ), + .I5(\fsm[1]_i_5_n_0 ), + .O(fsm[1])); + LUT5 #( + .INIT(32'h3388F0CC)) + \fsm[1]_i_2 + (.I0(drp_done_reg2), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm[1]_i_6_n_0 ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[2] ), + .O(\fsm[1]_i_2_n_0 )); + LUT6 #( + .INIT(64'hCC5500000033F000)) + \fsm[1]_i_3 + (.I0(\fsm[1]_i_7_n_0 ), + .I1(drp_done_reg2), + .I2(\fsm[1]_i_8_n_0 ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[0] ), + .I5(\fsm_reg_n_0_[2] ), + .O(\fsm[1]_i_3_n_0 )); + LUT6 #( + .INIT(64'h000000005FCF0000)) + \fsm[1]_i_4 + (.I0(resetovrd_done_reg2), + .I1(drp_done_reg2), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .I4(\fsm_reg_n_0_[1] ), + .I5(\fsm_reg_n_0_[3] ), + .O(\fsm[1]_i_4_n_0 )); + LUT6 #( + .INIT(64'h143C547C00000000)) + \fsm[1]_i_5 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(rxsync_done_reg2), + .I4(txsync_done_reg2), + .I5(\fsm_reg_n_0_[3] ), + .O(\fsm[1]_i_5_n_0 )); + LUT6 #( + .INIT(64'h34F7FFFFFFFFFFFF)) + \fsm[1]_i_6 + (.I0(qplllock_reg2), + .I1(rate_in_reg2[1]), + .I2(rate_in_reg2[0]), + .I3(cplllock_reg2), + .I4(rst_idle_reg2), + .I5(\fsm_reg_n_0_[0] ), + .O(\fsm[1]_i_6_n_0 )); + LUT4 #( + .INIT(16'h7FFF)) + \fsm[1]_i_7 + (.I0(txdata_wait_cnt_reg[3]), + .I1(txdata_wait_cnt_reg[1]), + .I2(txdata_wait_cnt_reg[0]), + .I3(txdata_wait_cnt_reg[2]), + .O(\fsm[1]_i_7_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFF04F7FFFF)) + \fsm[1]_i_8 + (.I0(qplllock_reg2), + .I1(rate_in_reg2[1]), + .I2(rate_in_reg2[0]), + .I3(cplllock_reg2), + .I4(drp_done_reg2), + .I5(rst_idle_reg2), + .O(\fsm[1]_i_8_n_0 )); + LUT6 #( + .INIT(64'hEAFFAAAAAAAAAAAA)) + \fsm[2]_i_2 + (.I0(\fsm[2]_i_4_n_0 ), + .I1(drp_done_reg2), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[3] ), + .I5(\fsm_reg_n_0_[2] ), + .O(\fsm[2]_i_2_n_0 )); + LUT6 #( + .INIT(64'hAFBAAAAAAAAAAAAA)) + \fsm[2]_i_3 + (.I0(\fsm[2]_i_5_n_0 ), + .I1(rxsync_done_reg2), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(\fsm_reg_n_0_[3] ), + .I5(\fsm_reg_n_0_[2] ), + .O(\fsm[2]_i_3_n_0 )); + LUT6 #( + .INIT(64'h00FA554455005544)) + \fsm[2]_i_4 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm[3]_i_6_n_0 ), + .I2(pll_lock), + .I3(\fsm_reg_n_0_[2] ), + .I4(\fsm_reg_n_0_[1] ), + .I5(\fsm_reg_n_0_[0] ), + .O(\fsm[2]_i_4_n_0 )); + LUT6 #( + .INIT(64'h2000FFFF20000000)) + \fsm[2]_i_5 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(txsync_done_reg2), + .I4(\fsm_reg_n_0_[3] ), + .I5(\fsm[2]_i_6_n_0 ), + .O(\fsm[2]_i_5_n_0 )); + LUT6 #( + .INIT(64'h1CDC3C3C1CDCFCFC)) + \fsm[2]_i_6 + (.I0(drp_done_reg2), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(resetovrd_done_reg2), + .I4(\fsm_reg_n_0_[1] ), + .I5(fsm1), + .O(\fsm[2]_i_6_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFB0803080)) + \fsm[3]_i_2 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[3] ), + .I4(drp_done_reg2), + .I5(\fsm[3]_i_4_n_0 ), + .O(\fsm[3]_i_2_n_0 )); + LUT6 #( + .INIT(64'hFFFFF8880000F888)) + \fsm[3]_i_3 + (.I0(\txdata_wait_cnt[3]_i_2_n_0 ), + .I1(fsm1), + .I2(resetovrd_done_reg2), + .I3(\sysclksel[0]_i_2_n_0 ), + .I4(\fsm_reg_n_0_[3] ), + .I5(\fsm[4]_i_2_n_0 ), + .O(\fsm[3]_i_3_n_0 )); + LUT6 #( + .INIT(64'h00000000EEFF00F0)) + \fsm[3]_i_4 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm[1]_i_8_n_0 ), + .I2(\fsm[3]_i_6_n_0 ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[3] ), + .I5(\fsm_reg_n_0_[2] ), + .O(\fsm[3]_i_4_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFF8F8FFF8)) + \fsm[3]_i_5 + (.I0(out), + .I1(\fsm[0]_i_9_0 ), + .I2(ratedone), + .I3(rate_in_reg2[1]), + .I4(rate_in_reg2[0]), + .I5(gen3_exit), + .O(fsm1)); + LUT5 #( + .INIT(32'h00504414)) + \fsm[3]_i_6 + (.I0(\fsm_reg_n_0_[0] ), + .I1(rate_in_reg1[0]), + .I2(rate_in_reg2[0]), + .I3(rate_in_reg1[1]), + .I4(rate_in_reg2[1]), + .O(\fsm[3]_i_6_n_0 )); + LUT6 #( + .INIT(64'hC5F0CFF0C0F0C0F0)) + \fsm[4]_i_1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm[4]_i_2_n_0 ), + .I2(\fsm_reg_n_0_[4] ), + .I3(\fsm_reg_n_0_[3] ), + .I4(drp_done_reg2), + .I5(\fsm[4]_i_3_n_0 ), + .O(fsm[4])); + LUT4 #( + .INIT(16'h26FF)) + \fsm[4]_i_2 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(rxsync_done_reg2), + .I3(\fsm_reg_n_0_[2] ), + .O(\fsm[4]_i_2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair78" *) + LUT2 #( + .INIT(4'h8)) + \fsm[4]_i_3 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[2] ), + .O(\fsm[4]_i_3_n_0 )); + FDSE #( + .INIT(1'b0)) + \fsm_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm[0]), + .Q(\fsm_reg_n_0_[0] ), + .S(RST_CPLLRESET)); + FDSE #( + .INIT(1'b0)) + \fsm_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm[1]), + .Q(\fsm_reg_n_0_[1] ), + .S(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \fsm_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm[2]), + .Q(\fsm_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + MUXF7 \fsm_reg[2]_i_1 + (.I0(\fsm[2]_i_2_n_0 ), + .I1(\fsm[2]_i_3_n_0 ), + .O(fsm[2]), + .S(\fsm_reg_n_0_[4] )); + FDRE #( + .INIT(1'b0)) + \fsm_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm[3]), + .Q(\fsm_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + MUXF7 \fsm_reg[3]_i_1 + (.I0(\fsm[3]_i_2_n_0 ), + .I1(\fsm[3]_i_3_n_0 ), + .O(fsm[3]), + .S(\fsm_reg_n_0_[4] )); + FDRE #( + .INIT(1'b0)) + \fsm_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm[4]), + .Q(\fsm_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h04FF0400)) + gen3_exit_i_1 + (.I0(rate_in_reg2[0]), + .I1(rate_in_reg2[1]), + .I2(\fsm_reg_n_0_[4] ), + .I3(gen3_exit_i_2_n_0), + .I4(gen3_exit), + .O(gen3_exit_i_1_n_0)); + LUT6 #( + .INIT(64'h8000000180000000)) + gen3_exit_i_2 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[3] ), + .I4(\fsm_reg_n_0_[4] ), + .I5(\fsm[0]_i_5_n_0 ), + .O(gen3_exit_i_2_n_0)); + FDRE #( + .INIT(1'b0)) + gen3_exit_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gen3_exit_i_1_n_0), + .Q(gen3_exit), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h3FFFFFFB00000008)) + gen3_i_1 + (.I0(gen3_i_2_n_0), + .I1(gen3_i_3_n_0), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[4] ), + .I5(USER_RATE_GEN3), + .O(gen3_i_1_n_0)); + LUT2 #( + .INIT(4'h2)) + gen3_i_2 + (.I0(rate_in_reg2[1]), + .I1(rate_in_reg2[0]), + .O(gen3_i_2_n_0)); + LUT2 #( + .INIT(4'h8)) + gen3_i_3 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[0] ), + .O(gen3_i_3_n_0)); + FDRE #( + .INIT(1'b0)) + gen3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gen3_i_1_n_0), + .Q(USER_RATE_GEN3), + .R(RST_CPLLRESET)); + LUT1 #( + .INIT(2'h1)) + \gtx_channel.gtxe2_channel_i_i_5 + (.I0(USER_RATE_GEN3), + .O(rxchbonden_0)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE mmcm_lock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_mmcm_lock_in), + .Q(mmcm_lock_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE mmcm_lock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(mmcm_lock_reg1), + .Q(mmcm_lock_reg2), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h14FF1400)) + pclk_sel_i_1 + (.I0(\fsm_reg_n_0_[4] ), + .I1(rate_in_reg2[1]), + .I2(rate_in_reg2[0]), + .I3(pclk_sel_i_2_n_0), + .I4(pipe_pclk_sel_out), + .O(pclk_sel_i_1_n_0)); + (* SOFT_HLUTNM = "soft_lutpair70" *) + LUT5 #( + .INIT(32'h80022000)) + pclk_sel_i_2 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[0] ), + .O(pclk_sel_i_2_n_0)); + FDRE #( + .INIT(1'b0)) + pclk_sel_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pclk_sel_i_1_n_0), + .Q(pipe_pclk_sel_out), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0800080008000000)) + phystatus_i_1 + (.I0(\fsm_reg_n_0_[4] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(txratedone_i_2_n_0), + .I3(\fsm_reg_n_0_[0] ), + .I4(phystatus_reg2), + .I5(phystatus), + .O(phystatus_i_1_n_0)); + FDRE #( + .INIT(1'b0)) + phystatus_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(phystatus_i_1_n_0), + .Q(phystatus), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE phystatus_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RATE_PHYSTATUS), + .Q(phystatus_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE phystatus_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(phystatus_reg1), + .Q(phystatus_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE qplllock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RATE_QPLLLOCK), + .Q(qplllock_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE qplllock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qplllock_reg1), + .Q(qplllock_reg2), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h4044FFFF40440000)) + qpllpd_i_1__0 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(rate_in_reg2[0]), + .I3(rate_in_reg2[1]), + .I4(qpllpd), + .I5(QRST_QPLLPD_IN), + .O(qpllpd_i_1__0_n_0)); + FDRE #( + .INIT(1'b0)) + qpllpd_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qpllpd_i_1__0_n_0), + .Q(QRST_QPLLPD_IN), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h4044FFFF40440000)) + qpllreset_i_1__0 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(rate_in_reg2[0]), + .I3(rate_in_reg2[1]), + .I4(qpllreset), + .I5(QRST_QPLLRESET_IN), + .O(qpllreset_i_1__0_n_0)); + FDRE #( + .INIT(1'b0)) + qpllreset_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qpllreset_i_1__0_n_0), + .Q(QRST_QPLLRESET_IN), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair74" *) + LUT5 #( + .INIT(32'h00000080)) + rate_done_reg1_i_1 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(\fsm_reg_n_0_[1] ), + .O(USER_RATE_DONE)); + (* SOFT_HLUTNM = "soft_lutpair76" *) + LUT5 #( + .INIT(32'h00000001)) + \rate_idle_reg1[0]_i_1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[4] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[3] ), + .O(SYNC_RATE_IDLE)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_in_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rate_in_reg1_reg[0]_0 ), + .Q(rate_in_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_in_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rate_in_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_in_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rate_in_reg1[0]), + .Q(rate_in_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_in_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rate_in_reg1[1]), + .Q(rate_in_reg2[1]), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0444FFFF04440000)) + \rate_out[0]_i_1 + (.I0(rate_in_reg2[1]), + .I1(rate_in_reg2[0]), + .I2(\fsm_reg_n_0_[4] ), + .I3(\fsm_reg_n_0_[3] ), + .I4(\rate_out[0]_i_2_n_0 ), + .I5(RXRATE), + .O(\rate_out[0]_i_1_n_0 )); + LUT6 #( + .INIT(64'h8002020080000200)) + \rate_out[0]_i_2 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[4] ), + .I4(\fsm_reg_n_0_[3] ), + .I5(txpmareset0), + .O(\rate_out[0]_i_2_n_0 )); + LUT3 #( + .INIT(8'hBA)) + \rate_out[0]_i_3 + (.I0(gen3_exit), + .I1(rate_in_reg2[0]), + .I2(rate_in_reg2[1]), + .O(txpmareset0)); + FDRE #( + .INIT(1'b0)) + \rate_out_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rate_out[0]_i_1_n_0 ), + .Q(RXRATE), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair73" *) + LUT5 #( + .INIT(32'h08800000)) + rate_rxsync_reg1_i_1 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(\fsm_reg_n_0_[2] ), + .O(USER_RATE_RXSYNC)); + LUT6 #( + .INIT(64'hA3333333A0000000)) + ratedone_i_1 + (.I0(ratedone_i_2_n_0), + .I1(ratedone_i_3_n_0), + .I2(rxratedone), + .I3(phystatus), + .I4(txratedone), + .I5(ratedone), + .O(ratedone_i_1_n_0)); + (* SOFT_HLUTNM = "soft_lutpair72" *) + LUT5 #( + .INIT(32'h00080000)) + ratedone_i_2 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm_reg_n_0_[3] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[0] ), + .O(ratedone_i_2_n_0)); + (* SOFT_HLUTNM = "soft_lutpair72" *) + LUT5 #( + .INIT(32'hFDFFFFFF)) + ratedone_i_3 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[3] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[2] ), + .I4(\fsm_reg_n_0_[4] ), + .O(ratedone_i_3_n_0)); + FDRE #( + .INIT(1'b0)) + ratedone_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(ratedone_i_1_n_0), + .Q(ratedone), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE resetovrd_done_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b1), + .Q(resetovrd_done_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE resetovrd_done_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(resetovrd_done_reg1), + .Q(resetovrd_done_reg2), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair75" *) + LUT5 #( + .INIT(32'h00000080)) + resetovrd_start_reg1_i_1 + (.I0(\fsm_reg_n_0_[4] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(\fsm_reg_n_0_[3] ), + .O(USER_RESETOVRD_START)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rst_idle_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RST_IDLE), + .Q(rst_idle_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rst_idle_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rst_idle_reg1), + .Q(rst_idle_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxpmaresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxpmaresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxpmaresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxpmaresetdone_reg1), + .Q(rxpmaresetdone_reg2), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0800080008000000)) + rxratedone_i_1 + (.I0(\fsm_reg_n_0_[4] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(txratedone_i_2_n_0), + .I3(\fsm_reg_n_0_[0] ), + .I4(rxratedone_reg2), + .I5(rxratedone), + .O(rxratedone_i_1_n_0)); + FDRE #( + .INIT(1'b0)) + rxratedone_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxratedone_i_1_n_0), + .Q(rxratedone), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxratedone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RATE_RXRATEDONE), + .Q(rxratedone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxratedone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxratedone_reg1), + .Q(rxratedone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_RXRESETDONE), + .Q(rxresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxresetdone_reg1), + .Q(rxresetdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsync_done_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxsync_done_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsync_done_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxsync_done_reg1), + .Q(rxsync_done_reg2), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair73" *) + LUT5 #( + .INIT(32'h08000000)) + rxsync_start_reg1_i_1 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[4] ), + .I4(\fsm_reg_n_0_[3] ), + .O(SYNC_RXSYNC_START)); + LUT6 #( + .INIT(64'h0FFFFF4F00000040)) + \sysclksel[0]_i_1 + (.I0(rate_in_reg2[0]), + .I1(rate_in_reg2[1]), + .I2(\sysclksel[0]_i_2_n_0 ), + .I3(\fsm_reg_n_0_[3] ), + .I4(\fsm_reg_n_0_[4] ), + .I5(RXSYSCLKSEL), + .O(\sysclksel[0]_i_1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair77" *) + LUT3 #( + .INIT(8'h80)) + \sysclksel[0]_i_2 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .O(\sysclksel[0]_i_2_n_0 )); + FDRE #( + .INIT(1'b0)) + \sysclksel_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\sysclksel[0]_i_1_n_0 ), + .Q(RXSYSCLKSEL), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'hB333000000000000)) + \txdata_wait_cnt[0]_i_1 + (.I0(txdata_wait_cnt_reg[1]), + .I1(txdata_wait_cnt_reg[0]), + .I2(txdata_wait_cnt_reg[2]), + .I3(txdata_wait_cnt_reg[3]), + .I4(\txdata_wait_cnt[3]_i_2_n_0 ), + .I5(\txdata_wait_cnt[3]_i_3_n_0 ), + .O(p_0_in__0[0])); + LUT6 #( + .INIT(64'hE666000000000000)) + \txdata_wait_cnt[1]_i_1 + (.I0(txdata_wait_cnt_reg[1]), + .I1(txdata_wait_cnt_reg[0]), + .I2(txdata_wait_cnt_reg[2]), + .I3(txdata_wait_cnt_reg[3]), + .I4(\txdata_wait_cnt[3]_i_2_n_0 ), + .I5(\txdata_wait_cnt[3]_i_3_n_0 ), + .O(p_0_in__0[1])); + LUT6 #( + .INIT(64'hF878000000000000)) + \txdata_wait_cnt[2]_i_1 + (.I0(txdata_wait_cnt_reg[1]), + .I1(txdata_wait_cnt_reg[0]), + .I2(txdata_wait_cnt_reg[2]), + .I3(txdata_wait_cnt_reg[3]), + .I4(\txdata_wait_cnt[3]_i_2_n_0 ), + .I5(\txdata_wait_cnt[3]_i_3_n_0 ), + .O(p_0_in__0[2])); + LUT6 #( + .INIT(64'hFF80000000000000)) + \txdata_wait_cnt[3]_i_1 + (.I0(txdata_wait_cnt_reg[1]), + .I1(txdata_wait_cnt_reg[0]), + .I2(txdata_wait_cnt_reg[2]), + .I3(txdata_wait_cnt_reg[3]), + .I4(\txdata_wait_cnt[3]_i_2_n_0 ), + .I5(\txdata_wait_cnt[3]_i_3_n_0 ), + .O(p_0_in__0[3])); + (* SOFT_HLUTNM = "soft_lutpair77" *) + LUT3 #( + .INIT(8'h40)) + \txdata_wait_cnt[3]_i_2 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[2] ), + .O(\txdata_wait_cnt[3]_i_2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair69" *) + LUT2 #( + .INIT(4'h2)) + \txdata_wait_cnt[3]_i_3 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[4] ), + .O(\txdata_wait_cnt[3]_i_3_n_0 )); + FDRE #( + .INIT(1'b0)) + \txdata_wait_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[0]), + .Q(txdata_wait_cnt_reg[0]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txdata_wait_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[1]), + .Q(txdata_wait_cnt_reg[1]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txdata_wait_cnt_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[2]), + .Q(txdata_wait_cnt_reg[2]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txdata_wait_cnt_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[3]), + .Q(txdata_wait_cnt_reg[3]), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h00F2FFFF00F20000)) + txpmareset_i_1 + (.I0(rate_in_reg2[1]), + .I1(rate_in_reg2[0]), + .I2(gen3_exit), + .I3(\fsm_reg_n_0_[3] ), + .I4(txpmareset_i_2_n_0), + .I5(rate_txpmareset_0), + .O(txpmareset_i_1_n_0)); + (* SOFT_HLUTNM = "soft_lutpair71" *) + LUT5 #( + .INIT(32'h80004200)) + txpmareset_i_2 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[3] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[4] ), + .O(txpmareset_i_2_n_0)); + FDRE #( + .INIT(1'b0)) + txpmareset_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txpmareset_i_1_n_0), + .Q(rate_txpmareset_0), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0800080008000000)) + txratedone_i_1 + (.I0(\fsm_reg_n_0_[4] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(txratedone_i_2_n_0), + .I3(\fsm_reg_n_0_[0] ), + .I4(txratedone_reg2), + .I5(txratedone), + .O(txratedone_i_1_n_0)); + (* SOFT_HLUTNM = "soft_lutpair78" *) + LUT2 #( + .INIT(4'hE)) + txratedone_i_2 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[1] ), + .O(txratedone_i_2_n_0)); + FDRE #( + .INIT(1'b0)) + txratedone_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txratedone_i_1_n_0), + .Q(txratedone), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txratedone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RATE_TXRATEDONE), + .Q(txratedone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txratedone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txratedone_reg1), + .Q(txratedone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_TXRESETDONE), + .Q(txresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txresetdone_reg1), + .Q(txresetdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsync_done_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RATE_TXSYNC_DONE), + .Q(txsync_done_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsync_done_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txsync_done_reg1), + .Q(txsync_done_reg2), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'hFFFFFFFF00004000)) + txsync_start_reg1_i_1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[4] ), + .I3(\fsm_reg_n_0_[3] ), + .I4(\fsm_reg_n_0_[2] ), + .I5(RST_TXSYNC_START), + .O(SYNC_TXSYNC_START)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pipe_rate" *) +module pcie_7x_0_pcie_7x_0_pipe_rate_40 + (SYNC_TXSYNC_START, + QPLL_DRP_GEN3, + rate_gen3_1, + rxchbonden_1, + RATE_DRP_START, + RATE_DRP_X16X20_MODE, + RATE_DRP_X16, + USER_RATE_RXSYNC, + SYNC_RXSYNC_START, + USER_RATE_DONE, + USER_RESETOVRD_START, + SYNC_RATE_IDLE, + rate_txpmareset_1, + RXSYSCLKSEL, + pipe_pclk_sel_out, + RXRATE, + QRST_QPLLPD_IN, + rate_cpllpd_1, + QRST_QPLLRESET_IN, + rate_cpllreset_1, + RST_TXSYNC_START, + USER_RATE_GEN3, + rate_gen3_3, + rate_gen3_2, + RST_CPLLRESET, + pipe_pclk_in, + \rate_in_reg1_reg[0]_0 , + RST_IDLE, + QRST_CPLLLOCK, + RATE_QPLLLOCK, + RATE_DRP_DONE, + pipe_mmcm_lock_in, + RATE_PHYSTATUS, + USER_TXRESETDONE, + USER_RXRESETDONE, + RATE_TXRATEDONE, + RATE_RXRATEDONE, + RATE_TXSYNC_DONE, + user_active_lane_1, + out, + \fsm[0]_i_9__0_0 ); + output SYNC_TXSYNC_START; + output QPLL_DRP_GEN3; + output rate_gen3_1; + output rxchbonden_1; + output RATE_DRP_START; + output RATE_DRP_X16X20_MODE; + output RATE_DRP_X16; + output USER_RATE_RXSYNC; + output SYNC_RXSYNC_START; + output USER_RATE_DONE; + output USER_RESETOVRD_START; + output SYNC_RATE_IDLE; + output rate_txpmareset_1; + output [0:0]RXSYSCLKSEL; + output [0:0]pipe_pclk_sel_out; + output [0:0]RXRATE; + output [0:0]QRST_QPLLPD_IN; + output rate_cpllpd_1; + output [0:0]QRST_QPLLRESET_IN; + output rate_cpllreset_1; + input RST_TXSYNC_START; + input USER_RATE_GEN3; + input rate_gen3_3; + input rate_gen3_2; + input RST_CPLLRESET; + input pipe_pclk_in; + input [0:0]\rate_in_reg1_reg[0]_0 ; + input RST_IDLE; + input [0:0]QRST_CPLLLOCK; + input RATE_QPLLLOCK; + input RATE_DRP_DONE; + input pipe_mmcm_lock_in; + input RATE_PHYSTATUS; + input USER_TXRESETDONE; + input USER_RXRESETDONE; + input RATE_TXRATEDONE; + input RATE_RXRATEDONE; + input RATE_TXSYNC_DONE; + input user_active_lane_1; + input out; + input \fsm[0]_i_9__0_0 ; + + wire QPLL_DRP_GEN3; + wire [0:0]QRST_CPLLLOCK; + wire [0:0]QRST_QPLLPD_IN; + wire [0:0]QRST_QPLLRESET_IN; + wire RATE_DRP_DONE; + wire RATE_DRP_START; + wire RATE_DRP_X16; + wire RATE_DRP_X16X20_MODE; + wire RATE_PHYSTATUS; + wire RATE_QPLLLOCK; + wire RATE_RXRATEDONE; + wire RATE_TXRATEDONE; + wire RATE_TXSYNC_DONE; + wire RST_CPLLRESET; + wire RST_IDLE; + wire RST_TXSYNC_START; + wire [0:0]RXRATE; + wire [0:0]RXSYSCLKSEL; + wire SYNC_RATE_IDLE; + wire SYNC_RXSYNC_START; + wire SYNC_TXSYNC_START; + wire USER_RATE_DONE; + wire USER_RATE_GEN3; + wire USER_RATE_RXSYNC; + wire USER_RESETOVRD_START; + wire USER_RXRESETDONE; + wire USER_TXRESETDONE; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire cplllock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire cplllock_reg2; + wire cpllpd_i_1__0_n_0; + wire cpllreset_i_1__1_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire drp_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire drp_done_reg2; + wire drp_start_i_1__0_n_0; + wire drp_x16_i_1__0_n_0; + wire drp_x16x20_mode_i_1__0_n_0; + wire [4:0]fsm; + wire fsm1; + wire \fsm[0]_i_10__0_n_0 ; + wire \fsm[0]_i_11__0_n_0 ; + wire \fsm[0]_i_12__0_n_0 ; + wire \fsm[0]_i_2__2_n_0 ; + wire \fsm[0]_i_3__0_n_0 ; + wire \fsm[0]_i_4__0_n_0 ; + wire \fsm[0]_i_5__0_n_0 ; + wire \fsm[0]_i_7__0_n_0 ; + wire \fsm[0]_i_8__0_n_0 ; + wire \fsm[0]_i_9__0_0 ; + wire \fsm[0]_i_9__0_n_0 ; + wire \fsm[1]_i_2__1_n_0 ; + wire \fsm[1]_i_3__0_n_0 ; + wire \fsm[1]_i_4__0_n_0 ; + wire \fsm[1]_i_5__0_n_0 ; + wire \fsm[1]_i_6__0_n_0 ; + wire \fsm[1]_i_7__0_n_0 ; + wire \fsm[1]_i_8__0_n_0 ; + wire \fsm[2]_i_2__0_n_0 ; + wire \fsm[2]_i_3__0_n_0 ; + wire \fsm[2]_i_4__0_n_0 ; + wire \fsm[2]_i_5__0_n_0 ; + wire \fsm[2]_i_6__0_n_0 ; + wire \fsm[3]_i_2__0_n_0 ; + wire \fsm[3]_i_3__0_n_0 ; + wire \fsm[3]_i_4__0_n_0 ; + wire \fsm[3]_i_6__0_n_0 ; + wire \fsm[4]_i_2__0_n_0 ; + wire \fsm[4]_i_3__0_n_0 ; + wire \fsm_reg_n_0_[0] ; + wire \fsm_reg_n_0_[1] ; + wire \fsm_reg_n_0_[2] ; + wire \fsm_reg_n_0_[3] ; + wire \fsm_reg_n_0_[4] ; + wire gen3_exit; + wire gen3_exit_i_1__0_n_0; + wire gen3_exit_i_2__0_n_0; + wire gen3_i_1__0_n_0; + wire gen3_i_2__0_n_0; + wire gen3_i_3__0_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire mmcm_lock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire mmcm_lock_reg2; + wire out; + wire [3:0]p_0_in__0; + wire pclk_sel_i_1__0_n_0; + wire pclk_sel_i_2__0_n_0; + wire phystatus; + wire phystatus_i_1__0_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire phystatus_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire phystatus_reg2; + wire pipe_mmcm_lock_in; + wire pipe_pclk_in; + wire [0:0]pipe_pclk_sel_out; + wire pll_lock; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire qplllock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire qplllock_reg2; + wire qpllpd; + wire qpllpd_i_1__1_n_0; + wire qpllreset; + wire qpllreset_i_1__1_n_0; + wire rate_cpllpd_1; + wire rate_cpllreset_1; + wire rate_gen3_1; + wire rate_gen3_2; + wire rate_gen3_3; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rate_in_reg1; + wire [0:0]\rate_in_reg1_reg[0]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rate_in_reg2; + wire \rate_out[0]_i_1__0_n_0 ; + wire \rate_out[0]_i_2__0_n_0 ; + wire rate_txpmareset_1; + wire ratedone; + wire ratedone_i_1__0_n_0; + wire ratedone_i_2__0_n_0; + wire ratedone_i_3__0_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire resetovrd_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire resetovrd_done_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rst_idle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rst_idle_reg2; + wire rxchbonden_1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxpmaresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxpmaresetdone_reg2; + wire rxratedone; + wire rxratedone_i_1__0_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxratedone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxratedone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxresetdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsync_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsync_done_reg2; + wire \sysclksel[0]_i_1__0_n_0 ; + wire \sysclksel[0]_i_2__0_n_0 ; + wire \txdata_wait_cnt[3]_i_2__0_n_0 ; + wire \txdata_wait_cnt[3]_i_3__0_n_0 ; + wire [3:0]txdata_wait_cnt_reg; + wire txpmareset0; + wire txpmareset_i_1__0_n_0; + wire txpmareset_i_2__0_n_0; + wire txratedone; + wire txratedone_i_1__0_n_0; + wire txratedone_i_2__0_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txratedone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txratedone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txresetdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsync_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsync_done_reg2; + wire user_active_lane_1; + + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE cplllock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(QRST_CPLLLOCK), + .Q(cplllock_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE cplllock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(cplllock_reg1), + .Q(cplllock_reg2), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0400FFFF04000000)) + cpllpd_i_1__0 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(rate_in_reg2[0]), + .I3(rate_in_reg2[1]), + .I4(qpllpd), + .I5(rate_cpllpd_1), + .O(cpllpd_i_1__0_n_0)); + (* SOFT_HLUTNM = "soft_lutpair111" *) + LUT5 #( + .INIT(32'h80000900)) + cpllpd_i_2__0 + (.I0(\fsm_reg_n_0_[4] ), + .I1(\fsm_reg_n_0_[3] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(\fsm_reg_n_0_[2] ), + .O(qpllpd)); + FDRE #( + .INIT(1'b0)) + cpllpd_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(cpllpd_i_1__0_n_0), + .Q(rate_cpllpd_1), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0400FFFF04000000)) + cpllreset_i_1__1 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(rate_in_reg2[0]), + .I3(rate_in_reg2[1]), + .I4(qpllreset), + .I5(rate_cpllreset_1), + .O(cpllreset_i_1__1_n_0)); + (* SOFT_HLUTNM = "soft_lutpair112" *) + LUT5 #( + .INIT(32'h80001004)) + cpllreset_i_2__1 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[3] ), + .I3(\fsm_reg_n_0_[4] ), + .I4(\fsm_reg_n_0_[0] ), + .O(qpllreset)); + FDRE #( + .INIT(1'b0)) + cpllreset_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(cpllreset_i_1__1_n_0), + .Q(rate_cpllreset_1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE drp_done_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RATE_DRP_DONE), + .Q(drp_done_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE drp_done_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(drp_done_reg1), + .Q(drp_done_reg2), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair115" *) + LUT5 #( + .INIT(32'h08420100)) + drp_start_i_1__0 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[4] ), + .I3(\fsm_reg_n_0_[2] ), + .I4(\fsm_reg_n_0_[0] ), + .O(drp_start_i_1__0_n_0)); + FDRE #( + .INIT(1'b0)) + drp_start_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(drp_start_i_1__0_n_0), + .Q(RATE_DRP_START), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair116" *) + LUT5 #( + .INIT(32'h20100014)) + drp_x16_i_1__0 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[0] ), + .O(drp_x16_i_1__0_n_0)); + FDRE #( + .INIT(1'b0)) + drp_x16_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(drp_x16_i_1__0_n_0), + .Q(RATE_DRP_X16), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair117" *) + LUT5 #( + .INIT(32'h20080074)) + drp_x16x20_mode_i_1__0 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[3] ), + .I4(\fsm_reg_n_0_[1] ), + .O(drp_x16x20_mode_i_1__0_n_0)); + FDRE #( + .INIT(1'b0)) + drp_x16x20_mode_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(drp_x16x20_mode_i_1__0_n_0), + .Q(RATE_DRP_X16X20_MODE), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0901595100000000)) + \fsm[0]_i_10__0 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(rxsync_done_reg2), + .I4(txsync_done_reg2), + .I5(\fsm_reg_n_0_[3] ), + .O(\fsm[0]_i_10__0_n_0 )); + LUT6 #( + .INIT(64'h1101111101000110)) + \fsm[0]_i_11__0 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[3] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(rxpmaresetdone_reg2), + .I5(drp_done_reg2), + .O(\fsm[0]_i_11__0_n_0 )); + LUT5 #( + .INIT(32'h20202320)) + \fsm[0]_i_12__0 + (.I0(drp_done_reg2), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(mmcm_lock_reg2), + .I4(rxpmaresetdone_reg2), + .O(\fsm[0]_i_12__0_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair110" *) + LUT5 #( + .INIT(32'hFFFF3210)) + \fsm[0]_i_1__2 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm[0]_i_2__2_n_0 ), + .I3(\fsm[0]_i_3__0_n_0 ), + .I4(\fsm[0]_i_4__0_n_0 ), + .O(fsm[0])); + LUT6 #( + .INIT(64'h0F0F3F3F47444744)) + \fsm[0]_i_2__2 + (.I0(drp_done_reg2), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm[0]_i_5__0_n_0 ), + .I4(pll_lock), + .I5(\fsm_reg_n_0_[1] ), + .O(\fsm[0]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'hF3F3AAAAFF00AAAA)) + \fsm[0]_i_3__0 + (.I0(\fsm[0]_i_7__0_n_0 ), + .I1(\fsm_reg_n_0_[0] ), + .I2(drp_done_reg2), + .I3(\fsm[0]_i_8__0_n_0 ), + .I4(\fsm_reg_n_0_[2] ), + .I5(\fsm_reg_n_0_[1] ), + .O(\fsm[0]_i_3__0_n_0 )); + LUT6 #( + .INIT(64'hFFFFFF4000000000)) + \fsm[0]_i_4__0 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm[0]_i_9__0_n_0 ), + .I3(\fsm[0]_i_10__0_n_0 ), + .I4(\fsm[0]_i_11__0_n_0 ), + .I5(\fsm_reg_n_0_[4] ), + .O(\fsm[0]_i_4__0_n_0 )); + LUT4 #( + .INIT(16'h6FF6)) + \fsm[0]_i_5__0 + (.I0(rate_in_reg2[1]), + .I1(rate_in_reg1[1]), + .I2(rate_in_reg2[0]), + .I3(rate_in_reg1[0]), + .O(\fsm[0]_i_5__0_n_0 )); + LUT4 #( + .INIT(16'hFB08)) + \fsm[0]_i_6__0 + (.I0(qplllock_reg2), + .I1(rate_in_reg2[1]), + .I2(rate_in_reg2[0]), + .I3(cplllock_reg2), + .O(pll_lock)); + LUT6 #( + .INIT(64'hAAAAAAAAEAAAAAAA)) + \fsm[0]_i_7__0 + (.I0(\fsm[0]_i_12__0_n_0 ), + .I1(pll_lock), + .I2(rst_idle_reg2), + .I3(drp_done_reg2), + .I4(\fsm_reg_n_0_[1] ), + .I5(\fsm_reg_n_0_[0] ), + .O(\fsm[0]_i_7__0_n_0 )); + LUT6 #( + .INIT(64'hFFFF5D5500005D55)) + \fsm[0]_i_8__0 + (.I0(user_active_lane_1), + .I1(txresetdone_reg2), + .I2(phystatus_reg2), + .I3(rxresetdone_reg2), + .I4(\fsm_reg_n_0_[0] ), + .I5(\fsm[1]_i_7__0_n_0 ), + .O(\fsm[0]_i_8__0_n_0 )); + LUT5 #( + .INIT(32'h33330FAA)) + \fsm[0]_i_9__0 + (.I0(drp_done_reg2), + .I1(resetovrd_done_reg2), + .I2(fsm1), + .I3(\fsm_reg_n_0_[0] ), + .I4(\fsm_reg_n_0_[1] ), + .O(\fsm[0]_i_9__0_n_0 )); + LUT6 #( + .INIT(64'hFFE4FFE4FFE400E4)) + \fsm[1]_i_1__2 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm[1]_i_2__1_n_0 ), + .I2(\fsm[1]_i_3__0_n_0 ), + .I3(\fsm_reg_n_0_[4] ), + .I4(\fsm[1]_i_4__0_n_0 ), + .I5(\fsm[1]_i_5__0_n_0 ), + .O(fsm[1])); + LUT5 #( + .INIT(32'h3388F0CC)) + \fsm[1]_i_2__1 + (.I0(drp_done_reg2), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm[1]_i_6__0_n_0 ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[2] ), + .O(\fsm[1]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'hCC5500000033F000)) + \fsm[1]_i_3__0 + (.I0(\fsm[1]_i_7__0_n_0 ), + .I1(drp_done_reg2), + .I2(\fsm[1]_i_8__0_n_0 ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[0] ), + .I5(\fsm_reg_n_0_[2] ), + .O(\fsm[1]_i_3__0_n_0 )); + LUT6 #( + .INIT(64'h000000005FCF0000)) + \fsm[1]_i_4__0 + (.I0(resetovrd_done_reg2), + .I1(drp_done_reg2), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .I4(\fsm_reg_n_0_[1] ), + .I5(\fsm_reg_n_0_[3] ), + .O(\fsm[1]_i_4__0_n_0 )); + LUT6 #( + .INIT(64'h143C547C00000000)) + \fsm[1]_i_5__0 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(rxsync_done_reg2), + .I4(txsync_done_reg2), + .I5(\fsm_reg_n_0_[3] ), + .O(\fsm[1]_i_5__0_n_0 )); + LUT6 #( + .INIT(64'h34F7FFFFFFFFFFFF)) + \fsm[1]_i_6__0 + (.I0(qplllock_reg2), + .I1(rate_in_reg2[1]), + .I2(rate_in_reg2[0]), + .I3(cplllock_reg2), + .I4(rst_idle_reg2), + .I5(\fsm_reg_n_0_[0] ), + .O(\fsm[1]_i_6__0_n_0 )); + LUT4 #( + .INIT(16'h7FFF)) + \fsm[1]_i_7__0 + (.I0(txdata_wait_cnt_reg[3]), + .I1(txdata_wait_cnt_reg[1]), + .I2(txdata_wait_cnt_reg[0]), + .I3(txdata_wait_cnt_reg[2]), + .O(\fsm[1]_i_7__0_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFF04F7FFFF)) + \fsm[1]_i_8__0 + (.I0(qplllock_reg2), + .I1(rate_in_reg2[1]), + .I2(rate_in_reg2[0]), + .I3(cplllock_reg2), + .I4(drp_done_reg2), + .I5(rst_idle_reg2), + .O(\fsm[1]_i_8__0_n_0 )); + LUT6 #( + .INIT(64'hEAFFAAAAAAAAAAAA)) + \fsm[2]_i_2__0 + (.I0(\fsm[2]_i_4__0_n_0 ), + .I1(drp_done_reg2), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[3] ), + .I5(\fsm_reg_n_0_[2] ), + .O(\fsm[2]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'hAFBAAAAAAAAAAAAA)) + \fsm[2]_i_3__0 + (.I0(\fsm[2]_i_5__0_n_0 ), + .I1(rxsync_done_reg2), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(\fsm_reg_n_0_[3] ), + .I5(\fsm_reg_n_0_[2] ), + .O(\fsm[2]_i_3__0_n_0 )); + LUT6 #( + .INIT(64'h00FA554455005544)) + \fsm[2]_i_4__0 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm[3]_i_6__0_n_0 ), + .I2(pll_lock), + .I3(\fsm_reg_n_0_[2] ), + .I4(\fsm_reg_n_0_[1] ), + .I5(\fsm_reg_n_0_[0] ), + .O(\fsm[2]_i_4__0_n_0 )); + LUT6 #( + .INIT(64'h2000FFFF20000000)) + \fsm[2]_i_5__0 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(txsync_done_reg2), + .I4(\fsm_reg_n_0_[3] ), + .I5(\fsm[2]_i_6__0_n_0 ), + .O(\fsm[2]_i_5__0_n_0 )); + LUT6 #( + .INIT(64'h1CDC3C3C1CDCFCFC)) + \fsm[2]_i_6__0 + (.I0(drp_done_reg2), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(resetovrd_done_reg2), + .I4(\fsm_reg_n_0_[1] ), + .I5(fsm1), + .O(\fsm[2]_i_6__0_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFB0803080)) + \fsm[3]_i_2__0 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[3] ), + .I4(drp_done_reg2), + .I5(\fsm[3]_i_4__0_n_0 ), + .O(\fsm[3]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'hFFFFF8880000F888)) + \fsm[3]_i_3__0 + (.I0(\txdata_wait_cnt[3]_i_2__0_n_0 ), + .I1(fsm1), + .I2(resetovrd_done_reg2), + .I3(\sysclksel[0]_i_2__0_n_0 ), + .I4(\fsm_reg_n_0_[3] ), + .I5(\fsm[4]_i_2__0_n_0 ), + .O(\fsm[3]_i_3__0_n_0 )); + LUT6 #( + .INIT(64'h00000000EEFF00F0)) + \fsm[3]_i_4__0 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm[1]_i_8__0_n_0 ), + .I2(\fsm[3]_i_6__0_n_0 ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[3] ), + .I5(\fsm_reg_n_0_[2] ), + .O(\fsm[3]_i_4__0_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFF8F8FFF8)) + \fsm[3]_i_5__0 + (.I0(out), + .I1(\fsm[0]_i_9__0_0 ), + .I2(ratedone), + .I3(rate_in_reg2[1]), + .I4(rate_in_reg2[0]), + .I5(gen3_exit), + .O(fsm1)); + LUT5 #( + .INIT(32'h00504414)) + \fsm[3]_i_6__0 + (.I0(\fsm_reg_n_0_[0] ), + .I1(rate_in_reg1[0]), + .I2(rate_in_reg2[0]), + .I3(rate_in_reg1[1]), + .I4(rate_in_reg2[1]), + .O(\fsm[3]_i_6__0_n_0 )); + LUT6 #( + .INIT(64'hC5F0CFF0C0F0C0F0)) + \fsm[4]_i_1__1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm[4]_i_2__0_n_0 ), + .I2(\fsm_reg_n_0_[4] ), + .I3(\fsm_reg_n_0_[3] ), + .I4(drp_done_reg2), + .I5(\fsm[4]_i_3__0_n_0 ), + .O(fsm[4])); + LUT4 #( + .INIT(16'h26FF)) + \fsm[4]_i_2__0 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(rxsync_done_reg2), + .I3(\fsm_reg_n_0_[2] ), + .O(\fsm[4]_i_2__0_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair120" *) + LUT2 #( + .INIT(4'h8)) + \fsm[4]_i_3__0 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[2] ), + .O(\fsm[4]_i_3__0_n_0 )); + FDSE #( + .INIT(1'b0)) + \fsm_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm[0]), + .Q(\fsm_reg_n_0_[0] ), + .S(RST_CPLLRESET)); + FDSE #( + .INIT(1'b0)) + \fsm_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm[1]), + .Q(\fsm_reg_n_0_[1] ), + .S(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \fsm_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm[2]), + .Q(\fsm_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + MUXF7 \fsm_reg[2]_i_1__0 + (.I0(\fsm[2]_i_2__0_n_0 ), + .I1(\fsm[2]_i_3__0_n_0 ), + .O(fsm[2]), + .S(\fsm_reg_n_0_[4] )); + FDRE #( + .INIT(1'b0)) + \fsm_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm[3]), + .Q(\fsm_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + MUXF7 \fsm_reg[3]_i_1__0 + (.I0(\fsm[3]_i_2__0_n_0 ), + .I1(\fsm[3]_i_3__0_n_0 ), + .O(fsm[3]), + .S(\fsm_reg_n_0_[4] )); + FDRE #( + .INIT(1'b0)) + \fsm_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm[4]), + .Q(\fsm_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h04FF0400)) + gen3_exit_i_1__0 + (.I0(rate_in_reg2[0]), + .I1(rate_in_reg2[1]), + .I2(\fsm_reg_n_0_[4] ), + .I3(gen3_exit_i_2__0_n_0), + .I4(gen3_exit), + .O(gen3_exit_i_1__0_n_0)); + LUT6 #( + .INIT(64'h8000000180000000)) + gen3_exit_i_2__0 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[3] ), + .I4(\fsm_reg_n_0_[4] ), + .I5(\fsm[0]_i_5__0_n_0 ), + .O(gen3_exit_i_2__0_n_0)); + FDRE #( + .INIT(1'b0)) + gen3_exit_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gen3_exit_i_1__0_n_0), + .Q(gen3_exit), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h3FFFFFFB00000008)) + gen3_i_1__0 + (.I0(gen3_i_2__0_n_0), + .I1(gen3_i_3__0_n_0), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[4] ), + .I5(rate_gen3_1), + .O(gen3_i_1__0_n_0)); + LUT2 #( + .INIT(4'h2)) + gen3_i_2__0 + (.I0(rate_in_reg2[1]), + .I1(rate_in_reg2[0]), + .O(gen3_i_2__0_n_0)); + LUT2 #( + .INIT(4'h8)) + gen3_i_3__0 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[0] ), + .O(gen3_i_3__0_n_0)); + FDRE #( + .INIT(1'b0)) + gen3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gen3_i_1__0_n_0), + .Q(rate_gen3_1), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair118" *) + LUT4 #( + .INIT(16'h8000)) + gen3_reg1_i_1 + (.I0(rate_gen3_1), + .I1(USER_RATE_GEN3), + .I2(rate_gen3_3), + .I3(rate_gen3_2), + .O(QPLL_DRP_GEN3)); + (* SOFT_HLUTNM = "soft_lutpair118" *) + LUT1 #( + .INIT(2'h1)) + \gtx_channel.gtxe2_channel_i_i_5__0 + (.I0(rate_gen3_1), + .O(rxchbonden_1)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE mmcm_lock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_mmcm_lock_in), + .Q(mmcm_lock_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE mmcm_lock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(mmcm_lock_reg1), + .Q(mmcm_lock_reg2), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h14FF1400)) + pclk_sel_i_1__0 + (.I0(\fsm_reg_n_0_[4] ), + .I1(rate_in_reg2[1]), + .I2(rate_in_reg2[0]), + .I3(pclk_sel_i_2__0_n_0), + .I4(pipe_pclk_sel_out), + .O(pclk_sel_i_1__0_n_0)); + (* SOFT_HLUTNM = "soft_lutpair111" *) + LUT5 #( + .INIT(32'h80022000)) + pclk_sel_i_2__0 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[0] ), + .O(pclk_sel_i_2__0_n_0)); + FDRE #( + .INIT(1'b0)) + pclk_sel_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pclk_sel_i_1__0_n_0), + .Q(pipe_pclk_sel_out), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0800080008000000)) + phystatus_i_1__0 + (.I0(\fsm_reg_n_0_[4] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(txratedone_i_2__0_n_0), + .I3(\fsm_reg_n_0_[0] ), + .I4(phystatus_reg2), + .I5(phystatus), + .O(phystatus_i_1__0_n_0)); + FDRE #( + .INIT(1'b0)) + phystatus_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(phystatus_i_1__0_n_0), + .Q(phystatus), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE phystatus_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RATE_PHYSTATUS), + .Q(phystatus_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE phystatus_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(phystatus_reg1), + .Q(phystatus_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE qplllock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RATE_QPLLLOCK), + .Q(qplllock_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE qplllock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qplllock_reg1), + .Q(qplllock_reg2), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h4044FFFF40440000)) + qpllpd_i_1__1 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(rate_in_reg2[0]), + .I3(rate_in_reg2[1]), + .I4(qpllpd), + .I5(QRST_QPLLPD_IN), + .O(qpllpd_i_1__1_n_0)); + FDRE #( + .INIT(1'b0)) + qpllpd_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qpllpd_i_1__1_n_0), + .Q(QRST_QPLLPD_IN), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h4044FFFF40440000)) + qpllreset_i_1__1 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(rate_in_reg2[0]), + .I3(rate_in_reg2[1]), + .I4(qpllreset), + .I5(QRST_QPLLRESET_IN), + .O(qpllreset_i_1__1_n_0)); + FDRE #( + .INIT(1'b0)) + qpllreset_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qpllreset_i_1__1_n_0), + .Q(QRST_QPLLRESET_IN), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair115" *) + LUT5 #( + .INIT(32'h00000080)) + rate_done_reg1_i_1__0 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(\fsm_reg_n_0_[1] ), + .O(USER_RATE_DONE)); + (* SOFT_HLUTNM = "soft_lutpair117" *) + LUT5 #( + .INIT(32'h00000001)) + \rate_idle_reg1[1]_i_1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[4] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[3] ), + .O(SYNC_RATE_IDLE)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_in_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rate_in_reg1_reg[0]_0 ), + .Q(rate_in_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_in_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rate_in_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_in_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rate_in_reg1[0]), + .Q(rate_in_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_in_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rate_in_reg1[1]), + .Q(rate_in_reg2[1]), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0444FFFF04440000)) + \rate_out[0]_i_1__0 + (.I0(rate_in_reg2[1]), + .I1(rate_in_reg2[0]), + .I2(\fsm_reg_n_0_[4] ), + .I3(\fsm_reg_n_0_[3] ), + .I4(\rate_out[0]_i_2__0_n_0 ), + .I5(RXRATE), + .O(\rate_out[0]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'h8002020080000200)) + \rate_out[0]_i_2__0 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[4] ), + .I4(\fsm_reg_n_0_[3] ), + .I5(txpmareset0), + .O(\rate_out[0]_i_2__0_n_0 )); + LUT3 #( + .INIT(8'hBA)) + \rate_out[0]_i_3__0 + (.I0(gen3_exit), + .I1(rate_in_reg2[0]), + .I2(rate_in_reg2[1]), + .O(txpmareset0)); + FDRE #( + .INIT(1'b0)) + \rate_out_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rate_out[0]_i_1__0_n_0 ), + .Q(RXRATE), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair114" *) + LUT5 #( + .INIT(32'h08800000)) + rate_rxsync_reg1_i_1__0 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(\fsm_reg_n_0_[2] ), + .O(USER_RATE_RXSYNC)); + LUT6 #( + .INIT(64'hA3333333A0000000)) + ratedone_i_1__0 + (.I0(ratedone_i_2__0_n_0), + .I1(ratedone_i_3__0_n_0), + .I2(rxratedone), + .I3(phystatus), + .I4(txratedone), + .I5(ratedone), + .O(ratedone_i_1__0_n_0)); + (* SOFT_HLUTNM = "soft_lutpair113" *) + LUT5 #( + .INIT(32'h00080000)) + ratedone_i_2__0 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm_reg_n_0_[3] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[0] ), + .O(ratedone_i_2__0_n_0)); + (* SOFT_HLUTNM = "soft_lutpair113" *) + LUT5 #( + .INIT(32'hFDFFFFFF)) + ratedone_i_3__0 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[3] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[2] ), + .I4(\fsm_reg_n_0_[4] ), + .O(ratedone_i_3__0_n_0)); + FDRE #( + .INIT(1'b0)) + ratedone_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(ratedone_i_1__0_n_0), + .Q(ratedone), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE resetovrd_done_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b1), + .Q(resetovrd_done_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE resetovrd_done_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(resetovrd_done_reg1), + .Q(resetovrd_done_reg2), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair116" *) + LUT5 #( + .INIT(32'h00000080)) + resetovrd_start_reg1_i_1__0 + (.I0(\fsm_reg_n_0_[4] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(\fsm_reg_n_0_[3] ), + .O(USER_RESETOVRD_START)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rst_idle_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RST_IDLE), + .Q(rst_idle_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rst_idle_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rst_idle_reg1), + .Q(rst_idle_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxpmaresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxpmaresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxpmaresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxpmaresetdone_reg1), + .Q(rxpmaresetdone_reg2), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0800080008000000)) + rxratedone_i_1__0 + (.I0(\fsm_reg_n_0_[4] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(txratedone_i_2__0_n_0), + .I3(\fsm_reg_n_0_[0] ), + .I4(rxratedone_reg2), + .I5(rxratedone), + .O(rxratedone_i_1__0_n_0)); + FDRE #( + .INIT(1'b0)) + rxratedone_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxratedone_i_1__0_n_0), + .Q(rxratedone), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxratedone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RATE_RXRATEDONE), + .Q(rxratedone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxratedone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxratedone_reg1), + .Q(rxratedone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_RXRESETDONE), + .Q(rxresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxresetdone_reg1), + .Q(rxresetdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsync_done_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxsync_done_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsync_done_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxsync_done_reg1), + .Q(rxsync_done_reg2), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair114" *) + LUT5 #( + .INIT(32'h08000000)) + rxsync_start_reg1_i_1__0 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[4] ), + .I4(\fsm_reg_n_0_[3] ), + .O(SYNC_RXSYNC_START)); + LUT6 #( + .INIT(64'h0FFFFF4F00000040)) + \sysclksel[0]_i_1__0 + (.I0(rate_in_reg2[0]), + .I1(rate_in_reg2[1]), + .I2(\sysclksel[0]_i_2__0_n_0 ), + .I3(\fsm_reg_n_0_[3] ), + .I4(\fsm_reg_n_0_[4] ), + .I5(RXSYSCLKSEL), + .O(\sysclksel[0]_i_1__0_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair119" *) + LUT3 #( + .INIT(8'h80)) + \sysclksel[0]_i_2__0 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .O(\sysclksel[0]_i_2__0_n_0 )); + FDRE #( + .INIT(1'b0)) + \sysclksel_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\sysclksel[0]_i_1__0_n_0 ), + .Q(RXSYSCLKSEL), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'hB333000000000000)) + \txdata_wait_cnt[0]_i_1__0 + (.I0(txdata_wait_cnt_reg[1]), + .I1(txdata_wait_cnt_reg[0]), + .I2(txdata_wait_cnt_reg[2]), + .I3(txdata_wait_cnt_reg[3]), + .I4(\txdata_wait_cnt[3]_i_2__0_n_0 ), + .I5(\txdata_wait_cnt[3]_i_3__0_n_0 ), + .O(p_0_in__0[0])); + LUT6 #( + .INIT(64'hE666000000000000)) + \txdata_wait_cnt[1]_i_1__0 + (.I0(txdata_wait_cnt_reg[1]), + .I1(txdata_wait_cnt_reg[0]), + .I2(txdata_wait_cnt_reg[2]), + .I3(txdata_wait_cnt_reg[3]), + .I4(\txdata_wait_cnt[3]_i_2__0_n_0 ), + .I5(\txdata_wait_cnt[3]_i_3__0_n_0 ), + .O(p_0_in__0[1])); + LUT6 #( + .INIT(64'hF878000000000000)) + \txdata_wait_cnt[2]_i_1__0 + (.I0(txdata_wait_cnt_reg[1]), + .I1(txdata_wait_cnt_reg[0]), + .I2(txdata_wait_cnt_reg[2]), + .I3(txdata_wait_cnt_reg[3]), + .I4(\txdata_wait_cnt[3]_i_2__0_n_0 ), + .I5(\txdata_wait_cnt[3]_i_3__0_n_0 ), + .O(p_0_in__0[2])); + LUT6 #( + .INIT(64'hFF80000000000000)) + \txdata_wait_cnt[3]_i_1__0 + (.I0(txdata_wait_cnt_reg[1]), + .I1(txdata_wait_cnt_reg[0]), + .I2(txdata_wait_cnt_reg[2]), + .I3(txdata_wait_cnt_reg[3]), + .I4(\txdata_wait_cnt[3]_i_2__0_n_0 ), + .I5(\txdata_wait_cnt[3]_i_3__0_n_0 ), + .O(p_0_in__0[3])); + (* SOFT_HLUTNM = "soft_lutpair119" *) + LUT3 #( + .INIT(8'h40)) + \txdata_wait_cnt[3]_i_2__0 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[2] ), + .O(\txdata_wait_cnt[3]_i_2__0_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair110" *) + LUT2 #( + .INIT(4'h2)) + \txdata_wait_cnt[3]_i_3__0 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[4] ), + .O(\txdata_wait_cnt[3]_i_3__0_n_0 )); + FDRE #( + .INIT(1'b0)) + \txdata_wait_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[0]), + .Q(txdata_wait_cnt_reg[0]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txdata_wait_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[1]), + .Q(txdata_wait_cnt_reg[1]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txdata_wait_cnt_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[2]), + .Q(txdata_wait_cnt_reg[2]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txdata_wait_cnt_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[3]), + .Q(txdata_wait_cnt_reg[3]), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h00F2FFFF00F20000)) + txpmareset_i_1__0 + (.I0(rate_in_reg2[1]), + .I1(rate_in_reg2[0]), + .I2(gen3_exit), + .I3(\fsm_reg_n_0_[3] ), + .I4(txpmareset_i_2__0_n_0), + .I5(rate_txpmareset_1), + .O(txpmareset_i_1__0_n_0)); + (* SOFT_HLUTNM = "soft_lutpair112" *) + LUT5 #( + .INIT(32'h80004200)) + txpmareset_i_2__0 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[3] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[4] ), + .O(txpmareset_i_2__0_n_0)); + FDRE #( + .INIT(1'b0)) + txpmareset_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txpmareset_i_1__0_n_0), + .Q(rate_txpmareset_1), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0800080008000000)) + txratedone_i_1__0 + (.I0(\fsm_reg_n_0_[4] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(txratedone_i_2__0_n_0), + .I3(\fsm_reg_n_0_[0] ), + .I4(txratedone_reg2), + .I5(txratedone), + .O(txratedone_i_1__0_n_0)); + (* SOFT_HLUTNM = "soft_lutpair120" *) + LUT2 #( + .INIT(4'hE)) + txratedone_i_2__0 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[1] ), + .O(txratedone_i_2__0_n_0)); + FDRE #( + .INIT(1'b0)) + txratedone_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txratedone_i_1__0_n_0), + .Q(txratedone), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txratedone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RATE_TXRATEDONE), + .Q(txratedone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txratedone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txratedone_reg1), + .Q(txratedone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_TXRESETDONE), + .Q(txresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txresetdone_reg1), + .Q(txresetdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsync_done_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RATE_TXSYNC_DONE), + .Q(txsync_done_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsync_done_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txsync_done_reg1), + .Q(txsync_done_reg2), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'hFFFFFFFF00004000)) + txsync_start_reg1_i_1__0 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[4] ), + .I3(\fsm_reg_n_0_[3] ), + .I4(\fsm_reg_n_0_[2] ), + .I5(RST_TXSYNC_START), + .O(SYNC_TXSYNC_START)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pipe_rate" *) +module pcie_7x_0_pcie_7x_0_pipe_rate_46 + (SYNC_TXSYNC_START, + rxchbonden_2, + rate_gen3_2, + RATE_DRP_START, + RATE_DRP_X16X20_MODE, + RATE_DRP_X16, + USER_RATE_RXSYNC, + SYNC_RXSYNC_START, + USER_RATE_DONE, + USER_RESETOVRD_START, + SYNC_RATE_IDLE, + rate_txpmareset_2, + RXSYSCLKSEL, + pipe_pclk_sel_out, + RXRATE, + QRST_QPLLPD_IN, + rate_cpllpd_2, + QRST_QPLLRESET_IN, + rate_cpllreset_2, + RST_TXSYNC_START, + RST_CPLLRESET, + pipe_pclk_in, + \rate_in_reg1_reg[0]_0 , + RST_IDLE, + QRST_CPLLLOCK, + RATE_QPLLLOCK, + RATE_DRP_DONE, + pipe_mmcm_lock_in, + RATE_PHYSTATUS, + USER_TXRESETDONE, + USER_RXRESETDONE, + RATE_TXRATEDONE, + RATE_RXRATEDONE, + RATE_TXSYNC_DONE, + user_active_lane_2, + out, + \fsm[0]_i_9__1_0 ); + output SYNC_TXSYNC_START; + output rxchbonden_2; + output rate_gen3_2; + output RATE_DRP_START; + output RATE_DRP_X16X20_MODE; + output RATE_DRP_X16; + output USER_RATE_RXSYNC; + output SYNC_RXSYNC_START; + output USER_RATE_DONE; + output USER_RESETOVRD_START; + output SYNC_RATE_IDLE; + output rate_txpmareset_2; + output [0:0]RXSYSCLKSEL; + output [0:0]pipe_pclk_sel_out; + output [0:0]RXRATE; + output [0:0]QRST_QPLLPD_IN; + output rate_cpllpd_2; + output [0:0]QRST_QPLLRESET_IN; + output rate_cpllreset_2; + input RST_TXSYNC_START; + input RST_CPLLRESET; + input pipe_pclk_in; + input [0:0]\rate_in_reg1_reg[0]_0 ; + input RST_IDLE; + input [0:0]QRST_CPLLLOCK; + input RATE_QPLLLOCK; + input RATE_DRP_DONE; + input pipe_mmcm_lock_in; + input RATE_PHYSTATUS; + input USER_TXRESETDONE; + input USER_RXRESETDONE; + input RATE_TXRATEDONE; + input RATE_RXRATEDONE; + input RATE_TXSYNC_DONE; + input user_active_lane_2; + input out; + input \fsm[0]_i_9__1_0 ; + + wire [0:0]QRST_CPLLLOCK; + wire [0:0]QRST_QPLLPD_IN; + wire [0:0]QRST_QPLLRESET_IN; + wire RATE_DRP_DONE; + wire RATE_DRP_START; + wire RATE_DRP_X16; + wire RATE_DRP_X16X20_MODE; + wire RATE_PHYSTATUS; + wire RATE_QPLLLOCK; + wire RATE_RXRATEDONE; + wire RATE_TXRATEDONE; + wire RATE_TXSYNC_DONE; + wire RST_CPLLRESET; + wire RST_IDLE; + wire RST_TXSYNC_START; + wire [0:0]RXRATE; + wire [0:0]RXSYSCLKSEL; + wire SYNC_RATE_IDLE; + wire SYNC_RXSYNC_START; + wire SYNC_TXSYNC_START; + wire USER_RATE_DONE; + wire USER_RATE_RXSYNC; + wire USER_RESETOVRD_START; + wire USER_RXRESETDONE; + wire USER_TXRESETDONE; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire cplllock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire cplllock_reg2; + wire cpllpd_i_1__1_n_0; + wire cpllreset_i_1__2_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire drp_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire drp_done_reg2; + wire drp_start_i_1__1_n_0; + wire drp_x16_i_1__1_n_0; + wire drp_x16x20_mode_i_1__1_n_0; + wire [4:0]fsm; + wire fsm1; + wire \fsm[0]_i_10__1_n_0 ; + wire \fsm[0]_i_11__1_n_0 ; + wire \fsm[0]_i_12__1_n_0 ; + wire \fsm[0]_i_2__4_n_0 ; + wire \fsm[0]_i_3__1_n_0 ; + wire \fsm[0]_i_4__1_n_0 ; + wire \fsm[0]_i_5__1_n_0 ; + wire \fsm[0]_i_7__1_n_0 ; + wire \fsm[0]_i_8__1_n_0 ; + wire \fsm[0]_i_9__1_0 ; + wire \fsm[0]_i_9__1_n_0 ; + wire \fsm[1]_i_2__2_n_0 ; + wire \fsm[1]_i_3__1_n_0 ; + wire \fsm[1]_i_4__1_n_0 ; + wire \fsm[1]_i_5__1_n_0 ; + wire \fsm[1]_i_6__1_n_0 ; + wire \fsm[1]_i_7__1_n_0 ; + wire \fsm[1]_i_8__1_n_0 ; + wire \fsm[2]_i_2__1_n_0 ; + wire \fsm[2]_i_3__1_n_0 ; + wire \fsm[2]_i_4__1_n_0 ; + wire \fsm[2]_i_5__1_n_0 ; + wire \fsm[2]_i_6__1_n_0 ; + wire \fsm[3]_i_2__1_n_0 ; + wire \fsm[3]_i_3__1_n_0 ; + wire \fsm[3]_i_4__1_n_0 ; + wire \fsm[3]_i_6__1_n_0 ; + wire \fsm[4]_i_2__1_n_0 ; + wire \fsm[4]_i_3__1_n_0 ; + wire \fsm_reg_n_0_[0] ; + wire \fsm_reg_n_0_[1] ; + wire \fsm_reg_n_0_[2] ; + wire \fsm_reg_n_0_[3] ; + wire \fsm_reg_n_0_[4] ; + wire gen3_exit; + wire gen3_exit_i_1__1_n_0; + wire gen3_exit_i_2__1_n_0; + wire gen3_i_1__1_n_0; + wire gen3_i_2__1_n_0; + wire gen3_i_3__1_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire mmcm_lock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire mmcm_lock_reg2; + wire out; + wire [3:0]p_0_in__0; + wire pclk_sel_i_1__1_n_0; + wire pclk_sel_i_2__1_n_0; + wire phystatus; + wire phystatus_i_1__1_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire phystatus_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire phystatus_reg2; + wire pipe_mmcm_lock_in; + wire pipe_pclk_in; + wire [0:0]pipe_pclk_sel_out; + wire pll_lock; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire qplllock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire qplllock_reg2; + wire qpllpd; + wire qpllpd_i_1__2_n_0; + wire qpllreset; + wire qpllreset_i_1__2_n_0; + wire rate_cpllpd_2; + wire rate_cpllreset_2; + wire rate_gen3_2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rate_in_reg1; + wire [0:0]\rate_in_reg1_reg[0]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rate_in_reg2; + wire \rate_out[0]_i_1__1_n_0 ; + wire \rate_out[0]_i_2__1_n_0 ; + wire rate_txpmareset_2; + wire ratedone; + wire ratedone_i_1__1_n_0; + wire ratedone_i_2__1_n_0; + wire ratedone_i_3__1_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire resetovrd_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire resetovrd_done_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rst_idle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rst_idle_reg2; + wire rxchbonden_2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxpmaresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxpmaresetdone_reg2; + wire rxratedone; + wire rxratedone_i_1__1_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxratedone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxratedone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxresetdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsync_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsync_done_reg2; + wire \sysclksel[0]_i_1__1_n_0 ; + wire \sysclksel[0]_i_2__1_n_0 ; + wire \txdata_wait_cnt[3]_i_2__1_n_0 ; + wire \txdata_wait_cnt[3]_i_3__1_n_0 ; + wire [3:0]txdata_wait_cnt_reg; + wire txpmareset0; + wire txpmareset_i_1__1_n_0; + wire txpmareset_i_2__1_n_0; + wire txratedone; + wire txratedone_i_1__1_n_0; + wire txratedone_i_2__1_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txratedone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txratedone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txresetdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsync_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsync_done_reg2; + wire user_active_lane_2; + + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE cplllock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(QRST_CPLLLOCK), + .Q(cplllock_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE cplllock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(cplllock_reg1), + .Q(cplllock_reg2), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0400FFFF04000000)) + cpllpd_i_1__1 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(rate_in_reg2[0]), + .I3(rate_in_reg2[1]), + .I4(qpllpd), + .I5(rate_cpllpd_2), + .O(cpllpd_i_1__1_n_0)); + (* SOFT_HLUTNM = "soft_lutpair153" *) + LUT5 #( + .INIT(32'h80000900)) + cpllpd_i_2__1 + (.I0(\fsm_reg_n_0_[4] ), + .I1(\fsm_reg_n_0_[3] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(\fsm_reg_n_0_[2] ), + .O(qpllpd)); + FDRE #( + .INIT(1'b0)) + cpllpd_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(cpllpd_i_1__1_n_0), + .Q(rate_cpllpd_2), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0400FFFF04000000)) + cpllreset_i_1__2 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(rate_in_reg2[0]), + .I3(rate_in_reg2[1]), + .I4(qpllreset), + .I5(rate_cpllreset_2), + .O(cpllreset_i_1__2_n_0)); + (* SOFT_HLUTNM = "soft_lutpair154" *) + LUT5 #( + .INIT(32'h80001004)) + cpllreset_i_2__2 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[3] ), + .I3(\fsm_reg_n_0_[4] ), + .I4(\fsm_reg_n_0_[0] ), + .O(qpllreset)); + FDRE #( + .INIT(1'b0)) + cpllreset_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(cpllreset_i_1__2_n_0), + .Q(rate_cpllreset_2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE drp_done_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RATE_DRP_DONE), + .Q(drp_done_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE drp_done_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(drp_done_reg1), + .Q(drp_done_reg2), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair157" *) + LUT5 #( + .INIT(32'h08420100)) + drp_start_i_1__1 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[4] ), + .I3(\fsm_reg_n_0_[2] ), + .I4(\fsm_reg_n_0_[0] ), + .O(drp_start_i_1__1_n_0)); + FDRE #( + .INIT(1'b0)) + drp_start_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(drp_start_i_1__1_n_0), + .Q(RATE_DRP_START), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair158" *) + LUT5 #( + .INIT(32'h20100014)) + drp_x16_i_1__1 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[0] ), + .O(drp_x16_i_1__1_n_0)); + FDRE #( + .INIT(1'b0)) + drp_x16_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(drp_x16_i_1__1_n_0), + .Q(RATE_DRP_X16), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair159" *) + LUT5 #( + .INIT(32'h20080074)) + drp_x16x20_mode_i_1__1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[3] ), + .I4(\fsm_reg_n_0_[1] ), + .O(drp_x16x20_mode_i_1__1_n_0)); + FDRE #( + .INIT(1'b0)) + drp_x16x20_mode_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(drp_x16x20_mode_i_1__1_n_0), + .Q(RATE_DRP_X16X20_MODE), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0901595100000000)) + \fsm[0]_i_10__1 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(rxsync_done_reg2), + .I4(txsync_done_reg2), + .I5(\fsm_reg_n_0_[3] ), + .O(\fsm[0]_i_10__1_n_0 )); + LUT6 #( + .INIT(64'h1101111101000110)) + \fsm[0]_i_11__1 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[3] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(rxpmaresetdone_reg2), + .I5(drp_done_reg2), + .O(\fsm[0]_i_11__1_n_0 )); + LUT5 #( + .INIT(32'h20202320)) + \fsm[0]_i_12__1 + (.I0(drp_done_reg2), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(mmcm_lock_reg2), + .I4(rxpmaresetdone_reg2), + .O(\fsm[0]_i_12__1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair152" *) + LUT5 #( + .INIT(32'hFFFF3210)) + \fsm[0]_i_1__4 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm[0]_i_2__4_n_0 ), + .I3(\fsm[0]_i_3__1_n_0 ), + .I4(\fsm[0]_i_4__1_n_0 ), + .O(fsm[0])); + LUT6 #( + .INIT(64'h0F0F3F3F47444744)) + \fsm[0]_i_2__4 + (.I0(drp_done_reg2), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm[0]_i_5__1_n_0 ), + .I4(pll_lock), + .I5(\fsm_reg_n_0_[1] ), + .O(\fsm[0]_i_2__4_n_0 )); + LUT6 #( + .INIT(64'hF3F3AAAAFF00AAAA)) + \fsm[0]_i_3__1 + (.I0(\fsm[0]_i_7__1_n_0 ), + .I1(\fsm_reg_n_0_[0] ), + .I2(drp_done_reg2), + .I3(\fsm[0]_i_8__1_n_0 ), + .I4(\fsm_reg_n_0_[2] ), + .I5(\fsm_reg_n_0_[1] ), + .O(\fsm[0]_i_3__1_n_0 )); + LUT6 #( + .INIT(64'hFFFFFF4000000000)) + \fsm[0]_i_4__1 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm[0]_i_9__1_n_0 ), + .I3(\fsm[0]_i_10__1_n_0 ), + .I4(\fsm[0]_i_11__1_n_0 ), + .I5(\fsm_reg_n_0_[4] ), + .O(\fsm[0]_i_4__1_n_0 )); + LUT4 #( + .INIT(16'h6FF6)) + \fsm[0]_i_5__1 + (.I0(rate_in_reg2[1]), + .I1(rate_in_reg1[1]), + .I2(rate_in_reg2[0]), + .I3(rate_in_reg1[0]), + .O(\fsm[0]_i_5__1_n_0 )); + LUT4 #( + .INIT(16'hFB08)) + \fsm[0]_i_6__1 + (.I0(qplllock_reg2), + .I1(rate_in_reg2[1]), + .I2(rate_in_reg2[0]), + .I3(cplllock_reg2), + .O(pll_lock)); + LUT6 #( + .INIT(64'hAAAAAAAAEAAAAAAA)) + \fsm[0]_i_7__1 + (.I0(\fsm[0]_i_12__1_n_0 ), + .I1(pll_lock), + .I2(rst_idle_reg2), + .I3(drp_done_reg2), + .I4(\fsm_reg_n_0_[1] ), + .I5(\fsm_reg_n_0_[0] ), + .O(\fsm[0]_i_7__1_n_0 )); + LUT6 #( + .INIT(64'hFFFF5D5500005D55)) + \fsm[0]_i_8__1 + (.I0(user_active_lane_2), + .I1(txresetdone_reg2), + .I2(phystatus_reg2), + .I3(rxresetdone_reg2), + .I4(\fsm_reg_n_0_[0] ), + .I5(\fsm[1]_i_7__1_n_0 ), + .O(\fsm[0]_i_8__1_n_0 )); + LUT5 #( + .INIT(32'h33330FAA)) + \fsm[0]_i_9__1 + (.I0(drp_done_reg2), + .I1(resetovrd_done_reg2), + .I2(fsm1), + .I3(\fsm_reg_n_0_[0] ), + .I4(\fsm_reg_n_0_[1] ), + .O(\fsm[0]_i_9__1_n_0 )); + LUT6 #( + .INIT(64'hFFE4FFE4FFE400E4)) + \fsm[1]_i_1__4 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm[1]_i_2__2_n_0 ), + .I2(\fsm[1]_i_3__1_n_0 ), + .I3(\fsm_reg_n_0_[4] ), + .I4(\fsm[1]_i_4__1_n_0 ), + .I5(\fsm[1]_i_5__1_n_0 ), + .O(fsm[1])); + LUT5 #( + .INIT(32'h3388F0CC)) + \fsm[1]_i_2__2 + (.I0(drp_done_reg2), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm[1]_i_6__1_n_0 ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[2] ), + .O(\fsm[1]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'hCC5500000033F000)) + \fsm[1]_i_3__1 + (.I0(\fsm[1]_i_7__1_n_0 ), + .I1(drp_done_reg2), + .I2(\fsm[1]_i_8__1_n_0 ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[0] ), + .I5(\fsm_reg_n_0_[2] ), + .O(\fsm[1]_i_3__1_n_0 )); + LUT6 #( + .INIT(64'h000000005FCF0000)) + \fsm[1]_i_4__1 + (.I0(resetovrd_done_reg2), + .I1(drp_done_reg2), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .I4(\fsm_reg_n_0_[1] ), + .I5(\fsm_reg_n_0_[3] ), + .O(\fsm[1]_i_4__1_n_0 )); + LUT6 #( + .INIT(64'h143C547C00000000)) + \fsm[1]_i_5__1 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(rxsync_done_reg2), + .I4(txsync_done_reg2), + .I5(\fsm_reg_n_0_[3] ), + .O(\fsm[1]_i_5__1_n_0 )); + LUT6 #( + .INIT(64'h34F7FFFFFFFFFFFF)) + \fsm[1]_i_6__1 + (.I0(qplllock_reg2), + .I1(rate_in_reg2[1]), + .I2(rate_in_reg2[0]), + .I3(cplllock_reg2), + .I4(rst_idle_reg2), + .I5(\fsm_reg_n_0_[0] ), + .O(\fsm[1]_i_6__1_n_0 )); + LUT4 #( + .INIT(16'h7FFF)) + \fsm[1]_i_7__1 + (.I0(txdata_wait_cnt_reg[3]), + .I1(txdata_wait_cnt_reg[1]), + .I2(txdata_wait_cnt_reg[0]), + .I3(txdata_wait_cnt_reg[2]), + .O(\fsm[1]_i_7__1_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFF04F7FFFF)) + \fsm[1]_i_8__1 + (.I0(qplllock_reg2), + .I1(rate_in_reg2[1]), + .I2(rate_in_reg2[0]), + .I3(cplllock_reg2), + .I4(drp_done_reg2), + .I5(rst_idle_reg2), + .O(\fsm[1]_i_8__1_n_0 )); + LUT6 #( + .INIT(64'hEAFFAAAAAAAAAAAA)) + \fsm[2]_i_2__1 + (.I0(\fsm[2]_i_4__1_n_0 ), + .I1(drp_done_reg2), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[3] ), + .I5(\fsm_reg_n_0_[2] ), + .O(\fsm[2]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'hAFBAAAAAAAAAAAAA)) + \fsm[2]_i_3__1 + (.I0(\fsm[2]_i_5__1_n_0 ), + .I1(rxsync_done_reg2), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(\fsm_reg_n_0_[3] ), + .I5(\fsm_reg_n_0_[2] ), + .O(\fsm[2]_i_3__1_n_0 )); + LUT6 #( + .INIT(64'h00FA554455005544)) + \fsm[2]_i_4__1 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm[3]_i_6__1_n_0 ), + .I2(pll_lock), + .I3(\fsm_reg_n_0_[2] ), + .I4(\fsm_reg_n_0_[1] ), + .I5(\fsm_reg_n_0_[0] ), + .O(\fsm[2]_i_4__1_n_0 )); + LUT6 #( + .INIT(64'h2000FFFF20000000)) + \fsm[2]_i_5__1 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(txsync_done_reg2), + .I4(\fsm_reg_n_0_[3] ), + .I5(\fsm[2]_i_6__1_n_0 ), + .O(\fsm[2]_i_5__1_n_0 )); + LUT6 #( + .INIT(64'h1CDC3C3C1CDCFCFC)) + \fsm[2]_i_6__1 + (.I0(drp_done_reg2), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(resetovrd_done_reg2), + .I4(\fsm_reg_n_0_[1] ), + .I5(fsm1), + .O(\fsm[2]_i_6__1_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFB0803080)) + \fsm[3]_i_2__1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[3] ), + .I4(drp_done_reg2), + .I5(\fsm[3]_i_4__1_n_0 ), + .O(\fsm[3]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'hFFFFF8880000F888)) + \fsm[3]_i_3__1 + (.I0(\txdata_wait_cnt[3]_i_2__1_n_0 ), + .I1(fsm1), + .I2(resetovrd_done_reg2), + .I3(\sysclksel[0]_i_2__1_n_0 ), + .I4(\fsm_reg_n_0_[3] ), + .I5(\fsm[4]_i_2__1_n_0 ), + .O(\fsm[3]_i_3__1_n_0 )); + LUT6 #( + .INIT(64'h00000000EEFF00F0)) + \fsm[3]_i_4__1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm[1]_i_8__1_n_0 ), + .I2(\fsm[3]_i_6__1_n_0 ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[3] ), + .I5(\fsm_reg_n_0_[2] ), + .O(\fsm[3]_i_4__1_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFF8F8FFF8)) + \fsm[3]_i_5__1 + (.I0(out), + .I1(\fsm[0]_i_9__1_0 ), + .I2(ratedone), + .I3(rate_in_reg2[1]), + .I4(rate_in_reg2[0]), + .I5(gen3_exit), + .O(fsm1)); + LUT5 #( + .INIT(32'h00504414)) + \fsm[3]_i_6__1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(rate_in_reg1[0]), + .I2(rate_in_reg2[0]), + .I3(rate_in_reg1[1]), + .I4(rate_in_reg2[1]), + .O(\fsm[3]_i_6__1_n_0 )); + LUT6 #( + .INIT(64'hC5F0CFF0C0F0C0F0)) + \fsm[4]_i_1__2 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm[4]_i_2__1_n_0 ), + .I2(\fsm_reg_n_0_[4] ), + .I3(\fsm_reg_n_0_[3] ), + .I4(drp_done_reg2), + .I5(\fsm[4]_i_3__1_n_0 ), + .O(fsm[4])); + LUT4 #( + .INIT(16'h26FF)) + \fsm[4]_i_2__1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(rxsync_done_reg2), + .I3(\fsm_reg_n_0_[2] ), + .O(\fsm[4]_i_2__1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair161" *) + LUT2 #( + .INIT(4'h8)) + \fsm[4]_i_3__1 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[2] ), + .O(\fsm[4]_i_3__1_n_0 )); + FDSE #( + .INIT(1'b0)) + \fsm_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm[0]), + .Q(\fsm_reg_n_0_[0] ), + .S(RST_CPLLRESET)); + FDSE #( + .INIT(1'b0)) + \fsm_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm[1]), + .Q(\fsm_reg_n_0_[1] ), + .S(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \fsm_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm[2]), + .Q(\fsm_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + MUXF7 \fsm_reg[2]_i_1__1 + (.I0(\fsm[2]_i_2__1_n_0 ), + .I1(\fsm[2]_i_3__1_n_0 ), + .O(fsm[2]), + .S(\fsm_reg_n_0_[4] )); + FDRE #( + .INIT(1'b0)) + \fsm_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm[3]), + .Q(\fsm_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + MUXF7 \fsm_reg[3]_i_1__1 + (.I0(\fsm[3]_i_2__1_n_0 ), + .I1(\fsm[3]_i_3__1_n_0 ), + .O(fsm[3]), + .S(\fsm_reg_n_0_[4] )); + FDRE #( + .INIT(1'b0)) + \fsm_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm[4]), + .Q(\fsm_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h04FF0400)) + gen3_exit_i_1__1 + (.I0(rate_in_reg2[0]), + .I1(rate_in_reg2[1]), + .I2(\fsm_reg_n_0_[4] ), + .I3(gen3_exit_i_2__1_n_0), + .I4(gen3_exit), + .O(gen3_exit_i_1__1_n_0)); + LUT6 #( + .INIT(64'h8000000180000000)) + gen3_exit_i_2__1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[3] ), + .I4(\fsm_reg_n_0_[4] ), + .I5(\fsm[0]_i_5__1_n_0 ), + .O(gen3_exit_i_2__1_n_0)); + FDRE #( + .INIT(1'b0)) + gen3_exit_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gen3_exit_i_1__1_n_0), + .Q(gen3_exit), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h3FFFFFFB00000008)) + gen3_i_1__1 + (.I0(gen3_i_2__1_n_0), + .I1(gen3_i_3__1_n_0), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[4] ), + .I5(rate_gen3_2), + .O(gen3_i_1__1_n_0)); + LUT2 #( + .INIT(4'h2)) + gen3_i_2__1 + (.I0(rate_in_reg2[1]), + .I1(rate_in_reg2[0]), + .O(gen3_i_2__1_n_0)); + LUT2 #( + .INIT(4'h8)) + gen3_i_3__1 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[0] ), + .O(gen3_i_3__1_n_0)); + FDRE #( + .INIT(1'b0)) + gen3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gen3_i_1__1_n_0), + .Q(rate_gen3_2), + .R(RST_CPLLRESET)); + LUT1 #( + .INIT(2'h1)) + \gtx_channel.gtxe2_channel_i_i_5__1 + (.I0(rate_gen3_2), + .O(rxchbonden_2)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE mmcm_lock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_mmcm_lock_in), + .Q(mmcm_lock_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE mmcm_lock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(mmcm_lock_reg1), + .Q(mmcm_lock_reg2), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h14FF1400)) + pclk_sel_i_1__1 + (.I0(\fsm_reg_n_0_[4] ), + .I1(rate_in_reg2[1]), + .I2(rate_in_reg2[0]), + .I3(pclk_sel_i_2__1_n_0), + .I4(pipe_pclk_sel_out), + .O(pclk_sel_i_1__1_n_0)); + (* SOFT_HLUTNM = "soft_lutpair153" *) + LUT5 #( + .INIT(32'h80022000)) + pclk_sel_i_2__1 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[0] ), + .O(pclk_sel_i_2__1_n_0)); + FDRE #( + .INIT(1'b0)) + pclk_sel_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pclk_sel_i_1__1_n_0), + .Q(pipe_pclk_sel_out), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0800080008000000)) + phystatus_i_1__1 + (.I0(\fsm_reg_n_0_[4] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(txratedone_i_2__1_n_0), + .I3(\fsm_reg_n_0_[0] ), + .I4(phystatus_reg2), + .I5(phystatus), + .O(phystatus_i_1__1_n_0)); + FDRE #( + .INIT(1'b0)) + phystatus_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(phystatus_i_1__1_n_0), + .Q(phystatus), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE phystatus_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RATE_PHYSTATUS), + .Q(phystatus_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE phystatus_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(phystatus_reg1), + .Q(phystatus_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE qplllock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RATE_QPLLLOCK), + .Q(qplllock_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE qplllock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qplllock_reg1), + .Q(qplllock_reg2), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h4044FFFF40440000)) + qpllpd_i_1__2 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(rate_in_reg2[0]), + .I3(rate_in_reg2[1]), + .I4(qpllpd), + .I5(QRST_QPLLPD_IN), + .O(qpllpd_i_1__2_n_0)); + FDRE #( + .INIT(1'b0)) + qpllpd_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qpllpd_i_1__2_n_0), + .Q(QRST_QPLLPD_IN), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h4044FFFF40440000)) + qpllreset_i_1__2 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(rate_in_reg2[0]), + .I3(rate_in_reg2[1]), + .I4(qpllreset), + .I5(QRST_QPLLRESET_IN), + .O(qpllreset_i_1__2_n_0)); + FDRE #( + .INIT(1'b0)) + qpllreset_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qpllreset_i_1__2_n_0), + .Q(QRST_QPLLRESET_IN), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair157" *) + LUT5 #( + .INIT(32'h00000080)) + rate_done_reg1_i_1__1 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(\fsm_reg_n_0_[1] ), + .O(USER_RATE_DONE)); + (* SOFT_HLUTNM = "soft_lutpair159" *) + LUT5 #( + .INIT(32'h00000001)) + \rate_idle_reg1[2]_i_1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[4] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[3] ), + .O(SYNC_RATE_IDLE)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_in_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rate_in_reg1_reg[0]_0 ), + .Q(rate_in_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_in_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rate_in_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_in_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rate_in_reg1[0]), + .Q(rate_in_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_in_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rate_in_reg1[1]), + .Q(rate_in_reg2[1]), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0444FFFF04440000)) + \rate_out[0]_i_1__1 + (.I0(rate_in_reg2[1]), + .I1(rate_in_reg2[0]), + .I2(\fsm_reg_n_0_[4] ), + .I3(\fsm_reg_n_0_[3] ), + .I4(\rate_out[0]_i_2__1_n_0 ), + .I5(RXRATE), + .O(\rate_out[0]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'h8002020080000200)) + \rate_out[0]_i_2__1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[4] ), + .I4(\fsm_reg_n_0_[3] ), + .I5(txpmareset0), + .O(\rate_out[0]_i_2__1_n_0 )); + LUT3 #( + .INIT(8'hBA)) + \rate_out[0]_i_3__1 + (.I0(gen3_exit), + .I1(rate_in_reg2[0]), + .I2(rate_in_reg2[1]), + .O(txpmareset0)); + FDRE #( + .INIT(1'b0)) + \rate_out_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rate_out[0]_i_1__1_n_0 ), + .Q(RXRATE), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair156" *) + LUT5 #( + .INIT(32'h08800000)) + rate_rxsync_reg1_i_1__1 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(\fsm_reg_n_0_[2] ), + .O(USER_RATE_RXSYNC)); + LUT6 #( + .INIT(64'hA3333333A0000000)) + ratedone_i_1__1 + (.I0(ratedone_i_2__1_n_0), + .I1(ratedone_i_3__1_n_0), + .I2(rxratedone), + .I3(phystatus), + .I4(txratedone), + .I5(ratedone), + .O(ratedone_i_1__1_n_0)); + (* SOFT_HLUTNM = "soft_lutpair155" *) + LUT5 #( + .INIT(32'h00080000)) + ratedone_i_2__1 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm_reg_n_0_[3] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[0] ), + .O(ratedone_i_2__1_n_0)); + (* SOFT_HLUTNM = "soft_lutpair155" *) + LUT5 #( + .INIT(32'hFDFFFFFF)) + ratedone_i_3__1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[3] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[2] ), + .I4(\fsm_reg_n_0_[4] ), + .O(ratedone_i_3__1_n_0)); + FDRE #( + .INIT(1'b0)) + ratedone_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(ratedone_i_1__1_n_0), + .Q(ratedone), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE resetovrd_done_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b1), + .Q(resetovrd_done_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE resetovrd_done_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(resetovrd_done_reg1), + .Q(resetovrd_done_reg2), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair158" *) + LUT5 #( + .INIT(32'h00000080)) + resetovrd_start_reg1_i_1__1 + (.I0(\fsm_reg_n_0_[4] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(\fsm_reg_n_0_[3] ), + .O(USER_RESETOVRD_START)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rst_idle_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RST_IDLE), + .Q(rst_idle_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rst_idle_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rst_idle_reg1), + .Q(rst_idle_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxpmaresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxpmaresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxpmaresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxpmaresetdone_reg1), + .Q(rxpmaresetdone_reg2), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0800080008000000)) + rxratedone_i_1__1 + (.I0(\fsm_reg_n_0_[4] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(txratedone_i_2__1_n_0), + .I3(\fsm_reg_n_0_[0] ), + .I4(rxratedone_reg2), + .I5(rxratedone), + .O(rxratedone_i_1__1_n_0)); + FDRE #( + .INIT(1'b0)) + rxratedone_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxratedone_i_1__1_n_0), + .Q(rxratedone), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxratedone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RATE_RXRATEDONE), + .Q(rxratedone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxratedone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxratedone_reg1), + .Q(rxratedone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_RXRESETDONE), + .Q(rxresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxresetdone_reg1), + .Q(rxresetdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsync_done_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxsync_done_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsync_done_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxsync_done_reg1), + .Q(rxsync_done_reg2), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair156" *) + LUT5 #( + .INIT(32'h08000000)) + rxsync_start_reg1_i_1__1 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[4] ), + .I4(\fsm_reg_n_0_[3] ), + .O(SYNC_RXSYNC_START)); + LUT6 #( + .INIT(64'h0FFFFF4F00000040)) + \sysclksel[0]_i_1__1 + (.I0(rate_in_reg2[0]), + .I1(rate_in_reg2[1]), + .I2(\sysclksel[0]_i_2__1_n_0 ), + .I3(\fsm_reg_n_0_[3] ), + .I4(\fsm_reg_n_0_[4] ), + .I5(RXSYSCLKSEL), + .O(\sysclksel[0]_i_1__1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair160" *) + LUT3 #( + .INIT(8'h80)) + \sysclksel[0]_i_2__1 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .O(\sysclksel[0]_i_2__1_n_0 )); + FDRE #( + .INIT(1'b0)) + \sysclksel_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\sysclksel[0]_i_1__1_n_0 ), + .Q(RXSYSCLKSEL), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'hB333000000000000)) + \txdata_wait_cnt[0]_i_1__1 + (.I0(txdata_wait_cnt_reg[1]), + .I1(txdata_wait_cnt_reg[0]), + .I2(txdata_wait_cnt_reg[2]), + .I3(txdata_wait_cnt_reg[3]), + .I4(\txdata_wait_cnt[3]_i_2__1_n_0 ), + .I5(\txdata_wait_cnt[3]_i_3__1_n_0 ), + .O(p_0_in__0[0])); + LUT6 #( + .INIT(64'hE666000000000000)) + \txdata_wait_cnt[1]_i_1__1 + (.I0(txdata_wait_cnt_reg[1]), + .I1(txdata_wait_cnt_reg[0]), + .I2(txdata_wait_cnt_reg[2]), + .I3(txdata_wait_cnt_reg[3]), + .I4(\txdata_wait_cnt[3]_i_2__1_n_0 ), + .I5(\txdata_wait_cnt[3]_i_3__1_n_0 ), + .O(p_0_in__0[1])); + LUT6 #( + .INIT(64'hF878000000000000)) + \txdata_wait_cnt[2]_i_1__1 + (.I0(txdata_wait_cnt_reg[1]), + .I1(txdata_wait_cnt_reg[0]), + .I2(txdata_wait_cnt_reg[2]), + .I3(txdata_wait_cnt_reg[3]), + .I4(\txdata_wait_cnt[3]_i_2__1_n_0 ), + .I5(\txdata_wait_cnt[3]_i_3__1_n_0 ), + .O(p_0_in__0[2])); + LUT6 #( + .INIT(64'hFF80000000000000)) + \txdata_wait_cnt[3]_i_1__1 + (.I0(txdata_wait_cnt_reg[1]), + .I1(txdata_wait_cnt_reg[0]), + .I2(txdata_wait_cnt_reg[2]), + .I3(txdata_wait_cnt_reg[3]), + .I4(\txdata_wait_cnt[3]_i_2__1_n_0 ), + .I5(\txdata_wait_cnt[3]_i_3__1_n_0 ), + .O(p_0_in__0[3])); + (* SOFT_HLUTNM = "soft_lutpair160" *) + LUT3 #( + .INIT(8'h40)) + \txdata_wait_cnt[3]_i_2__1 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[2] ), + .O(\txdata_wait_cnt[3]_i_2__1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair152" *) + LUT2 #( + .INIT(4'h2)) + \txdata_wait_cnt[3]_i_3__1 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[4] ), + .O(\txdata_wait_cnt[3]_i_3__1_n_0 )); + FDRE #( + .INIT(1'b0)) + \txdata_wait_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[0]), + .Q(txdata_wait_cnt_reg[0]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txdata_wait_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[1]), + .Q(txdata_wait_cnt_reg[1]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txdata_wait_cnt_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[2]), + .Q(txdata_wait_cnt_reg[2]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txdata_wait_cnt_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[3]), + .Q(txdata_wait_cnt_reg[3]), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h00F2FFFF00F20000)) + txpmareset_i_1__1 + (.I0(rate_in_reg2[1]), + .I1(rate_in_reg2[0]), + .I2(gen3_exit), + .I3(\fsm_reg_n_0_[3] ), + .I4(txpmareset_i_2__1_n_0), + .I5(rate_txpmareset_2), + .O(txpmareset_i_1__1_n_0)); + (* SOFT_HLUTNM = "soft_lutpair154" *) + LUT5 #( + .INIT(32'h80004200)) + txpmareset_i_2__1 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[3] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[4] ), + .O(txpmareset_i_2__1_n_0)); + FDRE #( + .INIT(1'b0)) + txpmareset_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txpmareset_i_1__1_n_0), + .Q(rate_txpmareset_2), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0800080008000000)) + txratedone_i_1__1 + (.I0(\fsm_reg_n_0_[4] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(txratedone_i_2__1_n_0), + .I3(\fsm_reg_n_0_[0] ), + .I4(txratedone_reg2), + .I5(txratedone), + .O(txratedone_i_1__1_n_0)); + (* SOFT_HLUTNM = "soft_lutpair161" *) + LUT2 #( + .INIT(4'hE)) + txratedone_i_2__1 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[1] ), + .O(txratedone_i_2__1_n_0)); + FDRE #( + .INIT(1'b0)) + txratedone_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txratedone_i_1__1_n_0), + .Q(txratedone), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txratedone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RATE_TXRATEDONE), + .Q(txratedone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txratedone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txratedone_reg1), + .Q(txratedone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_TXRESETDONE), + .Q(txresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txresetdone_reg1), + .Q(txresetdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsync_done_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RATE_TXSYNC_DONE), + .Q(txsync_done_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsync_done_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txsync_done_reg1), + .Q(txsync_done_reg2), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'hFFFFFFFF00004000)) + txsync_start_reg1_i_1__1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[4] ), + .I3(\fsm_reg_n_0_[3] ), + .I4(\fsm_reg_n_0_[2] ), + .I5(RST_TXSYNC_START), + .O(SYNC_TXSYNC_START)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pipe_rate" *) +module pcie_7x_0_pcie_7x_0_pipe_rate_52 + (SYNC_TXSYNC_START, + rxchbonden_3, + rate_gen3_3, + RATE_DRP_START, + RATE_DRP_X16X20_MODE, + RATE_DRP_X16, + USER_RATE_RXSYNC, + SYNC_RXSYNC_START, + USER_RATE_DONE, + USER_RESETOVRD_START, + SYNC_RATE_IDLE, + rate_txpmareset_3, + RXSYSCLKSEL, + pipe_pclk_sel_out, + RXRATE, + QRST_QPLLPD_IN, + rate_cpllpd_3, + QRST_QPLLRESET_IN, + rate_cpllreset_3, + RST_TXSYNC_START, + RST_CPLLRESET, + pipe_pclk_in, + \rate_in_reg1_reg[0]_0 , + RST_IDLE, + QRST_CPLLLOCK, + QPLL_QPLLLOCK, + RATE_DRP_DONE, + pipe_mmcm_lock_in, + RATE_PHYSTATUS, + USER_TXRESETDONE, + USER_RXRESETDONE, + RATE_TXRATEDONE, + RATE_RXRATEDONE, + RATE_TXSYNC_DONE, + user_active_lane_3, + out, + \fsm[0]_i_9__2_0 ); + output SYNC_TXSYNC_START; + output rxchbonden_3; + output rate_gen3_3; + output RATE_DRP_START; + output RATE_DRP_X16X20_MODE; + output RATE_DRP_X16; + output USER_RATE_RXSYNC; + output SYNC_RXSYNC_START; + output USER_RATE_DONE; + output USER_RESETOVRD_START; + output SYNC_RATE_IDLE; + output rate_txpmareset_3; + output [0:0]RXSYSCLKSEL; + output [0:0]pipe_pclk_sel_out; + output [0:0]RXRATE; + output [0:0]QRST_QPLLPD_IN; + output rate_cpllpd_3; + output [0:0]QRST_QPLLRESET_IN; + output rate_cpllreset_3; + input RST_TXSYNC_START; + input RST_CPLLRESET; + input pipe_pclk_in; + input [0:0]\rate_in_reg1_reg[0]_0 ; + input RST_IDLE; + input [0:0]QRST_CPLLLOCK; + input QPLL_QPLLLOCK; + input RATE_DRP_DONE; + input pipe_mmcm_lock_in; + input RATE_PHYSTATUS; + input USER_TXRESETDONE; + input USER_RXRESETDONE; + input RATE_TXRATEDONE; + input RATE_RXRATEDONE; + input RATE_TXSYNC_DONE; + input user_active_lane_3; + input out; + input \fsm[0]_i_9__2_0 ; + + wire QPLL_QPLLLOCK; + wire [0:0]QRST_CPLLLOCK; + wire [0:0]QRST_QPLLPD_IN; + wire [0:0]QRST_QPLLRESET_IN; + wire RATE_DRP_DONE; + wire RATE_DRP_START; + wire RATE_DRP_X16; + wire RATE_DRP_X16X20_MODE; + wire RATE_PHYSTATUS; + wire RATE_RXRATEDONE; + wire RATE_TXRATEDONE; + wire RATE_TXSYNC_DONE; + wire RST_CPLLRESET; + wire RST_IDLE; + wire RST_TXSYNC_START; + wire [0:0]RXRATE; + wire [0:0]RXSYSCLKSEL; + wire SYNC_RATE_IDLE; + wire SYNC_RXSYNC_START; + wire SYNC_TXSYNC_START; + wire USER_RATE_DONE; + wire USER_RATE_RXSYNC; + wire USER_RESETOVRD_START; + wire USER_RXRESETDONE; + wire USER_TXRESETDONE; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire cplllock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire cplllock_reg2; + wire cpllpd_i_1__2_n_0; + wire cpllreset_i_1__3_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire drp_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire drp_done_reg2; + wire drp_start_i_1__2_n_0; + wire drp_x16_i_1__2_n_0; + wire drp_x16x20_mode_i_1__2_n_0; + wire [4:0]fsm; + wire fsm1; + wire \fsm[0]_i_10__2_n_0 ; + wire \fsm[0]_i_11__2_n_0 ; + wire \fsm[0]_i_12__2_n_0 ; + wire \fsm[0]_i_2__6_n_0 ; + wire \fsm[0]_i_3__2_n_0 ; + wire \fsm[0]_i_4__2_n_0 ; + wire \fsm[0]_i_5__2_n_0 ; + wire \fsm[0]_i_7__2_n_0 ; + wire \fsm[0]_i_8__2_n_0 ; + wire \fsm[0]_i_9__2_0 ; + wire \fsm[0]_i_9__2_n_0 ; + wire \fsm[1]_i_2__3_n_0 ; + wire \fsm[1]_i_3__2_n_0 ; + wire \fsm[1]_i_4__2_n_0 ; + wire \fsm[1]_i_5__2_n_0 ; + wire \fsm[1]_i_6__2_n_0 ; + wire \fsm[1]_i_7__2_n_0 ; + wire \fsm[1]_i_8__2_n_0 ; + wire \fsm[2]_i_2__2_n_0 ; + wire \fsm[2]_i_3__2_n_0 ; + wire \fsm[2]_i_4__2_n_0 ; + wire \fsm[2]_i_5__2_n_0 ; + wire \fsm[2]_i_6__2_n_0 ; + wire \fsm[3]_i_2__2_n_0 ; + wire \fsm[3]_i_3__2_n_0 ; + wire \fsm[3]_i_4__2_n_0 ; + wire \fsm[3]_i_6__2_n_0 ; + wire \fsm[4]_i_2__2_n_0 ; + wire \fsm[4]_i_3__2_n_0 ; + wire \fsm_reg_n_0_[0] ; + wire \fsm_reg_n_0_[1] ; + wire \fsm_reg_n_0_[2] ; + wire \fsm_reg_n_0_[3] ; + wire \fsm_reg_n_0_[4] ; + wire gen3_exit; + wire gen3_exit_i_1__2_n_0; + wire gen3_exit_i_2__2_n_0; + wire gen3_i_1__2_n_0; + wire gen3_i_2__2_n_0; + wire gen3_i_3__2_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire mmcm_lock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire mmcm_lock_reg2; + wire out; + wire [3:0]p_0_in__0; + wire pclk_sel_i_1__2_n_0; + wire pclk_sel_i_2__2_n_0; + wire phystatus; + wire phystatus_i_1__2_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire phystatus_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire phystatus_reg2; + wire pipe_mmcm_lock_in; + wire pipe_pclk_in; + wire [0:0]pipe_pclk_sel_out; + wire pll_lock; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire qplllock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire qplllock_reg2; + wire qpllpd; + wire qpllpd_i_1__3_n_0; + wire qpllreset; + wire qpllreset_i_1__3_n_0; + wire rate_cpllpd_3; + wire rate_cpllreset_3; + wire rate_gen3_3; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rate_in_reg1; + wire [0:0]\rate_in_reg1_reg[0]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rate_in_reg2; + wire \rate_out[0]_i_1__2_n_0 ; + wire \rate_out[0]_i_2__2_n_0 ; + wire rate_txpmareset_3; + wire ratedone; + wire ratedone_i_1__2_n_0; + wire ratedone_i_2__2_n_0; + wire ratedone_i_3__2_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire resetovrd_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire resetovrd_done_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rst_idle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rst_idle_reg2; + wire rxchbonden_3; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxpmaresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxpmaresetdone_reg2; + wire rxratedone; + wire rxratedone_i_1__2_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxratedone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxratedone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxresetdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsync_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsync_done_reg2; + wire \sysclksel[0]_i_1__2_n_0 ; + wire \sysclksel[0]_i_2__2_n_0 ; + wire \txdata_wait_cnt[3]_i_2__2_n_0 ; + wire \txdata_wait_cnt[3]_i_3__2_n_0 ; + wire [3:0]txdata_wait_cnt_reg; + wire txpmareset0; + wire txpmareset_i_1__2_n_0; + wire txpmareset_i_2__2_n_0; + wire txratedone; + wire txratedone_i_1__2_n_0; + wire txratedone_i_2__2_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txratedone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txratedone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txresetdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsync_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsync_done_reg2; + wire user_active_lane_3; + + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE cplllock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(QRST_CPLLLOCK), + .Q(cplllock_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE cplllock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(cplllock_reg1), + .Q(cplllock_reg2), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0400FFFF04000000)) + cpllpd_i_1__2 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(rate_in_reg2[0]), + .I3(rate_in_reg2[1]), + .I4(qpllpd), + .I5(rate_cpllpd_3), + .O(cpllpd_i_1__2_n_0)); + (* SOFT_HLUTNM = "soft_lutpair194" *) + LUT5 #( + .INIT(32'h80000900)) + cpllpd_i_2__2 + (.I0(\fsm_reg_n_0_[4] ), + .I1(\fsm_reg_n_0_[3] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(\fsm_reg_n_0_[2] ), + .O(qpllpd)); + FDRE #( + .INIT(1'b0)) + cpllpd_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(cpllpd_i_1__2_n_0), + .Q(rate_cpllpd_3), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0400FFFF04000000)) + cpllreset_i_1__3 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(rate_in_reg2[0]), + .I3(rate_in_reg2[1]), + .I4(qpllreset), + .I5(rate_cpllreset_3), + .O(cpllreset_i_1__3_n_0)); + (* SOFT_HLUTNM = "soft_lutpair195" *) + LUT5 #( + .INIT(32'h80001004)) + cpllreset_i_2__3 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[3] ), + .I3(\fsm_reg_n_0_[4] ), + .I4(\fsm_reg_n_0_[0] ), + .O(qpllreset)); + FDRE #( + .INIT(1'b0)) + cpllreset_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(cpllreset_i_1__3_n_0), + .Q(rate_cpllreset_3), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE drp_done_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RATE_DRP_DONE), + .Q(drp_done_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE drp_done_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(drp_done_reg1), + .Q(drp_done_reg2), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair198" *) + LUT5 #( + .INIT(32'h08420100)) + drp_start_i_1__2 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[4] ), + .I3(\fsm_reg_n_0_[2] ), + .I4(\fsm_reg_n_0_[0] ), + .O(drp_start_i_1__2_n_0)); + FDRE #( + .INIT(1'b0)) + drp_start_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(drp_start_i_1__2_n_0), + .Q(RATE_DRP_START), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair199" *) + LUT5 #( + .INIT(32'h20100014)) + drp_x16_i_1__2 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[0] ), + .O(drp_x16_i_1__2_n_0)); + FDRE #( + .INIT(1'b0)) + drp_x16_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(drp_x16_i_1__2_n_0), + .Q(RATE_DRP_X16), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair200" *) + LUT5 #( + .INIT(32'h20080074)) + drp_x16x20_mode_i_1__2 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[3] ), + .I4(\fsm_reg_n_0_[1] ), + .O(drp_x16x20_mode_i_1__2_n_0)); + FDRE #( + .INIT(1'b0)) + drp_x16x20_mode_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(drp_x16x20_mode_i_1__2_n_0), + .Q(RATE_DRP_X16X20_MODE), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0901595100000000)) + \fsm[0]_i_10__2 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(rxsync_done_reg2), + .I4(txsync_done_reg2), + .I5(\fsm_reg_n_0_[3] ), + .O(\fsm[0]_i_10__2_n_0 )); + LUT6 #( + .INIT(64'h1101111101000110)) + \fsm[0]_i_11__2 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[3] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(rxpmaresetdone_reg2), + .I5(drp_done_reg2), + .O(\fsm[0]_i_11__2_n_0 )); + LUT5 #( + .INIT(32'h20202320)) + \fsm[0]_i_12__2 + (.I0(drp_done_reg2), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(mmcm_lock_reg2), + .I4(rxpmaresetdone_reg2), + .O(\fsm[0]_i_12__2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair193" *) + LUT5 #( + .INIT(32'hFFFF3210)) + \fsm[0]_i_1__6 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm[0]_i_2__6_n_0 ), + .I3(\fsm[0]_i_3__2_n_0 ), + .I4(\fsm[0]_i_4__2_n_0 ), + .O(fsm[0])); + LUT6 #( + .INIT(64'h0F0F3F3F47444744)) + \fsm[0]_i_2__6 + (.I0(drp_done_reg2), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm[0]_i_5__2_n_0 ), + .I4(pll_lock), + .I5(\fsm_reg_n_0_[1] ), + .O(\fsm[0]_i_2__6_n_0 )); + LUT6 #( + .INIT(64'hF3F3AAAAFF00AAAA)) + \fsm[0]_i_3__2 + (.I0(\fsm[0]_i_7__2_n_0 ), + .I1(\fsm_reg_n_0_[0] ), + .I2(drp_done_reg2), + .I3(\fsm[0]_i_8__2_n_0 ), + .I4(\fsm_reg_n_0_[2] ), + .I5(\fsm_reg_n_0_[1] ), + .O(\fsm[0]_i_3__2_n_0 )); + LUT6 #( + .INIT(64'hFFFFFF4000000000)) + \fsm[0]_i_4__2 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm[0]_i_9__2_n_0 ), + .I3(\fsm[0]_i_10__2_n_0 ), + .I4(\fsm[0]_i_11__2_n_0 ), + .I5(\fsm_reg_n_0_[4] ), + .O(\fsm[0]_i_4__2_n_0 )); + LUT4 #( + .INIT(16'h6FF6)) + \fsm[0]_i_5__2 + (.I0(rate_in_reg2[1]), + .I1(rate_in_reg1[1]), + .I2(rate_in_reg2[0]), + .I3(rate_in_reg1[0]), + .O(\fsm[0]_i_5__2_n_0 )); + LUT4 #( + .INIT(16'hFB08)) + \fsm[0]_i_6__2 + (.I0(qplllock_reg2), + .I1(rate_in_reg2[1]), + .I2(rate_in_reg2[0]), + .I3(cplllock_reg2), + .O(pll_lock)); + LUT6 #( + .INIT(64'hAAAAAAAAEAAAAAAA)) + \fsm[0]_i_7__2 + (.I0(\fsm[0]_i_12__2_n_0 ), + .I1(pll_lock), + .I2(rst_idle_reg2), + .I3(drp_done_reg2), + .I4(\fsm_reg_n_0_[1] ), + .I5(\fsm_reg_n_0_[0] ), + .O(\fsm[0]_i_7__2_n_0 )); + LUT6 #( + .INIT(64'hFFFF5D5500005D55)) + \fsm[0]_i_8__2 + (.I0(user_active_lane_3), + .I1(txresetdone_reg2), + .I2(phystatus_reg2), + .I3(rxresetdone_reg2), + .I4(\fsm_reg_n_0_[0] ), + .I5(\fsm[1]_i_7__2_n_0 ), + .O(\fsm[0]_i_8__2_n_0 )); + LUT5 #( + .INIT(32'h33330FAA)) + \fsm[0]_i_9__2 + (.I0(drp_done_reg2), + .I1(resetovrd_done_reg2), + .I2(fsm1), + .I3(\fsm_reg_n_0_[0] ), + .I4(\fsm_reg_n_0_[1] ), + .O(\fsm[0]_i_9__2_n_0 )); + LUT6 #( + .INIT(64'hFFE4FFE4FFE400E4)) + \fsm[1]_i_1__6 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm[1]_i_2__3_n_0 ), + .I2(\fsm[1]_i_3__2_n_0 ), + .I3(\fsm_reg_n_0_[4] ), + .I4(\fsm[1]_i_4__2_n_0 ), + .I5(\fsm[1]_i_5__2_n_0 ), + .O(fsm[1])); + LUT5 #( + .INIT(32'h3388F0CC)) + \fsm[1]_i_2__3 + (.I0(drp_done_reg2), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm[1]_i_6__2_n_0 ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[2] ), + .O(\fsm[1]_i_2__3_n_0 )); + LUT6 #( + .INIT(64'hCC5500000033F000)) + \fsm[1]_i_3__2 + (.I0(\fsm[1]_i_7__2_n_0 ), + .I1(drp_done_reg2), + .I2(\fsm[1]_i_8__2_n_0 ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[0] ), + .I5(\fsm_reg_n_0_[2] ), + .O(\fsm[1]_i_3__2_n_0 )); + LUT6 #( + .INIT(64'h000000005FCF0000)) + \fsm[1]_i_4__2 + (.I0(resetovrd_done_reg2), + .I1(drp_done_reg2), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[2] ), + .I4(\fsm_reg_n_0_[1] ), + .I5(\fsm_reg_n_0_[3] ), + .O(\fsm[1]_i_4__2_n_0 )); + LUT6 #( + .INIT(64'h143C547C00000000)) + \fsm[1]_i_5__2 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(rxsync_done_reg2), + .I4(txsync_done_reg2), + .I5(\fsm_reg_n_0_[3] ), + .O(\fsm[1]_i_5__2_n_0 )); + LUT6 #( + .INIT(64'h34F7FFFFFFFFFFFF)) + \fsm[1]_i_6__2 + (.I0(qplllock_reg2), + .I1(rate_in_reg2[1]), + .I2(rate_in_reg2[0]), + .I3(cplllock_reg2), + .I4(rst_idle_reg2), + .I5(\fsm_reg_n_0_[0] ), + .O(\fsm[1]_i_6__2_n_0 )); + LUT4 #( + .INIT(16'h7FFF)) + \fsm[1]_i_7__2 + (.I0(txdata_wait_cnt_reg[3]), + .I1(txdata_wait_cnt_reg[1]), + .I2(txdata_wait_cnt_reg[0]), + .I3(txdata_wait_cnt_reg[2]), + .O(\fsm[1]_i_7__2_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFF04F7FFFF)) + \fsm[1]_i_8__2 + (.I0(qplllock_reg2), + .I1(rate_in_reg2[1]), + .I2(rate_in_reg2[0]), + .I3(cplllock_reg2), + .I4(drp_done_reg2), + .I5(rst_idle_reg2), + .O(\fsm[1]_i_8__2_n_0 )); + LUT6 #( + .INIT(64'hEAFFAAAAAAAAAAAA)) + \fsm[2]_i_2__2 + (.I0(\fsm[2]_i_4__2_n_0 ), + .I1(drp_done_reg2), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[3] ), + .I5(\fsm_reg_n_0_[2] ), + .O(\fsm[2]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'hAFBAAAAAAAAAAAAA)) + \fsm[2]_i_3__2 + (.I0(\fsm[2]_i_5__2_n_0 ), + .I1(rxsync_done_reg2), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(\fsm_reg_n_0_[3] ), + .I5(\fsm_reg_n_0_[2] ), + .O(\fsm[2]_i_3__2_n_0 )); + LUT6 #( + .INIT(64'h00FA554455005544)) + \fsm[2]_i_4__2 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm[3]_i_6__2_n_0 ), + .I2(pll_lock), + .I3(\fsm_reg_n_0_[2] ), + .I4(\fsm_reg_n_0_[1] ), + .I5(\fsm_reg_n_0_[0] ), + .O(\fsm[2]_i_4__2_n_0 )); + LUT6 #( + .INIT(64'h2000FFFF20000000)) + \fsm[2]_i_5__2 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(txsync_done_reg2), + .I4(\fsm_reg_n_0_[3] ), + .I5(\fsm[2]_i_6__2_n_0 ), + .O(\fsm[2]_i_5__2_n_0 )); + LUT6 #( + .INIT(64'h1CDC3C3C1CDCFCFC)) + \fsm[2]_i_6__2 + (.I0(drp_done_reg2), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(resetovrd_done_reg2), + .I4(\fsm_reg_n_0_[1] ), + .I5(fsm1), + .O(\fsm[2]_i_6__2_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFB0803080)) + \fsm[3]_i_2__2 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[3] ), + .I4(drp_done_reg2), + .I5(\fsm[3]_i_4__2_n_0 ), + .O(\fsm[3]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'hFFFFF8880000F888)) + \fsm[3]_i_3__2 + (.I0(\txdata_wait_cnt[3]_i_2__2_n_0 ), + .I1(fsm1), + .I2(resetovrd_done_reg2), + .I3(\sysclksel[0]_i_2__2_n_0 ), + .I4(\fsm_reg_n_0_[3] ), + .I5(\fsm[4]_i_2__2_n_0 ), + .O(\fsm[3]_i_3__2_n_0 )); + LUT6 #( + .INIT(64'h00000000EEFF00F0)) + \fsm[3]_i_4__2 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm[1]_i_8__2_n_0 ), + .I2(\fsm[3]_i_6__2_n_0 ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[3] ), + .I5(\fsm_reg_n_0_[2] ), + .O(\fsm[3]_i_4__2_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFF8F8FFF8)) + \fsm[3]_i_5__2 + (.I0(out), + .I1(\fsm[0]_i_9__2_0 ), + .I2(ratedone), + .I3(rate_in_reg2[1]), + .I4(rate_in_reg2[0]), + .I5(gen3_exit), + .O(fsm1)); + LUT5 #( + .INIT(32'h00504414)) + \fsm[3]_i_6__2 + (.I0(\fsm_reg_n_0_[0] ), + .I1(rate_in_reg1[0]), + .I2(rate_in_reg2[0]), + .I3(rate_in_reg1[1]), + .I4(rate_in_reg2[1]), + .O(\fsm[3]_i_6__2_n_0 )); + LUT6 #( + .INIT(64'hC5F0CFF0C0F0C0F0)) + \fsm[4]_i_1__3 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm[4]_i_2__2_n_0 ), + .I2(\fsm_reg_n_0_[4] ), + .I3(\fsm_reg_n_0_[3] ), + .I4(drp_done_reg2), + .I5(\fsm[4]_i_3__2_n_0 ), + .O(fsm[4])); + LUT4 #( + .INIT(16'h26FF)) + \fsm[4]_i_2__2 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(rxsync_done_reg2), + .I3(\fsm_reg_n_0_[2] ), + .O(\fsm[4]_i_2__2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair202" *) + LUT2 #( + .INIT(4'h8)) + \fsm[4]_i_3__2 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[2] ), + .O(\fsm[4]_i_3__2_n_0 )); + FDSE #( + .INIT(1'b0)) + \fsm_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm[0]), + .Q(\fsm_reg_n_0_[0] ), + .S(RST_CPLLRESET)); + FDSE #( + .INIT(1'b0)) + \fsm_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm[1]), + .Q(\fsm_reg_n_0_[1] ), + .S(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \fsm_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm[2]), + .Q(\fsm_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + MUXF7 \fsm_reg[2]_i_1__2 + (.I0(\fsm[2]_i_2__2_n_0 ), + .I1(\fsm[2]_i_3__2_n_0 ), + .O(fsm[2]), + .S(\fsm_reg_n_0_[4] )); + FDRE #( + .INIT(1'b0)) + \fsm_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm[3]), + .Q(\fsm_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + MUXF7 \fsm_reg[3]_i_1__2 + (.I0(\fsm[3]_i_2__2_n_0 ), + .I1(\fsm[3]_i_3__2_n_0 ), + .O(fsm[3]), + .S(\fsm_reg_n_0_[4] )); + FDRE #( + .INIT(1'b0)) + \fsm_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fsm[4]), + .Q(\fsm_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h04FF0400)) + gen3_exit_i_1__2 + (.I0(rate_in_reg2[0]), + .I1(rate_in_reg2[1]), + .I2(\fsm_reg_n_0_[4] ), + .I3(gen3_exit_i_2__2_n_0), + .I4(gen3_exit), + .O(gen3_exit_i_1__2_n_0)); + LUT6 #( + .INIT(64'h8000000180000000)) + gen3_exit_i_2__2 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[3] ), + .I4(\fsm_reg_n_0_[4] ), + .I5(\fsm[0]_i_5__2_n_0 ), + .O(gen3_exit_i_2__2_n_0)); + FDRE #( + .INIT(1'b0)) + gen3_exit_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gen3_exit_i_1__2_n_0), + .Q(gen3_exit), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h3FFFFFFB00000008)) + gen3_i_1__2 + (.I0(gen3_i_2__2_n_0), + .I1(gen3_i_3__2_n_0), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[4] ), + .I5(rate_gen3_3), + .O(gen3_i_1__2_n_0)); + LUT2 #( + .INIT(4'h2)) + gen3_i_2__2 + (.I0(rate_in_reg2[1]), + .I1(rate_in_reg2[0]), + .O(gen3_i_2__2_n_0)); + LUT2 #( + .INIT(4'h8)) + gen3_i_3__2 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[0] ), + .O(gen3_i_3__2_n_0)); + FDRE #( + .INIT(1'b0)) + gen3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gen3_i_1__2_n_0), + .Q(rate_gen3_3), + .R(RST_CPLLRESET)); + LUT1 #( + .INIT(2'h1)) + \gtx_channel.gtxe2_channel_i_i_5__2 + (.I0(rate_gen3_3), + .O(rxchbonden_3)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE mmcm_lock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_mmcm_lock_in), + .Q(mmcm_lock_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE mmcm_lock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(mmcm_lock_reg1), + .Q(mmcm_lock_reg2), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h14FF1400)) + pclk_sel_i_1__2 + (.I0(\fsm_reg_n_0_[4] ), + .I1(rate_in_reg2[1]), + .I2(rate_in_reg2[0]), + .I3(pclk_sel_i_2__2_n_0), + .I4(pipe_pclk_sel_out), + .O(pclk_sel_i_1__2_n_0)); + (* SOFT_HLUTNM = "soft_lutpair194" *) + LUT5 #( + .INIT(32'h80022000)) + pclk_sel_i_2__2 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[0] ), + .O(pclk_sel_i_2__2_n_0)); + FDRE #( + .INIT(1'b0)) + pclk_sel_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pclk_sel_i_1__2_n_0), + .Q(pipe_pclk_sel_out), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0800080008000000)) + phystatus_i_1__2 + (.I0(\fsm_reg_n_0_[4] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(txratedone_i_2__2_n_0), + .I3(\fsm_reg_n_0_[0] ), + .I4(phystatus_reg2), + .I5(phystatus), + .O(phystatus_i_1__2_n_0)); + FDRE #( + .INIT(1'b0)) + phystatus_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(phystatus_i_1__2_n_0), + .Q(phystatus), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE phystatus_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RATE_PHYSTATUS), + .Q(phystatus_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE phystatus_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(phystatus_reg1), + .Q(phystatus_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE qplllock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(QPLL_QPLLLOCK), + .Q(qplllock_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE qplllock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qplllock_reg1), + .Q(qplllock_reg2), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h4044FFFF40440000)) + qpllpd_i_1__3 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(rate_in_reg2[0]), + .I3(rate_in_reg2[1]), + .I4(qpllpd), + .I5(QRST_QPLLPD_IN), + .O(qpllpd_i_1__3_n_0)); + FDRE #( + .INIT(1'b0)) + qpllpd_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qpllpd_i_1__3_n_0), + .Q(QRST_QPLLPD_IN), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h4044FFFF40440000)) + qpllreset_i_1__3 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(rate_in_reg2[0]), + .I3(rate_in_reg2[1]), + .I4(qpllreset), + .I5(QRST_QPLLRESET_IN), + .O(qpllreset_i_1__3_n_0)); + FDRE #( + .INIT(1'b0)) + qpllreset_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qpllreset_i_1__3_n_0), + .Q(QRST_QPLLRESET_IN), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair198" *) + LUT5 #( + .INIT(32'h00000080)) + rate_done_reg1_i_1__2 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(\fsm_reg_n_0_[1] ), + .O(USER_RATE_DONE)); + (* SOFT_HLUTNM = "soft_lutpair200" *) + LUT5 #( + .INIT(32'h00000001)) + \rate_idle_reg1[3]_i_1 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[4] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[3] ), + .O(SYNC_RATE_IDLE)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_in_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rate_in_reg1_reg[0]_0 ), + .Q(rate_in_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_in_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rate_in_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_in_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rate_in_reg1[0]), + .Q(rate_in_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_in_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rate_in_reg1[1]), + .Q(rate_in_reg2[1]), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0444FFFF04440000)) + \rate_out[0]_i_1__2 + (.I0(rate_in_reg2[1]), + .I1(rate_in_reg2[0]), + .I2(\fsm_reg_n_0_[4] ), + .I3(\fsm_reg_n_0_[3] ), + .I4(\rate_out[0]_i_2__2_n_0 ), + .I5(RXRATE), + .O(\rate_out[0]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'h8002020080000200)) + \rate_out[0]_i_2__2 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[4] ), + .I4(\fsm_reg_n_0_[3] ), + .I5(txpmareset0), + .O(\rate_out[0]_i_2__2_n_0 )); + LUT3 #( + .INIT(8'hBA)) + \rate_out[0]_i_3__2 + (.I0(gen3_exit), + .I1(rate_in_reg2[0]), + .I2(rate_in_reg2[1]), + .O(txpmareset0)); + FDRE #( + .INIT(1'b0)) + \rate_out_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rate_out[0]_i_1__2_n_0 ), + .Q(RXRATE), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair197" *) + LUT5 #( + .INIT(32'h08800000)) + rate_rxsync_reg1_i_1__2 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(\fsm_reg_n_0_[2] ), + .O(USER_RATE_RXSYNC)); + LUT6 #( + .INIT(64'hA3333333A0000000)) + ratedone_i_1__2 + (.I0(ratedone_i_2__2_n_0), + .I1(ratedone_i_3__2_n_0), + .I2(rxratedone), + .I3(phystatus), + .I4(txratedone), + .I5(ratedone), + .O(ratedone_i_1__2_n_0)); + (* SOFT_HLUTNM = "soft_lutpair196" *) + LUT5 #( + .INIT(32'h00080000)) + ratedone_i_2__2 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[4] ), + .I2(\fsm_reg_n_0_[3] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[0] ), + .O(ratedone_i_2__2_n_0)); + (* SOFT_HLUTNM = "soft_lutpair196" *) + LUT5 #( + .INIT(32'hFDFFFFFF)) + ratedone_i_3__2 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[3] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[2] ), + .I4(\fsm_reg_n_0_[4] ), + .O(ratedone_i_3__2_n_0)); + FDRE #( + .INIT(1'b0)) + ratedone_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(ratedone_i_1__2_n_0), + .Q(ratedone), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE resetovrd_done_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b1), + .Q(resetovrd_done_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE resetovrd_done_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(resetovrd_done_reg1), + .Q(resetovrd_done_reg2), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair199" *) + LUT5 #( + .INIT(32'h00000080)) + resetovrd_start_reg1_i_1__2 + (.I0(\fsm_reg_n_0_[4] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[0] ), + .I4(\fsm_reg_n_0_[3] ), + .O(USER_RESETOVRD_START)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rst_idle_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RST_IDLE), + .Q(rst_idle_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rst_idle_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rst_idle_reg1), + .Q(rst_idle_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxpmaresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxpmaresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxpmaresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxpmaresetdone_reg1), + .Q(rxpmaresetdone_reg2), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0800080008000000)) + rxratedone_i_1__2 + (.I0(\fsm_reg_n_0_[4] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(txratedone_i_2__2_n_0), + .I3(\fsm_reg_n_0_[0] ), + .I4(rxratedone_reg2), + .I5(rxratedone), + .O(rxratedone_i_1__2_n_0)); + FDRE #( + .INIT(1'b0)) + rxratedone_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxratedone_i_1__2_n_0), + .Q(rxratedone), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxratedone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RATE_RXRATEDONE), + .Q(rxratedone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxratedone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxratedone_reg1), + .Q(rxratedone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_RXRESETDONE), + .Q(rxresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxresetdone_reg1), + .Q(rxresetdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsync_done_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxsync_done_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsync_done_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxsync_done_reg1), + .Q(rxsync_done_reg2), + .R(RST_CPLLRESET)); + (* SOFT_HLUTNM = "soft_lutpair197" *) + LUT5 #( + .INIT(32'h08000000)) + rxsync_start_reg1_i_1__2 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[4] ), + .I4(\fsm_reg_n_0_[3] ), + .O(SYNC_RXSYNC_START)); + LUT6 #( + .INIT(64'h0FFFFF4F00000040)) + \sysclksel[0]_i_1__2 + (.I0(rate_in_reg2[0]), + .I1(rate_in_reg2[1]), + .I2(\sysclksel[0]_i_2__2_n_0 ), + .I3(\fsm_reg_n_0_[3] ), + .I4(\fsm_reg_n_0_[4] ), + .I5(RXSYSCLKSEL), + .O(\sysclksel[0]_i_1__2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair201" *) + LUT3 #( + .INIT(8'h80)) + \sysclksel[0]_i_2__2 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[0] ), + .O(\sysclksel[0]_i_2__2_n_0 )); + FDRE #( + .INIT(1'b0)) + \sysclksel_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\sysclksel[0]_i_1__2_n_0 ), + .Q(RXSYSCLKSEL), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'hB333000000000000)) + \txdata_wait_cnt[0]_i_1__2 + (.I0(txdata_wait_cnt_reg[1]), + .I1(txdata_wait_cnt_reg[0]), + .I2(txdata_wait_cnt_reg[2]), + .I3(txdata_wait_cnt_reg[3]), + .I4(\txdata_wait_cnt[3]_i_2__2_n_0 ), + .I5(\txdata_wait_cnt[3]_i_3__2_n_0 ), + .O(p_0_in__0[0])); + LUT6 #( + .INIT(64'hE666000000000000)) + \txdata_wait_cnt[1]_i_1__2 + (.I0(txdata_wait_cnt_reg[1]), + .I1(txdata_wait_cnt_reg[0]), + .I2(txdata_wait_cnt_reg[2]), + .I3(txdata_wait_cnt_reg[3]), + .I4(\txdata_wait_cnt[3]_i_2__2_n_0 ), + .I5(\txdata_wait_cnt[3]_i_3__2_n_0 ), + .O(p_0_in__0[1])); + LUT6 #( + .INIT(64'hF878000000000000)) + \txdata_wait_cnt[2]_i_1__2 + (.I0(txdata_wait_cnt_reg[1]), + .I1(txdata_wait_cnt_reg[0]), + .I2(txdata_wait_cnt_reg[2]), + .I3(txdata_wait_cnt_reg[3]), + .I4(\txdata_wait_cnt[3]_i_2__2_n_0 ), + .I5(\txdata_wait_cnt[3]_i_3__2_n_0 ), + .O(p_0_in__0[2])); + LUT6 #( + .INIT(64'hFF80000000000000)) + \txdata_wait_cnt[3]_i_1__2 + (.I0(txdata_wait_cnt_reg[1]), + .I1(txdata_wait_cnt_reg[0]), + .I2(txdata_wait_cnt_reg[2]), + .I3(txdata_wait_cnt_reg[3]), + .I4(\txdata_wait_cnt[3]_i_2__2_n_0 ), + .I5(\txdata_wait_cnt[3]_i_3__2_n_0 ), + .O(p_0_in__0[3])); + (* SOFT_HLUTNM = "soft_lutpair201" *) + LUT3 #( + .INIT(8'h40)) + \txdata_wait_cnt[3]_i_2__2 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[2] ), + .O(\txdata_wait_cnt[3]_i_2__2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair193" *) + LUT2 #( + .INIT(4'h2)) + \txdata_wait_cnt[3]_i_3__2 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[4] ), + .O(\txdata_wait_cnt[3]_i_3__2_n_0 )); + FDRE #( + .INIT(1'b0)) + \txdata_wait_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[0]), + .Q(txdata_wait_cnt_reg[0]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txdata_wait_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[1]), + .Q(txdata_wait_cnt_reg[1]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txdata_wait_cnt_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[2]), + .Q(txdata_wait_cnt_reg[2]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \txdata_wait_cnt_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[3]), + .Q(txdata_wait_cnt_reg[3]), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h00F2FFFF00F20000)) + txpmareset_i_1__2 + (.I0(rate_in_reg2[1]), + .I1(rate_in_reg2[0]), + .I2(gen3_exit), + .I3(\fsm_reg_n_0_[3] ), + .I4(txpmareset_i_2__2_n_0), + .I5(rate_txpmareset_3), + .O(txpmareset_i_1__2_n_0)); + (* SOFT_HLUTNM = "soft_lutpair195" *) + LUT5 #( + .INIT(32'h80004200)) + txpmareset_i_2__2 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[3] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[4] ), + .O(txpmareset_i_2__2_n_0)); + FDRE #( + .INIT(1'b0)) + txpmareset_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txpmareset_i_1__2_n_0), + .Q(rate_txpmareset_3), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0800080008000000)) + txratedone_i_1__2 + (.I0(\fsm_reg_n_0_[4] ), + .I1(\fsm_reg_n_0_[2] ), + .I2(txratedone_i_2__2_n_0), + .I3(\fsm_reg_n_0_[0] ), + .I4(txratedone_reg2), + .I5(txratedone), + .O(txratedone_i_1__2_n_0)); + (* SOFT_HLUTNM = "soft_lutpair202" *) + LUT2 #( + .INIT(4'hE)) + txratedone_i_2__2 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[1] ), + .O(txratedone_i_2__2_n_0)); + FDRE #( + .INIT(1'b0)) + txratedone_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txratedone_i_1__2_n_0), + .Q(txratedone), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txratedone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RATE_TXRATEDONE), + .Q(txratedone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txratedone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txratedone_reg1), + .Q(txratedone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_TXRESETDONE), + .Q(txresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txresetdone_reg1), + .Q(txresetdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsync_done_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(RATE_TXSYNC_DONE), + .Q(txsync_done_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsync_done_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txsync_done_reg1), + .Q(txsync_done_reg2), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'hFFFFFFFF00004000)) + txsync_start_reg1_i_1__2 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[4] ), + .I3(\fsm_reg_n_0_[3] ), + .I4(\fsm_reg_n_0_[2] ), + .I5(RST_TXSYNC_START), + .O(SYNC_TXSYNC_START)); +endmodule + +module pcie_7x_0_pcie_7x_0_pipe_reset + (SS, + Q, + RST_CPLLRESET, + RST_RXUSRCLK_RESET, + RST_DCLK_RESET, + DRP_GTXRESET, + rst_userrdy, + pipe_pclk_in, + pipe_mmcm_lock_in, + D, + QRST_CPLLLOCK, + \rate_idle_reg1_reg[3]_0 , + \drp_done_reg1_reg[3]_0 , + \phystatus_reg1_reg[3]_0 , + \txsync_done_reg1_reg[3]_0 , + pipe_rxusrclk_in, + pipe_dclk_in, + QRST_IDLE, + \rxcdrlock_reg1_reg[3]_0 , + out); + output [0:0]SS; + output [1:0]Q; + output RST_CPLLRESET; + output RST_RXUSRCLK_RESET; + output RST_DCLK_RESET; + output DRP_GTXRESET; + output rst_userrdy; + input pipe_pclk_in; + input pipe_mmcm_lock_in; + input [3:0]D; + input [3:0]QRST_CPLLLOCK; + input [3:0]\rate_idle_reg1_reg[3]_0 ; + input [3:0]\drp_done_reg1_reg[3]_0 ; + input [3:0]\phystatus_reg1_reg[3]_0 ; + input [3:0]\txsync_done_reg1_reg[3]_0 ; + input pipe_rxusrclk_in; + input pipe_dclk_in; + input QRST_IDLE; + input [3:0]\rxcdrlock_reg1_reg[3]_0 ; + input out; + + wire [3:0]D; + wire DRP_GTXRESET; + wire \FSM_onehot_fsm[0]_i_1_n_0 ; + wire \FSM_onehot_fsm[10]_i_1_n_0 ; + wire \FSM_onehot_fsm[13]_i_1_n_0 ; + wire \FSM_onehot_fsm[14]_i_2_n_0 ; + wire \FSM_onehot_fsm[14]_i_3_n_0 ; + wire \FSM_onehot_fsm[14]_i_4_n_0 ; + wire \FSM_onehot_fsm[1]_i_1_n_0 ; + wire \FSM_onehot_fsm[1]_i_2_n_0 ; + wire \FSM_onehot_fsm[2]_i_1_n_0 ; + wire \FSM_onehot_fsm[2]_i_2_n_0 ; + wire \FSM_onehot_fsm[3]_i_1_n_0 ; + wire \FSM_onehot_fsm[4]_i_1_n_0 ; + wire \FSM_onehot_fsm[4]_i_2_n_0 ; + wire \FSM_onehot_fsm[5]_i_1_n_0 ; + wire \FSM_onehot_fsm[8]_i_1_n_0 ; + wire \FSM_onehot_fsm[8]_i_2_n_0 ; + wire \FSM_onehot_fsm[8]_i_3_n_0 ; + wire \FSM_onehot_fsm[9]_i_1_n_0 ; + wire \FSM_onehot_fsm_reg_n_0_[0] ; + wire \FSM_onehot_fsm_reg_n_0_[13] ; + wire \FSM_onehot_fsm_reg_n_0_[14] ; + wire \FSM_onehot_fsm_reg_n_0_[1] ; + wire \FSM_onehot_fsm_reg_n_0_[4] ; + wire \FSM_onehot_fsm_reg_n_0_[8] ; + wire \FSM_onehot_fsm_reg_n_0_[9] ; + wire [1:0]Q; + wire [3:0]QRST_CPLLLOCK; + wire QRST_IDLE; + wire [0:0]SS; + wire \cfg_wait_cnt[5]_i_2_n_0 ; + wire [5:0]cfg_wait_cnt_reg; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]cplllock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]cplllock_reg2; + wire cpllpd; + wire cpllreset; + wire cpllreset_i_1_n_0; + wire cpllreset_i_2_n_0; + wire dclk_rst; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire dclk_rst_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire dclk_rst_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]drp_done_reg1; + wire [3:0]\drp_done_reg1_reg[3]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]drp_done_reg2; + wire gtreset_i_1_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire mmcm_lock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire mmcm_lock_reg2; + wire out; + wire [5:0]p_0_in__0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]phystatus_reg1; + wire [3:0]\phystatus_reg1_reg[3]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]phystatus_reg2; + wire pipe_dclk_in; + wire pipe_mmcm_lock_in; + wire pipe_pclk_in; + wire pipe_rxusrclk_in; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire qpll_idle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire qpll_idle_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]rate_idle_reg1; + wire [3:0]\rate_idle_reg1_reg[3]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]rate_idle_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]resetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]resetdone_reg2; + wire rst_userrdy; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]rxcdrlock_reg1; + wire [3:0]\rxcdrlock_reg1_reg[3]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]rxcdrlock_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]rxpmaresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]rxpmaresetdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxusrclk_rst_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxusrclk_rst_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]txsync_done_reg1; + wire [3:0]\txsync_done_reg1_reg[3]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]txsync_done_reg2; + wire userrdy; + wire userrdy_i_1_n_0; + + assign RST_CPLLRESET = cpllreset; + assign RST_DCLK_RESET = dclk_rst_reg2; + assign RST_RXUSRCLK_RESET = rxusrclk_rst_reg2; + (* SOFT_HLUTNM = "soft_lutpair206" *) + LUT4 #( + .INIT(16'h4F44)) + \FSM_onehot_fsm[0]_i_1 + (.I0(\FSM_onehot_fsm[1]_i_2_n_0 ), + .I1(\FSM_onehot_fsm_reg_n_0_[1] ), + .I2(\FSM_onehot_fsm[8]_i_2_n_0 ), + .I3(\FSM_onehot_fsm_reg_n_0_[0] ), + .O(\FSM_onehot_fsm[0]_i_1_n_0 )); + LUT6 #( + .INIT(64'hEAAAAAAAAAAAAAAA)) + \FSM_onehot_fsm[10]_i_1 + (.I0(Q[1]), + .I1(txsync_done_reg2[3]), + .I2(txsync_done_reg2[0]), + .I3(txsync_done_reg2[2]), + .I4(txsync_done_reg2[1]), + .I5(\FSM_onehot_fsm_reg_n_0_[9] ), + .O(\FSM_onehot_fsm[10]_i_1_n_0 )); + LUT5 #( + .INIT(32'h80000000)) + \FSM_onehot_fsm[13]_i_1 + (.I0(\FSM_onehot_fsm_reg_n_0_[14] ), + .I1(rate_idle_reg2[3]), + .I2(rate_idle_reg2[0]), + .I3(rate_idle_reg2[2]), + .I4(rate_idle_reg2[1]), + .O(\FSM_onehot_fsm[13]_i_1_n_0 )); + LUT1 #( + .INIT(2'h1)) + \FSM_onehot_fsm[14]_i_1 + (.I0(out), + .O(SS)); + LUT4 #( + .INIT(16'hF888)) + \FSM_onehot_fsm[14]_i_2 + (.I0(\FSM_onehot_fsm[14]_i_3_n_0 ), + .I1(\FSM_onehot_fsm_reg_n_0_[14] ), + .I2(\FSM_onehot_fsm[14]_i_4_n_0 ), + .I3(\FSM_onehot_fsm_reg_n_0_[8] ), + .O(\FSM_onehot_fsm[14]_i_2_n_0 )); + LUT4 #( + .INIT(16'h7FFF)) + \FSM_onehot_fsm[14]_i_3 + (.I0(rate_idle_reg2[1]), + .I1(rate_idle_reg2[2]), + .I2(rate_idle_reg2[0]), + .I3(rate_idle_reg2[3]), + .O(\FSM_onehot_fsm[14]_i_3_n_0 )); + LUT4 #( + .INIT(16'h8000)) + \FSM_onehot_fsm[14]_i_4 + (.I0(cplllock_reg2[3]), + .I1(cplllock_reg2[0]), + .I2(cplllock_reg2[2]), + .I3(cplllock_reg2[1]), + .O(\FSM_onehot_fsm[14]_i_4_n_0 )); + LUT2 #( + .INIT(4'h8)) + \FSM_onehot_fsm[1]_i_1 + (.I0(\FSM_onehot_fsm_reg_n_0_[1] ), + .I1(\FSM_onehot_fsm[1]_i_2_n_0 ), + .O(\FSM_onehot_fsm[1]_i_1_n_0 )); + LUT6 #( + .INIT(64'h7FFFFFFFFFFFFFFF)) + \FSM_onehot_fsm[1]_i_2 + (.I0(cfg_wait_cnt_reg[4]), + .I1(cfg_wait_cnt_reg[3]), + .I2(cfg_wait_cnt_reg[5]), + .I3(cfg_wait_cnt_reg[0]), + .I4(cfg_wait_cnt_reg[1]), + .I5(cfg_wait_cnt_reg[2]), + .O(\FSM_onehot_fsm[1]_i_2_n_0 )); + LUT6 #( + .INIT(64'h0008000000000000)) + \FSM_onehot_fsm[2]_i_1 + (.I0(\FSM_onehot_fsm_reg_n_0_[4] ), + .I1(\FSM_onehot_fsm[2]_i_2_n_0 ), + .I2(phystatus_reg2[1]), + .I3(phystatus_reg2[0]), + .I4(resetdone_reg2[1]), + .I5(resetdone_reg2[0]), + .O(\FSM_onehot_fsm[2]_i_1_n_0 )); + LUT4 #( + .INIT(16'h1000)) + \FSM_onehot_fsm[2]_i_2 + (.I0(phystatus_reg2[3]), + .I1(phystatus_reg2[2]), + .I2(resetdone_reg2[3]), + .I3(resetdone_reg2[2]), + .O(\FSM_onehot_fsm[2]_i_2_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFEAAAAAAAA)) + \FSM_onehot_fsm[3]_i_1 + (.I0(cpllpd), + .I1(txsync_done_reg2[3]), + .I2(txsync_done_reg2[0]), + .I3(txsync_done_reg2[2]), + .I4(txsync_done_reg2[1]), + .I5(Q[0]), + .O(\FSM_onehot_fsm[3]_i_1_n_0 )); + LUT4 #( + .INIT(16'hF888)) + \FSM_onehot_fsm[4]_i_1 + (.I0(userrdy), + .I1(mmcm_lock_reg2), + .I2(\FSM_onehot_fsm[4]_i_2_n_0 ), + .I3(\FSM_onehot_fsm_reg_n_0_[4] ), + .O(\FSM_onehot_fsm[4]_i_1_n_0 )); + LUT5 #( + .INIT(32'hFFF7FFFF)) + \FSM_onehot_fsm[4]_i_2 + (.I0(resetdone_reg2[0]), + .I1(resetdone_reg2[1]), + .I2(phystatus_reg2[0]), + .I3(phystatus_reg2[1]), + .I4(\FSM_onehot_fsm[2]_i_2_n_0 ), + .O(\FSM_onehot_fsm[4]_i_2_n_0 )); + LUT3 #( + .INIT(8'hBA)) + \FSM_onehot_fsm[5]_i_1 + (.I0(\FSM_onehot_fsm_reg_n_0_[13] ), + .I1(mmcm_lock_reg2), + .I2(userrdy), + .O(\FSM_onehot_fsm[5]_i_1_n_0 )); + LUT4 #( + .INIT(16'hF444)) + \FSM_onehot_fsm[8]_i_1 + (.I0(\FSM_onehot_fsm[14]_i_4_n_0 ), + .I1(\FSM_onehot_fsm_reg_n_0_[8] ), + .I2(\FSM_onehot_fsm[8]_i_2_n_0 ), + .I3(\FSM_onehot_fsm_reg_n_0_[0] ), + .O(\FSM_onehot_fsm[8]_i_1_n_0 )); + LUT5 #( + .INIT(32'h00000001)) + \FSM_onehot_fsm[8]_i_2 + (.I0(resetdone_reg2[1]), + .I1(resetdone_reg2[2]), + .I2(resetdone_reg2[0]), + .I3(resetdone_reg2[3]), + .I4(\FSM_onehot_fsm[8]_i_3_n_0 ), + .O(\FSM_onehot_fsm[8]_i_2_n_0 )); + LUT4 #( + .INIT(16'hFFFE)) + \FSM_onehot_fsm[8]_i_3 + (.I0(cplllock_reg2[3]), + .I1(cplllock_reg2[1]), + .I2(cplllock_reg2[2]), + .I3(cplllock_reg2[0]), + .O(\FSM_onehot_fsm[8]_i_3_n_0 )); + LUT6 #( + .INIT(64'h2AAAAAAB2AAAAAAA)) + \FSM_onehot_fsm[9]_i_1 + (.I0(\FSM_onehot_fsm_reg_n_0_[9] ), + .I1(txsync_done_reg2[3]), + .I2(txsync_done_reg2[0]), + .I3(txsync_done_reg2[2]), + .I4(txsync_done_reg2[1]), + .I5(Q[0]), + .O(\FSM_onehot_fsm[9]_i_1_n_0 )); + (* FSM_ENCODED_STATES = "FSM_CPLL_PD:00000000000000100,FSM_RESETDONE:00000000000010000,FSM_MMCM_LOCK:00000000000100000,FSM_DRP_X16_START:00000000001000000,FSM_CPLLRESET:00000000000000001,FSM_TXSYNC_DONE:00000001000000000,FSM_CFG_WAIT:00000000000000010,FSM_DRP_X20_DONE:00000100000000000,FSM_IDLE:00000010000000000,FSM_DRP_X20_START:00001000000000000,FSM_GTRESET:00010000000000000,FSM_DRP:00100000000000000,FSM_RXPMARESETDONE_2:01000000000000000,FSM_RXPMARESETDONE_1:10000000000000000,FSM_CPLLLOCK:00000000100000000,FSM_DRP_X16_DONE:00000000010000000,FSM_TXSYNC_START:00000000000001000" *) + FDRE #( + .INIT(1'b1)) + \FSM_onehot_fsm_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[0]_i_1_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[0] ), + .R(SS)); + (* FSM_ENCODED_STATES = "FSM_CPLL_PD:00000000000000100,FSM_RESETDONE:00000000000010000,FSM_MMCM_LOCK:00000000000100000,FSM_DRP_X16_START:00000000001000000,FSM_CPLLRESET:00000000000000001,FSM_TXSYNC_DONE:00000001000000000,FSM_CFG_WAIT:00000000000000010,FSM_DRP_X20_DONE:00000100000000000,FSM_IDLE:00000010000000000,FSM_DRP_X20_START:00001000000000000,FSM_GTRESET:00010000000000000,FSM_DRP:00100000000000000,FSM_RXPMARESETDONE_2:01000000000000000,FSM_RXPMARESETDONE_1:10000000000000000,FSM_CPLLLOCK:00000000100000000,FSM_DRP_X16_DONE:00000000010000000,FSM_TXSYNC_START:00000000000001000" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[10]_i_1_n_0 ), + .Q(Q[1]), + .R(SS)); + (* FSM_ENCODED_STATES = "FSM_CPLL_PD:00000000000000100,FSM_RESETDONE:00000000000010000,FSM_MMCM_LOCK:00000000000100000,FSM_DRP_X16_START:00000000001000000,FSM_CPLLRESET:00000000000000001,FSM_TXSYNC_DONE:00000001000000000,FSM_CFG_WAIT:00000000000000010,FSM_DRP_X20_DONE:00000100000000000,FSM_IDLE:00000010000000000,FSM_DRP_X20_START:00001000000000000,FSM_GTRESET:00010000000000000,FSM_DRP:00100000000000000,FSM_RXPMARESETDONE_2:01000000000000000,FSM_RXPMARESETDONE_1:10000000000000000,FSM_CPLLLOCK:00000000100000000,FSM_DRP_X16_DONE:00000000010000000,FSM_TXSYNC_START:00000000000001000" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[13]_i_1_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[13] ), + .R(SS)); + (* FSM_ENCODED_STATES = "FSM_CPLL_PD:00000000000000100,FSM_RESETDONE:00000000000010000,FSM_MMCM_LOCK:00000000000100000,FSM_DRP_X16_START:00000000001000000,FSM_CPLLRESET:00000000000000001,FSM_TXSYNC_DONE:00000001000000000,FSM_CFG_WAIT:00000000000000010,FSM_DRP_X20_DONE:00000100000000000,FSM_IDLE:00000010000000000,FSM_DRP_X20_START:00001000000000000,FSM_GTRESET:00010000000000000,FSM_DRP:00100000000000000,FSM_RXPMARESETDONE_2:01000000000000000,FSM_RXPMARESETDONE_1:10000000000000000,FSM_CPLLLOCK:00000000100000000,FSM_DRP_X16_DONE:00000000010000000,FSM_TXSYNC_START:00000000000001000" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[14]_i_2_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[14] ), + .R(SS)); + (* FSM_ENCODED_STATES = "FSM_CPLL_PD:00000000000000100,FSM_RESETDONE:00000000000010000,FSM_MMCM_LOCK:00000000000100000,FSM_DRP_X16_START:00000000001000000,FSM_CPLLRESET:00000000000000001,FSM_TXSYNC_DONE:00000001000000000,FSM_CFG_WAIT:00000000000000010,FSM_DRP_X20_DONE:00000100000000000,FSM_IDLE:00000010000000000,FSM_DRP_X20_START:00001000000000000,FSM_GTRESET:00010000000000000,FSM_DRP:00100000000000000,FSM_RXPMARESETDONE_2:01000000000000000,FSM_RXPMARESETDONE_1:10000000000000000,FSM_CPLLLOCK:00000000100000000,FSM_DRP_X16_DONE:00000000010000000,FSM_TXSYNC_START:00000000000001000" *) + FDSE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[1]_i_1_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[1] ), + .S(SS)); + (* FSM_ENCODED_STATES = "FSM_CPLL_PD:00000000000000100,FSM_RESETDONE:00000000000010000,FSM_MMCM_LOCK:00000000000100000,FSM_DRP_X16_START:00000000001000000,FSM_CPLLRESET:00000000000000001,FSM_TXSYNC_DONE:00000001000000000,FSM_CFG_WAIT:00000000000000010,FSM_DRP_X20_DONE:00000100000000000,FSM_IDLE:00000010000000000,FSM_DRP_X20_START:00001000000000000,FSM_GTRESET:00010000000000000,FSM_DRP:00100000000000000,FSM_RXPMARESETDONE_2:01000000000000000,FSM_RXPMARESETDONE_1:10000000000000000,FSM_CPLLLOCK:00000000100000000,FSM_DRP_X16_DONE:00000000010000000,FSM_TXSYNC_START:00000000000001000" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[2]_i_1_n_0 ), + .Q(cpllpd), + .R(SS)); + (* FSM_ENCODED_STATES = "FSM_CPLL_PD:00000000000000100,FSM_RESETDONE:00000000000010000,FSM_MMCM_LOCK:00000000000100000,FSM_DRP_X16_START:00000000001000000,FSM_CPLLRESET:00000000000000001,FSM_TXSYNC_DONE:00000001000000000,FSM_CFG_WAIT:00000000000000010,FSM_DRP_X20_DONE:00000100000000000,FSM_IDLE:00000010000000000,FSM_DRP_X20_START:00001000000000000,FSM_GTRESET:00010000000000000,FSM_DRP:00100000000000000,FSM_RXPMARESETDONE_2:01000000000000000,FSM_RXPMARESETDONE_1:10000000000000000,FSM_CPLLLOCK:00000000100000000,FSM_DRP_X16_DONE:00000000010000000,FSM_TXSYNC_START:00000000000001000" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[3]_i_1_n_0 ), + .Q(Q[0]), + .R(SS)); + (* FSM_ENCODED_STATES = "FSM_CPLL_PD:00000000000000100,FSM_RESETDONE:00000000000010000,FSM_MMCM_LOCK:00000000000100000,FSM_DRP_X16_START:00000000001000000,FSM_CPLLRESET:00000000000000001,FSM_TXSYNC_DONE:00000001000000000,FSM_CFG_WAIT:00000000000000010,FSM_DRP_X20_DONE:00000100000000000,FSM_IDLE:00000010000000000,FSM_DRP_X20_START:00001000000000000,FSM_GTRESET:00010000000000000,FSM_DRP:00100000000000000,FSM_RXPMARESETDONE_2:01000000000000000,FSM_RXPMARESETDONE_1:10000000000000000,FSM_CPLLLOCK:00000000100000000,FSM_DRP_X16_DONE:00000000010000000,FSM_TXSYNC_START:00000000000001000" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[4]_i_1_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[4] ), + .R(SS)); + (* FSM_ENCODED_STATES = "FSM_CPLL_PD:00000000000000100,FSM_RESETDONE:00000000000010000,FSM_MMCM_LOCK:00000000000100000,FSM_DRP_X16_START:00000000001000000,FSM_CPLLRESET:00000000000000001,FSM_TXSYNC_DONE:00000001000000000,FSM_CFG_WAIT:00000000000000010,FSM_DRP_X20_DONE:00000100000000000,FSM_IDLE:00000010000000000,FSM_DRP_X20_START:00001000000000000,FSM_GTRESET:00010000000000000,FSM_DRP:00100000000000000,FSM_RXPMARESETDONE_2:01000000000000000,FSM_RXPMARESETDONE_1:10000000000000000,FSM_CPLLLOCK:00000000100000000,FSM_DRP_X16_DONE:00000000010000000,FSM_TXSYNC_START:00000000000001000" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[5]_i_1_n_0 ), + .Q(userrdy), + .R(SS)); + (* FSM_ENCODED_STATES = "FSM_CPLL_PD:00000000000000100,FSM_RESETDONE:00000000000010000,FSM_MMCM_LOCK:00000000000100000,FSM_DRP_X16_START:00000000001000000,FSM_CPLLRESET:00000000000000001,FSM_TXSYNC_DONE:00000001000000000,FSM_CFG_WAIT:00000000000000010,FSM_DRP_X20_DONE:00000100000000000,FSM_IDLE:00000010000000000,FSM_DRP_X20_START:00001000000000000,FSM_GTRESET:00010000000000000,FSM_DRP:00100000000000000,FSM_RXPMARESETDONE_2:01000000000000000,FSM_RXPMARESETDONE_1:10000000000000000,FSM_CPLLLOCK:00000000100000000,FSM_DRP_X16_DONE:00000000010000000,FSM_TXSYNC_START:00000000000001000" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[8]_i_1_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[8] ), + .R(SS)); + (* FSM_ENCODED_STATES = "FSM_CPLL_PD:00000000000000100,FSM_RESETDONE:00000000000010000,FSM_MMCM_LOCK:00000000000100000,FSM_DRP_X16_START:00000000001000000,FSM_CPLLRESET:00000000000000001,FSM_TXSYNC_DONE:00000001000000000,FSM_CFG_WAIT:00000000000000010,FSM_DRP_X20_DONE:00000100000000000,FSM_IDLE:00000010000000000,FSM_DRP_X20_START:00001000000000000,FSM_GTRESET:00010000000000000,FSM_DRP:00100000000000000,FSM_RXPMARESETDONE_2:01000000000000000,FSM_RXPMARESETDONE_1:10000000000000000,FSM_CPLLLOCK:00000000100000000,FSM_DRP_X16_DONE:00000000010000000,FSM_TXSYNC_START:00000000000001000" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[9]_i_1_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[9] ), + .R(SS)); + (* SOFT_HLUTNM = "soft_lutpair206" *) + LUT3 #( + .INIT(8'h2A)) + \cfg_wait_cnt[0]_i_1 + (.I0(\FSM_onehot_fsm_reg_n_0_[1] ), + .I1(\FSM_onehot_fsm[1]_i_2_n_0 ), + .I2(cfg_wait_cnt_reg[0]), + .O(p_0_in__0[0])); + (* SOFT_HLUTNM = "soft_lutpair204" *) + LUT4 #( + .INIT(16'h28AA)) + \cfg_wait_cnt[1]_i_1 + (.I0(\FSM_onehot_fsm_reg_n_0_[1] ), + .I1(cfg_wait_cnt_reg[0]), + .I2(cfg_wait_cnt_reg[1]), + .I3(\FSM_onehot_fsm[1]_i_2_n_0 ), + .O(p_0_in__0[1])); + (* SOFT_HLUTNM = "soft_lutpair204" *) + LUT5 #( + .INIT(32'h2888AAAA)) + \cfg_wait_cnt[2]_i_1 + (.I0(\FSM_onehot_fsm_reg_n_0_[1] ), + .I1(cfg_wait_cnt_reg[2]), + .I2(cfg_wait_cnt_reg[1]), + .I3(cfg_wait_cnt_reg[0]), + .I4(\FSM_onehot_fsm[1]_i_2_n_0 ), + .O(p_0_in__0[2])); + LUT6 #( + .INIT(64'h28888888AAAAAAAA)) + \cfg_wait_cnt[3]_i_1 + (.I0(\FSM_onehot_fsm_reg_n_0_[1] ), + .I1(cfg_wait_cnt_reg[3]), + .I2(cfg_wait_cnt_reg[0]), + .I3(cfg_wait_cnt_reg[1]), + .I4(cfg_wait_cnt_reg[2]), + .I5(\FSM_onehot_fsm[1]_i_2_n_0 ), + .O(p_0_in__0[3])); + (* SOFT_HLUTNM = "soft_lutpair205" *) + LUT5 #( + .INIT(32'hEA006A00)) + \cfg_wait_cnt[4]_i_1 + (.I0(cfg_wait_cnt_reg[4]), + .I1(\cfg_wait_cnt[5]_i_2_n_0 ), + .I2(cfg_wait_cnt_reg[3]), + .I3(\FSM_onehot_fsm_reg_n_0_[1] ), + .I4(cfg_wait_cnt_reg[5]), + .O(p_0_in__0[4])); + (* SOFT_HLUTNM = "soft_lutpair205" *) + LUT5 #( + .INIT(32'hA8888888)) + \cfg_wait_cnt[5]_i_1 + (.I0(\FSM_onehot_fsm_reg_n_0_[1] ), + .I1(cfg_wait_cnt_reg[5]), + .I2(\cfg_wait_cnt[5]_i_2_n_0 ), + .I3(cfg_wait_cnt_reg[3]), + .I4(cfg_wait_cnt_reg[4]), + .O(p_0_in__0[5])); + LUT3 #( + .INIT(8'h80)) + \cfg_wait_cnt[5]_i_2 + (.I0(cfg_wait_cnt_reg[2]), + .I1(cfg_wait_cnt_reg[1]), + .I2(cfg_wait_cnt_reg[0]), + .O(\cfg_wait_cnt[5]_i_2_n_0 )); + FDRE #( + .INIT(1'b0)) + \cfg_wait_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[0]), + .Q(cfg_wait_cnt_reg[0]), + .R(SS)); + FDRE #( + .INIT(1'b0)) + \cfg_wait_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[1]), + .Q(cfg_wait_cnt_reg[1]), + .R(SS)); + FDRE #( + .INIT(1'b0)) + \cfg_wait_cnt_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[2]), + .Q(cfg_wait_cnt_reg[2]), + .R(SS)); + FDRE #( + .INIT(1'b0)) + \cfg_wait_cnt_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[3]), + .Q(cfg_wait_cnt_reg[3]), + .R(SS)); + FDRE #( + .INIT(1'b0)) + \cfg_wait_cnt_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[4]), + .Q(cfg_wait_cnt_reg[4]), + .R(SS)); + FDRE #( + .INIT(1'b0)) + \cfg_wait_cnt_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[5]), + .Q(cfg_wait_cnt_reg[5]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \cplllock_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(QRST_CPLLLOCK[0]), + .Q(cplllock_reg1[0]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \cplllock_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(QRST_CPLLLOCK[1]), + .Q(cplllock_reg1[1]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \cplllock_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(QRST_CPLLLOCK[2]), + .Q(cplllock_reg1[2]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \cplllock_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(QRST_CPLLLOCK[3]), + .Q(cplllock_reg1[3]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \cplllock_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(cplllock_reg1[0]), + .Q(cplllock_reg2[0]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \cplllock_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(cplllock_reg1[1]), + .Q(cplllock_reg2[1]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \cplllock_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(cplllock_reg1[2]), + .Q(cplllock_reg2[2]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \cplllock_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(cplllock_reg1[3]), + .Q(cplllock_reg2[3]), + .R(SS)); + LUT6 #( + .INIT(64'hFFFFFFFEAAAAAAAA)) + cpllreset_i_1 + (.I0(\FSM_onehot_fsm_reg_n_0_[0] ), + .I1(Q[1]), + .I2(userrdy), + .I3(\FSM_onehot_fsm_reg_n_0_[1] ), + .I4(cpllreset_i_2_n_0), + .I5(cpllreset), + .O(cpllreset_i_1_n_0)); + LUT6 #( + .INIT(64'hFFFFFFFFFFFFFFFE)) + cpllreset_i_2 + (.I0(Q[0]), + .I1(cpllpd), + .I2(\FSM_onehot_fsm_reg_n_0_[9] ), + .I3(\FSM_onehot_fsm_reg_n_0_[14] ), + .I4(\FSM_onehot_fsm_reg_n_0_[13] ), + .I5(\FSM_onehot_fsm_reg_n_0_[4] ), + .O(cpllreset_i_2_n_0)); + FDRE #( + .INIT(1'b0)) + cpllreset_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(cpllreset_i_1_n_0), + .Q(cpllreset), + .R(SS)); + FDRE #( + .INIT(1'b0)) + dclk_rst_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm_reg_n_0_[1] ), + .Q(dclk_rst), + .R(1'b0)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE #( + .INIT(1'b0)) + dclk_rst_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(dclk_rst), + .Q(dclk_rst_reg1), + .R(1'b0)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE #( + .INIT(1'b0)) + dclk_rst_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(dclk_rst_reg1), + .Q(dclk_rst_reg2), + .R(1'b0)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \drp_done_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\drp_done_reg1_reg[3]_0 [0]), + .Q(drp_done_reg1[0]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \drp_done_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\drp_done_reg1_reg[3]_0 [1]), + .Q(drp_done_reg1[1]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \drp_done_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\drp_done_reg1_reg[3]_0 [2]), + .Q(drp_done_reg1[2]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \drp_done_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\drp_done_reg1_reg[3]_0 [3]), + .Q(drp_done_reg1[3]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \drp_done_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(drp_done_reg1[0]), + .Q(drp_done_reg2[0]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \drp_done_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(drp_done_reg1[1]), + .Q(drp_done_reg2[1]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \drp_done_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(drp_done_reg1[2]), + .Q(drp_done_reg2[2]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \drp_done_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(drp_done_reg1[3]), + .Q(drp_done_reg2[3]), + .R(SS)); + LUT3 #( + .INIT(8'hDC)) + gtreset_i_1 + (.I0(\FSM_onehot_fsm_reg_n_0_[13] ), + .I1(\FSM_onehot_fsm_reg_n_0_[0] ), + .I2(DRP_GTXRESET), + .O(gtreset_i_1_n_0)); + FDRE #( + .INIT(1'b0)) + gtreset_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gtreset_i_1_n_0), + .Q(DRP_GTXRESET), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE mmcm_lock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_mmcm_lock_in), + .Q(mmcm_lock_reg1), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE mmcm_lock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(mmcm_lock_reg1), + .Q(mmcm_lock_reg2), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \phystatus_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\phystatus_reg1_reg[3]_0 [0]), + .Q(phystatus_reg1[0]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \phystatus_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\phystatus_reg1_reg[3]_0 [1]), + .Q(phystatus_reg1[1]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \phystatus_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\phystatus_reg1_reg[3]_0 [2]), + .Q(phystatus_reg1[2]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \phystatus_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\phystatus_reg1_reg[3]_0 [3]), + .Q(phystatus_reg1[3]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \phystatus_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(phystatus_reg1[0]), + .Q(phystatus_reg2[0]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \phystatus_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(phystatus_reg1[1]), + .Q(phystatus_reg2[1]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \phystatus_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(phystatus_reg1[2]), + .Q(phystatus_reg2[2]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \phystatus_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(phystatus_reg1[3]), + .Q(phystatus_reg2[3]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE qpll_idle_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(QRST_IDLE), + .Q(qpll_idle_reg1), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE qpll_idle_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qpll_idle_reg1), + .Q(qpll_idle_reg2), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_idle_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rate_idle_reg1_reg[3]_0 [0]), + .Q(rate_idle_reg1[0]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_idle_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rate_idle_reg1_reg[3]_0 [1]), + .Q(rate_idle_reg1[1]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_idle_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rate_idle_reg1_reg[3]_0 [2]), + .Q(rate_idle_reg1[2]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_idle_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rate_idle_reg1_reg[3]_0 [3]), + .Q(rate_idle_reg1[3]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_idle_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rate_idle_reg1[0]), + .Q(rate_idle_reg2[0]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_idle_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rate_idle_reg1[1]), + .Q(rate_idle_reg2[1]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_idle_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rate_idle_reg1[2]), + .Q(rate_idle_reg2[2]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_idle_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rate_idle_reg1[3]), + .Q(rate_idle_reg2[3]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \resetdone_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(D[0]), + .Q(resetdone_reg1[0]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \resetdone_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(D[1]), + .Q(resetdone_reg1[1]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \resetdone_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(D[2]), + .Q(resetdone_reg1[2]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \resetdone_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(D[3]), + .Q(resetdone_reg1[3]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \resetdone_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(resetdone_reg1[0]), + .Q(resetdone_reg2[0]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \resetdone_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(resetdone_reg1[1]), + .Q(resetdone_reg2[1]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \resetdone_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(resetdone_reg1[2]), + .Q(resetdone_reg2[2]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \resetdone_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(resetdone_reg1[3]), + .Q(resetdone_reg2[3]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxcdrlock_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rxcdrlock_reg1_reg[3]_0 [0]), + .Q(rxcdrlock_reg1[0]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxcdrlock_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rxcdrlock_reg1_reg[3]_0 [1]), + .Q(rxcdrlock_reg1[1]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxcdrlock_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rxcdrlock_reg1_reg[3]_0 [2]), + .Q(rxcdrlock_reg1[2]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxcdrlock_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rxcdrlock_reg1_reg[3]_0 [3]), + .Q(rxcdrlock_reg1[3]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxcdrlock_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxcdrlock_reg1[0]), + .Q(rxcdrlock_reg2[0]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxcdrlock_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxcdrlock_reg1[1]), + .Q(rxcdrlock_reg2[1]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxcdrlock_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxcdrlock_reg1[2]), + .Q(rxcdrlock_reg2[2]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxcdrlock_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxcdrlock_reg1[3]), + .Q(rxcdrlock_reg2[3]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxpmaresetdone_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxpmaresetdone_reg1[0]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxpmaresetdone_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxpmaresetdone_reg1[1]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxpmaresetdone_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxpmaresetdone_reg1[2]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxpmaresetdone_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxpmaresetdone_reg1[3]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxpmaresetdone_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxpmaresetdone_reg1[0]), + .Q(rxpmaresetdone_reg2[0]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxpmaresetdone_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxpmaresetdone_reg1[1]), + .Q(rxpmaresetdone_reg2[1]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxpmaresetdone_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxpmaresetdone_reg1[2]), + .Q(rxpmaresetdone_reg2[2]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rxpmaresetdone_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxpmaresetdone_reg1[3]), + .Q(rxpmaresetdone_reg2[3]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE #( + .INIT(1'b0)) + rxusrclk_rst_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(cpllreset), + .Q(rxusrclk_rst_reg1), + .R(1'b0)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE #( + .INIT(1'b0)) + rxusrclk_rst_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rxusrclk_rst_reg1), + .Q(rxusrclk_rst_reg2), + .R(1'b0)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txsync_done_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txsync_done_reg1_reg[3]_0 [0]), + .Q(txsync_done_reg1[0]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txsync_done_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txsync_done_reg1_reg[3]_0 [1]), + .Q(txsync_done_reg1[1]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txsync_done_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txsync_done_reg1_reg[3]_0 [2]), + .Q(txsync_done_reg1[2]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txsync_done_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txsync_done_reg1_reg[3]_0 [3]), + .Q(txsync_done_reg1[3]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txsync_done_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txsync_done_reg1[0]), + .Q(txsync_done_reg2[0]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txsync_done_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txsync_done_reg1[1]), + .Q(txsync_done_reg2[1]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txsync_done_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txsync_done_reg1[2]), + .Q(txsync_done_reg2[2]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txsync_done_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txsync_done_reg1[3]), + .Q(txsync_done_reg2[3]), + .R(SS)); + LUT3 #( + .INIT(8'hB8)) + userrdy_i_1 + (.I0(mmcm_lock_reg2), + .I1(userrdy), + .I2(rst_userrdy), + .O(userrdy_i_1_n_0)); + FDRE #( + .INIT(1'b0)) + userrdy_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(userrdy_i_1_n_0), + .Q(rst_userrdy), + .R(SS)); +endmodule + +module pcie_7x_0_pcie_7x_0_pipe_sync + (out, + txphaligndone_reg3_reg_0, + sync_txdlyen_0, + RST_TXSYNC_DONE, + Q, + RST_CPLLRESET, + SYNC_TXPHALIGNDONE, + pipe_pclk_in, + SYNC_TXSYNC_START, + pipe_mmcm_lock_in, + SYNC_TXDLYSRESETDONE, + SYNC_TXPHINITDONE, + USER_RATE_GEN3, + SYNC_RATE_IDLE, + gt_rx_elec_idle_wire_filter, + SYNC_RXCDRLOCK, + SYNC_RXSYNC_START, + SYNC_RXDLYSRESETDONE, + SYNC_RXPHALIGNDONE_M, + SYNC_RXPHALIGNDONE_S, + \FSM_onehot_txsync_fsm.fsm_tx_reg[5]_0 , + user_active_lane_0, + \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0 , + \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_1 ); + output out; + output txphaligndone_reg3_reg_0; + output sync_txdlyen_0; + output [0:0]RST_TXSYNC_DONE; + output [2:0]Q; + input RST_CPLLRESET; + input SYNC_TXPHALIGNDONE; + input pipe_pclk_in; + input SYNC_TXSYNC_START; + input pipe_mmcm_lock_in; + input SYNC_TXDLYSRESETDONE; + input SYNC_TXPHINITDONE; + input USER_RATE_GEN3; + input SYNC_RATE_IDLE; + input [0:0]gt_rx_elec_idle_wire_filter; + input SYNC_RXCDRLOCK; + input SYNC_RXSYNC_START; + input SYNC_RXDLYSRESETDONE; + input SYNC_RXPHALIGNDONE_M; + input SYNC_RXPHALIGNDONE_S; + input \FSM_onehot_txsync_fsm.fsm_tx_reg[5]_0 ; + input user_active_lane_0; + input \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0 ; + input \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_1 ; + + wire \FSM_onehot_txsync_fsm.fsm_tx[1]_i_1_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[2]_i_1_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[3]_i_1_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[4]_i_1_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[4]_i_2_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[5]_i_1_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[6]_i_1_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx_reg[5]_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_1 ; + wire \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1] ; + wire \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2] ; + wire \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6] ; + wire [2:0]Q; + wire RST_CPLLRESET; + wire [0:0]RST_TXSYNC_DONE; + wire SYNC_RATE_IDLE; + wire SYNC_RXCDRLOCK; + wire SYNC_RXDLYSRESETDONE; + wire SYNC_RXPHALIGNDONE_M; + wire SYNC_RXPHALIGNDONE_S; + wire SYNC_RXSYNC_START; + wire SYNC_TXDLYSRESETDONE; + wire SYNC_TXPHALIGNDONE; + wire SYNC_TXPHINITDONE; + wire SYNC_TXSYNC_START; + wire USER_RATE_GEN3; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gen3_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gen3_reg2; + wire [0:0]gt_rx_elec_idle_wire_filter; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire mmcm_lock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire mmcm_lock_reg2; + wire pipe_mmcm_lock_in; + wire pipe_pclk_in; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_idle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_idle_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxcdrlock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxcdrlock_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxdlysresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxdlysresetdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxelecidle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxelecidle_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxphaligndone_m_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxphaligndone_m_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxphaligndone_s_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxphaligndone_s_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsync_donem_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsync_donem_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsync_start_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsync_start_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsyncdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsyncdone_reg2; + wire sync_txdlyen_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txdlysresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txdlysresetdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txdlysresetdone_reg3; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txphaligndone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txphaligndone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txphaligndone_reg3; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txphinitdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txphinitdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txphinitdone_reg3; + wire \txsync_fsm.txdlyen_i_1_n_0 ; + wire \txsync_fsm.txsync_done_i_1_n_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsync_start_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsync_start_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsync_start_reg3; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsyncdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsyncdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsyncdone_reg3; + wire user_active_lane_0; + + assign out = txphaligndone_reg2; + assign txphaligndone_reg3_reg_0 = txphaligndone_reg3; + LUT5 #( + .INIT(32'h1D1DFF1D)) + \FSM_onehot_txsync_fsm.fsm_tx[1]_i_1 + (.I0(\FSM_onehot_txsync_fsm.fsm_tx[1]_i_2_n_0 ), + .I1(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1] ), + .I2(txsync_start_reg2), + .I3(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6] ), + .I4(\FSM_onehot_txsync_fsm.fsm_tx_reg[5]_0 ), + .O(\FSM_onehot_txsync_fsm.fsm_tx[1]_i_1_n_0 )); + LUT5 #( + .INIT(32'hFFFFFFFE)) + \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2 + (.I0(Q[1]), + .I1(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6] ), + .I2(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2] ), + .I3(Q[0]), + .I4(Q[2]), + .O(\FSM_onehot_txsync_fsm.fsm_tx[1]_i_2_n_0 )); + LUT4 #( + .INIT(16'hF444)) + \FSM_onehot_txsync_fsm.fsm_tx[2]_i_1 + (.I0(mmcm_lock_reg2), + .I1(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2] ), + .I2(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1] ), + .I3(txsync_start_reg2), + .O(\FSM_onehot_txsync_fsm.fsm_tx[2]_i_1_n_0 )); + LUT5 #( + .INIT(32'hFFD0D0D0)) + \FSM_onehot_txsync_fsm.fsm_tx[3]_i_1 + (.I0(txdlysresetdone_reg2), + .I1(txdlysresetdone_reg3), + .I2(Q[0]), + .I3(mmcm_lock_reg2), + .I4(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2] ), + .O(\FSM_onehot_txsync_fsm.fsm_tx[3]_i_1_n_0 )); + LUT5 #( + .INIT(32'h44F44444)) + \FSM_onehot_txsync_fsm.fsm_tx[4]_i_1 + (.I0(\FSM_onehot_txsync_fsm.fsm_tx[4]_i_2_n_0 ), + .I1(Q[1]), + .I2(txdlysresetdone_reg2), + .I3(txdlysresetdone_reg3), + .I4(Q[0]), + .O(\FSM_onehot_txsync_fsm.fsm_tx[4]_i_1_n_0 )); + LUT4 #( + .INIT(16'hF444)) + \FSM_onehot_txsync_fsm.fsm_tx[4]_i_2 + (.I0(txphinitdone_reg3), + .I1(txphinitdone_reg2), + .I2(\FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0 ), + .I3(\FSM_onehot_txsync_fsm.fsm_tx_reg[6]_1 ), + .O(\FSM_onehot_txsync_fsm.fsm_tx[4]_i_2_n_0 )); + LUT6 #( + .INIT(64'h8F88FFFF88888888)) + \FSM_onehot_txsync_fsm.fsm_tx[5]_i_1 + (.I0(\FSM_onehot_txsync_fsm.fsm_tx_reg[5]_0 ), + .I1(Q[2]), + .I2(txphinitdone_reg3), + .I3(txphinitdone_reg2), + .I4(user_active_lane_0), + .I5(Q[1]), + .O(\FSM_onehot_txsync_fsm.fsm_tx[5]_i_1_n_0 )); + LUT6 #( + .INIT(64'hEAFFEAEA2A002A2A)) + \FSM_onehot_txsync_fsm.fsm_tx[6]_i_1 + (.I0(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6] ), + .I1(\FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0 ), + .I2(\FSM_onehot_txsync_fsm.fsm_tx_reg[6]_1 ), + .I3(txphaligndone_reg3), + .I4(txphaligndone_reg2), + .I5(Q[2]), + .O(\FSM_onehot_txsync_fsm.fsm_tx[6]_i_1_n_0 )); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001" *) + FDSE #( + .INIT(1'b0)) + \FSM_onehot_txsync_fsm.fsm_tx_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_txsync_fsm.fsm_tx[1]_i_1_n_0 ), + .Q(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1] ), + .S(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_txsync_fsm.fsm_tx_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_txsync_fsm.fsm_tx[2]_i_1_n_0 ), + .Q(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_txsync_fsm.fsm_tx_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_txsync_fsm.fsm_tx[3]_i_1_n_0 ), + .Q(Q[0]), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_txsync_fsm.fsm_tx_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_txsync_fsm.fsm_tx[4]_i_1_n_0 ), + .Q(Q[1]), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_txsync_fsm.fsm_tx_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_txsync_fsm.fsm_tx[5]_i_1_n_0 ), + .Q(Q[2]), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_txsync_fsm.fsm_tx_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_txsync_fsm.fsm_tx[6]_i_1_n_0 ), + .Q(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6] ), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gen3_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_RATE_GEN3), + .Q(gen3_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gen3_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gen3_reg1), + .Q(gen3_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE mmcm_lock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_mmcm_lock_in), + .Q(mmcm_lock_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE mmcm_lock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(mmcm_lock_reg1), + .Q(mmcm_lock_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_idle_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_RATE_IDLE), + .Q(rate_idle_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_idle_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rate_idle_reg1), + .Q(rate_idle_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxcdrlock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_RXCDRLOCK), + .Q(rxcdrlock_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxcdrlock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxcdrlock_reg1), + .Q(rxcdrlock_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxdlysresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_RXDLYSRESETDONE), + .Q(rxdlysresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxdlysresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxdlysresetdone_reg1), + .Q(rxdlysresetdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxelecidle_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gt_rx_elec_idle_wire_filter), + .Q(rxelecidle_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxelecidle_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxelecidle_reg1), + .Q(rxelecidle_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxphaligndone_m_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_RXPHALIGNDONE_M), + .Q(rxphaligndone_m_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxphaligndone_m_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxphaligndone_m_reg1), + .Q(rxphaligndone_m_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxphaligndone_s_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_RXPHALIGNDONE_S), + .Q(rxphaligndone_s_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxphaligndone_s_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxphaligndone_s_reg1), + .Q(rxphaligndone_s_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsync_donem_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxsync_donem_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsync_donem_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxsync_donem_reg1), + .Q(rxsync_donem_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsync_start_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_RXSYNC_START), + .Q(rxsync_start_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsync_start_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxsync_start_reg1), + .Q(rxsync_start_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsyncdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxsyncdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsyncdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxsyncdone_reg1), + .Q(rxsyncdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txdlysresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_TXDLYSRESETDONE), + .Q(txdlysresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txdlysresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txdlysresetdone_reg1), + .Q(txdlysresetdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txdlysresetdone_reg3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txdlysresetdone_reg2), + .Q(txdlysresetdone_reg3), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txphaligndone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_TXPHALIGNDONE), + .Q(txphaligndone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txphaligndone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txphaligndone_reg1), + .Q(txphaligndone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txphaligndone_reg3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txphaligndone_reg2), + .Q(txphaligndone_reg3), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txphinitdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_TXPHINITDONE), + .Q(txphinitdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txphinitdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txphinitdone_reg1), + .Q(txphinitdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txphinitdone_reg3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txphinitdone_reg2), + .Q(txphinitdone_reg3), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'hABAAA8AA)) + \txsync_fsm.txdlyen_i_1 + (.I0(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6] ), + .I1(\FSM_onehot_txsync_fsm.fsm_tx[1]_i_2_n_0 ), + .I2(txsync_start_reg2), + .I3(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1] ), + .I4(sync_txdlyen_0), + .O(\txsync_fsm.txdlyen_i_1_n_0 )); + FDRE #( + .INIT(1'b0)) + \txsync_fsm.txdlyen_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txsync_fsm.txdlyen_i_1_n_0 ), + .Q(sync_txdlyen_0), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h222F222222202222)) + \txsync_fsm.txsync_done_i_1 + (.I0(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6] ), + .I1(\FSM_onehot_txsync_fsm.fsm_tx_reg[5]_0 ), + .I2(\FSM_onehot_txsync_fsm.fsm_tx[1]_i_2_n_0 ), + .I3(txsync_start_reg2), + .I4(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1] ), + .I5(RST_TXSYNC_DONE), + .O(\txsync_fsm.txsync_done_i_1_n_0 )); + FDRE #( + .INIT(1'b0)) + \txsync_fsm.txsync_done_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txsync_fsm.txsync_done_i_1_n_0 ), + .Q(RST_TXSYNC_DONE), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsync_start_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_TXSYNC_START), + .Q(txsync_start_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsync_start_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txsync_start_reg1), + .Q(txsync_start_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsync_start_reg3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txsync_start_reg2), + .Q(txsync_start_reg3), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsyncdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txsyncdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsyncdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txsyncdone_reg1), + .Q(txsyncdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsyncdone_reg3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txsyncdone_reg2), + .Q(txsyncdone_reg3), + .R(RST_CPLLRESET)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pipe_sync" *) +module pcie_7x_0_pcie_7x_0_pipe_sync_41 + (Q, + RST_TXSYNC_DONE, + out, + \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0 , + RST_CPLLRESET, + pipe_pclk_in, + SYNC_TXPHALIGNDONE, + SYNC_TXSYNC_START, + pipe_mmcm_lock_in, + SYNC_TXDLYSRESETDONE, + SYNC_TXPHINITDONE, + SYNC_GEN3, + SYNC_RATE_IDLE, + gt_rx_elec_idle_wire_filter, + SYNC_RXCDRLOCK, + SYNC_RXSYNC_START, + SYNC_RXDLYSRESETDONE, + SYNC_RXPHALIGNDONE_M, + SYNC_RXPHALIGNDONE_S, + user_active_lane_1); + output [2:0]Q; + output [0:0]RST_TXSYNC_DONE; + input out; + input \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0 ; + input RST_CPLLRESET; + input pipe_pclk_in; + input SYNC_TXPHALIGNDONE; + input SYNC_TXSYNC_START; + input pipe_mmcm_lock_in; + input SYNC_TXDLYSRESETDONE; + input SYNC_TXPHINITDONE; + input SYNC_GEN3; + input SYNC_RATE_IDLE; + input [0:0]gt_rx_elec_idle_wire_filter; + input SYNC_RXCDRLOCK; + input SYNC_RXSYNC_START; + input SYNC_RXDLYSRESETDONE; + input SYNC_RXPHALIGNDONE_M; + input SYNC_RXPHALIGNDONE_S; + input user_active_lane_1; + + wire \FSM_onehot_txsync_fsm.fsm_tx[1]_i_1__0_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__0_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[2]_i_1__0_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[3]_i_1__0_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[4]_i_1__0_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[5]_i_1__0_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[5]_i_2__2_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[6]_i_1__0_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1] ; + wire \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2] ; + wire \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6] ; + wire [2:0]Q; + wire RST_CPLLRESET; + wire [0:0]RST_TXSYNC_DONE; + wire SYNC_GEN3; + wire SYNC_RATE_IDLE; + wire SYNC_RXCDRLOCK; + wire SYNC_RXDLYSRESETDONE; + wire SYNC_RXPHALIGNDONE_M; + wire SYNC_RXPHALIGNDONE_S; + wire SYNC_RXSYNC_START; + wire SYNC_TXDLYSRESETDONE; + wire SYNC_TXPHALIGNDONE; + wire SYNC_TXPHINITDONE; + wire SYNC_TXSYNC_START; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gen3_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gen3_reg2; + wire [0:0]gt_rx_elec_idle_wire_filter; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire mmcm_lock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire mmcm_lock_reg2; + wire out; + wire pipe_mmcm_lock_in; + wire pipe_pclk_in; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_idle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_idle_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxcdrlock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxcdrlock_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxdlysresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxdlysresetdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxelecidle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxelecidle_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxphaligndone_m_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxphaligndone_m_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxphaligndone_s_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxphaligndone_s_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsync_donem_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsync_donem_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsync_start_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsync_start_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsyncdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsyncdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txdlysresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txdlysresetdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txdlysresetdone_reg3; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txphaligndone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txphaligndone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txphaligndone_reg3; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txphinitdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txphinitdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txphinitdone_reg3; + wire \txsync_fsm.txsync_done_i_1__0_n_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsync_start_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsync_start_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsync_start_reg3; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsyncdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsyncdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsyncdone_reg3; + wire user_active_lane_1; + + LUT4 #( + .INIT(16'hFF1D)) + \FSM_onehot_txsync_fsm.fsm_tx[1]_i_1__0 + (.I0(\FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__0_n_0 ), + .I1(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1] ), + .I2(txsync_start_reg2), + .I3(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6] ), + .O(\FSM_onehot_txsync_fsm.fsm_tx[1]_i_1__0_n_0 )); + LUT5 #( + .INIT(32'hFFFFFFFE)) + \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__0 + (.I0(Q[2]), + .I1(Q[1]), + .I2(Q[0]), + .I3(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6] ), + .I4(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2] ), + .O(\FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__0_n_0 )); + LUT4 #( + .INIT(16'hF444)) + \FSM_onehot_txsync_fsm.fsm_tx[2]_i_1__0 + (.I0(mmcm_lock_reg2), + .I1(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2] ), + .I2(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1] ), + .I3(txsync_start_reg2), + .O(\FSM_onehot_txsync_fsm.fsm_tx[2]_i_1__0_n_0 )); + LUT5 #( + .INIT(32'hFFD0D0D0)) + \FSM_onehot_txsync_fsm.fsm_tx[3]_i_1__0 + (.I0(txdlysresetdone_reg2), + .I1(txdlysresetdone_reg3), + .I2(Q[0]), + .I3(mmcm_lock_reg2), + .I4(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2] ), + .O(\FSM_onehot_txsync_fsm.fsm_tx[3]_i_1__0_n_0 )); + LUT5 #( + .INIT(32'h44F44444)) + \FSM_onehot_txsync_fsm.fsm_tx[4]_i_1__0 + (.I0(\FSM_onehot_txsync_fsm.fsm_tx[5]_i_2__2_n_0 ), + .I1(Q[1]), + .I2(txdlysresetdone_reg2), + .I3(txdlysresetdone_reg3), + .I4(Q[0]), + .O(\FSM_onehot_txsync_fsm.fsm_tx[4]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'hFFFFB000B000B000)) + \FSM_onehot_txsync_fsm.fsm_tx[5]_i_1__0 + (.I0(txphaligndone_reg3), + .I1(txphaligndone_reg2), + .I2(user_active_lane_1), + .I3(Q[2]), + .I4(\FSM_onehot_txsync_fsm.fsm_tx[5]_i_2__2_n_0 ), + .I5(Q[1]), + .O(\FSM_onehot_txsync_fsm.fsm_tx[5]_i_1__0_n_0 )); + LUT4 #( + .INIT(16'hF444)) + \FSM_onehot_txsync_fsm.fsm_tx[5]_i_2__2 + (.I0(txphinitdone_reg3), + .I1(txphinitdone_reg2), + .I2(out), + .I3(\FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0 ), + .O(\FSM_onehot_txsync_fsm.fsm_tx[5]_i_2__2_n_0 )); + LUT5 #( + .INIT(32'h8080AA80)) + \FSM_onehot_txsync_fsm.fsm_tx[6]_i_1__0 + (.I0(Q[2]), + .I1(\FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0 ), + .I2(out), + .I3(txphaligndone_reg2), + .I4(txphaligndone_reg3), + .O(\FSM_onehot_txsync_fsm.fsm_tx[6]_i_1__0_n_0 )); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001" *) + FDSE #( + .INIT(1'b0)) + \FSM_onehot_txsync_fsm.fsm_tx_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_txsync_fsm.fsm_tx[1]_i_1__0_n_0 ), + .Q(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1] ), + .S(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_txsync_fsm.fsm_tx_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_txsync_fsm.fsm_tx[2]_i_1__0_n_0 ), + .Q(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_txsync_fsm.fsm_tx_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_txsync_fsm.fsm_tx[3]_i_1__0_n_0 ), + .Q(Q[0]), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_txsync_fsm.fsm_tx_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_txsync_fsm.fsm_tx[4]_i_1__0_n_0 ), + .Q(Q[1]), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_txsync_fsm.fsm_tx_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_txsync_fsm.fsm_tx[5]_i_1__0_n_0 ), + .Q(Q[2]), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_txsync_fsm.fsm_tx_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_txsync_fsm.fsm_tx[6]_i_1__0_n_0 ), + .Q(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6] ), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gen3_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_GEN3), + .Q(gen3_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gen3_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gen3_reg1), + .Q(gen3_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE mmcm_lock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_mmcm_lock_in), + .Q(mmcm_lock_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE mmcm_lock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(mmcm_lock_reg1), + .Q(mmcm_lock_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_idle_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_RATE_IDLE), + .Q(rate_idle_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_idle_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rate_idle_reg1), + .Q(rate_idle_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxcdrlock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_RXCDRLOCK), + .Q(rxcdrlock_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxcdrlock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxcdrlock_reg1), + .Q(rxcdrlock_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxdlysresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_RXDLYSRESETDONE), + .Q(rxdlysresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxdlysresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxdlysresetdone_reg1), + .Q(rxdlysresetdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxelecidle_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gt_rx_elec_idle_wire_filter), + .Q(rxelecidle_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxelecidle_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxelecidle_reg1), + .Q(rxelecidle_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxphaligndone_m_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_RXPHALIGNDONE_M), + .Q(rxphaligndone_m_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxphaligndone_m_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxphaligndone_m_reg1), + .Q(rxphaligndone_m_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxphaligndone_s_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_RXPHALIGNDONE_S), + .Q(rxphaligndone_s_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxphaligndone_s_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxphaligndone_s_reg1), + .Q(rxphaligndone_s_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsync_donem_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxsync_donem_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsync_donem_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxsync_donem_reg1), + .Q(rxsync_donem_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsync_start_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_RXSYNC_START), + .Q(rxsync_start_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsync_start_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxsync_start_reg1), + .Q(rxsync_start_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsyncdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxsyncdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsyncdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxsyncdone_reg1), + .Q(rxsyncdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txdlysresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_TXDLYSRESETDONE), + .Q(txdlysresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txdlysresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txdlysresetdone_reg1), + .Q(txdlysresetdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txdlysresetdone_reg3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txdlysresetdone_reg2), + .Q(txdlysresetdone_reg3), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txphaligndone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_TXPHALIGNDONE), + .Q(txphaligndone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txphaligndone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txphaligndone_reg1), + .Q(txphaligndone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txphaligndone_reg3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txphaligndone_reg2), + .Q(txphaligndone_reg3), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txphinitdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_TXPHINITDONE), + .Q(txphinitdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txphinitdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txphinitdone_reg1), + .Q(txphinitdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txphinitdone_reg3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txphinitdone_reg2), + .Q(txphinitdone_reg3), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'hABAAA8AA)) + \txsync_fsm.txsync_done_i_1__0 + (.I0(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6] ), + .I1(\FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__0_n_0 ), + .I2(txsync_start_reg2), + .I3(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1] ), + .I4(RST_TXSYNC_DONE), + .O(\txsync_fsm.txsync_done_i_1__0_n_0 )); + FDRE #( + .INIT(1'b0)) + \txsync_fsm.txsync_done_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txsync_fsm.txsync_done_i_1__0_n_0 ), + .Q(RST_TXSYNC_DONE), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsync_start_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_TXSYNC_START), + .Q(txsync_start_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsync_start_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txsync_start_reg1), + .Q(txsync_start_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsync_start_reg3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txsync_start_reg2), + .Q(txsync_start_reg3), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsyncdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txsyncdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsyncdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txsyncdone_reg1), + .Q(txsyncdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsyncdone_reg3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txsyncdone_reg2), + .Q(txsyncdone_reg3), + .R(RST_CPLLRESET)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pipe_sync" *) +module pcie_7x_0_pcie_7x_0_pipe_sync_47 + (Q, + RST_TXSYNC_DONE, + out, + \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0 , + RST_CPLLRESET, + pipe_pclk_in, + SYNC_TXPHALIGNDONE, + SYNC_TXSYNC_START, + pipe_mmcm_lock_in, + SYNC_TXDLYSRESETDONE, + SYNC_TXPHINITDONE, + SYNC_GEN3, + SYNC_RATE_IDLE, + gt_rx_elec_idle_wire_filter, + SYNC_RXCDRLOCK, + SYNC_RXSYNC_START, + SYNC_RXDLYSRESETDONE, + SYNC_RXPHALIGNDONE_M, + SYNC_RXPHALIGNDONE_S, + user_active_lane_2); + output [2:0]Q; + output [0:0]RST_TXSYNC_DONE; + input out; + input \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0 ; + input RST_CPLLRESET; + input pipe_pclk_in; + input SYNC_TXPHALIGNDONE; + input SYNC_TXSYNC_START; + input pipe_mmcm_lock_in; + input SYNC_TXDLYSRESETDONE; + input SYNC_TXPHINITDONE; + input SYNC_GEN3; + input SYNC_RATE_IDLE; + input [0:0]gt_rx_elec_idle_wire_filter; + input SYNC_RXCDRLOCK; + input SYNC_RXSYNC_START; + input SYNC_RXDLYSRESETDONE; + input SYNC_RXPHALIGNDONE_M; + input SYNC_RXPHALIGNDONE_S; + input user_active_lane_2; + + wire \FSM_onehot_txsync_fsm.fsm_tx[1]_i_1__1_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__1_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[2]_i_1__1_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[3]_i_1__1_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[4]_i_1__1_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[5]_i_1__1_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[5]_i_3__0_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[6]_i_1__1_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1] ; + wire \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2] ; + wire \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6] ; + wire [2:0]Q; + wire RST_CPLLRESET; + wire [0:0]RST_TXSYNC_DONE; + wire SYNC_GEN3; + wire SYNC_RATE_IDLE; + wire SYNC_RXCDRLOCK; + wire SYNC_RXDLYSRESETDONE; + wire SYNC_RXPHALIGNDONE_M; + wire SYNC_RXPHALIGNDONE_S; + wire SYNC_RXSYNC_START; + wire SYNC_TXDLYSRESETDONE; + wire SYNC_TXPHALIGNDONE; + wire SYNC_TXPHINITDONE; + wire SYNC_TXSYNC_START; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gen3_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gen3_reg2; + wire [0:0]gt_rx_elec_idle_wire_filter; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire mmcm_lock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire mmcm_lock_reg2; + wire out; + wire pipe_mmcm_lock_in; + wire pipe_pclk_in; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_idle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_idle_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxcdrlock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxcdrlock_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxdlysresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxdlysresetdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxelecidle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxelecidle_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxphaligndone_m_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxphaligndone_m_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxphaligndone_s_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxphaligndone_s_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsync_donem_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsync_donem_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsync_start_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsync_start_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsyncdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsyncdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txdlysresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txdlysresetdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txdlysresetdone_reg3; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txphaligndone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txphaligndone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txphaligndone_reg3; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txphinitdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txphinitdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txphinitdone_reg3; + wire \txsync_fsm.txsync_done_i_1__1_n_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsync_start_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsync_start_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsync_start_reg3; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsyncdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsyncdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsyncdone_reg3; + wire user_active_lane_2; + + LUT4 #( + .INIT(16'hFF1D)) + \FSM_onehot_txsync_fsm.fsm_tx[1]_i_1__1 + (.I0(\FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__1_n_0 ), + .I1(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1] ), + .I2(txsync_start_reg2), + .I3(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6] ), + .O(\FSM_onehot_txsync_fsm.fsm_tx[1]_i_1__1_n_0 )); + LUT5 #( + .INIT(32'hFFFFFFFE)) + \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__1 + (.I0(Q[2]), + .I1(Q[1]), + .I2(Q[0]), + .I3(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6] ), + .I4(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2] ), + .O(\FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__1_n_0 )); + LUT4 #( + .INIT(16'hF444)) + \FSM_onehot_txsync_fsm.fsm_tx[2]_i_1__1 + (.I0(mmcm_lock_reg2), + .I1(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2] ), + .I2(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1] ), + .I3(txsync_start_reg2), + .O(\FSM_onehot_txsync_fsm.fsm_tx[2]_i_1__1_n_0 )); + LUT5 #( + .INIT(32'hFFD0D0D0)) + \FSM_onehot_txsync_fsm.fsm_tx[3]_i_1__1 + (.I0(txdlysresetdone_reg2), + .I1(txdlysresetdone_reg3), + .I2(Q[0]), + .I3(mmcm_lock_reg2), + .I4(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2] ), + .O(\FSM_onehot_txsync_fsm.fsm_tx[3]_i_1__1_n_0 )); + LUT5 #( + .INIT(32'h44F44444)) + \FSM_onehot_txsync_fsm.fsm_tx[4]_i_1__1 + (.I0(\FSM_onehot_txsync_fsm.fsm_tx[5]_i_3__0_n_0 ), + .I1(Q[1]), + .I2(txdlysresetdone_reg2), + .I3(txdlysresetdone_reg3), + .I4(Q[0]), + .O(\FSM_onehot_txsync_fsm.fsm_tx[4]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'hFFFFB000B000B000)) + \FSM_onehot_txsync_fsm.fsm_tx[5]_i_1__1 + (.I0(txphaligndone_reg3), + .I1(txphaligndone_reg2), + .I2(user_active_lane_2), + .I3(Q[2]), + .I4(\FSM_onehot_txsync_fsm.fsm_tx[5]_i_3__0_n_0 ), + .I5(Q[1]), + .O(\FSM_onehot_txsync_fsm.fsm_tx[5]_i_1__1_n_0 )); + LUT4 #( + .INIT(16'hF444)) + \FSM_onehot_txsync_fsm.fsm_tx[5]_i_3__0 + (.I0(txphinitdone_reg3), + .I1(txphinitdone_reg2), + .I2(out), + .I3(\FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0 ), + .O(\FSM_onehot_txsync_fsm.fsm_tx[5]_i_3__0_n_0 )); + LUT5 #( + .INIT(32'h8080AA80)) + \FSM_onehot_txsync_fsm.fsm_tx[6]_i_1__1 + (.I0(Q[2]), + .I1(\FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0 ), + .I2(out), + .I3(txphaligndone_reg2), + .I4(txphaligndone_reg3), + .O(\FSM_onehot_txsync_fsm.fsm_tx[6]_i_1__1_n_0 )); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001" *) + FDSE #( + .INIT(1'b0)) + \FSM_onehot_txsync_fsm.fsm_tx_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_txsync_fsm.fsm_tx[1]_i_1__1_n_0 ), + .Q(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1] ), + .S(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_txsync_fsm.fsm_tx_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_txsync_fsm.fsm_tx[2]_i_1__1_n_0 ), + .Q(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_txsync_fsm.fsm_tx_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_txsync_fsm.fsm_tx[3]_i_1__1_n_0 ), + .Q(Q[0]), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_txsync_fsm.fsm_tx_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_txsync_fsm.fsm_tx[4]_i_1__1_n_0 ), + .Q(Q[1]), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_txsync_fsm.fsm_tx_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_txsync_fsm.fsm_tx[5]_i_1__1_n_0 ), + .Q(Q[2]), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_txsync_fsm.fsm_tx_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_txsync_fsm.fsm_tx[6]_i_1__1_n_0 ), + .Q(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6] ), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gen3_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_GEN3), + .Q(gen3_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gen3_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gen3_reg1), + .Q(gen3_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE mmcm_lock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_mmcm_lock_in), + .Q(mmcm_lock_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE mmcm_lock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(mmcm_lock_reg1), + .Q(mmcm_lock_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_idle_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_RATE_IDLE), + .Q(rate_idle_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_idle_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rate_idle_reg1), + .Q(rate_idle_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxcdrlock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_RXCDRLOCK), + .Q(rxcdrlock_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxcdrlock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxcdrlock_reg1), + .Q(rxcdrlock_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxdlysresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_RXDLYSRESETDONE), + .Q(rxdlysresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxdlysresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxdlysresetdone_reg1), + .Q(rxdlysresetdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxelecidle_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gt_rx_elec_idle_wire_filter), + .Q(rxelecidle_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxelecidle_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxelecidle_reg1), + .Q(rxelecidle_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxphaligndone_m_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_RXPHALIGNDONE_M), + .Q(rxphaligndone_m_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxphaligndone_m_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxphaligndone_m_reg1), + .Q(rxphaligndone_m_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxphaligndone_s_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_RXPHALIGNDONE_S), + .Q(rxphaligndone_s_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxphaligndone_s_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxphaligndone_s_reg1), + .Q(rxphaligndone_s_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsync_donem_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxsync_donem_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsync_donem_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxsync_donem_reg1), + .Q(rxsync_donem_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsync_start_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_RXSYNC_START), + .Q(rxsync_start_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsync_start_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxsync_start_reg1), + .Q(rxsync_start_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsyncdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxsyncdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsyncdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxsyncdone_reg1), + .Q(rxsyncdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txdlysresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_TXDLYSRESETDONE), + .Q(txdlysresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txdlysresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txdlysresetdone_reg1), + .Q(txdlysresetdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txdlysresetdone_reg3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txdlysresetdone_reg2), + .Q(txdlysresetdone_reg3), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txphaligndone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_TXPHALIGNDONE), + .Q(txphaligndone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txphaligndone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txphaligndone_reg1), + .Q(txphaligndone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txphaligndone_reg3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txphaligndone_reg2), + .Q(txphaligndone_reg3), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txphinitdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_TXPHINITDONE), + .Q(txphinitdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txphinitdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txphinitdone_reg1), + .Q(txphinitdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txphinitdone_reg3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txphinitdone_reg2), + .Q(txphinitdone_reg3), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'hABAAA8AA)) + \txsync_fsm.txsync_done_i_1__1 + (.I0(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6] ), + .I1(\FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__1_n_0 ), + .I2(txsync_start_reg2), + .I3(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1] ), + .I4(RST_TXSYNC_DONE), + .O(\txsync_fsm.txsync_done_i_1__1_n_0 )); + FDRE #( + .INIT(1'b0)) + \txsync_fsm.txsync_done_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txsync_fsm.txsync_done_i_1__1_n_0 ), + .Q(RST_TXSYNC_DONE), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsync_start_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_TXSYNC_START), + .Q(txsync_start_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsync_start_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txsync_start_reg1), + .Q(txsync_start_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsync_start_reg3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txsync_start_reg2), + .Q(txsync_start_reg3), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsyncdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txsyncdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsyncdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txsyncdone_reg1), + .Q(txsyncdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsyncdone_reg3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txsyncdone_reg2), + .Q(txsyncdone_reg3), + .R(RST_CPLLRESET)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pipe_sync" *) +module pcie_7x_0_pcie_7x_0_pipe_sync_53 + (Q, + RST_TXSYNC_DONE, + out, + \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0 , + RST_CPLLRESET, + pipe_pclk_in, + SYNC_TXPHALIGNDONE, + SYNC_TXSYNC_START, + pipe_mmcm_lock_in, + SYNC_TXDLYSRESETDONE, + SYNC_TXPHINITDONE, + SYNC_GEN3, + SYNC_RATE_IDLE, + gt_rx_elec_idle_wire_filter, + SYNC_RXCDRLOCK, + SYNC_RXSYNC_START, + SYNC_RXDLYSRESETDONE, + SYNC_RXPHALIGNDONE_M, + SYNC_RXPHALIGNDONE_S, + user_active_lane_3); + output [2:0]Q; + output [0:0]RST_TXSYNC_DONE; + input out; + input \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0 ; + input RST_CPLLRESET; + input pipe_pclk_in; + input SYNC_TXPHALIGNDONE; + input SYNC_TXSYNC_START; + input pipe_mmcm_lock_in; + input SYNC_TXDLYSRESETDONE; + input SYNC_TXPHINITDONE; + input SYNC_GEN3; + input SYNC_RATE_IDLE; + input [0:0]gt_rx_elec_idle_wire_filter; + input SYNC_RXCDRLOCK; + input SYNC_RXSYNC_START; + input SYNC_RXDLYSRESETDONE; + input SYNC_RXPHALIGNDONE_M; + input SYNC_RXPHALIGNDONE_S; + input user_active_lane_3; + + wire \FSM_onehot_txsync_fsm.fsm_tx[1]_i_1__2_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__2_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[2]_i_1__2_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[3]_i_1__2_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[4]_i_1__2_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[5]_i_1__2_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[5]_i_3__1_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx[6]_i_1__2_n_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0 ; + wire \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1] ; + wire \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2] ; + wire \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6] ; + wire [2:0]Q; + wire RST_CPLLRESET; + wire [0:0]RST_TXSYNC_DONE; + wire SYNC_GEN3; + wire SYNC_RATE_IDLE; + wire SYNC_RXCDRLOCK; + wire SYNC_RXDLYSRESETDONE; + wire SYNC_RXPHALIGNDONE_M; + wire SYNC_RXPHALIGNDONE_S; + wire SYNC_RXSYNC_START; + wire SYNC_TXDLYSRESETDONE; + wire SYNC_TXPHALIGNDONE; + wire SYNC_TXPHINITDONE; + wire SYNC_TXSYNC_START; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gen3_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gen3_reg2; + wire [0:0]gt_rx_elec_idle_wire_filter; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire mmcm_lock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire mmcm_lock_reg2; + wire out; + wire pipe_mmcm_lock_in; + wire pipe_pclk_in; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_idle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_idle_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxcdrlock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxcdrlock_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxdlysresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxdlysresetdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxelecidle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxelecidle_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxphaligndone_m_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxphaligndone_m_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxphaligndone_s_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxphaligndone_s_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsync_donem_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsync_donem_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsync_start_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsync_start_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsyncdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxsyncdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txdlysresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txdlysresetdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txdlysresetdone_reg3; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txphaligndone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txphaligndone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txphaligndone_reg3; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txphinitdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txphinitdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txphinitdone_reg3; + wire \txsync_fsm.txsync_done_i_1__2_n_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsync_start_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsync_start_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsync_start_reg3; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsyncdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsyncdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txsyncdone_reg3; + wire user_active_lane_3; + + LUT4 #( + .INIT(16'hFF1D)) + \FSM_onehot_txsync_fsm.fsm_tx[1]_i_1__2 + (.I0(\FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__2_n_0 ), + .I1(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1] ), + .I2(txsync_start_reg2), + .I3(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6] ), + .O(\FSM_onehot_txsync_fsm.fsm_tx[1]_i_1__2_n_0 )); + LUT5 #( + .INIT(32'hFFFFFFFE)) + \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__2 + (.I0(Q[2]), + .I1(Q[1]), + .I2(Q[0]), + .I3(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6] ), + .I4(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2] ), + .O(\FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__2_n_0 )); + LUT4 #( + .INIT(16'hF444)) + \FSM_onehot_txsync_fsm.fsm_tx[2]_i_1__2 + (.I0(mmcm_lock_reg2), + .I1(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2] ), + .I2(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1] ), + .I3(txsync_start_reg2), + .O(\FSM_onehot_txsync_fsm.fsm_tx[2]_i_1__2_n_0 )); + LUT5 #( + .INIT(32'hFFD0D0D0)) + \FSM_onehot_txsync_fsm.fsm_tx[3]_i_1__2 + (.I0(txdlysresetdone_reg2), + .I1(txdlysresetdone_reg3), + .I2(Q[0]), + .I3(mmcm_lock_reg2), + .I4(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2] ), + .O(\FSM_onehot_txsync_fsm.fsm_tx[3]_i_1__2_n_0 )); + LUT5 #( + .INIT(32'h44F44444)) + \FSM_onehot_txsync_fsm.fsm_tx[4]_i_1__2 + (.I0(\FSM_onehot_txsync_fsm.fsm_tx[5]_i_3__1_n_0 ), + .I1(Q[1]), + .I2(txdlysresetdone_reg2), + .I3(txdlysresetdone_reg3), + .I4(Q[0]), + .O(\FSM_onehot_txsync_fsm.fsm_tx[4]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'hFFFFB000B000B000)) + \FSM_onehot_txsync_fsm.fsm_tx[5]_i_1__2 + (.I0(txphaligndone_reg3), + .I1(txphaligndone_reg2), + .I2(user_active_lane_3), + .I3(Q[2]), + .I4(\FSM_onehot_txsync_fsm.fsm_tx[5]_i_3__1_n_0 ), + .I5(Q[1]), + .O(\FSM_onehot_txsync_fsm.fsm_tx[5]_i_1__2_n_0 )); + LUT4 #( + .INIT(16'hF444)) + \FSM_onehot_txsync_fsm.fsm_tx[5]_i_3__1 + (.I0(txphinitdone_reg3), + .I1(txphinitdone_reg2), + .I2(out), + .I3(\FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0 ), + .O(\FSM_onehot_txsync_fsm.fsm_tx[5]_i_3__1_n_0 )); + LUT5 #( + .INIT(32'h8080AA80)) + \FSM_onehot_txsync_fsm.fsm_tx[6]_i_1__2 + (.I0(Q[2]), + .I1(\FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0 ), + .I2(out), + .I3(txphaligndone_reg2), + .I4(txphaligndone_reg3), + .O(\FSM_onehot_txsync_fsm.fsm_tx[6]_i_1__2_n_0 )); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001" *) + FDSE #( + .INIT(1'b0)) + \FSM_onehot_txsync_fsm.fsm_tx_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_txsync_fsm.fsm_tx[1]_i_1__2_n_0 ), + .Q(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1] ), + .S(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_txsync_fsm.fsm_tx_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_txsync_fsm.fsm_tx[2]_i_1__2_n_0 ), + .Q(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_txsync_fsm.fsm_tx_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_txsync_fsm.fsm_tx[3]_i_1__2_n_0 ), + .Q(Q[0]), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_txsync_fsm.fsm_tx_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_txsync_fsm.fsm_tx[4]_i_1__2_n_0 ), + .Q(Q[1]), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_txsync_fsm.fsm_tx_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_txsync_fsm.fsm_tx[5]_i_1__2_n_0 ), + .Q(Q[2]), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_txsync_fsm.fsm_tx_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_txsync_fsm.fsm_tx[6]_i_1__2_n_0 ), + .Q(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6] ), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gen3_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_GEN3), + .Q(gen3_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gen3_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gen3_reg1), + .Q(gen3_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE mmcm_lock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_mmcm_lock_in), + .Q(mmcm_lock_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE mmcm_lock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(mmcm_lock_reg1), + .Q(mmcm_lock_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_idle_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_RATE_IDLE), + .Q(rate_idle_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_idle_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rate_idle_reg1), + .Q(rate_idle_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxcdrlock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_RXCDRLOCK), + .Q(rxcdrlock_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxcdrlock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxcdrlock_reg1), + .Q(rxcdrlock_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxdlysresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_RXDLYSRESETDONE), + .Q(rxdlysresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxdlysresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxdlysresetdone_reg1), + .Q(rxdlysresetdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxelecidle_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gt_rx_elec_idle_wire_filter), + .Q(rxelecidle_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxelecidle_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxelecidle_reg1), + .Q(rxelecidle_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxphaligndone_m_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_RXPHALIGNDONE_M), + .Q(rxphaligndone_m_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxphaligndone_m_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxphaligndone_m_reg1), + .Q(rxphaligndone_m_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxphaligndone_s_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_RXPHALIGNDONE_S), + .Q(rxphaligndone_s_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxphaligndone_s_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxphaligndone_s_reg1), + .Q(rxphaligndone_s_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsync_donem_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxsync_donem_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsync_donem_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxsync_donem_reg1), + .Q(rxsync_donem_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsync_start_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_RXSYNC_START), + .Q(rxsync_start_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsync_start_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxsync_start_reg1), + .Q(rxsync_start_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsyncdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rxsyncdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxsyncdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxsyncdone_reg1), + .Q(rxsyncdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txdlysresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_TXDLYSRESETDONE), + .Q(txdlysresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txdlysresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txdlysresetdone_reg1), + .Q(txdlysresetdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txdlysresetdone_reg3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txdlysresetdone_reg2), + .Q(txdlysresetdone_reg3), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txphaligndone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_TXPHALIGNDONE), + .Q(txphaligndone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txphaligndone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txphaligndone_reg1), + .Q(txphaligndone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txphaligndone_reg3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txphaligndone_reg2), + .Q(txphaligndone_reg3), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txphinitdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_TXPHINITDONE), + .Q(txphinitdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txphinitdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txphinitdone_reg1), + .Q(txphinitdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txphinitdone_reg3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txphinitdone_reg2), + .Q(txphinitdone_reg3), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'hABAAA8AA)) + \txsync_fsm.txsync_done_i_1__2 + (.I0(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6] ), + .I1(\FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__2_n_0 ), + .I2(txsync_start_reg2), + .I3(\FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1] ), + .I4(RST_TXSYNC_DONE), + .O(\txsync_fsm.txsync_done_i_1__2_n_0 )); + FDRE #( + .INIT(1'b0)) + \txsync_fsm.txsync_done_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txsync_fsm.txsync_done_i_1__2_n_0 ), + .Q(RST_TXSYNC_DONE), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsync_start_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(SYNC_TXSYNC_START), + .Q(txsync_start_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsync_start_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txsync_start_reg1), + .Q(txsync_start_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsync_start_reg3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txsync_start_reg2), + .Q(txsync_start_reg3), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsyncdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(txsyncdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsyncdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txsyncdone_reg1), + .Q(txsyncdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txsyncdone_reg3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txsyncdone_reg2), + .Q(txsyncdone_reg3), + .R(RST_CPLLRESET)); +endmodule + +module pcie_7x_0_pcie_7x_0_pipe_user + (gt_rxvalid_q_reg, + out, + SYNC_TXPHALIGNDONE, + txelecidle_reg2_reg_0, + txcompliance_reg2_reg_0, + SYNC_TXPHINITDONE, + txelecidle_reg2_reg_1, + USER_OOBCLK, + RST_RXCDRLOCK, + gt_rx_phy_status_wire_filter, + \converge_cnt_reg[15]_0 , + \converge_cnt_reg[1]_0 , + \converge_cnt_reg[6]_0 , + RST_RESETDONE, + user_active_lane_0, + converge_gen3_reg_0, + gt_rx_elec_idle_wire_filter, + pipe_rx0_valid_gt, + gt_rxvalid_0, + txphaligndone_reg1_reg, + user_active_lane_1, + txphaligndone_reg1_reg_0, + txphaligndone_reg1_reg_1, + txphinitdone_reg1_reg, + txphinitdone_reg1_reg_0, + txphinitdone_reg1_reg_1, + \FSM_onehot_txsync_fsm.fsm_tx_reg[5] , + \FSM_onehot_txsync_fsm.fsm_tx_reg[5]_0 , + RST_CPLLRESET, + pipe_pclk_sel_out, + pipe_pclk_in, + pipe_oobclk_in, + USER_TXRESETDONE, + USER_RXRESETDONE, + PIPE_TXELECIDLE, + PIPE_TXCOMPLIANCE, + gt_rxcdrlock_0, + RST_RXUSRCLK_RESET, + pipe_rxusrclk_in, + PIPE_RXSTATUS, + RST_IDLE, + USER_RATE_IDLE, + USER_RATE_RXSYNC, + USER_RATE_DONE, + USER_RATE_GEN3, + USER_RXEQ_ADAPT_DONE, + USER_RESETOVRD_START, + RST_PHYSTATUS); + output gt_rxvalid_q_reg; + output out; + output SYNC_TXPHALIGNDONE; + output txelecidle_reg2_reg_0; + output txcompliance_reg2_reg_0; + output SYNC_TXPHINITDONE; + output txelecidle_reg2_reg_1; + output USER_OOBCLK; + output [0:0]RST_RXCDRLOCK; + output [0:0]gt_rx_phy_status_wire_filter; + output \converge_cnt_reg[15]_0 ; + output \converge_cnt_reg[1]_0 ; + output \converge_cnt_reg[6]_0 ; + output [0:0]RST_RESETDONE; + output user_active_lane_0; + output converge_gen3_reg_0; + input [0:0]gt_rx_elec_idle_wire_filter; + input pipe_rx0_valid_gt; + input gt_rxvalid_0; + input txphaligndone_reg1_reg; + input user_active_lane_1; + input txphaligndone_reg1_reg_0; + input txphaligndone_reg1_reg_1; + input txphinitdone_reg1_reg; + input txphinitdone_reg1_reg_0; + input txphinitdone_reg1_reg_1; + input \FSM_onehot_txsync_fsm.fsm_tx_reg[5] ; + input \FSM_onehot_txsync_fsm.fsm_tx_reg[5]_0 ; + input RST_CPLLRESET; + input [0:0]pipe_pclk_sel_out; + input pipe_pclk_in; + input pipe_oobclk_in; + input USER_TXRESETDONE; + input USER_RXRESETDONE; + input [0:0]PIPE_TXELECIDLE; + input [0:0]PIPE_TXCOMPLIANCE; + input gt_rxcdrlock_0; + input RST_RXUSRCLK_RESET; + input pipe_rxusrclk_in; + input [0:0]PIPE_RXSTATUS; + input RST_IDLE; + input USER_RATE_IDLE; + input USER_RATE_RXSYNC; + input USER_RATE_DONE; + input USER_RATE_GEN3; + input USER_RXEQ_ADAPT_DONE; + input USER_RESETOVRD_START; + input [0:0]RST_PHYSTATUS; + + wire \FSM_onehot_txsync_fsm.fsm_tx_reg[5] ; + wire \FSM_onehot_txsync_fsm.fsm_tx_reg[5]_0 ; + wire [0:0]PIPE_RXSTATUS; + wire [0:0]PIPE_TXCOMPLIANCE; + wire [0:0]PIPE_TXELECIDLE; + wire RST_CPLLRESET; + wire RST_IDLE; + wire [0:0]RST_PHYSTATUS; + wire [0:0]RST_RESETDONE; + wire [0:0]RST_RXCDRLOCK; + wire RST_RXUSRCLK_RESET; + wire SYNC_TXPHALIGNDONE; + wire SYNC_TXPHINITDONE; + wire USER_OOBCLK; + wire USER_RATE_DONE; + wire USER_RATE_GEN3; + wire USER_RATE_IDLE; + wire USER_RATE_RXSYNC; + wire USER_RESETOVRD_START; + wire USER_RXEQ_ADAPT_DONE; + wire USER_RXRESETDONE; + wire USER_TXRESETDONE; + wire \converge_cnt[0]_i_1__0_n_0 ; + wire \converge_cnt[0]_i_4_n_0 ; + wire \converge_cnt[0]_i_5_n_0 ; + wire \converge_cnt[0]_i_6_n_0 ; + wire [21:0]converge_cnt_reg; + wire \converge_cnt_reg[0]_i_3_n_0 ; + wire \converge_cnt_reg[0]_i_3_n_1 ; + wire \converge_cnt_reg[0]_i_3_n_2 ; + wire \converge_cnt_reg[0]_i_3_n_3 ; + wire \converge_cnt_reg[0]_i_3_n_4 ; + wire \converge_cnt_reg[0]_i_3_n_5 ; + wire \converge_cnt_reg[0]_i_3_n_6 ; + wire \converge_cnt_reg[0]_i_3_n_7 ; + wire \converge_cnt_reg[12]_i_1_n_0 ; + wire \converge_cnt_reg[12]_i_1_n_1 ; + wire \converge_cnt_reg[12]_i_1_n_2 ; + wire \converge_cnt_reg[12]_i_1_n_3 ; + wire \converge_cnt_reg[12]_i_1_n_4 ; + wire \converge_cnt_reg[12]_i_1_n_5 ; + wire \converge_cnt_reg[12]_i_1_n_6 ; + wire \converge_cnt_reg[12]_i_1_n_7 ; + wire \converge_cnt_reg[15]_0 ; + wire \converge_cnt_reg[16]_i_1_n_0 ; + wire \converge_cnt_reg[16]_i_1_n_1 ; + wire \converge_cnt_reg[16]_i_1_n_2 ; + wire \converge_cnt_reg[16]_i_1_n_3 ; + wire \converge_cnt_reg[16]_i_1_n_4 ; + wire \converge_cnt_reg[16]_i_1_n_5 ; + wire \converge_cnt_reg[16]_i_1_n_6 ; + wire \converge_cnt_reg[16]_i_1_n_7 ; + wire \converge_cnt_reg[1]_0 ; + wire \converge_cnt_reg[20]_i_1_n_3 ; + wire \converge_cnt_reg[20]_i_1_n_6 ; + wire \converge_cnt_reg[20]_i_1_n_7 ; + wire \converge_cnt_reg[4]_i_1_n_0 ; + wire \converge_cnt_reg[4]_i_1_n_1 ; + wire \converge_cnt_reg[4]_i_1_n_2 ; + wire \converge_cnt_reg[4]_i_1_n_3 ; + wire \converge_cnt_reg[4]_i_1_n_4 ; + wire \converge_cnt_reg[4]_i_1_n_5 ; + wire \converge_cnt_reg[4]_i_1_n_6 ; + wire \converge_cnt_reg[4]_i_1_n_7 ; + wire \converge_cnt_reg[6]_0 ; + wire \converge_cnt_reg[8]_i_1_n_0 ; + wire \converge_cnt_reg[8]_i_1_n_1 ; + wire \converge_cnt_reg[8]_i_1_n_2 ; + wire \converge_cnt_reg[8]_i_1_n_3 ; + wire \converge_cnt_reg[8]_i_1_n_4 ; + wire \converge_cnt_reg[8]_i_1_n_5 ; + wire \converge_cnt_reg[8]_i_1_n_6 ; + wire \converge_cnt_reg[8]_i_1_n_7 ; + wire converge_gen3_i_1_n_0; + wire converge_gen3_reg_0; + wire [0:0]gt_rx_elec_idle_wire_filter; + wire [0:0]gt_rx_phy_status_wire_filter; + wire gt_rxcdrlock_0; + wire gt_rxvalid_0; + wire gt_rxvalid_q_i_4_n_0; + wire gt_rxvalid_q_reg; + wire \gtx_channel.gtxe2_channel_i_i_58_n_0 ; + wire \gtx_channel.gtxe2_channel_i_i_59_n_0 ; + wire [1:0]oobclk_cnt; + wire \oobclk_div.oobclk_i_1_n_0 ; + wire [3:0]p_0_in__0; + wire [3:0]p_0_in__0__0; + wire [1:0]p_1_in__0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire pclk_sel_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire pclk_sel_reg2; + wire pipe_oobclk_in; + wire pipe_pclk_in; + wire [0:0]pipe_pclk_sel_out; + wire pipe_rx0_valid_gt; + wire pipe_rxusrclk_in; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_done_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_gen3_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_gen3_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_idle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_idle_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_rxsync_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_rxsync_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire resetovrd_start_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire resetovrd_start_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rst_idle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rst_idle_reg2; + wire [3:0]rxcdrlock_cnt_reg; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxcdrlock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxcdrlock_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxeq_adapt_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxeq_adapt_done_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxresetdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxstatus_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxstatus_reg2; + wire [3:0]rxvalid_cnt_reg; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxvalid_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxvalid_reg2; + wire sel; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txcompliance_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txcompliance_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txelecidle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txelecidle_reg2; + wire txelecidle_reg2_reg_1; + wire txphaligndone_reg1_reg; + wire txphaligndone_reg1_reg_0; + wire txphaligndone_reg1_reg_1; + wire txphinitdone_reg1_reg; + wire txphinitdone_reg1_reg_0; + wire txphinitdone_reg1_reg_1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txresetdone_reg2; + wire user_active_lane_0; + wire user_active_lane_1; + wire [3:1]\NLW_converge_cnt_reg[20]_i_1_CO_UNCONNECTED ; + wire [3:2]\NLW_converge_cnt_reg[20]_i_1_O_UNCONNECTED ; + + assign out = rst_idle_reg2; + assign txcompliance_reg2_reg_0 = txcompliance_reg2; + assign txelecidle_reg2_reg_0 = txelecidle_reg2; + LUT4 #( + .INIT(16'h7077)) + \FSM_onehot_txsync_fsm.fsm_tx[5]_i_2 + (.I0(txelecidle_reg2), + .I1(txcompliance_reg2), + .I2(\FSM_onehot_txsync_fsm.fsm_tx_reg[5] ), + .I3(\FSM_onehot_txsync_fsm.fsm_tx_reg[5]_0 ), + .O(txelecidle_reg2_reg_1)); + LUT2 #( + .INIT(4'h7)) + \FSM_onehot_txsync_fsm.fsm_tx[5]_i_3 + (.I0(txcompliance_reg2), + .I1(txelecidle_reg2), + .O(user_active_lane_0)); + LUT4 #( + .INIT(16'hEFFF)) + \converge_cnt[0]_i_1__0 + (.I0(rate_gen3_reg2), + .I1(RST_CPLLRESET), + .I2(rst_idle_reg2), + .I3(rate_idle_reg2), + .O(\converge_cnt[0]_i_1__0_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFF5555555D)) + \converge_cnt[0]_i_2 + (.I0(converge_cnt_reg[21]), + .I1(\converge_cnt[0]_i_4_n_0 ), + .I2(converge_cnt_reg[12]), + .I3(converge_cnt_reg[14]), + .I4(converge_cnt_reg[20]), + .I5(\converge_cnt[0]_i_5_n_0 ), + .O(sel)); + LUT5 #( + .INIT(32'h00000001)) + \converge_cnt[0]_i_4 + (.I0(converge_cnt_reg[3]), + .I1(converge_cnt_reg[4]), + .I2(converge_cnt_reg[5]), + .I3(converge_cnt_reg[7]), + .I4(converge_cnt_reg[6]), + .O(\converge_cnt[0]_i_4_n_0 )); + LUT6 #( + .INIT(64'h0A0B0A0F0A0B0A0B)) + \converge_cnt[0]_i_5 + (.I0(\converge_cnt_reg[15]_0 ), + .I1(converge_cnt_reg[13]), + .I2(converge_cnt_reg[20]), + .I3(converge_cnt_reg[14]), + .I4(converge_cnt_reg[12]), + .I5(\gtx_channel.gtxe2_channel_i_i_59_n_0 ), + .O(\converge_cnt[0]_i_5_n_0 )); + LUT1 #( + .INIT(2'h1)) + \converge_cnt[0]_i_6 + (.I0(converge_cnt_reg[0]), + .O(\converge_cnt[0]_i_6_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[0]_i_3_n_7 ), + .Q(converge_cnt_reg[0]), + .R(\converge_cnt[0]_i_1__0_n_0 )); + (* ADDER_THRESHOLD = "11" *) + CARRY4 \converge_cnt_reg[0]_i_3 + (.CI(1'b0), + .CO({\converge_cnt_reg[0]_i_3_n_0 ,\converge_cnt_reg[0]_i_3_n_1 ,\converge_cnt_reg[0]_i_3_n_2 ,\converge_cnt_reg[0]_i_3_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b1}), + .O({\converge_cnt_reg[0]_i_3_n_4 ,\converge_cnt_reg[0]_i_3_n_5 ,\converge_cnt_reg[0]_i_3_n_6 ,\converge_cnt_reg[0]_i_3_n_7 }), + .S({converge_cnt_reg[3:1],\converge_cnt[0]_i_6_n_0 })); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[10] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[8]_i_1_n_5 ), + .Q(converge_cnt_reg[10]), + .R(\converge_cnt[0]_i_1__0_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[11] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[8]_i_1_n_4 ), + .Q(converge_cnt_reg[11]), + .R(\converge_cnt[0]_i_1__0_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[12] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[12]_i_1_n_7 ), + .Q(converge_cnt_reg[12]), + .R(\converge_cnt[0]_i_1__0_n_0 )); + (* ADDER_THRESHOLD = "11" *) + CARRY4 \converge_cnt_reg[12]_i_1 + (.CI(\converge_cnt_reg[8]_i_1_n_0 ), + .CO({\converge_cnt_reg[12]_i_1_n_0 ,\converge_cnt_reg[12]_i_1_n_1 ,\converge_cnt_reg[12]_i_1_n_2 ,\converge_cnt_reg[12]_i_1_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\converge_cnt_reg[12]_i_1_n_4 ,\converge_cnt_reg[12]_i_1_n_5 ,\converge_cnt_reg[12]_i_1_n_6 ,\converge_cnt_reg[12]_i_1_n_7 }), + .S(converge_cnt_reg[15:12])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[13] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[12]_i_1_n_6 ), + .Q(converge_cnt_reg[13]), + .R(\converge_cnt[0]_i_1__0_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[14] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[12]_i_1_n_5 ), + .Q(converge_cnt_reg[14]), + .R(\converge_cnt[0]_i_1__0_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[15] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[12]_i_1_n_4 ), + .Q(converge_cnt_reg[15]), + .R(\converge_cnt[0]_i_1__0_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[16] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[16]_i_1_n_7 ), + .Q(converge_cnt_reg[16]), + .R(\converge_cnt[0]_i_1__0_n_0 )); + (* ADDER_THRESHOLD = "11" *) + CARRY4 \converge_cnt_reg[16]_i_1 + (.CI(\converge_cnt_reg[12]_i_1_n_0 ), + .CO({\converge_cnt_reg[16]_i_1_n_0 ,\converge_cnt_reg[16]_i_1_n_1 ,\converge_cnt_reg[16]_i_1_n_2 ,\converge_cnt_reg[16]_i_1_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\converge_cnt_reg[16]_i_1_n_4 ,\converge_cnt_reg[16]_i_1_n_5 ,\converge_cnt_reg[16]_i_1_n_6 ,\converge_cnt_reg[16]_i_1_n_7 }), + .S(converge_cnt_reg[19:16])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[17] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[16]_i_1_n_6 ), + .Q(converge_cnt_reg[17]), + .R(\converge_cnt[0]_i_1__0_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[18] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[16]_i_1_n_5 ), + .Q(converge_cnt_reg[18]), + .R(\converge_cnt[0]_i_1__0_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[19] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[16]_i_1_n_4 ), + .Q(converge_cnt_reg[19]), + .R(\converge_cnt[0]_i_1__0_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[0]_i_3_n_6 ), + .Q(converge_cnt_reg[1]), + .R(\converge_cnt[0]_i_1__0_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[20] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[20]_i_1_n_7 ), + .Q(converge_cnt_reg[20]), + .R(\converge_cnt[0]_i_1__0_n_0 )); + (* ADDER_THRESHOLD = "11" *) + CARRY4 \converge_cnt_reg[20]_i_1 + (.CI(\converge_cnt_reg[16]_i_1_n_0 ), + .CO({\NLW_converge_cnt_reg[20]_i_1_CO_UNCONNECTED [3:1],\converge_cnt_reg[20]_i_1_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\NLW_converge_cnt_reg[20]_i_1_O_UNCONNECTED [3:2],\converge_cnt_reg[20]_i_1_n_6 ,\converge_cnt_reg[20]_i_1_n_7 }), + .S({1'b0,1'b0,converge_cnt_reg[21:20]})); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[21] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[20]_i_1_n_6 ), + .Q(converge_cnt_reg[21]), + .R(\converge_cnt[0]_i_1__0_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[2] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[0]_i_3_n_5 ), + .Q(converge_cnt_reg[2]), + .R(\converge_cnt[0]_i_1__0_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[3] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[0]_i_3_n_4 ), + .Q(converge_cnt_reg[3]), + .R(\converge_cnt[0]_i_1__0_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[4] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[4]_i_1_n_7 ), + .Q(converge_cnt_reg[4]), + .R(\converge_cnt[0]_i_1__0_n_0 )); + (* ADDER_THRESHOLD = "11" *) + CARRY4 \converge_cnt_reg[4]_i_1 + (.CI(\converge_cnt_reg[0]_i_3_n_0 ), + .CO({\converge_cnt_reg[4]_i_1_n_0 ,\converge_cnt_reg[4]_i_1_n_1 ,\converge_cnt_reg[4]_i_1_n_2 ,\converge_cnt_reg[4]_i_1_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\converge_cnt_reg[4]_i_1_n_4 ,\converge_cnt_reg[4]_i_1_n_5 ,\converge_cnt_reg[4]_i_1_n_6 ,\converge_cnt_reg[4]_i_1_n_7 }), + .S(converge_cnt_reg[7:4])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[5] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[4]_i_1_n_6 ), + .Q(converge_cnt_reg[5]), + .R(\converge_cnt[0]_i_1__0_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[6] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[4]_i_1_n_5 ), + .Q(converge_cnt_reg[6]), + .R(\converge_cnt[0]_i_1__0_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[7] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[4]_i_1_n_4 ), + .Q(converge_cnt_reg[7]), + .R(\converge_cnt[0]_i_1__0_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[8] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[8]_i_1_n_7 ), + .Q(converge_cnt_reg[8]), + .R(\converge_cnt[0]_i_1__0_n_0 )); + (* ADDER_THRESHOLD = "11" *) + CARRY4 \converge_cnt_reg[8]_i_1 + (.CI(\converge_cnt_reg[4]_i_1_n_0 ), + .CO({\converge_cnt_reg[8]_i_1_n_0 ,\converge_cnt_reg[8]_i_1_n_1 ,\converge_cnt_reg[8]_i_1_n_2 ,\converge_cnt_reg[8]_i_1_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\converge_cnt_reg[8]_i_1_n_4 ,\converge_cnt_reg[8]_i_1_n_5 ,\converge_cnt_reg[8]_i_1_n_6 ,\converge_cnt_reg[8]_i_1_n_7 }), + .S(converge_cnt_reg[11:8])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[9] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[8]_i_1_n_6 ), + .Q(converge_cnt_reg[9]), + .R(\converge_cnt[0]_i_1__0_n_0 )); + LUT3 #( + .INIT(8'hC8)) + converge_gen3_i_1 + (.I0(rxeq_adapt_done_reg2), + .I1(rate_gen3_reg2), + .I2(converge_gen3_reg_0), + .O(converge_gen3_i_1_n_0)); + FDRE #( + .INIT(1'b0)) + converge_gen3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_gen3_i_1_n_0), + .Q(converge_gen3_reg_0), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'hFFFFA8FF)) + gt_rx_phy_status_q_i_1 + (.I0(RST_PHYSTATUS), + .I1(rate_idle_reg2), + .I2(rate_rxsync_reg2), + .I3(rst_idle_reg2), + .I4(rate_done_reg2), + .O(gt_rx_phy_status_wire_filter)); + LUT6 #( + .INIT(64'hD000000000000000)) + gt_rxvalid_q_i_3 + (.I0(gt_rx_elec_idle_wire_filter), + .I1(pipe_rx0_valid_gt), + .I2(gt_rxvalid_q_i_4_n_0), + .I3(gt_rxvalid_0), + .I4(rst_idle_reg2), + .I5(rate_idle_reg2), + .O(gt_rxvalid_q_reg)); + LUT4 #( + .INIT(16'h8000)) + gt_rxvalid_q_i_4 + (.I0(rxvalid_cnt_reg[0]), + .I1(rxvalid_cnt_reg[1]), + .I2(rxvalid_cnt_reg[2]), + .I3(rxvalid_cnt_reg[3]), + .O(gt_rxvalid_q_i_4_n_0)); + LUT6 #( + .INIT(64'h0000000000020000)) + \gtx_channel.gtxe2_channel_i_i_49 + (.I0(\gtx_channel.gtxe2_channel_i_i_58_n_0 ), + .I1(converge_cnt_reg[1]), + .I2(converge_cnt_reg[0]), + .I3(converge_cnt_reg[2]), + .I4(converge_cnt_reg[3]), + .I5(\gtx_channel.gtxe2_channel_i_i_59_n_0 ), + .O(\converge_cnt_reg[1]_0 )); + LUT6 #( + .INIT(64'h0001000000000000)) + \gtx_channel.gtxe2_channel_i_i_50 + (.I0(converge_cnt_reg[6]), + .I1(converge_cnt_reg[7]), + .I2(converge_cnt_reg[4]), + .I3(converge_cnt_reg[5]), + .I4(converge_cnt_reg[21]), + .I5(converge_cnt_reg[13]), + .O(\converge_cnt_reg[6]_0 )); + LUT5 #( + .INIT(32'h7FFFFFFF)) + \gtx_channel.gtxe2_channel_i_i_51 + (.I0(converge_cnt_reg[15]), + .I1(converge_cnt_reg[18]), + .I2(converge_cnt_reg[19]), + .I3(converge_cnt_reg[17]), + .I4(converge_cnt_reg[16]), + .O(\converge_cnt_reg[15]_0 )); + LUT3 #( + .INIT(8'h01)) + \gtx_channel.gtxe2_channel_i_i_58 + (.I0(converge_cnt_reg[20]), + .I1(converge_cnt_reg[14]), + .I2(converge_cnt_reg[12]), + .O(\gtx_channel.gtxe2_channel_i_i_58_n_0 )); + LUT4 #( + .INIT(16'h7FFF)) + \gtx_channel.gtxe2_channel_i_i_59 + (.I0(converge_cnt_reg[9]), + .I1(converge_cnt_reg[8]), + .I2(converge_cnt_reg[11]), + .I3(converge_cnt_reg[10]), + .O(\gtx_channel.gtxe2_channel_i_i_59_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair79" *) + LUT1 #( + .INIT(2'h1)) + \oobclk_div.oobclk_cnt[0]_i_1 + (.I0(oobclk_cnt[0]), + .O(p_1_in__0[0])); + (* SOFT_HLUTNM = "soft_lutpair79" *) + LUT2 #( + .INIT(4'h6)) + \oobclk_div.oobclk_cnt[1]_i_1 + (.I0(oobclk_cnt[0]), + .I1(oobclk_cnt[1]), + .O(p_1_in__0[1])); + FDRE #( + .INIT(1'b0)) + \oobclk_div.oobclk_cnt_reg[0] + (.C(pipe_oobclk_in), + .CE(1'b1), + .D(p_1_in__0[0]), + .Q(oobclk_cnt[0]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \oobclk_div.oobclk_cnt_reg[1] + (.C(pipe_oobclk_in), + .CE(1'b1), + .D(p_1_in__0[1]), + .Q(oobclk_cnt[1]), + .R(RST_CPLLRESET)); + LUT3 #( + .INIT(8'hB8)) + \oobclk_div.oobclk_i_1 + (.I0(oobclk_cnt[1]), + .I1(pclk_sel_reg2), + .I2(oobclk_cnt[0]), + .O(\oobclk_div.oobclk_i_1_n_0 )); + FDRE #( + .INIT(1'b0)) + \oobclk_div.oobclk_reg + (.C(pipe_oobclk_in), + .CE(1'b1), + .D(\oobclk_div.oobclk_i_1_n_0 ), + .Q(USER_OOBCLK), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE pclk_sel_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_pclk_sel_out), + .Q(pclk_sel_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE pclk_sel_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pclk_sel_reg1), + .Q(pclk_sel_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_done_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(USER_RATE_DONE), + .Q(rate_done_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_done_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rate_done_reg1), + .Q(rate_done_reg2), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_gen3_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(USER_RATE_GEN3), + .Q(rate_gen3_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_gen3_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rate_gen3_reg1), + .Q(rate_gen3_reg2), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_idle_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(USER_RATE_IDLE), + .Q(rate_idle_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_idle_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rate_idle_reg1), + .Q(rate_idle_reg2), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_rxsync_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(USER_RATE_RXSYNC), + .Q(rate_rxsync_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_rxsync_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rate_rxsync_reg1), + .Q(rate_rxsync_reg2), + .R(RST_RXUSRCLK_RESET)); + LUT2 #( + .INIT(4'h8)) + \resetdone_reg1[0]_i_1 + (.I0(rxresetdone_reg2), + .I1(txresetdone_reg2), + .O(RST_RESETDONE)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE resetovrd_start_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_RESETOVRD_START), + .Q(resetovrd_start_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE resetovrd_start_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(resetovrd_start_reg1), + .Q(resetovrd_start_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rst_idle_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(RST_IDLE), + .Q(rst_idle_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rst_idle_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rst_idle_reg1), + .Q(rst_idle_reg2), + .R(RST_RXUSRCLK_RESET)); + LUT5 #( + .INIT(32'hD0505050)) + \rxcdrlock_cnt[0]_i_1 + (.I0(rxcdrlock_cnt_reg[0]), + .I1(rxcdrlock_cnt_reg[2]), + .I2(rxcdrlock_reg2), + .I3(rxcdrlock_cnt_reg[1]), + .I4(rxcdrlock_cnt_reg[3]), + .O(p_0_in__0[0])); + LUT5 #( + .INIT(32'h8FF00000)) + \rxcdrlock_cnt[1]_i_1 + (.I0(rxcdrlock_cnt_reg[3]), + .I1(rxcdrlock_cnt_reg[2]), + .I2(rxcdrlock_cnt_reg[0]), + .I3(rxcdrlock_cnt_reg[1]), + .I4(rxcdrlock_reg2), + .O(p_0_in__0[1])); + LUT5 #( + .INIT(32'hF8780000)) + \rxcdrlock_cnt[2]_i_1 + (.I0(rxcdrlock_cnt_reg[0]), + .I1(rxcdrlock_cnt_reg[1]), + .I2(rxcdrlock_cnt_reg[2]), + .I3(rxcdrlock_cnt_reg[3]), + .I4(rxcdrlock_reg2), + .O(p_0_in__0[2])); + LUT5 #( + .INIT(32'hFF008000)) + \rxcdrlock_cnt[3]_i_1 + (.I0(rxcdrlock_cnt_reg[0]), + .I1(rxcdrlock_cnt_reg[1]), + .I2(rxcdrlock_cnt_reg[2]), + .I3(rxcdrlock_reg2), + .I4(rxcdrlock_cnt_reg[3]), + .O(p_0_in__0[3])); + FDRE #( + .INIT(1'b0)) + \rxcdrlock_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[0]), + .Q(rxcdrlock_cnt_reg[0]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxcdrlock_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[1]), + .Q(rxcdrlock_cnt_reg[1]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxcdrlock_cnt_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[2]), + .Q(rxcdrlock_cnt_reg[2]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxcdrlock_cnt_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[3]), + .Q(rxcdrlock_cnt_reg[3]), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h80000000)) + \rxcdrlock_reg1[0]_i_1 + (.I0(rxcdrlock_cnt_reg[2]), + .I1(rxcdrlock_cnt_reg[3]), + .I2(gt_rxcdrlock_0), + .I3(rxcdrlock_cnt_reg[1]), + .I4(rxcdrlock_cnt_reg[0]), + .O(RST_RXCDRLOCK)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxcdrlock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gt_rxcdrlock_0), + .Q(rxcdrlock_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxcdrlock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxcdrlock_reg1), + .Q(rxcdrlock_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxeq_adapt_done_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_RXEQ_ADAPT_DONE), + .Q(rxeq_adapt_done_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxeq_adapt_done_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_adapt_done_reg1), + .Q(rxeq_adapt_done_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_RXRESETDONE), + .Q(rxresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxresetdone_reg1), + .Q(rxresetdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxstatus_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(PIPE_RXSTATUS), + .Q(rxstatus_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxstatus_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rxstatus_reg1), + .Q(rxstatus_reg2), + .R(RST_RXUSRCLK_RESET)); + LUT6 #( + .INIT(64'hC404040404040404)) + \rxvalid_cnt[0]_i_1 + (.I0(rxstatus_reg2), + .I1(rxvalid_reg2), + .I2(rxvalid_cnt_reg[0]), + .I3(rxvalid_cnt_reg[1]), + .I4(rxvalid_cnt_reg[2]), + .I5(rxvalid_cnt_reg[3]), + .O(p_0_in__0__0[0])); + LUT6 #( + .INIT(64'h808000F000F00000)) + \rxvalid_cnt[1]_i_1 + (.I0(rxvalid_cnt_reg[3]), + .I1(rxvalid_cnt_reg[2]), + .I2(rxvalid_reg2), + .I3(rxstatus_reg2), + .I4(rxvalid_cnt_reg[1]), + .I5(rxvalid_cnt_reg[0]), + .O(p_0_in__0__0[1])); + LUT6 #( + .INIT(64'h80BF000000C00000)) + \rxvalid_cnt[2]_i_1 + (.I0(rxvalid_cnt_reg[3]), + .I1(rxvalid_cnt_reg[0]), + .I2(rxvalid_cnt_reg[1]), + .I3(rxstatus_reg2), + .I4(rxvalid_reg2), + .I5(rxvalid_cnt_reg[2]), + .O(p_0_in__0__0[2])); + LUT6 #( + .INIT(64'h8C08080808080808)) + \rxvalid_cnt[3]_i_1 + (.I0(rxvalid_cnt_reg[3]), + .I1(rxvalid_reg2), + .I2(rxstatus_reg2), + .I3(rxvalid_cnt_reg[2]), + .I4(rxvalid_cnt_reg[1]), + .I5(rxvalid_cnt_reg[0]), + .O(p_0_in__0__0[3])); + FDRE #( + .INIT(1'b0)) + \rxvalid_cnt_reg[0] + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(p_0_in__0__0[0]), + .Q(rxvalid_cnt_reg[0]), + .R(RST_RXUSRCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \rxvalid_cnt_reg[1] + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(p_0_in__0__0[1]), + .Q(rxvalid_cnt_reg[1]), + .R(RST_RXUSRCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \rxvalid_cnt_reg[2] + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(p_0_in__0__0[2]), + .Q(rxvalid_cnt_reg[2]), + .R(RST_RXUSRCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \rxvalid_cnt_reg[3] + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(p_0_in__0__0[3]), + .Q(rxvalid_cnt_reg[3]), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxvalid_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(gt_rxvalid_0), + .Q(rxvalid_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxvalid_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rxvalid_reg1), + .Q(rxvalid_reg2), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txcompliance_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_TXCOMPLIANCE), + .Q(txcompliance_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txcompliance_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcompliance_reg1), + .Q(txcompliance_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txelecidle_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_TXELECIDLE), + .Q(txelecidle_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txelecidle_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txelecidle_reg1), + .Q(txelecidle_reg2), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h00000000BBB0B0B0)) + txphaligndone_reg1_i_1 + (.I0(txphaligndone_reg1_reg), + .I1(user_active_lane_1), + .I2(txphaligndone_reg1_reg_0), + .I3(txelecidle_reg2), + .I4(txcompliance_reg2), + .I5(txphaligndone_reg1_reg_1), + .O(SYNC_TXPHALIGNDONE)); + LUT6 #( + .INIT(64'h00000000BBB0B0B0)) + txphinitdone_reg1_i_1 + (.I0(txphinitdone_reg1_reg), + .I1(user_active_lane_1), + .I2(txphinitdone_reg1_reg_0), + .I3(txelecidle_reg2), + .I4(txcompliance_reg2), + .I5(txphinitdone_reg1_reg_1), + .O(SYNC_TXPHINITDONE)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_TXRESETDONE), + .Q(txresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txresetdone_reg1), + .Q(txresetdone_reg2), + .R(RST_CPLLRESET)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pipe_user" *) +module pcie_7x_0_pcie_7x_0_pipe_user_42 + (gt_rxvalid_q_reg, + out, + txelecidle_reg2_reg_0, + txcompliance_reg2_reg_0, + USER_OOBCLK, + RST_RXCDRLOCK, + gt_rx_phy_status_wire_filter, + user_rx_converge, + RST_RESETDONE, + user_active_lane_1, + gt_rx_elec_idle_wire_filter, + pipe_rx1_valid_gt, + gt_rxvalid_1, + RST_CPLLRESET, + pipe_pclk_sel_out, + pipe_pclk_in, + pipe_oobclk_in, + USER_TXRESETDONE, + USER_RXRESETDONE, + PIPE_TXELECIDLE, + PIPE_TXCOMPLIANCE, + gt_rxcdrlock_1, + RST_RXUSRCLK_RESET, + pipe_rxusrclk_in, + rxstatus_reg1_reg_0, + RST_IDLE, + USER_RATE_IDLE, + USER_RATE_RXSYNC, + USER_RATE_DONE, + USER_RATE_GEN3, + USER_RXEQ_ADAPT_DONE, + USER_RESETOVRD_START, + RST_PHYSTATUS); + output gt_rxvalid_q_reg; + output out; + output txelecidle_reg2_reg_0; + output txcompliance_reg2_reg_0; + output USER_OOBCLK; + output [0:0]RST_RXCDRLOCK; + output [0:0]gt_rx_phy_status_wire_filter; + output [0:0]user_rx_converge; + output [0:0]RST_RESETDONE; + output user_active_lane_1; + input [0:0]gt_rx_elec_idle_wire_filter; + input pipe_rx1_valid_gt; + input gt_rxvalid_1; + input RST_CPLLRESET; + input [0:0]pipe_pclk_sel_out; + input pipe_pclk_in; + input pipe_oobclk_in; + input USER_TXRESETDONE; + input USER_RXRESETDONE; + input [0:0]PIPE_TXELECIDLE; + input [0:0]PIPE_TXCOMPLIANCE; + input gt_rxcdrlock_1; + input RST_RXUSRCLK_RESET; + input pipe_rxusrclk_in; + input [0:0]rxstatus_reg1_reg_0; + input RST_IDLE; + input USER_RATE_IDLE; + input USER_RATE_RXSYNC; + input USER_RATE_DONE; + input USER_RATE_GEN3; + input USER_RXEQ_ADAPT_DONE; + input USER_RESETOVRD_START; + input [0:0]RST_PHYSTATUS; + + wire [0:0]PIPE_TXCOMPLIANCE; + wire [0:0]PIPE_TXELECIDLE; + wire RST_CPLLRESET; + wire RST_IDLE; + wire [0:0]RST_PHYSTATUS; + wire [0:0]RST_RESETDONE; + wire [0:0]RST_RXCDRLOCK; + wire RST_RXUSRCLK_RESET; + wire USER_OOBCLK; + wire USER_RATE_DONE; + wire USER_RATE_GEN3; + wire USER_RATE_IDLE; + wire USER_RATE_RXSYNC; + wire USER_RESETOVRD_START; + wire USER_RXEQ_ADAPT_DONE; + wire USER_RXRESETDONE; + wire USER_TXRESETDONE; + wire \converge_cnt[0]_i_1__2_n_0 ; + wire \converge_cnt[0]_i_4__0_n_0 ; + wire \converge_cnt[0]_i_5__0_n_0 ; + wire \converge_cnt[0]_i_6__0_n_0 ; + wire [21:0]converge_cnt_reg; + wire \converge_cnt_reg[0]_i_3__0_n_0 ; + wire \converge_cnt_reg[0]_i_3__0_n_1 ; + wire \converge_cnt_reg[0]_i_3__0_n_2 ; + wire \converge_cnt_reg[0]_i_3__0_n_3 ; + wire \converge_cnt_reg[0]_i_3__0_n_4 ; + wire \converge_cnt_reg[0]_i_3__0_n_5 ; + wire \converge_cnt_reg[0]_i_3__0_n_6 ; + wire \converge_cnt_reg[0]_i_3__0_n_7 ; + wire \converge_cnt_reg[12]_i_1__0_n_0 ; + wire \converge_cnt_reg[12]_i_1__0_n_1 ; + wire \converge_cnt_reg[12]_i_1__0_n_2 ; + wire \converge_cnt_reg[12]_i_1__0_n_3 ; + wire \converge_cnt_reg[12]_i_1__0_n_4 ; + wire \converge_cnt_reg[12]_i_1__0_n_5 ; + wire \converge_cnt_reg[12]_i_1__0_n_6 ; + wire \converge_cnt_reg[12]_i_1__0_n_7 ; + wire \converge_cnt_reg[16]_i_1__0_n_0 ; + wire \converge_cnt_reg[16]_i_1__0_n_1 ; + wire \converge_cnt_reg[16]_i_1__0_n_2 ; + wire \converge_cnt_reg[16]_i_1__0_n_3 ; + wire \converge_cnt_reg[16]_i_1__0_n_4 ; + wire \converge_cnt_reg[16]_i_1__0_n_5 ; + wire \converge_cnt_reg[16]_i_1__0_n_6 ; + wire \converge_cnt_reg[16]_i_1__0_n_7 ; + wire \converge_cnt_reg[20]_i_1__0_n_3 ; + wire \converge_cnt_reg[20]_i_1__0_n_6 ; + wire \converge_cnt_reg[20]_i_1__0_n_7 ; + wire \converge_cnt_reg[4]_i_1__0_n_0 ; + wire \converge_cnt_reg[4]_i_1__0_n_1 ; + wire \converge_cnt_reg[4]_i_1__0_n_2 ; + wire \converge_cnt_reg[4]_i_1__0_n_3 ; + wire \converge_cnt_reg[4]_i_1__0_n_4 ; + wire \converge_cnt_reg[4]_i_1__0_n_5 ; + wire \converge_cnt_reg[4]_i_1__0_n_6 ; + wire \converge_cnt_reg[4]_i_1__0_n_7 ; + wire \converge_cnt_reg[8]_i_1__0_n_0 ; + wire \converge_cnt_reg[8]_i_1__0_n_1 ; + wire \converge_cnt_reg[8]_i_1__0_n_2 ; + wire \converge_cnt_reg[8]_i_1__0_n_3 ; + wire \converge_cnt_reg[8]_i_1__0_n_4 ; + wire \converge_cnt_reg[8]_i_1__0_n_5 ; + wire \converge_cnt_reg[8]_i_1__0_n_6 ; + wire \converge_cnt_reg[8]_i_1__0_n_7 ; + wire converge_gen3_i_1__0_n_0; + wire converge_gen3_reg_n_0; + wire [0:0]gt_rx_elec_idle_wire_filter; + wire [0:0]gt_rx_phy_status_wire_filter; + wire gt_rxcdrlock_1; + wire gt_rxvalid_1; + wire gt_rxvalid_q_i_4__0_n_0; + wire gt_rxvalid_q_reg; + wire \gtx_channel.gtxe2_channel_i_i_53_n_0 ; + wire \gtx_channel.gtxe2_channel_i_i_54_n_0 ; + wire \gtx_channel.gtxe2_channel_i_i_55_n_0 ; + wire \gtx_channel.gtxe2_channel_i_i_56_n_0 ; + wire \gtx_channel.gtxe2_channel_i_i_57_n_0 ; + wire [1:0]oobclk_cnt; + wire \oobclk_div.oobclk_i_1__0_n_0 ; + wire [3:0]p_0_in__0; + wire [3:0]p_0_in__0__0; + wire [1:0]p_1_in__0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire pclk_sel_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire pclk_sel_reg2; + wire pipe_oobclk_in; + wire pipe_pclk_in; + wire [0:0]pipe_pclk_sel_out; + wire pipe_rx1_valid_gt; + wire pipe_rxusrclk_in; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_done_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_gen3_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_gen3_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_idle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_idle_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_rxsync_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_rxsync_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire resetovrd_start_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire resetovrd_start_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rst_idle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rst_idle_reg2; + wire [3:0]rxcdrlock_cnt_reg; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxcdrlock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxcdrlock_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxeq_adapt_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxeq_adapt_done_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxresetdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxstatus_reg1; + wire [0:0]rxstatus_reg1_reg_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxstatus_reg2; + wire [3:0]rxvalid_cnt_reg; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxvalid_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxvalid_reg2; + wire sel; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txcompliance_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txcompliance_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txelecidle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txelecidle_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txresetdone_reg2; + wire user_active_lane_1; + wire [0:0]user_rx_converge; + wire [3:1]\NLW_converge_cnt_reg[20]_i_1__0_CO_UNCONNECTED ; + wire [3:2]\NLW_converge_cnt_reg[20]_i_1__0_O_UNCONNECTED ; + + assign out = rst_idle_reg2; + assign txcompliance_reg2_reg_0 = txcompliance_reg2; + assign txelecidle_reg2_reg_0 = txelecidle_reg2; + LUT4 #( + .INIT(16'hEFFF)) + \converge_cnt[0]_i_1__2 + (.I0(rate_gen3_reg2), + .I1(RST_CPLLRESET), + .I2(rst_idle_reg2), + .I3(rate_idle_reg2), + .O(\converge_cnt[0]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFF5555555D)) + \converge_cnt[0]_i_2__0 + (.I0(converge_cnt_reg[21]), + .I1(\converge_cnt[0]_i_4__0_n_0 ), + .I2(converge_cnt_reg[12]), + .I3(converge_cnt_reg[14]), + .I4(converge_cnt_reg[20]), + .I5(\converge_cnt[0]_i_5__0_n_0 ), + .O(sel)); + LUT5 #( + .INIT(32'h00000001)) + \converge_cnt[0]_i_4__0 + (.I0(converge_cnt_reg[3]), + .I1(converge_cnt_reg[4]), + .I2(converge_cnt_reg[5]), + .I3(converge_cnt_reg[7]), + .I4(converge_cnt_reg[6]), + .O(\converge_cnt[0]_i_4__0_n_0 )); + LUT6 #( + .INIT(64'h0A0B0A0F0A0B0A0B)) + \converge_cnt[0]_i_5__0 + (.I0(\gtx_channel.gtxe2_channel_i_i_57_n_0 ), + .I1(converge_cnt_reg[13]), + .I2(converge_cnt_reg[20]), + .I3(converge_cnt_reg[14]), + .I4(converge_cnt_reg[12]), + .I5(\gtx_channel.gtxe2_channel_i_i_55_n_0 ), + .O(\converge_cnt[0]_i_5__0_n_0 )); + LUT1 #( + .INIT(2'h1)) + \converge_cnt[0]_i_6__0 + (.I0(converge_cnt_reg[0]), + .O(\converge_cnt[0]_i_6__0_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[0]_i_3__0_n_7 ), + .Q(converge_cnt_reg[0]), + .R(\converge_cnt[0]_i_1__2_n_0 )); + (* ADDER_THRESHOLD = "11" *) + CARRY4 \converge_cnt_reg[0]_i_3__0 + (.CI(1'b0), + .CO({\converge_cnt_reg[0]_i_3__0_n_0 ,\converge_cnt_reg[0]_i_3__0_n_1 ,\converge_cnt_reg[0]_i_3__0_n_2 ,\converge_cnt_reg[0]_i_3__0_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b1}), + .O({\converge_cnt_reg[0]_i_3__0_n_4 ,\converge_cnt_reg[0]_i_3__0_n_5 ,\converge_cnt_reg[0]_i_3__0_n_6 ,\converge_cnt_reg[0]_i_3__0_n_7 }), + .S({converge_cnt_reg[3:1],\converge_cnt[0]_i_6__0_n_0 })); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[10] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[8]_i_1__0_n_5 ), + .Q(converge_cnt_reg[10]), + .R(\converge_cnt[0]_i_1__2_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[11] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[8]_i_1__0_n_4 ), + .Q(converge_cnt_reg[11]), + .R(\converge_cnt[0]_i_1__2_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[12] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[12]_i_1__0_n_7 ), + .Q(converge_cnt_reg[12]), + .R(\converge_cnt[0]_i_1__2_n_0 )); + (* ADDER_THRESHOLD = "11" *) + CARRY4 \converge_cnt_reg[12]_i_1__0 + (.CI(\converge_cnt_reg[8]_i_1__0_n_0 ), + .CO({\converge_cnt_reg[12]_i_1__0_n_0 ,\converge_cnt_reg[12]_i_1__0_n_1 ,\converge_cnt_reg[12]_i_1__0_n_2 ,\converge_cnt_reg[12]_i_1__0_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\converge_cnt_reg[12]_i_1__0_n_4 ,\converge_cnt_reg[12]_i_1__0_n_5 ,\converge_cnt_reg[12]_i_1__0_n_6 ,\converge_cnt_reg[12]_i_1__0_n_7 }), + .S(converge_cnt_reg[15:12])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[13] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[12]_i_1__0_n_6 ), + .Q(converge_cnt_reg[13]), + .R(\converge_cnt[0]_i_1__2_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[14] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[12]_i_1__0_n_5 ), + .Q(converge_cnt_reg[14]), + .R(\converge_cnt[0]_i_1__2_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[15] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[12]_i_1__0_n_4 ), + .Q(converge_cnt_reg[15]), + .R(\converge_cnt[0]_i_1__2_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[16] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[16]_i_1__0_n_7 ), + .Q(converge_cnt_reg[16]), + .R(\converge_cnt[0]_i_1__2_n_0 )); + (* ADDER_THRESHOLD = "11" *) + CARRY4 \converge_cnt_reg[16]_i_1__0 + (.CI(\converge_cnt_reg[12]_i_1__0_n_0 ), + .CO({\converge_cnt_reg[16]_i_1__0_n_0 ,\converge_cnt_reg[16]_i_1__0_n_1 ,\converge_cnt_reg[16]_i_1__0_n_2 ,\converge_cnt_reg[16]_i_1__0_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\converge_cnt_reg[16]_i_1__0_n_4 ,\converge_cnt_reg[16]_i_1__0_n_5 ,\converge_cnt_reg[16]_i_1__0_n_6 ,\converge_cnt_reg[16]_i_1__0_n_7 }), + .S(converge_cnt_reg[19:16])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[17] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[16]_i_1__0_n_6 ), + .Q(converge_cnt_reg[17]), + .R(\converge_cnt[0]_i_1__2_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[18] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[16]_i_1__0_n_5 ), + .Q(converge_cnt_reg[18]), + .R(\converge_cnt[0]_i_1__2_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[19] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[16]_i_1__0_n_4 ), + .Q(converge_cnt_reg[19]), + .R(\converge_cnt[0]_i_1__2_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[0]_i_3__0_n_6 ), + .Q(converge_cnt_reg[1]), + .R(\converge_cnt[0]_i_1__2_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[20] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[20]_i_1__0_n_7 ), + .Q(converge_cnt_reg[20]), + .R(\converge_cnt[0]_i_1__2_n_0 )); + (* ADDER_THRESHOLD = "11" *) + CARRY4 \converge_cnt_reg[20]_i_1__0 + (.CI(\converge_cnt_reg[16]_i_1__0_n_0 ), + .CO({\NLW_converge_cnt_reg[20]_i_1__0_CO_UNCONNECTED [3:1],\converge_cnt_reg[20]_i_1__0_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\NLW_converge_cnt_reg[20]_i_1__0_O_UNCONNECTED [3:2],\converge_cnt_reg[20]_i_1__0_n_6 ,\converge_cnt_reg[20]_i_1__0_n_7 }), + .S({1'b0,1'b0,converge_cnt_reg[21:20]})); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[21] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[20]_i_1__0_n_6 ), + .Q(converge_cnt_reg[21]), + .R(\converge_cnt[0]_i_1__2_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[2] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[0]_i_3__0_n_5 ), + .Q(converge_cnt_reg[2]), + .R(\converge_cnt[0]_i_1__2_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[3] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[0]_i_3__0_n_4 ), + .Q(converge_cnt_reg[3]), + .R(\converge_cnt[0]_i_1__2_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[4] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[4]_i_1__0_n_7 ), + .Q(converge_cnt_reg[4]), + .R(\converge_cnt[0]_i_1__2_n_0 )); + (* ADDER_THRESHOLD = "11" *) + CARRY4 \converge_cnt_reg[4]_i_1__0 + (.CI(\converge_cnt_reg[0]_i_3__0_n_0 ), + .CO({\converge_cnt_reg[4]_i_1__0_n_0 ,\converge_cnt_reg[4]_i_1__0_n_1 ,\converge_cnt_reg[4]_i_1__0_n_2 ,\converge_cnt_reg[4]_i_1__0_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\converge_cnt_reg[4]_i_1__0_n_4 ,\converge_cnt_reg[4]_i_1__0_n_5 ,\converge_cnt_reg[4]_i_1__0_n_6 ,\converge_cnt_reg[4]_i_1__0_n_7 }), + .S(converge_cnt_reg[7:4])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[5] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[4]_i_1__0_n_6 ), + .Q(converge_cnt_reg[5]), + .R(\converge_cnt[0]_i_1__2_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[6] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[4]_i_1__0_n_5 ), + .Q(converge_cnt_reg[6]), + .R(\converge_cnt[0]_i_1__2_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[7] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[4]_i_1__0_n_4 ), + .Q(converge_cnt_reg[7]), + .R(\converge_cnt[0]_i_1__2_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[8] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[8]_i_1__0_n_7 ), + .Q(converge_cnt_reg[8]), + .R(\converge_cnt[0]_i_1__2_n_0 )); + (* ADDER_THRESHOLD = "11" *) + CARRY4 \converge_cnt_reg[8]_i_1__0 + (.CI(\converge_cnt_reg[4]_i_1__0_n_0 ), + .CO({\converge_cnt_reg[8]_i_1__0_n_0 ,\converge_cnt_reg[8]_i_1__0_n_1 ,\converge_cnt_reg[8]_i_1__0_n_2 ,\converge_cnt_reg[8]_i_1__0_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\converge_cnt_reg[8]_i_1__0_n_4 ,\converge_cnt_reg[8]_i_1__0_n_5 ,\converge_cnt_reg[8]_i_1__0_n_6 ,\converge_cnt_reg[8]_i_1__0_n_7 }), + .S(converge_cnt_reg[11:8])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[9] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[8]_i_1__0_n_6 ), + .Q(converge_cnt_reg[9]), + .R(\converge_cnt[0]_i_1__2_n_0 )); + LUT3 #( + .INIT(8'hC8)) + converge_gen3_i_1__0 + (.I0(rxeq_adapt_done_reg2), + .I1(rate_gen3_reg2), + .I2(converge_gen3_reg_n_0), + .O(converge_gen3_i_1__0_n_0)); + FDRE #( + .INIT(1'b0)) + converge_gen3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_gen3_i_1__0_n_0), + .Q(converge_gen3_reg_n_0), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'hFFFFA8FF)) + gt_rx_phy_status_q_i_1__0 + (.I0(RST_PHYSTATUS), + .I1(rate_idle_reg2), + .I2(rate_rxsync_reg2), + .I3(rst_idle_reg2), + .I4(rate_done_reg2), + .O(gt_rx_phy_status_wire_filter)); + LUT6 #( + .INIT(64'hD000000000000000)) + gt_rxvalid_q_i_3__0 + (.I0(gt_rx_elec_idle_wire_filter), + .I1(pipe_rx1_valid_gt), + .I2(gt_rxvalid_q_i_4__0_n_0), + .I3(gt_rxvalid_1), + .I4(rst_idle_reg2), + .I5(rate_idle_reg2), + .O(gt_rxvalid_q_reg)); + LUT4 #( + .INIT(16'h8000)) + gt_rxvalid_q_i_4__0 + (.I0(rxvalid_cnt_reg[0]), + .I1(rxvalid_cnt_reg[1]), + .I2(rxvalid_cnt_reg[2]), + .I3(rxvalid_cnt_reg[3]), + .O(gt_rxvalid_q_i_4__0_n_0)); + LUT6 #( + .INIT(64'hFFFFFFFF00000800)) + \gtx_channel.gtxe2_channel_i_i_48 + (.I0(\gtx_channel.gtxe2_channel_i_i_53_n_0 ), + .I1(\gtx_channel.gtxe2_channel_i_i_54_n_0 ), + .I2(\gtx_channel.gtxe2_channel_i_i_55_n_0 ), + .I3(\gtx_channel.gtxe2_channel_i_i_56_n_0 ), + .I4(\gtx_channel.gtxe2_channel_i_i_57_n_0 ), + .I5(converge_gen3_reg_n_0), + .O(user_rx_converge)); + LUT3 #( + .INIT(8'h01)) + \gtx_channel.gtxe2_channel_i_i_53 + (.I0(converge_cnt_reg[20]), + .I1(converge_cnt_reg[14]), + .I2(converge_cnt_reg[12]), + .O(\gtx_channel.gtxe2_channel_i_i_53_n_0 )); + LUT4 #( + .INIT(16'h0100)) + \gtx_channel.gtxe2_channel_i_i_54 + (.I0(converge_cnt_reg[1]), + .I1(converge_cnt_reg[0]), + .I2(converge_cnt_reg[2]), + .I3(converge_cnt_reg[3]), + .O(\gtx_channel.gtxe2_channel_i_i_54_n_0 )); + LUT4 #( + .INIT(16'h7FFF)) + \gtx_channel.gtxe2_channel_i_i_55 + (.I0(converge_cnt_reg[9]), + .I1(converge_cnt_reg[8]), + .I2(converge_cnt_reg[11]), + .I3(converge_cnt_reg[10]), + .O(\gtx_channel.gtxe2_channel_i_i_55_n_0 )); + LUT6 #( + .INIT(64'h0001000000000000)) + \gtx_channel.gtxe2_channel_i_i_56 + (.I0(converge_cnt_reg[6]), + .I1(converge_cnt_reg[7]), + .I2(converge_cnt_reg[4]), + .I3(converge_cnt_reg[5]), + .I4(converge_cnt_reg[21]), + .I5(converge_cnt_reg[13]), + .O(\gtx_channel.gtxe2_channel_i_i_56_n_0 )); + LUT5 #( + .INIT(32'h7FFFFFFF)) + \gtx_channel.gtxe2_channel_i_i_57 + (.I0(converge_cnt_reg[15]), + .I1(converge_cnt_reg[18]), + .I2(converge_cnt_reg[19]), + .I3(converge_cnt_reg[17]), + .I4(converge_cnt_reg[16]), + .O(\gtx_channel.gtxe2_channel_i_i_57_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair121" *) + LUT1 #( + .INIT(2'h1)) + \oobclk_div.oobclk_cnt[0]_i_1__0 + (.I0(oobclk_cnt[0]), + .O(p_1_in__0[0])); + (* SOFT_HLUTNM = "soft_lutpair121" *) + LUT2 #( + .INIT(4'h6)) + \oobclk_div.oobclk_cnt[1]_i_1__0 + (.I0(oobclk_cnt[0]), + .I1(oobclk_cnt[1]), + .O(p_1_in__0[1])); + FDRE #( + .INIT(1'b0)) + \oobclk_div.oobclk_cnt_reg[0] + (.C(pipe_oobclk_in), + .CE(1'b1), + .D(p_1_in__0[0]), + .Q(oobclk_cnt[0]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \oobclk_div.oobclk_cnt_reg[1] + (.C(pipe_oobclk_in), + .CE(1'b1), + .D(p_1_in__0[1]), + .Q(oobclk_cnt[1]), + .R(RST_CPLLRESET)); + LUT3 #( + .INIT(8'hB8)) + \oobclk_div.oobclk_i_1__0 + (.I0(oobclk_cnt[1]), + .I1(pclk_sel_reg2), + .I2(oobclk_cnt[0]), + .O(\oobclk_div.oobclk_i_1__0_n_0 )); + FDRE #( + .INIT(1'b0)) + \oobclk_div.oobclk_reg + (.C(pipe_oobclk_in), + .CE(1'b1), + .D(\oobclk_div.oobclk_i_1__0_n_0 ), + .Q(USER_OOBCLK), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE pclk_sel_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_pclk_sel_out), + .Q(pclk_sel_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE pclk_sel_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pclk_sel_reg1), + .Q(pclk_sel_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_done_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(USER_RATE_DONE), + .Q(rate_done_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_done_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rate_done_reg1), + .Q(rate_done_reg2), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_gen3_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(USER_RATE_GEN3), + .Q(rate_gen3_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_gen3_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rate_gen3_reg1), + .Q(rate_gen3_reg2), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_idle_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(USER_RATE_IDLE), + .Q(rate_idle_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_idle_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rate_idle_reg1), + .Q(rate_idle_reg2), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_rxsync_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(USER_RATE_RXSYNC), + .Q(rate_rxsync_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_rxsync_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rate_rxsync_reg1), + .Q(rate_rxsync_reg2), + .R(RST_RXUSRCLK_RESET)); + LUT2 #( + .INIT(4'h8)) + \resetdone_reg1[1]_i_1 + (.I0(rxresetdone_reg2), + .I1(txresetdone_reg2), + .O(RST_RESETDONE)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE resetovrd_start_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_RESETOVRD_START), + .Q(resetovrd_start_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE resetovrd_start_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(resetovrd_start_reg1), + .Q(resetovrd_start_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rst_idle_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(RST_IDLE), + .Q(rst_idle_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rst_idle_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rst_idle_reg1), + .Q(rst_idle_reg2), + .R(RST_RXUSRCLK_RESET)); + LUT5 #( + .INIT(32'hD0505050)) + \rxcdrlock_cnt[0]_i_1__0 + (.I0(rxcdrlock_cnt_reg[0]), + .I1(rxcdrlock_cnt_reg[2]), + .I2(rxcdrlock_reg2), + .I3(rxcdrlock_cnt_reg[1]), + .I4(rxcdrlock_cnt_reg[3]), + .O(p_0_in__0[0])); + LUT5 #( + .INIT(32'h8FF00000)) + \rxcdrlock_cnt[1]_i_1__0 + (.I0(rxcdrlock_cnt_reg[3]), + .I1(rxcdrlock_cnt_reg[2]), + .I2(rxcdrlock_cnt_reg[0]), + .I3(rxcdrlock_cnt_reg[1]), + .I4(rxcdrlock_reg2), + .O(p_0_in__0[1])); + LUT5 #( + .INIT(32'hF8780000)) + \rxcdrlock_cnt[2]_i_1__0 + (.I0(rxcdrlock_cnt_reg[0]), + .I1(rxcdrlock_cnt_reg[1]), + .I2(rxcdrlock_cnt_reg[2]), + .I3(rxcdrlock_cnt_reg[3]), + .I4(rxcdrlock_reg2), + .O(p_0_in__0[2])); + LUT5 #( + .INIT(32'hFF008000)) + \rxcdrlock_cnt[3]_i_1__0 + (.I0(rxcdrlock_cnt_reg[0]), + .I1(rxcdrlock_cnt_reg[1]), + .I2(rxcdrlock_cnt_reg[2]), + .I3(rxcdrlock_reg2), + .I4(rxcdrlock_cnt_reg[3]), + .O(p_0_in__0[3])); + FDRE #( + .INIT(1'b0)) + \rxcdrlock_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[0]), + .Q(rxcdrlock_cnt_reg[0]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxcdrlock_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[1]), + .Q(rxcdrlock_cnt_reg[1]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxcdrlock_cnt_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[2]), + .Q(rxcdrlock_cnt_reg[2]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxcdrlock_cnt_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[3]), + .Q(rxcdrlock_cnt_reg[3]), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h80000000)) + \rxcdrlock_reg1[1]_i_1 + (.I0(rxcdrlock_cnt_reg[2]), + .I1(rxcdrlock_cnt_reg[3]), + .I2(gt_rxcdrlock_1), + .I3(rxcdrlock_cnt_reg[1]), + .I4(rxcdrlock_cnt_reg[0]), + .O(RST_RXCDRLOCK)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxcdrlock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gt_rxcdrlock_1), + .Q(rxcdrlock_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxcdrlock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxcdrlock_reg1), + .Q(rxcdrlock_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxeq_adapt_done_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_RXEQ_ADAPT_DONE), + .Q(rxeq_adapt_done_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxeq_adapt_done_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_adapt_done_reg1), + .Q(rxeq_adapt_done_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_RXRESETDONE), + .Q(rxresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxresetdone_reg1), + .Q(rxresetdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxstatus_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rxstatus_reg1_reg_0), + .Q(rxstatus_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxstatus_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rxstatus_reg1), + .Q(rxstatus_reg2), + .R(RST_RXUSRCLK_RESET)); + LUT6 #( + .INIT(64'hC404040404040404)) + \rxvalid_cnt[0]_i_1__0 + (.I0(rxstatus_reg2), + .I1(rxvalid_reg2), + .I2(rxvalid_cnt_reg[0]), + .I3(rxvalid_cnt_reg[1]), + .I4(rxvalid_cnt_reg[2]), + .I5(rxvalid_cnt_reg[3]), + .O(p_0_in__0__0[0])); + LUT6 #( + .INIT(64'h808000F000F00000)) + \rxvalid_cnt[1]_i_1__0 + (.I0(rxvalid_cnt_reg[3]), + .I1(rxvalid_cnt_reg[2]), + .I2(rxvalid_reg2), + .I3(rxstatus_reg2), + .I4(rxvalid_cnt_reg[1]), + .I5(rxvalid_cnt_reg[0]), + .O(p_0_in__0__0[1])); + LUT6 #( + .INIT(64'h80BF000000C00000)) + \rxvalid_cnt[2]_i_1__0 + (.I0(rxvalid_cnt_reg[3]), + .I1(rxvalid_cnt_reg[0]), + .I2(rxvalid_cnt_reg[1]), + .I3(rxstatus_reg2), + .I4(rxvalid_reg2), + .I5(rxvalid_cnt_reg[2]), + .O(p_0_in__0__0[2])); + LUT6 #( + .INIT(64'h8C08080808080808)) + \rxvalid_cnt[3]_i_1__0 + (.I0(rxvalid_cnt_reg[3]), + .I1(rxvalid_reg2), + .I2(rxstatus_reg2), + .I3(rxvalid_cnt_reg[2]), + .I4(rxvalid_cnt_reg[1]), + .I5(rxvalid_cnt_reg[0]), + .O(p_0_in__0__0[3])); + FDRE #( + .INIT(1'b0)) + \rxvalid_cnt_reg[0] + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(p_0_in__0__0[0]), + .Q(rxvalid_cnt_reg[0]), + .R(RST_RXUSRCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \rxvalid_cnt_reg[1] + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(p_0_in__0__0[1]), + .Q(rxvalid_cnt_reg[1]), + .R(RST_RXUSRCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \rxvalid_cnt_reg[2] + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(p_0_in__0__0[2]), + .Q(rxvalid_cnt_reg[2]), + .R(RST_RXUSRCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \rxvalid_cnt_reg[3] + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(p_0_in__0__0[3]), + .Q(rxvalid_cnt_reg[3]), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxvalid_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(gt_rxvalid_1), + .Q(rxvalid_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxvalid_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rxvalid_reg1), + .Q(rxvalid_reg2), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txcompliance_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_TXCOMPLIANCE), + .Q(txcompliance_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txcompliance_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcompliance_reg1), + .Q(txcompliance_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txelecidle_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_TXELECIDLE), + .Q(txelecidle_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txelecidle_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txelecidle_reg1), + .Q(txelecidle_reg2), + .R(RST_CPLLRESET)); + LUT2 #( + .INIT(4'h7)) + txphaligndone_reg1_i_2 + (.I0(txcompliance_reg2), + .I1(txelecidle_reg2), + .O(user_active_lane_1)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_TXRESETDONE), + .Q(txresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txresetdone_reg1), + .Q(txresetdone_reg2), + .R(RST_CPLLRESET)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pipe_user" *) +module pcie_7x_0_pcie_7x_0_pipe_user_48 + (reg_clock_locked_reg, + gt_rxvalid_q_reg, + txcompliance_reg2_reg_0, + txcompliance_reg2_reg_1, + txelecidle_reg2_reg_0, + txcompliance_reg2_reg_2, + USER_OOBCLK, + RST_RXCDRLOCK, + gt_rx_phy_status_wire_filter, + \converge_cnt_reg[15]_0 , + \converge_cnt_reg[1]_0 , + \converge_cnt_reg[6]_0 , + RST_RESETDONE, + user_active_lane_2, + converge_gen3_reg_0, + reg_clock_locked, + out, + phy_rdy_n_int_reg, + phy_rdy_n_int_reg_0, + gt_rx_elec_idle_wire_filter, + pipe_rx2_valid_gt, + gt_rxvalid_2, + txphaligndone_reg1_reg, + txphaligndone_reg1_reg_0, + txphaligndone_reg1_reg_1, + txphaligndone_reg1_reg_2, + txphinitdone_reg1_reg, + txphinitdone_reg1_reg_0, + RST_CPLLRESET, + pipe_pclk_sel_out, + pipe_pclk_in, + pipe_oobclk_in, + USER_TXRESETDONE, + USER_RXRESETDONE, + PIPE_TXELECIDLE, + PIPE_TXCOMPLIANCE, + gt_rxcdrlock_2, + RST_RXUSRCLK_RESET, + pipe_rxusrclk_in, + rxstatus_reg1_reg_0, + RST_IDLE, + USER_RATE_IDLE, + USER_RATE_RXSYNC, + USER_RATE_DONE, + rate_gen3_2, + USER_RXEQ_ADAPT_DONE, + USER_RESETOVRD_START, + RST_PHYSTATUS); + output reg_clock_locked_reg; + output gt_rxvalid_q_reg; + output txcompliance_reg2_reg_0; + output txcompliance_reg2_reg_1; + output txelecidle_reg2_reg_0; + output txcompliance_reg2_reg_2; + output USER_OOBCLK; + output [0:0]RST_RXCDRLOCK; + output [0:0]gt_rx_phy_status_wire_filter; + output \converge_cnt_reg[15]_0 ; + output \converge_cnt_reg[1]_0 ; + output \converge_cnt_reg[6]_0 ; + output [0:0]RST_RESETDONE; + output user_active_lane_2; + output converge_gen3_reg_0; + input reg_clock_locked; + input out; + input phy_rdy_n_int_reg; + input phy_rdy_n_int_reg_0; + input [0:0]gt_rx_elec_idle_wire_filter; + input pipe_rx2_valid_gt; + input gt_rxvalid_2; + input txphaligndone_reg1_reg; + input txphaligndone_reg1_reg_0; + input txphaligndone_reg1_reg_1; + input txphaligndone_reg1_reg_2; + input txphinitdone_reg1_reg; + input txphinitdone_reg1_reg_0; + input RST_CPLLRESET; + input [0:0]pipe_pclk_sel_out; + input pipe_pclk_in; + input pipe_oobclk_in; + input USER_TXRESETDONE; + input USER_RXRESETDONE; + input [0:0]PIPE_TXELECIDLE; + input [0:0]PIPE_TXCOMPLIANCE; + input gt_rxcdrlock_2; + input RST_RXUSRCLK_RESET; + input pipe_rxusrclk_in; + input [0:0]rxstatus_reg1_reg_0; + input RST_IDLE; + input USER_RATE_IDLE; + input USER_RATE_RXSYNC; + input USER_RATE_DONE; + input rate_gen3_2; + input USER_RXEQ_ADAPT_DONE; + input USER_RESETOVRD_START; + input [0:0]RST_PHYSTATUS; + + wire [0:0]PIPE_TXCOMPLIANCE; + wire [0:0]PIPE_TXELECIDLE; + wire RST_CPLLRESET; + wire RST_IDLE; + wire [0:0]RST_PHYSTATUS; + wire [0:0]RST_RESETDONE; + wire [0:0]RST_RXCDRLOCK; + wire RST_RXUSRCLK_RESET; + wire USER_OOBCLK; + wire USER_RATE_DONE; + wire USER_RATE_IDLE; + wire USER_RATE_RXSYNC; + wire USER_RESETOVRD_START; + wire USER_RXEQ_ADAPT_DONE; + wire USER_RXRESETDONE; + wire USER_TXRESETDONE; + wire \converge_cnt[0]_i_1__4_n_0 ; + wire \converge_cnt[0]_i_4__1_n_0 ; + wire \converge_cnt[0]_i_5__1_n_0 ; + wire \converge_cnt[0]_i_6__1_n_0 ; + wire \converge_cnt[0]_i_7_n_0 ; + wire [21:0]converge_cnt_reg; + wire \converge_cnt_reg[0]_i_3__1_n_0 ; + wire \converge_cnt_reg[0]_i_3__1_n_1 ; + wire \converge_cnt_reg[0]_i_3__1_n_2 ; + wire \converge_cnt_reg[0]_i_3__1_n_3 ; + wire \converge_cnt_reg[0]_i_3__1_n_4 ; + wire \converge_cnt_reg[0]_i_3__1_n_5 ; + wire \converge_cnt_reg[0]_i_3__1_n_6 ; + wire \converge_cnt_reg[0]_i_3__1_n_7 ; + wire \converge_cnt_reg[12]_i_1__1_n_0 ; + wire \converge_cnt_reg[12]_i_1__1_n_1 ; + wire \converge_cnt_reg[12]_i_1__1_n_2 ; + wire \converge_cnt_reg[12]_i_1__1_n_3 ; + wire \converge_cnt_reg[12]_i_1__1_n_4 ; + wire \converge_cnt_reg[12]_i_1__1_n_5 ; + wire \converge_cnt_reg[12]_i_1__1_n_6 ; + wire \converge_cnt_reg[12]_i_1__1_n_7 ; + wire \converge_cnt_reg[15]_0 ; + wire \converge_cnt_reg[16]_i_1__1_n_0 ; + wire \converge_cnt_reg[16]_i_1__1_n_1 ; + wire \converge_cnt_reg[16]_i_1__1_n_2 ; + wire \converge_cnt_reg[16]_i_1__1_n_3 ; + wire \converge_cnt_reg[16]_i_1__1_n_4 ; + wire \converge_cnt_reg[16]_i_1__1_n_5 ; + wire \converge_cnt_reg[16]_i_1__1_n_6 ; + wire \converge_cnt_reg[16]_i_1__1_n_7 ; + wire \converge_cnt_reg[1]_0 ; + wire \converge_cnt_reg[20]_i_1__1_n_3 ; + wire \converge_cnt_reg[20]_i_1__1_n_6 ; + wire \converge_cnt_reg[20]_i_1__1_n_7 ; + wire \converge_cnt_reg[4]_i_1__1_n_0 ; + wire \converge_cnt_reg[4]_i_1__1_n_1 ; + wire \converge_cnt_reg[4]_i_1__1_n_2 ; + wire \converge_cnt_reg[4]_i_1__1_n_3 ; + wire \converge_cnt_reg[4]_i_1__1_n_4 ; + wire \converge_cnt_reg[4]_i_1__1_n_5 ; + wire \converge_cnt_reg[4]_i_1__1_n_6 ; + wire \converge_cnt_reg[4]_i_1__1_n_7 ; + wire \converge_cnt_reg[6]_0 ; + wire \converge_cnt_reg[8]_i_1__1_n_0 ; + wire \converge_cnt_reg[8]_i_1__1_n_1 ; + wire \converge_cnt_reg[8]_i_1__1_n_2 ; + wire \converge_cnt_reg[8]_i_1__1_n_3 ; + wire \converge_cnt_reg[8]_i_1__1_n_4 ; + wire \converge_cnt_reg[8]_i_1__1_n_5 ; + wire \converge_cnt_reg[8]_i_1__1_n_6 ; + wire \converge_cnt_reg[8]_i_1__1_n_7 ; + wire converge_gen3_i_1__1_n_0; + wire converge_gen3_reg_0; + wire [0:0]gt_rx_elec_idle_wire_filter; + wire [0:0]gt_rx_phy_status_wire_filter; + wire gt_rxcdrlock_2; + wire gt_rxvalid_2; + wire gt_rxvalid_q_i_4__1_n_0; + wire gt_rxvalid_q_reg; + wire \gtx_channel.gtxe2_channel_i_i_64_n_0 ; + wire [1:0]oobclk_cnt; + wire \oobclk_div.oobclk_i_1__1_n_0 ; + wire out; + wire [3:0]p_0_in__0; + wire [3:0]p_0_in__0__0; + wire [1:0]p_1_in__0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire pclk_sel_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire pclk_sel_reg2; + wire phy_rdy_n_int_reg; + wire phy_rdy_n_int_reg_0; + wire pipe_oobclk_in; + wire pipe_pclk_in; + wire [0:0]pipe_pclk_sel_out; + wire pipe_rx2_valid_gt; + wire pipe_rxusrclk_in; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_done_reg2; + wire rate_gen3_2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_gen3_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_gen3_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_idle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_idle_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_rxsync_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_rxsync_reg2; + wire reg_clock_locked; + wire reg_clock_locked_reg; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire resetovrd_start_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire resetovrd_start_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rst_idle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rst_idle_reg2; + wire [3:0]rxcdrlock_cnt_reg; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxcdrlock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxcdrlock_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxeq_adapt_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxeq_adapt_done_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxresetdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxstatus_reg1; + wire [0:0]rxstatus_reg1_reg_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxstatus_reg2; + wire [3:0]rxvalid_cnt_reg; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxvalid_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxvalid_reg2; + wire sel; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txcompliance_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txcompliance_reg2; + wire txcompliance_reg2_reg_0; + wire txcompliance_reg2_reg_2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txelecidle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txelecidle_reg2; + wire txphaligndone_reg1_reg; + wire txphaligndone_reg1_reg_0; + wire txphaligndone_reg1_reg_1; + wire txphaligndone_reg1_reg_2; + wire txphinitdone_reg1_reg; + wire txphinitdone_reg1_reg_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txresetdone_reg2; + wire user_active_lane_2; + wire [3:1]\NLW_converge_cnt_reg[20]_i_1__1_CO_UNCONNECTED ; + wire [3:2]\NLW_converge_cnt_reg[20]_i_1__1_O_UNCONNECTED ; + + assign txcompliance_reg2_reg_1 = txcompliance_reg2; + assign txelecidle_reg2_reg_0 = txelecidle_reg2; + LUT2 #( + .INIT(4'h7)) + \FSM_onehot_txsync_fsm.fsm_tx[5]_i_2__0 + (.I0(txcompliance_reg2), + .I1(txelecidle_reg2), + .O(user_active_lane_2)); + LUT4 #( + .INIT(16'hEFFF)) + \converge_cnt[0]_i_1__4 + (.I0(rate_gen3_reg2), + .I1(RST_CPLLRESET), + .I2(rst_idle_reg2), + .I3(rate_idle_reg2), + .O(\converge_cnt[0]_i_1__4_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFF5555555D)) + \converge_cnt[0]_i_2__1 + (.I0(converge_cnt_reg[21]), + .I1(\converge_cnt[0]_i_4__1_n_0 ), + .I2(converge_cnt_reg[12]), + .I3(converge_cnt_reg[14]), + .I4(converge_cnt_reg[20]), + .I5(\converge_cnt[0]_i_5__1_n_0 ), + .O(sel)); + LUT5 #( + .INIT(32'h00000001)) + \converge_cnt[0]_i_4__1 + (.I0(converge_cnt_reg[3]), + .I1(converge_cnt_reg[4]), + .I2(converge_cnt_reg[5]), + .I3(converge_cnt_reg[7]), + .I4(converge_cnt_reg[6]), + .O(\converge_cnt[0]_i_4__1_n_0 )); + LUT6 #( + .INIT(64'h0A0B0A0F0A0B0A0B)) + \converge_cnt[0]_i_5__1 + (.I0(\converge_cnt_reg[15]_0 ), + .I1(converge_cnt_reg[13]), + .I2(converge_cnt_reg[20]), + .I3(converge_cnt_reg[14]), + .I4(converge_cnt_reg[12]), + .I5(\converge_cnt[0]_i_7_n_0 ), + .O(\converge_cnt[0]_i_5__1_n_0 )); + LUT1 #( + .INIT(2'h1)) + \converge_cnt[0]_i_6__1 + (.I0(converge_cnt_reg[0]), + .O(\converge_cnt[0]_i_6__1_n_0 )); + LUT4 #( + .INIT(16'h7FFF)) + \converge_cnt[0]_i_7 + (.I0(converge_cnt_reg[9]), + .I1(converge_cnt_reg[8]), + .I2(converge_cnt_reg[11]), + .I3(converge_cnt_reg[10]), + .O(\converge_cnt[0]_i_7_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[0]_i_3__1_n_7 ), + .Q(converge_cnt_reg[0]), + .R(\converge_cnt[0]_i_1__4_n_0 )); + (* ADDER_THRESHOLD = "11" *) + CARRY4 \converge_cnt_reg[0]_i_3__1 + (.CI(1'b0), + .CO({\converge_cnt_reg[0]_i_3__1_n_0 ,\converge_cnt_reg[0]_i_3__1_n_1 ,\converge_cnt_reg[0]_i_3__1_n_2 ,\converge_cnt_reg[0]_i_3__1_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b1}), + .O({\converge_cnt_reg[0]_i_3__1_n_4 ,\converge_cnt_reg[0]_i_3__1_n_5 ,\converge_cnt_reg[0]_i_3__1_n_6 ,\converge_cnt_reg[0]_i_3__1_n_7 }), + .S({converge_cnt_reg[3:1],\converge_cnt[0]_i_6__1_n_0 })); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[10] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[8]_i_1__1_n_5 ), + .Q(converge_cnt_reg[10]), + .R(\converge_cnt[0]_i_1__4_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[11] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[8]_i_1__1_n_4 ), + .Q(converge_cnt_reg[11]), + .R(\converge_cnt[0]_i_1__4_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[12] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[12]_i_1__1_n_7 ), + .Q(converge_cnt_reg[12]), + .R(\converge_cnt[0]_i_1__4_n_0 )); + (* ADDER_THRESHOLD = "11" *) + CARRY4 \converge_cnt_reg[12]_i_1__1 + (.CI(\converge_cnt_reg[8]_i_1__1_n_0 ), + .CO({\converge_cnt_reg[12]_i_1__1_n_0 ,\converge_cnt_reg[12]_i_1__1_n_1 ,\converge_cnt_reg[12]_i_1__1_n_2 ,\converge_cnt_reg[12]_i_1__1_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\converge_cnt_reg[12]_i_1__1_n_4 ,\converge_cnt_reg[12]_i_1__1_n_5 ,\converge_cnt_reg[12]_i_1__1_n_6 ,\converge_cnt_reg[12]_i_1__1_n_7 }), + .S(converge_cnt_reg[15:12])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[13] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[12]_i_1__1_n_6 ), + .Q(converge_cnt_reg[13]), + .R(\converge_cnt[0]_i_1__4_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[14] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[12]_i_1__1_n_5 ), + .Q(converge_cnt_reg[14]), + .R(\converge_cnt[0]_i_1__4_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[15] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[12]_i_1__1_n_4 ), + .Q(converge_cnt_reg[15]), + .R(\converge_cnt[0]_i_1__4_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[16] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[16]_i_1__1_n_7 ), + .Q(converge_cnt_reg[16]), + .R(\converge_cnt[0]_i_1__4_n_0 )); + (* ADDER_THRESHOLD = "11" *) + CARRY4 \converge_cnt_reg[16]_i_1__1 + (.CI(\converge_cnt_reg[12]_i_1__1_n_0 ), + .CO({\converge_cnt_reg[16]_i_1__1_n_0 ,\converge_cnt_reg[16]_i_1__1_n_1 ,\converge_cnt_reg[16]_i_1__1_n_2 ,\converge_cnt_reg[16]_i_1__1_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\converge_cnt_reg[16]_i_1__1_n_4 ,\converge_cnt_reg[16]_i_1__1_n_5 ,\converge_cnt_reg[16]_i_1__1_n_6 ,\converge_cnt_reg[16]_i_1__1_n_7 }), + .S(converge_cnt_reg[19:16])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[17] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[16]_i_1__1_n_6 ), + .Q(converge_cnt_reg[17]), + .R(\converge_cnt[0]_i_1__4_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[18] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[16]_i_1__1_n_5 ), + .Q(converge_cnt_reg[18]), + .R(\converge_cnt[0]_i_1__4_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[19] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[16]_i_1__1_n_4 ), + .Q(converge_cnt_reg[19]), + .R(\converge_cnt[0]_i_1__4_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[0]_i_3__1_n_6 ), + .Q(converge_cnt_reg[1]), + .R(\converge_cnt[0]_i_1__4_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[20] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[20]_i_1__1_n_7 ), + .Q(converge_cnt_reg[20]), + .R(\converge_cnt[0]_i_1__4_n_0 )); + (* ADDER_THRESHOLD = "11" *) + CARRY4 \converge_cnt_reg[20]_i_1__1 + (.CI(\converge_cnt_reg[16]_i_1__1_n_0 ), + .CO({\NLW_converge_cnt_reg[20]_i_1__1_CO_UNCONNECTED [3:1],\converge_cnt_reg[20]_i_1__1_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\NLW_converge_cnt_reg[20]_i_1__1_O_UNCONNECTED [3:2],\converge_cnt_reg[20]_i_1__1_n_6 ,\converge_cnt_reg[20]_i_1__1_n_7 }), + .S({1'b0,1'b0,converge_cnt_reg[21:20]})); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[21] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[20]_i_1__1_n_6 ), + .Q(converge_cnt_reg[21]), + .R(\converge_cnt[0]_i_1__4_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[2] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[0]_i_3__1_n_5 ), + .Q(converge_cnt_reg[2]), + .R(\converge_cnt[0]_i_1__4_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[3] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[0]_i_3__1_n_4 ), + .Q(converge_cnt_reg[3]), + .R(\converge_cnt[0]_i_1__4_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[4] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[4]_i_1__1_n_7 ), + .Q(converge_cnt_reg[4]), + .R(\converge_cnt[0]_i_1__4_n_0 )); + (* ADDER_THRESHOLD = "11" *) + CARRY4 \converge_cnt_reg[4]_i_1__1 + (.CI(\converge_cnt_reg[0]_i_3__1_n_0 ), + .CO({\converge_cnt_reg[4]_i_1__1_n_0 ,\converge_cnt_reg[4]_i_1__1_n_1 ,\converge_cnt_reg[4]_i_1__1_n_2 ,\converge_cnt_reg[4]_i_1__1_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\converge_cnt_reg[4]_i_1__1_n_4 ,\converge_cnt_reg[4]_i_1__1_n_5 ,\converge_cnt_reg[4]_i_1__1_n_6 ,\converge_cnt_reg[4]_i_1__1_n_7 }), + .S(converge_cnt_reg[7:4])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[5] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[4]_i_1__1_n_6 ), + .Q(converge_cnt_reg[5]), + .R(\converge_cnt[0]_i_1__4_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[6] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[4]_i_1__1_n_5 ), + .Q(converge_cnt_reg[6]), + .R(\converge_cnt[0]_i_1__4_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[7] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[4]_i_1__1_n_4 ), + .Q(converge_cnt_reg[7]), + .R(\converge_cnt[0]_i_1__4_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[8] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[8]_i_1__1_n_7 ), + .Q(converge_cnt_reg[8]), + .R(\converge_cnt[0]_i_1__4_n_0 )); + (* ADDER_THRESHOLD = "11" *) + CARRY4 \converge_cnt_reg[8]_i_1__1 + (.CI(\converge_cnt_reg[4]_i_1__1_n_0 ), + .CO({\converge_cnt_reg[8]_i_1__1_n_0 ,\converge_cnt_reg[8]_i_1__1_n_1 ,\converge_cnt_reg[8]_i_1__1_n_2 ,\converge_cnt_reg[8]_i_1__1_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\converge_cnt_reg[8]_i_1__1_n_4 ,\converge_cnt_reg[8]_i_1__1_n_5 ,\converge_cnt_reg[8]_i_1__1_n_6 ,\converge_cnt_reg[8]_i_1__1_n_7 }), + .S(converge_cnt_reg[11:8])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[9] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[8]_i_1__1_n_6 ), + .Q(converge_cnt_reg[9]), + .R(\converge_cnt[0]_i_1__4_n_0 )); + LUT3 #( + .INIT(8'hC8)) + converge_gen3_i_1__1 + (.I0(rxeq_adapt_done_reg2), + .I1(rate_gen3_reg2), + .I2(converge_gen3_reg_0), + .O(converge_gen3_i_1__1_n_0)); + FDRE #( + .INIT(1'b0)) + converge_gen3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_gen3_i_1__1_n_0), + .Q(converge_gen3_reg_0), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'hFFFFA8FF)) + gt_rx_phy_status_q_i_1__1 + (.I0(RST_PHYSTATUS), + .I1(rate_idle_reg2), + .I2(rate_rxsync_reg2), + .I3(rst_idle_reg2), + .I4(rate_done_reg2), + .O(gt_rx_phy_status_wire_filter)); + LUT6 #( + .INIT(64'hD000000000000000)) + gt_rxvalid_q_i_3__1 + (.I0(gt_rx_elec_idle_wire_filter), + .I1(pipe_rx2_valid_gt), + .I2(gt_rxvalid_q_i_4__1_n_0), + .I3(gt_rxvalid_2), + .I4(rst_idle_reg2), + .I5(rate_idle_reg2), + .O(gt_rxvalid_q_reg)); + LUT4 #( + .INIT(16'h8000)) + gt_rxvalid_q_i_4__1 + (.I0(rxvalid_cnt_reg[0]), + .I1(rxvalid_cnt_reg[1]), + .I2(rxvalid_cnt_reg[2]), + .I3(rxvalid_cnt_reg[3]), + .O(gt_rxvalid_q_i_4__1_n_0)); + LUT5 #( + .INIT(32'h7FFFFFFF)) + \gtx_channel.gtxe2_channel_i_i_60 + (.I0(converge_cnt_reg[15]), + .I1(converge_cnt_reg[18]), + .I2(converge_cnt_reg[19]), + .I3(converge_cnt_reg[17]), + .I4(converge_cnt_reg[16]), + .O(\converge_cnt_reg[15]_0 )); + LUT6 #( + .INIT(64'h0001000000000000)) + \gtx_channel.gtxe2_channel_i_i_61 + (.I0(converge_cnt_reg[6]), + .I1(converge_cnt_reg[7]), + .I2(converge_cnt_reg[4]), + .I3(converge_cnt_reg[5]), + .I4(converge_cnt_reg[21]), + .I5(converge_cnt_reg[13]), + .O(\converge_cnt_reg[6]_0 )); + LUT6 #( + .INIT(64'h0000000000020000)) + \gtx_channel.gtxe2_channel_i_i_62 + (.I0(\gtx_channel.gtxe2_channel_i_i_64_n_0 ), + .I1(converge_cnt_reg[1]), + .I2(converge_cnt_reg[0]), + .I3(converge_cnt_reg[2]), + .I4(converge_cnt_reg[3]), + .I5(\converge_cnt[0]_i_7_n_0 ), + .O(\converge_cnt_reg[1]_0 )); + LUT3 #( + .INIT(8'h01)) + \gtx_channel.gtxe2_channel_i_i_64 + (.I0(converge_cnt_reg[20]), + .I1(converge_cnt_reg[14]), + .I2(converge_cnt_reg[12]), + .O(\gtx_channel.gtxe2_channel_i_i_64_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair162" *) + LUT1 #( + .INIT(2'h1)) + \oobclk_div.oobclk_cnt[0]_i_1__1 + (.I0(oobclk_cnt[0]), + .O(p_1_in__0[0])); + (* SOFT_HLUTNM = "soft_lutpair162" *) + LUT2 #( + .INIT(4'h6)) + \oobclk_div.oobclk_cnt[1]_i_1__1 + (.I0(oobclk_cnt[0]), + .I1(oobclk_cnt[1]), + .O(p_1_in__0[1])); + FDRE #( + .INIT(1'b0)) + \oobclk_div.oobclk_cnt_reg[0] + (.C(pipe_oobclk_in), + .CE(1'b1), + .D(p_1_in__0[0]), + .Q(oobclk_cnt[0]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \oobclk_div.oobclk_cnt_reg[1] + (.C(pipe_oobclk_in), + .CE(1'b1), + .D(p_1_in__0[1]), + .Q(oobclk_cnt[1]), + .R(RST_CPLLRESET)); + LUT3 #( + .INIT(8'hB8)) + \oobclk_div.oobclk_i_1__1 + (.I0(oobclk_cnt[1]), + .I1(pclk_sel_reg2), + .I2(oobclk_cnt[0]), + .O(\oobclk_div.oobclk_i_1__1_n_0 )); + FDRE #( + .INIT(1'b0)) + \oobclk_div.oobclk_reg + (.C(pipe_oobclk_in), + .CE(1'b1), + .D(\oobclk_div.oobclk_i_1__1_n_0 ), + .Q(USER_OOBCLK), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE pclk_sel_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_pclk_sel_out), + .Q(pclk_sel_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE pclk_sel_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pclk_sel_reg1), + .Q(pclk_sel_reg2), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h00000002)) + phy_rdy_n_int_i_1 + (.I0(reg_clock_locked), + .I1(rst_idle_reg2), + .I2(out), + .I3(phy_rdy_n_int_reg), + .I4(phy_rdy_n_int_reg_0), + .O(reg_clock_locked_reg)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_done_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(USER_RATE_DONE), + .Q(rate_done_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_done_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rate_done_reg1), + .Q(rate_done_reg2), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_gen3_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rate_gen3_2), + .Q(rate_gen3_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_gen3_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rate_gen3_reg1), + .Q(rate_gen3_reg2), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_idle_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(USER_RATE_IDLE), + .Q(rate_idle_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_idle_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rate_idle_reg1), + .Q(rate_idle_reg2), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_rxsync_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(USER_RATE_RXSYNC), + .Q(rate_rxsync_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_rxsync_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rate_rxsync_reg1), + .Q(rate_rxsync_reg2), + .R(RST_RXUSRCLK_RESET)); + LUT2 #( + .INIT(4'h8)) + \resetdone_reg1[2]_i_1 + (.I0(rxresetdone_reg2), + .I1(txresetdone_reg2), + .O(RST_RESETDONE)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE resetovrd_start_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_RESETOVRD_START), + .Q(resetovrd_start_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE resetovrd_start_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(resetovrd_start_reg1), + .Q(resetovrd_start_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rst_idle_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(RST_IDLE), + .Q(rst_idle_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rst_idle_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rst_idle_reg1), + .Q(rst_idle_reg2), + .R(RST_RXUSRCLK_RESET)); + LUT5 #( + .INIT(32'hD0505050)) + \rxcdrlock_cnt[0]_i_1__1 + (.I0(rxcdrlock_cnt_reg[0]), + .I1(rxcdrlock_cnt_reg[2]), + .I2(rxcdrlock_reg2), + .I3(rxcdrlock_cnt_reg[1]), + .I4(rxcdrlock_cnt_reg[3]), + .O(p_0_in__0[0])); + LUT5 #( + .INIT(32'h8FF00000)) + \rxcdrlock_cnt[1]_i_1__1 + (.I0(rxcdrlock_cnt_reg[3]), + .I1(rxcdrlock_cnt_reg[2]), + .I2(rxcdrlock_cnt_reg[0]), + .I3(rxcdrlock_cnt_reg[1]), + .I4(rxcdrlock_reg2), + .O(p_0_in__0[1])); + LUT5 #( + .INIT(32'hF8780000)) + \rxcdrlock_cnt[2]_i_1__1 + (.I0(rxcdrlock_cnt_reg[0]), + .I1(rxcdrlock_cnt_reg[1]), + .I2(rxcdrlock_cnt_reg[2]), + .I3(rxcdrlock_cnt_reg[3]), + .I4(rxcdrlock_reg2), + .O(p_0_in__0[2])); + LUT5 #( + .INIT(32'hFF008000)) + \rxcdrlock_cnt[3]_i_1__1 + (.I0(rxcdrlock_cnt_reg[0]), + .I1(rxcdrlock_cnt_reg[1]), + .I2(rxcdrlock_cnt_reg[2]), + .I3(rxcdrlock_reg2), + .I4(rxcdrlock_cnt_reg[3]), + .O(p_0_in__0[3])); + FDRE #( + .INIT(1'b0)) + \rxcdrlock_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[0]), + .Q(rxcdrlock_cnt_reg[0]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxcdrlock_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[1]), + .Q(rxcdrlock_cnt_reg[1]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxcdrlock_cnt_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[2]), + .Q(rxcdrlock_cnt_reg[2]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxcdrlock_cnt_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[3]), + .Q(rxcdrlock_cnt_reg[3]), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h80000000)) + \rxcdrlock_reg1[2]_i_1 + (.I0(rxcdrlock_cnt_reg[2]), + .I1(rxcdrlock_cnt_reg[3]), + .I2(gt_rxcdrlock_2), + .I3(rxcdrlock_cnt_reg[1]), + .I4(rxcdrlock_cnt_reg[0]), + .O(RST_RXCDRLOCK)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxcdrlock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gt_rxcdrlock_2), + .Q(rxcdrlock_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxcdrlock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxcdrlock_reg1), + .Q(rxcdrlock_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxeq_adapt_done_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_RXEQ_ADAPT_DONE), + .Q(rxeq_adapt_done_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxeq_adapt_done_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_adapt_done_reg1), + .Q(rxeq_adapt_done_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_RXRESETDONE), + .Q(rxresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxresetdone_reg1), + .Q(rxresetdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxstatus_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rxstatus_reg1_reg_0), + .Q(rxstatus_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxstatus_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rxstatus_reg1), + .Q(rxstatus_reg2), + .R(RST_RXUSRCLK_RESET)); + LUT6 #( + .INIT(64'hC404040404040404)) + \rxvalid_cnt[0]_i_1__1 + (.I0(rxstatus_reg2), + .I1(rxvalid_reg2), + .I2(rxvalid_cnt_reg[0]), + .I3(rxvalid_cnt_reg[1]), + .I4(rxvalid_cnt_reg[2]), + .I5(rxvalid_cnt_reg[3]), + .O(p_0_in__0__0[0])); + LUT6 #( + .INIT(64'h808000F000F00000)) + \rxvalid_cnt[1]_i_1__1 + (.I0(rxvalid_cnt_reg[3]), + .I1(rxvalid_cnt_reg[2]), + .I2(rxvalid_reg2), + .I3(rxstatus_reg2), + .I4(rxvalid_cnt_reg[1]), + .I5(rxvalid_cnt_reg[0]), + .O(p_0_in__0__0[1])); + LUT6 #( + .INIT(64'h80BF000000C00000)) + \rxvalid_cnt[2]_i_1__1 + (.I0(rxvalid_cnt_reg[3]), + .I1(rxvalid_cnt_reg[0]), + .I2(rxvalid_cnt_reg[1]), + .I3(rxstatus_reg2), + .I4(rxvalid_reg2), + .I5(rxvalid_cnt_reg[2]), + .O(p_0_in__0__0[2])); + LUT6 #( + .INIT(64'h8C08080808080808)) + \rxvalid_cnt[3]_i_1__1 + (.I0(rxvalid_cnt_reg[3]), + .I1(rxvalid_reg2), + .I2(rxstatus_reg2), + .I3(rxvalid_cnt_reg[2]), + .I4(rxvalid_cnt_reg[1]), + .I5(rxvalid_cnt_reg[0]), + .O(p_0_in__0__0[3])); + FDRE #( + .INIT(1'b0)) + \rxvalid_cnt_reg[0] + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(p_0_in__0__0[0]), + .Q(rxvalid_cnt_reg[0]), + .R(RST_RXUSRCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \rxvalid_cnt_reg[1] + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(p_0_in__0__0[1]), + .Q(rxvalid_cnt_reg[1]), + .R(RST_RXUSRCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \rxvalid_cnt_reg[2] + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(p_0_in__0__0[2]), + .Q(rxvalid_cnt_reg[2]), + .R(RST_RXUSRCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \rxvalid_cnt_reg[3] + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(p_0_in__0__0[3]), + .Q(rxvalid_cnt_reg[3]), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxvalid_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(gt_rxvalid_2), + .Q(rxvalid_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxvalid_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rxvalid_reg1), + .Q(rxvalid_reg2), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txcompliance_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_TXCOMPLIANCE), + .Q(txcompliance_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txcompliance_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcompliance_reg1), + .Q(txcompliance_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txelecidle_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_TXELECIDLE), + .Q(txelecidle_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txelecidle_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txelecidle_reg1), + .Q(txelecidle_reg2), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'h0707070707FFFFFF)) + txphaligndone_reg1_i_3 + (.I0(txcompliance_reg2), + .I1(txelecidle_reg2), + .I2(txphaligndone_reg1_reg), + .I3(txphaligndone_reg1_reg_0), + .I4(txphaligndone_reg1_reg_1), + .I5(txphaligndone_reg1_reg_2), + .O(txcompliance_reg2_reg_0)); + LUT6 #( + .INIT(64'h0707070707FFFFFF)) + txphinitdone_reg1_i_2 + (.I0(txcompliance_reg2), + .I1(txelecidle_reg2), + .I2(txphinitdone_reg1_reg), + .I3(txphaligndone_reg1_reg_0), + .I4(txphaligndone_reg1_reg_1), + .I5(txphinitdone_reg1_reg_0), + .O(txcompliance_reg2_reg_2)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_TXRESETDONE), + .Q(txresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txresetdone_reg1), + .Q(txresetdone_reg2), + .R(RST_CPLLRESET)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_pipe_user" *) +module pcie_7x_0_pcie_7x_0_pipe_user_54 + (gt_rxvalid_q_reg, + out, + txelecidle_reg2_reg_0, + txcompliance_reg2_reg_0, + USER_OOBCLK, + RST_RXCDRLOCK, + gt_rx_phy_status_wire_filter, + user_rx_converge, + RST_RESETDONE, + user_active_lane_3, + gt_rx_elec_idle_wire_filter, + pipe_rx3_valid_gt, + gt_rxvalid_3, + RST_CPLLRESET, + pipe_pclk_sel_out, + pipe_pclk_in, + pipe_oobclk_in, + USER_TXRESETDONE, + USER_RXRESETDONE, + PIPE_TXELECIDLE, + PIPE_TXCOMPLIANCE, + gt_rxcdrlock_3, + RST_RXUSRCLK_RESET, + pipe_rxusrclk_in, + rxstatus_reg1_reg_0, + RST_IDLE, + USER_RATE_IDLE, + USER_RATE_RXSYNC, + USER_RATE_DONE, + rate_gen3_3, + USER_RXEQ_ADAPT_DONE, + USER_RESETOVRD_START, + RST_PHYSTATUS); + output gt_rxvalid_q_reg; + output out; + output txelecidle_reg2_reg_0; + output txcompliance_reg2_reg_0; + output USER_OOBCLK; + output [0:0]RST_RXCDRLOCK; + output [0:0]gt_rx_phy_status_wire_filter; + output [0:0]user_rx_converge; + output [0:0]RST_RESETDONE; + output user_active_lane_3; + input [0:0]gt_rx_elec_idle_wire_filter; + input pipe_rx3_valid_gt; + input gt_rxvalid_3; + input RST_CPLLRESET; + input [0:0]pipe_pclk_sel_out; + input pipe_pclk_in; + input pipe_oobclk_in; + input USER_TXRESETDONE; + input USER_RXRESETDONE; + input [0:0]PIPE_TXELECIDLE; + input [0:0]PIPE_TXCOMPLIANCE; + input gt_rxcdrlock_3; + input RST_RXUSRCLK_RESET; + input pipe_rxusrclk_in; + input [0:0]rxstatus_reg1_reg_0; + input RST_IDLE; + input USER_RATE_IDLE; + input USER_RATE_RXSYNC; + input USER_RATE_DONE; + input rate_gen3_3; + input USER_RXEQ_ADAPT_DONE; + input USER_RESETOVRD_START; + input [0:0]RST_PHYSTATUS; + + wire [0:0]PIPE_TXCOMPLIANCE; + wire [0:0]PIPE_TXELECIDLE; + wire RST_CPLLRESET; + wire RST_IDLE; + wire [0:0]RST_PHYSTATUS; + wire [0:0]RST_RESETDONE; + wire [0:0]RST_RXCDRLOCK; + wire RST_RXUSRCLK_RESET; + wire USER_OOBCLK; + wire USER_RATE_DONE; + wire USER_RATE_IDLE; + wire USER_RATE_RXSYNC; + wire USER_RESETOVRD_START; + wire USER_RXEQ_ADAPT_DONE; + wire USER_RXRESETDONE; + wire USER_TXRESETDONE; + wire \converge_cnt[0]_i_1__6_n_0 ; + wire \converge_cnt[0]_i_4__2_n_0 ; + wire \converge_cnt[0]_i_5__2_n_0 ; + wire \converge_cnt[0]_i_6__2_n_0 ; + wire \converge_cnt[0]_i_7__0_n_0 ; + wire \converge_cnt[0]_i_8_n_0 ; + wire [21:0]converge_cnt_reg; + wire \converge_cnt_reg[0]_i_3__2_n_0 ; + wire \converge_cnt_reg[0]_i_3__2_n_1 ; + wire \converge_cnt_reg[0]_i_3__2_n_2 ; + wire \converge_cnt_reg[0]_i_3__2_n_3 ; + wire \converge_cnt_reg[0]_i_3__2_n_4 ; + wire \converge_cnt_reg[0]_i_3__2_n_5 ; + wire \converge_cnt_reg[0]_i_3__2_n_6 ; + wire \converge_cnt_reg[0]_i_3__2_n_7 ; + wire \converge_cnt_reg[12]_i_1__2_n_0 ; + wire \converge_cnt_reg[12]_i_1__2_n_1 ; + wire \converge_cnt_reg[12]_i_1__2_n_2 ; + wire \converge_cnt_reg[12]_i_1__2_n_3 ; + wire \converge_cnt_reg[12]_i_1__2_n_4 ; + wire \converge_cnt_reg[12]_i_1__2_n_5 ; + wire \converge_cnt_reg[12]_i_1__2_n_6 ; + wire \converge_cnt_reg[12]_i_1__2_n_7 ; + wire \converge_cnt_reg[16]_i_1__2_n_0 ; + wire \converge_cnt_reg[16]_i_1__2_n_1 ; + wire \converge_cnt_reg[16]_i_1__2_n_2 ; + wire \converge_cnt_reg[16]_i_1__2_n_3 ; + wire \converge_cnt_reg[16]_i_1__2_n_4 ; + wire \converge_cnt_reg[16]_i_1__2_n_5 ; + wire \converge_cnt_reg[16]_i_1__2_n_6 ; + wire \converge_cnt_reg[16]_i_1__2_n_7 ; + wire \converge_cnt_reg[20]_i_1__2_n_3 ; + wire \converge_cnt_reg[20]_i_1__2_n_6 ; + wire \converge_cnt_reg[20]_i_1__2_n_7 ; + wire \converge_cnt_reg[4]_i_1__2_n_0 ; + wire \converge_cnt_reg[4]_i_1__2_n_1 ; + wire \converge_cnt_reg[4]_i_1__2_n_2 ; + wire \converge_cnt_reg[4]_i_1__2_n_3 ; + wire \converge_cnt_reg[4]_i_1__2_n_4 ; + wire \converge_cnt_reg[4]_i_1__2_n_5 ; + wire \converge_cnt_reg[4]_i_1__2_n_6 ; + wire \converge_cnt_reg[4]_i_1__2_n_7 ; + wire \converge_cnt_reg[8]_i_1__2_n_0 ; + wire \converge_cnt_reg[8]_i_1__2_n_1 ; + wire \converge_cnt_reg[8]_i_1__2_n_2 ; + wire \converge_cnt_reg[8]_i_1__2_n_3 ; + wire \converge_cnt_reg[8]_i_1__2_n_4 ; + wire \converge_cnt_reg[8]_i_1__2_n_5 ; + wire \converge_cnt_reg[8]_i_1__2_n_6 ; + wire \converge_cnt_reg[8]_i_1__2_n_7 ; + wire converge_gen3_i_1__2_n_0; + wire converge_gen3_reg_n_0; + wire [0:0]gt_rx_elec_idle_wire_filter; + wire [0:0]gt_rx_phy_status_wire_filter; + wire gt_rxcdrlock_3; + wire gt_rxvalid_3; + wire gt_rxvalid_q_i_4__2_n_0; + wire gt_rxvalid_q_reg; + wire \gtx_channel.gtxe2_channel_i_i_65_n_0 ; + wire \gtx_channel.gtxe2_channel_i_i_66_n_0 ; + wire \gtx_channel.gtxe2_channel_i_i_67_n_0 ; + wire [1:0]oobclk_cnt; + wire \oobclk_div.oobclk_i_1__2_n_0 ; + wire [3:0]p_0_in__0; + wire [3:0]p_0_in__0__0; + wire [1:0]p_1_in__0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire pclk_sel_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire pclk_sel_reg2; + wire pipe_oobclk_in; + wire pipe_pclk_in; + wire [0:0]pipe_pclk_sel_out; + wire pipe_rx3_valid_gt; + wire pipe_rxusrclk_in; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_done_reg2; + wire rate_gen3_3; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_gen3_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_gen3_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_idle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_idle_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_rxsync_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rate_rxsync_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire resetovrd_start_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire resetovrd_start_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rst_idle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rst_idle_reg2; + wire [3:0]rxcdrlock_cnt_reg; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxcdrlock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxcdrlock_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxeq_adapt_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxeq_adapt_done_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxresetdone_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxstatus_reg1; + wire [0:0]rxstatus_reg1_reg_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxstatus_reg2; + wire [3:0]rxvalid_cnt_reg; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxvalid_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rxvalid_reg2; + wire sel; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txcompliance_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txcompliance_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txelecidle_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txelecidle_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txresetdone_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire txresetdone_reg2; + wire user_active_lane_3; + wire [0:0]user_rx_converge; + wire [3:1]\NLW_converge_cnt_reg[20]_i_1__2_CO_UNCONNECTED ; + wire [3:2]\NLW_converge_cnt_reg[20]_i_1__2_O_UNCONNECTED ; + + assign out = rst_idle_reg2; + assign txcompliance_reg2_reg_0 = txcompliance_reg2; + assign txelecidle_reg2_reg_0 = txelecidle_reg2; + LUT2 #( + .INIT(4'h7)) + \FSM_onehot_txsync_fsm.fsm_tx[5]_i_2__1 + (.I0(txcompliance_reg2), + .I1(txelecidle_reg2), + .O(user_active_lane_3)); + LUT4 #( + .INIT(16'hEFFF)) + \converge_cnt[0]_i_1__6 + (.I0(rate_gen3_reg2), + .I1(RST_CPLLRESET), + .I2(rst_idle_reg2), + .I3(rate_idle_reg2), + .O(\converge_cnt[0]_i_1__6_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFF5555555D)) + \converge_cnt[0]_i_2__2 + (.I0(converge_cnt_reg[21]), + .I1(\converge_cnt[0]_i_4__2_n_0 ), + .I2(converge_cnt_reg[12]), + .I3(converge_cnt_reg[14]), + .I4(converge_cnt_reg[20]), + .I5(\converge_cnt[0]_i_5__2_n_0 ), + .O(sel)); + LUT5 #( + .INIT(32'h00000001)) + \converge_cnt[0]_i_4__2 + (.I0(converge_cnt_reg[3]), + .I1(converge_cnt_reg[4]), + .I2(converge_cnt_reg[5]), + .I3(converge_cnt_reg[7]), + .I4(converge_cnt_reg[6]), + .O(\converge_cnt[0]_i_4__2_n_0 )); + LUT6 #( + .INIT(64'h0A0B0A0F0A0B0A0B)) + \converge_cnt[0]_i_5__2 + (.I0(\converge_cnt[0]_i_7__0_n_0 ), + .I1(converge_cnt_reg[13]), + .I2(converge_cnt_reg[20]), + .I3(converge_cnt_reg[14]), + .I4(converge_cnt_reg[12]), + .I5(\converge_cnt[0]_i_8_n_0 ), + .O(\converge_cnt[0]_i_5__2_n_0 )); + LUT1 #( + .INIT(2'h1)) + \converge_cnt[0]_i_6__2 + (.I0(converge_cnt_reg[0]), + .O(\converge_cnt[0]_i_6__2_n_0 )); + LUT5 #( + .INIT(32'h7FFFFFFF)) + \converge_cnt[0]_i_7__0 + (.I0(converge_cnt_reg[15]), + .I1(converge_cnt_reg[18]), + .I2(converge_cnt_reg[19]), + .I3(converge_cnt_reg[17]), + .I4(converge_cnt_reg[16]), + .O(\converge_cnt[0]_i_7__0_n_0 )); + LUT4 #( + .INIT(16'h7FFF)) + \converge_cnt[0]_i_8 + (.I0(converge_cnt_reg[9]), + .I1(converge_cnt_reg[8]), + .I2(converge_cnt_reg[11]), + .I3(converge_cnt_reg[10]), + .O(\converge_cnt[0]_i_8_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[0]_i_3__2_n_7 ), + .Q(converge_cnt_reg[0]), + .R(\converge_cnt[0]_i_1__6_n_0 )); + (* ADDER_THRESHOLD = "11" *) + CARRY4 \converge_cnt_reg[0]_i_3__2 + (.CI(1'b0), + .CO({\converge_cnt_reg[0]_i_3__2_n_0 ,\converge_cnt_reg[0]_i_3__2_n_1 ,\converge_cnt_reg[0]_i_3__2_n_2 ,\converge_cnt_reg[0]_i_3__2_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b1}), + .O({\converge_cnt_reg[0]_i_3__2_n_4 ,\converge_cnt_reg[0]_i_3__2_n_5 ,\converge_cnt_reg[0]_i_3__2_n_6 ,\converge_cnt_reg[0]_i_3__2_n_7 }), + .S({converge_cnt_reg[3:1],\converge_cnt[0]_i_6__2_n_0 })); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[10] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[8]_i_1__2_n_5 ), + .Q(converge_cnt_reg[10]), + .R(\converge_cnt[0]_i_1__6_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[11] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[8]_i_1__2_n_4 ), + .Q(converge_cnt_reg[11]), + .R(\converge_cnt[0]_i_1__6_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[12] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[12]_i_1__2_n_7 ), + .Q(converge_cnt_reg[12]), + .R(\converge_cnt[0]_i_1__6_n_0 )); + (* ADDER_THRESHOLD = "11" *) + CARRY4 \converge_cnt_reg[12]_i_1__2 + (.CI(\converge_cnt_reg[8]_i_1__2_n_0 ), + .CO({\converge_cnt_reg[12]_i_1__2_n_0 ,\converge_cnt_reg[12]_i_1__2_n_1 ,\converge_cnt_reg[12]_i_1__2_n_2 ,\converge_cnt_reg[12]_i_1__2_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\converge_cnt_reg[12]_i_1__2_n_4 ,\converge_cnt_reg[12]_i_1__2_n_5 ,\converge_cnt_reg[12]_i_1__2_n_6 ,\converge_cnt_reg[12]_i_1__2_n_7 }), + .S(converge_cnt_reg[15:12])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[13] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[12]_i_1__2_n_6 ), + .Q(converge_cnt_reg[13]), + .R(\converge_cnt[0]_i_1__6_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[14] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[12]_i_1__2_n_5 ), + .Q(converge_cnt_reg[14]), + .R(\converge_cnt[0]_i_1__6_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[15] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[12]_i_1__2_n_4 ), + .Q(converge_cnt_reg[15]), + .R(\converge_cnt[0]_i_1__6_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[16] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[16]_i_1__2_n_7 ), + .Q(converge_cnt_reg[16]), + .R(\converge_cnt[0]_i_1__6_n_0 )); + (* ADDER_THRESHOLD = "11" *) + CARRY4 \converge_cnt_reg[16]_i_1__2 + (.CI(\converge_cnt_reg[12]_i_1__2_n_0 ), + .CO({\converge_cnt_reg[16]_i_1__2_n_0 ,\converge_cnt_reg[16]_i_1__2_n_1 ,\converge_cnt_reg[16]_i_1__2_n_2 ,\converge_cnt_reg[16]_i_1__2_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\converge_cnt_reg[16]_i_1__2_n_4 ,\converge_cnt_reg[16]_i_1__2_n_5 ,\converge_cnt_reg[16]_i_1__2_n_6 ,\converge_cnt_reg[16]_i_1__2_n_7 }), + .S(converge_cnt_reg[19:16])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[17] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[16]_i_1__2_n_6 ), + .Q(converge_cnt_reg[17]), + .R(\converge_cnt[0]_i_1__6_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[18] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[16]_i_1__2_n_5 ), + .Q(converge_cnt_reg[18]), + .R(\converge_cnt[0]_i_1__6_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[19] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[16]_i_1__2_n_4 ), + .Q(converge_cnt_reg[19]), + .R(\converge_cnt[0]_i_1__6_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[0]_i_3__2_n_6 ), + .Q(converge_cnt_reg[1]), + .R(\converge_cnt[0]_i_1__6_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[20] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[20]_i_1__2_n_7 ), + .Q(converge_cnt_reg[20]), + .R(\converge_cnt[0]_i_1__6_n_0 )); + (* ADDER_THRESHOLD = "11" *) + CARRY4 \converge_cnt_reg[20]_i_1__2 + (.CI(\converge_cnt_reg[16]_i_1__2_n_0 ), + .CO({\NLW_converge_cnt_reg[20]_i_1__2_CO_UNCONNECTED [3:1],\converge_cnt_reg[20]_i_1__2_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\NLW_converge_cnt_reg[20]_i_1__2_O_UNCONNECTED [3:2],\converge_cnt_reg[20]_i_1__2_n_6 ,\converge_cnt_reg[20]_i_1__2_n_7 }), + .S({1'b0,1'b0,converge_cnt_reg[21:20]})); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[21] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[20]_i_1__2_n_6 ), + .Q(converge_cnt_reg[21]), + .R(\converge_cnt[0]_i_1__6_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[2] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[0]_i_3__2_n_5 ), + .Q(converge_cnt_reg[2]), + .R(\converge_cnt[0]_i_1__6_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[3] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[0]_i_3__2_n_4 ), + .Q(converge_cnt_reg[3]), + .R(\converge_cnt[0]_i_1__6_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[4] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[4]_i_1__2_n_7 ), + .Q(converge_cnt_reg[4]), + .R(\converge_cnt[0]_i_1__6_n_0 )); + (* ADDER_THRESHOLD = "11" *) + CARRY4 \converge_cnt_reg[4]_i_1__2 + (.CI(\converge_cnt_reg[0]_i_3__2_n_0 ), + .CO({\converge_cnt_reg[4]_i_1__2_n_0 ,\converge_cnt_reg[4]_i_1__2_n_1 ,\converge_cnt_reg[4]_i_1__2_n_2 ,\converge_cnt_reg[4]_i_1__2_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\converge_cnt_reg[4]_i_1__2_n_4 ,\converge_cnt_reg[4]_i_1__2_n_5 ,\converge_cnt_reg[4]_i_1__2_n_6 ,\converge_cnt_reg[4]_i_1__2_n_7 }), + .S(converge_cnt_reg[7:4])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[5] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[4]_i_1__2_n_6 ), + .Q(converge_cnt_reg[5]), + .R(\converge_cnt[0]_i_1__6_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[6] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[4]_i_1__2_n_5 ), + .Q(converge_cnt_reg[6]), + .R(\converge_cnt[0]_i_1__6_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[7] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[4]_i_1__2_n_4 ), + .Q(converge_cnt_reg[7]), + .R(\converge_cnt[0]_i_1__6_n_0 )); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[8] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[8]_i_1__2_n_7 ), + .Q(converge_cnt_reg[8]), + .R(\converge_cnt[0]_i_1__6_n_0 )); + (* ADDER_THRESHOLD = "11" *) + CARRY4 \converge_cnt_reg[8]_i_1__2 + (.CI(\converge_cnt_reg[4]_i_1__2_n_0 ), + .CO({\converge_cnt_reg[8]_i_1__2_n_0 ,\converge_cnt_reg[8]_i_1__2_n_1 ,\converge_cnt_reg[8]_i_1__2_n_2 ,\converge_cnt_reg[8]_i_1__2_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\converge_cnt_reg[8]_i_1__2_n_4 ,\converge_cnt_reg[8]_i_1__2_n_5 ,\converge_cnt_reg[8]_i_1__2_n_6 ,\converge_cnt_reg[8]_i_1__2_n_7 }), + .S(converge_cnt_reg[11:8])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[9] + (.C(pipe_pclk_in), + .CE(sel), + .D(\converge_cnt_reg[8]_i_1__2_n_6 ), + .Q(converge_cnt_reg[9]), + .R(\converge_cnt[0]_i_1__6_n_0 )); + LUT3 #( + .INIT(8'hC8)) + converge_gen3_i_1__2 + (.I0(rxeq_adapt_done_reg2), + .I1(rate_gen3_reg2), + .I2(converge_gen3_reg_n_0), + .O(converge_gen3_i_1__2_n_0)); + FDRE #( + .INIT(1'b0)) + converge_gen3_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_gen3_i_1__2_n_0), + .Q(converge_gen3_reg_n_0), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'hFFFFA8FF)) + gt_rx_phy_status_q_i_1__2 + (.I0(RST_PHYSTATUS), + .I1(rate_idle_reg2), + .I2(rate_rxsync_reg2), + .I3(rst_idle_reg2), + .I4(rate_done_reg2), + .O(gt_rx_phy_status_wire_filter)); + LUT6 #( + .INIT(64'hD000000000000000)) + gt_rxvalid_q_i_3__2 + (.I0(gt_rx_elec_idle_wire_filter), + .I1(pipe_rx3_valid_gt), + .I2(gt_rxvalid_q_i_4__2_n_0), + .I3(gt_rxvalid_3), + .I4(rst_idle_reg2), + .I5(rate_idle_reg2), + .O(gt_rxvalid_q_reg)); + LUT4 #( + .INIT(16'h8000)) + gt_rxvalid_q_i_4__2 + (.I0(rxvalid_cnt_reg[0]), + .I1(rxvalid_cnt_reg[1]), + .I2(rxvalid_cnt_reg[2]), + .I3(rxvalid_cnt_reg[3]), + .O(gt_rxvalid_q_i_4__2_n_0)); + LUT6 #( + .INIT(64'hFFFFFFFF00000800)) + \gtx_channel.gtxe2_channel_i_i_63 + (.I0(\gtx_channel.gtxe2_channel_i_i_65_n_0 ), + .I1(\gtx_channel.gtxe2_channel_i_i_66_n_0 ), + .I2(\converge_cnt[0]_i_8_n_0 ), + .I3(\gtx_channel.gtxe2_channel_i_i_67_n_0 ), + .I4(\converge_cnt[0]_i_7__0_n_0 ), + .I5(converge_gen3_reg_n_0), + .O(user_rx_converge)); + LUT3 #( + .INIT(8'h01)) + \gtx_channel.gtxe2_channel_i_i_65 + (.I0(converge_cnt_reg[20]), + .I1(converge_cnt_reg[14]), + .I2(converge_cnt_reg[12]), + .O(\gtx_channel.gtxe2_channel_i_i_65_n_0 )); + LUT4 #( + .INIT(16'h0100)) + \gtx_channel.gtxe2_channel_i_i_66 + (.I0(converge_cnt_reg[1]), + .I1(converge_cnt_reg[0]), + .I2(converge_cnt_reg[2]), + .I3(converge_cnt_reg[3]), + .O(\gtx_channel.gtxe2_channel_i_i_66_n_0 )); + LUT6 #( + .INIT(64'h0001000000000000)) + \gtx_channel.gtxe2_channel_i_i_67 + (.I0(converge_cnt_reg[6]), + .I1(converge_cnt_reg[7]), + .I2(converge_cnt_reg[4]), + .I3(converge_cnt_reg[5]), + .I4(converge_cnt_reg[21]), + .I5(converge_cnt_reg[13]), + .O(\gtx_channel.gtxe2_channel_i_i_67_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair203" *) + LUT1 #( + .INIT(2'h1)) + \oobclk_div.oobclk_cnt[0]_i_1__2 + (.I0(oobclk_cnt[0]), + .O(p_1_in__0[0])); + (* SOFT_HLUTNM = "soft_lutpair203" *) + LUT2 #( + .INIT(4'h6)) + \oobclk_div.oobclk_cnt[1]_i_1__2 + (.I0(oobclk_cnt[0]), + .I1(oobclk_cnt[1]), + .O(p_1_in__0[1])); + FDRE #( + .INIT(1'b0)) + \oobclk_div.oobclk_cnt_reg[0] + (.C(pipe_oobclk_in), + .CE(1'b1), + .D(p_1_in__0[0]), + .Q(oobclk_cnt[0]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \oobclk_div.oobclk_cnt_reg[1] + (.C(pipe_oobclk_in), + .CE(1'b1), + .D(p_1_in__0[1]), + .Q(oobclk_cnt[1]), + .R(RST_CPLLRESET)); + LUT3 #( + .INIT(8'hB8)) + \oobclk_div.oobclk_i_1__2 + (.I0(oobclk_cnt[1]), + .I1(pclk_sel_reg2), + .I2(oobclk_cnt[0]), + .O(\oobclk_div.oobclk_i_1__2_n_0 )); + FDRE #( + .INIT(1'b0)) + \oobclk_div.oobclk_reg + (.C(pipe_oobclk_in), + .CE(1'b1), + .D(\oobclk_div.oobclk_i_1__2_n_0 ), + .Q(USER_OOBCLK), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE pclk_sel_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_pclk_sel_out), + .Q(pclk_sel_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE pclk_sel_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pclk_sel_reg1), + .Q(pclk_sel_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_done_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(USER_RATE_DONE), + .Q(rate_done_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_done_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rate_done_reg1), + .Q(rate_done_reg2), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_gen3_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rate_gen3_3), + .Q(rate_gen3_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_gen3_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rate_gen3_reg1), + .Q(rate_gen3_reg2), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_idle_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(USER_RATE_IDLE), + .Q(rate_idle_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_idle_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rate_idle_reg1), + .Q(rate_idle_reg2), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_rxsync_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(USER_RATE_RXSYNC), + .Q(rate_rxsync_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rate_rxsync_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rate_rxsync_reg1), + .Q(rate_rxsync_reg2), + .R(RST_RXUSRCLK_RESET)); + LUT2 #( + .INIT(4'h8)) + \resetdone_reg1[3]_i_1 + (.I0(rxresetdone_reg2), + .I1(txresetdone_reg2), + .O(RST_RESETDONE)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE resetovrd_start_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_RESETOVRD_START), + .Q(resetovrd_start_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE resetovrd_start_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(resetovrd_start_reg1), + .Q(resetovrd_start_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rst_idle_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(RST_IDLE), + .Q(rst_idle_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rst_idle_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rst_idle_reg1), + .Q(rst_idle_reg2), + .R(RST_RXUSRCLK_RESET)); + LUT5 #( + .INIT(32'hD0505050)) + \rxcdrlock_cnt[0]_i_1__2 + (.I0(rxcdrlock_cnt_reg[0]), + .I1(rxcdrlock_cnt_reg[2]), + .I2(rxcdrlock_reg2), + .I3(rxcdrlock_cnt_reg[1]), + .I4(rxcdrlock_cnt_reg[3]), + .O(p_0_in__0[0])); + LUT5 #( + .INIT(32'h8FF00000)) + \rxcdrlock_cnt[1]_i_1__2 + (.I0(rxcdrlock_cnt_reg[3]), + .I1(rxcdrlock_cnt_reg[2]), + .I2(rxcdrlock_cnt_reg[0]), + .I3(rxcdrlock_cnt_reg[1]), + .I4(rxcdrlock_reg2), + .O(p_0_in__0[1])); + LUT5 #( + .INIT(32'hF8780000)) + \rxcdrlock_cnt[2]_i_1__2 + (.I0(rxcdrlock_cnt_reg[0]), + .I1(rxcdrlock_cnt_reg[1]), + .I2(rxcdrlock_cnt_reg[2]), + .I3(rxcdrlock_cnt_reg[3]), + .I4(rxcdrlock_reg2), + .O(p_0_in__0[2])); + LUT5 #( + .INIT(32'hFF008000)) + \rxcdrlock_cnt[3]_i_1__2 + (.I0(rxcdrlock_cnt_reg[0]), + .I1(rxcdrlock_cnt_reg[1]), + .I2(rxcdrlock_cnt_reg[2]), + .I3(rxcdrlock_reg2), + .I4(rxcdrlock_cnt_reg[3]), + .O(p_0_in__0[3])); + FDRE #( + .INIT(1'b0)) + \rxcdrlock_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[0]), + .Q(rxcdrlock_cnt_reg[0]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxcdrlock_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[1]), + .Q(rxcdrlock_cnt_reg[1]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxcdrlock_cnt_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[2]), + .Q(rxcdrlock_cnt_reg[2]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \rxcdrlock_cnt_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(p_0_in__0[3]), + .Q(rxcdrlock_cnt_reg[3]), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h80000000)) + \rxcdrlock_reg1[3]_i_1 + (.I0(rxcdrlock_cnt_reg[2]), + .I1(rxcdrlock_cnt_reg[3]), + .I2(gt_rxcdrlock_3), + .I3(rxcdrlock_cnt_reg[1]), + .I4(rxcdrlock_cnt_reg[0]), + .O(RST_RXCDRLOCK)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxcdrlock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(gt_rxcdrlock_3), + .Q(rxcdrlock_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxcdrlock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxcdrlock_reg1), + .Q(rxcdrlock_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxeq_adapt_done_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_RXEQ_ADAPT_DONE), + .Q(rxeq_adapt_done_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxeq_adapt_done_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_adapt_done_reg1), + .Q(rxeq_adapt_done_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_RXRESETDONE), + .Q(rxresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxresetdone_reg1), + .Q(rxresetdone_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxstatus_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rxstatus_reg1_reg_0), + .Q(rxstatus_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxstatus_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rxstatus_reg1), + .Q(rxstatus_reg2), + .R(RST_RXUSRCLK_RESET)); + LUT6 #( + .INIT(64'hC404040404040404)) + \rxvalid_cnt[0]_i_1__2 + (.I0(rxstatus_reg2), + .I1(rxvalid_reg2), + .I2(rxvalid_cnt_reg[0]), + .I3(rxvalid_cnt_reg[1]), + .I4(rxvalid_cnt_reg[2]), + .I5(rxvalid_cnt_reg[3]), + .O(p_0_in__0__0[0])); + LUT6 #( + .INIT(64'h808000F000F00000)) + \rxvalid_cnt[1]_i_1__2 + (.I0(rxvalid_cnt_reg[3]), + .I1(rxvalid_cnt_reg[2]), + .I2(rxvalid_reg2), + .I3(rxstatus_reg2), + .I4(rxvalid_cnt_reg[1]), + .I5(rxvalid_cnt_reg[0]), + .O(p_0_in__0__0[1])); + LUT6 #( + .INIT(64'h80BF000000C00000)) + \rxvalid_cnt[2]_i_1__2 + (.I0(rxvalid_cnt_reg[3]), + .I1(rxvalid_cnt_reg[0]), + .I2(rxvalid_cnt_reg[1]), + .I3(rxstatus_reg2), + .I4(rxvalid_reg2), + .I5(rxvalid_cnt_reg[2]), + .O(p_0_in__0__0[2])); + LUT6 #( + .INIT(64'h8C08080808080808)) + \rxvalid_cnt[3]_i_1__2 + (.I0(rxvalid_cnt_reg[3]), + .I1(rxvalid_reg2), + .I2(rxstatus_reg2), + .I3(rxvalid_cnt_reg[2]), + .I4(rxvalid_cnt_reg[1]), + .I5(rxvalid_cnt_reg[0]), + .O(p_0_in__0__0[3])); + FDRE #( + .INIT(1'b0)) + \rxvalid_cnt_reg[0] + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(p_0_in__0__0[0]), + .Q(rxvalid_cnt_reg[0]), + .R(RST_RXUSRCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \rxvalid_cnt_reg[1] + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(p_0_in__0__0[1]), + .Q(rxvalid_cnt_reg[1]), + .R(RST_RXUSRCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \rxvalid_cnt_reg[2] + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(p_0_in__0__0[2]), + .Q(rxvalid_cnt_reg[2]), + .R(RST_RXUSRCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \rxvalid_cnt_reg[3] + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(p_0_in__0__0[3]), + .Q(rxvalid_cnt_reg[3]), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxvalid_reg1_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(gt_rxvalid_3), + .Q(rxvalid_reg1), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rxvalid_reg2_reg + (.C(pipe_rxusrclk_in), + .CE(1'b1), + .D(rxvalid_reg1), + .Q(rxvalid_reg2), + .R(RST_RXUSRCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txcompliance_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_TXCOMPLIANCE), + .Q(txcompliance_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txcompliance_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcompliance_reg1), + .Q(txcompliance_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txelecidle_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(PIPE_TXELECIDLE), + .Q(txelecidle_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txelecidle_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txelecidle_reg1), + .Q(txelecidle_reg2), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txresetdone_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(USER_TXRESETDONE), + .Q(txresetdone_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE txresetdone_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txresetdone_reg1), + .Q(txresetdone_reg2), + .R(RST_CPLLRESET)); +endmodule + +module pcie_7x_0_pcie_7x_0_pipe_wrapper + (cpllpd, + cpllpd_0, + cpllpd_1, + cpllpd_2, + pci_exp_txn, + pci_exp_txp, + PIPE_RXCHANISALIGNED, + gt_rx_elec_idle_wire_filter, + pipe_rxoutclk_out, + pipe_txoutclk_out, + PIPE_RXSTATUS, + gt_rx_data_wire_filter, + gt_rx_data_k_wire_filter, + pipe_dclk_in_0, + pipe_dclk_in_1, + pipe_dclk_in_2, + reg_clock_locked_reg, + gt_rxvalid_q_reg, + gt_rxvalid_q_reg_0, + gt_rxvalid_q_reg_1, + gt_rxvalid_q_reg_2, + gen3_reg, + pipe_pclk_sel_out, + rate_cpllpd_0, + rate_cpllpd_1, + rate_cpllpd_2, + rate_cpllpd_3, + gt_rx_phy_status_wire_filter, + CPLLPD0, + pipe_dclk_in, + sys_clk, + pci_exp_rxn, + pci_exp_rxp, + PIPE_RXPOLARITY, + pipe_rxusrclk_in, + pipe_tx_deemph_gt, + pipe_tx_rcvr_det_gt, + PIPE_TXELECIDLE, + pipe_pclk_in, + PIPE_POWERDOWN, + \cplllock_reg1_reg[3] , + PIPE_TXDATA, + PIPE_TXCOMPLIANCE, + PIPE_TXDATAK, + CPLLPD0_3, + CPLLPD0_4, + CPLLPD0_5, + reset_n_reg1_reg_0, + reg_clock_locked, + pipe_rx0_valid_gt, + pipe_rx1_valid_gt, + pipe_rx2_valid_gt, + pipe_rx3_valid_gt, + \rate_reg1_reg[0] , + pipe_mmcm_lock_in, + pipe_oobclk_in); + output cpllpd; + output cpllpd_0; + output cpllpd_1; + output cpllpd_2; + output [3:0]pci_exp_txn; + output [3:0]pci_exp_txp; + output [3:0]PIPE_RXCHANISALIGNED; + output [3:0]gt_rx_elec_idle_wire_filter; + output [3:0]pipe_rxoutclk_out; + output pipe_txoutclk_out; + output [2:0]PIPE_RXSTATUS; + output [63:0]gt_rx_data_wire_filter; + output [7:0]gt_rx_data_k_wire_filter; + output [2:0]pipe_dclk_in_0; + output [2:0]pipe_dclk_in_1; + output [2:0]pipe_dclk_in_2; + output reg_clock_locked_reg; + output gt_rxvalid_q_reg; + output gt_rxvalid_q_reg_0; + output gt_rxvalid_q_reg_1; + output gt_rxvalid_q_reg_2; + output gen3_reg; + output [3:0]pipe_pclk_sel_out; + output rate_cpllpd_0; + output rate_cpllpd_1; + output rate_cpllpd_2; + output rate_cpllpd_3; + output [3:0]gt_rx_phy_status_wire_filter; + input CPLLPD0; + input pipe_dclk_in; + input sys_clk; + input [3:0]pci_exp_rxn; + input [3:0]pci_exp_rxp; + input [3:0]PIPE_RXPOLARITY; + input pipe_rxusrclk_in; + input pipe_tx_deemph_gt; + input pipe_tx_rcvr_det_gt; + input [3:0]PIPE_TXELECIDLE; + input pipe_pclk_in; + input [7:0]PIPE_POWERDOWN; + input [2:0]\cplllock_reg1_reg[3] ; + input [63:0]PIPE_TXDATA; + input [3:0]PIPE_TXCOMPLIANCE; + input [7:0]PIPE_TXDATAK; + input CPLLPD0_3; + input CPLLPD0_4; + input CPLLPD0_5; + input reset_n_reg1_reg_0; + input reg_clock_locked; + input pipe_rx0_valid_gt; + input pipe_rx1_valid_gt; + input pipe_rx2_valid_gt; + input pipe_rx3_valid_gt; + input [0:0]\rate_reg1_reg[0] ; + input pipe_mmcm_lock_in; + input pipe_oobclk_in; + + wire CPLLPD0; + wire CPLLPD0_3; + wire CPLLPD0_4; + wire CPLLPD0_5; + wire [7:0]PIPE_POWERDOWN; + wire [3:0]PIPE_RXCHANISALIGNED; + wire [3:0]PIPE_RXPOLARITY; + wire [2:0]PIPE_RXSTATUS; + wire [3:0]PIPE_TXCOMPLIANCE; + wire [63:0]PIPE_TXDATA; + wire [7:0]PIPE_TXDATAK; + wire [3:0]PIPE_TXELECIDLE; + wire SYNC_TXSYNC_START0; + wire SYNC_TXSYNC_START00_out; + wire SYNC_TXSYNC_START010_out; + wire SYNC_TXSYNC_START05_out; + wire [2:0]\cplllock_reg1_reg[3] ; + wire cpllpd; + wire cpllpd_0; + wire cpllpd_1; + wire cpllpd_2; + wire drp_done_0; + wire drp_done_1; + wire drp_done_2; + wire drp_done_3; + wire [6:0]eq_txeq_maincursor_0; + wire [6:0]eq_txeq_maincursor_14; + wire [6:0]eq_txeq_maincursor_21; + wire [6:0]eq_txeq_maincursor_7; + wire [4:0]eq_txeq_postcursor_0; + wire [4:0]eq_txeq_postcursor_10; + wire [4:0]eq_txeq_postcursor_15; + wire [4:0]eq_txeq_postcursor_5; + wire [4:0]eq_txeq_precursor_0; + wire [4:0]eq_txeq_precursor_10; + wire [4:0]eq_txeq_precursor_15; + wire [4:0]eq_txeq_precursor_5; + wire gen3_reg; + wire gt_cpllpdrefclk; + wire gt_phystatus_0; + wire gt_phystatus_1; + wire gt_phystatus_2; + wire gt_phystatus_3; + wire [7:0]gt_rx_data_k_wire_filter; + wire [63:0]gt_rx_data_wire_filter; + wire [3:0]gt_rx_elec_idle_wire_filter; + wire [3:0]gt_rx_phy_status_wire_filter; + wire gt_rxcdrlock_0; + wire gt_rxcdrlock_1; + wire gt_rxcdrlock_2; + wire gt_rxcdrlock_3; + wire [4:0]\gt_rxchbondi[3]_0 ; + wire gt_rxratedone_0; + wire gt_rxratedone_1; + wire gt_rxratedone_2; + wire gt_rxratedone_3; + wire gt_rxresetdone_0; + wire gt_rxresetdone_1; + wire gt_rxresetdone_2; + wire gt_rxresetdone_3; + wire gt_rxvalid_0; + wire gt_rxvalid_1; + wire gt_rxvalid_2; + wire gt_rxvalid_3; + wire gt_rxvalid_q_reg; + wire gt_rxvalid_q_reg_0; + wire gt_rxvalid_q_reg_1; + wire gt_rxvalid_q_reg_2; + wire gt_txratedone_0; + wire gt_txratedone_1; + wire gt_txratedone_2; + wire gt_txratedone_3; + wire gt_txresetdone_0; + wire gt_txresetdone_1; + wire gt_txresetdone_2; + wire gt_txresetdone_3; + wire \gtx_channel.gtxe2_channel_i_i_52_n_0 ; + wire \gtx_channel.gtxe2_channel_i_i_6__2_n_0 ; + wire p_0_in1_in; + wire p_0_in1_in_0; + wire p_0_in1_in_3; + wire p_0_in1_in_4; + wire p_1_in; + wire p_1_in2_in; + wire p_1_in2_in_1; + wire p_1_in2_in_2; + wire p_1_in2_in_5; + wire [3:0]pci_exp_rxn; + wire [3:0]pci_exp_rxp; + wire [3:0]pci_exp_txn; + wire [3:0]pci_exp_txp; + wire pipe_dclk_in; + wire [2:0]pipe_dclk_in_0; + wire [2:0]pipe_dclk_in_1; + wire [2:0]pipe_dclk_in_2; + wire \pipe_lane[0].gt_wrapper_i_n_1 ; + wire \pipe_lane[0].gt_wrapper_i_n_11 ; + wire \pipe_lane[0].gt_wrapper_i_n_15 ; + wire \pipe_lane[0].gt_wrapper_i_n_17 ; + wire \pipe_lane[0].gt_wrapper_i_n_18 ; + wire \pipe_lane[0].gt_wrapper_i_n_2 ; + wire \pipe_lane[0].gt_wrapper_i_n_21 ; + wire \pipe_lane[0].gt_wrapper_i_n_22 ; + wire \pipe_lane[0].gt_wrapper_i_n_23 ; + wire \pipe_lane[0].gt_wrapper_i_n_24 ; + wire \pipe_lane[0].gt_wrapper_i_n_25 ; + wire \pipe_lane[0].gt_wrapper_i_n_26 ; + wire \pipe_lane[0].gt_wrapper_i_n_27 ; + wire \pipe_lane[0].gt_wrapper_i_n_28 ; + wire \pipe_lane[0].gt_wrapper_i_n_29 ; + wire \pipe_lane[0].gt_wrapper_i_n_30 ; + wire \pipe_lane[0].gt_wrapper_i_n_31 ; + wire \pipe_lane[0].gt_wrapper_i_n_32 ; + wire \pipe_lane[0].gt_wrapper_i_n_33 ; + wire \pipe_lane[0].gt_wrapper_i_n_34 ; + wire \pipe_lane[0].gt_wrapper_i_n_35 ; + wire \pipe_lane[0].gt_wrapper_i_n_36 ; + wire \pipe_lane[0].gt_wrapper_i_n_8 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_0 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_1 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_10 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_11 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_12 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_13 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_14 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_15 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_16 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_17 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_18 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_19 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_2 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_20 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_21 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_22 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_23 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_24 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_25 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_3 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_4 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_5 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_6 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_7 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_8 ; + wire \pipe_lane[0].pipe_drp.pipe_drp_i_n_9 ; + wire \pipe_lane[0].pipe_eq.pipe_eq_i_n_17 ; + wire \pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_0 ; + wire \pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_1 ; + wire \pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_2 ; + wire \pipe_lane[0].pipe_sync_i_n_1 ; + wire \pipe_lane[0].pipe_user_i_n_1 ; + wire \pipe_lane[0].pipe_user_i_n_10 ; + wire \pipe_lane[0].pipe_user_i_n_11 ; + wire \pipe_lane[0].pipe_user_i_n_12 ; + wire \pipe_lane[0].pipe_user_i_n_15 ; + wire \pipe_lane[0].pipe_user_i_n_5 ; + wire \pipe_lane[0].pipe_user_i_n_6 ; + wire \pipe_lane[1].gt_wrapper_i_n_1 ; + wire \pipe_lane[1].gt_wrapper_i_n_11 ; + wire \pipe_lane[1].gt_wrapper_i_n_15 ; + wire \pipe_lane[1].gt_wrapper_i_n_16 ; + wire \pipe_lane[1].gt_wrapper_i_n_17 ; + wire \pipe_lane[1].gt_wrapper_i_n_2 ; + wire \pipe_lane[1].gt_wrapper_i_n_20 ; + wire \pipe_lane[1].gt_wrapper_i_n_21 ; + wire \pipe_lane[1].gt_wrapper_i_n_22 ; + wire \pipe_lane[1].gt_wrapper_i_n_23 ; + wire \pipe_lane[1].gt_wrapper_i_n_24 ; + wire \pipe_lane[1].gt_wrapper_i_n_25 ; + wire \pipe_lane[1].gt_wrapper_i_n_26 ; + wire \pipe_lane[1].gt_wrapper_i_n_27 ; + wire \pipe_lane[1].gt_wrapper_i_n_28 ; + wire \pipe_lane[1].gt_wrapper_i_n_29 ; + wire \pipe_lane[1].gt_wrapper_i_n_30 ; + wire \pipe_lane[1].gt_wrapper_i_n_31 ; + wire \pipe_lane[1].gt_wrapper_i_n_32 ; + wire \pipe_lane[1].gt_wrapper_i_n_33 ; + wire \pipe_lane[1].gt_wrapper_i_n_34 ; + wire \pipe_lane[1].gt_wrapper_i_n_35 ; + wire \pipe_lane[1].gt_wrapper_i_n_8 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_0 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_1 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_10 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_11 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_12 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_13 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_14 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_15 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_16 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_17 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_18 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_19 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_2 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_20 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_21 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_22 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_23 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_24 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_25 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_3 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_4 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_5 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_6 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_7 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_8 ; + wire \pipe_lane[1].pipe_drp.pipe_drp_i_n_9 ; + wire \pipe_lane[1].pipe_eq.pipe_eq_i_n_17 ; + wire \pipe_lane[1].pipe_rate.pipe_rate_i_n_1 ; + wire \pipe_lane[1].pipe_user_i_n_1 ; + wire \pipe_lane[2].gt_wrapper_i_n_1 ; + wire \pipe_lane[2].gt_wrapper_i_n_11 ; + wire \pipe_lane[2].gt_wrapper_i_n_15 ; + wire \pipe_lane[2].gt_wrapper_i_n_16 ; + wire \pipe_lane[2].gt_wrapper_i_n_17 ; + wire \pipe_lane[2].gt_wrapper_i_n_2 ; + wire \pipe_lane[2].gt_wrapper_i_n_20 ; + wire \pipe_lane[2].gt_wrapper_i_n_21 ; + wire \pipe_lane[2].gt_wrapper_i_n_22 ; + wire \pipe_lane[2].gt_wrapper_i_n_23 ; + wire \pipe_lane[2].gt_wrapper_i_n_24 ; + wire \pipe_lane[2].gt_wrapper_i_n_25 ; + wire \pipe_lane[2].gt_wrapper_i_n_26 ; + wire \pipe_lane[2].gt_wrapper_i_n_27 ; + wire \pipe_lane[2].gt_wrapper_i_n_28 ; + wire \pipe_lane[2].gt_wrapper_i_n_29 ; + wire \pipe_lane[2].gt_wrapper_i_n_30 ; + wire \pipe_lane[2].gt_wrapper_i_n_31 ; + wire \pipe_lane[2].gt_wrapper_i_n_32 ; + wire \pipe_lane[2].gt_wrapper_i_n_33 ; + wire \pipe_lane[2].gt_wrapper_i_n_34 ; + wire \pipe_lane[2].gt_wrapper_i_n_35 ; + wire \pipe_lane[2].gt_wrapper_i_n_8 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_0 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_1 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_10 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_11 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_12 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_13 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_14 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_15 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_16 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_17 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_18 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_19 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_2 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_20 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_21 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_22 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_23 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_24 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_25 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_3 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_4 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_5 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_6 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_7 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_8 ; + wire \pipe_lane[2].pipe_drp.pipe_drp_i_n_9 ; + wire \pipe_lane[2].pipe_eq.pipe_eq_i_n_17 ; + wire \pipe_lane[2].pipe_user_i_n_10 ; + wire \pipe_lane[2].pipe_user_i_n_11 ; + wire \pipe_lane[2].pipe_user_i_n_14 ; + wire \pipe_lane[2].pipe_user_i_n_2 ; + wire \pipe_lane[2].pipe_user_i_n_5 ; + wire \pipe_lane[2].pipe_user_i_n_9 ; + wire \pipe_lane[3].gt_wrapper_i_n_1 ; + wire \pipe_lane[3].gt_wrapper_i_n_11 ; + wire \pipe_lane[3].gt_wrapper_i_n_15 ; + wire \pipe_lane[3].gt_wrapper_i_n_16 ; + wire \pipe_lane[3].gt_wrapper_i_n_17 ; + wire \pipe_lane[3].gt_wrapper_i_n_2 ; + wire \pipe_lane[3].gt_wrapper_i_n_20 ; + wire \pipe_lane[3].gt_wrapper_i_n_21 ; + wire \pipe_lane[3].gt_wrapper_i_n_22 ; + wire \pipe_lane[3].gt_wrapper_i_n_23 ; + wire \pipe_lane[3].gt_wrapper_i_n_24 ; + wire \pipe_lane[3].gt_wrapper_i_n_25 ; + wire \pipe_lane[3].gt_wrapper_i_n_26 ; + wire \pipe_lane[3].gt_wrapper_i_n_27 ; + wire \pipe_lane[3].gt_wrapper_i_n_28 ; + wire \pipe_lane[3].gt_wrapper_i_n_29 ; + wire \pipe_lane[3].gt_wrapper_i_n_30 ; + wire \pipe_lane[3].gt_wrapper_i_n_31 ; + wire \pipe_lane[3].gt_wrapper_i_n_32 ; + wire \pipe_lane[3].gt_wrapper_i_n_33 ; + wire \pipe_lane[3].gt_wrapper_i_n_34 ; + wire \pipe_lane[3].gt_wrapper_i_n_35 ; + wire \pipe_lane[3].gt_wrapper_i_n_8 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_0 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_1 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_10 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_11 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_12 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_13 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_14 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_15 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_16 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_17 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_18 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_19 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_2 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_20 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_21 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_22 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_23 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_24 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_25 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_3 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_4 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_5 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_6 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_7 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_8 ; + wire \pipe_lane[3].pipe_drp.pipe_drp_i_n_9 ; + wire \pipe_lane[3].pipe_eq.pipe_eq_i_n_17 ; + wire \pipe_lane[3].pipe_user_i_n_1 ; + wire pipe_mmcm_lock_in; + wire pipe_oobclk_in; + wire pipe_pclk_in; + wire [3:0]pipe_pclk_sel_out; + wire \pipe_reset.pipe_reset_i_n_0 ; + wire \pipe_reset.pipe_reset_i_n_1 ; + wire pipe_rx0_valid_gt; + wire pipe_rx1_valid_gt; + wire pipe_rx2_valid_gt; + wire pipe_rx3_valid_gt; + wire [3:0]pipe_rxoutclk_out; + wire pipe_rxusrclk_in; + wire pipe_tx_deemph_gt; + wire pipe_tx_rcvr_det_gt; + wire pipe_txoutclk_out; + wire qdrp_done; + wire \qpll_reset.qpll_reset_i_n_0 ; + wire qpllpd; + wire qrst_drp_start; + wire qrst_qpllreset; + wire rate_cpllpd_0; + wire rate_cpllpd_1; + wire rate_cpllpd_2; + wire rate_cpllpd_3; + wire rate_cpllreset_0; + wire rate_cpllreset_1; + wire rate_cpllreset_2; + wire rate_cpllreset_3; + wire rate_done_0; + wire rate_done_1; + wire rate_done_2; + wire rate_done_3; + wire rate_drp_start_0; + wire rate_drp_start_1; + wire rate_drp_start_2; + wire rate_drp_start_3; + wire rate_drp_x16_0; + wire rate_drp_x16_1; + wire rate_drp_x16_2; + wire rate_drp_x16_3; + wire rate_drp_x16x20_mode_0; + wire rate_drp_x16x20_mode_1; + wire rate_drp_x16x20_mode_2; + wire rate_drp_x16x20_mode_3; + wire rate_gen3_1; + wire rate_gen3_2; + wire rate_gen3_3; + wire rate_idle_0; + wire rate_idle_1; + wire rate_idle_2; + wire rate_idle_3; + wire [3:0]rate_qpllpd; + wire [3:0]rate_qpllreset; + wire [0:0]rate_rate_0; + wire [0:0]rate_rate_3; + wire [0:0]rate_rate_6; + wire [0:0]rate_rate_9; + wire [0:0]\rate_reg1_reg[0] ; + wire rate_resetovrd_start_0; + wire rate_resetovrd_start_1; + wire rate_resetovrd_start_2; + wire rate_resetovrd_start_3; + wire rate_rxsync_0; + wire rate_rxsync_1; + wire rate_rxsync_2; + wire rate_rxsync_3; + wire rate_rxsync_start_0; + wire rate_rxsync_start_1; + wire rate_rxsync_start_2; + wire rate_rxsync_start_3; + wire [0:0]rate_sysclksel_0; + wire [0:0]rate_sysclksel_2; + wire [0:0]rate_sysclksel_4; + wire [0:0]rate_sysclksel_6; + wire rate_txpmareset_0; + wire rate_txpmareset_1; + wire rate_txpmareset_2; + wire rate_txpmareset_3; + wire reg_clock_locked; + wire reg_clock_locked_reg; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire reset_n_reg1; + wire reset_n_reg1_reg_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire reset_n_reg2; + wire rst_cpllreset; + wire rst_dclk_reset; + wire rst_gtreset; + wire rst_rxusrclk_reset; + wire rst_txsync_start; + wire rst_userrdy; + wire rxchbonden_0; + wire rxchbonden_1; + wire rxchbonden_2; + wire rxchbonden_3; + wire rxdlysresetdone_3; + wire rxphaligndone_s_3; + wire sync_txdlyen_0; + wire sync_txdlysreset_0; + wire sync_txdlysreset_1; + wire sync_txdlysreset_2; + wire sync_txdlysreset_3; + wire sync_txphalign_0; + wire sync_txphalign_1; + wire sync_txphalign_2; + wire sync_txphalign_3; + wire sync_txphinit_0; + wire sync_txphinit_1; + wire sync_txphinit_2; + wire sync_txphinit_3; + wire sync_txsync_done_0; + wire sync_txsync_done_1; + wire sync_txsync_done_2; + wire sync_txsync_done_3; + wire sys_clk; + wire txdlysresetdone_3; + wire txsyncallin; + wire user_active_lane_0; + wire user_active_lane_1; + wire user_active_lane_2; + wire user_active_lane_3; + wire user_oobclk_0; + wire user_oobclk_1; + wire user_oobclk_2; + wire user_oobclk_3; + wire [3:0]user_resetdone; + wire [3:1]user_rx_converge; + wire user_rxcdrlock_0; + wire user_rxcdrlock_1; + wire user_rxcdrlock_2; + wire user_rxcdrlock_3; + + (* BOX_TYPE = "PRIMITIVE" *) + BUFG cpllpd_refclk_inst + (.I(sys_clk), + .O(gt_cpllpdrefclk)); + LUT5 #( + .INIT(32'h4555FFFF)) + \gtx_channel.gtxe2_channel_i_i_52 + (.I0(\pipe_lane[2].pipe_user_i_n_14 ), + .I1(\pipe_lane[2].pipe_user_i_n_9 ), + .I2(\pipe_lane[2].pipe_user_i_n_11 ), + .I3(\pipe_lane[2].pipe_user_i_n_10 ), + .I4(user_rx_converge[3]), + .O(\gtx_channel.gtxe2_channel_i_i_52_n_0 )); + LUT6 #( + .INIT(64'h00000000AAAA0080)) + \gtx_channel.gtxe2_channel_i_i_6__2 + (.I0(user_rx_converge[1]), + .I1(\pipe_lane[0].pipe_user_i_n_11 ), + .I2(\pipe_lane[0].pipe_user_i_n_12 ), + .I3(\pipe_lane[0].pipe_user_i_n_10 ), + .I4(\pipe_lane[0].pipe_user_i_n_15 ), + .I5(\gtx_channel.gtxe2_channel_i_i_52_n_0 ), + .O(\gtx_channel.gtxe2_channel_i_i_6__2_n_0 )); + pcie_7x_0_pcie_7x_0_gt_wrapper \pipe_lane[0].gt_wrapper_i + (.CPLLPD0(CPLLPD0), + .DRPADDR({\pipe_lane[0].pipe_drp.pipe_drp_i_n_18 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_19 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_20 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_21 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_22 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_23 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_24 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_25 }), + .DRPDI({\pipe_lane[0].pipe_drp.pipe_drp_i_n_2 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_3 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_4 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_5 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_6 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_7 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_8 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_9 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_10 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_11 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_12 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_13 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_14 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_15 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_16 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_17 }), + .DRP_DO({\pipe_lane[0].gt_wrapper_i_n_21 ,\pipe_lane[0].gt_wrapper_i_n_22 ,\pipe_lane[0].gt_wrapper_i_n_23 ,\pipe_lane[0].gt_wrapper_i_n_24 ,\pipe_lane[0].gt_wrapper_i_n_25 ,\pipe_lane[0].gt_wrapper_i_n_26 ,\pipe_lane[0].gt_wrapper_i_n_27 ,\pipe_lane[0].gt_wrapper_i_n_28 ,\pipe_lane[0].gt_wrapper_i_n_29 ,\pipe_lane[0].gt_wrapper_i_n_30 ,\pipe_lane[0].gt_wrapper_i_n_31 ,\pipe_lane[0].gt_wrapper_i_n_32 ,\pipe_lane[0].gt_wrapper_i_n_33 ,\pipe_lane[0].gt_wrapper_i_n_34 ,\pipe_lane[0].gt_wrapper_i_n_35 ,\pipe_lane[0].gt_wrapper_i_n_36 }), + .DRP_GTXRESET(rst_gtreset), + .DRP_RDY(\pipe_lane[0].gt_wrapper_i_n_2 ), + .PIPE_POWERDOWN(PIPE_POWERDOWN[1:0]), + .PIPE_RXCHANISALIGNED(PIPE_RXCHANISALIGNED[0]), + .PIPE_RXPOLARITY(PIPE_RXPOLARITY[0]), + .PIPE_RXSTATUS(PIPE_RXSTATUS), + .PIPE_TXCOMPLIANCE(PIPE_TXCOMPLIANCE[0]), + .PIPE_TXDATA(PIPE_TXDATA[15:0]), + .PIPE_TXDATAK(PIPE_TXDATAK[1:0]), + .PIPE_TXELECIDLE(PIPE_TXELECIDLE[0]), + .QPLL_QPLLOUTCLK(\pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_1 ), + .QPLL_QPLLOUTREFCLK(\pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_2 ), + .QRST_CPLLLOCK(\pipe_lane[0].gt_wrapper_i_n_1 ), + .RATE_PHYSTATUS(gt_phystatus_0), + .RATE_RXRATEDONE(gt_rxratedone_0), + .RATE_TXRATEDONE(gt_txratedone_0), + .RST_CPLLRESET(rst_cpllreset), + .RXCHBONDO(\gt_rxchbondi[3]_0 ), + .RXRATE(rate_rate_0), + .RXSYSCLKSEL(rate_sysclksel_0), + .SYNC_RXPHALIGNDONE_M(\pipe_lane[0].gt_wrapper_i_n_11 ), + .SYNC_TXDLYSRESET(sync_txdlysreset_0), + .SYNC_TXPHALIGN(sync_txphalign_0), + .SYNC_TXPHINIT(sync_txphinit_0), + .TXMAINCURSOR(eq_txeq_maincursor_0), + .TXPOSTCURSOR(eq_txeq_postcursor_0), + .TXPRECURSOR(eq_txeq_precursor_0), + .USER_OOBCLK(user_oobclk_0), + .USER_RXRESETDONE(gt_rxresetdone_0), + .USER_TXRESETDONE(gt_txresetdone_0), + .\cplllock_reg1_reg[0] (\pipe_lane[0].pipe_drp.pipe_drp_i_n_0 ), + .\cplllock_reg1_reg[0]_0 (\pipe_lane[0].pipe_drp.pipe_drp_i_n_1 ), + .\cplllock_reg1_reg[0]_1 (\gtx_channel.gtxe2_channel_i_i_6__2_n_0 ), + .\cplllock_reg1_reg[0]_2 (\cplllock_reg1_reg[3] ), + .cpllpd(cpllpd), + .gt_cpllpdrefclk(gt_cpllpdrefclk), + .gt_rx_data_k_wire_filter(gt_rx_data_k_wire_filter[1:0]), + .gt_rx_data_wire_filter(gt_rx_data_wire_filter[15:0]), + .gt_rx_elec_idle_wire_filter(gt_rx_elec_idle_wire_filter[0]), + .gt_rxcdrlock_0(gt_rxcdrlock_0), + .gt_rxvalid_0(gt_rxvalid_0), + .pci_exp_rxn(pci_exp_rxn[0]), + .pci_exp_rxp(pci_exp_rxp[0]), + .pci_exp_txn(pci_exp_txn[0]), + .pci_exp_txp(pci_exp_txp[0]), + .pipe_dclk_in(pipe_dclk_in), + .pipe_dclk_in_0(\pipe_lane[0].gt_wrapper_i_n_8 ), + .pipe_dclk_in_1(\pipe_lane[0].gt_wrapper_i_n_15 ), + .pipe_dclk_in_2(\pipe_lane[0].gt_wrapper_i_n_17 ), + .pipe_dclk_in_3(\pipe_lane[0].gt_wrapper_i_n_18 ), + .pipe_pclk_in(pipe_pclk_in), + .pipe_rxoutclk_out(pipe_rxoutclk_out[0]), + .pipe_rxusrclk_in(pipe_rxusrclk_in), + .pipe_tx_deemph_gt(pipe_tx_deemph_gt), + .pipe_tx_rcvr_det_gt(pipe_tx_rcvr_det_gt), + .pipe_txoutclk_out(pipe_txoutclk_out), + .rate_cpllreset_0(rate_cpllreset_0), + .rate_txpmareset_0(rate_txpmareset_0), + .rst_userrdy(rst_userrdy), + .rxchbonden_0(rxchbonden_0), + .sync_txdlyen_0(sync_txdlyen_0), + .sys_clk(sys_clk)); + pcie_7x_0_pcie_7x_0_pipe_drp \pipe_lane[0].pipe_drp.pipe_drp_i + (.D({\pipe_lane[0].gt_wrapper_i_n_21 ,\pipe_lane[0].gt_wrapper_i_n_22 ,\pipe_lane[0].gt_wrapper_i_n_23 ,\pipe_lane[0].gt_wrapper_i_n_24 ,\pipe_lane[0].gt_wrapper_i_n_25 ,\pipe_lane[0].gt_wrapper_i_n_26 ,\pipe_lane[0].gt_wrapper_i_n_27 ,\pipe_lane[0].gt_wrapper_i_n_28 ,\pipe_lane[0].gt_wrapper_i_n_29 ,\pipe_lane[0].gt_wrapper_i_n_30 ,\pipe_lane[0].gt_wrapper_i_n_31 ,\pipe_lane[0].gt_wrapper_i_n_32 ,\pipe_lane[0].gt_wrapper_i_n_33 ,\pipe_lane[0].gt_wrapper_i_n_34 ,\pipe_lane[0].gt_wrapper_i_n_35 ,\pipe_lane[0].gt_wrapper_i_n_36 }), + .DRPADDR({\pipe_lane[0].pipe_drp.pipe_drp_i_n_18 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_19 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_20 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_21 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_22 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_23 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_24 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_25 }), + .DRPDI({\pipe_lane[0].pipe_drp.pipe_drp_i_n_2 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_3 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_4 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_5 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_6 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_7 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_8 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_9 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_10 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_11 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_12 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_13 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_14 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_15 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_16 ,\pipe_lane[0].pipe_drp.pipe_drp_i_n_17 }), + .DRP_DONE(drp_done_0), + .DRP_GTXRESET(rst_gtreset), + .DRP_RDY(\pipe_lane[0].gt_wrapper_i_n_2 ), + .RATE_DRP_START(rate_drp_start_0), + .RATE_DRP_X16(rate_drp_x16_0), + .RATE_DRP_X16X20_MODE(rate_drp_x16x20_mode_0), + .RST_DCLK_RESET(rst_dclk_reset), + .\fsm_reg[1]_0 (\pipe_lane[0].pipe_drp.pipe_drp_i_n_0 ), + .\fsm_reg[1]_1 (\pipe_lane[0].pipe_drp.pipe_drp_i_n_1 ), + .pipe_dclk_in(pipe_dclk_in), + .\rate_reg1_reg[0]_0 (\rate_reg1_reg[0] )); + pcie_7x_0_pcie_7x_0_pipe_eq \pipe_lane[0].pipe_eq.pipe_eq_i + (.RST_CPLLRESET(rst_cpllreset), + .TXMAINCURSOR(eq_txeq_maincursor_0), + .TXPOSTCURSOR(eq_txeq_postcursor_0), + .TXPRECURSOR(eq_txeq_precursor_0), + .USER_RATE_GEN3(gen3_reg), + .USER_RXEQ_ADAPT_DONE(\pipe_lane[0].pipe_eq.pipe_eq_i_n_17 ), + .pipe_pclk_in(pipe_pclk_in)); + pcie_7x_0_pcie_7x_0_gt_common \pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i + (.QPLL_DRP_DONE(qdrp_done), + .QPLL_DRP_GEN3(\pipe_lane[1].pipe_rate.pipe_rate_i_n_1 ), + .QPLL_QPLLLOCK(\pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_0 ), + .QPLL_QPLLOUTCLK(\pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_1 ), + .QPLL_QPLLOUTREFCLK(\pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_2 ), + .QPLL_QPLLPD(qpllpd), + .QPLL_QPLLRESET(qrst_qpllreset), + .QRST_DRP_START(qrst_drp_start), + .RST_DCLK_RESET(rst_dclk_reset), + .pipe_dclk_in(pipe_dclk_in), + .sys_clk(sys_clk)); + pcie_7x_0_pcie_7x_0_pipe_rate \pipe_lane[0].pipe_rate.pipe_rate_i + (.QRST_CPLLLOCK(\pipe_lane[0].gt_wrapper_i_n_1 ), + .QRST_QPLLPD_IN(rate_qpllpd[0]), + .QRST_QPLLRESET_IN(rate_qpllreset[0]), + .RATE_DRP_DONE(drp_done_0), + .RATE_DRP_START(rate_drp_start_0), + .RATE_DRP_X16(rate_drp_x16_0), + .RATE_DRP_X16X20_MODE(rate_drp_x16x20_mode_0), + .RATE_PHYSTATUS(gt_phystatus_0), + .RATE_QPLLLOCK(\pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_0 ), + .RATE_RXRATEDONE(gt_rxratedone_0), + .RATE_TXRATEDONE(gt_txratedone_0), + .RATE_TXSYNC_DONE(sync_txsync_done_0), + .RST_CPLLRESET(rst_cpllreset), + .RST_IDLE(\pipe_reset.pipe_reset_i_n_1 ), + .RST_TXSYNC_START(rst_txsync_start), + .RXRATE(rate_rate_0), + .RXSYSCLKSEL(rate_sysclksel_0), + .SYNC_RATE_IDLE(rate_idle_0), + .SYNC_RXSYNC_START(rate_rxsync_start_0), + .SYNC_TXSYNC_START(SYNC_TXSYNC_START010_out), + .USER_RATE_DONE(rate_done_0), + .USER_RATE_GEN3(gen3_reg), + .USER_RATE_RXSYNC(rate_rxsync_0), + .USER_RESETOVRD_START(rate_resetovrd_start_0), + .USER_RXRESETDONE(gt_rxresetdone_0), + .USER_TXRESETDONE(gt_txresetdone_0), + .\fsm[0]_i_9_0 (p_1_in2_in), + .out(p_0_in1_in), + .pipe_mmcm_lock_in(pipe_mmcm_lock_in), + .pipe_pclk_in(pipe_pclk_in), + .pipe_pclk_sel_out(pipe_pclk_sel_out[0]), + .rate_cpllpd_0(rate_cpllpd_0), + .rate_cpllreset_0(rate_cpllreset_0), + .\rate_in_reg1_reg[0]_0 (\rate_reg1_reg[0] ), + .rate_txpmareset_0(rate_txpmareset_0), + .rxchbonden_0(rxchbonden_0), + .user_active_lane_0(user_active_lane_0)); + pcie_7x_0_pcie_7x_0_pipe_sync \pipe_lane[0].pipe_sync_i + (.\FSM_onehot_txsync_fsm.fsm_tx_reg[5]_0 (\pipe_lane[0].pipe_user_i_n_6 ), + .\FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0 (p_1_in2_in), + .\FSM_onehot_txsync_fsm.fsm_tx_reg[6]_1 (p_0_in1_in), + .Q({sync_txphalign_0,sync_txphinit_0,sync_txdlysreset_0}), + .RST_CPLLRESET(rst_cpllreset), + .RST_TXSYNC_DONE(sync_txsync_done_0), + .SYNC_RATE_IDLE(rate_idle_0), + .SYNC_RXCDRLOCK(user_rxcdrlock_0), + .SYNC_RXDLYSRESETDONE(rxdlysresetdone_3), + .SYNC_RXPHALIGNDONE_M(\pipe_lane[0].gt_wrapper_i_n_11 ), + .SYNC_RXPHALIGNDONE_S(rxphaligndone_s_3), + .SYNC_RXSYNC_START(rate_rxsync_start_0), + .SYNC_TXDLYSRESETDONE(txdlysresetdone_3), + .SYNC_TXPHALIGNDONE(txsyncallin), + .SYNC_TXPHINITDONE(\pipe_lane[0].pipe_user_i_n_5 ), + .SYNC_TXSYNC_START(SYNC_TXSYNC_START010_out), + .USER_RATE_GEN3(gen3_reg), + .gt_rx_elec_idle_wire_filter(gt_rx_elec_idle_wire_filter[0]), + .out(p_1_in), + .pipe_mmcm_lock_in(pipe_mmcm_lock_in), + .pipe_pclk_in(pipe_pclk_in), + .sync_txdlyen_0(sync_txdlyen_0), + .txphaligndone_reg3_reg_0(\pipe_lane[0].pipe_sync_i_n_1 ), + .user_active_lane_0(user_active_lane_0)); + pcie_7x_0_pcie_7x_0_pipe_user \pipe_lane[0].pipe_user_i + (.\FSM_onehot_txsync_fsm.fsm_tx_reg[5] (\pipe_lane[0].pipe_sync_i_n_1 ), + .\FSM_onehot_txsync_fsm.fsm_tx_reg[5]_0 (p_1_in), + .PIPE_RXSTATUS(PIPE_RXSTATUS[2]), + .PIPE_TXCOMPLIANCE(PIPE_TXCOMPLIANCE[0]), + .PIPE_TXELECIDLE(PIPE_TXELECIDLE[0]), + .RST_CPLLRESET(rst_cpllreset), + .RST_IDLE(\pipe_reset.pipe_reset_i_n_1 ), + .RST_PHYSTATUS(gt_phystatus_0), + .RST_RESETDONE(user_resetdone[0]), + .RST_RXCDRLOCK(user_rxcdrlock_0), + .RST_RXUSRCLK_RESET(rst_rxusrclk_reset), + .SYNC_TXPHALIGNDONE(txsyncallin), + .SYNC_TXPHINITDONE(\pipe_lane[0].pipe_user_i_n_5 ), + .USER_OOBCLK(user_oobclk_0), + .USER_RATE_DONE(rate_done_0), + .USER_RATE_GEN3(gen3_reg), + .USER_RATE_IDLE(rate_idle_0), + .USER_RATE_RXSYNC(rate_rxsync_0), + .USER_RESETOVRD_START(rate_resetovrd_start_0), + .USER_RXEQ_ADAPT_DONE(\pipe_lane[0].pipe_eq.pipe_eq_i_n_17 ), + .USER_RXRESETDONE(gt_rxresetdone_0), + .USER_TXRESETDONE(gt_txresetdone_0), + .\converge_cnt_reg[15]_0 (\pipe_lane[0].pipe_user_i_n_10 ), + .\converge_cnt_reg[1]_0 (\pipe_lane[0].pipe_user_i_n_11 ), + .\converge_cnt_reg[6]_0 (\pipe_lane[0].pipe_user_i_n_12 ), + .converge_gen3_reg_0(\pipe_lane[0].pipe_user_i_n_15 ), + .gt_rx_elec_idle_wire_filter(gt_rx_elec_idle_wire_filter[0]), + .gt_rx_phy_status_wire_filter(gt_rx_phy_status_wire_filter[0]), + .gt_rxcdrlock_0(gt_rxcdrlock_0), + .gt_rxvalid_0(gt_rxvalid_0), + .gt_rxvalid_q_reg(gt_rxvalid_q_reg), + .out(\pipe_lane[0].pipe_user_i_n_1 ), + .pipe_oobclk_in(pipe_oobclk_in), + .pipe_pclk_in(pipe_pclk_in), + .pipe_pclk_sel_out(pipe_pclk_sel_out[0]), + .pipe_rx0_valid_gt(pipe_rx0_valid_gt), + .pipe_rxusrclk_in(pipe_rxusrclk_in), + .txcompliance_reg2_reg_0(p_0_in1_in), + .txelecidle_reg2_reg_0(p_1_in2_in), + .txelecidle_reg2_reg_1(\pipe_lane[0].pipe_user_i_n_6 ), + .txphaligndone_reg1_reg(\pipe_lane[1].gt_wrapper_i_n_16 ), + .txphaligndone_reg1_reg_0(\pipe_lane[0].gt_wrapper_i_n_17 ), + .txphaligndone_reg1_reg_1(\pipe_lane[2].pipe_user_i_n_2 ), + .txphinitdone_reg1_reg(\pipe_lane[1].gt_wrapper_i_n_17 ), + .txphinitdone_reg1_reg_0(\pipe_lane[0].gt_wrapper_i_n_18 ), + .txphinitdone_reg1_reg_1(\pipe_lane[2].pipe_user_i_n_5 ), + .user_active_lane_0(user_active_lane_0), + .user_active_lane_1(user_active_lane_1)); + pcie_7x_0_pcie_7x_0_gt_wrapper_37 \pipe_lane[1].gt_wrapper_i + (.CPLLPD0_3(CPLLPD0_3), + .DRPADDR({\pipe_lane[1].pipe_drp.pipe_drp_i_n_2 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_3 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_4 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_5 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_6 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_7 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_8 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_9 }), + .DRPDI({\pipe_lane[1].pipe_drp.pipe_drp_i_n_10 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_11 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_12 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_13 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_14 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_15 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_16 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_17 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_18 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_19 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_20 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_21 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_22 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_23 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_24 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_25 }), + .DRP_DO({\pipe_lane[1].gt_wrapper_i_n_20 ,\pipe_lane[1].gt_wrapper_i_n_21 ,\pipe_lane[1].gt_wrapper_i_n_22 ,\pipe_lane[1].gt_wrapper_i_n_23 ,\pipe_lane[1].gt_wrapper_i_n_24 ,\pipe_lane[1].gt_wrapper_i_n_25 ,\pipe_lane[1].gt_wrapper_i_n_26 ,\pipe_lane[1].gt_wrapper_i_n_27 ,\pipe_lane[1].gt_wrapper_i_n_28 ,\pipe_lane[1].gt_wrapper_i_n_29 ,\pipe_lane[1].gt_wrapper_i_n_30 ,\pipe_lane[1].gt_wrapper_i_n_31 ,\pipe_lane[1].gt_wrapper_i_n_32 ,\pipe_lane[1].gt_wrapper_i_n_33 ,\pipe_lane[1].gt_wrapper_i_n_34 ,\pipe_lane[1].gt_wrapper_i_n_35 }), + .DRP_GTXRESET(rst_gtreset), + .DRP_RDY(\pipe_lane[1].gt_wrapper_i_n_2 ), + .PIPE_POWERDOWN(PIPE_POWERDOWN[3:2]), + .PIPE_RXCHANISALIGNED(PIPE_RXCHANISALIGNED[1]), + .PIPE_RXPOLARITY(PIPE_RXPOLARITY[1]), + .PIPE_TXCOMPLIANCE(PIPE_TXCOMPLIANCE[1]), + .PIPE_TXDATA(PIPE_TXDATA[31:16]), + .PIPE_TXDATAK(PIPE_TXDATAK[3:2]), + .PIPE_TXELECIDLE(PIPE_TXELECIDLE[1]), + .QPLL_QPLLOUTCLK(\pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_1 ), + .QPLL_QPLLOUTREFCLK(\pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_2 ), + .QRST_CPLLLOCK(\pipe_lane[1].gt_wrapper_i_n_1 ), + .RATE_PHYSTATUS(gt_phystatus_1), + .RATE_RXRATEDONE(gt_rxratedone_1), + .RATE_TXRATEDONE(gt_txratedone_1), + .RST_CPLLRESET(rst_cpllreset), + .RXCHBONDO(\gt_rxchbondi[3]_0 ), + .RXRATE(rate_rate_3), + .RXSYSCLKSEL(rate_sysclksel_2), + .SYNC_TXDLYSRESET(sync_txdlysreset_1), + .SYNC_TXPHALIGN(sync_txphalign_1), + .SYNC_TXPHINIT(sync_txphinit_1), + .TXMAINCURSOR(eq_txeq_maincursor_7), + .TXPOSTCURSOR(eq_txeq_postcursor_5), + .TXPRECURSOR(eq_txeq_precursor_5), + .USER_OOBCLK(user_oobclk_1), + .USER_RXRESETDONE(gt_rxresetdone_1), + .USER_TXRESETDONE(gt_txresetdone_1), + .\cplllock_reg1_reg[1] (\pipe_lane[1].pipe_drp.pipe_drp_i_n_0 ), + .\cplllock_reg1_reg[1]_0 (\pipe_lane[1].pipe_drp.pipe_drp_i_n_1 ), + .\cplllock_reg1_reg[1]_1 (\gtx_channel.gtxe2_channel_i_i_6__2_n_0 ), + .\cplllock_reg1_reg[1]_2 (\cplllock_reg1_reg[3] ), + .cpllpd_0(cpllpd_0), + .gt_cpllpdrefclk(gt_cpllpdrefclk), + .gt_rx_data_k_wire_filter(gt_rx_data_k_wire_filter[3:2]), + .gt_rx_data_wire_filter(gt_rx_data_wire_filter[31:16]), + .gt_rx_elec_idle_wire_filter(gt_rx_elec_idle_wire_filter[1]), + .gt_rxcdrlock_1(gt_rxcdrlock_1), + .gt_rxvalid_1(gt_rxvalid_1), + .pci_exp_rxn(pci_exp_rxn[1]), + .pci_exp_rxp(pci_exp_rxp[1]), + .pci_exp_txn(pci_exp_txn[1]), + .pci_exp_txp(pci_exp_txp[1]), + .pipe_dclk_in(pipe_dclk_in), + .pipe_dclk_in_0(\pipe_lane[1].gt_wrapper_i_n_8 ), + .pipe_dclk_in_1(\pipe_lane[1].gt_wrapper_i_n_11 ), + .pipe_dclk_in_2(\pipe_lane[1].gt_wrapper_i_n_15 ), + .pipe_dclk_in_3(\pipe_lane[1].gt_wrapper_i_n_16 ), + .pipe_dclk_in_4(\pipe_lane[1].gt_wrapper_i_n_17 ), + .pipe_dclk_in_5(pipe_dclk_in_0), + .pipe_pclk_in(pipe_pclk_in), + .pipe_rxoutclk_out(pipe_rxoutclk_out[1]), + .pipe_rxusrclk_in(pipe_rxusrclk_in), + .pipe_tx_deemph_gt(pipe_tx_deemph_gt), + .pipe_tx_rcvr_det_gt(pipe_tx_rcvr_det_gt), + .rate_cpllreset_1(rate_cpllreset_1), + .rate_txpmareset_1(rate_txpmareset_1), + .rst_userrdy(rst_userrdy), + .rxchbonden_1(rxchbonden_1), + .sys_clk(sys_clk)); + pcie_7x_0_pcie_7x_0_pipe_drp_38 \pipe_lane[1].pipe_drp.pipe_drp_i + (.D({\pipe_lane[1].gt_wrapper_i_n_20 ,\pipe_lane[1].gt_wrapper_i_n_21 ,\pipe_lane[1].gt_wrapper_i_n_22 ,\pipe_lane[1].gt_wrapper_i_n_23 ,\pipe_lane[1].gt_wrapper_i_n_24 ,\pipe_lane[1].gt_wrapper_i_n_25 ,\pipe_lane[1].gt_wrapper_i_n_26 ,\pipe_lane[1].gt_wrapper_i_n_27 ,\pipe_lane[1].gt_wrapper_i_n_28 ,\pipe_lane[1].gt_wrapper_i_n_29 ,\pipe_lane[1].gt_wrapper_i_n_30 ,\pipe_lane[1].gt_wrapper_i_n_31 ,\pipe_lane[1].gt_wrapper_i_n_32 ,\pipe_lane[1].gt_wrapper_i_n_33 ,\pipe_lane[1].gt_wrapper_i_n_34 ,\pipe_lane[1].gt_wrapper_i_n_35 }), + .DRPADDR({\pipe_lane[1].pipe_drp.pipe_drp_i_n_2 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_3 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_4 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_5 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_6 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_7 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_8 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_9 }), + .DRPDI({\pipe_lane[1].pipe_drp.pipe_drp_i_n_10 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_11 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_12 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_13 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_14 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_15 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_16 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_17 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_18 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_19 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_20 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_21 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_22 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_23 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_24 ,\pipe_lane[1].pipe_drp.pipe_drp_i_n_25 }), + .DRP_DONE(drp_done_1), + .DRP_GTXRESET(rst_gtreset), + .DRP_RDY(\pipe_lane[1].gt_wrapper_i_n_2 ), + .RATE_DRP_START(rate_drp_start_1), + .RATE_DRP_X16(rate_drp_x16_1), + .RATE_DRP_X16X20_MODE(rate_drp_x16x20_mode_1), + .RST_DCLK_RESET(rst_dclk_reset), + .\fsm_reg[1]_0 (\pipe_lane[1].pipe_drp.pipe_drp_i_n_0 ), + .\fsm_reg[1]_1 (\pipe_lane[1].pipe_drp.pipe_drp_i_n_1 ), + .pipe_dclk_in(pipe_dclk_in), + .\rate_reg1_reg[0]_0 (\rate_reg1_reg[0] )); + pcie_7x_0_pcie_7x_0_pipe_eq_39 \pipe_lane[1].pipe_eq.pipe_eq_i + (.RST_CPLLRESET(rst_cpllreset), + .TXMAINCURSOR(eq_txeq_maincursor_7), + .TXPOSTCURSOR(eq_txeq_postcursor_5), + .TXPRECURSOR(eq_txeq_precursor_5), + .USER_RXEQ_ADAPT_DONE(\pipe_lane[1].pipe_eq.pipe_eq_i_n_17 ), + .pipe_pclk_in(pipe_pclk_in), + .rate_gen3_1(rate_gen3_1)); + pcie_7x_0_pcie_7x_0_pipe_rate_40 \pipe_lane[1].pipe_rate.pipe_rate_i + (.QPLL_DRP_GEN3(\pipe_lane[1].pipe_rate.pipe_rate_i_n_1 ), + .QRST_CPLLLOCK(\pipe_lane[1].gt_wrapper_i_n_1 ), + .QRST_QPLLPD_IN(rate_qpllpd[1]), + .QRST_QPLLRESET_IN(rate_qpllreset[1]), + .RATE_DRP_DONE(drp_done_1), + .RATE_DRP_START(rate_drp_start_1), + .RATE_DRP_X16(rate_drp_x16_1), + .RATE_DRP_X16X20_MODE(rate_drp_x16x20_mode_1), + .RATE_PHYSTATUS(gt_phystatus_1), + .RATE_QPLLLOCK(\pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_0 ), + .RATE_RXRATEDONE(gt_rxratedone_1), + .RATE_TXRATEDONE(gt_txratedone_1), + .RATE_TXSYNC_DONE(sync_txsync_done_1), + .RST_CPLLRESET(rst_cpllreset), + .RST_IDLE(\pipe_reset.pipe_reset_i_n_1 ), + .RST_TXSYNC_START(rst_txsync_start), + .RXRATE(rate_rate_3), + .RXSYSCLKSEL(rate_sysclksel_2), + .SYNC_RATE_IDLE(rate_idle_1), + .SYNC_RXSYNC_START(rate_rxsync_start_1), + .SYNC_TXSYNC_START(SYNC_TXSYNC_START05_out), + .USER_RATE_DONE(rate_done_1), + .USER_RATE_GEN3(gen3_reg), + .USER_RATE_RXSYNC(rate_rxsync_1), + .USER_RESETOVRD_START(rate_resetovrd_start_1), + .USER_RXRESETDONE(gt_rxresetdone_1), + .USER_TXRESETDONE(gt_txresetdone_1), + .\fsm[0]_i_9__0_0 (p_1_in2_in_1), + .out(p_0_in1_in_0), + .pipe_mmcm_lock_in(pipe_mmcm_lock_in), + .pipe_pclk_in(pipe_pclk_in), + .pipe_pclk_sel_out(pipe_pclk_sel_out[1]), + .rate_cpllpd_1(rate_cpllpd_1), + .rate_cpllreset_1(rate_cpllreset_1), + .rate_gen3_1(rate_gen3_1), + .rate_gen3_2(rate_gen3_2), + .rate_gen3_3(rate_gen3_3), + .\rate_in_reg1_reg[0]_0 (\rate_reg1_reg[0] ), + .rate_txpmareset_1(rate_txpmareset_1), + .rxchbonden_1(rxchbonden_1), + .user_active_lane_1(user_active_lane_1)); + pcie_7x_0_pcie_7x_0_pipe_sync_41 \pipe_lane[1].pipe_sync_i + (.\FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0 (p_0_in1_in_0), + .Q({sync_txphalign_1,sync_txphinit_1,sync_txdlysreset_1}), + .RST_CPLLRESET(rst_cpllreset), + .RST_TXSYNC_DONE(sync_txsync_done_1), + .SYNC_GEN3(rate_gen3_1), + .SYNC_RATE_IDLE(rate_idle_1), + .SYNC_RXCDRLOCK(user_rxcdrlock_1), + .SYNC_RXDLYSRESETDONE(rxdlysresetdone_3), + .SYNC_RXPHALIGNDONE_M(\pipe_lane[0].gt_wrapper_i_n_11 ), + .SYNC_RXPHALIGNDONE_S(rxphaligndone_s_3), + .SYNC_RXSYNC_START(rate_rxsync_start_1), + .SYNC_TXDLYSRESETDONE(txdlysresetdone_3), + .SYNC_TXPHALIGNDONE(txsyncallin), + .SYNC_TXPHINITDONE(\pipe_lane[0].pipe_user_i_n_5 ), + .SYNC_TXSYNC_START(SYNC_TXSYNC_START05_out), + .gt_rx_elec_idle_wire_filter(gt_rx_elec_idle_wire_filter[1]), + .out(p_1_in2_in_1), + .pipe_mmcm_lock_in(pipe_mmcm_lock_in), + .pipe_pclk_in(pipe_pclk_in), + .user_active_lane_1(user_active_lane_1)); + pcie_7x_0_pcie_7x_0_pipe_user_42 \pipe_lane[1].pipe_user_i + (.PIPE_TXCOMPLIANCE(PIPE_TXCOMPLIANCE[1]), + .PIPE_TXELECIDLE(PIPE_TXELECIDLE[1]), + .RST_CPLLRESET(rst_cpllreset), + .RST_IDLE(\pipe_reset.pipe_reset_i_n_1 ), + .RST_PHYSTATUS(gt_phystatus_1), + .RST_RESETDONE(user_resetdone[1]), + .RST_RXCDRLOCK(user_rxcdrlock_1), + .RST_RXUSRCLK_RESET(rst_rxusrclk_reset), + .USER_OOBCLK(user_oobclk_1), + .USER_RATE_DONE(rate_done_1), + .USER_RATE_GEN3(rate_gen3_1), + .USER_RATE_IDLE(rate_idle_1), + .USER_RATE_RXSYNC(rate_rxsync_1), + .USER_RESETOVRD_START(rate_resetovrd_start_1), + .USER_RXEQ_ADAPT_DONE(\pipe_lane[1].pipe_eq.pipe_eq_i_n_17 ), + .USER_RXRESETDONE(gt_rxresetdone_1), + .USER_TXRESETDONE(gt_txresetdone_1), + .gt_rx_elec_idle_wire_filter(gt_rx_elec_idle_wire_filter[1]), + .gt_rx_phy_status_wire_filter(gt_rx_phy_status_wire_filter[1]), + .gt_rxcdrlock_1(gt_rxcdrlock_1), + .gt_rxvalid_1(gt_rxvalid_1), + .gt_rxvalid_q_reg(gt_rxvalid_q_reg_0), + .out(\pipe_lane[1].pipe_user_i_n_1 ), + .pipe_oobclk_in(pipe_oobclk_in), + .pipe_pclk_in(pipe_pclk_in), + .pipe_pclk_sel_out(pipe_pclk_sel_out[1]), + .pipe_rx1_valid_gt(pipe_rx1_valid_gt), + .pipe_rxusrclk_in(pipe_rxusrclk_in), + .rxstatus_reg1_reg_0(pipe_dclk_in_0[2]), + .txcompliance_reg2_reg_0(p_0_in1_in_0), + .txelecidle_reg2_reg_0(p_1_in2_in_1), + .user_active_lane_1(user_active_lane_1), + .user_rx_converge(user_rx_converge[1])); + pcie_7x_0_pcie_7x_0_gt_wrapper_43 \pipe_lane[2].gt_wrapper_i + (.CPLLPD0_4(CPLLPD0_4), + .DRPADDR({\pipe_lane[2].pipe_drp.pipe_drp_i_n_2 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_3 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_4 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_5 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_6 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_7 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_8 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_9 }), + .DRPDI({\pipe_lane[2].pipe_drp.pipe_drp_i_n_10 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_11 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_12 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_13 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_14 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_15 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_16 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_17 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_18 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_19 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_20 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_21 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_22 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_23 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_24 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_25 }), + .DRP_DO({\pipe_lane[2].gt_wrapper_i_n_20 ,\pipe_lane[2].gt_wrapper_i_n_21 ,\pipe_lane[2].gt_wrapper_i_n_22 ,\pipe_lane[2].gt_wrapper_i_n_23 ,\pipe_lane[2].gt_wrapper_i_n_24 ,\pipe_lane[2].gt_wrapper_i_n_25 ,\pipe_lane[2].gt_wrapper_i_n_26 ,\pipe_lane[2].gt_wrapper_i_n_27 ,\pipe_lane[2].gt_wrapper_i_n_28 ,\pipe_lane[2].gt_wrapper_i_n_29 ,\pipe_lane[2].gt_wrapper_i_n_30 ,\pipe_lane[2].gt_wrapper_i_n_31 ,\pipe_lane[2].gt_wrapper_i_n_32 ,\pipe_lane[2].gt_wrapper_i_n_33 ,\pipe_lane[2].gt_wrapper_i_n_34 ,\pipe_lane[2].gt_wrapper_i_n_35 }), + .DRP_GTXRESET(rst_gtreset), + .DRP_RDY(\pipe_lane[2].gt_wrapper_i_n_2 ), + .PIPE_POWERDOWN(PIPE_POWERDOWN[5:4]), + .PIPE_RXCHANISALIGNED(PIPE_RXCHANISALIGNED[2]), + .PIPE_RXPOLARITY(PIPE_RXPOLARITY[2]), + .PIPE_TXCOMPLIANCE(PIPE_TXCOMPLIANCE[2]), + .PIPE_TXDATA(PIPE_TXDATA[47:32]), + .PIPE_TXDATAK(PIPE_TXDATAK[5:4]), + .PIPE_TXELECIDLE(PIPE_TXELECIDLE[2]), + .QPLL_QPLLOUTCLK(\pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_1 ), + .QPLL_QPLLOUTREFCLK(\pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_2 ), + .QRST_CPLLLOCK(\pipe_lane[2].gt_wrapper_i_n_1 ), + .RATE_PHYSTATUS(gt_phystatus_2), + .RATE_RXRATEDONE(gt_rxratedone_2), + .RATE_TXRATEDONE(gt_txratedone_2), + .RST_CPLLRESET(rst_cpllreset), + .RXCHBONDO(\gt_rxchbondi[3]_0 ), + .RXRATE(rate_rate_6), + .RXSYSCLKSEL(rate_sysclksel_4), + .SYNC_TXDLYSRESET(sync_txdlysreset_2), + .SYNC_TXPHALIGN(sync_txphalign_2), + .SYNC_TXPHINIT(sync_txphinit_2), + .TXMAINCURSOR(eq_txeq_maincursor_14), + .TXPOSTCURSOR(eq_txeq_postcursor_10), + .TXPRECURSOR(eq_txeq_precursor_10), + .USER_OOBCLK(user_oobclk_2), + .USER_RXRESETDONE(gt_rxresetdone_2), + .USER_TXRESETDONE(gt_txresetdone_2), + .\cplllock_reg1_reg[2] (\pipe_lane[2].pipe_drp.pipe_drp_i_n_0 ), + .\cplllock_reg1_reg[2]_0 (\pipe_lane[2].pipe_drp.pipe_drp_i_n_1 ), + .\cplllock_reg1_reg[2]_1 (\gtx_channel.gtxe2_channel_i_i_6__2_n_0 ), + .\cplllock_reg1_reg[2]_2 (\cplllock_reg1_reg[3] ), + .cpllpd_1(cpllpd_1), + .gt_cpllpdrefclk(gt_cpllpdrefclk), + .gt_rx_data_k_wire_filter(gt_rx_data_k_wire_filter[5:4]), + .gt_rx_data_wire_filter(gt_rx_data_wire_filter[47:32]), + .gt_rx_elec_idle_wire_filter(gt_rx_elec_idle_wire_filter[2]), + .gt_rxcdrlock_2(gt_rxcdrlock_2), + .gt_rxvalid_2(gt_rxvalid_2), + .pci_exp_rxn(pci_exp_rxn[2]), + .pci_exp_rxp(pci_exp_rxp[2]), + .pci_exp_txn(pci_exp_txn[2]), + .pci_exp_txp(pci_exp_txp[2]), + .pipe_dclk_in(pipe_dclk_in), + .pipe_dclk_in_0(\pipe_lane[2].gt_wrapper_i_n_8 ), + .pipe_dclk_in_1(\pipe_lane[2].gt_wrapper_i_n_11 ), + .pipe_dclk_in_2(\pipe_lane[2].gt_wrapper_i_n_15 ), + .pipe_dclk_in_3(\pipe_lane[2].gt_wrapper_i_n_16 ), + .pipe_dclk_in_4(\pipe_lane[2].gt_wrapper_i_n_17 ), + .pipe_dclk_in_5(pipe_dclk_in_1), + .pipe_pclk_in(pipe_pclk_in), + .pipe_rxoutclk_out(pipe_rxoutclk_out[2]), + .pipe_rxusrclk_in(pipe_rxusrclk_in), + .pipe_tx_deemph_gt(pipe_tx_deemph_gt), + .pipe_tx_rcvr_det_gt(pipe_tx_rcvr_det_gt), + .rate_cpllreset_2(rate_cpllreset_2), + .rate_txpmareset_2(rate_txpmareset_2), + .rst_userrdy(rst_userrdy), + .rxchbonden_2(rxchbonden_2), + .sys_clk(sys_clk)); + pcie_7x_0_pcie_7x_0_pipe_drp_44 \pipe_lane[2].pipe_drp.pipe_drp_i + (.D({\pipe_lane[2].gt_wrapper_i_n_20 ,\pipe_lane[2].gt_wrapper_i_n_21 ,\pipe_lane[2].gt_wrapper_i_n_22 ,\pipe_lane[2].gt_wrapper_i_n_23 ,\pipe_lane[2].gt_wrapper_i_n_24 ,\pipe_lane[2].gt_wrapper_i_n_25 ,\pipe_lane[2].gt_wrapper_i_n_26 ,\pipe_lane[2].gt_wrapper_i_n_27 ,\pipe_lane[2].gt_wrapper_i_n_28 ,\pipe_lane[2].gt_wrapper_i_n_29 ,\pipe_lane[2].gt_wrapper_i_n_30 ,\pipe_lane[2].gt_wrapper_i_n_31 ,\pipe_lane[2].gt_wrapper_i_n_32 ,\pipe_lane[2].gt_wrapper_i_n_33 ,\pipe_lane[2].gt_wrapper_i_n_34 ,\pipe_lane[2].gt_wrapper_i_n_35 }), + .DRPADDR({\pipe_lane[2].pipe_drp.pipe_drp_i_n_2 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_3 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_4 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_5 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_6 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_7 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_8 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_9 }), + .DRPDI({\pipe_lane[2].pipe_drp.pipe_drp_i_n_10 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_11 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_12 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_13 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_14 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_15 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_16 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_17 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_18 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_19 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_20 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_21 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_22 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_23 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_24 ,\pipe_lane[2].pipe_drp.pipe_drp_i_n_25 }), + .DRP_DONE(drp_done_2), + .DRP_GTXRESET(rst_gtreset), + .DRP_RDY(\pipe_lane[2].gt_wrapper_i_n_2 ), + .RATE_DRP_START(rate_drp_start_2), + .RATE_DRP_X16(rate_drp_x16_2), + .RATE_DRP_X16X20_MODE(rate_drp_x16x20_mode_2), + .RST_DCLK_RESET(rst_dclk_reset), + .\fsm_reg[1]_0 (\pipe_lane[2].pipe_drp.pipe_drp_i_n_0 ), + .\fsm_reg[1]_1 (\pipe_lane[2].pipe_drp.pipe_drp_i_n_1 ), + .pipe_dclk_in(pipe_dclk_in), + .\rate_reg1_reg[0]_0 (\rate_reg1_reg[0] )); + pcie_7x_0_pcie_7x_0_pipe_eq_45 \pipe_lane[2].pipe_eq.pipe_eq_i + (.RST_CPLLRESET(rst_cpllreset), + .TXMAINCURSOR(eq_txeq_maincursor_14), + .TXPOSTCURSOR(eq_txeq_postcursor_10), + .TXPRECURSOR(eq_txeq_precursor_10), + .USER_RXEQ_ADAPT_DONE(\pipe_lane[2].pipe_eq.pipe_eq_i_n_17 ), + .pipe_pclk_in(pipe_pclk_in), + .rate_gen3_2(rate_gen3_2)); + pcie_7x_0_pcie_7x_0_pipe_rate_46 \pipe_lane[2].pipe_rate.pipe_rate_i + (.QRST_CPLLLOCK(\pipe_lane[2].gt_wrapper_i_n_1 ), + .QRST_QPLLPD_IN(rate_qpllpd[2]), + .QRST_QPLLRESET_IN(rate_qpllreset[2]), + .RATE_DRP_DONE(drp_done_2), + .RATE_DRP_START(rate_drp_start_2), + .RATE_DRP_X16(rate_drp_x16_2), + .RATE_DRP_X16X20_MODE(rate_drp_x16x20_mode_2), + .RATE_PHYSTATUS(gt_phystatus_2), + .RATE_QPLLLOCK(\pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_0 ), + .RATE_RXRATEDONE(gt_rxratedone_2), + .RATE_TXRATEDONE(gt_txratedone_2), + .RATE_TXSYNC_DONE(sync_txsync_done_2), + .RST_CPLLRESET(rst_cpllreset), + .RST_IDLE(\pipe_reset.pipe_reset_i_n_1 ), + .RST_TXSYNC_START(rst_txsync_start), + .RXRATE(rate_rate_6), + .RXSYSCLKSEL(rate_sysclksel_4), + .SYNC_RATE_IDLE(rate_idle_2), + .SYNC_RXSYNC_START(rate_rxsync_start_2), + .SYNC_TXSYNC_START(SYNC_TXSYNC_START00_out), + .USER_RATE_DONE(rate_done_2), + .USER_RATE_RXSYNC(rate_rxsync_2), + .USER_RESETOVRD_START(rate_resetovrd_start_2), + .USER_RXRESETDONE(gt_rxresetdone_2), + .USER_TXRESETDONE(gt_txresetdone_2), + .\fsm[0]_i_9__1_0 (p_1_in2_in_2), + .out(p_0_in1_in_3), + .pipe_mmcm_lock_in(pipe_mmcm_lock_in), + .pipe_pclk_in(pipe_pclk_in), + .pipe_pclk_sel_out(pipe_pclk_sel_out[2]), + .rate_cpllpd_2(rate_cpllpd_2), + .rate_cpllreset_2(rate_cpllreset_2), + .rate_gen3_2(rate_gen3_2), + .\rate_in_reg1_reg[0]_0 (\rate_reg1_reg[0] ), + .rate_txpmareset_2(rate_txpmareset_2), + .rxchbonden_2(rxchbonden_2), + .user_active_lane_2(user_active_lane_2)); + pcie_7x_0_pcie_7x_0_pipe_sync_47 \pipe_lane[2].pipe_sync_i + (.\FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0 (p_0_in1_in_3), + .Q({sync_txphalign_2,sync_txphinit_2,sync_txdlysreset_2}), + .RST_CPLLRESET(rst_cpllreset), + .RST_TXSYNC_DONE(sync_txsync_done_2), + .SYNC_GEN3(rate_gen3_2), + .SYNC_RATE_IDLE(rate_idle_2), + .SYNC_RXCDRLOCK(user_rxcdrlock_2), + .SYNC_RXDLYSRESETDONE(rxdlysresetdone_3), + .SYNC_RXPHALIGNDONE_M(\pipe_lane[0].gt_wrapper_i_n_11 ), + .SYNC_RXPHALIGNDONE_S(rxphaligndone_s_3), + .SYNC_RXSYNC_START(rate_rxsync_start_2), + .SYNC_TXDLYSRESETDONE(txdlysresetdone_3), + .SYNC_TXPHALIGNDONE(txsyncallin), + .SYNC_TXPHINITDONE(\pipe_lane[0].pipe_user_i_n_5 ), + .SYNC_TXSYNC_START(SYNC_TXSYNC_START00_out), + .gt_rx_elec_idle_wire_filter(gt_rx_elec_idle_wire_filter[2]), + .out(p_1_in2_in_2), + .pipe_mmcm_lock_in(pipe_mmcm_lock_in), + .pipe_pclk_in(pipe_pclk_in), + .user_active_lane_2(user_active_lane_2)); + pcie_7x_0_pcie_7x_0_pipe_user_48 \pipe_lane[2].pipe_user_i + (.PIPE_TXCOMPLIANCE(PIPE_TXCOMPLIANCE[2]), + .PIPE_TXELECIDLE(PIPE_TXELECIDLE[2]), + .RST_CPLLRESET(rst_cpllreset), + .RST_IDLE(\pipe_reset.pipe_reset_i_n_1 ), + .RST_PHYSTATUS(gt_phystatus_2), + .RST_RESETDONE(user_resetdone[2]), + .RST_RXCDRLOCK(user_rxcdrlock_2), + .RST_RXUSRCLK_RESET(rst_rxusrclk_reset), + .USER_OOBCLK(user_oobclk_2), + .USER_RATE_DONE(rate_done_2), + .USER_RATE_IDLE(rate_idle_2), + .USER_RATE_RXSYNC(rate_rxsync_2), + .USER_RESETOVRD_START(rate_resetovrd_start_2), + .USER_RXEQ_ADAPT_DONE(\pipe_lane[2].pipe_eq.pipe_eq_i_n_17 ), + .USER_RXRESETDONE(gt_rxresetdone_2), + .USER_TXRESETDONE(gt_txresetdone_2), + .\converge_cnt_reg[15]_0 (\pipe_lane[2].pipe_user_i_n_9 ), + .\converge_cnt_reg[1]_0 (\pipe_lane[2].pipe_user_i_n_10 ), + .\converge_cnt_reg[6]_0 (\pipe_lane[2].pipe_user_i_n_11 ), + .converge_gen3_reg_0(\pipe_lane[2].pipe_user_i_n_14 ), + .gt_rx_elec_idle_wire_filter(gt_rx_elec_idle_wire_filter[2]), + .gt_rx_phy_status_wire_filter(gt_rx_phy_status_wire_filter[2]), + .gt_rxcdrlock_2(gt_rxcdrlock_2), + .gt_rxvalid_2(gt_rxvalid_2), + .gt_rxvalid_q_reg(gt_rxvalid_q_reg_1), + .out(\pipe_lane[3].pipe_user_i_n_1 ), + .phy_rdy_n_int_reg(\pipe_lane[0].pipe_user_i_n_1 ), + .phy_rdy_n_int_reg_0(\pipe_lane[1].pipe_user_i_n_1 ), + .pipe_oobclk_in(pipe_oobclk_in), + .pipe_pclk_in(pipe_pclk_in), + .pipe_pclk_sel_out(pipe_pclk_sel_out[2]), + .pipe_rx2_valid_gt(pipe_rx2_valid_gt), + .pipe_rxusrclk_in(pipe_rxusrclk_in), + .rate_gen3_2(rate_gen3_2), + .reg_clock_locked(reg_clock_locked), + .reg_clock_locked_reg(reg_clock_locked_reg), + .rxstatus_reg1_reg_0(pipe_dclk_in_1[2]), + .txcompliance_reg2_reg_0(\pipe_lane[2].pipe_user_i_n_2 ), + .txcompliance_reg2_reg_1(p_0_in1_in_3), + .txcompliance_reg2_reg_2(\pipe_lane[2].pipe_user_i_n_5 ), + .txelecidle_reg2_reg_0(p_1_in2_in_2), + .txphaligndone_reg1_reg(\pipe_lane[2].gt_wrapper_i_n_16 ), + .txphaligndone_reg1_reg_0(p_0_in1_in_4), + .txphaligndone_reg1_reg_1(p_1_in2_in_5), + .txphaligndone_reg1_reg_2(\pipe_lane[3].gt_wrapper_i_n_16 ), + .txphinitdone_reg1_reg(\pipe_lane[2].gt_wrapper_i_n_17 ), + .txphinitdone_reg1_reg_0(\pipe_lane[3].gt_wrapper_i_n_17 ), + .user_active_lane_2(user_active_lane_2)); + pcie_7x_0_pcie_7x_0_gt_wrapper_49 \pipe_lane[3].gt_wrapper_i + (.CPLLPD0_5(CPLLPD0_5), + .DRPADDR({\pipe_lane[3].pipe_drp.pipe_drp_i_n_2 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_3 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_4 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_5 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_6 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_7 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_8 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_9 }), + .DRPDI({\pipe_lane[3].pipe_drp.pipe_drp_i_n_10 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_11 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_12 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_13 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_14 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_15 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_16 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_17 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_18 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_19 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_20 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_21 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_22 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_23 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_24 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_25 }), + .DRP_DO({\pipe_lane[3].gt_wrapper_i_n_20 ,\pipe_lane[3].gt_wrapper_i_n_21 ,\pipe_lane[3].gt_wrapper_i_n_22 ,\pipe_lane[3].gt_wrapper_i_n_23 ,\pipe_lane[3].gt_wrapper_i_n_24 ,\pipe_lane[3].gt_wrapper_i_n_25 ,\pipe_lane[3].gt_wrapper_i_n_26 ,\pipe_lane[3].gt_wrapper_i_n_27 ,\pipe_lane[3].gt_wrapper_i_n_28 ,\pipe_lane[3].gt_wrapper_i_n_29 ,\pipe_lane[3].gt_wrapper_i_n_30 ,\pipe_lane[3].gt_wrapper_i_n_31 ,\pipe_lane[3].gt_wrapper_i_n_32 ,\pipe_lane[3].gt_wrapper_i_n_33 ,\pipe_lane[3].gt_wrapper_i_n_34 ,\pipe_lane[3].gt_wrapper_i_n_35 }), + .DRP_GTXRESET(rst_gtreset), + .DRP_RDY(\pipe_lane[3].gt_wrapper_i_n_2 ), + .PIPE_POWERDOWN(PIPE_POWERDOWN[7:6]), + .PIPE_RXCHANISALIGNED(PIPE_RXCHANISALIGNED[3]), + .PIPE_RXPOLARITY(PIPE_RXPOLARITY[3]), + .PIPE_TXCOMPLIANCE(PIPE_TXCOMPLIANCE[3]), + .PIPE_TXDATA(PIPE_TXDATA[63:48]), + .PIPE_TXDATAK(PIPE_TXDATAK[7:6]), + .PIPE_TXELECIDLE(PIPE_TXELECIDLE[3]), + .QPLL_QPLLOUTCLK(\pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_1 ), + .QPLL_QPLLOUTREFCLK(\pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_2 ), + .QRST_CPLLLOCK(\pipe_lane[3].gt_wrapper_i_n_1 ), + .RATE_PHYSTATUS(gt_phystatus_3), + .RATE_RXRATEDONE(gt_rxratedone_3), + .RATE_TXRATEDONE(gt_txratedone_3), + .RST_CPLLRESET(rst_cpllreset), + .RXCHBONDO(\gt_rxchbondi[3]_0 ), + .RXRATE(rate_rate_9), + .RXSYSCLKSEL(rate_sysclksel_6), + .SYNC_TXDLYSRESET(sync_txdlysreset_3), + .SYNC_TXPHALIGN(sync_txphalign_3), + .SYNC_TXPHINIT(sync_txphinit_3), + .TXMAINCURSOR(eq_txeq_maincursor_21), + .TXPOSTCURSOR(eq_txeq_postcursor_15), + .TXPRECURSOR(eq_txeq_precursor_15), + .USER_OOBCLK(user_oobclk_3), + .USER_RXRESETDONE(gt_rxresetdone_3), + .USER_TXRESETDONE(gt_txresetdone_3), + .\cplllock_reg1_reg[3] (\pipe_lane[3].pipe_drp.pipe_drp_i_n_0 ), + .\cplllock_reg1_reg[3]_0 (\pipe_lane[3].pipe_drp.pipe_drp_i_n_1 ), + .\cplllock_reg1_reg[3]_1 (\gtx_channel.gtxe2_channel_i_i_6__2_n_0 ), + .\cplllock_reg1_reg[3]_2 (\cplllock_reg1_reg[3] ), + .cpllpd_2(cpllpd_2), + .gt_cpllpdrefclk(gt_cpllpdrefclk), + .gt_rx_data_k_wire_filter(gt_rx_data_k_wire_filter[7:6]), + .gt_rx_data_wire_filter(gt_rx_data_wire_filter[63:48]), + .gt_rx_elec_idle_wire_filter(gt_rx_elec_idle_wire_filter[3]), + .gt_rxcdrlock_3(gt_rxcdrlock_3), + .gt_rxvalid_3(gt_rxvalid_3), + .pci_exp_rxn(pci_exp_rxn[3]), + .pci_exp_rxp(pci_exp_rxp[3]), + .pci_exp_txn(pci_exp_txn[3]), + .pci_exp_txp(pci_exp_txp[3]), + .pipe_dclk_in(pipe_dclk_in), + .pipe_dclk_in_0(\pipe_lane[3].gt_wrapper_i_n_8 ), + .pipe_dclk_in_1(\pipe_lane[3].gt_wrapper_i_n_11 ), + .pipe_dclk_in_2(\pipe_lane[3].gt_wrapper_i_n_15 ), + .pipe_dclk_in_3(\pipe_lane[3].gt_wrapper_i_n_16 ), + .pipe_dclk_in_4(\pipe_lane[3].gt_wrapper_i_n_17 ), + .pipe_dclk_in_5(pipe_dclk_in_2), + .pipe_pclk_in(pipe_pclk_in), + .pipe_rxoutclk_out(pipe_rxoutclk_out[3]), + .pipe_rxusrclk_in(pipe_rxusrclk_in), + .pipe_tx_deemph_gt(pipe_tx_deemph_gt), + .pipe_tx_rcvr_det_gt(pipe_tx_rcvr_det_gt), + .rate_cpllreset_3(rate_cpllreset_3), + .rate_txpmareset_3(rate_txpmareset_3), + .rst_userrdy(rst_userrdy), + .rxchbonden_3(rxchbonden_3), + .sys_clk(sys_clk)); + pcie_7x_0_pcie_7x_0_pipe_drp_50 \pipe_lane[3].pipe_drp.pipe_drp_i + (.D({\pipe_lane[3].gt_wrapper_i_n_20 ,\pipe_lane[3].gt_wrapper_i_n_21 ,\pipe_lane[3].gt_wrapper_i_n_22 ,\pipe_lane[3].gt_wrapper_i_n_23 ,\pipe_lane[3].gt_wrapper_i_n_24 ,\pipe_lane[3].gt_wrapper_i_n_25 ,\pipe_lane[3].gt_wrapper_i_n_26 ,\pipe_lane[3].gt_wrapper_i_n_27 ,\pipe_lane[3].gt_wrapper_i_n_28 ,\pipe_lane[3].gt_wrapper_i_n_29 ,\pipe_lane[3].gt_wrapper_i_n_30 ,\pipe_lane[3].gt_wrapper_i_n_31 ,\pipe_lane[3].gt_wrapper_i_n_32 ,\pipe_lane[3].gt_wrapper_i_n_33 ,\pipe_lane[3].gt_wrapper_i_n_34 ,\pipe_lane[3].gt_wrapper_i_n_35 }), + .DRPADDR({\pipe_lane[3].pipe_drp.pipe_drp_i_n_2 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_3 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_4 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_5 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_6 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_7 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_8 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_9 }), + .DRPDI({\pipe_lane[3].pipe_drp.pipe_drp_i_n_10 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_11 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_12 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_13 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_14 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_15 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_16 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_17 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_18 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_19 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_20 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_21 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_22 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_23 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_24 ,\pipe_lane[3].pipe_drp.pipe_drp_i_n_25 }), + .DRP_DONE(drp_done_3), + .DRP_GTXRESET(rst_gtreset), + .DRP_RDY(\pipe_lane[3].gt_wrapper_i_n_2 ), + .RATE_DRP_START(rate_drp_start_3), + .RATE_DRP_X16(rate_drp_x16_3), + .RATE_DRP_X16X20_MODE(rate_drp_x16x20_mode_3), + .RST_DCLK_RESET(rst_dclk_reset), + .\fsm_reg[1]_0 (\pipe_lane[3].pipe_drp.pipe_drp_i_n_0 ), + .\fsm_reg[1]_1 (\pipe_lane[3].pipe_drp.pipe_drp_i_n_1 ), + .pipe_dclk_in(pipe_dclk_in), + .\rate_reg1_reg[0]_0 (\rate_reg1_reg[0] )); + pcie_7x_0_pcie_7x_0_pipe_eq_51 \pipe_lane[3].pipe_eq.pipe_eq_i + (.RST_CPLLRESET(rst_cpllreset), + .TXMAINCURSOR(eq_txeq_maincursor_21), + .TXPOSTCURSOR(eq_txeq_postcursor_15), + .TXPRECURSOR(eq_txeq_precursor_15), + .USER_RXEQ_ADAPT_DONE(\pipe_lane[3].pipe_eq.pipe_eq_i_n_17 ), + .pipe_pclk_in(pipe_pclk_in), + .rate_gen3_3(rate_gen3_3)); + pcie_7x_0_pcie_7x_0_pipe_rate_52 \pipe_lane[3].pipe_rate.pipe_rate_i + (.QPLL_QPLLLOCK(\pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_0 ), + .QRST_CPLLLOCK(\pipe_lane[3].gt_wrapper_i_n_1 ), + .QRST_QPLLPD_IN(rate_qpllpd[3]), + .QRST_QPLLRESET_IN(rate_qpllreset[3]), + .RATE_DRP_DONE(drp_done_3), + .RATE_DRP_START(rate_drp_start_3), + .RATE_DRP_X16(rate_drp_x16_3), + .RATE_DRP_X16X20_MODE(rate_drp_x16x20_mode_3), + .RATE_PHYSTATUS(gt_phystatus_3), + .RATE_RXRATEDONE(gt_rxratedone_3), + .RATE_TXRATEDONE(gt_txratedone_3), + .RATE_TXSYNC_DONE(sync_txsync_done_3), + .RST_CPLLRESET(rst_cpllreset), + .RST_IDLE(\pipe_reset.pipe_reset_i_n_1 ), + .RST_TXSYNC_START(rst_txsync_start), + .RXRATE(rate_rate_9), + .RXSYSCLKSEL(rate_sysclksel_6), + .SYNC_RATE_IDLE(rate_idle_3), + .SYNC_RXSYNC_START(rate_rxsync_start_3), + .SYNC_TXSYNC_START(SYNC_TXSYNC_START0), + .USER_RATE_DONE(rate_done_3), + .USER_RATE_RXSYNC(rate_rxsync_3), + .USER_RESETOVRD_START(rate_resetovrd_start_3), + .USER_RXRESETDONE(gt_rxresetdone_3), + .USER_TXRESETDONE(gt_txresetdone_3), + .\fsm[0]_i_9__2_0 (p_1_in2_in_5), + .out(p_0_in1_in_4), + .pipe_mmcm_lock_in(pipe_mmcm_lock_in), + .pipe_pclk_in(pipe_pclk_in), + .pipe_pclk_sel_out(pipe_pclk_sel_out[3]), + .rate_cpllpd_3(rate_cpllpd_3), + .rate_cpllreset_3(rate_cpllreset_3), + .rate_gen3_3(rate_gen3_3), + .\rate_in_reg1_reg[0]_0 (\rate_reg1_reg[0] ), + .rate_txpmareset_3(rate_txpmareset_3), + .rxchbonden_3(rxchbonden_3), + .user_active_lane_3(user_active_lane_3)); + pcie_7x_0_pcie_7x_0_pipe_sync_53 \pipe_lane[3].pipe_sync_i + (.\FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0 (p_0_in1_in_4), + .Q({sync_txphalign_3,sync_txphinit_3,sync_txdlysreset_3}), + .RST_CPLLRESET(rst_cpllreset), + .RST_TXSYNC_DONE(sync_txsync_done_3), + .SYNC_GEN3(rate_gen3_3), + .SYNC_RATE_IDLE(rate_idle_3), + .SYNC_RXCDRLOCK(user_rxcdrlock_3), + .SYNC_RXDLYSRESETDONE(rxdlysresetdone_3), + .SYNC_RXPHALIGNDONE_M(\pipe_lane[0].gt_wrapper_i_n_11 ), + .SYNC_RXPHALIGNDONE_S(rxphaligndone_s_3), + .SYNC_RXSYNC_START(rate_rxsync_start_3), + .SYNC_TXDLYSRESETDONE(txdlysresetdone_3), + .SYNC_TXPHALIGNDONE(txsyncallin), + .SYNC_TXPHINITDONE(\pipe_lane[0].pipe_user_i_n_5 ), + .SYNC_TXSYNC_START(SYNC_TXSYNC_START0), + .gt_rx_elec_idle_wire_filter(gt_rx_elec_idle_wire_filter[3]), + .out(p_1_in2_in_5), + .pipe_mmcm_lock_in(pipe_mmcm_lock_in), + .pipe_pclk_in(pipe_pclk_in), + .user_active_lane_3(user_active_lane_3)); + pcie_7x_0_pcie_7x_0_pipe_user_54 \pipe_lane[3].pipe_user_i + (.PIPE_TXCOMPLIANCE(PIPE_TXCOMPLIANCE[3]), + .PIPE_TXELECIDLE(PIPE_TXELECIDLE[3]), + .RST_CPLLRESET(rst_cpllreset), + .RST_IDLE(\pipe_reset.pipe_reset_i_n_1 ), + .RST_PHYSTATUS(gt_phystatus_3), + .RST_RESETDONE(user_resetdone[3]), + .RST_RXCDRLOCK(user_rxcdrlock_3), + .RST_RXUSRCLK_RESET(rst_rxusrclk_reset), + .USER_OOBCLK(user_oobclk_3), + .USER_RATE_DONE(rate_done_3), + .USER_RATE_IDLE(rate_idle_3), + .USER_RATE_RXSYNC(rate_rxsync_3), + .USER_RESETOVRD_START(rate_resetovrd_start_3), + .USER_RXEQ_ADAPT_DONE(\pipe_lane[3].pipe_eq.pipe_eq_i_n_17 ), + .USER_RXRESETDONE(gt_rxresetdone_3), + .USER_TXRESETDONE(gt_txresetdone_3), + .gt_rx_elec_idle_wire_filter(gt_rx_elec_idle_wire_filter[3]), + .gt_rx_phy_status_wire_filter(gt_rx_phy_status_wire_filter[3]), + .gt_rxcdrlock_3(gt_rxcdrlock_3), + .gt_rxvalid_3(gt_rxvalid_3), + .gt_rxvalid_q_reg(gt_rxvalid_q_reg_2), + .out(\pipe_lane[3].pipe_user_i_n_1 ), + .pipe_oobclk_in(pipe_oobclk_in), + .pipe_pclk_in(pipe_pclk_in), + .pipe_pclk_sel_out(pipe_pclk_sel_out[3]), + .pipe_rx3_valid_gt(pipe_rx3_valid_gt), + .pipe_rxusrclk_in(pipe_rxusrclk_in), + .rate_gen3_3(rate_gen3_3), + .rxstatus_reg1_reg_0(pipe_dclk_in_2[2]), + .txcompliance_reg2_reg_0(p_0_in1_in_4), + .txelecidle_reg2_reg_0(p_1_in2_in_5), + .user_active_lane_3(user_active_lane_3), + .user_rx_converge(user_rx_converge[3])); + pcie_7x_0_pcie_7x_0_pipe_reset \pipe_reset.pipe_reset_i + (.D(user_resetdone), + .DRP_GTXRESET(rst_gtreset), + .Q({\pipe_reset.pipe_reset_i_n_1 ,rst_txsync_start}), + .QRST_CPLLLOCK({\pipe_lane[3].gt_wrapper_i_n_1 ,\pipe_lane[2].gt_wrapper_i_n_1 ,\pipe_lane[1].gt_wrapper_i_n_1 ,\pipe_lane[0].gt_wrapper_i_n_1 }), + .QRST_IDLE(\qpll_reset.qpll_reset_i_n_0 ), + .RST_CPLLRESET(rst_cpllreset), + .RST_DCLK_RESET(rst_dclk_reset), + .RST_RXUSRCLK_RESET(rst_rxusrclk_reset), + .SS(\pipe_reset.pipe_reset_i_n_0 ), + .\drp_done_reg1_reg[3]_0 ({drp_done_3,drp_done_2,drp_done_1,drp_done_0}), + .out(reset_n_reg2), + .\phystatus_reg1_reg[3]_0 ({gt_phystatus_3,gt_phystatus_2,gt_phystatus_1,gt_phystatus_0}), + .pipe_dclk_in(pipe_dclk_in), + .pipe_mmcm_lock_in(pipe_mmcm_lock_in), + .pipe_pclk_in(pipe_pclk_in), + .pipe_rxusrclk_in(pipe_rxusrclk_in), + .\rate_idle_reg1_reg[3]_0 ({rate_idle_3,rate_idle_2,rate_idle_1,rate_idle_0}), + .rst_userrdy(rst_userrdy), + .\rxcdrlock_reg1_reg[3]_0 ({user_rxcdrlock_3,user_rxcdrlock_2,user_rxcdrlock_1,user_rxcdrlock_0}), + .\txsync_done_reg1_reg[3]_0 ({sync_txsync_done_3,sync_txsync_done_2,sync_txsync_done_1,sync_txsync_done_0})); + pcie_7x_0_pcie_7x_0_qpll_reset \qpll_reset.qpll_reset_i + (.D(rate_qpllpd), + .Q({\qpll_reset.qpll_reset_i_n_0 ,qrst_drp_start}), + .QPLL_QPLLLOCK(\pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_0 ), + .QPLL_QPLLPD(qpllpd), + .QPLL_QPLLRESET(qrst_qpllreset), + .QRST_DRP_DONE(qdrp_done), + .SS(\pipe_reset.pipe_reset_i_n_0 ), + .\cplllock_reg1_reg[3]_0 ({\pipe_lane[3].gt_wrapper_i_n_1 ,\pipe_lane[2].gt_wrapper_i_n_1 ,\pipe_lane[1].gt_wrapper_i_n_1 ,\pipe_lane[0].gt_wrapper_i_n_1 }), + .pipe_mmcm_lock_in(pipe_mmcm_lock_in), + .pipe_pclk_in(pipe_pclk_in), + .\qpllreset_in_reg1_reg[3]_0 (rate_qpllreset), + .\rate_reg1_reg[0]_0 (\rate_reg1_reg[0] )); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDCE reset_n_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .CLR(reset_n_reg1_reg_0), + .D(1'b1), + .Q(reset_n_reg1)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDCE reset_n_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .CLR(reset_n_reg1_reg_0), + .D(reset_n_reg1), + .Q(reset_n_reg2)); + LUT4 #( + .INIT(16'h8000)) + rxdlysresetdone_0 + (.I0(\pipe_lane[1].gt_wrapper_i_n_8 ), + .I1(\pipe_lane[0].gt_wrapper_i_n_8 ), + .I2(\pipe_lane[3].gt_wrapper_i_n_8 ), + .I3(\pipe_lane[2].gt_wrapper_i_n_8 ), + .O(rxdlysresetdone_3)); + LUT3 #( + .INIT(8'h80)) + rxphaligndone_s_0 + (.I0(\pipe_lane[1].gt_wrapper_i_n_11 ), + .I1(\pipe_lane[3].gt_wrapper_i_n_11 ), + .I2(\pipe_lane[2].gt_wrapper_i_n_11 ), + .O(rxphaligndone_s_3)); + LUT4 #( + .INIT(16'h8000)) + txdlysresetdone_0 + (.I0(\pipe_lane[1].gt_wrapper_i_n_15 ), + .I1(\pipe_lane[0].gt_wrapper_i_n_15 ), + .I2(\pipe_lane[3].gt_wrapper_i_n_15 ), + .I3(\pipe_lane[2].gt_wrapper_i_n_15 ), + .O(txdlysresetdone_3)); +endmodule + +module pcie_7x_0_pcie_7x_0_qpll_drp + (QPLL_DRP_DONE, + Q, + \di_reg[15]_0 , + qpll_drp_en, + qpll_drp_we, + RST_DCLK_RESET, + QRST_DRP_START, + pipe_dclk_in, + qpll_drp_rdy, + QPLL_QPLLLOCK, + QPLL_DRP_GEN3, + D); + output QPLL_DRP_DONE; + output [4:0]Q; + output [15:0]\di_reg[15]_0 ; + output qpll_drp_en; + output qpll_drp_we; + input RST_DCLK_RESET; + input QRST_DRP_START; + input pipe_dclk_in; + input qpll_drp_rdy; + input QPLL_QPLLLOCK; + input QPLL_DRP_GEN3; + input [15:0]D; + + wire [15:0]D; + wire [4:0]Q; + wire QPLL_DRP_DONE; + wire QPLL_DRP_GEN3; + wire QPLL_QPLLLOCK; + wire QRST_DRP_START; + wire RST_DCLK_RESET; + wire \addr[0]_i_1_n_0 ; + wire \addr[1]_i_1_n_0 ; + wire \addr[2]_i_1_n_0 ; + wire \addr[5]_i_1_n_0 ; + wire \addr[7]_i_1_n_0 ; + wire \crscode_reg_n_0_[0] ; + wire \crscode_reg_n_0_[1] ; + wire \crscode_reg_n_0_[2] ; + wire \crscode_reg_n_0_[3] ; + wire \crscode_reg_n_0_[4] ; + wire \crscode_reg_n_0_[5] ; + wire [15:0]di; + wire \di[11]_i_2_n_0 ; + wire \di[12]_i_2_n_0 ; + wire \di[13]_i_2_n_0 ; + wire \di[14]_i_2_n_0 ; + wire \di[15]_i_2_n_0 ; + wire [15:0]\di_reg[15]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [15:0]do_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [15:0]do_reg2; + wire done; + wire \fsm[0]_i_2__1_n_0 ; + wire \fsm[1]_i_2__0_n_0 ; + wire \fsm_inferred__1/i___0_n_0 ; + wire \fsm_inferred__1/i___1_n_0 ; + wire \fsm_inferred__1/i__n_0 ; + wire \fsm_reg_n_0_[0] ; + wire \fsm_reg_n_0_[1] ; + wire \fsm_reg_n_0_[2] ; + wire \fsm_reg_n_0_[3] ; + wire \fsm_reg_n_0_[4] ; + wire \fsm_reg_n_0_[5] ; + wire \fsm_reg_n_0_[6] ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gen3_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire gen3_reg2; + wire \gtx_common.gtxe2_common_i_i_3_n_0 ; + wire \gtx_common.gtxe2_common_i_i_4_n_0 ; + wire index; + wire \index[0]_i_1_n_0 ; + wire \index[1]_i_1_n_0 ; + wire \index[2]_i_1_n_0 ; + wire \index[2]_i_2_n_0 ; + wire \index[2]_i_4_n_0 ; + wire \index_reg_n_0_[0] ; + wire \index_reg_n_0_[1] ; + wire \index_reg_n_0_[2] ; + wire [1:0]load_cnt; + wire \load_cnt[0]_i_1__0_n_0 ; + wire \load_cnt[1]_i_1_n_0 ; + wire \load_cnt[1]_i_2_n_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire ovrd_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire ovrd_reg2; + wire [6:0]p_0_in__0; + wire p_1_in; + wire [5:0]p_2_in; + wire pipe_dclk_in; + wire qpll_drp_en; + wire qpll_drp_rdy; + wire qpll_drp_we; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire qplllock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire qplllock_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rdy_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire rdy_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire start_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire start_reg2; + + (* SOFT_HLUTNM = "soft_lutpair61" *) + LUT3 #( + .INIT(8'h12)) + \addr[0]_i_1 + (.I0(\index_reg_n_0_[1] ), + .I1(\index_reg_n_0_[0] ), + .I2(\index_reg_n_0_[2] ), + .O(\addr[0]_i_1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair67" *) + LUT3 #( + .INIT(8'h0D)) + \addr[1]_i_1 + (.I0(\index_reg_n_0_[2] ), + .I1(\index_reg_n_0_[0] ), + .I2(\index_reg_n_0_[1] ), + .O(\addr[1]_i_1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair67" *) + LUT3 #( + .INIT(8'h4D)) + \addr[2]_i_1 + (.I0(\index_reg_n_0_[1] ), + .I1(\index_reg_n_0_[2] ), + .I2(\index_reg_n_0_[0] ), + .O(\addr[2]_i_1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair68" *) + LUT2 #( + .INIT(4'h7)) + \addr[5]_i_1 + (.I0(\index_reg_n_0_[1] ), + .I1(\index_reg_n_0_[0] ), + .O(\addr[5]_i_1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair68" *) + LUT3 #( + .INIT(8'h08)) + \addr[7]_i_1 + (.I0(\index_reg_n_0_[1] ), + .I1(\index_reg_n_0_[0] ), + .I2(\index_reg_n_0_[2] ), + .O(\addr[7]_i_1_n_0 )); + FDRE #( + .INIT(1'b0)) + \addr_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\addr[0]_i_1_n_0 ), + .Q(Q[0]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\addr[1]_i_1_n_0 ), + .Q(Q[1]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\addr[2]_i_1_n_0 ), + .Q(Q[2]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg[5] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\addr[5]_i_1_n_0 ), + .Q(Q[3]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \addr_reg[7] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\addr[7]_i_1_n_0 ), + .Q(Q[4]), + .R(RST_DCLK_RESET)); + LUT2 #( + .INIT(4'h2)) + \crscode[0]_i_1 + (.I0(do_reg2[1]), + .I1(\index_reg_n_0_[2] ), + .O(p_2_in[0])); + LUT2 #( + .INIT(4'h2)) + \crscode[1]_i_1 + (.I0(do_reg2[2]), + .I1(\index_reg_n_0_[2] ), + .O(p_2_in[1])); + LUT2 #( + .INIT(4'h2)) + \crscode[2]_i_1 + (.I0(do_reg2[3]), + .I1(\index_reg_n_0_[2] ), + .O(p_2_in[2])); + LUT2 #( + .INIT(4'h2)) + \crscode[3]_i_1 + (.I0(do_reg2[4]), + .I1(\index_reg_n_0_[2] ), + .O(p_2_in[3])); + LUT2 #( + .INIT(4'h2)) + \crscode[4]_i_1 + (.I0(do_reg2[5]), + .I1(\index_reg_n_0_[2] ), + .O(p_2_in[4])); + LUT4 #( + .INIT(16'hC080)) + \crscode[5]_i_1 + (.I0(ovrd_reg2), + .I1(\index_reg_n_0_[0] ), + .I2(\index_reg_n_0_[1] ), + .I3(\index_reg_n_0_[2] ), + .O(p_1_in)); + LUT2 #( + .INIT(4'h2)) + \crscode[5]_i_2 + (.I0(do_reg2[6]), + .I1(\index_reg_n_0_[2] ), + .O(p_2_in[5])); + FDRE #( + .INIT(1'b0)) + \crscode_reg[0] + (.C(pipe_dclk_in), + .CE(p_1_in), + .D(p_2_in[0]), + .Q(\crscode_reg_n_0_[0] ), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \crscode_reg[1] + (.C(pipe_dclk_in), + .CE(p_1_in), + .D(p_2_in[1]), + .Q(\crscode_reg_n_0_[1] ), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \crscode_reg[2] + (.C(pipe_dclk_in), + .CE(p_1_in), + .D(p_2_in[2]), + .Q(\crscode_reg_n_0_[2] ), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \crscode_reg[3] + (.C(pipe_dclk_in), + .CE(p_1_in), + .D(p_2_in[3]), + .Q(\crscode_reg_n_0_[3] ), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \crscode_reg[4] + (.C(pipe_dclk_in), + .CE(p_1_in), + .D(p_2_in[4]), + .Q(\crscode_reg_n_0_[4] ), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \crscode_reg[5] + (.C(pipe_dclk_in), + .CE(p_1_in), + .D(p_2_in[5]), + .Q(\crscode_reg_n_0_[5] ), + .R(RST_DCLK_RESET)); + LUT4 #( + .INIT(16'h7E00)) + \di[0]_i_1 + (.I0(\index_reg_n_0_[0] ), + .I1(\index_reg_n_0_[2] ), + .I2(\index_reg_n_0_[1] ), + .I3(do_reg2[0]), + .O(di[0])); + LUT5 #( + .INIT(32'h0CC5CCCC)) + \di[10]_i_1 + (.I0(\crscode_reg_n_0_[0] ), + .I1(do_reg2[10]), + .I2(\index_reg_n_0_[1] ), + .I3(\index_reg_n_0_[0] ), + .I4(\index_reg_n_0_[2] ), + .O(di[10])); + LUT6 #( + .INIT(64'hAAAAAAAAAAAAEBAA)) + \di[11]_i_1 + (.I0(\di[11]_i_2_n_0 ), + .I1(\crscode_reg_n_0_[0] ), + .I2(\crscode_reg_n_0_[1] ), + .I3(\index_reg_n_0_[2] ), + .I4(\index_reg_n_0_[0] ), + .I5(\index_reg_n_0_[1] ), + .O(di[11])); + LUT5 #( + .INIT(32'h20FF2044)) + \di[11]_i_2 + (.I0(\index_reg_n_0_[0] ), + .I1(\index_reg_n_0_[1] ), + .I2(ovrd_reg2), + .I3(\index_reg_n_0_[2] ), + .I4(do_reg2[11]), + .O(\di[11]_i_2_n_0 )); + LUT6 #( + .INIT(64'h00AA0000AAAAC3AA)) + \di[12]_i_1 + (.I0(do_reg2[12]), + .I1(\di[12]_i_2_n_0 ), + .I2(\crscode_reg_n_0_[2] ), + .I3(\index_reg_n_0_[2] ), + .I4(\index_reg_n_0_[0] ), + .I5(\index_reg_n_0_[1] ), + .O(di[12])); + (* SOFT_HLUTNM = "soft_lutpair66" *) + LUT2 #( + .INIT(4'hE)) + \di[12]_i_2 + (.I0(\crscode_reg_n_0_[0] ), + .I1(\crscode_reg_n_0_[1] ), + .O(\di[12]_i_2_n_0 )); + LUT6 #( + .INIT(64'h00F0F099F0F0FFF0)) + \di[13]_i_1 + (.I0(\crscode_reg_n_0_[3] ), + .I1(\di[13]_i_2_n_0 ), + .I2(do_reg2[13]), + .I3(\index_reg_n_0_[1] ), + .I4(\index_reg_n_0_[0] ), + .I5(\index_reg_n_0_[2] ), + .O(di[13])); + (* SOFT_HLUTNM = "soft_lutpair66" *) + LUT3 #( + .INIT(8'hFE)) + \di[13]_i_2 + (.I0(\crscode_reg_n_0_[1] ), + .I1(\crscode_reg_n_0_[0] ), + .I2(\crscode_reg_n_0_[2] ), + .O(\di[13]_i_2_n_0 )); + LUT6 #( + .INIT(64'h00F0F099F0F0FFF0)) + \di[14]_i_1 + (.I0(\crscode_reg_n_0_[4] ), + .I1(\di[14]_i_2_n_0 ), + .I2(do_reg2[14]), + .I3(\index_reg_n_0_[1] ), + .I4(\index_reg_n_0_[0] ), + .I5(\index_reg_n_0_[2] ), + .O(di[14])); + (* SOFT_HLUTNM = "soft_lutpair64" *) + LUT4 #( + .INIT(16'hFFFE)) + \di[14]_i_2 + (.I0(\crscode_reg_n_0_[2] ), + .I1(\crscode_reg_n_0_[0] ), + .I2(\crscode_reg_n_0_[1] ), + .I3(\crscode_reg_n_0_[3] ), + .O(\di[14]_i_2_n_0 )); + LUT6 #( + .INIT(64'h0AACAAAA0AA3AAAA)) + \di[15]_i_1 + (.I0(do_reg2[15]), + .I1(\di[15]_i_2_n_0 ), + .I2(\index_reg_n_0_[1] ), + .I3(\index_reg_n_0_[0] ), + .I4(\index_reg_n_0_[2] ), + .I5(\crscode_reg_n_0_[5] ), + .O(di[15])); + (* SOFT_HLUTNM = "soft_lutpair64" *) + LUT5 #( + .INIT(32'hFFFFFFFE)) + \di[15]_i_2 + (.I0(\crscode_reg_n_0_[3] ), + .I1(\crscode_reg_n_0_[1] ), + .I2(\crscode_reg_n_0_[0] ), + .I3(\crscode_reg_n_0_[2] ), + .I4(\crscode_reg_n_0_[4] ), + .O(\di[15]_i_2_n_0 )); + LUT4 #( + .INIT(16'h7E00)) + \di[1]_i_1 + (.I0(\index_reg_n_0_[0] ), + .I1(\index_reg_n_0_[2] ), + .I2(\index_reg_n_0_[1] ), + .I3(do_reg2[1]), + .O(di[1])); + LUT4 #( + .INIT(16'h7E00)) + \di[2]_i_1 + (.I0(\index_reg_n_0_[0] ), + .I1(\index_reg_n_0_[2] ), + .I2(\index_reg_n_0_[1] ), + .I3(do_reg2[2]), + .O(di[2])); + LUT4 #( + .INIT(16'h7E00)) + \di[3]_i_1 + (.I0(\index_reg_n_0_[0] ), + .I1(\index_reg_n_0_[2] ), + .I2(\index_reg_n_0_[1] ), + .I3(do_reg2[3]), + .O(di[3])); + LUT4 #( + .INIT(16'h7E00)) + \di[4]_i_1 + (.I0(\index_reg_n_0_[0] ), + .I1(\index_reg_n_0_[2] ), + .I2(\index_reg_n_0_[1] ), + .I3(do_reg2[4]), + .O(di[4])); + LUT4 #( + .INIT(16'h2AAB)) + \di[5]_i_1 + (.I0(do_reg2[5]), + .I1(\index_reg_n_0_[1] ), + .I2(\index_reg_n_0_[0] ), + .I3(\index_reg_n_0_[2] ), + .O(di[5])); + LUT4 #( + .INIT(16'h2BA8)) + \di[6]_i_1 + (.I0(do_reg2[6]), + .I1(\index_reg_n_0_[1] ), + .I2(\index_reg_n_0_[2] ), + .I3(\index_reg_n_0_[0] ), + .O(di[6])); + LUT4 #( + .INIT(16'h7E00)) + \di[7]_i_1 + (.I0(\index_reg_n_0_[0] ), + .I1(\index_reg_n_0_[2] ), + .I2(\index_reg_n_0_[1] ), + .I3(do_reg2[7]), + .O(di[7])); + LUT4 #( + .INIT(16'h2AAB)) + \di[8]_i_1 + (.I0(do_reg2[8]), + .I1(\index_reg_n_0_[1] ), + .I2(\index_reg_n_0_[0] ), + .I3(\index_reg_n_0_[2] ), + .O(di[8])); + LUT4 #( + .INIT(16'h7E00)) + \di[9]_i_1 + (.I0(\index_reg_n_0_[0] ), + .I1(\index_reg_n_0_[2] ), + .I2(\index_reg_n_0_[1] ), + .I3(do_reg2[9]), + .O(di[9])); + FDRE #( + .INIT(1'b0)) + \di_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di[0]), + .Q(\di_reg[15]_0 [0]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg[10] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di[10]), + .Q(\di_reg[15]_0 [10]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg[11] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di[11]), + .Q(\di_reg[15]_0 [11]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg[12] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di[12]), + .Q(\di_reg[15]_0 [12]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg[13] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di[13]), + .Q(\di_reg[15]_0 [13]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg[14] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di[14]), + .Q(\di_reg[15]_0 [14]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg[15] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di[15]), + .Q(\di_reg[15]_0 [15]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di[1]), + .Q(\di_reg[15]_0 [1]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di[2]), + .Q(\di_reg[15]_0 [2]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg[3] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di[3]), + .Q(\di_reg[15]_0 [3]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg[4] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di[4]), + .Q(\di_reg[15]_0 [4]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg[5] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di[5]), + .Q(\di_reg[15]_0 [5]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg[6] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di[6]), + .Q(\di_reg[15]_0 [6]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg[7] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di[7]), + .Q(\di_reg[15]_0 [7]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg[8] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di[8]), + .Q(\di_reg[15]_0 [8]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \di_reg[9] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(di[9]), + .Q(\di_reg[15]_0 [9]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[0]), + .Q(do_reg1[0]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[10] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[10]), + .Q(do_reg1[10]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[11] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[11]), + .Q(do_reg1[11]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[12] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[12]), + .Q(do_reg1[12]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[13] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[13]), + .Q(do_reg1[13]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[14] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[14]), + .Q(do_reg1[14]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[15] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[15]), + .Q(do_reg1[15]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[1]), + .Q(do_reg1[1]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[2]), + .Q(do_reg1[2]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[3] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[3]), + .Q(do_reg1[3]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[4] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[4]), + .Q(do_reg1[4]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[5] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[5]), + .Q(do_reg1[5]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[6] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[6]), + .Q(do_reg1[6]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[7] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[7]), + .Q(do_reg1[7]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[8] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[8]), + .Q(do_reg1[8]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg1_reg[9] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(D[9]), + .Q(do_reg1[9]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[0]), + .Q(do_reg2[0]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[10] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[10]), + .Q(do_reg2[10]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[11] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[11]), + .Q(do_reg2[11]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[12] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[12]), + .Q(do_reg2[12]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[13] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[13]), + .Q(do_reg2[13]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[14] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[14]), + .Q(do_reg2[14]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[15] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[15]), + .Q(do_reg2[15]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[1]), + .Q(do_reg2[1]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[2]), + .Q(do_reg2[2]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[3] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[3]), + .Q(do_reg2[3]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[4] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[4]), + .Q(do_reg2[4]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[5] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[5]), + .Q(do_reg2[5]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[6] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[6]), + .Q(do_reg2[6]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[7] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[7]), + .Q(do_reg2[7]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[8] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[8]), + .Q(do_reg2[8]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \do_reg2_reg[9] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(do_reg1[9]), + .Q(do_reg2[9]), + .R(RST_DCLK_RESET)); + LUT6 #( + .INIT(64'h0000000000000010)) + done_i_1 + (.I0(\fsm_reg_n_0_[6] ), + .I1(start_reg2), + .I2(\fsm_reg_n_0_[0] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm_reg_n_0_[4] ), + .I5(\gtx_common.gtxe2_common_i_i_4_n_0 ), + .O(done)); + FDRE #( + .INIT(1'b0)) + done_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(done), + .Q(QPLL_DRP_DONE), + .R(RST_DCLK_RESET)); + LUT6 #( + .INIT(64'h5DFF5D5D5D5D5D5D)) + \fsm[0]_i_1__1 + (.I0(\fsm_inferred__1/i___1_n_0 ), + .I1(\fsm_reg_n_0_[0] ), + .I2(start_reg2), + .I3(\fsm[0]_i_2__1_n_0 ), + .I4(\index_reg_n_0_[1] ), + .I5(\fsm_reg_n_0_[6] ), + .O(p_0_in__0[0])); + LUT2 #( + .INIT(4'hB)) + \fsm[0]_i_2__1 + (.I0(\index_reg_n_0_[0] ), + .I1(\index_reg_n_0_[2] ), + .O(\fsm[0]_i_2__1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair59" *) + LUT5 #( + .INIT(32'hFFFF7000)) + \fsm[1]_i_1__1 + (.I0(load_cnt[0]), + .I1(load_cnt[1]), + .I2(\fsm_inferred__1/i___1_n_0 ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\fsm[1]_i_2__0_n_0 ), + .O(p_0_in__0[1])); + LUT6 #( + .INIT(64'hFF00B000B000B000)) + \fsm[1]_i_2__0 + (.I0(\fsm[0]_i_2__1_n_0 ), + .I1(\index_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[6] ), + .I3(\fsm_inferred__1/i___1_n_0 ), + .I4(\fsm_reg_n_0_[0] ), + .I5(start_reg2), + .O(\fsm[1]_i_2__0_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair59" *) + LUT4 #( + .INIT(16'h8000)) + \fsm[2]_i_1__0 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_inferred__1/i___1_n_0 ), + .I2(load_cnt[1]), + .I3(load_cnt[0]), + .O(p_0_in__0[2])); + LUT4 #( + .INIT(16'h88C8)) + \fsm[3]_i_1 + (.I0(\fsm_reg_n_0_[2] ), + .I1(\fsm_inferred__1/i___1_n_0 ), + .I2(\fsm_reg_n_0_[3] ), + .I3(rdy_reg2), + .O(p_0_in__0[3])); + LUT3 #( + .INIT(8'h80)) + \fsm[4]_i_1__0 + (.I0(rdy_reg2), + .I1(\fsm_reg_n_0_[3] ), + .I2(\fsm_inferred__1/i___1_n_0 ), + .O(p_0_in__0[4])); + LUT4 #( + .INIT(16'h88C8)) + \fsm[5]_i_1 + (.I0(\fsm_reg_n_0_[4] ), + .I1(\fsm_inferred__1/i___1_n_0 ), + .I2(\fsm_reg_n_0_[5] ), + .I3(rdy_reg2), + .O(p_0_in__0[5])); + LUT3 #( + .INIT(8'h80)) + \fsm[6]_i_1 + (.I0(rdy_reg2), + .I1(\fsm_reg_n_0_[5] ), + .I2(\fsm_inferred__1/i___1_n_0 ), + .O(p_0_in__0[6])); + (* SOFT_HLUTNM = "soft_lutpair65" *) + LUT4 #( + .INIT(16'h0116)) + \fsm_inferred__1/i_ + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[3] ), + .O(\fsm_inferred__1/i__n_0 )); + (* SOFT_HLUTNM = "soft_lutpair65" *) + LUT4 #( + .INIT(16'hFEE8)) + \fsm_inferred__1/i___0 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[1] ), + .I2(\fsm_reg_n_0_[2] ), + .I3(\fsm_reg_n_0_[3] ), + .O(\fsm_inferred__1/i___0_n_0 )); + LUT5 #( + .INIT(32'h00000116)) + \fsm_inferred__1/i___1 + (.I0(\fsm_reg_n_0_[4] ), + .I1(\fsm_reg_n_0_[5] ), + .I2(\fsm_reg_n_0_[6] ), + .I3(\fsm_inferred__1/i__n_0 ), + .I4(\fsm_inferred__1/i___0_n_0 ), + .O(\fsm_inferred__1/i___1_n_0 )); + (* FSM_ENCODED_STATES = "FSM_READ:000000100,FSM_QPLLRESET:010000000,FSM_LOAD:000000010,FSM_DONE:001000000,FSM_WRITE:000010000,FSM_IDLE:000000001,FSM_WRDY:000100000,FSM_RRDY:000001000,FSM_QPLLLOCK:100000000" *) + FDSE #( + .INIT(1'b1)) + \fsm_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(p_0_in__0[0]), + .Q(\fsm_reg_n_0_[0] ), + .S(RST_DCLK_RESET)); + (* FSM_ENCODED_STATES = "FSM_READ:000000100,FSM_QPLLRESET:010000000,FSM_LOAD:000000010,FSM_DONE:001000000,FSM_WRITE:000010000,FSM_IDLE:000000001,FSM_WRDY:000100000,FSM_RRDY:000001000,FSM_QPLLLOCK:100000000" *) + FDRE #( + .INIT(1'b0)) + \fsm_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(p_0_in__0[1]), + .Q(\fsm_reg_n_0_[1] ), + .R(RST_DCLK_RESET)); + (* FSM_ENCODED_STATES = "FSM_READ:000000100,FSM_QPLLRESET:010000000,FSM_LOAD:000000010,FSM_DONE:001000000,FSM_WRITE:000010000,FSM_IDLE:000000001,FSM_WRDY:000100000,FSM_RRDY:000001000,FSM_QPLLLOCK:100000000" *) + FDRE #( + .INIT(1'b0)) + \fsm_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(p_0_in__0[2]), + .Q(\fsm_reg_n_0_[2] ), + .R(RST_DCLK_RESET)); + (* FSM_ENCODED_STATES = "FSM_READ:000000100,FSM_QPLLRESET:010000000,FSM_LOAD:000000010,FSM_DONE:001000000,FSM_WRITE:000010000,FSM_IDLE:000000001,FSM_WRDY:000100000,FSM_RRDY:000001000,FSM_QPLLLOCK:100000000" *) + FDRE #( + .INIT(1'b0)) + \fsm_reg[3] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(p_0_in__0[3]), + .Q(\fsm_reg_n_0_[3] ), + .R(RST_DCLK_RESET)); + (* FSM_ENCODED_STATES = "FSM_READ:000000100,FSM_QPLLRESET:010000000,FSM_LOAD:000000010,FSM_DONE:001000000,FSM_WRITE:000010000,FSM_IDLE:000000001,FSM_WRDY:000100000,FSM_RRDY:000001000,FSM_QPLLLOCK:100000000" *) + FDRE #( + .INIT(1'b0)) + \fsm_reg[4] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(p_0_in__0[4]), + .Q(\fsm_reg_n_0_[4] ), + .R(RST_DCLK_RESET)); + (* FSM_ENCODED_STATES = "FSM_READ:000000100,FSM_QPLLRESET:010000000,FSM_LOAD:000000010,FSM_DONE:001000000,FSM_WRITE:000010000,FSM_IDLE:000000001,FSM_WRDY:000100000,FSM_RRDY:000001000,FSM_QPLLLOCK:100000000" *) + FDRE #( + .INIT(1'b0)) + \fsm_reg[5] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(p_0_in__0[5]), + .Q(\fsm_reg_n_0_[5] ), + .R(RST_DCLK_RESET)); + (* FSM_ENCODED_STATES = "FSM_READ:000000100,FSM_QPLLRESET:010000000,FSM_LOAD:000000010,FSM_DONE:001000000,FSM_WRITE:000010000,FSM_IDLE:000000001,FSM_WRDY:000100000,FSM_RRDY:000001000,FSM_QPLLLOCK:100000000" *) + FDRE #( + .INIT(1'b0)) + \fsm_reg[6] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(p_0_in__0[6]), + .Q(\fsm_reg_n_0_[6] ), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gen3_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(QPLL_DRP_GEN3), + .Q(gen3_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE gen3_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(gen3_reg1), + .Q(gen3_reg2), + .R(RST_DCLK_RESET)); + LUT6 #( + .INIT(64'h0000000000010100)) + \gtx_common.gtxe2_common_i_i_1 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[0] ), + .I2(\fsm_reg_n_0_[6] ), + .I3(\fsm_reg_n_0_[4] ), + .I4(\fsm_reg_n_0_[2] ), + .I5(\gtx_common.gtxe2_common_i_i_3_n_0 ), + .O(qpll_drp_en)); + (* SOFT_HLUTNM = "soft_lutpair58" *) + LUT5 #( + .INIT(32'h00000010)) + \gtx_common.gtxe2_common_i_i_2 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[6] ), + .I2(\fsm_reg_n_0_[4] ), + .I3(\fsm_reg_n_0_[1] ), + .I4(\gtx_common.gtxe2_common_i_i_4_n_0 ), + .O(qpll_drp_we)); + LUT2 #( + .INIT(4'hE)) + \gtx_common.gtxe2_common_i_i_3 + (.I0(\fsm_reg_n_0_[3] ), + .I1(\fsm_reg_n_0_[5] ), + .O(\gtx_common.gtxe2_common_i_i_3_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair63" *) + LUT3 #( + .INIT(8'hFE)) + \gtx_common.gtxe2_common_i_i_4 + (.I0(\fsm_reg_n_0_[5] ), + .I1(\fsm_reg_n_0_[3] ), + .I2(\fsm_reg_n_0_[2] ), + .O(\gtx_common.gtxe2_common_i_i_4_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair61" *) + LUT5 #( + .INIT(32'h00FF7000)) + \index[0]_i_1 + (.I0(\index_reg_n_0_[1] ), + .I1(\index_reg_n_0_[2] ), + .I2(\index[2]_i_2_n_0 ), + .I3(index), + .I4(\index_reg_n_0_[0] ), + .O(\index[0]_i_1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair60" *) + LUT5 #( + .INIT(32'h10FFC000)) + \index[1]_i_1 + (.I0(\index_reg_n_0_[2] ), + .I1(\index_reg_n_0_[0] ), + .I2(\index[2]_i_2_n_0 ), + .I3(index), + .I4(\index_reg_n_0_[1] ), + .O(\index[1]_i_1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair60" *) + LUT5 #( + .INIT(32'h22FF8000)) + \index[2]_i_1 + (.I0(\index[2]_i_2_n_0 ), + .I1(\index_reg_n_0_[1] ), + .I2(\index_reg_n_0_[0] ), + .I3(index), + .I4(\index_reg_n_0_[2] ), + .O(\index[2]_i_1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair58" *) + LUT5 #( + .INIT(32'h00000004)) + \index[2]_i_2 + (.I0(\fsm_reg_n_0_[1] ), + .I1(\fsm_reg_n_0_[6] ), + .I2(\fsm_reg_n_0_[0] ), + .I3(\gtx_common.gtxe2_common_i_i_4_n_0 ), + .I4(\fsm_reg_n_0_[4] ), + .O(\index[2]_i_2_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFEFFFEFEEB)) + \index[2]_i_3 + (.I0(\index[2]_i_4_n_0 ), + .I1(\fsm_reg_n_0_[5] ), + .I2(\fsm_reg_n_0_[3] ), + .I3(\fsm_reg_n_0_[2] ), + .I4(\fsm_reg_n_0_[1] ), + .I5(\fsm_reg_n_0_[4] ), + .O(index)); + LUT2 #( + .INIT(4'hE)) + \index[2]_i_4 + (.I0(\fsm_reg_n_0_[0] ), + .I1(\fsm_reg_n_0_[6] ), + .O(\index[2]_i_4_n_0 )); + FDRE #( + .INIT(1'b0)) + \index_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\index[0]_i_1_n_0 ), + .Q(\index_reg_n_0_[0] ), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \index_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\index[1]_i_1_n_0 ), + .Q(\index_reg_n_0_[1] ), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \index_reg[2] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\index[2]_i_1_n_0 ), + .Q(\index_reg_n_0_[2] ), + .R(RST_DCLK_RESET)); + (* SOFT_HLUTNM = "soft_lutpair62" *) + LUT5 #( + .INIT(32'h00B00000)) + \load_cnt[0]_i_1__0 + (.I0(load_cnt[1]), + .I1(load_cnt[0]), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[6] ), + .I4(\load_cnt[1]_i_2_n_0 ), + .O(\load_cnt[0]_i_1__0_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair62" *) + LUT5 #( + .INIT(32'h00E00000)) + \load_cnt[1]_i_1 + (.I0(load_cnt[0]), + .I1(load_cnt[1]), + .I2(\fsm_reg_n_0_[1] ), + .I3(\fsm_reg_n_0_[6] ), + .I4(\load_cnt[1]_i_2_n_0 ), + .O(\load_cnt[1]_i_1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair63" *) + LUT5 #( + .INIT(32'h00000001)) + \load_cnt[1]_i_2 + (.I0(\fsm_reg_n_0_[4] ), + .I1(\fsm_reg_n_0_[5] ), + .I2(\fsm_reg_n_0_[3] ), + .I3(\fsm_reg_n_0_[2] ), + .I4(\fsm_reg_n_0_[0] ), + .O(\load_cnt[1]_i_2_n_0 )); + FDRE #( + .INIT(1'b0)) + \load_cnt_reg[0] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\load_cnt[0]_i_1__0_n_0 ), + .Q(load_cnt[0]), + .R(RST_DCLK_RESET)); + FDRE #( + .INIT(1'b0)) + \load_cnt_reg[1] + (.C(pipe_dclk_in), + .CE(1'b1), + .D(\load_cnt[1]_i_1_n_0 ), + .Q(load_cnt[1]), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE ovrd_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(1'b0), + .Q(ovrd_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE ovrd_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(ovrd_reg1), + .Q(ovrd_reg2), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE qplllock_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(QPLL_QPLLLOCK), + .Q(qplllock_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE qplllock_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(qplllock_reg1), + .Q(qplllock_reg2), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rdy_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(qpll_drp_rdy), + .Q(rdy_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE rdy_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(rdy_reg1), + .Q(rdy_reg2), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE start_reg1_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(QRST_DRP_START), + .Q(start_reg1), + .R(RST_DCLK_RESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE start_reg2_reg + (.C(pipe_dclk_in), + .CE(1'b1), + .D(start_reg1), + .Q(start_reg2), + .R(RST_DCLK_RESET)); +endmodule + +module pcie_7x_0_pcie_7x_0_qpll_reset + (Q, + QPLL_QPLLRESET, + QPLL_QPLLPD, + SS, + pipe_pclk_in, + D, + \rate_reg1_reg[0]_0 , + QRST_DRP_DONE, + \qpllreset_in_reg1_reg[3]_0 , + QPLL_QPLLLOCK, + \cplllock_reg1_reg[3]_0 , + pipe_mmcm_lock_in); + output [1:0]Q; + output QPLL_QPLLRESET; + output QPLL_QPLLPD; + input [0:0]SS; + input pipe_pclk_in; + input [3:0]D; + input [0:0]\rate_reg1_reg[0]_0 ; + input [0:0]QRST_DRP_DONE; + input [3:0]\qpllreset_in_reg1_reg[3]_0 ; + input QPLL_QPLLLOCK; + input [3:0]\cplllock_reg1_reg[3]_0 ; + input pipe_mmcm_lock_in; + + wire [3:0]D; + wire \FSM_onehot_fsm[0]_i_1__0_n_0 ; + wire \FSM_onehot_fsm[1]_i_1__0_n_0 ; + wire \FSM_onehot_fsm[1]_i_2__0_n_0 ; + wire \FSM_onehot_fsm[2]_i_1__0_n_0 ; + wire \FSM_onehot_fsm[3]_i_1__0_n_0 ; + wire \FSM_onehot_fsm[4]_i_1__0_n_0 ; + wire \FSM_onehot_fsm[5]_i_1__0_n_0 ; + wire \FSM_onehot_fsm_reg_n_0_[0] ; + wire \FSM_onehot_fsm_reg_n_0_[1] ; + wire \FSM_onehot_fsm_reg_n_0_[3] ; + wire \FSM_onehot_fsm_reg_n_0_[4] ; + wire \FSM_onehot_fsm_reg_n_0_[5] ; + wire \FSM_onehot_fsm_reg_n_0_[6] ; + wire [1:0]Q; + wire QPLL_QPLLLOCK; + wire QPLL_QPLLPD; + wire QPLL_QPLLRESET; + wire [0:0]QRST_DRP_DONE; + wire [0:0]SS; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]cplllock_reg1; + wire [3:0]\cplllock_reg1_reg[3]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]cplllock_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire drp_done_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire drp_done_reg2; + wire fsm2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire mmcm_lock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire mmcm_lock_reg2; + wire pipe_mmcm_lock_in; + wire pipe_pclk_in; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire qplllock_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire qplllock_reg2; + wire qpllpd; + wire qpllpd_i_1_n_0; + wire qpllpd_i_2_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]qpllpd_in_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]qpllpd_in_reg2; + wire qpllreset_i_1_n_0; + wire qpllreset_i_2_n_0; + wire qpllreset_i_3_n_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]qpllreset_in_reg1; + wire [3:0]\qpllreset_in_reg1_reg[3]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]qpllreset_in_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rate_reg1; + wire [0:0]\rate_reg1_reg[0]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [1:0]rate_reg2; + + LUT6 #( + .INIT(64'hAAAAAAAAAAAAAAA8)) + \FSM_onehot_fsm[0]_i_1__0 + (.I0(\FSM_onehot_fsm_reg_n_0_[0] ), + .I1(qplllock_reg2), + .I2(cplllock_reg2[1]), + .I3(cplllock_reg2[0]), + .I4(cplllock_reg2[3]), + .I5(cplllock_reg2[2]), + .O(\FSM_onehot_fsm[0]_i_1__0_n_0 )); + LUT4 #( + .INIT(16'h8F88)) + \FSM_onehot_fsm[1]_i_1__0 + (.I0(\FSM_onehot_fsm[1]_i_2__0_n_0 ), + .I1(\FSM_onehot_fsm_reg_n_0_[0] ), + .I2(fsm2), + .I3(\FSM_onehot_fsm_reg_n_0_[1] ), + .O(\FSM_onehot_fsm[1]_i_1__0_n_0 )); + LUT5 #( + .INIT(32'h00000001)) + \FSM_onehot_fsm[1]_i_2__0 + (.I0(cplllock_reg2[2]), + .I1(cplllock_reg2[3]), + .I2(cplllock_reg2[0]), + .I3(cplllock_reg2[1]), + .I4(qplllock_reg2), + .O(\FSM_onehot_fsm[1]_i_2__0_n_0 )); + LUT4 #( + .INIT(16'hF888)) + \FSM_onehot_fsm[2]_i_1__0 + (.I0(fsm2), + .I1(\FSM_onehot_fsm_reg_n_0_[1] ), + .I2(drp_done_reg2), + .I3(Q[0]), + .O(\FSM_onehot_fsm[2]_i_1__0_n_0 )); + LUT5 #( + .INIT(32'h80000000)) + \FSM_onehot_fsm[2]_i_2__0 + (.I0(mmcm_lock_reg2), + .I1(cplllock_reg2[2]), + .I2(cplllock_reg2[3]), + .I3(cplllock_reg2[0]), + .I4(cplllock_reg2[1]), + .O(fsm2)); + LUT3 #( + .INIT(8'h32)) + \FSM_onehot_fsm[3]_i_1__0 + (.I0(Q[0]), + .I1(drp_done_reg2), + .I2(\FSM_onehot_fsm_reg_n_0_[3] ), + .O(\FSM_onehot_fsm[3]_i_1__0_n_0 )); + LUT4 #( + .INIT(16'h8F88)) + \FSM_onehot_fsm[4]_i_1__0 + (.I0(drp_done_reg2), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(qplllock_reg2), + .I3(\FSM_onehot_fsm_reg_n_0_[4] ), + .O(\FSM_onehot_fsm[4]_i_1__0_n_0 )); + LUT2 #( + .INIT(4'h8)) + \FSM_onehot_fsm[5]_i_1__0 + (.I0(\FSM_onehot_fsm_reg_n_0_[4] ), + .I1(qplllock_reg2), + .O(\FSM_onehot_fsm[5]_i_1__0_n_0 )); + LUT2 #( + .INIT(4'hE)) + \FSM_onehot_fsm[7]_i_1 + (.I0(\FSM_onehot_fsm_reg_n_0_[6] ), + .I1(Q[1]), + .O(qpllpd)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:00000010,FSM_DRP_START_NOM:00000100,FSM_WAIT_LOCK:00000001,FSM_QPLL_PD:01000000,FSM_QPLL_PDRESET:00100000,FSM_QPLLLOCK2:1010,FSM_IDLE:10000000,FSM_DRP_START_OPT:0111,FSM_QPLL_RESET:1001,FSM_QPLLLOCK:00010000,FSM_DRP_DONE_OPT:1000,FSM_DRP_DONE_NOM:00001000" *) + FDSE #( + .INIT(1'b1)) + \FSM_onehot_fsm_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[0]_i_1__0_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[0] ), + .S(SS)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:00000010,FSM_DRP_START_NOM:00000100,FSM_WAIT_LOCK:00000001,FSM_QPLL_PD:01000000,FSM_QPLL_PDRESET:00100000,FSM_QPLLLOCK2:1010,FSM_IDLE:10000000,FSM_DRP_START_OPT:0111,FSM_QPLL_RESET:1001,FSM_QPLLLOCK:00010000,FSM_DRP_DONE_OPT:1000,FSM_DRP_DONE_NOM:00001000" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[1]_i_1__0_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[1] ), + .R(SS)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:00000010,FSM_DRP_START_NOM:00000100,FSM_WAIT_LOCK:00000001,FSM_QPLL_PD:01000000,FSM_QPLL_PDRESET:00100000,FSM_QPLLLOCK2:1010,FSM_IDLE:10000000,FSM_DRP_START_OPT:0111,FSM_QPLL_RESET:1001,FSM_QPLLLOCK:00010000,FSM_DRP_DONE_OPT:1000,FSM_DRP_DONE_NOM:00001000" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[2]_i_1__0_n_0 ), + .Q(Q[0]), + .R(SS)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:00000010,FSM_DRP_START_NOM:00000100,FSM_WAIT_LOCK:00000001,FSM_QPLL_PD:01000000,FSM_QPLL_PDRESET:00100000,FSM_QPLLLOCK2:1010,FSM_IDLE:10000000,FSM_DRP_START_OPT:0111,FSM_QPLL_RESET:1001,FSM_QPLLLOCK:00010000,FSM_DRP_DONE_OPT:1000,FSM_DRP_DONE_NOM:00001000" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[3]_i_1__0_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[3] ), + .R(SS)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:00000010,FSM_DRP_START_NOM:00000100,FSM_WAIT_LOCK:00000001,FSM_QPLL_PD:01000000,FSM_QPLL_PDRESET:00100000,FSM_QPLLLOCK2:1010,FSM_IDLE:10000000,FSM_DRP_START_OPT:0111,FSM_QPLL_RESET:1001,FSM_QPLLLOCK:00010000,FSM_DRP_DONE_OPT:1000,FSM_DRP_DONE_NOM:00001000" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[4]_i_1__0_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[4] ), + .R(SS)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:00000010,FSM_DRP_START_NOM:00000100,FSM_WAIT_LOCK:00000001,FSM_QPLL_PD:01000000,FSM_QPLL_PDRESET:00100000,FSM_QPLLLOCK2:1010,FSM_IDLE:10000000,FSM_DRP_START_OPT:0111,FSM_QPLL_RESET:1001,FSM_QPLLLOCK:00010000,FSM_DRP_DONE_OPT:1000,FSM_DRP_DONE_NOM:00001000" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[5]_i_1__0_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[5] ), + .R(SS)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:00000010,FSM_DRP_START_NOM:00000100,FSM_WAIT_LOCK:00000001,FSM_QPLL_PD:01000000,FSM_QPLL_PDRESET:00100000,FSM_QPLLLOCK2:1010,FSM_IDLE:10000000,FSM_DRP_START_OPT:0111,FSM_QPLL_RESET:1001,FSM_QPLLLOCK:00010000,FSM_DRP_DONE_OPT:1000,FSM_DRP_DONE_NOM:00001000" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm_reg_n_0_[5] ), + .Q(\FSM_onehot_fsm_reg_n_0_[6] ), + .R(SS)); + (* FSM_ENCODED_STATES = "FSM_MMCM_LOCK:00000010,FSM_DRP_START_NOM:00000100,FSM_WAIT_LOCK:00000001,FSM_QPLL_PD:01000000,FSM_QPLL_PDRESET:00100000,FSM_QPLLLOCK2:1010,FSM_IDLE:10000000,FSM_DRP_START_OPT:0111,FSM_QPLL_RESET:1001,FSM_QPLLLOCK:00010000,FSM_DRP_DONE_OPT:1000,FSM_DRP_DONE_NOM:00001000" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qpllpd), + .Q(Q[1]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDSE \cplllock_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\cplllock_reg1_reg[3]_0 [0]), + .Q(cplllock_reg1[0]), + .S(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDSE \cplllock_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\cplllock_reg1_reg[3]_0 [1]), + .Q(cplllock_reg1[1]), + .S(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDSE \cplllock_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\cplllock_reg1_reg[3]_0 [2]), + .Q(cplllock_reg1[2]), + .S(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDSE \cplllock_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\cplllock_reg1_reg[3]_0 [3]), + .Q(cplllock_reg1[3]), + .S(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDSE \cplllock_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(cplllock_reg1[0]), + .Q(cplllock_reg2[0]), + .S(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDSE \cplllock_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(cplllock_reg1[1]), + .Q(cplllock_reg2[1]), + .S(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDSE \cplllock_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(cplllock_reg1[2]), + .Q(cplllock_reg2[2]), + .S(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDSE \cplllock_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(cplllock_reg1[3]), + .Q(cplllock_reg2[3]), + .S(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \drp_done_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(QRST_DRP_DONE), + .Q(drp_done_reg1), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \drp_done_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(drp_done_reg1), + .Q(drp_done_reg2), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE mmcm_lock_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(pipe_mmcm_lock_in), + .Q(mmcm_lock_reg1), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE mmcm_lock_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(mmcm_lock_reg1), + .Q(mmcm_lock_reg2), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \qplllock_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(QPLL_QPLLLOCK), + .Q(qplllock_reg1), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \qplllock_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qplllock_reg1), + .Q(qplllock_reg2), + .R(SS)); + LUT6 #( + .INIT(64'hFBF0FBFFFBF0FB00)) + qpllpd_i_1 + (.I0(rate_reg2[0]), + .I1(rate_reg2[1]), + .I2(qpllpd_i_2_n_0), + .I3(\FSM_onehot_fsm_reg_n_0_[6] ), + .I4(Q[1]), + .I5(QPLL_QPLLPD), + .O(qpllpd_i_1_n_0)); + LUT5 #( + .INIT(32'h80000000)) + qpllpd_i_2 + (.I0(Q[1]), + .I1(qpllpd_in_reg2[2]), + .I2(qpllpd_in_reg2[3]), + .I3(qpllpd_in_reg2[0]), + .I4(qpllpd_in_reg2[1]), + .O(qpllpd_i_2_n_0)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \qpllpd_in_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(D[0]), + .Q(qpllpd_in_reg1[0]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \qpllpd_in_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(D[1]), + .Q(qpllpd_in_reg1[1]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \qpllpd_in_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(D[2]), + .Q(qpllpd_in_reg1[2]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \qpllpd_in_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(D[3]), + .Q(qpllpd_in_reg1[3]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \qpllpd_in_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qpllpd_in_reg1[0]), + .Q(qpllpd_in_reg2[0]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \qpllpd_in_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qpllpd_in_reg1[1]), + .Q(qpllpd_in_reg2[1]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \qpllpd_in_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qpllpd_in_reg1[2]), + .Q(qpllpd_in_reg2[2]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \qpllpd_in_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qpllpd_in_reg1[3]), + .Q(qpllpd_in_reg2[3]), + .R(SS)); + FDRE #( + .INIT(1'b0)) + qpllpd_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qpllpd_i_1_n_0), + .Q(QPLL_QPLLPD), + .R(SS)); + LUT6 #( + .INIT(64'hECECECEFECECECE0)) + qpllreset_i_1 + (.I0(qpllreset_i_2_n_0), + .I1(qpllreset_i_3_n_0), + .I2(\FSM_onehot_fsm_reg_n_0_[5] ), + .I3(\FSM_onehot_fsm_reg_n_0_[4] ), + .I4(Q[1]), + .I5(QPLL_QPLLRESET), + .O(qpllreset_i_1_n_0)); + LUT2 #( + .INIT(4'hB)) + qpllreset_i_2 + (.I0(rate_reg2[0]), + .I1(rate_reg2[1]), + .O(qpllreset_i_2_n_0)); + LUT5 #( + .INIT(32'h80000000)) + qpllreset_i_3 + (.I0(Q[1]), + .I1(qpllreset_in_reg2[2]), + .I2(qpllreset_in_reg2[3]), + .I3(qpllreset_in_reg2[0]), + .I4(qpllreset_in_reg2[1]), + .O(qpllreset_i_3_n_0)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDSE \qpllreset_in_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\qpllreset_in_reg1_reg[3]_0 [0]), + .Q(qpllreset_in_reg1[0]), + .S(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDSE \qpllreset_in_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\qpllreset_in_reg1_reg[3]_0 [1]), + .Q(qpllreset_in_reg1[1]), + .S(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDSE \qpllreset_in_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\qpllreset_in_reg1_reg[3]_0 [2]), + .Q(qpllreset_in_reg1[2]), + .S(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDSE \qpllreset_in_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\qpllreset_in_reg1_reg[3]_0 [3]), + .Q(qpllreset_in_reg1[3]), + .S(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDSE \qpllreset_in_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qpllreset_in_reg1[0]), + .Q(qpllreset_in_reg2[0]), + .S(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDSE \qpllreset_in_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qpllreset_in_reg1[1]), + .Q(qpllreset_in_reg2[1]), + .S(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDSE \qpllreset_in_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qpllreset_in_reg1[2]), + .Q(qpllreset_in_reg2[2]), + .S(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDSE \qpllreset_in_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qpllreset_in_reg1[3]), + .Q(qpllreset_in_reg2[3]), + .S(SS)); + FDSE #( + .INIT(1'b1)) + qpllreset_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(qpllreset_i_1_n_0), + .Q(QPLL_QPLLRESET), + .S(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\rate_reg1_reg[0]_0 ), + .Q(rate_reg1[0]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(1'b0), + .Q(rate_reg1[1]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rate_reg1[0]), + .Q(rate_reg2[0]), + .R(SS)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \rate_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rate_reg1[1]), + .Q(rate_reg2[1]), + .R(SS)); +endmodule + +module pcie_7x_0_pcie_7x_0_qpll_wrapper + (qpll_drp_rdy, + QPLL_QPLLLOCK, + QPLL_QPLLOUTCLK, + QPLL_QPLLOUTREFCLK, + D, + pipe_dclk_in, + qpll_drp_en, + qpll_drp_we, + sys_clk, + QPLL_QPLLPD, + QPLL_QPLLRESET, + rdy_reg1_reg, + Q); + output qpll_drp_rdy; + output QPLL_QPLLLOCK; + output QPLL_QPLLOUTCLK; + output QPLL_QPLLOUTREFCLK; + output [15:0]D; + input pipe_dclk_in; + input qpll_drp_en; + input qpll_drp_we; + input sys_clk; + input QPLL_QPLLPD; + input QPLL_QPLLRESET; + input [15:0]rdy_reg1_reg; + input [4:0]Q; + + wire [15:0]D; + wire [4:0]Q; + wire QPLL_QPLLLOCK; + wire QPLL_QPLLOUTCLK; + wire QPLL_QPLLOUTREFCLK; + wire QPLL_QPLLPD; + wire QPLL_QPLLRESET; + wire pipe_dclk_in; + wire qpll_drp_en; + wire qpll_drp_rdy; + wire qpll_drp_we; + wire [15:0]rdy_reg1_reg; + wire sys_clk; + wire \NLW_gtx_common.gtxe2_common_i_QPLLFBCLKLOST_UNCONNECTED ; + wire \NLW_gtx_common.gtxe2_common_i_QPLLREFCLKLOST_UNCONNECTED ; + wire \NLW_gtx_common.gtxe2_common_i_REFCLKOUTMONITOR_UNCONNECTED ; + wire [7:0]\NLW_gtx_common.gtxe2_common_i_QPLLDMONITOR_UNCONNECTED ; + + (* BOX_TYPE = "PRIMITIVE" *) + GTXE2_COMMON #( + .BIAS_CFG(64'h0000040000001000), + .COMMON_CFG(32'h00000000), + .IS_DRPCLK_INVERTED(1'b0), + .IS_GTGREFCLK_INVERTED(1'b0), + .IS_QPLLLOCKDETCLK_INVERTED(1'b0), + .QPLL_CFG(27'h06801C1), + .QPLL_CLKOUT_CFG(4'b0000), + .QPLL_COARSE_FREQ_OVRD(6'b010000), + .QPLL_COARSE_FREQ_OVRD_EN(1'b0), + .QPLL_CP(10'b0000011111), + .QPLL_CP_MONITOR_EN(1'b0), + .QPLL_DMONITOR_SEL(1'b0), + .QPLL_FBDIV(10'b0100100000), + .QPLL_FBDIV_MONITOR_EN(1'b0), + .QPLL_FBDIV_RATIO(1'b1), + .QPLL_INIT_CFG(24'h000006), + .QPLL_LOCK_CFG(16'h21E8), + .QPLL_LPF(4'b1101), + .QPLL_REFCLK_DIV(1), + .SIM_QPLLREFCLK_SEL(3'b001), + .SIM_RESET_SPEEDUP("FALSE"), + .SIM_VERSION("3.0")) + \gtx_common.gtxe2_common_i + (.BGBYPASSB(1'b1), + .BGMONITORENB(1'b1), + .BGPDB(1'b1), + .BGRCALOVRD({1'b1,1'b1,1'b1,1'b1,1'b1}), + .DRPADDR({Q[4],1'b0,Q[3],Q[3],Q[4],Q[2:0]}), + .DRPCLK(pipe_dclk_in), + .DRPDI(rdy_reg1_reg), + .DRPDO(D), + .DRPEN(qpll_drp_en), + .DRPRDY(qpll_drp_rdy), + .DRPWE(qpll_drp_we), + .GTGREFCLK(1'b0), + .GTNORTHREFCLK0(1'b0), + .GTNORTHREFCLK1(1'b0), + .GTREFCLK0(sys_clk), + .GTREFCLK1(1'b0), + .GTSOUTHREFCLK0(1'b0), + .GTSOUTHREFCLK1(1'b0), + .PMARSVD({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .QPLLDMONITOR(\NLW_gtx_common.gtxe2_common_i_QPLLDMONITOR_UNCONNECTED [7:0]), + .QPLLFBCLKLOST(\NLW_gtx_common.gtxe2_common_i_QPLLFBCLKLOST_UNCONNECTED ), + .QPLLLOCK(QPLL_QPLLLOCK), + .QPLLLOCKDETCLK(1'b0), + .QPLLLOCKEN(1'b1), + .QPLLOUTCLK(QPLL_QPLLOUTCLK), + .QPLLOUTREFCLK(QPLL_QPLLOUTREFCLK), + .QPLLOUTRESET(1'b0), + .QPLLPD(QPLL_QPLLPD), + .QPLLREFCLKLOST(\NLW_gtx_common.gtxe2_common_i_QPLLREFCLKLOST_UNCONNECTED ), + .QPLLREFCLKSEL({1'b0,1'b0,1'b1}), + .QPLLRESET(QPLL_QPLLRESET), + .QPLLRSVD1({1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0}), + .QPLLRSVD2({1'b1,1'b1,1'b1,1'b1,1'b1}), + .RCALENB(1'b1), + .REFCLKOUTMONITOR(\NLW_gtx_common.gtxe2_common_i_REFCLKOUTMONITOR_UNCONNECTED )); +endmodule + +module pcie_7x_0_pcie_7x_0_rxeq_scan + (D, + rxeq_new_txcoeff_req, + adapt_done_reg_0, + new_txcoeff_done_reg_0, + RST_CPLLRESET, + pipe_pclk_in, + new_txcoeff_req_reg1_reg_0, + rxeq_preset_valid, + out, + Q, + \FSM_onehot_fsm_rx_reg[5] , + rxeq_adapt_done_reg_reg, + rxeq_adapt_done_reg_reg_0, + rxeq_adapt_done_reg_reg_1, + rxeq_adapt_done_reg, + USER_RXEQ_ADAPT_DONE, + \preset_reg1_reg[2]_0 , + \txpreset_reg1_reg[3]_0 , + \txcoeff_reg1_reg[17]_0 , + \fs_reg1_reg[5]_0 , + \lf_reg1_reg[5]_0 ); + output [2:0]D; + output rxeq_new_txcoeff_req; + output adapt_done_reg_0; + output new_txcoeff_done_reg_0; + input RST_CPLLRESET; + input pipe_pclk_in; + input new_txcoeff_req_reg1_reg_0; + input rxeq_preset_valid; + input [1:0]out; + input [4:0]Q; + input [2:0]\FSM_onehot_fsm_rx_reg[5] ; + input rxeq_adapt_done_reg_reg; + input rxeq_adapt_done_reg_reg_0; + input rxeq_adapt_done_reg_reg_1; + input rxeq_adapt_done_reg; + input USER_RXEQ_ADAPT_DONE; + input [2:0]\preset_reg1_reg[2]_0 ; + input [3:0]\txpreset_reg1_reg[3]_0 ; + input [17:0]\txcoeff_reg1_reg[17]_0 ; + input [5:0]\fs_reg1_reg[5]_0 ; + input [5:0]\lf_reg1_reg[5]_0 ; + + wire [2:0]D; + wire \FSM_onehot_fsm[1]_i_1__4_n_0 ; + wire \FSM_onehot_fsm[2]_i_1__4_n_0 ; + wire \FSM_onehot_fsm[3]_i_1__4_n_0 ; + wire \FSM_onehot_fsm[3]_i_2__2_n_0 ; + wire \FSM_onehot_fsm[4]_i_10__2_n_0 ; + wire \FSM_onehot_fsm[4]_i_11__2_n_0 ; + wire \FSM_onehot_fsm[4]_i_12__2_n_0 ; + wire \FSM_onehot_fsm[4]_i_13__2_n_0 ; + wire \FSM_onehot_fsm[4]_i_1__4_n_0 ; + wire \FSM_onehot_fsm[4]_i_2__3_n_0 ; + wire \FSM_onehot_fsm[4]_i_3__2_n_0 ; + wire \FSM_onehot_fsm[4]_i_4__2_n_0 ; + wire \FSM_onehot_fsm[4]_i_5__2_n_0 ; + wire \FSM_onehot_fsm[4]_i_6__2_n_0 ; + wire \FSM_onehot_fsm[4]_i_7__2_n_0 ; + wire \FSM_onehot_fsm[4]_i_8__2_n_0 ; + wire \FSM_onehot_fsm[4]_i_9__2_n_0 ; + wire \FSM_onehot_fsm_reg_n_0_[1] ; + wire \FSM_onehot_fsm_reg_n_0_[2] ; + wire \FSM_onehot_fsm_reg_n_0_[3] ; + wire \FSM_onehot_fsm_reg_n_0_[4] ; + wire \FSM_onehot_fsm_rx[6]_i_2__2_n_0 ; + wire [2:0]\FSM_onehot_fsm_rx_reg[5] ; + wire [4:0]Q; + wire RST_CPLLRESET; + wire USER_RXEQ_ADAPT_DONE; + wire adapt_done; + wire adapt_done_cnt_i_1__2_n_0; + wire adapt_done_cnt_i_2__2_n_0; + wire adapt_done_cnt_reg_n_0; + wire adapt_done_reg_0; + wire [21:0]converge_cnt; + wire [21:1]converge_cnt0; + wire [21:0]converge_cnt_0; + wire \converge_cnt_reg[12]_i_2__2_n_0 ; + wire \converge_cnt_reg[12]_i_2__2_n_1 ; + wire \converge_cnt_reg[12]_i_2__2_n_2 ; + wire \converge_cnt_reg[12]_i_2__2_n_3 ; + wire \converge_cnt_reg[16]_i_2__2_n_0 ; + wire \converge_cnt_reg[16]_i_2__2_n_1 ; + wire \converge_cnt_reg[16]_i_2__2_n_2 ; + wire \converge_cnt_reg[16]_i_2__2_n_3 ; + wire \converge_cnt_reg[20]_i_2__2_n_0 ; + wire \converge_cnt_reg[20]_i_2__2_n_1 ; + wire \converge_cnt_reg[20]_i_2__2_n_2 ; + wire \converge_cnt_reg[20]_i_2__2_n_3 ; + wire \converge_cnt_reg[4]_i_2__2_n_0 ; + wire \converge_cnt_reg[4]_i_2__2_n_1 ; + wire \converge_cnt_reg[4]_i_2__2_n_2 ; + wire \converge_cnt_reg[4]_i_2__2_n_3 ; + wire \converge_cnt_reg[8]_i_2__2_n_0 ; + wire \converge_cnt_reg[8]_i_2__2_n_1 ; + wire \converge_cnt_reg[8]_i_2__2_n_2 ; + wire \converge_cnt_reg[8]_i_2__2_n_3 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]fs_reg1; + wire [5:0]\fs_reg1_reg[5]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]fs_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]lf_reg1; + wire [5:0]\lf_reg1_reg[5]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]lf_reg2; + wire new_txcoeff_done; + wire new_txcoeff_done_reg_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire new_txcoeff_req_reg1; + wire new_txcoeff_req_reg1_reg_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire new_txcoeff_req_reg2; + wire [1:0]out; + wire pipe_pclk_in; + wire preset_done; + wire preset_done_1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [2:0]preset_reg1; + wire [2:0]\preset_reg1_reg[2]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [2:0]preset_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire preset_valid_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire preset_valid_reg2; + wire rxeq_adapt_done_reg; + wire rxeq_adapt_done_reg_reg; + wire rxeq_adapt_done_reg_reg_0; + wire rxeq_adapt_done_reg_reg_1; + wire rxeq_new_txcoeff_req; + wire rxeq_preset_valid; + wire rxeqscan_adapt_done; + wire rxeqscan_new_txcoeff_done; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [17:0]txcoeff_reg1; + wire [17:0]\txcoeff_reg1_reg[17]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [17:0]txcoeff_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]txpreset_reg1; + wire [3:0]\txpreset_reg1_reg[3]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]txpreset_reg2; + wire [3:0]\NLW_converge_cnt_reg[21]_i_2__2_CO_UNCONNECTED ; + wire [3:1]\NLW_converge_cnt_reg[21]_i_2__2_O_UNCONNECTED ; + + LUT6 #( + .INIT(64'h0F00AFAF0F11AFBB)) + \FSM_onehot_fsm[1]_i_1__4 + (.I0(\FSM_onehot_fsm_reg_n_0_[4] ), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(preset_valid_reg2), + .I3(\FSM_onehot_fsm_reg_n_0_[2] ), + .I4(new_txcoeff_req_reg2), + .I5(\FSM_onehot_fsm_reg_n_0_[1] ), + .O(\FSM_onehot_fsm[1]_i_1__4_n_0 )); + LUT3 #( + .INIT(8'hA8)) + \FSM_onehot_fsm[2]_i_1__4 + (.I0(preset_valid_reg2), + .I1(\FSM_onehot_fsm_reg_n_0_[2] ), + .I2(\FSM_onehot_fsm_reg_n_0_[1] ), + .O(\FSM_onehot_fsm[2]_i_1__4_n_0 )); + LUT6 #( + .INIT(64'h04FF040404040404)) + \FSM_onehot_fsm[3]_i_1__4 + (.I0(\FSM_onehot_fsm[3]_i_2__2_n_0 ), + .I1(\FSM_onehot_fsm[4]_i_2__3_n_0 ), + .I2(\FSM_onehot_fsm[4]_i_3__2_n_0 ), + .I3(preset_valid_reg2), + .I4(new_txcoeff_req_reg2), + .I5(\FSM_onehot_fsm_reg_n_0_[1] ), + .O(\FSM_onehot_fsm[3]_i_1__4_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair181" *) + LUT4 #( + .INIT(16'h04FF)) + \FSM_onehot_fsm[3]_i_2__2 + (.I0(out[0]), + .I1(out[1]), + .I2(adapt_done_cnt_reg_n_0), + .I3(\FSM_onehot_fsm_reg_n_0_[3] ), + .O(\FSM_onehot_fsm[3]_i_2__2_n_0 )); + LUT5 #( + .INIT(32'hFFBFFFFF)) + \FSM_onehot_fsm[4]_i_10__2 + (.I0(\FSM_onehot_fsm[4]_i_13__2_n_0 ), + .I1(converge_cnt[2]), + .I2(converge_cnt[20]), + .I3(converge_cnt[10]), + .I4(converge_cnt[0]), + .O(\FSM_onehot_fsm[4]_i_10__2_n_0 )); + LUT4 #( + .INIT(16'hEFFF)) + \FSM_onehot_fsm[4]_i_11__2 + (.I0(converge_cnt[2]), + .I1(converge_cnt[6]), + .I2(converge_cnt[8]), + .I3(converge_cnt[3]), + .O(\FSM_onehot_fsm[4]_i_11__2_n_0 )); + LUT5 #( + .INIT(32'hEFFFFFFF)) + \FSM_onehot_fsm[4]_i_12__2 + (.I0(\FSM_onehot_fsm[4]_i_13__2_n_0 ), + .I1(converge_cnt[14]), + .I2(converge_cnt[10]), + .I3(converge_cnt[21]), + .I4(converge_cnt[19]), + .O(\FSM_onehot_fsm[4]_i_12__2_n_0 )); + LUT4 #( + .INIT(16'hFF7F)) + \FSM_onehot_fsm[4]_i_13__2 + (.I0(converge_cnt[16]), + .I1(converge_cnt[11]), + .I2(converge_cnt[9]), + .I3(converge_cnt[5]), + .O(\FSM_onehot_fsm[4]_i_13__2_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFD0FFD0FFD0)) + \FSM_onehot_fsm[4]_i_1__4 + (.I0(\FSM_onehot_fsm[4]_i_2__3_n_0 ), + .I1(\FSM_onehot_fsm[4]_i_3__2_n_0 ), + .I2(\FSM_onehot_fsm_reg_n_0_[3] ), + .I3(\FSM_onehot_fsm[4]_i_4__2_n_0 ), + .I4(\FSM_onehot_fsm_reg_n_0_[4] ), + .I5(new_txcoeff_req_reg2), + .O(\FSM_onehot_fsm[4]_i_1__4_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFFFFFFFBF)) + \FSM_onehot_fsm[4]_i_2__3 + (.I0(\FSM_onehot_fsm[4]_i_5__2_n_0 ), + .I1(converge_cnt[17]), + .I2(converge_cnt[18]), + .I3(converge_cnt[21]), + .I4(converge_cnt[8]), + .I5(\FSM_onehot_fsm[4]_i_6__2_n_0 ), + .O(\FSM_onehot_fsm[4]_i_2__3_n_0 )); + LUT6 #( + .INIT(64'h0000000001000000)) + \FSM_onehot_fsm[4]_i_3__2 + (.I0(\FSM_onehot_fsm[4]_i_7__2_n_0 ), + .I1(converge_cnt[7]), + .I2(converge_cnt[1]), + .I3(converge_cnt[15]), + .I4(converge_cnt[13]), + .I5(\FSM_onehot_fsm[4]_i_8__2_n_0 ), + .O(\FSM_onehot_fsm[4]_i_3__2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair180" *) + LUT4 #( + .INIT(16'h0400)) + \FSM_onehot_fsm[4]_i_4__2 + (.I0(out[0]), + .I1(out[1]), + .I2(adapt_done_cnt_reg_n_0), + .I3(\FSM_onehot_fsm_reg_n_0_[3] ), + .O(\FSM_onehot_fsm[4]_i_4__2_n_0 )); + LUT4 #( + .INIT(16'hFFF2)) + \FSM_onehot_fsm[4]_i_5__2 + (.I0(out[1]), + .I1(out[0]), + .I2(converge_cnt[7]), + .I3(converge_cnt[1]), + .O(\FSM_onehot_fsm[4]_i_5__2_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFFFFFFFFB)) + \FSM_onehot_fsm[4]_i_6__2 + (.I0(\FSM_onehot_fsm[4]_i_9__2_n_0 ), + .I1(converge_cnt[19]), + .I2(converge_cnt[6]), + .I3(converge_cnt[3]), + .I4(converge_cnt[4]), + .I5(\FSM_onehot_fsm[4]_i_10__2_n_0 ), + .O(\FSM_onehot_fsm[4]_i_6__2_n_0 )); + LUT4 #( + .INIT(16'hDFFF)) + \FSM_onehot_fsm[4]_i_7__2 + (.I0(out[1]), + .I1(out[0]), + .I2(converge_cnt[17]), + .I3(converge_cnt[18]), + .O(\FSM_onehot_fsm[4]_i_7__2_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFFFFFFFFE)) + \FSM_onehot_fsm[4]_i_8__2 + (.I0(\FSM_onehot_fsm[4]_i_11__2_n_0 ), + .I1(converge_cnt[12]), + .I2(converge_cnt[20]), + .I3(converge_cnt[0]), + .I4(converge_cnt[4]), + .I5(\FSM_onehot_fsm[4]_i_12__2_n_0 ), + .O(\FSM_onehot_fsm[4]_i_8__2_n_0 )); + LUT4 #( + .INIT(16'hFFDF)) + \FSM_onehot_fsm[4]_i_9__2 + (.I0(converge_cnt[15]), + .I1(converge_cnt[13]), + .I2(converge_cnt[14]), + .I3(converge_cnt[12]), + .O(\FSM_onehot_fsm[4]_i_9__2_n_0 )); + (* FSM_ENCODED_STATES = "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001" *) + FDSE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[1]_i_1__4_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[1] ), + .S(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[2]_i_1__4_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[3]_i_1__4_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[4]_i_1__4_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h40FF4040)) + \FSM_onehot_fsm_rx[2]_i_1__2 + (.I0(out[1]), + .I1(Q[0]), + .I2(out[0]), + .I3(preset_done), + .I4(Q[1]), + .O(D[0])); + LUT6 #( + .INIT(64'hF444444444444444)) + \FSM_onehot_fsm_rx[5]_i_1__2 + (.I0(rxeqscan_new_txcoeff_done), + .I1(Q[3]), + .I2(\FSM_onehot_fsm_rx_reg[5] [2]), + .I3(\FSM_onehot_fsm_rx_reg[5] [0]), + .I4(\FSM_onehot_fsm_rx_reg[5] [1]), + .I5(Q[2]), + .O(D[1])); + LUT6 #( + .INIT(64'hFFFFFFFFFFE0E0E0)) + \FSM_onehot_fsm_rx[6]_i_1__2 + (.I0(out[1]), + .I1(out[0]), + .I2(Q[4]), + .I3(preset_done), + .I4(Q[1]), + .I5(\FSM_onehot_fsm_rx[6]_i_2__2_n_0 ), + .O(D[2])); + (* SOFT_HLUTNM = "soft_lutpair182" *) + LUT2 #( + .INIT(4'h8)) + \FSM_onehot_fsm_rx[6]_i_2__2 + (.I0(rxeqscan_new_txcoeff_done), + .I1(Q[3]), + .O(\FSM_onehot_fsm_rx[6]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'h000A0A0AF0F0F8F0)) + adapt_done_cnt_i_1__2 + (.I0(\FSM_onehot_fsm_reg_n_0_[4] ), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .I5(adapt_done_cnt_i_2__2_n_0), + .O(adapt_done_cnt_i_1__2_n_0)); + LUT5 #( + .INIT(32'h00FF0101)) + adapt_done_cnt_i_2__2 + (.I0(\FSM_onehot_fsm_reg_n_0_[3] ), + .I1(\FSM_onehot_fsm_reg_n_0_[2] ), + .I2(\FSM_onehot_fsm_reg_n_0_[1] ), + .I3(new_txcoeff_req_reg2), + .I4(\FSM_onehot_fsm_reg_n_0_[4] ), + .O(adapt_done_cnt_i_2__2_n_0)); + FDRE #( + .INIT(1'b0)) + adapt_done_cnt_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(adapt_done_cnt_i_1__2_n_0), + .Q(adapt_done_cnt_reg_n_0), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'hF8000000)) + adapt_done_i_1__2 + (.I0(out[1]), + .I1(out[0]), + .I2(adapt_done_cnt_reg_n_0), + .I3(new_txcoeff_req_reg2), + .I4(\FSM_onehot_fsm_reg_n_0_[4] ), + .O(adapt_done)); + FDRE #( + .INIT(1'b0)) + adapt_done_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(adapt_done), + .Q(rxeqscan_adapt_done), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h44444044)) + \converge_cnt[0]_i_1__5 + (.I0(converge_cnt[0]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[0])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[10]_i_1__2 + (.I0(converge_cnt0[10]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[10])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[11]_i_1__2 + (.I0(converge_cnt0[11]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[11])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[12]_i_1__2 + (.I0(converge_cnt0[12]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[12])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[13]_i_1__2 + (.I0(converge_cnt0[13]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[13])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[14]_i_1__2 + (.I0(converge_cnt0[14]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[14])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[15]_i_1__2 + (.I0(converge_cnt0[15]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[15])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[16]_i_1__2 + (.I0(converge_cnt0[16]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[16])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[17]_i_1__2 + (.I0(converge_cnt0[17]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[17])); + (* SOFT_HLUTNM = "soft_lutpair180" *) + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[18]_i_1__2 + (.I0(converge_cnt0[18]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[18])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[19]_i_1__2 + (.I0(converge_cnt0[19]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[19])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[1]_i_1__2 + (.I0(converge_cnt0[1]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[1])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[20]_i_1__2 + (.I0(converge_cnt0[20]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[20])); + (* SOFT_HLUTNM = "soft_lutpair181" *) + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[21]_i_1__2 + (.I0(converge_cnt0[21]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[21])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[2]_i_1__2 + (.I0(converge_cnt0[2]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[2])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[3]_i_1__2 + (.I0(converge_cnt0[3]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[3])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[4]_i_1__2 + (.I0(converge_cnt0[4]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[4])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[5]_i_1__2 + (.I0(converge_cnt0[5]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[5])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[6]_i_1__2 + (.I0(converge_cnt0[6]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[6])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[7]_i_1__2 + (.I0(converge_cnt0[7]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[7])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[8]_i_1__2 + (.I0(converge_cnt0[8]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[8])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[9]_i_1__2 + (.I0(converge_cnt0[9]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[9])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[0]), + .Q(converge_cnt[0]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[10]), + .Q(converge_cnt[10]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[11]), + .Q(converge_cnt[11]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[12]), + .Q(converge_cnt[12]), + .R(RST_CPLLRESET)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 \converge_cnt_reg[12]_i_2__2 + (.CI(\converge_cnt_reg[8]_i_2__2_n_0 ), + .CO({\converge_cnt_reg[12]_i_2__2_n_0 ,\converge_cnt_reg[12]_i_2__2_n_1 ,\converge_cnt_reg[12]_i_2__2_n_2 ,\converge_cnt_reg[12]_i_2__2_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O(converge_cnt0[12:9]), + .S(converge_cnt[12:9])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[13]), + .Q(converge_cnt[13]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[14]), + .Q(converge_cnt[14]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[15]), + .Q(converge_cnt[15]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[16] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[16]), + .Q(converge_cnt[16]), + .R(RST_CPLLRESET)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 \converge_cnt_reg[16]_i_2__2 + (.CI(\converge_cnt_reg[12]_i_2__2_n_0 ), + .CO({\converge_cnt_reg[16]_i_2__2_n_0 ,\converge_cnt_reg[16]_i_2__2_n_1 ,\converge_cnt_reg[16]_i_2__2_n_2 ,\converge_cnt_reg[16]_i_2__2_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O(converge_cnt0[16:13]), + .S(converge_cnt[16:13])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[17] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[17]), + .Q(converge_cnt[17]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[18] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[18]), + .Q(converge_cnt[18]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[19] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[19]), + .Q(converge_cnt[19]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[1]), + .Q(converge_cnt[1]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[20] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[20]), + .Q(converge_cnt[20]), + .R(RST_CPLLRESET)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 \converge_cnt_reg[20]_i_2__2 + (.CI(\converge_cnt_reg[16]_i_2__2_n_0 ), + .CO({\converge_cnt_reg[20]_i_2__2_n_0 ,\converge_cnt_reg[20]_i_2__2_n_1 ,\converge_cnt_reg[20]_i_2__2_n_2 ,\converge_cnt_reg[20]_i_2__2_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O(converge_cnt0[20:17]), + .S(converge_cnt[20:17])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[21] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[21]), + .Q(converge_cnt[21]), + .R(RST_CPLLRESET)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 \converge_cnt_reg[21]_i_2__2 + (.CI(\converge_cnt_reg[20]_i_2__2_n_0 ), + .CO(\NLW_converge_cnt_reg[21]_i_2__2_CO_UNCONNECTED [3:0]), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\NLW_converge_cnt_reg[21]_i_2__2_O_UNCONNECTED [3:1],converge_cnt0[21]}), + .S({1'b0,1'b0,1'b0,converge_cnt[21]})); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[2]), + .Q(converge_cnt[2]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[3]), + .Q(converge_cnt[3]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[4]), + .Q(converge_cnt[4]), + .R(RST_CPLLRESET)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 \converge_cnt_reg[4]_i_2__2 + (.CI(1'b0), + .CO({\converge_cnt_reg[4]_i_2__2_n_0 ,\converge_cnt_reg[4]_i_2__2_n_1 ,\converge_cnt_reg[4]_i_2__2_n_2 ,\converge_cnt_reg[4]_i_2__2_n_3 }), + .CYINIT(converge_cnt[0]), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O(converge_cnt0[4:1]), + .S(converge_cnt[4:1])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[5]), + .Q(converge_cnt[5]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[6]), + .Q(converge_cnt[6]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[7]), + .Q(converge_cnt[7]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[8]), + .Q(converge_cnt[8]), + .R(RST_CPLLRESET)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 \converge_cnt_reg[8]_i_2__2 + (.CI(\converge_cnt_reg[4]_i_2__2_n_0 ), + .CO({\converge_cnt_reg[8]_i_2__2_n_0 ,\converge_cnt_reg[8]_i_2__2_n_1 ,\converge_cnt_reg[8]_i_2__2_n_2 ,\converge_cnt_reg[8]_i_2__2_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O(converge_cnt0[8:5]), + .S(converge_cnt[8:5])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[9]), + .Q(converge_cnt[9]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\fs_reg1_reg[5]_0 [0]), + .Q(fs_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\fs_reg1_reg[5]_0 [1]), + .Q(fs_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\fs_reg1_reg[5]_0 [2]), + .Q(fs_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\fs_reg1_reg[5]_0 [3]), + .Q(fs_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg1_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\fs_reg1_reg[5]_0 [4]), + .Q(fs_reg1[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg1_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\fs_reg1_reg[5]_0 [5]), + .Q(fs_reg1[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fs_reg1[0]), + .Q(fs_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fs_reg1[1]), + .Q(fs_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fs_reg1[2]), + .Q(fs_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fs_reg1[3]), + .Q(fs_reg2[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fs_reg1[4]), + .Q(fs_reg2[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fs_reg1[5]), + .Q(fs_reg2[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\lf_reg1_reg[5]_0 [0]), + .Q(lf_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\lf_reg1_reg[5]_0 [1]), + .Q(lf_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\lf_reg1_reg[5]_0 [2]), + .Q(lf_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\lf_reg1_reg[5]_0 [3]), + .Q(lf_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg1_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\lf_reg1_reg[5]_0 [4]), + .Q(lf_reg1[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg1_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\lf_reg1_reg[5]_0 [5]), + .Q(lf_reg1[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(lf_reg1[0]), + .Q(lf_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(lf_reg1[1]), + .Q(lf_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(lf_reg1[2]), + .Q(lf_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(lf_reg1[3]), + .Q(lf_reg2[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(lf_reg1[4]), + .Q(lf_reg2[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(lf_reg1[5]), + .Q(lf_reg2[5]), + .R(RST_CPLLRESET)); + LUT2 #( + .INIT(4'h8)) + new_txcoeff_done_i_1__2 + (.I0(\FSM_onehot_fsm_reg_n_0_[4] ), + .I1(new_txcoeff_req_reg2), + .O(new_txcoeff_done)); + FDRE #( + .INIT(1'b0)) + new_txcoeff_done_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(new_txcoeff_done), + .Q(rxeqscan_new_txcoeff_done), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE new_txcoeff_req_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(new_txcoeff_req_reg1_reg_0), + .Q(new_txcoeff_req_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE new_txcoeff_req_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(new_txcoeff_req_reg1), + .Q(new_txcoeff_req_reg2), + .R(RST_CPLLRESET)); + LUT3 #( + .INIT(8'hEA)) + preset_done_i_1__2 + (.I0(\FSM_onehot_fsm_reg_n_0_[2] ), + .I1(\FSM_onehot_fsm_reg_n_0_[1] ), + .I2(preset_valid_reg2), + .O(preset_done_1)); + FDRE #( + .INIT(1'b0)) + preset_done_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(preset_done_1), + .Q(preset_done), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \preset_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\preset_reg1_reg[2]_0 [0]), + .Q(preset_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \preset_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\preset_reg1_reg[2]_0 [1]), + .Q(preset_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \preset_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\preset_reg1_reg[2]_0 [2]), + .Q(preset_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \preset_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(preset_reg1[0]), + .Q(preset_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \preset_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(preset_reg1[1]), + .Q(preset_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \preset_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(preset_reg1[2]), + .Q(preset_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE preset_valid_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_preset_valid), + .Q(preset_valid_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE preset_valid_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(preset_valid_reg1), + .Q(preset_valid_reg2), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'hA800FFFFA8000000)) + rxeq_adapt_done_i_1__2 + (.I0(rxeqscan_new_txcoeff_done), + .I1(rxeq_adapt_done_reg_reg_1), + .I2(rxeqscan_adapt_done), + .I3(Q[3]), + .I4(rxeq_adapt_done_reg), + .I5(USER_RXEQ_ADAPT_DONE), + .O(new_txcoeff_done_reg_0)); + LUT6 #( + .INIT(64'hFF00FF33AA00A800)) + rxeq_adapt_done_reg_i_1__2 + (.I0(rxeqscan_adapt_done), + .I1(rxeq_adapt_done_reg_reg), + .I2(rxeqscan_new_txcoeff_done), + .I3(Q[3]), + .I4(rxeq_adapt_done_reg_reg_0), + .I5(rxeq_adapt_done_reg_reg_1), + .O(adapt_done_reg_0)); + (* SOFT_HLUTNM = "soft_lutpair182" *) + LUT2 #( + .INIT(4'h2)) + rxeq_new_txcoeff_req_i_1__2 + (.I0(Q[3]), + .I1(rxeqscan_new_txcoeff_done), + .O(rxeq_new_txcoeff_req)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [0]), + .Q(txcoeff_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [10]), + .Q(txcoeff_reg1[10]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [11]), + .Q(txcoeff_reg1[11]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [12]), + .Q(txcoeff_reg1[12]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [13]), + .Q(txcoeff_reg1[13]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [14]), + .Q(txcoeff_reg1[14]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [15]), + .Q(txcoeff_reg1[15]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[16] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [16]), + .Q(txcoeff_reg1[16]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[17] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [17]), + .Q(txcoeff_reg1[17]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [1]), + .Q(txcoeff_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [2]), + .Q(txcoeff_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [3]), + .Q(txcoeff_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [4]), + .Q(txcoeff_reg1[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [5]), + .Q(txcoeff_reg1[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [6]), + .Q(txcoeff_reg1[6]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [7]), + .Q(txcoeff_reg1[7]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [8]), + .Q(txcoeff_reg1[8]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [9]), + .Q(txcoeff_reg1[9]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[0]), + .Q(txcoeff_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[10]), + .Q(txcoeff_reg2[10]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[11]), + .Q(txcoeff_reg2[11]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[12]), + .Q(txcoeff_reg2[12]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[13]), + .Q(txcoeff_reg2[13]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[14]), + .Q(txcoeff_reg2[14]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[15]), + .Q(txcoeff_reg2[15]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[16] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[16]), + .Q(txcoeff_reg2[16]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[17] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[17]), + .Q(txcoeff_reg2[17]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[1]), + .Q(txcoeff_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[2]), + .Q(txcoeff_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[3]), + .Q(txcoeff_reg2[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[4]), + .Q(txcoeff_reg2[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[5]), + .Q(txcoeff_reg2[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[6]), + .Q(txcoeff_reg2[6]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[7]), + .Q(txcoeff_reg2[7]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[8]), + .Q(txcoeff_reg2[8]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[9]), + .Q(txcoeff_reg2[9]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txpreset_reg1_reg[3]_0 [0]), + .Q(txpreset_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txpreset_reg1_reg[3]_0 [1]), + .Q(txpreset_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txpreset_reg1_reg[3]_0 [2]), + .Q(txpreset_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txpreset_reg1_reg[3]_0 [3]), + .Q(txpreset_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txpreset_reg1[0]), + .Q(txpreset_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txpreset_reg1[1]), + .Q(txpreset_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txpreset_reg1[2]), + .Q(txpreset_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txpreset_reg1[3]), + .Q(txpreset_reg2[3]), + .R(RST_CPLLRESET)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_rxeq_scan" *) +module pcie_7x_0_pcie_7x_0_rxeq_scan_55 + (D, + rxeq_new_txcoeff_req, + adapt_done_reg_0, + new_txcoeff_done_reg_0, + RST_CPLLRESET, + pipe_pclk_in, + new_txcoeff_req_reg1_reg_0, + rxeq_preset_valid, + out, + Q, + \FSM_onehot_fsm_rx_reg[5] , + rxeq_adapt_done_reg_reg, + rxeq_adapt_done_reg_reg_0, + rxeq_adapt_done_reg_reg_1, + rxeq_adapt_done_reg, + USER_RXEQ_ADAPT_DONE, + \preset_reg1_reg[2]_0 , + \txpreset_reg1_reg[3]_0 , + \txcoeff_reg1_reg[17]_0 , + \fs_reg1_reg[5]_0 , + \lf_reg1_reg[5]_0 ); + output [2:0]D; + output rxeq_new_txcoeff_req; + output adapt_done_reg_0; + output new_txcoeff_done_reg_0; + input RST_CPLLRESET; + input pipe_pclk_in; + input new_txcoeff_req_reg1_reg_0; + input rxeq_preset_valid; + input [1:0]out; + input [4:0]Q; + input [2:0]\FSM_onehot_fsm_rx_reg[5] ; + input rxeq_adapt_done_reg_reg; + input rxeq_adapt_done_reg_reg_0; + input rxeq_adapt_done_reg_reg_1; + input rxeq_adapt_done_reg; + input USER_RXEQ_ADAPT_DONE; + input [2:0]\preset_reg1_reg[2]_0 ; + input [3:0]\txpreset_reg1_reg[3]_0 ; + input [17:0]\txcoeff_reg1_reg[17]_0 ; + input [5:0]\fs_reg1_reg[5]_0 ; + input [5:0]\lf_reg1_reg[5]_0 ; + + wire [2:0]D; + wire \FSM_onehot_fsm[1]_i_1__3_n_0 ; + wire \FSM_onehot_fsm[2]_i_1__3_n_0 ; + wire \FSM_onehot_fsm[3]_i_1__3_n_0 ; + wire \FSM_onehot_fsm[3]_i_2__1_n_0 ; + wire \FSM_onehot_fsm[4]_i_10__1_n_0 ; + wire \FSM_onehot_fsm[4]_i_11__1_n_0 ; + wire \FSM_onehot_fsm[4]_i_12__1_n_0 ; + wire \FSM_onehot_fsm[4]_i_13__1_n_0 ; + wire \FSM_onehot_fsm[4]_i_1__3_n_0 ; + wire \FSM_onehot_fsm[4]_i_2__2_n_0 ; + wire \FSM_onehot_fsm[4]_i_3__1_n_0 ; + wire \FSM_onehot_fsm[4]_i_4__1_n_0 ; + wire \FSM_onehot_fsm[4]_i_5__1_n_0 ; + wire \FSM_onehot_fsm[4]_i_6__1_n_0 ; + wire \FSM_onehot_fsm[4]_i_7__1_n_0 ; + wire \FSM_onehot_fsm[4]_i_8__1_n_0 ; + wire \FSM_onehot_fsm[4]_i_9__1_n_0 ; + wire \FSM_onehot_fsm_reg_n_0_[1] ; + wire \FSM_onehot_fsm_reg_n_0_[2] ; + wire \FSM_onehot_fsm_reg_n_0_[3] ; + wire \FSM_onehot_fsm_reg_n_0_[4] ; + wire \FSM_onehot_fsm_rx[6]_i_2__1_n_0 ; + wire [2:0]\FSM_onehot_fsm_rx_reg[5] ; + wire [4:0]Q; + wire RST_CPLLRESET; + wire USER_RXEQ_ADAPT_DONE; + wire adapt_done; + wire adapt_done_cnt_i_1__1_n_0; + wire adapt_done_cnt_i_2__1_n_0; + wire adapt_done_cnt_reg_n_0; + wire adapt_done_reg_0; + wire [21:0]converge_cnt; + wire [21:1]converge_cnt0; + wire [21:0]converge_cnt_0; + wire \converge_cnt_reg[12]_i_2__1_n_0 ; + wire \converge_cnt_reg[12]_i_2__1_n_1 ; + wire \converge_cnt_reg[12]_i_2__1_n_2 ; + wire \converge_cnt_reg[12]_i_2__1_n_3 ; + wire \converge_cnt_reg[16]_i_2__1_n_0 ; + wire \converge_cnt_reg[16]_i_2__1_n_1 ; + wire \converge_cnt_reg[16]_i_2__1_n_2 ; + wire \converge_cnt_reg[16]_i_2__1_n_3 ; + wire \converge_cnt_reg[20]_i_2__1_n_0 ; + wire \converge_cnt_reg[20]_i_2__1_n_1 ; + wire \converge_cnt_reg[20]_i_2__1_n_2 ; + wire \converge_cnt_reg[20]_i_2__1_n_3 ; + wire \converge_cnt_reg[4]_i_2__1_n_0 ; + wire \converge_cnt_reg[4]_i_2__1_n_1 ; + wire \converge_cnt_reg[4]_i_2__1_n_2 ; + wire \converge_cnt_reg[4]_i_2__1_n_3 ; + wire \converge_cnt_reg[8]_i_2__1_n_0 ; + wire \converge_cnt_reg[8]_i_2__1_n_1 ; + wire \converge_cnt_reg[8]_i_2__1_n_2 ; + wire \converge_cnt_reg[8]_i_2__1_n_3 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]fs_reg1; + wire [5:0]\fs_reg1_reg[5]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]fs_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]lf_reg1; + wire [5:0]\lf_reg1_reg[5]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]lf_reg2; + wire new_txcoeff_done; + wire new_txcoeff_done_reg_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire new_txcoeff_req_reg1; + wire new_txcoeff_req_reg1_reg_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire new_txcoeff_req_reg2; + wire [1:0]out; + wire pipe_pclk_in; + wire preset_done; + wire preset_done_1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [2:0]preset_reg1; + wire [2:0]\preset_reg1_reg[2]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [2:0]preset_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire preset_valid_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire preset_valid_reg2; + wire rxeq_adapt_done_reg; + wire rxeq_adapt_done_reg_reg; + wire rxeq_adapt_done_reg_reg_0; + wire rxeq_adapt_done_reg_reg_1; + wire rxeq_new_txcoeff_req; + wire rxeq_preset_valid; + wire rxeqscan_adapt_done; + wire rxeqscan_new_txcoeff_done; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [17:0]txcoeff_reg1; + wire [17:0]\txcoeff_reg1_reg[17]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [17:0]txcoeff_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]txpreset_reg1; + wire [3:0]\txpreset_reg1_reg[3]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]txpreset_reg2; + wire [3:0]\NLW_converge_cnt_reg[21]_i_2__1_CO_UNCONNECTED ; + wire [3:1]\NLW_converge_cnt_reg[21]_i_2__1_O_UNCONNECTED ; + + LUT6 #( + .INIT(64'h0F00AFAF0F11AFBB)) + \FSM_onehot_fsm[1]_i_1__3 + (.I0(\FSM_onehot_fsm_reg_n_0_[4] ), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(preset_valid_reg2), + .I3(\FSM_onehot_fsm_reg_n_0_[2] ), + .I4(new_txcoeff_req_reg2), + .I5(\FSM_onehot_fsm_reg_n_0_[1] ), + .O(\FSM_onehot_fsm[1]_i_1__3_n_0 )); + LUT3 #( + .INIT(8'hA8)) + \FSM_onehot_fsm[2]_i_1__3 + (.I0(preset_valid_reg2), + .I1(\FSM_onehot_fsm_reg_n_0_[2] ), + .I2(\FSM_onehot_fsm_reg_n_0_[1] ), + .O(\FSM_onehot_fsm[2]_i_1__3_n_0 )); + LUT6 #( + .INIT(64'h04FF040404040404)) + \FSM_onehot_fsm[3]_i_1__3 + (.I0(\FSM_onehot_fsm[3]_i_2__1_n_0 ), + .I1(\FSM_onehot_fsm[4]_i_2__2_n_0 ), + .I2(\FSM_onehot_fsm[4]_i_3__1_n_0 ), + .I3(preset_valid_reg2), + .I4(new_txcoeff_req_reg2), + .I5(\FSM_onehot_fsm_reg_n_0_[1] ), + .O(\FSM_onehot_fsm[3]_i_1__3_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair140" *) + LUT4 #( + .INIT(16'h04FF)) + \FSM_onehot_fsm[3]_i_2__1 + (.I0(out[0]), + .I1(out[1]), + .I2(adapt_done_cnt_reg_n_0), + .I3(\FSM_onehot_fsm_reg_n_0_[3] ), + .O(\FSM_onehot_fsm[3]_i_2__1_n_0 )); + LUT5 #( + .INIT(32'hFFBFFFFF)) + \FSM_onehot_fsm[4]_i_10__1 + (.I0(\FSM_onehot_fsm[4]_i_13__1_n_0 ), + .I1(converge_cnt[2]), + .I2(converge_cnt[20]), + .I3(converge_cnt[10]), + .I4(converge_cnt[0]), + .O(\FSM_onehot_fsm[4]_i_10__1_n_0 )); + LUT4 #( + .INIT(16'hEFFF)) + \FSM_onehot_fsm[4]_i_11__1 + (.I0(converge_cnt[2]), + .I1(converge_cnt[6]), + .I2(converge_cnt[8]), + .I3(converge_cnt[3]), + .O(\FSM_onehot_fsm[4]_i_11__1_n_0 )); + LUT5 #( + .INIT(32'hEFFFFFFF)) + \FSM_onehot_fsm[4]_i_12__1 + (.I0(\FSM_onehot_fsm[4]_i_13__1_n_0 ), + .I1(converge_cnt[14]), + .I2(converge_cnt[10]), + .I3(converge_cnt[21]), + .I4(converge_cnt[19]), + .O(\FSM_onehot_fsm[4]_i_12__1_n_0 )); + LUT4 #( + .INIT(16'hFF7F)) + \FSM_onehot_fsm[4]_i_13__1 + (.I0(converge_cnt[16]), + .I1(converge_cnt[11]), + .I2(converge_cnt[9]), + .I3(converge_cnt[5]), + .O(\FSM_onehot_fsm[4]_i_13__1_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFD0FFD0FFD0)) + \FSM_onehot_fsm[4]_i_1__3 + (.I0(\FSM_onehot_fsm[4]_i_2__2_n_0 ), + .I1(\FSM_onehot_fsm[4]_i_3__1_n_0 ), + .I2(\FSM_onehot_fsm_reg_n_0_[3] ), + .I3(\FSM_onehot_fsm[4]_i_4__1_n_0 ), + .I4(\FSM_onehot_fsm_reg_n_0_[4] ), + .I5(new_txcoeff_req_reg2), + .O(\FSM_onehot_fsm[4]_i_1__3_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFFFFFFFBF)) + \FSM_onehot_fsm[4]_i_2__2 + (.I0(\FSM_onehot_fsm[4]_i_5__1_n_0 ), + .I1(converge_cnt[17]), + .I2(converge_cnt[18]), + .I3(converge_cnt[21]), + .I4(converge_cnt[8]), + .I5(\FSM_onehot_fsm[4]_i_6__1_n_0 ), + .O(\FSM_onehot_fsm[4]_i_2__2_n_0 )); + LUT6 #( + .INIT(64'h0000000001000000)) + \FSM_onehot_fsm[4]_i_3__1 + (.I0(\FSM_onehot_fsm[4]_i_7__1_n_0 ), + .I1(converge_cnt[7]), + .I2(converge_cnt[1]), + .I3(converge_cnt[15]), + .I4(converge_cnt[13]), + .I5(\FSM_onehot_fsm[4]_i_8__1_n_0 ), + .O(\FSM_onehot_fsm[4]_i_3__1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair139" *) + LUT4 #( + .INIT(16'h0400)) + \FSM_onehot_fsm[4]_i_4__1 + (.I0(out[0]), + .I1(out[1]), + .I2(adapt_done_cnt_reg_n_0), + .I3(\FSM_onehot_fsm_reg_n_0_[3] ), + .O(\FSM_onehot_fsm[4]_i_4__1_n_0 )); + LUT4 #( + .INIT(16'hFFF2)) + \FSM_onehot_fsm[4]_i_5__1 + (.I0(out[1]), + .I1(out[0]), + .I2(converge_cnt[7]), + .I3(converge_cnt[1]), + .O(\FSM_onehot_fsm[4]_i_5__1_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFFFFFFFFB)) + \FSM_onehot_fsm[4]_i_6__1 + (.I0(\FSM_onehot_fsm[4]_i_9__1_n_0 ), + .I1(converge_cnt[19]), + .I2(converge_cnt[6]), + .I3(converge_cnt[3]), + .I4(converge_cnt[4]), + .I5(\FSM_onehot_fsm[4]_i_10__1_n_0 ), + .O(\FSM_onehot_fsm[4]_i_6__1_n_0 )); + LUT4 #( + .INIT(16'hDFFF)) + \FSM_onehot_fsm[4]_i_7__1 + (.I0(out[1]), + .I1(out[0]), + .I2(converge_cnt[17]), + .I3(converge_cnt[18]), + .O(\FSM_onehot_fsm[4]_i_7__1_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFFFFFFFFE)) + \FSM_onehot_fsm[4]_i_8__1 + (.I0(\FSM_onehot_fsm[4]_i_11__1_n_0 ), + .I1(converge_cnt[12]), + .I2(converge_cnt[20]), + .I3(converge_cnt[0]), + .I4(converge_cnt[4]), + .I5(\FSM_onehot_fsm[4]_i_12__1_n_0 ), + .O(\FSM_onehot_fsm[4]_i_8__1_n_0 )); + LUT4 #( + .INIT(16'hFFDF)) + \FSM_onehot_fsm[4]_i_9__1 + (.I0(converge_cnt[15]), + .I1(converge_cnt[13]), + .I2(converge_cnt[14]), + .I3(converge_cnt[12]), + .O(\FSM_onehot_fsm[4]_i_9__1_n_0 )); + (* FSM_ENCODED_STATES = "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001" *) + FDSE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[1]_i_1__3_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[1] ), + .S(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[2]_i_1__3_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[3]_i_1__3_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[4]_i_1__3_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h40FF4040)) + \FSM_onehot_fsm_rx[2]_i_1__1 + (.I0(out[1]), + .I1(Q[0]), + .I2(out[0]), + .I3(preset_done), + .I4(Q[1]), + .O(D[0])); + LUT6 #( + .INIT(64'hF444444444444444)) + \FSM_onehot_fsm_rx[5]_i_1__1 + (.I0(rxeqscan_new_txcoeff_done), + .I1(Q[3]), + .I2(\FSM_onehot_fsm_rx_reg[5] [2]), + .I3(\FSM_onehot_fsm_rx_reg[5] [0]), + .I4(\FSM_onehot_fsm_rx_reg[5] [1]), + .I5(Q[2]), + .O(D[1])); + LUT6 #( + .INIT(64'hFFFFFFFFFFE0E0E0)) + \FSM_onehot_fsm_rx[6]_i_1__1 + (.I0(out[1]), + .I1(out[0]), + .I2(Q[4]), + .I3(preset_done), + .I4(Q[1]), + .I5(\FSM_onehot_fsm_rx[6]_i_2__1_n_0 ), + .O(D[2])); + (* SOFT_HLUTNM = "soft_lutpair141" *) + LUT2 #( + .INIT(4'h8)) + \FSM_onehot_fsm_rx[6]_i_2__1 + (.I0(rxeqscan_new_txcoeff_done), + .I1(Q[3]), + .O(\FSM_onehot_fsm_rx[6]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'h000A0A0AF0F0F8F0)) + adapt_done_cnt_i_1__1 + (.I0(\FSM_onehot_fsm_reg_n_0_[4] ), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .I5(adapt_done_cnt_i_2__1_n_0), + .O(adapt_done_cnt_i_1__1_n_0)); + LUT5 #( + .INIT(32'h00FF0101)) + adapt_done_cnt_i_2__1 + (.I0(\FSM_onehot_fsm_reg_n_0_[3] ), + .I1(\FSM_onehot_fsm_reg_n_0_[2] ), + .I2(\FSM_onehot_fsm_reg_n_0_[1] ), + .I3(new_txcoeff_req_reg2), + .I4(\FSM_onehot_fsm_reg_n_0_[4] ), + .O(adapt_done_cnt_i_2__1_n_0)); + FDRE #( + .INIT(1'b0)) + adapt_done_cnt_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(adapt_done_cnt_i_1__1_n_0), + .Q(adapt_done_cnt_reg_n_0), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'hF8000000)) + adapt_done_i_1__1 + (.I0(out[1]), + .I1(out[0]), + .I2(adapt_done_cnt_reg_n_0), + .I3(new_txcoeff_req_reg2), + .I4(\FSM_onehot_fsm_reg_n_0_[4] ), + .O(adapt_done)); + FDRE #( + .INIT(1'b0)) + adapt_done_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(adapt_done), + .Q(rxeqscan_adapt_done), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h44444044)) + \converge_cnt[0]_i_1__3 + (.I0(converge_cnt[0]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[0])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[10]_i_1__1 + (.I0(converge_cnt0[10]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[10])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[11]_i_1__1 + (.I0(converge_cnt0[11]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[11])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[12]_i_1__1 + (.I0(converge_cnt0[12]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[12])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[13]_i_1__1 + (.I0(converge_cnt0[13]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[13])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[14]_i_1__1 + (.I0(converge_cnt0[14]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[14])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[15]_i_1__1 + (.I0(converge_cnt0[15]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[15])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[16]_i_1__1 + (.I0(converge_cnt0[16]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[16])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[17]_i_1__1 + (.I0(converge_cnt0[17]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[17])); + (* SOFT_HLUTNM = "soft_lutpair139" *) + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[18]_i_1__1 + (.I0(converge_cnt0[18]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[18])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[19]_i_1__1 + (.I0(converge_cnt0[19]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[19])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[1]_i_1__1 + (.I0(converge_cnt0[1]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[1])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[20]_i_1__1 + (.I0(converge_cnt0[20]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[20])); + (* SOFT_HLUTNM = "soft_lutpair140" *) + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[21]_i_1__1 + (.I0(converge_cnt0[21]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[21])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[2]_i_1__1 + (.I0(converge_cnt0[2]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[2])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[3]_i_1__1 + (.I0(converge_cnt0[3]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[3])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[4]_i_1__1 + (.I0(converge_cnt0[4]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[4])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[5]_i_1__1 + (.I0(converge_cnt0[5]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[5])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[6]_i_1__1 + (.I0(converge_cnt0[6]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[6])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[7]_i_1__1 + (.I0(converge_cnt0[7]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[7])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[8]_i_1__1 + (.I0(converge_cnt0[8]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[8])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[9]_i_1__1 + (.I0(converge_cnt0[9]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[9])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[0]), + .Q(converge_cnt[0]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[10]), + .Q(converge_cnt[10]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[11]), + .Q(converge_cnt[11]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[12]), + .Q(converge_cnt[12]), + .R(RST_CPLLRESET)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 \converge_cnt_reg[12]_i_2__1 + (.CI(\converge_cnt_reg[8]_i_2__1_n_0 ), + .CO({\converge_cnt_reg[12]_i_2__1_n_0 ,\converge_cnt_reg[12]_i_2__1_n_1 ,\converge_cnt_reg[12]_i_2__1_n_2 ,\converge_cnt_reg[12]_i_2__1_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O(converge_cnt0[12:9]), + .S(converge_cnt[12:9])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[13]), + .Q(converge_cnt[13]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[14]), + .Q(converge_cnt[14]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[15]), + .Q(converge_cnt[15]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[16] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[16]), + .Q(converge_cnt[16]), + .R(RST_CPLLRESET)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 \converge_cnt_reg[16]_i_2__1 + (.CI(\converge_cnt_reg[12]_i_2__1_n_0 ), + .CO({\converge_cnt_reg[16]_i_2__1_n_0 ,\converge_cnt_reg[16]_i_2__1_n_1 ,\converge_cnt_reg[16]_i_2__1_n_2 ,\converge_cnt_reg[16]_i_2__1_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O(converge_cnt0[16:13]), + .S(converge_cnt[16:13])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[17] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[17]), + .Q(converge_cnt[17]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[18] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[18]), + .Q(converge_cnt[18]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[19] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[19]), + .Q(converge_cnt[19]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[1]), + .Q(converge_cnt[1]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[20] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[20]), + .Q(converge_cnt[20]), + .R(RST_CPLLRESET)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 \converge_cnt_reg[20]_i_2__1 + (.CI(\converge_cnt_reg[16]_i_2__1_n_0 ), + .CO({\converge_cnt_reg[20]_i_2__1_n_0 ,\converge_cnt_reg[20]_i_2__1_n_1 ,\converge_cnt_reg[20]_i_2__1_n_2 ,\converge_cnt_reg[20]_i_2__1_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O(converge_cnt0[20:17]), + .S(converge_cnt[20:17])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[21] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[21]), + .Q(converge_cnt[21]), + .R(RST_CPLLRESET)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 \converge_cnt_reg[21]_i_2__1 + (.CI(\converge_cnt_reg[20]_i_2__1_n_0 ), + .CO(\NLW_converge_cnt_reg[21]_i_2__1_CO_UNCONNECTED [3:0]), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\NLW_converge_cnt_reg[21]_i_2__1_O_UNCONNECTED [3:1],converge_cnt0[21]}), + .S({1'b0,1'b0,1'b0,converge_cnt[21]})); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[2]), + .Q(converge_cnt[2]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[3]), + .Q(converge_cnt[3]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[4]), + .Q(converge_cnt[4]), + .R(RST_CPLLRESET)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 \converge_cnt_reg[4]_i_2__1 + (.CI(1'b0), + .CO({\converge_cnt_reg[4]_i_2__1_n_0 ,\converge_cnt_reg[4]_i_2__1_n_1 ,\converge_cnt_reg[4]_i_2__1_n_2 ,\converge_cnt_reg[4]_i_2__1_n_3 }), + .CYINIT(converge_cnt[0]), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O(converge_cnt0[4:1]), + .S(converge_cnt[4:1])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[5]), + .Q(converge_cnt[5]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[6]), + .Q(converge_cnt[6]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[7]), + .Q(converge_cnt[7]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[8]), + .Q(converge_cnt[8]), + .R(RST_CPLLRESET)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 \converge_cnt_reg[8]_i_2__1 + (.CI(\converge_cnt_reg[4]_i_2__1_n_0 ), + .CO({\converge_cnt_reg[8]_i_2__1_n_0 ,\converge_cnt_reg[8]_i_2__1_n_1 ,\converge_cnt_reg[8]_i_2__1_n_2 ,\converge_cnt_reg[8]_i_2__1_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O(converge_cnt0[8:5]), + .S(converge_cnt[8:5])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[9]), + .Q(converge_cnt[9]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\fs_reg1_reg[5]_0 [0]), + .Q(fs_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\fs_reg1_reg[5]_0 [1]), + .Q(fs_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\fs_reg1_reg[5]_0 [2]), + .Q(fs_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\fs_reg1_reg[5]_0 [3]), + .Q(fs_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg1_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\fs_reg1_reg[5]_0 [4]), + .Q(fs_reg1[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg1_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\fs_reg1_reg[5]_0 [5]), + .Q(fs_reg1[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fs_reg1[0]), + .Q(fs_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fs_reg1[1]), + .Q(fs_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fs_reg1[2]), + .Q(fs_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fs_reg1[3]), + .Q(fs_reg2[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fs_reg1[4]), + .Q(fs_reg2[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fs_reg1[5]), + .Q(fs_reg2[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\lf_reg1_reg[5]_0 [0]), + .Q(lf_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\lf_reg1_reg[5]_0 [1]), + .Q(lf_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\lf_reg1_reg[5]_0 [2]), + .Q(lf_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\lf_reg1_reg[5]_0 [3]), + .Q(lf_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg1_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\lf_reg1_reg[5]_0 [4]), + .Q(lf_reg1[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg1_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\lf_reg1_reg[5]_0 [5]), + .Q(lf_reg1[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(lf_reg1[0]), + .Q(lf_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(lf_reg1[1]), + .Q(lf_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(lf_reg1[2]), + .Q(lf_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(lf_reg1[3]), + .Q(lf_reg2[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(lf_reg1[4]), + .Q(lf_reg2[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(lf_reg1[5]), + .Q(lf_reg2[5]), + .R(RST_CPLLRESET)); + LUT2 #( + .INIT(4'h8)) + new_txcoeff_done_i_1__1 + (.I0(\FSM_onehot_fsm_reg_n_0_[4] ), + .I1(new_txcoeff_req_reg2), + .O(new_txcoeff_done)); + FDRE #( + .INIT(1'b0)) + new_txcoeff_done_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(new_txcoeff_done), + .Q(rxeqscan_new_txcoeff_done), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE new_txcoeff_req_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(new_txcoeff_req_reg1_reg_0), + .Q(new_txcoeff_req_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE new_txcoeff_req_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(new_txcoeff_req_reg1), + .Q(new_txcoeff_req_reg2), + .R(RST_CPLLRESET)); + LUT3 #( + .INIT(8'hEA)) + preset_done_i_1__1 + (.I0(\FSM_onehot_fsm_reg_n_0_[2] ), + .I1(\FSM_onehot_fsm_reg_n_0_[1] ), + .I2(preset_valid_reg2), + .O(preset_done_1)); + FDRE #( + .INIT(1'b0)) + preset_done_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(preset_done_1), + .Q(preset_done), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \preset_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\preset_reg1_reg[2]_0 [0]), + .Q(preset_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \preset_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\preset_reg1_reg[2]_0 [1]), + .Q(preset_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \preset_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\preset_reg1_reg[2]_0 [2]), + .Q(preset_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \preset_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(preset_reg1[0]), + .Q(preset_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \preset_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(preset_reg1[1]), + .Q(preset_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \preset_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(preset_reg1[2]), + .Q(preset_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE preset_valid_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_preset_valid), + .Q(preset_valid_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE preset_valid_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(preset_valid_reg1), + .Q(preset_valid_reg2), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'hA800FFFFA8000000)) + rxeq_adapt_done_i_1__1 + (.I0(rxeqscan_new_txcoeff_done), + .I1(rxeq_adapt_done_reg_reg_1), + .I2(rxeqscan_adapt_done), + .I3(Q[3]), + .I4(rxeq_adapt_done_reg), + .I5(USER_RXEQ_ADAPT_DONE), + .O(new_txcoeff_done_reg_0)); + LUT6 #( + .INIT(64'hFF00FF33AA00A800)) + rxeq_adapt_done_reg_i_1__1 + (.I0(rxeqscan_adapt_done), + .I1(rxeq_adapt_done_reg_reg), + .I2(rxeqscan_new_txcoeff_done), + .I3(Q[3]), + .I4(rxeq_adapt_done_reg_reg_0), + .I5(rxeq_adapt_done_reg_reg_1), + .O(adapt_done_reg_0)); + (* SOFT_HLUTNM = "soft_lutpair141" *) + LUT2 #( + .INIT(4'h2)) + rxeq_new_txcoeff_req_i_1__1 + (.I0(Q[3]), + .I1(rxeqscan_new_txcoeff_done), + .O(rxeq_new_txcoeff_req)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [0]), + .Q(txcoeff_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [10]), + .Q(txcoeff_reg1[10]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [11]), + .Q(txcoeff_reg1[11]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [12]), + .Q(txcoeff_reg1[12]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [13]), + .Q(txcoeff_reg1[13]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [14]), + .Q(txcoeff_reg1[14]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [15]), + .Q(txcoeff_reg1[15]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[16] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [16]), + .Q(txcoeff_reg1[16]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[17] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [17]), + .Q(txcoeff_reg1[17]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [1]), + .Q(txcoeff_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [2]), + .Q(txcoeff_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [3]), + .Q(txcoeff_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [4]), + .Q(txcoeff_reg1[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [5]), + .Q(txcoeff_reg1[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [6]), + .Q(txcoeff_reg1[6]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [7]), + .Q(txcoeff_reg1[7]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [8]), + .Q(txcoeff_reg1[8]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [9]), + .Q(txcoeff_reg1[9]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[0]), + .Q(txcoeff_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[10]), + .Q(txcoeff_reg2[10]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[11]), + .Q(txcoeff_reg2[11]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[12]), + .Q(txcoeff_reg2[12]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[13]), + .Q(txcoeff_reg2[13]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[14]), + .Q(txcoeff_reg2[14]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[15]), + .Q(txcoeff_reg2[15]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[16] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[16]), + .Q(txcoeff_reg2[16]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[17] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[17]), + .Q(txcoeff_reg2[17]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[1]), + .Q(txcoeff_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[2]), + .Q(txcoeff_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[3]), + .Q(txcoeff_reg2[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[4]), + .Q(txcoeff_reg2[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[5]), + .Q(txcoeff_reg2[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[6]), + .Q(txcoeff_reg2[6]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[7]), + .Q(txcoeff_reg2[7]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[8]), + .Q(txcoeff_reg2[8]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[9]), + .Q(txcoeff_reg2[9]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txpreset_reg1_reg[3]_0 [0]), + .Q(txpreset_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txpreset_reg1_reg[3]_0 [1]), + .Q(txpreset_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txpreset_reg1_reg[3]_0 [2]), + .Q(txpreset_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txpreset_reg1_reg[3]_0 [3]), + .Q(txpreset_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txpreset_reg1[0]), + .Q(txpreset_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txpreset_reg1[1]), + .Q(txpreset_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txpreset_reg1[2]), + .Q(txpreset_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txpreset_reg1[3]), + .Q(txpreset_reg2[3]), + .R(RST_CPLLRESET)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_rxeq_scan" *) +module pcie_7x_0_pcie_7x_0_rxeq_scan_57 + (D, + rxeq_new_txcoeff_req, + adapt_done_reg_0, + new_txcoeff_done_reg_0, + RST_CPLLRESET, + pipe_pclk_in, + new_txcoeff_req_reg1_reg_0, + rxeq_preset_valid, + out, + Q, + \FSM_onehot_fsm_rx_reg[5] , + rxeq_adapt_done_reg_reg, + rxeq_adapt_done_reg_reg_0, + rxeq_adapt_done_reg_reg_1, + rxeq_adapt_done_reg, + USER_RXEQ_ADAPT_DONE, + \preset_reg1_reg[2]_0 , + \txpreset_reg1_reg[3]_0 , + \txcoeff_reg1_reg[17]_0 , + \fs_reg1_reg[5]_0 , + \lf_reg1_reg[5]_0 ); + output [2:0]D; + output rxeq_new_txcoeff_req; + output adapt_done_reg_0; + output new_txcoeff_done_reg_0; + input RST_CPLLRESET; + input pipe_pclk_in; + input new_txcoeff_req_reg1_reg_0; + input rxeq_preset_valid; + input [1:0]out; + input [4:0]Q; + input [2:0]\FSM_onehot_fsm_rx_reg[5] ; + input rxeq_adapt_done_reg_reg; + input rxeq_adapt_done_reg_reg_0; + input rxeq_adapt_done_reg_reg_1; + input rxeq_adapt_done_reg; + input USER_RXEQ_ADAPT_DONE; + input [2:0]\preset_reg1_reg[2]_0 ; + input [3:0]\txpreset_reg1_reg[3]_0 ; + input [17:0]\txcoeff_reg1_reg[17]_0 ; + input [5:0]\fs_reg1_reg[5]_0 ; + input [5:0]\lf_reg1_reg[5]_0 ; + + wire [2:0]D; + wire \FSM_onehot_fsm[1]_i_1__2_n_0 ; + wire \FSM_onehot_fsm[2]_i_1__2_n_0 ; + wire \FSM_onehot_fsm[3]_i_1__2_n_0 ; + wire \FSM_onehot_fsm[3]_i_2__0_n_0 ; + wire \FSM_onehot_fsm[4]_i_10__0_n_0 ; + wire \FSM_onehot_fsm[4]_i_11__0_n_0 ; + wire \FSM_onehot_fsm[4]_i_12__0_n_0 ; + wire \FSM_onehot_fsm[4]_i_13__0_n_0 ; + wire \FSM_onehot_fsm[4]_i_1__2_n_0 ; + wire \FSM_onehot_fsm[4]_i_2__1_n_0 ; + wire \FSM_onehot_fsm[4]_i_3__0_n_0 ; + wire \FSM_onehot_fsm[4]_i_4__0_n_0 ; + wire \FSM_onehot_fsm[4]_i_5__0_n_0 ; + wire \FSM_onehot_fsm[4]_i_6__0_n_0 ; + wire \FSM_onehot_fsm[4]_i_7__0_n_0 ; + wire \FSM_onehot_fsm[4]_i_8__0_n_0 ; + wire \FSM_onehot_fsm[4]_i_9__0_n_0 ; + wire \FSM_onehot_fsm_reg_n_0_[1] ; + wire \FSM_onehot_fsm_reg_n_0_[2] ; + wire \FSM_onehot_fsm_reg_n_0_[3] ; + wire \FSM_onehot_fsm_reg_n_0_[4] ; + wire \FSM_onehot_fsm_rx[6]_i_2__0_n_0 ; + wire [2:0]\FSM_onehot_fsm_rx_reg[5] ; + wire [4:0]Q; + wire RST_CPLLRESET; + wire USER_RXEQ_ADAPT_DONE; + wire adapt_done; + wire adapt_done_cnt_i_1__0_n_0; + wire adapt_done_cnt_i_2__0_n_0; + wire adapt_done_cnt_reg_n_0; + wire adapt_done_reg_0; + wire [21:0]converge_cnt; + wire [21:1]converge_cnt0; + wire [21:0]converge_cnt_0; + wire \converge_cnt_reg[12]_i_2__0_n_0 ; + wire \converge_cnt_reg[12]_i_2__0_n_1 ; + wire \converge_cnt_reg[12]_i_2__0_n_2 ; + wire \converge_cnt_reg[12]_i_2__0_n_3 ; + wire \converge_cnt_reg[16]_i_2__0_n_0 ; + wire \converge_cnt_reg[16]_i_2__0_n_1 ; + wire \converge_cnt_reg[16]_i_2__0_n_2 ; + wire \converge_cnt_reg[16]_i_2__0_n_3 ; + wire \converge_cnt_reg[20]_i_2__0_n_0 ; + wire \converge_cnt_reg[20]_i_2__0_n_1 ; + wire \converge_cnt_reg[20]_i_2__0_n_2 ; + wire \converge_cnt_reg[20]_i_2__0_n_3 ; + wire \converge_cnt_reg[4]_i_2__0_n_0 ; + wire \converge_cnt_reg[4]_i_2__0_n_1 ; + wire \converge_cnt_reg[4]_i_2__0_n_2 ; + wire \converge_cnt_reg[4]_i_2__0_n_3 ; + wire \converge_cnt_reg[8]_i_2__0_n_0 ; + wire \converge_cnt_reg[8]_i_2__0_n_1 ; + wire \converge_cnt_reg[8]_i_2__0_n_2 ; + wire \converge_cnt_reg[8]_i_2__0_n_3 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]fs_reg1; + wire [5:0]\fs_reg1_reg[5]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]fs_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]lf_reg1; + wire [5:0]\lf_reg1_reg[5]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]lf_reg2; + wire new_txcoeff_done; + wire new_txcoeff_done_reg_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire new_txcoeff_req_reg1; + wire new_txcoeff_req_reg1_reg_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire new_txcoeff_req_reg2; + wire [1:0]out; + wire pipe_pclk_in; + wire preset_done; + wire preset_done_1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [2:0]preset_reg1; + wire [2:0]\preset_reg1_reg[2]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [2:0]preset_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire preset_valid_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire preset_valid_reg2; + wire rxeq_adapt_done_reg; + wire rxeq_adapt_done_reg_reg; + wire rxeq_adapt_done_reg_reg_0; + wire rxeq_adapt_done_reg_reg_1; + wire rxeq_new_txcoeff_req; + wire rxeq_preset_valid; + wire rxeqscan_adapt_done; + wire rxeqscan_new_txcoeff_done; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [17:0]txcoeff_reg1; + wire [17:0]\txcoeff_reg1_reg[17]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [17:0]txcoeff_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]txpreset_reg1; + wire [3:0]\txpreset_reg1_reg[3]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]txpreset_reg2; + wire [3:0]\NLW_converge_cnt_reg[21]_i_2__0_CO_UNCONNECTED ; + wire [3:1]\NLW_converge_cnt_reg[21]_i_2__0_O_UNCONNECTED ; + + LUT6 #( + .INIT(64'h0F00AFAF0F11AFBB)) + \FSM_onehot_fsm[1]_i_1__2 + (.I0(\FSM_onehot_fsm_reg_n_0_[4] ), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(preset_valid_reg2), + .I3(\FSM_onehot_fsm_reg_n_0_[2] ), + .I4(new_txcoeff_req_reg2), + .I5(\FSM_onehot_fsm_reg_n_0_[1] ), + .O(\FSM_onehot_fsm[1]_i_1__2_n_0 )); + LUT3 #( + .INIT(8'hA8)) + \FSM_onehot_fsm[2]_i_1__2 + (.I0(preset_valid_reg2), + .I1(\FSM_onehot_fsm_reg_n_0_[2] ), + .I2(\FSM_onehot_fsm_reg_n_0_[1] ), + .O(\FSM_onehot_fsm[2]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'h04FF040404040404)) + \FSM_onehot_fsm[3]_i_1__2 + (.I0(\FSM_onehot_fsm[3]_i_2__0_n_0 ), + .I1(\FSM_onehot_fsm[4]_i_2__1_n_0 ), + .I2(\FSM_onehot_fsm[4]_i_3__0_n_0 ), + .I3(preset_valid_reg2), + .I4(new_txcoeff_req_reg2), + .I5(\FSM_onehot_fsm_reg_n_0_[1] ), + .O(\FSM_onehot_fsm[3]_i_1__2_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair98" *) + LUT4 #( + .INIT(16'h04FF)) + \FSM_onehot_fsm[3]_i_2__0 + (.I0(out[0]), + .I1(out[1]), + .I2(adapt_done_cnt_reg_n_0), + .I3(\FSM_onehot_fsm_reg_n_0_[3] ), + .O(\FSM_onehot_fsm[3]_i_2__0_n_0 )); + LUT5 #( + .INIT(32'hFFBFFFFF)) + \FSM_onehot_fsm[4]_i_10__0 + (.I0(\FSM_onehot_fsm[4]_i_13__0_n_0 ), + .I1(converge_cnt[2]), + .I2(converge_cnt[20]), + .I3(converge_cnt[10]), + .I4(converge_cnt[0]), + .O(\FSM_onehot_fsm[4]_i_10__0_n_0 )); + LUT4 #( + .INIT(16'hEFFF)) + \FSM_onehot_fsm[4]_i_11__0 + (.I0(converge_cnt[2]), + .I1(converge_cnt[6]), + .I2(converge_cnt[8]), + .I3(converge_cnt[3]), + .O(\FSM_onehot_fsm[4]_i_11__0_n_0 )); + LUT5 #( + .INIT(32'hEFFFFFFF)) + \FSM_onehot_fsm[4]_i_12__0 + (.I0(\FSM_onehot_fsm[4]_i_13__0_n_0 ), + .I1(converge_cnt[14]), + .I2(converge_cnt[10]), + .I3(converge_cnt[21]), + .I4(converge_cnt[19]), + .O(\FSM_onehot_fsm[4]_i_12__0_n_0 )); + LUT4 #( + .INIT(16'hFF7F)) + \FSM_onehot_fsm[4]_i_13__0 + (.I0(converge_cnt[16]), + .I1(converge_cnt[11]), + .I2(converge_cnt[9]), + .I3(converge_cnt[5]), + .O(\FSM_onehot_fsm[4]_i_13__0_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFD0FFD0FFD0)) + \FSM_onehot_fsm[4]_i_1__2 + (.I0(\FSM_onehot_fsm[4]_i_2__1_n_0 ), + .I1(\FSM_onehot_fsm[4]_i_3__0_n_0 ), + .I2(\FSM_onehot_fsm_reg_n_0_[3] ), + .I3(\FSM_onehot_fsm[4]_i_4__0_n_0 ), + .I4(\FSM_onehot_fsm_reg_n_0_[4] ), + .I5(new_txcoeff_req_reg2), + .O(\FSM_onehot_fsm[4]_i_1__2_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFFFFFFFBF)) + \FSM_onehot_fsm[4]_i_2__1 + (.I0(\FSM_onehot_fsm[4]_i_5__0_n_0 ), + .I1(converge_cnt[17]), + .I2(converge_cnt[18]), + .I3(converge_cnt[21]), + .I4(converge_cnt[8]), + .I5(\FSM_onehot_fsm[4]_i_6__0_n_0 ), + .O(\FSM_onehot_fsm[4]_i_2__1_n_0 )); + LUT6 #( + .INIT(64'h0000000001000000)) + \FSM_onehot_fsm[4]_i_3__0 + (.I0(\FSM_onehot_fsm[4]_i_7__0_n_0 ), + .I1(converge_cnt[7]), + .I2(converge_cnt[1]), + .I3(converge_cnt[15]), + .I4(converge_cnt[13]), + .I5(\FSM_onehot_fsm[4]_i_8__0_n_0 ), + .O(\FSM_onehot_fsm[4]_i_3__0_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair97" *) + LUT4 #( + .INIT(16'h0400)) + \FSM_onehot_fsm[4]_i_4__0 + (.I0(out[0]), + .I1(out[1]), + .I2(adapt_done_cnt_reg_n_0), + .I3(\FSM_onehot_fsm_reg_n_0_[3] ), + .O(\FSM_onehot_fsm[4]_i_4__0_n_0 )); + LUT4 #( + .INIT(16'hFFF2)) + \FSM_onehot_fsm[4]_i_5__0 + (.I0(out[1]), + .I1(out[0]), + .I2(converge_cnt[7]), + .I3(converge_cnt[1]), + .O(\FSM_onehot_fsm[4]_i_5__0_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFFFFFFFFB)) + \FSM_onehot_fsm[4]_i_6__0 + (.I0(\FSM_onehot_fsm[4]_i_9__0_n_0 ), + .I1(converge_cnt[19]), + .I2(converge_cnt[6]), + .I3(converge_cnt[3]), + .I4(converge_cnt[4]), + .I5(\FSM_onehot_fsm[4]_i_10__0_n_0 ), + .O(\FSM_onehot_fsm[4]_i_6__0_n_0 )); + LUT4 #( + .INIT(16'hDFFF)) + \FSM_onehot_fsm[4]_i_7__0 + (.I0(out[1]), + .I1(out[0]), + .I2(converge_cnt[17]), + .I3(converge_cnt[18]), + .O(\FSM_onehot_fsm[4]_i_7__0_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFFFFFFFFE)) + \FSM_onehot_fsm[4]_i_8__0 + (.I0(\FSM_onehot_fsm[4]_i_11__0_n_0 ), + .I1(converge_cnt[12]), + .I2(converge_cnt[20]), + .I3(converge_cnt[0]), + .I4(converge_cnt[4]), + .I5(\FSM_onehot_fsm[4]_i_12__0_n_0 ), + .O(\FSM_onehot_fsm[4]_i_8__0_n_0 )); + LUT4 #( + .INIT(16'hFFDF)) + \FSM_onehot_fsm[4]_i_9__0 + (.I0(converge_cnt[15]), + .I1(converge_cnt[13]), + .I2(converge_cnt[14]), + .I3(converge_cnt[12]), + .O(\FSM_onehot_fsm[4]_i_9__0_n_0 )); + (* FSM_ENCODED_STATES = "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001" *) + FDSE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[1]_i_1__2_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[1] ), + .S(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[2]_i_1__2_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[3]_i_1__2_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[4]_i_1__2_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h40FF4040)) + \FSM_onehot_fsm_rx[2]_i_1__0 + (.I0(out[1]), + .I1(Q[0]), + .I2(out[0]), + .I3(preset_done), + .I4(Q[1]), + .O(D[0])); + LUT6 #( + .INIT(64'hF444444444444444)) + \FSM_onehot_fsm_rx[5]_i_1__0 + (.I0(rxeqscan_new_txcoeff_done), + .I1(Q[3]), + .I2(\FSM_onehot_fsm_rx_reg[5] [2]), + .I3(\FSM_onehot_fsm_rx_reg[5] [0]), + .I4(\FSM_onehot_fsm_rx_reg[5] [1]), + .I5(Q[2]), + .O(D[1])); + LUT6 #( + .INIT(64'hFFFFFFFFFFE0E0E0)) + \FSM_onehot_fsm_rx[6]_i_1__0 + (.I0(out[1]), + .I1(out[0]), + .I2(Q[4]), + .I3(preset_done), + .I4(Q[1]), + .I5(\FSM_onehot_fsm_rx[6]_i_2__0_n_0 ), + .O(D[2])); + (* SOFT_HLUTNM = "soft_lutpair99" *) + LUT2 #( + .INIT(4'h8)) + \FSM_onehot_fsm_rx[6]_i_2__0 + (.I0(rxeqscan_new_txcoeff_done), + .I1(Q[3]), + .O(\FSM_onehot_fsm_rx[6]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'h000A0A0AF0F0F8F0)) + adapt_done_cnt_i_1__0 + (.I0(\FSM_onehot_fsm_reg_n_0_[4] ), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .I5(adapt_done_cnt_i_2__0_n_0), + .O(adapt_done_cnt_i_1__0_n_0)); + LUT5 #( + .INIT(32'h00FF0101)) + adapt_done_cnt_i_2__0 + (.I0(\FSM_onehot_fsm_reg_n_0_[3] ), + .I1(\FSM_onehot_fsm_reg_n_0_[2] ), + .I2(\FSM_onehot_fsm_reg_n_0_[1] ), + .I3(new_txcoeff_req_reg2), + .I4(\FSM_onehot_fsm_reg_n_0_[4] ), + .O(adapt_done_cnt_i_2__0_n_0)); + FDRE #( + .INIT(1'b0)) + adapt_done_cnt_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(adapt_done_cnt_i_1__0_n_0), + .Q(adapt_done_cnt_reg_n_0), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'hF8000000)) + adapt_done_i_1__0 + (.I0(out[1]), + .I1(out[0]), + .I2(adapt_done_cnt_reg_n_0), + .I3(new_txcoeff_req_reg2), + .I4(\FSM_onehot_fsm_reg_n_0_[4] ), + .O(adapt_done)); + FDRE #( + .INIT(1'b0)) + adapt_done_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(adapt_done), + .Q(rxeqscan_adapt_done), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h44444044)) + \converge_cnt[0]_i_1__1 + (.I0(converge_cnt[0]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[0])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[10]_i_1__0 + (.I0(converge_cnt0[10]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[10])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[11]_i_1__0 + (.I0(converge_cnt0[11]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[11])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[12]_i_1__0 + (.I0(converge_cnt0[12]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[12])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[13]_i_1__0 + (.I0(converge_cnt0[13]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[13])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[14]_i_1__0 + (.I0(converge_cnt0[14]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[14])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[15]_i_1__0 + (.I0(converge_cnt0[15]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[15])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[16]_i_1__0 + (.I0(converge_cnt0[16]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[16])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[17]_i_1__0 + (.I0(converge_cnt0[17]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[17])); + (* SOFT_HLUTNM = "soft_lutpair97" *) + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[18]_i_1__0 + (.I0(converge_cnt0[18]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[18])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[19]_i_1__0 + (.I0(converge_cnt0[19]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[19])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[1]_i_1__0 + (.I0(converge_cnt0[1]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[1])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[20]_i_1__0 + (.I0(converge_cnt0[20]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[20])); + (* SOFT_HLUTNM = "soft_lutpair98" *) + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[21]_i_1__0 + (.I0(converge_cnt0[21]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[21])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[2]_i_1__0 + (.I0(converge_cnt0[2]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[2])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[3]_i_1__0 + (.I0(converge_cnt0[3]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[3])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[4]_i_1__0 + (.I0(converge_cnt0[4]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[4])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[5]_i_1__0 + (.I0(converge_cnt0[5]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[5])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[6]_i_1__0 + (.I0(converge_cnt0[6]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[6])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[7]_i_1__0 + (.I0(converge_cnt0[7]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[7])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[8]_i_1__0 + (.I0(converge_cnt0[8]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[8])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[9]_i_1__0 + (.I0(converge_cnt0[9]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[9])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[0]), + .Q(converge_cnt[0]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[10]), + .Q(converge_cnt[10]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[11]), + .Q(converge_cnt[11]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[12]), + .Q(converge_cnt[12]), + .R(RST_CPLLRESET)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 \converge_cnt_reg[12]_i_2__0 + (.CI(\converge_cnt_reg[8]_i_2__0_n_0 ), + .CO({\converge_cnt_reg[12]_i_2__0_n_0 ,\converge_cnt_reg[12]_i_2__0_n_1 ,\converge_cnt_reg[12]_i_2__0_n_2 ,\converge_cnt_reg[12]_i_2__0_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O(converge_cnt0[12:9]), + .S(converge_cnt[12:9])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[13]), + .Q(converge_cnt[13]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[14]), + .Q(converge_cnt[14]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[15]), + .Q(converge_cnt[15]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[16] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[16]), + .Q(converge_cnt[16]), + .R(RST_CPLLRESET)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 \converge_cnt_reg[16]_i_2__0 + (.CI(\converge_cnt_reg[12]_i_2__0_n_0 ), + .CO({\converge_cnt_reg[16]_i_2__0_n_0 ,\converge_cnt_reg[16]_i_2__0_n_1 ,\converge_cnt_reg[16]_i_2__0_n_2 ,\converge_cnt_reg[16]_i_2__0_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O(converge_cnt0[16:13]), + .S(converge_cnt[16:13])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[17] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[17]), + .Q(converge_cnt[17]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[18] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[18]), + .Q(converge_cnt[18]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[19] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[19]), + .Q(converge_cnt[19]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[1]), + .Q(converge_cnt[1]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[20] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[20]), + .Q(converge_cnt[20]), + .R(RST_CPLLRESET)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 \converge_cnt_reg[20]_i_2__0 + (.CI(\converge_cnt_reg[16]_i_2__0_n_0 ), + .CO({\converge_cnt_reg[20]_i_2__0_n_0 ,\converge_cnt_reg[20]_i_2__0_n_1 ,\converge_cnt_reg[20]_i_2__0_n_2 ,\converge_cnt_reg[20]_i_2__0_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O(converge_cnt0[20:17]), + .S(converge_cnt[20:17])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[21] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[21]), + .Q(converge_cnt[21]), + .R(RST_CPLLRESET)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 \converge_cnt_reg[21]_i_2__0 + (.CI(\converge_cnt_reg[20]_i_2__0_n_0 ), + .CO(\NLW_converge_cnt_reg[21]_i_2__0_CO_UNCONNECTED [3:0]), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\NLW_converge_cnt_reg[21]_i_2__0_O_UNCONNECTED [3:1],converge_cnt0[21]}), + .S({1'b0,1'b0,1'b0,converge_cnt[21]})); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[2]), + .Q(converge_cnt[2]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[3]), + .Q(converge_cnt[3]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[4]), + .Q(converge_cnt[4]), + .R(RST_CPLLRESET)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 \converge_cnt_reg[4]_i_2__0 + (.CI(1'b0), + .CO({\converge_cnt_reg[4]_i_2__0_n_0 ,\converge_cnt_reg[4]_i_2__0_n_1 ,\converge_cnt_reg[4]_i_2__0_n_2 ,\converge_cnt_reg[4]_i_2__0_n_3 }), + .CYINIT(converge_cnt[0]), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O(converge_cnt0[4:1]), + .S(converge_cnt[4:1])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[5]), + .Q(converge_cnt[5]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[6]), + .Q(converge_cnt[6]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[7]), + .Q(converge_cnt[7]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[8]), + .Q(converge_cnt[8]), + .R(RST_CPLLRESET)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 \converge_cnt_reg[8]_i_2__0 + (.CI(\converge_cnt_reg[4]_i_2__0_n_0 ), + .CO({\converge_cnt_reg[8]_i_2__0_n_0 ,\converge_cnt_reg[8]_i_2__0_n_1 ,\converge_cnt_reg[8]_i_2__0_n_2 ,\converge_cnt_reg[8]_i_2__0_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O(converge_cnt0[8:5]), + .S(converge_cnt[8:5])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[9]), + .Q(converge_cnt[9]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\fs_reg1_reg[5]_0 [0]), + .Q(fs_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\fs_reg1_reg[5]_0 [1]), + .Q(fs_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\fs_reg1_reg[5]_0 [2]), + .Q(fs_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\fs_reg1_reg[5]_0 [3]), + .Q(fs_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg1_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\fs_reg1_reg[5]_0 [4]), + .Q(fs_reg1[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg1_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\fs_reg1_reg[5]_0 [5]), + .Q(fs_reg1[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fs_reg1[0]), + .Q(fs_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fs_reg1[1]), + .Q(fs_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fs_reg1[2]), + .Q(fs_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fs_reg1[3]), + .Q(fs_reg2[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fs_reg1[4]), + .Q(fs_reg2[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fs_reg1[5]), + .Q(fs_reg2[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\lf_reg1_reg[5]_0 [0]), + .Q(lf_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\lf_reg1_reg[5]_0 [1]), + .Q(lf_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\lf_reg1_reg[5]_0 [2]), + .Q(lf_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\lf_reg1_reg[5]_0 [3]), + .Q(lf_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg1_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\lf_reg1_reg[5]_0 [4]), + .Q(lf_reg1[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg1_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\lf_reg1_reg[5]_0 [5]), + .Q(lf_reg1[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(lf_reg1[0]), + .Q(lf_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(lf_reg1[1]), + .Q(lf_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(lf_reg1[2]), + .Q(lf_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(lf_reg1[3]), + .Q(lf_reg2[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(lf_reg1[4]), + .Q(lf_reg2[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(lf_reg1[5]), + .Q(lf_reg2[5]), + .R(RST_CPLLRESET)); + LUT2 #( + .INIT(4'h8)) + new_txcoeff_done_i_1__0 + (.I0(\FSM_onehot_fsm_reg_n_0_[4] ), + .I1(new_txcoeff_req_reg2), + .O(new_txcoeff_done)); + FDRE #( + .INIT(1'b0)) + new_txcoeff_done_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(new_txcoeff_done), + .Q(rxeqscan_new_txcoeff_done), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE new_txcoeff_req_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(new_txcoeff_req_reg1_reg_0), + .Q(new_txcoeff_req_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE new_txcoeff_req_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(new_txcoeff_req_reg1), + .Q(new_txcoeff_req_reg2), + .R(RST_CPLLRESET)); + LUT3 #( + .INIT(8'hEA)) + preset_done_i_1__0 + (.I0(\FSM_onehot_fsm_reg_n_0_[2] ), + .I1(\FSM_onehot_fsm_reg_n_0_[1] ), + .I2(preset_valid_reg2), + .O(preset_done_1)); + FDRE #( + .INIT(1'b0)) + preset_done_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(preset_done_1), + .Q(preset_done), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \preset_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\preset_reg1_reg[2]_0 [0]), + .Q(preset_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \preset_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\preset_reg1_reg[2]_0 [1]), + .Q(preset_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \preset_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\preset_reg1_reg[2]_0 [2]), + .Q(preset_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \preset_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(preset_reg1[0]), + .Q(preset_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \preset_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(preset_reg1[1]), + .Q(preset_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \preset_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(preset_reg1[2]), + .Q(preset_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE preset_valid_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_preset_valid), + .Q(preset_valid_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE preset_valid_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(preset_valid_reg1), + .Q(preset_valid_reg2), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'hA800FFFFA8000000)) + rxeq_adapt_done_i_1__0 + (.I0(rxeqscan_new_txcoeff_done), + .I1(rxeq_adapt_done_reg_reg_1), + .I2(rxeqscan_adapt_done), + .I3(Q[3]), + .I4(rxeq_adapt_done_reg), + .I5(USER_RXEQ_ADAPT_DONE), + .O(new_txcoeff_done_reg_0)); + LUT6 #( + .INIT(64'hFF00FF33AA00A800)) + rxeq_adapt_done_reg_i_1__0 + (.I0(rxeqscan_adapt_done), + .I1(rxeq_adapt_done_reg_reg), + .I2(rxeqscan_new_txcoeff_done), + .I3(Q[3]), + .I4(rxeq_adapt_done_reg_reg_0), + .I5(rxeq_adapt_done_reg_reg_1), + .O(adapt_done_reg_0)); + (* SOFT_HLUTNM = "soft_lutpair99" *) + LUT2 #( + .INIT(4'h2)) + rxeq_new_txcoeff_req_i_1__0 + (.I0(Q[3]), + .I1(rxeqscan_new_txcoeff_done), + .O(rxeq_new_txcoeff_req)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [0]), + .Q(txcoeff_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [10]), + .Q(txcoeff_reg1[10]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [11]), + .Q(txcoeff_reg1[11]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [12]), + .Q(txcoeff_reg1[12]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [13]), + .Q(txcoeff_reg1[13]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [14]), + .Q(txcoeff_reg1[14]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [15]), + .Q(txcoeff_reg1[15]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[16] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [16]), + .Q(txcoeff_reg1[16]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[17] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [17]), + .Q(txcoeff_reg1[17]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [1]), + .Q(txcoeff_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [2]), + .Q(txcoeff_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [3]), + .Q(txcoeff_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [4]), + .Q(txcoeff_reg1[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [5]), + .Q(txcoeff_reg1[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [6]), + .Q(txcoeff_reg1[6]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [7]), + .Q(txcoeff_reg1[7]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [8]), + .Q(txcoeff_reg1[8]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [9]), + .Q(txcoeff_reg1[9]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[0]), + .Q(txcoeff_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[10]), + .Q(txcoeff_reg2[10]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[11]), + .Q(txcoeff_reg2[11]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[12]), + .Q(txcoeff_reg2[12]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[13]), + .Q(txcoeff_reg2[13]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[14]), + .Q(txcoeff_reg2[14]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[15]), + .Q(txcoeff_reg2[15]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[16] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[16]), + .Q(txcoeff_reg2[16]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[17] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[17]), + .Q(txcoeff_reg2[17]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[1]), + .Q(txcoeff_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[2]), + .Q(txcoeff_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[3]), + .Q(txcoeff_reg2[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[4]), + .Q(txcoeff_reg2[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[5]), + .Q(txcoeff_reg2[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[6]), + .Q(txcoeff_reg2[6]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[7]), + .Q(txcoeff_reg2[7]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[8]), + .Q(txcoeff_reg2[8]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[9]), + .Q(txcoeff_reg2[9]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txpreset_reg1_reg[3]_0 [0]), + .Q(txpreset_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txpreset_reg1_reg[3]_0 [1]), + .Q(txpreset_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txpreset_reg1_reg[3]_0 [2]), + .Q(txpreset_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txpreset_reg1_reg[3]_0 [3]), + .Q(txpreset_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txpreset_reg1[0]), + .Q(txpreset_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txpreset_reg1[1]), + .Q(txpreset_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txpreset_reg1[2]), + .Q(txpreset_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txpreset_reg1[3]), + .Q(txpreset_reg2[3]), + .R(RST_CPLLRESET)); +endmodule + +(* ORIG_REF_NAME = "pcie_7x_0_rxeq_scan" *) +module pcie_7x_0_pcie_7x_0_rxeq_scan_59 + (D, + rxeq_new_txcoeff_req, + adapt_done_reg_0, + new_txcoeff_done_reg_0, + RST_CPLLRESET, + pipe_pclk_in, + new_txcoeff_req_reg1_reg_0, + rxeq_preset_valid, + out, + Q, + \FSM_onehot_fsm_rx_reg[5] , + rxeq_adapt_done_reg_reg, + rxeq_adapt_done_reg_reg_0, + rxeq_adapt_done_reg_reg_1, + rxeq_adapt_done_reg, + USER_RXEQ_ADAPT_DONE, + \preset_reg1_reg[2]_0 , + \txpreset_reg1_reg[3]_0 , + \txcoeff_reg1_reg[17]_0 , + \fs_reg1_reg[5]_0 , + \lf_reg1_reg[5]_0 ); + output [2:0]D; + output rxeq_new_txcoeff_req; + output adapt_done_reg_0; + output new_txcoeff_done_reg_0; + input RST_CPLLRESET; + input pipe_pclk_in; + input new_txcoeff_req_reg1_reg_0; + input rxeq_preset_valid; + input [1:0]out; + input [4:0]Q; + input [2:0]\FSM_onehot_fsm_rx_reg[5] ; + input rxeq_adapt_done_reg_reg; + input rxeq_adapt_done_reg_reg_0; + input rxeq_adapt_done_reg_reg_1; + input rxeq_adapt_done_reg; + input USER_RXEQ_ADAPT_DONE; + input [2:0]\preset_reg1_reg[2]_0 ; + input [3:0]\txpreset_reg1_reg[3]_0 ; + input [17:0]\txcoeff_reg1_reg[17]_0 ; + input [5:0]\fs_reg1_reg[5]_0 ; + input [5:0]\lf_reg1_reg[5]_0 ; + + wire [2:0]D; + wire \FSM_onehot_fsm[1]_i_1__1_n_0 ; + wire \FSM_onehot_fsm[2]_i_1__1_n_0 ; + wire \FSM_onehot_fsm[3]_i_1__1_n_0 ; + wire \FSM_onehot_fsm[3]_i_2_n_0 ; + wire \FSM_onehot_fsm[4]_i_10_n_0 ; + wire \FSM_onehot_fsm[4]_i_11_n_0 ; + wire \FSM_onehot_fsm[4]_i_12_n_0 ; + wire \FSM_onehot_fsm[4]_i_13_n_0 ; + wire \FSM_onehot_fsm[4]_i_1__1_n_0 ; + wire \FSM_onehot_fsm[4]_i_2__0_n_0 ; + wire \FSM_onehot_fsm[4]_i_3_n_0 ; + wire \FSM_onehot_fsm[4]_i_4_n_0 ; + wire \FSM_onehot_fsm[4]_i_5_n_0 ; + wire \FSM_onehot_fsm[4]_i_6_n_0 ; + wire \FSM_onehot_fsm[4]_i_7_n_0 ; + wire \FSM_onehot_fsm[4]_i_8_n_0 ; + wire \FSM_onehot_fsm[4]_i_9_n_0 ; + wire \FSM_onehot_fsm_reg_n_0_[1] ; + wire \FSM_onehot_fsm_reg_n_0_[2] ; + wire \FSM_onehot_fsm_reg_n_0_[3] ; + wire \FSM_onehot_fsm_reg_n_0_[4] ; + wire \FSM_onehot_fsm_rx[6]_i_2_n_0 ; + wire [2:0]\FSM_onehot_fsm_rx_reg[5] ; + wire [4:0]Q; + wire RST_CPLLRESET; + wire USER_RXEQ_ADAPT_DONE; + wire adapt_done; + wire adapt_done_cnt_i_1_n_0; + wire adapt_done_cnt_i_2_n_0; + wire adapt_done_cnt_reg_n_0; + wire adapt_done_reg_0; + wire [21:0]converge_cnt; + wire [21:1]converge_cnt0; + wire [21:0]converge_cnt_0; + wire \converge_cnt_reg[12]_i_2_n_0 ; + wire \converge_cnt_reg[12]_i_2_n_1 ; + wire \converge_cnt_reg[12]_i_2_n_2 ; + wire \converge_cnt_reg[12]_i_2_n_3 ; + wire \converge_cnt_reg[16]_i_2_n_0 ; + wire \converge_cnt_reg[16]_i_2_n_1 ; + wire \converge_cnt_reg[16]_i_2_n_2 ; + wire \converge_cnt_reg[16]_i_2_n_3 ; + wire \converge_cnt_reg[20]_i_2_n_0 ; + wire \converge_cnt_reg[20]_i_2_n_1 ; + wire \converge_cnt_reg[20]_i_2_n_2 ; + wire \converge_cnt_reg[20]_i_2_n_3 ; + wire \converge_cnt_reg[4]_i_2_n_0 ; + wire \converge_cnt_reg[4]_i_2_n_1 ; + wire \converge_cnt_reg[4]_i_2_n_2 ; + wire \converge_cnt_reg[4]_i_2_n_3 ; + wire \converge_cnt_reg[8]_i_2_n_0 ; + wire \converge_cnt_reg[8]_i_2_n_1 ; + wire \converge_cnt_reg[8]_i_2_n_2 ; + wire \converge_cnt_reg[8]_i_2_n_3 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]fs_reg1; + wire [5:0]\fs_reg1_reg[5]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]fs_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]lf_reg1; + wire [5:0]\lf_reg1_reg[5]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [5:0]lf_reg2; + wire new_txcoeff_done; + wire new_txcoeff_done_reg_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire new_txcoeff_req_reg1; + wire new_txcoeff_req_reg1_reg_0; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire new_txcoeff_req_reg2; + wire [1:0]out; + wire pipe_pclk_in; + wire preset_done; + wire preset_done_1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [2:0]preset_reg1; + wire [2:0]\preset_reg1_reg[2]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [2:0]preset_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire preset_valid_reg1; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire preset_valid_reg2; + wire rxeq_adapt_done_reg; + wire rxeq_adapt_done_reg_reg; + wire rxeq_adapt_done_reg_reg_0; + wire rxeq_adapt_done_reg_reg_1; + wire rxeq_new_txcoeff_req; + wire rxeq_preset_valid; + wire rxeqscan_adapt_done; + wire rxeqscan_new_txcoeff_done; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [17:0]txcoeff_reg1; + wire [17:0]\txcoeff_reg1_reg[17]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [17:0]txcoeff_reg2; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]txpreset_reg1; + wire [3:0]\txpreset_reg1_reg[3]_0 ; + (* SHIFT_EXTRACT = "NO" *) (* async_reg = "true" *) wire [3:0]txpreset_reg2; + wire [3:0]\NLW_converge_cnt_reg[21]_i_2_CO_UNCONNECTED ; + wire [3:1]\NLW_converge_cnt_reg[21]_i_2_O_UNCONNECTED ; + + LUT6 #( + .INIT(64'h0F00AFAF0F11AFBB)) + \FSM_onehot_fsm[1]_i_1__1 + (.I0(\FSM_onehot_fsm_reg_n_0_[4] ), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(preset_valid_reg2), + .I3(\FSM_onehot_fsm_reg_n_0_[2] ), + .I4(new_txcoeff_req_reg2), + .I5(\FSM_onehot_fsm_reg_n_0_[1] ), + .O(\FSM_onehot_fsm[1]_i_1__1_n_0 )); + LUT3 #( + .INIT(8'hA8)) + \FSM_onehot_fsm[2]_i_1__1 + (.I0(preset_valid_reg2), + .I1(\FSM_onehot_fsm_reg_n_0_[2] ), + .I2(\FSM_onehot_fsm_reg_n_0_[1] ), + .O(\FSM_onehot_fsm[2]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'h04FF040404040404)) + \FSM_onehot_fsm[3]_i_1__1 + (.I0(\FSM_onehot_fsm[3]_i_2_n_0 ), + .I1(\FSM_onehot_fsm[4]_i_2__0_n_0 ), + .I2(\FSM_onehot_fsm[4]_i_3_n_0 ), + .I3(preset_valid_reg2), + .I4(new_txcoeff_req_reg2), + .I5(\FSM_onehot_fsm_reg_n_0_[1] ), + .O(\FSM_onehot_fsm[3]_i_1__1_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair46" *) + LUT4 #( + .INIT(16'h04FF)) + \FSM_onehot_fsm[3]_i_2 + (.I0(out[0]), + .I1(out[1]), + .I2(adapt_done_cnt_reg_n_0), + .I3(\FSM_onehot_fsm_reg_n_0_[3] ), + .O(\FSM_onehot_fsm[3]_i_2_n_0 )); + LUT5 #( + .INIT(32'hFFBFFFFF)) + \FSM_onehot_fsm[4]_i_10 + (.I0(\FSM_onehot_fsm[4]_i_13_n_0 ), + .I1(converge_cnt[2]), + .I2(converge_cnt[20]), + .I3(converge_cnt[10]), + .I4(converge_cnt[0]), + .O(\FSM_onehot_fsm[4]_i_10_n_0 )); + LUT4 #( + .INIT(16'hEFFF)) + \FSM_onehot_fsm[4]_i_11 + (.I0(converge_cnt[2]), + .I1(converge_cnt[6]), + .I2(converge_cnt[8]), + .I3(converge_cnt[3]), + .O(\FSM_onehot_fsm[4]_i_11_n_0 )); + LUT5 #( + .INIT(32'hEFFFFFFF)) + \FSM_onehot_fsm[4]_i_12 + (.I0(\FSM_onehot_fsm[4]_i_13_n_0 ), + .I1(converge_cnt[14]), + .I2(converge_cnt[10]), + .I3(converge_cnt[21]), + .I4(converge_cnt[19]), + .O(\FSM_onehot_fsm[4]_i_12_n_0 )); + LUT4 #( + .INIT(16'hFF7F)) + \FSM_onehot_fsm[4]_i_13 + (.I0(converge_cnt[16]), + .I1(converge_cnt[11]), + .I2(converge_cnt[9]), + .I3(converge_cnt[5]), + .O(\FSM_onehot_fsm[4]_i_13_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFD0FFD0FFD0)) + \FSM_onehot_fsm[4]_i_1__1 + (.I0(\FSM_onehot_fsm[4]_i_2__0_n_0 ), + .I1(\FSM_onehot_fsm[4]_i_3_n_0 ), + .I2(\FSM_onehot_fsm_reg_n_0_[3] ), + .I3(\FSM_onehot_fsm[4]_i_4_n_0 ), + .I4(\FSM_onehot_fsm_reg_n_0_[4] ), + .I5(new_txcoeff_req_reg2), + .O(\FSM_onehot_fsm[4]_i_1__1_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFFFFFFFBF)) + \FSM_onehot_fsm[4]_i_2__0 + (.I0(\FSM_onehot_fsm[4]_i_5_n_0 ), + .I1(converge_cnt[17]), + .I2(converge_cnt[18]), + .I3(converge_cnt[21]), + .I4(converge_cnt[8]), + .I5(\FSM_onehot_fsm[4]_i_6_n_0 ), + .O(\FSM_onehot_fsm[4]_i_2__0_n_0 )); + LUT6 #( + .INIT(64'h0000000001000000)) + \FSM_onehot_fsm[4]_i_3 + (.I0(\FSM_onehot_fsm[4]_i_7_n_0 ), + .I1(converge_cnt[7]), + .I2(converge_cnt[1]), + .I3(converge_cnt[15]), + .I4(converge_cnt[13]), + .I5(\FSM_onehot_fsm[4]_i_8_n_0 ), + .O(\FSM_onehot_fsm[4]_i_3_n_0 )); + (* SOFT_HLUTNM = "soft_lutpair45" *) + LUT4 #( + .INIT(16'h0400)) + \FSM_onehot_fsm[4]_i_4 + (.I0(out[0]), + .I1(out[1]), + .I2(adapt_done_cnt_reg_n_0), + .I3(\FSM_onehot_fsm_reg_n_0_[3] ), + .O(\FSM_onehot_fsm[4]_i_4_n_0 )); + LUT4 #( + .INIT(16'hFFF2)) + \FSM_onehot_fsm[4]_i_5 + (.I0(out[1]), + .I1(out[0]), + .I2(converge_cnt[7]), + .I3(converge_cnt[1]), + .O(\FSM_onehot_fsm[4]_i_5_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFFFFFFFFB)) + \FSM_onehot_fsm[4]_i_6 + (.I0(\FSM_onehot_fsm[4]_i_9_n_0 ), + .I1(converge_cnt[19]), + .I2(converge_cnt[6]), + .I3(converge_cnt[3]), + .I4(converge_cnt[4]), + .I5(\FSM_onehot_fsm[4]_i_10_n_0 ), + .O(\FSM_onehot_fsm[4]_i_6_n_0 )); + LUT4 #( + .INIT(16'hDFFF)) + \FSM_onehot_fsm[4]_i_7 + (.I0(out[1]), + .I1(out[0]), + .I2(converge_cnt[17]), + .I3(converge_cnt[18]), + .O(\FSM_onehot_fsm[4]_i_7_n_0 )); + LUT6 #( + .INIT(64'hFFFFFFFFFFFFFFFE)) + \FSM_onehot_fsm[4]_i_8 + (.I0(\FSM_onehot_fsm[4]_i_11_n_0 ), + .I1(converge_cnt[12]), + .I2(converge_cnt[20]), + .I3(converge_cnt[0]), + .I4(converge_cnt[4]), + .I5(\FSM_onehot_fsm[4]_i_12_n_0 ), + .O(\FSM_onehot_fsm[4]_i_8_n_0 )); + LUT4 #( + .INIT(16'hFFDF)) + \FSM_onehot_fsm[4]_i_9 + (.I0(converge_cnt[15]), + .I1(converge_cnt[13]), + .I2(converge_cnt[14]), + .I3(converge_cnt[12]), + .O(\FSM_onehot_fsm[4]_i_9_n_0 )); + (* FSM_ENCODED_STATES = "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001" *) + FDSE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[1]_i_1__1_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[1] ), + .S(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[2]_i_1__1_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[2] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[3]_i_1__1_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[3] ), + .R(RST_CPLLRESET)); + (* FSM_ENCODED_STATES = "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001" *) + FDRE #( + .INIT(1'b0)) + \FSM_onehot_fsm_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\FSM_onehot_fsm[4]_i_1__1_n_0 ), + .Q(\FSM_onehot_fsm_reg_n_0_[4] ), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h40FF4040)) + \FSM_onehot_fsm_rx[2]_i_1 + (.I0(out[1]), + .I1(Q[0]), + .I2(out[0]), + .I3(preset_done), + .I4(Q[1]), + .O(D[0])); + LUT6 #( + .INIT(64'hF444444444444444)) + \FSM_onehot_fsm_rx[5]_i_1 + (.I0(rxeqscan_new_txcoeff_done), + .I1(Q[3]), + .I2(\FSM_onehot_fsm_rx_reg[5] [2]), + .I3(\FSM_onehot_fsm_rx_reg[5] [0]), + .I4(\FSM_onehot_fsm_rx_reg[5] [1]), + .I5(Q[2]), + .O(D[1])); + LUT6 #( + .INIT(64'hFFFFFFFFFFE0E0E0)) + \FSM_onehot_fsm_rx[6]_i_1 + (.I0(out[1]), + .I1(out[0]), + .I2(Q[4]), + .I3(preset_done), + .I4(Q[1]), + .I5(\FSM_onehot_fsm_rx[6]_i_2_n_0 ), + .O(D[2])); + (* SOFT_HLUTNM = "soft_lutpair47" *) + LUT2 #( + .INIT(4'h8)) + \FSM_onehot_fsm_rx[6]_i_2 + (.I0(rxeqscan_new_txcoeff_done), + .I1(Q[3]), + .O(\FSM_onehot_fsm_rx[6]_i_2_n_0 )); + LUT6 #( + .INIT(64'h000A0A0AF0F0F8F0)) + adapt_done_cnt_i_1 + (.I0(\FSM_onehot_fsm_reg_n_0_[4] ), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .I5(adapt_done_cnt_i_2_n_0), + .O(adapt_done_cnt_i_1_n_0)); + LUT5 #( + .INIT(32'h00FF0101)) + adapt_done_cnt_i_2 + (.I0(\FSM_onehot_fsm_reg_n_0_[3] ), + .I1(\FSM_onehot_fsm_reg_n_0_[2] ), + .I2(\FSM_onehot_fsm_reg_n_0_[1] ), + .I3(new_txcoeff_req_reg2), + .I4(\FSM_onehot_fsm_reg_n_0_[4] ), + .O(adapt_done_cnt_i_2_n_0)); + FDRE #( + .INIT(1'b0)) + adapt_done_cnt_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(adapt_done_cnt_i_1_n_0), + .Q(adapt_done_cnt_reg_n_0), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'hF8000000)) + adapt_done_i_1 + (.I0(out[1]), + .I1(out[0]), + .I2(adapt_done_cnt_reg_n_0), + .I3(new_txcoeff_req_reg2), + .I4(\FSM_onehot_fsm_reg_n_0_[4] ), + .O(adapt_done)); + FDRE #( + .INIT(1'b0)) + adapt_done_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(adapt_done), + .Q(rxeqscan_adapt_done), + .R(RST_CPLLRESET)); + LUT5 #( + .INIT(32'h44444044)) + \converge_cnt[0]_i_1 + (.I0(converge_cnt[0]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[0])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[10]_i_1 + (.I0(converge_cnt0[10]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[10])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[11]_i_1 + (.I0(converge_cnt0[11]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[11])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[12]_i_1 + (.I0(converge_cnt0[12]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[12])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[13]_i_1 + (.I0(converge_cnt0[13]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[13])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[14]_i_1 + (.I0(converge_cnt0[14]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[14])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[15]_i_1 + (.I0(converge_cnt0[15]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[15])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[16]_i_1 + (.I0(converge_cnt0[16]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[16])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[17]_i_1 + (.I0(converge_cnt0[17]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[17])); + (* SOFT_HLUTNM = "soft_lutpair45" *) + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[18]_i_1 + (.I0(converge_cnt0[18]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[18])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[19]_i_1 + (.I0(converge_cnt0[19]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[19])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[1]_i_1 + (.I0(converge_cnt0[1]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[1])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[20]_i_1 + (.I0(converge_cnt0[20]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[20])); + (* SOFT_HLUTNM = "soft_lutpair46" *) + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[21]_i_1 + (.I0(converge_cnt0[21]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[21])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[2]_i_1 + (.I0(converge_cnt0[2]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[2])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[3]_i_1 + (.I0(converge_cnt0[3]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[3])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[4]_i_1 + (.I0(converge_cnt0[4]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[4])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[5]_i_1 + (.I0(converge_cnt0[5]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[5])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[6]_i_1 + (.I0(converge_cnt0[6]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[6])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[7]_i_1 + (.I0(converge_cnt0[7]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[7])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[8]_i_1 + (.I0(converge_cnt0[8]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[8])); + LUT5 #( + .INIT(32'h88888088)) + \converge_cnt[9]_i_1 + (.I0(converge_cnt0[9]), + .I1(\FSM_onehot_fsm_reg_n_0_[3] ), + .I2(adapt_done_cnt_reg_n_0), + .I3(out[1]), + .I4(out[0]), + .O(converge_cnt_0[9])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[0]), + .Q(converge_cnt[0]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[10]), + .Q(converge_cnt[10]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[11]), + .Q(converge_cnt[11]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[12]), + .Q(converge_cnt[12]), + .R(RST_CPLLRESET)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 \converge_cnt_reg[12]_i_2 + (.CI(\converge_cnt_reg[8]_i_2_n_0 ), + .CO({\converge_cnt_reg[12]_i_2_n_0 ,\converge_cnt_reg[12]_i_2_n_1 ,\converge_cnt_reg[12]_i_2_n_2 ,\converge_cnt_reg[12]_i_2_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O(converge_cnt0[12:9]), + .S(converge_cnt[12:9])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[13]), + .Q(converge_cnt[13]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[14]), + .Q(converge_cnt[14]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[15]), + .Q(converge_cnt[15]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[16] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[16]), + .Q(converge_cnt[16]), + .R(RST_CPLLRESET)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 \converge_cnt_reg[16]_i_2 + (.CI(\converge_cnt_reg[12]_i_2_n_0 ), + .CO({\converge_cnt_reg[16]_i_2_n_0 ,\converge_cnt_reg[16]_i_2_n_1 ,\converge_cnt_reg[16]_i_2_n_2 ,\converge_cnt_reg[16]_i_2_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O(converge_cnt0[16:13]), + .S(converge_cnt[16:13])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[17] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[17]), + .Q(converge_cnt[17]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[18] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[18]), + .Q(converge_cnt[18]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[19] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[19]), + .Q(converge_cnt[19]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[1]), + .Q(converge_cnt[1]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[20] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[20]), + .Q(converge_cnt[20]), + .R(RST_CPLLRESET)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 \converge_cnt_reg[20]_i_2 + (.CI(\converge_cnt_reg[16]_i_2_n_0 ), + .CO({\converge_cnt_reg[20]_i_2_n_0 ,\converge_cnt_reg[20]_i_2_n_1 ,\converge_cnt_reg[20]_i_2_n_2 ,\converge_cnt_reg[20]_i_2_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O(converge_cnt0[20:17]), + .S(converge_cnt[20:17])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[21] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[21]), + .Q(converge_cnt[21]), + .R(RST_CPLLRESET)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 \converge_cnt_reg[21]_i_2 + (.CI(\converge_cnt_reg[20]_i_2_n_0 ), + .CO(\NLW_converge_cnt_reg[21]_i_2_CO_UNCONNECTED [3:0]), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O({\NLW_converge_cnt_reg[21]_i_2_O_UNCONNECTED [3:1],converge_cnt0[21]}), + .S({1'b0,1'b0,1'b0,converge_cnt[21]})); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[2]), + .Q(converge_cnt[2]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[3]), + .Q(converge_cnt[3]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[4]), + .Q(converge_cnt[4]), + .R(RST_CPLLRESET)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 \converge_cnt_reg[4]_i_2 + (.CI(1'b0), + .CO({\converge_cnt_reg[4]_i_2_n_0 ,\converge_cnt_reg[4]_i_2_n_1 ,\converge_cnt_reg[4]_i_2_n_2 ,\converge_cnt_reg[4]_i_2_n_3 }), + .CYINIT(converge_cnt[0]), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O(converge_cnt0[4:1]), + .S(converge_cnt[4:1])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[5]), + .Q(converge_cnt[5]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[6]), + .Q(converge_cnt[6]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[7]), + .Q(converge_cnt[7]), + .R(RST_CPLLRESET)); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[8]), + .Q(converge_cnt[8]), + .R(RST_CPLLRESET)); + (* ADDER_THRESHOLD = "35" *) + CARRY4 \converge_cnt_reg[8]_i_2 + (.CI(\converge_cnt_reg[4]_i_2_n_0 ), + .CO({\converge_cnt_reg[8]_i_2_n_0 ,\converge_cnt_reg[8]_i_2_n_1 ,\converge_cnt_reg[8]_i_2_n_2 ,\converge_cnt_reg[8]_i_2_n_3 }), + .CYINIT(1'b0), + .DI({1'b0,1'b0,1'b0,1'b0}), + .O(converge_cnt0[8:5]), + .S(converge_cnt[8:5])); + FDRE #( + .INIT(1'b0)) + \converge_cnt_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(converge_cnt_0[9]), + .Q(converge_cnt[9]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\fs_reg1_reg[5]_0 [0]), + .Q(fs_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\fs_reg1_reg[5]_0 [1]), + .Q(fs_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\fs_reg1_reg[5]_0 [2]), + .Q(fs_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\fs_reg1_reg[5]_0 [3]), + .Q(fs_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg1_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\fs_reg1_reg[5]_0 [4]), + .Q(fs_reg1[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg1_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\fs_reg1_reg[5]_0 [5]), + .Q(fs_reg1[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fs_reg1[0]), + .Q(fs_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fs_reg1[1]), + .Q(fs_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fs_reg1[2]), + .Q(fs_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fs_reg1[3]), + .Q(fs_reg2[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fs_reg1[4]), + .Q(fs_reg2[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \fs_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(fs_reg1[5]), + .Q(fs_reg2[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\lf_reg1_reg[5]_0 [0]), + .Q(lf_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\lf_reg1_reg[5]_0 [1]), + .Q(lf_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\lf_reg1_reg[5]_0 [2]), + .Q(lf_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\lf_reg1_reg[5]_0 [3]), + .Q(lf_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg1_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\lf_reg1_reg[5]_0 [4]), + .Q(lf_reg1[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg1_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\lf_reg1_reg[5]_0 [5]), + .Q(lf_reg1[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(lf_reg1[0]), + .Q(lf_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(lf_reg1[1]), + .Q(lf_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(lf_reg1[2]), + .Q(lf_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(lf_reg1[3]), + .Q(lf_reg2[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(lf_reg1[4]), + .Q(lf_reg2[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \lf_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(lf_reg1[5]), + .Q(lf_reg2[5]), + .R(RST_CPLLRESET)); + LUT2 #( + .INIT(4'h8)) + new_txcoeff_done_i_1 + (.I0(\FSM_onehot_fsm_reg_n_0_[4] ), + .I1(new_txcoeff_req_reg2), + .O(new_txcoeff_done)); + FDRE #( + .INIT(1'b0)) + new_txcoeff_done_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(new_txcoeff_done), + .Q(rxeqscan_new_txcoeff_done), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE new_txcoeff_req_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(new_txcoeff_req_reg1_reg_0), + .Q(new_txcoeff_req_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE new_txcoeff_req_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(new_txcoeff_req_reg1), + .Q(new_txcoeff_req_reg2), + .R(RST_CPLLRESET)); + LUT3 #( + .INIT(8'hEA)) + preset_done_i_1 + (.I0(\FSM_onehot_fsm_reg_n_0_[2] ), + .I1(\FSM_onehot_fsm_reg_n_0_[1] ), + .I2(preset_valid_reg2), + .O(preset_done_1)); + FDRE #( + .INIT(1'b0)) + preset_done_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(preset_done_1), + .Q(preset_done), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \preset_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\preset_reg1_reg[2]_0 [0]), + .Q(preset_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \preset_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\preset_reg1_reg[2]_0 [1]), + .Q(preset_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \preset_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\preset_reg1_reg[2]_0 [2]), + .Q(preset_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \preset_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(preset_reg1[0]), + .Q(preset_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \preset_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(preset_reg1[1]), + .Q(preset_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \preset_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(preset_reg1[2]), + .Q(preset_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE preset_valid_reg1_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(rxeq_preset_valid), + .Q(preset_valid_reg1), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE preset_valid_reg2_reg + (.C(pipe_pclk_in), + .CE(1'b1), + .D(preset_valid_reg1), + .Q(preset_valid_reg2), + .R(RST_CPLLRESET)); + LUT6 #( + .INIT(64'hA800FFFFA8000000)) + rxeq_adapt_done_i_1 + (.I0(rxeqscan_new_txcoeff_done), + .I1(rxeq_adapt_done_reg_reg_1), + .I2(rxeqscan_adapt_done), + .I3(Q[3]), + .I4(rxeq_adapt_done_reg), + .I5(USER_RXEQ_ADAPT_DONE), + .O(new_txcoeff_done_reg_0)); + LUT6 #( + .INIT(64'hFF00FF33AA00A800)) + rxeq_adapt_done_reg_i_1 + (.I0(rxeqscan_adapt_done), + .I1(rxeq_adapt_done_reg_reg), + .I2(rxeqscan_new_txcoeff_done), + .I3(Q[3]), + .I4(rxeq_adapt_done_reg_reg_0), + .I5(rxeq_adapt_done_reg_reg_1), + .O(adapt_done_reg_0)); + (* SOFT_HLUTNM = "soft_lutpair47" *) + LUT2 #( + .INIT(4'h2)) + rxeq_new_txcoeff_req_i_1 + (.I0(Q[3]), + .I1(rxeqscan_new_txcoeff_done), + .O(rxeq_new_txcoeff_req)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [0]), + .Q(txcoeff_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [10]), + .Q(txcoeff_reg1[10]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [11]), + .Q(txcoeff_reg1[11]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [12]), + .Q(txcoeff_reg1[12]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [13]), + .Q(txcoeff_reg1[13]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [14]), + .Q(txcoeff_reg1[14]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [15]), + .Q(txcoeff_reg1[15]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[16] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [16]), + .Q(txcoeff_reg1[16]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[17] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [17]), + .Q(txcoeff_reg1[17]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [1]), + .Q(txcoeff_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [2]), + .Q(txcoeff_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [3]), + .Q(txcoeff_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [4]), + .Q(txcoeff_reg1[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [5]), + .Q(txcoeff_reg1[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [6]), + .Q(txcoeff_reg1[6]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [7]), + .Q(txcoeff_reg1[7]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [8]), + .Q(txcoeff_reg1[8]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg1_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txcoeff_reg1_reg[17]_0 [9]), + .Q(txcoeff_reg1[9]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[0]), + .Q(txcoeff_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[10] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[10]), + .Q(txcoeff_reg2[10]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[11] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[11]), + .Q(txcoeff_reg2[11]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[12] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[12]), + .Q(txcoeff_reg2[12]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[13] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[13]), + .Q(txcoeff_reg2[13]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[14] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[14]), + .Q(txcoeff_reg2[14]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[15] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[15]), + .Q(txcoeff_reg2[15]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[16] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[16]), + .Q(txcoeff_reg2[16]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[17] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[17]), + .Q(txcoeff_reg2[17]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[1]), + .Q(txcoeff_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[2]), + .Q(txcoeff_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[3]), + .Q(txcoeff_reg2[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[4] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[4]), + .Q(txcoeff_reg2[4]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[5] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[5]), + .Q(txcoeff_reg2[5]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[6] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[6]), + .Q(txcoeff_reg2[6]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[7] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[7]), + .Q(txcoeff_reg2[7]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[8] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[8]), + .Q(txcoeff_reg2[8]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txcoeff_reg2_reg[9] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txcoeff_reg1[9]), + .Q(txcoeff_reg2[9]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg1_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txpreset_reg1_reg[3]_0 [0]), + .Q(txpreset_reg1[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg1_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txpreset_reg1_reg[3]_0 [1]), + .Q(txpreset_reg1[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg1_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txpreset_reg1_reg[3]_0 [2]), + .Q(txpreset_reg1[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg1_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(\txpreset_reg1_reg[3]_0 [3]), + .Q(txpreset_reg1[3]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg2_reg[0] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txpreset_reg1[0]), + .Q(txpreset_reg2[0]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg2_reg[1] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txpreset_reg1[1]), + .Q(txpreset_reg2[1]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg2_reg[2] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txpreset_reg1[2]), + .Q(txpreset_reg2[2]), + .R(RST_CPLLRESET)); + (* ASYNC_REG *) + (* KEEP = "yes" *) + (* SHIFT_EXTRACT = "NO" *) + FDRE \txpreset_reg2_reg[3] + (.C(pipe_pclk_in), + .CE(1'b1), + .D(txpreset_reg1[3]), + .Q(txpreset_reg2[3]), + .R(RST_CPLLRESET)); +endmodule + +(* DEST_SYNC_FF = "2" *) (* INIT_SYNC_FF = "0" *) (* SIM_ASSERT_CHK = "0" *) +(* SRC_INPUT_REG = "0" *) (* VERSION = "0" *) (* XPM_MODULE = "TRUE" *) +(* keep_hierarchy = "true" *) (* xpm_cdc = "SINGLE" *) +module pcie_7x_0_xpm_cdc_single + (src_clk, + src_in, + dest_clk, + dest_out); + input src_clk; + input src_in; + input dest_clk; + output dest_out; + + wire dest_clk; + wire src_in; + (* RTL_KEEP = "true" *) (* async_reg = "true" *) (* xpm_cdc = "SINGLE" *) wire [1:0]syncstages_ff; + + assign dest_out = syncstages_ff[1]; + (* ASYNC_REG *) + (* KEEP = "true" *) + (* XPM_CDC = "SINGLE" *) + FDRE \syncstages_ff_reg[0] + (.C(dest_clk), + .CE(1'b1), + .D(src_in), + .Q(syncstages_ff[0]), + .R(1'b0)); + (* ASYNC_REG *) + (* KEEP = "true" *) + (* XPM_CDC = "SINGLE" *) + FDRE \syncstages_ff_reg[1] + (.C(dest_clk), + .CE(1'b1), + .D(syncstages_ff[0]), + .Q(syncstages_ff[1]), + .R(1'b0)); +endmodule + +(* DEST_SYNC_FF = "2" *) (* INIT_SYNC_FF = "0" *) (* ORIG_REF_NAME = "xpm_cdc_single" *) +(* SIM_ASSERT_CHK = "0" *) (* SRC_INPUT_REG = "0" *) (* VERSION = "0" *) +(* XPM_MODULE = "TRUE" *) (* keep_hierarchy = "true" *) (* xpm_cdc = "SINGLE" *) +module pcie_7x_0_xpm_cdc_single__2 + (src_clk, + src_in, + dest_clk, + dest_out); + input src_clk; + input src_in; + input dest_clk; + output dest_out; + + wire dest_clk; + wire src_in; + (* RTL_KEEP = "true" *) (* async_reg = "true" *) (* xpm_cdc = "SINGLE" *) wire [1:0]syncstages_ff; + + assign dest_out = syncstages_ff[1]; + (* ASYNC_REG *) + (* KEEP = "true" *) + (* XPM_CDC = "SINGLE" *) + FDRE \syncstages_ff_reg[0] + (.C(dest_clk), + .CE(1'b1), + .D(src_in), + .Q(syncstages_ff[0]), + .R(1'b0)); + (* ASYNC_REG *) + (* KEEP = "true" *) + (* XPM_CDC = "SINGLE" *) + FDRE \syncstages_ff_reg[1] + (.C(dest_clk), + .CE(1'b1), + .D(syncstages_ff[0]), + .Q(syncstages_ff[1]), + .R(1'b0)); +endmodule +`ifndef GLBL +`define GLBL +`timescale 1 ps / 1 ps + +module glbl (); + + parameter ROC_WIDTH = 100000; + parameter TOC_WIDTH = 0; + parameter GRES_WIDTH = 10000; + parameter GRES_START = 10000; + +//-------- STARTUP Globals -------------- + wire GSR; + wire GTS; + wire GWE; + wire PRLD; + wire GRESTORE; + tri1 p_up_tmp; + tri (weak1, strong0) PLL_LOCKG = p_up_tmp; + + wire PROGB_GLBL; + wire CCLKO_GLBL; + wire FCSBO_GLBL; + wire [3:0] DO_GLBL; + wire [3:0] DI_GLBL; + + reg GSR_int; + reg GTS_int; + reg PRLD_int; + reg GRESTORE_int; + +//-------- JTAG Globals -------------- + wire JTAG_TDO_GLBL; + wire JTAG_TCK_GLBL; + wire JTAG_TDI_GLBL; + wire JTAG_TMS_GLBL; + wire JTAG_TRST_GLBL; + + reg JTAG_CAPTURE_GLBL; + reg JTAG_RESET_GLBL; + reg JTAG_SHIFT_GLBL; + reg JTAG_UPDATE_GLBL; + reg JTAG_RUNTEST_GLBL; + + reg JTAG_SEL1_GLBL = 0; + reg JTAG_SEL2_GLBL = 0 ; + reg JTAG_SEL3_GLBL = 0; + reg JTAG_SEL4_GLBL = 0; + + reg JTAG_USER_TDO1_GLBL = 1'bz; + reg JTAG_USER_TDO2_GLBL = 1'bz; + reg JTAG_USER_TDO3_GLBL = 1'bz; + reg JTAG_USER_TDO4_GLBL = 1'bz; + + assign (strong1, weak0) GSR = GSR_int; + assign (strong1, weak0) GTS = GTS_int; + assign (weak1, weak0) PRLD = PRLD_int; + assign (strong1, weak0) GRESTORE = GRESTORE_int; + + initial begin + GSR_int = 1'b1; + PRLD_int = 1'b1; + #(ROC_WIDTH) + GSR_int = 1'b0; + PRLD_int = 1'b0; + end + + initial begin + GTS_int = 1'b1; + #(TOC_WIDTH) + GTS_int = 1'b0; + end + + initial begin + GRESTORE_int = 1'b0; + #(GRES_START); + GRESTORE_int = 1'b1; + #(GRES_WIDTH); + GRESTORE_int = 1'b0; + end + +endmodule +`endif diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0_sim_netlist.vhdl b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0_sim_netlist.vhdl new file mode 100644 index 0000000..de1f92b --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0_sim_netlist.vhdl @@ -0,0 +1,79081 @@ +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- -------------------------------------------------------------------------------- +-- Tool Version: Vivado v.2020.2 (win64) Build 3064766 Wed Nov 18 09:12:45 MST 2020 +-- Date : Wed Jul 20 13:38:01 2022 +-- Host : DESKTOP-4NLVFC8 running 64-bit major release (build 9200) +-- Command : write_vhdl -force -mode funcsim -rename_top pcie_7x_0 -prefix +-- pcie_7x_0_ pcie_7x_0_sim_netlist.vhdl +-- Design : pcie_7x_0 +-- Purpose : This VHDL netlist is a functional simulation representation of the design and should not be modified or +-- synthesized. This netlist cannot be used for SDF annotated simulation. +-- Device : xc7z045ffg900-2 +-- -------------------------------------------------------------------------------- +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity \pcie_7x_0_BRAM_TDP_MACRO_viv_\ is + port ( + rdata : out STD_LOGIC_VECTOR ( 5 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_tx_wen : in STD_LOGIC; + mim_tx_ren : in STD_LOGIC; + MIMTXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMTXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + wdata : in STD_LOGIC_VECTOR ( 5 downto 0 ) + ); +end \pcie_7x_0_BRAM_TDP_MACRO_viv_\; + +architecture STRUCTURE of \pcie_7x_0_BRAM_TDP_MACRO_viv_\ is + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_60\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_61\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_75\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\ : STD_LOGIC_VECTOR ( 8 downto 0 ); + attribute BOX_TYPE : string; + attribute BOX_TYPE of \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : label is "PRIMITIVE"; +begin +\genblk5_0.bram36_tdp_bl.bram36_tdp_bl\: unisim.vcomponents.RAMB36E1 + generic map( + DOA_REG => 0, + DOB_REG => 1, + EN_ECC_READ => false, + EN_ECC_WRITE => false, + INITP_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_40 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_41 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_42 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_43 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_44 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_45 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_46 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_47 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_48 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_49 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_50 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_51 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_52 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_53 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_54 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_55 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_56 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_57 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_58 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_59 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_60 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_61 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_62 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_63 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_64 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_65 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_66 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_67 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_68 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_69 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_70 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_71 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_72 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_73 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_74 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_75 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_76 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_77 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_78 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_79 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_A => X"000000000", + INIT_B => X"000000000", + INIT_FILE => "NONE", + IS_CLKARDCLK_INVERTED => '0', + IS_CLKBWRCLK_INVERTED => '0', + IS_ENARDEN_INVERTED => '0', + IS_ENBWREN_INVERTED => '0', + IS_RSTRAMARSTRAM_INVERTED => '0', + IS_RSTRAMB_INVERTED => '0', + IS_RSTREGARSTREG_INVERTED => '0', + IS_RSTREGB_INVERTED => '0', + RAM_EXTENSION_A => "NONE", + RAM_EXTENSION_B => "NONE", + RAM_MODE => "TDP", + RDADDR_COLLISION_HWCONFIG => "DELAYED_WRITE", + READ_WIDTH_A => 9, + READ_WIDTH_B => 9, + RSTREG_PRIORITY_A => "RSTREG", + RSTREG_PRIORITY_B => "RSTREG", + SIM_COLLISION_CHECK => "ALL", + SIM_DEVICE => "7SERIES", + SRVAL_A => X"000000000", + SRVAL_B => X"000000000", + WRITE_MODE_A => "NO_CHANGE", + WRITE_MODE_B => "WRITE_FIRST", + WRITE_WIDTH_A => 9, + WRITE_WIDTH_B => 9 + ) + port map ( + ADDRARDADDR(15) => '1', + ADDRARDADDR(14 downto 3) => MIMTXWADDR(11 downto 0), + ADDRARDADDR(2 downto 0) => B"111", + ADDRBWRADDR(15) => '1', + ADDRBWRADDR(14 downto 3) => MIMTXRADDR(11 downto 0), + ADDRBWRADDR(2 downto 0) => B"111", + CASCADEINA => '0', + CASCADEINB => '0', + CASCADEOUTA => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\, + CASCADEOUTB => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\, + CLKARDCLK => pipe_userclk1_in, + CLKBWRCLK => pipe_userclk1_in, + DBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\, + DIADI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\(31 downto 8), + DIADI(7 downto 6) => B"00", + DIADI(5 downto 0) => wdata(5 downto 0), + DIBDI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\(31 downto 8), + DIBDI(7 downto 0) => B"00000000", + DIPADIP(3 downto 0) => B"0000", + DIPBDIP(3 downto 0) => B"0000", + DOADO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\(31 downto 8), + DOADO(7) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\, + DOADO(6) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\, + DOADO(5) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\, + DOADO(4) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\, + DOADO(3) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\, + DOADO(2) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\, + DOADO(1) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\, + DOADO(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\, + DOBDO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\(31 downto 8), + DOBDO(7) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_60\, + DOBDO(6) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_61\, + DOBDO(5 downto 0) => rdata(5 downto 0), + DOPADOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\(3 downto 1), + DOPADOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\, + DOPBDOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\(3 downto 1), + DOPBDOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_75\, + ECCPARITY(7 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\(7 downto 0), + ENARDEN => mim_tx_wen, + ENBWREN => mim_tx_ren, + INJECTDBITERR => '0', + INJECTSBITERR => '0', + RDADDRECC(8 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\(8 downto 0), + REGCEAREGCE => '0', + REGCEB => '1', + RSTRAMARSTRAM => '0', + RSTRAMB => '0', + RSTREGARSTREG => '0', + RSTREGB => '0', + SBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\, + WEA(3 downto 0) => B"1111", + WEBWE(7 downto 0) => B"00000000" + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_BRAM_TDP_MACRO_11 is + port ( + rdata : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_tx_wen : in STD_LOGIC; + mim_tx_ren : in STD_LOGIC; + MIMTXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMTXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + wdata : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_BRAM_TDP_MACRO_11 : entity is "BRAM_TDP_MACRO"; +end pcie_7x_0_BRAM_TDP_MACRO_11; + +architecture STRUCTURE of pcie_7x_0_BRAM_TDP_MACRO_11 is + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\ : STD_LOGIC_VECTOR ( 8 downto 0 ); + attribute BOX_TYPE : string; + attribute BOX_TYPE of \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : label is "PRIMITIVE"; +begin +\genblk5_0.bram36_tdp_bl.bram36_tdp_bl\: unisim.vcomponents.RAMB36E1 + generic map( + DOA_REG => 0, + DOB_REG => 1, + EN_ECC_READ => false, + EN_ECC_WRITE => false, + INITP_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_40 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_41 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_42 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_43 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_44 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_45 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_46 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_47 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_48 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_49 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_50 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_51 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_52 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_53 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_54 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_55 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_56 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_57 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_58 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_59 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_60 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_61 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_62 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_63 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_64 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_65 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_66 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_67 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_68 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_69 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_70 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_71 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_72 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_73 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_74 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_75 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_76 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_77 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_78 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_79 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_A => X"000000000", + INIT_B => X"000000000", + INIT_FILE => "NONE", + IS_CLKARDCLK_INVERTED => '0', + IS_CLKBWRCLK_INVERTED => '0', + IS_ENARDEN_INVERTED => '0', + IS_ENBWREN_INVERTED => '0', + IS_RSTRAMARSTRAM_INVERTED => '0', + IS_RSTRAMB_INVERTED => '0', + IS_RSTREGARSTREG_INVERTED => '0', + IS_RSTREGB_INVERTED => '0', + RAM_EXTENSION_A => "NONE", + RAM_EXTENSION_B => "NONE", + RAM_MODE => "TDP", + RDADDR_COLLISION_HWCONFIG => "DELAYED_WRITE", + READ_WIDTH_A => 9, + READ_WIDTH_B => 9, + RSTREG_PRIORITY_A => "RSTREG", + RSTREG_PRIORITY_B => "RSTREG", + SIM_COLLISION_CHECK => "ALL", + SIM_DEVICE => "7SERIES", + SRVAL_A => X"000000000", + SRVAL_B => X"000000000", + WRITE_MODE_A => "NO_CHANGE", + WRITE_MODE_B => "WRITE_FIRST", + WRITE_WIDTH_A => 9, + WRITE_WIDTH_B => 9 + ) + port map ( + ADDRARDADDR(15) => '1', + ADDRARDADDR(14 downto 3) => MIMTXWADDR(11 downto 0), + ADDRARDADDR(2 downto 0) => B"111", + ADDRBWRADDR(15) => '1', + ADDRBWRADDR(14 downto 3) => MIMTXRADDR(11 downto 0), + ADDRBWRADDR(2 downto 0) => B"111", + CASCADEINA => '0', + CASCADEINB => '0', + CASCADEOUTA => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\, + CASCADEOUTB => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\, + CLKARDCLK => pipe_userclk1_in, + CLKBWRCLK => pipe_userclk1_in, + DBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\, + DIADI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\(31 downto 8), + DIADI(7 downto 0) => wdata(7 downto 0), + DIBDI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\(31 downto 8), + DIBDI(7 downto 0) => B"00000000", + DIPADIP(3 downto 1) => B"000", + DIPADIP(0) => wdata(8), + DIPBDIP(3 downto 0) => B"0000", + DOADO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\(31 downto 8), + DOADO(7) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\, + DOADO(6) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\, + DOADO(5) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\, + DOADO(4) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\, + DOADO(3) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\, + DOADO(2) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\, + DOADO(1) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\, + DOADO(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\, + DOBDO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\(31 downto 8), + DOBDO(7 downto 0) => rdata(7 downto 0), + DOPADOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\(3 downto 1), + DOPADOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\, + DOPBDOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\(3 downto 1), + DOPBDOP(0) => rdata(8), + ECCPARITY(7 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\(7 downto 0), + ENARDEN => mim_tx_wen, + ENBWREN => mim_tx_ren, + INJECTDBITERR => '0', + INJECTSBITERR => '0', + RDADDRECC(8 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\(8 downto 0), + REGCEAREGCE => '0', + REGCEB => '1', + RSTRAMARSTRAM => '0', + RSTRAMB => '0', + RSTREGARSTREG => '0', + RSTREGB => '0', + SBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\, + WEA(3 downto 0) => B"1111", + WEBWE(7 downto 0) => B"00000000" + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_BRAM_TDP_MACRO_12 is + port ( + rdata : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_tx_wen : in STD_LOGIC; + mim_tx_ren : in STD_LOGIC; + MIMTXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMTXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + wdata : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_BRAM_TDP_MACRO_12 : entity is "BRAM_TDP_MACRO"; +end pcie_7x_0_BRAM_TDP_MACRO_12; + +architecture STRUCTURE of pcie_7x_0_BRAM_TDP_MACRO_12 is + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\ : STD_LOGIC_VECTOR ( 8 downto 0 ); + attribute BOX_TYPE : string; + attribute BOX_TYPE of \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : label is "PRIMITIVE"; +begin +\genblk5_0.bram36_tdp_bl.bram36_tdp_bl\: unisim.vcomponents.RAMB36E1 + generic map( + DOA_REG => 0, + DOB_REG => 1, + EN_ECC_READ => false, + EN_ECC_WRITE => false, + INITP_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_40 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_41 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_42 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_43 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_44 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_45 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_46 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_47 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_48 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_49 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_50 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_51 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_52 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_53 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_54 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_55 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_56 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_57 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_58 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_59 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_60 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_61 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_62 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_63 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_64 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_65 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_66 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_67 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_68 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_69 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_70 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_71 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_72 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_73 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_74 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_75 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_76 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_77 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_78 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_79 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_A => X"000000000", + INIT_B => X"000000000", + INIT_FILE => "NONE", + IS_CLKARDCLK_INVERTED => '0', + IS_CLKBWRCLK_INVERTED => '0', + IS_ENARDEN_INVERTED => '0', + IS_ENBWREN_INVERTED => '0', + IS_RSTRAMARSTRAM_INVERTED => '0', + IS_RSTRAMB_INVERTED => '0', + IS_RSTREGARSTREG_INVERTED => '0', + IS_RSTREGB_INVERTED => '0', + RAM_EXTENSION_A => "NONE", + RAM_EXTENSION_B => "NONE", + RAM_MODE => "TDP", + RDADDR_COLLISION_HWCONFIG => "DELAYED_WRITE", + READ_WIDTH_A => 9, + READ_WIDTH_B => 9, + RSTREG_PRIORITY_A => "RSTREG", + RSTREG_PRIORITY_B => "RSTREG", + SIM_COLLISION_CHECK => "ALL", + SIM_DEVICE => "7SERIES", + SRVAL_A => X"000000000", + SRVAL_B => X"000000000", + WRITE_MODE_A => "NO_CHANGE", + WRITE_MODE_B => "WRITE_FIRST", + WRITE_WIDTH_A => 9, + WRITE_WIDTH_B => 9 + ) + port map ( + ADDRARDADDR(15) => '1', + ADDRARDADDR(14 downto 3) => MIMTXWADDR(11 downto 0), + ADDRARDADDR(2 downto 0) => B"111", + ADDRBWRADDR(15) => '1', + ADDRBWRADDR(14 downto 3) => MIMTXRADDR(11 downto 0), + ADDRBWRADDR(2 downto 0) => B"111", + CASCADEINA => '0', + CASCADEINB => '0', + CASCADEOUTA => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\, + CASCADEOUTB => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\, + CLKARDCLK => pipe_userclk1_in, + CLKBWRCLK => pipe_userclk1_in, + DBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\, + DIADI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\(31 downto 8), + DIADI(7 downto 0) => wdata(7 downto 0), + DIBDI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\(31 downto 8), + DIBDI(7 downto 0) => B"00000000", + DIPADIP(3 downto 1) => B"000", + DIPADIP(0) => wdata(8), + DIPBDIP(3 downto 0) => B"0000", + DOADO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\(31 downto 8), + DOADO(7) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\, + DOADO(6) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\, + DOADO(5) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\, + DOADO(4) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\, + DOADO(3) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\, + DOADO(2) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\, + DOADO(1) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\, + DOADO(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\, + DOBDO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\(31 downto 8), + DOBDO(7 downto 0) => rdata(7 downto 0), + DOPADOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\(3 downto 1), + DOPADOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\, + DOPBDOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\(3 downto 1), + DOPBDOP(0) => rdata(8), + ECCPARITY(7 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\(7 downto 0), + ENARDEN => mim_tx_wen, + ENBWREN => mim_tx_ren, + INJECTDBITERR => '0', + INJECTSBITERR => '0', + RDADDRECC(8 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\(8 downto 0), + REGCEAREGCE => '0', + REGCEB => '1', + RSTRAMARSTRAM => '0', + RSTRAMB => '0', + RSTREGARSTREG => '0', + RSTREGB => '0', + SBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\, + WEA(3 downto 0) => B"1111", + WEBWE(7 downto 0) => B"00000000" + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_BRAM_TDP_MACRO_13 is + port ( + rdata : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_tx_wen : in STD_LOGIC; + mim_tx_ren : in STD_LOGIC; + MIMTXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMTXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + wdata : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_BRAM_TDP_MACRO_13 : entity is "BRAM_TDP_MACRO"; +end pcie_7x_0_BRAM_TDP_MACRO_13; + +architecture STRUCTURE of pcie_7x_0_BRAM_TDP_MACRO_13 is + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\ : STD_LOGIC_VECTOR ( 8 downto 0 ); + attribute BOX_TYPE : string; + attribute BOX_TYPE of \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : label is "PRIMITIVE"; +begin +\genblk5_0.bram36_tdp_bl.bram36_tdp_bl\: unisim.vcomponents.RAMB36E1 + generic map( + DOA_REG => 0, + DOB_REG => 1, + EN_ECC_READ => false, + EN_ECC_WRITE => false, + INITP_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_40 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_41 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_42 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_43 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_44 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_45 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_46 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_47 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_48 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_49 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_50 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_51 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_52 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_53 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_54 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_55 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_56 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_57 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_58 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_59 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_60 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_61 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_62 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_63 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_64 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_65 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_66 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_67 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_68 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_69 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_70 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_71 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_72 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_73 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_74 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_75 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_76 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_77 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_78 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_79 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_A => X"000000000", + INIT_B => X"000000000", + INIT_FILE => "NONE", + IS_CLKARDCLK_INVERTED => '0', + IS_CLKBWRCLK_INVERTED => '0', + IS_ENARDEN_INVERTED => '0', + IS_ENBWREN_INVERTED => '0', + IS_RSTRAMARSTRAM_INVERTED => '0', + IS_RSTRAMB_INVERTED => '0', + IS_RSTREGARSTREG_INVERTED => '0', + IS_RSTREGB_INVERTED => '0', + RAM_EXTENSION_A => "NONE", + RAM_EXTENSION_B => "NONE", + RAM_MODE => "TDP", + RDADDR_COLLISION_HWCONFIG => "DELAYED_WRITE", + READ_WIDTH_A => 9, + READ_WIDTH_B => 9, + RSTREG_PRIORITY_A => "RSTREG", + RSTREG_PRIORITY_B => "RSTREG", + SIM_COLLISION_CHECK => "ALL", + SIM_DEVICE => "7SERIES", + SRVAL_A => X"000000000", + SRVAL_B => X"000000000", + WRITE_MODE_A => "NO_CHANGE", + WRITE_MODE_B => "WRITE_FIRST", + WRITE_WIDTH_A => 9, + WRITE_WIDTH_B => 9 + ) + port map ( + ADDRARDADDR(15) => '1', + ADDRARDADDR(14 downto 3) => MIMTXWADDR(11 downto 0), + ADDRARDADDR(2 downto 0) => B"111", + ADDRBWRADDR(15) => '1', + ADDRBWRADDR(14 downto 3) => MIMTXRADDR(11 downto 0), + ADDRBWRADDR(2 downto 0) => B"111", + CASCADEINA => '0', + CASCADEINB => '0', + CASCADEOUTA => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\, + CASCADEOUTB => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\, + CLKARDCLK => pipe_userclk1_in, + CLKBWRCLK => pipe_userclk1_in, + DBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\, + DIADI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\(31 downto 8), + DIADI(7 downto 0) => wdata(7 downto 0), + DIBDI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\(31 downto 8), + DIBDI(7 downto 0) => B"00000000", + DIPADIP(3 downto 1) => B"000", + DIPADIP(0) => wdata(8), + DIPBDIP(3 downto 0) => B"0000", + DOADO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\(31 downto 8), + DOADO(7) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\, + DOADO(6) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\, + DOADO(5) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\, + DOADO(4) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\, + DOADO(3) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\, + DOADO(2) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\, + DOADO(1) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\, + DOADO(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\, + DOBDO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\(31 downto 8), + DOBDO(7 downto 0) => rdata(7 downto 0), + DOPADOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\(3 downto 1), + DOPADOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\, + DOPBDOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\(3 downto 1), + DOPBDOP(0) => rdata(8), + ECCPARITY(7 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\(7 downto 0), + ENARDEN => mim_tx_wen, + ENBWREN => mim_tx_ren, + INJECTDBITERR => '0', + INJECTSBITERR => '0', + RDADDRECC(8 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\(8 downto 0), + REGCEAREGCE => '0', + REGCEB => '1', + RSTRAMARSTRAM => '0', + RSTRAMB => '0', + RSTREGARSTREG => '0', + RSTREGB => '0', + SBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\, + WEA(3 downto 0) => B"1111", + WEBWE(7 downto 0) => B"00000000" + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_BRAM_TDP_MACRO_14 is + port ( + rdata : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_tx_wen : in STD_LOGIC; + mim_tx_ren : in STD_LOGIC; + MIMTXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMTXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + wdata : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_BRAM_TDP_MACRO_14 : entity is "BRAM_TDP_MACRO"; +end pcie_7x_0_BRAM_TDP_MACRO_14; + +architecture STRUCTURE of pcie_7x_0_BRAM_TDP_MACRO_14 is + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\ : STD_LOGIC_VECTOR ( 8 downto 0 ); + attribute BOX_TYPE : string; + attribute BOX_TYPE of \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : label is "PRIMITIVE"; +begin +\genblk5_0.bram36_tdp_bl.bram36_tdp_bl\: unisim.vcomponents.RAMB36E1 + generic map( + DOA_REG => 0, + DOB_REG => 1, + EN_ECC_READ => false, + EN_ECC_WRITE => false, + INITP_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_40 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_41 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_42 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_43 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_44 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_45 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_46 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_47 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_48 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_49 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_50 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_51 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_52 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_53 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_54 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_55 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_56 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_57 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_58 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_59 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_60 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_61 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_62 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_63 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_64 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_65 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_66 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_67 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_68 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_69 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_70 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_71 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_72 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_73 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_74 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_75 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_76 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_77 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_78 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_79 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_A => X"000000000", + INIT_B => X"000000000", + INIT_FILE => "NONE", + IS_CLKARDCLK_INVERTED => '0', + IS_CLKBWRCLK_INVERTED => '0', + IS_ENARDEN_INVERTED => '0', + IS_ENBWREN_INVERTED => '0', + IS_RSTRAMARSTRAM_INVERTED => '0', + IS_RSTRAMB_INVERTED => '0', + IS_RSTREGARSTREG_INVERTED => '0', + IS_RSTREGB_INVERTED => '0', + RAM_EXTENSION_A => "NONE", + RAM_EXTENSION_B => "NONE", + RAM_MODE => "TDP", + RDADDR_COLLISION_HWCONFIG => "DELAYED_WRITE", + READ_WIDTH_A => 9, + READ_WIDTH_B => 9, + RSTREG_PRIORITY_A => "RSTREG", + RSTREG_PRIORITY_B => "RSTREG", + SIM_COLLISION_CHECK => "ALL", + SIM_DEVICE => "7SERIES", + SRVAL_A => X"000000000", + SRVAL_B => X"000000000", + WRITE_MODE_A => "NO_CHANGE", + WRITE_MODE_B => "WRITE_FIRST", + WRITE_WIDTH_A => 9, + WRITE_WIDTH_B => 9 + ) + port map ( + ADDRARDADDR(15) => '1', + ADDRARDADDR(14 downto 3) => MIMTXWADDR(11 downto 0), + ADDRARDADDR(2 downto 0) => B"111", + ADDRBWRADDR(15) => '1', + ADDRBWRADDR(14 downto 3) => MIMTXRADDR(11 downto 0), + ADDRBWRADDR(2 downto 0) => B"111", + CASCADEINA => '0', + CASCADEINB => '0', + CASCADEOUTA => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\, + CASCADEOUTB => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\, + CLKARDCLK => pipe_userclk1_in, + CLKBWRCLK => pipe_userclk1_in, + DBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\, + DIADI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\(31 downto 8), + DIADI(7 downto 0) => wdata(7 downto 0), + DIBDI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\(31 downto 8), + DIBDI(7 downto 0) => B"00000000", + DIPADIP(3 downto 1) => B"000", + DIPADIP(0) => wdata(8), + DIPBDIP(3 downto 0) => B"0000", + DOADO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\(31 downto 8), + DOADO(7) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\, + DOADO(6) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\, + DOADO(5) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\, + DOADO(4) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\, + DOADO(3) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\, + DOADO(2) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\, + DOADO(1) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\, + DOADO(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\, + DOBDO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\(31 downto 8), + DOBDO(7 downto 0) => rdata(7 downto 0), + DOPADOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\(3 downto 1), + DOPADOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\, + DOPBDOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\(3 downto 1), + DOPBDOP(0) => rdata(8), + ECCPARITY(7 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\(7 downto 0), + ENARDEN => mim_tx_wen, + ENBWREN => mim_tx_ren, + INJECTDBITERR => '0', + INJECTSBITERR => '0', + RDADDRECC(8 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\(8 downto 0), + REGCEAREGCE => '0', + REGCEB => '1', + RSTRAMARSTRAM => '0', + RSTRAMB => '0', + RSTREGARSTREG => '0', + RSTREGB => '0', + SBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\, + WEA(3 downto 0) => B"1111", + WEBWE(7 downto 0) => B"00000000" + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_BRAM_TDP_MACRO_15 is + port ( + rdata : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_tx_wen : in STD_LOGIC; + mim_tx_ren : in STD_LOGIC; + MIMTXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMTXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + wdata : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_BRAM_TDP_MACRO_15 : entity is "BRAM_TDP_MACRO"; +end pcie_7x_0_BRAM_TDP_MACRO_15; + +architecture STRUCTURE of pcie_7x_0_BRAM_TDP_MACRO_15 is + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\ : STD_LOGIC_VECTOR ( 8 downto 0 ); + attribute BOX_TYPE : string; + attribute BOX_TYPE of \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : label is "PRIMITIVE"; +begin +\genblk5_0.bram36_tdp_bl.bram36_tdp_bl\: unisim.vcomponents.RAMB36E1 + generic map( + DOA_REG => 0, + DOB_REG => 1, + EN_ECC_READ => false, + EN_ECC_WRITE => false, + INITP_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_40 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_41 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_42 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_43 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_44 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_45 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_46 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_47 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_48 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_49 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_50 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_51 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_52 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_53 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_54 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_55 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_56 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_57 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_58 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_59 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_60 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_61 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_62 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_63 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_64 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_65 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_66 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_67 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_68 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_69 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_70 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_71 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_72 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_73 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_74 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_75 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_76 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_77 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_78 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_79 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_A => X"000000000", + INIT_B => X"000000000", + INIT_FILE => "NONE", + IS_CLKARDCLK_INVERTED => '0', + IS_CLKBWRCLK_INVERTED => '0', + IS_ENARDEN_INVERTED => '0', + IS_ENBWREN_INVERTED => '0', + IS_RSTRAMARSTRAM_INVERTED => '0', + IS_RSTRAMB_INVERTED => '0', + IS_RSTREGARSTREG_INVERTED => '0', + IS_RSTREGB_INVERTED => '0', + RAM_EXTENSION_A => "NONE", + RAM_EXTENSION_B => "NONE", + RAM_MODE => "TDP", + RDADDR_COLLISION_HWCONFIG => "DELAYED_WRITE", + READ_WIDTH_A => 9, + READ_WIDTH_B => 9, + RSTREG_PRIORITY_A => "RSTREG", + RSTREG_PRIORITY_B => "RSTREG", + SIM_COLLISION_CHECK => "ALL", + SIM_DEVICE => "7SERIES", + SRVAL_A => X"000000000", + SRVAL_B => X"000000000", + WRITE_MODE_A => "NO_CHANGE", + WRITE_MODE_B => "WRITE_FIRST", + WRITE_WIDTH_A => 9, + WRITE_WIDTH_B => 9 + ) + port map ( + ADDRARDADDR(15) => '1', + ADDRARDADDR(14 downto 3) => MIMTXWADDR(11 downto 0), + ADDRARDADDR(2 downto 0) => B"111", + ADDRBWRADDR(15) => '1', + ADDRBWRADDR(14 downto 3) => MIMTXRADDR(11 downto 0), + ADDRBWRADDR(2 downto 0) => B"111", + CASCADEINA => '0', + CASCADEINB => '0', + CASCADEOUTA => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\, + CASCADEOUTB => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\, + CLKARDCLK => pipe_userclk1_in, + CLKBWRCLK => pipe_userclk1_in, + DBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\, + DIADI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\(31 downto 8), + DIADI(7 downto 0) => wdata(7 downto 0), + DIBDI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\(31 downto 8), + DIBDI(7 downto 0) => B"00000000", + DIPADIP(3 downto 1) => B"000", + DIPADIP(0) => wdata(8), + DIPBDIP(3 downto 0) => B"0000", + DOADO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\(31 downto 8), + DOADO(7) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\, + DOADO(6) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\, + DOADO(5) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\, + DOADO(4) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\, + DOADO(3) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\, + DOADO(2) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\, + DOADO(1) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\, + DOADO(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\, + DOBDO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\(31 downto 8), + DOBDO(7 downto 0) => rdata(7 downto 0), + DOPADOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\(3 downto 1), + DOPADOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\, + DOPBDOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\(3 downto 1), + DOPBDOP(0) => rdata(8), + ECCPARITY(7 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\(7 downto 0), + ENARDEN => mim_tx_wen, + ENBWREN => mim_tx_ren, + INJECTDBITERR => '0', + INJECTSBITERR => '0', + RDADDRECC(8 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\(8 downto 0), + REGCEAREGCE => '0', + REGCEB => '1', + RSTRAMARSTRAM => '0', + RSTRAMB => '0', + RSTREGARSTREG => '0', + RSTREGB => '0', + SBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\, + WEA(3 downto 0) => B"1111", + WEBWE(7 downto 0) => B"00000000" + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_BRAM_TDP_MACRO_16 is + port ( + rdata : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_tx_wen : in STD_LOGIC; + mim_tx_ren : in STD_LOGIC; + MIMTXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMTXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + wdata : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_BRAM_TDP_MACRO_16 : entity is "BRAM_TDP_MACRO"; +end pcie_7x_0_BRAM_TDP_MACRO_16; + +architecture STRUCTURE of pcie_7x_0_BRAM_TDP_MACRO_16 is + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\ : STD_LOGIC_VECTOR ( 8 downto 0 ); + attribute BOX_TYPE : string; + attribute BOX_TYPE of \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : label is "PRIMITIVE"; +begin +\genblk5_0.bram36_tdp_bl.bram36_tdp_bl\: unisim.vcomponents.RAMB36E1 + generic map( + DOA_REG => 0, + DOB_REG => 1, + EN_ECC_READ => false, + EN_ECC_WRITE => false, + INITP_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_40 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_41 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_42 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_43 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_44 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_45 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_46 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_47 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_48 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_49 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_50 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_51 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_52 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_53 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_54 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_55 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_56 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_57 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_58 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_59 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_60 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_61 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_62 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_63 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_64 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_65 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_66 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_67 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_68 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_69 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_70 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_71 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_72 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_73 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_74 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_75 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_76 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_77 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_78 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_79 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_A => X"000000000", + INIT_B => X"000000000", + INIT_FILE => "NONE", + IS_CLKARDCLK_INVERTED => '0', + IS_CLKBWRCLK_INVERTED => '0', + IS_ENARDEN_INVERTED => '0', + IS_ENBWREN_INVERTED => '0', + IS_RSTRAMARSTRAM_INVERTED => '0', + IS_RSTRAMB_INVERTED => '0', + IS_RSTREGARSTREG_INVERTED => '0', + IS_RSTREGB_INVERTED => '0', + RAM_EXTENSION_A => "NONE", + RAM_EXTENSION_B => "NONE", + RAM_MODE => "TDP", + RDADDR_COLLISION_HWCONFIG => "DELAYED_WRITE", + READ_WIDTH_A => 9, + READ_WIDTH_B => 9, + RSTREG_PRIORITY_A => "RSTREG", + RSTREG_PRIORITY_B => "RSTREG", + SIM_COLLISION_CHECK => "ALL", + SIM_DEVICE => "7SERIES", + SRVAL_A => X"000000000", + SRVAL_B => X"000000000", + WRITE_MODE_A => "NO_CHANGE", + WRITE_MODE_B => "WRITE_FIRST", + WRITE_WIDTH_A => 9, + WRITE_WIDTH_B => 9 + ) + port map ( + ADDRARDADDR(15) => '1', + ADDRARDADDR(14 downto 3) => MIMTXWADDR(11 downto 0), + ADDRARDADDR(2 downto 0) => B"111", + ADDRBWRADDR(15) => '1', + ADDRBWRADDR(14 downto 3) => MIMTXRADDR(11 downto 0), + ADDRBWRADDR(2 downto 0) => B"111", + CASCADEINA => '0', + CASCADEINB => '0', + CASCADEOUTA => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\, + CASCADEOUTB => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\, + CLKARDCLK => pipe_userclk1_in, + CLKBWRCLK => pipe_userclk1_in, + DBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\, + DIADI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\(31 downto 8), + DIADI(7 downto 0) => wdata(7 downto 0), + DIBDI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\(31 downto 8), + DIBDI(7 downto 0) => B"00000000", + DIPADIP(3 downto 1) => B"000", + DIPADIP(0) => wdata(8), + DIPBDIP(3 downto 0) => B"0000", + DOADO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\(31 downto 8), + DOADO(7) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\, + DOADO(6) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\, + DOADO(5) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\, + DOADO(4) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\, + DOADO(3) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\, + DOADO(2) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\, + DOADO(1) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\, + DOADO(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\, + DOBDO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\(31 downto 8), + DOBDO(7 downto 0) => rdata(7 downto 0), + DOPADOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\(3 downto 1), + DOPADOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\, + DOPBDOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\(3 downto 1), + DOPBDOP(0) => rdata(8), + ECCPARITY(7 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\(7 downto 0), + ENARDEN => mim_tx_wen, + ENBWREN => mim_tx_ren, + INJECTDBITERR => '0', + INJECTSBITERR => '0', + RDADDRECC(8 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\(8 downto 0), + REGCEAREGCE => '0', + REGCEB => '1', + RSTRAMARSTRAM => '0', + RSTRAMB => '0', + RSTREGARSTREG => '0', + RSTREGB => '0', + SBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\, + WEA(3 downto 0) => B"1111", + WEBWE(7 downto 0) => B"00000000" + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_BRAM_TDP_MACRO_17 is + port ( + rdata : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_tx_wen : in STD_LOGIC; + mim_tx_ren : in STD_LOGIC; + MIMTXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMTXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + wdata : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_BRAM_TDP_MACRO_17 : entity is "BRAM_TDP_MACRO"; +end pcie_7x_0_BRAM_TDP_MACRO_17; + +architecture STRUCTURE of pcie_7x_0_BRAM_TDP_MACRO_17 is + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\ : STD_LOGIC_VECTOR ( 8 downto 0 ); + attribute BOX_TYPE : string; + attribute BOX_TYPE of \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : label is "PRIMITIVE"; +begin +\genblk5_0.bram36_tdp_bl.bram36_tdp_bl\: unisim.vcomponents.RAMB36E1 + generic map( + DOA_REG => 0, + DOB_REG => 1, + EN_ECC_READ => false, + EN_ECC_WRITE => false, + INITP_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_40 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_41 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_42 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_43 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_44 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_45 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_46 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_47 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_48 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_49 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_50 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_51 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_52 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_53 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_54 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_55 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_56 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_57 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_58 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_59 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_60 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_61 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_62 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_63 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_64 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_65 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_66 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_67 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_68 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_69 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_70 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_71 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_72 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_73 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_74 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_75 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_76 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_77 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_78 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_79 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_A => X"000000000", + INIT_B => X"000000000", + INIT_FILE => "NONE", + IS_CLKARDCLK_INVERTED => '0', + IS_CLKBWRCLK_INVERTED => '0', + IS_ENARDEN_INVERTED => '0', + IS_ENBWREN_INVERTED => '0', + IS_RSTRAMARSTRAM_INVERTED => '0', + IS_RSTRAMB_INVERTED => '0', + IS_RSTREGARSTREG_INVERTED => '0', + IS_RSTREGB_INVERTED => '0', + RAM_EXTENSION_A => "NONE", + RAM_EXTENSION_B => "NONE", + RAM_MODE => "TDP", + RDADDR_COLLISION_HWCONFIG => "DELAYED_WRITE", + READ_WIDTH_A => 9, + READ_WIDTH_B => 9, + RSTREG_PRIORITY_A => "RSTREG", + RSTREG_PRIORITY_B => "RSTREG", + SIM_COLLISION_CHECK => "ALL", + SIM_DEVICE => "7SERIES", + SRVAL_A => X"000000000", + SRVAL_B => X"000000000", + WRITE_MODE_A => "NO_CHANGE", + WRITE_MODE_B => "WRITE_FIRST", + WRITE_WIDTH_A => 9, + WRITE_WIDTH_B => 9 + ) + port map ( + ADDRARDADDR(15) => '1', + ADDRARDADDR(14 downto 3) => MIMTXWADDR(11 downto 0), + ADDRARDADDR(2 downto 0) => B"111", + ADDRBWRADDR(15) => '1', + ADDRBWRADDR(14 downto 3) => MIMTXRADDR(11 downto 0), + ADDRBWRADDR(2 downto 0) => B"111", + CASCADEINA => '0', + CASCADEINB => '0', + CASCADEOUTA => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\, + CASCADEOUTB => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\, + CLKARDCLK => pipe_userclk1_in, + CLKBWRCLK => pipe_userclk1_in, + DBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\, + DIADI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\(31 downto 8), + DIADI(7 downto 0) => wdata(7 downto 0), + DIBDI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\(31 downto 8), + DIBDI(7 downto 0) => B"00000000", + DIPADIP(3 downto 1) => B"000", + DIPADIP(0) => wdata(8), + DIPBDIP(3 downto 0) => B"0000", + DOADO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\(31 downto 8), + DOADO(7) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\, + DOADO(6) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\, + DOADO(5) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\, + DOADO(4) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\, + DOADO(3) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\, + DOADO(2) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\, + DOADO(1) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\, + DOADO(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\, + DOBDO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\(31 downto 8), + DOBDO(7 downto 0) => rdata(7 downto 0), + DOPADOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\(3 downto 1), + DOPADOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\, + DOPBDOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\(3 downto 1), + DOPBDOP(0) => rdata(8), + ECCPARITY(7 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\(7 downto 0), + ENARDEN => mim_tx_wen, + ENBWREN => mim_tx_ren, + INJECTDBITERR => '0', + INJECTSBITERR => '0', + RDADDRECC(8 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\(8 downto 0), + REGCEAREGCE => '0', + REGCEB => '1', + RSTRAMARSTRAM => '0', + RSTRAMB => '0', + RSTREGARSTREG => '0', + RSTREGB => '0', + SBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\, + WEA(3 downto 0) => B"1111", + WEBWE(7 downto 0) => B"00000000" + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_BRAM_TDP_MACRO_26 is + port ( + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\ : out STD_LOGIC_VECTOR ( 4 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_rx_wen : in STD_LOGIC; + mim_rx_ren : in STD_LOGIC; + MIMRXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMRXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\ : in STD_LOGIC_VECTOR ( 4 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_BRAM_TDP_MACRO_26 : entity is "BRAM_TDP_MACRO"; +end pcie_7x_0_BRAM_TDP_MACRO_26; + +architecture STRUCTURE of pcie_7x_0_BRAM_TDP_MACRO_26 is + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_60\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_61\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_62\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_75\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\ : STD_LOGIC_VECTOR ( 8 downto 0 ); + attribute BOX_TYPE : string; + attribute BOX_TYPE of \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : label is "PRIMITIVE"; +begin +\genblk5_0.bram36_tdp_bl.bram36_tdp_bl\: unisim.vcomponents.RAMB36E1 + generic map( + DOA_REG => 0, + DOB_REG => 1, + EN_ECC_READ => false, + EN_ECC_WRITE => false, + INITP_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_40 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_41 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_42 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_43 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_44 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_45 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_46 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_47 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_48 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_49 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_50 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_51 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_52 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_53 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_54 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_55 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_56 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_57 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_58 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_59 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_60 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_61 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_62 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_63 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_64 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_65 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_66 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_67 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_68 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_69 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_70 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_71 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_72 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_73 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_74 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_75 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_76 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_77 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_78 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_79 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_A => X"000000000", + INIT_B => X"000000000", + INIT_FILE => "NONE", + IS_CLKARDCLK_INVERTED => '0', + IS_CLKBWRCLK_INVERTED => '0', + IS_ENARDEN_INVERTED => '0', + IS_ENBWREN_INVERTED => '0', + IS_RSTRAMARSTRAM_INVERTED => '0', + IS_RSTRAMB_INVERTED => '0', + IS_RSTREGARSTREG_INVERTED => '0', + IS_RSTREGB_INVERTED => '0', + RAM_EXTENSION_A => "NONE", + RAM_EXTENSION_B => "NONE", + RAM_MODE => "TDP", + RDADDR_COLLISION_HWCONFIG => "DELAYED_WRITE", + READ_WIDTH_A => 9, + READ_WIDTH_B => 9, + RSTREG_PRIORITY_A => "RSTREG", + RSTREG_PRIORITY_B => "RSTREG", + SIM_COLLISION_CHECK => "ALL", + SIM_DEVICE => "7SERIES", + SRVAL_A => X"000000000", + SRVAL_B => X"000000000", + WRITE_MODE_A => "NO_CHANGE", + WRITE_MODE_B => "WRITE_FIRST", + WRITE_WIDTH_A => 9, + WRITE_WIDTH_B => 9 + ) + port map ( + ADDRARDADDR(15) => '1', + ADDRARDADDR(14 downto 3) => MIMRXWADDR(11 downto 0), + ADDRARDADDR(2 downto 0) => B"111", + ADDRBWRADDR(15) => '1', + ADDRBWRADDR(14 downto 3) => MIMRXRADDR(11 downto 0), + ADDRBWRADDR(2 downto 0) => B"111", + CASCADEINA => '0', + CASCADEINB => '0', + CASCADEOUTA => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\, + CASCADEOUTB => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\, + CLKARDCLK => pipe_userclk1_in, + CLKBWRCLK => pipe_userclk1_in, + DBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\, + DIADI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\(31 downto 8), + DIADI(7 downto 5) => B"000", + DIADI(4 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\(4 downto 0), + DIBDI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\(31 downto 8), + DIBDI(7 downto 0) => B"00000000", + DIPADIP(3 downto 0) => B"0000", + DIPBDIP(3 downto 0) => B"0000", + DOADO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\(31 downto 8), + DOADO(7) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\, + DOADO(6) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\, + DOADO(5) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\, + DOADO(4) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\, + DOADO(3) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\, + DOADO(2) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\, + DOADO(1) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\, + DOADO(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\, + DOBDO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\(31 downto 8), + DOBDO(7) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_60\, + DOBDO(6) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_61\, + DOBDO(5) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_62\, + DOBDO(4 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(4 downto 0), + DOPADOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\(3 downto 1), + DOPADOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\, + DOPBDOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\(3 downto 1), + DOPBDOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_75\, + ECCPARITY(7 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\(7 downto 0), + ENARDEN => mim_rx_wen, + ENBWREN => mim_rx_ren, + INJECTDBITERR => '0', + INJECTSBITERR => '0', + RDADDRECC(8 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\(8 downto 0), + REGCEAREGCE => '0', + REGCEB => '1', + RSTRAMARSTRAM => '0', + RSTRAMB => '0', + RSTREGARSTREG => '0', + RSTREGB => '0', + SBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\, + WEA(3 downto 0) => B"1111", + WEBWE(7 downto 0) => B"00000000" + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_BRAM_TDP_MACRO_27 is + port ( + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\ : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_rx_wen : in STD_LOGIC; + mim_rx_ren : in STD_LOGIC; + MIMRXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMRXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\ : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_BRAM_TDP_MACRO_27 : entity is "BRAM_TDP_MACRO"; +end pcie_7x_0_BRAM_TDP_MACRO_27; + +architecture STRUCTURE of pcie_7x_0_BRAM_TDP_MACRO_27 is + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\ : STD_LOGIC_VECTOR ( 8 downto 0 ); + attribute BOX_TYPE : string; + attribute BOX_TYPE of \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : label is "PRIMITIVE"; +begin +\genblk5_0.bram36_tdp_bl.bram36_tdp_bl\: unisim.vcomponents.RAMB36E1 + generic map( + DOA_REG => 0, + DOB_REG => 1, + EN_ECC_READ => false, + EN_ECC_WRITE => false, + INITP_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_40 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_41 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_42 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_43 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_44 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_45 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_46 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_47 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_48 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_49 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_50 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_51 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_52 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_53 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_54 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_55 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_56 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_57 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_58 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_59 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_60 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_61 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_62 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_63 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_64 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_65 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_66 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_67 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_68 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_69 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_70 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_71 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_72 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_73 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_74 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_75 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_76 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_77 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_78 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_79 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_A => X"000000000", + INIT_B => X"000000000", + INIT_FILE => "NONE", + IS_CLKARDCLK_INVERTED => '0', + IS_CLKBWRCLK_INVERTED => '0', + IS_ENARDEN_INVERTED => '0', + IS_ENBWREN_INVERTED => '0', + IS_RSTRAMARSTRAM_INVERTED => '0', + IS_RSTRAMB_INVERTED => '0', + IS_RSTREGARSTREG_INVERTED => '0', + IS_RSTREGB_INVERTED => '0', + RAM_EXTENSION_A => "NONE", + RAM_EXTENSION_B => "NONE", + RAM_MODE => "TDP", + RDADDR_COLLISION_HWCONFIG => "DELAYED_WRITE", + READ_WIDTH_A => 9, + READ_WIDTH_B => 9, + RSTREG_PRIORITY_A => "RSTREG", + RSTREG_PRIORITY_B => "RSTREG", + SIM_COLLISION_CHECK => "ALL", + SIM_DEVICE => "7SERIES", + SRVAL_A => X"000000000", + SRVAL_B => X"000000000", + WRITE_MODE_A => "NO_CHANGE", + WRITE_MODE_B => "WRITE_FIRST", + WRITE_WIDTH_A => 9, + WRITE_WIDTH_B => 9 + ) + port map ( + ADDRARDADDR(15) => '1', + ADDRARDADDR(14 downto 3) => MIMRXWADDR(11 downto 0), + ADDRARDADDR(2 downto 0) => B"111", + ADDRBWRADDR(15) => '1', + ADDRBWRADDR(14 downto 3) => MIMRXRADDR(11 downto 0), + ADDRBWRADDR(2 downto 0) => B"111", + CASCADEINA => '0', + CASCADEINB => '0', + CASCADEOUTA => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\, + CASCADEOUTB => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\, + CLKARDCLK => pipe_userclk1_in, + CLKBWRCLK => pipe_userclk1_in, + DBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\, + DIADI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\(31 downto 8), + DIADI(7 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\(7 downto 0), + DIBDI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\(31 downto 8), + DIBDI(7 downto 0) => B"00000000", + DIPADIP(3 downto 1) => B"000", + DIPADIP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\(8), + DIPBDIP(3 downto 0) => B"0000", + DOADO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\(31 downto 8), + DOADO(7) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\, + DOADO(6) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\, + DOADO(5) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\, + DOADO(4) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\, + DOADO(3) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\, + DOADO(2) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\, + DOADO(1) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\, + DOADO(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\, + DOBDO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\(31 downto 8), + DOBDO(7 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(7 downto 0), + DOPADOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\(3 downto 1), + DOPADOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\, + DOPBDOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\(3 downto 1), + DOPBDOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8), + ECCPARITY(7 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\(7 downto 0), + ENARDEN => mim_rx_wen, + ENBWREN => mim_rx_ren, + INJECTDBITERR => '0', + INJECTSBITERR => '0', + RDADDRECC(8 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\(8 downto 0), + REGCEAREGCE => '0', + REGCEB => '1', + RSTRAMARSTRAM => '0', + RSTRAMB => '0', + RSTREGARSTREG => '0', + RSTREGB => '0', + SBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\, + WEA(3 downto 0) => B"1111", + WEBWE(7 downto 0) => B"00000000" + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_BRAM_TDP_MACRO_28 is + port ( + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\ : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_rx_wen : in STD_LOGIC; + mim_rx_ren : in STD_LOGIC; + MIMRXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMRXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\ : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_BRAM_TDP_MACRO_28 : entity is "BRAM_TDP_MACRO"; +end pcie_7x_0_BRAM_TDP_MACRO_28; + +architecture STRUCTURE of pcie_7x_0_BRAM_TDP_MACRO_28 is + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\ : STD_LOGIC_VECTOR ( 8 downto 0 ); + attribute BOX_TYPE : string; + attribute BOX_TYPE of \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : label is "PRIMITIVE"; +begin +\genblk5_0.bram36_tdp_bl.bram36_tdp_bl\: unisim.vcomponents.RAMB36E1 + generic map( + DOA_REG => 0, + DOB_REG => 1, + EN_ECC_READ => false, + EN_ECC_WRITE => false, + INITP_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_40 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_41 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_42 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_43 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_44 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_45 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_46 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_47 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_48 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_49 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_50 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_51 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_52 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_53 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_54 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_55 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_56 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_57 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_58 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_59 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_60 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_61 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_62 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_63 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_64 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_65 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_66 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_67 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_68 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_69 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_70 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_71 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_72 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_73 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_74 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_75 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_76 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_77 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_78 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_79 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_A => X"000000000", + INIT_B => X"000000000", + INIT_FILE => "NONE", + IS_CLKARDCLK_INVERTED => '0', + IS_CLKBWRCLK_INVERTED => '0', + IS_ENARDEN_INVERTED => '0', + IS_ENBWREN_INVERTED => '0', + IS_RSTRAMARSTRAM_INVERTED => '0', + IS_RSTRAMB_INVERTED => '0', + IS_RSTREGARSTREG_INVERTED => '0', + IS_RSTREGB_INVERTED => '0', + RAM_EXTENSION_A => "NONE", + RAM_EXTENSION_B => "NONE", + RAM_MODE => "TDP", + RDADDR_COLLISION_HWCONFIG => "DELAYED_WRITE", + READ_WIDTH_A => 9, + READ_WIDTH_B => 9, + RSTREG_PRIORITY_A => "RSTREG", + RSTREG_PRIORITY_B => "RSTREG", + SIM_COLLISION_CHECK => "ALL", + SIM_DEVICE => "7SERIES", + SRVAL_A => X"000000000", + SRVAL_B => X"000000000", + WRITE_MODE_A => "NO_CHANGE", + WRITE_MODE_B => "WRITE_FIRST", + WRITE_WIDTH_A => 9, + WRITE_WIDTH_B => 9 + ) + port map ( + ADDRARDADDR(15) => '1', + ADDRARDADDR(14 downto 3) => MIMRXWADDR(11 downto 0), + ADDRARDADDR(2 downto 0) => B"111", + ADDRBWRADDR(15) => '1', + ADDRBWRADDR(14 downto 3) => MIMRXRADDR(11 downto 0), + ADDRBWRADDR(2 downto 0) => B"111", + CASCADEINA => '0', + CASCADEINB => '0', + CASCADEOUTA => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\, + CASCADEOUTB => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\, + CLKARDCLK => pipe_userclk1_in, + CLKBWRCLK => pipe_userclk1_in, + DBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\, + DIADI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\(31 downto 8), + DIADI(7 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\(7 downto 0), + DIBDI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\(31 downto 8), + DIBDI(7 downto 0) => B"00000000", + DIPADIP(3 downto 1) => B"000", + DIPADIP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\(8), + DIPBDIP(3 downto 0) => B"0000", + DOADO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\(31 downto 8), + DOADO(7) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\, + DOADO(6) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\, + DOADO(5) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\, + DOADO(4) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\, + DOADO(3) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\, + DOADO(2) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\, + DOADO(1) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\, + DOADO(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\, + DOBDO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\(31 downto 8), + DOBDO(7 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(7 downto 0), + DOPADOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\(3 downto 1), + DOPADOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\, + DOPBDOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\(3 downto 1), + DOPBDOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8), + ECCPARITY(7 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\(7 downto 0), + ENARDEN => mim_rx_wen, + ENBWREN => mim_rx_ren, + INJECTDBITERR => '0', + INJECTSBITERR => '0', + RDADDRECC(8 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\(8 downto 0), + REGCEAREGCE => '0', + REGCEB => '1', + RSTRAMARSTRAM => '0', + RSTRAMB => '0', + RSTREGARSTREG => '0', + RSTREGB => '0', + SBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\, + WEA(3 downto 0) => B"1111", + WEBWE(7 downto 0) => B"00000000" + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_BRAM_TDP_MACRO_29 is + port ( + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\ : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_rx_wen : in STD_LOGIC; + mim_rx_ren : in STD_LOGIC; + MIMRXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMRXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\ : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_BRAM_TDP_MACRO_29 : entity is "BRAM_TDP_MACRO"; +end pcie_7x_0_BRAM_TDP_MACRO_29; + +architecture STRUCTURE of pcie_7x_0_BRAM_TDP_MACRO_29 is + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\ : STD_LOGIC_VECTOR ( 8 downto 0 ); + attribute BOX_TYPE : string; + attribute BOX_TYPE of \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : label is "PRIMITIVE"; +begin +\genblk5_0.bram36_tdp_bl.bram36_tdp_bl\: unisim.vcomponents.RAMB36E1 + generic map( + DOA_REG => 0, + DOB_REG => 1, + EN_ECC_READ => false, + EN_ECC_WRITE => false, + INITP_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_40 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_41 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_42 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_43 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_44 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_45 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_46 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_47 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_48 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_49 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_50 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_51 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_52 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_53 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_54 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_55 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_56 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_57 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_58 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_59 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_60 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_61 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_62 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_63 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_64 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_65 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_66 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_67 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_68 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_69 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_70 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_71 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_72 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_73 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_74 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_75 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_76 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_77 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_78 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_79 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_A => X"000000000", + INIT_B => X"000000000", + INIT_FILE => "NONE", + IS_CLKARDCLK_INVERTED => '0', + IS_CLKBWRCLK_INVERTED => '0', + IS_ENARDEN_INVERTED => '0', + IS_ENBWREN_INVERTED => '0', + IS_RSTRAMARSTRAM_INVERTED => '0', + IS_RSTRAMB_INVERTED => '0', + IS_RSTREGARSTREG_INVERTED => '0', + IS_RSTREGB_INVERTED => '0', + RAM_EXTENSION_A => "NONE", + RAM_EXTENSION_B => "NONE", + RAM_MODE => "TDP", + RDADDR_COLLISION_HWCONFIG => "DELAYED_WRITE", + READ_WIDTH_A => 9, + READ_WIDTH_B => 9, + RSTREG_PRIORITY_A => "RSTREG", + RSTREG_PRIORITY_B => "RSTREG", + SIM_COLLISION_CHECK => "ALL", + SIM_DEVICE => "7SERIES", + SRVAL_A => X"000000000", + SRVAL_B => X"000000000", + WRITE_MODE_A => "NO_CHANGE", + WRITE_MODE_B => "WRITE_FIRST", + WRITE_WIDTH_A => 9, + WRITE_WIDTH_B => 9 + ) + port map ( + ADDRARDADDR(15) => '1', + ADDRARDADDR(14 downto 3) => MIMRXWADDR(11 downto 0), + ADDRARDADDR(2 downto 0) => B"111", + ADDRBWRADDR(15) => '1', + ADDRBWRADDR(14 downto 3) => MIMRXRADDR(11 downto 0), + ADDRBWRADDR(2 downto 0) => B"111", + CASCADEINA => '0', + CASCADEINB => '0', + CASCADEOUTA => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\, + CASCADEOUTB => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\, + CLKARDCLK => pipe_userclk1_in, + CLKBWRCLK => pipe_userclk1_in, + DBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\, + DIADI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\(31 downto 8), + DIADI(7 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\(7 downto 0), + DIBDI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\(31 downto 8), + DIBDI(7 downto 0) => B"00000000", + DIPADIP(3 downto 1) => B"000", + DIPADIP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\(8), + DIPBDIP(3 downto 0) => B"0000", + DOADO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\(31 downto 8), + DOADO(7) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\, + DOADO(6) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\, + DOADO(5) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\, + DOADO(4) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\, + DOADO(3) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\, + DOADO(2) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\, + DOADO(1) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\, + DOADO(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\, + DOBDO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\(31 downto 8), + DOBDO(7 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(7 downto 0), + DOPADOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\(3 downto 1), + DOPADOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\, + DOPBDOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\(3 downto 1), + DOPBDOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8), + ECCPARITY(7 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\(7 downto 0), + ENARDEN => mim_rx_wen, + ENBWREN => mim_rx_ren, + INJECTDBITERR => '0', + INJECTSBITERR => '0', + RDADDRECC(8 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\(8 downto 0), + REGCEAREGCE => '0', + REGCEB => '1', + RSTRAMARSTRAM => '0', + RSTRAMB => '0', + RSTREGARSTREG => '0', + RSTREGB => '0', + SBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\, + WEA(3 downto 0) => B"1111", + WEBWE(7 downto 0) => B"00000000" + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_BRAM_TDP_MACRO_30 is + port ( + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\ : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_rx_wen : in STD_LOGIC; + mim_rx_ren : in STD_LOGIC; + MIMRXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMRXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\ : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_BRAM_TDP_MACRO_30 : entity is "BRAM_TDP_MACRO"; +end pcie_7x_0_BRAM_TDP_MACRO_30; + +architecture STRUCTURE of pcie_7x_0_BRAM_TDP_MACRO_30 is + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\ : STD_LOGIC_VECTOR ( 8 downto 0 ); + attribute BOX_TYPE : string; + attribute BOX_TYPE of \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : label is "PRIMITIVE"; +begin +\genblk5_0.bram36_tdp_bl.bram36_tdp_bl\: unisim.vcomponents.RAMB36E1 + generic map( + DOA_REG => 0, + DOB_REG => 1, + EN_ECC_READ => false, + EN_ECC_WRITE => false, + INITP_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_40 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_41 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_42 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_43 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_44 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_45 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_46 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_47 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_48 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_49 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_50 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_51 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_52 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_53 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_54 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_55 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_56 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_57 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_58 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_59 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_60 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_61 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_62 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_63 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_64 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_65 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_66 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_67 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_68 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_69 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_70 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_71 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_72 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_73 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_74 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_75 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_76 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_77 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_78 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_79 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_A => X"000000000", + INIT_B => X"000000000", + INIT_FILE => "NONE", + IS_CLKARDCLK_INVERTED => '0', + IS_CLKBWRCLK_INVERTED => '0', + IS_ENARDEN_INVERTED => '0', + IS_ENBWREN_INVERTED => '0', + IS_RSTRAMARSTRAM_INVERTED => '0', + IS_RSTRAMB_INVERTED => '0', + IS_RSTREGARSTREG_INVERTED => '0', + IS_RSTREGB_INVERTED => '0', + RAM_EXTENSION_A => "NONE", + RAM_EXTENSION_B => "NONE", + RAM_MODE => "TDP", + RDADDR_COLLISION_HWCONFIG => "DELAYED_WRITE", + READ_WIDTH_A => 9, + READ_WIDTH_B => 9, + RSTREG_PRIORITY_A => "RSTREG", + RSTREG_PRIORITY_B => "RSTREG", + SIM_COLLISION_CHECK => "ALL", + SIM_DEVICE => "7SERIES", + SRVAL_A => X"000000000", + SRVAL_B => X"000000000", + WRITE_MODE_A => "NO_CHANGE", + WRITE_MODE_B => "WRITE_FIRST", + WRITE_WIDTH_A => 9, + WRITE_WIDTH_B => 9 + ) + port map ( + ADDRARDADDR(15) => '1', + ADDRARDADDR(14 downto 3) => MIMRXWADDR(11 downto 0), + ADDRARDADDR(2 downto 0) => B"111", + ADDRBWRADDR(15) => '1', + ADDRBWRADDR(14 downto 3) => MIMRXRADDR(11 downto 0), + ADDRBWRADDR(2 downto 0) => B"111", + CASCADEINA => '0', + CASCADEINB => '0', + CASCADEOUTA => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\, + CASCADEOUTB => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\, + CLKARDCLK => pipe_userclk1_in, + CLKBWRCLK => pipe_userclk1_in, + DBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\, + DIADI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\(31 downto 8), + DIADI(7 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\(7 downto 0), + DIBDI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\(31 downto 8), + DIBDI(7 downto 0) => B"00000000", + DIPADIP(3 downto 1) => B"000", + DIPADIP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\(8), + DIPBDIP(3 downto 0) => B"0000", + DOADO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\(31 downto 8), + DOADO(7) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\, + DOADO(6) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\, + DOADO(5) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\, + DOADO(4) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\, + DOADO(3) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\, + DOADO(2) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\, + DOADO(1) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\, + DOADO(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\, + DOBDO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\(31 downto 8), + DOBDO(7 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(7 downto 0), + DOPADOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\(3 downto 1), + DOPADOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\, + DOPBDOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\(3 downto 1), + DOPBDOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8), + ECCPARITY(7 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\(7 downto 0), + ENARDEN => mim_rx_wen, + ENBWREN => mim_rx_ren, + INJECTDBITERR => '0', + INJECTSBITERR => '0', + RDADDRECC(8 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\(8 downto 0), + REGCEAREGCE => '0', + REGCEB => '1', + RSTRAMARSTRAM => '0', + RSTRAMB => '0', + RSTREGARSTREG => '0', + RSTREGB => '0', + SBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\, + WEA(3 downto 0) => B"1111", + WEBWE(7 downto 0) => B"00000000" + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_BRAM_TDP_MACRO_31 is + port ( + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\ : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_rx_wen : in STD_LOGIC; + mim_rx_ren : in STD_LOGIC; + MIMRXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMRXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\ : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_BRAM_TDP_MACRO_31 : entity is "BRAM_TDP_MACRO"; +end pcie_7x_0_BRAM_TDP_MACRO_31; + +architecture STRUCTURE of pcie_7x_0_BRAM_TDP_MACRO_31 is + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\ : STD_LOGIC_VECTOR ( 8 downto 0 ); + attribute BOX_TYPE : string; + attribute BOX_TYPE of \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : label is "PRIMITIVE"; +begin +\genblk5_0.bram36_tdp_bl.bram36_tdp_bl\: unisim.vcomponents.RAMB36E1 + generic map( + DOA_REG => 0, + DOB_REG => 1, + EN_ECC_READ => false, + EN_ECC_WRITE => false, + INITP_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_40 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_41 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_42 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_43 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_44 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_45 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_46 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_47 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_48 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_49 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_50 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_51 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_52 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_53 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_54 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_55 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_56 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_57 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_58 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_59 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_60 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_61 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_62 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_63 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_64 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_65 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_66 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_67 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_68 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_69 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_70 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_71 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_72 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_73 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_74 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_75 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_76 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_77 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_78 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_79 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_A => X"000000000", + INIT_B => X"000000000", + INIT_FILE => "NONE", + IS_CLKARDCLK_INVERTED => '0', + IS_CLKBWRCLK_INVERTED => '0', + IS_ENARDEN_INVERTED => '0', + IS_ENBWREN_INVERTED => '0', + IS_RSTRAMARSTRAM_INVERTED => '0', + IS_RSTRAMB_INVERTED => '0', + IS_RSTREGARSTREG_INVERTED => '0', + IS_RSTREGB_INVERTED => '0', + RAM_EXTENSION_A => "NONE", + RAM_EXTENSION_B => "NONE", + RAM_MODE => "TDP", + RDADDR_COLLISION_HWCONFIG => "DELAYED_WRITE", + READ_WIDTH_A => 9, + READ_WIDTH_B => 9, + RSTREG_PRIORITY_A => "RSTREG", + RSTREG_PRIORITY_B => "RSTREG", + SIM_COLLISION_CHECK => "ALL", + SIM_DEVICE => "7SERIES", + SRVAL_A => X"000000000", + SRVAL_B => X"000000000", + WRITE_MODE_A => "NO_CHANGE", + WRITE_MODE_B => "WRITE_FIRST", + WRITE_WIDTH_A => 9, + WRITE_WIDTH_B => 9 + ) + port map ( + ADDRARDADDR(15) => '1', + ADDRARDADDR(14 downto 3) => MIMRXWADDR(11 downto 0), + ADDRARDADDR(2 downto 0) => B"111", + ADDRBWRADDR(15) => '1', + ADDRBWRADDR(14 downto 3) => MIMRXRADDR(11 downto 0), + ADDRBWRADDR(2 downto 0) => B"111", + CASCADEINA => '0', + CASCADEINB => '0', + CASCADEOUTA => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\, + CASCADEOUTB => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\, + CLKARDCLK => pipe_userclk1_in, + CLKBWRCLK => pipe_userclk1_in, + DBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\, + DIADI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\(31 downto 8), + DIADI(7 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\(7 downto 0), + DIBDI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\(31 downto 8), + DIBDI(7 downto 0) => B"00000000", + DIPADIP(3 downto 1) => B"000", + DIPADIP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\(8), + DIPBDIP(3 downto 0) => B"0000", + DOADO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\(31 downto 8), + DOADO(7) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\, + DOADO(6) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\, + DOADO(5) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\, + DOADO(4) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\, + DOADO(3) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\, + DOADO(2) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\, + DOADO(1) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\, + DOADO(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\, + DOBDO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\(31 downto 8), + DOBDO(7 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(7 downto 0), + DOPADOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\(3 downto 1), + DOPADOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\, + DOPBDOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\(3 downto 1), + DOPBDOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8), + ECCPARITY(7 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\(7 downto 0), + ENARDEN => mim_rx_wen, + ENBWREN => mim_rx_ren, + INJECTDBITERR => '0', + INJECTSBITERR => '0', + RDADDRECC(8 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\(8 downto 0), + REGCEAREGCE => '0', + REGCEB => '1', + RSTRAMARSTRAM => '0', + RSTRAMB => '0', + RSTREGARSTREG => '0', + RSTREGB => '0', + SBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\, + WEA(3 downto 0) => B"1111", + WEBWE(7 downto 0) => B"00000000" + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_BRAM_TDP_MACRO_32 is + port ( + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\ : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_rx_wen : in STD_LOGIC; + mim_rx_ren : in STD_LOGIC; + MIMRXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMRXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\ : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_BRAM_TDP_MACRO_32 : entity is "BRAM_TDP_MACRO"; +end pcie_7x_0_BRAM_TDP_MACRO_32; + +architecture STRUCTURE of pcie_7x_0_BRAM_TDP_MACRO_32 is + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\ : STD_LOGIC_VECTOR ( 8 downto 0 ); + attribute BOX_TYPE : string; + attribute BOX_TYPE of \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : label is "PRIMITIVE"; +begin +\genblk5_0.bram36_tdp_bl.bram36_tdp_bl\: unisim.vcomponents.RAMB36E1 + generic map( + DOA_REG => 0, + DOB_REG => 1, + EN_ECC_READ => false, + EN_ECC_WRITE => false, + INITP_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_40 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_41 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_42 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_43 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_44 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_45 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_46 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_47 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_48 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_49 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_50 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_51 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_52 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_53 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_54 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_55 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_56 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_57 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_58 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_59 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_60 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_61 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_62 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_63 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_64 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_65 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_66 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_67 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_68 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_69 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_70 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_71 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_72 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_73 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_74 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_75 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_76 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_77 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_78 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_79 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_A => X"000000000", + INIT_B => X"000000000", + INIT_FILE => "NONE", + IS_CLKARDCLK_INVERTED => '0', + IS_CLKBWRCLK_INVERTED => '0', + IS_ENARDEN_INVERTED => '0', + IS_ENBWREN_INVERTED => '0', + IS_RSTRAMARSTRAM_INVERTED => '0', + IS_RSTRAMB_INVERTED => '0', + IS_RSTREGARSTREG_INVERTED => '0', + IS_RSTREGB_INVERTED => '0', + RAM_EXTENSION_A => "NONE", + RAM_EXTENSION_B => "NONE", + RAM_MODE => "TDP", + RDADDR_COLLISION_HWCONFIG => "DELAYED_WRITE", + READ_WIDTH_A => 9, + READ_WIDTH_B => 9, + RSTREG_PRIORITY_A => "RSTREG", + RSTREG_PRIORITY_B => "RSTREG", + SIM_COLLISION_CHECK => "ALL", + SIM_DEVICE => "7SERIES", + SRVAL_A => X"000000000", + SRVAL_B => X"000000000", + WRITE_MODE_A => "NO_CHANGE", + WRITE_MODE_B => "WRITE_FIRST", + WRITE_WIDTH_A => 9, + WRITE_WIDTH_B => 9 + ) + port map ( + ADDRARDADDR(15) => '1', + ADDRARDADDR(14 downto 3) => MIMRXWADDR(11 downto 0), + ADDRARDADDR(2 downto 0) => B"111", + ADDRBWRADDR(15) => '1', + ADDRBWRADDR(14 downto 3) => MIMRXRADDR(11 downto 0), + ADDRBWRADDR(2 downto 0) => B"111", + CASCADEINA => '0', + CASCADEINB => '0', + CASCADEOUTA => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\, + CASCADEOUTB => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\, + CLKARDCLK => pipe_userclk1_in, + CLKBWRCLK => pipe_userclk1_in, + DBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\, + DIADI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\(31 downto 8), + DIADI(7 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\(7 downto 0), + DIBDI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\(31 downto 8), + DIBDI(7 downto 0) => B"00000000", + DIPADIP(3 downto 1) => B"000", + DIPADIP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\(8), + DIPBDIP(3 downto 0) => B"0000", + DOADO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\(31 downto 8), + DOADO(7) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\, + DOADO(6) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\, + DOADO(5) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\, + DOADO(4) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\, + DOADO(3) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\, + DOADO(2) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\, + DOADO(1) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\, + DOADO(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\, + DOBDO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\(31 downto 8), + DOBDO(7 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(7 downto 0), + DOPADOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\(3 downto 1), + DOPADOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\, + DOPBDOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\(3 downto 1), + DOPBDOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8), + ECCPARITY(7 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\(7 downto 0), + ENARDEN => mim_rx_wen, + ENBWREN => mim_rx_ren, + INJECTDBITERR => '0', + INJECTSBITERR => '0', + RDADDRECC(8 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\(8 downto 0), + REGCEAREGCE => '0', + REGCEB => '1', + RSTRAMARSTRAM => '0', + RSTRAMB => '0', + RSTREGARSTREG => '0', + RSTREGB => '0', + SBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\, + WEA(3 downto 0) => B"1111", + WEBWE(7 downto 0) => B"00000000" + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_BRAM_TDP_MACRO_33 is + port ( + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\ : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_rx_wen : in STD_LOGIC; + mim_rx_ren : in STD_LOGIC; + MIMRXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMRXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\ : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_BRAM_TDP_MACRO_33 : entity is "BRAM_TDP_MACRO"; +end pcie_7x_0_BRAM_TDP_MACRO_33; + +architecture STRUCTURE of pcie_7x_0_BRAM_TDP_MACRO_33 is + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\ : STD_LOGIC; + signal \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 31 downto 8 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\ : STD_LOGIC_VECTOR ( 8 downto 0 ); + attribute BOX_TYPE : string; + attribute BOX_TYPE of \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : label is "PRIMITIVE"; +begin +\genblk5_0.bram36_tdp_bl.bram36_tdp_bl\: unisim.vcomponents.RAMB36E1 + generic map( + DOA_REG => 0, + DOB_REG => 1, + EN_ECC_READ => false, + EN_ECC_WRITE => false, + INITP_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_40 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_41 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_42 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_43 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_44 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_45 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_46 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_47 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_48 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_49 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_4F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_50 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_51 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_52 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_53 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_54 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_55 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_56 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_57 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_58 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_59 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_5F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_60 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_61 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_62 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_63 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_64 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_65 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_66 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_67 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_68 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_69 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_6F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_70 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_71 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_72 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_73 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_74 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_75 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_76 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_77 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_78 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_79 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_7F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_A => X"000000000", + INIT_B => X"000000000", + INIT_FILE => "NONE", + IS_CLKARDCLK_INVERTED => '0', + IS_CLKBWRCLK_INVERTED => '0', + IS_ENARDEN_INVERTED => '0', + IS_ENBWREN_INVERTED => '0', + IS_RSTRAMARSTRAM_INVERTED => '0', + IS_RSTRAMB_INVERTED => '0', + IS_RSTREGARSTREG_INVERTED => '0', + IS_RSTREGB_INVERTED => '0', + RAM_EXTENSION_A => "NONE", + RAM_EXTENSION_B => "NONE", + RAM_MODE => "TDP", + RDADDR_COLLISION_HWCONFIG => "DELAYED_WRITE", + READ_WIDTH_A => 9, + READ_WIDTH_B => 9, + RSTREG_PRIORITY_A => "RSTREG", + RSTREG_PRIORITY_B => "RSTREG", + SIM_COLLISION_CHECK => "ALL", + SIM_DEVICE => "7SERIES", + SRVAL_A => X"000000000", + SRVAL_B => X"000000000", + WRITE_MODE_A => "NO_CHANGE", + WRITE_MODE_B => "WRITE_FIRST", + WRITE_WIDTH_A => 9, + WRITE_WIDTH_B => 9 + ) + port map ( + ADDRARDADDR(15) => '1', + ADDRARDADDR(14 downto 3) => MIMRXWADDR(11 downto 0), + ADDRARDADDR(2 downto 0) => B"111", + ADDRBWRADDR(15) => '1', + ADDRBWRADDR(14 downto 3) => MIMRXRADDR(11 downto 0), + ADDRBWRADDR(2 downto 0) => B"111", + CASCADEINA => '0', + CASCADEINB => '0', + CASCADEOUTA => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTA_UNCONNECTED\, + CASCADEOUTB => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_CASCADEOUTB_UNCONNECTED\, + CLKARDCLK => pipe_userclk1_in, + CLKBWRCLK => pipe_userclk1_in, + DBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DBITERR_UNCONNECTED\, + DIADI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIADI_UNCONNECTED\(31 downto 8), + DIADI(7 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\(7 downto 0), + DIBDI(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DIBDI_UNCONNECTED\(31 downto 8), + DIBDI(7 downto 0) => B"00000000", + DIPADIP(3 downto 1) => B"000", + DIPADIP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\(8), + DIPBDIP(3 downto 0) => B"0000", + DOADO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOADO_UNCONNECTED\(31 downto 8), + DOADO(7) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_28\, + DOADO(6) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_29\, + DOADO(5) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_30\, + DOADO(4) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_31\, + DOADO(3) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_32\, + DOADO(2) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_33\, + DOADO(1) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_34\, + DOADO(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_35\, + DOBDO(31 downto 8) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOBDO_UNCONNECTED\(31 downto 8), + DOBDO(7 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(7 downto 0), + DOPADOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPADOP_UNCONNECTED\(3 downto 1), + DOPADOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_n_71\, + DOPBDOP(3 downto 1) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_DOPBDOP_UNCONNECTED\(3 downto 1), + DOPBDOP(0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8), + ECCPARITY(7 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_ECCPARITY_UNCONNECTED\(7 downto 0), + ENARDEN => mim_rx_wen, + ENBWREN => mim_rx_ren, + INJECTDBITERR => '0', + INJECTSBITERR => '0', + RDADDRECC(8 downto 0) => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_RDADDRECC_UNCONNECTED\(8 downto 0), + REGCEAREGCE => '0', + REGCEB => '1', + RSTRAMARSTRAM => '0', + RSTRAMB => '0', + RSTREGARSTREG => '0', + RSTREGB => '0', + SBITERR => \NLW_genblk5_0.bram36_tdp_bl.bram36_tdp_bl_SBITERR_UNCONNECTED\, + WEA(3 downto 0) => B"1111", + WEBWE(7 downto 0) => B"00000000" + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_axi_basic_rx_null_gen is + port ( + D : out STD_LOGIC_VECTOR ( 1 downto 0 ); + \reg_tkeep[7]_i_7_0\ : out STD_LOGIC; + \reg_pkt_len_counter_reg[3]_0\ : out STD_LOGIC; + \reg_pkt_len_counter_reg[0]_0\ : out STD_LOGIC; + null_mux_sel_reg : out STD_LOGIC; + null_mux_sel_reg_0 : out STD_LOGIC; + S : out STD_LOGIC_VECTOR ( 1 downto 0 ); + cur_state_reg_0 : in STD_LOGIC; + pipe_userclk2_in : in STD_LOGIC; + null_mux_sel : in STD_LOGIC; + \m_axis_rx_tuser_reg[19]\ : in STD_LOGIC; + new_pkt_len : in STD_LOGIC_VECTOR ( 10 downto 0 ); + m_axis_rx_tready : in STD_LOGIC; + null_mux_sel_reg_1 : in STD_LOGIC; + cur_state_reg_1 : in STD_LOGIC; + m_axis_rx_tuser : in STD_LOGIC_VECTOR ( 0 to 0 ); + \m_axis_rx_tuser_reg[21]\ : in STD_LOGIC; + Q : in STD_LOGIC_VECTOR ( 4 downto 0 ) + ); +end pcie_7x_0_pcie_7x_0_axi_basic_rx_null_gen; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_axi_basic_rx_null_gen is + signal cur_state : STD_LOGIC; + signal next_state : STD_LOGIC; + signal pkt_len_counter : STD_LOGIC_VECTOR ( 11 downto 1 ); + signal pkt_len_counter_0 : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal \pkt_len_counter_dec__0_carry__0_i_1_n_0\ : STD_LOGIC; + signal \pkt_len_counter_dec__0_carry__0_i_2_n_0\ : STD_LOGIC; + signal \pkt_len_counter_dec__0_carry__0_i_3_n_0\ : STD_LOGIC; + signal \pkt_len_counter_dec__0_carry__0_i_4_n_0\ : STD_LOGIC; + signal \pkt_len_counter_dec__0_carry__0_n_0\ : STD_LOGIC; + signal \pkt_len_counter_dec__0_carry__0_n_1\ : STD_LOGIC; + signal \pkt_len_counter_dec__0_carry__0_n_2\ : STD_LOGIC; + signal \pkt_len_counter_dec__0_carry__0_n_3\ : STD_LOGIC; + signal \pkt_len_counter_dec__0_carry__1_i_1_n_0\ : STD_LOGIC; + signal \pkt_len_counter_dec__0_carry__1_i_2_n_0\ : STD_LOGIC; + signal \pkt_len_counter_dec__0_carry__1_i_3_n_0\ : STD_LOGIC; + signal \pkt_len_counter_dec__0_carry__1_n_2\ : STD_LOGIC; + signal \pkt_len_counter_dec__0_carry__1_n_3\ : STD_LOGIC; + signal \pkt_len_counter_dec__0_carry_i_1_n_0\ : STD_LOGIC; + signal \pkt_len_counter_dec__0_carry_i_2_n_0\ : STD_LOGIC; + signal \pkt_len_counter_dec__0_carry_i_3_n_0\ : STD_LOGIC; + signal \pkt_len_counter_dec__0_carry_i_4_n_0\ : STD_LOGIC; + signal \pkt_len_counter_dec__0_carry_i_5_n_0\ : STD_LOGIC; + signal \pkt_len_counter_dec__0_carry_n_0\ : STD_LOGIC; + signal \pkt_len_counter_dec__0_carry_n_1\ : STD_LOGIC; + signal \pkt_len_counter_dec__0_carry_n_2\ : STD_LOGIC; + signal \pkt_len_counter_dec__0_carry_n_3\ : STD_LOGIC; + signal reg_pkt_len_counter : STD_LOGIC_VECTOR ( 11 downto 0 ); + signal \reg_pkt_len_counter[11]_i_2_n_0\ : STD_LOGIC; + signal \reg_pkt_len_counter[11]_i_3_n_0\ : STD_LOGIC; + signal \reg_pkt_len_counter[11]_i_4_n_0\ : STD_LOGIC; + signal \^reg_pkt_len_counter_reg[3]_0\ : STD_LOGIC; + signal \reg_tkeep[7]_i_4_n_0\ : STD_LOGIC; + signal \reg_tkeep[7]_i_5_n_0\ : STD_LOGIC; + signal \reg_tkeep[7]_i_6_n_0\ : STD_LOGIC; + signal \^reg_tkeep[7]_i_7_0\ : STD_LOGIC; + signal \reg_tkeep[7]_i_7_n_0\ : STD_LOGIC; + signal sel0 : STD_LOGIC_VECTOR ( 11 downto 2 ); + signal \NLW_pkt_len_counter_dec__0_carry__1_CO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 2 ); + signal \NLW_pkt_len_counter_dec__0_carry__1_O_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 to 3 ); + attribute ADDER_THRESHOLD : integer; + attribute ADDER_THRESHOLD of \pkt_len_counter_dec__0_carry\ : label is 35; + attribute ADDER_THRESHOLD of \pkt_len_counter_dec__0_carry__0\ : label is 35; + attribute ADDER_THRESHOLD of \pkt_len_counter_dec__0_carry__1\ : label is 35; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \reg_pkt_len_counter[0]_i_1\ : label is "soft_lutpair214"; + attribute SOFT_HLUTNM of \reg_pkt_len_counter[10]_i_1\ : label is "soft_lutpair211"; + attribute SOFT_HLUTNM of \reg_pkt_len_counter[11]_i_1\ : label is "soft_lutpair211"; + attribute SOFT_HLUTNM of \reg_pkt_len_counter[2]_i_1\ : label is "soft_lutpair210"; + attribute SOFT_HLUTNM of \reg_pkt_len_counter[3]_i_1\ : label is "soft_lutpair214"; + attribute SOFT_HLUTNM of \reg_pkt_len_counter[4]_i_1\ : label is "soft_lutpair208"; + attribute SOFT_HLUTNM of \reg_pkt_len_counter[5]_i_1\ : label is "soft_lutpair212"; + attribute SOFT_HLUTNM of \reg_pkt_len_counter[6]_i_1\ : label is "soft_lutpair209"; + attribute SOFT_HLUTNM of \reg_pkt_len_counter[7]_i_1\ : label is "soft_lutpair213"; + attribute SOFT_HLUTNM of \reg_pkt_len_counter[8]_i_1\ : label is "soft_lutpair207"; + attribute SOFT_HLUTNM of \reg_pkt_len_counter[9]_i_1\ : label is "soft_lutpair212"; + attribute SOFT_HLUTNM of \reg_tkeep[7]_i_3\ : label is "soft_lutpair213"; + attribute SOFT_HLUTNM of \reg_tkeep[7]_i_4\ : label is "soft_lutpair207"; + attribute SOFT_HLUTNM of \reg_tkeep[7]_i_5\ : label is "soft_lutpair209"; + attribute SOFT_HLUTNM of \reg_tkeep[7]_i_6\ : label is "soft_lutpair208"; + attribute SOFT_HLUTNM of \reg_tkeep[7]_i_7\ : label is "soft_lutpair210"; +begin + \reg_pkt_len_counter_reg[3]_0\ <= \^reg_pkt_len_counter_reg[3]_0\; + \reg_tkeep[7]_i_7_0\ <= \^reg_tkeep[7]_i_7_0\; +cur_state_i_1: unisim.vcomponents.LUT5 + generic map( + INIT => X"AAAAAAEA" + ) + port map ( + I0 => \reg_pkt_len_counter[11]_i_2_n_0\, + I1 => m_axis_rx_tready, + I2 => cur_state_reg_1, + I3 => cur_state, + I4 => m_axis_rx_tuser(0), + O => next_state + ); +cur_state_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => next_state, + Q => cur_state, + R => cur_state_reg_0 + ); +\m_axis_rx_tuser[19]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"5555555500000400" + ) + port map ( + I0 => cur_state_reg_0, + I1 => \^reg_tkeep[7]_i_7_0\, + I2 => \^reg_pkt_len_counter_reg[3]_0\, + I3 => null_mux_sel, + I4 => pkt_len_counter_0(0), + I5 => \m_axis_rx_tuser_reg[19]\, + O => D(0) + ); +\m_axis_rx_tuser[21]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"00000000FF80FF08" + ) + port map ( + I0 => \^reg_tkeep[7]_i_7_0\, + I1 => null_mux_sel, + I2 => \^reg_pkt_len_counter_reg[3]_0\, + I3 => \m_axis_rx_tuser_reg[21]\, + I4 => pkt_len_counter_0(0), + I5 => cur_state_reg_0, + O => D(1) + ); +null_mux_sel_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000077F7FFFF" + ) + port map ( + I0 => \^reg_tkeep[7]_i_7_0\, + I1 => null_mux_sel, + I2 => pkt_len_counter_0(0), + I3 => \^reg_pkt_len_counter_reg[3]_0\, + I4 => m_axis_rx_tready, + I5 => null_mux_sel_reg_1, + O => null_mux_sel_reg + ); +\pkt_len_counter_dec__0_carry\: unisim.vcomponents.CARRY4 + port map ( + CI => '0', + CO(3) => \pkt_len_counter_dec__0_carry_n_0\, + CO(2) => \pkt_len_counter_dec__0_carry_n_1\, + CO(1) => \pkt_len_counter_dec__0_carry_n_2\, + CO(0) => \pkt_len_counter_dec__0_carry_n_3\, + CYINIT => '0', + DI(3 downto 2) => reg_pkt_len_counter(3 downto 2), + DI(1) => \pkt_len_counter_dec__0_carry_i_1_n_0\, + DI(0) => '0', + O(3 downto 0) => pkt_len_counter(4 downto 1), + S(3) => \pkt_len_counter_dec__0_carry_i_2_n_0\, + S(2) => \pkt_len_counter_dec__0_carry_i_3_n_0\, + S(1) => \pkt_len_counter_dec__0_carry_i_4_n_0\, + S(0) => \pkt_len_counter_dec__0_carry_i_5_n_0\ + ); +\pkt_len_counter_dec__0_carry__0\: unisim.vcomponents.CARRY4 + port map ( + CI => \pkt_len_counter_dec__0_carry_n_0\, + CO(3) => \pkt_len_counter_dec__0_carry__0_n_0\, + CO(2) => \pkt_len_counter_dec__0_carry__0_n_1\, + CO(1) => \pkt_len_counter_dec__0_carry__0_n_2\, + CO(0) => \pkt_len_counter_dec__0_carry__0_n_3\, + CYINIT => '0', + DI(3 downto 0) => reg_pkt_len_counter(7 downto 4), + O(3 downto 0) => pkt_len_counter(8 downto 5), + S(3) => \pkt_len_counter_dec__0_carry__0_i_1_n_0\, + S(2) => \pkt_len_counter_dec__0_carry__0_i_2_n_0\, + S(1) => \pkt_len_counter_dec__0_carry__0_i_3_n_0\, + S(0) => \pkt_len_counter_dec__0_carry__0_i_4_n_0\ + ); +\pkt_len_counter_dec__0_carry__0_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"9" + ) + port map ( + I0 => reg_pkt_len_counter(7), + I1 => reg_pkt_len_counter(8), + O => \pkt_len_counter_dec__0_carry__0_i_1_n_0\ + ); +\pkt_len_counter_dec__0_carry__0_i_2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"9" + ) + port map ( + I0 => reg_pkt_len_counter(6), + I1 => reg_pkt_len_counter(7), + O => \pkt_len_counter_dec__0_carry__0_i_2_n_0\ + ); +\pkt_len_counter_dec__0_carry__0_i_3\: unisim.vcomponents.LUT2 + generic map( + INIT => X"9" + ) + port map ( + I0 => reg_pkt_len_counter(5), + I1 => reg_pkt_len_counter(6), + O => \pkt_len_counter_dec__0_carry__0_i_3_n_0\ + ); +\pkt_len_counter_dec__0_carry__0_i_4\: unisim.vcomponents.LUT2 + generic map( + INIT => X"9" + ) + port map ( + I0 => reg_pkt_len_counter(4), + I1 => reg_pkt_len_counter(5), + O => \pkt_len_counter_dec__0_carry__0_i_4_n_0\ + ); +\pkt_len_counter_dec__0_carry__1\: unisim.vcomponents.CARRY4 + port map ( + CI => \pkt_len_counter_dec__0_carry__0_n_0\, + CO(3 downto 2) => \NLW_pkt_len_counter_dec__0_carry__1_CO_UNCONNECTED\(3 downto 2), + CO(1) => \pkt_len_counter_dec__0_carry__1_n_2\, + CO(0) => \pkt_len_counter_dec__0_carry__1_n_3\, + CYINIT => '0', + DI(3 downto 2) => B"00", + DI(1 downto 0) => reg_pkt_len_counter(9 downto 8), + O(3) => \NLW_pkt_len_counter_dec__0_carry__1_O_UNCONNECTED\(3), + O(2 downto 0) => pkt_len_counter(11 downto 9), + S(3) => '0', + S(2) => \pkt_len_counter_dec__0_carry__1_i_1_n_0\, + S(1) => \pkt_len_counter_dec__0_carry__1_i_2_n_0\, + S(0) => \pkt_len_counter_dec__0_carry__1_i_3_n_0\ + ); +\pkt_len_counter_dec__0_carry__1_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"9" + ) + port map ( + I0 => reg_pkt_len_counter(10), + I1 => reg_pkt_len_counter(11), + O => \pkt_len_counter_dec__0_carry__1_i_1_n_0\ + ); +\pkt_len_counter_dec__0_carry__1_i_2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"9" + ) + port map ( + I0 => reg_pkt_len_counter(9), + I1 => reg_pkt_len_counter(10), + O => \pkt_len_counter_dec__0_carry__1_i_2_n_0\ + ); +\pkt_len_counter_dec__0_carry__1_i_3\: unisim.vcomponents.LUT2 + generic map( + INIT => X"9" + ) + port map ( + I0 => reg_pkt_len_counter(8), + I1 => reg_pkt_len_counter(9), + O => \pkt_len_counter_dec__0_carry__1_i_3_n_0\ + ); +\pkt_len_counter_dec__0_carry_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"B" + ) + port map ( + I0 => reg_pkt_len_counter(1), + I1 => m_axis_rx_tready, + O => \pkt_len_counter_dec__0_carry_i_1_n_0\ + ); +\pkt_len_counter_dec__0_carry_i_2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"9" + ) + port map ( + I0 => reg_pkt_len_counter(3), + I1 => reg_pkt_len_counter(4), + O => \pkt_len_counter_dec__0_carry_i_2_n_0\ + ); +\pkt_len_counter_dec__0_carry_i_3\: unisim.vcomponents.LUT2 + generic map( + INIT => X"9" + ) + port map ( + I0 => reg_pkt_len_counter(2), + I1 => reg_pkt_len_counter(3), + O => \pkt_len_counter_dec__0_carry_i_3_n_0\ + ); +\pkt_len_counter_dec__0_carry_i_4\: unisim.vcomponents.LUT3 + generic map( + INIT => X"D2" + ) + port map ( + I0 => m_axis_rx_tready, + I1 => reg_pkt_len_counter(1), + I2 => reg_pkt_len_counter(2), + O => \pkt_len_counter_dec__0_carry_i_4_n_0\ + ); +\pkt_len_counter_dec__0_carry_i_5\: unisim.vcomponents.LUT2 + generic map( + INIT => X"6" + ) + port map ( + I0 => reg_pkt_len_counter(1), + I1 => m_axis_rx_tready, + O => \pkt_len_counter_dec__0_carry_i_5_n_0\ + ); +\reg_pkt_len_counter[0]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => reg_pkt_len_counter(0), + I1 => \reg_pkt_len_counter[11]_i_2_n_0\, + I2 => new_pkt_len(0), + O => pkt_len_counter_0(0) + ); +\reg_pkt_len_counter[10]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => pkt_len_counter(10), + I1 => \reg_pkt_len_counter[11]_i_2_n_0\, + I2 => new_pkt_len(10), + O => sel0(10) + ); +\reg_pkt_len_counter[11]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => pkt_len_counter(11), + I1 => \reg_pkt_len_counter[11]_i_2_n_0\, + O => sel0(11) + ); +\reg_pkt_len_counter[11]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"AAAAAAA8AAAAAAAA" + ) + port map ( + I0 => cur_state, + I1 => reg_pkt_len_counter(3), + I2 => reg_pkt_len_counter(8), + I3 => reg_pkt_len_counter(7), + I4 => \reg_pkt_len_counter[11]_i_3_n_0\, + I5 => \reg_pkt_len_counter[11]_i_4_n_0\, + O => \reg_pkt_len_counter[11]_i_2_n_0\ + ); +\reg_pkt_len_counter[11]_i_3\: unisim.vcomponents.LUT4 + generic map( + INIT => X"FFEF" + ) + port map ( + I0 => reg_pkt_len_counter(5), + I1 => reg_pkt_len_counter(4), + I2 => m_axis_rx_tready, + I3 => reg_pkt_len_counter(9), + O => \reg_pkt_len_counter[11]_i_3_n_0\ + ); +\reg_pkt_len_counter[11]_i_4\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000000000007" + ) + port map ( + I0 => reg_pkt_len_counter(0), + I1 => reg_pkt_len_counter(1), + I2 => reg_pkt_len_counter(2), + I3 => reg_pkt_len_counter(6), + I4 => reg_pkt_len_counter(10), + I5 => reg_pkt_len_counter(11), + O => \reg_pkt_len_counter[11]_i_4_n_0\ + ); +\reg_pkt_len_counter[1]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"E2" + ) + port map ( + I0 => new_pkt_len(1), + I1 => \reg_pkt_len_counter[11]_i_2_n_0\, + I2 => pkt_len_counter(1), + O => pkt_len_counter_0(1) + ); +\reg_pkt_len_counter[2]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => pkt_len_counter(2), + I1 => \reg_pkt_len_counter[11]_i_2_n_0\, + I2 => new_pkt_len(2), + O => sel0(2) + ); +\reg_pkt_len_counter[3]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => pkt_len_counter(3), + I1 => \reg_pkt_len_counter[11]_i_2_n_0\, + I2 => new_pkt_len(3), + O => sel0(3) + ); +\reg_pkt_len_counter[3]_i_7\: unisim.vcomponents.LUT4 + generic map( + INIT => X"1EEE" + ) + port map ( + I0 => Q(2), + I1 => Q(3), + I2 => Q(1), + I3 => Q(4), + O => S(1) + ); +\reg_pkt_len_counter[3]_i_8\: unisim.vcomponents.LUT4 + generic map( + INIT => X"6999" + ) + port map ( + I0 => Q(3), + I1 => Q(2), + I2 => Q(4), + I3 => Q(0), + O => S(0) + ); +\reg_pkt_len_counter[4]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => pkt_len_counter(4), + I1 => \reg_pkt_len_counter[11]_i_2_n_0\, + I2 => new_pkt_len(4), + O => sel0(4) + ); +\reg_pkt_len_counter[5]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => pkt_len_counter(5), + I1 => \reg_pkt_len_counter[11]_i_2_n_0\, + I2 => new_pkt_len(5), + O => sel0(5) + ); +\reg_pkt_len_counter[6]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => pkt_len_counter(6), + I1 => \reg_pkt_len_counter[11]_i_2_n_0\, + I2 => new_pkt_len(6), + O => sel0(6) + ); +\reg_pkt_len_counter[7]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => pkt_len_counter(7), + I1 => \reg_pkt_len_counter[11]_i_2_n_0\, + I2 => new_pkt_len(7), + O => sel0(7) + ); +\reg_pkt_len_counter[8]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => pkt_len_counter(8), + I1 => \reg_pkt_len_counter[11]_i_2_n_0\, + I2 => new_pkt_len(8), + O => sel0(8) + ); +\reg_pkt_len_counter[9]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => pkt_len_counter(9), + I1 => \reg_pkt_len_counter[11]_i_2_n_0\, + I2 => new_pkt_len(9), + O => sel0(9) + ); +\reg_pkt_len_counter_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => pkt_len_counter_0(0), + Q => reg_pkt_len_counter(0), + R => cur_state_reg_0 + ); +\reg_pkt_len_counter_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => sel0(10), + Q => reg_pkt_len_counter(10), + R => cur_state_reg_0 + ); +\reg_pkt_len_counter_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => sel0(11), + Q => reg_pkt_len_counter(11), + R => cur_state_reg_0 + ); +\reg_pkt_len_counter_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => pkt_len_counter_0(1), + Q => reg_pkt_len_counter(1), + R => cur_state_reg_0 + ); +\reg_pkt_len_counter_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => sel0(2), + Q => reg_pkt_len_counter(2), + R => cur_state_reg_0 + ); +\reg_pkt_len_counter_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => sel0(3), + Q => reg_pkt_len_counter(3), + R => cur_state_reg_0 + ); +\reg_pkt_len_counter_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => sel0(4), + Q => reg_pkt_len_counter(4), + R => cur_state_reg_0 + ); +\reg_pkt_len_counter_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => sel0(5), + Q => reg_pkt_len_counter(5), + R => cur_state_reg_0 + ); +\reg_pkt_len_counter_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => sel0(6), + Q => reg_pkt_len_counter(6), + R => cur_state_reg_0 + ); +\reg_pkt_len_counter_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => sel0(7), + Q => reg_pkt_len_counter(7), + R => cur_state_reg_0 + ); +\reg_pkt_len_counter_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => sel0(8), + Q => reg_pkt_len_counter(8), + R => cur_state_reg_0 + ); +\reg_pkt_len_counter_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => sel0(9), + Q => reg_pkt_len_counter(9), + R => cur_state_reg_0 + ); +\reg_tkeep[7]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000000000001" + ) + port map ( + I0 => sel0(11), + I1 => sel0(10), + I2 => \reg_tkeep[7]_i_4_n_0\, + I3 => \reg_tkeep[7]_i_5_n_0\, + I4 => \reg_tkeep[7]_i_6_n_0\, + I5 => \reg_tkeep[7]_i_7_n_0\, + O => \^reg_tkeep[7]_i_7_0\ + ); +\reg_tkeep[7]_i_3\: unisim.vcomponents.LUT3 + generic map( + INIT => X"47" + ) + port map ( + I0 => pkt_len_counter(1), + I1 => \reg_pkt_len_counter[11]_i_2_n_0\, + I2 => new_pkt_len(1), + O => \^reg_pkt_len_counter_reg[3]_0\ + ); +\reg_tkeep[7]_i_4\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFACCFA" + ) + port map ( + I0 => new_pkt_len(8), + I1 => pkt_len_counter(8), + I2 => new_pkt_len(9), + I3 => \reg_pkt_len_counter[11]_i_2_n_0\, + I4 => pkt_len_counter(9), + O => \reg_tkeep[7]_i_4_n_0\ + ); +\reg_tkeep[7]_i_5\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFACCFA" + ) + port map ( + I0 => new_pkt_len(6), + I1 => pkt_len_counter(6), + I2 => new_pkt_len(7), + I3 => \reg_pkt_len_counter[11]_i_2_n_0\, + I4 => pkt_len_counter(7), + O => \reg_tkeep[7]_i_5_n_0\ + ); +\reg_tkeep[7]_i_6\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFACCFA" + ) + port map ( + I0 => new_pkt_len(4), + I1 => pkt_len_counter(4), + I2 => new_pkt_len(5), + I3 => \reg_pkt_len_counter[11]_i_2_n_0\, + I4 => pkt_len_counter(5), + O => \reg_tkeep[7]_i_6_n_0\ + ); +\reg_tkeep[7]_i_7\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFACCFA" + ) + port map ( + I0 => new_pkt_len(2), + I1 => pkt_len_counter(2), + I2 => new_pkt_len(3), + I3 => \reg_pkt_len_counter[11]_i_2_n_0\, + I4 => pkt_len_counter(3), + O => \reg_tkeep[7]_i_7_n_0\ + ); +reg_tlast_i_1: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFFB000" + ) + port map ( + I0 => \^reg_pkt_len_counter_reg[3]_0\, + I1 => pkt_len_counter_0(0), + I2 => null_mux_sel, + I3 => \^reg_tkeep[7]_i_7_0\, + I4 => \m_axis_rx_tuser_reg[21]\, + O => null_mux_sel_reg_0 + ); +trn_rdst_rdy_i_3: unisim.vcomponents.LUT6 + generic map( + INIT => X"B8308800FFFFFFFF" + ) + port map ( + I0 => pkt_len_counter(1), + I1 => \reg_pkt_len_counter[11]_i_2_n_0\, + I2 => new_pkt_len(1), + I3 => reg_pkt_len_counter(0), + I4 => new_pkt_len(0), + I5 => null_mux_sel, + O => \reg_pkt_len_counter_reg[0]_0\ + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_axi_basic_rx_pipeline is + port ( + E : out STD_LOGIC_VECTOR ( 0 to 0 ); + trn_rsrc_dsc_d : out STD_LOGIC; + m_axis_rx_tvalid_reg_0 : out STD_LOGIC; + m_axis_rx_tkeep : out STD_LOGIC_VECTOR ( 0 to 0 ); + m_axis_rx_tlast : out STD_LOGIC; + null_mux_sel : out STD_LOGIC; + trn_in_packet : out STD_LOGIC; + reg_dsc_detect_reg_0 : out STD_LOGIC; + user_reset_out_reg : out STD_LOGIC; + Q : out STD_LOGIC_VECTOR ( 63 downto 0 ); + data_prev_reg_0 : out STD_LOGIC; + data_prev_reg_1 : out STD_LOGIC; + new_pkt_len : out STD_LOGIC_VECTOR ( 10 downto 0 ); + m_axis_rx_tuser : out STD_LOGIC_VECTOR ( 12 downto 0 ); + \trn_rbar_hit_prev_reg[0]_0\ : in STD_LOGIC; + pipe_userclk2_in : in STD_LOGIC; + trn_rrem : in STD_LOGIC_VECTOR ( 0 to 0 ); + trn_rsrc_dsc : in STD_LOGIC; + rsrc_rdy_filtered : in STD_LOGIC; + trn_reof : in STD_LOGIC; + reg_tlast_reg_0 : in STD_LOGIC; + trn_rsrc_dsc_prev0 : in STD_LOGIC; + trn_rsof : in STD_LOGIC; + trn_recrc_err : in STD_LOGIC; + trn_rerrfwd : in STD_LOGIC; + null_mux_sel_reg_0 : in STD_LOGIC; + trn_in_packet_reg_0 : in STD_LOGIC; + m_axis_rx_tready : in STD_LOGIC; + dsc_detect : in STD_LOGIC; + trn_rdst_rdy_reg_0 : in STD_LOGIC; + trn_rdst_rdy_reg_1 : in STD_LOGIC; + \reg_tkeep_reg[7]_0\ : in STD_LOGIC; + trn_rd : in STD_LOGIC_VECTOR ( 63 downto 0 ); + trn_rbar_hit : in STD_LOGIC_VECTOR ( 6 downto 0 ); + S : in STD_LOGIC_VECTOR ( 1 downto 0 ); + D : in STD_LOGIC_VECTOR ( 1 downto 0 ) + ); +end pcie_7x_0_pcie_7x_0_axi_basic_rx_pipeline; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_axi_basic_rx_pipeline is + signal \^e\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal \^q\ : STD_LOGIC_VECTOR ( 63 downto 0 ); + signal data_hold : STD_LOGIC; + signal data_prev : STD_LOGIC; + signal \m_axis_rx_tdata[63]_i_1_n_0\ : STD_LOGIC; + signal \m_axis_rx_tuser[0]_i_1_n_0\ : STD_LOGIC; + signal \m_axis_rx_tuser[14]_i_1_n_0\ : STD_LOGIC; + signal \m_axis_rx_tuser[14]_i_2_n_0\ : STD_LOGIC; + signal \m_axis_rx_tuser[18]_i_1_n_0\ : STD_LOGIC; + signal \m_axis_rx_tuser[1]_i_1_n_0\ : STD_LOGIC; + signal \m_axis_rx_tuser[21]_i_1_n_0\ : STD_LOGIC; + signal \m_axis_rx_tuser[2]_i_1_n_0\ : STD_LOGIC; + signal \m_axis_rx_tuser[3]_i_1_n_0\ : STD_LOGIC; + signal \m_axis_rx_tuser[4]_i_1_n_0\ : STD_LOGIC; + signal \m_axis_rx_tuser[5]_i_1_n_0\ : STD_LOGIC; + signal \m_axis_rx_tuser[6]_i_1_n_0\ : STD_LOGIC; + signal \m_axis_rx_tuser[7]_i_1_n_0\ : STD_LOGIC; + signal \m_axis_rx_tuser[8]_i_1_n_0\ : STD_LOGIC; + signal m_axis_rx_tvalid_i_1_n_0 : STD_LOGIC; + signal \^m_axis_rx_tvalid_reg_0\ : STD_LOGIC; + signal \^null_mux_sel\ : STD_LOGIC; + signal p_1_in : STD_LOGIC_VECTOR ( 63 downto 0 ); + signal packet_overhead : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal reg_dsc_detect_i_1_n_0 : STD_LOGIC; + signal \^reg_dsc_detect_reg_0\ : STD_LOGIC; + signal \reg_pkt_len_counter[10]_i_3_n_0\ : STD_LOGIC; + signal \reg_pkt_len_counter[10]_i_4_n_0\ : STD_LOGIC; + signal \reg_pkt_len_counter[3]_i_5_n_0\ : STD_LOGIC; + signal \reg_pkt_len_counter[3]_i_6_n_0\ : STD_LOGIC; + signal \reg_pkt_len_counter[7]_i_3_n_0\ : STD_LOGIC; + signal \reg_pkt_len_counter[7]_i_4_n_0\ : STD_LOGIC; + signal \reg_pkt_len_counter[7]_i_5_n_0\ : STD_LOGIC; + signal \reg_pkt_len_counter[7]_i_6_n_0\ : STD_LOGIC; + signal \reg_pkt_len_counter_reg[10]_i_2_n_3\ : STD_LOGIC; + signal \reg_pkt_len_counter_reg[3]_i_2_n_0\ : STD_LOGIC; + signal \reg_pkt_len_counter_reg[3]_i_2_n_1\ : STD_LOGIC; + signal \reg_pkt_len_counter_reg[3]_i_2_n_2\ : STD_LOGIC; + signal \reg_pkt_len_counter_reg[3]_i_2_n_3\ : STD_LOGIC; + signal \reg_pkt_len_counter_reg[7]_i_2_n_0\ : STD_LOGIC; + signal \reg_pkt_len_counter_reg[7]_i_2_n_1\ : STD_LOGIC; + signal \reg_pkt_len_counter_reg[7]_i_2_n_2\ : STD_LOGIC; + signal \reg_pkt_len_counter_reg[7]_i_2_n_3\ : STD_LOGIC; + signal reg_tkeep : STD_LOGIC_VECTOR ( 7 to 7 ); + signal trn_rbar_hit_prev : STD_LOGIC_VECTOR ( 6 downto 0 ); + signal trn_rd_prev : STD_LOGIC_VECTOR ( 63 downto 0 ); + signal trn_rdst_rdy_i_1_n_0 : STD_LOGIC; + signal trn_rdst_rdy_i_2_n_0 : STD_LOGIC; + signal trn_recrc_err_prev : STD_LOGIC; + signal trn_reof_prev : STD_LOGIC; + signal trn_rerrfwd_prev : STD_LOGIC; + signal trn_rrem_prev : STD_LOGIC; + signal trn_rsof_prev : STD_LOGIC; + signal trn_rsrc_dsc_prev : STD_LOGIC; + signal trn_rsrc_rdy_prev : STD_LOGIC; + signal \NLW_reg_pkt_len_counter_reg[10]_i_2_CO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_reg_pkt_len_counter_reg[10]_i_2_O_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 2 ); + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[0]_i_1\ : label is "soft_lutpair243"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[10]_i_1\ : label is "soft_lutpair246"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[11]_i_1\ : label is "soft_lutpair244"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[12]_i_1\ : label is "soft_lutpair241"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[13]_i_1\ : label is "soft_lutpair239"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[14]_i_1\ : label is "soft_lutpair249"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[15]_i_1\ : label is "soft_lutpair242"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[16]_i_1\ : label is "soft_lutpair238"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[17]_i_1\ : label is "soft_lutpair234"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[18]_i_1\ : label is "soft_lutpair232"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[19]_i_1\ : label is "soft_lutpair246"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[1]_i_1\ : label is "soft_lutpair249"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[20]_i_1\ : label is "soft_lutpair242"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[21]_i_1\ : label is "soft_lutpair237"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[22]_i_1\ : label is "soft_lutpair245"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[23]_i_1\ : label is "soft_lutpair247"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[24]_i_1\ : label is "soft_lutpair240"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[25]_i_1\ : label is "soft_lutpair231"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[26]_i_1\ : label is "soft_lutpair229"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[27]_i_1\ : label is "soft_lutpair232"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[28]_i_1\ : label is "soft_lutpair236"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[29]_i_1\ : label is "soft_lutpair228"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[2]_i_1\ : label is "soft_lutpair240"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[30]_i_1\ : label is "soft_lutpair227"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[31]_i_1\ : label is "soft_lutpair222"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[32]_i_1\ : label is "soft_lutpair226"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[33]_i_1\ : label is "soft_lutpair218"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[34]_i_1\ : label is "soft_lutpair225"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[35]_i_1\ : label is "soft_lutpair219"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[36]_i_1\ : label is "soft_lutpair227"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[37]_i_1\ : label is "soft_lutpair218"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[38]_i_1\ : label is "soft_lutpair225"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[39]_i_1\ : label is "soft_lutpair221"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[3]_i_1\ : label is "soft_lutpair248"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[40]_i_1\ : label is "soft_lutpair223"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[41]_i_1\ : label is "soft_lutpair222"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[42]_i_1\ : label is "soft_lutpair221"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[43]_i_1\ : label is "soft_lutpair223"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[44]_i_1\ : label is "soft_lutpair229"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[45]_i_1\ : label is "soft_lutpair228"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[46]_i_1\ : label is "soft_lutpair220"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[47]_i_1\ : label is "soft_lutpair231"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[48]_i_1\ : label is "soft_lutpair220"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[49]_i_1\ : label is "soft_lutpair235"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[4]_i_1\ : label is "soft_lutpair248"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[50]_i_1\ : label is "soft_lutpair233"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[51]_i_1\ : label is "soft_lutpair230"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[52]_i_1\ : label is "soft_lutpair219"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[53]_i_1\ : label is "soft_lutpair226"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[54]_i_1\ : label is "soft_lutpair224"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[55]_i_1\ : label is "soft_lutpair224"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[56]_i_1\ : label is "soft_lutpair239"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[57]_i_1\ : label is "soft_lutpair236"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[58]_i_1\ : label is "soft_lutpair238"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[59]_i_1\ : label is "soft_lutpair230"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[5]_i_1\ : label is "soft_lutpair237"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[60]_i_1\ : label is "soft_lutpair233"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[61]_i_1\ : label is "soft_lutpair243"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[62]_i_1\ : label is "soft_lutpair234"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[63]_i_2\ : label is "soft_lutpair247"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[6]_i_1\ : label is "soft_lutpair235"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[7]_i_1\ : label is "soft_lutpair245"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[8]_i_1\ : label is "soft_lutpair244"; + attribute SOFT_HLUTNM of \m_axis_rx_tdata[9]_i_1\ : label is "soft_lutpair241"; + attribute SOFT_HLUTNM of \m_axis_rx_tuser[14]_i_2\ : label is "soft_lutpair215"; + attribute SOFT_HLUTNM of \m_axis_rx_tuser[18]_i_1\ : label is "soft_lutpair216"; + attribute SOFT_HLUTNM of \m_axis_rx_tuser[2]_i_1\ : label is "soft_lutpair216"; + attribute SOFT_HLUTNM of \m_axis_rx_tuser[7]_i_1\ : label is "soft_lutpair215"; + attribute SOFT_HLUTNM of reg_dsc_detect_i_1 : label is "soft_lutpair217"; + attribute SOFT_HLUTNM of trn_rdst_rdy_i_2 : label is "soft_lutpair217"; +begin + E(0) <= \^e\(0); + Q(63 downto 0) <= \^q\(63 downto 0); + m_axis_rx_tvalid_reg_0 <= \^m_axis_rx_tvalid_reg_0\; + null_mux_sel <= \^null_mux_sel\; + reg_dsc_detect_reg_0 <= \^reg_dsc_detect_reg_0\; +data_prev_i_1: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => \^m_axis_rx_tvalid_reg_0\, + I1 => m_axis_rx_tready, + O => data_hold + ); +data_prev_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => data_hold, + Q => data_prev, + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata[0]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(0), + I1 => data_prev, + I2 => trn_rd(32), + O => p_1_in(0) + ); +\m_axis_rx_tdata[10]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(10), + I1 => data_prev, + I2 => trn_rd(42), + O => p_1_in(10) + ); +\m_axis_rx_tdata[11]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(11), + I1 => data_prev, + I2 => trn_rd(43), + O => p_1_in(11) + ); +\m_axis_rx_tdata[12]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(12), + I1 => data_prev, + I2 => trn_rd(44), + O => p_1_in(12) + ); +\m_axis_rx_tdata[13]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(13), + I1 => data_prev, + I2 => trn_rd(45), + O => p_1_in(13) + ); +\m_axis_rx_tdata[14]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(14), + I1 => data_prev, + I2 => trn_rd(46), + O => p_1_in(14) + ); +\m_axis_rx_tdata[15]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(15), + I1 => data_prev, + I2 => trn_rd(47), + O => p_1_in(15) + ); +\m_axis_rx_tdata[16]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(16), + I1 => data_prev, + I2 => trn_rd(48), + O => p_1_in(16) + ); +\m_axis_rx_tdata[17]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(17), + I1 => data_prev, + I2 => trn_rd(49), + O => p_1_in(17) + ); +\m_axis_rx_tdata[18]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(18), + I1 => data_prev, + I2 => trn_rd(50), + O => p_1_in(18) + ); +\m_axis_rx_tdata[19]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(19), + I1 => data_prev, + I2 => trn_rd(51), + O => p_1_in(19) + ); +\m_axis_rx_tdata[1]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(1), + I1 => data_prev, + I2 => trn_rd(33), + O => p_1_in(1) + ); +\m_axis_rx_tdata[20]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(20), + I1 => data_prev, + I2 => trn_rd(52), + O => p_1_in(20) + ); +\m_axis_rx_tdata[21]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(21), + I1 => data_prev, + I2 => trn_rd(53), + O => p_1_in(21) + ); +\m_axis_rx_tdata[22]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(22), + I1 => data_prev, + I2 => trn_rd(54), + O => p_1_in(22) + ); +\m_axis_rx_tdata[23]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(23), + I1 => data_prev, + I2 => trn_rd(55), + O => p_1_in(23) + ); +\m_axis_rx_tdata[24]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(24), + I1 => data_prev, + I2 => trn_rd(56), + O => p_1_in(24) + ); +\m_axis_rx_tdata[25]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(25), + I1 => data_prev, + I2 => trn_rd(57), + O => p_1_in(25) + ); +\m_axis_rx_tdata[26]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(26), + I1 => data_prev, + I2 => trn_rd(58), + O => p_1_in(26) + ); +\m_axis_rx_tdata[27]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(27), + I1 => data_prev, + I2 => trn_rd(59), + O => p_1_in(27) + ); +\m_axis_rx_tdata[28]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(28), + I1 => data_prev, + I2 => trn_rd(60), + O => p_1_in(28) + ); +\m_axis_rx_tdata[29]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(29), + I1 => data_prev, + I2 => trn_rd(61), + O => p_1_in(29) + ); +\m_axis_rx_tdata[2]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(2), + I1 => data_prev, + I2 => trn_rd(34), + O => p_1_in(2) + ); +\m_axis_rx_tdata[30]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(30), + I1 => data_prev, + I2 => trn_rd(62), + O => p_1_in(30) + ); +\m_axis_rx_tdata[31]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(31), + I1 => data_prev, + I2 => trn_rd(63), + O => p_1_in(31) + ); +\m_axis_rx_tdata[32]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(32), + I1 => data_prev, + I2 => trn_rd(0), + O => p_1_in(32) + ); +\m_axis_rx_tdata[33]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(33), + I1 => data_prev, + I2 => trn_rd(1), + O => p_1_in(33) + ); +\m_axis_rx_tdata[34]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(34), + I1 => data_prev, + I2 => trn_rd(2), + O => p_1_in(34) + ); +\m_axis_rx_tdata[35]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(35), + I1 => data_prev, + I2 => trn_rd(3), + O => p_1_in(35) + ); +\m_axis_rx_tdata[36]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(36), + I1 => data_prev, + I2 => trn_rd(4), + O => p_1_in(36) + ); +\m_axis_rx_tdata[37]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(37), + I1 => data_prev, + I2 => trn_rd(5), + O => p_1_in(37) + ); +\m_axis_rx_tdata[38]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(38), + I1 => data_prev, + I2 => trn_rd(6), + O => p_1_in(38) + ); +\m_axis_rx_tdata[39]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(39), + I1 => data_prev, + I2 => trn_rd(7), + O => p_1_in(39) + ); +\m_axis_rx_tdata[3]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(3), + I1 => data_prev, + I2 => trn_rd(35), + O => p_1_in(3) + ); +\m_axis_rx_tdata[40]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(40), + I1 => data_prev, + I2 => trn_rd(8), + O => p_1_in(40) + ); +\m_axis_rx_tdata[41]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(41), + I1 => data_prev, + I2 => trn_rd(9), + O => p_1_in(41) + ); +\m_axis_rx_tdata[42]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(42), + I1 => data_prev, + I2 => trn_rd(10), + O => p_1_in(42) + ); +\m_axis_rx_tdata[43]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(43), + I1 => data_prev, + I2 => trn_rd(11), + O => p_1_in(43) + ); +\m_axis_rx_tdata[44]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(44), + I1 => data_prev, + I2 => trn_rd(12), + O => p_1_in(44) + ); +\m_axis_rx_tdata[45]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(45), + I1 => data_prev, + I2 => trn_rd(13), + O => p_1_in(45) + ); +\m_axis_rx_tdata[46]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(46), + I1 => data_prev, + I2 => trn_rd(14), + O => p_1_in(46) + ); +\m_axis_rx_tdata[47]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(47), + I1 => data_prev, + I2 => trn_rd(15), + O => p_1_in(47) + ); +\m_axis_rx_tdata[48]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(48), + I1 => data_prev, + I2 => trn_rd(16), + O => p_1_in(48) + ); +\m_axis_rx_tdata[49]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(49), + I1 => data_prev, + I2 => trn_rd(17), + O => p_1_in(49) + ); +\m_axis_rx_tdata[4]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(4), + I1 => data_prev, + I2 => trn_rd(36), + O => p_1_in(4) + ); +\m_axis_rx_tdata[50]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(50), + I1 => data_prev, + I2 => trn_rd(18), + O => p_1_in(50) + ); +\m_axis_rx_tdata[51]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(51), + I1 => data_prev, + I2 => trn_rd(19), + O => p_1_in(51) + ); +\m_axis_rx_tdata[52]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(52), + I1 => data_prev, + I2 => trn_rd(20), + O => p_1_in(52) + ); +\m_axis_rx_tdata[53]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(53), + I1 => data_prev, + I2 => trn_rd(21), + O => p_1_in(53) + ); +\m_axis_rx_tdata[54]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(54), + I1 => data_prev, + I2 => trn_rd(22), + O => p_1_in(54) + ); +\m_axis_rx_tdata[55]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(55), + I1 => data_prev, + I2 => trn_rd(23), + O => p_1_in(55) + ); +\m_axis_rx_tdata[56]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(56), + I1 => data_prev, + I2 => trn_rd(24), + O => p_1_in(56) + ); +\m_axis_rx_tdata[57]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(57), + I1 => data_prev, + I2 => trn_rd(25), + O => p_1_in(57) + ); +\m_axis_rx_tdata[58]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(58), + I1 => data_prev, + I2 => trn_rd(26), + O => p_1_in(58) + ); +\m_axis_rx_tdata[59]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(59), + I1 => data_prev, + I2 => trn_rd(27), + O => p_1_in(59) + ); +\m_axis_rx_tdata[5]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(5), + I1 => data_prev, + I2 => trn_rd(37), + O => p_1_in(5) + ); +\m_axis_rx_tdata[60]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(60), + I1 => data_prev, + I2 => trn_rd(28), + O => p_1_in(60) + ); +\m_axis_rx_tdata[61]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(61), + I1 => data_prev, + I2 => trn_rd(29), + O => p_1_in(61) + ); +\m_axis_rx_tdata[62]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(62), + I1 => data_prev, + I2 => trn_rd(30), + O => p_1_in(62) + ); +\m_axis_rx_tdata[63]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"B" + ) + port map ( + I0 => m_axis_rx_tready, + I1 => \^m_axis_rx_tvalid_reg_0\, + O => \m_axis_rx_tdata[63]_i_1_n_0\ + ); +\m_axis_rx_tdata[63]_i_2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(63), + I1 => data_prev, + I2 => trn_rd(31), + O => p_1_in(63) + ); +\m_axis_rx_tdata[6]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(6), + I1 => data_prev, + I2 => trn_rd(38), + O => p_1_in(6) + ); +\m_axis_rx_tdata[7]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(7), + I1 => data_prev, + I2 => trn_rd(39), + O => p_1_in(7) + ); +\m_axis_rx_tdata[8]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(8), + I1 => data_prev, + I2 => trn_rd(40), + O => p_1_in(8) + ); +\m_axis_rx_tdata[9]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => trn_rd_prev(9), + I1 => data_prev, + I2 => trn_rd(41), + O => p_1_in(9) + ); +\m_axis_rx_tdata_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(0), + Q => \^q\(0), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(10), + Q => \^q\(10), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(11), + Q => \^q\(11), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(12), + Q => \^q\(12), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(13), + Q => \^q\(13), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(14), + Q => \^q\(14), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(15), + Q => \^q\(15), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[16]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(16), + Q => \^q\(16), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[17]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(17), + Q => \^q\(17), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[18]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(18), + Q => \^q\(18), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[19]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(19), + Q => \^q\(19), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(1), + Q => \^q\(1), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[20]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(20), + Q => \^q\(20), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[21]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(21), + Q => \^q\(21), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[22]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(22), + Q => \^q\(22), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[23]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(23), + Q => \^q\(23), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[24]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(24), + Q => \^q\(24), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[25]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(25), + Q => \^q\(25), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[26]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(26), + Q => \^q\(26), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[27]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(27), + Q => \^q\(27), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[28]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(28), + Q => \^q\(28), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[29]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(29), + Q => \^q\(29), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(2), + Q => \^q\(2), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[30]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(30), + Q => \^q\(30), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[31]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(31), + Q => \^q\(31), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[32]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(32), + Q => \^q\(32), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[33]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(33), + Q => \^q\(33), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[34]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(34), + Q => \^q\(34), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[35]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(35), + Q => \^q\(35), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[36]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(36), + Q => \^q\(36), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[37]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(37), + Q => \^q\(37), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[38]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(38), + Q => \^q\(38), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[39]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(39), + Q => \^q\(39), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(3), + Q => \^q\(3), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[40]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(40), + Q => \^q\(40), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[41]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(41), + Q => \^q\(41), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[42]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(42), + Q => \^q\(42), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[43]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(43), + Q => \^q\(43), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[44]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(44), + Q => \^q\(44), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[45]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(45), + Q => \^q\(45), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[46]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(46), + Q => \^q\(46), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[47]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(47), + Q => \^q\(47), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[48]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(48), + Q => \^q\(48), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[49]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(49), + Q => \^q\(49), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(4), + Q => \^q\(4), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[50]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(50), + Q => \^q\(50), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[51]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(51), + Q => \^q\(51), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[52]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(52), + Q => \^q\(52), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[53]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(53), + Q => \^q\(53), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[54]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(54), + Q => \^q\(54), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[55]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(55), + Q => \^q\(55), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[56]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(56), + Q => \^q\(56), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[57]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(57), + Q => \^q\(57), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[58]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(58), + Q => \^q\(58), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[59]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(59), + Q => \^q\(59), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(5), + Q => \^q\(5), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[60]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(60), + Q => \^q\(60), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[61]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(61), + Q => \^q\(61), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[62]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(62), + Q => \^q\(62), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[63]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(63), + Q => \^q\(63), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(6), + Q => \^q\(6), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(7), + Q => \^q\(7), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(8), + Q => \^q\(8), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tdata_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => p_1_in(9), + Q => \^q\(9), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\m_axis_rx_tuser[0]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"000000E2" + ) + port map ( + I0 => trn_recrc_err, + I1 => data_prev, + I2 => trn_recrc_err_prev, + I3 => \trn_rbar_hit_prev_reg[0]_0\, + I4 => \^null_mux_sel\, + O => \m_axis_rx_tuser[0]_i_1_n_0\ + ); +\m_axis_rx_tuser[14]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000004F40404" + ) + port map ( + I0 => trn_rsrc_dsc, + I1 => trn_rsof, + I2 => data_prev, + I3 => trn_rsrc_dsc_prev, + I4 => trn_rsof_prev, + I5 => \m_axis_rx_tuser[14]_i_2_n_0\, + O => \m_axis_rx_tuser[14]_i_1_n_0\ + ); +\m_axis_rx_tuser[14]_i_2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"E" + ) + port map ( + I0 => \trn_rbar_hit_prev_reg[0]_0\, + I1 => \^null_mux_sel\, + O => \m_axis_rx_tuser[14]_i_2_n_0\ + ); +\m_axis_rx_tuser[18]_i_1\: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => \trn_rbar_hit_prev_reg[0]_0\, + O => \m_axis_rx_tuser[18]_i_1_n_0\ + ); +\m_axis_rx_tuser[19]_i_2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"00E2" + ) + port map ( + I0 => trn_rrem(0), + I1 => data_prev, + I2 => trn_rrem_prev, + I3 => \^null_mux_sel\, + O => data_prev_reg_1 + ); +\m_axis_rx_tuser[1]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"000000B8" + ) + port map ( + I0 => trn_rerrfwd_prev, + I1 => data_prev, + I2 => trn_rerrfwd, + I3 => \trn_rbar_hit_prev_reg[0]_0\, + I4 => \^null_mux_sel\, + O => \m_axis_rx_tuser[1]_i_1_n_0\ + ); +\m_axis_rx_tuser[21]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"EF" + ) + port map ( + I0 => \trn_rbar_hit_prev_reg[0]_0\, + I1 => m_axis_rx_tready, + I2 => \^m_axis_rx_tvalid_reg_0\, + O => \m_axis_rx_tuser[21]_i_1_n_0\ + ); +\m_axis_rx_tuser[2]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"000000B8" + ) + port map ( + I0 => trn_rbar_hit_prev(0), + I1 => data_prev, + I2 => trn_rbar_hit(0), + I3 => \trn_rbar_hit_prev_reg[0]_0\, + I4 => \^null_mux_sel\, + O => \m_axis_rx_tuser[2]_i_1_n_0\ + ); +\m_axis_rx_tuser[3]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"000000E2" + ) + port map ( + I0 => trn_rbar_hit(1), + I1 => data_prev, + I2 => trn_rbar_hit_prev(1), + I3 => \trn_rbar_hit_prev_reg[0]_0\, + I4 => \^null_mux_sel\, + O => \m_axis_rx_tuser[3]_i_1_n_0\ + ); +\m_axis_rx_tuser[4]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"000000E2" + ) + port map ( + I0 => trn_rbar_hit(2), + I1 => data_prev, + I2 => trn_rbar_hit_prev(2), + I3 => \trn_rbar_hit_prev_reg[0]_0\, + I4 => \^null_mux_sel\, + O => \m_axis_rx_tuser[4]_i_1_n_0\ + ); +\m_axis_rx_tuser[5]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"000000B8" + ) + port map ( + I0 => trn_rbar_hit_prev(3), + I1 => data_prev, + I2 => trn_rbar_hit(3), + I3 => \trn_rbar_hit_prev_reg[0]_0\, + I4 => \^null_mux_sel\, + O => \m_axis_rx_tuser[5]_i_1_n_0\ + ); +\m_axis_rx_tuser[6]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"000000B8" + ) + port map ( + I0 => trn_rbar_hit_prev(4), + I1 => data_prev, + I2 => trn_rbar_hit(4), + I3 => \trn_rbar_hit_prev_reg[0]_0\, + I4 => \^null_mux_sel\, + O => \m_axis_rx_tuser[6]_i_1_n_0\ + ); +\m_axis_rx_tuser[7]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"000000E2" + ) + port map ( + I0 => trn_rbar_hit(5), + I1 => data_prev, + I2 => trn_rbar_hit_prev(5), + I3 => \trn_rbar_hit_prev_reg[0]_0\, + I4 => \^null_mux_sel\, + O => \m_axis_rx_tuser[7]_i_1_n_0\ + ); +\m_axis_rx_tuser[8]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"000000E2" + ) + port map ( + I0 => trn_rbar_hit(6), + I1 => data_prev, + I2 => trn_rbar_hit_prev(6), + I3 => \trn_rbar_hit_prev_reg[0]_0\, + I4 => \^null_mux_sel\, + O => \m_axis_rx_tuser[8]_i_1_n_0\ + ); +\m_axis_rx_tuser_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tuser[21]_i_1_n_0\, + D => \m_axis_rx_tuser[0]_i_1_n_0\, + Q => m_axis_rx_tuser(0), + R => '0' + ); +\m_axis_rx_tuser_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tuser[21]_i_1_n_0\, + D => \m_axis_rx_tuser[14]_i_1_n_0\, + Q => m_axis_rx_tuser(9), + R => '0' + ); +\m_axis_rx_tuser_reg[18]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tuser[21]_i_1_n_0\, + D => \m_axis_rx_tuser[18]_i_1_n_0\, + Q => m_axis_rx_tuser(10), + R => '0' + ); +\m_axis_rx_tuser_reg[19]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tuser[21]_i_1_n_0\, + D => D(0), + Q => m_axis_rx_tuser(11), + R => '0' + ); +\m_axis_rx_tuser_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tuser[21]_i_1_n_0\, + D => \m_axis_rx_tuser[1]_i_1_n_0\, + Q => m_axis_rx_tuser(1), + R => '0' + ); +\m_axis_rx_tuser_reg[21]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tuser[21]_i_1_n_0\, + D => D(1), + Q => m_axis_rx_tuser(12), + R => '0' + ); +\m_axis_rx_tuser_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tuser[21]_i_1_n_0\, + D => \m_axis_rx_tuser[2]_i_1_n_0\, + Q => m_axis_rx_tuser(2), + R => '0' + ); +\m_axis_rx_tuser_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tuser[21]_i_1_n_0\, + D => \m_axis_rx_tuser[3]_i_1_n_0\, + Q => m_axis_rx_tuser(3), + R => '0' + ); +\m_axis_rx_tuser_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tuser[21]_i_1_n_0\, + D => \m_axis_rx_tuser[4]_i_1_n_0\, + Q => m_axis_rx_tuser(4), + R => '0' + ); +\m_axis_rx_tuser_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tuser[21]_i_1_n_0\, + D => \m_axis_rx_tuser[5]_i_1_n_0\, + Q => m_axis_rx_tuser(5), + R => '0' + ); +\m_axis_rx_tuser_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tuser[21]_i_1_n_0\, + D => \m_axis_rx_tuser[6]_i_1_n_0\, + Q => m_axis_rx_tuser(6), + R => '0' + ); +\m_axis_rx_tuser_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tuser[21]_i_1_n_0\, + D => \m_axis_rx_tuser[7]_i_1_n_0\, + Q => m_axis_rx_tuser(7), + R => '0' + ); +\m_axis_rx_tuser_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tuser[21]_i_1_n_0\, + D => \m_axis_rx_tuser[8]_i_1_n_0\, + Q => m_axis_rx_tuser(8), + R => '0' + ); +m_axis_rx_tvalid_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFFFFFECE" + ) + port map ( + I0 => rsrc_rdy_filtered, + I1 => \^null_mux_sel\, + I2 => data_prev, + I3 => trn_rsrc_rdy_prev, + I4 => \^reg_dsc_detect_reg_0\, + I5 => dsc_detect, + O => m_axis_rx_tvalid_i_1_n_0 + ); +m_axis_rx_tvalid_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => m_axis_rx_tvalid_i_1_n_0, + Q => \^m_axis_rx_tvalid_reg_0\, + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +null_mux_sel_i_2: unisim.vcomponents.LUT6 + generic map( + INIT => X"ABAAABAAABAABBBB" + ) + port map ( + I0 => \trn_rbar_hit_prev_reg[0]_0\, + I1 => \^null_mux_sel\, + I2 => m_axis_rx_tready, + I3 => \^m_axis_rx_tvalid_reg_0\, + I4 => dsc_detect, + I5 => \^reg_dsc_detect_reg_0\, + O => user_reset_out_reg + ); +null_mux_sel_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => null_mux_sel_reg_0, + Q => \^null_mux_sel\, + R => '0' + ); +reg_dsc_detect_i_1: unisim.vcomponents.LUT3 + generic map( + INIT => X"DC" + ) + port map ( + I0 => \^null_mux_sel\, + I1 => dsc_detect, + I2 => \^reg_dsc_detect_reg_0\, + O => reg_dsc_detect_i_1_n_0 + ); +reg_dsc_detect_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => reg_dsc_detect_i_1_n_0, + Q => \^reg_dsc_detect_reg_0\, + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\reg_pkt_len_counter[10]_i_3\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \^q\(30), + I1 => \^q\(9), + O => \reg_pkt_len_counter[10]_i_3_n_0\ + ); +\reg_pkt_len_counter[10]_i_4\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \^q\(30), + I1 => \^q\(8), + O => \reg_pkt_len_counter[10]_i_4_n_0\ + ); +\reg_pkt_len_counter[3]_i_3\: unisim.vcomponents.LUT2 + generic map( + INIT => X"E" + ) + port map ( + I0 => \^q\(29), + I1 => \^q\(15), + O => packet_overhead(1) + ); +\reg_pkt_len_counter[3]_i_4\: unisim.vcomponents.LUT2 + generic map( + INIT => X"9" + ) + port map ( + I0 => \^q\(15), + I1 => \^q\(29), + O => packet_overhead(0) + ); +\reg_pkt_len_counter[3]_i_5\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \^q\(30), + I1 => \^q\(3), + O => \reg_pkt_len_counter[3]_i_5_n_0\ + ); +\reg_pkt_len_counter[3]_i_6\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \^q\(30), + I1 => \^q\(2), + O => \reg_pkt_len_counter[3]_i_6_n_0\ + ); +\reg_pkt_len_counter[7]_i_3\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \^q\(30), + I1 => \^q\(7), + O => \reg_pkt_len_counter[7]_i_3_n_0\ + ); +\reg_pkt_len_counter[7]_i_4\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \^q\(30), + I1 => \^q\(6), + O => \reg_pkt_len_counter[7]_i_4_n_0\ + ); +\reg_pkt_len_counter[7]_i_5\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \^q\(30), + I1 => \^q\(5), + O => \reg_pkt_len_counter[7]_i_5_n_0\ + ); +\reg_pkt_len_counter[7]_i_6\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \^q\(30), + I1 => \^q\(4), + O => \reg_pkt_len_counter[7]_i_6_n_0\ + ); +\reg_pkt_len_counter_reg[10]_i_2\: unisim.vcomponents.CARRY4 + port map ( + CI => \reg_pkt_len_counter_reg[7]_i_2_n_0\, + CO(3) => \NLW_reg_pkt_len_counter_reg[10]_i_2_CO_UNCONNECTED\(3), + CO(2) => new_pkt_len(10), + CO(1) => \NLW_reg_pkt_len_counter_reg[10]_i_2_CO_UNCONNECTED\(1), + CO(0) => \reg_pkt_len_counter_reg[10]_i_2_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 2) => \NLW_reg_pkt_len_counter_reg[10]_i_2_O_UNCONNECTED\(3 downto 2), + O(1 downto 0) => new_pkt_len(9 downto 8), + S(3 downto 2) => B"01", + S(1) => \reg_pkt_len_counter[10]_i_3_n_0\, + S(0) => \reg_pkt_len_counter[10]_i_4_n_0\ + ); +\reg_pkt_len_counter_reg[3]_i_2\: unisim.vcomponents.CARRY4 + port map ( + CI => '0', + CO(3) => \reg_pkt_len_counter_reg[3]_i_2_n_0\, + CO(2) => \reg_pkt_len_counter_reg[3]_i_2_n_1\, + CO(1) => \reg_pkt_len_counter_reg[3]_i_2_n_2\, + CO(0) => \reg_pkt_len_counter_reg[3]_i_2_n_3\, + CYINIT => '0', + DI(3 downto 2) => B"00", + DI(1 downto 0) => packet_overhead(1 downto 0), + O(3 downto 0) => new_pkt_len(3 downto 0), + S(3) => \reg_pkt_len_counter[3]_i_5_n_0\, + S(2) => \reg_pkt_len_counter[3]_i_6_n_0\, + S(1 downto 0) => S(1 downto 0) + ); +\reg_pkt_len_counter_reg[7]_i_2\: unisim.vcomponents.CARRY4 + port map ( + CI => \reg_pkt_len_counter_reg[3]_i_2_n_0\, + CO(3) => \reg_pkt_len_counter_reg[7]_i_2_n_0\, + CO(2) => \reg_pkt_len_counter_reg[7]_i_2_n_1\, + CO(1) => \reg_pkt_len_counter_reg[7]_i_2_n_2\, + CO(0) => \reg_pkt_len_counter_reg[7]_i_2_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 0) => new_pkt_len(7 downto 4), + S(3) => \reg_pkt_len_counter[7]_i_3_n_0\, + S(2) => \reg_pkt_len_counter[7]_i_4_n_0\, + S(1) => \reg_pkt_len_counter[7]_i_5_n_0\, + S(0) => \reg_pkt_len_counter[7]_i_6_n_0\ + ); +\reg_tkeep[7]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"7F7F7F7070707F70" + ) + port map ( + I0 => trn_rdst_rdy_reg_0, + I1 => \reg_tkeep_reg[7]_0\, + I2 => \^null_mux_sel\, + I3 => trn_rrem(0), + I4 => data_prev, + I5 => trn_rrem_prev, + O => reg_tkeep(7) + ); +\reg_tkeep_reg[7]\: unisim.vcomponents.FDSE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => reg_tkeep(7), + Q => m_axis_rx_tkeep(0), + S => \trn_rbar_hit_prev_reg[0]_0\ + ); +reg_tlast_i_2: unisim.vcomponents.LUT4 + generic map( + INIT => X"00E2" + ) + port map ( + I0 => trn_reof, + I1 => data_prev, + I2 => trn_reof_prev, + I3 => \^null_mux_sel\, + O => data_prev_reg_0 + ); +reg_tlast_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \m_axis_rx_tdata[63]_i_1_n_0\, + D => reg_tlast_reg_0, + Q => m_axis_rx_tlast, + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +trn_in_packet_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => trn_in_packet_reg_0, + Q => trn_in_packet, + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rbar_hit_prev_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rbar_hit(0), + Q => trn_rbar_hit_prev(0), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rbar_hit_prev_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rbar_hit(1), + Q => trn_rbar_hit_prev(1), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rbar_hit_prev_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rbar_hit(2), + Q => trn_rbar_hit_prev(2), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rbar_hit_prev_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rbar_hit(3), + Q => trn_rbar_hit_prev(3), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rbar_hit_prev_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rbar_hit(4), + Q => trn_rbar_hit_prev(4), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rbar_hit_prev_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rbar_hit(5), + Q => trn_rbar_hit_prev(5), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rbar_hit_prev_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rbar_hit(6), + Q => trn_rbar_hit_prev(6), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(32), + Q => trn_rd_prev(0), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(42), + Q => trn_rd_prev(10), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(43), + Q => trn_rd_prev(11), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(44), + Q => trn_rd_prev(12), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(45), + Q => trn_rd_prev(13), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(46), + Q => trn_rd_prev(14), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(47), + Q => trn_rd_prev(15), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[16]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(48), + Q => trn_rd_prev(16), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[17]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(49), + Q => trn_rd_prev(17), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[18]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(50), + Q => trn_rd_prev(18), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[19]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(51), + Q => trn_rd_prev(19), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(33), + Q => trn_rd_prev(1), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[20]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(52), + Q => trn_rd_prev(20), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[21]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(53), + Q => trn_rd_prev(21), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[22]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(54), + Q => trn_rd_prev(22), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[23]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(55), + Q => trn_rd_prev(23), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[24]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(56), + Q => trn_rd_prev(24), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[25]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(57), + Q => trn_rd_prev(25), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[26]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(58), + Q => trn_rd_prev(26), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[27]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(59), + Q => trn_rd_prev(27), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[28]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(60), + Q => trn_rd_prev(28), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[29]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(61), + Q => trn_rd_prev(29), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(34), + Q => trn_rd_prev(2), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[30]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(62), + Q => trn_rd_prev(30), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[31]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(63), + Q => trn_rd_prev(31), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[32]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(0), + Q => trn_rd_prev(32), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[33]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(1), + Q => trn_rd_prev(33), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[34]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(2), + Q => trn_rd_prev(34), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[35]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(3), + Q => trn_rd_prev(35), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[36]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(4), + Q => trn_rd_prev(36), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[37]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(5), + Q => trn_rd_prev(37), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[38]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(6), + Q => trn_rd_prev(38), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[39]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(7), + Q => trn_rd_prev(39), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(35), + Q => trn_rd_prev(3), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[40]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(8), + Q => trn_rd_prev(40), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[41]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(9), + Q => trn_rd_prev(41), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[42]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(10), + Q => trn_rd_prev(42), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[43]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(11), + Q => trn_rd_prev(43), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[44]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(12), + Q => trn_rd_prev(44), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[45]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(13), + Q => trn_rd_prev(45), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[46]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(14), + Q => trn_rd_prev(46), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[47]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(15), + Q => trn_rd_prev(47), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[48]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(16), + Q => trn_rd_prev(48), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[49]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(17), + Q => trn_rd_prev(49), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(36), + Q => trn_rd_prev(4), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[50]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(18), + Q => trn_rd_prev(50), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[51]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(19), + Q => trn_rd_prev(51), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[52]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(20), + Q => trn_rd_prev(52), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[53]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(21), + Q => trn_rd_prev(53), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[54]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(22), + Q => trn_rd_prev(54), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[55]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(23), + Q => trn_rd_prev(55), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[56]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(24), + Q => trn_rd_prev(56), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[57]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(25), + Q => trn_rd_prev(57), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[58]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(26), + Q => trn_rd_prev(58), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[59]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(27), + Q => trn_rd_prev(59), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(37), + Q => trn_rd_prev(5), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[60]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(28), + Q => trn_rd_prev(60), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[61]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(29), + Q => trn_rd_prev(61), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[62]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(30), + Q => trn_rd_prev(62), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[63]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(31), + Q => trn_rd_prev(63), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(38), + Q => trn_rd_prev(6), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(39), + Q => trn_rd_prev(7), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(40), + Q => trn_rd_prev(8), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rd_prev_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rd(41), + Q => trn_rd_prev(9), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +trn_rdst_rdy_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"3030FF3050505050" + ) + port map ( + I0 => \^m_axis_rx_tvalid_reg_0\, + I1 => \^null_mux_sel\, + I2 => trn_rdst_rdy_i_2_n_0, + I3 => trn_rdst_rdy_reg_0, + I4 => trn_rdst_rdy_reg_1, + I5 => m_axis_rx_tready, + O => trn_rdst_rdy_i_1_n_0 + ); +trn_rdst_rdy_i_2: unisim.vcomponents.LUT2 + generic map( + INIT => X"1" + ) + port map ( + I0 => \^reg_dsc_detect_reg_0\, + I1 => dsc_detect, + O => trn_rdst_rdy_i_2_n_0 + ); +trn_rdst_rdy_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => trn_rdst_rdy_i_1_n_0, + Q => \^e\(0), + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +trn_recrc_err_prev_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_recrc_err, + Q => trn_recrc_err_prev, + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +trn_reof_prev_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_reof, + Q => trn_reof_prev, + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +trn_rerrfwd_prev_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rerrfwd, + Q => trn_rerrfwd_prev, + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +\trn_rrem_prev_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rrem(0), + Q => trn_rrem_prev, + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +trn_rsof_prev_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rsof, + Q => trn_rsof_prev, + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +trn_rsrc_dsc_d_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => trn_rsrc_dsc, + Q => trn_rsrc_dsc_d, + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +trn_rsrc_dsc_prev_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => trn_rsrc_dsc_prev0, + Q => trn_rsrc_dsc_prev, + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +trn_rsrc_rdy_prev_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => \^e\(0), + D => rsrc_rdy_filtered, + Q => trn_rsrc_rdy_prev, + R => \trn_rbar_hit_prev_reg[0]_0\ + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_axi_basic_tx_pipeline is + port ( + trn_teof : out STD_LOGIC; + trn_tsrc_rdy : out STD_LOGIC; + trn_trem : out STD_LOGIC_VECTOR ( 0 to 0 ); + axi_in_packet : out STD_LOGIC; + reg_disable_trn : out STD_LOGIC; + trn_tsof : out STD_LOGIC; + \throttle_ctl_pipeline.reg_tdata_reg[63]_0\ : out STD_LOGIC_VECTOR ( 63 downto 0 ); + \throttle_ctl_pipeline.reg_tuser_reg[3]_0\ : out STD_LOGIC_VECTOR ( 3 downto 0 ); + \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ : in STD_LOGIC; + s_axis_tx_tlast : in STD_LOGIC; + pipe_userclk2_in : in STD_LOGIC; + reg_tsrc_rdy0 : in STD_LOGIC; + s_axis_tx_tvalid : in STD_LOGIC; + s_axis_tx_tkeep : in STD_LOGIC_VECTOR ( 0 to 0 ); + axi_in_packet_reg_0 : in STD_LOGIC; + \out\ : in STD_LOGIC; + \thrtl_ctl_trn_flush.reg_disable_trn_reg_0\ : in STD_LOGIC; + trn_tdst_rdy : in STD_LOGIC; + s_axis_tx_tdata : in STD_LOGIC_VECTOR ( 63 downto 0 ); + s_axis_tx_tuser : in STD_LOGIC_VECTOR ( 3 downto 0 ) + ); +end pcie_7x_0_pcie_7x_0_axi_basic_tx_pipeline; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_axi_basic_tx_pipeline is + signal \^axi_in_packet\ : STD_LOGIC; + signal \^reg_disable_trn\ : STD_LOGIC; + signal reg_tvalid : STD_LOGIC; + signal \thrtl_ctl_trn_flush.reg_disable_trn_i_1_n_0\ : STD_LOGIC; + signal trn_in_packet : STD_LOGIC; + signal \trn_in_packet_i_1__0_n_0\ : STD_LOGIC; + signal \^trn_teof\ : STD_LOGIC; + signal \^trn_tsrc_rdy\ : STD_LOGIC; +begin + axi_in_packet <= \^axi_in_packet\; + reg_disable_trn <= \^reg_disable_trn\; + trn_teof <= \^trn_teof\; + trn_tsrc_rdy <= \^trn_tsrc_rdy\; +axi_in_packet_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => axi_in_packet_reg_0, + Q => \^axi_in_packet\, + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +pcie_block_i_i_31: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => reg_tvalid, + I1 => trn_in_packet, + O => trn_tsof + ); +\throttle_ctl_pipeline.reg_tdata_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(0), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(0), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(10), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(10), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(11), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(11), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(12), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(12), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(13), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(13), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(14), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(14), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(15), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(15), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[16]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(16), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(16), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[17]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(17), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(17), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[18]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(18), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(18), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[19]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(19), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(19), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(1), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(1), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[20]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(20), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(20), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[21]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(21), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(21), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[22]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(22), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(22), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[23]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(23), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(23), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[24]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(24), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(24), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[25]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(25), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(25), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[26]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(26), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(26), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[27]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(27), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(27), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[28]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(28), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(28), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[29]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(29), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(29), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(2), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(2), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[30]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(30), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(30), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[31]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(31), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(31), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[32]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(32), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(32), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[33]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(33), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(33), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[34]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(34), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(34), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[35]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(35), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(35), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[36]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(36), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(36), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[37]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(37), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(37), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[38]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(38), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(38), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[39]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(39), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(39), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(3), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(3), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[40]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(40), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(40), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[41]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(41), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(41), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[42]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(42), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(42), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[43]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(43), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(43), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[44]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(44), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(44), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[45]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(45), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(45), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[46]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(46), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(46), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[47]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(47), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(47), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[48]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(48), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(48), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[49]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(49), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(49), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(4), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(4), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[50]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(50), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(50), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[51]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(51), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(51), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[52]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(52), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(52), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[53]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(53), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(53), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[54]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(54), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(54), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[55]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(55), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(55), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[56]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(56), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(56), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[57]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(57), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(57), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[58]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(58), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(58), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[59]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(59), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(59), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(5), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(5), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[60]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(60), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(60), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[61]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(61), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(61), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[62]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(62), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(62), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[63]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(63), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(63), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(6), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(6), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(7), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(7), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(8), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(8), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tdata_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tdata(9), + Q => \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(9), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tkeep_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tkeep(0), + Q => trn_trem(0), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tlast_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tlast, + Q => \^trn_teof\, + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tsrc_rdy_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => reg_tsrc_rdy0, + Q => \^trn_tsrc_rdy\, + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tuser_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tuser(0), + Q => \throttle_ctl_pipeline.reg_tuser_reg[3]_0\(0), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tuser_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tuser(1), + Q => \throttle_ctl_pipeline.reg_tuser_reg[3]_0\(1), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tuser_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tuser(2), + Q => \throttle_ctl_pipeline.reg_tuser_reg[3]_0\(2), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tuser_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tuser(3), + Q => \throttle_ctl_pipeline.reg_tuser_reg[3]_0\(3), + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\throttle_ctl_pipeline.reg_tvalid_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => s_axis_tx_tvalid, + Q => reg_tvalid, + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\thrtl_ctl_trn_flush.reg_disable_trn_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0FFFFFFF04444444" + ) + port map ( + I0 => \out\, + I1 => \^axi_in_packet\, + I2 => \thrtl_ctl_trn_flush.reg_disable_trn_reg_0\, + I3 => s_axis_tx_tvalid, + I4 => s_axis_tx_tlast, + I5 => \^reg_disable_trn\, + O => \thrtl_ctl_trn_flush.reg_disable_trn_i_1_n_0\ + ); +\thrtl_ctl_trn_flush.reg_disable_trn_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => \thrtl_ctl_trn_flush.reg_disable_trn_i_1_n_0\, + Q => \^reg_disable_trn\, + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +\trn_in_packet_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000F088F000F000" + ) + port map ( + I0 => trn_tdst_rdy, + I1 => reg_tvalid, + I2 => \out\, + I3 => trn_in_packet, + I4 => \^trn_teof\, + I5 => \^trn_tsrc_rdy\, + O => \trn_in_packet_i_1__0_n_0\ + ); +trn_in_packet_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => \trn_in_packet_i_1__0_n_0\, + Q => trn_in_packet, + R => \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_axi_basic_tx_thrtl_ctl is + port ( + reg_tcfg_gnt : out STD_LOGIC; + tready_thrtl_reg_0 : out STD_LOGIC; + ppm_L1_thrtl : out STD_LOGIC; + lnk_up_thrtl : out STD_LOGIC; + s_axis_tx_tlast_0 : out STD_LOGIC; + ppm_L1_trig : out STD_LOGIC; + cfg_pm_turnoff_ok_n : out STD_LOGIC; + trn_tcfg_gnt : out STD_LOGIC; + reg_tsrc_rdy0 : out STD_LOGIC; + \tbuf_gap_cnt_reg[0]_0\ : in STD_LOGIC; + tx_cfg_gnt : in STD_LOGIC; + pipe_userclk2_in : in STD_LOGIC; + trn_tcfg_req : in STD_LOGIC; + trn_tdst_rdy : in STD_LOGIC; + tbuf_av_min_trig : in STD_LOGIC; + cfg_turnoff_ok : in STD_LOGIC; + ppm_L1_thrtl_reg_0 : in STD_LOGIC; + lnk_up_thrtl_reg_0 : in STD_LOGIC; + s_axis_tx_tlast : in STD_LOGIC; + s_axis_tx_tvalid : in STD_LOGIC; + axi_in_packet : in STD_LOGIC; + \out\ : in STD_LOGIC; + tcfg_req_trig : in STD_LOGIC; + tready_thrtl_i_5_0 : in STD_LOGIC; + cfg_pcie_link_state : in STD_LOGIC_VECTOR ( 2 downto 0 ); + s_axis_tx_tdata : in STD_LOGIC_VECTOR ( 3 downto 0 ); + s_axis_tx_tuser : in STD_LOGIC_VECTOR ( 0 to 0 ); + reg_disable_trn : in STD_LOGIC; + trn_tbuf_av : in STD_LOGIC_VECTOR ( 5 downto 0 ); + cfg_to_turnoff : in STD_LOGIC + ); +end pcie_7x_0_pcie_7x_0_axi_basic_tx_thrtl_ctl; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_axi_basic_tx_thrtl_ctl is + signal \L23_thrtl_ep.x7_L23_thrtl_ep.reg_to_turnoff\ : STD_LOGIC; + signal \L23_thrtl_ep.x7_L23_thrtl_ep.reg_to_turnoff_i_1_n_0\ : STD_LOGIC; + signal cfg_pcie_link_state_d : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal \^cfg_pm_turnoff_ok_n\ : STD_LOGIC; + signal cfg_turnoff_ok_pending : STD_LOGIC; + signal cfg_turnoff_ok_pending_i_1_n_0 : STD_LOGIC; + signal cur_state : STD_LOGIC; + signal cur_state_i_2_n_0 : STD_LOGIC; + signal \ecrc_pause_enabled.reg_tx_ecrc_pkt\ : STD_LOGIC; + signal \ecrc_pause_enabled.reg_tx_ecrc_pkt021_out\ : STD_LOGIC; + signal \ecrc_pause_enabled.reg_tx_ecrc_pkt_i_1_n_0\ : STD_LOGIC; + signal \^lnk_up_thrtl\ : STD_LOGIC; + signal next_state : STD_LOGIC; + signal p_2_in : STD_LOGIC; + signal pcie_block_i_i_36_n_0 : STD_LOGIC; + signal \^ppm_l1_thrtl\ : STD_LOGIC; + signal \^ppm_l1_trig\ : STD_LOGIC; + signal ppm_L23_thrtl : STD_LOGIC; + signal ppm_L23_thrtl_i_1_n_0 : STD_LOGIC; + signal ppm_L23_trig : STD_LOGIC; + signal reg_axi_in_pkt : STD_LOGIC; + signal reg_axi_in_pkt_i_1_n_0 : STD_LOGIC; + signal \^reg_tcfg_gnt\ : STD_LOGIC; + signal reg_turnoff_ok : STD_LOGIC; + signal tbuf_av_d : STD_LOGIC_VECTOR ( 5 downto 0 ); + signal tbuf_av_gap_thrtl : STD_LOGIC; + signal tbuf_av_gap_thrtl_i_1_n_0 : STD_LOGIC; + signal tbuf_av_gap_trig : STD_LOGIC; + signal tbuf_av_min_thrtl : STD_LOGIC; + signal \tbuf_gap_cnt[0]_i_1_n_0\ : STD_LOGIC; + signal \tbuf_gap_cnt_reg_n_0_[0]\ : STD_LOGIC; + signal tcfg_gnt_pending : STD_LOGIC; + signal tcfg_gnt_pending_i_1_n_0 : STD_LOGIC; + signal tcfg_req_cnt : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal \tcfg_req_cnt[0]_i_1_n_0\ : STD_LOGIC; + signal \tcfg_req_cnt[1]_i_1_n_0\ : STD_LOGIC; + signal tcfg_req_thrtl : STD_LOGIC; + signal tcfg_req_thrtl_i_1_n_0 : STD_LOGIC; + signal tready_thrtl0 : STD_LOGIC; + signal tready_thrtl_i_10_n_0 : STD_LOGIC; + signal tready_thrtl_i_12_n_0 : STD_LOGIC; + signal tready_thrtl_i_2_n_0 : STD_LOGIC; + signal tready_thrtl_i_3_n_0 : STD_LOGIC; + signal tready_thrtl_i_4_n_0 : STD_LOGIC; + signal tready_thrtl_i_6_n_0 : STD_LOGIC; + signal tready_thrtl_i_7_n_0 : STD_LOGIC; + signal \^tready_thrtl_reg_0\ : STD_LOGIC; + signal trn_tcfg_req_d : STD_LOGIC; + signal trn_tdst_rdy_d : STD_LOGIC; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \L23_thrtl_ep.x7_L23_thrtl_ep.reg_to_turnoff_i_1\ : label is "soft_lutpair255"; + attribute SOFT_HLUTNM of cfg_turnoff_ok_pending_i_1 : label is "soft_lutpair252"; + attribute SOFT_HLUTNM of \ecrc_pause_enabled.reg_tx_ecrc_pkt_i_2\ : label is "soft_lutpair253"; + attribute SOFT_HLUTNM of pcie_block_i_i_30 : label is "soft_lutpair254"; + attribute SOFT_HLUTNM of pcie_block_i_i_36 : label is "soft_lutpair250"; + attribute SOFT_HLUTNM of ppm_L23_thrtl_i_1 : label is "soft_lutpair252"; + attribute SOFT_HLUTNM of \tbuf_gap_cnt[0]_i_1\ : label is "soft_lutpair254"; + attribute SOFT_HLUTNM of \tcfg_req_cnt[1]_i_1\ : label is "soft_lutpair251"; + attribute SOFT_HLUTNM of tcfg_req_thrtl_i_2 : label is "soft_lutpair251"; + attribute SOFT_HLUTNM of tready_thrtl_i_2 : label is "soft_lutpair253"; + attribute SOFT_HLUTNM of tready_thrtl_i_3 : label is "soft_lutpair250"; + attribute SOFT_HLUTNM of tready_thrtl_i_8 : label is "soft_lutpair255"; +begin + cfg_pm_turnoff_ok_n <= \^cfg_pm_turnoff_ok_n\; + lnk_up_thrtl <= \^lnk_up_thrtl\; + ppm_L1_thrtl <= \^ppm_l1_thrtl\; + ppm_L1_trig <= \^ppm_l1_trig\; + reg_tcfg_gnt <= \^reg_tcfg_gnt\; + tready_thrtl_reg_0 <= \^tready_thrtl_reg_0\; +\L23_thrtl_ep.reg_turnoff_ok_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => cfg_turnoff_ok, + Q => reg_turnoff_ok, + R => \tbuf_gap_cnt_reg[0]_0\ + ); +\L23_thrtl_ep.x7_L23_thrtl_ep.reg_to_turnoff_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"E" + ) + port map ( + I0 => cfg_to_turnoff, + I1 => \L23_thrtl_ep.x7_L23_thrtl_ep.reg_to_turnoff\, + O => \L23_thrtl_ep.x7_L23_thrtl_ep.reg_to_turnoff_i_1_n_0\ + ); +\L23_thrtl_ep.x7_L23_thrtl_ep.reg_to_turnoff_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => \L23_thrtl_ep.x7_L23_thrtl_ep.reg_to_turnoff_i_1_n_0\, + Q => \L23_thrtl_ep.x7_L23_thrtl_ep.reg_to_turnoff\, + R => \tbuf_gap_cnt_reg[0]_0\ + ); +axi_in_packet_i_1: unisim.vcomponents.LUT4 + generic map( + INIT => X"7F40" + ) + port map ( + I0 => s_axis_tx_tlast, + I1 => s_axis_tx_tvalid, + I2 => \^tready_thrtl_reg_0\, + I3 => axi_in_packet, + O => s_axis_tx_tlast_0 + ); +\cfg_pcie_link_state_d_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => cfg_pcie_link_state(0), + Q => cfg_pcie_link_state_d(0), + R => \tbuf_gap_cnt_reg[0]_0\ + ); +\cfg_pcie_link_state_d_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => cfg_pcie_link_state(1), + Q => cfg_pcie_link_state_d(1), + R => \tbuf_gap_cnt_reg[0]_0\ + ); +\cfg_pcie_link_state_d_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => cfg_pcie_link_state(2), + Q => cfg_pcie_link_state_d(2), + R => \tbuf_gap_cnt_reg[0]_0\ + ); +cfg_turnoff_ok_pending_i_1: unisim.vcomponents.LUT5 + generic map( + INIT => X"75553000" + ) + port map ( + I0 => \^cfg_pm_turnoff_ok_n\, + I1 => ppm_L23_thrtl, + I2 => reg_turnoff_ok, + I3 => \L23_thrtl_ep.x7_L23_thrtl_ep.reg_to_turnoff\, + I4 => cfg_turnoff_ok_pending, + O => cfg_turnoff_ok_pending_i_1_n_0 + ); +cfg_turnoff_ok_pending_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => cfg_turnoff_ok_pending_i_1_n_0, + Q => cfg_turnoff_ok_pending, + R => \tbuf_gap_cnt_reg[0]_0\ + ); +\cur_state_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"5455445554555555" + ) + port map ( + I0 => cur_state_i_2_n_0, + I1 => cur_state, + I2 => s_axis_tx_tlast, + I3 => \^tready_thrtl_reg_0\, + I4 => s_axis_tx_tvalid, + I5 => reg_axi_in_pkt, + O => next_state + ); +cur_state_i_2: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000000000001" + ) + port map ( + I0 => \^ppm_l1_thrtl\, + I1 => \^lnk_up_thrtl\, + I2 => tcfg_req_thrtl, + I3 => ppm_L23_thrtl, + I4 => tbuf_av_gap_thrtl, + I5 => tbuf_av_min_thrtl, + O => cur_state_i_2_n_0 + ); +cur_state_reg: unisim.vcomponents.FDSE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => next_state, + Q => cur_state, + S => \tbuf_gap_cnt_reg[0]_0\ + ); +\ecrc_pause_enabled.reg_tx_ecrc_pkt_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"BFFFAAAA" + ) + port map ( + I0 => \ecrc_pause_enabled.reg_tx_ecrc_pkt021_out\, + I1 => \^tready_thrtl_reg_0\, + I2 => s_axis_tx_tvalid, + I3 => s_axis_tx_tlast, + I4 => \ecrc_pause_enabled.reg_tx_ecrc_pkt\, + O => \ecrc_pause_enabled.reg_tx_ecrc_pkt_i_1_n_0\ + ); +\ecrc_pause_enabled.reg_tx_ecrc_pkt_i_2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00001444" + ) + port map ( + I0 => tready_thrtl_i_7_n_0, + I1 => s_axis_tx_tdata(2), + I2 => s_axis_tx_tdata(3), + I3 => s_axis_tx_tdata(0), + I4 => s_axis_tx_tlast, + O => \ecrc_pause_enabled.reg_tx_ecrc_pkt021_out\ + ); +\ecrc_pause_enabled.reg_tx_ecrc_pkt_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => \ecrc_pause_enabled.reg_tx_ecrc_pkt_i_1_n_0\, + Q => \ecrc_pause_enabled.reg_tx_ecrc_pkt\, + R => \tbuf_gap_cnt_reg[0]_0\ + ); +lnk_up_thrtl_reg: unisim.vcomponents.FDSE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => lnk_up_thrtl_reg_0, + Q => \^lnk_up_thrtl\, + S => \tbuf_gap_cnt_reg[0]_0\ + ); +pcie_block_i_i_26: unisim.vcomponents.LUT6 + generic map( + INIT => X"20202020A0AFA0A0" + ) + port map ( + I0 => cfg_turnoff_ok_pending, + I1 => tcfg_gnt_pending, + I2 => cur_state, + I3 => pcie_block_i_i_36_n_0, + I4 => ppm_L23_thrtl, + I5 => tcfg_req_thrtl, + O => \^cfg_pm_turnoff_ok_n\ + ); +pcie_block_i_i_30: unisim.vcomponents.LUT4 + generic map( + INIT => X"A202" + ) + port map ( + I0 => tcfg_req_thrtl, + I1 => pcie_block_i_i_36_n_0, + I2 => cur_state, + I3 => tcfg_gnt_pending, + O => trn_tcfg_gnt + ); +pcie_block_i_i_36: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFF20E0" + ) + port map ( + I0 => reg_axi_in_pkt, + I1 => s_axis_tx_tvalid, + I2 => \^tready_thrtl_reg_0\, + I3 => s_axis_tx_tlast, + I4 => cur_state_i_2_n_0, + O => pcie_block_i_i_36_n_0 + ); +ppm_L1_thrtl_i_2: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000010000000000" + ) + port map ( + I0 => cfg_pcie_link_state_d(1), + I1 => cfg_pcie_link_state_d(2), + I2 => cfg_pcie_link_state_d(0), + I3 => cfg_pcie_link_state(0), + I4 => cfg_pcie_link_state(1), + I5 => cfg_pcie_link_state(2), + O => \^ppm_l1_trig\ + ); +ppm_L1_thrtl_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => ppm_L1_thrtl_reg_0, + Q => \^ppm_l1_thrtl\, + R => \tbuf_gap_cnt_reg[0]_0\ + ); +ppm_L23_thrtl_i_1: unisim.vcomponents.LUT3 + generic map( + INIT => X"F8" + ) + port map ( + I0 => \L23_thrtl_ep.x7_L23_thrtl_ep.reg_to_turnoff\, + I1 => reg_turnoff_ok, + I2 => ppm_L23_thrtl, + O => ppm_L23_thrtl_i_1_n_0 + ); +ppm_L23_thrtl_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => ppm_L23_thrtl_i_1_n_0, + Q => ppm_L23_thrtl, + R => \tbuf_gap_cnt_reg[0]_0\ + ); +reg_axi_in_pkt_i_1: unisim.vcomponents.LUT5 + generic map( + INIT => X"00005F40" + ) + port map ( + I0 => s_axis_tx_tlast, + I1 => \^tready_thrtl_reg_0\, + I2 => s_axis_tx_tvalid, + I3 => reg_axi_in_pkt, + I4 => \tbuf_gap_cnt_reg[0]_0\, + O => reg_axi_in_pkt_i_1_n_0 + ); +reg_axi_in_pkt_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => reg_axi_in_pkt_i_1_n_0, + Q => reg_axi_in_pkt, + R => '0' + ); +reg_tcfg_gnt_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => tx_cfg_gnt, + Q => \^reg_tcfg_gnt\, + R => \tbuf_gap_cnt_reg[0]_0\ + ); +\tbuf_av_d_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => trn_tbuf_av(0), + Q => tbuf_av_d(0), + R => \tbuf_gap_cnt_reg[0]_0\ + ); +\tbuf_av_d_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => trn_tbuf_av(1), + Q => tbuf_av_d(1), + R => \tbuf_gap_cnt_reg[0]_0\ + ); +\tbuf_av_d_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => trn_tbuf_av(2), + Q => tbuf_av_d(2), + R => \tbuf_gap_cnt_reg[0]_0\ + ); +\tbuf_av_d_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => trn_tbuf_av(3), + Q => tbuf_av_d(3), + R => \tbuf_gap_cnt_reg[0]_0\ + ); +\tbuf_av_d_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => trn_tbuf_av(4), + Q => tbuf_av_d(4), + R => \tbuf_gap_cnt_reg[0]_0\ + ); +\tbuf_av_d_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => trn_tbuf_av(5), + Q => tbuf_av_d(5), + R => \tbuf_gap_cnt_reg[0]_0\ + ); +tbuf_av_gap_thrtl_i_1: unisim.vcomponents.LUT3 + generic map( + INIT => X"EA" + ) + port map ( + I0 => tbuf_av_gap_trig, + I1 => \tbuf_gap_cnt_reg_n_0_[0]\, + I2 => tbuf_av_gap_thrtl, + O => tbuf_av_gap_thrtl_i_1_n_0 + ); +tbuf_av_gap_thrtl_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => tbuf_av_gap_thrtl_i_1_n_0, + Q => tbuf_av_gap_thrtl, + R => \tbuf_gap_cnt_reg[0]_0\ + ); +tbuf_av_min_thrtl_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => tbuf_av_min_trig, + Q => tbuf_av_min_thrtl, + R => \tbuf_gap_cnt_reg[0]_0\ + ); +\tbuf_gap_cnt[0]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"7" + ) + port map ( + I0 => tbuf_av_gap_thrtl, + I1 => cur_state, + O => \tbuf_gap_cnt[0]_i_1_n_0\ + ); +\tbuf_gap_cnt_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => \tbuf_gap_cnt[0]_i_1_n_0\, + Q => \tbuf_gap_cnt_reg_n_0_[0]\, + R => \tbuf_gap_cnt_reg[0]_0\ + ); +tcfg_gnt_pending_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"44F44444F4F4F4F4" + ) + port map ( + I0 => trn_tcfg_req_d, + I1 => trn_tcfg_req, + I2 => tcfg_gnt_pending, + I3 => cur_state, + I4 => pcie_block_i_i_36_n_0, + I5 => tcfg_req_thrtl, + O => tcfg_gnt_pending_i_1_n_0 + ); +tcfg_gnt_pending_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => tcfg_gnt_pending_i_1_n_0, + Q => tcfg_gnt_pending, + R => \tbuf_gap_cnt_reg[0]_0\ + ); +\tcfg_req_cnt[0]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000000000D00" + ) + port map ( + I0 => trn_tcfg_req, + I1 => trn_tcfg_req_d, + I2 => tcfg_gnt_pending, + I3 => tcfg_req_cnt(1), + I4 => tcfg_req_cnt(0), + I5 => \tbuf_gap_cnt_reg[0]_0\, + O => \tcfg_req_cnt[0]_i_1_n_0\ + ); +\tcfg_req_cnt[1]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFF88F8" + ) + port map ( + I0 => tcfg_req_cnt(0), + I1 => tcfg_req_cnt(1), + I2 => trn_tcfg_req, + I3 => trn_tcfg_req_d, + I4 => tcfg_gnt_pending, + O => \tcfg_req_cnt[1]_i_1_n_0\ + ); +\tcfg_req_cnt_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => \tcfg_req_cnt[0]_i_1_n_0\, + Q => tcfg_req_cnt(0), + R => '0' + ); +\tcfg_req_cnt_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => \tcfg_req_cnt[1]_i_1_n_0\, + Q => tcfg_req_cnt(1), + R => \tbuf_gap_cnt_reg[0]_0\ + ); +tcfg_req_thrtl_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFF8FF88888888" + ) + port map ( + I0 => \^reg_tcfg_gnt\, + I1 => trn_tcfg_req, + I2 => trn_tdst_rdy_d, + I3 => trn_tdst_rdy, + I4 => p_2_in, + I5 => tcfg_req_thrtl, + O => tcfg_req_thrtl_i_1_n_0 + ); +tcfg_req_thrtl_i_2: unisim.vcomponents.LUT2 + generic map( + INIT => X"E" + ) + port map ( + I0 => tcfg_req_cnt(1), + I1 => tcfg_req_cnt(0), + O => p_2_in + ); +tcfg_req_thrtl_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => tcfg_req_thrtl_i_1_n_0, + Q => tcfg_req_thrtl, + R => \tbuf_gap_cnt_reg[0]_0\ + ); +\throttle_ctl_pipeline.reg_tsrc_rdy_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0080" + ) + port map ( + I0 => \^tready_thrtl_reg_0\, + I1 => s_axis_tx_tvalid, + I2 => \out\, + I3 => reg_disable_trn, + O => reg_tsrc_rdy0 + ); +tready_thrtl_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"F1F1F1F10000F100" + ) + port map ( + I0 => \ecrc_pause_enabled.reg_tx_ecrc_pkt\, + I1 => tready_thrtl_i_2_n_0, + I2 => tready_thrtl_i_3_n_0, + I3 => tready_thrtl_i_4_n_0, + I4 => tbuf_av_gap_trig, + I5 => tready_thrtl_i_6_n_0, + O => tready_thrtl0 + ); +tready_thrtl_i_10: unisim.vcomponents.LUT6 + generic map( + INIT => X"00002000AAAAAAAA" + ) + port map ( + I0 => tready_thrtl_i_5_0, + I1 => tbuf_av_d(4), + I2 => tbuf_av_d(0), + I3 => tbuf_av_d(1), + I4 => tready_thrtl_i_12_n_0, + I5 => tready_thrtl_i_3_n_0, + O => tready_thrtl_i_10_n_0 + ); +tready_thrtl_i_12: unisim.vcomponents.LUT4 + generic map( + INIT => X"FFEF" + ) + port map ( + I0 => tbuf_av_d(5), + I1 => tbuf_av_d(2), + I2 => trn_tbuf_av(1), + I3 => tbuf_av_d(3), + O => tready_thrtl_i_12_n_0 + ); +tready_thrtl_i_2: unisim.vcomponents.LUT4 + generic map( + INIT => X"0078" + ) + port map ( + I0 => s_axis_tx_tdata(0), + I1 => s_axis_tx_tdata(3), + I2 => s_axis_tx_tdata(2), + I3 => tready_thrtl_i_7_n_0, + O => tready_thrtl_i_2_n_0 + ); +tready_thrtl_i_3: unisim.vcomponents.LUT3 + generic map( + INIT => X"7F" + ) + port map ( + I0 => s_axis_tx_tlast, + I1 => s_axis_tx_tvalid, + I2 => \^tready_thrtl_reg_0\, + O => tready_thrtl_i_3_n_0 + ); +tready_thrtl_i_4: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000000040000" + ) + port map ( + I0 => ppm_L23_trig, + I1 => \out\, + I2 => tcfg_req_trig, + I3 => \^ppm_l1_trig\, + I4 => cur_state_i_2_n_0, + I5 => tbuf_av_min_trig, + O => tready_thrtl_i_4_n_0 + ); +tready_thrtl_i_5: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFF00100000" + ) + port map ( + I0 => tcfg_req_cnt(0), + I1 => tcfg_req_cnt(1), + I2 => trn_tdst_rdy, + I3 => trn_tdst_rdy_d, + I4 => tcfg_req_thrtl, + I5 => tready_thrtl_i_10_n_0, + O => tbuf_av_gap_trig + ); +tready_thrtl_i_6: unisim.vcomponents.LUT5 + generic map( + INIT => X"000020E0" + ) + port map ( + I0 => reg_axi_in_pkt, + I1 => s_axis_tx_tvalid, + I2 => \^tready_thrtl_reg_0\, + I3 => s_axis_tx_tlast, + I4 => cur_state, + O => tready_thrtl_i_6_n_0 + ); +tready_thrtl_i_7: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFFDFFF" + ) + port map ( + I0 => s_axis_tx_tuser(0), + I1 => s_axis_tx_tdata(1), + I2 => s_axis_tx_tvalid, + I3 => \^tready_thrtl_reg_0\, + I4 => reg_axi_in_pkt, + O => tready_thrtl_i_7_n_0 + ); +tready_thrtl_i_8: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => reg_turnoff_ok, + I1 => \L23_thrtl_ep.x7_L23_thrtl_ep.reg_to_turnoff\, + O => ppm_L23_trig + ); +tready_thrtl_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => tready_thrtl0, + Q => \^tready_thrtl_reg_0\, + R => \tbuf_gap_cnt_reg[0]_0\ + ); +trn_tcfg_req_d_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => trn_tcfg_req, + Q => trn_tcfg_req_d, + R => \tbuf_gap_cnt_reg[0]_0\ + ); +trn_tdst_rdy_d_reg: unisim.vcomponents.FDSE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => trn_tdst_rdy, + Q => trn_tdst_rdy_d, + S => \tbuf_gap_cnt_reg[0]_0\ + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x is + port ( + gt_rxvalid_q_reg_0 : out STD_LOGIC; + gt_rx_phy_status_q : out STD_LOGIC; + gt_rxelecidle_q : out STD_LOGIC; + \pl_ltssm_state_q_reg[5]\ : out STD_LOGIC; + Q : out STD_LOGIC_VECTOR ( 15 downto 0 ); + D : out STD_LOGIC_VECTOR ( 1 downto 0 ); + \gt_rx_status_q_reg[2]_0\ : out STD_LOGIC_VECTOR ( 2 downto 0 ); + SR : in STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_pclk_in : in STD_LOGIC; + gt_rx_phy_status_wire_filter : in STD_LOGIC_VECTOR ( 0 to 0 ); + PIPE_RXELECIDLE : in STD_LOGIC_VECTOR ( 0 to 0 ); + gt_rxvalid_q_reg_1 : in STD_LOGIC; + PIPE_RXSTATUS : in STD_LOGIC_VECTOR ( 2 downto 0 ); + \gt_rx_status_q_reg[0]_0\ : in STD_LOGIC_VECTOR ( 5 downto 0 ); + PIPE_RXDATAK : in STD_LOGIC_VECTOR ( 1 downto 0 ); + PIPE_RXDATA : in STD_LOGIC_VECTOR ( 15 downto 0 ) + ); +end pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x is + signal \^q\ : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal \gt_rx_status_q[0]_i_1__2_n_0\ : STD_LOGIC; + signal \gt_rx_status_q[1]_i_1__2_n_0\ : STD_LOGIC; + signal \gt_rx_status_q[2]_i_1__2_n_0\ : STD_LOGIC; + signal \gt_rxcharisk_q_reg_n_0_[0]\ : STD_LOGIC; + signal \gt_rxvalid_q__0\ : STD_LOGIC; + signal gt_rxvalid_q_i_2_n_0 : STD_LOGIC; + signal gt_rxvalid_q_n_0 : STD_LOGIC; + signal \^gt_rxvalid_q_reg_0\ : STD_LOGIC; + signal p_1_in : STD_LOGIC; + signal \p_1_in__0\ : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal \^pl_ltssm_state_q_reg[5]\ : STD_LOGIC; + signal \reg_state_eios_det[0]_i_2_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[0]_i_3_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[0]_i_4_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[0]_i_5_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[1]_i_2_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[1]_i_3_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[2]_i_2_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[2]_i_3_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[3]_i_2_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[4]_i_1_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[4]_i_3_n_0\ : STD_LOGIC; + signal reg_symbol_after_eios : STD_LOGIC; + signal reg_symbol_after_eios_i_2_n_0 : STD_LOGIC; + signal state_eios_det : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal symbol_after_eios : STD_LOGIC; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \gt_rx_status_q[0]_i_1__2\ : label is "soft_lutpair4"; + attribute SOFT_HLUTNM of \gt_rx_status_q[1]_i_1__2\ : label is "soft_lutpair4"; + attribute SOFT_HLUTNM of \gt_rx_status_q[2]_i_1__2\ : label is "soft_lutpair5"; + attribute SOFT_HLUTNM of gt_rxvalid_q : label is "soft_lutpair1"; + attribute SOFT_HLUTNM of \pipe_stages_1.pipe_rx_char_is_k_q[0]_i_1\ : label is "soft_lutpair2"; + attribute SOFT_HLUTNM of \pipe_stages_1.pipe_rx_char_is_k_q[1]_i_1\ : label is "soft_lutpair5"; + attribute SOFT_HLUTNM of \reg_state_eios_det[0]_i_3\ : label is "soft_lutpair1"; + attribute SOFT_HLUTNM of \reg_state_eios_det[1]_i_1\ : label is "soft_lutpair0"; + attribute SOFT_HLUTNM of \reg_state_eios_det[1]_i_2\ : label is "soft_lutpair2"; + attribute SOFT_HLUTNM of \reg_state_eios_det[2]_i_1\ : label is "soft_lutpair3"; + attribute SOFT_HLUTNM of \reg_state_eios_det[3]_i_1\ : label is "soft_lutpair6"; + attribute SOFT_HLUTNM of \reg_state_eios_det[3]_i_2\ : label is "soft_lutpair3"; + attribute SOFT_HLUTNM of \reg_state_eios_det[4]_i_3\ : label is "soft_lutpair0"; + attribute FSM_ENCODED_STATES : string; + attribute FSM_ENCODED_STATES of \reg_state_eios_det_reg[0]\ : label is "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000"; + attribute FSM_ENCODED_STATES of \reg_state_eios_det_reg[1]\ : label is "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000"; + attribute FSM_ENCODED_STATES of \reg_state_eios_det_reg[2]\ : label is "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000"; + attribute FSM_ENCODED_STATES of \reg_state_eios_det_reg[3]\ : label is "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000"; + attribute FSM_ENCODED_STATES of \reg_state_eios_det_reg[4]\ : label is "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000"; + attribute SOFT_HLUTNM of reg_symbol_after_eios_i_2 : label is "soft_lutpair6"; +begin + Q(15 downto 0) <= \^q\(15 downto 0); + gt_rxvalid_q_reg_0 <= \^gt_rxvalid_q_reg_0\; + \pl_ltssm_state_q_reg[5]\ <= \^pl_ltssm_state_q_reg[5]\; +gt_rx_phy_status_q_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => gt_rx_phy_status_wire_filter(0), + Q => gt_rx_phy_status_q, + R => SR(0) + ); +\gt_rx_status_q[0]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"E0" + ) + port map ( + I0 => \^gt_rxvalid_q_reg_0\, + I1 => \^pl_ltssm_state_q_reg[5]\, + I2 => PIPE_RXSTATUS(0), + O => \gt_rx_status_q[0]_i_1__2_n_0\ + ); +\gt_rx_status_q[1]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"E0" + ) + port map ( + I0 => \^gt_rxvalid_q_reg_0\, + I1 => \^pl_ltssm_state_q_reg[5]\, + I2 => PIPE_RXSTATUS(1), + O => \gt_rx_status_q[1]_i_1__2_n_0\ + ); +\gt_rx_status_q[2]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"E0" + ) + port map ( + I0 => \^gt_rxvalid_q_reg_0\, + I1 => \^pl_ltssm_state_q_reg[5]\, + I2 => PIPE_RXSTATUS(2), + O => \gt_rx_status_q[2]_i_1__2_n_0\ + ); +\gt_rx_status_q[2]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFBFFFFFF" + ) + port map ( + I0 => \gt_rx_status_q_reg[0]_0\(5), + I1 => \gt_rx_status_q_reg[0]_0\(4), + I2 => \gt_rx_status_q_reg[0]_0\(3), + I3 => \gt_rx_status_q_reg[0]_0\(2), + I4 => \gt_rx_status_q_reg[0]_0\(1), + I5 => \gt_rx_status_q_reg[0]_0\(0), + O => \^pl_ltssm_state_q_reg[5]\ + ); +\gt_rx_status_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \gt_rx_status_q[0]_i_1__2_n_0\, + Q => \gt_rx_status_q_reg[2]_0\(0), + R => SR(0) + ); +\gt_rx_status_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \gt_rx_status_q[1]_i_1__2_n_0\, + Q => \gt_rx_status_q_reg[2]_0\(1), + R => SR(0) + ); +\gt_rx_status_q_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \gt_rx_status_q[2]_i_1__2_n_0\, + Q => \gt_rx_status_q_reg[2]_0\(2), + R => SR(0) + ); +\gt_rxcharisk_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATAK(0), + Q => \gt_rxcharisk_q_reg_n_0_[0]\, + R => SR(0) + ); +\gt_rxcharisk_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATAK(1), + Q => p_1_in, + R => SR(0) + ); +\gt_rxdata_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(0), + Q => \^q\(0), + R => SR(0) + ); +\gt_rxdata_q_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(10), + Q => \^q\(10), + R => SR(0) + ); +\gt_rxdata_q_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(11), + Q => \^q\(11), + R => SR(0) + ); +\gt_rxdata_q_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(12), + Q => \^q\(12), + R => SR(0) + ); +\gt_rxdata_q_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(13), + Q => \^q\(13), + R => SR(0) + ); +\gt_rxdata_q_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(14), + Q => \^q\(14), + R => SR(0) + ); +\gt_rxdata_q_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(15), + Q => \^q\(15), + R => SR(0) + ); +\gt_rxdata_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(1), + Q => \^q\(1), + R => SR(0) + ); +\gt_rxdata_q_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(2), + Q => \^q\(2), + R => SR(0) + ); +\gt_rxdata_q_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(3), + Q => \^q\(3), + R => SR(0) + ); +\gt_rxdata_q_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(4), + Q => \^q\(4), + R => SR(0) + ); +\gt_rxdata_q_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(5), + Q => \^q\(5), + R => SR(0) + ); +\gt_rxdata_q_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(6), + Q => \^q\(6), + R => SR(0) + ); +\gt_rxdata_q_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(7), + Q => \^q\(7), + R => SR(0) + ); +\gt_rxdata_q_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(8), + Q => \^q\(8), + R => SR(0) + ); +\gt_rxdata_q_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(9), + Q => \^q\(9), + R => SR(0) + ); +gt_rxelecidle_q_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXELECIDLE(0), + Q => gt_rxelecidle_q, + R => SR(0) + ); +gt_rxvalid_q: unisim.vcomponents.LUT5 + generic map( + INIT => X"00010116" + ) + port map ( + I0 => state_eios_det(0), + I1 => state_eios_det(1), + I2 => state_eios_det(2), + I3 => state_eios_det(3), + I4 => state_eios_det(4), + O => gt_rxvalid_q_n_0 + ); +gt_rxvalid_q_i_1: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFAAEAAA" + ) + port map ( + I0 => gt_rxvalid_q_i_2_n_0, + I1 => state_eios_det(2), + I2 => \reg_state_eios_det[3]_i_2_n_0\, + I3 => gt_rxvalid_q_reg_1, + I4 => state_eios_det(0), + O => \gt_rxvalid_q__0\ + ); +gt_rxvalid_q_i_2: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFF50000CC550000" + ) + port map ( + I0 => gt_rxvalid_q_n_0, + I1 => \^pl_ltssm_state_q_reg[5]\, + I2 => \reg_state_eios_det[4]_i_3_n_0\, + I3 => state_eios_det(4), + I4 => gt_rxvalid_q_reg_1, + I5 => \reg_state_eios_det[0]_i_3_n_0\, + O => gt_rxvalid_q_i_2_n_0 + ); +gt_rxvalid_q_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \gt_rxvalid_q__0\, + Q => \^gt_rxvalid_q_reg_0\, + R => SR(0) + ); +\pipe_stages_1.pipe_rx_char_is_k_q[0]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \^gt_rxvalid_q_reg_0\, + I1 => \gt_rxcharisk_q_reg_n_0_[0]\, + O => D(0) + ); +\pipe_stages_1.pipe_rx_char_is_k_q[1]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"08" + ) + port map ( + I0 => \^gt_rxvalid_q_reg_0\, + I1 => p_1_in, + I2 => symbol_after_eios, + O => D(1) + ); +\reg_state_eios_det[0]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFEFEFEEE" + ) + port map ( + I0 => state_eios_det(4), + I1 => \reg_state_eios_det[0]_i_2_n_0\, + I2 => \reg_state_eios_det[1]_i_2_n_0\, + I3 => \reg_state_eios_det[0]_i_3_n_0\, + I4 => \reg_state_eios_det[0]_i_4_n_0\, + I5 => \reg_state_eios_det[0]_i_5_n_0\, + O => \p_1_in__0\(0) + ); +\reg_state_eios_det[0]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFF3AAFFAA00AAAA" + ) + port map ( + I0 => state_eios_det(2), + I1 => \^q\(7), + I2 => \^q\(6), + I3 => \^q\(15), + I4 => \^q\(14), + I5 => state_eios_det(0), + O => \reg_state_eios_det[0]_i_2_n_0\ + ); +\reg_state_eios_det[0]_i_3\: unisim.vcomponents.LUT3 + generic map( + INIT => X"FE" + ) + port map ( + I0 => state_eios_det(3), + I1 => state_eios_det(1), + I2 => state_eios_det(2), + O => \reg_state_eios_det[0]_i_3_n_0\ + ); +\reg_state_eios_det[0]_i_4\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \^q\(14), + I1 => state_eios_det(0), + O => \reg_state_eios_det[0]_i_4_n_0\ + ); +\reg_state_eios_det[0]_i_5\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFE0E0E0FFE0FFE0" + ) + port map ( + I0 => state_eios_det(0), + I1 => state_eios_det(2), + I2 => \reg_state_eios_det[2]_i_2_n_0\, + I3 => \reg_state_eios_det[0]_i_3_n_0\, + I4 => \^q\(7), + I5 => \^q\(6), + O => \reg_state_eios_det[0]_i_5_n_0\ + ); +\reg_state_eios_det[1]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000040" + ) + port map ( + I0 => \reg_state_eios_det[1]_i_2_n_0\, + I1 => state_eios_det(0), + I2 => \^q\(7), + I3 => \^q\(6), + I4 => \reg_state_eios_det[3]_i_2_n_0\, + O => \p_1_in__0\(1) + ); +\reg_state_eios_det[1]_i_2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"BFFF" + ) + port map ( + I0 => \reg_state_eios_det[1]_i_3_n_0\, + I1 => \gt_rxcharisk_q_reg_n_0_[0]\, + I2 => \^q\(4), + I3 => \^q\(5), + O => \reg_state_eios_det[1]_i_2_n_0\ + ); +\reg_state_eios_det[1]_i_3\: unisim.vcomponents.LUT4 + generic map( + INIT => X"EFFF" + ) + port map ( + I0 => \^q\(1), + I1 => \^q\(0), + I2 => \^q\(3), + I3 => \^q\(2), + O => \reg_state_eios_det[1]_i_3_n_0\ + ); +\reg_state_eios_det[2]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0040" + ) + port map ( + I0 => \^q\(14), + I1 => \^q\(15), + I2 => state_eios_det(0), + I3 => \reg_state_eios_det[2]_i_2_n_0\, + O => \p_1_in__0\(2) + ); +\reg_state_eios_det[2]_i_2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"BFFF" + ) + port map ( + I0 => \reg_state_eios_det[2]_i_3_n_0\, + I1 => p_1_in, + I2 => \^q\(12), + I3 => \^q\(13), + O => \reg_state_eios_det[2]_i_2_n_0\ + ); +\reg_state_eios_det[2]_i_3\: unisim.vcomponents.LUT4 + generic map( + INIT => X"EFFF" + ) + port map ( + I0 => \^q\(9), + I1 => \^q\(8), + I2 => \^q\(11), + I3 => \^q\(10), + O => \reg_state_eios_det[2]_i_3_n_0\ + ); +\reg_state_eios_det[3]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"04" + ) + port map ( + I0 => \reg_state_eios_det[3]_i_2_n_0\, + I1 => state_eios_det(2), + I2 => \reg_state_eios_det[4]_i_3_n_0\, + O => \p_1_in__0\(3) + ); +\reg_state_eios_det[3]_i_2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"FD" + ) + port map ( + I0 => \^q\(14), + I1 => \^q\(15), + I2 => \reg_state_eios_det[2]_i_2_n_0\, + O => \reg_state_eios_det[3]_i_2_n_0\ + ); +\reg_state_eios_det[4]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00010116" + ) + port map ( + I0 => state_eios_det(0), + I1 => state_eios_det(4), + I2 => state_eios_det(2), + I3 => state_eios_det(1), + I4 => state_eios_det(3), + O => \reg_state_eios_det[4]_i_1_n_0\ + ); +\reg_state_eios_det[4]_i_2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"0E" + ) + port map ( + I0 => state_eios_det(3), + I1 => state_eios_det(1), + I2 => \reg_state_eios_det[4]_i_3_n_0\, + O => \p_1_in__0\(4) + ); +\reg_state_eios_det[4]_i_3\: unisim.vcomponents.LUT3 + generic map( + INIT => X"FD" + ) + port map ( + I0 => \^q\(6), + I1 => \^q\(7), + I2 => \reg_state_eios_det[1]_i_2_n_0\, + O => \reg_state_eios_det[4]_i_3_n_0\ + ); +\reg_state_eios_det_reg[0]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => \reg_state_eios_det[4]_i_1_n_0\, + D => \p_1_in__0\(0), + Q => state_eios_det(0), + S => SR(0) + ); +\reg_state_eios_det_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => \reg_state_eios_det[4]_i_1_n_0\, + D => \p_1_in__0\(1), + Q => state_eios_det(1), + R => SR(0) + ); +\reg_state_eios_det_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => \reg_state_eios_det[4]_i_1_n_0\, + D => \p_1_in__0\(2), + Q => state_eios_det(2), + R => SR(0) + ); +\reg_state_eios_det_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => \reg_state_eios_det[4]_i_1_n_0\, + D => \p_1_in__0\(3), + Q => state_eios_det(3), + R => SR(0) + ); +\reg_state_eios_det_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => \reg_state_eios_det[4]_i_1_n_0\, + D => \p_1_in__0\(4), + Q => state_eios_det(4), + R => SR(0) + ); +reg_symbol_after_eios_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000000000010" + ) + port map ( + I0 => \reg_state_eios_det[3]_i_2_n_0\, + I1 => state_eios_det(0), + I2 => state_eios_det(2), + I3 => state_eios_det(3), + I4 => state_eios_det(1), + I5 => reg_symbol_after_eios_i_2_n_0, + O => reg_symbol_after_eios + ); +reg_symbol_after_eios_i_2: unisim.vcomponents.LUT2 + generic map( + INIT => X"E" + ) + port map ( + I0 => \reg_state_eios_det[4]_i_3_n_0\, + I1 => state_eios_det(4), + O => reg_symbol_after_eios_i_2_n_0 + ); +reg_symbol_after_eios_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => reg_symbol_after_eios, + Q => symbol_after_eios, + R => SR(0) + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x_34 is + port ( + gt_rxvalid_q_reg_0 : out STD_LOGIC; + gt_rx_phy_status_q_reg_0 : out STD_LOGIC; + gt_rxelecidle_q_reg_0 : out STD_LOGIC; + Q : out STD_LOGIC_VECTOR ( 15 downto 0 ); + gt_rxvalid_q_reg_1 : out STD_LOGIC_VECTOR ( 1 downto 0 ); + \gt_rx_status_q_reg[2]_0\ : out STD_LOGIC_VECTOR ( 2 downto 0 ); + SR : in STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_pclk_in : in STD_LOGIC; + gt_rx_phy_status_wire_filter : in STD_LOGIC_VECTOR ( 0 to 0 ); + PIPE_RXELECIDLE : in STD_LOGIC_VECTOR ( 0 to 0 ); + gt_rxvalid_q_reg_2 : in STD_LOGIC; + \gt_rx_status_q_reg[0]_0\ : in STD_LOGIC; + PIPE_RXSTATUS : in STD_LOGIC_VECTOR ( 2 downto 0 ); + PIPE_RXDATAK : in STD_LOGIC_VECTOR ( 1 downto 0 ); + PIPE_RXDATA : in STD_LOGIC_VECTOR ( 15 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x_34 : entity is "pcie_7x_0_gt_rx_valid_filter_7x"; +end pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x_34; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x_34 is + signal \^q\ : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal \gt_rx_status_q[0]_i_1__1_n_0\ : STD_LOGIC; + signal \gt_rx_status_q[1]_i_1__1_n_0\ : STD_LOGIC; + signal \gt_rx_status_q[2]_i_1__1_n_0\ : STD_LOGIC; + signal \gt_rxcharisk_q_reg_n_0_[0]\ : STD_LOGIC; + signal \gt_rxvalid_q__0\ : STD_LOGIC; + signal \gt_rxvalid_q_i_2__0_n_0\ : STD_LOGIC; + signal gt_rxvalid_q_n_0 : STD_LOGIC; + signal \^gt_rxvalid_q_reg_0\ : STD_LOGIC; + signal p_1_in : STD_LOGIC; + signal \p_1_in__0\ : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal \reg_state_eios_det[0]_i_2__0_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[0]_i_3__0_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[0]_i_4__0_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[0]_i_5__0_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[1]_i_2__0_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[1]_i_3__0_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[2]_i_2__0_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[2]_i_3__0_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[3]_i_2__0_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[4]_i_1__0_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[4]_i_3__0_n_0\ : STD_LOGIC; + signal reg_symbol_after_eios : STD_LOGIC; + signal \reg_symbol_after_eios_i_2__0_n_0\ : STD_LOGIC; + signal state_eios_det : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal symbol_after_eios : STD_LOGIC; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \gt_rx_status_q[0]_i_1__1\ : label is "soft_lutpair11"; + attribute SOFT_HLUTNM of \gt_rx_status_q[1]_i_1__1\ : label is "soft_lutpair11"; + attribute SOFT_HLUTNM of \gt_rx_status_q[2]_i_1__1\ : label is "soft_lutpair12"; + attribute SOFT_HLUTNM of gt_rxvalid_q : label is "soft_lutpair8"; + attribute SOFT_HLUTNM of \pipe_stages_1.pipe_rx_char_is_k_q[0]_i_1__0\ : label is "soft_lutpair9"; + attribute SOFT_HLUTNM of \pipe_stages_1.pipe_rx_char_is_k_q[1]_i_1__0\ : label is "soft_lutpair12"; + attribute SOFT_HLUTNM of \reg_state_eios_det[0]_i_3__0\ : label is "soft_lutpair8"; + attribute SOFT_HLUTNM of \reg_state_eios_det[1]_i_1__0\ : label is "soft_lutpair7"; + attribute SOFT_HLUTNM of \reg_state_eios_det[1]_i_2__0\ : label is "soft_lutpair9"; + attribute SOFT_HLUTNM of \reg_state_eios_det[2]_i_1__0\ : label is "soft_lutpair10"; + attribute SOFT_HLUTNM of \reg_state_eios_det[3]_i_1__0\ : label is "soft_lutpair13"; + attribute SOFT_HLUTNM of \reg_state_eios_det[3]_i_2__0\ : label is "soft_lutpair10"; + attribute SOFT_HLUTNM of \reg_state_eios_det[4]_i_3__0\ : label is "soft_lutpair7"; + attribute FSM_ENCODED_STATES : string; + attribute FSM_ENCODED_STATES of \reg_state_eios_det_reg[0]\ : label is "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000"; + attribute FSM_ENCODED_STATES of \reg_state_eios_det_reg[1]\ : label is "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000"; + attribute FSM_ENCODED_STATES of \reg_state_eios_det_reg[2]\ : label is "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000"; + attribute FSM_ENCODED_STATES of \reg_state_eios_det_reg[3]\ : label is "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000"; + attribute FSM_ENCODED_STATES of \reg_state_eios_det_reg[4]\ : label is "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000"; + attribute SOFT_HLUTNM of \reg_symbol_after_eios_i_2__0\ : label is "soft_lutpair13"; +begin + Q(15 downto 0) <= \^q\(15 downto 0); + gt_rxvalid_q_reg_0 <= \^gt_rxvalid_q_reg_0\; +gt_rx_phy_status_q_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => gt_rx_phy_status_wire_filter(0), + Q => gt_rx_phy_status_q_reg_0, + R => SR(0) + ); +\gt_rx_status_q[0]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"E0" + ) + port map ( + I0 => \^gt_rxvalid_q_reg_0\, + I1 => \gt_rx_status_q_reg[0]_0\, + I2 => PIPE_RXSTATUS(0), + O => \gt_rx_status_q[0]_i_1__1_n_0\ + ); +\gt_rx_status_q[1]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"E0" + ) + port map ( + I0 => \^gt_rxvalid_q_reg_0\, + I1 => \gt_rx_status_q_reg[0]_0\, + I2 => PIPE_RXSTATUS(1), + O => \gt_rx_status_q[1]_i_1__1_n_0\ + ); +\gt_rx_status_q[2]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"E0" + ) + port map ( + I0 => \^gt_rxvalid_q_reg_0\, + I1 => \gt_rx_status_q_reg[0]_0\, + I2 => PIPE_RXSTATUS(2), + O => \gt_rx_status_q[2]_i_1__1_n_0\ + ); +\gt_rx_status_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \gt_rx_status_q[0]_i_1__1_n_0\, + Q => \gt_rx_status_q_reg[2]_0\(0), + R => SR(0) + ); +\gt_rx_status_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \gt_rx_status_q[1]_i_1__1_n_0\, + Q => \gt_rx_status_q_reg[2]_0\(1), + R => SR(0) + ); +\gt_rx_status_q_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \gt_rx_status_q[2]_i_1__1_n_0\, + Q => \gt_rx_status_q_reg[2]_0\(2), + R => SR(0) + ); +\gt_rxcharisk_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATAK(0), + Q => \gt_rxcharisk_q_reg_n_0_[0]\, + R => SR(0) + ); +\gt_rxcharisk_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATAK(1), + Q => p_1_in, + R => SR(0) + ); +\gt_rxdata_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(0), + Q => \^q\(0), + R => SR(0) + ); +\gt_rxdata_q_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(10), + Q => \^q\(10), + R => SR(0) + ); +\gt_rxdata_q_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(11), + Q => \^q\(11), + R => SR(0) + ); +\gt_rxdata_q_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(12), + Q => \^q\(12), + R => SR(0) + ); +\gt_rxdata_q_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(13), + Q => \^q\(13), + R => SR(0) + ); +\gt_rxdata_q_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(14), + Q => \^q\(14), + R => SR(0) + ); +\gt_rxdata_q_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(15), + Q => \^q\(15), + R => SR(0) + ); +\gt_rxdata_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(1), + Q => \^q\(1), + R => SR(0) + ); +\gt_rxdata_q_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(2), + Q => \^q\(2), + R => SR(0) + ); +\gt_rxdata_q_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(3), + Q => \^q\(3), + R => SR(0) + ); +\gt_rxdata_q_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(4), + Q => \^q\(4), + R => SR(0) + ); +\gt_rxdata_q_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(5), + Q => \^q\(5), + R => SR(0) + ); +\gt_rxdata_q_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(6), + Q => \^q\(6), + R => SR(0) + ); +\gt_rxdata_q_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(7), + Q => \^q\(7), + R => SR(0) + ); +\gt_rxdata_q_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(8), + Q => \^q\(8), + R => SR(0) + ); +\gt_rxdata_q_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(9), + Q => \^q\(9), + R => SR(0) + ); +gt_rxelecidle_q_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXELECIDLE(0), + Q => gt_rxelecidle_q_reg_0, + R => SR(0) + ); +gt_rxvalid_q: unisim.vcomponents.LUT5 + generic map( + INIT => X"00010116" + ) + port map ( + I0 => state_eios_det(0), + I1 => state_eios_det(1), + I2 => state_eios_det(2), + I3 => state_eios_det(3), + I4 => state_eios_det(4), + O => gt_rxvalid_q_n_0 + ); +\gt_rxvalid_q_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFAAEAAA" + ) + port map ( + I0 => \gt_rxvalid_q_i_2__0_n_0\, + I1 => state_eios_det(2), + I2 => \reg_state_eios_det[3]_i_2__0_n_0\, + I3 => gt_rxvalid_q_reg_2, + I4 => state_eios_det(0), + O => \gt_rxvalid_q__0\ + ); +\gt_rxvalid_q_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFF50000CC550000" + ) + port map ( + I0 => gt_rxvalid_q_n_0, + I1 => \gt_rx_status_q_reg[0]_0\, + I2 => \reg_state_eios_det[4]_i_3__0_n_0\, + I3 => state_eios_det(4), + I4 => gt_rxvalid_q_reg_2, + I5 => \reg_state_eios_det[0]_i_3__0_n_0\, + O => \gt_rxvalid_q_i_2__0_n_0\ + ); +gt_rxvalid_q_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \gt_rxvalid_q__0\, + Q => \^gt_rxvalid_q_reg_0\, + R => SR(0) + ); +\pipe_stages_1.pipe_rx_char_is_k_q[0]_i_1__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \^gt_rxvalid_q_reg_0\, + I1 => \gt_rxcharisk_q_reg_n_0_[0]\, + O => gt_rxvalid_q_reg_1(0) + ); +\pipe_stages_1.pipe_rx_char_is_k_q[1]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"08" + ) + port map ( + I0 => \^gt_rxvalid_q_reg_0\, + I1 => p_1_in, + I2 => symbol_after_eios, + O => gt_rxvalid_q_reg_1(1) + ); +\reg_state_eios_det[0]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFEFEFEEE" + ) + port map ( + I0 => state_eios_det(4), + I1 => \reg_state_eios_det[0]_i_2__0_n_0\, + I2 => \reg_state_eios_det[1]_i_2__0_n_0\, + I3 => \reg_state_eios_det[0]_i_3__0_n_0\, + I4 => \reg_state_eios_det[0]_i_4__0_n_0\, + I5 => \reg_state_eios_det[0]_i_5__0_n_0\, + O => \p_1_in__0\(0) + ); +\reg_state_eios_det[0]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFF3AAFFAA00AAAA" + ) + port map ( + I0 => state_eios_det(2), + I1 => \^q\(7), + I2 => \^q\(6), + I3 => \^q\(15), + I4 => \^q\(14), + I5 => state_eios_det(0), + O => \reg_state_eios_det[0]_i_2__0_n_0\ + ); +\reg_state_eios_det[0]_i_3__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"FE" + ) + port map ( + I0 => state_eios_det(3), + I1 => state_eios_det(1), + I2 => state_eios_det(2), + O => \reg_state_eios_det[0]_i_3__0_n_0\ + ); +\reg_state_eios_det[0]_i_4__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \^q\(14), + I1 => state_eios_det(0), + O => \reg_state_eios_det[0]_i_4__0_n_0\ + ); +\reg_state_eios_det[0]_i_5__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFE0E0E0FFE0FFE0" + ) + port map ( + I0 => state_eios_det(0), + I1 => state_eios_det(2), + I2 => \reg_state_eios_det[2]_i_2__0_n_0\, + I3 => \reg_state_eios_det[0]_i_3__0_n_0\, + I4 => \^q\(7), + I5 => \^q\(6), + O => \reg_state_eios_det[0]_i_5__0_n_0\ + ); +\reg_state_eios_det[1]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000040" + ) + port map ( + I0 => \reg_state_eios_det[1]_i_2__0_n_0\, + I1 => state_eios_det(0), + I2 => \^q\(7), + I3 => \^q\(6), + I4 => \reg_state_eios_det[3]_i_2__0_n_0\, + O => \p_1_in__0\(1) + ); +\reg_state_eios_det[1]_i_2__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"BFFF" + ) + port map ( + I0 => \reg_state_eios_det[1]_i_3__0_n_0\, + I1 => \gt_rxcharisk_q_reg_n_0_[0]\, + I2 => \^q\(4), + I3 => \^q\(5), + O => \reg_state_eios_det[1]_i_2__0_n_0\ + ); +\reg_state_eios_det[1]_i_3__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"EFFF" + ) + port map ( + I0 => \^q\(1), + I1 => \^q\(0), + I2 => \^q\(3), + I3 => \^q\(2), + O => \reg_state_eios_det[1]_i_3__0_n_0\ + ); +\reg_state_eios_det[2]_i_1__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0040" + ) + port map ( + I0 => \^q\(14), + I1 => \^q\(15), + I2 => state_eios_det(0), + I3 => \reg_state_eios_det[2]_i_2__0_n_0\, + O => \p_1_in__0\(2) + ); +\reg_state_eios_det[2]_i_2__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"BFFF" + ) + port map ( + I0 => \reg_state_eios_det[2]_i_3__0_n_0\, + I1 => p_1_in, + I2 => \^q\(12), + I3 => \^q\(13), + O => \reg_state_eios_det[2]_i_2__0_n_0\ + ); +\reg_state_eios_det[2]_i_3__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"EFFF" + ) + port map ( + I0 => \^q\(9), + I1 => \^q\(8), + I2 => \^q\(11), + I3 => \^q\(10), + O => \reg_state_eios_det[2]_i_3__0_n_0\ + ); +\reg_state_eios_det[3]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"04" + ) + port map ( + I0 => \reg_state_eios_det[3]_i_2__0_n_0\, + I1 => state_eios_det(2), + I2 => \reg_state_eios_det[4]_i_3__0_n_0\, + O => \p_1_in__0\(3) + ); +\reg_state_eios_det[3]_i_2__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"FD" + ) + port map ( + I0 => \^q\(14), + I1 => \^q\(15), + I2 => \reg_state_eios_det[2]_i_2__0_n_0\, + O => \reg_state_eios_det[3]_i_2__0_n_0\ + ); +\reg_state_eios_det[4]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00010116" + ) + port map ( + I0 => state_eios_det(0), + I1 => state_eios_det(4), + I2 => state_eios_det(2), + I3 => state_eios_det(1), + I4 => state_eios_det(3), + O => \reg_state_eios_det[4]_i_1__0_n_0\ + ); +\reg_state_eios_det[4]_i_2__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"0E" + ) + port map ( + I0 => state_eios_det(3), + I1 => state_eios_det(1), + I2 => \reg_state_eios_det[4]_i_3__0_n_0\, + O => \p_1_in__0\(4) + ); +\reg_state_eios_det[4]_i_3__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"FD" + ) + port map ( + I0 => \^q\(6), + I1 => \^q\(7), + I2 => \reg_state_eios_det[1]_i_2__0_n_0\, + O => \reg_state_eios_det[4]_i_3__0_n_0\ + ); +\reg_state_eios_det_reg[0]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => \reg_state_eios_det[4]_i_1__0_n_0\, + D => \p_1_in__0\(0), + Q => state_eios_det(0), + S => SR(0) + ); +\reg_state_eios_det_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => \reg_state_eios_det[4]_i_1__0_n_0\, + D => \p_1_in__0\(1), + Q => state_eios_det(1), + R => SR(0) + ); +\reg_state_eios_det_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => \reg_state_eios_det[4]_i_1__0_n_0\, + D => \p_1_in__0\(2), + Q => state_eios_det(2), + R => SR(0) + ); +\reg_state_eios_det_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => \reg_state_eios_det[4]_i_1__0_n_0\, + D => \p_1_in__0\(3), + Q => state_eios_det(3), + R => SR(0) + ); +\reg_state_eios_det_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => \reg_state_eios_det[4]_i_1__0_n_0\, + D => \p_1_in__0\(4), + Q => state_eios_det(4), + R => SR(0) + ); +\reg_symbol_after_eios_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000000000010" + ) + port map ( + I0 => \reg_state_eios_det[3]_i_2__0_n_0\, + I1 => state_eios_det(0), + I2 => state_eios_det(2), + I3 => state_eios_det(3), + I4 => state_eios_det(1), + I5 => \reg_symbol_after_eios_i_2__0_n_0\, + O => reg_symbol_after_eios + ); +\reg_symbol_after_eios_i_2__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"E" + ) + port map ( + I0 => \reg_state_eios_det[4]_i_3__0_n_0\, + I1 => state_eios_det(4), + O => \reg_symbol_after_eios_i_2__0_n_0\ + ); +reg_symbol_after_eios_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => reg_symbol_after_eios, + Q => symbol_after_eios, + R => SR(0) + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x_35 is + port ( + gt_rxvalid_q_reg_0 : out STD_LOGIC; + gt_rx_phy_status_q_reg_0 : out STD_LOGIC; + gt_rxelecidle_q_reg_0 : out STD_LOGIC; + Q : out STD_LOGIC_VECTOR ( 15 downto 0 ); + gt_rxvalid_q_reg_1 : out STD_LOGIC_VECTOR ( 1 downto 0 ); + \gt_rx_status_q_reg[2]_0\ : out STD_LOGIC_VECTOR ( 2 downto 0 ); + SR : in STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_pclk_in : in STD_LOGIC; + gt_rx_phy_status_wire_filter : in STD_LOGIC_VECTOR ( 0 to 0 ); + PIPE_RXELECIDLE : in STD_LOGIC_VECTOR ( 0 to 0 ); + gt_rxvalid_q_reg_2 : in STD_LOGIC; + \gt_rx_status_q_reg[0]_0\ : in STD_LOGIC; + PIPE_RXSTATUS : in STD_LOGIC_VECTOR ( 2 downto 0 ); + PIPE_RXDATAK : in STD_LOGIC_VECTOR ( 1 downto 0 ); + PIPE_RXDATA : in STD_LOGIC_VECTOR ( 15 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x_35 : entity is "pcie_7x_0_gt_rx_valid_filter_7x"; +end pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x_35; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x_35 is + signal \^q\ : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal \gt_rx_status_q[0]_i_1__0_n_0\ : STD_LOGIC; + signal \gt_rx_status_q[1]_i_1__0_n_0\ : STD_LOGIC; + signal \gt_rx_status_q[2]_i_1__0_n_0\ : STD_LOGIC; + signal \gt_rxcharisk_q_reg_n_0_[0]\ : STD_LOGIC; + signal \gt_rxvalid_q__0\ : STD_LOGIC; + signal \gt_rxvalid_q_i_2__1_n_0\ : STD_LOGIC; + signal gt_rxvalid_q_n_0 : STD_LOGIC; + signal \^gt_rxvalid_q_reg_0\ : STD_LOGIC; + signal p_1_in : STD_LOGIC; + signal \p_1_in__0\ : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal \reg_state_eios_det[0]_i_2__1_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[0]_i_3__1_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[0]_i_4__1_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[0]_i_5__1_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[1]_i_2__1_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[1]_i_3__1_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[2]_i_2__1_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[2]_i_3__1_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[3]_i_2__1_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[4]_i_1__1_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[4]_i_3__1_n_0\ : STD_LOGIC; + signal reg_symbol_after_eios : STD_LOGIC; + signal \reg_symbol_after_eios_i_2__1_n_0\ : STD_LOGIC; + signal state_eios_det : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal symbol_after_eios : STD_LOGIC; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \gt_rx_status_q[0]_i_1__0\ : label is "soft_lutpair18"; + attribute SOFT_HLUTNM of \gt_rx_status_q[1]_i_1__0\ : label is "soft_lutpair18"; + attribute SOFT_HLUTNM of \gt_rx_status_q[2]_i_1__0\ : label is "soft_lutpair19"; + attribute SOFT_HLUTNM of gt_rxvalid_q : label is "soft_lutpair15"; + attribute SOFT_HLUTNM of \pipe_stages_1.pipe_rx_char_is_k_q[0]_i_1__1\ : label is "soft_lutpair16"; + attribute SOFT_HLUTNM of \pipe_stages_1.pipe_rx_char_is_k_q[1]_i_1__1\ : label is "soft_lutpair19"; + attribute SOFT_HLUTNM of \reg_state_eios_det[0]_i_3__1\ : label is "soft_lutpair15"; + attribute SOFT_HLUTNM of \reg_state_eios_det[1]_i_1__1\ : label is "soft_lutpair14"; + attribute SOFT_HLUTNM of \reg_state_eios_det[1]_i_2__1\ : label is "soft_lutpair16"; + attribute SOFT_HLUTNM of \reg_state_eios_det[2]_i_1__1\ : label is "soft_lutpair17"; + attribute SOFT_HLUTNM of \reg_state_eios_det[3]_i_1__1\ : label is "soft_lutpair20"; + attribute SOFT_HLUTNM of \reg_state_eios_det[3]_i_2__1\ : label is "soft_lutpair17"; + attribute SOFT_HLUTNM of \reg_state_eios_det[4]_i_3__1\ : label is "soft_lutpair14"; + attribute FSM_ENCODED_STATES : string; + attribute FSM_ENCODED_STATES of \reg_state_eios_det_reg[0]\ : label is "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000"; + attribute FSM_ENCODED_STATES of \reg_state_eios_det_reg[1]\ : label is "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000"; + attribute FSM_ENCODED_STATES of \reg_state_eios_det_reg[2]\ : label is "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000"; + attribute FSM_ENCODED_STATES of \reg_state_eios_det_reg[3]\ : label is "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000"; + attribute FSM_ENCODED_STATES of \reg_state_eios_det_reg[4]\ : label is "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000"; + attribute SOFT_HLUTNM of \reg_symbol_after_eios_i_2__1\ : label is "soft_lutpair20"; +begin + Q(15 downto 0) <= \^q\(15 downto 0); + gt_rxvalid_q_reg_0 <= \^gt_rxvalid_q_reg_0\; +gt_rx_phy_status_q_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => gt_rx_phy_status_wire_filter(0), + Q => gt_rx_phy_status_q_reg_0, + R => SR(0) + ); +\gt_rx_status_q[0]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"E0" + ) + port map ( + I0 => \^gt_rxvalid_q_reg_0\, + I1 => \gt_rx_status_q_reg[0]_0\, + I2 => PIPE_RXSTATUS(0), + O => \gt_rx_status_q[0]_i_1__0_n_0\ + ); +\gt_rx_status_q[1]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"E0" + ) + port map ( + I0 => \^gt_rxvalid_q_reg_0\, + I1 => \gt_rx_status_q_reg[0]_0\, + I2 => PIPE_RXSTATUS(1), + O => \gt_rx_status_q[1]_i_1__0_n_0\ + ); +\gt_rx_status_q[2]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"E0" + ) + port map ( + I0 => \^gt_rxvalid_q_reg_0\, + I1 => \gt_rx_status_q_reg[0]_0\, + I2 => PIPE_RXSTATUS(2), + O => \gt_rx_status_q[2]_i_1__0_n_0\ + ); +\gt_rx_status_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \gt_rx_status_q[0]_i_1__0_n_0\, + Q => \gt_rx_status_q_reg[2]_0\(0), + R => SR(0) + ); +\gt_rx_status_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \gt_rx_status_q[1]_i_1__0_n_0\, + Q => \gt_rx_status_q_reg[2]_0\(1), + R => SR(0) + ); +\gt_rx_status_q_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \gt_rx_status_q[2]_i_1__0_n_0\, + Q => \gt_rx_status_q_reg[2]_0\(2), + R => SR(0) + ); +\gt_rxcharisk_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATAK(0), + Q => \gt_rxcharisk_q_reg_n_0_[0]\, + R => SR(0) + ); +\gt_rxcharisk_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATAK(1), + Q => p_1_in, + R => SR(0) + ); +\gt_rxdata_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(0), + Q => \^q\(0), + R => SR(0) + ); +\gt_rxdata_q_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(10), + Q => \^q\(10), + R => SR(0) + ); +\gt_rxdata_q_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(11), + Q => \^q\(11), + R => SR(0) + ); +\gt_rxdata_q_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(12), + Q => \^q\(12), + R => SR(0) + ); +\gt_rxdata_q_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(13), + Q => \^q\(13), + R => SR(0) + ); +\gt_rxdata_q_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(14), + Q => \^q\(14), + R => SR(0) + ); +\gt_rxdata_q_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(15), + Q => \^q\(15), + R => SR(0) + ); +\gt_rxdata_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(1), + Q => \^q\(1), + R => SR(0) + ); +\gt_rxdata_q_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(2), + Q => \^q\(2), + R => SR(0) + ); +\gt_rxdata_q_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(3), + Q => \^q\(3), + R => SR(0) + ); +\gt_rxdata_q_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(4), + Q => \^q\(4), + R => SR(0) + ); +\gt_rxdata_q_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(5), + Q => \^q\(5), + R => SR(0) + ); +\gt_rxdata_q_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(6), + Q => \^q\(6), + R => SR(0) + ); +\gt_rxdata_q_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(7), + Q => \^q\(7), + R => SR(0) + ); +\gt_rxdata_q_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(8), + Q => \^q\(8), + R => SR(0) + ); +\gt_rxdata_q_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(9), + Q => \^q\(9), + R => SR(0) + ); +gt_rxelecidle_q_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXELECIDLE(0), + Q => gt_rxelecidle_q_reg_0, + R => SR(0) + ); +gt_rxvalid_q: unisim.vcomponents.LUT5 + generic map( + INIT => X"00010116" + ) + port map ( + I0 => state_eios_det(0), + I1 => state_eios_det(1), + I2 => state_eios_det(2), + I3 => state_eios_det(3), + I4 => state_eios_det(4), + O => gt_rxvalid_q_n_0 + ); +\gt_rxvalid_q_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFAAEAAA" + ) + port map ( + I0 => \gt_rxvalid_q_i_2__1_n_0\, + I1 => state_eios_det(2), + I2 => \reg_state_eios_det[3]_i_2__1_n_0\, + I3 => gt_rxvalid_q_reg_2, + I4 => state_eios_det(0), + O => \gt_rxvalid_q__0\ + ); +\gt_rxvalid_q_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFF50000CC550000" + ) + port map ( + I0 => gt_rxvalid_q_n_0, + I1 => \gt_rx_status_q_reg[0]_0\, + I2 => \reg_state_eios_det[4]_i_3__1_n_0\, + I3 => state_eios_det(4), + I4 => gt_rxvalid_q_reg_2, + I5 => \reg_state_eios_det[0]_i_3__1_n_0\, + O => \gt_rxvalid_q_i_2__1_n_0\ + ); +gt_rxvalid_q_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \gt_rxvalid_q__0\, + Q => \^gt_rxvalid_q_reg_0\, + R => SR(0) + ); +\pipe_stages_1.pipe_rx_char_is_k_q[0]_i_1__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \^gt_rxvalid_q_reg_0\, + I1 => \gt_rxcharisk_q_reg_n_0_[0]\, + O => gt_rxvalid_q_reg_1(0) + ); +\pipe_stages_1.pipe_rx_char_is_k_q[1]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"08" + ) + port map ( + I0 => \^gt_rxvalid_q_reg_0\, + I1 => p_1_in, + I2 => symbol_after_eios, + O => gt_rxvalid_q_reg_1(1) + ); +\reg_state_eios_det[0]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFEFEFEEE" + ) + port map ( + I0 => state_eios_det(4), + I1 => \reg_state_eios_det[0]_i_2__1_n_0\, + I2 => \reg_state_eios_det[1]_i_2__1_n_0\, + I3 => \reg_state_eios_det[0]_i_3__1_n_0\, + I4 => \reg_state_eios_det[0]_i_4__1_n_0\, + I5 => \reg_state_eios_det[0]_i_5__1_n_0\, + O => \p_1_in__0\(0) + ); +\reg_state_eios_det[0]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFF3AAFFAA00AAAA" + ) + port map ( + I0 => state_eios_det(2), + I1 => \^q\(7), + I2 => \^q\(6), + I3 => \^q\(15), + I4 => \^q\(14), + I5 => state_eios_det(0), + O => \reg_state_eios_det[0]_i_2__1_n_0\ + ); +\reg_state_eios_det[0]_i_3__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"FE" + ) + port map ( + I0 => state_eios_det(3), + I1 => state_eios_det(1), + I2 => state_eios_det(2), + O => \reg_state_eios_det[0]_i_3__1_n_0\ + ); +\reg_state_eios_det[0]_i_4__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \^q\(14), + I1 => state_eios_det(0), + O => \reg_state_eios_det[0]_i_4__1_n_0\ + ); +\reg_state_eios_det[0]_i_5__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFE0E0E0FFE0FFE0" + ) + port map ( + I0 => state_eios_det(0), + I1 => state_eios_det(2), + I2 => \reg_state_eios_det[2]_i_2__1_n_0\, + I3 => \reg_state_eios_det[0]_i_3__1_n_0\, + I4 => \^q\(7), + I5 => \^q\(6), + O => \reg_state_eios_det[0]_i_5__1_n_0\ + ); +\reg_state_eios_det[1]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000040" + ) + port map ( + I0 => \reg_state_eios_det[1]_i_2__1_n_0\, + I1 => state_eios_det(0), + I2 => \^q\(7), + I3 => \^q\(6), + I4 => \reg_state_eios_det[3]_i_2__1_n_0\, + O => \p_1_in__0\(1) + ); +\reg_state_eios_det[1]_i_2__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"BFFF" + ) + port map ( + I0 => \reg_state_eios_det[1]_i_3__1_n_0\, + I1 => \gt_rxcharisk_q_reg_n_0_[0]\, + I2 => \^q\(4), + I3 => \^q\(5), + O => \reg_state_eios_det[1]_i_2__1_n_0\ + ); +\reg_state_eios_det[1]_i_3__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"EFFF" + ) + port map ( + I0 => \^q\(1), + I1 => \^q\(0), + I2 => \^q\(3), + I3 => \^q\(2), + O => \reg_state_eios_det[1]_i_3__1_n_0\ + ); +\reg_state_eios_det[2]_i_1__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0040" + ) + port map ( + I0 => \^q\(14), + I1 => \^q\(15), + I2 => state_eios_det(0), + I3 => \reg_state_eios_det[2]_i_2__1_n_0\, + O => \p_1_in__0\(2) + ); +\reg_state_eios_det[2]_i_2__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"BFFF" + ) + port map ( + I0 => \reg_state_eios_det[2]_i_3__1_n_0\, + I1 => p_1_in, + I2 => \^q\(12), + I3 => \^q\(13), + O => \reg_state_eios_det[2]_i_2__1_n_0\ + ); +\reg_state_eios_det[2]_i_3__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"EFFF" + ) + port map ( + I0 => \^q\(9), + I1 => \^q\(8), + I2 => \^q\(11), + I3 => \^q\(10), + O => \reg_state_eios_det[2]_i_3__1_n_0\ + ); +\reg_state_eios_det[3]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"04" + ) + port map ( + I0 => \reg_state_eios_det[3]_i_2__1_n_0\, + I1 => state_eios_det(2), + I2 => \reg_state_eios_det[4]_i_3__1_n_0\, + O => \p_1_in__0\(3) + ); +\reg_state_eios_det[3]_i_2__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"FD" + ) + port map ( + I0 => \^q\(14), + I1 => \^q\(15), + I2 => \reg_state_eios_det[2]_i_2__1_n_0\, + O => \reg_state_eios_det[3]_i_2__1_n_0\ + ); +\reg_state_eios_det[4]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00010116" + ) + port map ( + I0 => state_eios_det(0), + I1 => state_eios_det(4), + I2 => state_eios_det(2), + I3 => state_eios_det(1), + I4 => state_eios_det(3), + O => \reg_state_eios_det[4]_i_1__1_n_0\ + ); +\reg_state_eios_det[4]_i_2__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"0E" + ) + port map ( + I0 => state_eios_det(3), + I1 => state_eios_det(1), + I2 => \reg_state_eios_det[4]_i_3__1_n_0\, + O => \p_1_in__0\(4) + ); +\reg_state_eios_det[4]_i_3__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"FD" + ) + port map ( + I0 => \^q\(6), + I1 => \^q\(7), + I2 => \reg_state_eios_det[1]_i_2__1_n_0\, + O => \reg_state_eios_det[4]_i_3__1_n_0\ + ); +\reg_state_eios_det_reg[0]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => \reg_state_eios_det[4]_i_1__1_n_0\, + D => \p_1_in__0\(0), + Q => state_eios_det(0), + S => SR(0) + ); +\reg_state_eios_det_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => \reg_state_eios_det[4]_i_1__1_n_0\, + D => \p_1_in__0\(1), + Q => state_eios_det(1), + R => SR(0) + ); +\reg_state_eios_det_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => \reg_state_eios_det[4]_i_1__1_n_0\, + D => \p_1_in__0\(2), + Q => state_eios_det(2), + R => SR(0) + ); +\reg_state_eios_det_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => \reg_state_eios_det[4]_i_1__1_n_0\, + D => \p_1_in__0\(3), + Q => state_eios_det(3), + R => SR(0) + ); +\reg_state_eios_det_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => \reg_state_eios_det[4]_i_1__1_n_0\, + D => \p_1_in__0\(4), + Q => state_eios_det(4), + R => SR(0) + ); +\reg_symbol_after_eios_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000000000010" + ) + port map ( + I0 => \reg_state_eios_det[3]_i_2__1_n_0\, + I1 => state_eios_det(0), + I2 => state_eios_det(2), + I3 => state_eios_det(3), + I4 => state_eios_det(1), + I5 => \reg_symbol_after_eios_i_2__1_n_0\, + O => reg_symbol_after_eios + ); +\reg_symbol_after_eios_i_2__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"E" + ) + port map ( + I0 => \reg_state_eios_det[4]_i_3__1_n_0\, + I1 => state_eios_det(4), + O => \reg_symbol_after_eios_i_2__1_n_0\ + ); +reg_symbol_after_eios_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => reg_symbol_after_eios, + Q => symbol_after_eios, + R => SR(0) + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x_36 is + port ( + gt_rxvalid_q_reg_0 : out STD_LOGIC; + gt_rx_phy_status_q_reg_0 : out STD_LOGIC; + gt_rxelecidle_q_reg_0 : out STD_LOGIC; + Q : out STD_LOGIC_VECTOR ( 15 downto 0 ); + gt_rxvalid_q_reg_1 : out STD_LOGIC_VECTOR ( 1 downto 0 ); + \gt_rx_status_q_reg[2]_0\ : out STD_LOGIC_VECTOR ( 2 downto 0 ); + SR : in STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_pclk_in : in STD_LOGIC; + gt_rx_phy_status_wire_filter : in STD_LOGIC_VECTOR ( 0 to 0 ); + PIPE_RXELECIDLE : in STD_LOGIC_VECTOR ( 0 to 0 ); + gt_rxvalid_q_reg_2 : in STD_LOGIC; + \gt_rx_status_q_reg[0]_0\ : in STD_LOGIC; + PIPE_RXSTATUS : in STD_LOGIC_VECTOR ( 2 downto 0 ); + PIPE_RXDATAK : in STD_LOGIC_VECTOR ( 1 downto 0 ); + PIPE_RXDATA : in STD_LOGIC_VECTOR ( 15 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x_36 : entity is "pcie_7x_0_gt_rx_valid_filter_7x"; +end pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x_36; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x_36 is + signal \^q\ : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal \gt_rx_status_q[0]_i_1_n_0\ : STD_LOGIC; + signal \gt_rx_status_q[1]_i_1_n_0\ : STD_LOGIC; + signal \gt_rx_status_q[2]_i_1_n_0\ : STD_LOGIC; + signal \gt_rxcharisk_q_reg_n_0_[0]\ : STD_LOGIC; + signal \gt_rxvalid_q__0\ : STD_LOGIC; + signal \gt_rxvalid_q_i_2__2_n_0\ : STD_LOGIC; + signal gt_rxvalid_q_n_0 : STD_LOGIC; + signal \^gt_rxvalid_q_reg_0\ : STD_LOGIC; + signal p_1_in : STD_LOGIC; + signal \p_1_in__0\ : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal \reg_state_eios_det[0]_i_2__2_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[0]_i_3__2_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[0]_i_4__2_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[0]_i_5__2_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[1]_i_2__2_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[1]_i_3__2_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[2]_i_2__2_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[2]_i_3__2_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[3]_i_2__2_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[4]_i_1__2_n_0\ : STD_LOGIC; + signal \reg_state_eios_det[4]_i_3__2_n_0\ : STD_LOGIC; + signal reg_symbol_after_eios : STD_LOGIC; + signal \reg_symbol_after_eios_i_2__2_n_0\ : STD_LOGIC; + signal state_eios_det : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal symbol_after_eios : STD_LOGIC; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \gt_rx_status_q[0]_i_1\ : label is "soft_lutpair25"; + attribute SOFT_HLUTNM of \gt_rx_status_q[1]_i_1\ : label is "soft_lutpair25"; + attribute SOFT_HLUTNM of \gt_rx_status_q[2]_i_1\ : label is "soft_lutpair26"; + attribute SOFT_HLUTNM of gt_rxvalid_q : label is "soft_lutpair22"; + attribute SOFT_HLUTNM of \pipe_stages_1.pipe_rx_char_is_k_q[0]_i_1__2\ : label is "soft_lutpair23"; + attribute SOFT_HLUTNM of \pipe_stages_1.pipe_rx_char_is_k_q[1]_i_1__2\ : label is "soft_lutpair26"; + attribute SOFT_HLUTNM of \reg_state_eios_det[0]_i_3__2\ : label is "soft_lutpair22"; + attribute SOFT_HLUTNM of \reg_state_eios_det[1]_i_1__2\ : label is "soft_lutpair21"; + attribute SOFT_HLUTNM of \reg_state_eios_det[1]_i_2__2\ : label is "soft_lutpair23"; + attribute SOFT_HLUTNM of \reg_state_eios_det[2]_i_1__2\ : label is "soft_lutpair24"; + attribute SOFT_HLUTNM of \reg_state_eios_det[3]_i_1__2\ : label is "soft_lutpair27"; + attribute SOFT_HLUTNM of \reg_state_eios_det[3]_i_2__2\ : label is "soft_lutpair24"; + attribute SOFT_HLUTNM of \reg_state_eios_det[4]_i_3__2\ : label is "soft_lutpair21"; + attribute FSM_ENCODED_STATES : string; + attribute FSM_ENCODED_STATES of \reg_state_eios_det_reg[0]\ : label is "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000"; + attribute FSM_ENCODED_STATES of \reg_state_eios_det_reg[1]\ : label is "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000"; + attribute FSM_ENCODED_STATES of \reg_state_eios_det_reg[2]\ : label is "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000"; + attribute FSM_ENCODED_STATES of \reg_state_eios_det_reg[3]\ : label is "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000"; + attribute FSM_ENCODED_STATES of \reg_state_eios_det_reg[4]\ : label is "EIOS_DET_NO_STR0:00010,EIOS_DET_STR0:00100,EIOS_DET_STR1:01000,EIOS_DET_IDL:00001,EIOS_DET_DONE:10000"; + attribute SOFT_HLUTNM of \reg_symbol_after_eios_i_2__2\ : label is "soft_lutpair27"; +begin + Q(15 downto 0) <= \^q\(15 downto 0); + gt_rxvalid_q_reg_0 <= \^gt_rxvalid_q_reg_0\; +gt_rx_phy_status_q_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => gt_rx_phy_status_wire_filter(0), + Q => gt_rx_phy_status_q_reg_0, + R => SR(0) + ); +\gt_rx_status_q[0]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"E0" + ) + port map ( + I0 => \^gt_rxvalid_q_reg_0\, + I1 => \gt_rx_status_q_reg[0]_0\, + I2 => PIPE_RXSTATUS(0), + O => \gt_rx_status_q[0]_i_1_n_0\ + ); +\gt_rx_status_q[1]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"E0" + ) + port map ( + I0 => \^gt_rxvalid_q_reg_0\, + I1 => \gt_rx_status_q_reg[0]_0\, + I2 => PIPE_RXSTATUS(1), + O => \gt_rx_status_q[1]_i_1_n_0\ + ); +\gt_rx_status_q[2]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"E0" + ) + port map ( + I0 => \^gt_rxvalid_q_reg_0\, + I1 => \gt_rx_status_q_reg[0]_0\, + I2 => PIPE_RXSTATUS(2), + O => \gt_rx_status_q[2]_i_1_n_0\ + ); +\gt_rx_status_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \gt_rx_status_q[0]_i_1_n_0\, + Q => \gt_rx_status_q_reg[2]_0\(0), + R => SR(0) + ); +\gt_rx_status_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \gt_rx_status_q[1]_i_1_n_0\, + Q => \gt_rx_status_q_reg[2]_0\(1), + R => SR(0) + ); +\gt_rx_status_q_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \gt_rx_status_q[2]_i_1_n_0\, + Q => \gt_rx_status_q_reg[2]_0\(2), + R => SR(0) + ); +\gt_rxcharisk_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATAK(0), + Q => \gt_rxcharisk_q_reg_n_0_[0]\, + R => SR(0) + ); +\gt_rxcharisk_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATAK(1), + Q => p_1_in, + R => SR(0) + ); +\gt_rxdata_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(0), + Q => \^q\(0), + R => SR(0) + ); +\gt_rxdata_q_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(10), + Q => \^q\(10), + R => SR(0) + ); +\gt_rxdata_q_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(11), + Q => \^q\(11), + R => SR(0) + ); +\gt_rxdata_q_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(12), + Q => \^q\(12), + R => SR(0) + ); +\gt_rxdata_q_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(13), + Q => \^q\(13), + R => SR(0) + ); +\gt_rxdata_q_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(14), + Q => \^q\(14), + R => SR(0) + ); +\gt_rxdata_q_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(15), + Q => \^q\(15), + R => SR(0) + ); +\gt_rxdata_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(1), + Q => \^q\(1), + R => SR(0) + ); +\gt_rxdata_q_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(2), + Q => \^q\(2), + R => SR(0) + ); +\gt_rxdata_q_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(3), + Q => \^q\(3), + R => SR(0) + ); +\gt_rxdata_q_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(4), + Q => \^q\(4), + R => SR(0) + ); +\gt_rxdata_q_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(5), + Q => \^q\(5), + R => SR(0) + ); +\gt_rxdata_q_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(6), + Q => \^q\(6), + R => SR(0) + ); +\gt_rxdata_q_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(7), + Q => \^q\(7), + R => SR(0) + ); +\gt_rxdata_q_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(8), + Q => \^q\(8), + R => SR(0) + ); +\gt_rxdata_q_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXDATA(9), + Q => \^q\(9), + R => SR(0) + ); +gt_rxelecidle_q_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXELECIDLE(0), + Q => gt_rxelecidle_q_reg_0, + R => SR(0) + ); +gt_rxvalid_q: unisim.vcomponents.LUT5 + generic map( + INIT => X"00010116" + ) + port map ( + I0 => state_eios_det(0), + I1 => state_eios_det(1), + I2 => state_eios_det(2), + I3 => state_eios_det(3), + I4 => state_eios_det(4), + O => gt_rxvalid_q_n_0 + ); +\gt_rxvalid_q_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFAAEAAA" + ) + port map ( + I0 => \gt_rxvalid_q_i_2__2_n_0\, + I1 => state_eios_det(2), + I2 => \reg_state_eios_det[3]_i_2__2_n_0\, + I3 => gt_rxvalid_q_reg_2, + I4 => state_eios_det(0), + O => \gt_rxvalid_q__0\ + ); +\gt_rxvalid_q_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFF50000CC550000" + ) + port map ( + I0 => gt_rxvalid_q_n_0, + I1 => \gt_rx_status_q_reg[0]_0\, + I2 => \reg_state_eios_det[4]_i_3__2_n_0\, + I3 => state_eios_det(4), + I4 => gt_rxvalid_q_reg_2, + I5 => \reg_state_eios_det[0]_i_3__2_n_0\, + O => \gt_rxvalid_q_i_2__2_n_0\ + ); +gt_rxvalid_q_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \gt_rxvalid_q__0\, + Q => \^gt_rxvalid_q_reg_0\, + R => SR(0) + ); +\pipe_stages_1.pipe_rx_char_is_k_q[0]_i_1__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \^gt_rxvalid_q_reg_0\, + I1 => \gt_rxcharisk_q_reg_n_0_[0]\, + O => gt_rxvalid_q_reg_1(0) + ); +\pipe_stages_1.pipe_rx_char_is_k_q[1]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"08" + ) + port map ( + I0 => \^gt_rxvalid_q_reg_0\, + I1 => p_1_in, + I2 => symbol_after_eios, + O => gt_rxvalid_q_reg_1(1) + ); +\reg_state_eios_det[0]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFEFEFEEE" + ) + port map ( + I0 => state_eios_det(4), + I1 => \reg_state_eios_det[0]_i_2__2_n_0\, + I2 => \reg_state_eios_det[1]_i_2__2_n_0\, + I3 => \reg_state_eios_det[0]_i_3__2_n_0\, + I4 => \reg_state_eios_det[0]_i_4__2_n_0\, + I5 => \reg_state_eios_det[0]_i_5__2_n_0\, + O => \p_1_in__0\(0) + ); +\reg_state_eios_det[0]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFAA8A8AFF00FFAA" + ) + port map ( + I0 => state_eios_det(0), + I1 => \^q\(6), + I2 => \^q\(7), + I3 => state_eios_det(2), + I4 => \^q\(15), + I5 => \^q\(14), + O => \reg_state_eios_det[0]_i_2__2_n_0\ + ); +\reg_state_eios_det[0]_i_3__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"FE" + ) + port map ( + I0 => state_eios_det(3), + I1 => state_eios_det(1), + I2 => state_eios_det(2), + O => \reg_state_eios_det[0]_i_3__2_n_0\ + ); +\reg_state_eios_det[0]_i_4__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => state_eios_det(0), + I1 => \^q\(15), + O => \reg_state_eios_det[0]_i_4__2_n_0\ + ); +\reg_state_eios_det[0]_i_5__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFE0E0E0FFE0FFE0" + ) + port map ( + I0 => state_eios_det(0), + I1 => state_eios_det(2), + I2 => \reg_state_eios_det[2]_i_2__2_n_0\, + I3 => \reg_state_eios_det[0]_i_3__2_n_0\, + I4 => \^q\(7), + I5 => \^q\(6), + O => \reg_state_eios_det[0]_i_5__2_n_0\ + ); +\reg_state_eios_det[1]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000040" + ) + port map ( + I0 => \reg_state_eios_det[1]_i_2__2_n_0\, + I1 => state_eios_det(0), + I2 => \^q\(7), + I3 => \^q\(6), + I4 => \reg_state_eios_det[3]_i_2__2_n_0\, + O => \p_1_in__0\(1) + ); +\reg_state_eios_det[1]_i_2__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"BFFF" + ) + port map ( + I0 => \reg_state_eios_det[1]_i_3__2_n_0\, + I1 => \gt_rxcharisk_q_reg_n_0_[0]\, + I2 => \^q\(4), + I3 => \^q\(5), + O => \reg_state_eios_det[1]_i_2__2_n_0\ + ); +\reg_state_eios_det[1]_i_3__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"EFFF" + ) + port map ( + I0 => \^q\(1), + I1 => \^q\(0), + I2 => \^q\(3), + I3 => \^q\(2), + O => \reg_state_eios_det[1]_i_3__2_n_0\ + ); +\reg_state_eios_det[2]_i_1__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0040" + ) + port map ( + I0 => \^q\(14), + I1 => \^q\(15), + I2 => state_eios_det(0), + I3 => \reg_state_eios_det[2]_i_2__2_n_0\, + O => \p_1_in__0\(2) + ); +\reg_state_eios_det[2]_i_2__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"BFFF" + ) + port map ( + I0 => \reg_state_eios_det[2]_i_3__2_n_0\, + I1 => p_1_in, + I2 => \^q\(12), + I3 => \^q\(13), + O => \reg_state_eios_det[2]_i_2__2_n_0\ + ); +\reg_state_eios_det[2]_i_3__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"EFFF" + ) + port map ( + I0 => \^q\(9), + I1 => \^q\(8), + I2 => \^q\(11), + I3 => \^q\(10), + O => \reg_state_eios_det[2]_i_3__2_n_0\ + ); +\reg_state_eios_det[3]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"04" + ) + port map ( + I0 => \reg_state_eios_det[3]_i_2__2_n_0\, + I1 => state_eios_det(2), + I2 => \reg_state_eios_det[4]_i_3__2_n_0\, + O => \p_1_in__0\(3) + ); +\reg_state_eios_det[3]_i_2__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"FD" + ) + port map ( + I0 => \^q\(14), + I1 => \^q\(15), + I2 => \reg_state_eios_det[2]_i_2__2_n_0\, + O => \reg_state_eios_det[3]_i_2__2_n_0\ + ); +\reg_state_eios_det[4]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00010116" + ) + port map ( + I0 => state_eios_det(0), + I1 => state_eios_det(4), + I2 => state_eios_det(2), + I3 => state_eios_det(1), + I4 => state_eios_det(3), + O => \reg_state_eios_det[4]_i_1__2_n_0\ + ); +\reg_state_eios_det[4]_i_2__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"0E" + ) + port map ( + I0 => state_eios_det(3), + I1 => state_eios_det(1), + I2 => \reg_state_eios_det[4]_i_3__2_n_0\, + O => \p_1_in__0\(4) + ); +\reg_state_eios_det[4]_i_3__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"FD" + ) + port map ( + I0 => \^q\(6), + I1 => \^q\(7), + I2 => \reg_state_eios_det[1]_i_2__2_n_0\, + O => \reg_state_eios_det[4]_i_3__2_n_0\ + ); +\reg_state_eios_det_reg[0]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => \reg_state_eios_det[4]_i_1__2_n_0\, + D => \p_1_in__0\(0), + Q => state_eios_det(0), + S => SR(0) + ); +\reg_state_eios_det_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => \reg_state_eios_det[4]_i_1__2_n_0\, + D => \p_1_in__0\(1), + Q => state_eios_det(1), + R => SR(0) + ); +\reg_state_eios_det_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => \reg_state_eios_det[4]_i_1__2_n_0\, + D => \p_1_in__0\(2), + Q => state_eios_det(2), + R => SR(0) + ); +\reg_state_eios_det_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => \reg_state_eios_det[4]_i_1__2_n_0\, + D => \p_1_in__0\(3), + Q => state_eios_det(3), + R => SR(0) + ); +\reg_state_eios_det_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => \reg_state_eios_det[4]_i_1__2_n_0\, + D => \p_1_in__0\(4), + Q => state_eios_det(4), + R => SR(0) + ); +\reg_symbol_after_eios_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000000000010" + ) + port map ( + I0 => \reg_state_eios_det[3]_i_2__2_n_0\, + I1 => state_eios_det(0), + I2 => state_eios_det(2), + I3 => state_eios_det(3), + I4 => state_eios_det(1), + I5 => \reg_symbol_after_eios_i_2__2_n_0\, + O => reg_symbol_after_eios + ); +\reg_symbol_after_eios_i_2__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"E" + ) + port map ( + I0 => \reg_state_eios_det[4]_i_3__2_n_0\, + I1 => state_eios_det(4), + O => \reg_symbol_after_eios_i_2__2_n_0\ + ); +reg_symbol_after_eios_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => reg_symbol_after_eios, + Q => symbol_after_eios, + R => SR(0) + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd is + port ( + cpllpd_2 : out STD_LOGIC; + CPLLRESET0 : out STD_LOGIC; + gt_cpllpdrefclk : in STD_LOGIC; + rate_cpllreset_3 : in STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC + ); +end pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd is + signal \cpllpd_wait_reg[31]_srl32_n_1\ : STD_LOGIC; + signal \cpllpd_wait_reg[63]_srl32_n_1\ : STD_LOGIC; + signal \cpllpd_wait_reg[94]_srl31_n_0\ : STD_LOGIC; + signal \cpllreset_wait_reg[126]_srl31_n_0\ : STD_LOGIC; + signal \cpllreset_wait_reg[31]_srl32_n_1\ : STD_LOGIC; + signal \cpllreset_wait_reg[63]_srl32_n_1\ : STD_LOGIC; + signal \cpllreset_wait_reg[95]_srl32_n_1\ : STD_LOGIC; + signal cpllrst : STD_LOGIC; + signal \NLW_cpllpd_wait_reg[31]_srl32_Q_UNCONNECTED\ : STD_LOGIC; + signal \NLW_cpllpd_wait_reg[63]_srl32_Q_UNCONNECTED\ : STD_LOGIC; + signal \NLW_cpllpd_wait_reg[94]_srl31_Q31_UNCONNECTED\ : STD_LOGIC; + signal \NLW_cpllreset_wait_reg[126]_srl31_Q31_UNCONNECTED\ : STD_LOGIC; + signal \NLW_cpllreset_wait_reg[31]_srl32_Q_UNCONNECTED\ : STD_LOGIC; + signal \NLW_cpllreset_wait_reg[63]_srl32_Q_UNCONNECTED\ : STD_LOGIC; + signal \NLW_cpllreset_wait_reg[95]_srl32_Q_UNCONNECTED\ : STD_LOGIC; + attribute srl_bus_name : string; + attribute srl_bus_name of \cpllpd_wait_reg[31]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg "; + attribute srl_name : string; + attribute srl_name of \cpllpd_wait_reg[31]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg[31]_srl32 "; + attribute srl_bus_name of \cpllpd_wait_reg[63]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg "; + attribute srl_name of \cpllpd_wait_reg[63]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg[63]_srl32 "; + attribute srl_bus_name of \cpllpd_wait_reg[94]_srl31\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg "; + attribute srl_name of \cpllpd_wait_reg[94]_srl31\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg[94]_srl31 "; + attribute equivalent_register_removal : string; + attribute equivalent_register_removal of \cpllpd_wait_reg[95]\ : label is "no"; + attribute srl_bus_name of \cpllreset_wait_reg[126]_srl31\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg "; + attribute srl_name of \cpllreset_wait_reg[126]_srl31\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[126]_srl31 "; + attribute equivalent_register_removal of \cpllreset_wait_reg[127]\ : label is "no"; + attribute srl_bus_name of \cpllreset_wait_reg[31]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg "; + attribute srl_name of \cpllreset_wait_reg[31]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[31]_srl32 "; + attribute srl_bus_name of \cpllreset_wait_reg[63]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg "; + attribute srl_name of \cpllreset_wait_reg[63]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[63]_srl32 "; + attribute srl_bus_name of \cpllreset_wait_reg[95]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg "; + attribute srl_name of \cpllreset_wait_reg[95]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[95]_srl32 "; +begin +\cpllpd_wait_reg[31]_srl32\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"FFFFFFFF" + ) + port map ( + A(4 downto 0) => B"11111", + CE => '1', + CLK => gt_cpllpdrefclk, + D => '0', + Q => \NLW_cpllpd_wait_reg[31]_srl32_Q_UNCONNECTED\, + Q31 => \cpllpd_wait_reg[31]_srl32_n_1\ + ); +\cpllpd_wait_reg[63]_srl32\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"FFFFFFFF" + ) + port map ( + A(4 downto 0) => B"11111", + CE => '1', + CLK => gt_cpllpdrefclk, + D => \cpllpd_wait_reg[31]_srl32_n_1\, + Q => \NLW_cpllpd_wait_reg[63]_srl32_Q_UNCONNECTED\, + Q31 => \cpllpd_wait_reg[63]_srl32_n_1\ + ); +\cpllpd_wait_reg[94]_srl31\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"7FFFFFFF" + ) + port map ( + A(4 downto 0) => B"11110", + CE => '1', + CLK => gt_cpllpdrefclk, + D => \cpllpd_wait_reg[63]_srl32_n_1\, + Q => \cpllpd_wait_reg[94]_srl31_n_0\, + Q31 => \NLW_cpllpd_wait_reg[94]_srl31_Q31_UNCONNECTED\ + ); +\cpllpd_wait_reg[95]\: unisim.vcomponents.FDRE + generic map( + INIT => '1' + ) + port map ( + C => gt_cpllpdrefclk, + CE => '1', + D => \cpllpd_wait_reg[94]_srl31_n_0\, + Q => cpllpd_2, + R => '0' + ); +\cpllreset_wait_reg[126]_srl31\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"00000000" + ) + port map ( + A(4 downto 0) => B"11110", + CE => '1', + CLK => gt_cpllpdrefclk, + D => \cpllreset_wait_reg[95]_srl32_n_1\, + Q => \cpllreset_wait_reg[126]_srl31_n_0\, + Q31 => \NLW_cpllreset_wait_reg[126]_srl31_Q31_UNCONNECTED\ + ); +\cpllreset_wait_reg[127]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => gt_cpllpdrefclk, + CE => '1', + D => \cpllreset_wait_reg[126]_srl31_n_0\, + Q => cpllrst, + R => '0' + ); +\cpllreset_wait_reg[31]_srl32\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"000000FF" + ) + port map ( + A(4 downto 0) => B"11111", + CE => '1', + CLK => gt_cpllpdrefclk, + D => '0', + Q => \NLW_cpllreset_wait_reg[31]_srl32_Q_UNCONNECTED\, + Q31 => \cpllreset_wait_reg[31]_srl32_n_1\ + ); +\cpllreset_wait_reg[63]_srl32\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"00000000" + ) + port map ( + A(4 downto 0) => B"11111", + CE => '1', + CLK => gt_cpllpdrefclk, + D => \cpllreset_wait_reg[31]_srl32_n_1\, + Q => \NLW_cpllreset_wait_reg[63]_srl32_Q_UNCONNECTED\, + Q31 => \cpllreset_wait_reg[63]_srl32_n_1\ + ); +\cpllreset_wait_reg[95]_srl32\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"00000000" + ) + port map ( + A(4 downto 0) => B"11111", + CE => '1', + CLK => gt_cpllpdrefclk, + D => \cpllreset_wait_reg[63]_srl32_n_1\, + Q => \NLW_cpllreset_wait_reg[95]_srl32_Q_UNCONNECTED\, + Q31 => \cpllreset_wait_reg[95]_srl32_n_1\ + ); +\gtx_channel.gtxe2_channel_i_i_2__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"FE" + ) + port map ( + I0 => cpllrst, + I1 => rate_cpllreset_3, + I2 => RST_CPLLRESET, + O => CPLLRESET0 + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd_56 is + port ( + cpllpd_1 : out STD_LOGIC; + CPLLRESET0 : out STD_LOGIC; + gt_cpllpdrefclk : in STD_LOGIC; + rate_cpllreset_2 : in STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd_56 : entity is "pcie_7x_0_gtx_cpllpd_ovrd"; +end pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd_56; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd_56 is + signal \cpllpd_wait_reg[31]_srl32_n_1\ : STD_LOGIC; + signal \cpllpd_wait_reg[63]_srl32_n_1\ : STD_LOGIC; + signal \cpllpd_wait_reg[94]_srl31_n_0\ : STD_LOGIC; + signal \cpllreset_wait_reg[126]_srl31_n_0\ : STD_LOGIC; + signal \cpllreset_wait_reg[31]_srl32_n_1\ : STD_LOGIC; + signal \cpllreset_wait_reg[63]_srl32_n_1\ : STD_LOGIC; + signal \cpllreset_wait_reg[95]_srl32_n_1\ : STD_LOGIC; + signal cpllrst : STD_LOGIC; + signal \NLW_cpllpd_wait_reg[31]_srl32_Q_UNCONNECTED\ : STD_LOGIC; + signal \NLW_cpllpd_wait_reg[63]_srl32_Q_UNCONNECTED\ : STD_LOGIC; + signal \NLW_cpllpd_wait_reg[94]_srl31_Q31_UNCONNECTED\ : STD_LOGIC; + signal \NLW_cpllreset_wait_reg[126]_srl31_Q31_UNCONNECTED\ : STD_LOGIC; + signal \NLW_cpllreset_wait_reg[31]_srl32_Q_UNCONNECTED\ : STD_LOGIC; + signal \NLW_cpllreset_wait_reg[63]_srl32_Q_UNCONNECTED\ : STD_LOGIC; + signal \NLW_cpllreset_wait_reg[95]_srl32_Q_UNCONNECTED\ : STD_LOGIC; + attribute srl_bus_name : string; + attribute srl_bus_name of \cpllpd_wait_reg[31]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg "; + attribute srl_name : string; + attribute srl_name of \cpllpd_wait_reg[31]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg[31]_srl32 "; + attribute srl_bus_name of \cpllpd_wait_reg[63]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg "; + attribute srl_name of \cpllpd_wait_reg[63]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg[63]_srl32 "; + attribute srl_bus_name of \cpllpd_wait_reg[94]_srl31\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg "; + attribute srl_name of \cpllpd_wait_reg[94]_srl31\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg[94]_srl31 "; + attribute equivalent_register_removal : string; + attribute equivalent_register_removal of \cpllpd_wait_reg[95]\ : label is "no"; + attribute srl_bus_name of \cpllreset_wait_reg[126]_srl31\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg "; + attribute srl_name of \cpllreset_wait_reg[126]_srl31\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[126]_srl31 "; + attribute equivalent_register_removal of \cpllreset_wait_reg[127]\ : label is "no"; + attribute srl_bus_name of \cpllreset_wait_reg[31]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg "; + attribute srl_name of \cpllreset_wait_reg[31]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[31]_srl32 "; + attribute srl_bus_name of \cpllreset_wait_reg[63]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg "; + attribute srl_name of \cpllreset_wait_reg[63]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[63]_srl32 "; + attribute srl_bus_name of \cpllreset_wait_reg[95]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg "; + attribute srl_name of \cpllreset_wait_reg[95]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[95]_srl32 "; +begin +\cpllpd_wait_reg[31]_srl32\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"FFFFFFFF" + ) + port map ( + A(4 downto 0) => B"11111", + CE => '1', + CLK => gt_cpllpdrefclk, + D => '0', + Q => \NLW_cpllpd_wait_reg[31]_srl32_Q_UNCONNECTED\, + Q31 => \cpllpd_wait_reg[31]_srl32_n_1\ + ); +\cpllpd_wait_reg[63]_srl32\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"FFFFFFFF" + ) + port map ( + A(4 downto 0) => B"11111", + CE => '1', + CLK => gt_cpllpdrefclk, + D => \cpllpd_wait_reg[31]_srl32_n_1\, + Q => \NLW_cpllpd_wait_reg[63]_srl32_Q_UNCONNECTED\, + Q31 => \cpllpd_wait_reg[63]_srl32_n_1\ + ); +\cpllpd_wait_reg[94]_srl31\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"7FFFFFFF" + ) + port map ( + A(4 downto 0) => B"11110", + CE => '1', + CLK => gt_cpllpdrefclk, + D => \cpllpd_wait_reg[63]_srl32_n_1\, + Q => \cpllpd_wait_reg[94]_srl31_n_0\, + Q31 => \NLW_cpllpd_wait_reg[94]_srl31_Q31_UNCONNECTED\ + ); +\cpllpd_wait_reg[95]\: unisim.vcomponents.FDRE + generic map( + INIT => '1' + ) + port map ( + C => gt_cpllpdrefclk, + CE => '1', + D => \cpllpd_wait_reg[94]_srl31_n_0\, + Q => cpllpd_1, + R => '0' + ); +\cpllreset_wait_reg[126]_srl31\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"00000000" + ) + port map ( + A(4 downto 0) => B"11110", + CE => '1', + CLK => gt_cpllpdrefclk, + D => \cpllreset_wait_reg[95]_srl32_n_1\, + Q => \cpllreset_wait_reg[126]_srl31_n_0\, + Q31 => \NLW_cpllreset_wait_reg[126]_srl31_Q31_UNCONNECTED\ + ); +\cpllreset_wait_reg[127]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => gt_cpllpdrefclk, + CE => '1', + D => \cpllreset_wait_reg[126]_srl31_n_0\, + Q => cpllrst, + R => '0' + ); +\cpllreset_wait_reg[31]_srl32\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"000000FF" + ) + port map ( + A(4 downto 0) => B"11111", + CE => '1', + CLK => gt_cpllpdrefclk, + D => '0', + Q => \NLW_cpllreset_wait_reg[31]_srl32_Q_UNCONNECTED\, + Q31 => \cpllreset_wait_reg[31]_srl32_n_1\ + ); +\cpllreset_wait_reg[63]_srl32\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"00000000" + ) + port map ( + A(4 downto 0) => B"11111", + CE => '1', + CLK => gt_cpllpdrefclk, + D => \cpllreset_wait_reg[31]_srl32_n_1\, + Q => \NLW_cpllreset_wait_reg[63]_srl32_Q_UNCONNECTED\, + Q31 => \cpllreset_wait_reg[63]_srl32_n_1\ + ); +\cpllreset_wait_reg[95]_srl32\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"00000000" + ) + port map ( + A(4 downto 0) => B"11111", + CE => '1', + CLK => gt_cpllpdrefclk, + D => \cpllreset_wait_reg[63]_srl32_n_1\, + Q => \NLW_cpllreset_wait_reg[95]_srl32_Q_UNCONNECTED\, + Q31 => \cpllreset_wait_reg[95]_srl32_n_1\ + ); +\gtx_channel.gtxe2_channel_i_i_2__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"FE" + ) + port map ( + I0 => cpllrst, + I1 => rate_cpllreset_2, + I2 => RST_CPLLRESET, + O => CPLLRESET0 + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd_58 is + port ( + cpllpd_0 : out STD_LOGIC; + CPLLRESET0 : out STD_LOGIC; + gt_cpllpdrefclk : in STD_LOGIC; + rate_cpllreset_1 : in STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd_58 : entity is "pcie_7x_0_gtx_cpllpd_ovrd"; +end pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd_58; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd_58 is + signal \cpllpd_wait_reg[31]_srl32_n_1\ : STD_LOGIC; + signal \cpllpd_wait_reg[63]_srl32_n_1\ : STD_LOGIC; + signal \cpllpd_wait_reg[94]_srl31_n_0\ : STD_LOGIC; + signal \cpllreset_wait_reg[126]_srl31_n_0\ : STD_LOGIC; + signal \cpllreset_wait_reg[31]_srl32_n_1\ : STD_LOGIC; + signal \cpllreset_wait_reg[63]_srl32_n_1\ : STD_LOGIC; + signal \cpllreset_wait_reg[95]_srl32_n_1\ : STD_LOGIC; + signal cpllrst : STD_LOGIC; + signal \NLW_cpllpd_wait_reg[31]_srl32_Q_UNCONNECTED\ : STD_LOGIC; + signal \NLW_cpllpd_wait_reg[63]_srl32_Q_UNCONNECTED\ : STD_LOGIC; + signal \NLW_cpllpd_wait_reg[94]_srl31_Q31_UNCONNECTED\ : STD_LOGIC; + signal \NLW_cpllreset_wait_reg[126]_srl31_Q31_UNCONNECTED\ : STD_LOGIC; + signal \NLW_cpllreset_wait_reg[31]_srl32_Q_UNCONNECTED\ : STD_LOGIC; + signal \NLW_cpllreset_wait_reg[63]_srl32_Q_UNCONNECTED\ : STD_LOGIC; + signal \NLW_cpllreset_wait_reg[95]_srl32_Q_UNCONNECTED\ : STD_LOGIC; + attribute srl_bus_name : string; + attribute srl_bus_name of \cpllpd_wait_reg[31]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg "; + attribute srl_name : string; + attribute srl_name of \cpllpd_wait_reg[31]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg[31]_srl32 "; + attribute srl_bus_name of \cpllpd_wait_reg[63]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg "; + attribute srl_name of \cpllpd_wait_reg[63]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg[63]_srl32 "; + attribute srl_bus_name of \cpllpd_wait_reg[94]_srl31\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg "; + attribute srl_name of \cpllpd_wait_reg[94]_srl31\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg[94]_srl31 "; + attribute equivalent_register_removal : string; + attribute equivalent_register_removal of \cpllpd_wait_reg[95]\ : label is "no"; + attribute srl_bus_name of \cpllreset_wait_reg[126]_srl31\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg "; + attribute srl_name of \cpllreset_wait_reg[126]_srl31\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[126]_srl31 "; + attribute equivalent_register_removal of \cpllreset_wait_reg[127]\ : label is "no"; + attribute srl_bus_name of \cpllreset_wait_reg[31]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg "; + attribute srl_name of \cpllreset_wait_reg[31]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[31]_srl32 "; + attribute srl_bus_name of \cpllreset_wait_reg[63]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg "; + attribute srl_name of \cpllreset_wait_reg[63]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[63]_srl32 "; + attribute srl_bus_name of \cpllreset_wait_reg[95]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg "; + attribute srl_name of \cpllreset_wait_reg[95]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[95]_srl32 "; +begin +\cpllpd_wait_reg[31]_srl32\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"FFFFFFFF" + ) + port map ( + A(4 downto 0) => B"11111", + CE => '1', + CLK => gt_cpllpdrefclk, + D => '0', + Q => \NLW_cpllpd_wait_reg[31]_srl32_Q_UNCONNECTED\, + Q31 => \cpllpd_wait_reg[31]_srl32_n_1\ + ); +\cpllpd_wait_reg[63]_srl32\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"FFFFFFFF" + ) + port map ( + A(4 downto 0) => B"11111", + CE => '1', + CLK => gt_cpllpdrefclk, + D => \cpllpd_wait_reg[31]_srl32_n_1\, + Q => \NLW_cpllpd_wait_reg[63]_srl32_Q_UNCONNECTED\, + Q31 => \cpllpd_wait_reg[63]_srl32_n_1\ + ); +\cpllpd_wait_reg[94]_srl31\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"7FFFFFFF" + ) + port map ( + A(4 downto 0) => B"11110", + CE => '1', + CLK => gt_cpllpdrefclk, + D => \cpllpd_wait_reg[63]_srl32_n_1\, + Q => \cpllpd_wait_reg[94]_srl31_n_0\, + Q31 => \NLW_cpllpd_wait_reg[94]_srl31_Q31_UNCONNECTED\ + ); +\cpllpd_wait_reg[95]\: unisim.vcomponents.FDRE + generic map( + INIT => '1' + ) + port map ( + C => gt_cpllpdrefclk, + CE => '1', + D => \cpllpd_wait_reg[94]_srl31_n_0\, + Q => cpllpd_0, + R => '0' + ); +\cpllreset_wait_reg[126]_srl31\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"00000000" + ) + port map ( + A(4 downto 0) => B"11110", + CE => '1', + CLK => gt_cpllpdrefclk, + D => \cpllreset_wait_reg[95]_srl32_n_1\, + Q => \cpllreset_wait_reg[126]_srl31_n_0\, + Q31 => \NLW_cpllreset_wait_reg[126]_srl31_Q31_UNCONNECTED\ + ); +\cpllreset_wait_reg[127]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => gt_cpllpdrefclk, + CE => '1', + D => \cpllreset_wait_reg[126]_srl31_n_0\, + Q => cpllrst, + R => '0' + ); +\cpllreset_wait_reg[31]_srl32\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"000000FF" + ) + port map ( + A(4 downto 0) => B"11111", + CE => '1', + CLK => gt_cpllpdrefclk, + D => '0', + Q => \NLW_cpllreset_wait_reg[31]_srl32_Q_UNCONNECTED\, + Q31 => \cpllreset_wait_reg[31]_srl32_n_1\ + ); +\cpllreset_wait_reg[63]_srl32\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"00000000" + ) + port map ( + A(4 downto 0) => B"11111", + CE => '1', + CLK => gt_cpllpdrefclk, + D => \cpllreset_wait_reg[31]_srl32_n_1\, + Q => \NLW_cpllreset_wait_reg[63]_srl32_Q_UNCONNECTED\, + Q31 => \cpllreset_wait_reg[63]_srl32_n_1\ + ); +\cpllreset_wait_reg[95]_srl32\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"00000000" + ) + port map ( + A(4 downto 0) => B"11111", + CE => '1', + CLK => gt_cpllpdrefclk, + D => \cpllreset_wait_reg[63]_srl32_n_1\, + Q => \NLW_cpllreset_wait_reg[95]_srl32_Q_UNCONNECTED\, + Q31 => \cpllreset_wait_reg[95]_srl32_n_1\ + ); +\gtx_channel.gtxe2_channel_i_i_2__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"FE" + ) + port map ( + I0 => cpllrst, + I1 => rate_cpllreset_1, + I2 => RST_CPLLRESET, + O => CPLLRESET0 + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd_60 is + port ( + cpllpd : out STD_LOGIC; + CPLLRESET0 : out STD_LOGIC; + gt_cpllpdrefclk : in STD_LOGIC; + rate_cpllreset_0 : in STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd_60 : entity is "pcie_7x_0_gtx_cpllpd_ovrd"; +end pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd_60; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd_60 is + signal \cpllpd_wait_reg[31]_srl32_n_1\ : STD_LOGIC; + signal \cpllpd_wait_reg[63]_srl32_n_1\ : STD_LOGIC; + signal \cpllpd_wait_reg[94]_srl31_n_0\ : STD_LOGIC; + signal \cpllreset_wait_reg[126]_srl31_n_0\ : STD_LOGIC; + signal \cpllreset_wait_reg[31]_srl32_n_1\ : STD_LOGIC; + signal \cpllreset_wait_reg[63]_srl32_n_1\ : STD_LOGIC; + signal \cpllreset_wait_reg[95]_srl32_n_1\ : STD_LOGIC; + signal cpllrst : STD_LOGIC; + signal \NLW_cpllpd_wait_reg[31]_srl32_Q_UNCONNECTED\ : STD_LOGIC; + signal \NLW_cpllpd_wait_reg[63]_srl32_Q_UNCONNECTED\ : STD_LOGIC; + signal \NLW_cpllpd_wait_reg[94]_srl31_Q31_UNCONNECTED\ : STD_LOGIC; + signal \NLW_cpllreset_wait_reg[126]_srl31_Q31_UNCONNECTED\ : STD_LOGIC; + signal \NLW_cpllreset_wait_reg[31]_srl32_Q_UNCONNECTED\ : STD_LOGIC; + signal \NLW_cpllreset_wait_reg[63]_srl32_Q_UNCONNECTED\ : STD_LOGIC; + signal \NLW_cpllreset_wait_reg[95]_srl32_Q_UNCONNECTED\ : STD_LOGIC; + attribute srl_bus_name : string; + attribute srl_bus_name of \cpllpd_wait_reg[31]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg "; + attribute srl_name : string; + attribute srl_name of \cpllpd_wait_reg[31]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg[31]_srl32 "; + attribute srl_bus_name of \cpllpd_wait_reg[63]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg "; + attribute srl_name of \cpllpd_wait_reg[63]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg[63]_srl32 "; + attribute srl_bus_name of \cpllpd_wait_reg[94]_srl31\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg "; + attribute srl_name of \cpllpd_wait_reg[94]_srl31\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllpd_wait_reg[94]_srl31 "; + attribute equivalent_register_removal : string; + attribute equivalent_register_removal of \cpllpd_wait_reg[95]\ : label is "no"; + attribute srl_bus_name of \cpllreset_wait_reg[126]_srl31\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg "; + attribute srl_name of \cpllreset_wait_reg[126]_srl31\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[126]_srl31 "; + attribute equivalent_register_removal of \cpllreset_wait_reg[127]\ : label is "no"; + attribute srl_bus_name of \cpllreset_wait_reg[31]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg "; + attribute srl_name of \cpllreset_wait_reg[31]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[31]_srl32 "; + attribute srl_bus_name of \cpllreset_wait_reg[63]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg "; + attribute srl_name of \cpllreset_wait_reg[63]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[63]_srl32 "; + attribute srl_bus_name of \cpllreset_wait_reg[95]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg "; + attribute srl_name of \cpllreset_wait_reg[95]_srl32\ : label is "inst/\inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/cpllPDInst/cpllreset_wait_reg[95]_srl32 "; +begin +\cpllpd_wait_reg[31]_srl32\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"FFFFFFFF" + ) + port map ( + A(4 downto 0) => B"11111", + CE => '1', + CLK => gt_cpllpdrefclk, + D => '0', + Q => \NLW_cpllpd_wait_reg[31]_srl32_Q_UNCONNECTED\, + Q31 => \cpllpd_wait_reg[31]_srl32_n_1\ + ); +\cpllpd_wait_reg[63]_srl32\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"FFFFFFFF" + ) + port map ( + A(4 downto 0) => B"11111", + CE => '1', + CLK => gt_cpllpdrefclk, + D => \cpllpd_wait_reg[31]_srl32_n_1\, + Q => \NLW_cpllpd_wait_reg[63]_srl32_Q_UNCONNECTED\, + Q31 => \cpllpd_wait_reg[63]_srl32_n_1\ + ); +\cpllpd_wait_reg[94]_srl31\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"7FFFFFFF" + ) + port map ( + A(4 downto 0) => B"11110", + CE => '1', + CLK => gt_cpllpdrefclk, + D => \cpllpd_wait_reg[63]_srl32_n_1\, + Q => \cpllpd_wait_reg[94]_srl31_n_0\, + Q31 => \NLW_cpllpd_wait_reg[94]_srl31_Q31_UNCONNECTED\ + ); +\cpllpd_wait_reg[95]\: unisim.vcomponents.FDRE + generic map( + INIT => '1' + ) + port map ( + C => gt_cpllpdrefclk, + CE => '1', + D => \cpllpd_wait_reg[94]_srl31_n_0\, + Q => cpllpd, + R => '0' + ); +\cpllreset_wait_reg[126]_srl31\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"00000000" + ) + port map ( + A(4 downto 0) => B"11110", + CE => '1', + CLK => gt_cpllpdrefclk, + D => \cpllreset_wait_reg[95]_srl32_n_1\, + Q => \cpllreset_wait_reg[126]_srl31_n_0\, + Q31 => \NLW_cpllreset_wait_reg[126]_srl31_Q31_UNCONNECTED\ + ); +\cpllreset_wait_reg[127]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => gt_cpllpdrefclk, + CE => '1', + D => \cpllreset_wait_reg[126]_srl31_n_0\, + Q => cpllrst, + R => '0' + ); +\cpllreset_wait_reg[31]_srl32\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"000000FF" + ) + port map ( + A(4 downto 0) => B"11111", + CE => '1', + CLK => gt_cpllpdrefclk, + D => '0', + Q => \NLW_cpllreset_wait_reg[31]_srl32_Q_UNCONNECTED\, + Q31 => \cpllreset_wait_reg[31]_srl32_n_1\ + ); +\cpllreset_wait_reg[63]_srl32\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"00000000" + ) + port map ( + A(4 downto 0) => B"11111", + CE => '1', + CLK => gt_cpllpdrefclk, + D => \cpllreset_wait_reg[31]_srl32_n_1\, + Q => \NLW_cpllreset_wait_reg[63]_srl32_Q_UNCONNECTED\, + Q31 => \cpllreset_wait_reg[63]_srl32_n_1\ + ); +\cpllreset_wait_reg[95]_srl32\: unisim.vcomponents.SRLC32E + generic map( + INIT => X"00000000" + ) + port map ( + A(4 downto 0) => B"11111", + CE => '1', + CLK => gt_cpllpdrefclk, + D => \cpllreset_wait_reg[63]_srl32_n_1\, + Q => \NLW_cpllreset_wait_reg[95]_srl32_Q_UNCONNECTED\, + Q31 => \cpllreset_wait_reg[95]_srl32_n_1\ + ); +\gtx_channel.gtxe2_channel_i_i_2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"FE" + ) + port map ( + I0 => cpllrst, + I1 => rate_cpllreset_0, + I2 => RST_CPLLRESET, + O => CPLLRESET0 + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_pipe_lane is + port ( + pipe_rx1_valid : out STD_LOGIC; + pipe_rx1_chanisaligned : out STD_LOGIC; + pipe_rx1_phy_status : out STD_LOGIC; + pipe_rx1_elec_idle : out STD_LOGIC; + PIPE_RXPOLARITY : out STD_LOGIC_VECTOR ( 0 to 0 ); + PIPE_TXCOMPLIANCE : out STD_LOGIC_VECTOR ( 0 to 0 ); + PIPE_TXELECIDLE : out STD_LOGIC_VECTOR ( 0 to 0 ); + Q : out STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_data_q_reg[15]_0\ : out STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_rx_status_q_reg[2]_0\ : out STD_LOGIC_VECTOR ( 2 downto 0 ); + PIPE_TXDATAK : out STD_LOGIC_VECTOR ( 1 downto 0 ); + PIPE_TXDATA : out STD_LOGIC_VECTOR ( 15 downto 0 ); + PIPE_POWERDOWN : out STD_LOGIC_VECTOR ( 1 downto 0 ); + SR : in STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_rx1_valid_gt : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + PIPE_RXCHANISALIGNED : in STD_LOGIC_VECTOR ( 0 to 0 ); + \pipe_stages_1.pipe_rx_phy_status_q_reg_0\ : in STD_LOGIC; + \pipe_stages_1.pipe_rx_elec_idle_q_reg_0\ : in STD_LOGIC; + pipe_rx1_polarity : in STD_LOGIC; + pipe_tx1_compliance : in STD_LOGIC; + pipe_tx1_elec_idle : in STD_LOGIC; + D : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_data_q_reg[15]_1\ : in STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_rx_status_q_reg[2]_1\ : in STD_LOGIC_VECTOR ( 2 downto 0 ); + \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_tx_data_q_reg[15]_0\ : in STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0\ : in STD_LOGIC_VECTOR ( 1 downto 0 ) + ); +end pcie_7x_0_pcie_7x_0_pcie_pipe_lane; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_pipe_lane is +begin +\pipe_stages_1.pipe_rx_chanisaligned_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXCHANISALIGNED(0), + Q => pipe_rx1_chanisaligned, + R => SR(0) + ); +\pipe_stages_1.pipe_rx_char_is_k_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => D(0), + Q => Q(0), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => D(1), + Q => Q(1), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(0), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(0), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(10), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(10), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(11), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(11), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(12), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(12), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(13), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(13), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(14), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(14), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(15), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(15), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(1), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(1), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(2), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(2), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(3), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(3), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(4), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(4), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(5), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(5), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(6), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(6), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(7), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(7), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(8), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(8), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(9), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(9), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_elec_idle_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_elec_idle_q_reg_0\, + Q => pipe_rx1_elec_idle, + R => SR(0) + ); +\pipe_stages_1.pipe_rx_phy_status_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_phy_status_q_reg_0\, + Q => pipe_rx1_phy_status, + R => SR(0) + ); +\pipe_stages_1.pipe_rx_polarity_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_rx1_polarity, + Q => PIPE_RXPOLARITY(0), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_status_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_status_q_reg[2]_1\(0), + Q => \pipe_stages_1.pipe_rx_status_q_reg[2]_0\(0), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_status_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_status_q_reg[2]_1\(1), + Q => \pipe_stages_1.pipe_rx_status_q_reg[2]_0\(1), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_status_q_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_status_q_reg[2]_1\(2), + Q => \pipe_stages_1.pipe_rx_status_q_reg[2]_0\(2), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_valid_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_rx1_valid_gt, + Q => pipe_rx1_valid, + R => SR(0) + ); +\pipe_stages_1.pipe_tx_char_is_k_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0\(0), + Q => PIPE_TXDATAK(0), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0\(1), + Q => PIPE_TXDATAK(1), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_compliance_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_tx1_compliance, + Q => PIPE_TXCOMPLIANCE(0), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(0), + Q => PIPE_TXDATA(0), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(10), + Q => PIPE_TXDATA(10), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(11), + Q => PIPE_TXDATA(11), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(12), + Q => PIPE_TXDATA(12), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(13), + Q => PIPE_TXDATA(13), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(14), + Q => PIPE_TXDATA(14), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(15), + Q => PIPE_TXDATA(15), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(1), + Q => PIPE_TXDATA(1), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(2), + Q => PIPE_TXDATA(2), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(3), + Q => PIPE_TXDATA(3), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(4), + Q => PIPE_TXDATA(4), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(5), + Q => PIPE_TXDATA(5), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(6), + Q => PIPE_TXDATA(6), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(7), + Q => PIPE_TXDATA(7), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(8), + Q => PIPE_TXDATA(8), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(9), + Q => PIPE_TXDATA(9), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_elec_idle_q_reg\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_tx1_elec_idle, + Q => PIPE_TXELECIDLE(0), + S => SR(0) + ); +\pipe_stages_1.pipe_tx_powerdown_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0\(0), + Q => PIPE_POWERDOWN(0), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_powerdown_q_reg[1]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0\(1), + Q => PIPE_POWERDOWN(1), + S => SR(0) + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_pipe_lane_0 is + port ( + PIPE_RXPOLARITY : out STD_LOGIC_VECTOR ( 0 to 0 ); + PIPE_TXCOMPLIANCE : out STD_LOGIC_VECTOR ( 0 to 0 ); + PIPE_TXELECIDLE : out STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_rx2_valid : out STD_LOGIC; + pipe_rx2_chanisaligned : out STD_LOGIC; + pipe_rx2_phy_status : out STD_LOGIC; + pipe_rx2_elec_idle : out STD_LOGIC; + PIPE_TXDATAK : out STD_LOGIC_VECTOR ( 1 downto 0 ); + PIPE_TXDATA : out STD_LOGIC_VECTOR ( 15 downto 0 ); + PIPE_POWERDOWN : out STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0\ : out STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_data_q_reg[15]_0\ : out STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_rx_status_q_reg[2]_0\ : out STD_LOGIC_VECTOR ( 2 downto 0 ); + SR : in STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_rx2_polarity : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + pipe_tx2_compliance : in STD_LOGIC; + pipe_tx2_elec_idle : in STD_LOGIC; + pipe_rx2_valid_gt : in STD_LOGIC; + PIPE_RXCHANISALIGNED : in STD_LOGIC_VECTOR ( 0 to 0 ); + \pipe_stages_1.pipe_rx_phy_status_q_reg_0\ : in STD_LOGIC; + \pipe_stages_1.pipe_rx_elec_idle_q_reg_0\ : in STD_LOGIC; + \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_tx_data_q_reg[15]_0\ : in STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_data_q_reg[15]_1\ : in STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_rx_status_q_reg[2]_1\ : in STD_LOGIC_VECTOR ( 2 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pcie_pipe_lane_0 : entity is "pcie_7x_0_pcie_pipe_lane"; +end pcie_7x_0_pcie_7x_0_pcie_pipe_lane_0; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_pipe_lane_0 is +begin +\pipe_stages_1.pipe_rx_chanisaligned_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXCHANISALIGNED(0), + Q => pipe_rx2_chanisaligned, + R => SR(0) + ); +\pipe_stages_1.pipe_rx_char_is_k_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1\(0), + Q => \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0\(0), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1\(1), + Q => \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0\(1), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(0), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(0), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(10), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(10), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(11), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(11), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(12), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(12), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(13), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(13), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(14), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(14), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(15), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(15), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(1), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(1), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(2), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(2), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(3), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(3), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(4), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(4), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(5), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(5), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(6), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(6), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(7), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(7), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(8), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(8), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(9), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(9), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_elec_idle_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_elec_idle_q_reg_0\, + Q => pipe_rx2_elec_idle, + R => SR(0) + ); +\pipe_stages_1.pipe_rx_phy_status_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_phy_status_q_reg_0\, + Q => pipe_rx2_phy_status, + R => SR(0) + ); +\pipe_stages_1.pipe_rx_polarity_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_rx2_polarity, + Q => PIPE_RXPOLARITY(0), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_status_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_status_q_reg[2]_1\(0), + Q => \pipe_stages_1.pipe_rx_status_q_reg[2]_0\(0), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_status_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_status_q_reg[2]_1\(1), + Q => \pipe_stages_1.pipe_rx_status_q_reg[2]_0\(1), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_status_q_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_status_q_reg[2]_1\(2), + Q => \pipe_stages_1.pipe_rx_status_q_reg[2]_0\(2), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_valid_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_rx2_valid_gt, + Q => pipe_rx2_valid, + R => SR(0) + ); +\pipe_stages_1.pipe_tx_char_is_k_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0\(0), + Q => PIPE_TXDATAK(0), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0\(1), + Q => PIPE_TXDATAK(1), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_compliance_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_tx2_compliance, + Q => PIPE_TXCOMPLIANCE(0), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(0), + Q => PIPE_TXDATA(0), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(10), + Q => PIPE_TXDATA(10), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(11), + Q => PIPE_TXDATA(11), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(12), + Q => PIPE_TXDATA(12), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(13), + Q => PIPE_TXDATA(13), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(14), + Q => PIPE_TXDATA(14), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(15), + Q => PIPE_TXDATA(15), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(1), + Q => PIPE_TXDATA(1), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(2), + Q => PIPE_TXDATA(2), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(3), + Q => PIPE_TXDATA(3), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(4), + Q => PIPE_TXDATA(4), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(5), + Q => PIPE_TXDATA(5), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(6), + Q => PIPE_TXDATA(6), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(7), + Q => PIPE_TXDATA(7), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(8), + Q => PIPE_TXDATA(8), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(9), + Q => PIPE_TXDATA(9), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_elec_idle_q_reg\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_tx2_elec_idle, + Q => PIPE_TXELECIDLE(0), + S => SR(0) + ); +\pipe_stages_1.pipe_tx_powerdown_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0\(0), + Q => PIPE_POWERDOWN(0), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_powerdown_q_reg[1]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0\(1), + Q => PIPE_POWERDOWN(1), + S => SR(0) + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_pipe_lane_1 is + port ( + PIPE_RXPOLARITY : out STD_LOGIC_VECTOR ( 0 to 0 ); + PIPE_TXCOMPLIANCE : out STD_LOGIC_VECTOR ( 0 to 0 ); + PIPE_TXELECIDLE : out STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_rx3_valid : out STD_LOGIC; + pipe_rx3_chanisaligned : out STD_LOGIC; + pipe_rx3_phy_status : out STD_LOGIC; + pipe_rx3_elec_idle : out STD_LOGIC; + PIPE_TXDATAK : out STD_LOGIC_VECTOR ( 1 downto 0 ); + PIPE_TXDATA : out STD_LOGIC_VECTOR ( 15 downto 0 ); + PIPE_POWERDOWN : out STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0\ : out STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_data_q_reg[15]_0\ : out STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_rx_status_q_reg[2]_0\ : out STD_LOGIC_VECTOR ( 2 downto 0 ); + SR : in STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_rx3_polarity : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + pipe_tx3_compliance : in STD_LOGIC; + pipe_tx3_elec_idle : in STD_LOGIC; + pipe_rx3_valid_gt : in STD_LOGIC; + PIPE_RXCHANISALIGNED : in STD_LOGIC_VECTOR ( 0 to 0 ); + \pipe_stages_1.pipe_rx_phy_status_q_reg_0\ : in STD_LOGIC; + \pipe_stages_1.pipe_rx_elec_idle_q_reg_0\ : in STD_LOGIC; + \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_tx_data_q_reg[15]_0\ : in STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_data_q_reg[15]_1\ : in STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_rx_status_q_reg[2]_1\ : in STD_LOGIC_VECTOR ( 2 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pcie_pipe_lane_1 : entity is "pcie_7x_0_pcie_pipe_lane"; +end pcie_7x_0_pcie_7x_0_pcie_pipe_lane_1; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_pipe_lane_1 is +begin +\pipe_stages_1.pipe_rx_chanisaligned_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXCHANISALIGNED(0), + Q => pipe_rx3_chanisaligned, + R => SR(0) + ); +\pipe_stages_1.pipe_rx_char_is_k_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1\(0), + Q => \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0\(0), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1\(1), + Q => \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0\(1), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(0), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(0), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(10), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(10), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(11), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(11), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(12), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(12), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(13), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(13), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(14), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(14), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(15), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(15), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(1), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(1), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(2), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(2), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(3), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(3), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(4), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(4), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(5), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(5), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(6), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(6), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(7), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(7), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(8), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(8), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(9), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(9), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_elec_idle_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_elec_idle_q_reg_0\, + Q => pipe_rx3_elec_idle, + R => SR(0) + ); +\pipe_stages_1.pipe_rx_phy_status_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_phy_status_q_reg_0\, + Q => pipe_rx3_phy_status, + R => SR(0) + ); +\pipe_stages_1.pipe_rx_polarity_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_rx3_polarity, + Q => PIPE_RXPOLARITY(0), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_status_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_status_q_reg[2]_1\(0), + Q => \pipe_stages_1.pipe_rx_status_q_reg[2]_0\(0), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_status_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_status_q_reg[2]_1\(1), + Q => \pipe_stages_1.pipe_rx_status_q_reg[2]_0\(1), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_status_q_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_status_q_reg[2]_1\(2), + Q => \pipe_stages_1.pipe_rx_status_q_reg[2]_0\(2), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_valid_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_rx3_valid_gt, + Q => pipe_rx3_valid, + R => SR(0) + ); +\pipe_stages_1.pipe_tx_char_is_k_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0\(0), + Q => PIPE_TXDATAK(0), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0\(1), + Q => PIPE_TXDATAK(1), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_compliance_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_tx3_compliance, + Q => PIPE_TXCOMPLIANCE(0), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(0), + Q => PIPE_TXDATA(0), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(10), + Q => PIPE_TXDATA(10), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(11), + Q => PIPE_TXDATA(11), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(12), + Q => PIPE_TXDATA(12), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(13), + Q => PIPE_TXDATA(13), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(14), + Q => PIPE_TXDATA(14), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(15), + Q => PIPE_TXDATA(15), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(1), + Q => PIPE_TXDATA(1), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(2), + Q => PIPE_TXDATA(2), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(3), + Q => PIPE_TXDATA(3), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(4), + Q => PIPE_TXDATA(4), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(5), + Q => PIPE_TXDATA(5), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(6), + Q => PIPE_TXDATA(6), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(7), + Q => PIPE_TXDATA(7), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(8), + Q => PIPE_TXDATA(8), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(9), + Q => PIPE_TXDATA(9), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_elec_idle_q_reg\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_tx3_elec_idle, + Q => PIPE_TXELECIDLE(0), + S => SR(0) + ); +\pipe_stages_1.pipe_tx_powerdown_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0\(0), + Q => PIPE_POWERDOWN(0), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_powerdown_q_reg[1]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0\(1), + Q => PIPE_POWERDOWN(1), + S => SR(0) + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_pipe_lane_2 is + port ( + PIPE_RXPOLARITY : out STD_LOGIC_VECTOR ( 0 to 0 ); + PIPE_TXCOMPLIANCE : out STD_LOGIC_VECTOR ( 0 to 0 ); + PIPE_TXELECIDLE : out STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_rx0_valid : out STD_LOGIC; + pipe_rx0_chanisaligned : out STD_LOGIC; + pipe_rx0_phy_status : out STD_LOGIC; + pipe_rx0_elec_idle : out STD_LOGIC; + PIPE_TXDATAK : out STD_LOGIC_VECTOR ( 1 downto 0 ); + PIPE_TXDATA : out STD_LOGIC_VECTOR ( 15 downto 0 ); + PIPE_POWERDOWN : out STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0\ : out STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_data_q_reg[15]_0\ : out STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_rx_status_q_reg[2]_0\ : out STD_LOGIC_VECTOR ( 2 downto 0 ); + SR : in STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_rx0_polarity : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + pipe_tx0_compliance : in STD_LOGIC; + pipe_tx0_elec_idle : in STD_LOGIC; + pipe_rx0_valid_gt : in STD_LOGIC; + PIPE_RXCHANISALIGNED : in STD_LOGIC_VECTOR ( 0 to 0 ); + gt_rx_phy_status_q : in STD_LOGIC; + gt_rxelecidle_q : in STD_LOGIC; + \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_tx_data_q_reg[15]_0\ : in STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_data_q_reg[15]_1\ : in STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_rx_status_q_reg[2]_1\ : in STD_LOGIC_VECTOR ( 2 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pcie_pipe_lane_2 : entity is "pcie_7x_0_pcie_pipe_lane"; +end pcie_7x_0_pcie_7x_0_pcie_pipe_lane_2; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_pipe_lane_2 is +begin +\pipe_stages_1.pipe_rx_chanisaligned_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_RXCHANISALIGNED(0), + Q => pipe_rx0_chanisaligned, + R => SR(0) + ); +\pipe_stages_1.pipe_rx_char_is_k_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1\(0), + Q => \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0\(0), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_char_is_k_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1\(1), + Q => \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0\(1), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(0), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(0), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(10), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(10), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(11), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(11), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(12), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(12), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(13), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(13), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(14), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(14), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(15), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(15), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(1), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(1), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(2), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(2), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(3), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(3), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(4), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(4), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(5), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(5), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(6), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(6), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(7), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(7), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(8), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(8), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_data_q_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(9), + Q => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(9), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_elec_idle_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => gt_rxelecidle_q, + Q => pipe_rx0_elec_idle, + R => SR(0) + ); +\pipe_stages_1.pipe_rx_phy_status_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => gt_rx_phy_status_q, + Q => pipe_rx0_phy_status, + R => SR(0) + ); +\pipe_stages_1.pipe_rx_polarity_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_rx0_polarity, + Q => PIPE_RXPOLARITY(0), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_status_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_status_q_reg[2]_1\(0), + Q => \pipe_stages_1.pipe_rx_status_q_reg[2]_0\(0), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_status_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_status_q_reg[2]_1\(1), + Q => \pipe_stages_1.pipe_rx_status_q_reg[2]_0\(1), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_status_q_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_rx_status_q_reg[2]_1\(2), + Q => \pipe_stages_1.pipe_rx_status_q_reg[2]_0\(2), + R => SR(0) + ); +\pipe_stages_1.pipe_rx_valid_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_rx0_valid_gt, + Q => pipe_rx0_valid, + R => SR(0) + ); +\pipe_stages_1.pipe_tx_char_is_k_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0\(0), + Q => PIPE_TXDATAK(0), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_char_is_k_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0\(1), + Q => PIPE_TXDATAK(1), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_compliance_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_tx0_compliance, + Q => PIPE_TXCOMPLIANCE(0), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(0), + Q => PIPE_TXDATA(0), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(10), + Q => PIPE_TXDATA(10), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(11), + Q => PIPE_TXDATA(11), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(12), + Q => PIPE_TXDATA(12), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(13), + Q => PIPE_TXDATA(13), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(14), + Q => PIPE_TXDATA(14), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(15), + Q => PIPE_TXDATA(15), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(1), + Q => PIPE_TXDATA(1), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(2), + Q => PIPE_TXDATA(2), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(3), + Q => PIPE_TXDATA(3), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(4), + Q => PIPE_TXDATA(4), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(5), + Q => PIPE_TXDATA(5), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(6), + Q => PIPE_TXDATA(6), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(7), + Q => PIPE_TXDATA(7), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(8), + Q => PIPE_TXDATA(8), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_data_q_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(9), + Q => PIPE_TXDATA(9), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_elec_idle_q_reg\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_tx0_elec_idle, + Q => PIPE_TXELECIDLE(0), + S => SR(0) + ); +\pipe_stages_1.pipe_tx_powerdown_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0\(0), + Q => PIPE_POWERDOWN(0), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_powerdown_q_reg[1]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0\(1), + Q => PIPE_POWERDOWN(1), + S => SR(0) + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_pipe_misc is + port ( + pipe_tx_rcvr_det_gt : out STD_LOGIC; + \pipe_stages_1.pipe_tx_rate_q_reg_0\ : out STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_tx_deemph_gt : out STD_LOGIC; + \pipe_stages_1.pipe_tx_margin_q_reg[2]_0\ : out STD_LOGIC_VECTOR ( 2 downto 0 ); + SR : in STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_tx_rcvr_det : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + pipe_tx_rate : in STD_LOGIC; + pipe_tx_deemph : in STD_LOGIC; + \pipe_stages_1.pipe_tx_margin_q_reg[2]_1\ : in STD_LOGIC_VECTOR ( 2 downto 0 ) + ); +end pcie_7x_0_pcie_7x_0_pcie_pipe_misc; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_pipe_misc is +begin +\pipe_stages_1.pipe_tx_deemph_q_reg\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_tx_deemph, + Q => pipe_tx_deemph_gt, + S => SR(0) + ); +\pipe_stages_1.pipe_tx_margin_q_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_margin_q_reg[2]_1\(0), + Q => \pipe_stages_1.pipe_tx_margin_q_reg[2]_0\(0), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_margin_q_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_margin_q_reg[2]_1\(1), + Q => \pipe_stages_1.pipe_tx_margin_q_reg[2]_0\(1), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_margin_q_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pipe_stages_1.pipe_tx_margin_q_reg[2]_1\(2), + Q => \pipe_stages_1.pipe_tx_margin_q_reg[2]_0\(2), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_rate_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_tx_rate, + Q => \pipe_stages_1.pipe_tx_rate_q_reg_0\(0), + R => SR(0) + ); +\pipe_stages_1.pipe_tx_rcvr_det_q_reg\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_tx_rcvr_det, + Q => pipe_tx_rcvr_det_gt, + R => SR(0) + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pipe_drp is + port ( + \fsm_reg[1]_0\ : out STD_LOGIC; + \fsm_reg[1]_1\ : out STD_LOGIC; + DRPDI : out STD_LOGIC_VECTOR ( 15 downto 0 ); + DRPADDR : out STD_LOGIC_VECTOR ( 7 downto 0 ); + DRP_DONE : out STD_LOGIC; + RST_DCLK_RESET : in STD_LOGIC; + RATE_DRP_X16X20_MODE : in STD_LOGIC; + pipe_dclk_in : in STD_LOGIC; + RATE_DRP_START : in STD_LOGIC; + DRP_RDY : in STD_LOGIC; + \rate_reg1_reg[0]_0\ : in STD_LOGIC_VECTOR ( 0 to 0 ); + RATE_DRP_X16 : in STD_LOGIC; + D : in STD_LOGIC_VECTOR ( 15 downto 0 ); + DRP_GTXRESET : in STD_LOGIC + ); +end pcie_7x_0_pcie_7x_0_pipe_drp; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pipe_drp is + signal addr_reg : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal \addr_reg[4]_i_1_n_0\ : STD_LOGIC; + signal \addr_reg[6]_i_1_n_0\ : STD_LOGIC; + signal data_pma_rsv_a : STD_LOGIC_VECTOR ( 15 to 15 ); + signal di_reg : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal \di_reg[0]_i_2_n_0\ : STD_LOGIC; + signal \di_reg[0]_i_3_n_0\ : STD_LOGIC; + signal \di_reg[11]_i_2_n_0\ : STD_LOGIC; + signal \di_reg[11]_i_3_n_0\ : STD_LOGIC; + signal \di_reg[11]_i_4_n_0\ : STD_LOGIC; + signal \di_reg[11]_i_5_n_0\ : STD_LOGIC; + signal \di_reg[12]_i_2_n_0\ : STD_LOGIC; + signal \di_reg[12]_i_3_n_0\ : STD_LOGIC; + signal \di_reg[13]_i_2_n_0\ : STD_LOGIC; + signal \di_reg[13]_i_3_n_0\ : STD_LOGIC; + signal \di_reg[14]_i_2_n_0\ : STD_LOGIC; + signal \di_reg[15]_i_2_n_0\ : STD_LOGIC; + signal \di_reg[1]_i_2_n_0\ : STD_LOGIC; + signal \di_reg[1]_i_3_n_0\ : STD_LOGIC; + signal \di_reg[2]_i_2_n_0\ : STD_LOGIC; + signal \di_reg[2]_i_3_n_0\ : STD_LOGIC; + signal \di_reg[3]_i_2_n_0\ : STD_LOGIC; + signal \di_reg[3]_i_3_n_0\ : STD_LOGIC; + signal \di_reg[4]_i_2_n_0\ : STD_LOGIC; + signal \di_reg[4]_i_3_n_0\ : STD_LOGIC; + signal \di_reg[4]_i_4_n_0\ : STD_LOGIC; + signal \di_reg[5]_i_2_n_0\ : STD_LOGIC; + signal \di_reg[5]_i_3_n_0\ : STD_LOGIC; + signal \di_reg[6]_i_2_n_0\ : STD_LOGIC; + signal \di_reg[6]_i_3_n_0\ : STD_LOGIC; + signal \di_reg[7]_i_2_n_0\ : STD_LOGIC; + signal \di_reg[7]_i_3_n_0\ : STD_LOGIC; + signal do_reg1 : STD_LOGIC_VECTOR ( 15 downto 0 ); + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of do_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of do_reg1 : signal is "true"; + signal do_reg2 : STD_LOGIC_VECTOR ( 15 downto 0 ); + attribute SHIFT_EXTRACT of do_reg2 : signal is "NO"; + attribute async_reg of do_reg2 : signal is "true"; + signal \done_i_1__0_n_0\ : STD_LOGIC; + signal drp_addr_0 : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal drp_di_0 : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal fsm : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal fsm1 : STD_LOGIC; + signal \fsm[0]_i_2__0_n_0\ : STD_LOGIC; + signal \fsm_reg_n_0_[0]\ : STD_LOGIC; + signal \fsm_reg_n_0_[1]\ : STD_LOGIC; + signal \fsm_reg_n_0_[2]\ : STD_LOGIC; + signal gtxreset_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of gtxreset_reg1 : signal is "NO"; + attribute async_reg of gtxreset_reg1 : signal is "true"; + signal gtxreset_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of gtxreset_reg2 : signal is "NO"; + attribute async_reg of gtxreset_reg2 : signal is "true"; + signal index : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal \index[0]_i_1_n_0\ : STD_LOGIC; + signal \index[1]_i_1_n_0\ : STD_LOGIC; + signal \index[2]_i_1_n_0\ : STD_LOGIC; + signal \index[3]_i_1_n_0\ : STD_LOGIC; + signal \index[3]_i_2_n_0\ : STD_LOGIC; + signal \index[4]_i_1_n_0\ : STD_LOGIC; + signal \index[4]_i_2_n_0\ : STD_LOGIC; + signal \index[4]_i_3_n_0\ : STD_LOGIC; + signal load_cnt : STD_LOGIC_VECTOR ( 0 to 0 ); + signal \load_cnt[0]_i_1_n_0\ : STD_LOGIC; + signal rate_reg1 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rate_reg1 : signal is "NO"; + attribute async_reg of rate_reg1 : signal is "true"; + signal rate_reg2 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rate_reg2 : signal is "NO"; + attribute async_reg of rate_reg2 : signal is "true"; + signal rdy_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rdy_reg1 : signal is "NO"; + attribute async_reg of rdy_reg1 : signal is "true"; + signal rdy_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rdy_reg2 : signal is "NO"; + attribute async_reg of rdy_reg2 : signal is "true"; + signal start_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of start_reg1 : signal is "NO"; + attribute async_reg of start_reg1 : signal is "true"; + signal start_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of start_reg2 : signal is "NO"; + attribute async_reg of start_reg2 : signal is "true"; + signal x16_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of x16_reg1 : signal is "NO"; + attribute async_reg of x16_reg1 : signal is "true"; + signal x16_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of x16_reg2 : signal is "NO"; + attribute async_reg of x16_reg2 : signal is "true"; + signal x16x20_mode_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of x16x20_mode_reg1 : signal is "NO"; + attribute async_reg of x16x20_mode_reg1 : signal is "true"; + signal x16x20_mode_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of x16x20_mode_reg2 : signal is "NO"; + attribute async_reg of x16x20_mode_reg2 : signal is "true"; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \addr_reg[1]_i_1\ : label is "soft_lutpair30"; + attribute SOFT_HLUTNM of \addr_reg[2]_i_1\ : label is "soft_lutpair30"; + attribute SOFT_HLUTNM of \addr_reg[5]_i_1\ : label is "soft_lutpair29"; + attribute SOFT_HLUTNM of \addr_reg[6]_i_1\ : label is "soft_lutpair29"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of \do_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of \do_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[10]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[11]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[12]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[13]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[14]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[15]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[6]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[7]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[8]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[9]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[9]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[10]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[11]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[12]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[13]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[14]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[15]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[6]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[7]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[8]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[9]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[9]\ : label is "NO"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_10\ : label is "soft_lutpair37"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_11\ : label is "soft_lutpair37"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_12\ : label is "soft_lutpair36"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_13\ : label is "soft_lutpair36"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_14\ : label is "soft_lutpair35"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_15\ : label is "soft_lutpair35"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_16\ : label is "soft_lutpair34"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_17\ : label is "soft_lutpair34"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_18\ : label is "soft_lutpair33"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_19\ : label is "soft_lutpair33"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_20\ : label is "soft_lutpair32"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_21\ : label is "soft_lutpair31"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_3\ : label is "soft_lutpair31"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_39__0\ : label is "soft_lutpair43"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_4\ : label is "soft_lutpair32"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_40\ : label is "soft_lutpair43"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_41\ : label is "soft_lutpair42"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_42\ : label is "soft_lutpair42"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_43\ : label is "soft_lutpair41"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_44\ : label is "soft_lutpair41"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_45\ : label is "soft_lutpair40"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_46\ : label is "soft_lutpair40"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_6\ : label is "soft_lutpair39"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_7\ : label is "soft_lutpair39"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_8\ : label is "soft_lutpair38"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_9\ : label is "soft_lutpair38"; + attribute ASYNC_REG_boolean of gtxreset_reg1_reg : label is std.standard.true; + attribute KEEP of gtxreset_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of gtxreset_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of gtxreset_reg2_reg : label is std.standard.true; + attribute KEEP of gtxreset_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of gtxreset_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \index[0]_i_1\ : label is "soft_lutpair28"; + attribute SOFT_HLUTNM of \index[1]_i_1\ : label is "soft_lutpair28"; + attribute SOFT_HLUTNM of \index[3]_i_2\ : label is "soft_lutpair44"; + attribute SOFT_HLUTNM of \index[4]_i_3\ : label is "soft_lutpair44"; + attribute ASYNC_REG_boolean of \rate_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rate_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rate_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rate_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rate_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of rdy_reg1_reg : label is std.standard.true; + attribute KEEP of rdy_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rdy_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rdy_reg2_reg : label is std.standard.true; + attribute KEEP of rdy_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rdy_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of start_reg1_reg : label is std.standard.true; + attribute KEEP of start_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of start_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of start_reg2_reg : label is std.standard.true; + attribute KEEP of start_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of start_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of x16_reg1_reg : label is std.standard.true; + attribute KEEP of x16_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of x16_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of x16_reg2_reg : label is std.standard.true; + attribute KEEP of x16_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of x16_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of x16x20_mode_reg1_reg : label is std.standard.true; + attribute KEEP of x16x20_mode_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of x16x20_mode_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of x16x20_mode_reg2_reg : label is std.standard.true; + attribute KEEP of x16x20_mode_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of x16x20_mode_reg2_reg : label is "NO"; +begin +\addr_reg[0]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"1736415517364154" + ) + port map ( + I0 => index(4), + I1 => index(3), + I2 => index(2), + I3 => index(1), + I4 => index(0), + I5 => x16x20_mode_reg2, + O => addr_reg(0) + ); +\addr_reg[1]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"40500F00" + ) + port map ( + I0 => index(4), + I1 => index(0), + I2 => index(3), + I3 => index(1), + I4 => index(2), + O => addr_reg(1) + ); +\addr_reg[2]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"05105A00" + ) + port map ( + I0 => index(4), + I1 => index(0), + I2 => index(3), + I3 => index(2), + I4 => index(1), + O => addr_reg(2) + ); +\addr_reg[3]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"5767576753265327" + ) + port map ( + I0 => index(4), + I1 => index(3), + I2 => index(2), + I3 => index(1), + I4 => x16x20_mode_reg2, + I5 => index(0), + O => addr_reg(3) + ); +\addr_reg[4]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"00000000FAAFFF04" + ) + port map ( + I0 => index(0), + I1 => x16x20_mode_reg2, + I2 => index(1), + I3 => index(2), + I4 => index(3), + I5 => index(4), + O => \addr_reg[4]_i_1_n_0\ + ); +\addr_reg[5]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"001A0F0A" + ) + port map ( + I0 => index(4), + I1 => index(0), + I2 => index(3), + I3 => index(1), + I4 => index(2), + O => addr_reg(5) + ); +\addr_reg[6]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00001454" + ) + port map ( + I0 => index(2), + I1 => index(1), + I2 => index(3), + I3 => index(0), + I4 => index(4), + O => \addr_reg[6]_i_1_n_0\ + ); +\addr_reg[7]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"5252424223236263" + ) + port map ( + I0 => index(4), + I1 => index(3), + I2 => index(2), + I3 => x16x20_mode_reg2, + I4 => index(0), + I5 => index(1), + O => addr_reg(7) + ); +\addr_reg_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => addr_reg(0), + Q => drp_addr_0(0), + R => RST_DCLK_RESET + ); +\addr_reg_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => addr_reg(1), + Q => drp_addr_0(1), + R => RST_DCLK_RESET + ); +\addr_reg_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => addr_reg(2), + Q => drp_addr_0(2), + R => RST_DCLK_RESET + ); +\addr_reg_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => addr_reg(3), + Q => drp_addr_0(3), + R => RST_DCLK_RESET + ); +\addr_reg_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \addr_reg[4]_i_1_n_0\, + Q => drp_addr_0(4), + R => RST_DCLK_RESET + ); +\addr_reg_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => addr_reg(5), + Q => drp_addr_0(5), + R => RST_DCLK_RESET + ); +\addr_reg_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \addr_reg[6]_i_1_n_0\, + Q => drp_addr_0(6), + R => RST_DCLK_RESET + ); +\addr_reg_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => addr_reg(7), + Q => drp_addr_0(7), + R => RST_DCLK_RESET + ); +\di_reg[0]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FF5E7F6FA1001000" + ) + port map ( + I0 => index(3), + I1 => index(2), + I2 => index(1), + I3 => data_pma_rsv_a(15), + I4 => index(0), + I5 => do_reg2(0), + O => \di_reg[0]_i_2_n_0\ + ); +\di_reg[0]_i_3\: unisim.vcomponents.LUT5 + generic map( + INIT => X"000005D0" + ) + port map ( + I0 => index(0), + I1 => do_reg2(0), + I2 => index(2), + I3 => index(1), + I4 => index(3), + O => \di_reg[0]_i_3_n_0\ + ); +\di_reg[10]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"45555F5540000000" + ) + port map ( + I0 => index(4), + I1 => \di_reg[15]_i_2_n_0\, + I2 => index(1), + I3 => index(2), + I4 => index(3), + I5 => do_reg2(10), + O => di_reg(10) + ); +\di_reg[11]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"4F40DDDD4F408888" + ) + port map ( + I0 => index(3), + I1 => do_reg2(11), + I2 => index(1), + I3 => \di_reg[11]_i_4_n_0\, + I4 => index(2), + I5 => \di_reg[11]_i_5_n_0\, + O => \di_reg[11]_i_2_n_0\ + ); +\di_reg[11]_i_3\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000008080838" + ) + port map ( + I0 => do_reg2(11), + I1 => index(2), + I2 => index(1), + I3 => data_pma_rsv_a(15), + I4 => index(0), + I5 => index(3), + O => \di_reg[11]_i_3_n_0\ + ); +\di_reg[11]_i_4\: unisim.vcomponents.LUT4 + generic map( + INIT => X"B8BB" + ) + port map ( + I0 => do_reg2(11), + I1 => index(0), + I2 => rate_reg2(0), + I3 => rate_reg2(1), + O => \di_reg[11]_i_4_n_0\ + ); +\di_reg[11]_i_5\: unisim.vcomponents.LUT5 + generic map( + INIT => X"EFFF0100" + ) + port map ( + I0 => index(1), + I1 => index(0), + I2 => x16_reg2, + I3 => x16x20_mode_reg2, + I4 => do_reg2(11), + O => \di_reg[11]_i_5_n_0\ + ); +\di_reg[12]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"777EFFFF01080000" + ) + port map ( + I0 => index(3), + I1 => index(1), + I2 => index(0), + I3 => data_pma_rsv_a(15), + I4 => index(2), + I5 => do_reg2(12), + O => \di_reg[12]_i_2_n_0\ + ); +\di_reg[12]_i_3\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000B08" + ) + port map ( + I0 => do_reg2(12), + I1 => index(2), + I2 => index(1), + I3 => index(0), + I4 => index(3), + O => \di_reg[12]_i_3_n_0\ + ); +\di_reg[13]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"767FFFFF00090000" + ) + port map ( + I0 => index(3), + I1 => index(1), + I2 => index(0), + I3 => data_pma_rsv_a(15), + I4 => index(2), + I5 => do_reg2(13), + O => \di_reg[13]_i_2_n_0\ + ); +\di_reg[13]_i_3\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000008380808" + ) + port map ( + I0 => do_reg2(13), + I1 => index(2), + I2 => index(1), + I3 => index(0), + I4 => data_pma_rsv_a(15), + I5 => index(3), + O => \di_reg[13]_i_3_n_0\ + ); +\di_reg[14]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0040FFFF00400000" + ) + port map ( + I0 => index(1), + I1 => index(2), + I2 => do_reg2(14), + I3 => index(3), + I4 => index(4), + I5 => \di_reg[14]_i_2_n_0\, + O => di_reg(14) + ); +\di_reg[14]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"653BFFF721080080" + ) + port map ( + I0 => index(3), + I1 => index(1), + I2 => data_pma_rsv_a(15), + I3 => index(0), + I4 => index(2), + I5 => do_reg2(14), + O => \di_reg[14]_i_2_n_0\ + ); +\di_reg[14]_i_3__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"B" + ) + port map ( + I0 => rate_reg2(0), + I1 => rate_reg2(1), + O => data_pma_rsv_a(15) + ); +\di_reg[15]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"45555F5540000000" + ) + port map ( + I0 => index(4), + I1 => \di_reg[15]_i_2_n_0\, + I2 => index(1), + I3 => index(2), + I4 => index(3), + I5 => do_reg2(15), + O => di_reg(15) + ); +\di_reg[15]_i_2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"0D" + ) + port map ( + I0 => rate_reg2(1), + I1 => rate_reg2(0), + I2 => index(0), + O => \di_reg[15]_i_2_n_0\ + ); +\di_reg[1]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"5FEE4E0076FF1000" + ) + port map ( + I0 => index(3), + I1 => index(2), + I2 => data_pma_rsv_a(15), + I3 => index(1), + I4 => do_reg2(1), + I5 => index(0), + O => \di_reg[1]_i_2_n_0\ + ); +\di_reg[1]_i_3\: unisim.vcomponents.LUT5 + generic map( + INIT => X"000005D0" + ) + port map ( + I0 => index(0), + I1 => do_reg2(1), + I2 => index(2), + I3 => index(1), + I4 => index(3), + O => \di_reg[1]_i_3_n_0\ + ); +\di_reg[2]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"5DEE080067FF0100" + ) + port map ( + I0 => index(3), + I1 => index(2), + I2 => data_pma_rsv_a(15), + I3 => index(1), + I4 => do_reg2(2), + I5 => index(0), + O => \di_reg[2]_i_2_n_0\ + ); +\di_reg[2]_i_3\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000380" + ) + port map ( + I0 => do_reg2(2), + I1 => index(0), + I2 => index(2), + I3 => index(1), + I4 => index(3), + O => \di_reg[2]_i_3_n_0\ + ); +\di_reg[3]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"43FFFFFF40000000" + ) + port map ( + I0 => data_pma_rsv_a(15), + I1 => index(2), + I2 => index(0), + I3 => index(1), + I4 => index(3), + I5 => do_reg2(3), + O => \di_reg[3]_i_2_n_0\ + ); +\di_reg[3]_i_3\: unisim.vcomponents.LUT6 + generic map( + INIT => X"000000000033D100" + ) + port map ( + I0 => data_pma_rsv_a(15), + I1 => index(0), + I2 => do_reg2(3), + I3 => index(2), + I4 => index(1), + I5 => index(3), + O => \di_reg[3]_i_3_n_0\ + ); +\di_reg[4]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"30BB3088" + ) + port map ( + I0 => \di_reg[4]_i_2_n_0\, + I1 => index(4), + I2 => \di_reg[4]_i_3_n_0\, + I3 => index(3), + I4 => \di_reg[4]_i_4_n_0\, + O => di_reg(4) + ); +\di_reg[4]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0F0400F0000400F0" + ) + port map ( + I0 => rate_reg2(0), + I1 => rate_reg2(1), + I2 => index(1), + I3 => index(2), + I4 => index(0), + I5 => do_reg2(4), + O => \di_reg[4]_i_2_n_0\ + ); +\di_reg[4]_i_3\: unisim.vcomponents.LUT6 + generic map( + INIT => X"400FFFFF40000000" + ) + port map ( + I0 => rate_reg2(0), + I1 => rate_reg2(1), + I2 => index(2), + I3 => index(0), + I4 => index(1), + I5 => do_reg2(4), + O => \di_reg[4]_i_3_n_0\ + ); +\di_reg[4]_i_4\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BF00BF01FF40FE40" + ) + port map ( + I0 => index(2), + I1 => index(1), + I2 => index(0), + I3 => do_reg2(4), + I4 => x16x20_mode_reg2, + I5 => data_pma_rsv_a(15), + O => \di_reg[4]_i_4_n_0\ + ); +\di_reg[5]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"7F7F7F7E00000000" + ) + port map ( + I0 => index(3), + I1 => index(2), + I2 => index(1), + I3 => index(0), + I4 => x16x20_mode_reg2, + I5 => do_reg2(5), + O => \di_reg[5]_i_2_n_0\ + ); +\di_reg[5]_i_3\: unisim.vcomponents.LUT6 + generic map( + INIT => X"00000000038F0380" + ) + port map ( + I0 => do_reg2(5), + I1 => index(0), + I2 => index(2), + I3 => index(1), + I4 => data_pma_rsv_a(15), + I5 => index(3), + O => \di_reg[5]_i_3_n_0\ + ); +\di_reg[6]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"7D7F7D7E00000000" + ) + port map ( + I0 => index(3), + I1 => index(2), + I2 => index(1), + I3 => index(0), + I4 => x16x20_mode_reg2, + I5 => do_reg2(6), + O => \di_reg[6]_i_2_n_0\ + ); +\di_reg[6]_i_3\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000380" + ) + port map ( + I0 => do_reg2(6), + I1 => index(0), + I2 => index(2), + I3 => index(1), + I4 => index(3), + O => \di_reg[6]_i_3_n_0\ + ); +\di_reg[7]_i_2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"7FFF0900" + ) + port map ( + I0 => index(2), + I1 => index(1), + I2 => index(0), + I3 => index(3), + I4 => do_reg2(7), + O => \di_reg[7]_i_2_n_0\ + ); +\di_reg[7]_i_3\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000003800383" + ) + port map ( + I0 => do_reg2(7), + I1 => index(0), + I2 => index(2), + I3 => index(1), + I4 => data_pma_rsv_a(15), + I5 => index(3), + O => \di_reg[7]_i_3_n_0\ + ); +\di_reg[8]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"03333F7300000040" + ) + port map ( + I0 => index(0), + I1 => index(4), + I2 => index(1), + I3 => index(2), + I4 => index(3), + I5 => do_reg2(8), + O => di_reg(8) + ); +\di_reg[9]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"03333F7300000040" + ) + port map ( + I0 => index(0), + I1 => index(4), + I2 => index(1), + I3 => index(2), + I4 => index(3), + I5 => do_reg2(9), + O => di_reg(9) + ); +\di_reg_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(0), + Q => drp_di_0(0), + R => RST_DCLK_RESET + ); +\di_reg_reg[0]_i_1\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[0]_i_2_n_0\, + I1 => \di_reg[0]_i_3_n_0\, + O => di_reg(0), + S => index(4) + ); +\di_reg_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(10), + Q => drp_di_0(10), + R => RST_DCLK_RESET + ); +\di_reg_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(11), + Q => drp_di_0(11), + R => RST_DCLK_RESET + ); +\di_reg_reg[11]_i_1\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[11]_i_2_n_0\, + I1 => \di_reg[11]_i_3_n_0\, + O => di_reg(11), + S => index(4) + ); +\di_reg_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(12), + Q => drp_di_0(12), + R => RST_DCLK_RESET + ); +\di_reg_reg[12]_i_1\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[12]_i_2_n_0\, + I1 => \di_reg[12]_i_3_n_0\, + O => di_reg(12), + S => index(4) + ); +\di_reg_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(13), + Q => drp_di_0(13), + R => RST_DCLK_RESET + ); +\di_reg_reg[13]_i_1\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[13]_i_2_n_0\, + I1 => \di_reg[13]_i_3_n_0\, + O => di_reg(13), + S => index(4) + ); +\di_reg_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(14), + Q => drp_di_0(14), + R => RST_DCLK_RESET + ); +\di_reg_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(15), + Q => drp_di_0(15), + R => RST_DCLK_RESET + ); +\di_reg_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(1), + Q => drp_di_0(1), + R => RST_DCLK_RESET + ); +\di_reg_reg[1]_i_1\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[1]_i_2_n_0\, + I1 => \di_reg[1]_i_3_n_0\, + O => di_reg(1), + S => index(4) + ); +\di_reg_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(2), + Q => drp_di_0(2), + R => RST_DCLK_RESET + ); +\di_reg_reg[2]_i_1\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[2]_i_2_n_0\, + I1 => \di_reg[2]_i_3_n_0\, + O => di_reg(2), + S => index(4) + ); +\di_reg_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(3), + Q => drp_di_0(3), + R => RST_DCLK_RESET + ); +\di_reg_reg[3]_i_1\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[3]_i_2_n_0\, + I1 => \di_reg[3]_i_3_n_0\, + O => di_reg(3), + S => index(4) + ); +\di_reg_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(4), + Q => drp_di_0(4), + R => RST_DCLK_RESET + ); +\di_reg_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(5), + Q => drp_di_0(5), + R => RST_DCLK_RESET + ); +\di_reg_reg[5]_i_1\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[5]_i_2_n_0\, + I1 => \di_reg[5]_i_3_n_0\, + O => di_reg(5), + S => index(4) + ); +\di_reg_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(6), + Q => drp_di_0(6), + R => RST_DCLK_RESET + ); +\di_reg_reg[6]_i_1\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[6]_i_2_n_0\, + I1 => \di_reg[6]_i_3_n_0\, + O => di_reg(6), + S => index(4) + ); +\di_reg_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(7), + Q => drp_di_0(7), + R => RST_DCLK_RESET + ); +\di_reg_reg[7]_i_1\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[7]_i_2_n_0\, + I1 => \di_reg[7]_i_3_n_0\, + O => di_reg(7), + S => index(4) + ); +\di_reg_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(8), + Q => drp_di_0(8), + R => RST_DCLK_RESET + ); +\di_reg_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(9), + Q => drp_di_0(9), + R => RST_DCLK_RESET + ); +\do_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(0), + Q => do_reg1(0), + R => RST_DCLK_RESET + ); +\do_reg1_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(10), + Q => do_reg1(10), + R => RST_DCLK_RESET + ); +\do_reg1_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(11), + Q => do_reg1(11), + R => RST_DCLK_RESET + ); +\do_reg1_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(12), + Q => do_reg1(12), + R => RST_DCLK_RESET + ); +\do_reg1_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(13), + Q => do_reg1(13), + R => RST_DCLK_RESET + ); +\do_reg1_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(14), + Q => do_reg1(14), + R => RST_DCLK_RESET + ); +\do_reg1_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(15), + Q => do_reg1(15), + R => RST_DCLK_RESET + ); +\do_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(1), + Q => do_reg1(1), + R => RST_DCLK_RESET + ); +\do_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(2), + Q => do_reg1(2), + R => RST_DCLK_RESET + ); +\do_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(3), + Q => do_reg1(3), + R => RST_DCLK_RESET + ); +\do_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(4), + Q => do_reg1(4), + R => RST_DCLK_RESET + ); +\do_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(5), + Q => do_reg1(5), + R => RST_DCLK_RESET + ); +\do_reg1_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(6), + Q => do_reg1(6), + R => RST_DCLK_RESET + ); +\do_reg1_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(7), + Q => do_reg1(7), + R => RST_DCLK_RESET + ); +\do_reg1_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(8), + Q => do_reg1(8), + R => RST_DCLK_RESET + ); +\do_reg1_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(9), + Q => do_reg1(9), + R => RST_DCLK_RESET + ); +\do_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(0), + Q => do_reg2(0), + R => RST_DCLK_RESET + ); +\do_reg2_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(10), + Q => do_reg2(10), + R => RST_DCLK_RESET + ); +\do_reg2_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(11), + Q => do_reg2(11), + R => RST_DCLK_RESET + ); +\do_reg2_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(12), + Q => do_reg2(12), + R => RST_DCLK_RESET + ); +\do_reg2_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(13), + Q => do_reg2(13), + R => RST_DCLK_RESET + ); +\do_reg2_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(14), + Q => do_reg2(14), + R => RST_DCLK_RESET + ); +\do_reg2_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(15), + Q => do_reg2(15), + R => RST_DCLK_RESET + ); +\do_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(1), + Q => do_reg2(1), + R => RST_DCLK_RESET + ); +\do_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(2), + Q => do_reg2(2), + R => RST_DCLK_RESET + ); +\do_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(3), + Q => do_reg2(3), + R => RST_DCLK_RESET + ); +\do_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(4), + Q => do_reg2(4), + R => RST_DCLK_RESET + ); +\do_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(5), + Q => do_reg2(5), + R => RST_DCLK_RESET + ); +\do_reg2_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(6), + Q => do_reg2(6), + R => RST_DCLK_RESET + ); +\do_reg2_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(7), + Q => do_reg2(7), + R => RST_DCLK_RESET + ); +\do_reg2_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(8), + Q => do_reg2(8), + R => RST_DCLK_RESET + ); +\do_reg2_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(9), + Q => do_reg2(9), + R => RST_DCLK_RESET + ); +\done_i_1__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0001" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => start_reg2, + I3 => \fsm_reg_n_0_[1]\, + O => \done_i_1__0_n_0\ + ); +done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \done_i_1__0_n_0\, + Q => DRP_DONE, + R => RST_DCLK_RESET + ); +\fsm[0]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0737FFFF07370000" + ) + port map ( + I0 => fsm1, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => rdy_reg2, + I4 => \fsm_reg_n_0_[2]\, + I5 => \fsm[0]_i_2__0_n_0\, + O => fsm(0) + ); +\fsm[0]_i_2__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"47FF47CC" + ) + port map ( + I0 => rdy_reg2, + I1 => \fsm_reg_n_0_[1]\, + I2 => load_cnt(0), + I3 => \fsm_reg_n_0_[0]\, + I4 => start_reg2, + O => \fsm[0]_i_2__0_n_0\ + ); +\fsm[1]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"1D501850" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => rdy_reg2, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => load_cnt(0), + O => fsm(1) + ); +\fsm[2]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"6222" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => rdy_reg2, + O => fsm(2) + ); +\fsm_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => fsm(0), + Q => \fsm_reg_n_0_[0]\, + R => RST_DCLK_RESET + ); +\fsm_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => fsm(1), + Q => \fsm_reg_n_0_[1]\, + R => RST_DCLK_RESET + ); +\fsm_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => fsm(2), + Q => \fsm_reg_n_0_[2]\, + R => RST_DCLK_RESET + ); +\gtx_channel.gtxe2_channel_i_i_10\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_0(11), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(11) + ); +\gtx_channel.gtxe2_channel_i_i_11\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_0(10), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(10) + ); +\gtx_channel.gtxe2_channel_i_i_12\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_0(9), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(9) + ); +\gtx_channel.gtxe2_channel_i_i_13\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_0(8), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(8) + ); +\gtx_channel.gtxe2_channel_i_i_14\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_0(7), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(7) + ); +\gtx_channel.gtxe2_channel_i_i_15\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_0(6), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(6) + ); +\gtx_channel.gtxe2_channel_i_i_16\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_0(5), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(5) + ); +\gtx_channel.gtxe2_channel_i_i_17\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_0(4), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(4) + ); +\gtx_channel.gtxe2_channel_i_i_18\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_0(3), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(3) + ); +\gtx_channel.gtxe2_channel_i_i_19\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_0(2), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(2) + ); +\gtx_channel.gtxe2_channel_i_i_20\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_0(1), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(1) + ); +\gtx_channel.gtxe2_channel_i_i_21\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_0(0), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(0) + ); +\gtx_channel.gtxe2_channel_i_i_3\: unisim.vcomponents.LUT3 + generic map( + INIT => X"12" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[2]\, + O => \fsm_reg[1]_0\ + ); +\gtx_channel.gtxe2_channel_i_i_39__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_0(7), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(7) + ); +\gtx_channel.gtxe2_channel_i_i_4\: unisim.vcomponents.LUT3 + generic map( + INIT => X"10" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[2]\, + O => \fsm_reg[1]_1\ + ); +\gtx_channel.gtxe2_channel_i_i_40\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_0(6), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(6) + ); +\gtx_channel.gtxe2_channel_i_i_41\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_0(5), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(5) + ); +\gtx_channel.gtxe2_channel_i_i_42\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_0(4), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(4) + ); +\gtx_channel.gtxe2_channel_i_i_43\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_0(3), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(3) + ); +\gtx_channel.gtxe2_channel_i_i_44\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_0(2), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(2) + ); +\gtx_channel.gtxe2_channel_i_i_45\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_0(1), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(1) + ); +\gtx_channel.gtxe2_channel_i_i_46\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_0(0), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(0) + ); +\gtx_channel.gtxe2_channel_i_i_6\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_0(15), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(15) + ); +\gtx_channel.gtxe2_channel_i_i_7\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_0(14), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(14) + ); +\gtx_channel.gtxe2_channel_i_i_8\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_0(13), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(13) + ); +\gtx_channel.gtxe2_channel_i_i_9\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_0(12), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(12) + ); +gtxreset_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => DRP_GTXRESET, + Q => gtxreset_reg1, + R => RST_DCLK_RESET + ); +gtxreset_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => gtxreset_reg1, + Q => gtxreset_reg2, + R => RST_DCLK_RESET + ); +\index[0]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0100" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => fsm1, + I2 => index(0), + I3 => \fsm_reg_n_0_[2]\, + O => \index[0]_i_1_n_0\ + ); +\index[1]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00140000" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => index(1), + I2 => index(0), + I3 => fsm1, + I4 => \fsm_reg_n_0_[2]\, + O => \index[1]_i_1_n_0\ + ); +\index[2]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000144400000000" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => index(2), + I2 => index(1), + I3 => index(0), + I4 => fsm1, + I5 => \fsm_reg_n_0_[2]\, + O => \index[2]_i_1_n_0\ + ); +\index[3]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000144400000000" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => index(3), + I2 => index(2), + I3 => \index[3]_i_2_n_0\, + I4 => fsm1, + I5 => \fsm_reg_n_0_[2]\, + O => \index[3]_i_1_n_0\ + ); +\index[3]_i_2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => index(1), + I1 => index(0), + O => \index[3]_i_2_n_0\ + ); +\index[4]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A1" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[2]\, + O => \index[4]_i_1_n_0\ + ); +\index[4]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000144400000000" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => index(4), + I2 => index(3), + I3 => \index[4]_i_3_n_0\, + I4 => fsm1, + I5 => \fsm_reg_n_0_[2]\, + O => \index[4]_i_2_n_0\ + ); +\index[4]_i_3\: unisim.vcomponents.LUT3 + generic map( + INIT => X"80" + ) + port map ( + I0 => index(2), + I1 => index(0), + I2 => index(1), + O => \index[4]_i_3_n_0\ + ); +\index[4]_i_4\: unisim.vcomponents.LUT6 + generic map( + INIT => X"1000000110000000" + ) + port map ( + I0 => index(3), + I1 => index(1), + I2 => index(0), + I3 => index(4), + I4 => index(2), + I5 => x16x20_mode_reg2, + O => fsm1 + ); +\index_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => \index[4]_i_1_n_0\, + D => \index[0]_i_1_n_0\, + Q => index(0), + R => RST_DCLK_RESET + ); +\index_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => \index[4]_i_1_n_0\, + D => \index[1]_i_1_n_0\, + Q => index(1), + R => RST_DCLK_RESET + ); +\index_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => \index[4]_i_1_n_0\, + D => \index[2]_i_1_n_0\, + Q => index(2), + R => RST_DCLK_RESET + ); +\index_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => \index[4]_i_1_n_0\, + D => \index[3]_i_1_n_0\, + Q => index(3), + R => RST_DCLK_RESET + ); +\index_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => \index[4]_i_1_n_0\, + D => \index[4]_i_2_n_0\, + Q => index(4), + R => RST_DCLK_RESET + ); +\load_cnt[0]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"10" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[0]\, + O => \load_cnt[0]_i_1_n_0\ + ); +\load_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \load_cnt[0]_i_1_n_0\, + Q => load_cnt(0), + R => RST_DCLK_RESET + ); +\rate_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => \rate_reg1_reg[0]_0\(0), + Q => rate_reg1(0), + R => RST_DCLK_RESET + ); +\rate_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => '0', + Q => rate_reg1(1), + R => RST_DCLK_RESET + ); +\rate_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => rate_reg1(0), + Q => rate_reg2(0), + R => RST_DCLK_RESET + ); +\rate_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => rate_reg1(1), + Q => rate_reg2(1), + R => RST_DCLK_RESET + ); +rdy_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => DRP_RDY, + Q => rdy_reg1, + R => RST_DCLK_RESET + ); +rdy_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => rdy_reg1, + Q => rdy_reg2, + R => RST_DCLK_RESET + ); +start_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => RATE_DRP_START, + Q => start_reg1, + R => RST_DCLK_RESET + ); +start_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => start_reg1, + Q => start_reg2, + R => RST_DCLK_RESET + ); +x16_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => RATE_DRP_X16, + Q => x16_reg1, + R => RST_DCLK_RESET + ); +x16_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => x16_reg1, + Q => x16_reg2, + R => RST_DCLK_RESET + ); +x16x20_mode_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => RATE_DRP_X16X20_MODE, + Q => x16x20_mode_reg1, + R => RST_DCLK_RESET + ); +x16x20_mode_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => x16x20_mode_reg1, + Q => x16x20_mode_reg2, + R => RST_DCLK_RESET + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pipe_drp_38 is + port ( + \fsm_reg[1]_0\ : out STD_LOGIC; + \fsm_reg[1]_1\ : out STD_LOGIC; + DRPADDR : out STD_LOGIC_VECTOR ( 7 downto 0 ); + DRPDI : out STD_LOGIC_VECTOR ( 15 downto 0 ); + DRP_DONE : out STD_LOGIC; + RST_DCLK_RESET : in STD_LOGIC; + RATE_DRP_X16X20_MODE : in STD_LOGIC; + pipe_dclk_in : in STD_LOGIC; + RATE_DRP_START : in STD_LOGIC; + DRP_RDY : in STD_LOGIC; + \rate_reg1_reg[0]_0\ : in STD_LOGIC_VECTOR ( 0 to 0 ); + RATE_DRP_X16 : in STD_LOGIC; + D : in STD_LOGIC_VECTOR ( 15 downto 0 ); + DRP_GTXRESET : in STD_LOGIC + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pipe_drp_38 : entity is "pcie_7x_0_pipe_drp"; +end pcie_7x_0_pcie_7x_0_pipe_drp_38; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pipe_drp_38 is + signal addr_reg : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal \addr_reg[4]_i_1__0_n_0\ : STD_LOGIC; + signal \addr_reg[6]_i_1__0_n_0\ : STD_LOGIC; + signal data_pma_rsv_a : STD_LOGIC_VECTOR ( 15 to 15 ); + signal di_reg : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal \di_reg[0]_i_2__0_n_0\ : STD_LOGIC; + signal \di_reg[0]_i_3__0_n_0\ : STD_LOGIC; + signal \di_reg[11]_i_2__0_n_0\ : STD_LOGIC; + signal \di_reg[11]_i_3__0_n_0\ : STD_LOGIC; + signal \di_reg[11]_i_4__0_n_0\ : STD_LOGIC; + signal \di_reg[11]_i_5__0_n_0\ : STD_LOGIC; + signal \di_reg[12]_i_2__0_n_0\ : STD_LOGIC; + signal \di_reg[12]_i_3__0_n_0\ : STD_LOGIC; + signal \di_reg[13]_i_2__0_n_0\ : STD_LOGIC; + signal \di_reg[13]_i_3__0_n_0\ : STD_LOGIC; + signal \di_reg[14]_i_2__0_n_0\ : STD_LOGIC; + signal \di_reg[15]_i_2__0_n_0\ : STD_LOGIC; + signal \di_reg[1]_i_2__0_n_0\ : STD_LOGIC; + signal \di_reg[1]_i_3__0_n_0\ : STD_LOGIC; + signal \di_reg[2]_i_2__0_n_0\ : STD_LOGIC; + signal \di_reg[2]_i_3__0_n_0\ : STD_LOGIC; + signal \di_reg[3]_i_2__0_n_0\ : STD_LOGIC; + signal \di_reg[3]_i_3__0_n_0\ : STD_LOGIC; + signal \di_reg[4]_i_2__0_n_0\ : STD_LOGIC; + signal \di_reg[4]_i_3__0_n_0\ : STD_LOGIC; + signal \di_reg[4]_i_4__0_n_0\ : STD_LOGIC; + signal \di_reg[5]_i_2__0_n_0\ : STD_LOGIC; + signal \di_reg[5]_i_3__0_n_0\ : STD_LOGIC; + signal \di_reg[6]_i_2__0_n_0\ : STD_LOGIC; + signal \di_reg[6]_i_3__0_n_0\ : STD_LOGIC; + signal \di_reg[7]_i_2__0_n_0\ : STD_LOGIC; + signal \di_reg[7]_i_3__0_n_0\ : STD_LOGIC; + signal do_reg1 : STD_LOGIC_VECTOR ( 15 downto 0 ); + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of do_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of do_reg1 : signal is "true"; + signal do_reg2 : STD_LOGIC_VECTOR ( 15 downto 0 ); + attribute SHIFT_EXTRACT of do_reg2 : signal is "NO"; + attribute async_reg of do_reg2 : signal is "true"; + signal \done_i_1__1_n_0\ : STD_LOGIC; + signal drp_addr_9 : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal drp_di_16 : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal fsm : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal fsm1 : STD_LOGIC; + signal \fsm[0]_i_2__3_n_0\ : STD_LOGIC; + signal \fsm_reg_n_0_[0]\ : STD_LOGIC; + signal \fsm_reg_n_0_[1]\ : STD_LOGIC; + signal \fsm_reg_n_0_[2]\ : STD_LOGIC; + signal gtxreset_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of gtxreset_reg1 : signal is "NO"; + attribute async_reg of gtxreset_reg1 : signal is "true"; + signal gtxreset_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of gtxreset_reg2 : signal is "NO"; + attribute async_reg of gtxreset_reg2 : signal is "true"; + signal index : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal \index[0]_i_1__0_n_0\ : STD_LOGIC; + signal \index[1]_i_1__0_n_0\ : STD_LOGIC; + signal \index[2]_i_1__0_n_0\ : STD_LOGIC; + signal \index[3]_i_1__0_n_0\ : STD_LOGIC; + signal \index[3]_i_2__0_n_0\ : STD_LOGIC; + signal \index[4]_i_1__0_n_0\ : STD_LOGIC; + signal \index[4]_i_2__0_n_0\ : STD_LOGIC; + signal \index[4]_i_3__0_n_0\ : STD_LOGIC; + signal load_cnt : STD_LOGIC_VECTOR ( 0 to 0 ); + signal \load_cnt[0]_i_1__1_n_0\ : STD_LOGIC; + signal rate_reg1 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rate_reg1 : signal is "NO"; + attribute async_reg of rate_reg1 : signal is "true"; + signal rate_reg2 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rate_reg2 : signal is "NO"; + attribute async_reg of rate_reg2 : signal is "true"; + signal rdy_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rdy_reg1 : signal is "NO"; + attribute async_reg of rdy_reg1 : signal is "true"; + signal rdy_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rdy_reg2 : signal is "NO"; + attribute async_reg of rdy_reg2 : signal is "true"; + signal start_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of start_reg1 : signal is "NO"; + attribute async_reg of start_reg1 : signal is "true"; + signal start_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of start_reg2 : signal is "NO"; + attribute async_reg of start_reg2 : signal is "true"; + signal x16_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of x16_reg1 : signal is "NO"; + attribute async_reg of x16_reg1 : signal is "true"; + signal x16_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of x16_reg2 : signal is "NO"; + attribute async_reg of x16_reg2 : signal is "true"; + signal x16x20_mode_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of x16x20_mode_reg1 : signal is "NO"; + attribute async_reg of x16x20_mode_reg1 : signal is "true"; + signal x16x20_mode_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of x16x20_mode_reg2 : signal is "NO"; + attribute async_reg of x16x20_mode_reg2 : signal is "true"; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \addr_reg[1]_i_1__0\ : label is "soft_lutpair82"; + attribute SOFT_HLUTNM of \addr_reg[2]_i_1__0\ : label is "soft_lutpair82"; + attribute SOFT_HLUTNM of \addr_reg[5]_i_1__0\ : label is "soft_lutpair81"; + attribute SOFT_HLUTNM of \addr_reg[6]_i_1__0\ : label is "soft_lutpair81"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of \do_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of \do_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[10]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[11]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[12]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[13]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[14]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[15]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[6]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[7]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[8]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[9]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[9]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[10]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[11]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[12]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[13]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[14]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[15]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[6]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[7]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[8]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[9]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[9]\ : label is "NO"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_10__0\ : label is "soft_lutpair93"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_11__0\ : label is "soft_lutpair93"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_12__0\ : label is "soft_lutpair92"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_13__0\ : label is "soft_lutpair92"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_14__0\ : label is "soft_lutpair91"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_15__0\ : label is "soft_lutpair91"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_16__0\ : label is "soft_lutpair90"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_17__0\ : label is "soft_lutpair90"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_18__0\ : label is "soft_lutpair89"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_19__0\ : label is "soft_lutpair89"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_20__0\ : label is "soft_lutpair88"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_21__0\ : label is "soft_lutpair88"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_39__1\ : label is "soft_lutpair87"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_3__0\ : label is "soft_lutpair83"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_40__0\ : label is "soft_lutpair87"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_41__0\ : label is "soft_lutpair86"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_42__0\ : label is "soft_lutpair86"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_43__0\ : label is "soft_lutpair85"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_44__0\ : label is "soft_lutpair85"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_45__0\ : label is "soft_lutpair84"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_46__0\ : label is "soft_lutpair83"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_4__0\ : label is "soft_lutpair84"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_6__0\ : label is "soft_lutpair95"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_7__0\ : label is "soft_lutpair95"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_8__0\ : label is "soft_lutpair94"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_9__0\ : label is "soft_lutpair94"; + attribute ASYNC_REG_boolean of gtxreset_reg1_reg : label is std.standard.true; + attribute KEEP of gtxreset_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of gtxreset_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of gtxreset_reg2_reg : label is std.standard.true; + attribute KEEP of gtxreset_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of gtxreset_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \index[0]_i_1__0\ : label is "soft_lutpair80"; + attribute SOFT_HLUTNM of \index[1]_i_1__0\ : label is "soft_lutpair80"; + attribute SOFT_HLUTNM of \index[3]_i_2__0\ : label is "soft_lutpair96"; + attribute SOFT_HLUTNM of \index[4]_i_3__0\ : label is "soft_lutpair96"; + attribute ASYNC_REG_boolean of \rate_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rate_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rate_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rate_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rate_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of rdy_reg1_reg : label is std.standard.true; + attribute KEEP of rdy_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rdy_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rdy_reg2_reg : label is std.standard.true; + attribute KEEP of rdy_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rdy_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of start_reg1_reg : label is std.standard.true; + attribute KEEP of start_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of start_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of start_reg2_reg : label is std.standard.true; + attribute KEEP of start_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of start_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of x16_reg1_reg : label is std.standard.true; + attribute KEEP of x16_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of x16_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of x16_reg2_reg : label is std.standard.true; + attribute KEEP of x16_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of x16_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of x16x20_mode_reg1_reg : label is std.standard.true; + attribute KEEP of x16x20_mode_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of x16x20_mode_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of x16x20_mode_reg2_reg : label is std.standard.true; + attribute KEEP of x16x20_mode_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of x16x20_mode_reg2_reg : label is "NO"; +begin +\addr_reg[0]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"1736415517364154" + ) + port map ( + I0 => index(4), + I1 => index(3), + I2 => index(2), + I3 => index(1), + I4 => index(0), + I5 => x16x20_mode_reg2, + O => addr_reg(0) + ); +\addr_reg[1]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"40500F00" + ) + port map ( + I0 => index(4), + I1 => index(0), + I2 => index(3), + I3 => index(1), + I4 => index(2), + O => addr_reg(1) + ); +\addr_reg[2]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"05105A00" + ) + port map ( + I0 => index(4), + I1 => index(0), + I2 => index(3), + I3 => index(2), + I4 => index(1), + O => addr_reg(2) + ); +\addr_reg[3]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"5767576753265327" + ) + port map ( + I0 => index(4), + I1 => index(3), + I2 => index(2), + I3 => index(1), + I4 => x16x20_mode_reg2, + I5 => index(0), + O => addr_reg(3) + ); +\addr_reg[4]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"00000000FAAFFF04" + ) + port map ( + I0 => index(0), + I1 => x16x20_mode_reg2, + I2 => index(1), + I3 => index(2), + I4 => index(3), + I5 => index(4), + O => \addr_reg[4]_i_1__0_n_0\ + ); +\addr_reg[5]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"001A0F0A" + ) + port map ( + I0 => index(4), + I1 => index(0), + I2 => index(3), + I3 => index(1), + I4 => index(2), + O => addr_reg(5) + ); +\addr_reg[6]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00001454" + ) + port map ( + I0 => index(2), + I1 => index(1), + I2 => index(3), + I3 => index(0), + I4 => index(4), + O => \addr_reg[6]_i_1__0_n_0\ + ); +\addr_reg[7]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"5252424223236263" + ) + port map ( + I0 => index(4), + I1 => index(3), + I2 => index(2), + I3 => x16x20_mode_reg2, + I4 => index(0), + I5 => index(1), + O => addr_reg(7) + ); +\addr_reg_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => addr_reg(0), + Q => drp_addr_9(0), + R => RST_DCLK_RESET + ); +\addr_reg_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => addr_reg(1), + Q => drp_addr_9(1), + R => RST_DCLK_RESET + ); +\addr_reg_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => addr_reg(2), + Q => drp_addr_9(2), + R => RST_DCLK_RESET + ); +\addr_reg_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => addr_reg(3), + Q => drp_addr_9(3), + R => RST_DCLK_RESET + ); +\addr_reg_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \addr_reg[4]_i_1__0_n_0\, + Q => drp_addr_9(4), + R => RST_DCLK_RESET + ); +\addr_reg_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => addr_reg(5), + Q => drp_addr_9(5), + R => RST_DCLK_RESET + ); +\addr_reg_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \addr_reg[6]_i_1__0_n_0\, + Q => drp_addr_9(6), + R => RST_DCLK_RESET + ); +\addr_reg_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => addr_reg(7), + Q => drp_addr_9(7), + R => RST_DCLK_RESET + ); +\di_reg[0]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FF5E7F6FA1001000" + ) + port map ( + I0 => index(3), + I1 => index(2), + I2 => index(1), + I3 => data_pma_rsv_a(15), + I4 => index(0), + I5 => do_reg2(0), + O => \di_reg[0]_i_2__0_n_0\ + ); +\di_reg[0]_i_3__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"000005D0" + ) + port map ( + I0 => index(0), + I1 => do_reg2(0), + I2 => index(2), + I3 => index(1), + I4 => index(3), + O => \di_reg[0]_i_3__0_n_0\ + ); +\di_reg[10]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"45555F5540000000" + ) + port map ( + I0 => index(4), + I1 => \di_reg[15]_i_2__0_n_0\, + I2 => index(1), + I3 => index(2), + I4 => index(3), + I5 => do_reg2(10), + O => di_reg(10) + ); +\di_reg[11]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"4F40DDDD4F408888" + ) + port map ( + I0 => index(3), + I1 => do_reg2(11), + I2 => index(1), + I3 => \di_reg[11]_i_4__0_n_0\, + I4 => index(2), + I5 => \di_reg[11]_i_5__0_n_0\, + O => \di_reg[11]_i_2__0_n_0\ + ); +\di_reg[11]_i_3__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000008080838" + ) + port map ( + I0 => do_reg2(11), + I1 => index(2), + I2 => index(1), + I3 => data_pma_rsv_a(15), + I4 => index(0), + I5 => index(3), + O => \di_reg[11]_i_3__0_n_0\ + ); +\di_reg[11]_i_4__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"B8BB" + ) + port map ( + I0 => do_reg2(11), + I1 => index(0), + I2 => rate_reg2(0), + I3 => rate_reg2(1), + O => \di_reg[11]_i_4__0_n_0\ + ); +\di_reg[11]_i_5__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"EFFF0100" + ) + port map ( + I0 => index(1), + I1 => index(0), + I2 => x16_reg2, + I3 => x16x20_mode_reg2, + I4 => do_reg2(11), + O => \di_reg[11]_i_5__0_n_0\ + ); +\di_reg[12]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"777EFFFF01080000" + ) + port map ( + I0 => index(3), + I1 => index(1), + I2 => index(0), + I3 => data_pma_rsv_a(15), + I4 => index(2), + I5 => do_reg2(12), + O => \di_reg[12]_i_2__0_n_0\ + ); +\di_reg[12]_i_3__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000B08" + ) + port map ( + I0 => do_reg2(12), + I1 => index(2), + I2 => index(1), + I3 => index(0), + I4 => index(3), + O => \di_reg[12]_i_3__0_n_0\ + ); +\di_reg[13]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"767FFFFF00090000" + ) + port map ( + I0 => index(3), + I1 => index(1), + I2 => index(0), + I3 => data_pma_rsv_a(15), + I4 => index(2), + I5 => do_reg2(13), + O => \di_reg[13]_i_2__0_n_0\ + ); +\di_reg[13]_i_3__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000008380808" + ) + port map ( + I0 => do_reg2(13), + I1 => index(2), + I2 => index(1), + I3 => index(0), + I4 => data_pma_rsv_a(15), + I5 => index(3), + O => \di_reg[13]_i_3__0_n_0\ + ); +\di_reg[14]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0040FFFF00400000" + ) + port map ( + I0 => index(1), + I1 => index(2), + I2 => do_reg2(14), + I3 => index(3), + I4 => index(4), + I5 => \di_reg[14]_i_2__0_n_0\, + O => di_reg(14) + ); +\di_reg[14]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"653BFFF721080080" + ) + port map ( + I0 => index(3), + I1 => index(1), + I2 => data_pma_rsv_a(15), + I3 => index(0), + I4 => index(2), + I5 => do_reg2(14), + O => \di_reg[14]_i_2__0_n_0\ + ); +\di_reg[14]_i_3__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"B" + ) + port map ( + I0 => rate_reg2(0), + I1 => rate_reg2(1), + O => data_pma_rsv_a(15) + ); +\di_reg[15]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"45555F5540000000" + ) + port map ( + I0 => index(4), + I1 => \di_reg[15]_i_2__0_n_0\, + I2 => index(1), + I3 => index(2), + I4 => index(3), + I5 => do_reg2(15), + O => di_reg(15) + ); +\di_reg[15]_i_2__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"0D" + ) + port map ( + I0 => rate_reg2(1), + I1 => rate_reg2(0), + I2 => index(0), + O => \di_reg[15]_i_2__0_n_0\ + ); +\di_reg[1]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"5FEE4E0076FF1000" + ) + port map ( + I0 => index(3), + I1 => index(2), + I2 => data_pma_rsv_a(15), + I3 => index(1), + I4 => do_reg2(1), + I5 => index(0), + O => \di_reg[1]_i_2__0_n_0\ + ); +\di_reg[1]_i_3__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"000005D0" + ) + port map ( + I0 => index(0), + I1 => do_reg2(1), + I2 => index(2), + I3 => index(1), + I4 => index(3), + O => \di_reg[1]_i_3__0_n_0\ + ); +\di_reg[2]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"5DEE080067FF0100" + ) + port map ( + I0 => index(3), + I1 => index(2), + I2 => data_pma_rsv_a(15), + I3 => index(1), + I4 => do_reg2(2), + I5 => index(0), + O => \di_reg[2]_i_2__0_n_0\ + ); +\di_reg[2]_i_3__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000380" + ) + port map ( + I0 => do_reg2(2), + I1 => index(0), + I2 => index(2), + I3 => index(1), + I4 => index(3), + O => \di_reg[2]_i_3__0_n_0\ + ); +\di_reg[3]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"43FFFFFF40000000" + ) + port map ( + I0 => data_pma_rsv_a(15), + I1 => index(2), + I2 => index(0), + I3 => index(1), + I4 => index(3), + I5 => do_reg2(3), + O => \di_reg[3]_i_2__0_n_0\ + ); +\di_reg[3]_i_3__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"000000000033D100" + ) + port map ( + I0 => data_pma_rsv_a(15), + I1 => index(0), + I2 => do_reg2(3), + I3 => index(2), + I4 => index(1), + I5 => index(3), + O => \di_reg[3]_i_3__0_n_0\ + ); +\di_reg[4]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"30BB3088" + ) + port map ( + I0 => \di_reg[4]_i_2__0_n_0\, + I1 => index(4), + I2 => \di_reg[4]_i_3__0_n_0\, + I3 => index(3), + I4 => \di_reg[4]_i_4__0_n_0\, + O => di_reg(4) + ); +\di_reg[4]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0F0400F0000400F0" + ) + port map ( + I0 => rate_reg2(0), + I1 => rate_reg2(1), + I2 => index(1), + I3 => index(2), + I4 => index(0), + I5 => do_reg2(4), + O => \di_reg[4]_i_2__0_n_0\ + ); +\di_reg[4]_i_3__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"400FFFFF40000000" + ) + port map ( + I0 => rate_reg2(0), + I1 => rate_reg2(1), + I2 => index(2), + I3 => index(0), + I4 => index(1), + I5 => do_reg2(4), + O => \di_reg[4]_i_3__0_n_0\ + ); +\di_reg[4]_i_4__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BF00BF01FF40FE40" + ) + port map ( + I0 => index(2), + I1 => index(1), + I2 => index(0), + I3 => do_reg2(4), + I4 => x16x20_mode_reg2, + I5 => data_pma_rsv_a(15), + O => \di_reg[4]_i_4__0_n_0\ + ); +\di_reg[5]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"7F7F7F7E00000000" + ) + port map ( + I0 => index(3), + I1 => index(2), + I2 => index(1), + I3 => index(0), + I4 => x16x20_mode_reg2, + I5 => do_reg2(5), + O => \di_reg[5]_i_2__0_n_0\ + ); +\di_reg[5]_i_3__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"00000000038F0380" + ) + port map ( + I0 => do_reg2(5), + I1 => index(0), + I2 => index(2), + I3 => index(1), + I4 => data_pma_rsv_a(15), + I5 => index(3), + O => \di_reg[5]_i_3__0_n_0\ + ); +\di_reg[6]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"7D7F7D7E00000000" + ) + port map ( + I0 => index(3), + I1 => index(2), + I2 => index(1), + I3 => index(0), + I4 => x16x20_mode_reg2, + I5 => do_reg2(6), + O => \di_reg[6]_i_2__0_n_0\ + ); +\di_reg[6]_i_3__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000380" + ) + port map ( + I0 => do_reg2(6), + I1 => index(0), + I2 => index(2), + I3 => index(1), + I4 => index(3), + O => \di_reg[6]_i_3__0_n_0\ + ); +\di_reg[7]_i_2__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"7FFF0900" + ) + port map ( + I0 => index(2), + I1 => index(1), + I2 => index(0), + I3 => index(3), + I4 => do_reg2(7), + O => \di_reg[7]_i_2__0_n_0\ + ); +\di_reg[7]_i_3__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000003800383" + ) + port map ( + I0 => do_reg2(7), + I1 => index(0), + I2 => index(2), + I3 => index(1), + I4 => data_pma_rsv_a(15), + I5 => index(3), + O => \di_reg[7]_i_3__0_n_0\ + ); +\di_reg[8]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"03333F7300000040" + ) + port map ( + I0 => index(0), + I1 => index(4), + I2 => index(1), + I3 => index(2), + I4 => index(3), + I5 => do_reg2(8), + O => di_reg(8) + ); +\di_reg[9]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"03333F7300000040" + ) + port map ( + I0 => index(0), + I1 => index(4), + I2 => index(1), + I3 => index(2), + I4 => index(3), + I5 => do_reg2(9), + O => di_reg(9) + ); +\di_reg_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(0), + Q => drp_di_16(0), + R => RST_DCLK_RESET + ); +\di_reg_reg[0]_i_1__0\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[0]_i_2__0_n_0\, + I1 => \di_reg[0]_i_3__0_n_0\, + O => di_reg(0), + S => index(4) + ); +\di_reg_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(10), + Q => drp_di_16(10), + R => RST_DCLK_RESET + ); +\di_reg_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(11), + Q => drp_di_16(11), + R => RST_DCLK_RESET + ); +\di_reg_reg[11]_i_1__0\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[11]_i_2__0_n_0\, + I1 => \di_reg[11]_i_3__0_n_0\, + O => di_reg(11), + S => index(4) + ); +\di_reg_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(12), + Q => drp_di_16(12), + R => RST_DCLK_RESET + ); +\di_reg_reg[12]_i_1__0\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[12]_i_2__0_n_0\, + I1 => \di_reg[12]_i_3__0_n_0\, + O => di_reg(12), + S => index(4) + ); +\di_reg_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(13), + Q => drp_di_16(13), + R => RST_DCLK_RESET + ); +\di_reg_reg[13]_i_1__0\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[13]_i_2__0_n_0\, + I1 => \di_reg[13]_i_3__0_n_0\, + O => di_reg(13), + S => index(4) + ); +\di_reg_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(14), + Q => drp_di_16(14), + R => RST_DCLK_RESET + ); +\di_reg_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(15), + Q => drp_di_16(15), + R => RST_DCLK_RESET + ); +\di_reg_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(1), + Q => drp_di_16(1), + R => RST_DCLK_RESET + ); +\di_reg_reg[1]_i_1__0\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[1]_i_2__0_n_0\, + I1 => \di_reg[1]_i_3__0_n_0\, + O => di_reg(1), + S => index(4) + ); +\di_reg_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(2), + Q => drp_di_16(2), + R => RST_DCLK_RESET + ); +\di_reg_reg[2]_i_1__0\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[2]_i_2__0_n_0\, + I1 => \di_reg[2]_i_3__0_n_0\, + O => di_reg(2), + S => index(4) + ); +\di_reg_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(3), + Q => drp_di_16(3), + R => RST_DCLK_RESET + ); +\di_reg_reg[3]_i_1__0\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[3]_i_2__0_n_0\, + I1 => \di_reg[3]_i_3__0_n_0\, + O => di_reg(3), + S => index(4) + ); +\di_reg_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(4), + Q => drp_di_16(4), + R => RST_DCLK_RESET + ); +\di_reg_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(5), + Q => drp_di_16(5), + R => RST_DCLK_RESET + ); +\di_reg_reg[5]_i_1__0\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[5]_i_2__0_n_0\, + I1 => \di_reg[5]_i_3__0_n_0\, + O => di_reg(5), + S => index(4) + ); +\di_reg_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(6), + Q => drp_di_16(6), + R => RST_DCLK_RESET + ); +\di_reg_reg[6]_i_1__0\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[6]_i_2__0_n_0\, + I1 => \di_reg[6]_i_3__0_n_0\, + O => di_reg(6), + S => index(4) + ); +\di_reg_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(7), + Q => drp_di_16(7), + R => RST_DCLK_RESET + ); +\di_reg_reg[7]_i_1__0\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[7]_i_2__0_n_0\, + I1 => \di_reg[7]_i_3__0_n_0\, + O => di_reg(7), + S => index(4) + ); +\di_reg_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(8), + Q => drp_di_16(8), + R => RST_DCLK_RESET + ); +\di_reg_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(9), + Q => drp_di_16(9), + R => RST_DCLK_RESET + ); +\do_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(0), + Q => do_reg1(0), + R => RST_DCLK_RESET + ); +\do_reg1_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(10), + Q => do_reg1(10), + R => RST_DCLK_RESET + ); +\do_reg1_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(11), + Q => do_reg1(11), + R => RST_DCLK_RESET + ); +\do_reg1_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(12), + Q => do_reg1(12), + R => RST_DCLK_RESET + ); +\do_reg1_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(13), + Q => do_reg1(13), + R => RST_DCLK_RESET + ); +\do_reg1_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(14), + Q => do_reg1(14), + R => RST_DCLK_RESET + ); +\do_reg1_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(15), + Q => do_reg1(15), + R => RST_DCLK_RESET + ); +\do_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(1), + Q => do_reg1(1), + R => RST_DCLK_RESET + ); +\do_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(2), + Q => do_reg1(2), + R => RST_DCLK_RESET + ); +\do_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(3), + Q => do_reg1(3), + R => RST_DCLK_RESET + ); +\do_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(4), + Q => do_reg1(4), + R => RST_DCLK_RESET + ); +\do_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(5), + Q => do_reg1(5), + R => RST_DCLK_RESET + ); +\do_reg1_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(6), + Q => do_reg1(6), + R => RST_DCLK_RESET + ); +\do_reg1_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(7), + Q => do_reg1(7), + R => RST_DCLK_RESET + ); +\do_reg1_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(8), + Q => do_reg1(8), + R => RST_DCLK_RESET + ); +\do_reg1_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(9), + Q => do_reg1(9), + R => RST_DCLK_RESET + ); +\do_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(0), + Q => do_reg2(0), + R => RST_DCLK_RESET + ); +\do_reg2_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(10), + Q => do_reg2(10), + R => RST_DCLK_RESET + ); +\do_reg2_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(11), + Q => do_reg2(11), + R => RST_DCLK_RESET + ); +\do_reg2_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(12), + Q => do_reg2(12), + R => RST_DCLK_RESET + ); +\do_reg2_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(13), + Q => do_reg2(13), + R => RST_DCLK_RESET + ); +\do_reg2_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(14), + Q => do_reg2(14), + R => RST_DCLK_RESET + ); +\do_reg2_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(15), + Q => do_reg2(15), + R => RST_DCLK_RESET + ); +\do_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(1), + Q => do_reg2(1), + R => RST_DCLK_RESET + ); +\do_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(2), + Q => do_reg2(2), + R => RST_DCLK_RESET + ); +\do_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(3), + Q => do_reg2(3), + R => RST_DCLK_RESET + ); +\do_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(4), + Q => do_reg2(4), + R => RST_DCLK_RESET + ); +\do_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(5), + Q => do_reg2(5), + R => RST_DCLK_RESET + ); +\do_reg2_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(6), + Q => do_reg2(6), + R => RST_DCLK_RESET + ); +\do_reg2_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(7), + Q => do_reg2(7), + R => RST_DCLK_RESET + ); +\do_reg2_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(8), + Q => do_reg2(8), + R => RST_DCLK_RESET + ); +\do_reg2_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(9), + Q => do_reg2(9), + R => RST_DCLK_RESET + ); +\done_i_1__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0001" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => start_reg2, + I3 => \fsm_reg_n_0_[1]\, + O => \done_i_1__1_n_0\ + ); +done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \done_i_1__1_n_0\, + Q => DRP_DONE, + R => RST_DCLK_RESET + ); +\fsm[0]_i_1__3\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0737FFFF07370000" + ) + port map ( + I0 => fsm1, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => rdy_reg2, + I4 => \fsm_reg_n_0_[2]\, + I5 => \fsm[0]_i_2__3_n_0\, + O => fsm(0) + ); +\fsm[0]_i_2__3\: unisim.vcomponents.LUT5 + generic map( + INIT => X"47FF47CC" + ) + port map ( + I0 => rdy_reg2, + I1 => \fsm_reg_n_0_[1]\, + I2 => load_cnt(0), + I3 => \fsm_reg_n_0_[0]\, + I4 => start_reg2, + O => \fsm[0]_i_2__3_n_0\ + ); +\fsm[1]_i_1__3\: unisim.vcomponents.LUT5 + generic map( + INIT => X"1D501850" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => rdy_reg2, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => load_cnt(0), + O => fsm(1) + ); +\fsm[2]_i_1__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"6222" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => rdy_reg2, + O => fsm(2) + ); +\fsm_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => fsm(0), + Q => \fsm_reg_n_0_[0]\, + R => RST_DCLK_RESET + ); +\fsm_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => fsm(1), + Q => \fsm_reg_n_0_[1]\, + R => RST_DCLK_RESET + ); +\fsm_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => fsm(2), + Q => \fsm_reg_n_0_[2]\, + R => RST_DCLK_RESET + ); +\gtx_channel.gtxe2_channel_i_i_10__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_16(11), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(11) + ); +\gtx_channel.gtxe2_channel_i_i_11__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_16(10), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(10) + ); +\gtx_channel.gtxe2_channel_i_i_12__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_16(9), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(9) + ); +\gtx_channel.gtxe2_channel_i_i_13__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_16(8), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(8) + ); +\gtx_channel.gtxe2_channel_i_i_14__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_16(7), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(7) + ); +\gtx_channel.gtxe2_channel_i_i_15__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_16(6), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(6) + ); +\gtx_channel.gtxe2_channel_i_i_16__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_16(5), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(5) + ); +\gtx_channel.gtxe2_channel_i_i_17__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_16(4), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(4) + ); +\gtx_channel.gtxe2_channel_i_i_18__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_16(3), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(3) + ); +\gtx_channel.gtxe2_channel_i_i_19__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_16(2), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(2) + ); +\gtx_channel.gtxe2_channel_i_i_20__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_16(1), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(1) + ); +\gtx_channel.gtxe2_channel_i_i_21__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_16(0), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(0) + ); +\gtx_channel.gtxe2_channel_i_i_39__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_9(7), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(7) + ); +\gtx_channel.gtxe2_channel_i_i_3__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"12" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[2]\, + O => \fsm_reg[1]_0\ + ); +\gtx_channel.gtxe2_channel_i_i_40__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_9(6), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(6) + ); +\gtx_channel.gtxe2_channel_i_i_41__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_9(5), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(5) + ); +\gtx_channel.gtxe2_channel_i_i_42__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_9(4), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(4) + ); +\gtx_channel.gtxe2_channel_i_i_43__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_9(3), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(3) + ); +\gtx_channel.gtxe2_channel_i_i_44__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_9(2), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(2) + ); +\gtx_channel.gtxe2_channel_i_i_45__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_9(1), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(1) + ); +\gtx_channel.gtxe2_channel_i_i_46__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_9(0), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(0) + ); +\gtx_channel.gtxe2_channel_i_i_4__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"10" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[2]\, + O => \fsm_reg[1]_1\ + ); +\gtx_channel.gtxe2_channel_i_i_6__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_16(15), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(15) + ); +\gtx_channel.gtxe2_channel_i_i_7__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_16(14), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(14) + ); +\gtx_channel.gtxe2_channel_i_i_8__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_16(13), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(13) + ); +\gtx_channel.gtxe2_channel_i_i_9__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_16(12), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(12) + ); +gtxreset_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => DRP_GTXRESET, + Q => gtxreset_reg1, + R => RST_DCLK_RESET + ); +gtxreset_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => gtxreset_reg1, + Q => gtxreset_reg2, + R => RST_DCLK_RESET + ); +\index[0]_i_1__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0100" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => fsm1, + I2 => index(0), + I3 => \fsm_reg_n_0_[2]\, + O => \index[0]_i_1__0_n_0\ + ); +\index[1]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00140000" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => index(1), + I2 => index(0), + I3 => fsm1, + I4 => \fsm_reg_n_0_[2]\, + O => \index[1]_i_1__0_n_0\ + ); +\index[2]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000144400000000" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => index(2), + I2 => index(1), + I3 => index(0), + I4 => fsm1, + I5 => \fsm_reg_n_0_[2]\, + O => \index[2]_i_1__0_n_0\ + ); +\index[3]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000144400000000" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => index(3), + I2 => index(2), + I3 => \index[3]_i_2__0_n_0\, + I4 => fsm1, + I5 => \fsm_reg_n_0_[2]\, + O => \index[3]_i_1__0_n_0\ + ); +\index[3]_i_2__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => index(1), + I1 => index(0), + O => \index[3]_i_2__0_n_0\ + ); +\index[4]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A1" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[2]\, + O => \index[4]_i_1__0_n_0\ + ); +\index[4]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000144400000000" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => index(4), + I2 => index(3), + I3 => \index[4]_i_3__0_n_0\, + I4 => fsm1, + I5 => \fsm_reg_n_0_[2]\, + O => \index[4]_i_2__0_n_0\ + ); +\index[4]_i_3__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"80" + ) + port map ( + I0 => index(2), + I1 => index(0), + I2 => index(1), + O => \index[4]_i_3__0_n_0\ + ); +\index[4]_i_4__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"1000000110000000" + ) + port map ( + I0 => index(3), + I1 => index(1), + I2 => index(0), + I3 => index(4), + I4 => index(2), + I5 => x16x20_mode_reg2, + O => fsm1 + ); +\index_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => \index[4]_i_1__0_n_0\, + D => \index[0]_i_1__0_n_0\, + Q => index(0), + R => RST_DCLK_RESET + ); +\index_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => \index[4]_i_1__0_n_0\, + D => \index[1]_i_1__0_n_0\, + Q => index(1), + R => RST_DCLK_RESET + ); +\index_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => \index[4]_i_1__0_n_0\, + D => \index[2]_i_1__0_n_0\, + Q => index(2), + R => RST_DCLK_RESET + ); +\index_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => \index[4]_i_1__0_n_0\, + D => \index[3]_i_1__0_n_0\, + Q => index(3), + R => RST_DCLK_RESET + ); +\index_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => \index[4]_i_1__0_n_0\, + D => \index[4]_i_2__0_n_0\, + Q => index(4), + R => RST_DCLK_RESET + ); +\load_cnt[0]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"10" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[0]\, + O => \load_cnt[0]_i_1__1_n_0\ + ); +\load_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \load_cnt[0]_i_1__1_n_0\, + Q => load_cnt(0), + R => RST_DCLK_RESET + ); +\rate_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => \rate_reg1_reg[0]_0\(0), + Q => rate_reg1(0), + R => RST_DCLK_RESET + ); +\rate_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => '0', + Q => rate_reg1(1), + R => RST_DCLK_RESET + ); +\rate_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => rate_reg1(0), + Q => rate_reg2(0), + R => RST_DCLK_RESET + ); +\rate_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => rate_reg1(1), + Q => rate_reg2(1), + R => RST_DCLK_RESET + ); +rdy_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => DRP_RDY, + Q => rdy_reg1, + R => RST_DCLK_RESET + ); +rdy_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => rdy_reg1, + Q => rdy_reg2, + R => RST_DCLK_RESET + ); +start_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => RATE_DRP_START, + Q => start_reg1, + R => RST_DCLK_RESET + ); +start_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => start_reg1, + Q => start_reg2, + R => RST_DCLK_RESET + ); +x16_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => RATE_DRP_X16, + Q => x16_reg1, + R => RST_DCLK_RESET + ); +x16_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => x16_reg1, + Q => x16_reg2, + R => RST_DCLK_RESET + ); +x16x20_mode_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => RATE_DRP_X16X20_MODE, + Q => x16x20_mode_reg1, + R => RST_DCLK_RESET + ); +x16x20_mode_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => x16x20_mode_reg1, + Q => x16x20_mode_reg2, + R => RST_DCLK_RESET + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pipe_drp_44 is + port ( + \fsm_reg[1]_0\ : out STD_LOGIC; + \fsm_reg[1]_1\ : out STD_LOGIC; + DRPADDR : out STD_LOGIC_VECTOR ( 7 downto 0 ); + DRPDI : out STD_LOGIC_VECTOR ( 15 downto 0 ); + DRP_DONE : out STD_LOGIC; + RST_DCLK_RESET : in STD_LOGIC; + RATE_DRP_X16X20_MODE : in STD_LOGIC; + pipe_dclk_in : in STD_LOGIC; + RATE_DRP_START : in STD_LOGIC; + DRP_RDY : in STD_LOGIC; + \rate_reg1_reg[0]_0\ : in STD_LOGIC_VECTOR ( 0 to 0 ); + RATE_DRP_X16 : in STD_LOGIC; + D : in STD_LOGIC_VECTOR ( 15 downto 0 ); + DRP_GTXRESET : in STD_LOGIC + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pipe_drp_44 : entity is "pcie_7x_0_pipe_drp"; +end pcie_7x_0_pcie_7x_0_pipe_drp_44; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pipe_drp_44 is + signal addr_reg : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal \addr_reg[4]_i_1__1_n_0\ : STD_LOGIC; + signal \addr_reg[6]_i_1__1_n_0\ : STD_LOGIC; + signal data_pma_rsv_a : STD_LOGIC_VECTOR ( 15 to 15 ); + signal di_reg : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal \di_reg[0]_i_2__1_n_0\ : STD_LOGIC; + signal \di_reg[0]_i_3__1_n_0\ : STD_LOGIC; + signal \di_reg[11]_i_2__1_n_0\ : STD_LOGIC; + signal \di_reg[11]_i_3__1_n_0\ : STD_LOGIC; + signal \di_reg[11]_i_4__1_n_0\ : STD_LOGIC; + signal \di_reg[11]_i_5__1_n_0\ : STD_LOGIC; + signal \di_reg[12]_i_2__1_n_0\ : STD_LOGIC; + signal \di_reg[12]_i_3__1_n_0\ : STD_LOGIC; + signal \di_reg[13]_i_2__1_n_0\ : STD_LOGIC; + signal \di_reg[13]_i_3__1_n_0\ : STD_LOGIC; + signal \di_reg[14]_i_2__1_n_0\ : STD_LOGIC; + signal \di_reg[15]_i_2__1_n_0\ : STD_LOGIC; + signal \di_reg[1]_i_2__1_n_0\ : STD_LOGIC; + signal \di_reg[1]_i_3__1_n_0\ : STD_LOGIC; + signal \di_reg[2]_i_2__1_n_0\ : STD_LOGIC; + signal \di_reg[2]_i_3__1_n_0\ : STD_LOGIC; + signal \di_reg[3]_i_2__1_n_0\ : STD_LOGIC; + signal \di_reg[3]_i_3__1_n_0\ : STD_LOGIC; + signal \di_reg[4]_i_2__1_n_0\ : STD_LOGIC; + signal \di_reg[4]_i_3__1_n_0\ : STD_LOGIC; + signal \di_reg[4]_i_4__1_n_0\ : STD_LOGIC; + signal \di_reg[5]_i_2__1_n_0\ : STD_LOGIC; + signal \di_reg[5]_i_3__1_n_0\ : STD_LOGIC; + signal \di_reg[6]_i_2__1_n_0\ : STD_LOGIC; + signal \di_reg[6]_i_3__1_n_0\ : STD_LOGIC; + signal \di_reg[7]_i_2__1_n_0\ : STD_LOGIC; + signal \di_reg[7]_i_3__1_n_0\ : STD_LOGIC; + signal do_reg1 : STD_LOGIC_VECTOR ( 15 downto 0 ); + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of do_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of do_reg1 : signal is "true"; + signal do_reg2 : STD_LOGIC_VECTOR ( 15 downto 0 ); + attribute SHIFT_EXTRACT of do_reg2 : signal is "NO"; + attribute async_reg of do_reg2 : signal is "true"; + signal \done_i_1__2_n_0\ : STD_LOGIC; + signal drp_addr_18 : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal drp_di_32 : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal fsm : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal fsm1 : STD_LOGIC; + signal \fsm[0]_i_2__5_n_0\ : STD_LOGIC; + signal \fsm_reg_n_0_[0]\ : STD_LOGIC; + signal \fsm_reg_n_0_[1]\ : STD_LOGIC; + signal \fsm_reg_n_0_[2]\ : STD_LOGIC; + signal gtxreset_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of gtxreset_reg1 : signal is "NO"; + attribute async_reg of gtxreset_reg1 : signal is "true"; + signal gtxreset_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of gtxreset_reg2 : signal is "NO"; + attribute async_reg of gtxreset_reg2 : signal is "true"; + signal index : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal \index[0]_i_1__1_n_0\ : STD_LOGIC; + signal \index[1]_i_1__1_n_0\ : STD_LOGIC; + signal \index[2]_i_1__1_n_0\ : STD_LOGIC; + signal \index[3]_i_1__1_n_0\ : STD_LOGIC; + signal \index[3]_i_2__1_n_0\ : STD_LOGIC; + signal \index[4]_i_1__1_n_0\ : STD_LOGIC; + signal \index[4]_i_2__1_n_0\ : STD_LOGIC; + signal \index[4]_i_3__1_n_0\ : STD_LOGIC; + signal load_cnt : STD_LOGIC_VECTOR ( 0 to 0 ); + signal \load_cnt[0]_i_1__2_n_0\ : STD_LOGIC; + signal rate_reg1 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rate_reg1 : signal is "NO"; + attribute async_reg of rate_reg1 : signal is "true"; + signal rate_reg2 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rate_reg2 : signal is "NO"; + attribute async_reg of rate_reg2 : signal is "true"; + signal rdy_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rdy_reg1 : signal is "NO"; + attribute async_reg of rdy_reg1 : signal is "true"; + signal rdy_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rdy_reg2 : signal is "NO"; + attribute async_reg of rdy_reg2 : signal is "true"; + signal start_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of start_reg1 : signal is "NO"; + attribute async_reg of start_reg1 : signal is "true"; + signal start_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of start_reg2 : signal is "NO"; + attribute async_reg of start_reg2 : signal is "true"; + signal x16_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of x16_reg1 : signal is "NO"; + attribute async_reg of x16_reg1 : signal is "true"; + signal x16_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of x16_reg2 : signal is "NO"; + attribute async_reg of x16_reg2 : signal is "true"; + signal x16x20_mode_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of x16x20_mode_reg1 : signal is "NO"; + attribute async_reg of x16x20_mode_reg1 : signal is "true"; + signal x16x20_mode_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of x16x20_mode_reg2 : signal is "NO"; + attribute async_reg of x16x20_mode_reg2 : signal is "true"; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \addr_reg[1]_i_1__1\ : label is "soft_lutpair124"; + attribute SOFT_HLUTNM of \addr_reg[2]_i_1__1\ : label is "soft_lutpair124"; + attribute SOFT_HLUTNM of \addr_reg[5]_i_1__1\ : label is "soft_lutpair123"; + attribute SOFT_HLUTNM of \addr_reg[6]_i_1__1\ : label is "soft_lutpair123"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of \do_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of \do_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[10]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[11]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[12]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[13]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[14]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[15]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[6]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[7]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[8]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[9]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[9]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[10]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[11]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[12]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[13]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[14]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[15]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[6]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[7]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[8]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[9]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[9]\ : label is "NO"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_10__1\ : label is "soft_lutpair135"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_11__1\ : label is "soft_lutpair135"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_12__1\ : label is "soft_lutpair134"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_13__1\ : label is "soft_lutpair134"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_14__1\ : label is "soft_lutpair133"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_15__1\ : label is "soft_lutpair133"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_16__1\ : label is "soft_lutpair132"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_17__1\ : label is "soft_lutpair132"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_18__1\ : label is "soft_lutpair131"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_19__1\ : label is "soft_lutpair131"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_20__1\ : label is "soft_lutpair130"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_21__1\ : label is "soft_lutpair130"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_39__2\ : label is "soft_lutpair129"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_3__1\ : label is "soft_lutpair125"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_40__1\ : label is "soft_lutpair129"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_41__1\ : label is "soft_lutpair128"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_42__1\ : label is "soft_lutpair128"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_43__1\ : label is "soft_lutpair127"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_44__1\ : label is "soft_lutpair127"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_45__1\ : label is "soft_lutpair126"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_46__1\ : label is "soft_lutpair125"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_4__1\ : label is "soft_lutpair126"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_6__1\ : label is "soft_lutpair137"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_7__1\ : label is "soft_lutpair137"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_8__1\ : label is "soft_lutpair136"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_9__1\ : label is "soft_lutpair136"; + attribute ASYNC_REG_boolean of gtxreset_reg1_reg : label is std.standard.true; + attribute KEEP of gtxreset_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of gtxreset_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of gtxreset_reg2_reg : label is std.standard.true; + attribute KEEP of gtxreset_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of gtxreset_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \index[0]_i_1__1\ : label is "soft_lutpair122"; + attribute SOFT_HLUTNM of \index[1]_i_1__1\ : label is "soft_lutpair122"; + attribute SOFT_HLUTNM of \index[3]_i_2__1\ : label is "soft_lutpair138"; + attribute SOFT_HLUTNM of \index[4]_i_3__1\ : label is "soft_lutpair138"; + attribute ASYNC_REG_boolean of \rate_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rate_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rate_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rate_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rate_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of rdy_reg1_reg : label is std.standard.true; + attribute KEEP of rdy_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rdy_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rdy_reg2_reg : label is std.standard.true; + attribute KEEP of rdy_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rdy_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of start_reg1_reg : label is std.standard.true; + attribute KEEP of start_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of start_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of start_reg2_reg : label is std.standard.true; + attribute KEEP of start_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of start_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of x16_reg1_reg : label is std.standard.true; + attribute KEEP of x16_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of x16_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of x16_reg2_reg : label is std.standard.true; + attribute KEEP of x16_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of x16_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of x16x20_mode_reg1_reg : label is std.standard.true; + attribute KEEP of x16x20_mode_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of x16x20_mode_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of x16x20_mode_reg2_reg : label is std.standard.true; + attribute KEEP of x16x20_mode_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of x16x20_mode_reg2_reg : label is "NO"; +begin +\addr_reg[0]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"1736415517364154" + ) + port map ( + I0 => index(4), + I1 => index(3), + I2 => index(2), + I3 => index(1), + I4 => index(0), + I5 => x16x20_mode_reg2, + O => addr_reg(0) + ); +\addr_reg[1]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"40500F00" + ) + port map ( + I0 => index(4), + I1 => index(0), + I2 => index(3), + I3 => index(1), + I4 => index(2), + O => addr_reg(1) + ); +\addr_reg[2]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"05105A00" + ) + port map ( + I0 => index(4), + I1 => index(0), + I2 => index(3), + I3 => index(2), + I4 => index(1), + O => addr_reg(2) + ); +\addr_reg[3]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"5767576753265327" + ) + port map ( + I0 => index(4), + I1 => index(3), + I2 => index(2), + I3 => index(1), + I4 => x16x20_mode_reg2, + I5 => index(0), + O => addr_reg(3) + ); +\addr_reg[4]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"00000000FAAFFF04" + ) + port map ( + I0 => index(0), + I1 => x16x20_mode_reg2, + I2 => index(1), + I3 => index(2), + I4 => index(3), + I5 => index(4), + O => \addr_reg[4]_i_1__1_n_0\ + ); +\addr_reg[5]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"001A0F0A" + ) + port map ( + I0 => index(4), + I1 => index(0), + I2 => index(3), + I3 => index(1), + I4 => index(2), + O => addr_reg(5) + ); +\addr_reg[6]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00001454" + ) + port map ( + I0 => index(2), + I1 => index(1), + I2 => index(3), + I3 => index(0), + I4 => index(4), + O => \addr_reg[6]_i_1__1_n_0\ + ); +\addr_reg[7]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"5252424223236263" + ) + port map ( + I0 => index(4), + I1 => index(3), + I2 => index(2), + I3 => x16x20_mode_reg2, + I4 => index(0), + I5 => index(1), + O => addr_reg(7) + ); +\addr_reg_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => addr_reg(0), + Q => drp_addr_18(0), + R => RST_DCLK_RESET + ); +\addr_reg_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => addr_reg(1), + Q => drp_addr_18(1), + R => RST_DCLK_RESET + ); +\addr_reg_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => addr_reg(2), + Q => drp_addr_18(2), + R => RST_DCLK_RESET + ); +\addr_reg_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => addr_reg(3), + Q => drp_addr_18(3), + R => RST_DCLK_RESET + ); +\addr_reg_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \addr_reg[4]_i_1__1_n_0\, + Q => drp_addr_18(4), + R => RST_DCLK_RESET + ); +\addr_reg_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => addr_reg(5), + Q => drp_addr_18(5), + R => RST_DCLK_RESET + ); +\addr_reg_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \addr_reg[6]_i_1__1_n_0\, + Q => drp_addr_18(6), + R => RST_DCLK_RESET + ); +\addr_reg_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => addr_reg(7), + Q => drp_addr_18(7), + R => RST_DCLK_RESET + ); +\di_reg[0]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FF5E7F6FA1001000" + ) + port map ( + I0 => index(3), + I1 => index(2), + I2 => index(1), + I3 => data_pma_rsv_a(15), + I4 => index(0), + I5 => do_reg2(0), + O => \di_reg[0]_i_2__1_n_0\ + ); +\di_reg[0]_i_3__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"000005D0" + ) + port map ( + I0 => index(0), + I1 => do_reg2(0), + I2 => index(2), + I3 => index(1), + I4 => index(3), + O => \di_reg[0]_i_3__1_n_0\ + ); +\di_reg[10]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"45555F5540000000" + ) + port map ( + I0 => index(4), + I1 => \di_reg[15]_i_2__1_n_0\, + I2 => index(1), + I3 => index(2), + I4 => index(3), + I5 => do_reg2(10), + O => di_reg(10) + ); +\di_reg[11]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"4F40DDDD4F408888" + ) + port map ( + I0 => index(3), + I1 => do_reg2(11), + I2 => index(1), + I3 => \di_reg[11]_i_4__1_n_0\, + I4 => index(2), + I5 => \di_reg[11]_i_5__1_n_0\, + O => \di_reg[11]_i_2__1_n_0\ + ); +\di_reg[11]_i_3__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000008080838" + ) + port map ( + I0 => do_reg2(11), + I1 => index(2), + I2 => index(1), + I3 => data_pma_rsv_a(15), + I4 => index(0), + I5 => index(3), + O => \di_reg[11]_i_3__1_n_0\ + ); +\di_reg[11]_i_4__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"B8BB" + ) + port map ( + I0 => do_reg2(11), + I1 => index(0), + I2 => rate_reg2(0), + I3 => rate_reg2(1), + O => \di_reg[11]_i_4__1_n_0\ + ); +\di_reg[11]_i_5__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"EFFF0100" + ) + port map ( + I0 => index(1), + I1 => index(0), + I2 => x16_reg2, + I3 => x16x20_mode_reg2, + I4 => do_reg2(11), + O => \di_reg[11]_i_5__1_n_0\ + ); +\di_reg[12]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"777EFFFF01080000" + ) + port map ( + I0 => index(3), + I1 => index(1), + I2 => index(0), + I3 => data_pma_rsv_a(15), + I4 => index(2), + I5 => do_reg2(12), + O => \di_reg[12]_i_2__1_n_0\ + ); +\di_reg[12]_i_3__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000B08" + ) + port map ( + I0 => do_reg2(12), + I1 => index(2), + I2 => index(1), + I3 => index(0), + I4 => index(3), + O => \di_reg[12]_i_3__1_n_0\ + ); +\di_reg[13]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"767FFFFF00090000" + ) + port map ( + I0 => index(3), + I1 => index(1), + I2 => index(0), + I3 => data_pma_rsv_a(15), + I4 => index(2), + I5 => do_reg2(13), + O => \di_reg[13]_i_2__1_n_0\ + ); +\di_reg[13]_i_3__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000008380808" + ) + port map ( + I0 => do_reg2(13), + I1 => index(2), + I2 => index(1), + I3 => index(0), + I4 => data_pma_rsv_a(15), + I5 => index(3), + O => \di_reg[13]_i_3__1_n_0\ + ); +\di_reg[14]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0040FFFF00400000" + ) + port map ( + I0 => index(1), + I1 => index(2), + I2 => do_reg2(14), + I3 => index(3), + I4 => index(4), + I5 => \di_reg[14]_i_2__1_n_0\, + O => di_reg(14) + ); +\di_reg[14]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"653BFFF721080080" + ) + port map ( + I0 => index(3), + I1 => index(1), + I2 => data_pma_rsv_a(15), + I3 => index(0), + I4 => index(2), + I5 => do_reg2(14), + O => \di_reg[14]_i_2__1_n_0\ + ); +\di_reg[14]_i_3__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"B" + ) + port map ( + I0 => rate_reg2(0), + I1 => rate_reg2(1), + O => data_pma_rsv_a(15) + ); +\di_reg[15]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"45555F5540000000" + ) + port map ( + I0 => index(4), + I1 => \di_reg[15]_i_2__1_n_0\, + I2 => index(1), + I3 => index(2), + I4 => index(3), + I5 => do_reg2(15), + O => di_reg(15) + ); +\di_reg[15]_i_2__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"0D" + ) + port map ( + I0 => rate_reg2(1), + I1 => rate_reg2(0), + I2 => index(0), + O => \di_reg[15]_i_2__1_n_0\ + ); +\di_reg[1]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"5FEE4E0076FF1000" + ) + port map ( + I0 => index(3), + I1 => index(2), + I2 => data_pma_rsv_a(15), + I3 => index(1), + I4 => do_reg2(1), + I5 => index(0), + O => \di_reg[1]_i_2__1_n_0\ + ); +\di_reg[1]_i_3__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"000005D0" + ) + port map ( + I0 => index(0), + I1 => do_reg2(1), + I2 => index(2), + I3 => index(1), + I4 => index(3), + O => \di_reg[1]_i_3__1_n_0\ + ); +\di_reg[2]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"5DEE080067FF0100" + ) + port map ( + I0 => index(3), + I1 => index(2), + I2 => data_pma_rsv_a(15), + I3 => index(1), + I4 => do_reg2(2), + I5 => index(0), + O => \di_reg[2]_i_2__1_n_0\ + ); +\di_reg[2]_i_3__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000380" + ) + port map ( + I0 => do_reg2(2), + I1 => index(0), + I2 => index(2), + I3 => index(1), + I4 => index(3), + O => \di_reg[2]_i_3__1_n_0\ + ); +\di_reg[3]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"43FFFFFF40000000" + ) + port map ( + I0 => data_pma_rsv_a(15), + I1 => index(2), + I2 => index(0), + I3 => index(1), + I4 => index(3), + I5 => do_reg2(3), + O => \di_reg[3]_i_2__1_n_0\ + ); +\di_reg[3]_i_3__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"000000000033D100" + ) + port map ( + I0 => data_pma_rsv_a(15), + I1 => index(0), + I2 => do_reg2(3), + I3 => index(2), + I4 => index(1), + I5 => index(3), + O => \di_reg[3]_i_3__1_n_0\ + ); +\di_reg[4]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"30BB3088" + ) + port map ( + I0 => \di_reg[4]_i_2__1_n_0\, + I1 => index(4), + I2 => \di_reg[4]_i_3__1_n_0\, + I3 => index(3), + I4 => \di_reg[4]_i_4__1_n_0\, + O => di_reg(4) + ); +\di_reg[4]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0F0400F0000400F0" + ) + port map ( + I0 => rate_reg2(0), + I1 => rate_reg2(1), + I2 => index(1), + I3 => index(2), + I4 => index(0), + I5 => do_reg2(4), + O => \di_reg[4]_i_2__1_n_0\ + ); +\di_reg[4]_i_3__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"400FFFFF40000000" + ) + port map ( + I0 => rate_reg2(0), + I1 => rate_reg2(1), + I2 => index(2), + I3 => index(0), + I4 => index(1), + I5 => do_reg2(4), + O => \di_reg[4]_i_3__1_n_0\ + ); +\di_reg[4]_i_4__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BF00BF01FF40FE40" + ) + port map ( + I0 => index(2), + I1 => index(1), + I2 => index(0), + I3 => do_reg2(4), + I4 => x16x20_mode_reg2, + I5 => data_pma_rsv_a(15), + O => \di_reg[4]_i_4__1_n_0\ + ); +\di_reg[5]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"7F7F7F7E00000000" + ) + port map ( + I0 => index(3), + I1 => index(2), + I2 => index(1), + I3 => index(0), + I4 => x16x20_mode_reg2, + I5 => do_reg2(5), + O => \di_reg[5]_i_2__1_n_0\ + ); +\di_reg[5]_i_3__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"00000000038F0380" + ) + port map ( + I0 => do_reg2(5), + I1 => index(0), + I2 => index(2), + I3 => index(1), + I4 => data_pma_rsv_a(15), + I5 => index(3), + O => \di_reg[5]_i_3__1_n_0\ + ); +\di_reg[6]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"7D7F7D7E00000000" + ) + port map ( + I0 => index(3), + I1 => index(2), + I2 => index(1), + I3 => index(0), + I4 => x16x20_mode_reg2, + I5 => do_reg2(6), + O => \di_reg[6]_i_2__1_n_0\ + ); +\di_reg[6]_i_3__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000380" + ) + port map ( + I0 => do_reg2(6), + I1 => index(0), + I2 => index(2), + I3 => index(1), + I4 => index(3), + O => \di_reg[6]_i_3__1_n_0\ + ); +\di_reg[7]_i_2__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"7FFF0900" + ) + port map ( + I0 => index(2), + I1 => index(1), + I2 => index(0), + I3 => index(3), + I4 => do_reg2(7), + O => \di_reg[7]_i_2__1_n_0\ + ); +\di_reg[7]_i_3__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000003800383" + ) + port map ( + I0 => do_reg2(7), + I1 => index(0), + I2 => index(2), + I3 => index(1), + I4 => data_pma_rsv_a(15), + I5 => index(3), + O => \di_reg[7]_i_3__1_n_0\ + ); +\di_reg[8]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"03333F7300000040" + ) + port map ( + I0 => index(0), + I1 => index(4), + I2 => index(1), + I3 => index(2), + I4 => index(3), + I5 => do_reg2(8), + O => di_reg(8) + ); +\di_reg[9]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"03333F7300000040" + ) + port map ( + I0 => index(0), + I1 => index(4), + I2 => index(1), + I3 => index(2), + I4 => index(3), + I5 => do_reg2(9), + O => di_reg(9) + ); +\di_reg_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(0), + Q => drp_di_32(0), + R => RST_DCLK_RESET + ); +\di_reg_reg[0]_i_1__1\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[0]_i_2__1_n_0\, + I1 => \di_reg[0]_i_3__1_n_0\, + O => di_reg(0), + S => index(4) + ); +\di_reg_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(10), + Q => drp_di_32(10), + R => RST_DCLK_RESET + ); +\di_reg_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(11), + Q => drp_di_32(11), + R => RST_DCLK_RESET + ); +\di_reg_reg[11]_i_1__1\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[11]_i_2__1_n_0\, + I1 => \di_reg[11]_i_3__1_n_0\, + O => di_reg(11), + S => index(4) + ); +\di_reg_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(12), + Q => drp_di_32(12), + R => RST_DCLK_RESET + ); +\di_reg_reg[12]_i_1__1\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[12]_i_2__1_n_0\, + I1 => \di_reg[12]_i_3__1_n_0\, + O => di_reg(12), + S => index(4) + ); +\di_reg_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(13), + Q => drp_di_32(13), + R => RST_DCLK_RESET + ); +\di_reg_reg[13]_i_1__1\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[13]_i_2__1_n_0\, + I1 => \di_reg[13]_i_3__1_n_0\, + O => di_reg(13), + S => index(4) + ); +\di_reg_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(14), + Q => drp_di_32(14), + R => RST_DCLK_RESET + ); +\di_reg_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(15), + Q => drp_di_32(15), + R => RST_DCLK_RESET + ); +\di_reg_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(1), + Q => drp_di_32(1), + R => RST_DCLK_RESET + ); +\di_reg_reg[1]_i_1__1\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[1]_i_2__1_n_0\, + I1 => \di_reg[1]_i_3__1_n_0\, + O => di_reg(1), + S => index(4) + ); +\di_reg_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(2), + Q => drp_di_32(2), + R => RST_DCLK_RESET + ); +\di_reg_reg[2]_i_1__1\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[2]_i_2__1_n_0\, + I1 => \di_reg[2]_i_3__1_n_0\, + O => di_reg(2), + S => index(4) + ); +\di_reg_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(3), + Q => drp_di_32(3), + R => RST_DCLK_RESET + ); +\di_reg_reg[3]_i_1__1\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[3]_i_2__1_n_0\, + I1 => \di_reg[3]_i_3__1_n_0\, + O => di_reg(3), + S => index(4) + ); +\di_reg_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(4), + Q => drp_di_32(4), + R => RST_DCLK_RESET + ); +\di_reg_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(5), + Q => drp_di_32(5), + R => RST_DCLK_RESET + ); +\di_reg_reg[5]_i_1__1\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[5]_i_2__1_n_0\, + I1 => \di_reg[5]_i_3__1_n_0\, + O => di_reg(5), + S => index(4) + ); +\di_reg_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(6), + Q => drp_di_32(6), + R => RST_DCLK_RESET + ); +\di_reg_reg[6]_i_1__1\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[6]_i_2__1_n_0\, + I1 => \di_reg[6]_i_3__1_n_0\, + O => di_reg(6), + S => index(4) + ); +\di_reg_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(7), + Q => drp_di_32(7), + R => RST_DCLK_RESET + ); +\di_reg_reg[7]_i_1__1\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[7]_i_2__1_n_0\, + I1 => \di_reg[7]_i_3__1_n_0\, + O => di_reg(7), + S => index(4) + ); +\di_reg_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(8), + Q => drp_di_32(8), + R => RST_DCLK_RESET + ); +\di_reg_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(9), + Q => drp_di_32(9), + R => RST_DCLK_RESET + ); +\do_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(0), + Q => do_reg1(0), + R => RST_DCLK_RESET + ); +\do_reg1_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(10), + Q => do_reg1(10), + R => RST_DCLK_RESET + ); +\do_reg1_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(11), + Q => do_reg1(11), + R => RST_DCLK_RESET + ); +\do_reg1_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(12), + Q => do_reg1(12), + R => RST_DCLK_RESET + ); +\do_reg1_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(13), + Q => do_reg1(13), + R => RST_DCLK_RESET + ); +\do_reg1_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(14), + Q => do_reg1(14), + R => RST_DCLK_RESET + ); +\do_reg1_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(15), + Q => do_reg1(15), + R => RST_DCLK_RESET + ); +\do_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(1), + Q => do_reg1(1), + R => RST_DCLK_RESET + ); +\do_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(2), + Q => do_reg1(2), + R => RST_DCLK_RESET + ); +\do_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(3), + Q => do_reg1(3), + R => RST_DCLK_RESET + ); +\do_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(4), + Q => do_reg1(4), + R => RST_DCLK_RESET + ); +\do_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(5), + Q => do_reg1(5), + R => RST_DCLK_RESET + ); +\do_reg1_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(6), + Q => do_reg1(6), + R => RST_DCLK_RESET + ); +\do_reg1_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(7), + Q => do_reg1(7), + R => RST_DCLK_RESET + ); +\do_reg1_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(8), + Q => do_reg1(8), + R => RST_DCLK_RESET + ); +\do_reg1_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(9), + Q => do_reg1(9), + R => RST_DCLK_RESET + ); +\do_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(0), + Q => do_reg2(0), + R => RST_DCLK_RESET + ); +\do_reg2_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(10), + Q => do_reg2(10), + R => RST_DCLK_RESET + ); +\do_reg2_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(11), + Q => do_reg2(11), + R => RST_DCLK_RESET + ); +\do_reg2_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(12), + Q => do_reg2(12), + R => RST_DCLK_RESET + ); +\do_reg2_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(13), + Q => do_reg2(13), + R => RST_DCLK_RESET + ); +\do_reg2_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(14), + Q => do_reg2(14), + R => RST_DCLK_RESET + ); +\do_reg2_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(15), + Q => do_reg2(15), + R => RST_DCLK_RESET + ); +\do_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(1), + Q => do_reg2(1), + R => RST_DCLK_RESET + ); +\do_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(2), + Q => do_reg2(2), + R => RST_DCLK_RESET + ); +\do_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(3), + Q => do_reg2(3), + R => RST_DCLK_RESET + ); +\do_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(4), + Q => do_reg2(4), + R => RST_DCLK_RESET + ); +\do_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(5), + Q => do_reg2(5), + R => RST_DCLK_RESET + ); +\do_reg2_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(6), + Q => do_reg2(6), + R => RST_DCLK_RESET + ); +\do_reg2_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(7), + Q => do_reg2(7), + R => RST_DCLK_RESET + ); +\do_reg2_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(8), + Q => do_reg2(8), + R => RST_DCLK_RESET + ); +\do_reg2_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(9), + Q => do_reg2(9), + R => RST_DCLK_RESET + ); +\done_i_1__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0001" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => start_reg2, + I3 => \fsm_reg_n_0_[1]\, + O => \done_i_1__2_n_0\ + ); +done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \done_i_1__2_n_0\, + Q => DRP_DONE, + R => RST_DCLK_RESET + ); +\fsm[0]_i_1__5\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0737FFFF07370000" + ) + port map ( + I0 => fsm1, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => rdy_reg2, + I4 => \fsm_reg_n_0_[2]\, + I5 => \fsm[0]_i_2__5_n_0\, + O => fsm(0) + ); +\fsm[0]_i_2__5\: unisim.vcomponents.LUT5 + generic map( + INIT => X"47FF47CC" + ) + port map ( + I0 => rdy_reg2, + I1 => \fsm_reg_n_0_[1]\, + I2 => load_cnt(0), + I3 => \fsm_reg_n_0_[0]\, + I4 => start_reg2, + O => \fsm[0]_i_2__5_n_0\ + ); +\fsm[1]_i_1__5\: unisim.vcomponents.LUT5 + generic map( + INIT => X"1D501850" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => rdy_reg2, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => load_cnt(0), + O => fsm(1) + ); +\fsm[2]_i_1__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"6222" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => rdy_reg2, + O => fsm(2) + ); +\fsm_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => fsm(0), + Q => \fsm_reg_n_0_[0]\, + R => RST_DCLK_RESET + ); +\fsm_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => fsm(1), + Q => \fsm_reg_n_0_[1]\, + R => RST_DCLK_RESET + ); +\fsm_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => fsm(2), + Q => \fsm_reg_n_0_[2]\, + R => RST_DCLK_RESET + ); +\gtx_channel.gtxe2_channel_i_i_10__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_32(11), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(11) + ); +\gtx_channel.gtxe2_channel_i_i_11__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_32(10), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(10) + ); +\gtx_channel.gtxe2_channel_i_i_12__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_32(9), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(9) + ); +\gtx_channel.gtxe2_channel_i_i_13__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_32(8), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(8) + ); +\gtx_channel.gtxe2_channel_i_i_14__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_32(7), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(7) + ); +\gtx_channel.gtxe2_channel_i_i_15__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_32(6), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(6) + ); +\gtx_channel.gtxe2_channel_i_i_16__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_32(5), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(5) + ); +\gtx_channel.gtxe2_channel_i_i_17__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_32(4), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(4) + ); +\gtx_channel.gtxe2_channel_i_i_18__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_32(3), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(3) + ); +\gtx_channel.gtxe2_channel_i_i_19__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_32(2), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(2) + ); +\gtx_channel.gtxe2_channel_i_i_20__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_32(1), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(1) + ); +\gtx_channel.gtxe2_channel_i_i_21__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_32(0), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(0) + ); +\gtx_channel.gtxe2_channel_i_i_39__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_18(7), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(7) + ); +\gtx_channel.gtxe2_channel_i_i_3__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"12" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[2]\, + O => \fsm_reg[1]_0\ + ); +\gtx_channel.gtxe2_channel_i_i_40__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_18(6), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(6) + ); +\gtx_channel.gtxe2_channel_i_i_41__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_18(5), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(5) + ); +\gtx_channel.gtxe2_channel_i_i_42__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_18(4), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(4) + ); +\gtx_channel.gtxe2_channel_i_i_43__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_18(3), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(3) + ); +\gtx_channel.gtxe2_channel_i_i_44__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_18(2), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(2) + ); +\gtx_channel.gtxe2_channel_i_i_45__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_18(1), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(1) + ); +\gtx_channel.gtxe2_channel_i_i_46__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_18(0), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(0) + ); +\gtx_channel.gtxe2_channel_i_i_4__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"10" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[2]\, + O => \fsm_reg[1]_1\ + ); +\gtx_channel.gtxe2_channel_i_i_6__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_32(15), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(15) + ); +\gtx_channel.gtxe2_channel_i_i_7__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_32(14), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(14) + ); +\gtx_channel.gtxe2_channel_i_i_8__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_32(13), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(13) + ); +\gtx_channel.gtxe2_channel_i_i_9__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_32(12), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(12) + ); +gtxreset_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => DRP_GTXRESET, + Q => gtxreset_reg1, + R => RST_DCLK_RESET + ); +gtxreset_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => gtxreset_reg1, + Q => gtxreset_reg2, + R => RST_DCLK_RESET + ); +\index[0]_i_1__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0100" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => fsm1, + I2 => index(0), + I3 => \fsm_reg_n_0_[2]\, + O => \index[0]_i_1__1_n_0\ + ); +\index[1]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00140000" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => index(1), + I2 => index(0), + I3 => fsm1, + I4 => \fsm_reg_n_0_[2]\, + O => \index[1]_i_1__1_n_0\ + ); +\index[2]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000144400000000" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => index(2), + I2 => index(1), + I3 => index(0), + I4 => fsm1, + I5 => \fsm_reg_n_0_[2]\, + O => \index[2]_i_1__1_n_0\ + ); +\index[3]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000144400000000" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => index(3), + I2 => index(2), + I3 => \index[3]_i_2__1_n_0\, + I4 => fsm1, + I5 => \fsm_reg_n_0_[2]\, + O => \index[3]_i_1__1_n_0\ + ); +\index[3]_i_2__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => index(1), + I1 => index(0), + O => \index[3]_i_2__1_n_0\ + ); +\index[4]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A1" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[2]\, + O => \index[4]_i_1__1_n_0\ + ); +\index[4]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000144400000000" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => index(4), + I2 => index(3), + I3 => \index[4]_i_3__1_n_0\, + I4 => fsm1, + I5 => \fsm_reg_n_0_[2]\, + O => \index[4]_i_2__1_n_0\ + ); +\index[4]_i_3__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"80" + ) + port map ( + I0 => index(2), + I1 => index(0), + I2 => index(1), + O => \index[4]_i_3__1_n_0\ + ); +\index[4]_i_4__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"1000000110000000" + ) + port map ( + I0 => index(3), + I1 => index(1), + I2 => index(0), + I3 => index(4), + I4 => index(2), + I5 => x16x20_mode_reg2, + O => fsm1 + ); +\index_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => \index[4]_i_1__1_n_0\, + D => \index[0]_i_1__1_n_0\, + Q => index(0), + R => RST_DCLK_RESET + ); +\index_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => \index[4]_i_1__1_n_0\, + D => \index[1]_i_1__1_n_0\, + Q => index(1), + R => RST_DCLK_RESET + ); +\index_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => \index[4]_i_1__1_n_0\, + D => \index[2]_i_1__1_n_0\, + Q => index(2), + R => RST_DCLK_RESET + ); +\index_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => \index[4]_i_1__1_n_0\, + D => \index[3]_i_1__1_n_0\, + Q => index(3), + R => RST_DCLK_RESET + ); +\index_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => \index[4]_i_1__1_n_0\, + D => \index[4]_i_2__1_n_0\, + Q => index(4), + R => RST_DCLK_RESET + ); +\load_cnt[0]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"10" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[0]\, + O => \load_cnt[0]_i_1__2_n_0\ + ); +\load_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \load_cnt[0]_i_1__2_n_0\, + Q => load_cnt(0), + R => RST_DCLK_RESET + ); +\rate_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => \rate_reg1_reg[0]_0\(0), + Q => rate_reg1(0), + R => RST_DCLK_RESET + ); +\rate_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => '0', + Q => rate_reg1(1), + R => RST_DCLK_RESET + ); +\rate_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => rate_reg1(0), + Q => rate_reg2(0), + R => RST_DCLK_RESET + ); +\rate_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => rate_reg1(1), + Q => rate_reg2(1), + R => RST_DCLK_RESET + ); +rdy_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => DRP_RDY, + Q => rdy_reg1, + R => RST_DCLK_RESET + ); +rdy_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => rdy_reg1, + Q => rdy_reg2, + R => RST_DCLK_RESET + ); +start_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => RATE_DRP_START, + Q => start_reg1, + R => RST_DCLK_RESET + ); +start_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => start_reg1, + Q => start_reg2, + R => RST_DCLK_RESET + ); +x16_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => RATE_DRP_X16, + Q => x16_reg1, + R => RST_DCLK_RESET + ); +x16_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => x16_reg1, + Q => x16_reg2, + R => RST_DCLK_RESET + ); +x16x20_mode_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => RATE_DRP_X16X20_MODE, + Q => x16x20_mode_reg1, + R => RST_DCLK_RESET + ); +x16x20_mode_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => x16x20_mode_reg1, + Q => x16x20_mode_reg2, + R => RST_DCLK_RESET + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pipe_drp_50 is + port ( + \fsm_reg[1]_0\ : out STD_LOGIC; + \fsm_reg[1]_1\ : out STD_LOGIC; + DRPADDR : out STD_LOGIC_VECTOR ( 7 downto 0 ); + DRPDI : out STD_LOGIC_VECTOR ( 15 downto 0 ); + DRP_DONE : out STD_LOGIC; + RST_DCLK_RESET : in STD_LOGIC; + RATE_DRP_X16X20_MODE : in STD_LOGIC; + pipe_dclk_in : in STD_LOGIC; + RATE_DRP_START : in STD_LOGIC; + DRP_RDY : in STD_LOGIC; + \rate_reg1_reg[0]_0\ : in STD_LOGIC_VECTOR ( 0 to 0 ); + RATE_DRP_X16 : in STD_LOGIC; + D : in STD_LOGIC_VECTOR ( 15 downto 0 ); + DRP_GTXRESET : in STD_LOGIC + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pipe_drp_50 : entity is "pcie_7x_0_pipe_drp"; +end pcie_7x_0_pcie_7x_0_pipe_drp_50; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pipe_drp_50 is + signal addr_reg : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal \addr_reg[4]_i_1__2_n_0\ : STD_LOGIC; + signal \addr_reg[6]_i_1__2_n_0\ : STD_LOGIC; + signal data_pma_rsv_a : STD_LOGIC_VECTOR ( 15 to 15 ); + signal di_reg : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal \di_reg[0]_i_2__2_n_0\ : STD_LOGIC; + signal \di_reg[0]_i_3__2_n_0\ : STD_LOGIC; + signal \di_reg[11]_i_2__2_n_0\ : STD_LOGIC; + signal \di_reg[11]_i_3__2_n_0\ : STD_LOGIC; + signal \di_reg[11]_i_4__2_n_0\ : STD_LOGIC; + signal \di_reg[11]_i_5__2_n_0\ : STD_LOGIC; + signal \di_reg[12]_i_2__2_n_0\ : STD_LOGIC; + signal \di_reg[12]_i_3__2_n_0\ : STD_LOGIC; + signal \di_reg[13]_i_2__2_n_0\ : STD_LOGIC; + signal \di_reg[13]_i_3__2_n_0\ : STD_LOGIC; + signal \di_reg[14]_i_2__2_n_0\ : STD_LOGIC; + signal \di_reg[15]_i_2__2_n_0\ : STD_LOGIC; + signal \di_reg[1]_i_2__2_n_0\ : STD_LOGIC; + signal \di_reg[1]_i_3__2_n_0\ : STD_LOGIC; + signal \di_reg[2]_i_2__2_n_0\ : STD_LOGIC; + signal \di_reg[2]_i_3__2_n_0\ : STD_LOGIC; + signal \di_reg[3]_i_2__2_n_0\ : STD_LOGIC; + signal \di_reg[3]_i_3__2_n_0\ : STD_LOGIC; + signal \di_reg[4]_i_2__2_n_0\ : STD_LOGIC; + signal \di_reg[4]_i_3__2_n_0\ : STD_LOGIC; + signal \di_reg[4]_i_4__2_n_0\ : STD_LOGIC; + signal \di_reg[5]_i_2__2_n_0\ : STD_LOGIC; + signal \di_reg[5]_i_3__2_n_0\ : STD_LOGIC; + signal \di_reg[6]_i_2__2_n_0\ : STD_LOGIC; + signal \di_reg[6]_i_3__2_n_0\ : STD_LOGIC; + signal \di_reg[7]_i_2__2_n_0\ : STD_LOGIC; + signal \di_reg[7]_i_3__2_n_0\ : STD_LOGIC; + signal do_reg1 : STD_LOGIC_VECTOR ( 15 downto 0 ); + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of do_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of do_reg1 : signal is "true"; + signal do_reg2 : STD_LOGIC_VECTOR ( 15 downto 0 ); + attribute SHIFT_EXTRACT of do_reg2 : signal is "NO"; + attribute async_reg of do_reg2 : signal is "true"; + signal \done_i_1__3_n_0\ : STD_LOGIC; + signal drp_addr_27 : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal drp_di_48 : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal fsm : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal fsm1 : STD_LOGIC; + signal \fsm[0]_i_2__7_n_0\ : STD_LOGIC; + signal \fsm_reg_n_0_[0]\ : STD_LOGIC; + signal \fsm_reg_n_0_[1]\ : STD_LOGIC; + signal \fsm_reg_n_0_[2]\ : STD_LOGIC; + signal gtxreset_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of gtxreset_reg1 : signal is "NO"; + attribute async_reg of gtxreset_reg1 : signal is "true"; + signal gtxreset_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of gtxreset_reg2 : signal is "NO"; + attribute async_reg of gtxreset_reg2 : signal is "true"; + signal index : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal \index[0]_i_1__2_n_0\ : STD_LOGIC; + signal \index[1]_i_1__2_n_0\ : STD_LOGIC; + signal \index[2]_i_1__2_n_0\ : STD_LOGIC; + signal \index[3]_i_1__2_n_0\ : STD_LOGIC; + signal \index[3]_i_2__2_n_0\ : STD_LOGIC; + signal \index[4]_i_1__2_n_0\ : STD_LOGIC; + signal \index[4]_i_2__2_n_0\ : STD_LOGIC; + signal \index[4]_i_3__2_n_0\ : STD_LOGIC; + signal load_cnt : STD_LOGIC_VECTOR ( 0 to 0 ); + signal \load_cnt[0]_i_1__3_n_0\ : STD_LOGIC; + signal rate_reg1 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rate_reg1 : signal is "NO"; + attribute async_reg of rate_reg1 : signal is "true"; + signal rate_reg2 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rate_reg2 : signal is "NO"; + attribute async_reg of rate_reg2 : signal is "true"; + signal rdy_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rdy_reg1 : signal is "NO"; + attribute async_reg of rdy_reg1 : signal is "true"; + signal rdy_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rdy_reg2 : signal is "NO"; + attribute async_reg of rdy_reg2 : signal is "true"; + signal start_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of start_reg1 : signal is "NO"; + attribute async_reg of start_reg1 : signal is "true"; + signal start_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of start_reg2 : signal is "NO"; + attribute async_reg of start_reg2 : signal is "true"; + signal x16_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of x16_reg1 : signal is "NO"; + attribute async_reg of x16_reg1 : signal is "true"; + signal x16_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of x16_reg2 : signal is "NO"; + attribute async_reg of x16_reg2 : signal is "true"; + signal x16x20_mode_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of x16x20_mode_reg1 : signal is "NO"; + attribute async_reg of x16x20_mode_reg1 : signal is "true"; + signal x16x20_mode_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of x16x20_mode_reg2 : signal is "NO"; + attribute async_reg of x16x20_mode_reg2 : signal is "true"; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \addr_reg[1]_i_1__2\ : label is "soft_lutpair165"; + attribute SOFT_HLUTNM of \addr_reg[2]_i_1__2\ : label is "soft_lutpair165"; + attribute SOFT_HLUTNM of \addr_reg[5]_i_1__2\ : label is "soft_lutpair164"; + attribute SOFT_HLUTNM of \addr_reg[6]_i_1__2\ : label is "soft_lutpair164"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of \do_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of \do_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[10]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[11]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[12]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[13]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[14]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[15]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[6]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[7]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[8]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[9]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[9]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[10]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[11]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[12]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[13]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[14]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[15]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[6]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[7]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[8]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[9]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[9]\ : label is "NO"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_10__2\ : label is "soft_lutpair177"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_11__2\ : label is "soft_lutpair176"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_12__2\ : label is "soft_lutpair176"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_13__2\ : label is "soft_lutpair175"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_14__2\ : label is "soft_lutpair175"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_15__2\ : label is "soft_lutpair174"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_16__2\ : label is "soft_lutpair174"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_17__2\ : label is "soft_lutpair173"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_18__2\ : label is "soft_lutpair173"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_19__2\ : label is "soft_lutpair172"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_20__2\ : label is "soft_lutpair172"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_21__2\ : label is "soft_lutpair171"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_22__2\ : label is "soft_lutpair171"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_3__2\ : label is "soft_lutpair166"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_40__2\ : label is "soft_lutpair170"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_41__2\ : label is "soft_lutpair170"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_42__2\ : label is "soft_lutpair169"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_43__2\ : label is "soft_lutpair169"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_44__2\ : label is "soft_lutpair168"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_45__2\ : label is "soft_lutpair168"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_46__2\ : label is "soft_lutpair167"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_47\ : label is "soft_lutpair166"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_4__2\ : label is "soft_lutpair167"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_7__2\ : label is "soft_lutpair178"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_8__2\ : label is "soft_lutpair178"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_9__2\ : label is "soft_lutpair177"; + attribute ASYNC_REG_boolean of gtxreset_reg1_reg : label is std.standard.true; + attribute KEEP of gtxreset_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of gtxreset_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of gtxreset_reg2_reg : label is std.standard.true; + attribute KEEP of gtxreset_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of gtxreset_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \index[0]_i_1__2\ : label is "soft_lutpair163"; + attribute SOFT_HLUTNM of \index[1]_i_1__2\ : label is "soft_lutpair163"; + attribute SOFT_HLUTNM of \index[3]_i_2__2\ : label is "soft_lutpair179"; + attribute SOFT_HLUTNM of \index[4]_i_3__2\ : label is "soft_lutpair179"; + attribute ASYNC_REG_boolean of \rate_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rate_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rate_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rate_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rate_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of rdy_reg1_reg : label is std.standard.true; + attribute KEEP of rdy_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rdy_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rdy_reg2_reg : label is std.standard.true; + attribute KEEP of rdy_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rdy_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of start_reg1_reg : label is std.standard.true; + attribute KEEP of start_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of start_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of start_reg2_reg : label is std.standard.true; + attribute KEEP of start_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of start_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of x16_reg1_reg : label is std.standard.true; + attribute KEEP of x16_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of x16_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of x16_reg2_reg : label is std.standard.true; + attribute KEEP of x16_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of x16_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of x16x20_mode_reg1_reg : label is std.standard.true; + attribute KEEP of x16x20_mode_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of x16x20_mode_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of x16x20_mode_reg2_reg : label is std.standard.true; + attribute KEEP of x16x20_mode_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of x16x20_mode_reg2_reg : label is "NO"; +begin +\addr_reg[0]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"1736415517364154" + ) + port map ( + I0 => index(4), + I1 => index(3), + I2 => index(2), + I3 => index(1), + I4 => index(0), + I5 => x16x20_mode_reg2, + O => addr_reg(0) + ); +\addr_reg[1]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"40500F00" + ) + port map ( + I0 => index(4), + I1 => index(0), + I2 => index(3), + I3 => index(1), + I4 => index(2), + O => addr_reg(1) + ); +\addr_reg[2]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"05105A00" + ) + port map ( + I0 => index(4), + I1 => index(0), + I2 => index(3), + I3 => index(2), + I4 => index(1), + O => addr_reg(2) + ); +\addr_reg[3]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"5767576753265327" + ) + port map ( + I0 => index(4), + I1 => index(3), + I2 => index(2), + I3 => index(1), + I4 => x16x20_mode_reg2, + I5 => index(0), + O => addr_reg(3) + ); +\addr_reg[4]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"00000000FAAFFF04" + ) + port map ( + I0 => index(0), + I1 => x16x20_mode_reg2, + I2 => index(1), + I3 => index(2), + I4 => index(3), + I5 => index(4), + O => \addr_reg[4]_i_1__2_n_0\ + ); +\addr_reg[5]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"001A0F0A" + ) + port map ( + I0 => index(4), + I1 => index(0), + I2 => index(3), + I3 => index(1), + I4 => index(2), + O => addr_reg(5) + ); +\addr_reg[6]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00001454" + ) + port map ( + I0 => index(2), + I1 => index(1), + I2 => index(3), + I3 => index(0), + I4 => index(4), + O => \addr_reg[6]_i_1__2_n_0\ + ); +\addr_reg[7]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"5252424223236263" + ) + port map ( + I0 => index(4), + I1 => index(3), + I2 => index(2), + I3 => x16x20_mode_reg2, + I4 => index(0), + I5 => index(1), + O => addr_reg(7) + ); +\addr_reg_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => addr_reg(0), + Q => drp_addr_27(0), + R => RST_DCLK_RESET + ); +\addr_reg_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => addr_reg(1), + Q => drp_addr_27(1), + R => RST_DCLK_RESET + ); +\addr_reg_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => addr_reg(2), + Q => drp_addr_27(2), + R => RST_DCLK_RESET + ); +\addr_reg_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => addr_reg(3), + Q => drp_addr_27(3), + R => RST_DCLK_RESET + ); +\addr_reg_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \addr_reg[4]_i_1__2_n_0\, + Q => drp_addr_27(4), + R => RST_DCLK_RESET + ); +\addr_reg_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => addr_reg(5), + Q => drp_addr_27(5), + R => RST_DCLK_RESET + ); +\addr_reg_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \addr_reg[6]_i_1__2_n_0\, + Q => drp_addr_27(6), + R => RST_DCLK_RESET + ); +\addr_reg_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => addr_reg(7), + Q => drp_addr_27(7), + R => RST_DCLK_RESET + ); +\di_reg[0]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FF5E7F6FA1001000" + ) + port map ( + I0 => index(3), + I1 => index(2), + I2 => index(1), + I3 => data_pma_rsv_a(15), + I4 => index(0), + I5 => do_reg2(0), + O => \di_reg[0]_i_2__2_n_0\ + ); +\di_reg[0]_i_3__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"000005D0" + ) + port map ( + I0 => index(0), + I1 => do_reg2(0), + I2 => index(2), + I3 => index(1), + I4 => index(3), + O => \di_reg[0]_i_3__2_n_0\ + ); +\di_reg[10]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"45555F5540000000" + ) + port map ( + I0 => index(4), + I1 => \di_reg[15]_i_2__2_n_0\, + I2 => index(1), + I3 => index(2), + I4 => index(3), + I5 => do_reg2(10), + O => di_reg(10) + ); +\di_reg[11]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"4F40DDDD4F408888" + ) + port map ( + I0 => index(3), + I1 => do_reg2(11), + I2 => index(1), + I3 => \di_reg[11]_i_4__2_n_0\, + I4 => index(2), + I5 => \di_reg[11]_i_5__2_n_0\, + O => \di_reg[11]_i_2__2_n_0\ + ); +\di_reg[11]_i_3__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000008080838" + ) + port map ( + I0 => do_reg2(11), + I1 => index(2), + I2 => index(1), + I3 => data_pma_rsv_a(15), + I4 => index(0), + I5 => index(3), + O => \di_reg[11]_i_3__2_n_0\ + ); +\di_reg[11]_i_4__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"B8BB" + ) + port map ( + I0 => do_reg2(11), + I1 => index(0), + I2 => rate_reg2(0), + I3 => rate_reg2(1), + O => \di_reg[11]_i_4__2_n_0\ + ); +\di_reg[11]_i_5__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"EFFF0100" + ) + port map ( + I0 => index(1), + I1 => index(0), + I2 => x16_reg2, + I3 => x16x20_mode_reg2, + I4 => do_reg2(11), + O => \di_reg[11]_i_5__2_n_0\ + ); +\di_reg[12]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"777EFFFF01080000" + ) + port map ( + I0 => index(3), + I1 => index(1), + I2 => index(0), + I3 => data_pma_rsv_a(15), + I4 => index(2), + I5 => do_reg2(12), + O => \di_reg[12]_i_2__2_n_0\ + ); +\di_reg[12]_i_3__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000B08" + ) + port map ( + I0 => do_reg2(12), + I1 => index(2), + I2 => index(1), + I3 => index(0), + I4 => index(3), + O => \di_reg[12]_i_3__2_n_0\ + ); +\di_reg[13]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"767FFFFF00090000" + ) + port map ( + I0 => index(3), + I1 => index(1), + I2 => index(0), + I3 => data_pma_rsv_a(15), + I4 => index(2), + I5 => do_reg2(13), + O => \di_reg[13]_i_2__2_n_0\ + ); +\di_reg[13]_i_3__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000008380808" + ) + port map ( + I0 => do_reg2(13), + I1 => index(2), + I2 => index(1), + I3 => index(0), + I4 => data_pma_rsv_a(15), + I5 => index(3), + O => \di_reg[13]_i_3__2_n_0\ + ); +\di_reg[14]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0040FFFF00400000" + ) + port map ( + I0 => index(1), + I1 => index(2), + I2 => do_reg2(14), + I3 => index(3), + I4 => index(4), + I5 => \di_reg[14]_i_2__2_n_0\, + O => di_reg(14) + ); +\di_reg[14]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"653BFFF721080080" + ) + port map ( + I0 => index(3), + I1 => index(1), + I2 => data_pma_rsv_a(15), + I3 => index(0), + I4 => index(2), + I5 => do_reg2(14), + O => \di_reg[14]_i_2__2_n_0\ + ); +\di_reg[14]_i_3\: unisim.vcomponents.LUT2 + generic map( + INIT => X"B" + ) + port map ( + I0 => rate_reg2(0), + I1 => rate_reg2(1), + O => data_pma_rsv_a(15) + ); +\di_reg[15]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"45555F5540000000" + ) + port map ( + I0 => index(4), + I1 => \di_reg[15]_i_2__2_n_0\, + I2 => index(1), + I3 => index(2), + I4 => index(3), + I5 => do_reg2(15), + O => di_reg(15) + ); +\di_reg[15]_i_2__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"0D" + ) + port map ( + I0 => rate_reg2(1), + I1 => rate_reg2(0), + I2 => index(0), + O => \di_reg[15]_i_2__2_n_0\ + ); +\di_reg[1]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"5FEE4E0076FF1000" + ) + port map ( + I0 => index(3), + I1 => index(2), + I2 => data_pma_rsv_a(15), + I3 => index(1), + I4 => do_reg2(1), + I5 => index(0), + O => \di_reg[1]_i_2__2_n_0\ + ); +\di_reg[1]_i_3__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"000005D0" + ) + port map ( + I0 => index(0), + I1 => do_reg2(1), + I2 => index(2), + I3 => index(1), + I4 => index(3), + O => \di_reg[1]_i_3__2_n_0\ + ); +\di_reg[2]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"5DEE080067FF0100" + ) + port map ( + I0 => index(3), + I1 => index(2), + I2 => data_pma_rsv_a(15), + I3 => index(1), + I4 => do_reg2(2), + I5 => index(0), + O => \di_reg[2]_i_2__2_n_0\ + ); +\di_reg[2]_i_3__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000380" + ) + port map ( + I0 => do_reg2(2), + I1 => index(0), + I2 => index(2), + I3 => index(1), + I4 => index(3), + O => \di_reg[2]_i_3__2_n_0\ + ); +\di_reg[3]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"43FFFFFF40000000" + ) + port map ( + I0 => data_pma_rsv_a(15), + I1 => index(2), + I2 => index(0), + I3 => index(1), + I4 => index(3), + I5 => do_reg2(3), + O => \di_reg[3]_i_2__2_n_0\ + ); +\di_reg[3]_i_3__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"000000000033D100" + ) + port map ( + I0 => data_pma_rsv_a(15), + I1 => index(0), + I2 => do_reg2(3), + I3 => index(2), + I4 => index(1), + I5 => index(3), + O => \di_reg[3]_i_3__2_n_0\ + ); +\di_reg[4]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"30BB3088" + ) + port map ( + I0 => \di_reg[4]_i_2__2_n_0\, + I1 => index(4), + I2 => \di_reg[4]_i_3__2_n_0\, + I3 => index(3), + I4 => \di_reg[4]_i_4__2_n_0\, + O => di_reg(4) + ); +\di_reg[4]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0F0400F0000400F0" + ) + port map ( + I0 => rate_reg2(0), + I1 => rate_reg2(1), + I2 => index(1), + I3 => index(2), + I4 => index(0), + I5 => do_reg2(4), + O => \di_reg[4]_i_2__2_n_0\ + ); +\di_reg[4]_i_3__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"400FFFFF40000000" + ) + port map ( + I0 => rate_reg2(0), + I1 => rate_reg2(1), + I2 => index(2), + I3 => index(0), + I4 => index(1), + I5 => do_reg2(4), + O => \di_reg[4]_i_3__2_n_0\ + ); +\di_reg[4]_i_4__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BF00BF01FF40FE40" + ) + port map ( + I0 => index(2), + I1 => index(1), + I2 => index(0), + I3 => do_reg2(4), + I4 => x16x20_mode_reg2, + I5 => data_pma_rsv_a(15), + O => \di_reg[4]_i_4__2_n_0\ + ); +\di_reg[5]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"7F7F7F7E00000000" + ) + port map ( + I0 => index(3), + I1 => index(2), + I2 => index(1), + I3 => index(0), + I4 => x16x20_mode_reg2, + I5 => do_reg2(5), + O => \di_reg[5]_i_2__2_n_0\ + ); +\di_reg[5]_i_3__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"00000000038F0380" + ) + port map ( + I0 => do_reg2(5), + I1 => index(0), + I2 => index(2), + I3 => index(1), + I4 => data_pma_rsv_a(15), + I5 => index(3), + O => \di_reg[5]_i_3__2_n_0\ + ); +\di_reg[6]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"7D7F7D7E00000000" + ) + port map ( + I0 => index(3), + I1 => index(2), + I2 => index(1), + I3 => index(0), + I4 => x16x20_mode_reg2, + I5 => do_reg2(6), + O => \di_reg[6]_i_2__2_n_0\ + ); +\di_reg[6]_i_3__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000380" + ) + port map ( + I0 => do_reg2(6), + I1 => index(0), + I2 => index(2), + I3 => index(1), + I4 => index(3), + O => \di_reg[6]_i_3__2_n_0\ + ); +\di_reg[7]_i_2__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"7FFF0900" + ) + port map ( + I0 => index(2), + I1 => index(1), + I2 => index(0), + I3 => index(3), + I4 => do_reg2(7), + O => \di_reg[7]_i_2__2_n_0\ + ); +\di_reg[7]_i_3__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000003800383" + ) + port map ( + I0 => do_reg2(7), + I1 => index(0), + I2 => index(2), + I3 => index(1), + I4 => data_pma_rsv_a(15), + I5 => index(3), + O => \di_reg[7]_i_3__2_n_0\ + ); +\di_reg[8]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"03333F7300000040" + ) + port map ( + I0 => index(0), + I1 => index(4), + I2 => index(1), + I3 => index(2), + I4 => index(3), + I5 => do_reg2(8), + O => di_reg(8) + ); +\di_reg[9]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"03333F7300000040" + ) + port map ( + I0 => index(0), + I1 => index(4), + I2 => index(1), + I3 => index(2), + I4 => index(3), + I5 => do_reg2(9), + O => di_reg(9) + ); +\di_reg_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(0), + Q => drp_di_48(0), + R => RST_DCLK_RESET + ); +\di_reg_reg[0]_i_1__2\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[0]_i_2__2_n_0\, + I1 => \di_reg[0]_i_3__2_n_0\, + O => di_reg(0), + S => index(4) + ); +\di_reg_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(10), + Q => drp_di_48(10), + R => RST_DCLK_RESET + ); +\di_reg_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(11), + Q => drp_di_48(11), + R => RST_DCLK_RESET + ); +\di_reg_reg[11]_i_1__2\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[11]_i_2__2_n_0\, + I1 => \di_reg[11]_i_3__2_n_0\, + O => di_reg(11), + S => index(4) + ); +\di_reg_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(12), + Q => drp_di_48(12), + R => RST_DCLK_RESET + ); +\di_reg_reg[12]_i_1__2\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[12]_i_2__2_n_0\, + I1 => \di_reg[12]_i_3__2_n_0\, + O => di_reg(12), + S => index(4) + ); +\di_reg_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(13), + Q => drp_di_48(13), + R => RST_DCLK_RESET + ); +\di_reg_reg[13]_i_1__2\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[13]_i_2__2_n_0\, + I1 => \di_reg[13]_i_3__2_n_0\, + O => di_reg(13), + S => index(4) + ); +\di_reg_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(14), + Q => drp_di_48(14), + R => RST_DCLK_RESET + ); +\di_reg_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(15), + Q => drp_di_48(15), + R => RST_DCLK_RESET + ); +\di_reg_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(1), + Q => drp_di_48(1), + R => RST_DCLK_RESET + ); +\di_reg_reg[1]_i_1__2\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[1]_i_2__2_n_0\, + I1 => \di_reg[1]_i_3__2_n_0\, + O => di_reg(1), + S => index(4) + ); +\di_reg_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(2), + Q => drp_di_48(2), + R => RST_DCLK_RESET + ); +\di_reg_reg[2]_i_1__2\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[2]_i_2__2_n_0\, + I1 => \di_reg[2]_i_3__2_n_0\, + O => di_reg(2), + S => index(4) + ); +\di_reg_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(3), + Q => drp_di_48(3), + R => RST_DCLK_RESET + ); +\di_reg_reg[3]_i_1__2\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[3]_i_2__2_n_0\, + I1 => \di_reg[3]_i_3__2_n_0\, + O => di_reg(3), + S => index(4) + ); +\di_reg_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(4), + Q => drp_di_48(4), + R => RST_DCLK_RESET + ); +\di_reg_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(5), + Q => drp_di_48(5), + R => RST_DCLK_RESET + ); +\di_reg_reg[5]_i_1__2\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[5]_i_2__2_n_0\, + I1 => \di_reg[5]_i_3__2_n_0\, + O => di_reg(5), + S => index(4) + ); +\di_reg_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(6), + Q => drp_di_48(6), + R => RST_DCLK_RESET + ); +\di_reg_reg[6]_i_1__2\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[6]_i_2__2_n_0\, + I1 => \di_reg[6]_i_3__2_n_0\, + O => di_reg(6), + S => index(4) + ); +\di_reg_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(7), + Q => drp_di_48(7), + R => RST_DCLK_RESET + ); +\di_reg_reg[7]_i_1__2\: unisim.vcomponents.MUXF7 + port map ( + I0 => \di_reg[7]_i_2__2_n_0\, + I1 => \di_reg[7]_i_3__2_n_0\, + O => di_reg(7), + S => index(4) + ); +\di_reg_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(8), + Q => drp_di_48(8), + R => RST_DCLK_RESET + ); +\di_reg_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di_reg(9), + Q => drp_di_48(9), + R => RST_DCLK_RESET + ); +\do_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(0), + Q => do_reg1(0), + R => RST_DCLK_RESET + ); +\do_reg1_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(10), + Q => do_reg1(10), + R => RST_DCLK_RESET + ); +\do_reg1_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(11), + Q => do_reg1(11), + R => RST_DCLK_RESET + ); +\do_reg1_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(12), + Q => do_reg1(12), + R => RST_DCLK_RESET + ); +\do_reg1_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(13), + Q => do_reg1(13), + R => RST_DCLK_RESET + ); +\do_reg1_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(14), + Q => do_reg1(14), + R => RST_DCLK_RESET + ); +\do_reg1_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(15), + Q => do_reg1(15), + R => RST_DCLK_RESET + ); +\do_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(1), + Q => do_reg1(1), + R => RST_DCLK_RESET + ); +\do_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(2), + Q => do_reg1(2), + R => RST_DCLK_RESET + ); +\do_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(3), + Q => do_reg1(3), + R => RST_DCLK_RESET + ); +\do_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(4), + Q => do_reg1(4), + R => RST_DCLK_RESET + ); +\do_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(5), + Q => do_reg1(5), + R => RST_DCLK_RESET + ); +\do_reg1_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(6), + Q => do_reg1(6), + R => RST_DCLK_RESET + ); +\do_reg1_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(7), + Q => do_reg1(7), + R => RST_DCLK_RESET + ); +\do_reg1_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(8), + Q => do_reg1(8), + R => RST_DCLK_RESET + ); +\do_reg1_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(9), + Q => do_reg1(9), + R => RST_DCLK_RESET + ); +\do_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(0), + Q => do_reg2(0), + R => RST_DCLK_RESET + ); +\do_reg2_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(10), + Q => do_reg2(10), + R => RST_DCLK_RESET + ); +\do_reg2_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(11), + Q => do_reg2(11), + R => RST_DCLK_RESET + ); +\do_reg2_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(12), + Q => do_reg2(12), + R => RST_DCLK_RESET + ); +\do_reg2_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(13), + Q => do_reg2(13), + R => RST_DCLK_RESET + ); +\do_reg2_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(14), + Q => do_reg2(14), + R => RST_DCLK_RESET + ); +\do_reg2_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(15), + Q => do_reg2(15), + R => RST_DCLK_RESET + ); +\do_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(1), + Q => do_reg2(1), + R => RST_DCLK_RESET + ); +\do_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(2), + Q => do_reg2(2), + R => RST_DCLK_RESET + ); +\do_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(3), + Q => do_reg2(3), + R => RST_DCLK_RESET + ); +\do_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(4), + Q => do_reg2(4), + R => RST_DCLK_RESET + ); +\do_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(5), + Q => do_reg2(5), + R => RST_DCLK_RESET + ); +\do_reg2_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(6), + Q => do_reg2(6), + R => RST_DCLK_RESET + ); +\do_reg2_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(7), + Q => do_reg2(7), + R => RST_DCLK_RESET + ); +\do_reg2_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(8), + Q => do_reg2(8), + R => RST_DCLK_RESET + ); +\do_reg2_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(9), + Q => do_reg2(9), + R => RST_DCLK_RESET + ); +\done_i_1__3\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0001" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => start_reg2, + I3 => \fsm_reg_n_0_[1]\, + O => \done_i_1__3_n_0\ + ); +done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \done_i_1__3_n_0\, + Q => DRP_DONE, + R => RST_DCLK_RESET + ); +\fsm[0]_i_1__7\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0737FFFF07370000" + ) + port map ( + I0 => fsm1, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => rdy_reg2, + I4 => \fsm_reg_n_0_[2]\, + I5 => \fsm[0]_i_2__7_n_0\, + O => fsm(0) + ); +\fsm[0]_i_2__7\: unisim.vcomponents.LUT5 + generic map( + INIT => X"47FF47CC" + ) + port map ( + I0 => rdy_reg2, + I1 => \fsm_reg_n_0_[1]\, + I2 => load_cnt(0), + I3 => \fsm_reg_n_0_[0]\, + I4 => start_reg2, + O => \fsm[0]_i_2__7_n_0\ + ); +\fsm[1]_i_1__7\: unisim.vcomponents.LUT5 + generic map( + INIT => X"1D501850" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => rdy_reg2, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => load_cnt(0), + O => fsm(1) + ); +\fsm[2]_i_1__3\: unisim.vcomponents.LUT4 + generic map( + INIT => X"6222" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => rdy_reg2, + O => fsm(2) + ); +\fsm_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => fsm(0), + Q => \fsm_reg_n_0_[0]\, + R => RST_DCLK_RESET + ); +\fsm_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => fsm(1), + Q => \fsm_reg_n_0_[1]\, + R => RST_DCLK_RESET + ); +\fsm_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => fsm(2), + Q => \fsm_reg_n_0_[2]\, + R => RST_DCLK_RESET + ); +\gtx_channel.gtxe2_channel_i_i_10__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_48(12), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(12) + ); +\gtx_channel.gtxe2_channel_i_i_11__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_48(11), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(11) + ); +\gtx_channel.gtxe2_channel_i_i_12__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_48(10), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(10) + ); +\gtx_channel.gtxe2_channel_i_i_13__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_48(9), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(9) + ); +\gtx_channel.gtxe2_channel_i_i_14__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_48(8), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(8) + ); +\gtx_channel.gtxe2_channel_i_i_15__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_48(7), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(7) + ); +\gtx_channel.gtxe2_channel_i_i_16__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_48(6), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(6) + ); +\gtx_channel.gtxe2_channel_i_i_17__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_48(5), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(5) + ); +\gtx_channel.gtxe2_channel_i_i_18__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_48(4), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(4) + ); +\gtx_channel.gtxe2_channel_i_i_19__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_48(3), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(3) + ); +\gtx_channel.gtxe2_channel_i_i_20__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_48(2), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(2) + ); +\gtx_channel.gtxe2_channel_i_i_21__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_48(1), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(1) + ); +\gtx_channel.gtxe2_channel_i_i_22__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_48(0), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(0) + ); +\gtx_channel.gtxe2_channel_i_i_3__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"12" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[2]\, + O => \fsm_reg[1]_0\ + ); +\gtx_channel.gtxe2_channel_i_i_40__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_27(7), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(7) + ); +\gtx_channel.gtxe2_channel_i_i_41__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_27(6), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(6) + ); +\gtx_channel.gtxe2_channel_i_i_42__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_27(5), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(5) + ); +\gtx_channel.gtxe2_channel_i_i_43__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_27(4), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(4) + ); +\gtx_channel.gtxe2_channel_i_i_44__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_27(3), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(3) + ); +\gtx_channel.gtxe2_channel_i_i_45__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_27(2), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(2) + ); +\gtx_channel.gtxe2_channel_i_i_46__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_27(1), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(1) + ); +\gtx_channel.gtxe2_channel_i_i_47\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_addr_27(0), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPADDR(0) + ); +\gtx_channel.gtxe2_channel_i_i_4__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"10" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[2]\, + O => \fsm_reg[1]_1\ + ); +\gtx_channel.gtxe2_channel_i_i_7__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_48(15), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(15) + ); +\gtx_channel.gtxe2_channel_i_i_8__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_48(14), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(14) + ); +\gtx_channel.gtxe2_channel_i_i_9__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AAA8" + ) + port map ( + I0 => drp_di_48(13), + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + O => DRPDI(13) + ); +gtxreset_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => DRP_GTXRESET, + Q => gtxreset_reg1, + R => RST_DCLK_RESET + ); +gtxreset_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => gtxreset_reg1, + Q => gtxreset_reg2, + R => RST_DCLK_RESET + ); +\index[0]_i_1__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0100" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => fsm1, + I2 => index(0), + I3 => \fsm_reg_n_0_[2]\, + O => \index[0]_i_1__2_n_0\ + ); +\index[1]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00140000" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => index(1), + I2 => index(0), + I3 => fsm1, + I4 => \fsm_reg_n_0_[2]\, + O => \index[1]_i_1__2_n_0\ + ); +\index[2]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000144400000000" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => index(2), + I2 => index(1), + I3 => index(0), + I4 => fsm1, + I5 => \fsm_reg_n_0_[2]\, + O => \index[2]_i_1__2_n_0\ + ); +\index[3]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000144400000000" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => index(3), + I2 => index(2), + I3 => \index[3]_i_2__2_n_0\, + I4 => fsm1, + I5 => \fsm_reg_n_0_[2]\, + O => \index[3]_i_1__2_n_0\ + ); +\index[3]_i_2__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => index(1), + I1 => index(0), + O => \index[3]_i_2__2_n_0\ + ); +\index[4]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A1" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[2]\, + O => \index[4]_i_1__2_n_0\ + ); +\index[4]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000144400000000" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => index(4), + I2 => index(3), + I3 => \index[4]_i_3__2_n_0\, + I4 => fsm1, + I5 => \fsm_reg_n_0_[2]\, + O => \index[4]_i_2__2_n_0\ + ); +\index[4]_i_3__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"80" + ) + port map ( + I0 => index(2), + I1 => index(0), + I2 => index(1), + O => \index[4]_i_3__2_n_0\ + ); +\index[4]_i_4__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"1000000110000000" + ) + port map ( + I0 => index(3), + I1 => index(1), + I2 => index(0), + I3 => index(4), + I4 => index(2), + I5 => x16x20_mode_reg2, + O => fsm1 + ); +\index_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => \index[4]_i_1__2_n_0\, + D => \index[0]_i_1__2_n_0\, + Q => index(0), + R => RST_DCLK_RESET + ); +\index_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => \index[4]_i_1__2_n_0\, + D => \index[1]_i_1__2_n_0\, + Q => index(1), + R => RST_DCLK_RESET + ); +\index_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => \index[4]_i_1__2_n_0\, + D => \index[2]_i_1__2_n_0\, + Q => index(2), + R => RST_DCLK_RESET + ); +\index_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => \index[4]_i_1__2_n_0\, + D => \index[3]_i_1__2_n_0\, + Q => index(3), + R => RST_DCLK_RESET + ); +\index_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => \index[4]_i_1__2_n_0\, + D => \index[4]_i_2__2_n_0\, + Q => index(4), + R => RST_DCLK_RESET + ); +\load_cnt[0]_i_1__3\: unisim.vcomponents.LUT3 + generic map( + INIT => X"10" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[0]\, + O => \load_cnt[0]_i_1__3_n_0\ + ); +\load_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \load_cnt[0]_i_1__3_n_0\, + Q => load_cnt(0), + R => RST_DCLK_RESET + ); +\rate_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => \rate_reg1_reg[0]_0\(0), + Q => rate_reg1(0), + R => RST_DCLK_RESET + ); +\rate_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => '0', + Q => rate_reg1(1), + R => RST_DCLK_RESET + ); +\rate_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => rate_reg1(0), + Q => rate_reg2(0), + R => RST_DCLK_RESET + ); +\rate_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => rate_reg1(1), + Q => rate_reg2(1), + R => RST_DCLK_RESET + ); +rdy_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => DRP_RDY, + Q => rdy_reg1, + R => RST_DCLK_RESET + ); +rdy_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => rdy_reg1, + Q => rdy_reg2, + R => RST_DCLK_RESET + ); +start_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => RATE_DRP_START, + Q => start_reg1, + R => RST_DCLK_RESET + ); +start_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => start_reg1, + Q => start_reg2, + R => RST_DCLK_RESET + ); +x16_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => RATE_DRP_X16, + Q => x16_reg1, + R => RST_DCLK_RESET + ); +x16_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => x16_reg1, + Q => x16_reg2, + R => RST_DCLK_RESET + ); +x16x20_mode_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => RATE_DRP_X16X20_MODE, + Q => x16x20_mode_reg1, + R => RST_DCLK_RESET + ); +x16x20_mode_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => x16x20_mode_reg1, + Q => x16x20_mode_reg2, + R => RST_DCLK_RESET + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pipe_rate is + port ( + SYNC_TXSYNC_START : out STD_LOGIC; + rxchbonden_0 : out STD_LOGIC; + USER_RATE_GEN3 : out STD_LOGIC; + RATE_DRP_START : out STD_LOGIC; + RATE_DRP_X16X20_MODE : out STD_LOGIC; + RATE_DRP_X16 : out STD_LOGIC; + USER_RATE_RXSYNC : out STD_LOGIC; + SYNC_RXSYNC_START : out STD_LOGIC; + USER_RATE_DONE : out STD_LOGIC; + USER_RESETOVRD_START : out STD_LOGIC; + SYNC_RATE_IDLE : out STD_LOGIC; + rate_txpmareset_0 : out STD_LOGIC; + RXSYSCLKSEL : out STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_pclk_sel_out : out STD_LOGIC_VECTOR ( 0 to 0 ); + RXRATE : out STD_LOGIC_VECTOR ( 0 to 0 ); + QRST_QPLLPD_IN : out STD_LOGIC_VECTOR ( 0 to 0 ); + rate_cpllpd_0 : out STD_LOGIC; + QRST_QPLLRESET_IN : out STD_LOGIC_VECTOR ( 0 to 0 ); + rate_cpllreset_0 : out STD_LOGIC; + RST_TXSYNC_START : in STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + \rate_in_reg1_reg[0]_0\ : in STD_LOGIC_VECTOR ( 0 to 0 ); + RST_IDLE : in STD_LOGIC; + QRST_CPLLLOCK : in STD_LOGIC_VECTOR ( 0 to 0 ); + RATE_QPLLLOCK : in STD_LOGIC; + RATE_DRP_DONE : in STD_LOGIC; + pipe_mmcm_lock_in : in STD_LOGIC; + RATE_PHYSTATUS : in STD_LOGIC; + USER_TXRESETDONE : in STD_LOGIC; + USER_RXRESETDONE : in STD_LOGIC; + RATE_TXRATEDONE : in STD_LOGIC; + RATE_RXRATEDONE : in STD_LOGIC; + RATE_TXSYNC_DONE : in STD_LOGIC; + user_active_lane_0 : in STD_LOGIC; + \out\ : in STD_LOGIC; + \fsm[0]_i_9_0\ : in STD_LOGIC + ); +end pcie_7x_0_pcie_7x_0_pipe_rate; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pipe_rate is + signal \^qrst_qpllpd_in\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal \^qrst_qpllreset_in\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal \^rxrate\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal \^rxsysclksel\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal \^user_rate_gen3\ : STD_LOGIC; + signal cplllock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of cplllock_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of cplllock_reg1 : signal is "true"; + signal cplllock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of cplllock_reg2 : signal is "NO"; + attribute async_reg of cplllock_reg2 : signal is "true"; + signal cpllpd_i_1_n_0 : STD_LOGIC; + signal \cpllreset_i_1__0_n_0\ : STD_LOGIC; + signal drp_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of drp_done_reg1 : signal is "NO"; + attribute async_reg of drp_done_reg1 : signal is "true"; + signal drp_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of drp_done_reg2 : signal is "NO"; + attribute async_reg of drp_done_reg2 : signal is "true"; + signal drp_start_i_1_n_0 : STD_LOGIC; + signal drp_x16_i_1_n_0 : STD_LOGIC; + signal drp_x16x20_mode_i_1_n_0 : STD_LOGIC; + signal fsm : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal fsm1 : STD_LOGIC; + signal \fsm[0]_i_10_n_0\ : STD_LOGIC; + signal \fsm[0]_i_11_n_0\ : STD_LOGIC; + signal \fsm[0]_i_12_n_0\ : STD_LOGIC; + signal \fsm[0]_i_2_n_0\ : STD_LOGIC; + signal \fsm[0]_i_3_n_0\ : STD_LOGIC; + signal \fsm[0]_i_4_n_0\ : STD_LOGIC; + signal \fsm[0]_i_5_n_0\ : STD_LOGIC; + signal \fsm[0]_i_7_n_0\ : STD_LOGIC; + signal \fsm[0]_i_8_n_0\ : STD_LOGIC; + signal \fsm[0]_i_9_n_0\ : STD_LOGIC; + signal \fsm[1]_i_2_n_0\ : STD_LOGIC; + signal \fsm[1]_i_3_n_0\ : STD_LOGIC; + signal \fsm[1]_i_4_n_0\ : STD_LOGIC; + signal \fsm[1]_i_5_n_0\ : STD_LOGIC; + signal \fsm[1]_i_6_n_0\ : STD_LOGIC; + signal \fsm[1]_i_7_n_0\ : STD_LOGIC; + signal \fsm[1]_i_8_n_0\ : STD_LOGIC; + signal \fsm[2]_i_2_n_0\ : STD_LOGIC; + signal \fsm[2]_i_3_n_0\ : STD_LOGIC; + signal \fsm[2]_i_4_n_0\ : STD_LOGIC; + signal \fsm[2]_i_5_n_0\ : STD_LOGIC; + signal \fsm[2]_i_6_n_0\ : STD_LOGIC; + signal \fsm[3]_i_2_n_0\ : STD_LOGIC; + signal \fsm[3]_i_3_n_0\ : STD_LOGIC; + signal \fsm[3]_i_4_n_0\ : STD_LOGIC; + signal \fsm[3]_i_6_n_0\ : STD_LOGIC; + signal \fsm[4]_i_2_n_0\ : STD_LOGIC; + signal \fsm[4]_i_3_n_0\ : STD_LOGIC; + signal \fsm_reg_n_0_[0]\ : STD_LOGIC; + signal \fsm_reg_n_0_[1]\ : STD_LOGIC; + signal \fsm_reg_n_0_[2]\ : STD_LOGIC; + signal \fsm_reg_n_0_[3]\ : STD_LOGIC; + signal \fsm_reg_n_0_[4]\ : STD_LOGIC; + signal gen3_exit : STD_LOGIC; + signal gen3_exit_i_1_n_0 : STD_LOGIC; + signal gen3_exit_i_2_n_0 : STD_LOGIC; + signal gen3_i_1_n_0 : STD_LOGIC; + signal gen3_i_2_n_0 : STD_LOGIC; + signal gen3_i_3_n_0 : STD_LOGIC; + signal mmcm_lock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of mmcm_lock_reg1 : signal is "NO"; + attribute async_reg of mmcm_lock_reg1 : signal is "true"; + signal mmcm_lock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of mmcm_lock_reg2 : signal is "NO"; + attribute async_reg of mmcm_lock_reg2 : signal is "true"; + signal \p_0_in__0\ : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal pclk_sel_i_1_n_0 : STD_LOGIC; + signal pclk_sel_i_2_n_0 : STD_LOGIC; + signal phystatus : STD_LOGIC; + signal phystatus_i_1_n_0 : STD_LOGIC; + signal phystatus_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of phystatus_reg1 : signal is "NO"; + attribute async_reg of phystatus_reg1 : signal is "true"; + signal phystatus_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of phystatus_reg2 : signal is "NO"; + attribute async_reg of phystatus_reg2 : signal is "true"; + signal \^pipe_pclk_sel_out\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal pll_lock : STD_LOGIC; + signal qplllock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of qplllock_reg1 : signal is "NO"; + attribute async_reg of qplllock_reg1 : signal is "true"; + signal qplllock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of qplllock_reg2 : signal is "NO"; + attribute async_reg of qplllock_reg2 : signal is "true"; + signal qpllpd : STD_LOGIC; + signal \qpllpd_i_1__0_n_0\ : STD_LOGIC; + signal qpllreset : STD_LOGIC; + signal \qpllreset_i_1__0_n_0\ : STD_LOGIC; + signal \^rate_cpllpd_0\ : STD_LOGIC; + signal \^rate_cpllreset_0\ : STD_LOGIC; + signal rate_in_reg1 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rate_in_reg1 : signal is "NO"; + attribute async_reg of rate_in_reg1 : signal is "true"; + signal rate_in_reg2 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rate_in_reg2 : signal is "NO"; + attribute async_reg of rate_in_reg2 : signal is "true"; + signal \rate_out[0]_i_1_n_0\ : STD_LOGIC; + signal \rate_out[0]_i_2_n_0\ : STD_LOGIC; + signal \^rate_txpmareset_0\ : STD_LOGIC; + signal ratedone : STD_LOGIC; + signal ratedone_i_1_n_0 : STD_LOGIC; + signal ratedone_i_2_n_0 : STD_LOGIC; + signal ratedone_i_3_n_0 : STD_LOGIC; + signal resetovrd_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of resetovrd_done_reg1 : signal is "NO"; + attribute async_reg of resetovrd_done_reg1 : signal is "true"; + signal resetovrd_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of resetovrd_done_reg2 : signal is "NO"; + attribute async_reg of resetovrd_done_reg2 : signal is "true"; + signal rst_idle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rst_idle_reg1 : signal is "NO"; + attribute async_reg of rst_idle_reg1 : signal is "true"; + signal rst_idle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rst_idle_reg2 : signal is "NO"; + attribute async_reg of rst_idle_reg2 : signal is "true"; + signal rxpmaresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxpmaresetdone_reg1 : signal is "NO"; + attribute async_reg of rxpmaresetdone_reg1 : signal is "true"; + signal rxpmaresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxpmaresetdone_reg2 : signal is "NO"; + attribute async_reg of rxpmaresetdone_reg2 : signal is "true"; + signal rxratedone : STD_LOGIC; + signal rxratedone_i_1_n_0 : STD_LOGIC; + signal rxratedone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxratedone_reg1 : signal is "NO"; + attribute async_reg of rxratedone_reg1 : signal is "true"; + signal rxratedone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxratedone_reg2 : signal is "NO"; + attribute async_reg of rxratedone_reg2 : signal is "true"; + signal rxresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxresetdone_reg1 : signal is "NO"; + attribute async_reg of rxresetdone_reg1 : signal is "true"; + signal rxresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxresetdone_reg2 : signal is "NO"; + attribute async_reg of rxresetdone_reg2 : signal is "true"; + signal rxsync_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsync_done_reg1 : signal is "NO"; + attribute async_reg of rxsync_done_reg1 : signal is "true"; + signal rxsync_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsync_done_reg2 : signal is "NO"; + attribute async_reg of rxsync_done_reg2 : signal is "true"; + signal \sysclksel[0]_i_1_n_0\ : STD_LOGIC; + signal \sysclksel[0]_i_2_n_0\ : STD_LOGIC; + signal \txdata_wait_cnt[3]_i_2_n_0\ : STD_LOGIC; + signal \txdata_wait_cnt[3]_i_3_n_0\ : STD_LOGIC; + signal txdata_wait_cnt_reg : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal txpmareset0 : STD_LOGIC; + signal txpmareset_i_1_n_0 : STD_LOGIC; + signal txpmareset_i_2_n_0 : STD_LOGIC; + signal txratedone : STD_LOGIC; + signal txratedone_i_1_n_0 : STD_LOGIC; + signal txratedone_i_2_n_0 : STD_LOGIC; + signal txratedone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txratedone_reg1 : signal is "NO"; + attribute async_reg of txratedone_reg1 : signal is "true"; + signal txratedone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txratedone_reg2 : signal is "NO"; + attribute async_reg of txratedone_reg2 : signal is "true"; + signal txresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txresetdone_reg1 : signal is "NO"; + attribute async_reg of txresetdone_reg1 : signal is "true"; + signal txresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txresetdone_reg2 : signal is "NO"; + attribute async_reg of txresetdone_reg2 : signal is "true"; + signal txsync_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsync_done_reg1 : signal is "NO"; + attribute async_reg of txsync_done_reg1 : signal is "true"; + signal txsync_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsync_done_reg2 : signal is "NO"; + attribute async_reg of txsync_done_reg2 : signal is "true"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of cplllock_reg1_reg : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of cplllock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of cplllock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of cplllock_reg2_reg : label is std.standard.true; + attribute KEEP of cplllock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of cplllock_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of cpllpd_i_2 : label is "soft_lutpair70"; + attribute SOFT_HLUTNM of \cpllreset_i_2__0\ : label is "soft_lutpair71"; + attribute ASYNC_REG_boolean of drp_done_reg1_reg : label is std.standard.true; + attribute KEEP of drp_done_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of drp_done_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of drp_done_reg2_reg : label is std.standard.true; + attribute KEEP of drp_done_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of drp_done_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of drp_start_i_1 : label is "soft_lutpair74"; + attribute SOFT_HLUTNM of drp_x16_i_1 : label is "soft_lutpair75"; + attribute SOFT_HLUTNM of drp_x16x20_mode_i_1 : label is "soft_lutpair76"; + attribute SOFT_HLUTNM of \fsm[0]_i_1\ : label is "soft_lutpair69"; + attribute SOFT_HLUTNM of \fsm[4]_i_3\ : label is "soft_lutpair78"; + attribute ASYNC_REG_boolean of mmcm_lock_reg1_reg : label is std.standard.true; + attribute KEEP of mmcm_lock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of mmcm_lock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of mmcm_lock_reg2_reg : label is std.standard.true; + attribute KEEP of mmcm_lock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of mmcm_lock_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of pclk_sel_i_2 : label is "soft_lutpair70"; + attribute ASYNC_REG_boolean of phystatus_reg1_reg : label is std.standard.true; + attribute KEEP of phystatus_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of phystatus_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of phystatus_reg2_reg : label is std.standard.true; + attribute KEEP of phystatus_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of phystatus_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of qplllock_reg1_reg : label is std.standard.true; + attribute KEEP of qplllock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of qplllock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of qplllock_reg2_reg : label is std.standard.true; + attribute KEEP of qplllock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of qplllock_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of rate_done_reg1_i_1 : label is "soft_lutpair74"; + attribute SOFT_HLUTNM of \rate_idle_reg1[0]_i_1\ : label is "soft_lutpair76"; + attribute ASYNC_REG_boolean of \rate_in_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rate_in_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_in_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_in_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rate_in_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_in_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_in_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rate_in_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_in_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_in_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rate_in_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_in_reg2_reg[1]\ : label is "NO"; + attribute SOFT_HLUTNM of rate_rxsync_reg1_i_1 : label is "soft_lutpair73"; + attribute SOFT_HLUTNM of ratedone_i_2 : label is "soft_lutpair72"; + attribute SOFT_HLUTNM of ratedone_i_3 : label is "soft_lutpair72"; + attribute ASYNC_REG_boolean of resetovrd_done_reg1_reg : label is std.standard.true; + attribute KEEP of resetovrd_done_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of resetovrd_done_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of resetovrd_done_reg2_reg : label is std.standard.true; + attribute KEEP of resetovrd_done_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of resetovrd_done_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of resetovrd_start_reg1_i_1 : label is "soft_lutpair75"; + attribute ASYNC_REG_boolean of rst_idle_reg1_reg : label is std.standard.true; + attribute KEEP of rst_idle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rst_idle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rst_idle_reg2_reg : label is std.standard.true; + attribute KEEP of rst_idle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rst_idle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxpmaresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of rxpmaresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxpmaresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxpmaresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of rxpmaresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxpmaresetdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxratedone_reg1_reg : label is std.standard.true; + attribute KEEP of rxratedone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxratedone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxratedone_reg2_reg : label is std.standard.true; + attribute KEEP of rxratedone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxratedone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of rxresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of rxresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxresetdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsync_done_reg1_reg : label is std.standard.true; + attribute KEEP of rxsync_done_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsync_done_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsync_done_reg2_reg : label is std.standard.true; + attribute KEEP of rxsync_done_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsync_done_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of rxsync_start_reg1_i_1 : label is "soft_lutpair73"; + attribute SOFT_HLUTNM of \sysclksel[0]_i_2\ : label is "soft_lutpair77"; + attribute SOFT_HLUTNM of \txdata_wait_cnt[3]_i_2\ : label is "soft_lutpair77"; + attribute SOFT_HLUTNM of \txdata_wait_cnt[3]_i_3\ : label is "soft_lutpair69"; + attribute SOFT_HLUTNM of txpmareset_i_2 : label is "soft_lutpair71"; + attribute SOFT_HLUTNM of txratedone_i_2 : label is "soft_lutpair78"; + attribute ASYNC_REG_boolean of txratedone_reg1_reg : label is std.standard.true; + attribute KEEP of txratedone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txratedone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txratedone_reg2_reg : label is std.standard.true; + attribute KEEP of txratedone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txratedone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of txresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of txresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txresetdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsync_done_reg1_reg : label is std.standard.true; + attribute KEEP of txsync_done_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsync_done_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsync_done_reg2_reg : label is std.standard.true; + attribute KEEP of txsync_done_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsync_done_reg2_reg : label is "NO"; +begin + QRST_QPLLPD_IN(0) <= \^qrst_qpllpd_in\(0); + QRST_QPLLRESET_IN(0) <= \^qrst_qpllreset_in\(0); + RXRATE(0) <= \^rxrate\(0); + RXSYSCLKSEL(0) <= \^rxsysclksel\(0); + USER_RATE_GEN3 <= \^user_rate_gen3\; + pipe_pclk_sel_out(0) <= \^pipe_pclk_sel_out\(0); + rate_cpllpd_0 <= \^rate_cpllpd_0\; + rate_cpllreset_0 <= \^rate_cpllreset_0\; + rate_txpmareset_0 <= \^rate_txpmareset_0\; +cplllock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => QRST_CPLLLOCK(0), + Q => cplllock_reg1, + R => RST_CPLLRESET + ); +cplllock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => cplllock_reg1, + Q => cplllock_reg2, + R => RST_CPLLRESET + ); +cpllpd_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"0400FFFF04000000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => rate_in_reg2(0), + I3 => rate_in_reg2(1), + I4 => qpllpd, + I5 => \^rate_cpllpd_0\, + O => cpllpd_i_1_n_0 + ); +cpllpd_i_2: unisim.vcomponents.LUT5 + generic map( + INIT => X"80000900" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => \fsm_reg_n_0_[3]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => \fsm_reg_n_0_[2]\, + O => qpllpd + ); +cpllpd_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => cpllpd_i_1_n_0, + Q => \^rate_cpllpd_0\, + R => RST_CPLLRESET + ); +\cpllreset_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0400FFFF04000000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => rate_in_reg2(0), + I3 => rate_in_reg2(1), + I4 => qpllreset, + I5 => \^rate_cpllreset_0\, + O => \cpllreset_i_1__0_n_0\ + ); +\cpllreset_i_2__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"80001004" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[3]\, + I3 => \fsm_reg_n_0_[4]\, + I4 => \fsm_reg_n_0_[0]\, + O => qpllreset + ); +cpllreset_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \cpllreset_i_1__0_n_0\, + Q => \^rate_cpllreset_0\, + R => RST_CPLLRESET + ); +drp_done_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RATE_DRP_DONE, + Q => drp_done_reg1, + R => RST_CPLLRESET + ); +drp_done_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => drp_done_reg1, + Q => drp_done_reg2, + R => RST_CPLLRESET + ); +drp_start_i_1: unisim.vcomponents.LUT5 + generic map( + INIT => X"08420100" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[4]\, + I3 => \fsm_reg_n_0_[2]\, + I4 => \fsm_reg_n_0_[0]\, + O => drp_start_i_1_n_0 + ); +drp_start_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => drp_start_i_1_n_0, + Q => RATE_DRP_START, + R => RST_CPLLRESET + ); +drp_x16_i_1: unisim.vcomponents.LUT5 + generic map( + INIT => X"20100014" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[0]\, + O => drp_x16_i_1_n_0 + ); +drp_x16_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => drp_x16_i_1_n_0, + Q => RATE_DRP_X16, + R => RST_CPLLRESET + ); +drp_x16x20_mode_i_1: unisim.vcomponents.LUT5 + generic map( + INIT => X"20080074" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[3]\, + I4 => \fsm_reg_n_0_[1]\, + O => drp_x16x20_mode_i_1_n_0 + ); +drp_x16x20_mode_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => drp_x16x20_mode_i_1_n_0, + Q => RATE_DRP_X16X20_MODE, + R => RST_CPLLRESET + ); +\fsm[0]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFF3210" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm[0]_i_2_n_0\, + I3 => \fsm[0]_i_3_n_0\, + I4 => \fsm[0]_i_4_n_0\, + O => fsm(0) + ); +\fsm[0]_i_10\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0901595100000000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => rxsync_done_reg2, + I4 => txsync_done_reg2, + I5 => \fsm_reg_n_0_[3]\, + O => \fsm[0]_i_10_n_0\ + ); +\fsm[0]_i_11\: unisim.vcomponents.LUT6 + generic map( + INIT => X"1101111101000110" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[3]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => rxpmaresetdone_reg2, + I5 => drp_done_reg2, + O => \fsm[0]_i_11_n_0\ + ); +\fsm[0]_i_12\: unisim.vcomponents.LUT5 + generic map( + INIT => X"20202320" + ) + port map ( + I0 => drp_done_reg2, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => mmcm_lock_reg2, + I4 => rxpmaresetdone_reg2, + O => \fsm[0]_i_12_n_0\ + ); +\fsm[0]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0F0F3F3F47444744" + ) + port map ( + I0 => drp_done_reg2, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm[0]_i_5_n_0\, + I4 => pll_lock, + I5 => \fsm_reg_n_0_[1]\, + O => \fsm[0]_i_2_n_0\ + ); +\fsm[0]_i_3\: unisim.vcomponents.LUT6 + generic map( + INIT => X"F3F3AAAAFF00AAAA" + ) + port map ( + I0 => \fsm[0]_i_7_n_0\, + I1 => \fsm_reg_n_0_[0]\, + I2 => drp_done_reg2, + I3 => \fsm[0]_i_8_n_0\, + I4 => \fsm_reg_n_0_[2]\, + I5 => \fsm_reg_n_0_[1]\, + O => \fsm[0]_i_3_n_0\ + ); +\fsm[0]_i_4\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFF4000000000" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm[0]_i_9_n_0\, + I3 => \fsm[0]_i_10_n_0\, + I4 => \fsm[0]_i_11_n_0\, + I5 => \fsm_reg_n_0_[4]\, + O => \fsm[0]_i_4_n_0\ + ); +\fsm[0]_i_5\: unisim.vcomponents.LUT4 + generic map( + INIT => X"6FF6" + ) + port map ( + I0 => rate_in_reg2(1), + I1 => rate_in_reg1(1), + I2 => rate_in_reg2(0), + I3 => rate_in_reg1(0), + O => \fsm[0]_i_5_n_0\ + ); +\fsm[0]_i_6\: unisim.vcomponents.LUT4 + generic map( + INIT => X"FB08" + ) + port map ( + I0 => qplllock_reg2, + I1 => rate_in_reg2(1), + I2 => rate_in_reg2(0), + I3 => cplllock_reg2, + O => pll_lock + ); +\fsm[0]_i_7\: unisim.vcomponents.LUT6 + generic map( + INIT => X"AAAAAAAAEAAAAAAA" + ) + port map ( + I0 => \fsm[0]_i_12_n_0\, + I1 => pll_lock, + I2 => rst_idle_reg2, + I3 => drp_done_reg2, + I4 => \fsm_reg_n_0_[1]\, + I5 => \fsm_reg_n_0_[0]\, + O => \fsm[0]_i_7_n_0\ + ); +\fsm[0]_i_8\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFF5D5500005D55" + ) + port map ( + I0 => user_active_lane_0, + I1 => txresetdone_reg2, + I2 => phystatus_reg2, + I3 => rxresetdone_reg2, + I4 => \fsm_reg_n_0_[0]\, + I5 => \fsm[1]_i_7_n_0\, + O => \fsm[0]_i_8_n_0\ + ); +\fsm[0]_i_9\: unisim.vcomponents.LUT5 + generic map( + INIT => X"33330FAA" + ) + port map ( + I0 => drp_done_reg2, + I1 => resetovrd_done_reg2, + I2 => fsm1, + I3 => \fsm_reg_n_0_[0]\, + I4 => \fsm_reg_n_0_[1]\, + O => \fsm[0]_i_9_n_0\ + ); +\fsm[1]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFE4FFE4FFE400E4" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm[1]_i_2_n_0\, + I2 => \fsm[1]_i_3_n_0\, + I3 => \fsm_reg_n_0_[4]\, + I4 => \fsm[1]_i_4_n_0\, + I5 => \fsm[1]_i_5_n_0\, + O => fsm(1) + ); +\fsm[1]_i_2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"3388F0CC" + ) + port map ( + I0 => drp_done_reg2, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm[1]_i_6_n_0\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[2]\, + O => \fsm[1]_i_2_n_0\ + ); +\fsm[1]_i_3\: unisim.vcomponents.LUT6 + generic map( + INIT => X"CC5500000033F000" + ) + port map ( + I0 => \fsm[1]_i_7_n_0\, + I1 => drp_done_reg2, + I2 => \fsm[1]_i_8_n_0\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[0]\, + I5 => \fsm_reg_n_0_[2]\, + O => \fsm[1]_i_3_n_0\ + ); +\fsm[1]_i_4\: unisim.vcomponents.LUT6 + generic map( + INIT => X"000000005FCF0000" + ) + port map ( + I0 => resetovrd_done_reg2, + I1 => drp_done_reg2, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + I4 => \fsm_reg_n_0_[1]\, + I5 => \fsm_reg_n_0_[3]\, + O => \fsm[1]_i_4_n_0\ + ); +\fsm[1]_i_5\: unisim.vcomponents.LUT6 + generic map( + INIT => X"143C547C00000000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => rxsync_done_reg2, + I4 => txsync_done_reg2, + I5 => \fsm_reg_n_0_[3]\, + O => \fsm[1]_i_5_n_0\ + ); +\fsm[1]_i_6\: unisim.vcomponents.LUT6 + generic map( + INIT => X"34F7FFFFFFFFFFFF" + ) + port map ( + I0 => qplllock_reg2, + I1 => rate_in_reg2(1), + I2 => rate_in_reg2(0), + I3 => cplllock_reg2, + I4 => rst_idle_reg2, + I5 => \fsm_reg_n_0_[0]\, + O => \fsm[1]_i_6_n_0\ + ); +\fsm[1]_i_7\: unisim.vcomponents.LUT4 + generic map( + INIT => X"7FFF" + ) + port map ( + I0 => txdata_wait_cnt_reg(3), + I1 => txdata_wait_cnt_reg(1), + I2 => txdata_wait_cnt_reg(0), + I3 => txdata_wait_cnt_reg(2), + O => \fsm[1]_i_7_n_0\ + ); +\fsm[1]_i_8\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFF04F7FFFF" + ) + port map ( + I0 => qplllock_reg2, + I1 => rate_in_reg2(1), + I2 => rate_in_reg2(0), + I3 => cplllock_reg2, + I4 => drp_done_reg2, + I5 => rst_idle_reg2, + O => \fsm[1]_i_8_n_0\ + ); +\fsm[2]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"EAFFAAAAAAAAAAAA" + ) + port map ( + I0 => \fsm[2]_i_4_n_0\, + I1 => drp_done_reg2, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[3]\, + I5 => \fsm_reg_n_0_[2]\, + O => \fsm[2]_i_2_n_0\ + ); +\fsm[2]_i_3\: unisim.vcomponents.LUT6 + generic map( + INIT => X"AFBAAAAAAAAAAAAA" + ) + port map ( + I0 => \fsm[2]_i_5_n_0\, + I1 => rxsync_done_reg2, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => \fsm_reg_n_0_[3]\, + I5 => \fsm_reg_n_0_[2]\, + O => \fsm[2]_i_3_n_0\ + ); +\fsm[2]_i_4\: unisim.vcomponents.LUT6 + generic map( + INIT => X"00FA554455005544" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm[3]_i_6_n_0\, + I2 => pll_lock, + I3 => \fsm_reg_n_0_[2]\, + I4 => \fsm_reg_n_0_[1]\, + I5 => \fsm_reg_n_0_[0]\, + O => \fsm[2]_i_4_n_0\ + ); +\fsm[2]_i_5\: unisim.vcomponents.LUT6 + generic map( + INIT => X"2000FFFF20000000" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => txsync_done_reg2, + I4 => \fsm_reg_n_0_[3]\, + I5 => \fsm[2]_i_6_n_0\, + O => \fsm[2]_i_5_n_0\ + ); +\fsm[2]_i_6\: unisim.vcomponents.LUT6 + generic map( + INIT => X"1CDC3C3C1CDCFCFC" + ) + port map ( + I0 => drp_done_reg2, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => resetovrd_done_reg2, + I4 => \fsm_reg_n_0_[1]\, + I5 => fsm1, + O => \fsm[2]_i_6_n_0\ + ); +\fsm[3]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFB0803080" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[3]\, + I4 => drp_done_reg2, + I5 => \fsm[3]_i_4_n_0\, + O => \fsm[3]_i_2_n_0\ + ); +\fsm[3]_i_3\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFF8880000F888" + ) + port map ( + I0 => \txdata_wait_cnt[3]_i_2_n_0\, + I1 => fsm1, + I2 => resetovrd_done_reg2, + I3 => \sysclksel[0]_i_2_n_0\, + I4 => \fsm_reg_n_0_[3]\, + I5 => \fsm[4]_i_2_n_0\, + O => \fsm[3]_i_3_n_0\ + ); +\fsm[3]_i_4\: unisim.vcomponents.LUT6 + generic map( + INIT => X"00000000EEFF00F0" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm[1]_i_8_n_0\, + I2 => \fsm[3]_i_6_n_0\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[3]\, + I5 => \fsm_reg_n_0_[2]\, + O => \fsm[3]_i_4_n_0\ + ); +\fsm[3]_i_5\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFF8F8FFF8" + ) + port map ( + I0 => \out\, + I1 => \fsm[0]_i_9_0\, + I2 => ratedone, + I3 => rate_in_reg2(1), + I4 => rate_in_reg2(0), + I5 => gen3_exit, + O => fsm1 + ); +\fsm[3]_i_6\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00504414" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => rate_in_reg1(0), + I2 => rate_in_reg2(0), + I3 => rate_in_reg1(1), + I4 => rate_in_reg2(1), + O => \fsm[3]_i_6_n_0\ + ); +\fsm[4]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"C5F0CFF0C0F0C0F0" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm[4]_i_2_n_0\, + I2 => \fsm_reg_n_0_[4]\, + I3 => \fsm_reg_n_0_[3]\, + I4 => drp_done_reg2, + I5 => \fsm[4]_i_3_n_0\, + O => fsm(4) + ); +\fsm[4]_i_2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"26FF" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => rxsync_done_reg2, + I3 => \fsm_reg_n_0_[2]\, + O => \fsm[4]_i_2_n_0\ + ); +\fsm[4]_i_3\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[2]\, + O => \fsm[4]_i_3_n_0\ + ); +\fsm_reg[0]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => fsm(0), + Q => \fsm_reg_n_0_[0]\, + S => RST_CPLLRESET + ); +\fsm_reg[1]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => fsm(1), + Q => \fsm_reg_n_0_[1]\, + S => RST_CPLLRESET + ); +\fsm_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => fsm(2), + Q => \fsm_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\fsm_reg[2]_i_1\: unisim.vcomponents.MUXF7 + port map ( + I0 => \fsm[2]_i_2_n_0\, + I1 => \fsm[2]_i_3_n_0\, + O => fsm(2), + S => \fsm_reg_n_0_[4]\ + ); +\fsm_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => fsm(3), + Q => \fsm_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\fsm_reg[3]_i_1\: unisim.vcomponents.MUXF7 + port map ( + I0 => \fsm[3]_i_2_n_0\, + I1 => \fsm[3]_i_3_n_0\, + O => fsm(3), + S => \fsm_reg_n_0_[4]\ + ); +\fsm_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => fsm(4), + Q => \fsm_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +gen3_exit_i_1: unisim.vcomponents.LUT5 + generic map( + INIT => X"04FF0400" + ) + port map ( + I0 => rate_in_reg2(0), + I1 => rate_in_reg2(1), + I2 => \fsm_reg_n_0_[4]\, + I3 => gen3_exit_i_2_n_0, + I4 => gen3_exit, + O => gen3_exit_i_1_n_0 + ); +gen3_exit_i_2: unisim.vcomponents.LUT6 + generic map( + INIT => X"8000000180000000" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[3]\, + I4 => \fsm_reg_n_0_[4]\, + I5 => \fsm[0]_i_5_n_0\, + O => gen3_exit_i_2_n_0 + ); +gen3_exit_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => gen3_exit_i_1_n_0, + Q => gen3_exit, + R => RST_CPLLRESET + ); +gen3_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"3FFFFFFB00000008" + ) + port map ( + I0 => gen3_i_2_n_0, + I1 => gen3_i_3_n_0, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[4]\, + I5 => \^user_rate_gen3\, + O => gen3_i_1_n_0 + ); +gen3_i_2: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => rate_in_reg2(1), + I1 => rate_in_reg2(0), + O => gen3_i_2_n_0 + ); +gen3_i_3: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[0]\, + O => gen3_i_3_n_0 + ); +gen3_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => gen3_i_1_n_0, + Q => \^user_rate_gen3\, + R => RST_CPLLRESET + ); +\gtx_channel.gtxe2_channel_i_i_5\: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => \^user_rate_gen3\, + O => rxchbonden_0 + ); +mmcm_lock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_mmcm_lock_in, + Q => mmcm_lock_reg1, + R => RST_CPLLRESET + ); +mmcm_lock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => mmcm_lock_reg1, + Q => mmcm_lock_reg2, + R => RST_CPLLRESET + ); +pclk_sel_i_1: unisim.vcomponents.LUT5 + generic map( + INIT => X"14FF1400" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => rate_in_reg2(1), + I2 => rate_in_reg2(0), + I3 => pclk_sel_i_2_n_0, + I4 => \^pipe_pclk_sel_out\(0), + O => pclk_sel_i_1_n_0 + ); +pclk_sel_i_2: unisim.vcomponents.LUT5 + generic map( + INIT => X"80022000" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[0]\, + O => pclk_sel_i_2_n_0 + ); +pclk_sel_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => pclk_sel_i_1_n_0, + Q => \^pipe_pclk_sel_out\(0), + R => RST_CPLLRESET + ); +phystatus_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"0800080008000000" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => txratedone_i_2_n_0, + I3 => \fsm_reg_n_0_[0]\, + I4 => phystatus_reg2, + I5 => phystatus, + O => phystatus_i_1_n_0 + ); +phystatus_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => phystatus_i_1_n_0, + Q => phystatus, + R => RST_CPLLRESET + ); +phystatus_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RATE_PHYSTATUS, + Q => phystatus_reg1, + R => RST_CPLLRESET + ); +phystatus_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => phystatus_reg1, + Q => phystatus_reg2, + R => RST_CPLLRESET + ); +qplllock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RATE_QPLLLOCK, + Q => qplllock_reg1, + R => RST_CPLLRESET + ); +qplllock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => qplllock_reg1, + Q => qplllock_reg2, + R => RST_CPLLRESET + ); +\qpllpd_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"4044FFFF40440000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => rate_in_reg2(0), + I3 => rate_in_reg2(1), + I4 => qpllpd, + I5 => \^qrst_qpllpd_in\(0), + O => \qpllpd_i_1__0_n_0\ + ); +qpllpd_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \qpllpd_i_1__0_n_0\, + Q => \^qrst_qpllpd_in\(0), + R => RST_CPLLRESET + ); +\qpllreset_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"4044FFFF40440000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => rate_in_reg2(0), + I3 => rate_in_reg2(1), + I4 => qpllreset, + I5 => \^qrst_qpllreset_in\(0), + O => \qpllreset_i_1__0_n_0\ + ); +qpllreset_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \qpllreset_i_1__0_n_0\, + Q => \^qrst_qpllreset_in\(0), + R => RST_CPLLRESET + ); +rate_done_reg1_i_1: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000080" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => \fsm_reg_n_0_[1]\, + O => USER_RATE_DONE + ); +\rate_idle_reg1[0]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000001" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[4]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[3]\, + O => SYNC_RATE_IDLE + ); +\rate_in_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rate_in_reg1_reg[0]_0\(0), + Q => rate_in_reg1(0), + R => RST_CPLLRESET + ); +\rate_in_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rate_in_reg1(1), + R => RST_CPLLRESET + ); +\rate_in_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rate_in_reg1(0), + Q => rate_in_reg2(0), + R => RST_CPLLRESET + ); +\rate_in_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rate_in_reg1(1), + Q => rate_in_reg2(1), + R => RST_CPLLRESET + ); +\rate_out[0]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0444FFFF04440000" + ) + port map ( + I0 => rate_in_reg2(1), + I1 => rate_in_reg2(0), + I2 => \fsm_reg_n_0_[4]\, + I3 => \fsm_reg_n_0_[3]\, + I4 => \rate_out[0]_i_2_n_0\, + I5 => \^rxrate\(0), + O => \rate_out[0]_i_1_n_0\ + ); +\rate_out[0]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"8002020080000200" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[4]\, + I4 => \fsm_reg_n_0_[3]\, + I5 => txpmareset0, + O => \rate_out[0]_i_2_n_0\ + ); +\rate_out[0]_i_3\: unisim.vcomponents.LUT3 + generic map( + INIT => X"BA" + ) + port map ( + I0 => gen3_exit, + I1 => rate_in_reg2(0), + I2 => rate_in_reg2(1), + O => txpmareset0 + ); +\rate_out_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rate_out[0]_i_1_n_0\, + Q => \^rxrate\(0), + R => RST_CPLLRESET + ); +rate_rxsync_reg1_i_1: unisim.vcomponents.LUT5 + generic map( + INIT => X"08800000" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => \fsm_reg_n_0_[2]\, + O => USER_RATE_RXSYNC + ); +ratedone_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"A3333333A0000000" + ) + port map ( + I0 => ratedone_i_2_n_0, + I1 => ratedone_i_3_n_0, + I2 => rxratedone, + I3 => phystatus, + I4 => txratedone, + I5 => ratedone, + O => ratedone_i_1_n_0 + ); +ratedone_i_2: unisim.vcomponents.LUT5 + generic map( + INIT => X"00080000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm_reg_n_0_[3]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[0]\, + O => ratedone_i_2_n_0 + ); +ratedone_i_3: unisim.vcomponents.LUT5 + generic map( + INIT => X"FDFFFFFF" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[3]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[2]\, + I4 => \fsm_reg_n_0_[4]\, + O => ratedone_i_3_n_0 + ); +ratedone_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => ratedone_i_1_n_0, + Q => ratedone, + R => RST_CPLLRESET + ); +resetovrd_done_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '1', + Q => resetovrd_done_reg1, + R => RST_CPLLRESET + ); +resetovrd_done_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => resetovrd_done_reg1, + Q => resetovrd_done_reg2, + R => RST_CPLLRESET + ); +resetovrd_start_reg1_i_1: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000080" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => \fsm_reg_n_0_[3]\, + O => USER_RESETOVRD_START + ); +rst_idle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RST_IDLE, + Q => rst_idle_reg1, + R => RST_CPLLRESET + ); +rst_idle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rst_idle_reg1, + Q => rst_idle_reg2, + R => RST_CPLLRESET + ); +rxpmaresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxpmaresetdone_reg1, + R => RST_CPLLRESET + ); +rxpmaresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxpmaresetdone_reg1, + Q => rxpmaresetdone_reg2, + R => RST_CPLLRESET + ); +rxratedone_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"0800080008000000" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => txratedone_i_2_n_0, + I3 => \fsm_reg_n_0_[0]\, + I4 => rxratedone_reg2, + I5 => rxratedone, + O => rxratedone_i_1_n_0 + ); +rxratedone_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxratedone_i_1_n_0, + Q => rxratedone, + R => RST_CPLLRESET + ); +rxratedone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RATE_RXRATEDONE, + Q => rxratedone_reg1, + R => RST_CPLLRESET + ); +rxratedone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxratedone_reg1, + Q => rxratedone_reg2, + R => RST_CPLLRESET + ); +rxresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_RXRESETDONE, + Q => rxresetdone_reg1, + R => RST_CPLLRESET + ); +rxresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxresetdone_reg1, + Q => rxresetdone_reg2, + R => RST_CPLLRESET + ); +rxsync_done_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxsync_done_reg1, + R => RST_CPLLRESET + ); +rxsync_done_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxsync_done_reg1, + Q => rxsync_done_reg2, + R => RST_CPLLRESET + ); +rxsync_start_reg1_i_1: unisim.vcomponents.LUT5 + generic map( + INIT => X"08000000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[4]\, + I4 => \fsm_reg_n_0_[3]\, + O => SYNC_RXSYNC_START + ); +\sysclksel[0]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0FFFFF4F00000040" + ) + port map ( + I0 => rate_in_reg2(0), + I1 => rate_in_reg2(1), + I2 => \sysclksel[0]_i_2_n_0\, + I3 => \fsm_reg_n_0_[3]\, + I4 => \fsm_reg_n_0_[4]\, + I5 => \^rxsysclksel\(0), + O => \sysclksel[0]_i_1_n_0\ + ); +\sysclksel[0]_i_2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"80" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + O => \sysclksel[0]_i_2_n_0\ + ); +\sysclksel_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \sysclksel[0]_i_1_n_0\, + Q => \^rxsysclksel\(0), + R => RST_CPLLRESET + ); +\txdata_wait_cnt[0]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"B333000000000000" + ) + port map ( + I0 => txdata_wait_cnt_reg(1), + I1 => txdata_wait_cnt_reg(0), + I2 => txdata_wait_cnt_reg(2), + I3 => txdata_wait_cnt_reg(3), + I4 => \txdata_wait_cnt[3]_i_2_n_0\, + I5 => \txdata_wait_cnt[3]_i_3_n_0\, + O => \p_0_in__0\(0) + ); +\txdata_wait_cnt[1]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"E666000000000000" + ) + port map ( + I0 => txdata_wait_cnt_reg(1), + I1 => txdata_wait_cnt_reg(0), + I2 => txdata_wait_cnt_reg(2), + I3 => txdata_wait_cnt_reg(3), + I4 => \txdata_wait_cnt[3]_i_2_n_0\, + I5 => \txdata_wait_cnt[3]_i_3_n_0\, + O => \p_0_in__0\(1) + ); +\txdata_wait_cnt[2]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"F878000000000000" + ) + port map ( + I0 => txdata_wait_cnt_reg(1), + I1 => txdata_wait_cnt_reg(0), + I2 => txdata_wait_cnt_reg(2), + I3 => txdata_wait_cnt_reg(3), + I4 => \txdata_wait_cnt[3]_i_2_n_0\, + I5 => \txdata_wait_cnt[3]_i_3_n_0\, + O => \p_0_in__0\(2) + ); +\txdata_wait_cnt[3]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FF80000000000000" + ) + port map ( + I0 => txdata_wait_cnt_reg(1), + I1 => txdata_wait_cnt_reg(0), + I2 => txdata_wait_cnt_reg(2), + I3 => txdata_wait_cnt_reg(3), + I4 => \txdata_wait_cnt[3]_i_2_n_0\, + I5 => \txdata_wait_cnt[3]_i_3_n_0\, + O => \p_0_in__0\(3) + ); +\txdata_wait_cnt[3]_i_2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"40" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[2]\, + O => \txdata_wait_cnt[3]_i_2_n_0\ + ); +\txdata_wait_cnt[3]_i_3\: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[4]\, + O => \txdata_wait_cnt[3]_i_3_n_0\ + ); +\txdata_wait_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(0), + Q => txdata_wait_cnt_reg(0), + R => RST_CPLLRESET + ); +\txdata_wait_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(1), + Q => txdata_wait_cnt_reg(1), + R => RST_CPLLRESET + ); +\txdata_wait_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(2), + Q => txdata_wait_cnt_reg(2), + R => RST_CPLLRESET + ); +\txdata_wait_cnt_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(3), + Q => txdata_wait_cnt_reg(3), + R => RST_CPLLRESET + ); +txpmareset_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"00F2FFFF00F20000" + ) + port map ( + I0 => rate_in_reg2(1), + I1 => rate_in_reg2(0), + I2 => gen3_exit, + I3 => \fsm_reg_n_0_[3]\, + I4 => txpmareset_i_2_n_0, + I5 => \^rate_txpmareset_0\, + O => txpmareset_i_1_n_0 + ); +txpmareset_i_2: unisim.vcomponents.LUT5 + generic map( + INIT => X"80004200" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[3]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[4]\, + O => txpmareset_i_2_n_0 + ); +txpmareset_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => txpmareset_i_1_n_0, + Q => \^rate_txpmareset_0\, + R => RST_CPLLRESET + ); +txratedone_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"0800080008000000" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => txratedone_i_2_n_0, + I3 => \fsm_reg_n_0_[0]\, + I4 => txratedone_reg2, + I5 => txratedone, + O => txratedone_i_1_n_0 + ); +txratedone_i_2: unisim.vcomponents.LUT2 + generic map( + INIT => X"E" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[1]\, + O => txratedone_i_2_n_0 + ); +txratedone_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => txratedone_i_1_n_0, + Q => txratedone, + R => RST_CPLLRESET + ); +txratedone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RATE_TXRATEDONE, + Q => txratedone_reg1, + R => RST_CPLLRESET + ); +txratedone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txratedone_reg1, + Q => txratedone_reg2, + R => RST_CPLLRESET + ); +txresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_TXRESETDONE, + Q => txresetdone_reg1, + R => RST_CPLLRESET + ); +txresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txresetdone_reg1, + Q => txresetdone_reg2, + R => RST_CPLLRESET + ); +txsync_done_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RATE_TXSYNC_DONE, + Q => txsync_done_reg1, + R => RST_CPLLRESET + ); +txsync_done_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txsync_done_reg1, + Q => txsync_done_reg2, + R => RST_CPLLRESET + ); +txsync_start_reg1_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFF00004000" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[4]\, + I3 => \fsm_reg_n_0_[3]\, + I4 => \fsm_reg_n_0_[2]\, + I5 => RST_TXSYNC_START, + O => SYNC_TXSYNC_START + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pipe_rate_40 is + port ( + SYNC_TXSYNC_START : out STD_LOGIC; + QPLL_DRP_GEN3 : out STD_LOGIC; + rate_gen3_1 : out STD_LOGIC; + rxchbonden_1 : out STD_LOGIC; + RATE_DRP_START : out STD_LOGIC; + RATE_DRP_X16X20_MODE : out STD_LOGIC; + RATE_DRP_X16 : out STD_LOGIC; + USER_RATE_RXSYNC : out STD_LOGIC; + SYNC_RXSYNC_START : out STD_LOGIC; + USER_RATE_DONE : out STD_LOGIC; + USER_RESETOVRD_START : out STD_LOGIC; + SYNC_RATE_IDLE : out STD_LOGIC; + rate_txpmareset_1 : out STD_LOGIC; + RXSYSCLKSEL : out STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_pclk_sel_out : out STD_LOGIC_VECTOR ( 0 to 0 ); + RXRATE : out STD_LOGIC_VECTOR ( 0 to 0 ); + QRST_QPLLPD_IN : out STD_LOGIC_VECTOR ( 0 to 0 ); + rate_cpllpd_1 : out STD_LOGIC; + QRST_QPLLRESET_IN : out STD_LOGIC_VECTOR ( 0 to 0 ); + rate_cpllreset_1 : out STD_LOGIC; + RST_TXSYNC_START : in STD_LOGIC; + USER_RATE_GEN3 : in STD_LOGIC; + rate_gen3_3 : in STD_LOGIC; + rate_gen3_2 : in STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + \rate_in_reg1_reg[0]_0\ : in STD_LOGIC_VECTOR ( 0 to 0 ); + RST_IDLE : in STD_LOGIC; + QRST_CPLLLOCK : in STD_LOGIC_VECTOR ( 0 to 0 ); + RATE_QPLLLOCK : in STD_LOGIC; + RATE_DRP_DONE : in STD_LOGIC; + pipe_mmcm_lock_in : in STD_LOGIC; + RATE_PHYSTATUS : in STD_LOGIC; + USER_TXRESETDONE : in STD_LOGIC; + USER_RXRESETDONE : in STD_LOGIC; + RATE_TXRATEDONE : in STD_LOGIC; + RATE_RXRATEDONE : in STD_LOGIC; + RATE_TXSYNC_DONE : in STD_LOGIC; + user_active_lane_1 : in STD_LOGIC; + \out\ : in STD_LOGIC; + \fsm[0]_i_9__0_0\ : in STD_LOGIC + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pipe_rate_40 : entity is "pcie_7x_0_pipe_rate"; +end pcie_7x_0_pcie_7x_0_pipe_rate_40; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pipe_rate_40 is + signal \^qrst_qpllpd_in\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal \^qrst_qpllreset_in\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal \^rxrate\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal \^rxsysclksel\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal cplllock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of cplllock_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of cplllock_reg1 : signal is "true"; + signal cplllock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of cplllock_reg2 : signal is "NO"; + attribute async_reg of cplllock_reg2 : signal is "true"; + signal \cpllpd_i_1__0_n_0\ : STD_LOGIC; + signal \cpllreset_i_1__1_n_0\ : STD_LOGIC; + signal drp_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of drp_done_reg1 : signal is "NO"; + attribute async_reg of drp_done_reg1 : signal is "true"; + signal drp_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of drp_done_reg2 : signal is "NO"; + attribute async_reg of drp_done_reg2 : signal is "true"; + signal \drp_start_i_1__0_n_0\ : STD_LOGIC; + signal \drp_x16_i_1__0_n_0\ : STD_LOGIC; + signal \drp_x16x20_mode_i_1__0_n_0\ : STD_LOGIC; + signal fsm : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal fsm1 : STD_LOGIC; + signal \fsm[0]_i_10__0_n_0\ : STD_LOGIC; + signal \fsm[0]_i_11__0_n_0\ : STD_LOGIC; + signal \fsm[0]_i_12__0_n_0\ : STD_LOGIC; + signal \fsm[0]_i_2__2_n_0\ : STD_LOGIC; + signal \fsm[0]_i_3__0_n_0\ : STD_LOGIC; + signal \fsm[0]_i_4__0_n_0\ : STD_LOGIC; + signal \fsm[0]_i_5__0_n_0\ : STD_LOGIC; + signal \fsm[0]_i_7__0_n_0\ : STD_LOGIC; + signal \fsm[0]_i_8__0_n_0\ : STD_LOGIC; + signal \fsm[0]_i_9__0_n_0\ : STD_LOGIC; + signal \fsm[1]_i_2__1_n_0\ : STD_LOGIC; + signal \fsm[1]_i_3__0_n_0\ : STD_LOGIC; + signal \fsm[1]_i_4__0_n_0\ : STD_LOGIC; + signal \fsm[1]_i_5__0_n_0\ : STD_LOGIC; + signal \fsm[1]_i_6__0_n_0\ : STD_LOGIC; + signal \fsm[1]_i_7__0_n_0\ : STD_LOGIC; + signal \fsm[1]_i_8__0_n_0\ : STD_LOGIC; + signal \fsm[2]_i_2__0_n_0\ : STD_LOGIC; + signal \fsm[2]_i_3__0_n_0\ : STD_LOGIC; + signal \fsm[2]_i_4__0_n_0\ : STD_LOGIC; + signal \fsm[2]_i_5__0_n_0\ : STD_LOGIC; + signal \fsm[2]_i_6__0_n_0\ : STD_LOGIC; + signal \fsm[3]_i_2__0_n_0\ : STD_LOGIC; + signal \fsm[3]_i_3__0_n_0\ : STD_LOGIC; + signal \fsm[3]_i_4__0_n_0\ : STD_LOGIC; + signal \fsm[3]_i_6__0_n_0\ : STD_LOGIC; + signal \fsm[4]_i_2__0_n_0\ : STD_LOGIC; + signal \fsm[4]_i_3__0_n_0\ : STD_LOGIC; + signal \fsm_reg_n_0_[0]\ : STD_LOGIC; + signal \fsm_reg_n_0_[1]\ : STD_LOGIC; + signal \fsm_reg_n_0_[2]\ : STD_LOGIC; + signal \fsm_reg_n_0_[3]\ : STD_LOGIC; + signal \fsm_reg_n_0_[4]\ : STD_LOGIC; + signal gen3_exit : STD_LOGIC; + signal \gen3_exit_i_1__0_n_0\ : STD_LOGIC; + signal \gen3_exit_i_2__0_n_0\ : STD_LOGIC; + signal \gen3_i_1__0_n_0\ : STD_LOGIC; + signal \gen3_i_2__0_n_0\ : STD_LOGIC; + signal \gen3_i_3__0_n_0\ : STD_LOGIC; + signal mmcm_lock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of mmcm_lock_reg1 : signal is "NO"; + attribute async_reg of mmcm_lock_reg1 : signal is "true"; + signal mmcm_lock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of mmcm_lock_reg2 : signal is "NO"; + attribute async_reg of mmcm_lock_reg2 : signal is "true"; + signal \p_0_in__0\ : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal \pclk_sel_i_1__0_n_0\ : STD_LOGIC; + signal \pclk_sel_i_2__0_n_0\ : STD_LOGIC; + signal phystatus : STD_LOGIC; + signal \phystatus_i_1__0_n_0\ : STD_LOGIC; + signal phystatus_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of phystatus_reg1 : signal is "NO"; + attribute async_reg of phystatus_reg1 : signal is "true"; + signal phystatus_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of phystatus_reg2 : signal is "NO"; + attribute async_reg of phystatus_reg2 : signal is "true"; + signal \^pipe_pclk_sel_out\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal pll_lock : STD_LOGIC; + signal qplllock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of qplllock_reg1 : signal is "NO"; + attribute async_reg of qplllock_reg1 : signal is "true"; + signal qplllock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of qplllock_reg2 : signal is "NO"; + attribute async_reg of qplllock_reg2 : signal is "true"; + signal qpllpd : STD_LOGIC; + signal \qpllpd_i_1__1_n_0\ : STD_LOGIC; + signal qpllreset : STD_LOGIC; + signal \qpllreset_i_1__1_n_0\ : STD_LOGIC; + signal \^rate_cpllpd_1\ : STD_LOGIC; + signal \^rate_cpllreset_1\ : STD_LOGIC; + signal \^rate_gen3_1\ : STD_LOGIC; + signal rate_in_reg1 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rate_in_reg1 : signal is "NO"; + attribute async_reg of rate_in_reg1 : signal is "true"; + signal rate_in_reg2 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rate_in_reg2 : signal is "NO"; + attribute async_reg of rate_in_reg2 : signal is "true"; + signal \rate_out[0]_i_1__0_n_0\ : STD_LOGIC; + signal \rate_out[0]_i_2__0_n_0\ : STD_LOGIC; + signal \^rate_txpmareset_1\ : STD_LOGIC; + signal ratedone : STD_LOGIC; + signal \ratedone_i_1__0_n_0\ : STD_LOGIC; + signal \ratedone_i_2__0_n_0\ : STD_LOGIC; + signal \ratedone_i_3__0_n_0\ : STD_LOGIC; + signal resetovrd_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of resetovrd_done_reg1 : signal is "NO"; + attribute async_reg of resetovrd_done_reg1 : signal is "true"; + signal resetovrd_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of resetovrd_done_reg2 : signal is "NO"; + attribute async_reg of resetovrd_done_reg2 : signal is "true"; + signal rst_idle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rst_idle_reg1 : signal is "NO"; + attribute async_reg of rst_idle_reg1 : signal is "true"; + signal rst_idle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rst_idle_reg2 : signal is "NO"; + attribute async_reg of rst_idle_reg2 : signal is "true"; + signal rxpmaresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxpmaresetdone_reg1 : signal is "NO"; + attribute async_reg of rxpmaresetdone_reg1 : signal is "true"; + signal rxpmaresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxpmaresetdone_reg2 : signal is "NO"; + attribute async_reg of rxpmaresetdone_reg2 : signal is "true"; + signal rxratedone : STD_LOGIC; + signal \rxratedone_i_1__0_n_0\ : STD_LOGIC; + signal rxratedone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxratedone_reg1 : signal is "NO"; + attribute async_reg of rxratedone_reg1 : signal is "true"; + signal rxratedone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxratedone_reg2 : signal is "NO"; + attribute async_reg of rxratedone_reg2 : signal is "true"; + signal rxresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxresetdone_reg1 : signal is "NO"; + attribute async_reg of rxresetdone_reg1 : signal is "true"; + signal rxresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxresetdone_reg2 : signal is "NO"; + attribute async_reg of rxresetdone_reg2 : signal is "true"; + signal rxsync_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsync_done_reg1 : signal is "NO"; + attribute async_reg of rxsync_done_reg1 : signal is "true"; + signal rxsync_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsync_done_reg2 : signal is "NO"; + attribute async_reg of rxsync_done_reg2 : signal is "true"; + signal \sysclksel[0]_i_1__0_n_0\ : STD_LOGIC; + signal \sysclksel[0]_i_2__0_n_0\ : STD_LOGIC; + signal \txdata_wait_cnt[3]_i_2__0_n_0\ : STD_LOGIC; + signal \txdata_wait_cnt[3]_i_3__0_n_0\ : STD_LOGIC; + signal txdata_wait_cnt_reg : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal txpmareset0 : STD_LOGIC; + signal \txpmareset_i_1__0_n_0\ : STD_LOGIC; + signal \txpmareset_i_2__0_n_0\ : STD_LOGIC; + signal txratedone : STD_LOGIC; + signal \txratedone_i_1__0_n_0\ : STD_LOGIC; + signal \txratedone_i_2__0_n_0\ : STD_LOGIC; + signal txratedone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txratedone_reg1 : signal is "NO"; + attribute async_reg of txratedone_reg1 : signal is "true"; + signal txratedone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txratedone_reg2 : signal is "NO"; + attribute async_reg of txratedone_reg2 : signal is "true"; + signal txresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txresetdone_reg1 : signal is "NO"; + attribute async_reg of txresetdone_reg1 : signal is "true"; + signal txresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txresetdone_reg2 : signal is "NO"; + attribute async_reg of txresetdone_reg2 : signal is "true"; + signal txsync_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsync_done_reg1 : signal is "NO"; + attribute async_reg of txsync_done_reg1 : signal is "true"; + signal txsync_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsync_done_reg2 : signal is "NO"; + attribute async_reg of txsync_done_reg2 : signal is "true"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of cplllock_reg1_reg : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of cplllock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of cplllock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of cplllock_reg2_reg : label is std.standard.true; + attribute KEEP of cplllock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of cplllock_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \cpllpd_i_2__0\ : label is "soft_lutpair111"; + attribute SOFT_HLUTNM of \cpllreset_i_2__1\ : label is "soft_lutpair112"; + attribute ASYNC_REG_boolean of drp_done_reg1_reg : label is std.standard.true; + attribute KEEP of drp_done_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of drp_done_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of drp_done_reg2_reg : label is std.standard.true; + attribute KEEP of drp_done_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of drp_done_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \drp_start_i_1__0\ : label is "soft_lutpair115"; + attribute SOFT_HLUTNM of \drp_x16_i_1__0\ : label is "soft_lutpair116"; + attribute SOFT_HLUTNM of \drp_x16x20_mode_i_1__0\ : label is "soft_lutpair117"; + attribute SOFT_HLUTNM of \fsm[0]_i_1__2\ : label is "soft_lutpair110"; + attribute SOFT_HLUTNM of \fsm[4]_i_3__0\ : label is "soft_lutpair120"; + attribute SOFT_HLUTNM of gen3_reg1_i_1 : label is "soft_lutpair118"; + attribute SOFT_HLUTNM of \gtx_channel.gtxe2_channel_i_i_5__0\ : label is "soft_lutpair118"; + attribute ASYNC_REG_boolean of mmcm_lock_reg1_reg : label is std.standard.true; + attribute KEEP of mmcm_lock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of mmcm_lock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of mmcm_lock_reg2_reg : label is std.standard.true; + attribute KEEP of mmcm_lock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of mmcm_lock_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \pclk_sel_i_2__0\ : label is "soft_lutpair111"; + attribute ASYNC_REG_boolean of phystatus_reg1_reg : label is std.standard.true; + attribute KEEP of phystatus_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of phystatus_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of phystatus_reg2_reg : label is std.standard.true; + attribute KEEP of phystatus_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of phystatus_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of qplllock_reg1_reg : label is std.standard.true; + attribute KEEP of qplllock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of qplllock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of qplllock_reg2_reg : label is std.standard.true; + attribute KEEP of qplllock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of qplllock_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \rate_done_reg1_i_1__0\ : label is "soft_lutpair115"; + attribute SOFT_HLUTNM of \rate_idle_reg1[1]_i_1\ : label is "soft_lutpair117"; + attribute ASYNC_REG_boolean of \rate_in_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rate_in_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_in_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_in_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rate_in_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_in_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_in_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rate_in_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_in_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_in_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rate_in_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_in_reg2_reg[1]\ : label is "NO"; + attribute SOFT_HLUTNM of \rate_rxsync_reg1_i_1__0\ : label is "soft_lutpair114"; + attribute SOFT_HLUTNM of \ratedone_i_2__0\ : label is "soft_lutpair113"; + attribute SOFT_HLUTNM of \ratedone_i_3__0\ : label is "soft_lutpair113"; + attribute ASYNC_REG_boolean of resetovrd_done_reg1_reg : label is std.standard.true; + attribute KEEP of resetovrd_done_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of resetovrd_done_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of resetovrd_done_reg2_reg : label is std.standard.true; + attribute KEEP of resetovrd_done_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of resetovrd_done_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \resetovrd_start_reg1_i_1__0\ : label is "soft_lutpair116"; + attribute ASYNC_REG_boolean of rst_idle_reg1_reg : label is std.standard.true; + attribute KEEP of rst_idle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rst_idle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rst_idle_reg2_reg : label is std.standard.true; + attribute KEEP of rst_idle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rst_idle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxpmaresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of rxpmaresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxpmaresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxpmaresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of rxpmaresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxpmaresetdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxratedone_reg1_reg : label is std.standard.true; + attribute KEEP of rxratedone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxratedone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxratedone_reg2_reg : label is std.standard.true; + attribute KEEP of rxratedone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxratedone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of rxresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of rxresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxresetdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsync_done_reg1_reg : label is std.standard.true; + attribute KEEP of rxsync_done_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsync_done_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsync_done_reg2_reg : label is std.standard.true; + attribute KEEP of rxsync_done_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsync_done_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \rxsync_start_reg1_i_1__0\ : label is "soft_lutpair114"; + attribute SOFT_HLUTNM of \sysclksel[0]_i_2__0\ : label is "soft_lutpair119"; + attribute SOFT_HLUTNM of \txdata_wait_cnt[3]_i_2__0\ : label is "soft_lutpair119"; + attribute SOFT_HLUTNM of \txdata_wait_cnt[3]_i_3__0\ : label is "soft_lutpair110"; + attribute SOFT_HLUTNM of \txpmareset_i_2__0\ : label is "soft_lutpair112"; + attribute SOFT_HLUTNM of \txratedone_i_2__0\ : label is "soft_lutpair120"; + attribute ASYNC_REG_boolean of txratedone_reg1_reg : label is std.standard.true; + attribute KEEP of txratedone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txratedone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txratedone_reg2_reg : label is std.standard.true; + attribute KEEP of txratedone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txratedone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of txresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of txresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txresetdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsync_done_reg1_reg : label is std.standard.true; + attribute KEEP of txsync_done_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsync_done_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsync_done_reg2_reg : label is std.standard.true; + attribute KEEP of txsync_done_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsync_done_reg2_reg : label is "NO"; +begin + QRST_QPLLPD_IN(0) <= \^qrst_qpllpd_in\(0); + QRST_QPLLRESET_IN(0) <= \^qrst_qpllreset_in\(0); + RXRATE(0) <= \^rxrate\(0); + RXSYSCLKSEL(0) <= \^rxsysclksel\(0); + pipe_pclk_sel_out(0) <= \^pipe_pclk_sel_out\(0); + rate_cpllpd_1 <= \^rate_cpllpd_1\; + rate_cpllreset_1 <= \^rate_cpllreset_1\; + rate_gen3_1 <= \^rate_gen3_1\; + rate_txpmareset_1 <= \^rate_txpmareset_1\; +cplllock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => QRST_CPLLLOCK(0), + Q => cplllock_reg1, + R => RST_CPLLRESET + ); +cplllock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => cplllock_reg1, + Q => cplllock_reg2, + R => RST_CPLLRESET + ); +\cpllpd_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0400FFFF04000000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => rate_in_reg2(0), + I3 => rate_in_reg2(1), + I4 => qpllpd, + I5 => \^rate_cpllpd_1\, + O => \cpllpd_i_1__0_n_0\ + ); +\cpllpd_i_2__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"80000900" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => \fsm_reg_n_0_[3]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => \fsm_reg_n_0_[2]\, + O => qpllpd + ); +cpllpd_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \cpllpd_i_1__0_n_0\, + Q => \^rate_cpllpd_1\, + R => RST_CPLLRESET + ); +\cpllreset_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0400FFFF04000000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => rate_in_reg2(0), + I3 => rate_in_reg2(1), + I4 => qpllreset, + I5 => \^rate_cpllreset_1\, + O => \cpllreset_i_1__1_n_0\ + ); +\cpllreset_i_2__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"80001004" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[3]\, + I3 => \fsm_reg_n_0_[4]\, + I4 => \fsm_reg_n_0_[0]\, + O => qpllreset + ); +cpllreset_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \cpllreset_i_1__1_n_0\, + Q => \^rate_cpllreset_1\, + R => RST_CPLLRESET + ); +drp_done_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RATE_DRP_DONE, + Q => drp_done_reg1, + R => RST_CPLLRESET + ); +drp_done_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => drp_done_reg1, + Q => drp_done_reg2, + R => RST_CPLLRESET + ); +\drp_start_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"08420100" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[4]\, + I3 => \fsm_reg_n_0_[2]\, + I4 => \fsm_reg_n_0_[0]\, + O => \drp_start_i_1__0_n_0\ + ); +drp_start_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \drp_start_i_1__0_n_0\, + Q => RATE_DRP_START, + R => RST_CPLLRESET + ); +\drp_x16_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"20100014" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[0]\, + O => \drp_x16_i_1__0_n_0\ + ); +drp_x16_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \drp_x16_i_1__0_n_0\, + Q => RATE_DRP_X16, + R => RST_CPLLRESET + ); +\drp_x16x20_mode_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"20080074" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[3]\, + I4 => \fsm_reg_n_0_[1]\, + O => \drp_x16x20_mode_i_1__0_n_0\ + ); +drp_x16x20_mode_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \drp_x16x20_mode_i_1__0_n_0\, + Q => RATE_DRP_X16X20_MODE, + R => RST_CPLLRESET + ); +\fsm[0]_i_10__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0901595100000000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => rxsync_done_reg2, + I4 => txsync_done_reg2, + I5 => \fsm_reg_n_0_[3]\, + O => \fsm[0]_i_10__0_n_0\ + ); +\fsm[0]_i_11__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"1101111101000110" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[3]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => rxpmaresetdone_reg2, + I5 => drp_done_reg2, + O => \fsm[0]_i_11__0_n_0\ + ); +\fsm[0]_i_12__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"20202320" + ) + port map ( + I0 => drp_done_reg2, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => mmcm_lock_reg2, + I4 => rxpmaresetdone_reg2, + O => \fsm[0]_i_12__0_n_0\ + ); +\fsm[0]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFF3210" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm[0]_i_2__2_n_0\, + I3 => \fsm[0]_i_3__0_n_0\, + I4 => \fsm[0]_i_4__0_n_0\, + O => fsm(0) + ); +\fsm[0]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0F0F3F3F47444744" + ) + port map ( + I0 => drp_done_reg2, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm[0]_i_5__0_n_0\, + I4 => pll_lock, + I5 => \fsm_reg_n_0_[1]\, + O => \fsm[0]_i_2__2_n_0\ + ); +\fsm[0]_i_3__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"F3F3AAAAFF00AAAA" + ) + port map ( + I0 => \fsm[0]_i_7__0_n_0\, + I1 => \fsm_reg_n_0_[0]\, + I2 => drp_done_reg2, + I3 => \fsm[0]_i_8__0_n_0\, + I4 => \fsm_reg_n_0_[2]\, + I5 => \fsm_reg_n_0_[1]\, + O => \fsm[0]_i_3__0_n_0\ + ); +\fsm[0]_i_4__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFF4000000000" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm[0]_i_9__0_n_0\, + I3 => \fsm[0]_i_10__0_n_0\, + I4 => \fsm[0]_i_11__0_n_0\, + I5 => \fsm_reg_n_0_[4]\, + O => \fsm[0]_i_4__0_n_0\ + ); +\fsm[0]_i_5__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"6FF6" + ) + port map ( + I0 => rate_in_reg2(1), + I1 => rate_in_reg1(1), + I2 => rate_in_reg2(0), + I3 => rate_in_reg1(0), + O => \fsm[0]_i_5__0_n_0\ + ); +\fsm[0]_i_6__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"FB08" + ) + port map ( + I0 => qplllock_reg2, + I1 => rate_in_reg2(1), + I2 => rate_in_reg2(0), + I3 => cplllock_reg2, + O => pll_lock + ); +\fsm[0]_i_7__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"AAAAAAAAEAAAAAAA" + ) + port map ( + I0 => \fsm[0]_i_12__0_n_0\, + I1 => pll_lock, + I2 => rst_idle_reg2, + I3 => drp_done_reg2, + I4 => \fsm_reg_n_0_[1]\, + I5 => \fsm_reg_n_0_[0]\, + O => \fsm[0]_i_7__0_n_0\ + ); +\fsm[0]_i_8__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFF5D5500005D55" + ) + port map ( + I0 => user_active_lane_1, + I1 => txresetdone_reg2, + I2 => phystatus_reg2, + I3 => rxresetdone_reg2, + I4 => \fsm_reg_n_0_[0]\, + I5 => \fsm[1]_i_7__0_n_0\, + O => \fsm[0]_i_8__0_n_0\ + ); +\fsm[0]_i_9__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"33330FAA" + ) + port map ( + I0 => drp_done_reg2, + I1 => resetovrd_done_reg2, + I2 => fsm1, + I3 => \fsm_reg_n_0_[0]\, + I4 => \fsm_reg_n_0_[1]\, + O => \fsm[0]_i_9__0_n_0\ + ); +\fsm[1]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFE4FFE4FFE400E4" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm[1]_i_2__1_n_0\, + I2 => \fsm[1]_i_3__0_n_0\, + I3 => \fsm_reg_n_0_[4]\, + I4 => \fsm[1]_i_4__0_n_0\, + I5 => \fsm[1]_i_5__0_n_0\, + O => fsm(1) + ); +\fsm[1]_i_2__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"3388F0CC" + ) + port map ( + I0 => drp_done_reg2, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm[1]_i_6__0_n_0\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[2]\, + O => \fsm[1]_i_2__1_n_0\ + ); +\fsm[1]_i_3__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"CC5500000033F000" + ) + port map ( + I0 => \fsm[1]_i_7__0_n_0\, + I1 => drp_done_reg2, + I2 => \fsm[1]_i_8__0_n_0\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[0]\, + I5 => \fsm_reg_n_0_[2]\, + O => \fsm[1]_i_3__0_n_0\ + ); +\fsm[1]_i_4__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"000000005FCF0000" + ) + port map ( + I0 => resetovrd_done_reg2, + I1 => drp_done_reg2, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + I4 => \fsm_reg_n_0_[1]\, + I5 => \fsm_reg_n_0_[3]\, + O => \fsm[1]_i_4__0_n_0\ + ); +\fsm[1]_i_5__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"143C547C00000000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => rxsync_done_reg2, + I4 => txsync_done_reg2, + I5 => \fsm_reg_n_0_[3]\, + O => \fsm[1]_i_5__0_n_0\ + ); +\fsm[1]_i_6__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"34F7FFFFFFFFFFFF" + ) + port map ( + I0 => qplllock_reg2, + I1 => rate_in_reg2(1), + I2 => rate_in_reg2(0), + I3 => cplllock_reg2, + I4 => rst_idle_reg2, + I5 => \fsm_reg_n_0_[0]\, + O => \fsm[1]_i_6__0_n_0\ + ); +\fsm[1]_i_7__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"7FFF" + ) + port map ( + I0 => txdata_wait_cnt_reg(3), + I1 => txdata_wait_cnt_reg(1), + I2 => txdata_wait_cnt_reg(0), + I3 => txdata_wait_cnt_reg(2), + O => \fsm[1]_i_7__0_n_0\ + ); +\fsm[1]_i_8__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFF04F7FFFF" + ) + port map ( + I0 => qplllock_reg2, + I1 => rate_in_reg2(1), + I2 => rate_in_reg2(0), + I3 => cplllock_reg2, + I4 => drp_done_reg2, + I5 => rst_idle_reg2, + O => \fsm[1]_i_8__0_n_0\ + ); +\fsm[2]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"EAFFAAAAAAAAAAAA" + ) + port map ( + I0 => \fsm[2]_i_4__0_n_0\, + I1 => drp_done_reg2, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[3]\, + I5 => \fsm_reg_n_0_[2]\, + O => \fsm[2]_i_2__0_n_0\ + ); +\fsm[2]_i_3__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"AFBAAAAAAAAAAAAA" + ) + port map ( + I0 => \fsm[2]_i_5__0_n_0\, + I1 => rxsync_done_reg2, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => \fsm_reg_n_0_[3]\, + I5 => \fsm_reg_n_0_[2]\, + O => \fsm[2]_i_3__0_n_0\ + ); +\fsm[2]_i_4__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"00FA554455005544" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm[3]_i_6__0_n_0\, + I2 => pll_lock, + I3 => \fsm_reg_n_0_[2]\, + I4 => \fsm_reg_n_0_[1]\, + I5 => \fsm_reg_n_0_[0]\, + O => \fsm[2]_i_4__0_n_0\ + ); +\fsm[2]_i_5__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"2000FFFF20000000" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => txsync_done_reg2, + I4 => \fsm_reg_n_0_[3]\, + I5 => \fsm[2]_i_6__0_n_0\, + O => \fsm[2]_i_5__0_n_0\ + ); +\fsm[2]_i_6__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"1CDC3C3C1CDCFCFC" + ) + port map ( + I0 => drp_done_reg2, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => resetovrd_done_reg2, + I4 => \fsm_reg_n_0_[1]\, + I5 => fsm1, + O => \fsm[2]_i_6__0_n_0\ + ); +\fsm[3]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFB0803080" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[3]\, + I4 => drp_done_reg2, + I5 => \fsm[3]_i_4__0_n_0\, + O => \fsm[3]_i_2__0_n_0\ + ); +\fsm[3]_i_3__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFF8880000F888" + ) + port map ( + I0 => \txdata_wait_cnt[3]_i_2__0_n_0\, + I1 => fsm1, + I2 => resetovrd_done_reg2, + I3 => \sysclksel[0]_i_2__0_n_0\, + I4 => \fsm_reg_n_0_[3]\, + I5 => \fsm[4]_i_2__0_n_0\, + O => \fsm[3]_i_3__0_n_0\ + ); +\fsm[3]_i_4__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"00000000EEFF00F0" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm[1]_i_8__0_n_0\, + I2 => \fsm[3]_i_6__0_n_0\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[3]\, + I5 => \fsm_reg_n_0_[2]\, + O => \fsm[3]_i_4__0_n_0\ + ); +\fsm[3]_i_5__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFF8F8FFF8" + ) + port map ( + I0 => \out\, + I1 => \fsm[0]_i_9__0_0\, + I2 => ratedone, + I3 => rate_in_reg2(1), + I4 => rate_in_reg2(0), + I5 => gen3_exit, + O => fsm1 + ); +\fsm[3]_i_6__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00504414" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => rate_in_reg1(0), + I2 => rate_in_reg2(0), + I3 => rate_in_reg1(1), + I4 => rate_in_reg2(1), + O => \fsm[3]_i_6__0_n_0\ + ); +\fsm[4]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"C5F0CFF0C0F0C0F0" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm[4]_i_2__0_n_0\, + I2 => \fsm_reg_n_0_[4]\, + I3 => \fsm_reg_n_0_[3]\, + I4 => drp_done_reg2, + I5 => \fsm[4]_i_3__0_n_0\, + O => fsm(4) + ); +\fsm[4]_i_2__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"26FF" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => rxsync_done_reg2, + I3 => \fsm_reg_n_0_[2]\, + O => \fsm[4]_i_2__0_n_0\ + ); +\fsm[4]_i_3__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[2]\, + O => \fsm[4]_i_3__0_n_0\ + ); +\fsm_reg[0]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => fsm(0), + Q => \fsm_reg_n_0_[0]\, + S => RST_CPLLRESET + ); +\fsm_reg[1]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => fsm(1), + Q => \fsm_reg_n_0_[1]\, + S => RST_CPLLRESET + ); +\fsm_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => fsm(2), + Q => \fsm_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\fsm_reg[2]_i_1__0\: unisim.vcomponents.MUXF7 + port map ( + I0 => \fsm[2]_i_2__0_n_0\, + I1 => \fsm[2]_i_3__0_n_0\, + O => fsm(2), + S => \fsm_reg_n_0_[4]\ + ); +\fsm_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => fsm(3), + Q => \fsm_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\fsm_reg[3]_i_1__0\: unisim.vcomponents.MUXF7 + port map ( + I0 => \fsm[3]_i_2__0_n_0\, + I1 => \fsm[3]_i_3__0_n_0\, + O => fsm(3), + S => \fsm_reg_n_0_[4]\ + ); +\fsm_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => fsm(4), + Q => \fsm_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\gen3_exit_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"04FF0400" + ) + port map ( + I0 => rate_in_reg2(0), + I1 => rate_in_reg2(1), + I2 => \fsm_reg_n_0_[4]\, + I3 => \gen3_exit_i_2__0_n_0\, + I4 => gen3_exit, + O => \gen3_exit_i_1__0_n_0\ + ); +\gen3_exit_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"8000000180000000" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[3]\, + I4 => \fsm_reg_n_0_[4]\, + I5 => \fsm[0]_i_5__0_n_0\, + O => \gen3_exit_i_2__0_n_0\ + ); +gen3_exit_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \gen3_exit_i_1__0_n_0\, + Q => gen3_exit, + R => RST_CPLLRESET + ); +\gen3_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"3FFFFFFB00000008" + ) + port map ( + I0 => \gen3_i_2__0_n_0\, + I1 => \gen3_i_3__0_n_0\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[4]\, + I5 => \^rate_gen3_1\, + O => \gen3_i_1__0_n_0\ + ); +\gen3_i_2__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => rate_in_reg2(1), + I1 => rate_in_reg2(0), + O => \gen3_i_2__0_n_0\ + ); +\gen3_i_3__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[0]\, + O => \gen3_i_3__0_n_0\ + ); +gen3_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \gen3_i_1__0_n_0\, + Q => \^rate_gen3_1\, + R => RST_CPLLRESET + ); +gen3_reg1_i_1: unisim.vcomponents.LUT4 + generic map( + INIT => X"8000" + ) + port map ( + I0 => \^rate_gen3_1\, + I1 => USER_RATE_GEN3, + I2 => rate_gen3_3, + I3 => rate_gen3_2, + O => QPLL_DRP_GEN3 + ); +\gtx_channel.gtxe2_channel_i_i_5__0\: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => \^rate_gen3_1\, + O => rxchbonden_1 + ); +mmcm_lock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_mmcm_lock_in, + Q => mmcm_lock_reg1, + R => RST_CPLLRESET + ); +mmcm_lock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => mmcm_lock_reg1, + Q => mmcm_lock_reg2, + R => RST_CPLLRESET + ); +\pclk_sel_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"14FF1400" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => rate_in_reg2(1), + I2 => rate_in_reg2(0), + I3 => \pclk_sel_i_2__0_n_0\, + I4 => \^pipe_pclk_sel_out\(0), + O => \pclk_sel_i_1__0_n_0\ + ); +\pclk_sel_i_2__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"80022000" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[0]\, + O => \pclk_sel_i_2__0_n_0\ + ); +pclk_sel_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pclk_sel_i_1__0_n_0\, + Q => \^pipe_pclk_sel_out\(0), + R => RST_CPLLRESET + ); +\phystatus_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0800080008000000" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \txratedone_i_2__0_n_0\, + I3 => \fsm_reg_n_0_[0]\, + I4 => phystatus_reg2, + I5 => phystatus, + O => \phystatus_i_1__0_n_0\ + ); +phystatus_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \phystatus_i_1__0_n_0\, + Q => phystatus, + R => RST_CPLLRESET + ); +phystatus_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RATE_PHYSTATUS, + Q => phystatus_reg1, + R => RST_CPLLRESET + ); +phystatus_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => phystatus_reg1, + Q => phystatus_reg2, + R => RST_CPLLRESET + ); +qplllock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RATE_QPLLLOCK, + Q => qplllock_reg1, + R => RST_CPLLRESET + ); +qplllock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => qplllock_reg1, + Q => qplllock_reg2, + R => RST_CPLLRESET + ); +\qpllpd_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"4044FFFF40440000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => rate_in_reg2(0), + I3 => rate_in_reg2(1), + I4 => qpllpd, + I5 => \^qrst_qpllpd_in\(0), + O => \qpllpd_i_1__1_n_0\ + ); +qpllpd_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \qpllpd_i_1__1_n_0\, + Q => \^qrst_qpllpd_in\(0), + R => RST_CPLLRESET + ); +\qpllreset_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"4044FFFF40440000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => rate_in_reg2(0), + I3 => rate_in_reg2(1), + I4 => qpllreset, + I5 => \^qrst_qpllreset_in\(0), + O => \qpllreset_i_1__1_n_0\ + ); +qpllreset_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \qpllreset_i_1__1_n_0\, + Q => \^qrst_qpllreset_in\(0), + R => RST_CPLLRESET + ); +\rate_done_reg1_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000080" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => \fsm_reg_n_0_[1]\, + O => USER_RATE_DONE + ); +\rate_idle_reg1[1]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000001" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[4]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[3]\, + O => SYNC_RATE_IDLE + ); +\rate_in_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rate_in_reg1_reg[0]_0\(0), + Q => rate_in_reg1(0), + R => RST_CPLLRESET + ); +\rate_in_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rate_in_reg1(1), + R => RST_CPLLRESET + ); +\rate_in_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rate_in_reg1(0), + Q => rate_in_reg2(0), + R => RST_CPLLRESET + ); +\rate_in_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rate_in_reg1(1), + Q => rate_in_reg2(1), + R => RST_CPLLRESET + ); +\rate_out[0]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0444FFFF04440000" + ) + port map ( + I0 => rate_in_reg2(1), + I1 => rate_in_reg2(0), + I2 => \fsm_reg_n_0_[4]\, + I3 => \fsm_reg_n_0_[3]\, + I4 => \rate_out[0]_i_2__0_n_0\, + I5 => \^rxrate\(0), + O => \rate_out[0]_i_1__0_n_0\ + ); +\rate_out[0]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"8002020080000200" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[4]\, + I4 => \fsm_reg_n_0_[3]\, + I5 => txpmareset0, + O => \rate_out[0]_i_2__0_n_0\ + ); +\rate_out[0]_i_3__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"BA" + ) + port map ( + I0 => gen3_exit, + I1 => rate_in_reg2(0), + I2 => rate_in_reg2(1), + O => txpmareset0 + ); +\rate_out_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rate_out[0]_i_1__0_n_0\, + Q => \^rxrate\(0), + R => RST_CPLLRESET + ); +\rate_rxsync_reg1_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"08800000" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => \fsm_reg_n_0_[2]\, + O => USER_RATE_RXSYNC + ); +\ratedone_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"A3333333A0000000" + ) + port map ( + I0 => \ratedone_i_2__0_n_0\, + I1 => \ratedone_i_3__0_n_0\, + I2 => rxratedone, + I3 => phystatus, + I4 => txratedone, + I5 => ratedone, + O => \ratedone_i_1__0_n_0\ + ); +\ratedone_i_2__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00080000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm_reg_n_0_[3]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[0]\, + O => \ratedone_i_2__0_n_0\ + ); +\ratedone_i_3__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FDFFFFFF" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[3]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[2]\, + I4 => \fsm_reg_n_0_[4]\, + O => \ratedone_i_3__0_n_0\ + ); +ratedone_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \ratedone_i_1__0_n_0\, + Q => ratedone, + R => RST_CPLLRESET + ); +resetovrd_done_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '1', + Q => resetovrd_done_reg1, + R => RST_CPLLRESET + ); +resetovrd_done_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => resetovrd_done_reg1, + Q => resetovrd_done_reg2, + R => RST_CPLLRESET + ); +\resetovrd_start_reg1_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000080" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => \fsm_reg_n_0_[3]\, + O => USER_RESETOVRD_START + ); +rst_idle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RST_IDLE, + Q => rst_idle_reg1, + R => RST_CPLLRESET + ); +rst_idle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rst_idle_reg1, + Q => rst_idle_reg2, + R => RST_CPLLRESET + ); +rxpmaresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxpmaresetdone_reg1, + R => RST_CPLLRESET + ); +rxpmaresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxpmaresetdone_reg1, + Q => rxpmaresetdone_reg2, + R => RST_CPLLRESET + ); +\rxratedone_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0800080008000000" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \txratedone_i_2__0_n_0\, + I3 => \fsm_reg_n_0_[0]\, + I4 => rxratedone_reg2, + I5 => rxratedone, + O => \rxratedone_i_1__0_n_0\ + ); +rxratedone_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rxratedone_i_1__0_n_0\, + Q => rxratedone, + R => RST_CPLLRESET + ); +rxratedone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RATE_RXRATEDONE, + Q => rxratedone_reg1, + R => RST_CPLLRESET + ); +rxratedone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxratedone_reg1, + Q => rxratedone_reg2, + R => RST_CPLLRESET + ); +rxresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_RXRESETDONE, + Q => rxresetdone_reg1, + R => RST_CPLLRESET + ); +rxresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxresetdone_reg1, + Q => rxresetdone_reg2, + R => RST_CPLLRESET + ); +rxsync_done_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxsync_done_reg1, + R => RST_CPLLRESET + ); +rxsync_done_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxsync_done_reg1, + Q => rxsync_done_reg2, + R => RST_CPLLRESET + ); +\rxsync_start_reg1_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"08000000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[4]\, + I4 => \fsm_reg_n_0_[3]\, + O => SYNC_RXSYNC_START + ); +\sysclksel[0]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0FFFFF4F00000040" + ) + port map ( + I0 => rate_in_reg2(0), + I1 => rate_in_reg2(1), + I2 => \sysclksel[0]_i_2__0_n_0\, + I3 => \fsm_reg_n_0_[3]\, + I4 => \fsm_reg_n_0_[4]\, + I5 => \^rxsysclksel\(0), + O => \sysclksel[0]_i_1__0_n_0\ + ); +\sysclksel[0]_i_2__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"80" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + O => \sysclksel[0]_i_2__0_n_0\ + ); +\sysclksel_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \sysclksel[0]_i_1__0_n_0\, + Q => \^rxsysclksel\(0), + R => RST_CPLLRESET + ); +\txdata_wait_cnt[0]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"B333000000000000" + ) + port map ( + I0 => txdata_wait_cnt_reg(1), + I1 => txdata_wait_cnt_reg(0), + I2 => txdata_wait_cnt_reg(2), + I3 => txdata_wait_cnt_reg(3), + I4 => \txdata_wait_cnt[3]_i_2__0_n_0\, + I5 => \txdata_wait_cnt[3]_i_3__0_n_0\, + O => \p_0_in__0\(0) + ); +\txdata_wait_cnt[1]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"E666000000000000" + ) + port map ( + I0 => txdata_wait_cnt_reg(1), + I1 => txdata_wait_cnt_reg(0), + I2 => txdata_wait_cnt_reg(2), + I3 => txdata_wait_cnt_reg(3), + I4 => \txdata_wait_cnt[3]_i_2__0_n_0\, + I5 => \txdata_wait_cnt[3]_i_3__0_n_0\, + O => \p_0_in__0\(1) + ); +\txdata_wait_cnt[2]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"F878000000000000" + ) + port map ( + I0 => txdata_wait_cnt_reg(1), + I1 => txdata_wait_cnt_reg(0), + I2 => txdata_wait_cnt_reg(2), + I3 => txdata_wait_cnt_reg(3), + I4 => \txdata_wait_cnt[3]_i_2__0_n_0\, + I5 => \txdata_wait_cnt[3]_i_3__0_n_0\, + O => \p_0_in__0\(2) + ); +\txdata_wait_cnt[3]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FF80000000000000" + ) + port map ( + I0 => txdata_wait_cnt_reg(1), + I1 => txdata_wait_cnt_reg(0), + I2 => txdata_wait_cnt_reg(2), + I3 => txdata_wait_cnt_reg(3), + I4 => \txdata_wait_cnt[3]_i_2__0_n_0\, + I5 => \txdata_wait_cnt[3]_i_3__0_n_0\, + O => \p_0_in__0\(3) + ); +\txdata_wait_cnt[3]_i_2__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"40" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[2]\, + O => \txdata_wait_cnt[3]_i_2__0_n_0\ + ); +\txdata_wait_cnt[3]_i_3__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[4]\, + O => \txdata_wait_cnt[3]_i_3__0_n_0\ + ); +\txdata_wait_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(0), + Q => txdata_wait_cnt_reg(0), + R => RST_CPLLRESET + ); +\txdata_wait_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(1), + Q => txdata_wait_cnt_reg(1), + R => RST_CPLLRESET + ); +\txdata_wait_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(2), + Q => txdata_wait_cnt_reg(2), + R => RST_CPLLRESET + ); +\txdata_wait_cnt_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(3), + Q => txdata_wait_cnt_reg(3), + R => RST_CPLLRESET + ); +\txpmareset_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"00F2FFFF00F20000" + ) + port map ( + I0 => rate_in_reg2(1), + I1 => rate_in_reg2(0), + I2 => gen3_exit, + I3 => \fsm_reg_n_0_[3]\, + I4 => \txpmareset_i_2__0_n_0\, + I5 => \^rate_txpmareset_1\, + O => \txpmareset_i_1__0_n_0\ + ); +\txpmareset_i_2__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"80004200" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[3]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[4]\, + O => \txpmareset_i_2__0_n_0\ + ); +txpmareset_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txpmareset_i_1__0_n_0\, + Q => \^rate_txpmareset_1\, + R => RST_CPLLRESET + ); +\txratedone_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0800080008000000" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \txratedone_i_2__0_n_0\, + I3 => \fsm_reg_n_0_[0]\, + I4 => txratedone_reg2, + I5 => txratedone, + O => \txratedone_i_1__0_n_0\ + ); +\txratedone_i_2__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"E" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[1]\, + O => \txratedone_i_2__0_n_0\ + ); +txratedone_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txratedone_i_1__0_n_0\, + Q => txratedone, + R => RST_CPLLRESET + ); +txratedone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RATE_TXRATEDONE, + Q => txratedone_reg1, + R => RST_CPLLRESET + ); +txratedone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txratedone_reg1, + Q => txratedone_reg2, + R => RST_CPLLRESET + ); +txresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_TXRESETDONE, + Q => txresetdone_reg1, + R => RST_CPLLRESET + ); +txresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txresetdone_reg1, + Q => txresetdone_reg2, + R => RST_CPLLRESET + ); +txsync_done_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RATE_TXSYNC_DONE, + Q => txsync_done_reg1, + R => RST_CPLLRESET + ); +txsync_done_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txsync_done_reg1, + Q => txsync_done_reg2, + R => RST_CPLLRESET + ); +\txsync_start_reg1_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFF00004000" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[4]\, + I3 => \fsm_reg_n_0_[3]\, + I4 => \fsm_reg_n_0_[2]\, + I5 => RST_TXSYNC_START, + O => SYNC_TXSYNC_START + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pipe_rate_46 is + port ( + SYNC_TXSYNC_START : out STD_LOGIC; + rxchbonden_2 : out STD_LOGIC; + rate_gen3_2 : out STD_LOGIC; + RATE_DRP_START : out STD_LOGIC; + RATE_DRP_X16X20_MODE : out STD_LOGIC; + RATE_DRP_X16 : out STD_LOGIC; + USER_RATE_RXSYNC : out STD_LOGIC; + SYNC_RXSYNC_START : out STD_LOGIC; + USER_RATE_DONE : out STD_LOGIC; + USER_RESETOVRD_START : out STD_LOGIC; + SYNC_RATE_IDLE : out STD_LOGIC; + rate_txpmareset_2 : out STD_LOGIC; + RXSYSCLKSEL : out STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_pclk_sel_out : out STD_LOGIC_VECTOR ( 0 to 0 ); + RXRATE : out STD_LOGIC_VECTOR ( 0 to 0 ); + QRST_QPLLPD_IN : out STD_LOGIC_VECTOR ( 0 to 0 ); + rate_cpllpd_2 : out STD_LOGIC; + QRST_QPLLRESET_IN : out STD_LOGIC_VECTOR ( 0 to 0 ); + rate_cpllreset_2 : out STD_LOGIC; + RST_TXSYNC_START : in STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + \rate_in_reg1_reg[0]_0\ : in STD_LOGIC_VECTOR ( 0 to 0 ); + RST_IDLE : in STD_LOGIC; + QRST_CPLLLOCK : in STD_LOGIC_VECTOR ( 0 to 0 ); + RATE_QPLLLOCK : in STD_LOGIC; + RATE_DRP_DONE : in STD_LOGIC; + pipe_mmcm_lock_in : in STD_LOGIC; + RATE_PHYSTATUS : in STD_LOGIC; + USER_TXRESETDONE : in STD_LOGIC; + USER_RXRESETDONE : in STD_LOGIC; + RATE_TXRATEDONE : in STD_LOGIC; + RATE_RXRATEDONE : in STD_LOGIC; + RATE_TXSYNC_DONE : in STD_LOGIC; + user_active_lane_2 : in STD_LOGIC; + \out\ : in STD_LOGIC; + \fsm[0]_i_9__1_0\ : in STD_LOGIC + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pipe_rate_46 : entity is "pcie_7x_0_pipe_rate"; +end pcie_7x_0_pcie_7x_0_pipe_rate_46; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pipe_rate_46 is + signal \^qrst_qpllpd_in\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal \^qrst_qpllreset_in\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal \^rxrate\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal \^rxsysclksel\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal cplllock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of cplllock_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of cplllock_reg1 : signal is "true"; + signal cplllock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of cplllock_reg2 : signal is "NO"; + attribute async_reg of cplllock_reg2 : signal is "true"; + signal \cpllpd_i_1__1_n_0\ : STD_LOGIC; + signal \cpllreset_i_1__2_n_0\ : STD_LOGIC; + signal drp_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of drp_done_reg1 : signal is "NO"; + attribute async_reg of drp_done_reg1 : signal is "true"; + signal drp_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of drp_done_reg2 : signal is "NO"; + attribute async_reg of drp_done_reg2 : signal is "true"; + signal \drp_start_i_1__1_n_0\ : STD_LOGIC; + signal \drp_x16_i_1__1_n_0\ : STD_LOGIC; + signal \drp_x16x20_mode_i_1__1_n_0\ : STD_LOGIC; + signal fsm : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal fsm1 : STD_LOGIC; + signal \fsm[0]_i_10__1_n_0\ : STD_LOGIC; + signal \fsm[0]_i_11__1_n_0\ : STD_LOGIC; + signal \fsm[0]_i_12__1_n_0\ : STD_LOGIC; + signal \fsm[0]_i_2__4_n_0\ : STD_LOGIC; + signal \fsm[0]_i_3__1_n_0\ : STD_LOGIC; + signal \fsm[0]_i_4__1_n_0\ : STD_LOGIC; + signal \fsm[0]_i_5__1_n_0\ : STD_LOGIC; + signal \fsm[0]_i_7__1_n_0\ : STD_LOGIC; + signal \fsm[0]_i_8__1_n_0\ : STD_LOGIC; + signal \fsm[0]_i_9__1_n_0\ : STD_LOGIC; + signal \fsm[1]_i_2__2_n_0\ : STD_LOGIC; + signal \fsm[1]_i_3__1_n_0\ : STD_LOGIC; + signal \fsm[1]_i_4__1_n_0\ : STD_LOGIC; + signal \fsm[1]_i_5__1_n_0\ : STD_LOGIC; + signal \fsm[1]_i_6__1_n_0\ : STD_LOGIC; + signal \fsm[1]_i_7__1_n_0\ : STD_LOGIC; + signal \fsm[1]_i_8__1_n_0\ : STD_LOGIC; + signal \fsm[2]_i_2__1_n_0\ : STD_LOGIC; + signal \fsm[2]_i_3__1_n_0\ : STD_LOGIC; + signal \fsm[2]_i_4__1_n_0\ : STD_LOGIC; + signal \fsm[2]_i_5__1_n_0\ : STD_LOGIC; + signal \fsm[2]_i_6__1_n_0\ : STD_LOGIC; + signal \fsm[3]_i_2__1_n_0\ : STD_LOGIC; + signal \fsm[3]_i_3__1_n_0\ : STD_LOGIC; + signal \fsm[3]_i_4__1_n_0\ : STD_LOGIC; + signal \fsm[3]_i_6__1_n_0\ : STD_LOGIC; + signal \fsm[4]_i_2__1_n_0\ : STD_LOGIC; + signal \fsm[4]_i_3__1_n_0\ : STD_LOGIC; + signal \fsm_reg_n_0_[0]\ : STD_LOGIC; + signal \fsm_reg_n_0_[1]\ : STD_LOGIC; + signal \fsm_reg_n_0_[2]\ : STD_LOGIC; + signal \fsm_reg_n_0_[3]\ : STD_LOGIC; + signal \fsm_reg_n_0_[4]\ : STD_LOGIC; + signal gen3_exit : STD_LOGIC; + signal \gen3_exit_i_1__1_n_0\ : STD_LOGIC; + signal \gen3_exit_i_2__1_n_0\ : STD_LOGIC; + signal \gen3_i_1__1_n_0\ : STD_LOGIC; + signal \gen3_i_2__1_n_0\ : STD_LOGIC; + signal \gen3_i_3__1_n_0\ : STD_LOGIC; + signal mmcm_lock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of mmcm_lock_reg1 : signal is "NO"; + attribute async_reg of mmcm_lock_reg1 : signal is "true"; + signal mmcm_lock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of mmcm_lock_reg2 : signal is "NO"; + attribute async_reg of mmcm_lock_reg2 : signal is "true"; + signal \p_0_in__0\ : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal \pclk_sel_i_1__1_n_0\ : STD_LOGIC; + signal \pclk_sel_i_2__1_n_0\ : STD_LOGIC; + signal phystatus : STD_LOGIC; + signal \phystatus_i_1__1_n_0\ : STD_LOGIC; + signal phystatus_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of phystatus_reg1 : signal is "NO"; + attribute async_reg of phystatus_reg1 : signal is "true"; + signal phystatus_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of phystatus_reg2 : signal is "NO"; + attribute async_reg of phystatus_reg2 : signal is "true"; + signal \^pipe_pclk_sel_out\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal pll_lock : STD_LOGIC; + signal qplllock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of qplllock_reg1 : signal is "NO"; + attribute async_reg of qplllock_reg1 : signal is "true"; + signal qplllock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of qplllock_reg2 : signal is "NO"; + attribute async_reg of qplllock_reg2 : signal is "true"; + signal qpllpd : STD_LOGIC; + signal \qpllpd_i_1__2_n_0\ : STD_LOGIC; + signal qpllreset : STD_LOGIC; + signal \qpllreset_i_1__2_n_0\ : STD_LOGIC; + signal \^rate_cpllpd_2\ : STD_LOGIC; + signal \^rate_cpllreset_2\ : STD_LOGIC; + signal \^rate_gen3_2\ : STD_LOGIC; + signal rate_in_reg1 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rate_in_reg1 : signal is "NO"; + attribute async_reg of rate_in_reg1 : signal is "true"; + signal rate_in_reg2 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rate_in_reg2 : signal is "NO"; + attribute async_reg of rate_in_reg2 : signal is "true"; + signal \rate_out[0]_i_1__1_n_0\ : STD_LOGIC; + signal \rate_out[0]_i_2__1_n_0\ : STD_LOGIC; + signal \^rate_txpmareset_2\ : STD_LOGIC; + signal ratedone : STD_LOGIC; + signal \ratedone_i_1__1_n_0\ : STD_LOGIC; + signal \ratedone_i_2__1_n_0\ : STD_LOGIC; + signal \ratedone_i_3__1_n_0\ : STD_LOGIC; + signal resetovrd_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of resetovrd_done_reg1 : signal is "NO"; + attribute async_reg of resetovrd_done_reg1 : signal is "true"; + signal resetovrd_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of resetovrd_done_reg2 : signal is "NO"; + attribute async_reg of resetovrd_done_reg2 : signal is "true"; + signal rst_idle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rst_idle_reg1 : signal is "NO"; + attribute async_reg of rst_idle_reg1 : signal is "true"; + signal rst_idle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rst_idle_reg2 : signal is "NO"; + attribute async_reg of rst_idle_reg2 : signal is "true"; + signal rxpmaresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxpmaresetdone_reg1 : signal is "NO"; + attribute async_reg of rxpmaresetdone_reg1 : signal is "true"; + signal rxpmaresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxpmaresetdone_reg2 : signal is "NO"; + attribute async_reg of rxpmaresetdone_reg2 : signal is "true"; + signal rxratedone : STD_LOGIC; + signal \rxratedone_i_1__1_n_0\ : STD_LOGIC; + signal rxratedone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxratedone_reg1 : signal is "NO"; + attribute async_reg of rxratedone_reg1 : signal is "true"; + signal rxratedone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxratedone_reg2 : signal is "NO"; + attribute async_reg of rxratedone_reg2 : signal is "true"; + signal rxresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxresetdone_reg1 : signal is "NO"; + attribute async_reg of rxresetdone_reg1 : signal is "true"; + signal rxresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxresetdone_reg2 : signal is "NO"; + attribute async_reg of rxresetdone_reg2 : signal is "true"; + signal rxsync_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsync_done_reg1 : signal is "NO"; + attribute async_reg of rxsync_done_reg1 : signal is "true"; + signal rxsync_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsync_done_reg2 : signal is "NO"; + attribute async_reg of rxsync_done_reg2 : signal is "true"; + signal \sysclksel[0]_i_1__1_n_0\ : STD_LOGIC; + signal \sysclksel[0]_i_2__1_n_0\ : STD_LOGIC; + signal \txdata_wait_cnt[3]_i_2__1_n_0\ : STD_LOGIC; + signal \txdata_wait_cnt[3]_i_3__1_n_0\ : STD_LOGIC; + signal txdata_wait_cnt_reg : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal txpmareset0 : STD_LOGIC; + signal \txpmareset_i_1__1_n_0\ : STD_LOGIC; + signal \txpmareset_i_2__1_n_0\ : STD_LOGIC; + signal txratedone : STD_LOGIC; + signal \txratedone_i_1__1_n_0\ : STD_LOGIC; + signal \txratedone_i_2__1_n_0\ : STD_LOGIC; + signal txratedone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txratedone_reg1 : signal is "NO"; + attribute async_reg of txratedone_reg1 : signal is "true"; + signal txratedone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txratedone_reg2 : signal is "NO"; + attribute async_reg of txratedone_reg2 : signal is "true"; + signal txresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txresetdone_reg1 : signal is "NO"; + attribute async_reg of txresetdone_reg1 : signal is "true"; + signal txresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txresetdone_reg2 : signal is "NO"; + attribute async_reg of txresetdone_reg2 : signal is "true"; + signal txsync_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsync_done_reg1 : signal is "NO"; + attribute async_reg of txsync_done_reg1 : signal is "true"; + signal txsync_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsync_done_reg2 : signal is "NO"; + attribute async_reg of txsync_done_reg2 : signal is "true"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of cplllock_reg1_reg : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of cplllock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of cplllock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of cplllock_reg2_reg : label is std.standard.true; + attribute KEEP of cplllock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of cplllock_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \cpllpd_i_2__1\ : label is "soft_lutpair153"; + attribute SOFT_HLUTNM of \cpllreset_i_2__2\ : label is "soft_lutpair154"; + attribute ASYNC_REG_boolean of drp_done_reg1_reg : label is std.standard.true; + attribute KEEP of drp_done_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of drp_done_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of drp_done_reg2_reg : label is std.standard.true; + attribute KEEP of drp_done_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of drp_done_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \drp_start_i_1__1\ : label is "soft_lutpair157"; + attribute SOFT_HLUTNM of \drp_x16_i_1__1\ : label is "soft_lutpair158"; + attribute SOFT_HLUTNM of \drp_x16x20_mode_i_1__1\ : label is "soft_lutpair159"; + attribute SOFT_HLUTNM of \fsm[0]_i_1__4\ : label is "soft_lutpair152"; + attribute SOFT_HLUTNM of \fsm[4]_i_3__1\ : label is "soft_lutpair161"; + attribute ASYNC_REG_boolean of mmcm_lock_reg1_reg : label is std.standard.true; + attribute KEEP of mmcm_lock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of mmcm_lock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of mmcm_lock_reg2_reg : label is std.standard.true; + attribute KEEP of mmcm_lock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of mmcm_lock_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \pclk_sel_i_2__1\ : label is "soft_lutpair153"; + attribute ASYNC_REG_boolean of phystatus_reg1_reg : label is std.standard.true; + attribute KEEP of phystatus_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of phystatus_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of phystatus_reg2_reg : label is std.standard.true; + attribute KEEP of phystatus_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of phystatus_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of qplllock_reg1_reg : label is std.standard.true; + attribute KEEP of qplllock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of qplllock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of qplllock_reg2_reg : label is std.standard.true; + attribute KEEP of qplllock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of qplllock_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \rate_done_reg1_i_1__1\ : label is "soft_lutpair157"; + attribute SOFT_HLUTNM of \rate_idle_reg1[2]_i_1\ : label is "soft_lutpair159"; + attribute ASYNC_REG_boolean of \rate_in_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rate_in_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_in_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_in_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rate_in_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_in_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_in_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rate_in_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_in_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_in_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rate_in_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_in_reg2_reg[1]\ : label is "NO"; + attribute SOFT_HLUTNM of \rate_rxsync_reg1_i_1__1\ : label is "soft_lutpair156"; + attribute SOFT_HLUTNM of \ratedone_i_2__1\ : label is "soft_lutpair155"; + attribute SOFT_HLUTNM of \ratedone_i_3__1\ : label is "soft_lutpair155"; + attribute ASYNC_REG_boolean of resetovrd_done_reg1_reg : label is std.standard.true; + attribute KEEP of resetovrd_done_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of resetovrd_done_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of resetovrd_done_reg2_reg : label is std.standard.true; + attribute KEEP of resetovrd_done_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of resetovrd_done_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \resetovrd_start_reg1_i_1__1\ : label is "soft_lutpair158"; + attribute ASYNC_REG_boolean of rst_idle_reg1_reg : label is std.standard.true; + attribute KEEP of rst_idle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rst_idle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rst_idle_reg2_reg : label is std.standard.true; + attribute KEEP of rst_idle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rst_idle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxpmaresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of rxpmaresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxpmaresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxpmaresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of rxpmaresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxpmaresetdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxratedone_reg1_reg : label is std.standard.true; + attribute KEEP of rxratedone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxratedone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxratedone_reg2_reg : label is std.standard.true; + attribute KEEP of rxratedone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxratedone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of rxresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of rxresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxresetdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsync_done_reg1_reg : label is std.standard.true; + attribute KEEP of rxsync_done_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsync_done_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsync_done_reg2_reg : label is std.standard.true; + attribute KEEP of rxsync_done_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsync_done_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \rxsync_start_reg1_i_1__1\ : label is "soft_lutpair156"; + attribute SOFT_HLUTNM of \sysclksel[0]_i_2__1\ : label is "soft_lutpair160"; + attribute SOFT_HLUTNM of \txdata_wait_cnt[3]_i_2__1\ : label is "soft_lutpair160"; + attribute SOFT_HLUTNM of \txdata_wait_cnt[3]_i_3__1\ : label is "soft_lutpair152"; + attribute SOFT_HLUTNM of \txpmareset_i_2__1\ : label is "soft_lutpair154"; + attribute SOFT_HLUTNM of \txratedone_i_2__1\ : label is "soft_lutpair161"; + attribute ASYNC_REG_boolean of txratedone_reg1_reg : label is std.standard.true; + attribute KEEP of txratedone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txratedone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txratedone_reg2_reg : label is std.standard.true; + attribute KEEP of txratedone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txratedone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of txresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of txresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txresetdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsync_done_reg1_reg : label is std.standard.true; + attribute KEEP of txsync_done_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsync_done_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsync_done_reg2_reg : label is std.standard.true; + attribute KEEP of txsync_done_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsync_done_reg2_reg : label is "NO"; +begin + QRST_QPLLPD_IN(0) <= \^qrst_qpllpd_in\(0); + QRST_QPLLRESET_IN(0) <= \^qrst_qpllreset_in\(0); + RXRATE(0) <= \^rxrate\(0); + RXSYSCLKSEL(0) <= \^rxsysclksel\(0); + pipe_pclk_sel_out(0) <= \^pipe_pclk_sel_out\(0); + rate_cpllpd_2 <= \^rate_cpllpd_2\; + rate_cpllreset_2 <= \^rate_cpllreset_2\; + rate_gen3_2 <= \^rate_gen3_2\; + rate_txpmareset_2 <= \^rate_txpmareset_2\; +cplllock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => QRST_CPLLLOCK(0), + Q => cplllock_reg1, + R => RST_CPLLRESET + ); +cplllock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => cplllock_reg1, + Q => cplllock_reg2, + R => RST_CPLLRESET + ); +\cpllpd_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0400FFFF04000000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => rate_in_reg2(0), + I3 => rate_in_reg2(1), + I4 => qpllpd, + I5 => \^rate_cpllpd_2\, + O => \cpllpd_i_1__1_n_0\ + ); +\cpllpd_i_2__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"80000900" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => \fsm_reg_n_0_[3]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => \fsm_reg_n_0_[2]\, + O => qpllpd + ); +cpllpd_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \cpllpd_i_1__1_n_0\, + Q => \^rate_cpllpd_2\, + R => RST_CPLLRESET + ); +\cpllreset_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0400FFFF04000000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => rate_in_reg2(0), + I3 => rate_in_reg2(1), + I4 => qpllreset, + I5 => \^rate_cpllreset_2\, + O => \cpllreset_i_1__2_n_0\ + ); +\cpllreset_i_2__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"80001004" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[3]\, + I3 => \fsm_reg_n_0_[4]\, + I4 => \fsm_reg_n_0_[0]\, + O => qpllreset + ); +cpllreset_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \cpllreset_i_1__2_n_0\, + Q => \^rate_cpllreset_2\, + R => RST_CPLLRESET + ); +drp_done_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RATE_DRP_DONE, + Q => drp_done_reg1, + R => RST_CPLLRESET + ); +drp_done_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => drp_done_reg1, + Q => drp_done_reg2, + R => RST_CPLLRESET + ); +\drp_start_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"08420100" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[4]\, + I3 => \fsm_reg_n_0_[2]\, + I4 => \fsm_reg_n_0_[0]\, + O => \drp_start_i_1__1_n_0\ + ); +drp_start_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \drp_start_i_1__1_n_0\, + Q => RATE_DRP_START, + R => RST_CPLLRESET + ); +\drp_x16_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"20100014" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[0]\, + O => \drp_x16_i_1__1_n_0\ + ); +drp_x16_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \drp_x16_i_1__1_n_0\, + Q => RATE_DRP_X16, + R => RST_CPLLRESET + ); +\drp_x16x20_mode_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"20080074" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[3]\, + I4 => \fsm_reg_n_0_[1]\, + O => \drp_x16x20_mode_i_1__1_n_0\ + ); +drp_x16x20_mode_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \drp_x16x20_mode_i_1__1_n_0\, + Q => RATE_DRP_X16X20_MODE, + R => RST_CPLLRESET + ); +\fsm[0]_i_10__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0901595100000000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => rxsync_done_reg2, + I4 => txsync_done_reg2, + I5 => \fsm_reg_n_0_[3]\, + O => \fsm[0]_i_10__1_n_0\ + ); +\fsm[0]_i_11__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"1101111101000110" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[3]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => rxpmaresetdone_reg2, + I5 => drp_done_reg2, + O => \fsm[0]_i_11__1_n_0\ + ); +\fsm[0]_i_12__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"20202320" + ) + port map ( + I0 => drp_done_reg2, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => mmcm_lock_reg2, + I4 => rxpmaresetdone_reg2, + O => \fsm[0]_i_12__1_n_0\ + ); +\fsm[0]_i_1__4\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFF3210" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm[0]_i_2__4_n_0\, + I3 => \fsm[0]_i_3__1_n_0\, + I4 => \fsm[0]_i_4__1_n_0\, + O => fsm(0) + ); +\fsm[0]_i_2__4\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0F0F3F3F47444744" + ) + port map ( + I0 => drp_done_reg2, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm[0]_i_5__1_n_0\, + I4 => pll_lock, + I5 => \fsm_reg_n_0_[1]\, + O => \fsm[0]_i_2__4_n_0\ + ); +\fsm[0]_i_3__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"F3F3AAAAFF00AAAA" + ) + port map ( + I0 => \fsm[0]_i_7__1_n_0\, + I1 => \fsm_reg_n_0_[0]\, + I2 => drp_done_reg2, + I3 => \fsm[0]_i_8__1_n_0\, + I4 => \fsm_reg_n_0_[2]\, + I5 => \fsm_reg_n_0_[1]\, + O => \fsm[0]_i_3__1_n_0\ + ); +\fsm[0]_i_4__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFF4000000000" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm[0]_i_9__1_n_0\, + I3 => \fsm[0]_i_10__1_n_0\, + I4 => \fsm[0]_i_11__1_n_0\, + I5 => \fsm_reg_n_0_[4]\, + O => \fsm[0]_i_4__1_n_0\ + ); +\fsm[0]_i_5__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"6FF6" + ) + port map ( + I0 => rate_in_reg2(1), + I1 => rate_in_reg1(1), + I2 => rate_in_reg2(0), + I3 => rate_in_reg1(0), + O => \fsm[0]_i_5__1_n_0\ + ); +\fsm[0]_i_6__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"FB08" + ) + port map ( + I0 => qplllock_reg2, + I1 => rate_in_reg2(1), + I2 => rate_in_reg2(0), + I3 => cplllock_reg2, + O => pll_lock + ); +\fsm[0]_i_7__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"AAAAAAAAEAAAAAAA" + ) + port map ( + I0 => \fsm[0]_i_12__1_n_0\, + I1 => pll_lock, + I2 => rst_idle_reg2, + I3 => drp_done_reg2, + I4 => \fsm_reg_n_0_[1]\, + I5 => \fsm_reg_n_0_[0]\, + O => \fsm[0]_i_7__1_n_0\ + ); +\fsm[0]_i_8__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFF5D5500005D55" + ) + port map ( + I0 => user_active_lane_2, + I1 => txresetdone_reg2, + I2 => phystatus_reg2, + I3 => rxresetdone_reg2, + I4 => \fsm_reg_n_0_[0]\, + I5 => \fsm[1]_i_7__1_n_0\, + O => \fsm[0]_i_8__1_n_0\ + ); +\fsm[0]_i_9__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"33330FAA" + ) + port map ( + I0 => drp_done_reg2, + I1 => resetovrd_done_reg2, + I2 => fsm1, + I3 => \fsm_reg_n_0_[0]\, + I4 => \fsm_reg_n_0_[1]\, + O => \fsm[0]_i_9__1_n_0\ + ); +\fsm[1]_i_1__4\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFE4FFE4FFE400E4" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm[1]_i_2__2_n_0\, + I2 => \fsm[1]_i_3__1_n_0\, + I3 => \fsm_reg_n_0_[4]\, + I4 => \fsm[1]_i_4__1_n_0\, + I5 => \fsm[1]_i_5__1_n_0\, + O => fsm(1) + ); +\fsm[1]_i_2__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"3388F0CC" + ) + port map ( + I0 => drp_done_reg2, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm[1]_i_6__1_n_0\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[2]\, + O => \fsm[1]_i_2__2_n_0\ + ); +\fsm[1]_i_3__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"CC5500000033F000" + ) + port map ( + I0 => \fsm[1]_i_7__1_n_0\, + I1 => drp_done_reg2, + I2 => \fsm[1]_i_8__1_n_0\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[0]\, + I5 => \fsm_reg_n_0_[2]\, + O => \fsm[1]_i_3__1_n_0\ + ); +\fsm[1]_i_4__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"000000005FCF0000" + ) + port map ( + I0 => resetovrd_done_reg2, + I1 => drp_done_reg2, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + I4 => \fsm_reg_n_0_[1]\, + I5 => \fsm_reg_n_0_[3]\, + O => \fsm[1]_i_4__1_n_0\ + ); +\fsm[1]_i_5__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"143C547C00000000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => rxsync_done_reg2, + I4 => txsync_done_reg2, + I5 => \fsm_reg_n_0_[3]\, + O => \fsm[1]_i_5__1_n_0\ + ); +\fsm[1]_i_6__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"34F7FFFFFFFFFFFF" + ) + port map ( + I0 => qplllock_reg2, + I1 => rate_in_reg2(1), + I2 => rate_in_reg2(0), + I3 => cplllock_reg2, + I4 => rst_idle_reg2, + I5 => \fsm_reg_n_0_[0]\, + O => \fsm[1]_i_6__1_n_0\ + ); +\fsm[1]_i_7__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"7FFF" + ) + port map ( + I0 => txdata_wait_cnt_reg(3), + I1 => txdata_wait_cnt_reg(1), + I2 => txdata_wait_cnt_reg(0), + I3 => txdata_wait_cnt_reg(2), + O => \fsm[1]_i_7__1_n_0\ + ); +\fsm[1]_i_8__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFF04F7FFFF" + ) + port map ( + I0 => qplllock_reg2, + I1 => rate_in_reg2(1), + I2 => rate_in_reg2(0), + I3 => cplllock_reg2, + I4 => drp_done_reg2, + I5 => rst_idle_reg2, + O => \fsm[1]_i_8__1_n_0\ + ); +\fsm[2]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"EAFFAAAAAAAAAAAA" + ) + port map ( + I0 => \fsm[2]_i_4__1_n_0\, + I1 => drp_done_reg2, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[3]\, + I5 => \fsm_reg_n_0_[2]\, + O => \fsm[2]_i_2__1_n_0\ + ); +\fsm[2]_i_3__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"AFBAAAAAAAAAAAAA" + ) + port map ( + I0 => \fsm[2]_i_5__1_n_0\, + I1 => rxsync_done_reg2, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => \fsm_reg_n_0_[3]\, + I5 => \fsm_reg_n_0_[2]\, + O => \fsm[2]_i_3__1_n_0\ + ); +\fsm[2]_i_4__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"00FA554455005544" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm[3]_i_6__1_n_0\, + I2 => pll_lock, + I3 => \fsm_reg_n_0_[2]\, + I4 => \fsm_reg_n_0_[1]\, + I5 => \fsm_reg_n_0_[0]\, + O => \fsm[2]_i_4__1_n_0\ + ); +\fsm[2]_i_5__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"2000FFFF20000000" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => txsync_done_reg2, + I4 => \fsm_reg_n_0_[3]\, + I5 => \fsm[2]_i_6__1_n_0\, + O => \fsm[2]_i_5__1_n_0\ + ); +\fsm[2]_i_6__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"1CDC3C3C1CDCFCFC" + ) + port map ( + I0 => drp_done_reg2, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => resetovrd_done_reg2, + I4 => \fsm_reg_n_0_[1]\, + I5 => fsm1, + O => \fsm[2]_i_6__1_n_0\ + ); +\fsm[3]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFB0803080" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[3]\, + I4 => drp_done_reg2, + I5 => \fsm[3]_i_4__1_n_0\, + O => \fsm[3]_i_2__1_n_0\ + ); +\fsm[3]_i_3__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFF8880000F888" + ) + port map ( + I0 => \txdata_wait_cnt[3]_i_2__1_n_0\, + I1 => fsm1, + I2 => resetovrd_done_reg2, + I3 => \sysclksel[0]_i_2__1_n_0\, + I4 => \fsm_reg_n_0_[3]\, + I5 => \fsm[4]_i_2__1_n_0\, + O => \fsm[3]_i_3__1_n_0\ + ); +\fsm[3]_i_4__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"00000000EEFF00F0" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm[1]_i_8__1_n_0\, + I2 => \fsm[3]_i_6__1_n_0\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[3]\, + I5 => \fsm_reg_n_0_[2]\, + O => \fsm[3]_i_4__1_n_0\ + ); +\fsm[3]_i_5__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFF8F8FFF8" + ) + port map ( + I0 => \out\, + I1 => \fsm[0]_i_9__1_0\, + I2 => ratedone, + I3 => rate_in_reg2(1), + I4 => rate_in_reg2(0), + I5 => gen3_exit, + O => fsm1 + ); +\fsm[3]_i_6__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00504414" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => rate_in_reg1(0), + I2 => rate_in_reg2(0), + I3 => rate_in_reg1(1), + I4 => rate_in_reg2(1), + O => \fsm[3]_i_6__1_n_0\ + ); +\fsm[4]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"C5F0CFF0C0F0C0F0" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm[4]_i_2__1_n_0\, + I2 => \fsm_reg_n_0_[4]\, + I3 => \fsm_reg_n_0_[3]\, + I4 => drp_done_reg2, + I5 => \fsm[4]_i_3__1_n_0\, + O => fsm(4) + ); +\fsm[4]_i_2__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"26FF" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => rxsync_done_reg2, + I3 => \fsm_reg_n_0_[2]\, + O => \fsm[4]_i_2__1_n_0\ + ); +\fsm[4]_i_3__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[2]\, + O => \fsm[4]_i_3__1_n_0\ + ); +\fsm_reg[0]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => fsm(0), + Q => \fsm_reg_n_0_[0]\, + S => RST_CPLLRESET + ); +\fsm_reg[1]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => fsm(1), + Q => \fsm_reg_n_0_[1]\, + S => RST_CPLLRESET + ); +\fsm_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => fsm(2), + Q => \fsm_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\fsm_reg[2]_i_1__1\: unisim.vcomponents.MUXF7 + port map ( + I0 => \fsm[2]_i_2__1_n_0\, + I1 => \fsm[2]_i_3__1_n_0\, + O => fsm(2), + S => \fsm_reg_n_0_[4]\ + ); +\fsm_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => fsm(3), + Q => \fsm_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\fsm_reg[3]_i_1__1\: unisim.vcomponents.MUXF7 + port map ( + I0 => \fsm[3]_i_2__1_n_0\, + I1 => \fsm[3]_i_3__1_n_0\, + O => fsm(3), + S => \fsm_reg_n_0_[4]\ + ); +\fsm_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => fsm(4), + Q => \fsm_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\gen3_exit_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"04FF0400" + ) + port map ( + I0 => rate_in_reg2(0), + I1 => rate_in_reg2(1), + I2 => \fsm_reg_n_0_[4]\, + I3 => \gen3_exit_i_2__1_n_0\, + I4 => gen3_exit, + O => \gen3_exit_i_1__1_n_0\ + ); +\gen3_exit_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"8000000180000000" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[3]\, + I4 => \fsm_reg_n_0_[4]\, + I5 => \fsm[0]_i_5__1_n_0\, + O => \gen3_exit_i_2__1_n_0\ + ); +gen3_exit_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \gen3_exit_i_1__1_n_0\, + Q => gen3_exit, + R => RST_CPLLRESET + ); +\gen3_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"3FFFFFFB00000008" + ) + port map ( + I0 => \gen3_i_2__1_n_0\, + I1 => \gen3_i_3__1_n_0\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[4]\, + I5 => \^rate_gen3_2\, + O => \gen3_i_1__1_n_0\ + ); +\gen3_i_2__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => rate_in_reg2(1), + I1 => rate_in_reg2(0), + O => \gen3_i_2__1_n_0\ + ); +\gen3_i_3__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[0]\, + O => \gen3_i_3__1_n_0\ + ); +gen3_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \gen3_i_1__1_n_0\, + Q => \^rate_gen3_2\, + R => RST_CPLLRESET + ); +\gtx_channel.gtxe2_channel_i_i_5__1\: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => \^rate_gen3_2\, + O => rxchbonden_2 + ); +mmcm_lock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_mmcm_lock_in, + Q => mmcm_lock_reg1, + R => RST_CPLLRESET + ); +mmcm_lock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => mmcm_lock_reg1, + Q => mmcm_lock_reg2, + R => RST_CPLLRESET + ); +\pclk_sel_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"14FF1400" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => rate_in_reg2(1), + I2 => rate_in_reg2(0), + I3 => \pclk_sel_i_2__1_n_0\, + I4 => \^pipe_pclk_sel_out\(0), + O => \pclk_sel_i_1__1_n_0\ + ); +\pclk_sel_i_2__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"80022000" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[0]\, + O => \pclk_sel_i_2__1_n_0\ + ); +pclk_sel_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pclk_sel_i_1__1_n_0\, + Q => \^pipe_pclk_sel_out\(0), + R => RST_CPLLRESET + ); +\phystatus_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0800080008000000" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \txratedone_i_2__1_n_0\, + I3 => \fsm_reg_n_0_[0]\, + I4 => phystatus_reg2, + I5 => phystatus, + O => \phystatus_i_1__1_n_0\ + ); +phystatus_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \phystatus_i_1__1_n_0\, + Q => phystatus, + R => RST_CPLLRESET + ); +phystatus_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RATE_PHYSTATUS, + Q => phystatus_reg1, + R => RST_CPLLRESET + ); +phystatus_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => phystatus_reg1, + Q => phystatus_reg2, + R => RST_CPLLRESET + ); +qplllock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RATE_QPLLLOCK, + Q => qplllock_reg1, + R => RST_CPLLRESET + ); +qplllock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => qplllock_reg1, + Q => qplllock_reg2, + R => RST_CPLLRESET + ); +\qpllpd_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"4044FFFF40440000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => rate_in_reg2(0), + I3 => rate_in_reg2(1), + I4 => qpllpd, + I5 => \^qrst_qpllpd_in\(0), + O => \qpllpd_i_1__2_n_0\ + ); +qpllpd_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \qpllpd_i_1__2_n_0\, + Q => \^qrst_qpllpd_in\(0), + R => RST_CPLLRESET + ); +\qpllreset_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"4044FFFF40440000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => rate_in_reg2(0), + I3 => rate_in_reg2(1), + I4 => qpllreset, + I5 => \^qrst_qpllreset_in\(0), + O => \qpllreset_i_1__2_n_0\ + ); +qpllreset_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \qpllreset_i_1__2_n_0\, + Q => \^qrst_qpllreset_in\(0), + R => RST_CPLLRESET + ); +\rate_done_reg1_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000080" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => \fsm_reg_n_0_[1]\, + O => USER_RATE_DONE + ); +\rate_idle_reg1[2]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000001" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[4]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[3]\, + O => SYNC_RATE_IDLE + ); +\rate_in_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rate_in_reg1_reg[0]_0\(0), + Q => rate_in_reg1(0), + R => RST_CPLLRESET + ); +\rate_in_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rate_in_reg1(1), + R => RST_CPLLRESET + ); +\rate_in_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rate_in_reg1(0), + Q => rate_in_reg2(0), + R => RST_CPLLRESET + ); +\rate_in_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rate_in_reg1(1), + Q => rate_in_reg2(1), + R => RST_CPLLRESET + ); +\rate_out[0]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0444FFFF04440000" + ) + port map ( + I0 => rate_in_reg2(1), + I1 => rate_in_reg2(0), + I2 => \fsm_reg_n_0_[4]\, + I3 => \fsm_reg_n_0_[3]\, + I4 => \rate_out[0]_i_2__1_n_0\, + I5 => \^rxrate\(0), + O => \rate_out[0]_i_1__1_n_0\ + ); +\rate_out[0]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"8002020080000200" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[4]\, + I4 => \fsm_reg_n_0_[3]\, + I5 => txpmareset0, + O => \rate_out[0]_i_2__1_n_0\ + ); +\rate_out[0]_i_3__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"BA" + ) + port map ( + I0 => gen3_exit, + I1 => rate_in_reg2(0), + I2 => rate_in_reg2(1), + O => txpmareset0 + ); +\rate_out_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rate_out[0]_i_1__1_n_0\, + Q => \^rxrate\(0), + R => RST_CPLLRESET + ); +\rate_rxsync_reg1_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"08800000" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => \fsm_reg_n_0_[2]\, + O => USER_RATE_RXSYNC + ); +\ratedone_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"A3333333A0000000" + ) + port map ( + I0 => \ratedone_i_2__1_n_0\, + I1 => \ratedone_i_3__1_n_0\, + I2 => rxratedone, + I3 => phystatus, + I4 => txratedone, + I5 => ratedone, + O => \ratedone_i_1__1_n_0\ + ); +\ratedone_i_2__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00080000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm_reg_n_0_[3]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[0]\, + O => \ratedone_i_2__1_n_0\ + ); +\ratedone_i_3__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FDFFFFFF" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[3]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[2]\, + I4 => \fsm_reg_n_0_[4]\, + O => \ratedone_i_3__1_n_0\ + ); +ratedone_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \ratedone_i_1__1_n_0\, + Q => ratedone, + R => RST_CPLLRESET + ); +resetovrd_done_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '1', + Q => resetovrd_done_reg1, + R => RST_CPLLRESET + ); +resetovrd_done_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => resetovrd_done_reg1, + Q => resetovrd_done_reg2, + R => RST_CPLLRESET + ); +\resetovrd_start_reg1_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000080" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => \fsm_reg_n_0_[3]\, + O => USER_RESETOVRD_START + ); +rst_idle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RST_IDLE, + Q => rst_idle_reg1, + R => RST_CPLLRESET + ); +rst_idle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rst_idle_reg1, + Q => rst_idle_reg2, + R => RST_CPLLRESET + ); +rxpmaresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxpmaresetdone_reg1, + R => RST_CPLLRESET + ); +rxpmaresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxpmaresetdone_reg1, + Q => rxpmaresetdone_reg2, + R => RST_CPLLRESET + ); +\rxratedone_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0800080008000000" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \txratedone_i_2__1_n_0\, + I3 => \fsm_reg_n_0_[0]\, + I4 => rxratedone_reg2, + I5 => rxratedone, + O => \rxratedone_i_1__1_n_0\ + ); +rxratedone_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rxratedone_i_1__1_n_0\, + Q => rxratedone, + R => RST_CPLLRESET + ); +rxratedone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RATE_RXRATEDONE, + Q => rxratedone_reg1, + R => RST_CPLLRESET + ); +rxratedone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxratedone_reg1, + Q => rxratedone_reg2, + R => RST_CPLLRESET + ); +rxresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_RXRESETDONE, + Q => rxresetdone_reg1, + R => RST_CPLLRESET + ); +rxresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxresetdone_reg1, + Q => rxresetdone_reg2, + R => RST_CPLLRESET + ); +rxsync_done_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxsync_done_reg1, + R => RST_CPLLRESET + ); +rxsync_done_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxsync_done_reg1, + Q => rxsync_done_reg2, + R => RST_CPLLRESET + ); +\rxsync_start_reg1_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"08000000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[4]\, + I4 => \fsm_reg_n_0_[3]\, + O => SYNC_RXSYNC_START + ); +\sysclksel[0]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0FFFFF4F00000040" + ) + port map ( + I0 => rate_in_reg2(0), + I1 => rate_in_reg2(1), + I2 => \sysclksel[0]_i_2__1_n_0\, + I3 => \fsm_reg_n_0_[3]\, + I4 => \fsm_reg_n_0_[4]\, + I5 => \^rxsysclksel\(0), + O => \sysclksel[0]_i_1__1_n_0\ + ); +\sysclksel[0]_i_2__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"80" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + O => \sysclksel[0]_i_2__1_n_0\ + ); +\sysclksel_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \sysclksel[0]_i_1__1_n_0\, + Q => \^rxsysclksel\(0), + R => RST_CPLLRESET + ); +\txdata_wait_cnt[0]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"B333000000000000" + ) + port map ( + I0 => txdata_wait_cnt_reg(1), + I1 => txdata_wait_cnt_reg(0), + I2 => txdata_wait_cnt_reg(2), + I3 => txdata_wait_cnt_reg(3), + I4 => \txdata_wait_cnt[3]_i_2__1_n_0\, + I5 => \txdata_wait_cnt[3]_i_3__1_n_0\, + O => \p_0_in__0\(0) + ); +\txdata_wait_cnt[1]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"E666000000000000" + ) + port map ( + I0 => txdata_wait_cnt_reg(1), + I1 => txdata_wait_cnt_reg(0), + I2 => txdata_wait_cnt_reg(2), + I3 => txdata_wait_cnt_reg(3), + I4 => \txdata_wait_cnt[3]_i_2__1_n_0\, + I5 => \txdata_wait_cnt[3]_i_3__1_n_0\, + O => \p_0_in__0\(1) + ); +\txdata_wait_cnt[2]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"F878000000000000" + ) + port map ( + I0 => txdata_wait_cnt_reg(1), + I1 => txdata_wait_cnt_reg(0), + I2 => txdata_wait_cnt_reg(2), + I3 => txdata_wait_cnt_reg(3), + I4 => \txdata_wait_cnt[3]_i_2__1_n_0\, + I5 => \txdata_wait_cnt[3]_i_3__1_n_0\, + O => \p_0_in__0\(2) + ); +\txdata_wait_cnt[3]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FF80000000000000" + ) + port map ( + I0 => txdata_wait_cnt_reg(1), + I1 => txdata_wait_cnt_reg(0), + I2 => txdata_wait_cnt_reg(2), + I3 => txdata_wait_cnt_reg(3), + I4 => \txdata_wait_cnt[3]_i_2__1_n_0\, + I5 => \txdata_wait_cnt[3]_i_3__1_n_0\, + O => \p_0_in__0\(3) + ); +\txdata_wait_cnt[3]_i_2__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"40" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[2]\, + O => \txdata_wait_cnt[3]_i_2__1_n_0\ + ); +\txdata_wait_cnt[3]_i_3__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[4]\, + O => \txdata_wait_cnt[3]_i_3__1_n_0\ + ); +\txdata_wait_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(0), + Q => txdata_wait_cnt_reg(0), + R => RST_CPLLRESET + ); +\txdata_wait_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(1), + Q => txdata_wait_cnt_reg(1), + R => RST_CPLLRESET + ); +\txdata_wait_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(2), + Q => txdata_wait_cnt_reg(2), + R => RST_CPLLRESET + ); +\txdata_wait_cnt_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(3), + Q => txdata_wait_cnt_reg(3), + R => RST_CPLLRESET + ); +\txpmareset_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"00F2FFFF00F20000" + ) + port map ( + I0 => rate_in_reg2(1), + I1 => rate_in_reg2(0), + I2 => gen3_exit, + I3 => \fsm_reg_n_0_[3]\, + I4 => \txpmareset_i_2__1_n_0\, + I5 => \^rate_txpmareset_2\, + O => \txpmareset_i_1__1_n_0\ + ); +\txpmareset_i_2__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"80004200" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[3]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[4]\, + O => \txpmareset_i_2__1_n_0\ + ); +txpmareset_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txpmareset_i_1__1_n_0\, + Q => \^rate_txpmareset_2\, + R => RST_CPLLRESET + ); +\txratedone_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0800080008000000" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \txratedone_i_2__1_n_0\, + I3 => \fsm_reg_n_0_[0]\, + I4 => txratedone_reg2, + I5 => txratedone, + O => \txratedone_i_1__1_n_0\ + ); +\txratedone_i_2__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"E" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[1]\, + O => \txratedone_i_2__1_n_0\ + ); +txratedone_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txratedone_i_1__1_n_0\, + Q => txratedone, + R => RST_CPLLRESET + ); +txratedone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RATE_TXRATEDONE, + Q => txratedone_reg1, + R => RST_CPLLRESET + ); +txratedone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txratedone_reg1, + Q => txratedone_reg2, + R => RST_CPLLRESET + ); +txresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_TXRESETDONE, + Q => txresetdone_reg1, + R => RST_CPLLRESET + ); +txresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txresetdone_reg1, + Q => txresetdone_reg2, + R => RST_CPLLRESET + ); +txsync_done_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RATE_TXSYNC_DONE, + Q => txsync_done_reg1, + R => RST_CPLLRESET + ); +txsync_done_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txsync_done_reg1, + Q => txsync_done_reg2, + R => RST_CPLLRESET + ); +\txsync_start_reg1_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFF00004000" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[4]\, + I3 => \fsm_reg_n_0_[3]\, + I4 => \fsm_reg_n_0_[2]\, + I5 => RST_TXSYNC_START, + O => SYNC_TXSYNC_START + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pipe_rate_52 is + port ( + SYNC_TXSYNC_START : out STD_LOGIC; + rxchbonden_3 : out STD_LOGIC; + rate_gen3_3 : out STD_LOGIC; + RATE_DRP_START : out STD_LOGIC; + RATE_DRP_X16X20_MODE : out STD_LOGIC; + RATE_DRP_X16 : out STD_LOGIC; + USER_RATE_RXSYNC : out STD_LOGIC; + SYNC_RXSYNC_START : out STD_LOGIC; + USER_RATE_DONE : out STD_LOGIC; + USER_RESETOVRD_START : out STD_LOGIC; + SYNC_RATE_IDLE : out STD_LOGIC; + rate_txpmareset_3 : out STD_LOGIC; + RXSYSCLKSEL : out STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_pclk_sel_out : out STD_LOGIC_VECTOR ( 0 to 0 ); + RXRATE : out STD_LOGIC_VECTOR ( 0 to 0 ); + QRST_QPLLPD_IN : out STD_LOGIC_VECTOR ( 0 to 0 ); + rate_cpllpd_3 : out STD_LOGIC; + QRST_QPLLRESET_IN : out STD_LOGIC_VECTOR ( 0 to 0 ); + rate_cpllreset_3 : out STD_LOGIC; + RST_TXSYNC_START : in STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + \rate_in_reg1_reg[0]_0\ : in STD_LOGIC_VECTOR ( 0 to 0 ); + RST_IDLE : in STD_LOGIC; + QRST_CPLLLOCK : in STD_LOGIC_VECTOR ( 0 to 0 ); + QPLL_QPLLLOCK : in STD_LOGIC; + RATE_DRP_DONE : in STD_LOGIC; + pipe_mmcm_lock_in : in STD_LOGIC; + RATE_PHYSTATUS : in STD_LOGIC; + USER_TXRESETDONE : in STD_LOGIC; + USER_RXRESETDONE : in STD_LOGIC; + RATE_TXRATEDONE : in STD_LOGIC; + RATE_RXRATEDONE : in STD_LOGIC; + RATE_TXSYNC_DONE : in STD_LOGIC; + user_active_lane_3 : in STD_LOGIC; + \out\ : in STD_LOGIC; + \fsm[0]_i_9__2_0\ : in STD_LOGIC + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pipe_rate_52 : entity is "pcie_7x_0_pipe_rate"; +end pcie_7x_0_pcie_7x_0_pipe_rate_52; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pipe_rate_52 is + signal \^qrst_qpllpd_in\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal \^qrst_qpllreset_in\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal \^rxrate\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal \^rxsysclksel\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal cplllock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of cplllock_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of cplllock_reg1 : signal is "true"; + signal cplllock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of cplllock_reg2 : signal is "NO"; + attribute async_reg of cplllock_reg2 : signal is "true"; + signal \cpllpd_i_1__2_n_0\ : STD_LOGIC; + signal \cpllreset_i_1__3_n_0\ : STD_LOGIC; + signal drp_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of drp_done_reg1 : signal is "NO"; + attribute async_reg of drp_done_reg1 : signal is "true"; + signal drp_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of drp_done_reg2 : signal is "NO"; + attribute async_reg of drp_done_reg2 : signal is "true"; + signal \drp_start_i_1__2_n_0\ : STD_LOGIC; + signal \drp_x16_i_1__2_n_0\ : STD_LOGIC; + signal \drp_x16x20_mode_i_1__2_n_0\ : STD_LOGIC; + signal fsm : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal fsm1 : STD_LOGIC; + signal \fsm[0]_i_10__2_n_0\ : STD_LOGIC; + signal \fsm[0]_i_11__2_n_0\ : STD_LOGIC; + signal \fsm[0]_i_12__2_n_0\ : STD_LOGIC; + signal \fsm[0]_i_2__6_n_0\ : STD_LOGIC; + signal \fsm[0]_i_3__2_n_0\ : STD_LOGIC; + signal \fsm[0]_i_4__2_n_0\ : STD_LOGIC; + signal \fsm[0]_i_5__2_n_0\ : STD_LOGIC; + signal \fsm[0]_i_7__2_n_0\ : STD_LOGIC; + signal \fsm[0]_i_8__2_n_0\ : STD_LOGIC; + signal \fsm[0]_i_9__2_n_0\ : STD_LOGIC; + signal \fsm[1]_i_2__3_n_0\ : STD_LOGIC; + signal \fsm[1]_i_3__2_n_0\ : STD_LOGIC; + signal \fsm[1]_i_4__2_n_0\ : STD_LOGIC; + signal \fsm[1]_i_5__2_n_0\ : STD_LOGIC; + signal \fsm[1]_i_6__2_n_0\ : STD_LOGIC; + signal \fsm[1]_i_7__2_n_0\ : STD_LOGIC; + signal \fsm[1]_i_8__2_n_0\ : STD_LOGIC; + signal \fsm[2]_i_2__2_n_0\ : STD_LOGIC; + signal \fsm[2]_i_3__2_n_0\ : STD_LOGIC; + signal \fsm[2]_i_4__2_n_0\ : STD_LOGIC; + signal \fsm[2]_i_5__2_n_0\ : STD_LOGIC; + signal \fsm[2]_i_6__2_n_0\ : STD_LOGIC; + signal \fsm[3]_i_2__2_n_0\ : STD_LOGIC; + signal \fsm[3]_i_3__2_n_0\ : STD_LOGIC; + signal \fsm[3]_i_4__2_n_0\ : STD_LOGIC; + signal \fsm[3]_i_6__2_n_0\ : STD_LOGIC; + signal \fsm[4]_i_2__2_n_0\ : STD_LOGIC; + signal \fsm[4]_i_3__2_n_0\ : STD_LOGIC; + signal \fsm_reg_n_0_[0]\ : STD_LOGIC; + signal \fsm_reg_n_0_[1]\ : STD_LOGIC; + signal \fsm_reg_n_0_[2]\ : STD_LOGIC; + signal \fsm_reg_n_0_[3]\ : STD_LOGIC; + signal \fsm_reg_n_0_[4]\ : STD_LOGIC; + signal gen3_exit : STD_LOGIC; + signal \gen3_exit_i_1__2_n_0\ : STD_LOGIC; + signal \gen3_exit_i_2__2_n_0\ : STD_LOGIC; + signal \gen3_i_1__2_n_0\ : STD_LOGIC; + signal \gen3_i_2__2_n_0\ : STD_LOGIC; + signal \gen3_i_3__2_n_0\ : STD_LOGIC; + signal mmcm_lock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of mmcm_lock_reg1 : signal is "NO"; + attribute async_reg of mmcm_lock_reg1 : signal is "true"; + signal mmcm_lock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of mmcm_lock_reg2 : signal is "NO"; + attribute async_reg of mmcm_lock_reg2 : signal is "true"; + signal \p_0_in__0\ : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal \pclk_sel_i_1__2_n_0\ : STD_LOGIC; + signal \pclk_sel_i_2__2_n_0\ : STD_LOGIC; + signal phystatus : STD_LOGIC; + signal \phystatus_i_1__2_n_0\ : STD_LOGIC; + signal phystatus_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of phystatus_reg1 : signal is "NO"; + attribute async_reg of phystatus_reg1 : signal is "true"; + signal phystatus_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of phystatus_reg2 : signal is "NO"; + attribute async_reg of phystatus_reg2 : signal is "true"; + signal \^pipe_pclk_sel_out\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal pll_lock : STD_LOGIC; + signal qplllock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of qplllock_reg1 : signal is "NO"; + attribute async_reg of qplllock_reg1 : signal is "true"; + signal qplllock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of qplllock_reg2 : signal is "NO"; + attribute async_reg of qplllock_reg2 : signal is "true"; + signal qpllpd : STD_LOGIC; + signal \qpllpd_i_1__3_n_0\ : STD_LOGIC; + signal qpllreset : STD_LOGIC; + signal \qpllreset_i_1__3_n_0\ : STD_LOGIC; + signal \^rate_cpllpd_3\ : STD_LOGIC; + signal \^rate_cpllreset_3\ : STD_LOGIC; + signal \^rate_gen3_3\ : STD_LOGIC; + signal rate_in_reg1 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rate_in_reg1 : signal is "NO"; + attribute async_reg of rate_in_reg1 : signal is "true"; + signal rate_in_reg2 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rate_in_reg2 : signal is "NO"; + attribute async_reg of rate_in_reg2 : signal is "true"; + signal \rate_out[0]_i_1__2_n_0\ : STD_LOGIC; + signal \rate_out[0]_i_2__2_n_0\ : STD_LOGIC; + signal \^rate_txpmareset_3\ : STD_LOGIC; + signal ratedone : STD_LOGIC; + signal \ratedone_i_1__2_n_0\ : STD_LOGIC; + signal \ratedone_i_2__2_n_0\ : STD_LOGIC; + signal \ratedone_i_3__2_n_0\ : STD_LOGIC; + signal resetovrd_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of resetovrd_done_reg1 : signal is "NO"; + attribute async_reg of resetovrd_done_reg1 : signal is "true"; + signal resetovrd_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of resetovrd_done_reg2 : signal is "NO"; + attribute async_reg of resetovrd_done_reg2 : signal is "true"; + signal rst_idle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rst_idle_reg1 : signal is "NO"; + attribute async_reg of rst_idle_reg1 : signal is "true"; + signal rst_idle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rst_idle_reg2 : signal is "NO"; + attribute async_reg of rst_idle_reg2 : signal is "true"; + signal rxpmaresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxpmaresetdone_reg1 : signal is "NO"; + attribute async_reg of rxpmaresetdone_reg1 : signal is "true"; + signal rxpmaresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxpmaresetdone_reg2 : signal is "NO"; + attribute async_reg of rxpmaresetdone_reg2 : signal is "true"; + signal rxratedone : STD_LOGIC; + signal \rxratedone_i_1__2_n_0\ : STD_LOGIC; + signal rxratedone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxratedone_reg1 : signal is "NO"; + attribute async_reg of rxratedone_reg1 : signal is "true"; + signal rxratedone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxratedone_reg2 : signal is "NO"; + attribute async_reg of rxratedone_reg2 : signal is "true"; + signal rxresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxresetdone_reg1 : signal is "NO"; + attribute async_reg of rxresetdone_reg1 : signal is "true"; + signal rxresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxresetdone_reg2 : signal is "NO"; + attribute async_reg of rxresetdone_reg2 : signal is "true"; + signal rxsync_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsync_done_reg1 : signal is "NO"; + attribute async_reg of rxsync_done_reg1 : signal is "true"; + signal rxsync_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsync_done_reg2 : signal is "NO"; + attribute async_reg of rxsync_done_reg2 : signal is "true"; + signal \sysclksel[0]_i_1__2_n_0\ : STD_LOGIC; + signal \sysclksel[0]_i_2__2_n_0\ : STD_LOGIC; + signal \txdata_wait_cnt[3]_i_2__2_n_0\ : STD_LOGIC; + signal \txdata_wait_cnt[3]_i_3__2_n_0\ : STD_LOGIC; + signal txdata_wait_cnt_reg : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal txpmareset0 : STD_LOGIC; + signal \txpmareset_i_1__2_n_0\ : STD_LOGIC; + signal \txpmareset_i_2__2_n_0\ : STD_LOGIC; + signal txratedone : STD_LOGIC; + signal \txratedone_i_1__2_n_0\ : STD_LOGIC; + signal \txratedone_i_2__2_n_0\ : STD_LOGIC; + signal txratedone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txratedone_reg1 : signal is "NO"; + attribute async_reg of txratedone_reg1 : signal is "true"; + signal txratedone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txratedone_reg2 : signal is "NO"; + attribute async_reg of txratedone_reg2 : signal is "true"; + signal txresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txresetdone_reg1 : signal is "NO"; + attribute async_reg of txresetdone_reg1 : signal is "true"; + signal txresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txresetdone_reg2 : signal is "NO"; + attribute async_reg of txresetdone_reg2 : signal is "true"; + signal txsync_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsync_done_reg1 : signal is "NO"; + attribute async_reg of txsync_done_reg1 : signal is "true"; + signal txsync_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsync_done_reg2 : signal is "NO"; + attribute async_reg of txsync_done_reg2 : signal is "true"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of cplllock_reg1_reg : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of cplllock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of cplllock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of cplllock_reg2_reg : label is std.standard.true; + attribute KEEP of cplllock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of cplllock_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \cpllpd_i_2__2\ : label is "soft_lutpair194"; + attribute SOFT_HLUTNM of \cpllreset_i_2__3\ : label is "soft_lutpair195"; + attribute ASYNC_REG_boolean of drp_done_reg1_reg : label is std.standard.true; + attribute KEEP of drp_done_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of drp_done_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of drp_done_reg2_reg : label is std.standard.true; + attribute KEEP of drp_done_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of drp_done_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \drp_start_i_1__2\ : label is "soft_lutpair198"; + attribute SOFT_HLUTNM of \drp_x16_i_1__2\ : label is "soft_lutpair199"; + attribute SOFT_HLUTNM of \drp_x16x20_mode_i_1__2\ : label is "soft_lutpair200"; + attribute SOFT_HLUTNM of \fsm[0]_i_1__6\ : label is "soft_lutpair193"; + attribute SOFT_HLUTNM of \fsm[4]_i_3__2\ : label is "soft_lutpair202"; + attribute ASYNC_REG_boolean of mmcm_lock_reg1_reg : label is std.standard.true; + attribute KEEP of mmcm_lock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of mmcm_lock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of mmcm_lock_reg2_reg : label is std.standard.true; + attribute KEEP of mmcm_lock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of mmcm_lock_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \pclk_sel_i_2__2\ : label is "soft_lutpair194"; + attribute ASYNC_REG_boolean of phystatus_reg1_reg : label is std.standard.true; + attribute KEEP of phystatus_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of phystatus_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of phystatus_reg2_reg : label is std.standard.true; + attribute KEEP of phystatus_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of phystatus_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of qplllock_reg1_reg : label is std.standard.true; + attribute KEEP of qplllock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of qplllock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of qplllock_reg2_reg : label is std.standard.true; + attribute KEEP of qplllock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of qplllock_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \rate_done_reg1_i_1__2\ : label is "soft_lutpair198"; + attribute SOFT_HLUTNM of \rate_idle_reg1[3]_i_1\ : label is "soft_lutpair200"; + attribute ASYNC_REG_boolean of \rate_in_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rate_in_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_in_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_in_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rate_in_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_in_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_in_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rate_in_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_in_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_in_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rate_in_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_in_reg2_reg[1]\ : label is "NO"; + attribute SOFT_HLUTNM of \rate_rxsync_reg1_i_1__2\ : label is "soft_lutpair197"; + attribute SOFT_HLUTNM of \ratedone_i_2__2\ : label is "soft_lutpair196"; + attribute SOFT_HLUTNM of \ratedone_i_3__2\ : label is "soft_lutpair196"; + attribute ASYNC_REG_boolean of resetovrd_done_reg1_reg : label is std.standard.true; + attribute KEEP of resetovrd_done_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of resetovrd_done_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of resetovrd_done_reg2_reg : label is std.standard.true; + attribute KEEP of resetovrd_done_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of resetovrd_done_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \resetovrd_start_reg1_i_1__2\ : label is "soft_lutpair199"; + attribute ASYNC_REG_boolean of rst_idle_reg1_reg : label is std.standard.true; + attribute KEEP of rst_idle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rst_idle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rst_idle_reg2_reg : label is std.standard.true; + attribute KEEP of rst_idle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rst_idle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxpmaresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of rxpmaresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxpmaresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxpmaresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of rxpmaresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxpmaresetdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxratedone_reg1_reg : label is std.standard.true; + attribute KEEP of rxratedone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxratedone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxratedone_reg2_reg : label is std.standard.true; + attribute KEEP of rxratedone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxratedone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of rxresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of rxresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxresetdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsync_done_reg1_reg : label is std.standard.true; + attribute KEEP of rxsync_done_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsync_done_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsync_done_reg2_reg : label is std.standard.true; + attribute KEEP of rxsync_done_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsync_done_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \rxsync_start_reg1_i_1__2\ : label is "soft_lutpair197"; + attribute SOFT_HLUTNM of \sysclksel[0]_i_2__2\ : label is "soft_lutpair201"; + attribute SOFT_HLUTNM of \txdata_wait_cnt[3]_i_2__2\ : label is "soft_lutpair201"; + attribute SOFT_HLUTNM of \txdata_wait_cnt[3]_i_3__2\ : label is "soft_lutpair193"; + attribute SOFT_HLUTNM of \txpmareset_i_2__2\ : label is "soft_lutpair195"; + attribute SOFT_HLUTNM of \txratedone_i_2__2\ : label is "soft_lutpair202"; + attribute ASYNC_REG_boolean of txratedone_reg1_reg : label is std.standard.true; + attribute KEEP of txratedone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txratedone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txratedone_reg2_reg : label is std.standard.true; + attribute KEEP of txratedone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txratedone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of txresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of txresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txresetdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsync_done_reg1_reg : label is std.standard.true; + attribute KEEP of txsync_done_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsync_done_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsync_done_reg2_reg : label is std.standard.true; + attribute KEEP of txsync_done_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsync_done_reg2_reg : label is "NO"; +begin + QRST_QPLLPD_IN(0) <= \^qrst_qpllpd_in\(0); + QRST_QPLLRESET_IN(0) <= \^qrst_qpllreset_in\(0); + RXRATE(0) <= \^rxrate\(0); + RXSYSCLKSEL(0) <= \^rxsysclksel\(0); + pipe_pclk_sel_out(0) <= \^pipe_pclk_sel_out\(0); + rate_cpllpd_3 <= \^rate_cpllpd_3\; + rate_cpllreset_3 <= \^rate_cpllreset_3\; + rate_gen3_3 <= \^rate_gen3_3\; + rate_txpmareset_3 <= \^rate_txpmareset_3\; +cplllock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => QRST_CPLLLOCK(0), + Q => cplllock_reg1, + R => RST_CPLLRESET + ); +cplllock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => cplllock_reg1, + Q => cplllock_reg2, + R => RST_CPLLRESET + ); +\cpllpd_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0400FFFF04000000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => rate_in_reg2(0), + I3 => rate_in_reg2(1), + I4 => qpllpd, + I5 => \^rate_cpllpd_3\, + O => \cpllpd_i_1__2_n_0\ + ); +\cpllpd_i_2__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"80000900" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => \fsm_reg_n_0_[3]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => \fsm_reg_n_0_[2]\, + O => qpllpd + ); +cpllpd_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \cpllpd_i_1__2_n_0\, + Q => \^rate_cpllpd_3\, + R => RST_CPLLRESET + ); +\cpllreset_i_1__3\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0400FFFF04000000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => rate_in_reg2(0), + I3 => rate_in_reg2(1), + I4 => qpllreset, + I5 => \^rate_cpllreset_3\, + O => \cpllreset_i_1__3_n_0\ + ); +\cpllreset_i_2__3\: unisim.vcomponents.LUT5 + generic map( + INIT => X"80001004" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[3]\, + I3 => \fsm_reg_n_0_[4]\, + I4 => \fsm_reg_n_0_[0]\, + O => qpllreset + ); +cpllreset_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \cpllreset_i_1__3_n_0\, + Q => \^rate_cpllreset_3\, + R => RST_CPLLRESET + ); +drp_done_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RATE_DRP_DONE, + Q => drp_done_reg1, + R => RST_CPLLRESET + ); +drp_done_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => drp_done_reg1, + Q => drp_done_reg2, + R => RST_CPLLRESET + ); +\drp_start_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"08420100" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[4]\, + I3 => \fsm_reg_n_0_[2]\, + I4 => \fsm_reg_n_0_[0]\, + O => \drp_start_i_1__2_n_0\ + ); +drp_start_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \drp_start_i_1__2_n_0\, + Q => RATE_DRP_START, + R => RST_CPLLRESET + ); +\drp_x16_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"20100014" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[0]\, + O => \drp_x16_i_1__2_n_0\ + ); +drp_x16_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \drp_x16_i_1__2_n_0\, + Q => RATE_DRP_X16, + R => RST_CPLLRESET + ); +\drp_x16x20_mode_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"20080074" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[3]\, + I4 => \fsm_reg_n_0_[1]\, + O => \drp_x16x20_mode_i_1__2_n_0\ + ); +drp_x16x20_mode_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \drp_x16x20_mode_i_1__2_n_0\, + Q => RATE_DRP_X16X20_MODE, + R => RST_CPLLRESET + ); +\fsm[0]_i_10__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0901595100000000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => rxsync_done_reg2, + I4 => txsync_done_reg2, + I5 => \fsm_reg_n_0_[3]\, + O => \fsm[0]_i_10__2_n_0\ + ); +\fsm[0]_i_11__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"1101111101000110" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[3]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => rxpmaresetdone_reg2, + I5 => drp_done_reg2, + O => \fsm[0]_i_11__2_n_0\ + ); +\fsm[0]_i_12__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"20202320" + ) + port map ( + I0 => drp_done_reg2, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => mmcm_lock_reg2, + I4 => rxpmaresetdone_reg2, + O => \fsm[0]_i_12__2_n_0\ + ); +\fsm[0]_i_1__6\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFF3210" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm[0]_i_2__6_n_0\, + I3 => \fsm[0]_i_3__2_n_0\, + I4 => \fsm[0]_i_4__2_n_0\, + O => fsm(0) + ); +\fsm[0]_i_2__6\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0F0F3F3F47444744" + ) + port map ( + I0 => drp_done_reg2, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm[0]_i_5__2_n_0\, + I4 => pll_lock, + I5 => \fsm_reg_n_0_[1]\, + O => \fsm[0]_i_2__6_n_0\ + ); +\fsm[0]_i_3__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"F3F3AAAAFF00AAAA" + ) + port map ( + I0 => \fsm[0]_i_7__2_n_0\, + I1 => \fsm_reg_n_0_[0]\, + I2 => drp_done_reg2, + I3 => \fsm[0]_i_8__2_n_0\, + I4 => \fsm_reg_n_0_[2]\, + I5 => \fsm_reg_n_0_[1]\, + O => \fsm[0]_i_3__2_n_0\ + ); +\fsm[0]_i_4__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFF4000000000" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm[0]_i_9__2_n_0\, + I3 => \fsm[0]_i_10__2_n_0\, + I4 => \fsm[0]_i_11__2_n_0\, + I5 => \fsm_reg_n_0_[4]\, + O => \fsm[0]_i_4__2_n_0\ + ); +\fsm[0]_i_5__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"6FF6" + ) + port map ( + I0 => rate_in_reg2(1), + I1 => rate_in_reg1(1), + I2 => rate_in_reg2(0), + I3 => rate_in_reg1(0), + O => \fsm[0]_i_5__2_n_0\ + ); +\fsm[0]_i_6__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"FB08" + ) + port map ( + I0 => qplllock_reg2, + I1 => rate_in_reg2(1), + I2 => rate_in_reg2(0), + I3 => cplllock_reg2, + O => pll_lock + ); +\fsm[0]_i_7__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"AAAAAAAAEAAAAAAA" + ) + port map ( + I0 => \fsm[0]_i_12__2_n_0\, + I1 => pll_lock, + I2 => rst_idle_reg2, + I3 => drp_done_reg2, + I4 => \fsm_reg_n_0_[1]\, + I5 => \fsm_reg_n_0_[0]\, + O => \fsm[0]_i_7__2_n_0\ + ); +\fsm[0]_i_8__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFF5D5500005D55" + ) + port map ( + I0 => user_active_lane_3, + I1 => txresetdone_reg2, + I2 => phystatus_reg2, + I3 => rxresetdone_reg2, + I4 => \fsm_reg_n_0_[0]\, + I5 => \fsm[1]_i_7__2_n_0\, + O => \fsm[0]_i_8__2_n_0\ + ); +\fsm[0]_i_9__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"33330FAA" + ) + port map ( + I0 => drp_done_reg2, + I1 => resetovrd_done_reg2, + I2 => fsm1, + I3 => \fsm_reg_n_0_[0]\, + I4 => \fsm_reg_n_0_[1]\, + O => \fsm[0]_i_9__2_n_0\ + ); +\fsm[1]_i_1__6\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFE4FFE4FFE400E4" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm[1]_i_2__3_n_0\, + I2 => \fsm[1]_i_3__2_n_0\, + I3 => \fsm_reg_n_0_[4]\, + I4 => \fsm[1]_i_4__2_n_0\, + I5 => \fsm[1]_i_5__2_n_0\, + O => fsm(1) + ); +\fsm[1]_i_2__3\: unisim.vcomponents.LUT5 + generic map( + INIT => X"3388F0CC" + ) + port map ( + I0 => drp_done_reg2, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm[1]_i_6__2_n_0\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[2]\, + O => \fsm[1]_i_2__3_n_0\ + ); +\fsm[1]_i_3__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"CC5500000033F000" + ) + port map ( + I0 => \fsm[1]_i_7__2_n_0\, + I1 => drp_done_reg2, + I2 => \fsm[1]_i_8__2_n_0\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[0]\, + I5 => \fsm_reg_n_0_[2]\, + O => \fsm[1]_i_3__2_n_0\ + ); +\fsm[1]_i_4__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"000000005FCF0000" + ) + port map ( + I0 => resetovrd_done_reg2, + I1 => drp_done_reg2, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[2]\, + I4 => \fsm_reg_n_0_[1]\, + I5 => \fsm_reg_n_0_[3]\, + O => \fsm[1]_i_4__2_n_0\ + ); +\fsm[1]_i_5__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"143C547C00000000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => rxsync_done_reg2, + I4 => txsync_done_reg2, + I5 => \fsm_reg_n_0_[3]\, + O => \fsm[1]_i_5__2_n_0\ + ); +\fsm[1]_i_6__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"34F7FFFFFFFFFFFF" + ) + port map ( + I0 => qplllock_reg2, + I1 => rate_in_reg2(1), + I2 => rate_in_reg2(0), + I3 => cplllock_reg2, + I4 => rst_idle_reg2, + I5 => \fsm_reg_n_0_[0]\, + O => \fsm[1]_i_6__2_n_0\ + ); +\fsm[1]_i_7__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"7FFF" + ) + port map ( + I0 => txdata_wait_cnt_reg(3), + I1 => txdata_wait_cnt_reg(1), + I2 => txdata_wait_cnt_reg(0), + I3 => txdata_wait_cnt_reg(2), + O => \fsm[1]_i_7__2_n_0\ + ); +\fsm[1]_i_8__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFF04F7FFFF" + ) + port map ( + I0 => qplllock_reg2, + I1 => rate_in_reg2(1), + I2 => rate_in_reg2(0), + I3 => cplllock_reg2, + I4 => drp_done_reg2, + I5 => rst_idle_reg2, + O => \fsm[1]_i_8__2_n_0\ + ); +\fsm[2]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"EAFFAAAAAAAAAAAA" + ) + port map ( + I0 => \fsm[2]_i_4__2_n_0\, + I1 => drp_done_reg2, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[3]\, + I5 => \fsm_reg_n_0_[2]\, + O => \fsm[2]_i_2__2_n_0\ + ); +\fsm[2]_i_3__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"AFBAAAAAAAAAAAAA" + ) + port map ( + I0 => \fsm[2]_i_5__2_n_0\, + I1 => rxsync_done_reg2, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => \fsm_reg_n_0_[3]\, + I5 => \fsm_reg_n_0_[2]\, + O => \fsm[2]_i_3__2_n_0\ + ); +\fsm[2]_i_4__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"00FA554455005544" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm[3]_i_6__2_n_0\, + I2 => pll_lock, + I3 => \fsm_reg_n_0_[2]\, + I4 => \fsm_reg_n_0_[1]\, + I5 => \fsm_reg_n_0_[0]\, + O => \fsm[2]_i_4__2_n_0\ + ); +\fsm[2]_i_5__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"2000FFFF20000000" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => txsync_done_reg2, + I4 => \fsm_reg_n_0_[3]\, + I5 => \fsm[2]_i_6__2_n_0\, + O => \fsm[2]_i_5__2_n_0\ + ); +\fsm[2]_i_6__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"1CDC3C3C1CDCFCFC" + ) + port map ( + I0 => drp_done_reg2, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => resetovrd_done_reg2, + I4 => \fsm_reg_n_0_[1]\, + I5 => fsm1, + O => \fsm[2]_i_6__2_n_0\ + ); +\fsm[3]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFB0803080" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[3]\, + I4 => drp_done_reg2, + I5 => \fsm[3]_i_4__2_n_0\, + O => \fsm[3]_i_2__2_n_0\ + ); +\fsm[3]_i_3__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFF8880000F888" + ) + port map ( + I0 => \txdata_wait_cnt[3]_i_2__2_n_0\, + I1 => fsm1, + I2 => resetovrd_done_reg2, + I3 => \sysclksel[0]_i_2__2_n_0\, + I4 => \fsm_reg_n_0_[3]\, + I5 => \fsm[4]_i_2__2_n_0\, + O => \fsm[3]_i_3__2_n_0\ + ); +\fsm[3]_i_4__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"00000000EEFF00F0" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm[1]_i_8__2_n_0\, + I2 => \fsm[3]_i_6__2_n_0\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[3]\, + I5 => \fsm_reg_n_0_[2]\, + O => \fsm[3]_i_4__2_n_0\ + ); +\fsm[3]_i_5__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFF8F8FFF8" + ) + port map ( + I0 => \out\, + I1 => \fsm[0]_i_9__2_0\, + I2 => ratedone, + I3 => rate_in_reg2(1), + I4 => rate_in_reg2(0), + I5 => gen3_exit, + O => fsm1 + ); +\fsm[3]_i_6__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00504414" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => rate_in_reg1(0), + I2 => rate_in_reg2(0), + I3 => rate_in_reg1(1), + I4 => rate_in_reg2(1), + O => \fsm[3]_i_6__2_n_0\ + ); +\fsm[4]_i_1__3\: unisim.vcomponents.LUT6 + generic map( + INIT => X"C5F0CFF0C0F0C0F0" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm[4]_i_2__2_n_0\, + I2 => \fsm_reg_n_0_[4]\, + I3 => \fsm_reg_n_0_[3]\, + I4 => drp_done_reg2, + I5 => \fsm[4]_i_3__2_n_0\, + O => fsm(4) + ); +\fsm[4]_i_2__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"26FF" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => rxsync_done_reg2, + I3 => \fsm_reg_n_0_[2]\, + O => \fsm[4]_i_2__2_n_0\ + ); +\fsm[4]_i_3__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[2]\, + O => \fsm[4]_i_3__2_n_0\ + ); +\fsm_reg[0]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => fsm(0), + Q => \fsm_reg_n_0_[0]\, + S => RST_CPLLRESET + ); +\fsm_reg[1]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => fsm(1), + Q => \fsm_reg_n_0_[1]\, + S => RST_CPLLRESET + ); +\fsm_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => fsm(2), + Q => \fsm_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\fsm_reg[2]_i_1__2\: unisim.vcomponents.MUXF7 + port map ( + I0 => \fsm[2]_i_2__2_n_0\, + I1 => \fsm[2]_i_3__2_n_0\, + O => fsm(2), + S => \fsm_reg_n_0_[4]\ + ); +\fsm_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => fsm(3), + Q => \fsm_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\fsm_reg[3]_i_1__2\: unisim.vcomponents.MUXF7 + port map ( + I0 => \fsm[3]_i_2__2_n_0\, + I1 => \fsm[3]_i_3__2_n_0\, + O => fsm(3), + S => \fsm_reg_n_0_[4]\ + ); +\fsm_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => fsm(4), + Q => \fsm_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\gen3_exit_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"04FF0400" + ) + port map ( + I0 => rate_in_reg2(0), + I1 => rate_in_reg2(1), + I2 => \fsm_reg_n_0_[4]\, + I3 => \gen3_exit_i_2__2_n_0\, + I4 => gen3_exit, + O => \gen3_exit_i_1__2_n_0\ + ); +\gen3_exit_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"8000000180000000" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[3]\, + I4 => \fsm_reg_n_0_[4]\, + I5 => \fsm[0]_i_5__2_n_0\, + O => \gen3_exit_i_2__2_n_0\ + ); +gen3_exit_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \gen3_exit_i_1__2_n_0\, + Q => gen3_exit, + R => RST_CPLLRESET + ); +\gen3_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"3FFFFFFB00000008" + ) + port map ( + I0 => \gen3_i_2__2_n_0\, + I1 => \gen3_i_3__2_n_0\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[4]\, + I5 => \^rate_gen3_3\, + O => \gen3_i_1__2_n_0\ + ); +\gen3_i_2__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => rate_in_reg2(1), + I1 => rate_in_reg2(0), + O => \gen3_i_2__2_n_0\ + ); +\gen3_i_3__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[0]\, + O => \gen3_i_3__2_n_0\ + ); +gen3_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \gen3_i_1__2_n_0\, + Q => \^rate_gen3_3\, + R => RST_CPLLRESET + ); +\gtx_channel.gtxe2_channel_i_i_5__2\: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => \^rate_gen3_3\, + O => rxchbonden_3 + ); +mmcm_lock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_mmcm_lock_in, + Q => mmcm_lock_reg1, + R => RST_CPLLRESET + ); +mmcm_lock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => mmcm_lock_reg1, + Q => mmcm_lock_reg2, + R => RST_CPLLRESET + ); +\pclk_sel_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"14FF1400" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => rate_in_reg2(1), + I2 => rate_in_reg2(0), + I3 => \pclk_sel_i_2__2_n_0\, + I4 => \^pipe_pclk_sel_out\(0), + O => \pclk_sel_i_1__2_n_0\ + ); +\pclk_sel_i_2__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"80022000" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[0]\, + O => \pclk_sel_i_2__2_n_0\ + ); +pclk_sel_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \pclk_sel_i_1__2_n_0\, + Q => \^pipe_pclk_sel_out\(0), + R => RST_CPLLRESET + ); +\phystatus_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0800080008000000" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \txratedone_i_2__2_n_0\, + I3 => \fsm_reg_n_0_[0]\, + I4 => phystatus_reg2, + I5 => phystatus, + O => \phystatus_i_1__2_n_0\ + ); +phystatus_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \phystatus_i_1__2_n_0\, + Q => phystatus, + R => RST_CPLLRESET + ); +phystatus_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RATE_PHYSTATUS, + Q => phystatus_reg1, + R => RST_CPLLRESET + ); +phystatus_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => phystatus_reg1, + Q => phystatus_reg2, + R => RST_CPLLRESET + ); +qplllock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => QPLL_QPLLLOCK, + Q => qplllock_reg1, + R => RST_CPLLRESET + ); +qplllock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => qplllock_reg1, + Q => qplllock_reg2, + R => RST_CPLLRESET + ); +\qpllpd_i_1__3\: unisim.vcomponents.LUT6 + generic map( + INIT => X"4044FFFF40440000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => rate_in_reg2(0), + I3 => rate_in_reg2(1), + I4 => qpllpd, + I5 => \^qrst_qpllpd_in\(0), + O => \qpllpd_i_1__3_n_0\ + ); +qpllpd_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \qpllpd_i_1__3_n_0\, + Q => \^qrst_qpllpd_in\(0), + R => RST_CPLLRESET + ); +\qpllreset_i_1__3\: unisim.vcomponents.LUT6 + generic map( + INIT => X"4044FFFF40440000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => rate_in_reg2(0), + I3 => rate_in_reg2(1), + I4 => qpllreset, + I5 => \^qrst_qpllreset_in\(0), + O => \qpllreset_i_1__3_n_0\ + ); +qpllreset_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \qpllreset_i_1__3_n_0\, + Q => \^qrst_qpllreset_in\(0), + R => RST_CPLLRESET + ); +\rate_done_reg1_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000080" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => \fsm_reg_n_0_[1]\, + O => USER_RATE_DONE + ); +\rate_idle_reg1[3]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000001" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[4]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[3]\, + O => SYNC_RATE_IDLE + ); +\rate_in_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rate_in_reg1_reg[0]_0\(0), + Q => rate_in_reg1(0), + R => RST_CPLLRESET + ); +\rate_in_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rate_in_reg1(1), + R => RST_CPLLRESET + ); +\rate_in_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rate_in_reg1(0), + Q => rate_in_reg2(0), + R => RST_CPLLRESET + ); +\rate_in_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rate_in_reg1(1), + Q => rate_in_reg2(1), + R => RST_CPLLRESET + ); +\rate_out[0]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0444FFFF04440000" + ) + port map ( + I0 => rate_in_reg2(1), + I1 => rate_in_reg2(0), + I2 => \fsm_reg_n_0_[4]\, + I3 => \fsm_reg_n_0_[3]\, + I4 => \rate_out[0]_i_2__2_n_0\, + I5 => \^rxrate\(0), + O => \rate_out[0]_i_1__2_n_0\ + ); +\rate_out[0]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"8002020080000200" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[4]\, + I4 => \fsm_reg_n_0_[3]\, + I5 => txpmareset0, + O => \rate_out[0]_i_2__2_n_0\ + ); +\rate_out[0]_i_3__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"BA" + ) + port map ( + I0 => gen3_exit, + I1 => rate_in_reg2(0), + I2 => rate_in_reg2(1), + O => txpmareset0 + ); +\rate_out_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rate_out[0]_i_1__2_n_0\, + Q => \^rxrate\(0), + R => RST_CPLLRESET + ); +\rate_rxsync_reg1_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"08800000" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => \fsm_reg_n_0_[2]\, + O => USER_RATE_RXSYNC + ); +\ratedone_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"A3333333A0000000" + ) + port map ( + I0 => \ratedone_i_2__2_n_0\, + I1 => \ratedone_i_3__2_n_0\, + I2 => rxratedone, + I3 => phystatus, + I4 => txratedone, + I5 => ratedone, + O => \ratedone_i_1__2_n_0\ + ); +\ratedone_i_2__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00080000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[4]\, + I2 => \fsm_reg_n_0_[3]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[0]\, + O => \ratedone_i_2__2_n_0\ + ); +\ratedone_i_3__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FDFFFFFF" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[3]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[2]\, + I4 => \fsm_reg_n_0_[4]\, + O => \ratedone_i_3__2_n_0\ + ); +ratedone_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \ratedone_i_1__2_n_0\, + Q => ratedone, + R => RST_CPLLRESET + ); +resetovrd_done_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '1', + Q => resetovrd_done_reg1, + R => RST_CPLLRESET + ); +resetovrd_done_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => resetovrd_done_reg1, + Q => resetovrd_done_reg2, + R => RST_CPLLRESET + ); +\resetovrd_start_reg1_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000080" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[0]\, + I4 => \fsm_reg_n_0_[3]\, + O => USER_RESETOVRD_START + ); +rst_idle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RST_IDLE, + Q => rst_idle_reg1, + R => RST_CPLLRESET + ); +rst_idle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rst_idle_reg1, + Q => rst_idle_reg2, + R => RST_CPLLRESET + ); +rxpmaresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxpmaresetdone_reg1, + R => RST_CPLLRESET + ); +rxpmaresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxpmaresetdone_reg1, + Q => rxpmaresetdone_reg2, + R => RST_CPLLRESET + ); +\rxratedone_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0800080008000000" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \txratedone_i_2__2_n_0\, + I3 => \fsm_reg_n_0_[0]\, + I4 => rxratedone_reg2, + I5 => rxratedone, + O => \rxratedone_i_1__2_n_0\ + ); +rxratedone_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rxratedone_i_1__2_n_0\, + Q => rxratedone, + R => RST_CPLLRESET + ); +rxratedone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RATE_RXRATEDONE, + Q => rxratedone_reg1, + R => RST_CPLLRESET + ); +rxratedone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxratedone_reg1, + Q => rxratedone_reg2, + R => RST_CPLLRESET + ); +rxresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_RXRESETDONE, + Q => rxresetdone_reg1, + R => RST_CPLLRESET + ); +rxresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxresetdone_reg1, + Q => rxresetdone_reg2, + R => RST_CPLLRESET + ); +rxsync_done_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxsync_done_reg1, + R => RST_CPLLRESET + ); +rxsync_done_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxsync_done_reg1, + Q => rxsync_done_reg2, + R => RST_CPLLRESET + ); +\rxsync_start_reg1_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"08000000" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[4]\, + I4 => \fsm_reg_n_0_[3]\, + O => SYNC_RXSYNC_START + ); +\sysclksel[0]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0FFFFF4F00000040" + ) + port map ( + I0 => rate_in_reg2(0), + I1 => rate_in_reg2(1), + I2 => \sysclksel[0]_i_2__2_n_0\, + I3 => \fsm_reg_n_0_[3]\, + I4 => \fsm_reg_n_0_[4]\, + I5 => \^rxsysclksel\(0), + O => \sysclksel[0]_i_1__2_n_0\ + ); +\sysclksel[0]_i_2__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"80" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[0]\, + O => \sysclksel[0]_i_2__2_n_0\ + ); +\sysclksel_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \sysclksel[0]_i_1__2_n_0\, + Q => \^rxsysclksel\(0), + R => RST_CPLLRESET + ); +\txdata_wait_cnt[0]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"B333000000000000" + ) + port map ( + I0 => txdata_wait_cnt_reg(1), + I1 => txdata_wait_cnt_reg(0), + I2 => txdata_wait_cnt_reg(2), + I3 => txdata_wait_cnt_reg(3), + I4 => \txdata_wait_cnt[3]_i_2__2_n_0\, + I5 => \txdata_wait_cnt[3]_i_3__2_n_0\, + O => \p_0_in__0\(0) + ); +\txdata_wait_cnt[1]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"E666000000000000" + ) + port map ( + I0 => txdata_wait_cnt_reg(1), + I1 => txdata_wait_cnt_reg(0), + I2 => txdata_wait_cnt_reg(2), + I3 => txdata_wait_cnt_reg(3), + I4 => \txdata_wait_cnt[3]_i_2__2_n_0\, + I5 => \txdata_wait_cnt[3]_i_3__2_n_0\, + O => \p_0_in__0\(1) + ); +\txdata_wait_cnt[2]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"F878000000000000" + ) + port map ( + I0 => txdata_wait_cnt_reg(1), + I1 => txdata_wait_cnt_reg(0), + I2 => txdata_wait_cnt_reg(2), + I3 => txdata_wait_cnt_reg(3), + I4 => \txdata_wait_cnt[3]_i_2__2_n_0\, + I5 => \txdata_wait_cnt[3]_i_3__2_n_0\, + O => \p_0_in__0\(2) + ); +\txdata_wait_cnt[3]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FF80000000000000" + ) + port map ( + I0 => txdata_wait_cnt_reg(1), + I1 => txdata_wait_cnt_reg(0), + I2 => txdata_wait_cnt_reg(2), + I3 => txdata_wait_cnt_reg(3), + I4 => \txdata_wait_cnt[3]_i_2__2_n_0\, + I5 => \txdata_wait_cnt[3]_i_3__2_n_0\, + O => \p_0_in__0\(3) + ); +\txdata_wait_cnt[3]_i_2__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"40" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[2]\, + O => \txdata_wait_cnt[3]_i_2__2_n_0\ + ); +\txdata_wait_cnt[3]_i_3__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[4]\, + O => \txdata_wait_cnt[3]_i_3__2_n_0\ + ); +\txdata_wait_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(0), + Q => txdata_wait_cnt_reg(0), + R => RST_CPLLRESET + ); +\txdata_wait_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(1), + Q => txdata_wait_cnt_reg(1), + R => RST_CPLLRESET + ); +\txdata_wait_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(2), + Q => txdata_wait_cnt_reg(2), + R => RST_CPLLRESET + ); +\txdata_wait_cnt_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(3), + Q => txdata_wait_cnt_reg(3), + R => RST_CPLLRESET + ); +\txpmareset_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"00F2FFFF00F20000" + ) + port map ( + I0 => rate_in_reg2(1), + I1 => rate_in_reg2(0), + I2 => gen3_exit, + I3 => \fsm_reg_n_0_[3]\, + I4 => \txpmareset_i_2__2_n_0\, + I5 => \^rate_txpmareset_3\, + O => \txpmareset_i_1__2_n_0\ + ); +\txpmareset_i_2__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"80004200" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[3]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[4]\, + O => \txpmareset_i_2__2_n_0\ + ); +txpmareset_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txpmareset_i_1__2_n_0\, + Q => \^rate_txpmareset_3\, + R => RST_CPLLRESET + ); +\txratedone_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0800080008000000" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => \fsm_reg_n_0_[2]\, + I2 => \txratedone_i_2__2_n_0\, + I3 => \fsm_reg_n_0_[0]\, + I4 => txratedone_reg2, + I5 => txratedone, + O => \txratedone_i_1__2_n_0\ + ); +\txratedone_i_2__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"E" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[1]\, + O => \txratedone_i_2__2_n_0\ + ); +txratedone_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txratedone_i_1__2_n_0\, + Q => txratedone, + R => RST_CPLLRESET + ); +txratedone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RATE_TXRATEDONE, + Q => txratedone_reg1, + R => RST_CPLLRESET + ); +txratedone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txratedone_reg1, + Q => txratedone_reg2, + R => RST_CPLLRESET + ); +txresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_TXRESETDONE, + Q => txresetdone_reg1, + R => RST_CPLLRESET + ); +txresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txresetdone_reg1, + Q => txresetdone_reg2, + R => RST_CPLLRESET + ); +txsync_done_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => RATE_TXSYNC_DONE, + Q => txsync_done_reg1, + R => RST_CPLLRESET + ); +txsync_done_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txsync_done_reg1, + Q => txsync_done_reg2, + R => RST_CPLLRESET + ); +\txsync_start_reg1_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFF00004000" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[4]\, + I3 => \fsm_reg_n_0_[3]\, + I4 => \fsm_reg_n_0_[2]\, + I5 => RST_TXSYNC_START, + O => SYNC_TXSYNC_START + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pipe_reset is + port ( + SS : out STD_LOGIC_VECTOR ( 0 to 0 ); + Q : out STD_LOGIC_VECTOR ( 1 downto 0 ); + RST_CPLLRESET : out STD_LOGIC; + RST_RXUSRCLK_RESET : out STD_LOGIC; + RST_DCLK_RESET : out STD_LOGIC; + DRP_GTXRESET : out STD_LOGIC; + rst_userrdy : out STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + pipe_mmcm_lock_in : in STD_LOGIC; + D : in STD_LOGIC_VECTOR ( 3 downto 0 ); + QRST_CPLLLOCK : in STD_LOGIC_VECTOR ( 3 downto 0 ); + \rate_idle_reg1_reg[3]_0\ : in STD_LOGIC_VECTOR ( 3 downto 0 ); + \drp_done_reg1_reg[3]_0\ : in STD_LOGIC_VECTOR ( 3 downto 0 ); + \phystatus_reg1_reg[3]_0\ : in STD_LOGIC_VECTOR ( 3 downto 0 ); + \txsync_done_reg1_reg[3]_0\ : in STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_rxusrclk_in : in STD_LOGIC; + pipe_dclk_in : in STD_LOGIC; + QRST_IDLE : in STD_LOGIC; + \rxcdrlock_reg1_reg[3]_0\ : in STD_LOGIC_VECTOR ( 3 downto 0 ); + \out\ : in STD_LOGIC + ); +end pcie_7x_0_pcie_7x_0_pipe_reset; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pipe_reset is + signal \^drp_gtxreset\ : STD_LOGIC; + signal \FSM_onehot_fsm[0]_i_1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[10]_i_1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[13]_i_1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[14]_i_2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[14]_i_3_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[14]_i_4_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[1]_i_1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[1]_i_2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[2]_i_1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[2]_i_2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[3]_i_1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[5]_i_1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[8]_i_1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[8]_i_2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[8]_i_3_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[9]_i_1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[0]\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[13]\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[14]\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[1]\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[4]\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[8]\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[9]\ : STD_LOGIC; + signal \^q\ : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal \^ss\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal \cfg_wait_cnt[5]_i_2_n_0\ : STD_LOGIC; + signal cfg_wait_cnt_reg : STD_LOGIC_VECTOR ( 5 downto 0 ); + signal cplllock_reg1 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of cplllock_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of cplllock_reg1 : signal is "true"; + signal cplllock_reg2 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of cplllock_reg2 : signal is "NO"; + attribute async_reg of cplllock_reg2 : signal is "true"; + signal cpllpd : STD_LOGIC; + signal cpllreset : STD_LOGIC; + signal cpllreset_i_1_n_0 : STD_LOGIC; + signal cpllreset_i_2_n_0 : STD_LOGIC; + signal dclk_rst : STD_LOGIC; + signal dclk_rst_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of dclk_rst_reg1 : signal is "NO"; + attribute async_reg of dclk_rst_reg1 : signal is "true"; + signal dclk_rst_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of dclk_rst_reg2 : signal is "NO"; + attribute async_reg of dclk_rst_reg2 : signal is "true"; + signal drp_done_reg1 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of drp_done_reg1 : signal is "NO"; + attribute async_reg of drp_done_reg1 : signal is "true"; + signal drp_done_reg2 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of drp_done_reg2 : signal is "NO"; + attribute async_reg of drp_done_reg2 : signal is "true"; + signal gtreset_i_1_n_0 : STD_LOGIC; + signal mmcm_lock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of mmcm_lock_reg1 : signal is "NO"; + attribute async_reg of mmcm_lock_reg1 : signal is "true"; + signal mmcm_lock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of mmcm_lock_reg2 : signal is "NO"; + attribute async_reg of mmcm_lock_reg2 : signal is "true"; + signal \p_0_in__0\ : STD_LOGIC_VECTOR ( 5 downto 0 ); + signal phystatus_reg1 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of phystatus_reg1 : signal is "NO"; + attribute async_reg of phystatus_reg1 : signal is "true"; + signal phystatus_reg2 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of phystatus_reg2 : signal is "NO"; + attribute async_reg of phystatus_reg2 : signal is "true"; + signal qpll_idle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of qpll_idle_reg1 : signal is "NO"; + attribute async_reg of qpll_idle_reg1 : signal is "true"; + signal qpll_idle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of qpll_idle_reg2 : signal is "NO"; + attribute async_reg of qpll_idle_reg2 : signal is "true"; + signal rate_idle_reg1 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of rate_idle_reg1 : signal is "NO"; + attribute async_reg of rate_idle_reg1 : signal is "true"; + signal rate_idle_reg2 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of rate_idle_reg2 : signal is "NO"; + attribute async_reg of rate_idle_reg2 : signal is "true"; + signal resetdone_reg1 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of resetdone_reg1 : signal is "NO"; + attribute async_reg of resetdone_reg1 : signal is "true"; + signal resetdone_reg2 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of resetdone_reg2 : signal is "NO"; + attribute async_reg of resetdone_reg2 : signal is "true"; + signal \^rst_userrdy\ : STD_LOGIC; + signal rxcdrlock_reg1 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of rxcdrlock_reg1 : signal is "NO"; + attribute async_reg of rxcdrlock_reg1 : signal is "true"; + signal rxcdrlock_reg2 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of rxcdrlock_reg2 : signal is "NO"; + attribute async_reg of rxcdrlock_reg2 : signal is "true"; + signal rxpmaresetdone_reg1 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of rxpmaresetdone_reg1 : signal is "NO"; + attribute async_reg of rxpmaresetdone_reg1 : signal is "true"; + signal rxpmaresetdone_reg2 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of rxpmaresetdone_reg2 : signal is "NO"; + attribute async_reg of rxpmaresetdone_reg2 : signal is "true"; + signal rxusrclk_rst_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxusrclk_rst_reg1 : signal is "NO"; + attribute async_reg of rxusrclk_rst_reg1 : signal is "true"; + signal rxusrclk_rst_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxusrclk_rst_reg2 : signal is "NO"; + attribute async_reg of rxusrclk_rst_reg2 : signal is "true"; + signal txsync_done_reg1 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of txsync_done_reg1 : signal is "NO"; + attribute async_reg of txsync_done_reg1 : signal is "true"; + signal txsync_done_reg2 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of txsync_done_reg2 : signal is "NO"; + attribute async_reg of txsync_done_reg2 : signal is "true"; + signal userrdy : STD_LOGIC; + signal userrdy_i_1_n_0 : STD_LOGIC; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \FSM_onehot_fsm[0]_i_1\ : label is "soft_lutpair206"; + attribute FSM_ENCODED_STATES : string; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[0]\ : label is "FSM_CPLL_PD:00000000000000100,FSM_RESETDONE:00000000000010000,FSM_MMCM_LOCK:00000000000100000,FSM_DRP_X16_START:00000000001000000,FSM_CPLLRESET:00000000000000001,FSM_TXSYNC_DONE:00000001000000000,FSM_CFG_WAIT:00000000000000010,FSM_DRP_X20_DONE:00000100000000000,FSM_IDLE:00000010000000000,FSM_DRP_X20_START:00001000000000000,FSM_GTRESET:00010000000000000,FSM_DRP:00100000000000000,FSM_RXPMARESETDONE_2:01000000000000000,FSM_RXPMARESETDONE_1:10000000000000000,FSM_CPLLLOCK:00000000100000000,FSM_DRP_X16_DONE:00000000010000000,FSM_TXSYNC_START:00000000000001000"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[10]\ : label is "FSM_CPLL_PD:00000000000000100,FSM_RESETDONE:00000000000010000,FSM_MMCM_LOCK:00000000000100000,FSM_DRP_X16_START:00000000001000000,FSM_CPLLRESET:00000000000000001,FSM_TXSYNC_DONE:00000001000000000,FSM_CFG_WAIT:00000000000000010,FSM_DRP_X20_DONE:00000100000000000,FSM_IDLE:00000010000000000,FSM_DRP_X20_START:00001000000000000,FSM_GTRESET:00010000000000000,FSM_DRP:00100000000000000,FSM_RXPMARESETDONE_2:01000000000000000,FSM_RXPMARESETDONE_1:10000000000000000,FSM_CPLLLOCK:00000000100000000,FSM_DRP_X16_DONE:00000000010000000,FSM_TXSYNC_START:00000000000001000"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[13]\ : label is "FSM_CPLL_PD:00000000000000100,FSM_RESETDONE:00000000000010000,FSM_MMCM_LOCK:00000000000100000,FSM_DRP_X16_START:00000000001000000,FSM_CPLLRESET:00000000000000001,FSM_TXSYNC_DONE:00000001000000000,FSM_CFG_WAIT:00000000000000010,FSM_DRP_X20_DONE:00000100000000000,FSM_IDLE:00000010000000000,FSM_DRP_X20_START:00001000000000000,FSM_GTRESET:00010000000000000,FSM_DRP:00100000000000000,FSM_RXPMARESETDONE_2:01000000000000000,FSM_RXPMARESETDONE_1:10000000000000000,FSM_CPLLLOCK:00000000100000000,FSM_DRP_X16_DONE:00000000010000000,FSM_TXSYNC_START:00000000000001000"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[14]\ : label is "FSM_CPLL_PD:00000000000000100,FSM_RESETDONE:00000000000010000,FSM_MMCM_LOCK:00000000000100000,FSM_DRP_X16_START:00000000001000000,FSM_CPLLRESET:00000000000000001,FSM_TXSYNC_DONE:00000001000000000,FSM_CFG_WAIT:00000000000000010,FSM_DRP_X20_DONE:00000100000000000,FSM_IDLE:00000010000000000,FSM_DRP_X20_START:00001000000000000,FSM_GTRESET:00010000000000000,FSM_DRP:00100000000000000,FSM_RXPMARESETDONE_2:01000000000000000,FSM_RXPMARESETDONE_1:10000000000000000,FSM_CPLLLOCK:00000000100000000,FSM_DRP_X16_DONE:00000000010000000,FSM_TXSYNC_START:00000000000001000"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[1]\ : label is "FSM_CPLL_PD:00000000000000100,FSM_RESETDONE:00000000000010000,FSM_MMCM_LOCK:00000000000100000,FSM_DRP_X16_START:00000000001000000,FSM_CPLLRESET:00000000000000001,FSM_TXSYNC_DONE:00000001000000000,FSM_CFG_WAIT:00000000000000010,FSM_DRP_X20_DONE:00000100000000000,FSM_IDLE:00000010000000000,FSM_DRP_X20_START:00001000000000000,FSM_GTRESET:00010000000000000,FSM_DRP:00100000000000000,FSM_RXPMARESETDONE_2:01000000000000000,FSM_RXPMARESETDONE_1:10000000000000000,FSM_CPLLLOCK:00000000100000000,FSM_DRP_X16_DONE:00000000010000000,FSM_TXSYNC_START:00000000000001000"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[2]\ : label is "FSM_CPLL_PD:00000000000000100,FSM_RESETDONE:00000000000010000,FSM_MMCM_LOCK:00000000000100000,FSM_DRP_X16_START:00000000001000000,FSM_CPLLRESET:00000000000000001,FSM_TXSYNC_DONE:00000001000000000,FSM_CFG_WAIT:00000000000000010,FSM_DRP_X20_DONE:00000100000000000,FSM_IDLE:00000010000000000,FSM_DRP_X20_START:00001000000000000,FSM_GTRESET:00010000000000000,FSM_DRP:00100000000000000,FSM_RXPMARESETDONE_2:01000000000000000,FSM_RXPMARESETDONE_1:10000000000000000,FSM_CPLLLOCK:00000000100000000,FSM_DRP_X16_DONE:00000000010000000,FSM_TXSYNC_START:00000000000001000"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[3]\ : label is "FSM_CPLL_PD:00000000000000100,FSM_RESETDONE:00000000000010000,FSM_MMCM_LOCK:00000000000100000,FSM_DRP_X16_START:00000000001000000,FSM_CPLLRESET:00000000000000001,FSM_TXSYNC_DONE:00000001000000000,FSM_CFG_WAIT:00000000000000010,FSM_DRP_X20_DONE:00000100000000000,FSM_IDLE:00000010000000000,FSM_DRP_X20_START:00001000000000000,FSM_GTRESET:00010000000000000,FSM_DRP:00100000000000000,FSM_RXPMARESETDONE_2:01000000000000000,FSM_RXPMARESETDONE_1:10000000000000000,FSM_CPLLLOCK:00000000100000000,FSM_DRP_X16_DONE:00000000010000000,FSM_TXSYNC_START:00000000000001000"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[4]\ : label is "FSM_CPLL_PD:00000000000000100,FSM_RESETDONE:00000000000010000,FSM_MMCM_LOCK:00000000000100000,FSM_DRP_X16_START:00000000001000000,FSM_CPLLRESET:00000000000000001,FSM_TXSYNC_DONE:00000001000000000,FSM_CFG_WAIT:00000000000000010,FSM_DRP_X20_DONE:00000100000000000,FSM_IDLE:00000010000000000,FSM_DRP_X20_START:00001000000000000,FSM_GTRESET:00010000000000000,FSM_DRP:00100000000000000,FSM_RXPMARESETDONE_2:01000000000000000,FSM_RXPMARESETDONE_1:10000000000000000,FSM_CPLLLOCK:00000000100000000,FSM_DRP_X16_DONE:00000000010000000,FSM_TXSYNC_START:00000000000001000"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[5]\ : label is "FSM_CPLL_PD:00000000000000100,FSM_RESETDONE:00000000000010000,FSM_MMCM_LOCK:00000000000100000,FSM_DRP_X16_START:00000000001000000,FSM_CPLLRESET:00000000000000001,FSM_TXSYNC_DONE:00000001000000000,FSM_CFG_WAIT:00000000000000010,FSM_DRP_X20_DONE:00000100000000000,FSM_IDLE:00000010000000000,FSM_DRP_X20_START:00001000000000000,FSM_GTRESET:00010000000000000,FSM_DRP:00100000000000000,FSM_RXPMARESETDONE_2:01000000000000000,FSM_RXPMARESETDONE_1:10000000000000000,FSM_CPLLLOCK:00000000100000000,FSM_DRP_X16_DONE:00000000010000000,FSM_TXSYNC_START:00000000000001000"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[8]\ : label is "FSM_CPLL_PD:00000000000000100,FSM_RESETDONE:00000000000010000,FSM_MMCM_LOCK:00000000000100000,FSM_DRP_X16_START:00000000001000000,FSM_CPLLRESET:00000000000000001,FSM_TXSYNC_DONE:00000001000000000,FSM_CFG_WAIT:00000000000000010,FSM_DRP_X20_DONE:00000100000000000,FSM_IDLE:00000010000000000,FSM_DRP_X20_START:00001000000000000,FSM_GTRESET:00010000000000000,FSM_DRP:00100000000000000,FSM_RXPMARESETDONE_2:01000000000000000,FSM_RXPMARESETDONE_1:10000000000000000,FSM_CPLLLOCK:00000000100000000,FSM_DRP_X16_DONE:00000000010000000,FSM_TXSYNC_START:00000000000001000"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[9]\ : label is "FSM_CPLL_PD:00000000000000100,FSM_RESETDONE:00000000000010000,FSM_MMCM_LOCK:00000000000100000,FSM_DRP_X16_START:00000000001000000,FSM_CPLLRESET:00000000000000001,FSM_TXSYNC_DONE:00000001000000000,FSM_CFG_WAIT:00000000000000010,FSM_DRP_X20_DONE:00000100000000000,FSM_IDLE:00000010000000000,FSM_DRP_X20_START:00001000000000000,FSM_GTRESET:00010000000000000,FSM_DRP:00100000000000000,FSM_RXPMARESETDONE_2:01000000000000000,FSM_RXPMARESETDONE_1:10000000000000000,FSM_CPLLLOCK:00000000100000000,FSM_DRP_X16_DONE:00000000010000000,FSM_TXSYNC_START:00000000000001000"; + attribute SOFT_HLUTNM of \cfg_wait_cnt[0]_i_1\ : label is "soft_lutpair206"; + attribute SOFT_HLUTNM of \cfg_wait_cnt[1]_i_1\ : label is "soft_lutpair204"; + attribute SOFT_HLUTNM of \cfg_wait_cnt[2]_i_1\ : label is "soft_lutpair204"; + attribute SOFT_HLUTNM of \cfg_wait_cnt[4]_i_1\ : label is "soft_lutpair205"; + attribute SOFT_HLUTNM of \cfg_wait_cnt[5]_i_1\ : label is "soft_lutpair205"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of \cplllock_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of \cplllock_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \cplllock_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \cplllock_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \cplllock_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \cplllock_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \cplllock_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \cplllock_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \cplllock_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \cplllock_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \cplllock_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \cplllock_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \cplllock_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \cplllock_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \cplllock_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \cplllock_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \cplllock_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \cplllock_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \cplllock_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \cplllock_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \cplllock_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \cplllock_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \cplllock_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \cplllock_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of dclk_rst_reg1_reg : label is std.standard.true; + attribute KEEP of dclk_rst_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of dclk_rst_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of dclk_rst_reg2_reg : label is std.standard.true; + attribute KEEP of dclk_rst_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of dclk_rst_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of \drp_done_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \drp_done_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \drp_done_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \drp_done_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \drp_done_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \drp_done_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \drp_done_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \drp_done_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \drp_done_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \drp_done_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \drp_done_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \drp_done_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \drp_done_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \drp_done_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \drp_done_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \drp_done_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \drp_done_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \drp_done_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \drp_done_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \drp_done_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \drp_done_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \drp_done_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \drp_done_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \drp_done_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of mmcm_lock_reg1_reg : label is std.standard.true; + attribute KEEP of mmcm_lock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of mmcm_lock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of mmcm_lock_reg2_reg : label is std.standard.true; + attribute KEEP of mmcm_lock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of mmcm_lock_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of \phystatus_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \phystatus_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \phystatus_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \phystatus_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \phystatus_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \phystatus_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \phystatus_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \phystatus_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \phystatus_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \phystatus_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \phystatus_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \phystatus_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \phystatus_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \phystatus_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \phystatus_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \phystatus_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \phystatus_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \phystatus_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \phystatus_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \phystatus_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \phystatus_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \phystatus_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \phystatus_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \phystatus_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of qpll_idle_reg1_reg : label is std.standard.true; + attribute KEEP of qpll_idle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of qpll_idle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of qpll_idle_reg2_reg : label is std.standard.true; + attribute KEEP of qpll_idle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of qpll_idle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of \rate_idle_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rate_idle_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_idle_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_idle_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rate_idle_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_idle_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_idle_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \rate_idle_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_idle_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_idle_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \rate_idle_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_idle_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_idle_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rate_idle_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_idle_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_idle_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rate_idle_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_idle_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_idle_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \rate_idle_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_idle_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_idle_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \rate_idle_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_idle_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \resetdone_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \resetdone_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \resetdone_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \resetdone_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \resetdone_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \resetdone_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \resetdone_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \resetdone_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \resetdone_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \resetdone_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \resetdone_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \resetdone_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \resetdone_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \resetdone_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \resetdone_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \resetdone_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \resetdone_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \resetdone_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \resetdone_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \resetdone_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \resetdone_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \resetdone_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \resetdone_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \resetdone_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxcdrlock_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxcdrlock_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxcdrlock_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxcdrlock_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxcdrlock_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxcdrlock_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxcdrlock_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxcdrlock_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxcdrlock_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxcdrlock_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxcdrlock_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxcdrlock_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxcdrlock_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxcdrlock_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxcdrlock_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxcdrlock_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxcdrlock_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxcdrlock_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxcdrlock_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxcdrlock_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxcdrlock_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxcdrlock_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxcdrlock_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxcdrlock_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxpmaresetdone_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxpmaresetdone_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxpmaresetdone_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxpmaresetdone_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxpmaresetdone_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxpmaresetdone_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxpmaresetdone_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxpmaresetdone_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxpmaresetdone_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxpmaresetdone_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxpmaresetdone_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxpmaresetdone_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxpmaresetdone_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxpmaresetdone_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxpmaresetdone_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxpmaresetdone_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxpmaresetdone_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxpmaresetdone_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxpmaresetdone_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxpmaresetdone_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxpmaresetdone_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxpmaresetdone_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxpmaresetdone_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxpmaresetdone_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of rxusrclk_rst_reg1_reg : label is std.standard.true; + attribute KEEP of rxusrclk_rst_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxusrclk_rst_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxusrclk_rst_reg2_reg : label is std.standard.true; + attribute KEEP of rxusrclk_rst_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxusrclk_rst_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of \txsync_done_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \txsync_done_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txsync_done_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txsync_done_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \txsync_done_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txsync_done_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txsync_done_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \txsync_done_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txsync_done_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txsync_done_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \txsync_done_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txsync_done_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txsync_done_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \txsync_done_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txsync_done_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txsync_done_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \txsync_done_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txsync_done_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txsync_done_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \txsync_done_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txsync_done_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txsync_done_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \txsync_done_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txsync_done_reg2_reg[3]\ : label is "NO"; +begin + DRP_GTXRESET <= \^drp_gtxreset\; + Q(1 downto 0) <= \^q\(1 downto 0); + RST_CPLLRESET <= cpllreset; + RST_DCLK_RESET <= dclk_rst_reg2; + RST_RXUSRCLK_RESET <= rxusrclk_rst_reg2; + SS(0) <= \^ss\(0); + rst_userrdy <= \^rst_userrdy\; +\FSM_onehot_fsm[0]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"4F44" + ) + port map ( + I0 => \FSM_onehot_fsm[1]_i_2_n_0\, + I1 => \FSM_onehot_fsm_reg_n_0_[1]\, + I2 => \FSM_onehot_fsm[8]_i_2_n_0\, + I3 => \FSM_onehot_fsm_reg_n_0_[0]\, + O => \FSM_onehot_fsm[0]_i_1_n_0\ + ); +\FSM_onehot_fsm[10]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"EAAAAAAAAAAAAAAA" + ) + port map ( + I0 => \^q\(1), + I1 => txsync_done_reg2(3), + I2 => txsync_done_reg2(0), + I3 => txsync_done_reg2(2), + I4 => txsync_done_reg2(1), + I5 => \FSM_onehot_fsm_reg_n_0_[9]\, + O => \FSM_onehot_fsm[10]_i_1_n_0\ + ); +\FSM_onehot_fsm[13]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"80000000" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[14]\, + I1 => rate_idle_reg2(3), + I2 => rate_idle_reg2(0), + I3 => rate_idle_reg2(2), + I4 => rate_idle_reg2(1), + O => \FSM_onehot_fsm[13]_i_1_n_0\ + ); +\FSM_onehot_fsm[14]_i_1\: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => \out\, + O => \^ss\(0) + ); +\FSM_onehot_fsm[14]_i_2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"F888" + ) + port map ( + I0 => \FSM_onehot_fsm[14]_i_3_n_0\, + I1 => \FSM_onehot_fsm_reg_n_0_[14]\, + I2 => \FSM_onehot_fsm[14]_i_4_n_0\, + I3 => \FSM_onehot_fsm_reg_n_0_[8]\, + O => \FSM_onehot_fsm[14]_i_2_n_0\ + ); +\FSM_onehot_fsm[14]_i_3\: unisim.vcomponents.LUT4 + generic map( + INIT => X"7FFF" + ) + port map ( + I0 => rate_idle_reg2(1), + I1 => rate_idle_reg2(2), + I2 => rate_idle_reg2(0), + I3 => rate_idle_reg2(3), + O => \FSM_onehot_fsm[14]_i_3_n_0\ + ); +\FSM_onehot_fsm[14]_i_4\: unisim.vcomponents.LUT4 + generic map( + INIT => X"8000" + ) + port map ( + I0 => cplllock_reg2(3), + I1 => cplllock_reg2(0), + I2 => cplllock_reg2(2), + I3 => cplllock_reg2(1), + O => \FSM_onehot_fsm[14]_i_4_n_0\ + ); +\FSM_onehot_fsm[1]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[1]\, + I1 => \FSM_onehot_fsm[1]_i_2_n_0\, + O => \FSM_onehot_fsm[1]_i_1_n_0\ + ); +\FSM_onehot_fsm[1]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"7FFFFFFFFFFFFFFF" + ) + port map ( + I0 => cfg_wait_cnt_reg(4), + I1 => cfg_wait_cnt_reg(3), + I2 => cfg_wait_cnt_reg(5), + I3 => cfg_wait_cnt_reg(0), + I4 => cfg_wait_cnt_reg(1), + I5 => cfg_wait_cnt_reg(2), + O => \FSM_onehot_fsm[1]_i_2_n_0\ + ); +\FSM_onehot_fsm[2]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0008000000000000" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[4]\, + I1 => \FSM_onehot_fsm[2]_i_2_n_0\, + I2 => phystatus_reg2(1), + I3 => phystatus_reg2(0), + I4 => resetdone_reg2(1), + I5 => resetdone_reg2(0), + O => \FSM_onehot_fsm[2]_i_1_n_0\ + ); +\FSM_onehot_fsm[2]_i_2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"1000" + ) + port map ( + I0 => phystatus_reg2(3), + I1 => phystatus_reg2(2), + I2 => resetdone_reg2(3), + I3 => resetdone_reg2(2), + O => \FSM_onehot_fsm[2]_i_2_n_0\ + ); +\FSM_onehot_fsm[3]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFEAAAAAAAA" + ) + port map ( + I0 => cpllpd, + I1 => txsync_done_reg2(3), + I2 => txsync_done_reg2(0), + I3 => txsync_done_reg2(2), + I4 => txsync_done_reg2(1), + I5 => \^q\(0), + O => \FSM_onehot_fsm[3]_i_1_n_0\ + ); +\FSM_onehot_fsm[4]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"F888" + ) + port map ( + I0 => userrdy, + I1 => mmcm_lock_reg2, + I2 => \FSM_onehot_fsm[4]_i_2_n_0\, + I3 => \FSM_onehot_fsm_reg_n_0_[4]\, + O => \FSM_onehot_fsm[4]_i_1_n_0\ + ); +\FSM_onehot_fsm[4]_i_2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFF7FFFF" + ) + port map ( + I0 => resetdone_reg2(0), + I1 => resetdone_reg2(1), + I2 => phystatus_reg2(0), + I3 => phystatus_reg2(1), + I4 => \FSM_onehot_fsm[2]_i_2_n_0\, + O => \FSM_onehot_fsm[4]_i_2_n_0\ + ); +\FSM_onehot_fsm[5]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"BA" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[13]\, + I1 => mmcm_lock_reg2, + I2 => userrdy, + O => \FSM_onehot_fsm[5]_i_1_n_0\ + ); +\FSM_onehot_fsm[8]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"F444" + ) + port map ( + I0 => \FSM_onehot_fsm[14]_i_4_n_0\, + I1 => \FSM_onehot_fsm_reg_n_0_[8]\, + I2 => \FSM_onehot_fsm[8]_i_2_n_0\, + I3 => \FSM_onehot_fsm_reg_n_0_[0]\, + O => \FSM_onehot_fsm[8]_i_1_n_0\ + ); +\FSM_onehot_fsm[8]_i_2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000001" + ) + port map ( + I0 => resetdone_reg2(1), + I1 => resetdone_reg2(2), + I2 => resetdone_reg2(0), + I3 => resetdone_reg2(3), + I4 => \FSM_onehot_fsm[8]_i_3_n_0\, + O => \FSM_onehot_fsm[8]_i_2_n_0\ + ); +\FSM_onehot_fsm[8]_i_3\: unisim.vcomponents.LUT4 + generic map( + INIT => X"FFFE" + ) + port map ( + I0 => cplllock_reg2(3), + I1 => cplllock_reg2(1), + I2 => cplllock_reg2(2), + I3 => cplllock_reg2(0), + O => \FSM_onehot_fsm[8]_i_3_n_0\ + ); +\FSM_onehot_fsm[9]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"2AAAAAAB2AAAAAAA" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[9]\, + I1 => txsync_done_reg2(3), + I2 => txsync_done_reg2(0), + I3 => txsync_done_reg2(2), + I4 => txsync_done_reg2(1), + I5 => \^q\(0), + O => \FSM_onehot_fsm[9]_i_1_n_0\ + ); +\FSM_onehot_fsm_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '1' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[0]_i_1_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[0]\, + R => \^ss\(0) + ); +\FSM_onehot_fsm_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[10]_i_1_n_0\, + Q => \^q\(1), + R => \^ss\(0) + ); +\FSM_onehot_fsm_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[13]_i_1_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[13]\, + R => \^ss\(0) + ); +\FSM_onehot_fsm_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[14]_i_2_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[14]\, + R => \^ss\(0) + ); +\FSM_onehot_fsm_reg[1]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[1]_i_1_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[1]\, + S => \^ss\(0) + ); +\FSM_onehot_fsm_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[2]_i_1_n_0\, + Q => cpllpd, + R => \^ss\(0) + ); +\FSM_onehot_fsm_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[3]_i_1_n_0\, + Q => \^q\(0), + R => \^ss\(0) + ); +\FSM_onehot_fsm_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[4]_i_1_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[4]\, + R => \^ss\(0) + ); +\FSM_onehot_fsm_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[5]_i_1_n_0\, + Q => userrdy, + R => \^ss\(0) + ); +\FSM_onehot_fsm_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[8]_i_1_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[8]\, + R => \^ss\(0) + ); +\FSM_onehot_fsm_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[9]_i_1_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[9]\, + R => \^ss\(0) + ); +\cfg_wait_cnt[0]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"2A" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[1]\, + I1 => \FSM_onehot_fsm[1]_i_2_n_0\, + I2 => cfg_wait_cnt_reg(0), + O => \p_0_in__0\(0) + ); +\cfg_wait_cnt[1]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"28AA" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[1]\, + I1 => cfg_wait_cnt_reg(0), + I2 => cfg_wait_cnt_reg(1), + I3 => \FSM_onehot_fsm[1]_i_2_n_0\, + O => \p_0_in__0\(1) + ); +\cfg_wait_cnt[2]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"2888AAAA" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[1]\, + I1 => cfg_wait_cnt_reg(2), + I2 => cfg_wait_cnt_reg(1), + I3 => cfg_wait_cnt_reg(0), + I4 => \FSM_onehot_fsm[1]_i_2_n_0\, + O => \p_0_in__0\(2) + ); +\cfg_wait_cnt[3]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"28888888AAAAAAAA" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[1]\, + I1 => cfg_wait_cnt_reg(3), + I2 => cfg_wait_cnt_reg(0), + I3 => cfg_wait_cnt_reg(1), + I4 => cfg_wait_cnt_reg(2), + I5 => \FSM_onehot_fsm[1]_i_2_n_0\, + O => \p_0_in__0\(3) + ); +\cfg_wait_cnt[4]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"EA006A00" + ) + port map ( + I0 => cfg_wait_cnt_reg(4), + I1 => \cfg_wait_cnt[5]_i_2_n_0\, + I2 => cfg_wait_cnt_reg(3), + I3 => \FSM_onehot_fsm_reg_n_0_[1]\, + I4 => cfg_wait_cnt_reg(5), + O => \p_0_in__0\(4) + ); +\cfg_wait_cnt[5]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"A8888888" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[1]\, + I1 => cfg_wait_cnt_reg(5), + I2 => \cfg_wait_cnt[5]_i_2_n_0\, + I3 => cfg_wait_cnt_reg(3), + I4 => cfg_wait_cnt_reg(4), + O => \p_0_in__0\(5) + ); +\cfg_wait_cnt[5]_i_2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"80" + ) + port map ( + I0 => cfg_wait_cnt_reg(2), + I1 => cfg_wait_cnt_reg(1), + I2 => cfg_wait_cnt_reg(0), + O => \cfg_wait_cnt[5]_i_2_n_0\ + ); +\cfg_wait_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(0), + Q => cfg_wait_cnt_reg(0), + R => \^ss\(0) + ); +\cfg_wait_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(1), + Q => cfg_wait_cnt_reg(1), + R => \^ss\(0) + ); +\cfg_wait_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(2), + Q => cfg_wait_cnt_reg(2), + R => \^ss\(0) + ); +\cfg_wait_cnt_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(3), + Q => cfg_wait_cnt_reg(3), + R => \^ss\(0) + ); +\cfg_wait_cnt_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(4), + Q => cfg_wait_cnt_reg(4), + R => \^ss\(0) + ); +\cfg_wait_cnt_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(5), + Q => cfg_wait_cnt_reg(5), + R => \^ss\(0) + ); +\cplllock_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => QRST_CPLLLOCK(0), + Q => cplllock_reg1(0), + R => \^ss\(0) + ); +\cplllock_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => QRST_CPLLLOCK(1), + Q => cplllock_reg1(1), + R => \^ss\(0) + ); +\cplllock_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => QRST_CPLLLOCK(2), + Q => cplllock_reg1(2), + R => \^ss\(0) + ); +\cplllock_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => QRST_CPLLLOCK(3), + Q => cplllock_reg1(3), + R => \^ss\(0) + ); +\cplllock_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => cplllock_reg1(0), + Q => cplllock_reg2(0), + R => \^ss\(0) + ); +\cplllock_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => cplllock_reg1(1), + Q => cplllock_reg2(1), + R => \^ss\(0) + ); +\cplllock_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => cplllock_reg1(2), + Q => cplllock_reg2(2), + R => \^ss\(0) + ); +\cplllock_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => cplllock_reg1(3), + Q => cplllock_reg2(3), + R => \^ss\(0) + ); +cpllreset_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFEAAAAAAAA" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[0]\, + I1 => \^q\(1), + I2 => userrdy, + I3 => \FSM_onehot_fsm_reg_n_0_[1]\, + I4 => cpllreset_i_2_n_0, + I5 => cpllreset, + O => cpllreset_i_1_n_0 + ); +cpllreset_i_2: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFFFFFFFE" + ) + port map ( + I0 => \^q\(0), + I1 => cpllpd, + I2 => \FSM_onehot_fsm_reg_n_0_[9]\, + I3 => \FSM_onehot_fsm_reg_n_0_[14]\, + I4 => \FSM_onehot_fsm_reg_n_0_[13]\, + I5 => \FSM_onehot_fsm_reg_n_0_[4]\, + O => cpllreset_i_2_n_0 + ); +cpllreset_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => cpllreset_i_1_n_0, + Q => cpllreset, + R => \^ss\(0) + ); +dclk_rst_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm_reg_n_0_[1]\, + Q => dclk_rst, + R => '0' + ); +dclk_rst_reg1_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => dclk_rst, + Q => dclk_rst_reg1, + R => '0' + ); +dclk_rst_reg2_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => dclk_rst_reg1, + Q => dclk_rst_reg2, + R => '0' + ); +\drp_done_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \drp_done_reg1_reg[3]_0\(0), + Q => drp_done_reg1(0), + R => \^ss\(0) + ); +\drp_done_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \drp_done_reg1_reg[3]_0\(1), + Q => drp_done_reg1(1), + R => \^ss\(0) + ); +\drp_done_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \drp_done_reg1_reg[3]_0\(2), + Q => drp_done_reg1(2), + R => \^ss\(0) + ); +\drp_done_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \drp_done_reg1_reg[3]_0\(3), + Q => drp_done_reg1(3), + R => \^ss\(0) + ); +\drp_done_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => drp_done_reg1(0), + Q => drp_done_reg2(0), + R => \^ss\(0) + ); +\drp_done_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => drp_done_reg1(1), + Q => drp_done_reg2(1), + R => \^ss\(0) + ); +\drp_done_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => drp_done_reg1(2), + Q => drp_done_reg2(2), + R => \^ss\(0) + ); +\drp_done_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => drp_done_reg1(3), + Q => drp_done_reg2(3), + R => \^ss\(0) + ); +gtreset_i_1: unisim.vcomponents.LUT3 + generic map( + INIT => X"DC" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[13]\, + I1 => \FSM_onehot_fsm_reg_n_0_[0]\, + I2 => \^drp_gtxreset\, + O => gtreset_i_1_n_0 + ); +gtreset_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => gtreset_i_1_n_0, + Q => \^drp_gtxreset\, + R => \^ss\(0) + ); +mmcm_lock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_mmcm_lock_in, + Q => mmcm_lock_reg1, + R => \^ss\(0) + ); +mmcm_lock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => mmcm_lock_reg1, + Q => mmcm_lock_reg2, + R => \^ss\(0) + ); +\phystatus_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \phystatus_reg1_reg[3]_0\(0), + Q => phystatus_reg1(0), + R => \^ss\(0) + ); +\phystatus_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \phystatus_reg1_reg[3]_0\(1), + Q => phystatus_reg1(1), + R => \^ss\(0) + ); +\phystatus_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \phystatus_reg1_reg[3]_0\(2), + Q => phystatus_reg1(2), + R => \^ss\(0) + ); +\phystatus_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \phystatus_reg1_reg[3]_0\(3), + Q => phystatus_reg1(3), + R => \^ss\(0) + ); +\phystatus_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => phystatus_reg1(0), + Q => phystatus_reg2(0), + R => \^ss\(0) + ); +\phystatus_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => phystatus_reg1(1), + Q => phystatus_reg2(1), + R => \^ss\(0) + ); +\phystatus_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => phystatus_reg1(2), + Q => phystatus_reg2(2), + R => \^ss\(0) + ); +\phystatus_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => phystatus_reg1(3), + Q => phystatus_reg2(3), + R => \^ss\(0) + ); +qpll_idle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => QRST_IDLE, + Q => qpll_idle_reg1, + R => \^ss\(0) + ); +qpll_idle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => qpll_idle_reg1, + Q => qpll_idle_reg2, + R => \^ss\(0) + ); +\rate_idle_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rate_idle_reg1_reg[3]_0\(0), + Q => rate_idle_reg1(0), + R => \^ss\(0) + ); +\rate_idle_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rate_idle_reg1_reg[3]_0\(1), + Q => rate_idle_reg1(1), + R => \^ss\(0) + ); +\rate_idle_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rate_idle_reg1_reg[3]_0\(2), + Q => rate_idle_reg1(2), + R => \^ss\(0) + ); +\rate_idle_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rate_idle_reg1_reg[3]_0\(3), + Q => rate_idle_reg1(3), + R => \^ss\(0) + ); +\rate_idle_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rate_idle_reg1(0), + Q => rate_idle_reg2(0), + R => \^ss\(0) + ); +\rate_idle_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rate_idle_reg1(1), + Q => rate_idle_reg2(1), + R => \^ss\(0) + ); +\rate_idle_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rate_idle_reg1(2), + Q => rate_idle_reg2(2), + R => \^ss\(0) + ); +\rate_idle_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rate_idle_reg1(3), + Q => rate_idle_reg2(3), + R => \^ss\(0) + ); +\resetdone_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => D(0), + Q => resetdone_reg1(0), + R => \^ss\(0) + ); +\resetdone_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => D(1), + Q => resetdone_reg1(1), + R => \^ss\(0) + ); +\resetdone_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => D(2), + Q => resetdone_reg1(2), + R => \^ss\(0) + ); +\resetdone_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => D(3), + Q => resetdone_reg1(3), + R => \^ss\(0) + ); +\resetdone_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => resetdone_reg1(0), + Q => resetdone_reg2(0), + R => \^ss\(0) + ); +\resetdone_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => resetdone_reg1(1), + Q => resetdone_reg2(1), + R => \^ss\(0) + ); +\resetdone_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => resetdone_reg1(2), + Q => resetdone_reg2(2), + R => \^ss\(0) + ); +\resetdone_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => resetdone_reg1(3), + Q => resetdone_reg2(3), + R => \^ss\(0) + ); +\rxcdrlock_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rxcdrlock_reg1_reg[3]_0\(0), + Q => rxcdrlock_reg1(0), + R => \^ss\(0) + ); +\rxcdrlock_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rxcdrlock_reg1_reg[3]_0\(1), + Q => rxcdrlock_reg1(1), + R => \^ss\(0) + ); +\rxcdrlock_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rxcdrlock_reg1_reg[3]_0\(2), + Q => rxcdrlock_reg1(2), + R => \^ss\(0) + ); +\rxcdrlock_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rxcdrlock_reg1_reg[3]_0\(3), + Q => rxcdrlock_reg1(3), + R => \^ss\(0) + ); +\rxcdrlock_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxcdrlock_reg1(0), + Q => rxcdrlock_reg2(0), + R => \^ss\(0) + ); +\rxcdrlock_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxcdrlock_reg1(1), + Q => rxcdrlock_reg2(1), + R => \^ss\(0) + ); +\rxcdrlock_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxcdrlock_reg1(2), + Q => rxcdrlock_reg2(2), + R => \^ss\(0) + ); +\rxcdrlock_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxcdrlock_reg1(3), + Q => rxcdrlock_reg2(3), + R => \^ss\(0) + ); +\rxpmaresetdone_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxpmaresetdone_reg1(0), + R => \^ss\(0) + ); +\rxpmaresetdone_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxpmaresetdone_reg1(1), + R => \^ss\(0) + ); +\rxpmaresetdone_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxpmaresetdone_reg1(2), + R => \^ss\(0) + ); +\rxpmaresetdone_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxpmaresetdone_reg1(3), + R => \^ss\(0) + ); +\rxpmaresetdone_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxpmaresetdone_reg1(0), + Q => rxpmaresetdone_reg2(0), + R => \^ss\(0) + ); +\rxpmaresetdone_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxpmaresetdone_reg1(1), + Q => rxpmaresetdone_reg2(1), + R => \^ss\(0) + ); +\rxpmaresetdone_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxpmaresetdone_reg1(2), + Q => rxpmaresetdone_reg2(2), + R => \^ss\(0) + ); +\rxpmaresetdone_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxpmaresetdone_reg1(3), + Q => rxpmaresetdone_reg2(3), + R => \^ss\(0) + ); +rxusrclk_rst_reg1_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => cpllreset, + Q => rxusrclk_rst_reg1, + R => '0' + ); +rxusrclk_rst_reg2_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rxusrclk_rst_reg1, + Q => rxusrclk_rst_reg2, + R => '0' + ); +\txsync_done_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txsync_done_reg1_reg[3]_0\(0), + Q => txsync_done_reg1(0), + R => \^ss\(0) + ); +\txsync_done_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txsync_done_reg1_reg[3]_0\(1), + Q => txsync_done_reg1(1), + R => \^ss\(0) + ); +\txsync_done_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txsync_done_reg1_reg[3]_0\(2), + Q => txsync_done_reg1(2), + R => \^ss\(0) + ); +\txsync_done_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txsync_done_reg1_reg[3]_0\(3), + Q => txsync_done_reg1(3), + R => \^ss\(0) + ); +\txsync_done_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txsync_done_reg1(0), + Q => txsync_done_reg2(0), + R => \^ss\(0) + ); +\txsync_done_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txsync_done_reg1(1), + Q => txsync_done_reg2(1), + R => \^ss\(0) + ); +\txsync_done_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txsync_done_reg1(2), + Q => txsync_done_reg2(2), + R => \^ss\(0) + ); +\txsync_done_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txsync_done_reg1(3), + Q => txsync_done_reg2(3), + R => \^ss\(0) + ); +userrdy_i_1: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => mmcm_lock_reg2, + I1 => userrdy, + I2 => \^rst_userrdy\, + O => userrdy_i_1_n_0 + ); +userrdy_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => userrdy_i_1_n_0, + Q => \^rst_userrdy\, + R => \^ss\(0) + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pipe_sync is + port ( + \out\ : out STD_LOGIC; + txphaligndone_reg3_reg_0 : out STD_LOGIC; + sync_txdlyen_0 : out STD_LOGIC; + RST_TXSYNC_DONE : out STD_LOGIC_VECTOR ( 0 to 0 ); + Q : out STD_LOGIC_VECTOR ( 2 downto 0 ); + RST_CPLLRESET : in STD_LOGIC; + SYNC_TXPHALIGNDONE : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + SYNC_TXSYNC_START : in STD_LOGIC; + pipe_mmcm_lock_in : in STD_LOGIC; + SYNC_TXDLYSRESETDONE : in STD_LOGIC; + SYNC_TXPHINITDONE : in STD_LOGIC; + USER_RATE_GEN3 : in STD_LOGIC; + SYNC_RATE_IDLE : in STD_LOGIC; + gt_rx_elec_idle_wire_filter : in STD_LOGIC_VECTOR ( 0 to 0 ); + SYNC_RXCDRLOCK : in STD_LOGIC; + SYNC_RXSYNC_START : in STD_LOGIC; + SYNC_RXDLYSRESETDONE : in STD_LOGIC; + SYNC_RXPHALIGNDONE_M : in STD_LOGIC; + SYNC_RXPHALIGNDONE_S : in STD_LOGIC; + \FSM_onehot_txsync_fsm.fsm_tx_reg[5]_0\ : in STD_LOGIC; + user_active_lane_0 : in STD_LOGIC; + \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0\ : in STD_LOGIC; + \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_1\ : in STD_LOGIC + ); +end pcie_7x_0_pcie_7x_0_pipe_sync; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pipe_sync is + signal \FSM_onehot_txsync_fsm.fsm_tx[1]_i_1_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[2]_i_1_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[3]_i_1_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[4]_i_1_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[4]_i_2_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[5]_i_1_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[6]_i_1_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1]\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2]\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6]\ : STD_LOGIC; + signal \^q\ : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal \^rst_txsync_done\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal gen3_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of gen3_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of gen3_reg1 : signal is "true"; + signal gen3_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of gen3_reg2 : signal is "NO"; + attribute async_reg of gen3_reg2 : signal is "true"; + signal mmcm_lock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of mmcm_lock_reg1 : signal is "NO"; + attribute async_reg of mmcm_lock_reg1 : signal is "true"; + signal mmcm_lock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of mmcm_lock_reg2 : signal is "NO"; + attribute async_reg of mmcm_lock_reg2 : signal is "true"; + signal rate_idle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_idle_reg1 : signal is "NO"; + attribute async_reg of rate_idle_reg1 : signal is "true"; + signal rate_idle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_idle_reg2 : signal is "NO"; + attribute async_reg of rate_idle_reg2 : signal is "true"; + signal rxcdrlock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxcdrlock_reg1 : signal is "NO"; + attribute async_reg of rxcdrlock_reg1 : signal is "true"; + signal rxcdrlock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxcdrlock_reg2 : signal is "NO"; + attribute async_reg of rxcdrlock_reg2 : signal is "true"; + signal rxdlysresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxdlysresetdone_reg1 : signal is "NO"; + attribute async_reg of rxdlysresetdone_reg1 : signal is "true"; + signal rxdlysresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxdlysresetdone_reg2 : signal is "NO"; + attribute async_reg of rxdlysresetdone_reg2 : signal is "true"; + signal rxelecidle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxelecidle_reg1 : signal is "NO"; + attribute async_reg of rxelecidle_reg1 : signal is "true"; + signal rxelecidle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxelecidle_reg2 : signal is "NO"; + attribute async_reg of rxelecidle_reg2 : signal is "true"; + signal rxphaligndone_m_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxphaligndone_m_reg1 : signal is "NO"; + attribute async_reg of rxphaligndone_m_reg1 : signal is "true"; + signal rxphaligndone_m_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxphaligndone_m_reg2 : signal is "NO"; + attribute async_reg of rxphaligndone_m_reg2 : signal is "true"; + signal rxphaligndone_s_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxphaligndone_s_reg1 : signal is "NO"; + attribute async_reg of rxphaligndone_s_reg1 : signal is "true"; + signal rxphaligndone_s_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxphaligndone_s_reg2 : signal is "NO"; + attribute async_reg of rxphaligndone_s_reg2 : signal is "true"; + signal rxsync_donem_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsync_donem_reg1 : signal is "NO"; + attribute async_reg of rxsync_donem_reg1 : signal is "true"; + signal rxsync_donem_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsync_donem_reg2 : signal is "NO"; + attribute async_reg of rxsync_donem_reg2 : signal is "true"; + signal rxsync_start_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsync_start_reg1 : signal is "NO"; + attribute async_reg of rxsync_start_reg1 : signal is "true"; + signal rxsync_start_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsync_start_reg2 : signal is "NO"; + attribute async_reg of rxsync_start_reg2 : signal is "true"; + signal rxsyncdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsyncdone_reg1 : signal is "NO"; + attribute async_reg of rxsyncdone_reg1 : signal is "true"; + signal rxsyncdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsyncdone_reg2 : signal is "NO"; + attribute async_reg of rxsyncdone_reg2 : signal is "true"; + signal \^sync_txdlyen_0\ : STD_LOGIC; + signal txdlysresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txdlysresetdone_reg1 : signal is "NO"; + attribute async_reg of txdlysresetdone_reg1 : signal is "true"; + signal txdlysresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txdlysresetdone_reg2 : signal is "NO"; + attribute async_reg of txdlysresetdone_reg2 : signal is "true"; + signal txdlysresetdone_reg3 : STD_LOGIC; + attribute SHIFT_EXTRACT of txdlysresetdone_reg3 : signal is "NO"; + attribute async_reg of txdlysresetdone_reg3 : signal is "true"; + signal txphaligndone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txphaligndone_reg1 : signal is "NO"; + attribute async_reg of txphaligndone_reg1 : signal is "true"; + signal txphaligndone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txphaligndone_reg2 : signal is "NO"; + attribute async_reg of txphaligndone_reg2 : signal is "true"; + signal txphaligndone_reg3 : STD_LOGIC; + attribute SHIFT_EXTRACT of txphaligndone_reg3 : signal is "NO"; + attribute async_reg of txphaligndone_reg3 : signal is "true"; + signal txphinitdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txphinitdone_reg1 : signal is "NO"; + attribute async_reg of txphinitdone_reg1 : signal is "true"; + signal txphinitdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txphinitdone_reg2 : signal is "NO"; + attribute async_reg of txphinitdone_reg2 : signal is "true"; + signal txphinitdone_reg3 : STD_LOGIC; + attribute SHIFT_EXTRACT of txphinitdone_reg3 : signal is "NO"; + attribute async_reg of txphinitdone_reg3 : signal is "true"; + signal \txsync_fsm.txdlyen_i_1_n_0\ : STD_LOGIC; + signal \txsync_fsm.txsync_done_i_1_n_0\ : STD_LOGIC; + signal txsync_start_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsync_start_reg1 : signal is "NO"; + attribute async_reg of txsync_start_reg1 : signal is "true"; + signal txsync_start_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsync_start_reg2 : signal is "NO"; + attribute async_reg of txsync_start_reg2 : signal is "true"; + signal txsync_start_reg3 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsync_start_reg3 : signal is "NO"; + attribute async_reg of txsync_start_reg3 : signal is "true"; + signal txsyncdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsyncdone_reg1 : signal is "NO"; + attribute async_reg of txsyncdone_reg1 : signal is "true"; + signal txsyncdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsyncdone_reg2 : signal is "NO"; + attribute async_reg of txsyncdone_reg2 : signal is "true"; + signal txsyncdone_reg3 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsyncdone_reg3 : signal is "NO"; + attribute async_reg of txsyncdone_reg3 : signal is "true"; + attribute FSM_ENCODED_STATES : string; + attribute FSM_ENCODED_STATES of \FSM_onehot_txsync_fsm.fsm_tx_reg[1]\ : label is "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_txsync_fsm.fsm_tx_reg[2]\ : label is "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_txsync_fsm.fsm_tx_reg[3]\ : label is "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_txsync_fsm.fsm_tx_reg[4]\ : label is "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_txsync_fsm.fsm_tx_reg[5]\ : label is "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_txsync_fsm.fsm_tx_reg[6]\ : label is "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of gen3_reg1_reg : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of gen3_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of gen3_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of gen3_reg2_reg : label is std.standard.true; + attribute KEEP of gen3_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of gen3_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of mmcm_lock_reg1_reg : label is std.standard.true; + attribute KEEP of mmcm_lock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of mmcm_lock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of mmcm_lock_reg2_reg : label is std.standard.true; + attribute KEEP of mmcm_lock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of mmcm_lock_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_idle_reg1_reg : label is std.standard.true; + attribute KEEP of rate_idle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_idle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_idle_reg2_reg : label is std.standard.true; + attribute KEEP of rate_idle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_idle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxcdrlock_reg1_reg : label is std.standard.true; + attribute KEEP of rxcdrlock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxcdrlock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxcdrlock_reg2_reg : label is std.standard.true; + attribute KEEP of rxcdrlock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxcdrlock_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxdlysresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of rxdlysresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxdlysresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxdlysresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of rxdlysresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxdlysresetdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxelecidle_reg1_reg : label is std.standard.true; + attribute KEEP of rxelecidle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxelecidle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxelecidle_reg2_reg : label is std.standard.true; + attribute KEEP of rxelecidle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxelecidle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxphaligndone_m_reg1_reg : label is std.standard.true; + attribute KEEP of rxphaligndone_m_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxphaligndone_m_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxphaligndone_m_reg2_reg : label is std.standard.true; + attribute KEEP of rxphaligndone_m_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxphaligndone_m_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxphaligndone_s_reg1_reg : label is std.standard.true; + attribute KEEP of rxphaligndone_s_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxphaligndone_s_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxphaligndone_s_reg2_reg : label is std.standard.true; + attribute KEEP of rxphaligndone_s_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxphaligndone_s_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsync_donem_reg1_reg : label is std.standard.true; + attribute KEEP of rxsync_donem_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsync_donem_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsync_donem_reg2_reg : label is std.standard.true; + attribute KEEP of rxsync_donem_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsync_donem_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsync_start_reg1_reg : label is std.standard.true; + attribute KEEP of rxsync_start_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsync_start_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsync_start_reg2_reg : label is std.standard.true; + attribute KEEP of rxsync_start_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsync_start_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsyncdone_reg1_reg : label is std.standard.true; + attribute KEEP of rxsyncdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsyncdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsyncdone_reg2_reg : label is std.standard.true; + attribute KEEP of rxsyncdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsyncdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txdlysresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of txdlysresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txdlysresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txdlysresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of txdlysresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txdlysresetdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txdlysresetdone_reg3_reg : label is std.standard.true; + attribute KEEP of txdlysresetdone_reg3_reg : label is "yes"; + attribute SHIFT_EXTRACT of txdlysresetdone_reg3_reg : label is "NO"; + attribute ASYNC_REG_boolean of txphaligndone_reg1_reg : label is std.standard.true; + attribute KEEP of txphaligndone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txphaligndone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txphaligndone_reg2_reg : label is std.standard.true; + attribute KEEP of txphaligndone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txphaligndone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txphaligndone_reg3_reg : label is std.standard.true; + attribute KEEP of txphaligndone_reg3_reg : label is "yes"; + attribute SHIFT_EXTRACT of txphaligndone_reg3_reg : label is "NO"; + attribute ASYNC_REG_boolean of txphinitdone_reg1_reg : label is std.standard.true; + attribute KEEP of txphinitdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txphinitdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txphinitdone_reg2_reg : label is std.standard.true; + attribute KEEP of txphinitdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txphinitdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txphinitdone_reg3_reg : label is std.standard.true; + attribute KEEP of txphinitdone_reg3_reg : label is "yes"; + attribute SHIFT_EXTRACT of txphinitdone_reg3_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsync_start_reg1_reg : label is std.standard.true; + attribute KEEP of txsync_start_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsync_start_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsync_start_reg2_reg : label is std.standard.true; + attribute KEEP of txsync_start_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsync_start_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsync_start_reg3_reg : label is std.standard.true; + attribute KEEP of txsync_start_reg3_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsync_start_reg3_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsyncdone_reg1_reg : label is std.standard.true; + attribute KEEP of txsyncdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsyncdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsyncdone_reg2_reg : label is std.standard.true; + attribute KEEP of txsyncdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsyncdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsyncdone_reg3_reg : label is std.standard.true; + attribute KEEP of txsyncdone_reg3_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsyncdone_reg3_reg : label is "NO"; +begin + Q(2 downto 0) <= \^q\(2 downto 0); + RST_TXSYNC_DONE(0) <= \^rst_txsync_done\(0); + \out\ <= txphaligndone_reg2; + sync_txdlyen_0 <= \^sync_txdlyen_0\; + txphaligndone_reg3_reg_0 <= txphaligndone_reg3; +\FSM_onehot_txsync_fsm.fsm_tx[1]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"1D1DFF1D" + ) + port map ( + I0 => \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2_n_0\, + I1 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1]\, + I2 => txsync_start_reg2, + I3 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6]\, + I4 => \FSM_onehot_txsync_fsm.fsm_tx_reg[5]_0\, + O => \FSM_onehot_txsync_fsm.fsm_tx[1]_i_1_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[1]_i_2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFFFFFE" + ) + port map ( + I0 => \^q\(1), + I1 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6]\, + I2 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2]\, + I3 => \^q\(0), + I4 => \^q\(2), + O => \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[2]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"F444" + ) + port map ( + I0 => mmcm_lock_reg2, + I1 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2]\, + I2 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1]\, + I3 => txsync_start_reg2, + O => \FSM_onehot_txsync_fsm.fsm_tx[2]_i_1_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[3]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFD0D0D0" + ) + port map ( + I0 => txdlysresetdone_reg2, + I1 => txdlysresetdone_reg3, + I2 => \^q\(0), + I3 => mmcm_lock_reg2, + I4 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2]\, + O => \FSM_onehot_txsync_fsm.fsm_tx[3]_i_1_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[4]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"44F44444" + ) + port map ( + I0 => \FSM_onehot_txsync_fsm.fsm_tx[4]_i_2_n_0\, + I1 => \^q\(1), + I2 => txdlysresetdone_reg2, + I3 => txdlysresetdone_reg3, + I4 => \^q\(0), + O => \FSM_onehot_txsync_fsm.fsm_tx[4]_i_1_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[4]_i_2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"F444" + ) + port map ( + I0 => txphinitdone_reg3, + I1 => txphinitdone_reg2, + I2 => \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0\, + I3 => \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_1\, + O => \FSM_onehot_txsync_fsm.fsm_tx[4]_i_2_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[5]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"8F88FFFF88888888" + ) + port map ( + I0 => \FSM_onehot_txsync_fsm.fsm_tx_reg[5]_0\, + I1 => \^q\(2), + I2 => txphinitdone_reg3, + I3 => txphinitdone_reg2, + I4 => user_active_lane_0, + I5 => \^q\(1), + O => \FSM_onehot_txsync_fsm.fsm_tx[5]_i_1_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[6]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"EAFFEAEA2A002A2A" + ) + port map ( + I0 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6]\, + I1 => \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0\, + I2 => \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_1\, + I3 => txphaligndone_reg3, + I4 => txphaligndone_reg2, + I5 => \^q\(2), + O => \FSM_onehot_txsync_fsm.fsm_tx[6]_i_1_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx_reg[1]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_txsync_fsm.fsm_tx[1]_i_1_n_0\, + Q => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1]\, + S => RST_CPLLRESET + ); +\FSM_onehot_txsync_fsm.fsm_tx_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_txsync_fsm.fsm_tx[2]_i_1_n_0\, + Q => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\FSM_onehot_txsync_fsm.fsm_tx_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_txsync_fsm.fsm_tx[3]_i_1_n_0\, + Q => \^q\(0), + R => RST_CPLLRESET + ); +\FSM_onehot_txsync_fsm.fsm_tx_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_txsync_fsm.fsm_tx[4]_i_1_n_0\, + Q => \^q\(1), + R => RST_CPLLRESET + ); +\FSM_onehot_txsync_fsm.fsm_tx_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_txsync_fsm.fsm_tx[5]_i_1_n_0\, + Q => \^q\(2), + R => RST_CPLLRESET + ); +\FSM_onehot_txsync_fsm.fsm_tx_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_txsync_fsm.fsm_tx[6]_i_1_n_0\, + Q => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6]\, + R => RST_CPLLRESET + ); +gen3_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_RATE_GEN3, + Q => gen3_reg1, + R => RST_CPLLRESET + ); +gen3_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => gen3_reg1, + Q => gen3_reg2, + R => RST_CPLLRESET + ); +mmcm_lock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_mmcm_lock_in, + Q => mmcm_lock_reg1, + R => RST_CPLLRESET + ); +mmcm_lock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => mmcm_lock_reg1, + Q => mmcm_lock_reg2, + R => RST_CPLLRESET + ); +rate_idle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_RATE_IDLE, + Q => rate_idle_reg1, + R => RST_CPLLRESET + ); +rate_idle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rate_idle_reg1, + Q => rate_idle_reg2, + R => RST_CPLLRESET + ); +rxcdrlock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_RXCDRLOCK, + Q => rxcdrlock_reg1, + R => RST_CPLLRESET + ); +rxcdrlock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxcdrlock_reg1, + Q => rxcdrlock_reg2, + R => RST_CPLLRESET + ); +rxdlysresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_RXDLYSRESETDONE, + Q => rxdlysresetdone_reg1, + R => RST_CPLLRESET + ); +rxdlysresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxdlysresetdone_reg1, + Q => rxdlysresetdone_reg2, + R => RST_CPLLRESET + ); +rxelecidle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => gt_rx_elec_idle_wire_filter(0), + Q => rxelecidle_reg1, + R => RST_CPLLRESET + ); +rxelecidle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxelecidle_reg1, + Q => rxelecidle_reg2, + R => RST_CPLLRESET + ); +rxphaligndone_m_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_RXPHALIGNDONE_M, + Q => rxphaligndone_m_reg1, + R => RST_CPLLRESET + ); +rxphaligndone_m_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxphaligndone_m_reg1, + Q => rxphaligndone_m_reg2, + R => RST_CPLLRESET + ); +rxphaligndone_s_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_RXPHALIGNDONE_S, + Q => rxphaligndone_s_reg1, + R => RST_CPLLRESET + ); +rxphaligndone_s_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxphaligndone_s_reg1, + Q => rxphaligndone_s_reg2, + R => RST_CPLLRESET + ); +rxsync_donem_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxsync_donem_reg1, + R => RST_CPLLRESET + ); +rxsync_donem_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxsync_donem_reg1, + Q => rxsync_donem_reg2, + R => RST_CPLLRESET + ); +rxsync_start_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_RXSYNC_START, + Q => rxsync_start_reg1, + R => RST_CPLLRESET + ); +rxsync_start_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxsync_start_reg1, + Q => rxsync_start_reg2, + R => RST_CPLLRESET + ); +rxsyncdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxsyncdone_reg1, + R => RST_CPLLRESET + ); +rxsyncdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxsyncdone_reg1, + Q => rxsyncdone_reg2, + R => RST_CPLLRESET + ); +txdlysresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_TXDLYSRESETDONE, + Q => txdlysresetdone_reg1, + R => RST_CPLLRESET + ); +txdlysresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txdlysresetdone_reg1, + Q => txdlysresetdone_reg2, + R => RST_CPLLRESET + ); +txdlysresetdone_reg3_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txdlysresetdone_reg2, + Q => txdlysresetdone_reg3, + R => RST_CPLLRESET + ); +txphaligndone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_TXPHALIGNDONE, + Q => txphaligndone_reg1, + R => RST_CPLLRESET + ); +txphaligndone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txphaligndone_reg1, + Q => txphaligndone_reg2, + R => RST_CPLLRESET + ); +txphaligndone_reg3_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txphaligndone_reg2, + Q => txphaligndone_reg3, + R => RST_CPLLRESET + ); +txphinitdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_TXPHINITDONE, + Q => txphinitdone_reg1, + R => RST_CPLLRESET + ); +txphinitdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txphinitdone_reg1, + Q => txphinitdone_reg2, + R => RST_CPLLRESET + ); +txphinitdone_reg3_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txphinitdone_reg2, + Q => txphinitdone_reg3, + R => RST_CPLLRESET + ); +\txsync_fsm.txdlyen_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"ABAAA8AA" + ) + port map ( + I0 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6]\, + I1 => \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2_n_0\, + I2 => txsync_start_reg2, + I3 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1]\, + I4 => \^sync_txdlyen_0\, + O => \txsync_fsm.txdlyen_i_1_n_0\ + ); +\txsync_fsm.txdlyen_reg\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txsync_fsm.txdlyen_i_1_n_0\, + Q => \^sync_txdlyen_0\, + R => RST_CPLLRESET + ); +\txsync_fsm.txsync_done_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"222F222222202222" + ) + port map ( + I0 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6]\, + I1 => \FSM_onehot_txsync_fsm.fsm_tx_reg[5]_0\, + I2 => \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2_n_0\, + I3 => txsync_start_reg2, + I4 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1]\, + I5 => \^rst_txsync_done\(0), + O => \txsync_fsm.txsync_done_i_1_n_0\ + ); +\txsync_fsm.txsync_done_reg\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txsync_fsm.txsync_done_i_1_n_0\, + Q => \^rst_txsync_done\(0), + R => RST_CPLLRESET + ); +txsync_start_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_TXSYNC_START, + Q => txsync_start_reg1, + R => RST_CPLLRESET + ); +txsync_start_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txsync_start_reg1, + Q => txsync_start_reg2, + R => RST_CPLLRESET + ); +txsync_start_reg3_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txsync_start_reg2, + Q => txsync_start_reg3, + R => RST_CPLLRESET + ); +txsyncdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txsyncdone_reg1, + R => RST_CPLLRESET + ); +txsyncdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txsyncdone_reg1, + Q => txsyncdone_reg2, + R => RST_CPLLRESET + ); +txsyncdone_reg3_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txsyncdone_reg2, + Q => txsyncdone_reg3, + R => RST_CPLLRESET + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pipe_sync_41 is + port ( + Q : out STD_LOGIC_VECTOR ( 2 downto 0 ); + RST_TXSYNC_DONE : out STD_LOGIC_VECTOR ( 0 to 0 ); + \out\ : in STD_LOGIC; + \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0\ : in STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + SYNC_TXPHALIGNDONE : in STD_LOGIC; + SYNC_TXSYNC_START : in STD_LOGIC; + pipe_mmcm_lock_in : in STD_LOGIC; + SYNC_TXDLYSRESETDONE : in STD_LOGIC; + SYNC_TXPHINITDONE : in STD_LOGIC; + SYNC_GEN3 : in STD_LOGIC; + SYNC_RATE_IDLE : in STD_LOGIC; + gt_rx_elec_idle_wire_filter : in STD_LOGIC_VECTOR ( 0 to 0 ); + SYNC_RXCDRLOCK : in STD_LOGIC; + SYNC_RXSYNC_START : in STD_LOGIC; + SYNC_RXDLYSRESETDONE : in STD_LOGIC; + SYNC_RXPHALIGNDONE_M : in STD_LOGIC; + SYNC_RXPHALIGNDONE_S : in STD_LOGIC; + user_active_lane_1 : in STD_LOGIC + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pipe_sync_41 : entity is "pcie_7x_0_pipe_sync"; +end pcie_7x_0_pcie_7x_0_pipe_sync_41; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pipe_sync_41 is + signal \FSM_onehot_txsync_fsm.fsm_tx[1]_i_1__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[2]_i_1__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[3]_i_1__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[4]_i_1__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[5]_i_1__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[5]_i_2__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[6]_i_1__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1]\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2]\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6]\ : STD_LOGIC; + signal \^q\ : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal \^rst_txsync_done\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal gen3_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of gen3_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of gen3_reg1 : signal is "true"; + signal gen3_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of gen3_reg2 : signal is "NO"; + attribute async_reg of gen3_reg2 : signal is "true"; + signal mmcm_lock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of mmcm_lock_reg1 : signal is "NO"; + attribute async_reg of mmcm_lock_reg1 : signal is "true"; + signal mmcm_lock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of mmcm_lock_reg2 : signal is "NO"; + attribute async_reg of mmcm_lock_reg2 : signal is "true"; + signal rate_idle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_idle_reg1 : signal is "NO"; + attribute async_reg of rate_idle_reg1 : signal is "true"; + signal rate_idle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_idle_reg2 : signal is "NO"; + attribute async_reg of rate_idle_reg2 : signal is "true"; + signal rxcdrlock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxcdrlock_reg1 : signal is "NO"; + attribute async_reg of rxcdrlock_reg1 : signal is "true"; + signal rxcdrlock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxcdrlock_reg2 : signal is "NO"; + attribute async_reg of rxcdrlock_reg2 : signal is "true"; + signal rxdlysresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxdlysresetdone_reg1 : signal is "NO"; + attribute async_reg of rxdlysresetdone_reg1 : signal is "true"; + signal rxdlysresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxdlysresetdone_reg2 : signal is "NO"; + attribute async_reg of rxdlysresetdone_reg2 : signal is "true"; + signal rxelecidle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxelecidle_reg1 : signal is "NO"; + attribute async_reg of rxelecidle_reg1 : signal is "true"; + signal rxelecidle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxelecidle_reg2 : signal is "NO"; + attribute async_reg of rxelecidle_reg2 : signal is "true"; + signal rxphaligndone_m_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxphaligndone_m_reg1 : signal is "NO"; + attribute async_reg of rxphaligndone_m_reg1 : signal is "true"; + signal rxphaligndone_m_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxphaligndone_m_reg2 : signal is "NO"; + attribute async_reg of rxphaligndone_m_reg2 : signal is "true"; + signal rxphaligndone_s_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxphaligndone_s_reg1 : signal is "NO"; + attribute async_reg of rxphaligndone_s_reg1 : signal is "true"; + signal rxphaligndone_s_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxphaligndone_s_reg2 : signal is "NO"; + attribute async_reg of rxphaligndone_s_reg2 : signal is "true"; + signal rxsync_donem_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsync_donem_reg1 : signal is "NO"; + attribute async_reg of rxsync_donem_reg1 : signal is "true"; + signal rxsync_donem_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsync_donem_reg2 : signal is "NO"; + attribute async_reg of rxsync_donem_reg2 : signal is "true"; + signal rxsync_start_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsync_start_reg1 : signal is "NO"; + attribute async_reg of rxsync_start_reg1 : signal is "true"; + signal rxsync_start_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsync_start_reg2 : signal is "NO"; + attribute async_reg of rxsync_start_reg2 : signal is "true"; + signal rxsyncdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsyncdone_reg1 : signal is "NO"; + attribute async_reg of rxsyncdone_reg1 : signal is "true"; + signal rxsyncdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsyncdone_reg2 : signal is "NO"; + attribute async_reg of rxsyncdone_reg2 : signal is "true"; + signal txdlysresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txdlysresetdone_reg1 : signal is "NO"; + attribute async_reg of txdlysresetdone_reg1 : signal is "true"; + signal txdlysresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txdlysresetdone_reg2 : signal is "NO"; + attribute async_reg of txdlysresetdone_reg2 : signal is "true"; + signal txdlysresetdone_reg3 : STD_LOGIC; + attribute SHIFT_EXTRACT of txdlysresetdone_reg3 : signal is "NO"; + attribute async_reg of txdlysresetdone_reg3 : signal is "true"; + signal txphaligndone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txphaligndone_reg1 : signal is "NO"; + attribute async_reg of txphaligndone_reg1 : signal is "true"; + signal txphaligndone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txphaligndone_reg2 : signal is "NO"; + attribute async_reg of txphaligndone_reg2 : signal is "true"; + signal txphaligndone_reg3 : STD_LOGIC; + attribute SHIFT_EXTRACT of txphaligndone_reg3 : signal is "NO"; + attribute async_reg of txphaligndone_reg3 : signal is "true"; + signal txphinitdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txphinitdone_reg1 : signal is "NO"; + attribute async_reg of txphinitdone_reg1 : signal is "true"; + signal txphinitdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txphinitdone_reg2 : signal is "NO"; + attribute async_reg of txphinitdone_reg2 : signal is "true"; + signal txphinitdone_reg3 : STD_LOGIC; + attribute SHIFT_EXTRACT of txphinitdone_reg3 : signal is "NO"; + attribute async_reg of txphinitdone_reg3 : signal is "true"; + signal \txsync_fsm.txsync_done_i_1__0_n_0\ : STD_LOGIC; + signal txsync_start_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsync_start_reg1 : signal is "NO"; + attribute async_reg of txsync_start_reg1 : signal is "true"; + signal txsync_start_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsync_start_reg2 : signal is "NO"; + attribute async_reg of txsync_start_reg2 : signal is "true"; + signal txsync_start_reg3 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsync_start_reg3 : signal is "NO"; + attribute async_reg of txsync_start_reg3 : signal is "true"; + signal txsyncdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsyncdone_reg1 : signal is "NO"; + attribute async_reg of txsyncdone_reg1 : signal is "true"; + signal txsyncdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsyncdone_reg2 : signal is "NO"; + attribute async_reg of txsyncdone_reg2 : signal is "true"; + signal txsyncdone_reg3 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsyncdone_reg3 : signal is "NO"; + attribute async_reg of txsyncdone_reg3 : signal is "true"; + attribute FSM_ENCODED_STATES : string; + attribute FSM_ENCODED_STATES of \FSM_onehot_txsync_fsm.fsm_tx_reg[1]\ : label is "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_txsync_fsm.fsm_tx_reg[2]\ : label is "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_txsync_fsm.fsm_tx_reg[3]\ : label is "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_txsync_fsm.fsm_tx_reg[4]\ : label is "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_txsync_fsm.fsm_tx_reg[5]\ : label is "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_txsync_fsm.fsm_tx_reg[6]\ : label is "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of gen3_reg1_reg : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of gen3_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of gen3_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of gen3_reg2_reg : label is std.standard.true; + attribute KEEP of gen3_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of gen3_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of mmcm_lock_reg1_reg : label is std.standard.true; + attribute KEEP of mmcm_lock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of mmcm_lock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of mmcm_lock_reg2_reg : label is std.standard.true; + attribute KEEP of mmcm_lock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of mmcm_lock_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_idle_reg1_reg : label is std.standard.true; + attribute KEEP of rate_idle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_idle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_idle_reg2_reg : label is std.standard.true; + attribute KEEP of rate_idle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_idle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxcdrlock_reg1_reg : label is std.standard.true; + attribute KEEP of rxcdrlock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxcdrlock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxcdrlock_reg2_reg : label is std.standard.true; + attribute KEEP of rxcdrlock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxcdrlock_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxdlysresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of rxdlysresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxdlysresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxdlysresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of rxdlysresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxdlysresetdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxelecidle_reg1_reg : label is std.standard.true; + attribute KEEP of rxelecidle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxelecidle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxelecidle_reg2_reg : label is std.standard.true; + attribute KEEP of rxelecidle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxelecidle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxphaligndone_m_reg1_reg : label is std.standard.true; + attribute KEEP of rxphaligndone_m_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxphaligndone_m_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxphaligndone_m_reg2_reg : label is std.standard.true; + attribute KEEP of rxphaligndone_m_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxphaligndone_m_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxphaligndone_s_reg1_reg : label is std.standard.true; + attribute KEEP of rxphaligndone_s_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxphaligndone_s_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxphaligndone_s_reg2_reg : label is std.standard.true; + attribute KEEP of rxphaligndone_s_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxphaligndone_s_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsync_donem_reg1_reg : label is std.standard.true; + attribute KEEP of rxsync_donem_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsync_donem_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsync_donem_reg2_reg : label is std.standard.true; + attribute KEEP of rxsync_donem_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsync_donem_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsync_start_reg1_reg : label is std.standard.true; + attribute KEEP of rxsync_start_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsync_start_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsync_start_reg2_reg : label is std.standard.true; + attribute KEEP of rxsync_start_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsync_start_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsyncdone_reg1_reg : label is std.standard.true; + attribute KEEP of rxsyncdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsyncdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsyncdone_reg2_reg : label is std.standard.true; + attribute KEEP of rxsyncdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsyncdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txdlysresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of txdlysresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txdlysresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txdlysresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of txdlysresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txdlysresetdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txdlysresetdone_reg3_reg : label is std.standard.true; + attribute KEEP of txdlysresetdone_reg3_reg : label is "yes"; + attribute SHIFT_EXTRACT of txdlysresetdone_reg3_reg : label is "NO"; + attribute ASYNC_REG_boolean of txphaligndone_reg1_reg : label is std.standard.true; + attribute KEEP of txphaligndone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txphaligndone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txphaligndone_reg2_reg : label is std.standard.true; + attribute KEEP of txphaligndone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txphaligndone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txphaligndone_reg3_reg : label is std.standard.true; + attribute KEEP of txphaligndone_reg3_reg : label is "yes"; + attribute SHIFT_EXTRACT of txphaligndone_reg3_reg : label is "NO"; + attribute ASYNC_REG_boolean of txphinitdone_reg1_reg : label is std.standard.true; + attribute KEEP of txphinitdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txphinitdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txphinitdone_reg2_reg : label is std.standard.true; + attribute KEEP of txphinitdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txphinitdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txphinitdone_reg3_reg : label is std.standard.true; + attribute KEEP of txphinitdone_reg3_reg : label is "yes"; + attribute SHIFT_EXTRACT of txphinitdone_reg3_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsync_start_reg1_reg : label is std.standard.true; + attribute KEEP of txsync_start_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsync_start_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsync_start_reg2_reg : label is std.standard.true; + attribute KEEP of txsync_start_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsync_start_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsync_start_reg3_reg : label is std.standard.true; + attribute KEEP of txsync_start_reg3_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsync_start_reg3_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsyncdone_reg1_reg : label is std.standard.true; + attribute KEEP of txsyncdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsyncdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsyncdone_reg2_reg : label is std.standard.true; + attribute KEEP of txsyncdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsyncdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsyncdone_reg3_reg : label is std.standard.true; + attribute KEEP of txsyncdone_reg3_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsyncdone_reg3_reg : label is "NO"; +begin + Q(2 downto 0) <= \^q\(2 downto 0); + RST_TXSYNC_DONE(0) <= \^rst_txsync_done\(0); +\FSM_onehot_txsync_fsm.fsm_tx[1]_i_1__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"FF1D" + ) + port map ( + I0 => \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__0_n_0\, + I1 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1]\, + I2 => txsync_start_reg2, + I3 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6]\, + O => \FSM_onehot_txsync_fsm.fsm_tx[1]_i_1__0_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFFFFFE" + ) + port map ( + I0 => \^q\(2), + I1 => \^q\(1), + I2 => \^q\(0), + I3 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6]\, + I4 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2]\, + O => \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__0_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[2]_i_1__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"F444" + ) + port map ( + I0 => mmcm_lock_reg2, + I1 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2]\, + I2 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1]\, + I3 => txsync_start_reg2, + O => \FSM_onehot_txsync_fsm.fsm_tx[2]_i_1__0_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[3]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFD0D0D0" + ) + port map ( + I0 => txdlysresetdone_reg2, + I1 => txdlysresetdone_reg3, + I2 => \^q\(0), + I3 => mmcm_lock_reg2, + I4 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2]\, + O => \FSM_onehot_txsync_fsm.fsm_tx[3]_i_1__0_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[4]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"44F44444" + ) + port map ( + I0 => \FSM_onehot_txsync_fsm.fsm_tx[5]_i_2__2_n_0\, + I1 => \^q\(1), + I2 => txdlysresetdone_reg2, + I3 => txdlysresetdone_reg3, + I4 => \^q\(0), + O => \FSM_onehot_txsync_fsm.fsm_tx[4]_i_1__0_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[5]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFB000B000B000" + ) + port map ( + I0 => txphaligndone_reg3, + I1 => txphaligndone_reg2, + I2 => user_active_lane_1, + I3 => \^q\(2), + I4 => \FSM_onehot_txsync_fsm.fsm_tx[5]_i_2__2_n_0\, + I5 => \^q\(1), + O => \FSM_onehot_txsync_fsm.fsm_tx[5]_i_1__0_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[5]_i_2__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"F444" + ) + port map ( + I0 => txphinitdone_reg3, + I1 => txphinitdone_reg2, + I2 => \out\, + I3 => \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0\, + O => \FSM_onehot_txsync_fsm.fsm_tx[5]_i_2__2_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[6]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"8080AA80" + ) + port map ( + I0 => \^q\(2), + I1 => \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0\, + I2 => \out\, + I3 => txphaligndone_reg2, + I4 => txphaligndone_reg3, + O => \FSM_onehot_txsync_fsm.fsm_tx[6]_i_1__0_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx_reg[1]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_txsync_fsm.fsm_tx[1]_i_1__0_n_0\, + Q => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1]\, + S => RST_CPLLRESET + ); +\FSM_onehot_txsync_fsm.fsm_tx_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_txsync_fsm.fsm_tx[2]_i_1__0_n_0\, + Q => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\FSM_onehot_txsync_fsm.fsm_tx_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_txsync_fsm.fsm_tx[3]_i_1__0_n_0\, + Q => \^q\(0), + R => RST_CPLLRESET + ); +\FSM_onehot_txsync_fsm.fsm_tx_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_txsync_fsm.fsm_tx[4]_i_1__0_n_0\, + Q => \^q\(1), + R => RST_CPLLRESET + ); +\FSM_onehot_txsync_fsm.fsm_tx_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_txsync_fsm.fsm_tx[5]_i_1__0_n_0\, + Q => \^q\(2), + R => RST_CPLLRESET + ); +\FSM_onehot_txsync_fsm.fsm_tx_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_txsync_fsm.fsm_tx[6]_i_1__0_n_0\, + Q => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6]\, + R => RST_CPLLRESET + ); +gen3_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_GEN3, + Q => gen3_reg1, + R => RST_CPLLRESET + ); +gen3_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => gen3_reg1, + Q => gen3_reg2, + R => RST_CPLLRESET + ); +mmcm_lock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_mmcm_lock_in, + Q => mmcm_lock_reg1, + R => RST_CPLLRESET + ); +mmcm_lock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => mmcm_lock_reg1, + Q => mmcm_lock_reg2, + R => RST_CPLLRESET + ); +rate_idle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_RATE_IDLE, + Q => rate_idle_reg1, + R => RST_CPLLRESET + ); +rate_idle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rate_idle_reg1, + Q => rate_idle_reg2, + R => RST_CPLLRESET + ); +rxcdrlock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_RXCDRLOCK, + Q => rxcdrlock_reg1, + R => RST_CPLLRESET + ); +rxcdrlock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxcdrlock_reg1, + Q => rxcdrlock_reg2, + R => RST_CPLLRESET + ); +rxdlysresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_RXDLYSRESETDONE, + Q => rxdlysresetdone_reg1, + R => RST_CPLLRESET + ); +rxdlysresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxdlysresetdone_reg1, + Q => rxdlysresetdone_reg2, + R => RST_CPLLRESET + ); +rxelecidle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => gt_rx_elec_idle_wire_filter(0), + Q => rxelecidle_reg1, + R => RST_CPLLRESET + ); +rxelecidle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxelecidle_reg1, + Q => rxelecidle_reg2, + R => RST_CPLLRESET + ); +rxphaligndone_m_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_RXPHALIGNDONE_M, + Q => rxphaligndone_m_reg1, + R => RST_CPLLRESET + ); +rxphaligndone_m_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxphaligndone_m_reg1, + Q => rxphaligndone_m_reg2, + R => RST_CPLLRESET + ); +rxphaligndone_s_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_RXPHALIGNDONE_S, + Q => rxphaligndone_s_reg1, + R => RST_CPLLRESET + ); +rxphaligndone_s_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxphaligndone_s_reg1, + Q => rxphaligndone_s_reg2, + R => RST_CPLLRESET + ); +rxsync_donem_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxsync_donem_reg1, + R => RST_CPLLRESET + ); +rxsync_donem_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxsync_donem_reg1, + Q => rxsync_donem_reg2, + R => RST_CPLLRESET + ); +rxsync_start_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_RXSYNC_START, + Q => rxsync_start_reg1, + R => RST_CPLLRESET + ); +rxsync_start_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxsync_start_reg1, + Q => rxsync_start_reg2, + R => RST_CPLLRESET + ); +rxsyncdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxsyncdone_reg1, + R => RST_CPLLRESET + ); +rxsyncdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxsyncdone_reg1, + Q => rxsyncdone_reg2, + R => RST_CPLLRESET + ); +txdlysresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_TXDLYSRESETDONE, + Q => txdlysresetdone_reg1, + R => RST_CPLLRESET + ); +txdlysresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txdlysresetdone_reg1, + Q => txdlysresetdone_reg2, + R => RST_CPLLRESET + ); +txdlysresetdone_reg3_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txdlysresetdone_reg2, + Q => txdlysresetdone_reg3, + R => RST_CPLLRESET + ); +txphaligndone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_TXPHALIGNDONE, + Q => txphaligndone_reg1, + R => RST_CPLLRESET + ); +txphaligndone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txphaligndone_reg1, + Q => txphaligndone_reg2, + R => RST_CPLLRESET + ); +txphaligndone_reg3_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txphaligndone_reg2, + Q => txphaligndone_reg3, + R => RST_CPLLRESET + ); +txphinitdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_TXPHINITDONE, + Q => txphinitdone_reg1, + R => RST_CPLLRESET + ); +txphinitdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txphinitdone_reg1, + Q => txphinitdone_reg2, + R => RST_CPLLRESET + ); +txphinitdone_reg3_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txphinitdone_reg2, + Q => txphinitdone_reg3, + R => RST_CPLLRESET + ); +\txsync_fsm.txsync_done_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"ABAAA8AA" + ) + port map ( + I0 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6]\, + I1 => \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__0_n_0\, + I2 => txsync_start_reg2, + I3 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1]\, + I4 => \^rst_txsync_done\(0), + O => \txsync_fsm.txsync_done_i_1__0_n_0\ + ); +\txsync_fsm.txsync_done_reg\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txsync_fsm.txsync_done_i_1__0_n_0\, + Q => \^rst_txsync_done\(0), + R => RST_CPLLRESET + ); +txsync_start_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_TXSYNC_START, + Q => txsync_start_reg1, + R => RST_CPLLRESET + ); +txsync_start_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txsync_start_reg1, + Q => txsync_start_reg2, + R => RST_CPLLRESET + ); +txsync_start_reg3_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txsync_start_reg2, + Q => txsync_start_reg3, + R => RST_CPLLRESET + ); +txsyncdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txsyncdone_reg1, + R => RST_CPLLRESET + ); +txsyncdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txsyncdone_reg1, + Q => txsyncdone_reg2, + R => RST_CPLLRESET + ); +txsyncdone_reg3_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txsyncdone_reg2, + Q => txsyncdone_reg3, + R => RST_CPLLRESET + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pipe_sync_47 is + port ( + Q : out STD_LOGIC_VECTOR ( 2 downto 0 ); + RST_TXSYNC_DONE : out STD_LOGIC_VECTOR ( 0 to 0 ); + \out\ : in STD_LOGIC; + \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0\ : in STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + SYNC_TXPHALIGNDONE : in STD_LOGIC; + SYNC_TXSYNC_START : in STD_LOGIC; + pipe_mmcm_lock_in : in STD_LOGIC; + SYNC_TXDLYSRESETDONE : in STD_LOGIC; + SYNC_TXPHINITDONE : in STD_LOGIC; + SYNC_GEN3 : in STD_LOGIC; + SYNC_RATE_IDLE : in STD_LOGIC; + gt_rx_elec_idle_wire_filter : in STD_LOGIC_VECTOR ( 0 to 0 ); + SYNC_RXCDRLOCK : in STD_LOGIC; + SYNC_RXSYNC_START : in STD_LOGIC; + SYNC_RXDLYSRESETDONE : in STD_LOGIC; + SYNC_RXPHALIGNDONE_M : in STD_LOGIC; + SYNC_RXPHALIGNDONE_S : in STD_LOGIC; + user_active_lane_2 : in STD_LOGIC + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pipe_sync_47 : entity is "pcie_7x_0_pipe_sync"; +end pcie_7x_0_pcie_7x_0_pipe_sync_47; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pipe_sync_47 is + signal \FSM_onehot_txsync_fsm.fsm_tx[1]_i_1__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[2]_i_1__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[3]_i_1__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[4]_i_1__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[5]_i_1__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[5]_i_3__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[6]_i_1__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1]\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2]\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6]\ : STD_LOGIC; + signal \^q\ : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal \^rst_txsync_done\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal gen3_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of gen3_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of gen3_reg1 : signal is "true"; + signal gen3_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of gen3_reg2 : signal is "NO"; + attribute async_reg of gen3_reg2 : signal is "true"; + signal mmcm_lock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of mmcm_lock_reg1 : signal is "NO"; + attribute async_reg of mmcm_lock_reg1 : signal is "true"; + signal mmcm_lock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of mmcm_lock_reg2 : signal is "NO"; + attribute async_reg of mmcm_lock_reg2 : signal is "true"; + signal rate_idle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_idle_reg1 : signal is "NO"; + attribute async_reg of rate_idle_reg1 : signal is "true"; + signal rate_idle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_idle_reg2 : signal is "NO"; + attribute async_reg of rate_idle_reg2 : signal is "true"; + signal rxcdrlock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxcdrlock_reg1 : signal is "NO"; + attribute async_reg of rxcdrlock_reg1 : signal is "true"; + signal rxcdrlock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxcdrlock_reg2 : signal is "NO"; + attribute async_reg of rxcdrlock_reg2 : signal is "true"; + signal rxdlysresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxdlysresetdone_reg1 : signal is "NO"; + attribute async_reg of rxdlysresetdone_reg1 : signal is "true"; + signal rxdlysresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxdlysresetdone_reg2 : signal is "NO"; + attribute async_reg of rxdlysresetdone_reg2 : signal is "true"; + signal rxelecidle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxelecidle_reg1 : signal is "NO"; + attribute async_reg of rxelecidle_reg1 : signal is "true"; + signal rxelecidle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxelecidle_reg2 : signal is "NO"; + attribute async_reg of rxelecidle_reg2 : signal is "true"; + signal rxphaligndone_m_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxphaligndone_m_reg1 : signal is "NO"; + attribute async_reg of rxphaligndone_m_reg1 : signal is "true"; + signal rxphaligndone_m_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxphaligndone_m_reg2 : signal is "NO"; + attribute async_reg of rxphaligndone_m_reg2 : signal is "true"; + signal rxphaligndone_s_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxphaligndone_s_reg1 : signal is "NO"; + attribute async_reg of rxphaligndone_s_reg1 : signal is "true"; + signal rxphaligndone_s_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxphaligndone_s_reg2 : signal is "NO"; + attribute async_reg of rxphaligndone_s_reg2 : signal is "true"; + signal rxsync_donem_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsync_donem_reg1 : signal is "NO"; + attribute async_reg of rxsync_donem_reg1 : signal is "true"; + signal rxsync_donem_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsync_donem_reg2 : signal is "NO"; + attribute async_reg of rxsync_donem_reg2 : signal is "true"; + signal rxsync_start_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsync_start_reg1 : signal is "NO"; + attribute async_reg of rxsync_start_reg1 : signal is "true"; + signal rxsync_start_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsync_start_reg2 : signal is "NO"; + attribute async_reg of rxsync_start_reg2 : signal is "true"; + signal rxsyncdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsyncdone_reg1 : signal is "NO"; + attribute async_reg of rxsyncdone_reg1 : signal is "true"; + signal rxsyncdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsyncdone_reg2 : signal is "NO"; + attribute async_reg of rxsyncdone_reg2 : signal is "true"; + signal txdlysresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txdlysresetdone_reg1 : signal is "NO"; + attribute async_reg of txdlysresetdone_reg1 : signal is "true"; + signal txdlysresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txdlysresetdone_reg2 : signal is "NO"; + attribute async_reg of txdlysresetdone_reg2 : signal is "true"; + signal txdlysresetdone_reg3 : STD_LOGIC; + attribute SHIFT_EXTRACT of txdlysresetdone_reg3 : signal is "NO"; + attribute async_reg of txdlysresetdone_reg3 : signal is "true"; + signal txphaligndone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txphaligndone_reg1 : signal is "NO"; + attribute async_reg of txphaligndone_reg1 : signal is "true"; + signal txphaligndone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txphaligndone_reg2 : signal is "NO"; + attribute async_reg of txphaligndone_reg2 : signal is "true"; + signal txphaligndone_reg3 : STD_LOGIC; + attribute SHIFT_EXTRACT of txphaligndone_reg3 : signal is "NO"; + attribute async_reg of txphaligndone_reg3 : signal is "true"; + signal txphinitdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txphinitdone_reg1 : signal is "NO"; + attribute async_reg of txphinitdone_reg1 : signal is "true"; + signal txphinitdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txphinitdone_reg2 : signal is "NO"; + attribute async_reg of txphinitdone_reg2 : signal is "true"; + signal txphinitdone_reg3 : STD_LOGIC; + attribute SHIFT_EXTRACT of txphinitdone_reg3 : signal is "NO"; + attribute async_reg of txphinitdone_reg3 : signal is "true"; + signal \txsync_fsm.txsync_done_i_1__1_n_0\ : STD_LOGIC; + signal txsync_start_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsync_start_reg1 : signal is "NO"; + attribute async_reg of txsync_start_reg1 : signal is "true"; + signal txsync_start_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsync_start_reg2 : signal is "NO"; + attribute async_reg of txsync_start_reg2 : signal is "true"; + signal txsync_start_reg3 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsync_start_reg3 : signal is "NO"; + attribute async_reg of txsync_start_reg3 : signal is "true"; + signal txsyncdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsyncdone_reg1 : signal is "NO"; + attribute async_reg of txsyncdone_reg1 : signal is "true"; + signal txsyncdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsyncdone_reg2 : signal is "NO"; + attribute async_reg of txsyncdone_reg2 : signal is "true"; + signal txsyncdone_reg3 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsyncdone_reg3 : signal is "NO"; + attribute async_reg of txsyncdone_reg3 : signal is "true"; + attribute FSM_ENCODED_STATES : string; + attribute FSM_ENCODED_STATES of \FSM_onehot_txsync_fsm.fsm_tx_reg[1]\ : label is "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_txsync_fsm.fsm_tx_reg[2]\ : label is "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_txsync_fsm.fsm_tx_reg[3]\ : label is "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_txsync_fsm.fsm_tx_reg[4]\ : label is "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_txsync_fsm.fsm_tx_reg[5]\ : label is "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_txsync_fsm.fsm_tx_reg[6]\ : label is "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of gen3_reg1_reg : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of gen3_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of gen3_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of gen3_reg2_reg : label is std.standard.true; + attribute KEEP of gen3_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of gen3_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of mmcm_lock_reg1_reg : label is std.standard.true; + attribute KEEP of mmcm_lock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of mmcm_lock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of mmcm_lock_reg2_reg : label is std.standard.true; + attribute KEEP of mmcm_lock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of mmcm_lock_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_idle_reg1_reg : label is std.standard.true; + attribute KEEP of rate_idle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_idle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_idle_reg2_reg : label is std.standard.true; + attribute KEEP of rate_idle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_idle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxcdrlock_reg1_reg : label is std.standard.true; + attribute KEEP of rxcdrlock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxcdrlock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxcdrlock_reg2_reg : label is std.standard.true; + attribute KEEP of rxcdrlock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxcdrlock_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxdlysresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of rxdlysresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxdlysresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxdlysresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of rxdlysresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxdlysresetdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxelecidle_reg1_reg : label is std.standard.true; + attribute KEEP of rxelecidle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxelecidle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxelecidle_reg2_reg : label is std.standard.true; + attribute KEEP of rxelecidle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxelecidle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxphaligndone_m_reg1_reg : label is std.standard.true; + attribute KEEP of rxphaligndone_m_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxphaligndone_m_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxphaligndone_m_reg2_reg : label is std.standard.true; + attribute KEEP of rxphaligndone_m_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxphaligndone_m_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxphaligndone_s_reg1_reg : label is std.standard.true; + attribute KEEP of rxphaligndone_s_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxphaligndone_s_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxphaligndone_s_reg2_reg : label is std.standard.true; + attribute KEEP of rxphaligndone_s_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxphaligndone_s_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsync_donem_reg1_reg : label is std.standard.true; + attribute KEEP of rxsync_donem_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsync_donem_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsync_donem_reg2_reg : label is std.standard.true; + attribute KEEP of rxsync_donem_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsync_donem_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsync_start_reg1_reg : label is std.standard.true; + attribute KEEP of rxsync_start_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsync_start_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsync_start_reg2_reg : label is std.standard.true; + attribute KEEP of rxsync_start_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsync_start_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsyncdone_reg1_reg : label is std.standard.true; + attribute KEEP of rxsyncdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsyncdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsyncdone_reg2_reg : label is std.standard.true; + attribute KEEP of rxsyncdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsyncdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txdlysresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of txdlysresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txdlysresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txdlysresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of txdlysresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txdlysresetdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txdlysresetdone_reg3_reg : label is std.standard.true; + attribute KEEP of txdlysresetdone_reg3_reg : label is "yes"; + attribute SHIFT_EXTRACT of txdlysresetdone_reg3_reg : label is "NO"; + attribute ASYNC_REG_boolean of txphaligndone_reg1_reg : label is std.standard.true; + attribute KEEP of txphaligndone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txphaligndone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txphaligndone_reg2_reg : label is std.standard.true; + attribute KEEP of txphaligndone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txphaligndone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txphaligndone_reg3_reg : label is std.standard.true; + attribute KEEP of txphaligndone_reg3_reg : label is "yes"; + attribute SHIFT_EXTRACT of txphaligndone_reg3_reg : label is "NO"; + attribute ASYNC_REG_boolean of txphinitdone_reg1_reg : label is std.standard.true; + attribute KEEP of txphinitdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txphinitdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txphinitdone_reg2_reg : label is std.standard.true; + attribute KEEP of txphinitdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txphinitdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txphinitdone_reg3_reg : label is std.standard.true; + attribute KEEP of txphinitdone_reg3_reg : label is "yes"; + attribute SHIFT_EXTRACT of txphinitdone_reg3_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsync_start_reg1_reg : label is std.standard.true; + attribute KEEP of txsync_start_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsync_start_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsync_start_reg2_reg : label is std.standard.true; + attribute KEEP of txsync_start_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsync_start_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsync_start_reg3_reg : label is std.standard.true; + attribute KEEP of txsync_start_reg3_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsync_start_reg3_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsyncdone_reg1_reg : label is std.standard.true; + attribute KEEP of txsyncdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsyncdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsyncdone_reg2_reg : label is std.standard.true; + attribute KEEP of txsyncdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsyncdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsyncdone_reg3_reg : label is std.standard.true; + attribute KEEP of txsyncdone_reg3_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsyncdone_reg3_reg : label is "NO"; +begin + Q(2 downto 0) <= \^q\(2 downto 0); + RST_TXSYNC_DONE(0) <= \^rst_txsync_done\(0); +\FSM_onehot_txsync_fsm.fsm_tx[1]_i_1__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"FF1D" + ) + port map ( + I0 => \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__1_n_0\, + I1 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1]\, + I2 => txsync_start_reg2, + I3 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6]\, + O => \FSM_onehot_txsync_fsm.fsm_tx[1]_i_1__1_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFFFFFE" + ) + port map ( + I0 => \^q\(2), + I1 => \^q\(1), + I2 => \^q\(0), + I3 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6]\, + I4 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2]\, + O => \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__1_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[2]_i_1__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"F444" + ) + port map ( + I0 => mmcm_lock_reg2, + I1 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2]\, + I2 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1]\, + I3 => txsync_start_reg2, + O => \FSM_onehot_txsync_fsm.fsm_tx[2]_i_1__1_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[3]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFD0D0D0" + ) + port map ( + I0 => txdlysresetdone_reg2, + I1 => txdlysresetdone_reg3, + I2 => \^q\(0), + I3 => mmcm_lock_reg2, + I4 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2]\, + O => \FSM_onehot_txsync_fsm.fsm_tx[3]_i_1__1_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[4]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"44F44444" + ) + port map ( + I0 => \FSM_onehot_txsync_fsm.fsm_tx[5]_i_3__0_n_0\, + I1 => \^q\(1), + I2 => txdlysresetdone_reg2, + I3 => txdlysresetdone_reg3, + I4 => \^q\(0), + O => \FSM_onehot_txsync_fsm.fsm_tx[4]_i_1__1_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[5]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFB000B000B000" + ) + port map ( + I0 => txphaligndone_reg3, + I1 => txphaligndone_reg2, + I2 => user_active_lane_2, + I3 => \^q\(2), + I4 => \FSM_onehot_txsync_fsm.fsm_tx[5]_i_3__0_n_0\, + I5 => \^q\(1), + O => \FSM_onehot_txsync_fsm.fsm_tx[5]_i_1__1_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[5]_i_3__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"F444" + ) + port map ( + I0 => txphinitdone_reg3, + I1 => txphinitdone_reg2, + I2 => \out\, + I3 => \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0\, + O => \FSM_onehot_txsync_fsm.fsm_tx[5]_i_3__0_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[6]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"8080AA80" + ) + port map ( + I0 => \^q\(2), + I1 => \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0\, + I2 => \out\, + I3 => txphaligndone_reg2, + I4 => txphaligndone_reg3, + O => \FSM_onehot_txsync_fsm.fsm_tx[6]_i_1__1_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx_reg[1]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_txsync_fsm.fsm_tx[1]_i_1__1_n_0\, + Q => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1]\, + S => RST_CPLLRESET + ); +\FSM_onehot_txsync_fsm.fsm_tx_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_txsync_fsm.fsm_tx[2]_i_1__1_n_0\, + Q => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\FSM_onehot_txsync_fsm.fsm_tx_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_txsync_fsm.fsm_tx[3]_i_1__1_n_0\, + Q => \^q\(0), + R => RST_CPLLRESET + ); +\FSM_onehot_txsync_fsm.fsm_tx_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_txsync_fsm.fsm_tx[4]_i_1__1_n_0\, + Q => \^q\(1), + R => RST_CPLLRESET + ); +\FSM_onehot_txsync_fsm.fsm_tx_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_txsync_fsm.fsm_tx[5]_i_1__1_n_0\, + Q => \^q\(2), + R => RST_CPLLRESET + ); +\FSM_onehot_txsync_fsm.fsm_tx_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_txsync_fsm.fsm_tx[6]_i_1__1_n_0\, + Q => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6]\, + R => RST_CPLLRESET + ); +gen3_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_GEN3, + Q => gen3_reg1, + R => RST_CPLLRESET + ); +gen3_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => gen3_reg1, + Q => gen3_reg2, + R => RST_CPLLRESET + ); +mmcm_lock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_mmcm_lock_in, + Q => mmcm_lock_reg1, + R => RST_CPLLRESET + ); +mmcm_lock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => mmcm_lock_reg1, + Q => mmcm_lock_reg2, + R => RST_CPLLRESET + ); +rate_idle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_RATE_IDLE, + Q => rate_idle_reg1, + R => RST_CPLLRESET + ); +rate_idle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rate_idle_reg1, + Q => rate_idle_reg2, + R => RST_CPLLRESET + ); +rxcdrlock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_RXCDRLOCK, + Q => rxcdrlock_reg1, + R => RST_CPLLRESET + ); +rxcdrlock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxcdrlock_reg1, + Q => rxcdrlock_reg2, + R => RST_CPLLRESET + ); +rxdlysresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_RXDLYSRESETDONE, + Q => rxdlysresetdone_reg1, + R => RST_CPLLRESET + ); +rxdlysresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxdlysresetdone_reg1, + Q => rxdlysresetdone_reg2, + R => RST_CPLLRESET + ); +rxelecidle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => gt_rx_elec_idle_wire_filter(0), + Q => rxelecidle_reg1, + R => RST_CPLLRESET + ); +rxelecidle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxelecidle_reg1, + Q => rxelecidle_reg2, + R => RST_CPLLRESET + ); +rxphaligndone_m_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_RXPHALIGNDONE_M, + Q => rxphaligndone_m_reg1, + R => RST_CPLLRESET + ); +rxphaligndone_m_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxphaligndone_m_reg1, + Q => rxphaligndone_m_reg2, + R => RST_CPLLRESET + ); +rxphaligndone_s_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_RXPHALIGNDONE_S, + Q => rxphaligndone_s_reg1, + R => RST_CPLLRESET + ); +rxphaligndone_s_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxphaligndone_s_reg1, + Q => rxphaligndone_s_reg2, + R => RST_CPLLRESET + ); +rxsync_donem_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxsync_donem_reg1, + R => RST_CPLLRESET + ); +rxsync_donem_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxsync_donem_reg1, + Q => rxsync_donem_reg2, + R => RST_CPLLRESET + ); +rxsync_start_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_RXSYNC_START, + Q => rxsync_start_reg1, + R => RST_CPLLRESET + ); +rxsync_start_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxsync_start_reg1, + Q => rxsync_start_reg2, + R => RST_CPLLRESET + ); +rxsyncdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxsyncdone_reg1, + R => RST_CPLLRESET + ); +rxsyncdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxsyncdone_reg1, + Q => rxsyncdone_reg2, + R => RST_CPLLRESET + ); +txdlysresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_TXDLYSRESETDONE, + Q => txdlysresetdone_reg1, + R => RST_CPLLRESET + ); +txdlysresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txdlysresetdone_reg1, + Q => txdlysresetdone_reg2, + R => RST_CPLLRESET + ); +txdlysresetdone_reg3_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txdlysresetdone_reg2, + Q => txdlysresetdone_reg3, + R => RST_CPLLRESET + ); +txphaligndone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_TXPHALIGNDONE, + Q => txphaligndone_reg1, + R => RST_CPLLRESET + ); +txphaligndone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txphaligndone_reg1, + Q => txphaligndone_reg2, + R => RST_CPLLRESET + ); +txphaligndone_reg3_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txphaligndone_reg2, + Q => txphaligndone_reg3, + R => RST_CPLLRESET + ); +txphinitdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_TXPHINITDONE, + Q => txphinitdone_reg1, + R => RST_CPLLRESET + ); +txphinitdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txphinitdone_reg1, + Q => txphinitdone_reg2, + R => RST_CPLLRESET + ); +txphinitdone_reg3_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txphinitdone_reg2, + Q => txphinitdone_reg3, + R => RST_CPLLRESET + ); +\txsync_fsm.txsync_done_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"ABAAA8AA" + ) + port map ( + I0 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6]\, + I1 => \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__1_n_0\, + I2 => txsync_start_reg2, + I3 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1]\, + I4 => \^rst_txsync_done\(0), + O => \txsync_fsm.txsync_done_i_1__1_n_0\ + ); +\txsync_fsm.txsync_done_reg\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txsync_fsm.txsync_done_i_1__1_n_0\, + Q => \^rst_txsync_done\(0), + R => RST_CPLLRESET + ); +txsync_start_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_TXSYNC_START, + Q => txsync_start_reg1, + R => RST_CPLLRESET + ); +txsync_start_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txsync_start_reg1, + Q => txsync_start_reg2, + R => RST_CPLLRESET + ); +txsync_start_reg3_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txsync_start_reg2, + Q => txsync_start_reg3, + R => RST_CPLLRESET + ); +txsyncdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txsyncdone_reg1, + R => RST_CPLLRESET + ); +txsyncdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txsyncdone_reg1, + Q => txsyncdone_reg2, + R => RST_CPLLRESET + ); +txsyncdone_reg3_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txsyncdone_reg2, + Q => txsyncdone_reg3, + R => RST_CPLLRESET + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pipe_sync_53 is + port ( + Q : out STD_LOGIC_VECTOR ( 2 downto 0 ); + RST_TXSYNC_DONE : out STD_LOGIC_VECTOR ( 0 to 0 ); + \out\ : in STD_LOGIC; + \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0\ : in STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + SYNC_TXPHALIGNDONE : in STD_LOGIC; + SYNC_TXSYNC_START : in STD_LOGIC; + pipe_mmcm_lock_in : in STD_LOGIC; + SYNC_TXDLYSRESETDONE : in STD_LOGIC; + SYNC_TXPHINITDONE : in STD_LOGIC; + SYNC_GEN3 : in STD_LOGIC; + SYNC_RATE_IDLE : in STD_LOGIC; + gt_rx_elec_idle_wire_filter : in STD_LOGIC_VECTOR ( 0 to 0 ); + SYNC_RXCDRLOCK : in STD_LOGIC; + SYNC_RXSYNC_START : in STD_LOGIC; + SYNC_RXDLYSRESETDONE : in STD_LOGIC; + SYNC_RXPHALIGNDONE_M : in STD_LOGIC; + SYNC_RXPHALIGNDONE_S : in STD_LOGIC; + user_active_lane_3 : in STD_LOGIC + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pipe_sync_53 : entity is "pcie_7x_0_pipe_sync"; +end pcie_7x_0_pcie_7x_0_pipe_sync_53; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pipe_sync_53 is + signal \FSM_onehot_txsync_fsm.fsm_tx[1]_i_1__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[2]_i_1__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[3]_i_1__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[4]_i_1__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[5]_i_1__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[5]_i_3__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx[6]_i_1__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1]\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2]\ : STD_LOGIC; + signal \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6]\ : STD_LOGIC; + signal \^q\ : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal \^rst_txsync_done\ : STD_LOGIC_VECTOR ( 0 to 0 ); + signal gen3_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of gen3_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of gen3_reg1 : signal is "true"; + signal gen3_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of gen3_reg2 : signal is "NO"; + attribute async_reg of gen3_reg2 : signal is "true"; + signal mmcm_lock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of mmcm_lock_reg1 : signal is "NO"; + attribute async_reg of mmcm_lock_reg1 : signal is "true"; + signal mmcm_lock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of mmcm_lock_reg2 : signal is "NO"; + attribute async_reg of mmcm_lock_reg2 : signal is "true"; + signal rate_idle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_idle_reg1 : signal is "NO"; + attribute async_reg of rate_idle_reg1 : signal is "true"; + signal rate_idle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_idle_reg2 : signal is "NO"; + attribute async_reg of rate_idle_reg2 : signal is "true"; + signal rxcdrlock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxcdrlock_reg1 : signal is "NO"; + attribute async_reg of rxcdrlock_reg1 : signal is "true"; + signal rxcdrlock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxcdrlock_reg2 : signal is "NO"; + attribute async_reg of rxcdrlock_reg2 : signal is "true"; + signal rxdlysresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxdlysresetdone_reg1 : signal is "NO"; + attribute async_reg of rxdlysresetdone_reg1 : signal is "true"; + signal rxdlysresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxdlysresetdone_reg2 : signal is "NO"; + attribute async_reg of rxdlysresetdone_reg2 : signal is "true"; + signal rxelecidle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxelecidle_reg1 : signal is "NO"; + attribute async_reg of rxelecidle_reg1 : signal is "true"; + signal rxelecidle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxelecidle_reg2 : signal is "NO"; + attribute async_reg of rxelecidle_reg2 : signal is "true"; + signal rxphaligndone_m_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxphaligndone_m_reg1 : signal is "NO"; + attribute async_reg of rxphaligndone_m_reg1 : signal is "true"; + signal rxphaligndone_m_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxphaligndone_m_reg2 : signal is "NO"; + attribute async_reg of rxphaligndone_m_reg2 : signal is "true"; + signal rxphaligndone_s_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxphaligndone_s_reg1 : signal is "NO"; + attribute async_reg of rxphaligndone_s_reg1 : signal is "true"; + signal rxphaligndone_s_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxphaligndone_s_reg2 : signal is "NO"; + attribute async_reg of rxphaligndone_s_reg2 : signal is "true"; + signal rxsync_donem_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsync_donem_reg1 : signal is "NO"; + attribute async_reg of rxsync_donem_reg1 : signal is "true"; + signal rxsync_donem_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsync_donem_reg2 : signal is "NO"; + attribute async_reg of rxsync_donem_reg2 : signal is "true"; + signal rxsync_start_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsync_start_reg1 : signal is "NO"; + attribute async_reg of rxsync_start_reg1 : signal is "true"; + signal rxsync_start_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsync_start_reg2 : signal is "NO"; + attribute async_reg of rxsync_start_reg2 : signal is "true"; + signal rxsyncdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsyncdone_reg1 : signal is "NO"; + attribute async_reg of rxsyncdone_reg1 : signal is "true"; + signal rxsyncdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxsyncdone_reg2 : signal is "NO"; + attribute async_reg of rxsyncdone_reg2 : signal is "true"; + signal txdlysresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txdlysresetdone_reg1 : signal is "NO"; + attribute async_reg of txdlysresetdone_reg1 : signal is "true"; + signal txdlysresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txdlysresetdone_reg2 : signal is "NO"; + attribute async_reg of txdlysresetdone_reg2 : signal is "true"; + signal txdlysresetdone_reg3 : STD_LOGIC; + attribute SHIFT_EXTRACT of txdlysresetdone_reg3 : signal is "NO"; + attribute async_reg of txdlysresetdone_reg3 : signal is "true"; + signal txphaligndone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txphaligndone_reg1 : signal is "NO"; + attribute async_reg of txphaligndone_reg1 : signal is "true"; + signal txphaligndone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txphaligndone_reg2 : signal is "NO"; + attribute async_reg of txphaligndone_reg2 : signal is "true"; + signal txphaligndone_reg3 : STD_LOGIC; + attribute SHIFT_EXTRACT of txphaligndone_reg3 : signal is "NO"; + attribute async_reg of txphaligndone_reg3 : signal is "true"; + signal txphinitdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txphinitdone_reg1 : signal is "NO"; + attribute async_reg of txphinitdone_reg1 : signal is "true"; + signal txphinitdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txphinitdone_reg2 : signal is "NO"; + attribute async_reg of txphinitdone_reg2 : signal is "true"; + signal txphinitdone_reg3 : STD_LOGIC; + attribute SHIFT_EXTRACT of txphinitdone_reg3 : signal is "NO"; + attribute async_reg of txphinitdone_reg3 : signal is "true"; + signal \txsync_fsm.txsync_done_i_1__2_n_0\ : STD_LOGIC; + signal txsync_start_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsync_start_reg1 : signal is "NO"; + attribute async_reg of txsync_start_reg1 : signal is "true"; + signal txsync_start_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsync_start_reg2 : signal is "NO"; + attribute async_reg of txsync_start_reg2 : signal is "true"; + signal txsync_start_reg3 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsync_start_reg3 : signal is "NO"; + attribute async_reg of txsync_start_reg3 : signal is "true"; + signal txsyncdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsyncdone_reg1 : signal is "NO"; + attribute async_reg of txsyncdone_reg1 : signal is "true"; + signal txsyncdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsyncdone_reg2 : signal is "NO"; + attribute async_reg of txsyncdone_reg2 : signal is "true"; + signal txsyncdone_reg3 : STD_LOGIC; + attribute SHIFT_EXTRACT of txsyncdone_reg3 : signal is "NO"; + attribute async_reg of txsyncdone_reg3 : signal is "true"; + attribute FSM_ENCODED_STATES : string; + attribute FSM_ENCODED_STATES of \FSM_onehot_txsync_fsm.fsm_tx_reg[1]\ : label is "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_txsync_fsm.fsm_tx_reg[2]\ : label is "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_txsync_fsm.fsm_tx_reg[3]\ : label is "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_txsync_fsm.fsm_tx_reg[4]\ : label is "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_txsync_fsm.fsm_tx_reg[5]\ : label is "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_txsync_fsm.fsm_tx_reg[6]\ : label is "FSM_MMCM_LOCK:0000100,FSM_TXSYNC_START:0001000,FSM_TXPHINITDONE:0010000,FSM_TXSYNC_DONE1:0100000,FSM_TXSYNC_DONE2:1000000,FSM_TXSYNC_IDLE:0000010,iSTATE:0000001"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of gen3_reg1_reg : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of gen3_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of gen3_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of gen3_reg2_reg : label is std.standard.true; + attribute KEEP of gen3_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of gen3_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of mmcm_lock_reg1_reg : label is std.standard.true; + attribute KEEP of mmcm_lock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of mmcm_lock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of mmcm_lock_reg2_reg : label is std.standard.true; + attribute KEEP of mmcm_lock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of mmcm_lock_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_idle_reg1_reg : label is std.standard.true; + attribute KEEP of rate_idle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_idle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_idle_reg2_reg : label is std.standard.true; + attribute KEEP of rate_idle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_idle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxcdrlock_reg1_reg : label is std.standard.true; + attribute KEEP of rxcdrlock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxcdrlock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxcdrlock_reg2_reg : label is std.standard.true; + attribute KEEP of rxcdrlock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxcdrlock_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxdlysresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of rxdlysresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxdlysresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxdlysresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of rxdlysresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxdlysresetdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxelecidle_reg1_reg : label is std.standard.true; + attribute KEEP of rxelecidle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxelecidle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxelecidle_reg2_reg : label is std.standard.true; + attribute KEEP of rxelecidle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxelecidle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxphaligndone_m_reg1_reg : label is std.standard.true; + attribute KEEP of rxphaligndone_m_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxphaligndone_m_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxphaligndone_m_reg2_reg : label is std.standard.true; + attribute KEEP of rxphaligndone_m_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxphaligndone_m_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxphaligndone_s_reg1_reg : label is std.standard.true; + attribute KEEP of rxphaligndone_s_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxphaligndone_s_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxphaligndone_s_reg2_reg : label is std.standard.true; + attribute KEEP of rxphaligndone_s_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxphaligndone_s_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsync_donem_reg1_reg : label is std.standard.true; + attribute KEEP of rxsync_donem_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsync_donem_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsync_donem_reg2_reg : label is std.standard.true; + attribute KEEP of rxsync_donem_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsync_donem_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsync_start_reg1_reg : label is std.standard.true; + attribute KEEP of rxsync_start_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsync_start_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsync_start_reg2_reg : label is std.standard.true; + attribute KEEP of rxsync_start_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsync_start_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsyncdone_reg1_reg : label is std.standard.true; + attribute KEEP of rxsyncdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsyncdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxsyncdone_reg2_reg : label is std.standard.true; + attribute KEEP of rxsyncdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxsyncdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txdlysresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of txdlysresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txdlysresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txdlysresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of txdlysresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txdlysresetdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txdlysresetdone_reg3_reg : label is std.standard.true; + attribute KEEP of txdlysresetdone_reg3_reg : label is "yes"; + attribute SHIFT_EXTRACT of txdlysresetdone_reg3_reg : label is "NO"; + attribute ASYNC_REG_boolean of txphaligndone_reg1_reg : label is std.standard.true; + attribute KEEP of txphaligndone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txphaligndone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txphaligndone_reg2_reg : label is std.standard.true; + attribute KEEP of txphaligndone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txphaligndone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txphaligndone_reg3_reg : label is std.standard.true; + attribute KEEP of txphaligndone_reg3_reg : label is "yes"; + attribute SHIFT_EXTRACT of txphaligndone_reg3_reg : label is "NO"; + attribute ASYNC_REG_boolean of txphinitdone_reg1_reg : label is std.standard.true; + attribute KEEP of txphinitdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txphinitdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txphinitdone_reg2_reg : label is std.standard.true; + attribute KEEP of txphinitdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txphinitdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txphinitdone_reg3_reg : label is std.standard.true; + attribute KEEP of txphinitdone_reg3_reg : label is "yes"; + attribute SHIFT_EXTRACT of txphinitdone_reg3_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsync_start_reg1_reg : label is std.standard.true; + attribute KEEP of txsync_start_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsync_start_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsync_start_reg2_reg : label is std.standard.true; + attribute KEEP of txsync_start_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsync_start_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsync_start_reg3_reg : label is std.standard.true; + attribute KEEP of txsync_start_reg3_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsync_start_reg3_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsyncdone_reg1_reg : label is std.standard.true; + attribute KEEP of txsyncdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsyncdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsyncdone_reg2_reg : label is std.standard.true; + attribute KEEP of txsyncdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsyncdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txsyncdone_reg3_reg : label is std.standard.true; + attribute KEEP of txsyncdone_reg3_reg : label is "yes"; + attribute SHIFT_EXTRACT of txsyncdone_reg3_reg : label is "NO"; +begin + Q(2 downto 0) <= \^q\(2 downto 0); + RST_TXSYNC_DONE(0) <= \^rst_txsync_done\(0); +\FSM_onehot_txsync_fsm.fsm_tx[1]_i_1__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"FF1D" + ) + port map ( + I0 => \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__2_n_0\, + I1 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1]\, + I2 => txsync_start_reg2, + I3 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6]\, + O => \FSM_onehot_txsync_fsm.fsm_tx[1]_i_1__2_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFFFFFE" + ) + port map ( + I0 => \^q\(2), + I1 => \^q\(1), + I2 => \^q\(0), + I3 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6]\, + I4 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2]\, + O => \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__2_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[2]_i_1__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"F444" + ) + port map ( + I0 => mmcm_lock_reg2, + I1 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2]\, + I2 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1]\, + I3 => txsync_start_reg2, + O => \FSM_onehot_txsync_fsm.fsm_tx[2]_i_1__2_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[3]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFD0D0D0" + ) + port map ( + I0 => txdlysresetdone_reg2, + I1 => txdlysresetdone_reg3, + I2 => \^q\(0), + I3 => mmcm_lock_reg2, + I4 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2]\, + O => \FSM_onehot_txsync_fsm.fsm_tx[3]_i_1__2_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[4]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"44F44444" + ) + port map ( + I0 => \FSM_onehot_txsync_fsm.fsm_tx[5]_i_3__1_n_0\, + I1 => \^q\(1), + I2 => txdlysresetdone_reg2, + I3 => txdlysresetdone_reg3, + I4 => \^q\(0), + O => \FSM_onehot_txsync_fsm.fsm_tx[4]_i_1__2_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[5]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFB000B000B000" + ) + port map ( + I0 => txphaligndone_reg3, + I1 => txphaligndone_reg2, + I2 => user_active_lane_3, + I3 => \^q\(2), + I4 => \FSM_onehot_txsync_fsm.fsm_tx[5]_i_3__1_n_0\, + I5 => \^q\(1), + O => \FSM_onehot_txsync_fsm.fsm_tx[5]_i_1__2_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[5]_i_3__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"F444" + ) + port map ( + I0 => txphinitdone_reg3, + I1 => txphinitdone_reg2, + I2 => \out\, + I3 => \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0\, + O => \FSM_onehot_txsync_fsm.fsm_tx[5]_i_3__1_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx[6]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"8080AA80" + ) + port map ( + I0 => \^q\(2), + I1 => \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0\, + I2 => \out\, + I3 => txphaligndone_reg2, + I4 => txphaligndone_reg3, + O => \FSM_onehot_txsync_fsm.fsm_tx[6]_i_1__2_n_0\ + ); +\FSM_onehot_txsync_fsm.fsm_tx_reg[1]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_txsync_fsm.fsm_tx[1]_i_1__2_n_0\, + Q => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1]\, + S => RST_CPLLRESET + ); +\FSM_onehot_txsync_fsm.fsm_tx_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_txsync_fsm.fsm_tx[2]_i_1__2_n_0\, + Q => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\FSM_onehot_txsync_fsm.fsm_tx_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_txsync_fsm.fsm_tx[3]_i_1__2_n_0\, + Q => \^q\(0), + R => RST_CPLLRESET + ); +\FSM_onehot_txsync_fsm.fsm_tx_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_txsync_fsm.fsm_tx[4]_i_1__2_n_0\, + Q => \^q\(1), + R => RST_CPLLRESET + ); +\FSM_onehot_txsync_fsm.fsm_tx_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_txsync_fsm.fsm_tx[5]_i_1__2_n_0\, + Q => \^q\(2), + R => RST_CPLLRESET + ); +\FSM_onehot_txsync_fsm.fsm_tx_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_txsync_fsm.fsm_tx[6]_i_1__2_n_0\, + Q => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6]\, + R => RST_CPLLRESET + ); +gen3_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_GEN3, + Q => gen3_reg1, + R => RST_CPLLRESET + ); +gen3_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => gen3_reg1, + Q => gen3_reg2, + R => RST_CPLLRESET + ); +mmcm_lock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_mmcm_lock_in, + Q => mmcm_lock_reg1, + R => RST_CPLLRESET + ); +mmcm_lock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => mmcm_lock_reg1, + Q => mmcm_lock_reg2, + R => RST_CPLLRESET + ); +rate_idle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_RATE_IDLE, + Q => rate_idle_reg1, + R => RST_CPLLRESET + ); +rate_idle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rate_idle_reg1, + Q => rate_idle_reg2, + R => RST_CPLLRESET + ); +rxcdrlock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_RXCDRLOCK, + Q => rxcdrlock_reg1, + R => RST_CPLLRESET + ); +rxcdrlock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxcdrlock_reg1, + Q => rxcdrlock_reg2, + R => RST_CPLLRESET + ); +rxdlysresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_RXDLYSRESETDONE, + Q => rxdlysresetdone_reg1, + R => RST_CPLLRESET + ); +rxdlysresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxdlysresetdone_reg1, + Q => rxdlysresetdone_reg2, + R => RST_CPLLRESET + ); +rxelecidle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => gt_rx_elec_idle_wire_filter(0), + Q => rxelecidle_reg1, + R => RST_CPLLRESET + ); +rxelecidle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxelecidle_reg1, + Q => rxelecidle_reg2, + R => RST_CPLLRESET + ); +rxphaligndone_m_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_RXPHALIGNDONE_M, + Q => rxphaligndone_m_reg1, + R => RST_CPLLRESET + ); +rxphaligndone_m_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxphaligndone_m_reg1, + Q => rxphaligndone_m_reg2, + R => RST_CPLLRESET + ); +rxphaligndone_s_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_RXPHALIGNDONE_S, + Q => rxphaligndone_s_reg1, + R => RST_CPLLRESET + ); +rxphaligndone_s_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxphaligndone_s_reg1, + Q => rxphaligndone_s_reg2, + R => RST_CPLLRESET + ); +rxsync_donem_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxsync_donem_reg1, + R => RST_CPLLRESET + ); +rxsync_donem_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxsync_donem_reg1, + Q => rxsync_donem_reg2, + R => RST_CPLLRESET + ); +rxsync_start_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_RXSYNC_START, + Q => rxsync_start_reg1, + R => RST_CPLLRESET + ); +rxsync_start_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxsync_start_reg1, + Q => rxsync_start_reg2, + R => RST_CPLLRESET + ); +rxsyncdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxsyncdone_reg1, + R => RST_CPLLRESET + ); +rxsyncdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxsyncdone_reg1, + Q => rxsyncdone_reg2, + R => RST_CPLLRESET + ); +txdlysresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_TXDLYSRESETDONE, + Q => txdlysresetdone_reg1, + R => RST_CPLLRESET + ); +txdlysresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txdlysresetdone_reg1, + Q => txdlysresetdone_reg2, + R => RST_CPLLRESET + ); +txdlysresetdone_reg3_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txdlysresetdone_reg2, + Q => txdlysresetdone_reg3, + R => RST_CPLLRESET + ); +txphaligndone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_TXPHALIGNDONE, + Q => txphaligndone_reg1, + R => RST_CPLLRESET + ); +txphaligndone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txphaligndone_reg1, + Q => txphaligndone_reg2, + R => RST_CPLLRESET + ); +txphaligndone_reg3_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txphaligndone_reg2, + Q => txphaligndone_reg3, + R => RST_CPLLRESET + ); +txphinitdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_TXPHINITDONE, + Q => txphinitdone_reg1, + R => RST_CPLLRESET + ); +txphinitdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txphinitdone_reg1, + Q => txphinitdone_reg2, + R => RST_CPLLRESET + ); +txphinitdone_reg3_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txphinitdone_reg2, + Q => txphinitdone_reg3, + R => RST_CPLLRESET + ); +\txsync_fsm.txsync_done_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"ABAAA8AA" + ) + port map ( + I0 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[6]\, + I1 => \FSM_onehot_txsync_fsm.fsm_tx[1]_i_2__2_n_0\, + I2 => txsync_start_reg2, + I3 => \FSM_onehot_txsync_fsm.fsm_tx_reg_n_0_[1]\, + I4 => \^rst_txsync_done\(0), + O => \txsync_fsm.txsync_done_i_1__2_n_0\ + ); +\txsync_fsm.txsync_done_reg\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txsync_fsm.txsync_done_i_1__2_n_0\, + Q => \^rst_txsync_done\(0), + R => RST_CPLLRESET + ); +txsync_start_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => SYNC_TXSYNC_START, + Q => txsync_start_reg1, + R => RST_CPLLRESET + ); +txsync_start_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txsync_start_reg1, + Q => txsync_start_reg2, + R => RST_CPLLRESET + ); +txsync_start_reg3_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txsync_start_reg2, + Q => txsync_start_reg3, + R => RST_CPLLRESET + ); +txsyncdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txsyncdone_reg1, + R => RST_CPLLRESET + ); +txsyncdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txsyncdone_reg1, + Q => txsyncdone_reg2, + R => RST_CPLLRESET + ); +txsyncdone_reg3_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txsyncdone_reg2, + Q => txsyncdone_reg3, + R => RST_CPLLRESET + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pipe_user is + port ( + gt_rxvalid_q_reg : out STD_LOGIC; + \out\ : out STD_LOGIC; + SYNC_TXPHALIGNDONE : out STD_LOGIC; + txelecidle_reg2_reg_0 : out STD_LOGIC; + txcompliance_reg2_reg_0 : out STD_LOGIC; + SYNC_TXPHINITDONE : out STD_LOGIC; + txelecidle_reg2_reg_1 : out STD_LOGIC; + USER_OOBCLK : out STD_LOGIC; + RST_RXCDRLOCK : out STD_LOGIC_VECTOR ( 0 to 0 ); + gt_rx_phy_status_wire_filter : out STD_LOGIC_VECTOR ( 0 to 0 ); + \converge_cnt_reg[15]_0\ : out STD_LOGIC; + \converge_cnt_reg[1]_0\ : out STD_LOGIC; + \converge_cnt_reg[6]_0\ : out STD_LOGIC; + RST_RESETDONE : out STD_LOGIC_VECTOR ( 0 to 0 ); + user_active_lane_0 : out STD_LOGIC; + converge_gen3_reg_0 : out STD_LOGIC; + gt_rx_elec_idle_wire_filter : in STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_rx0_valid_gt : in STD_LOGIC; + gt_rxvalid_0 : in STD_LOGIC; + txphaligndone_reg1_reg : in STD_LOGIC; + user_active_lane_1 : in STD_LOGIC; + txphaligndone_reg1_reg_0 : in STD_LOGIC; + txphaligndone_reg1_reg_1 : in STD_LOGIC; + txphinitdone_reg1_reg : in STD_LOGIC; + txphinitdone_reg1_reg_0 : in STD_LOGIC; + txphinitdone_reg1_reg_1 : in STD_LOGIC; + \FSM_onehot_txsync_fsm.fsm_tx_reg[5]\ : in STD_LOGIC; + \FSM_onehot_txsync_fsm.fsm_tx_reg[5]_0\ : in STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC; + pipe_pclk_sel_out : in STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_pclk_in : in STD_LOGIC; + pipe_oobclk_in : in STD_LOGIC; + USER_TXRESETDONE : in STD_LOGIC; + USER_RXRESETDONE : in STD_LOGIC; + PIPE_TXELECIDLE : in STD_LOGIC_VECTOR ( 0 to 0 ); + PIPE_TXCOMPLIANCE : in STD_LOGIC_VECTOR ( 0 to 0 ); + gt_rxcdrlock_0 : in STD_LOGIC; + RST_RXUSRCLK_RESET : in STD_LOGIC; + pipe_rxusrclk_in : in STD_LOGIC; + PIPE_RXSTATUS : in STD_LOGIC_VECTOR ( 0 to 0 ); + RST_IDLE : in STD_LOGIC; + USER_RATE_IDLE : in STD_LOGIC; + USER_RATE_RXSYNC : in STD_LOGIC; + USER_RATE_DONE : in STD_LOGIC; + USER_RATE_GEN3 : in STD_LOGIC; + USER_RXEQ_ADAPT_DONE : in STD_LOGIC; + USER_RESETOVRD_START : in STD_LOGIC; + RST_PHYSTATUS : in STD_LOGIC_VECTOR ( 0 to 0 ) + ); +end pcie_7x_0_pcie_7x_0_pipe_user; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pipe_user is + signal \converge_cnt[0]_i_1__0_n_0\ : STD_LOGIC; + signal \converge_cnt[0]_i_4_n_0\ : STD_LOGIC; + signal \converge_cnt[0]_i_5_n_0\ : STD_LOGIC; + signal \converge_cnt[0]_i_6_n_0\ : STD_LOGIC; + signal converge_cnt_reg : STD_LOGIC_VECTOR ( 21 downto 0 ); + signal \converge_cnt_reg[0]_i_3_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3_n_4\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3_n_5\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3_n_6\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3_n_7\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1_n_4\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1_n_5\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1_n_6\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1_n_7\ : STD_LOGIC; + signal \^converge_cnt_reg[15]_0\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1_n_4\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1_n_5\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1_n_6\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1_n_7\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_1_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_1_n_6\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_1_n_7\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1_n_4\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1_n_5\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1_n_6\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1_n_7\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1_n_4\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1_n_5\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1_n_6\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1_n_7\ : STD_LOGIC; + signal converge_gen3_i_1_n_0 : STD_LOGIC; + signal \^converge_gen3_reg_0\ : STD_LOGIC; + signal gt_rxvalid_q_i_4_n_0 : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_i_58_n_0\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_i_59_n_0\ : STD_LOGIC; + signal oobclk_cnt : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal \oobclk_div.oobclk_i_1_n_0\ : STD_LOGIC; + signal \p_0_in__0\ : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal \p_0_in__0__0\ : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal \p_1_in__0\ : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pclk_sel_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of pclk_sel_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of pclk_sel_reg1 : signal is "true"; + signal pclk_sel_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of pclk_sel_reg2 : signal is "NO"; + attribute async_reg of pclk_sel_reg2 : signal is "true"; + signal rate_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_done_reg1 : signal is "NO"; + attribute async_reg of rate_done_reg1 : signal is "true"; + signal rate_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_done_reg2 : signal is "NO"; + attribute async_reg of rate_done_reg2 : signal is "true"; + signal rate_gen3_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_gen3_reg1 : signal is "NO"; + attribute async_reg of rate_gen3_reg1 : signal is "true"; + signal rate_gen3_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_gen3_reg2 : signal is "NO"; + attribute async_reg of rate_gen3_reg2 : signal is "true"; + signal rate_idle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_idle_reg1 : signal is "NO"; + attribute async_reg of rate_idle_reg1 : signal is "true"; + signal rate_idle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_idle_reg2 : signal is "NO"; + attribute async_reg of rate_idle_reg2 : signal is "true"; + signal rate_rxsync_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_rxsync_reg1 : signal is "NO"; + attribute async_reg of rate_rxsync_reg1 : signal is "true"; + signal rate_rxsync_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_rxsync_reg2 : signal is "NO"; + attribute async_reg of rate_rxsync_reg2 : signal is "true"; + signal resetovrd_start_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of resetovrd_start_reg1 : signal is "NO"; + attribute async_reg of resetovrd_start_reg1 : signal is "true"; + signal resetovrd_start_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of resetovrd_start_reg2 : signal is "NO"; + attribute async_reg of resetovrd_start_reg2 : signal is "true"; + signal rst_idle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rst_idle_reg1 : signal is "NO"; + attribute async_reg of rst_idle_reg1 : signal is "true"; + signal rst_idle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rst_idle_reg2 : signal is "NO"; + attribute async_reg of rst_idle_reg2 : signal is "true"; + signal rxcdrlock_cnt_reg : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal rxcdrlock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxcdrlock_reg1 : signal is "NO"; + attribute async_reg of rxcdrlock_reg1 : signal is "true"; + signal rxcdrlock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxcdrlock_reg2 : signal is "NO"; + attribute async_reg of rxcdrlock_reg2 : signal is "true"; + signal rxeq_adapt_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxeq_adapt_done_reg1 : signal is "NO"; + attribute async_reg of rxeq_adapt_done_reg1 : signal is "true"; + signal rxeq_adapt_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxeq_adapt_done_reg2 : signal is "NO"; + attribute async_reg of rxeq_adapt_done_reg2 : signal is "true"; + signal rxresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxresetdone_reg1 : signal is "NO"; + attribute async_reg of rxresetdone_reg1 : signal is "true"; + signal rxresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxresetdone_reg2 : signal is "NO"; + attribute async_reg of rxresetdone_reg2 : signal is "true"; + signal rxstatus_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxstatus_reg1 : signal is "NO"; + attribute async_reg of rxstatus_reg1 : signal is "true"; + signal rxstatus_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxstatus_reg2 : signal is "NO"; + attribute async_reg of rxstatus_reg2 : signal is "true"; + signal rxvalid_cnt_reg : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal rxvalid_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxvalid_reg1 : signal is "NO"; + attribute async_reg of rxvalid_reg1 : signal is "true"; + signal rxvalid_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxvalid_reg2 : signal is "NO"; + attribute async_reg of rxvalid_reg2 : signal is "true"; + signal sel : STD_LOGIC; + signal txcompliance_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txcompliance_reg1 : signal is "NO"; + attribute async_reg of txcompliance_reg1 : signal is "true"; + signal txcompliance_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txcompliance_reg2 : signal is "NO"; + attribute async_reg of txcompliance_reg2 : signal is "true"; + signal txelecidle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txelecidle_reg1 : signal is "NO"; + attribute async_reg of txelecidle_reg1 : signal is "true"; + signal txelecidle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txelecidle_reg2 : signal is "NO"; + attribute async_reg of txelecidle_reg2 : signal is "true"; + signal txresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txresetdone_reg1 : signal is "NO"; + attribute async_reg of txresetdone_reg1 : signal is "true"; + signal txresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txresetdone_reg2 : signal is "NO"; + attribute async_reg of txresetdone_reg2 : signal is "true"; + signal \NLW_converge_cnt_reg[20]_i_1_CO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_converge_cnt_reg[20]_i_1_O_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 2 ); + attribute ADDER_THRESHOLD : integer; + attribute ADDER_THRESHOLD of \converge_cnt_reg[0]_i_3\ : label is 11; + attribute ADDER_THRESHOLD of \converge_cnt_reg[12]_i_1\ : label is 11; + attribute ADDER_THRESHOLD of \converge_cnt_reg[16]_i_1\ : label is 11; + attribute ADDER_THRESHOLD of \converge_cnt_reg[20]_i_1\ : label is 11; + attribute ADDER_THRESHOLD of \converge_cnt_reg[4]_i_1\ : label is 11; + attribute ADDER_THRESHOLD of \converge_cnt_reg[8]_i_1\ : label is 11; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \oobclk_div.oobclk_cnt[0]_i_1\ : label is "soft_lutpair79"; + attribute SOFT_HLUTNM of \oobclk_div.oobclk_cnt[1]_i_1\ : label is "soft_lutpair79"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of pclk_sel_reg1_reg : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of pclk_sel_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of pclk_sel_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of pclk_sel_reg2_reg : label is std.standard.true; + attribute KEEP of pclk_sel_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of pclk_sel_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_done_reg1_reg : label is std.standard.true; + attribute KEEP of rate_done_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_done_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_done_reg2_reg : label is std.standard.true; + attribute KEEP of rate_done_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_done_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_gen3_reg1_reg : label is std.standard.true; + attribute KEEP of rate_gen3_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_gen3_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_gen3_reg2_reg : label is std.standard.true; + attribute KEEP of rate_gen3_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_gen3_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_idle_reg1_reg : label is std.standard.true; + attribute KEEP of rate_idle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_idle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_idle_reg2_reg : label is std.standard.true; + attribute KEEP of rate_idle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_idle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_rxsync_reg1_reg : label is std.standard.true; + attribute KEEP of rate_rxsync_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_rxsync_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_rxsync_reg2_reg : label is std.standard.true; + attribute KEEP of rate_rxsync_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_rxsync_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of resetovrd_start_reg1_reg : label is std.standard.true; + attribute KEEP of resetovrd_start_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of resetovrd_start_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of resetovrd_start_reg2_reg : label is std.standard.true; + attribute KEEP of resetovrd_start_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of resetovrd_start_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rst_idle_reg1_reg : label is std.standard.true; + attribute KEEP of rst_idle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rst_idle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rst_idle_reg2_reg : label is std.standard.true; + attribute KEEP of rst_idle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rst_idle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxcdrlock_reg1_reg : label is std.standard.true; + attribute KEEP of rxcdrlock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxcdrlock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxcdrlock_reg2_reg : label is std.standard.true; + attribute KEEP of rxcdrlock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxcdrlock_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxeq_adapt_done_reg1_reg : label is std.standard.true; + attribute KEEP of rxeq_adapt_done_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxeq_adapt_done_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxeq_adapt_done_reg2_reg : label is std.standard.true; + attribute KEEP of rxeq_adapt_done_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxeq_adapt_done_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of rxresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of rxresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxresetdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxstatus_reg1_reg : label is std.standard.true; + attribute KEEP of rxstatus_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxstatus_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxstatus_reg2_reg : label is std.standard.true; + attribute KEEP of rxstatus_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxstatus_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxvalid_reg1_reg : label is std.standard.true; + attribute KEEP of rxvalid_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxvalid_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxvalid_reg2_reg : label is std.standard.true; + attribute KEEP of rxvalid_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxvalid_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txcompliance_reg1_reg : label is std.standard.true; + attribute KEEP of txcompliance_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txcompliance_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txcompliance_reg2_reg : label is std.standard.true; + attribute KEEP of txcompliance_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txcompliance_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txelecidle_reg1_reg : label is std.standard.true; + attribute KEEP of txelecidle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txelecidle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txelecidle_reg2_reg : label is std.standard.true; + attribute KEEP of txelecidle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txelecidle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of txresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of txresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txresetdone_reg2_reg : label is "NO"; +begin + \converge_cnt_reg[15]_0\ <= \^converge_cnt_reg[15]_0\; + converge_gen3_reg_0 <= \^converge_gen3_reg_0\; + \out\ <= rst_idle_reg2; + txcompliance_reg2_reg_0 <= txcompliance_reg2; + txelecidle_reg2_reg_0 <= txelecidle_reg2; +\FSM_onehot_txsync_fsm.fsm_tx[5]_i_2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"7077" + ) + port map ( + I0 => txelecidle_reg2, + I1 => txcompliance_reg2, + I2 => \FSM_onehot_txsync_fsm.fsm_tx_reg[5]\, + I3 => \FSM_onehot_txsync_fsm.fsm_tx_reg[5]_0\, + O => txelecidle_reg2_reg_1 + ); +\FSM_onehot_txsync_fsm.fsm_tx[5]_i_3\: unisim.vcomponents.LUT2 + generic map( + INIT => X"7" + ) + port map ( + I0 => txcompliance_reg2, + I1 => txelecidle_reg2, + O => user_active_lane_0 + ); +\converge_cnt[0]_i_1__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"EFFF" + ) + port map ( + I0 => rate_gen3_reg2, + I1 => RST_CPLLRESET, + I2 => rst_idle_reg2, + I3 => rate_idle_reg2, + O => \converge_cnt[0]_i_1__0_n_0\ + ); +\converge_cnt[0]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFF5555555D" + ) + port map ( + I0 => converge_cnt_reg(21), + I1 => \converge_cnt[0]_i_4_n_0\, + I2 => converge_cnt_reg(12), + I3 => converge_cnt_reg(14), + I4 => converge_cnt_reg(20), + I5 => \converge_cnt[0]_i_5_n_0\, + O => sel + ); +\converge_cnt[0]_i_4\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000001" + ) + port map ( + I0 => converge_cnt_reg(3), + I1 => converge_cnt_reg(4), + I2 => converge_cnt_reg(5), + I3 => converge_cnt_reg(7), + I4 => converge_cnt_reg(6), + O => \converge_cnt[0]_i_4_n_0\ + ); +\converge_cnt[0]_i_5\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0A0B0A0F0A0B0A0B" + ) + port map ( + I0 => \^converge_cnt_reg[15]_0\, + I1 => converge_cnt_reg(13), + I2 => converge_cnt_reg(20), + I3 => converge_cnt_reg(14), + I4 => converge_cnt_reg(12), + I5 => \gtx_channel.gtxe2_channel_i_i_59_n_0\, + O => \converge_cnt[0]_i_5_n_0\ + ); +\converge_cnt[0]_i_6\: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => converge_cnt_reg(0), + O => \converge_cnt[0]_i_6_n_0\ + ); +\converge_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[0]_i_3_n_7\, + Q => converge_cnt_reg(0), + R => \converge_cnt[0]_i_1__0_n_0\ + ); +\converge_cnt_reg[0]_i_3\: unisim.vcomponents.CARRY4 + port map ( + CI => '0', + CO(3) => \converge_cnt_reg[0]_i_3_n_0\, + CO(2) => \converge_cnt_reg[0]_i_3_n_1\, + CO(1) => \converge_cnt_reg[0]_i_3_n_2\, + CO(0) => \converge_cnt_reg[0]_i_3_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0001", + O(3) => \converge_cnt_reg[0]_i_3_n_4\, + O(2) => \converge_cnt_reg[0]_i_3_n_5\, + O(1) => \converge_cnt_reg[0]_i_3_n_6\, + O(0) => \converge_cnt_reg[0]_i_3_n_7\, + S(3 downto 1) => converge_cnt_reg(3 downto 1), + S(0) => \converge_cnt[0]_i_6_n_0\ + ); +\converge_cnt_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[8]_i_1_n_5\, + Q => converge_cnt_reg(10), + R => \converge_cnt[0]_i_1__0_n_0\ + ); +\converge_cnt_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[8]_i_1_n_4\, + Q => converge_cnt_reg(11), + R => \converge_cnt[0]_i_1__0_n_0\ + ); +\converge_cnt_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[12]_i_1_n_7\, + Q => converge_cnt_reg(12), + R => \converge_cnt[0]_i_1__0_n_0\ + ); +\converge_cnt_reg[12]_i_1\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[8]_i_1_n_0\, + CO(3) => \converge_cnt_reg[12]_i_1_n_0\, + CO(2) => \converge_cnt_reg[12]_i_1_n_1\, + CO(1) => \converge_cnt_reg[12]_i_1_n_2\, + CO(0) => \converge_cnt_reg[12]_i_1_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3) => \converge_cnt_reg[12]_i_1_n_4\, + O(2) => \converge_cnt_reg[12]_i_1_n_5\, + O(1) => \converge_cnt_reg[12]_i_1_n_6\, + O(0) => \converge_cnt_reg[12]_i_1_n_7\, + S(3 downto 0) => converge_cnt_reg(15 downto 12) + ); +\converge_cnt_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[12]_i_1_n_6\, + Q => converge_cnt_reg(13), + R => \converge_cnt[0]_i_1__0_n_0\ + ); +\converge_cnt_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[12]_i_1_n_5\, + Q => converge_cnt_reg(14), + R => \converge_cnt[0]_i_1__0_n_0\ + ); +\converge_cnt_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[12]_i_1_n_4\, + Q => converge_cnt_reg(15), + R => \converge_cnt[0]_i_1__0_n_0\ + ); +\converge_cnt_reg[16]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[16]_i_1_n_7\, + Q => converge_cnt_reg(16), + R => \converge_cnt[0]_i_1__0_n_0\ + ); +\converge_cnt_reg[16]_i_1\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[12]_i_1_n_0\, + CO(3) => \converge_cnt_reg[16]_i_1_n_0\, + CO(2) => \converge_cnt_reg[16]_i_1_n_1\, + CO(1) => \converge_cnt_reg[16]_i_1_n_2\, + CO(0) => \converge_cnt_reg[16]_i_1_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3) => \converge_cnt_reg[16]_i_1_n_4\, + O(2) => \converge_cnt_reg[16]_i_1_n_5\, + O(1) => \converge_cnt_reg[16]_i_1_n_6\, + O(0) => \converge_cnt_reg[16]_i_1_n_7\, + S(3 downto 0) => converge_cnt_reg(19 downto 16) + ); +\converge_cnt_reg[17]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[16]_i_1_n_6\, + Q => converge_cnt_reg(17), + R => \converge_cnt[0]_i_1__0_n_0\ + ); +\converge_cnt_reg[18]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[16]_i_1_n_5\, + Q => converge_cnt_reg(18), + R => \converge_cnt[0]_i_1__0_n_0\ + ); +\converge_cnt_reg[19]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[16]_i_1_n_4\, + Q => converge_cnt_reg(19), + R => \converge_cnt[0]_i_1__0_n_0\ + ); +\converge_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[0]_i_3_n_6\, + Q => converge_cnt_reg(1), + R => \converge_cnt[0]_i_1__0_n_0\ + ); +\converge_cnt_reg[20]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[20]_i_1_n_7\, + Q => converge_cnt_reg(20), + R => \converge_cnt[0]_i_1__0_n_0\ + ); +\converge_cnt_reg[20]_i_1\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[16]_i_1_n_0\, + CO(3 downto 1) => \NLW_converge_cnt_reg[20]_i_1_CO_UNCONNECTED\(3 downto 1), + CO(0) => \converge_cnt_reg[20]_i_1_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 2) => \NLW_converge_cnt_reg[20]_i_1_O_UNCONNECTED\(3 downto 2), + O(1) => \converge_cnt_reg[20]_i_1_n_6\, + O(0) => \converge_cnt_reg[20]_i_1_n_7\, + S(3 downto 2) => B"00", + S(1 downto 0) => converge_cnt_reg(21 downto 20) + ); +\converge_cnt_reg[21]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[20]_i_1_n_6\, + Q => converge_cnt_reg(21), + R => \converge_cnt[0]_i_1__0_n_0\ + ); +\converge_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[0]_i_3_n_5\, + Q => converge_cnt_reg(2), + R => \converge_cnt[0]_i_1__0_n_0\ + ); +\converge_cnt_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[0]_i_3_n_4\, + Q => converge_cnt_reg(3), + R => \converge_cnt[0]_i_1__0_n_0\ + ); +\converge_cnt_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[4]_i_1_n_7\, + Q => converge_cnt_reg(4), + R => \converge_cnt[0]_i_1__0_n_0\ + ); +\converge_cnt_reg[4]_i_1\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[0]_i_3_n_0\, + CO(3) => \converge_cnt_reg[4]_i_1_n_0\, + CO(2) => \converge_cnt_reg[4]_i_1_n_1\, + CO(1) => \converge_cnt_reg[4]_i_1_n_2\, + CO(0) => \converge_cnt_reg[4]_i_1_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3) => \converge_cnt_reg[4]_i_1_n_4\, + O(2) => \converge_cnt_reg[4]_i_1_n_5\, + O(1) => \converge_cnt_reg[4]_i_1_n_6\, + O(0) => \converge_cnt_reg[4]_i_1_n_7\, + S(3 downto 0) => converge_cnt_reg(7 downto 4) + ); +\converge_cnt_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[4]_i_1_n_6\, + Q => converge_cnt_reg(5), + R => \converge_cnt[0]_i_1__0_n_0\ + ); +\converge_cnt_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[4]_i_1_n_5\, + Q => converge_cnt_reg(6), + R => \converge_cnt[0]_i_1__0_n_0\ + ); +\converge_cnt_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[4]_i_1_n_4\, + Q => converge_cnt_reg(7), + R => \converge_cnt[0]_i_1__0_n_0\ + ); +\converge_cnt_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[8]_i_1_n_7\, + Q => converge_cnt_reg(8), + R => \converge_cnt[0]_i_1__0_n_0\ + ); +\converge_cnt_reg[8]_i_1\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[4]_i_1_n_0\, + CO(3) => \converge_cnt_reg[8]_i_1_n_0\, + CO(2) => \converge_cnt_reg[8]_i_1_n_1\, + CO(1) => \converge_cnt_reg[8]_i_1_n_2\, + CO(0) => \converge_cnt_reg[8]_i_1_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3) => \converge_cnt_reg[8]_i_1_n_4\, + O(2) => \converge_cnt_reg[8]_i_1_n_5\, + O(1) => \converge_cnt_reg[8]_i_1_n_6\, + O(0) => \converge_cnt_reg[8]_i_1_n_7\, + S(3 downto 0) => converge_cnt_reg(11 downto 8) + ); +\converge_cnt_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[8]_i_1_n_6\, + Q => converge_cnt_reg(9), + R => \converge_cnt[0]_i_1__0_n_0\ + ); +converge_gen3_i_1: unisim.vcomponents.LUT3 + generic map( + INIT => X"C8" + ) + port map ( + I0 => rxeq_adapt_done_reg2, + I1 => rate_gen3_reg2, + I2 => \^converge_gen3_reg_0\, + O => converge_gen3_i_1_n_0 + ); +converge_gen3_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_gen3_i_1_n_0, + Q => \^converge_gen3_reg_0\, + R => RST_CPLLRESET + ); +gt_rx_phy_status_q_i_1: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFFA8FF" + ) + port map ( + I0 => RST_PHYSTATUS(0), + I1 => rate_idle_reg2, + I2 => rate_rxsync_reg2, + I3 => rst_idle_reg2, + I4 => rate_done_reg2, + O => gt_rx_phy_status_wire_filter(0) + ); +gt_rxvalid_q_i_3: unisim.vcomponents.LUT6 + generic map( + INIT => X"D000000000000000" + ) + port map ( + I0 => gt_rx_elec_idle_wire_filter(0), + I1 => pipe_rx0_valid_gt, + I2 => gt_rxvalid_q_i_4_n_0, + I3 => gt_rxvalid_0, + I4 => rst_idle_reg2, + I5 => rate_idle_reg2, + O => gt_rxvalid_q_reg + ); +gt_rxvalid_q_i_4: unisim.vcomponents.LUT4 + generic map( + INIT => X"8000" + ) + port map ( + I0 => rxvalid_cnt_reg(0), + I1 => rxvalid_cnt_reg(1), + I2 => rxvalid_cnt_reg(2), + I3 => rxvalid_cnt_reg(3), + O => gt_rxvalid_q_i_4_n_0 + ); +\gtx_channel.gtxe2_channel_i_i_49\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000000020000" + ) + port map ( + I0 => \gtx_channel.gtxe2_channel_i_i_58_n_0\, + I1 => converge_cnt_reg(1), + I2 => converge_cnt_reg(0), + I3 => converge_cnt_reg(2), + I4 => converge_cnt_reg(3), + I5 => \gtx_channel.gtxe2_channel_i_i_59_n_0\, + O => \converge_cnt_reg[1]_0\ + ); +\gtx_channel.gtxe2_channel_i_i_50\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0001000000000000" + ) + port map ( + I0 => converge_cnt_reg(6), + I1 => converge_cnt_reg(7), + I2 => converge_cnt_reg(4), + I3 => converge_cnt_reg(5), + I4 => converge_cnt_reg(21), + I5 => converge_cnt_reg(13), + O => \converge_cnt_reg[6]_0\ + ); +\gtx_channel.gtxe2_channel_i_i_51\: unisim.vcomponents.LUT5 + generic map( + INIT => X"7FFFFFFF" + ) + port map ( + I0 => converge_cnt_reg(15), + I1 => converge_cnt_reg(18), + I2 => converge_cnt_reg(19), + I3 => converge_cnt_reg(17), + I4 => converge_cnt_reg(16), + O => \^converge_cnt_reg[15]_0\ + ); +\gtx_channel.gtxe2_channel_i_i_58\: unisim.vcomponents.LUT3 + generic map( + INIT => X"01" + ) + port map ( + I0 => converge_cnt_reg(20), + I1 => converge_cnt_reg(14), + I2 => converge_cnt_reg(12), + O => \gtx_channel.gtxe2_channel_i_i_58_n_0\ + ); +\gtx_channel.gtxe2_channel_i_i_59\: unisim.vcomponents.LUT4 + generic map( + INIT => X"7FFF" + ) + port map ( + I0 => converge_cnt_reg(9), + I1 => converge_cnt_reg(8), + I2 => converge_cnt_reg(11), + I3 => converge_cnt_reg(10), + O => \gtx_channel.gtxe2_channel_i_i_59_n_0\ + ); +\oobclk_div.oobclk_cnt[0]_i_1\: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => oobclk_cnt(0), + O => \p_1_in__0\(0) + ); +\oobclk_div.oobclk_cnt[1]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"6" + ) + port map ( + I0 => oobclk_cnt(0), + I1 => oobclk_cnt(1), + O => \p_1_in__0\(1) + ); +\oobclk_div.oobclk_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_oobclk_in, + CE => '1', + D => \p_1_in__0\(0), + Q => oobclk_cnt(0), + R => RST_CPLLRESET + ); +\oobclk_div.oobclk_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_oobclk_in, + CE => '1', + D => \p_1_in__0\(1), + Q => oobclk_cnt(1), + R => RST_CPLLRESET + ); +\oobclk_div.oobclk_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => oobclk_cnt(1), + I1 => pclk_sel_reg2, + I2 => oobclk_cnt(0), + O => \oobclk_div.oobclk_i_1_n_0\ + ); +\oobclk_div.oobclk_reg\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_oobclk_in, + CE => '1', + D => \oobclk_div.oobclk_i_1_n_0\, + Q => USER_OOBCLK, + R => RST_CPLLRESET + ); +pclk_sel_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_pclk_sel_out(0), + Q => pclk_sel_reg1, + R => RST_CPLLRESET + ); +pclk_sel_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pclk_sel_reg1, + Q => pclk_sel_reg2, + R => RST_CPLLRESET + ); +rate_done_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => USER_RATE_DONE, + Q => rate_done_reg1, + R => RST_RXUSRCLK_RESET + ); +rate_done_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rate_done_reg1, + Q => rate_done_reg2, + R => RST_RXUSRCLK_RESET + ); +rate_gen3_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => USER_RATE_GEN3, + Q => rate_gen3_reg1, + R => RST_RXUSRCLK_RESET + ); +rate_gen3_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rate_gen3_reg1, + Q => rate_gen3_reg2, + R => RST_RXUSRCLK_RESET + ); +rate_idle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => USER_RATE_IDLE, + Q => rate_idle_reg1, + R => RST_RXUSRCLK_RESET + ); +rate_idle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rate_idle_reg1, + Q => rate_idle_reg2, + R => RST_RXUSRCLK_RESET + ); +rate_rxsync_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => USER_RATE_RXSYNC, + Q => rate_rxsync_reg1, + R => RST_RXUSRCLK_RESET + ); +rate_rxsync_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rate_rxsync_reg1, + Q => rate_rxsync_reg2, + R => RST_RXUSRCLK_RESET + ); +\resetdone_reg1[0]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => rxresetdone_reg2, + I1 => txresetdone_reg2, + O => RST_RESETDONE(0) + ); +resetovrd_start_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_RESETOVRD_START, + Q => resetovrd_start_reg1, + R => RST_CPLLRESET + ); +resetovrd_start_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => resetovrd_start_reg1, + Q => resetovrd_start_reg2, + R => RST_CPLLRESET + ); +rst_idle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => RST_IDLE, + Q => rst_idle_reg1, + R => RST_RXUSRCLK_RESET + ); +rst_idle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rst_idle_reg1, + Q => rst_idle_reg2, + R => RST_RXUSRCLK_RESET + ); +\rxcdrlock_cnt[0]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"D0505050" + ) + port map ( + I0 => rxcdrlock_cnt_reg(0), + I1 => rxcdrlock_cnt_reg(2), + I2 => rxcdrlock_reg2, + I3 => rxcdrlock_cnt_reg(1), + I4 => rxcdrlock_cnt_reg(3), + O => \p_0_in__0\(0) + ); +\rxcdrlock_cnt[1]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"8FF00000" + ) + port map ( + I0 => rxcdrlock_cnt_reg(3), + I1 => rxcdrlock_cnt_reg(2), + I2 => rxcdrlock_cnt_reg(0), + I3 => rxcdrlock_cnt_reg(1), + I4 => rxcdrlock_reg2, + O => \p_0_in__0\(1) + ); +\rxcdrlock_cnt[2]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"F8780000" + ) + port map ( + I0 => rxcdrlock_cnt_reg(0), + I1 => rxcdrlock_cnt_reg(1), + I2 => rxcdrlock_cnt_reg(2), + I3 => rxcdrlock_cnt_reg(3), + I4 => rxcdrlock_reg2, + O => \p_0_in__0\(2) + ); +\rxcdrlock_cnt[3]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FF008000" + ) + port map ( + I0 => rxcdrlock_cnt_reg(0), + I1 => rxcdrlock_cnt_reg(1), + I2 => rxcdrlock_cnt_reg(2), + I3 => rxcdrlock_reg2, + I4 => rxcdrlock_cnt_reg(3), + O => \p_0_in__0\(3) + ); +\rxcdrlock_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(0), + Q => rxcdrlock_cnt_reg(0), + R => RST_CPLLRESET + ); +\rxcdrlock_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(1), + Q => rxcdrlock_cnt_reg(1), + R => RST_CPLLRESET + ); +\rxcdrlock_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(2), + Q => rxcdrlock_cnt_reg(2), + R => RST_CPLLRESET + ); +\rxcdrlock_cnt_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(3), + Q => rxcdrlock_cnt_reg(3), + R => RST_CPLLRESET + ); +\rxcdrlock_reg1[0]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"80000000" + ) + port map ( + I0 => rxcdrlock_cnt_reg(2), + I1 => rxcdrlock_cnt_reg(3), + I2 => gt_rxcdrlock_0, + I3 => rxcdrlock_cnt_reg(1), + I4 => rxcdrlock_cnt_reg(0), + O => RST_RXCDRLOCK(0) + ); +rxcdrlock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => gt_rxcdrlock_0, + Q => rxcdrlock_reg1, + R => RST_CPLLRESET + ); +rxcdrlock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxcdrlock_reg1, + Q => rxcdrlock_reg2, + R => RST_CPLLRESET + ); +rxeq_adapt_done_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_RXEQ_ADAPT_DONE, + Q => rxeq_adapt_done_reg1, + R => RST_CPLLRESET + ); +rxeq_adapt_done_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_adapt_done_reg1, + Q => rxeq_adapt_done_reg2, + R => RST_CPLLRESET + ); +rxresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_RXRESETDONE, + Q => rxresetdone_reg1, + R => RST_CPLLRESET + ); +rxresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxresetdone_reg1, + Q => rxresetdone_reg2, + R => RST_CPLLRESET + ); +rxstatus_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => PIPE_RXSTATUS(0), + Q => rxstatus_reg1, + R => RST_RXUSRCLK_RESET + ); +rxstatus_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rxstatus_reg1, + Q => rxstatus_reg2, + R => RST_RXUSRCLK_RESET + ); +\rxvalid_cnt[0]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"C404040404040404" + ) + port map ( + I0 => rxstatus_reg2, + I1 => rxvalid_reg2, + I2 => rxvalid_cnt_reg(0), + I3 => rxvalid_cnt_reg(1), + I4 => rxvalid_cnt_reg(2), + I5 => rxvalid_cnt_reg(3), + O => \p_0_in__0__0\(0) + ); +\rxvalid_cnt[1]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"808000F000F00000" + ) + port map ( + I0 => rxvalid_cnt_reg(3), + I1 => rxvalid_cnt_reg(2), + I2 => rxvalid_reg2, + I3 => rxstatus_reg2, + I4 => rxvalid_cnt_reg(1), + I5 => rxvalid_cnt_reg(0), + O => \p_0_in__0__0\(1) + ); +\rxvalid_cnt[2]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"80BF000000C00000" + ) + port map ( + I0 => rxvalid_cnt_reg(3), + I1 => rxvalid_cnt_reg(0), + I2 => rxvalid_cnt_reg(1), + I3 => rxstatus_reg2, + I4 => rxvalid_reg2, + I5 => rxvalid_cnt_reg(2), + O => \p_0_in__0__0\(2) + ); +\rxvalid_cnt[3]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"8C08080808080808" + ) + port map ( + I0 => rxvalid_cnt_reg(3), + I1 => rxvalid_reg2, + I2 => rxstatus_reg2, + I3 => rxvalid_cnt_reg(2), + I4 => rxvalid_cnt_reg(1), + I5 => rxvalid_cnt_reg(0), + O => \p_0_in__0__0\(3) + ); +\rxvalid_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => \p_0_in__0__0\(0), + Q => rxvalid_cnt_reg(0), + R => RST_RXUSRCLK_RESET + ); +\rxvalid_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => \p_0_in__0__0\(1), + Q => rxvalid_cnt_reg(1), + R => RST_RXUSRCLK_RESET + ); +\rxvalid_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => \p_0_in__0__0\(2), + Q => rxvalid_cnt_reg(2), + R => RST_RXUSRCLK_RESET + ); +\rxvalid_cnt_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => \p_0_in__0__0\(3), + Q => rxvalid_cnt_reg(3), + R => RST_RXUSRCLK_RESET + ); +rxvalid_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => gt_rxvalid_0, + Q => rxvalid_reg1, + R => RST_RXUSRCLK_RESET + ); +rxvalid_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rxvalid_reg1, + Q => rxvalid_reg2, + R => RST_RXUSRCLK_RESET + ); +txcompliance_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_TXCOMPLIANCE(0), + Q => txcompliance_reg1, + R => RST_CPLLRESET + ); +txcompliance_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcompliance_reg1, + Q => txcompliance_reg2, + R => RST_CPLLRESET + ); +txelecidle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_TXELECIDLE(0), + Q => txelecidle_reg1, + R => RST_CPLLRESET + ); +txelecidle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txelecidle_reg1, + Q => txelecidle_reg2, + R => RST_CPLLRESET + ); +txphaligndone_reg1_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"00000000BBB0B0B0" + ) + port map ( + I0 => txphaligndone_reg1_reg, + I1 => user_active_lane_1, + I2 => txphaligndone_reg1_reg_0, + I3 => txelecidle_reg2, + I4 => txcompliance_reg2, + I5 => txphaligndone_reg1_reg_1, + O => SYNC_TXPHALIGNDONE + ); +txphinitdone_reg1_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"00000000BBB0B0B0" + ) + port map ( + I0 => txphinitdone_reg1_reg, + I1 => user_active_lane_1, + I2 => txphinitdone_reg1_reg_0, + I3 => txelecidle_reg2, + I4 => txcompliance_reg2, + I5 => txphinitdone_reg1_reg_1, + O => SYNC_TXPHINITDONE + ); +txresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_TXRESETDONE, + Q => txresetdone_reg1, + R => RST_CPLLRESET + ); +txresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txresetdone_reg1, + Q => txresetdone_reg2, + R => RST_CPLLRESET + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pipe_user_42 is + port ( + gt_rxvalid_q_reg : out STD_LOGIC; + \out\ : out STD_LOGIC; + txelecidle_reg2_reg_0 : out STD_LOGIC; + txcompliance_reg2_reg_0 : out STD_LOGIC; + USER_OOBCLK : out STD_LOGIC; + RST_RXCDRLOCK : out STD_LOGIC_VECTOR ( 0 to 0 ); + gt_rx_phy_status_wire_filter : out STD_LOGIC_VECTOR ( 0 to 0 ); + user_rx_converge : out STD_LOGIC_VECTOR ( 0 to 0 ); + RST_RESETDONE : out STD_LOGIC_VECTOR ( 0 to 0 ); + user_active_lane_1 : out STD_LOGIC; + gt_rx_elec_idle_wire_filter : in STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_rx1_valid_gt : in STD_LOGIC; + gt_rxvalid_1 : in STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC; + pipe_pclk_sel_out : in STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_pclk_in : in STD_LOGIC; + pipe_oobclk_in : in STD_LOGIC; + USER_TXRESETDONE : in STD_LOGIC; + USER_RXRESETDONE : in STD_LOGIC; + PIPE_TXELECIDLE : in STD_LOGIC_VECTOR ( 0 to 0 ); + PIPE_TXCOMPLIANCE : in STD_LOGIC_VECTOR ( 0 to 0 ); + gt_rxcdrlock_1 : in STD_LOGIC; + RST_RXUSRCLK_RESET : in STD_LOGIC; + pipe_rxusrclk_in : in STD_LOGIC; + rxstatus_reg1_reg_0 : in STD_LOGIC_VECTOR ( 0 to 0 ); + RST_IDLE : in STD_LOGIC; + USER_RATE_IDLE : in STD_LOGIC; + USER_RATE_RXSYNC : in STD_LOGIC; + USER_RATE_DONE : in STD_LOGIC; + USER_RATE_GEN3 : in STD_LOGIC; + USER_RXEQ_ADAPT_DONE : in STD_LOGIC; + USER_RESETOVRD_START : in STD_LOGIC; + RST_PHYSTATUS : in STD_LOGIC_VECTOR ( 0 to 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pipe_user_42 : entity is "pcie_7x_0_pipe_user"; +end pcie_7x_0_pcie_7x_0_pipe_user_42; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pipe_user_42 is + signal \converge_cnt[0]_i_1__2_n_0\ : STD_LOGIC; + signal \converge_cnt[0]_i_4__0_n_0\ : STD_LOGIC; + signal \converge_cnt[0]_i_5__0_n_0\ : STD_LOGIC; + signal \converge_cnt[0]_i_6__0_n_0\ : STD_LOGIC; + signal converge_cnt_reg : STD_LOGIC_VECTOR ( 21 downto 0 ); + signal \converge_cnt_reg[0]_i_3__0_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3__0_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3__0_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3__0_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3__0_n_4\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3__0_n_5\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3__0_n_6\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3__0_n_7\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1__0_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1__0_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1__0_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1__0_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1__0_n_4\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1__0_n_5\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1__0_n_6\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1__0_n_7\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1__0_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1__0_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1__0_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1__0_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1__0_n_4\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1__0_n_5\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1__0_n_6\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1__0_n_7\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_1__0_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_1__0_n_6\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_1__0_n_7\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1__0_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1__0_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1__0_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1__0_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1__0_n_4\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1__0_n_5\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1__0_n_6\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1__0_n_7\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1__0_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1__0_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1__0_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1__0_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1__0_n_4\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1__0_n_5\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1__0_n_6\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1__0_n_7\ : STD_LOGIC; + signal \converge_gen3_i_1__0_n_0\ : STD_LOGIC; + signal converge_gen3_reg_n_0 : STD_LOGIC; + signal \gt_rxvalid_q_i_4__0_n_0\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_i_53_n_0\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_i_54_n_0\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_i_55_n_0\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_i_56_n_0\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_i_57_n_0\ : STD_LOGIC; + signal oobclk_cnt : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal \oobclk_div.oobclk_i_1__0_n_0\ : STD_LOGIC; + signal \p_0_in__0\ : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal \p_0_in__0__0\ : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal \p_1_in__0\ : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pclk_sel_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of pclk_sel_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of pclk_sel_reg1 : signal is "true"; + signal pclk_sel_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of pclk_sel_reg2 : signal is "NO"; + attribute async_reg of pclk_sel_reg2 : signal is "true"; + signal rate_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_done_reg1 : signal is "NO"; + attribute async_reg of rate_done_reg1 : signal is "true"; + signal rate_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_done_reg2 : signal is "NO"; + attribute async_reg of rate_done_reg2 : signal is "true"; + signal rate_gen3_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_gen3_reg1 : signal is "NO"; + attribute async_reg of rate_gen3_reg1 : signal is "true"; + signal rate_gen3_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_gen3_reg2 : signal is "NO"; + attribute async_reg of rate_gen3_reg2 : signal is "true"; + signal rate_idle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_idle_reg1 : signal is "NO"; + attribute async_reg of rate_idle_reg1 : signal is "true"; + signal rate_idle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_idle_reg2 : signal is "NO"; + attribute async_reg of rate_idle_reg2 : signal is "true"; + signal rate_rxsync_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_rxsync_reg1 : signal is "NO"; + attribute async_reg of rate_rxsync_reg1 : signal is "true"; + signal rate_rxsync_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_rxsync_reg2 : signal is "NO"; + attribute async_reg of rate_rxsync_reg2 : signal is "true"; + signal resetovrd_start_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of resetovrd_start_reg1 : signal is "NO"; + attribute async_reg of resetovrd_start_reg1 : signal is "true"; + signal resetovrd_start_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of resetovrd_start_reg2 : signal is "NO"; + attribute async_reg of resetovrd_start_reg2 : signal is "true"; + signal rst_idle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rst_idle_reg1 : signal is "NO"; + attribute async_reg of rst_idle_reg1 : signal is "true"; + signal rst_idle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rst_idle_reg2 : signal is "NO"; + attribute async_reg of rst_idle_reg2 : signal is "true"; + signal rxcdrlock_cnt_reg : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal rxcdrlock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxcdrlock_reg1 : signal is "NO"; + attribute async_reg of rxcdrlock_reg1 : signal is "true"; + signal rxcdrlock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxcdrlock_reg2 : signal is "NO"; + attribute async_reg of rxcdrlock_reg2 : signal is "true"; + signal rxeq_adapt_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxeq_adapt_done_reg1 : signal is "NO"; + attribute async_reg of rxeq_adapt_done_reg1 : signal is "true"; + signal rxeq_adapt_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxeq_adapt_done_reg2 : signal is "NO"; + attribute async_reg of rxeq_adapt_done_reg2 : signal is "true"; + signal rxresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxresetdone_reg1 : signal is "NO"; + attribute async_reg of rxresetdone_reg1 : signal is "true"; + signal rxresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxresetdone_reg2 : signal is "NO"; + attribute async_reg of rxresetdone_reg2 : signal is "true"; + signal rxstatus_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxstatus_reg1 : signal is "NO"; + attribute async_reg of rxstatus_reg1 : signal is "true"; + signal rxstatus_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxstatus_reg2 : signal is "NO"; + attribute async_reg of rxstatus_reg2 : signal is "true"; + signal rxvalid_cnt_reg : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal rxvalid_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxvalid_reg1 : signal is "NO"; + attribute async_reg of rxvalid_reg1 : signal is "true"; + signal rxvalid_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxvalid_reg2 : signal is "NO"; + attribute async_reg of rxvalid_reg2 : signal is "true"; + signal sel : STD_LOGIC; + signal txcompliance_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txcompliance_reg1 : signal is "NO"; + attribute async_reg of txcompliance_reg1 : signal is "true"; + signal txcompliance_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txcompliance_reg2 : signal is "NO"; + attribute async_reg of txcompliance_reg2 : signal is "true"; + signal txelecidle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txelecidle_reg1 : signal is "NO"; + attribute async_reg of txelecidle_reg1 : signal is "true"; + signal txelecidle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txelecidle_reg2 : signal is "NO"; + attribute async_reg of txelecidle_reg2 : signal is "true"; + signal txresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txresetdone_reg1 : signal is "NO"; + attribute async_reg of txresetdone_reg1 : signal is "true"; + signal txresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txresetdone_reg2 : signal is "NO"; + attribute async_reg of txresetdone_reg2 : signal is "true"; + signal \NLW_converge_cnt_reg[20]_i_1__0_CO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_converge_cnt_reg[20]_i_1__0_O_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 2 ); + attribute ADDER_THRESHOLD : integer; + attribute ADDER_THRESHOLD of \converge_cnt_reg[0]_i_3__0\ : label is 11; + attribute ADDER_THRESHOLD of \converge_cnt_reg[12]_i_1__0\ : label is 11; + attribute ADDER_THRESHOLD of \converge_cnt_reg[16]_i_1__0\ : label is 11; + attribute ADDER_THRESHOLD of \converge_cnt_reg[20]_i_1__0\ : label is 11; + attribute ADDER_THRESHOLD of \converge_cnt_reg[4]_i_1__0\ : label is 11; + attribute ADDER_THRESHOLD of \converge_cnt_reg[8]_i_1__0\ : label is 11; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \oobclk_div.oobclk_cnt[0]_i_1__0\ : label is "soft_lutpair121"; + attribute SOFT_HLUTNM of \oobclk_div.oobclk_cnt[1]_i_1__0\ : label is "soft_lutpair121"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of pclk_sel_reg1_reg : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of pclk_sel_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of pclk_sel_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of pclk_sel_reg2_reg : label is std.standard.true; + attribute KEEP of pclk_sel_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of pclk_sel_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_done_reg1_reg : label is std.standard.true; + attribute KEEP of rate_done_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_done_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_done_reg2_reg : label is std.standard.true; + attribute KEEP of rate_done_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_done_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_gen3_reg1_reg : label is std.standard.true; + attribute KEEP of rate_gen3_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_gen3_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_gen3_reg2_reg : label is std.standard.true; + attribute KEEP of rate_gen3_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_gen3_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_idle_reg1_reg : label is std.standard.true; + attribute KEEP of rate_idle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_idle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_idle_reg2_reg : label is std.standard.true; + attribute KEEP of rate_idle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_idle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_rxsync_reg1_reg : label is std.standard.true; + attribute KEEP of rate_rxsync_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_rxsync_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_rxsync_reg2_reg : label is std.standard.true; + attribute KEEP of rate_rxsync_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_rxsync_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of resetovrd_start_reg1_reg : label is std.standard.true; + attribute KEEP of resetovrd_start_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of resetovrd_start_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of resetovrd_start_reg2_reg : label is std.standard.true; + attribute KEEP of resetovrd_start_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of resetovrd_start_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rst_idle_reg1_reg : label is std.standard.true; + attribute KEEP of rst_idle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rst_idle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rst_idle_reg2_reg : label is std.standard.true; + attribute KEEP of rst_idle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rst_idle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxcdrlock_reg1_reg : label is std.standard.true; + attribute KEEP of rxcdrlock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxcdrlock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxcdrlock_reg2_reg : label is std.standard.true; + attribute KEEP of rxcdrlock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxcdrlock_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxeq_adapt_done_reg1_reg : label is std.standard.true; + attribute KEEP of rxeq_adapt_done_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxeq_adapt_done_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxeq_adapt_done_reg2_reg : label is std.standard.true; + attribute KEEP of rxeq_adapt_done_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxeq_adapt_done_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of rxresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of rxresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxresetdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxstatus_reg1_reg : label is std.standard.true; + attribute KEEP of rxstatus_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxstatus_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxstatus_reg2_reg : label is std.standard.true; + attribute KEEP of rxstatus_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxstatus_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxvalid_reg1_reg : label is std.standard.true; + attribute KEEP of rxvalid_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxvalid_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxvalid_reg2_reg : label is std.standard.true; + attribute KEEP of rxvalid_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxvalid_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txcompliance_reg1_reg : label is std.standard.true; + attribute KEEP of txcompliance_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txcompliance_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txcompliance_reg2_reg : label is std.standard.true; + attribute KEEP of txcompliance_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txcompliance_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txelecidle_reg1_reg : label is std.standard.true; + attribute KEEP of txelecidle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txelecidle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txelecidle_reg2_reg : label is std.standard.true; + attribute KEEP of txelecidle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txelecidle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of txresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of txresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txresetdone_reg2_reg : label is "NO"; +begin + \out\ <= rst_idle_reg2; + txcompliance_reg2_reg_0 <= txcompliance_reg2; + txelecidle_reg2_reg_0 <= txelecidle_reg2; +\converge_cnt[0]_i_1__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"EFFF" + ) + port map ( + I0 => rate_gen3_reg2, + I1 => RST_CPLLRESET, + I2 => rst_idle_reg2, + I3 => rate_idle_reg2, + O => \converge_cnt[0]_i_1__2_n_0\ + ); +\converge_cnt[0]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFF5555555D" + ) + port map ( + I0 => converge_cnt_reg(21), + I1 => \converge_cnt[0]_i_4__0_n_0\, + I2 => converge_cnt_reg(12), + I3 => converge_cnt_reg(14), + I4 => converge_cnt_reg(20), + I5 => \converge_cnt[0]_i_5__0_n_0\, + O => sel + ); +\converge_cnt[0]_i_4__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000001" + ) + port map ( + I0 => converge_cnt_reg(3), + I1 => converge_cnt_reg(4), + I2 => converge_cnt_reg(5), + I3 => converge_cnt_reg(7), + I4 => converge_cnt_reg(6), + O => \converge_cnt[0]_i_4__0_n_0\ + ); +\converge_cnt[0]_i_5__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0A0B0A0F0A0B0A0B" + ) + port map ( + I0 => \gtx_channel.gtxe2_channel_i_i_57_n_0\, + I1 => converge_cnt_reg(13), + I2 => converge_cnt_reg(20), + I3 => converge_cnt_reg(14), + I4 => converge_cnt_reg(12), + I5 => \gtx_channel.gtxe2_channel_i_i_55_n_0\, + O => \converge_cnt[0]_i_5__0_n_0\ + ); +\converge_cnt[0]_i_6__0\: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => converge_cnt_reg(0), + O => \converge_cnt[0]_i_6__0_n_0\ + ); +\converge_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[0]_i_3__0_n_7\, + Q => converge_cnt_reg(0), + R => \converge_cnt[0]_i_1__2_n_0\ + ); +\converge_cnt_reg[0]_i_3__0\: unisim.vcomponents.CARRY4 + port map ( + CI => '0', + CO(3) => \converge_cnt_reg[0]_i_3__0_n_0\, + CO(2) => \converge_cnt_reg[0]_i_3__0_n_1\, + CO(1) => \converge_cnt_reg[0]_i_3__0_n_2\, + CO(0) => \converge_cnt_reg[0]_i_3__0_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0001", + O(3) => \converge_cnt_reg[0]_i_3__0_n_4\, + O(2) => \converge_cnt_reg[0]_i_3__0_n_5\, + O(1) => \converge_cnt_reg[0]_i_3__0_n_6\, + O(0) => \converge_cnt_reg[0]_i_3__0_n_7\, + S(3 downto 1) => converge_cnt_reg(3 downto 1), + S(0) => \converge_cnt[0]_i_6__0_n_0\ + ); +\converge_cnt_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[8]_i_1__0_n_5\, + Q => converge_cnt_reg(10), + R => \converge_cnt[0]_i_1__2_n_0\ + ); +\converge_cnt_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[8]_i_1__0_n_4\, + Q => converge_cnt_reg(11), + R => \converge_cnt[0]_i_1__2_n_0\ + ); +\converge_cnt_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[12]_i_1__0_n_7\, + Q => converge_cnt_reg(12), + R => \converge_cnt[0]_i_1__2_n_0\ + ); +\converge_cnt_reg[12]_i_1__0\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[8]_i_1__0_n_0\, + CO(3) => \converge_cnt_reg[12]_i_1__0_n_0\, + CO(2) => \converge_cnt_reg[12]_i_1__0_n_1\, + CO(1) => \converge_cnt_reg[12]_i_1__0_n_2\, + CO(0) => \converge_cnt_reg[12]_i_1__0_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3) => \converge_cnt_reg[12]_i_1__0_n_4\, + O(2) => \converge_cnt_reg[12]_i_1__0_n_5\, + O(1) => \converge_cnt_reg[12]_i_1__0_n_6\, + O(0) => \converge_cnt_reg[12]_i_1__0_n_7\, + S(3 downto 0) => converge_cnt_reg(15 downto 12) + ); +\converge_cnt_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[12]_i_1__0_n_6\, + Q => converge_cnt_reg(13), + R => \converge_cnt[0]_i_1__2_n_0\ + ); +\converge_cnt_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[12]_i_1__0_n_5\, + Q => converge_cnt_reg(14), + R => \converge_cnt[0]_i_1__2_n_0\ + ); +\converge_cnt_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[12]_i_1__0_n_4\, + Q => converge_cnt_reg(15), + R => \converge_cnt[0]_i_1__2_n_0\ + ); +\converge_cnt_reg[16]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[16]_i_1__0_n_7\, + Q => converge_cnt_reg(16), + R => \converge_cnt[0]_i_1__2_n_0\ + ); +\converge_cnt_reg[16]_i_1__0\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[12]_i_1__0_n_0\, + CO(3) => \converge_cnt_reg[16]_i_1__0_n_0\, + CO(2) => \converge_cnt_reg[16]_i_1__0_n_1\, + CO(1) => \converge_cnt_reg[16]_i_1__0_n_2\, + CO(0) => \converge_cnt_reg[16]_i_1__0_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3) => \converge_cnt_reg[16]_i_1__0_n_4\, + O(2) => \converge_cnt_reg[16]_i_1__0_n_5\, + O(1) => \converge_cnt_reg[16]_i_1__0_n_6\, + O(0) => \converge_cnt_reg[16]_i_1__0_n_7\, + S(3 downto 0) => converge_cnt_reg(19 downto 16) + ); +\converge_cnt_reg[17]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[16]_i_1__0_n_6\, + Q => converge_cnt_reg(17), + R => \converge_cnt[0]_i_1__2_n_0\ + ); +\converge_cnt_reg[18]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[16]_i_1__0_n_5\, + Q => converge_cnt_reg(18), + R => \converge_cnt[0]_i_1__2_n_0\ + ); +\converge_cnt_reg[19]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[16]_i_1__0_n_4\, + Q => converge_cnt_reg(19), + R => \converge_cnt[0]_i_1__2_n_0\ + ); +\converge_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[0]_i_3__0_n_6\, + Q => converge_cnt_reg(1), + R => \converge_cnt[0]_i_1__2_n_0\ + ); +\converge_cnt_reg[20]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[20]_i_1__0_n_7\, + Q => converge_cnt_reg(20), + R => \converge_cnt[0]_i_1__2_n_0\ + ); +\converge_cnt_reg[20]_i_1__0\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[16]_i_1__0_n_0\, + CO(3 downto 1) => \NLW_converge_cnt_reg[20]_i_1__0_CO_UNCONNECTED\(3 downto 1), + CO(0) => \converge_cnt_reg[20]_i_1__0_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 2) => \NLW_converge_cnt_reg[20]_i_1__0_O_UNCONNECTED\(3 downto 2), + O(1) => \converge_cnt_reg[20]_i_1__0_n_6\, + O(0) => \converge_cnt_reg[20]_i_1__0_n_7\, + S(3 downto 2) => B"00", + S(1 downto 0) => converge_cnt_reg(21 downto 20) + ); +\converge_cnt_reg[21]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[20]_i_1__0_n_6\, + Q => converge_cnt_reg(21), + R => \converge_cnt[0]_i_1__2_n_0\ + ); +\converge_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[0]_i_3__0_n_5\, + Q => converge_cnt_reg(2), + R => \converge_cnt[0]_i_1__2_n_0\ + ); +\converge_cnt_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[0]_i_3__0_n_4\, + Q => converge_cnt_reg(3), + R => \converge_cnt[0]_i_1__2_n_0\ + ); +\converge_cnt_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[4]_i_1__0_n_7\, + Q => converge_cnt_reg(4), + R => \converge_cnt[0]_i_1__2_n_0\ + ); +\converge_cnt_reg[4]_i_1__0\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[0]_i_3__0_n_0\, + CO(3) => \converge_cnt_reg[4]_i_1__0_n_0\, + CO(2) => \converge_cnt_reg[4]_i_1__0_n_1\, + CO(1) => \converge_cnt_reg[4]_i_1__0_n_2\, + CO(0) => \converge_cnt_reg[4]_i_1__0_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3) => \converge_cnt_reg[4]_i_1__0_n_4\, + O(2) => \converge_cnt_reg[4]_i_1__0_n_5\, + O(1) => \converge_cnt_reg[4]_i_1__0_n_6\, + O(0) => \converge_cnt_reg[4]_i_1__0_n_7\, + S(3 downto 0) => converge_cnt_reg(7 downto 4) + ); +\converge_cnt_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[4]_i_1__0_n_6\, + Q => converge_cnt_reg(5), + R => \converge_cnt[0]_i_1__2_n_0\ + ); +\converge_cnt_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[4]_i_1__0_n_5\, + Q => converge_cnt_reg(6), + R => \converge_cnt[0]_i_1__2_n_0\ + ); +\converge_cnt_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[4]_i_1__0_n_4\, + Q => converge_cnt_reg(7), + R => \converge_cnt[0]_i_1__2_n_0\ + ); +\converge_cnt_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[8]_i_1__0_n_7\, + Q => converge_cnt_reg(8), + R => \converge_cnt[0]_i_1__2_n_0\ + ); +\converge_cnt_reg[8]_i_1__0\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[4]_i_1__0_n_0\, + CO(3) => \converge_cnt_reg[8]_i_1__0_n_0\, + CO(2) => \converge_cnt_reg[8]_i_1__0_n_1\, + CO(1) => \converge_cnt_reg[8]_i_1__0_n_2\, + CO(0) => \converge_cnt_reg[8]_i_1__0_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3) => \converge_cnt_reg[8]_i_1__0_n_4\, + O(2) => \converge_cnt_reg[8]_i_1__0_n_5\, + O(1) => \converge_cnt_reg[8]_i_1__0_n_6\, + O(0) => \converge_cnt_reg[8]_i_1__0_n_7\, + S(3 downto 0) => converge_cnt_reg(11 downto 8) + ); +\converge_cnt_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[8]_i_1__0_n_6\, + Q => converge_cnt_reg(9), + R => \converge_cnt[0]_i_1__2_n_0\ + ); +\converge_gen3_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"C8" + ) + port map ( + I0 => rxeq_adapt_done_reg2, + I1 => rate_gen3_reg2, + I2 => converge_gen3_reg_n_0, + O => \converge_gen3_i_1__0_n_0\ + ); +converge_gen3_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \converge_gen3_i_1__0_n_0\, + Q => converge_gen3_reg_n_0, + R => RST_CPLLRESET + ); +\gt_rx_phy_status_q_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFFA8FF" + ) + port map ( + I0 => RST_PHYSTATUS(0), + I1 => rate_idle_reg2, + I2 => rate_rxsync_reg2, + I3 => rst_idle_reg2, + I4 => rate_done_reg2, + O => gt_rx_phy_status_wire_filter(0) + ); +\gt_rxvalid_q_i_3__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"D000000000000000" + ) + port map ( + I0 => gt_rx_elec_idle_wire_filter(0), + I1 => pipe_rx1_valid_gt, + I2 => \gt_rxvalid_q_i_4__0_n_0\, + I3 => gt_rxvalid_1, + I4 => rst_idle_reg2, + I5 => rate_idle_reg2, + O => gt_rxvalid_q_reg + ); +\gt_rxvalid_q_i_4__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"8000" + ) + port map ( + I0 => rxvalid_cnt_reg(0), + I1 => rxvalid_cnt_reg(1), + I2 => rxvalid_cnt_reg(2), + I3 => rxvalid_cnt_reg(3), + O => \gt_rxvalid_q_i_4__0_n_0\ + ); +\gtx_channel.gtxe2_channel_i_i_48\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFF00000800" + ) + port map ( + I0 => \gtx_channel.gtxe2_channel_i_i_53_n_0\, + I1 => \gtx_channel.gtxe2_channel_i_i_54_n_0\, + I2 => \gtx_channel.gtxe2_channel_i_i_55_n_0\, + I3 => \gtx_channel.gtxe2_channel_i_i_56_n_0\, + I4 => \gtx_channel.gtxe2_channel_i_i_57_n_0\, + I5 => converge_gen3_reg_n_0, + O => user_rx_converge(0) + ); +\gtx_channel.gtxe2_channel_i_i_53\: unisim.vcomponents.LUT3 + generic map( + INIT => X"01" + ) + port map ( + I0 => converge_cnt_reg(20), + I1 => converge_cnt_reg(14), + I2 => converge_cnt_reg(12), + O => \gtx_channel.gtxe2_channel_i_i_53_n_0\ + ); +\gtx_channel.gtxe2_channel_i_i_54\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0100" + ) + port map ( + I0 => converge_cnt_reg(1), + I1 => converge_cnt_reg(0), + I2 => converge_cnt_reg(2), + I3 => converge_cnt_reg(3), + O => \gtx_channel.gtxe2_channel_i_i_54_n_0\ + ); +\gtx_channel.gtxe2_channel_i_i_55\: unisim.vcomponents.LUT4 + generic map( + INIT => X"7FFF" + ) + port map ( + I0 => converge_cnt_reg(9), + I1 => converge_cnt_reg(8), + I2 => converge_cnt_reg(11), + I3 => converge_cnt_reg(10), + O => \gtx_channel.gtxe2_channel_i_i_55_n_0\ + ); +\gtx_channel.gtxe2_channel_i_i_56\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0001000000000000" + ) + port map ( + I0 => converge_cnt_reg(6), + I1 => converge_cnt_reg(7), + I2 => converge_cnt_reg(4), + I3 => converge_cnt_reg(5), + I4 => converge_cnt_reg(21), + I5 => converge_cnt_reg(13), + O => \gtx_channel.gtxe2_channel_i_i_56_n_0\ + ); +\gtx_channel.gtxe2_channel_i_i_57\: unisim.vcomponents.LUT5 + generic map( + INIT => X"7FFFFFFF" + ) + port map ( + I0 => converge_cnt_reg(15), + I1 => converge_cnt_reg(18), + I2 => converge_cnt_reg(19), + I3 => converge_cnt_reg(17), + I4 => converge_cnt_reg(16), + O => \gtx_channel.gtxe2_channel_i_i_57_n_0\ + ); +\oobclk_div.oobclk_cnt[0]_i_1__0\: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => oobclk_cnt(0), + O => \p_1_in__0\(0) + ); +\oobclk_div.oobclk_cnt[1]_i_1__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"6" + ) + port map ( + I0 => oobclk_cnt(0), + I1 => oobclk_cnt(1), + O => \p_1_in__0\(1) + ); +\oobclk_div.oobclk_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_oobclk_in, + CE => '1', + D => \p_1_in__0\(0), + Q => oobclk_cnt(0), + R => RST_CPLLRESET + ); +\oobclk_div.oobclk_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_oobclk_in, + CE => '1', + D => \p_1_in__0\(1), + Q => oobclk_cnt(1), + R => RST_CPLLRESET + ); +\oobclk_div.oobclk_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => oobclk_cnt(1), + I1 => pclk_sel_reg2, + I2 => oobclk_cnt(0), + O => \oobclk_div.oobclk_i_1__0_n_0\ + ); +\oobclk_div.oobclk_reg\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_oobclk_in, + CE => '1', + D => \oobclk_div.oobclk_i_1__0_n_0\, + Q => USER_OOBCLK, + R => RST_CPLLRESET + ); +pclk_sel_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_pclk_sel_out(0), + Q => pclk_sel_reg1, + R => RST_CPLLRESET + ); +pclk_sel_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pclk_sel_reg1, + Q => pclk_sel_reg2, + R => RST_CPLLRESET + ); +rate_done_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => USER_RATE_DONE, + Q => rate_done_reg1, + R => RST_RXUSRCLK_RESET + ); +rate_done_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rate_done_reg1, + Q => rate_done_reg2, + R => RST_RXUSRCLK_RESET + ); +rate_gen3_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => USER_RATE_GEN3, + Q => rate_gen3_reg1, + R => RST_RXUSRCLK_RESET + ); +rate_gen3_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rate_gen3_reg1, + Q => rate_gen3_reg2, + R => RST_RXUSRCLK_RESET + ); +rate_idle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => USER_RATE_IDLE, + Q => rate_idle_reg1, + R => RST_RXUSRCLK_RESET + ); +rate_idle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rate_idle_reg1, + Q => rate_idle_reg2, + R => RST_RXUSRCLK_RESET + ); +rate_rxsync_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => USER_RATE_RXSYNC, + Q => rate_rxsync_reg1, + R => RST_RXUSRCLK_RESET + ); +rate_rxsync_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rate_rxsync_reg1, + Q => rate_rxsync_reg2, + R => RST_RXUSRCLK_RESET + ); +\resetdone_reg1[1]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => rxresetdone_reg2, + I1 => txresetdone_reg2, + O => RST_RESETDONE(0) + ); +resetovrd_start_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_RESETOVRD_START, + Q => resetovrd_start_reg1, + R => RST_CPLLRESET + ); +resetovrd_start_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => resetovrd_start_reg1, + Q => resetovrd_start_reg2, + R => RST_CPLLRESET + ); +rst_idle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => RST_IDLE, + Q => rst_idle_reg1, + R => RST_RXUSRCLK_RESET + ); +rst_idle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rst_idle_reg1, + Q => rst_idle_reg2, + R => RST_RXUSRCLK_RESET + ); +\rxcdrlock_cnt[0]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"D0505050" + ) + port map ( + I0 => rxcdrlock_cnt_reg(0), + I1 => rxcdrlock_cnt_reg(2), + I2 => rxcdrlock_reg2, + I3 => rxcdrlock_cnt_reg(1), + I4 => rxcdrlock_cnt_reg(3), + O => \p_0_in__0\(0) + ); +\rxcdrlock_cnt[1]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"8FF00000" + ) + port map ( + I0 => rxcdrlock_cnt_reg(3), + I1 => rxcdrlock_cnt_reg(2), + I2 => rxcdrlock_cnt_reg(0), + I3 => rxcdrlock_cnt_reg(1), + I4 => rxcdrlock_reg2, + O => \p_0_in__0\(1) + ); +\rxcdrlock_cnt[2]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"F8780000" + ) + port map ( + I0 => rxcdrlock_cnt_reg(0), + I1 => rxcdrlock_cnt_reg(1), + I2 => rxcdrlock_cnt_reg(2), + I3 => rxcdrlock_cnt_reg(3), + I4 => rxcdrlock_reg2, + O => \p_0_in__0\(2) + ); +\rxcdrlock_cnt[3]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FF008000" + ) + port map ( + I0 => rxcdrlock_cnt_reg(0), + I1 => rxcdrlock_cnt_reg(1), + I2 => rxcdrlock_cnt_reg(2), + I3 => rxcdrlock_reg2, + I4 => rxcdrlock_cnt_reg(3), + O => \p_0_in__0\(3) + ); +\rxcdrlock_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(0), + Q => rxcdrlock_cnt_reg(0), + R => RST_CPLLRESET + ); +\rxcdrlock_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(1), + Q => rxcdrlock_cnt_reg(1), + R => RST_CPLLRESET + ); +\rxcdrlock_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(2), + Q => rxcdrlock_cnt_reg(2), + R => RST_CPLLRESET + ); +\rxcdrlock_cnt_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(3), + Q => rxcdrlock_cnt_reg(3), + R => RST_CPLLRESET + ); +\rxcdrlock_reg1[1]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"80000000" + ) + port map ( + I0 => rxcdrlock_cnt_reg(2), + I1 => rxcdrlock_cnt_reg(3), + I2 => gt_rxcdrlock_1, + I3 => rxcdrlock_cnt_reg(1), + I4 => rxcdrlock_cnt_reg(0), + O => RST_RXCDRLOCK(0) + ); +rxcdrlock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => gt_rxcdrlock_1, + Q => rxcdrlock_reg1, + R => RST_CPLLRESET + ); +rxcdrlock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxcdrlock_reg1, + Q => rxcdrlock_reg2, + R => RST_CPLLRESET + ); +rxeq_adapt_done_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_RXEQ_ADAPT_DONE, + Q => rxeq_adapt_done_reg1, + R => RST_CPLLRESET + ); +rxeq_adapt_done_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_adapt_done_reg1, + Q => rxeq_adapt_done_reg2, + R => RST_CPLLRESET + ); +rxresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_RXRESETDONE, + Q => rxresetdone_reg1, + R => RST_CPLLRESET + ); +rxresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxresetdone_reg1, + Q => rxresetdone_reg2, + R => RST_CPLLRESET + ); +rxstatus_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rxstatus_reg1_reg_0(0), + Q => rxstatus_reg1, + R => RST_RXUSRCLK_RESET + ); +rxstatus_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rxstatus_reg1, + Q => rxstatus_reg2, + R => RST_RXUSRCLK_RESET + ); +\rxvalid_cnt[0]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"C404040404040404" + ) + port map ( + I0 => rxstatus_reg2, + I1 => rxvalid_reg2, + I2 => rxvalid_cnt_reg(0), + I3 => rxvalid_cnt_reg(1), + I4 => rxvalid_cnt_reg(2), + I5 => rxvalid_cnt_reg(3), + O => \p_0_in__0__0\(0) + ); +\rxvalid_cnt[1]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"808000F000F00000" + ) + port map ( + I0 => rxvalid_cnt_reg(3), + I1 => rxvalid_cnt_reg(2), + I2 => rxvalid_reg2, + I3 => rxstatus_reg2, + I4 => rxvalid_cnt_reg(1), + I5 => rxvalid_cnt_reg(0), + O => \p_0_in__0__0\(1) + ); +\rxvalid_cnt[2]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"80BF000000C00000" + ) + port map ( + I0 => rxvalid_cnt_reg(3), + I1 => rxvalid_cnt_reg(0), + I2 => rxvalid_cnt_reg(1), + I3 => rxstatus_reg2, + I4 => rxvalid_reg2, + I5 => rxvalid_cnt_reg(2), + O => \p_0_in__0__0\(2) + ); +\rxvalid_cnt[3]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"8C08080808080808" + ) + port map ( + I0 => rxvalid_cnt_reg(3), + I1 => rxvalid_reg2, + I2 => rxstatus_reg2, + I3 => rxvalid_cnt_reg(2), + I4 => rxvalid_cnt_reg(1), + I5 => rxvalid_cnt_reg(0), + O => \p_0_in__0__0\(3) + ); +\rxvalid_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => \p_0_in__0__0\(0), + Q => rxvalid_cnt_reg(0), + R => RST_RXUSRCLK_RESET + ); +\rxvalid_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => \p_0_in__0__0\(1), + Q => rxvalid_cnt_reg(1), + R => RST_RXUSRCLK_RESET + ); +\rxvalid_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => \p_0_in__0__0\(2), + Q => rxvalid_cnt_reg(2), + R => RST_RXUSRCLK_RESET + ); +\rxvalid_cnt_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => \p_0_in__0__0\(3), + Q => rxvalid_cnt_reg(3), + R => RST_RXUSRCLK_RESET + ); +rxvalid_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => gt_rxvalid_1, + Q => rxvalid_reg1, + R => RST_RXUSRCLK_RESET + ); +rxvalid_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rxvalid_reg1, + Q => rxvalid_reg2, + R => RST_RXUSRCLK_RESET + ); +txcompliance_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_TXCOMPLIANCE(0), + Q => txcompliance_reg1, + R => RST_CPLLRESET + ); +txcompliance_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcompliance_reg1, + Q => txcompliance_reg2, + R => RST_CPLLRESET + ); +txelecidle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_TXELECIDLE(0), + Q => txelecidle_reg1, + R => RST_CPLLRESET + ); +txelecidle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txelecidle_reg1, + Q => txelecidle_reg2, + R => RST_CPLLRESET + ); +txphaligndone_reg1_i_2: unisim.vcomponents.LUT2 + generic map( + INIT => X"7" + ) + port map ( + I0 => txcompliance_reg2, + I1 => txelecidle_reg2, + O => user_active_lane_1 + ); +txresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_TXRESETDONE, + Q => txresetdone_reg1, + R => RST_CPLLRESET + ); +txresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txresetdone_reg1, + Q => txresetdone_reg2, + R => RST_CPLLRESET + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pipe_user_48 is + port ( + reg_clock_locked_reg : out STD_LOGIC; + gt_rxvalid_q_reg : out STD_LOGIC; + txcompliance_reg2_reg_0 : out STD_LOGIC; + txcompliance_reg2_reg_1 : out STD_LOGIC; + txelecidle_reg2_reg_0 : out STD_LOGIC; + txcompliance_reg2_reg_2 : out STD_LOGIC; + USER_OOBCLK : out STD_LOGIC; + RST_RXCDRLOCK : out STD_LOGIC_VECTOR ( 0 to 0 ); + gt_rx_phy_status_wire_filter : out STD_LOGIC_VECTOR ( 0 to 0 ); + \converge_cnt_reg[15]_0\ : out STD_LOGIC; + \converge_cnt_reg[1]_0\ : out STD_LOGIC; + \converge_cnt_reg[6]_0\ : out STD_LOGIC; + RST_RESETDONE : out STD_LOGIC_VECTOR ( 0 to 0 ); + user_active_lane_2 : out STD_LOGIC; + converge_gen3_reg_0 : out STD_LOGIC; + reg_clock_locked : in STD_LOGIC; + \out\ : in STD_LOGIC; + phy_rdy_n_int_reg : in STD_LOGIC; + phy_rdy_n_int_reg_0 : in STD_LOGIC; + gt_rx_elec_idle_wire_filter : in STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_rx2_valid_gt : in STD_LOGIC; + gt_rxvalid_2 : in STD_LOGIC; + txphaligndone_reg1_reg : in STD_LOGIC; + txphaligndone_reg1_reg_0 : in STD_LOGIC; + txphaligndone_reg1_reg_1 : in STD_LOGIC; + txphaligndone_reg1_reg_2 : in STD_LOGIC; + txphinitdone_reg1_reg : in STD_LOGIC; + txphinitdone_reg1_reg_0 : in STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC; + pipe_pclk_sel_out : in STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_pclk_in : in STD_LOGIC; + pipe_oobclk_in : in STD_LOGIC; + USER_TXRESETDONE : in STD_LOGIC; + USER_RXRESETDONE : in STD_LOGIC; + PIPE_TXELECIDLE : in STD_LOGIC_VECTOR ( 0 to 0 ); + PIPE_TXCOMPLIANCE : in STD_LOGIC_VECTOR ( 0 to 0 ); + gt_rxcdrlock_2 : in STD_LOGIC; + RST_RXUSRCLK_RESET : in STD_LOGIC; + pipe_rxusrclk_in : in STD_LOGIC; + rxstatus_reg1_reg_0 : in STD_LOGIC_VECTOR ( 0 to 0 ); + RST_IDLE : in STD_LOGIC; + USER_RATE_IDLE : in STD_LOGIC; + USER_RATE_RXSYNC : in STD_LOGIC; + USER_RATE_DONE : in STD_LOGIC; + rate_gen3_2 : in STD_LOGIC; + USER_RXEQ_ADAPT_DONE : in STD_LOGIC; + USER_RESETOVRD_START : in STD_LOGIC; + RST_PHYSTATUS : in STD_LOGIC_VECTOR ( 0 to 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pipe_user_48 : entity is "pcie_7x_0_pipe_user"; +end pcie_7x_0_pcie_7x_0_pipe_user_48; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pipe_user_48 is + signal \converge_cnt[0]_i_1__4_n_0\ : STD_LOGIC; + signal \converge_cnt[0]_i_4__1_n_0\ : STD_LOGIC; + signal \converge_cnt[0]_i_5__1_n_0\ : STD_LOGIC; + signal \converge_cnt[0]_i_6__1_n_0\ : STD_LOGIC; + signal \converge_cnt[0]_i_7_n_0\ : STD_LOGIC; + signal converge_cnt_reg : STD_LOGIC_VECTOR ( 21 downto 0 ); + signal \converge_cnt_reg[0]_i_3__1_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3__1_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3__1_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3__1_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3__1_n_4\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3__1_n_5\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3__1_n_6\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3__1_n_7\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1__1_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1__1_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1__1_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1__1_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1__1_n_4\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1__1_n_5\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1__1_n_6\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1__1_n_7\ : STD_LOGIC; + signal \^converge_cnt_reg[15]_0\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1__1_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1__1_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1__1_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1__1_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1__1_n_4\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1__1_n_5\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1__1_n_6\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1__1_n_7\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_1__1_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_1__1_n_6\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_1__1_n_7\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1__1_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1__1_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1__1_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1__1_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1__1_n_4\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1__1_n_5\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1__1_n_6\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1__1_n_7\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1__1_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1__1_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1__1_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1__1_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1__1_n_4\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1__1_n_5\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1__1_n_6\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1__1_n_7\ : STD_LOGIC; + signal \converge_gen3_i_1__1_n_0\ : STD_LOGIC; + signal \^converge_gen3_reg_0\ : STD_LOGIC; + signal \gt_rxvalid_q_i_4__1_n_0\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_i_64_n_0\ : STD_LOGIC; + signal oobclk_cnt : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal \oobclk_div.oobclk_i_1__1_n_0\ : STD_LOGIC; + signal \p_0_in__0\ : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal \p_0_in__0__0\ : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal \p_1_in__0\ : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pclk_sel_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of pclk_sel_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of pclk_sel_reg1 : signal is "true"; + signal pclk_sel_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of pclk_sel_reg2 : signal is "NO"; + attribute async_reg of pclk_sel_reg2 : signal is "true"; + signal rate_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_done_reg1 : signal is "NO"; + attribute async_reg of rate_done_reg1 : signal is "true"; + signal rate_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_done_reg2 : signal is "NO"; + attribute async_reg of rate_done_reg2 : signal is "true"; + signal rate_gen3_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_gen3_reg1 : signal is "NO"; + attribute async_reg of rate_gen3_reg1 : signal is "true"; + signal rate_gen3_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_gen3_reg2 : signal is "NO"; + attribute async_reg of rate_gen3_reg2 : signal is "true"; + signal rate_idle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_idle_reg1 : signal is "NO"; + attribute async_reg of rate_idle_reg1 : signal is "true"; + signal rate_idle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_idle_reg2 : signal is "NO"; + attribute async_reg of rate_idle_reg2 : signal is "true"; + signal rate_rxsync_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_rxsync_reg1 : signal is "NO"; + attribute async_reg of rate_rxsync_reg1 : signal is "true"; + signal rate_rxsync_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_rxsync_reg2 : signal is "NO"; + attribute async_reg of rate_rxsync_reg2 : signal is "true"; + signal resetovrd_start_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of resetovrd_start_reg1 : signal is "NO"; + attribute async_reg of resetovrd_start_reg1 : signal is "true"; + signal resetovrd_start_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of resetovrd_start_reg2 : signal is "NO"; + attribute async_reg of resetovrd_start_reg2 : signal is "true"; + signal rst_idle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rst_idle_reg1 : signal is "NO"; + attribute async_reg of rst_idle_reg1 : signal is "true"; + signal rst_idle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rst_idle_reg2 : signal is "NO"; + attribute async_reg of rst_idle_reg2 : signal is "true"; + signal rxcdrlock_cnt_reg : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal rxcdrlock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxcdrlock_reg1 : signal is "NO"; + attribute async_reg of rxcdrlock_reg1 : signal is "true"; + signal rxcdrlock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxcdrlock_reg2 : signal is "NO"; + attribute async_reg of rxcdrlock_reg2 : signal is "true"; + signal rxeq_adapt_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxeq_adapt_done_reg1 : signal is "NO"; + attribute async_reg of rxeq_adapt_done_reg1 : signal is "true"; + signal rxeq_adapt_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxeq_adapt_done_reg2 : signal is "NO"; + attribute async_reg of rxeq_adapt_done_reg2 : signal is "true"; + signal rxresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxresetdone_reg1 : signal is "NO"; + attribute async_reg of rxresetdone_reg1 : signal is "true"; + signal rxresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxresetdone_reg2 : signal is "NO"; + attribute async_reg of rxresetdone_reg2 : signal is "true"; + signal rxstatus_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxstatus_reg1 : signal is "NO"; + attribute async_reg of rxstatus_reg1 : signal is "true"; + signal rxstatus_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxstatus_reg2 : signal is "NO"; + attribute async_reg of rxstatus_reg2 : signal is "true"; + signal rxvalid_cnt_reg : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal rxvalid_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxvalid_reg1 : signal is "NO"; + attribute async_reg of rxvalid_reg1 : signal is "true"; + signal rxvalid_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxvalid_reg2 : signal is "NO"; + attribute async_reg of rxvalid_reg2 : signal is "true"; + signal sel : STD_LOGIC; + signal txcompliance_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txcompliance_reg1 : signal is "NO"; + attribute async_reg of txcompliance_reg1 : signal is "true"; + signal txcompliance_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txcompliance_reg2 : signal is "NO"; + attribute async_reg of txcompliance_reg2 : signal is "true"; + signal txelecidle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txelecidle_reg1 : signal is "NO"; + attribute async_reg of txelecidle_reg1 : signal is "true"; + signal txelecidle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txelecidle_reg2 : signal is "NO"; + attribute async_reg of txelecidle_reg2 : signal is "true"; + signal txresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txresetdone_reg1 : signal is "NO"; + attribute async_reg of txresetdone_reg1 : signal is "true"; + signal txresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txresetdone_reg2 : signal is "NO"; + attribute async_reg of txresetdone_reg2 : signal is "true"; + signal \NLW_converge_cnt_reg[20]_i_1__1_CO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_converge_cnt_reg[20]_i_1__1_O_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 2 ); + attribute ADDER_THRESHOLD : integer; + attribute ADDER_THRESHOLD of \converge_cnt_reg[0]_i_3__1\ : label is 11; + attribute ADDER_THRESHOLD of \converge_cnt_reg[12]_i_1__1\ : label is 11; + attribute ADDER_THRESHOLD of \converge_cnt_reg[16]_i_1__1\ : label is 11; + attribute ADDER_THRESHOLD of \converge_cnt_reg[20]_i_1__1\ : label is 11; + attribute ADDER_THRESHOLD of \converge_cnt_reg[4]_i_1__1\ : label is 11; + attribute ADDER_THRESHOLD of \converge_cnt_reg[8]_i_1__1\ : label is 11; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \oobclk_div.oobclk_cnt[0]_i_1__1\ : label is "soft_lutpair162"; + attribute SOFT_HLUTNM of \oobclk_div.oobclk_cnt[1]_i_1__1\ : label is "soft_lutpair162"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of pclk_sel_reg1_reg : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of pclk_sel_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of pclk_sel_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of pclk_sel_reg2_reg : label is std.standard.true; + attribute KEEP of pclk_sel_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of pclk_sel_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_done_reg1_reg : label is std.standard.true; + attribute KEEP of rate_done_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_done_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_done_reg2_reg : label is std.standard.true; + attribute KEEP of rate_done_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_done_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_gen3_reg1_reg : label is std.standard.true; + attribute KEEP of rate_gen3_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_gen3_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_gen3_reg2_reg : label is std.standard.true; + attribute KEEP of rate_gen3_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_gen3_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_idle_reg1_reg : label is std.standard.true; + attribute KEEP of rate_idle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_idle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_idle_reg2_reg : label is std.standard.true; + attribute KEEP of rate_idle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_idle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_rxsync_reg1_reg : label is std.standard.true; + attribute KEEP of rate_rxsync_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_rxsync_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_rxsync_reg2_reg : label is std.standard.true; + attribute KEEP of rate_rxsync_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_rxsync_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of resetovrd_start_reg1_reg : label is std.standard.true; + attribute KEEP of resetovrd_start_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of resetovrd_start_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of resetovrd_start_reg2_reg : label is std.standard.true; + attribute KEEP of resetovrd_start_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of resetovrd_start_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rst_idle_reg1_reg : label is std.standard.true; + attribute KEEP of rst_idle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rst_idle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rst_idle_reg2_reg : label is std.standard.true; + attribute KEEP of rst_idle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rst_idle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxcdrlock_reg1_reg : label is std.standard.true; + attribute KEEP of rxcdrlock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxcdrlock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxcdrlock_reg2_reg : label is std.standard.true; + attribute KEEP of rxcdrlock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxcdrlock_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxeq_adapt_done_reg1_reg : label is std.standard.true; + attribute KEEP of rxeq_adapt_done_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxeq_adapt_done_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxeq_adapt_done_reg2_reg : label is std.standard.true; + attribute KEEP of rxeq_adapt_done_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxeq_adapt_done_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of rxresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of rxresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxresetdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxstatus_reg1_reg : label is std.standard.true; + attribute KEEP of rxstatus_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxstatus_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxstatus_reg2_reg : label is std.standard.true; + attribute KEEP of rxstatus_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxstatus_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxvalid_reg1_reg : label is std.standard.true; + attribute KEEP of rxvalid_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxvalid_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxvalid_reg2_reg : label is std.standard.true; + attribute KEEP of rxvalid_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxvalid_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txcompliance_reg1_reg : label is std.standard.true; + attribute KEEP of txcompliance_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txcompliance_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txcompliance_reg2_reg : label is std.standard.true; + attribute KEEP of txcompliance_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txcompliance_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txelecidle_reg1_reg : label is std.standard.true; + attribute KEEP of txelecidle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txelecidle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txelecidle_reg2_reg : label is std.standard.true; + attribute KEEP of txelecidle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txelecidle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of txresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of txresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txresetdone_reg2_reg : label is "NO"; +begin + \converge_cnt_reg[15]_0\ <= \^converge_cnt_reg[15]_0\; + converge_gen3_reg_0 <= \^converge_gen3_reg_0\; + txcompliance_reg2_reg_1 <= txcompliance_reg2; + txelecidle_reg2_reg_0 <= txelecidle_reg2; +\FSM_onehot_txsync_fsm.fsm_tx[5]_i_2__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"7" + ) + port map ( + I0 => txcompliance_reg2, + I1 => txelecidle_reg2, + O => user_active_lane_2 + ); +\converge_cnt[0]_i_1__4\: unisim.vcomponents.LUT4 + generic map( + INIT => X"EFFF" + ) + port map ( + I0 => rate_gen3_reg2, + I1 => RST_CPLLRESET, + I2 => rst_idle_reg2, + I3 => rate_idle_reg2, + O => \converge_cnt[0]_i_1__4_n_0\ + ); +\converge_cnt[0]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFF5555555D" + ) + port map ( + I0 => converge_cnt_reg(21), + I1 => \converge_cnt[0]_i_4__1_n_0\, + I2 => converge_cnt_reg(12), + I3 => converge_cnt_reg(14), + I4 => converge_cnt_reg(20), + I5 => \converge_cnt[0]_i_5__1_n_0\, + O => sel + ); +\converge_cnt[0]_i_4__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000001" + ) + port map ( + I0 => converge_cnt_reg(3), + I1 => converge_cnt_reg(4), + I2 => converge_cnt_reg(5), + I3 => converge_cnt_reg(7), + I4 => converge_cnt_reg(6), + O => \converge_cnt[0]_i_4__1_n_0\ + ); +\converge_cnt[0]_i_5__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0A0B0A0F0A0B0A0B" + ) + port map ( + I0 => \^converge_cnt_reg[15]_0\, + I1 => converge_cnt_reg(13), + I2 => converge_cnt_reg(20), + I3 => converge_cnt_reg(14), + I4 => converge_cnt_reg(12), + I5 => \converge_cnt[0]_i_7_n_0\, + O => \converge_cnt[0]_i_5__1_n_0\ + ); +\converge_cnt[0]_i_6__1\: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => converge_cnt_reg(0), + O => \converge_cnt[0]_i_6__1_n_0\ + ); +\converge_cnt[0]_i_7\: unisim.vcomponents.LUT4 + generic map( + INIT => X"7FFF" + ) + port map ( + I0 => converge_cnt_reg(9), + I1 => converge_cnt_reg(8), + I2 => converge_cnt_reg(11), + I3 => converge_cnt_reg(10), + O => \converge_cnt[0]_i_7_n_0\ + ); +\converge_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[0]_i_3__1_n_7\, + Q => converge_cnt_reg(0), + R => \converge_cnt[0]_i_1__4_n_0\ + ); +\converge_cnt_reg[0]_i_3__1\: unisim.vcomponents.CARRY4 + port map ( + CI => '0', + CO(3) => \converge_cnt_reg[0]_i_3__1_n_0\, + CO(2) => \converge_cnt_reg[0]_i_3__1_n_1\, + CO(1) => \converge_cnt_reg[0]_i_3__1_n_2\, + CO(0) => \converge_cnt_reg[0]_i_3__1_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0001", + O(3) => \converge_cnt_reg[0]_i_3__1_n_4\, + O(2) => \converge_cnt_reg[0]_i_3__1_n_5\, + O(1) => \converge_cnt_reg[0]_i_3__1_n_6\, + O(0) => \converge_cnt_reg[0]_i_3__1_n_7\, + S(3 downto 1) => converge_cnt_reg(3 downto 1), + S(0) => \converge_cnt[0]_i_6__1_n_0\ + ); +\converge_cnt_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[8]_i_1__1_n_5\, + Q => converge_cnt_reg(10), + R => \converge_cnt[0]_i_1__4_n_0\ + ); +\converge_cnt_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[8]_i_1__1_n_4\, + Q => converge_cnt_reg(11), + R => \converge_cnt[0]_i_1__4_n_0\ + ); +\converge_cnt_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[12]_i_1__1_n_7\, + Q => converge_cnt_reg(12), + R => \converge_cnt[0]_i_1__4_n_0\ + ); +\converge_cnt_reg[12]_i_1__1\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[8]_i_1__1_n_0\, + CO(3) => \converge_cnt_reg[12]_i_1__1_n_0\, + CO(2) => \converge_cnt_reg[12]_i_1__1_n_1\, + CO(1) => \converge_cnt_reg[12]_i_1__1_n_2\, + CO(0) => \converge_cnt_reg[12]_i_1__1_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3) => \converge_cnt_reg[12]_i_1__1_n_4\, + O(2) => \converge_cnt_reg[12]_i_1__1_n_5\, + O(1) => \converge_cnt_reg[12]_i_1__1_n_6\, + O(0) => \converge_cnt_reg[12]_i_1__1_n_7\, + S(3 downto 0) => converge_cnt_reg(15 downto 12) + ); +\converge_cnt_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[12]_i_1__1_n_6\, + Q => converge_cnt_reg(13), + R => \converge_cnt[0]_i_1__4_n_0\ + ); +\converge_cnt_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[12]_i_1__1_n_5\, + Q => converge_cnt_reg(14), + R => \converge_cnt[0]_i_1__4_n_0\ + ); +\converge_cnt_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[12]_i_1__1_n_4\, + Q => converge_cnt_reg(15), + R => \converge_cnt[0]_i_1__4_n_0\ + ); +\converge_cnt_reg[16]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[16]_i_1__1_n_7\, + Q => converge_cnt_reg(16), + R => \converge_cnt[0]_i_1__4_n_0\ + ); +\converge_cnt_reg[16]_i_1__1\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[12]_i_1__1_n_0\, + CO(3) => \converge_cnt_reg[16]_i_1__1_n_0\, + CO(2) => \converge_cnt_reg[16]_i_1__1_n_1\, + CO(1) => \converge_cnt_reg[16]_i_1__1_n_2\, + CO(0) => \converge_cnt_reg[16]_i_1__1_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3) => \converge_cnt_reg[16]_i_1__1_n_4\, + O(2) => \converge_cnt_reg[16]_i_1__1_n_5\, + O(1) => \converge_cnt_reg[16]_i_1__1_n_6\, + O(0) => \converge_cnt_reg[16]_i_1__1_n_7\, + S(3 downto 0) => converge_cnt_reg(19 downto 16) + ); +\converge_cnt_reg[17]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[16]_i_1__1_n_6\, + Q => converge_cnt_reg(17), + R => \converge_cnt[0]_i_1__4_n_0\ + ); +\converge_cnt_reg[18]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[16]_i_1__1_n_5\, + Q => converge_cnt_reg(18), + R => \converge_cnt[0]_i_1__4_n_0\ + ); +\converge_cnt_reg[19]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[16]_i_1__1_n_4\, + Q => converge_cnt_reg(19), + R => \converge_cnt[0]_i_1__4_n_0\ + ); +\converge_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[0]_i_3__1_n_6\, + Q => converge_cnt_reg(1), + R => \converge_cnt[0]_i_1__4_n_0\ + ); +\converge_cnt_reg[20]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[20]_i_1__1_n_7\, + Q => converge_cnt_reg(20), + R => \converge_cnt[0]_i_1__4_n_0\ + ); +\converge_cnt_reg[20]_i_1__1\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[16]_i_1__1_n_0\, + CO(3 downto 1) => \NLW_converge_cnt_reg[20]_i_1__1_CO_UNCONNECTED\(3 downto 1), + CO(0) => \converge_cnt_reg[20]_i_1__1_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 2) => \NLW_converge_cnt_reg[20]_i_1__1_O_UNCONNECTED\(3 downto 2), + O(1) => \converge_cnt_reg[20]_i_1__1_n_6\, + O(0) => \converge_cnt_reg[20]_i_1__1_n_7\, + S(3 downto 2) => B"00", + S(1 downto 0) => converge_cnt_reg(21 downto 20) + ); +\converge_cnt_reg[21]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[20]_i_1__1_n_6\, + Q => converge_cnt_reg(21), + R => \converge_cnt[0]_i_1__4_n_0\ + ); +\converge_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[0]_i_3__1_n_5\, + Q => converge_cnt_reg(2), + R => \converge_cnt[0]_i_1__4_n_0\ + ); +\converge_cnt_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[0]_i_3__1_n_4\, + Q => converge_cnt_reg(3), + R => \converge_cnt[0]_i_1__4_n_0\ + ); +\converge_cnt_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[4]_i_1__1_n_7\, + Q => converge_cnt_reg(4), + R => \converge_cnt[0]_i_1__4_n_0\ + ); +\converge_cnt_reg[4]_i_1__1\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[0]_i_3__1_n_0\, + CO(3) => \converge_cnt_reg[4]_i_1__1_n_0\, + CO(2) => \converge_cnt_reg[4]_i_1__1_n_1\, + CO(1) => \converge_cnt_reg[4]_i_1__1_n_2\, + CO(0) => \converge_cnt_reg[4]_i_1__1_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3) => \converge_cnt_reg[4]_i_1__1_n_4\, + O(2) => \converge_cnt_reg[4]_i_1__1_n_5\, + O(1) => \converge_cnt_reg[4]_i_1__1_n_6\, + O(0) => \converge_cnt_reg[4]_i_1__1_n_7\, + S(3 downto 0) => converge_cnt_reg(7 downto 4) + ); +\converge_cnt_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[4]_i_1__1_n_6\, + Q => converge_cnt_reg(5), + R => \converge_cnt[0]_i_1__4_n_0\ + ); +\converge_cnt_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[4]_i_1__1_n_5\, + Q => converge_cnt_reg(6), + R => \converge_cnt[0]_i_1__4_n_0\ + ); +\converge_cnt_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[4]_i_1__1_n_4\, + Q => converge_cnt_reg(7), + R => \converge_cnt[0]_i_1__4_n_0\ + ); +\converge_cnt_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[8]_i_1__1_n_7\, + Q => converge_cnt_reg(8), + R => \converge_cnt[0]_i_1__4_n_0\ + ); +\converge_cnt_reg[8]_i_1__1\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[4]_i_1__1_n_0\, + CO(3) => \converge_cnt_reg[8]_i_1__1_n_0\, + CO(2) => \converge_cnt_reg[8]_i_1__1_n_1\, + CO(1) => \converge_cnt_reg[8]_i_1__1_n_2\, + CO(0) => \converge_cnt_reg[8]_i_1__1_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3) => \converge_cnt_reg[8]_i_1__1_n_4\, + O(2) => \converge_cnt_reg[8]_i_1__1_n_5\, + O(1) => \converge_cnt_reg[8]_i_1__1_n_6\, + O(0) => \converge_cnt_reg[8]_i_1__1_n_7\, + S(3 downto 0) => converge_cnt_reg(11 downto 8) + ); +\converge_cnt_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[8]_i_1__1_n_6\, + Q => converge_cnt_reg(9), + R => \converge_cnt[0]_i_1__4_n_0\ + ); +\converge_gen3_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"C8" + ) + port map ( + I0 => rxeq_adapt_done_reg2, + I1 => rate_gen3_reg2, + I2 => \^converge_gen3_reg_0\, + O => \converge_gen3_i_1__1_n_0\ + ); +converge_gen3_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \converge_gen3_i_1__1_n_0\, + Q => \^converge_gen3_reg_0\, + R => RST_CPLLRESET + ); +\gt_rx_phy_status_q_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFFA8FF" + ) + port map ( + I0 => RST_PHYSTATUS(0), + I1 => rate_idle_reg2, + I2 => rate_rxsync_reg2, + I3 => rst_idle_reg2, + I4 => rate_done_reg2, + O => gt_rx_phy_status_wire_filter(0) + ); +\gt_rxvalid_q_i_3__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"D000000000000000" + ) + port map ( + I0 => gt_rx_elec_idle_wire_filter(0), + I1 => pipe_rx2_valid_gt, + I2 => \gt_rxvalid_q_i_4__1_n_0\, + I3 => gt_rxvalid_2, + I4 => rst_idle_reg2, + I5 => rate_idle_reg2, + O => gt_rxvalid_q_reg + ); +\gt_rxvalid_q_i_4__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"8000" + ) + port map ( + I0 => rxvalid_cnt_reg(0), + I1 => rxvalid_cnt_reg(1), + I2 => rxvalid_cnt_reg(2), + I3 => rxvalid_cnt_reg(3), + O => \gt_rxvalid_q_i_4__1_n_0\ + ); +\gtx_channel.gtxe2_channel_i_i_60\: unisim.vcomponents.LUT5 + generic map( + INIT => X"7FFFFFFF" + ) + port map ( + I0 => converge_cnt_reg(15), + I1 => converge_cnt_reg(18), + I2 => converge_cnt_reg(19), + I3 => converge_cnt_reg(17), + I4 => converge_cnt_reg(16), + O => \^converge_cnt_reg[15]_0\ + ); +\gtx_channel.gtxe2_channel_i_i_61\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0001000000000000" + ) + port map ( + I0 => converge_cnt_reg(6), + I1 => converge_cnt_reg(7), + I2 => converge_cnt_reg(4), + I3 => converge_cnt_reg(5), + I4 => converge_cnt_reg(21), + I5 => converge_cnt_reg(13), + O => \converge_cnt_reg[6]_0\ + ); +\gtx_channel.gtxe2_channel_i_i_62\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000000020000" + ) + port map ( + I0 => \gtx_channel.gtxe2_channel_i_i_64_n_0\, + I1 => converge_cnt_reg(1), + I2 => converge_cnt_reg(0), + I3 => converge_cnt_reg(2), + I4 => converge_cnt_reg(3), + I5 => \converge_cnt[0]_i_7_n_0\, + O => \converge_cnt_reg[1]_0\ + ); +\gtx_channel.gtxe2_channel_i_i_64\: unisim.vcomponents.LUT3 + generic map( + INIT => X"01" + ) + port map ( + I0 => converge_cnt_reg(20), + I1 => converge_cnt_reg(14), + I2 => converge_cnt_reg(12), + O => \gtx_channel.gtxe2_channel_i_i_64_n_0\ + ); +\oobclk_div.oobclk_cnt[0]_i_1__1\: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => oobclk_cnt(0), + O => \p_1_in__0\(0) + ); +\oobclk_div.oobclk_cnt[1]_i_1__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"6" + ) + port map ( + I0 => oobclk_cnt(0), + I1 => oobclk_cnt(1), + O => \p_1_in__0\(1) + ); +\oobclk_div.oobclk_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_oobclk_in, + CE => '1', + D => \p_1_in__0\(0), + Q => oobclk_cnt(0), + R => RST_CPLLRESET + ); +\oobclk_div.oobclk_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_oobclk_in, + CE => '1', + D => \p_1_in__0\(1), + Q => oobclk_cnt(1), + R => RST_CPLLRESET + ); +\oobclk_div.oobclk_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => oobclk_cnt(1), + I1 => pclk_sel_reg2, + I2 => oobclk_cnt(0), + O => \oobclk_div.oobclk_i_1__1_n_0\ + ); +\oobclk_div.oobclk_reg\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_oobclk_in, + CE => '1', + D => \oobclk_div.oobclk_i_1__1_n_0\, + Q => USER_OOBCLK, + R => RST_CPLLRESET + ); +pclk_sel_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_pclk_sel_out(0), + Q => pclk_sel_reg1, + R => RST_CPLLRESET + ); +pclk_sel_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pclk_sel_reg1, + Q => pclk_sel_reg2, + R => RST_CPLLRESET + ); +phy_rdy_n_int_i_1: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000002" + ) + port map ( + I0 => reg_clock_locked, + I1 => rst_idle_reg2, + I2 => \out\, + I3 => phy_rdy_n_int_reg, + I4 => phy_rdy_n_int_reg_0, + O => reg_clock_locked_reg + ); +rate_done_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => USER_RATE_DONE, + Q => rate_done_reg1, + R => RST_RXUSRCLK_RESET + ); +rate_done_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rate_done_reg1, + Q => rate_done_reg2, + R => RST_RXUSRCLK_RESET + ); +rate_gen3_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rate_gen3_2, + Q => rate_gen3_reg1, + R => RST_RXUSRCLK_RESET + ); +rate_gen3_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rate_gen3_reg1, + Q => rate_gen3_reg2, + R => RST_RXUSRCLK_RESET + ); +rate_idle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => USER_RATE_IDLE, + Q => rate_idle_reg1, + R => RST_RXUSRCLK_RESET + ); +rate_idle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rate_idle_reg1, + Q => rate_idle_reg2, + R => RST_RXUSRCLK_RESET + ); +rate_rxsync_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => USER_RATE_RXSYNC, + Q => rate_rxsync_reg1, + R => RST_RXUSRCLK_RESET + ); +rate_rxsync_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rate_rxsync_reg1, + Q => rate_rxsync_reg2, + R => RST_RXUSRCLK_RESET + ); +\resetdone_reg1[2]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => rxresetdone_reg2, + I1 => txresetdone_reg2, + O => RST_RESETDONE(0) + ); +resetovrd_start_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_RESETOVRD_START, + Q => resetovrd_start_reg1, + R => RST_CPLLRESET + ); +resetovrd_start_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => resetovrd_start_reg1, + Q => resetovrd_start_reg2, + R => RST_CPLLRESET + ); +rst_idle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => RST_IDLE, + Q => rst_idle_reg1, + R => RST_RXUSRCLK_RESET + ); +rst_idle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rst_idle_reg1, + Q => rst_idle_reg2, + R => RST_RXUSRCLK_RESET + ); +\rxcdrlock_cnt[0]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"D0505050" + ) + port map ( + I0 => rxcdrlock_cnt_reg(0), + I1 => rxcdrlock_cnt_reg(2), + I2 => rxcdrlock_reg2, + I3 => rxcdrlock_cnt_reg(1), + I4 => rxcdrlock_cnt_reg(3), + O => \p_0_in__0\(0) + ); +\rxcdrlock_cnt[1]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"8FF00000" + ) + port map ( + I0 => rxcdrlock_cnt_reg(3), + I1 => rxcdrlock_cnt_reg(2), + I2 => rxcdrlock_cnt_reg(0), + I3 => rxcdrlock_cnt_reg(1), + I4 => rxcdrlock_reg2, + O => \p_0_in__0\(1) + ); +\rxcdrlock_cnt[2]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"F8780000" + ) + port map ( + I0 => rxcdrlock_cnt_reg(0), + I1 => rxcdrlock_cnt_reg(1), + I2 => rxcdrlock_cnt_reg(2), + I3 => rxcdrlock_cnt_reg(3), + I4 => rxcdrlock_reg2, + O => \p_0_in__0\(2) + ); +\rxcdrlock_cnt[3]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FF008000" + ) + port map ( + I0 => rxcdrlock_cnt_reg(0), + I1 => rxcdrlock_cnt_reg(1), + I2 => rxcdrlock_cnt_reg(2), + I3 => rxcdrlock_reg2, + I4 => rxcdrlock_cnt_reg(3), + O => \p_0_in__0\(3) + ); +\rxcdrlock_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(0), + Q => rxcdrlock_cnt_reg(0), + R => RST_CPLLRESET + ); +\rxcdrlock_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(1), + Q => rxcdrlock_cnt_reg(1), + R => RST_CPLLRESET + ); +\rxcdrlock_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(2), + Q => rxcdrlock_cnt_reg(2), + R => RST_CPLLRESET + ); +\rxcdrlock_cnt_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(3), + Q => rxcdrlock_cnt_reg(3), + R => RST_CPLLRESET + ); +\rxcdrlock_reg1[2]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"80000000" + ) + port map ( + I0 => rxcdrlock_cnt_reg(2), + I1 => rxcdrlock_cnt_reg(3), + I2 => gt_rxcdrlock_2, + I3 => rxcdrlock_cnt_reg(1), + I4 => rxcdrlock_cnt_reg(0), + O => RST_RXCDRLOCK(0) + ); +rxcdrlock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => gt_rxcdrlock_2, + Q => rxcdrlock_reg1, + R => RST_CPLLRESET + ); +rxcdrlock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxcdrlock_reg1, + Q => rxcdrlock_reg2, + R => RST_CPLLRESET + ); +rxeq_adapt_done_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_RXEQ_ADAPT_DONE, + Q => rxeq_adapt_done_reg1, + R => RST_CPLLRESET + ); +rxeq_adapt_done_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_adapt_done_reg1, + Q => rxeq_adapt_done_reg2, + R => RST_CPLLRESET + ); +rxresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_RXRESETDONE, + Q => rxresetdone_reg1, + R => RST_CPLLRESET + ); +rxresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxresetdone_reg1, + Q => rxresetdone_reg2, + R => RST_CPLLRESET + ); +rxstatus_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rxstatus_reg1_reg_0(0), + Q => rxstatus_reg1, + R => RST_RXUSRCLK_RESET + ); +rxstatus_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rxstatus_reg1, + Q => rxstatus_reg2, + R => RST_RXUSRCLK_RESET + ); +\rxvalid_cnt[0]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"C404040404040404" + ) + port map ( + I0 => rxstatus_reg2, + I1 => rxvalid_reg2, + I2 => rxvalid_cnt_reg(0), + I3 => rxvalid_cnt_reg(1), + I4 => rxvalid_cnt_reg(2), + I5 => rxvalid_cnt_reg(3), + O => \p_0_in__0__0\(0) + ); +\rxvalid_cnt[1]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"808000F000F00000" + ) + port map ( + I0 => rxvalid_cnt_reg(3), + I1 => rxvalid_cnt_reg(2), + I2 => rxvalid_reg2, + I3 => rxstatus_reg2, + I4 => rxvalid_cnt_reg(1), + I5 => rxvalid_cnt_reg(0), + O => \p_0_in__0__0\(1) + ); +\rxvalid_cnt[2]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"80BF000000C00000" + ) + port map ( + I0 => rxvalid_cnt_reg(3), + I1 => rxvalid_cnt_reg(0), + I2 => rxvalid_cnt_reg(1), + I3 => rxstatus_reg2, + I4 => rxvalid_reg2, + I5 => rxvalid_cnt_reg(2), + O => \p_0_in__0__0\(2) + ); +\rxvalid_cnt[3]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"8C08080808080808" + ) + port map ( + I0 => rxvalid_cnt_reg(3), + I1 => rxvalid_reg2, + I2 => rxstatus_reg2, + I3 => rxvalid_cnt_reg(2), + I4 => rxvalid_cnt_reg(1), + I5 => rxvalid_cnt_reg(0), + O => \p_0_in__0__0\(3) + ); +\rxvalid_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => \p_0_in__0__0\(0), + Q => rxvalid_cnt_reg(0), + R => RST_RXUSRCLK_RESET + ); +\rxvalid_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => \p_0_in__0__0\(1), + Q => rxvalid_cnt_reg(1), + R => RST_RXUSRCLK_RESET + ); +\rxvalid_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => \p_0_in__0__0\(2), + Q => rxvalid_cnt_reg(2), + R => RST_RXUSRCLK_RESET + ); +\rxvalid_cnt_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => \p_0_in__0__0\(3), + Q => rxvalid_cnt_reg(3), + R => RST_RXUSRCLK_RESET + ); +rxvalid_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => gt_rxvalid_2, + Q => rxvalid_reg1, + R => RST_RXUSRCLK_RESET + ); +rxvalid_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rxvalid_reg1, + Q => rxvalid_reg2, + R => RST_RXUSRCLK_RESET + ); +txcompliance_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_TXCOMPLIANCE(0), + Q => txcompliance_reg1, + R => RST_CPLLRESET + ); +txcompliance_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcompliance_reg1, + Q => txcompliance_reg2, + R => RST_CPLLRESET + ); +txelecidle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_TXELECIDLE(0), + Q => txelecidle_reg1, + R => RST_CPLLRESET + ); +txelecidle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txelecidle_reg1, + Q => txelecidle_reg2, + R => RST_CPLLRESET + ); +txphaligndone_reg1_i_3: unisim.vcomponents.LUT6 + generic map( + INIT => X"0707070707FFFFFF" + ) + port map ( + I0 => txcompliance_reg2, + I1 => txelecidle_reg2, + I2 => txphaligndone_reg1_reg, + I3 => txphaligndone_reg1_reg_0, + I4 => txphaligndone_reg1_reg_1, + I5 => txphaligndone_reg1_reg_2, + O => txcompliance_reg2_reg_0 + ); +txphinitdone_reg1_i_2: unisim.vcomponents.LUT6 + generic map( + INIT => X"0707070707FFFFFF" + ) + port map ( + I0 => txcompliance_reg2, + I1 => txelecidle_reg2, + I2 => txphinitdone_reg1_reg, + I3 => txphaligndone_reg1_reg_0, + I4 => txphaligndone_reg1_reg_1, + I5 => txphinitdone_reg1_reg_0, + O => txcompliance_reg2_reg_2 + ); +txresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_TXRESETDONE, + Q => txresetdone_reg1, + R => RST_CPLLRESET + ); +txresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txresetdone_reg1, + Q => txresetdone_reg2, + R => RST_CPLLRESET + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pipe_user_54 is + port ( + gt_rxvalid_q_reg : out STD_LOGIC; + \out\ : out STD_LOGIC; + txelecidle_reg2_reg_0 : out STD_LOGIC; + txcompliance_reg2_reg_0 : out STD_LOGIC; + USER_OOBCLK : out STD_LOGIC; + RST_RXCDRLOCK : out STD_LOGIC_VECTOR ( 0 to 0 ); + gt_rx_phy_status_wire_filter : out STD_LOGIC_VECTOR ( 0 to 0 ); + user_rx_converge : out STD_LOGIC_VECTOR ( 0 to 0 ); + RST_RESETDONE : out STD_LOGIC_VECTOR ( 0 to 0 ); + user_active_lane_3 : out STD_LOGIC; + gt_rx_elec_idle_wire_filter : in STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_rx3_valid_gt : in STD_LOGIC; + gt_rxvalid_3 : in STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC; + pipe_pclk_sel_out : in STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_pclk_in : in STD_LOGIC; + pipe_oobclk_in : in STD_LOGIC; + USER_TXRESETDONE : in STD_LOGIC; + USER_RXRESETDONE : in STD_LOGIC; + PIPE_TXELECIDLE : in STD_LOGIC_VECTOR ( 0 to 0 ); + PIPE_TXCOMPLIANCE : in STD_LOGIC_VECTOR ( 0 to 0 ); + gt_rxcdrlock_3 : in STD_LOGIC; + RST_RXUSRCLK_RESET : in STD_LOGIC; + pipe_rxusrclk_in : in STD_LOGIC; + rxstatus_reg1_reg_0 : in STD_LOGIC_VECTOR ( 0 to 0 ); + RST_IDLE : in STD_LOGIC; + USER_RATE_IDLE : in STD_LOGIC; + USER_RATE_RXSYNC : in STD_LOGIC; + USER_RATE_DONE : in STD_LOGIC; + rate_gen3_3 : in STD_LOGIC; + USER_RXEQ_ADAPT_DONE : in STD_LOGIC; + USER_RESETOVRD_START : in STD_LOGIC; + RST_PHYSTATUS : in STD_LOGIC_VECTOR ( 0 to 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pipe_user_54 : entity is "pcie_7x_0_pipe_user"; +end pcie_7x_0_pcie_7x_0_pipe_user_54; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pipe_user_54 is + signal \converge_cnt[0]_i_1__6_n_0\ : STD_LOGIC; + signal \converge_cnt[0]_i_4__2_n_0\ : STD_LOGIC; + signal \converge_cnt[0]_i_5__2_n_0\ : STD_LOGIC; + signal \converge_cnt[0]_i_6__2_n_0\ : STD_LOGIC; + signal \converge_cnt[0]_i_7__0_n_0\ : STD_LOGIC; + signal \converge_cnt[0]_i_8_n_0\ : STD_LOGIC; + signal converge_cnt_reg : STD_LOGIC_VECTOR ( 21 downto 0 ); + signal \converge_cnt_reg[0]_i_3__2_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3__2_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3__2_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3__2_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3__2_n_4\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3__2_n_5\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3__2_n_6\ : STD_LOGIC; + signal \converge_cnt_reg[0]_i_3__2_n_7\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1__2_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1__2_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1__2_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1__2_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1__2_n_4\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1__2_n_5\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1__2_n_6\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_1__2_n_7\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1__2_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1__2_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1__2_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1__2_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1__2_n_4\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1__2_n_5\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1__2_n_6\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_1__2_n_7\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_1__2_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_1__2_n_6\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_1__2_n_7\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1__2_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1__2_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1__2_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1__2_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1__2_n_4\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1__2_n_5\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1__2_n_6\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_1__2_n_7\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1__2_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1__2_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1__2_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1__2_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1__2_n_4\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1__2_n_5\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1__2_n_6\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_1__2_n_7\ : STD_LOGIC; + signal \converge_gen3_i_1__2_n_0\ : STD_LOGIC; + signal converge_gen3_reg_n_0 : STD_LOGIC; + signal \gt_rxvalid_q_i_4__2_n_0\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_i_65_n_0\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_i_66_n_0\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_i_67_n_0\ : STD_LOGIC; + signal oobclk_cnt : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal \oobclk_div.oobclk_i_1__2_n_0\ : STD_LOGIC; + signal \p_0_in__0\ : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal \p_0_in__0__0\ : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal \p_1_in__0\ : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pclk_sel_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of pclk_sel_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of pclk_sel_reg1 : signal is "true"; + signal pclk_sel_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of pclk_sel_reg2 : signal is "NO"; + attribute async_reg of pclk_sel_reg2 : signal is "true"; + signal rate_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_done_reg1 : signal is "NO"; + attribute async_reg of rate_done_reg1 : signal is "true"; + signal rate_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_done_reg2 : signal is "NO"; + attribute async_reg of rate_done_reg2 : signal is "true"; + signal rate_gen3_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_gen3_reg1 : signal is "NO"; + attribute async_reg of rate_gen3_reg1 : signal is "true"; + signal rate_gen3_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_gen3_reg2 : signal is "NO"; + attribute async_reg of rate_gen3_reg2 : signal is "true"; + signal rate_idle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_idle_reg1 : signal is "NO"; + attribute async_reg of rate_idle_reg1 : signal is "true"; + signal rate_idle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_idle_reg2 : signal is "NO"; + attribute async_reg of rate_idle_reg2 : signal is "true"; + signal rate_rxsync_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_rxsync_reg1 : signal is "NO"; + attribute async_reg of rate_rxsync_reg1 : signal is "true"; + signal rate_rxsync_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rate_rxsync_reg2 : signal is "NO"; + attribute async_reg of rate_rxsync_reg2 : signal is "true"; + signal resetovrd_start_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of resetovrd_start_reg1 : signal is "NO"; + attribute async_reg of resetovrd_start_reg1 : signal is "true"; + signal resetovrd_start_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of resetovrd_start_reg2 : signal is "NO"; + attribute async_reg of resetovrd_start_reg2 : signal is "true"; + signal rst_idle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rst_idle_reg1 : signal is "NO"; + attribute async_reg of rst_idle_reg1 : signal is "true"; + signal rst_idle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rst_idle_reg2 : signal is "NO"; + attribute async_reg of rst_idle_reg2 : signal is "true"; + signal rxcdrlock_cnt_reg : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal rxcdrlock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxcdrlock_reg1 : signal is "NO"; + attribute async_reg of rxcdrlock_reg1 : signal is "true"; + signal rxcdrlock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxcdrlock_reg2 : signal is "NO"; + attribute async_reg of rxcdrlock_reg2 : signal is "true"; + signal rxeq_adapt_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxeq_adapt_done_reg1 : signal is "NO"; + attribute async_reg of rxeq_adapt_done_reg1 : signal is "true"; + signal rxeq_adapt_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxeq_adapt_done_reg2 : signal is "NO"; + attribute async_reg of rxeq_adapt_done_reg2 : signal is "true"; + signal rxresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxresetdone_reg1 : signal is "NO"; + attribute async_reg of rxresetdone_reg1 : signal is "true"; + signal rxresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxresetdone_reg2 : signal is "NO"; + attribute async_reg of rxresetdone_reg2 : signal is "true"; + signal rxstatus_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxstatus_reg1 : signal is "NO"; + attribute async_reg of rxstatus_reg1 : signal is "true"; + signal rxstatus_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxstatus_reg2 : signal is "NO"; + attribute async_reg of rxstatus_reg2 : signal is "true"; + signal rxvalid_cnt_reg : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal rxvalid_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxvalid_reg1 : signal is "NO"; + attribute async_reg of rxvalid_reg1 : signal is "true"; + signal rxvalid_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxvalid_reg2 : signal is "NO"; + attribute async_reg of rxvalid_reg2 : signal is "true"; + signal sel : STD_LOGIC; + signal txcompliance_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txcompliance_reg1 : signal is "NO"; + attribute async_reg of txcompliance_reg1 : signal is "true"; + signal txcompliance_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txcompliance_reg2 : signal is "NO"; + attribute async_reg of txcompliance_reg2 : signal is "true"; + signal txelecidle_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txelecidle_reg1 : signal is "NO"; + attribute async_reg of txelecidle_reg1 : signal is "true"; + signal txelecidle_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txelecidle_reg2 : signal is "NO"; + attribute async_reg of txelecidle_reg2 : signal is "true"; + signal txresetdone_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of txresetdone_reg1 : signal is "NO"; + attribute async_reg of txresetdone_reg1 : signal is "true"; + signal txresetdone_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of txresetdone_reg2 : signal is "NO"; + attribute async_reg of txresetdone_reg2 : signal is "true"; + signal \NLW_converge_cnt_reg[20]_i_1__2_CO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal \NLW_converge_cnt_reg[20]_i_1__2_O_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 2 ); + attribute ADDER_THRESHOLD : integer; + attribute ADDER_THRESHOLD of \converge_cnt_reg[0]_i_3__2\ : label is 11; + attribute ADDER_THRESHOLD of \converge_cnt_reg[12]_i_1__2\ : label is 11; + attribute ADDER_THRESHOLD of \converge_cnt_reg[16]_i_1__2\ : label is 11; + attribute ADDER_THRESHOLD of \converge_cnt_reg[20]_i_1__2\ : label is 11; + attribute ADDER_THRESHOLD of \converge_cnt_reg[4]_i_1__2\ : label is 11; + attribute ADDER_THRESHOLD of \converge_cnt_reg[8]_i_1__2\ : label is 11; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \oobclk_div.oobclk_cnt[0]_i_1__2\ : label is "soft_lutpair203"; + attribute SOFT_HLUTNM of \oobclk_div.oobclk_cnt[1]_i_1__2\ : label is "soft_lutpair203"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of pclk_sel_reg1_reg : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of pclk_sel_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of pclk_sel_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of pclk_sel_reg2_reg : label is std.standard.true; + attribute KEEP of pclk_sel_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of pclk_sel_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_done_reg1_reg : label is std.standard.true; + attribute KEEP of rate_done_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_done_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_done_reg2_reg : label is std.standard.true; + attribute KEEP of rate_done_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_done_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_gen3_reg1_reg : label is std.standard.true; + attribute KEEP of rate_gen3_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_gen3_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_gen3_reg2_reg : label is std.standard.true; + attribute KEEP of rate_gen3_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_gen3_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_idle_reg1_reg : label is std.standard.true; + attribute KEEP of rate_idle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_idle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_idle_reg2_reg : label is std.standard.true; + attribute KEEP of rate_idle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_idle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_rxsync_reg1_reg : label is std.standard.true; + attribute KEEP of rate_rxsync_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_rxsync_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rate_rxsync_reg2_reg : label is std.standard.true; + attribute KEEP of rate_rxsync_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rate_rxsync_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of resetovrd_start_reg1_reg : label is std.standard.true; + attribute KEEP of resetovrd_start_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of resetovrd_start_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of resetovrd_start_reg2_reg : label is std.standard.true; + attribute KEEP of resetovrd_start_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of resetovrd_start_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rst_idle_reg1_reg : label is std.standard.true; + attribute KEEP of rst_idle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rst_idle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rst_idle_reg2_reg : label is std.standard.true; + attribute KEEP of rst_idle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rst_idle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxcdrlock_reg1_reg : label is std.standard.true; + attribute KEEP of rxcdrlock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxcdrlock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxcdrlock_reg2_reg : label is std.standard.true; + attribute KEEP of rxcdrlock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxcdrlock_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxeq_adapt_done_reg1_reg : label is std.standard.true; + attribute KEEP of rxeq_adapt_done_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxeq_adapt_done_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxeq_adapt_done_reg2_reg : label is std.standard.true; + attribute KEEP of rxeq_adapt_done_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxeq_adapt_done_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of rxresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of rxresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxresetdone_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxstatus_reg1_reg : label is std.standard.true; + attribute KEEP of rxstatus_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxstatus_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxstatus_reg2_reg : label is std.standard.true; + attribute KEEP of rxstatus_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxstatus_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxvalid_reg1_reg : label is std.standard.true; + attribute KEEP of rxvalid_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxvalid_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxvalid_reg2_reg : label is std.standard.true; + attribute KEEP of rxvalid_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxvalid_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txcompliance_reg1_reg : label is std.standard.true; + attribute KEEP of txcompliance_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txcompliance_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txcompliance_reg2_reg : label is std.standard.true; + attribute KEEP of txcompliance_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txcompliance_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txelecidle_reg1_reg : label is std.standard.true; + attribute KEEP of txelecidle_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txelecidle_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txelecidle_reg2_reg : label is std.standard.true; + attribute KEEP of txelecidle_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txelecidle_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of txresetdone_reg1_reg : label is std.standard.true; + attribute KEEP of txresetdone_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of txresetdone_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of txresetdone_reg2_reg : label is std.standard.true; + attribute KEEP of txresetdone_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of txresetdone_reg2_reg : label is "NO"; +begin + \out\ <= rst_idle_reg2; + txcompliance_reg2_reg_0 <= txcompliance_reg2; + txelecidle_reg2_reg_0 <= txelecidle_reg2; +\FSM_onehot_txsync_fsm.fsm_tx[5]_i_2__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"7" + ) + port map ( + I0 => txcompliance_reg2, + I1 => txelecidle_reg2, + O => user_active_lane_3 + ); +\converge_cnt[0]_i_1__6\: unisim.vcomponents.LUT4 + generic map( + INIT => X"EFFF" + ) + port map ( + I0 => rate_gen3_reg2, + I1 => RST_CPLLRESET, + I2 => rst_idle_reg2, + I3 => rate_idle_reg2, + O => \converge_cnt[0]_i_1__6_n_0\ + ); +\converge_cnt[0]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFF5555555D" + ) + port map ( + I0 => converge_cnt_reg(21), + I1 => \converge_cnt[0]_i_4__2_n_0\, + I2 => converge_cnt_reg(12), + I3 => converge_cnt_reg(14), + I4 => converge_cnt_reg(20), + I5 => \converge_cnt[0]_i_5__2_n_0\, + O => sel + ); +\converge_cnt[0]_i_4__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000001" + ) + port map ( + I0 => converge_cnt_reg(3), + I1 => converge_cnt_reg(4), + I2 => converge_cnt_reg(5), + I3 => converge_cnt_reg(7), + I4 => converge_cnt_reg(6), + O => \converge_cnt[0]_i_4__2_n_0\ + ); +\converge_cnt[0]_i_5__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0A0B0A0F0A0B0A0B" + ) + port map ( + I0 => \converge_cnt[0]_i_7__0_n_0\, + I1 => converge_cnt_reg(13), + I2 => converge_cnt_reg(20), + I3 => converge_cnt_reg(14), + I4 => converge_cnt_reg(12), + I5 => \converge_cnt[0]_i_8_n_0\, + O => \converge_cnt[0]_i_5__2_n_0\ + ); +\converge_cnt[0]_i_6__2\: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => converge_cnt_reg(0), + O => \converge_cnt[0]_i_6__2_n_0\ + ); +\converge_cnt[0]_i_7__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"7FFFFFFF" + ) + port map ( + I0 => converge_cnt_reg(15), + I1 => converge_cnt_reg(18), + I2 => converge_cnt_reg(19), + I3 => converge_cnt_reg(17), + I4 => converge_cnt_reg(16), + O => \converge_cnt[0]_i_7__0_n_0\ + ); +\converge_cnt[0]_i_8\: unisim.vcomponents.LUT4 + generic map( + INIT => X"7FFF" + ) + port map ( + I0 => converge_cnt_reg(9), + I1 => converge_cnt_reg(8), + I2 => converge_cnt_reg(11), + I3 => converge_cnt_reg(10), + O => \converge_cnt[0]_i_8_n_0\ + ); +\converge_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[0]_i_3__2_n_7\, + Q => converge_cnt_reg(0), + R => \converge_cnt[0]_i_1__6_n_0\ + ); +\converge_cnt_reg[0]_i_3__2\: unisim.vcomponents.CARRY4 + port map ( + CI => '0', + CO(3) => \converge_cnt_reg[0]_i_3__2_n_0\, + CO(2) => \converge_cnt_reg[0]_i_3__2_n_1\, + CO(1) => \converge_cnt_reg[0]_i_3__2_n_2\, + CO(0) => \converge_cnt_reg[0]_i_3__2_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0001", + O(3) => \converge_cnt_reg[0]_i_3__2_n_4\, + O(2) => \converge_cnt_reg[0]_i_3__2_n_5\, + O(1) => \converge_cnt_reg[0]_i_3__2_n_6\, + O(0) => \converge_cnt_reg[0]_i_3__2_n_7\, + S(3 downto 1) => converge_cnt_reg(3 downto 1), + S(0) => \converge_cnt[0]_i_6__2_n_0\ + ); +\converge_cnt_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[8]_i_1__2_n_5\, + Q => converge_cnt_reg(10), + R => \converge_cnt[0]_i_1__6_n_0\ + ); +\converge_cnt_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[8]_i_1__2_n_4\, + Q => converge_cnt_reg(11), + R => \converge_cnt[0]_i_1__6_n_0\ + ); +\converge_cnt_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[12]_i_1__2_n_7\, + Q => converge_cnt_reg(12), + R => \converge_cnt[0]_i_1__6_n_0\ + ); +\converge_cnt_reg[12]_i_1__2\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[8]_i_1__2_n_0\, + CO(3) => \converge_cnt_reg[12]_i_1__2_n_0\, + CO(2) => \converge_cnt_reg[12]_i_1__2_n_1\, + CO(1) => \converge_cnt_reg[12]_i_1__2_n_2\, + CO(0) => \converge_cnt_reg[12]_i_1__2_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3) => \converge_cnt_reg[12]_i_1__2_n_4\, + O(2) => \converge_cnt_reg[12]_i_1__2_n_5\, + O(1) => \converge_cnt_reg[12]_i_1__2_n_6\, + O(0) => \converge_cnt_reg[12]_i_1__2_n_7\, + S(3 downto 0) => converge_cnt_reg(15 downto 12) + ); +\converge_cnt_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[12]_i_1__2_n_6\, + Q => converge_cnt_reg(13), + R => \converge_cnt[0]_i_1__6_n_0\ + ); +\converge_cnt_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[12]_i_1__2_n_5\, + Q => converge_cnt_reg(14), + R => \converge_cnt[0]_i_1__6_n_0\ + ); +\converge_cnt_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[12]_i_1__2_n_4\, + Q => converge_cnt_reg(15), + R => \converge_cnt[0]_i_1__6_n_0\ + ); +\converge_cnt_reg[16]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[16]_i_1__2_n_7\, + Q => converge_cnt_reg(16), + R => \converge_cnt[0]_i_1__6_n_0\ + ); +\converge_cnt_reg[16]_i_1__2\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[12]_i_1__2_n_0\, + CO(3) => \converge_cnt_reg[16]_i_1__2_n_0\, + CO(2) => \converge_cnt_reg[16]_i_1__2_n_1\, + CO(1) => \converge_cnt_reg[16]_i_1__2_n_2\, + CO(0) => \converge_cnt_reg[16]_i_1__2_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3) => \converge_cnt_reg[16]_i_1__2_n_4\, + O(2) => \converge_cnt_reg[16]_i_1__2_n_5\, + O(1) => \converge_cnt_reg[16]_i_1__2_n_6\, + O(0) => \converge_cnt_reg[16]_i_1__2_n_7\, + S(3 downto 0) => converge_cnt_reg(19 downto 16) + ); +\converge_cnt_reg[17]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[16]_i_1__2_n_6\, + Q => converge_cnt_reg(17), + R => \converge_cnt[0]_i_1__6_n_0\ + ); +\converge_cnt_reg[18]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[16]_i_1__2_n_5\, + Q => converge_cnt_reg(18), + R => \converge_cnt[0]_i_1__6_n_0\ + ); +\converge_cnt_reg[19]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[16]_i_1__2_n_4\, + Q => converge_cnt_reg(19), + R => \converge_cnt[0]_i_1__6_n_0\ + ); +\converge_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[0]_i_3__2_n_6\, + Q => converge_cnt_reg(1), + R => \converge_cnt[0]_i_1__6_n_0\ + ); +\converge_cnt_reg[20]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[20]_i_1__2_n_7\, + Q => converge_cnt_reg(20), + R => \converge_cnt[0]_i_1__6_n_0\ + ); +\converge_cnt_reg[20]_i_1__2\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[16]_i_1__2_n_0\, + CO(3 downto 1) => \NLW_converge_cnt_reg[20]_i_1__2_CO_UNCONNECTED\(3 downto 1), + CO(0) => \converge_cnt_reg[20]_i_1__2_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 2) => \NLW_converge_cnt_reg[20]_i_1__2_O_UNCONNECTED\(3 downto 2), + O(1) => \converge_cnt_reg[20]_i_1__2_n_6\, + O(0) => \converge_cnt_reg[20]_i_1__2_n_7\, + S(3 downto 2) => B"00", + S(1 downto 0) => converge_cnt_reg(21 downto 20) + ); +\converge_cnt_reg[21]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[20]_i_1__2_n_6\, + Q => converge_cnt_reg(21), + R => \converge_cnt[0]_i_1__6_n_0\ + ); +\converge_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[0]_i_3__2_n_5\, + Q => converge_cnt_reg(2), + R => \converge_cnt[0]_i_1__6_n_0\ + ); +\converge_cnt_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[0]_i_3__2_n_4\, + Q => converge_cnt_reg(3), + R => \converge_cnt[0]_i_1__6_n_0\ + ); +\converge_cnt_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[4]_i_1__2_n_7\, + Q => converge_cnt_reg(4), + R => \converge_cnt[0]_i_1__6_n_0\ + ); +\converge_cnt_reg[4]_i_1__2\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[0]_i_3__2_n_0\, + CO(3) => \converge_cnt_reg[4]_i_1__2_n_0\, + CO(2) => \converge_cnt_reg[4]_i_1__2_n_1\, + CO(1) => \converge_cnt_reg[4]_i_1__2_n_2\, + CO(0) => \converge_cnt_reg[4]_i_1__2_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3) => \converge_cnt_reg[4]_i_1__2_n_4\, + O(2) => \converge_cnt_reg[4]_i_1__2_n_5\, + O(1) => \converge_cnt_reg[4]_i_1__2_n_6\, + O(0) => \converge_cnt_reg[4]_i_1__2_n_7\, + S(3 downto 0) => converge_cnt_reg(7 downto 4) + ); +\converge_cnt_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[4]_i_1__2_n_6\, + Q => converge_cnt_reg(5), + R => \converge_cnt[0]_i_1__6_n_0\ + ); +\converge_cnt_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[4]_i_1__2_n_5\, + Q => converge_cnt_reg(6), + R => \converge_cnt[0]_i_1__6_n_0\ + ); +\converge_cnt_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[4]_i_1__2_n_4\, + Q => converge_cnt_reg(7), + R => \converge_cnt[0]_i_1__6_n_0\ + ); +\converge_cnt_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[8]_i_1__2_n_7\, + Q => converge_cnt_reg(8), + R => \converge_cnt[0]_i_1__6_n_0\ + ); +\converge_cnt_reg[8]_i_1__2\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[4]_i_1__2_n_0\, + CO(3) => \converge_cnt_reg[8]_i_1__2_n_0\, + CO(2) => \converge_cnt_reg[8]_i_1__2_n_1\, + CO(1) => \converge_cnt_reg[8]_i_1__2_n_2\, + CO(0) => \converge_cnt_reg[8]_i_1__2_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3) => \converge_cnt_reg[8]_i_1__2_n_4\, + O(2) => \converge_cnt_reg[8]_i_1__2_n_5\, + O(1) => \converge_cnt_reg[8]_i_1__2_n_6\, + O(0) => \converge_cnt_reg[8]_i_1__2_n_7\, + S(3 downto 0) => converge_cnt_reg(11 downto 8) + ); +\converge_cnt_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => sel, + D => \converge_cnt_reg[8]_i_1__2_n_6\, + Q => converge_cnt_reg(9), + R => \converge_cnt[0]_i_1__6_n_0\ + ); +\converge_gen3_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"C8" + ) + port map ( + I0 => rxeq_adapt_done_reg2, + I1 => rate_gen3_reg2, + I2 => converge_gen3_reg_n_0, + O => \converge_gen3_i_1__2_n_0\ + ); +converge_gen3_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \converge_gen3_i_1__2_n_0\, + Q => converge_gen3_reg_n_0, + R => RST_CPLLRESET + ); +\gt_rx_phy_status_q_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFFA8FF" + ) + port map ( + I0 => RST_PHYSTATUS(0), + I1 => rate_idle_reg2, + I2 => rate_rxsync_reg2, + I3 => rst_idle_reg2, + I4 => rate_done_reg2, + O => gt_rx_phy_status_wire_filter(0) + ); +\gt_rxvalid_q_i_3__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"D000000000000000" + ) + port map ( + I0 => gt_rx_elec_idle_wire_filter(0), + I1 => pipe_rx3_valid_gt, + I2 => \gt_rxvalid_q_i_4__2_n_0\, + I3 => gt_rxvalid_3, + I4 => rst_idle_reg2, + I5 => rate_idle_reg2, + O => gt_rxvalid_q_reg + ); +\gt_rxvalid_q_i_4__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"8000" + ) + port map ( + I0 => rxvalid_cnt_reg(0), + I1 => rxvalid_cnt_reg(1), + I2 => rxvalid_cnt_reg(2), + I3 => rxvalid_cnt_reg(3), + O => \gt_rxvalid_q_i_4__2_n_0\ + ); +\gtx_channel.gtxe2_channel_i_i_63\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFF00000800" + ) + port map ( + I0 => \gtx_channel.gtxe2_channel_i_i_65_n_0\, + I1 => \gtx_channel.gtxe2_channel_i_i_66_n_0\, + I2 => \converge_cnt[0]_i_8_n_0\, + I3 => \gtx_channel.gtxe2_channel_i_i_67_n_0\, + I4 => \converge_cnt[0]_i_7__0_n_0\, + I5 => converge_gen3_reg_n_0, + O => user_rx_converge(0) + ); +\gtx_channel.gtxe2_channel_i_i_65\: unisim.vcomponents.LUT3 + generic map( + INIT => X"01" + ) + port map ( + I0 => converge_cnt_reg(20), + I1 => converge_cnt_reg(14), + I2 => converge_cnt_reg(12), + O => \gtx_channel.gtxe2_channel_i_i_65_n_0\ + ); +\gtx_channel.gtxe2_channel_i_i_66\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0100" + ) + port map ( + I0 => converge_cnt_reg(1), + I1 => converge_cnt_reg(0), + I2 => converge_cnt_reg(2), + I3 => converge_cnt_reg(3), + O => \gtx_channel.gtxe2_channel_i_i_66_n_0\ + ); +\gtx_channel.gtxe2_channel_i_i_67\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0001000000000000" + ) + port map ( + I0 => converge_cnt_reg(6), + I1 => converge_cnt_reg(7), + I2 => converge_cnt_reg(4), + I3 => converge_cnt_reg(5), + I4 => converge_cnt_reg(21), + I5 => converge_cnt_reg(13), + O => \gtx_channel.gtxe2_channel_i_i_67_n_0\ + ); +\oobclk_div.oobclk_cnt[0]_i_1__2\: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => oobclk_cnt(0), + O => \p_1_in__0\(0) + ); +\oobclk_div.oobclk_cnt[1]_i_1__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"6" + ) + port map ( + I0 => oobclk_cnt(0), + I1 => oobclk_cnt(1), + O => \p_1_in__0\(1) + ); +\oobclk_div.oobclk_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_oobclk_in, + CE => '1', + D => \p_1_in__0\(0), + Q => oobclk_cnt(0), + R => RST_CPLLRESET + ); +\oobclk_div.oobclk_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_oobclk_in, + CE => '1', + D => \p_1_in__0\(1), + Q => oobclk_cnt(1), + R => RST_CPLLRESET + ); +\oobclk_div.oobclk_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"B8" + ) + port map ( + I0 => oobclk_cnt(1), + I1 => pclk_sel_reg2, + I2 => oobclk_cnt(0), + O => \oobclk_div.oobclk_i_1__2_n_0\ + ); +\oobclk_div.oobclk_reg\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_oobclk_in, + CE => '1', + D => \oobclk_div.oobclk_i_1__2_n_0\, + Q => USER_OOBCLK, + R => RST_CPLLRESET + ); +pclk_sel_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_pclk_sel_out(0), + Q => pclk_sel_reg1, + R => RST_CPLLRESET + ); +pclk_sel_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pclk_sel_reg1, + Q => pclk_sel_reg2, + R => RST_CPLLRESET + ); +rate_done_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => USER_RATE_DONE, + Q => rate_done_reg1, + R => RST_RXUSRCLK_RESET + ); +rate_done_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rate_done_reg1, + Q => rate_done_reg2, + R => RST_RXUSRCLK_RESET + ); +rate_gen3_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rate_gen3_3, + Q => rate_gen3_reg1, + R => RST_RXUSRCLK_RESET + ); +rate_gen3_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rate_gen3_reg1, + Q => rate_gen3_reg2, + R => RST_RXUSRCLK_RESET + ); +rate_idle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => USER_RATE_IDLE, + Q => rate_idle_reg1, + R => RST_RXUSRCLK_RESET + ); +rate_idle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rate_idle_reg1, + Q => rate_idle_reg2, + R => RST_RXUSRCLK_RESET + ); +rate_rxsync_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => USER_RATE_RXSYNC, + Q => rate_rxsync_reg1, + R => RST_RXUSRCLK_RESET + ); +rate_rxsync_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rate_rxsync_reg1, + Q => rate_rxsync_reg2, + R => RST_RXUSRCLK_RESET + ); +\resetdone_reg1[3]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => rxresetdone_reg2, + I1 => txresetdone_reg2, + O => RST_RESETDONE(0) + ); +resetovrd_start_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_RESETOVRD_START, + Q => resetovrd_start_reg1, + R => RST_CPLLRESET + ); +resetovrd_start_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => resetovrd_start_reg1, + Q => resetovrd_start_reg2, + R => RST_CPLLRESET + ); +rst_idle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => RST_IDLE, + Q => rst_idle_reg1, + R => RST_RXUSRCLK_RESET + ); +rst_idle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rst_idle_reg1, + Q => rst_idle_reg2, + R => RST_RXUSRCLK_RESET + ); +\rxcdrlock_cnt[0]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"D0505050" + ) + port map ( + I0 => rxcdrlock_cnt_reg(0), + I1 => rxcdrlock_cnt_reg(2), + I2 => rxcdrlock_reg2, + I3 => rxcdrlock_cnt_reg(1), + I4 => rxcdrlock_cnt_reg(3), + O => \p_0_in__0\(0) + ); +\rxcdrlock_cnt[1]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"8FF00000" + ) + port map ( + I0 => rxcdrlock_cnt_reg(3), + I1 => rxcdrlock_cnt_reg(2), + I2 => rxcdrlock_cnt_reg(0), + I3 => rxcdrlock_cnt_reg(1), + I4 => rxcdrlock_reg2, + O => \p_0_in__0\(1) + ); +\rxcdrlock_cnt[2]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"F8780000" + ) + port map ( + I0 => rxcdrlock_cnt_reg(0), + I1 => rxcdrlock_cnt_reg(1), + I2 => rxcdrlock_cnt_reg(2), + I3 => rxcdrlock_cnt_reg(3), + I4 => rxcdrlock_reg2, + O => \p_0_in__0\(2) + ); +\rxcdrlock_cnt[3]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FF008000" + ) + port map ( + I0 => rxcdrlock_cnt_reg(0), + I1 => rxcdrlock_cnt_reg(1), + I2 => rxcdrlock_cnt_reg(2), + I3 => rxcdrlock_reg2, + I4 => rxcdrlock_cnt_reg(3), + O => \p_0_in__0\(3) + ); +\rxcdrlock_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(0), + Q => rxcdrlock_cnt_reg(0), + R => RST_CPLLRESET + ); +\rxcdrlock_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(1), + Q => rxcdrlock_cnt_reg(1), + R => RST_CPLLRESET + ); +\rxcdrlock_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(2), + Q => rxcdrlock_cnt_reg(2), + R => RST_CPLLRESET + ); +\rxcdrlock_cnt_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \p_0_in__0\(3), + Q => rxcdrlock_cnt_reg(3), + R => RST_CPLLRESET + ); +\rxcdrlock_reg1[3]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"80000000" + ) + port map ( + I0 => rxcdrlock_cnt_reg(2), + I1 => rxcdrlock_cnt_reg(3), + I2 => gt_rxcdrlock_3, + I3 => rxcdrlock_cnt_reg(1), + I4 => rxcdrlock_cnt_reg(0), + O => RST_RXCDRLOCK(0) + ); +rxcdrlock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => gt_rxcdrlock_3, + Q => rxcdrlock_reg1, + R => RST_CPLLRESET + ); +rxcdrlock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxcdrlock_reg1, + Q => rxcdrlock_reg2, + R => RST_CPLLRESET + ); +rxeq_adapt_done_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_RXEQ_ADAPT_DONE, + Q => rxeq_adapt_done_reg1, + R => RST_CPLLRESET + ); +rxeq_adapt_done_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_adapt_done_reg1, + Q => rxeq_adapt_done_reg2, + R => RST_CPLLRESET + ); +rxresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_RXRESETDONE, + Q => rxresetdone_reg1, + R => RST_CPLLRESET + ); +rxresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxresetdone_reg1, + Q => rxresetdone_reg2, + R => RST_CPLLRESET + ); +rxstatus_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rxstatus_reg1_reg_0(0), + Q => rxstatus_reg1, + R => RST_RXUSRCLK_RESET + ); +rxstatus_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rxstatus_reg1, + Q => rxstatus_reg2, + R => RST_RXUSRCLK_RESET + ); +\rxvalid_cnt[0]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"C404040404040404" + ) + port map ( + I0 => rxstatus_reg2, + I1 => rxvalid_reg2, + I2 => rxvalid_cnt_reg(0), + I3 => rxvalid_cnt_reg(1), + I4 => rxvalid_cnt_reg(2), + I5 => rxvalid_cnt_reg(3), + O => \p_0_in__0__0\(0) + ); +\rxvalid_cnt[1]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"808000F000F00000" + ) + port map ( + I0 => rxvalid_cnt_reg(3), + I1 => rxvalid_cnt_reg(2), + I2 => rxvalid_reg2, + I3 => rxstatus_reg2, + I4 => rxvalid_cnt_reg(1), + I5 => rxvalid_cnt_reg(0), + O => \p_0_in__0__0\(1) + ); +\rxvalid_cnt[2]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"80BF000000C00000" + ) + port map ( + I0 => rxvalid_cnt_reg(3), + I1 => rxvalid_cnt_reg(0), + I2 => rxvalid_cnt_reg(1), + I3 => rxstatus_reg2, + I4 => rxvalid_reg2, + I5 => rxvalid_cnt_reg(2), + O => \p_0_in__0__0\(2) + ); +\rxvalid_cnt[3]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"8C08080808080808" + ) + port map ( + I0 => rxvalid_cnt_reg(3), + I1 => rxvalid_reg2, + I2 => rxstatus_reg2, + I3 => rxvalid_cnt_reg(2), + I4 => rxvalid_cnt_reg(1), + I5 => rxvalid_cnt_reg(0), + O => \p_0_in__0__0\(3) + ); +\rxvalid_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => \p_0_in__0__0\(0), + Q => rxvalid_cnt_reg(0), + R => RST_RXUSRCLK_RESET + ); +\rxvalid_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => \p_0_in__0__0\(1), + Q => rxvalid_cnt_reg(1), + R => RST_RXUSRCLK_RESET + ); +\rxvalid_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => \p_0_in__0__0\(2), + Q => rxvalid_cnt_reg(2), + R => RST_RXUSRCLK_RESET + ); +\rxvalid_cnt_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => \p_0_in__0__0\(3), + Q => rxvalid_cnt_reg(3), + R => RST_RXUSRCLK_RESET + ); +rxvalid_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => gt_rxvalid_3, + Q => rxvalid_reg1, + R => RST_RXUSRCLK_RESET + ); +rxvalid_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_rxusrclk_in, + CE => '1', + D => rxvalid_reg1, + Q => rxvalid_reg2, + R => RST_RXUSRCLK_RESET + ); +txcompliance_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_TXCOMPLIANCE(0), + Q => txcompliance_reg1, + R => RST_CPLLRESET + ); +txcompliance_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcompliance_reg1, + Q => txcompliance_reg2, + R => RST_CPLLRESET + ); +txelecidle_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => PIPE_TXELECIDLE(0), + Q => txelecidle_reg1, + R => RST_CPLLRESET + ); +txelecidle_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txelecidle_reg1, + Q => txelecidle_reg2, + R => RST_CPLLRESET + ); +txresetdone_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_TXRESETDONE, + Q => txresetdone_reg1, + R => RST_CPLLRESET + ); +txresetdone_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txresetdone_reg1, + Q => txresetdone_reg2, + R => RST_CPLLRESET + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_qpll_drp is + port ( + QPLL_DRP_DONE : out STD_LOGIC; + Q : out STD_LOGIC_VECTOR ( 4 downto 0 ); + \di_reg[15]_0\ : out STD_LOGIC_VECTOR ( 15 downto 0 ); + qpll_drp_en : out STD_LOGIC; + qpll_drp_we : out STD_LOGIC; + RST_DCLK_RESET : in STD_LOGIC; + QRST_DRP_START : in STD_LOGIC; + pipe_dclk_in : in STD_LOGIC; + qpll_drp_rdy : in STD_LOGIC; + QPLL_QPLLLOCK : in STD_LOGIC; + QPLL_DRP_GEN3 : in STD_LOGIC; + D : in STD_LOGIC_VECTOR ( 15 downto 0 ) + ); +end pcie_7x_0_pcie_7x_0_qpll_drp; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_qpll_drp is + signal \addr[0]_i_1_n_0\ : STD_LOGIC; + signal \addr[1]_i_1_n_0\ : STD_LOGIC; + signal \addr[2]_i_1_n_0\ : STD_LOGIC; + signal \addr[5]_i_1_n_0\ : STD_LOGIC; + signal \addr[7]_i_1_n_0\ : STD_LOGIC; + signal \crscode_reg_n_0_[0]\ : STD_LOGIC; + signal \crscode_reg_n_0_[1]\ : STD_LOGIC; + signal \crscode_reg_n_0_[2]\ : STD_LOGIC; + signal \crscode_reg_n_0_[3]\ : STD_LOGIC; + signal \crscode_reg_n_0_[4]\ : STD_LOGIC; + signal \crscode_reg_n_0_[5]\ : STD_LOGIC; + signal di : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal \di[11]_i_2_n_0\ : STD_LOGIC; + signal \di[12]_i_2_n_0\ : STD_LOGIC; + signal \di[13]_i_2_n_0\ : STD_LOGIC; + signal \di[14]_i_2_n_0\ : STD_LOGIC; + signal \di[15]_i_2_n_0\ : STD_LOGIC; + signal do_reg1 : STD_LOGIC_VECTOR ( 15 downto 0 ); + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of do_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of do_reg1 : signal is "true"; + signal do_reg2 : STD_LOGIC_VECTOR ( 15 downto 0 ); + attribute SHIFT_EXTRACT of do_reg2 : signal is "NO"; + attribute async_reg of do_reg2 : signal is "true"; + signal done : STD_LOGIC; + signal \fsm[0]_i_2__1_n_0\ : STD_LOGIC; + signal \fsm[1]_i_2__0_n_0\ : STD_LOGIC; + signal \fsm_inferred__1/i___0_n_0\ : STD_LOGIC; + signal \fsm_inferred__1/i___1_n_0\ : STD_LOGIC; + signal \fsm_inferred__1/i__n_0\ : STD_LOGIC; + signal \fsm_reg_n_0_[0]\ : STD_LOGIC; + signal \fsm_reg_n_0_[1]\ : STD_LOGIC; + signal \fsm_reg_n_0_[2]\ : STD_LOGIC; + signal \fsm_reg_n_0_[3]\ : STD_LOGIC; + signal \fsm_reg_n_0_[4]\ : STD_LOGIC; + signal \fsm_reg_n_0_[5]\ : STD_LOGIC; + signal \fsm_reg_n_0_[6]\ : STD_LOGIC; + signal gen3_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of gen3_reg1 : signal is "NO"; + attribute async_reg of gen3_reg1 : signal is "true"; + signal gen3_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of gen3_reg2 : signal is "NO"; + attribute async_reg of gen3_reg2 : signal is "true"; + signal \gtx_common.gtxe2_common_i_i_3_n_0\ : STD_LOGIC; + signal \gtx_common.gtxe2_common_i_i_4_n_0\ : STD_LOGIC; + signal index : STD_LOGIC; + signal \index[0]_i_1_n_0\ : STD_LOGIC; + signal \index[1]_i_1_n_0\ : STD_LOGIC; + signal \index[2]_i_1_n_0\ : STD_LOGIC; + signal \index[2]_i_2_n_0\ : STD_LOGIC; + signal \index[2]_i_4_n_0\ : STD_LOGIC; + signal \index_reg_n_0_[0]\ : STD_LOGIC; + signal \index_reg_n_0_[1]\ : STD_LOGIC; + signal \index_reg_n_0_[2]\ : STD_LOGIC; + signal load_cnt : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal \load_cnt[0]_i_1__0_n_0\ : STD_LOGIC; + signal \load_cnt[1]_i_1_n_0\ : STD_LOGIC; + signal \load_cnt[1]_i_2_n_0\ : STD_LOGIC; + signal ovrd_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of ovrd_reg1 : signal is "NO"; + attribute async_reg of ovrd_reg1 : signal is "true"; + signal ovrd_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of ovrd_reg2 : signal is "NO"; + attribute async_reg of ovrd_reg2 : signal is "true"; + signal \p_0_in__0\ : STD_LOGIC_VECTOR ( 6 downto 0 ); + signal p_1_in : STD_LOGIC; + signal p_2_in : STD_LOGIC_VECTOR ( 5 downto 0 ); + signal qplllock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of qplllock_reg1 : signal is "NO"; + attribute async_reg of qplllock_reg1 : signal is "true"; + signal qplllock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of qplllock_reg2 : signal is "NO"; + attribute async_reg of qplllock_reg2 : signal is "true"; + signal rdy_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rdy_reg1 : signal is "NO"; + attribute async_reg of rdy_reg1 : signal is "true"; + signal rdy_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rdy_reg2 : signal is "NO"; + attribute async_reg of rdy_reg2 : signal is "true"; + signal start_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of start_reg1 : signal is "NO"; + attribute async_reg of start_reg1 : signal is "true"; + signal start_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of start_reg2 : signal is "NO"; + attribute async_reg of start_reg2 : signal is "true"; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \addr[0]_i_1\ : label is "soft_lutpair61"; + attribute SOFT_HLUTNM of \addr[1]_i_1\ : label is "soft_lutpair67"; + attribute SOFT_HLUTNM of \addr[2]_i_1\ : label is "soft_lutpair67"; + attribute SOFT_HLUTNM of \addr[5]_i_1\ : label is "soft_lutpair68"; + attribute SOFT_HLUTNM of \addr[7]_i_1\ : label is "soft_lutpair68"; + attribute SOFT_HLUTNM of \di[12]_i_2\ : label is "soft_lutpair66"; + attribute SOFT_HLUTNM of \di[13]_i_2\ : label is "soft_lutpair66"; + attribute SOFT_HLUTNM of \di[14]_i_2\ : label is "soft_lutpair64"; + attribute SOFT_HLUTNM of \di[15]_i_2\ : label is "soft_lutpair64"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of \do_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of \do_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[10]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[11]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[12]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[13]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[14]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[15]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[6]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[7]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[8]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg1_reg[9]\ : label is std.standard.true; + attribute KEEP of \do_reg1_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg1_reg[9]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[10]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[11]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[12]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[13]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[14]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[15]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[6]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[7]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[8]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \do_reg2_reg[9]\ : label is std.standard.true; + attribute KEEP of \do_reg2_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \do_reg2_reg[9]\ : label is "NO"; + attribute SOFT_HLUTNM of \fsm[1]_i_1__1\ : label is "soft_lutpair59"; + attribute SOFT_HLUTNM of \fsm[2]_i_1__0\ : label is "soft_lutpair59"; + attribute SOFT_HLUTNM of \fsm_inferred__1/i_\ : label is "soft_lutpair65"; + attribute SOFT_HLUTNM of \fsm_inferred__1/i___0\ : label is "soft_lutpair65"; + attribute FSM_ENCODED_STATES : string; + attribute FSM_ENCODED_STATES of \fsm_reg[0]\ : label is "FSM_READ:000000100,FSM_QPLLRESET:010000000,FSM_LOAD:000000010,FSM_DONE:001000000,FSM_WRITE:000010000,FSM_IDLE:000000001,FSM_WRDY:000100000,FSM_RRDY:000001000,FSM_QPLLLOCK:100000000"; + attribute FSM_ENCODED_STATES of \fsm_reg[1]\ : label is "FSM_READ:000000100,FSM_QPLLRESET:010000000,FSM_LOAD:000000010,FSM_DONE:001000000,FSM_WRITE:000010000,FSM_IDLE:000000001,FSM_WRDY:000100000,FSM_RRDY:000001000,FSM_QPLLLOCK:100000000"; + attribute FSM_ENCODED_STATES of \fsm_reg[2]\ : label is "FSM_READ:000000100,FSM_QPLLRESET:010000000,FSM_LOAD:000000010,FSM_DONE:001000000,FSM_WRITE:000010000,FSM_IDLE:000000001,FSM_WRDY:000100000,FSM_RRDY:000001000,FSM_QPLLLOCK:100000000"; + attribute FSM_ENCODED_STATES of \fsm_reg[3]\ : label is "FSM_READ:000000100,FSM_QPLLRESET:010000000,FSM_LOAD:000000010,FSM_DONE:001000000,FSM_WRITE:000010000,FSM_IDLE:000000001,FSM_WRDY:000100000,FSM_RRDY:000001000,FSM_QPLLLOCK:100000000"; + attribute FSM_ENCODED_STATES of \fsm_reg[4]\ : label is "FSM_READ:000000100,FSM_QPLLRESET:010000000,FSM_LOAD:000000010,FSM_DONE:001000000,FSM_WRITE:000010000,FSM_IDLE:000000001,FSM_WRDY:000100000,FSM_RRDY:000001000,FSM_QPLLLOCK:100000000"; + attribute FSM_ENCODED_STATES of \fsm_reg[5]\ : label is "FSM_READ:000000100,FSM_QPLLRESET:010000000,FSM_LOAD:000000010,FSM_DONE:001000000,FSM_WRITE:000010000,FSM_IDLE:000000001,FSM_WRDY:000100000,FSM_RRDY:000001000,FSM_QPLLLOCK:100000000"; + attribute FSM_ENCODED_STATES of \fsm_reg[6]\ : label is "FSM_READ:000000100,FSM_QPLLRESET:010000000,FSM_LOAD:000000010,FSM_DONE:001000000,FSM_WRITE:000010000,FSM_IDLE:000000001,FSM_WRDY:000100000,FSM_RRDY:000001000,FSM_QPLLLOCK:100000000"; + attribute ASYNC_REG_boolean of gen3_reg1_reg : label is std.standard.true; + attribute KEEP of gen3_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of gen3_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of gen3_reg2_reg : label is std.standard.true; + attribute KEEP of gen3_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of gen3_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \gtx_common.gtxe2_common_i_i_2\ : label is "soft_lutpair58"; + attribute SOFT_HLUTNM of \gtx_common.gtxe2_common_i_i_4\ : label is "soft_lutpair63"; + attribute SOFT_HLUTNM of \index[0]_i_1\ : label is "soft_lutpair61"; + attribute SOFT_HLUTNM of \index[1]_i_1\ : label is "soft_lutpair60"; + attribute SOFT_HLUTNM of \index[2]_i_1\ : label is "soft_lutpair60"; + attribute SOFT_HLUTNM of \index[2]_i_2\ : label is "soft_lutpair58"; + attribute SOFT_HLUTNM of \load_cnt[0]_i_1__0\ : label is "soft_lutpair62"; + attribute SOFT_HLUTNM of \load_cnt[1]_i_1\ : label is "soft_lutpair62"; + attribute SOFT_HLUTNM of \load_cnt[1]_i_2\ : label is "soft_lutpair63"; + attribute ASYNC_REG_boolean of ovrd_reg1_reg : label is std.standard.true; + attribute KEEP of ovrd_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of ovrd_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of ovrd_reg2_reg : label is std.standard.true; + attribute KEEP of ovrd_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of ovrd_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of qplllock_reg1_reg : label is std.standard.true; + attribute KEEP of qplllock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of qplllock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of qplllock_reg2_reg : label is std.standard.true; + attribute KEEP of qplllock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of qplllock_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rdy_reg1_reg : label is std.standard.true; + attribute KEEP of rdy_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rdy_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rdy_reg2_reg : label is std.standard.true; + attribute KEEP of rdy_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rdy_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of start_reg1_reg : label is std.standard.true; + attribute KEEP of start_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of start_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of start_reg2_reg : label is std.standard.true; + attribute KEEP of start_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of start_reg2_reg : label is "NO"; +begin +\addr[0]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"12" + ) + port map ( + I0 => \index_reg_n_0_[1]\, + I1 => \index_reg_n_0_[0]\, + I2 => \index_reg_n_0_[2]\, + O => \addr[0]_i_1_n_0\ + ); +\addr[1]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"0D" + ) + port map ( + I0 => \index_reg_n_0_[2]\, + I1 => \index_reg_n_0_[0]\, + I2 => \index_reg_n_0_[1]\, + O => \addr[1]_i_1_n_0\ + ); +\addr[2]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"4D" + ) + port map ( + I0 => \index_reg_n_0_[1]\, + I1 => \index_reg_n_0_[2]\, + I2 => \index_reg_n_0_[0]\, + O => \addr[2]_i_1_n_0\ + ); +\addr[5]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"7" + ) + port map ( + I0 => \index_reg_n_0_[1]\, + I1 => \index_reg_n_0_[0]\, + O => \addr[5]_i_1_n_0\ + ); +\addr[7]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"08" + ) + port map ( + I0 => \index_reg_n_0_[1]\, + I1 => \index_reg_n_0_[0]\, + I2 => \index_reg_n_0_[2]\, + O => \addr[7]_i_1_n_0\ + ); +\addr_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \addr[0]_i_1_n_0\, + Q => Q(0), + R => RST_DCLK_RESET + ); +\addr_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \addr[1]_i_1_n_0\, + Q => Q(1), + R => RST_DCLK_RESET + ); +\addr_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \addr[2]_i_1_n_0\, + Q => Q(2), + R => RST_DCLK_RESET + ); +\addr_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \addr[5]_i_1_n_0\, + Q => Q(3), + R => RST_DCLK_RESET + ); +\addr_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \addr[7]_i_1_n_0\, + Q => Q(4), + R => RST_DCLK_RESET + ); +\crscode[0]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => do_reg2(1), + I1 => \index_reg_n_0_[2]\, + O => p_2_in(0) + ); +\crscode[1]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => do_reg2(2), + I1 => \index_reg_n_0_[2]\, + O => p_2_in(1) + ); +\crscode[2]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => do_reg2(3), + I1 => \index_reg_n_0_[2]\, + O => p_2_in(2) + ); +\crscode[3]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => do_reg2(4), + I1 => \index_reg_n_0_[2]\, + O => p_2_in(3) + ); +\crscode[4]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => do_reg2(5), + I1 => \index_reg_n_0_[2]\, + O => p_2_in(4) + ); +\crscode[5]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"C080" + ) + port map ( + I0 => ovrd_reg2, + I1 => \index_reg_n_0_[0]\, + I2 => \index_reg_n_0_[1]\, + I3 => \index_reg_n_0_[2]\, + O => p_1_in + ); +\crscode[5]_i_2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => do_reg2(6), + I1 => \index_reg_n_0_[2]\, + O => p_2_in(5) + ); +\crscode_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => p_1_in, + D => p_2_in(0), + Q => \crscode_reg_n_0_[0]\, + R => RST_DCLK_RESET + ); +\crscode_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => p_1_in, + D => p_2_in(1), + Q => \crscode_reg_n_0_[1]\, + R => RST_DCLK_RESET + ); +\crscode_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => p_1_in, + D => p_2_in(2), + Q => \crscode_reg_n_0_[2]\, + R => RST_DCLK_RESET + ); +\crscode_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => p_1_in, + D => p_2_in(3), + Q => \crscode_reg_n_0_[3]\, + R => RST_DCLK_RESET + ); +\crscode_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => p_1_in, + D => p_2_in(4), + Q => \crscode_reg_n_0_[4]\, + R => RST_DCLK_RESET + ); +\crscode_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => p_1_in, + D => p_2_in(5), + Q => \crscode_reg_n_0_[5]\, + R => RST_DCLK_RESET + ); +\di[0]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"7E00" + ) + port map ( + I0 => \index_reg_n_0_[0]\, + I1 => \index_reg_n_0_[2]\, + I2 => \index_reg_n_0_[1]\, + I3 => do_reg2(0), + O => di(0) + ); +\di[10]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"0CC5CCCC" + ) + port map ( + I0 => \crscode_reg_n_0_[0]\, + I1 => do_reg2(10), + I2 => \index_reg_n_0_[1]\, + I3 => \index_reg_n_0_[0]\, + I4 => \index_reg_n_0_[2]\, + O => di(10) + ); +\di[11]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"AAAAAAAAAAAAEBAA" + ) + port map ( + I0 => \di[11]_i_2_n_0\, + I1 => \crscode_reg_n_0_[0]\, + I2 => \crscode_reg_n_0_[1]\, + I3 => \index_reg_n_0_[2]\, + I4 => \index_reg_n_0_[0]\, + I5 => \index_reg_n_0_[1]\, + O => di(11) + ); +\di[11]_i_2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"20FF2044" + ) + port map ( + I0 => \index_reg_n_0_[0]\, + I1 => \index_reg_n_0_[1]\, + I2 => ovrd_reg2, + I3 => \index_reg_n_0_[2]\, + I4 => do_reg2(11), + O => \di[11]_i_2_n_0\ + ); +\di[12]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"00AA0000AAAAC3AA" + ) + port map ( + I0 => do_reg2(12), + I1 => \di[12]_i_2_n_0\, + I2 => \crscode_reg_n_0_[2]\, + I3 => \index_reg_n_0_[2]\, + I4 => \index_reg_n_0_[0]\, + I5 => \index_reg_n_0_[1]\, + O => di(12) + ); +\di[12]_i_2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"E" + ) + port map ( + I0 => \crscode_reg_n_0_[0]\, + I1 => \crscode_reg_n_0_[1]\, + O => \di[12]_i_2_n_0\ + ); +\di[13]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"00F0F099F0F0FFF0" + ) + port map ( + I0 => \crscode_reg_n_0_[3]\, + I1 => \di[13]_i_2_n_0\, + I2 => do_reg2(13), + I3 => \index_reg_n_0_[1]\, + I4 => \index_reg_n_0_[0]\, + I5 => \index_reg_n_0_[2]\, + O => di(13) + ); +\di[13]_i_2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"FE" + ) + port map ( + I0 => \crscode_reg_n_0_[1]\, + I1 => \crscode_reg_n_0_[0]\, + I2 => \crscode_reg_n_0_[2]\, + O => \di[13]_i_2_n_0\ + ); +\di[14]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"00F0F099F0F0FFF0" + ) + port map ( + I0 => \crscode_reg_n_0_[4]\, + I1 => \di[14]_i_2_n_0\, + I2 => do_reg2(14), + I3 => \index_reg_n_0_[1]\, + I4 => \index_reg_n_0_[0]\, + I5 => \index_reg_n_0_[2]\, + O => di(14) + ); +\di[14]_i_2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"FFFE" + ) + port map ( + I0 => \crscode_reg_n_0_[2]\, + I1 => \crscode_reg_n_0_[0]\, + I2 => \crscode_reg_n_0_[1]\, + I3 => \crscode_reg_n_0_[3]\, + O => \di[14]_i_2_n_0\ + ); +\di[15]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0AACAAAA0AA3AAAA" + ) + port map ( + I0 => do_reg2(15), + I1 => \di[15]_i_2_n_0\, + I2 => \index_reg_n_0_[1]\, + I3 => \index_reg_n_0_[0]\, + I4 => \index_reg_n_0_[2]\, + I5 => \crscode_reg_n_0_[5]\, + O => di(15) + ); +\di[15]_i_2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFFFFFE" + ) + port map ( + I0 => \crscode_reg_n_0_[3]\, + I1 => \crscode_reg_n_0_[1]\, + I2 => \crscode_reg_n_0_[0]\, + I3 => \crscode_reg_n_0_[2]\, + I4 => \crscode_reg_n_0_[4]\, + O => \di[15]_i_2_n_0\ + ); +\di[1]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"7E00" + ) + port map ( + I0 => \index_reg_n_0_[0]\, + I1 => \index_reg_n_0_[2]\, + I2 => \index_reg_n_0_[1]\, + I3 => do_reg2(1), + O => di(1) + ); +\di[2]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"7E00" + ) + port map ( + I0 => \index_reg_n_0_[0]\, + I1 => \index_reg_n_0_[2]\, + I2 => \index_reg_n_0_[1]\, + I3 => do_reg2(2), + O => di(2) + ); +\di[3]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"7E00" + ) + port map ( + I0 => \index_reg_n_0_[0]\, + I1 => \index_reg_n_0_[2]\, + I2 => \index_reg_n_0_[1]\, + I3 => do_reg2(3), + O => di(3) + ); +\di[4]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"7E00" + ) + port map ( + I0 => \index_reg_n_0_[0]\, + I1 => \index_reg_n_0_[2]\, + I2 => \index_reg_n_0_[1]\, + I3 => do_reg2(4), + O => di(4) + ); +\di[5]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"2AAB" + ) + port map ( + I0 => do_reg2(5), + I1 => \index_reg_n_0_[1]\, + I2 => \index_reg_n_0_[0]\, + I3 => \index_reg_n_0_[2]\, + O => di(5) + ); +\di[6]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"2BA8" + ) + port map ( + I0 => do_reg2(6), + I1 => \index_reg_n_0_[1]\, + I2 => \index_reg_n_0_[2]\, + I3 => \index_reg_n_0_[0]\, + O => di(6) + ); +\di[7]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"7E00" + ) + port map ( + I0 => \index_reg_n_0_[0]\, + I1 => \index_reg_n_0_[2]\, + I2 => \index_reg_n_0_[1]\, + I3 => do_reg2(7), + O => di(7) + ); +\di[8]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"2AAB" + ) + port map ( + I0 => do_reg2(8), + I1 => \index_reg_n_0_[1]\, + I2 => \index_reg_n_0_[0]\, + I3 => \index_reg_n_0_[2]\, + O => di(8) + ); +\di[9]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"7E00" + ) + port map ( + I0 => \index_reg_n_0_[0]\, + I1 => \index_reg_n_0_[2]\, + I2 => \index_reg_n_0_[1]\, + I3 => do_reg2(9), + O => di(9) + ); +\di_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di(0), + Q => \di_reg[15]_0\(0), + R => RST_DCLK_RESET + ); +\di_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di(10), + Q => \di_reg[15]_0\(10), + R => RST_DCLK_RESET + ); +\di_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di(11), + Q => \di_reg[15]_0\(11), + R => RST_DCLK_RESET + ); +\di_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di(12), + Q => \di_reg[15]_0\(12), + R => RST_DCLK_RESET + ); +\di_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di(13), + Q => \di_reg[15]_0\(13), + R => RST_DCLK_RESET + ); +\di_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di(14), + Q => \di_reg[15]_0\(14), + R => RST_DCLK_RESET + ); +\di_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di(15), + Q => \di_reg[15]_0\(15), + R => RST_DCLK_RESET + ); +\di_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di(1), + Q => \di_reg[15]_0\(1), + R => RST_DCLK_RESET + ); +\di_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di(2), + Q => \di_reg[15]_0\(2), + R => RST_DCLK_RESET + ); +\di_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di(3), + Q => \di_reg[15]_0\(3), + R => RST_DCLK_RESET + ); +\di_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di(4), + Q => \di_reg[15]_0\(4), + R => RST_DCLK_RESET + ); +\di_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di(5), + Q => \di_reg[15]_0\(5), + R => RST_DCLK_RESET + ); +\di_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di(6), + Q => \di_reg[15]_0\(6), + R => RST_DCLK_RESET + ); +\di_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di(7), + Q => \di_reg[15]_0\(7), + R => RST_DCLK_RESET + ); +\di_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di(8), + Q => \di_reg[15]_0\(8), + R => RST_DCLK_RESET + ); +\di_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => di(9), + Q => \di_reg[15]_0\(9), + R => RST_DCLK_RESET + ); +\do_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(0), + Q => do_reg1(0), + R => RST_DCLK_RESET + ); +\do_reg1_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(10), + Q => do_reg1(10), + R => RST_DCLK_RESET + ); +\do_reg1_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(11), + Q => do_reg1(11), + R => RST_DCLK_RESET + ); +\do_reg1_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(12), + Q => do_reg1(12), + R => RST_DCLK_RESET + ); +\do_reg1_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(13), + Q => do_reg1(13), + R => RST_DCLK_RESET + ); +\do_reg1_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(14), + Q => do_reg1(14), + R => RST_DCLK_RESET + ); +\do_reg1_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(15), + Q => do_reg1(15), + R => RST_DCLK_RESET + ); +\do_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(1), + Q => do_reg1(1), + R => RST_DCLK_RESET + ); +\do_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(2), + Q => do_reg1(2), + R => RST_DCLK_RESET + ); +\do_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(3), + Q => do_reg1(3), + R => RST_DCLK_RESET + ); +\do_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(4), + Q => do_reg1(4), + R => RST_DCLK_RESET + ); +\do_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(5), + Q => do_reg1(5), + R => RST_DCLK_RESET + ); +\do_reg1_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(6), + Q => do_reg1(6), + R => RST_DCLK_RESET + ); +\do_reg1_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(7), + Q => do_reg1(7), + R => RST_DCLK_RESET + ); +\do_reg1_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(8), + Q => do_reg1(8), + R => RST_DCLK_RESET + ); +\do_reg1_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => D(9), + Q => do_reg1(9), + R => RST_DCLK_RESET + ); +\do_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(0), + Q => do_reg2(0), + R => RST_DCLK_RESET + ); +\do_reg2_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(10), + Q => do_reg2(10), + R => RST_DCLK_RESET + ); +\do_reg2_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(11), + Q => do_reg2(11), + R => RST_DCLK_RESET + ); +\do_reg2_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(12), + Q => do_reg2(12), + R => RST_DCLK_RESET + ); +\do_reg2_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(13), + Q => do_reg2(13), + R => RST_DCLK_RESET + ); +\do_reg2_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(14), + Q => do_reg2(14), + R => RST_DCLK_RESET + ); +\do_reg2_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(15), + Q => do_reg2(15), + R => RST_DCLK_RESET + ); +\do_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(1), + Q => do_reg2(1), + R => RST_DCLK_RESET + ); +\do_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(2), + Q => do_reg2(2), + R => RST_DCLK_RESET + ); +\do_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(3), + Q => do_reg2(3), + R => RST_DCLK_RESET + ); +\do_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(4), + Q => do_reg2(4), + R => RST_DCLK_RESET + ); +\do_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(5), + Q => do_reg2(5), + R => RST_DCLK_RESET + ); +\do_reg2_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(6), + Q => do_reg2(6), + R => RST_DCLK_RESET + ); +\do_reg2_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(7), + Q => do_reg2(7), + R => RST_DCLK_RESET + ); +\do_reg2_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(8), + Q => do_reg2(8), + R => RST_DCLK_RESET + ); +\do_reg2_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => do_reg1(9), + Q => do_reg2(9), + R => RST_DCLK_RESET + ); +done_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000000000010" + ) + port map ( + I0 => \fsm_reg_n_0_[6]\, + I1 => start_reg2, + I2 => \fsm_reg_n_0_[0]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm_reg_n_0_[4]\, + I5 => \gtx_common.gtxe2_common_i_i_4_n_0\, + O => done + ); +done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => done, + Q => QPLL_DRP_DONE, + R => RST_DCLK_RESET + ); +\fsm[0]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"5DFF5D5D5D5D5D5D" + ) + port map ( + I0 => \fsm_inferred__1/i___1_n_0\, + I1 => \fsm_reg_n_0_[0]\, + I2 => start_reg2, + I3 => \fsm[0]_i_2__1_n_0\, + I4 => \index_reg_n_0_[1]\, + I5 => \fsm_reg_n_0_[6]\, + O => \p_0_in__0\(0) + ); +\fsm[0]_i_2__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"B" + ) + port map ( + I0 => \index_reg_n_0_[0]\, + I1 => \index_reg_n_0_[2]\, + O => \fsm[0]_i_2__1_n_0\ + ); +\fsm[1]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFF7000" + ) + port map ( + I0 => load_cnt(0), + I1 => load_cnt(1), + I2 => \fsm_inferred__1/i___1_n_0\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \fsm[1]_i_2__0_n_0\, + O => \p_0_in__0\(1) + ); +\fsm[1]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FF00B000B000B000" + ) + port map ( + I0 => \fsm[0]_i_2__1_n_0\, + I1 => \index_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[6]\, + I3 => \fsm_inferred__1/i___1_n_0\, + I4 => \fsm_reg_n_0_[0]\, + I5 => start_reg2, + O => \fsm[1]_i_2__0_n_0\ + ); +\fsm[2]_i_1__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"8000" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_inferred__1/i___1_n_0\, + I2 => load_cnt(1), + I3 => load_cnt(0), + O => \p_0_in__0\(2) + ); +\fsm[3]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"88C8" + ) + port map ( + I0 => \fsm_reg_n_0_[2]\, + I1 => \fsm_inferred__1/i___1_n_0\, + I2 => \fsm_reg_n_0_[3]\, + I3 => rdy_reg2, + O => \p_0_in__0\(3) + ); +\fsm[4]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"80" + ) + port map ( + I0 => rdy_reg2, + I1 => \fsm_reg_n_0_[3]\, + I2 => \fsm_inferred__1/i___1_n_0\, + O => \p_0_in__0\(4) + ); +\fsm[5]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"88C8" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => \fsm_inferred__1/i___1_n_0\, + I2 => \fsm_reg_n_0_[5]\, + I3 => rdy_reg2, + O => \p_0_in__0\(5) + ); +\fsm[6]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"80" + ) + port map ( + I0 => rdy_reg2, + I1 => \fsm_reg_n_0_[5]\, + I2 => \fsm_inferred__1/i___1_n_0\, + O => \p_0_in__0\(6) + ); +\fsm_inferred__1/i_\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0116" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[3]\, + O => \fsm_inferred__1/i__n_0\ + ); +\fsm_inferred__1/i___0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"FEE8" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[1]\, + I2 => \fsm_reg_n_0_[2]\, + I3 => \fsm_reg_n_0_[3]\, + O => \fsm_inferred__1/i___0_n_0\ + ); +\fsm_inferred__1/i___1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000116" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => \fsm_reg_n_0_[5]\, + I2 => \fsm_reg_n_0_[6]\, + I3 => \fsm_inferred__1/i__n_0\, + I4 => \fsm_inferred__1/i___0_n_0\, + O => \fsm_inferred__1/i___1_n_0\ + ); +\fsm_reg[0]\: unisim.vcomponents.FDSE + generic map( + INIT => '1' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \p_0_in__0\(0), + Q => \fsm_reg_n_0_[0]\, + S => RST_DCLK_RESET + ); +\fsm_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \p_0_in__0\(1), + Q => \fsm_reg_n_0_[1]\, + R => RST_DCLK_RESET + ); +\fsm_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \p_0_in__0\(2), + Q => \fsm_reg_n_0_[2]\, + R => RST_DCLK_RESET + ); +\fsm_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \p_0_in__0\(3), + Q => \fsm_reg_n_0_[3]\, + R => RST_DCLK_RESET + ); +\fsm_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \p_0_in__0\(4), + Q => \fsm_reg_n_0_[4]\, + R => RST_DCLK_RESET + ); +\fsm_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \p_0_in__0\(5), + Q => \fsm_reg_n_0_[5]\, + R => RST_DCLK_RESET + ); +\fsm_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \p_0_in__0\(6), + Q => \fsm_reg_n_0_[6]\, + R => RST_DCLK_RESET + ); +gen3_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => QPLL_DRP_GEN3, + Q => gen3_reg1, + R => RST_DCLK_RESET + ); +gen3_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => gen3_reg1, + Q => gen3_reg2, + R => RST_DCLK_RESET + ); +\gtx_common.gtxe2_common_i_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000000010100" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[0]\, + I2 => \fsm_reg_n_0_[6]\, + I3 => \fsm_reg_n_0_[4]\, + I4 => \fsm_reg_n_0_[2]\, + I5 => \gtx_common.gtxe2_common_i_i_3_n_0\, + O => qpll_drp_en + ); +\gtx_common.gtxe2_common_i_i_2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000010" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[6]\, + I2 => \fsm_reg_n_0_[4]\, + I3 => \fsm_reg_n_0_[1]\, + I4 => \gtx_common.gtxe2_common_i_i_4_n_0\, + O => qpll_drp_we + ); +\gtx_common.gtxe2_common_i_i_3\: unisim.vcomponents.LUT2 + generic map( + INIT => X"E" + ) + port map ( + I0 => \fsm_reg_n_0_[3]\, + I1 => \fsm_reg_n_0_[5]\, + O => \gtx_common.gtxe2_common_i_i_3_n_0\ + ); +\gtx_common.gtxe2_common_i_i_4\: unisim.vcomponents.LUT3 + generic map( + INIT => X"FE" + ) + port map ( + I0 => \fsm_reg_n_0_[5]\, + I1 => \fsm_reg_n_0_[3]\, + I2 => \fsm_reg_n_0_[2]\, + O => \gtx_common.gtxe2_common_i_i_4_n_0\ + ); +\index[0]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00FF7000" + ) + port map ( + I0 => \index_reg_n_0_[1]\, + I1 => \index_reg_n_0_[2]\, + I2 => \index[2]_i_2_n_0\, + I3 => index, + I4 => \index_reg_n_0_[0]\, + O => \index[0]_i_1_n_0\ + ); +\index[1]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"10FFC000" + ) + port map ( + I0 => \index_reg_n_0_[2]\, + I1 => \index_reg_n_0_[0]\, + I2 => \index[2]_i_2_n_0\, + I3 => index, + I4 => \index_reg_n_0_[1]\, + O => \index[1]_i_1_n_0\ + ); +\index[2]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"22FF8000" + ) + port map ( + I0 => \index[2]_i_2_n_0\, + I1 => \index_reg_n_0_[1]\, + I2 => \index_reg_n_0_[0]\, + I3 => index, + I4 => \index_reg_n_0_[2]\, + O => \index[2]_i_1_n_0\ + ); +\index[2]_i_2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000004" + ) + port map ( + I0 => \fsm_reg_n_0_[1]\, + I1 => \fsm_reg_n_0_[6]\, + I2 => \fsm_reg_n_0_[0]\, + I3 => \gtx_common.gtxe2_common_i_i_4_n_0\, + I4 => \fsm_reg_n_0_[4]\, + O => \index[2]_i_2_n_0\ + ); +\index[2]_i_3\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFEFFFEFEEB" + ) + port map ( + I0 => \index[2]_i_4_n_0\, + I1 => \fsm_reg_n_0_[5]\, + I2 => \fsm_reg_n_0_[3]\, + I3 => \fsm_reg_n_0_[2]\, + I4 => \fsm_reg_n_0_[1]\, + I5 => \fsm_reg_n_0_[4]\, + O => index + ); +\index[2]_i_4\: unisim.vcomponents.LUT2 + generic map( + INIT => X"E" + ) + port map ( + I0 => \fsm_reg_n_0_[0]\, + I1 => \fsm_reg_n_0_[6]\, + O => \index[2]_i_4_n_0\ + ); +\index_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \index[0]_i_1_n_0\, + Q => \index_reg_n_0_[0]\, + R => RST_DCLK_RESET + ); +\index_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \index[1]_i_1_n_0\, + Q => \index_reg_n_0_[1]\, + R => RST_DCLK_RESET + ); +\index_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \index[2]_i_1_n_0\, + Q => \index_reg_n_0_[2]\, + R => RST_DCLK_RESET + ); +\load_cnt[0]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00B00000" + ) + port map ( + I0 => load_cnt(1), + I1 => load_cnt(0), + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[6]\, + I4 => \load_cnt[1]_i_2_n_0\, + O => \load_cnt[0]_i_1__0_n_0\ + ); +\load_cnt[1]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00E00000" + ) + port map ( + I0 => load_cnt(0), + I1 => load_cnt(1), + I2 => \fsm_reg_n_0_[1]\, + I3 => \fsm_reg_n_0_[6]\, + I4 => \load_cnt[1]_i_2_n_0\, + O => \load_cnt[1]_i_1_n_0\ + ); +\load_cnt[1]_i_2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000001" + ) + port map ( + I0 => \fsm_reg_n_0_[4]\, + I1 => \fsm_reg_n_0_[5]\, + I2 => \fsm_reg_n_0_[3]\, + I3 => \fsm_reg_n_0_[2]\, + I4 => \fsm_reg_n_0_[0]\, + O => \load_cnt[1]_i_2_n_0\ + ); +\load_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \load_cnt[0]_i_1__0_n_0\, + Q => load_cnt(0), + R => RST_DCLK_RESET + ); +\load_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_dclk_in, + CE => '1', + D => \load_cnt[1]_i_1_n_0\, + Q => load_cnt(1), + R => RST_DCLK_RESET + ); +ovrd_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => '0', + Q => ovrd_reg1, + R => RST_DCLK_RESET + ); +ovrd_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => ovrd_reg1, + Q => ovrd_reg2, + R => RST_DCLK_RESET + ); +qplllock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => QPLL_QPLLLOCK, + Q => qplllock_reg1, + R => RST_DCLK_RESET + ); +qplllock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => qplllock_reg1, + Q => qplllock_reg2, + R => RST_DCLK_RESET + ); +rdy_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => qpll_drp_rdy, + Q => rdy_reg1, + R => RST_DCLK_RESET + ); +rdy_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => rdy_reg1, + Q => rdy_reg2, + R => RST_DCLK_RESET + ); +start_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => QRST_DRP_START, + Q => start_reg1, + R => RST_DCLK_RESET + ); +start_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_dclk_in, + CE => '1', + D => start_reg1, + Q => start_reg2, + R => RST_DCLK_RESET + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_qpll_reset is + port ( + Q : out STD_LOGIC_VECTOR ( 1 downto 0 ); + QPLL_QPLLRESET : out STD_LOGIC; + QPLL_QPLLPD : out STD_LOGIC; + SS : in STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_pclk_in : in STD_LOGIC; + D : in STD_LOGIC_VECTOR ( 3 downto 0 ); + \rate_reg1_reg[0]_0\ : in STD_LOGIC_VECTOR ( 0 to 0 ); + QRST_DRP_DONE : in STD_LOGIC_VECTOR ( 0 to 0 ); + \qpllreset_in_reg1_reg[3]_0\ : in STD_LOGIC_VECTOR ( 3 downto 0 ); + QPLL_QPLLLOCK : in STD_LOGIC; + \cplllock_reg1_reg[3]_0\ : in STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_mmcm_lock_in : in STD_LOGIC + ); +end pcie_7x_0_pcie_7x_0_qpll_reset; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_qpll_reset is + signal \FSM_onehot_fsm[0]_i_1__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[1]_i_1__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[1]_i_2__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[2]_i_1__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[3]_i_1__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_1__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[5]_i_1__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[0]\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[1]\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[3]\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[4]\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[5]\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[6]\ : STD_LOGIC; + signal \^q\ : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal \^qpll_qpllpd\ : STD_LOGIC; + signal \^qpll_qpllreset\ : STD_LOGIC; + signal cplllock_reg1 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of cplllock_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of cplllock_reg1 : signal is "true"; + signal cplllock_reg2 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of cplllock_reg2 : signal is "NO"; + attribute async_reg of cplllock_reg2 : signal is "true"; + signal drp_done_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of drp_done_reg1 : signal is "NO"; + attribute async_reg of drp_done_reg1 : signal is "true"; + signal drp_done_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of drp_done_reg2 : signal is "NO"; + attribute async_reg of drp_done_reg2 : signal is "true"; + signal fsm2 : STD_LOGIC; + signal mmcm_lock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of mmcm_lock_reg1 : signal is "NO"; + attribute async_reg of mmcm_lock_reg1 : signal is "true"; + signal mmcm_lock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of mmcm_lock_reg2 : signal is "NO"; + attribute async_reg of mmcm_lock_reg2 : signal is "true"; + signal qplllock_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of qplllock_reg1 : signal is "NO"; + attribute async_reg of qplllock_reg1 : signal is "true"; + signal qplllock_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of qplllock_reg2 : signal is "NO"; + attribute async_reg of qplllock_reg2 : signal is "true"; + signal qpllpd : STD_LOGIC; + signal qpllpd_i_1_n_0 : STD_LOGIC; + signal qpllpd_i_2_n_0 : STD_LOGIC; + signal qpllpd_in_reg1 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of qpllpd_in_reg1 : signal is "NO"; + attribute async_reg of qpllpd_in_reg1 : signal is "true"; + signal qpllpd_in_reg2 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of qpllpd_in_reg2 : signal is "NO"; + attribute async_reg of qpllpd_in_reg2 : signal is "true"; + signal qpllreset_i_1_n_0 : STD_LOGIC; + signal qpllreset_i_2_n_0 : STD_LOGIC; + signal qpllreset_i_3_n_0 : STD_LOGIC; + signal qpllreset_in_reg1 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of qpllreset_in_reg1 : signal is "NO"; + attribute async_reg of qpllreset_in_reg1 : signal is "true"; + signal qpllreset_in_reg2 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of qpllreset_in_reg2 : signal is "NO"; + attribute async_reg of qpllreset_in_reg2 : signal is "true"; + signal rate_reg1 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rate_reg1 : signal is "NO"; + attribute async_reg of rate_reg1 : signal is "true"; + signal rate_reg2 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rate_reg2 : signal is "NO"; + attribute async_reg of rate_reg2 : signal is "true"; + attribute FSM_ENCODED_STATES : string; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[0]\ : label is "FSM_MMCM_LOCK:00000010,FSM_DRP_START_NOM:00000100,FSM_WAIT_LOCK:00000001,FSM_QPLL_PD:01000000,FSM_QPLL_PDRESET:00100000,FSM_QPLLLOCK2:1010,FSM_IDLE:10000000,FSM_DRP_START_OPT:0111,FSM_QPLL_RESET:1001,FSM_QPLLLOCK:00010000,FSM_DRP_DONE_OPT:1000,FSM_DRP_DONE_NOM:00001000"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[1]\ : label is "FSM_MMCM_LOCK:00000010,FSM_DRP_START_NOM:00000100,FSM_WAIT_LOCK:00000001,FSM_QPLL_PD:01000000,FSM_QPLL_PDRESET:00100000,FSM_QPLLLOCK2:1010,FSM_IDLE:10000000,FSM_DRP_START_OPT:0111,FSM_QPLL_RESET:1001,FSM_QPLLLOCK:00010000,FSM_DRP_DONE_OPT:1000,FSM_DRP_DONE_NOM:00001000"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[2]\ : label is "FSM_MMCM_LOCK:00000010,FSM_DRP_START_NOM:00000100,FSM_WAIT_LOCK:00000001,FSM_QPLL_PD:01000000,FSM_QPLL_PDRESET:00100000,FSM_QPLLLOCK2:1010,FSM_IDLE:10000000,FSM_DRP_START_OPT:0111,FSM_QPLL_RESET:1001,FSM_QPLLLOCK:00010000,FSM_DRP_DONE_OPT:1000,FSM_DRP_DONE_NOM:00001000"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[3]\ : label is "FSM_MMCM_LOCK:00000010,FSM_DRP_START_NOM:00000100,FSM_WAIT_LOCK:00000001,FSM_QPLL_PD:01000000,FSM_QPLL_PDRESET:00100000,FSM_QPLLLOCK2:1010,FSM_IDLE:10000000,FSM_DRP_START_OPT:0111,FSM_QPLL_RESET:1001,FSM_QPLLLOCK:00010000,FSM_DRP_DONE_OPT:1000,FSM_DRP_DONE_NOM:00001000"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[4]\ : label is "FSM_MMCM_LOCK:00000010,FSM_DRP_START_NOM:00000100,FSM_WAIT_LOCK:00000001,FSM_QPLL_PD:01000000,FSM_QPLL_PDRESET:00100000,FSM_QPLLLOCK2:1010,FSM_IDLE:10000000,FSM_DRP_START_OPT:0111,FSM_QPLL_RESET:1001,FSM_QPLLLOCK:00010000,FSM_DRP_DONE_OPT:1000,FSM_DRP_DONE_NOM:00001000"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[5]\ : label is "FSM_MMCM_LOCK:00000010,FSM_DRP_START_NOM:00000100,FSM_WAIT_LOCK:00000001,FSM_QPLL_PD:01000000,FSM_QPLL_PDRESET:00100000,FSM_QPLLLOCK2:1010,FSM_IDLE:10000000,FSM_DRP_START_OPT:0111,FSM_QPLL_RESET:1001,FSM_QPLLLOCK:00010000,FSM_DRP_DONE_OPT:1000,FSM_DRP_DONE_NOM:00001000"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[6]\ : label is "FSM_MMCM_LOCK:00000010,FSM_DRP_START_NOM:00000100,FSM_WAIT_LOCK:00000001,FSM_QPLL_PD:01000000,FSM_QPLL_PDRESET:00100000,FSM_QPLLLOCK2:1010,FSM_IDLE:10000000,FSM_DRP_START_OPT:0111,FSM_QPLL_RESET:1001,FSM_QPLLLOCK:00010000,FSM_DRP_DONE_OPT:1000,FSM_DRP_DONE_NOM:00001000"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[7]\ : label is "FSM_MMCM_LOCK:00000010,FSM_DRP_START_NOM:00000100,FSM_WAIT_LOCK:00000001,FSM_QPLL_PD:01000000,FSM_QPLL_PDRESET:00100000,FSM_QPLLLOCK2:1010,FSM_IDLE:10000000,FSM_DRP_START_OPT:0111,FSM_QPLL_RESET:1001,FSM_QPLLLOCK:00010000,FSM_DRP_DONE_OPT:1000,FSM_DRP_DONE_NOM:00001000"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of \cplllock_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of \cplllock_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \cplllock_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \cplllock_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \cplllock_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \cplllock_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \cplllock_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \cplllock_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \cplllock_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \cplllock_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \cplllock_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \cplllock_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \cplllock_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \cplllock_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \cplllock_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \cplllock_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \cplllock_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \cplllock_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \cplllock_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \cplllock_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \cplllock_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \cplllock_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \cplllock_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \cplllock_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \drp_done_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \drp_done_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \drp_done_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \drp_done_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \drp_done_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \drp_done_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of mmcm_lock_reg1_reg : label is std.standard.true; + attribute KEEP of mmcm_lock_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of mmcm_lock_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of mmcm_lock_reg2_reg : label is std.standard.true; + attribute KEEP of mmcm_lock_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of mmcm_lock_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of \qplllock_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \qplllock_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \qplllock_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \qplllock_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \qplllock_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \qplllock_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \qpllpd_in_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \qpllpd_in_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \qpllpd_in_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \qpllpd_in_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \qpllpd_in_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \qpllpd_in_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \qpllpd_in_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \qpllpd_in_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \qpllpd_in_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \qpllpd_in_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \qpllpd_in_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \qpllpd_in_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \qpllpd_in_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \qpllpd_in_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \qpllpd_in_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \qpllpd_in_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \qpllpd_in_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \qpllpd_in_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \qpllpd_in_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \qpllpd_in_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \qpllpd_in_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \qpllpd_in_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \qpllpd_in_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \qpllpd_in_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \qpllreset_in_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \qpllreset_in_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \qpllreset_in_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \qpllreset_in_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \qpllreset_in_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \qpllreset_in_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \qpllreset_in_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \qpllreset_in_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \qpllreset_in_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \qpllreset_in_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \qpllreset_in_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \qpllreset_in_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \qpllreset_in_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \qpllreset_in_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \qpllreset_in_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \qpllreset_in_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \qpllreset_in_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \qpllreset_in_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \qpllreset_in_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \qpllreset_in_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \qpllreset_in_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \qpllreset_in_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \qpllreset_in_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \qpllreset_in_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rate_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rate_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rate_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rate_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rate_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rate_reg2_reg[1]\ : label is "NO"; +begin + Q(1 downto 0) <= \^q\(1 downto 0); + QPLL_QPLLPD <= \^qpll_qpllpd\; + QPLL_QPLLRESET <= \^qpll_qpllreset\; +\FSM_onehot_fsm[0]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"AAAAAAAAAAAAAAA8" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[0]\, + I1 => qplllock_reg2, + I2 => cplllock_reg2(1), + I3 => cplllock_reg2(0), + I4 => cplllock_reg2(3), + I5 => cplllock_reg2(2), + O => \FSM_onehot_fsm[0]_i_1__0_n_0\ + ); +\FSM_onehot_fsm[1]_i_1__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"8F88" + ) + port map ( + I0 => \FSM_onehot_fsm[1]_i_2__0_n_0\, + I1 => \FSM_onehot_fsm_reg_n_0_[0]\, + I2 => fsm2, + I3 => \FSM_onehot_fsm_reg_n_0_[1]\, + O => \FSM_onehot_fsm[1]_i_1__0_n_0\ + ); +\FSM_onehot_fsm[1]_i_2__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000001" + ) + port map ( + I0 => cplllock_reg2(2), + I1 => cplllock_reg2(3), + I2 => cplllock_reg2(0), + I3 => cplllock_reg2(1), + I4 => qplllock_reg2, + O => \FSM_onehot_fsm[1]_i_2__0_n_0\ + ); +\FSM_onehot_fsm[2]_i_1__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"F888" + ) + port map ( + I0 => fsm2, + I1 => \FSM_onehot_fsm_reg_n_0_[1]\, + I2 => drp_done_reg2, + I3 => \^q\(0), + O => \FSM_onehot_fsm[2]_i_1__0_n_0\ + ); +\FSM_onehot_fsm[2]_i_2__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"80000000" + ) + port map ( + I0 => mmcm_lock_reg2, + I1 => cplllock_reg2(2), + I2 => cplllock_reg2(3), + I3 => cplllock_reg2(0), + I4 => cplllock_reg2(1), + O => fsm2 + ); +\FSM_onehot_fsm[3]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"32" + ) + port map ( + I0 => \^q\(0), + I1 => drp_done_reg2, + I2 => \FSM_onehot_fsm_reg_n_0_[3]\, + O => \FSM_onehot_fsm[3]_i_1__0_n_0\ + ); +\FSM_onehot_fsm[4]_i_1__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"8F88" + ) + port map ( + I0 => drp_done_reg2, + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => qplllock_reg2, + I3 => \FSM_onehot_fsm_reg_n_0_[4]\, + O => \FSM_onehot_fsm[4]_i_1__0_n_0\ + ); +\FSM_onehot_fsm[5]_i_1__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[4]\, + I1 => qplllock_reg2, + O => \FSM_onehot_fsm[5]_i_1__0_n_0\ + ); +\FSM_onehot_fsm[7]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"E" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[6]\, + I1 => \^q\(1), + O => qpllpd + ); +\FSM_onehot_fsm_reg[0]\: unisim.vcomponents.FDSE + generic map( + INIT => '1' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[0]_i_1__0_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[0]\, + S => SS(0) + ); +\FSM_onehot_fsm_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[1]_i_1__0_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[1]\, + R => SS(0) + ); +\FSM_onehot_fsm_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[2]_i_1__0_n_0\, + Q => \^q\(0), + R => SS(0) + ); +\FSM_onehot_fsm_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[3]_i_1__0_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[3]\, + R => SS(0) + ); +\FSM_onehot_fsm_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[4]_i_1__0_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[4]\, + R => SS(0) + ); +\FSM_onehot_fsm_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[5]_i_1__0_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[5]\, + R => SS(0) + ); +\FSM_onehot_fsm_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm_reg_n_0_[5]\, + Q => \FSM_onehot_fsm_reg_n_0_[6]\, + R => SS(0) + ); +\FSM_onehot_fsm_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => qpllpd, + Q => \^q\(1), + R => SS(0) + ); +\cplllock_reg1_reg[0]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \cplllock_reg1_reg[3]_0\(0), + Q => cplllock_reg1(0), + S => SS(0) + ); +\cplllock_reg1_reg[1]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \cplllock_reg1_reg[3]_0\(1), + Q => cplllock_reg1(1), + S => SS(0) + ); +\cplllock_reg1_reg[2]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \cplllock_reg1_reg[3]_0\(2), + Q => cplllock_reg1(2), + S => SS(0) + ); +\cplllock_reg1_reg[3]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \cplllock_reg1_reg[3]_0\(3), + Q => cplllock_reg1(3), + S => SS(0) + ); +\cplllock_reg2_reg[0]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => cplllock_reg1(0), + Q => cplllock_reg2(0), + S => SS(0) + ); +\cplllock_reg2_reg[1]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => cplllock_reg1(1), + Q => cplllock_reg2(1), + S => SS(0) + ); +\cplllock_reg2_reg[2]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => cplllock_reg1(2), + Q => cplllock_reg2(2), + S => SS(0) + ); +\cplllock_reg2_reg[3]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => cplllock_reg1(3), + Q => cplllock_reg2(3), + S => SS(0) + ); +\drp_done_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => QRST_DRP_DONE(0), + Q => drp_done_reg1, + R => SS(0) + ); +\drp_done_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => drp_done_reg1, + Q => drp_done_reg2, + R => SS(0) + ); +mmcm_lock_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_mmcm_lock_in, + Q => mmcm_lock_reg1, + R => SS(0) + ); +mmcm_lock_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => mmcm_lock_reg1, + Q => mmcm_lock_reg2, + R => SS(0) + ); +\qplllock_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => QPLL_QPLLLOCK, + Q => qplllock_reg1, + R => SS(0) + ); +\qplllock_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => qplllock_reg1, + Q => qplllock_reg2, + R => SS(0) + ); +qpllpd_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"FBF0FBFFFBF0FB00" + ) + port map ( + I0 => rate_reg2(0), + I1 => rate_reg2(1), + I2 => qpllpd_i_2_n_0, + I3 => \FSM_onehot_fsm_reg_n_0_[6]\, + I4 => \^q\(1), + I5 => \^qpll_qpllpd\, + O => qpllpd_i_1_n_0 + ); +qpllpd_i_2: unisim.vcomponents.LUT5 + generic map( + INIT => X"80000000" + ) + port map ( + I0 => \^q\(1), + I1 => qpllpd_in_reg2(2), + I2 => qpllpd_in_reg2(3), + I3 => qpllpd_in_reg2(0), + I4 => qpllpd_in_reg2(1), + O => qpllpd_i_2_n_0 + ); +\qpllpd_in_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => D(0), + Q => qpllpd_in_reg1(0), + R => SS(0) + ); +\qpllpd_in_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => D(1), + Q => qpllpd_in_reg1(1), + R => SS(0) + ); +\qpllpd_in_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => D(2), + Q => qpllpd_in_reg1(2), + R => SS(0) + ); +\qpllpd_in_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => D(3), + Q => qpllpd_in_reg1(3), + R => SS(0) + ); +\qpllpd_in_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => qpllpd_in_reg1(0), + Q => qpllpd_in_reg2(0), + R => SS(0) + ); +\qpllpd_in_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => qpllpd_in_reg1(1), + Q => qpllpd_in_reg2(1), + R => SS(0) + ); +\qpllpd_in_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => qpllpd_in_reg1(2), + Q => qpllpd_in_reg2(2), + R => SS(0) + ); +\qpllpd_in_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => qpllpd_in_reg1(3), + Q => qpllpd_in_reg2(3), + R => SS(0) + ); +qpllpd_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => qpllpd_i_1_n_0, + Q => \^qpll_qpllpd\, + R => SS(0) + ); +qpllreset_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"ECECECEFECECECE0" + ) + port map ( + I0 => qpllreset_i_2_n_0, + I1 => qpllreset_i_3_n_0, + I2 => \FSM_onehot_fsm_reg_n_0_[5]\, + I3 => \FSM_onehot_fsm_reg_n_0_[4]\, + I4 => \^q\(1), + I5 => \^qpll_qpllreset\, + O => qpllreset_i_1_n_0 + ); +qpllreset_i_2: unisim.vcomponents.LUT2 + generic map( + INIT => X"B" + ) + port map ( + I0 => rate_reg2(0), + I1 => rate_reg2(1), + O => qpllreset_i_2_n_0 + ); +qpllreset_i_3: unisim.vcomponents.LUT5 + generic map( + INIT => X"80000000" + ) + port map ( + I0 => \^q\(1), + I1 => qpllreset_in_reg2(2), + I2 => qpllreset_in_reg2(3), + I3 => qpllreset_in_reg2(0), + I4 => qpllreset_in_reg2(1), + O => qpllreset_i_3_n_0 + ); +\qpllreset_in_reg1_reg[0]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \qpllreset_in_reg1_reg[3]_0\(0), + Q => qpllreset_in_reg1(0), + S => SS(0) + ); +\qpllreset_in_reg1_reg[1]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \qpllreset_in_reg1_reg[3]_0\(1), + Q => qpllreset_in_reg1(1), + S => SS(0) + ); +\qpllreset_in_reg1_reg[2]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \qpllreset_in_reg1_reg[3]_0\(2), + Q => qpllreset_in_reg1(2), + S => SS(0) + ); +\qpllreset_in_reg1_reg[3]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \qpllreset_in_reg1_reg[3]_0\(3), + Q => qpllreset_in_reg1(3), + S => SS(0) + ); +\qpllreset_in_reg2_reg[0]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => qpllreset_in_reg1(0), + Q => qpllreset_in_reg2(0), + S => SS(0) + ); +\qpllreset_in_reg2_reg[1]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => qpllreset_in_reg1(1), + Q => qpllreset_in_reg2(1), + S => SS(0) + ); +\qpllreset_in_reg2_reg[2]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => qpllreset_in_reg1(2), + Q => qpllreset_in_reg2(2), + S => SS(0) + ); +\qpllreset_in_reg2_reg[3]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => qpllreset_in_reg1(3), + Q => qpllreset_in_reg2(3), + S => SS(0) + ); +qpllreset_reg: unisim.vcomponents.FDSE + generic map( + INIT => '1' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => qpllreset_i_1_n_0, + Q => \^qpll_qpllreset\, + S => SS(0) + ); +\rate_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rate_reg1_reg[0]_0\(0), + Q => rate_reg1(0), + R => SS(0) + ); +\rate_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rate_reg1(1), + R => SS(0) + ); +\rate_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rate_reg1(0), + Q => rate_reg2(0), + R => SS(0) + ); +\rate_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rate_reg1(1), + Q => rate_reg2(1), + R => SS(0) + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_qpll_wrapper is + port ( + qpll_drp_rdy : out STD_LOGIC; + QPLL_QPLLLOCK : out STD_LOGIC; + QPLL_QPLLOUTCLK : out STD_LOGIC; + QPLL_QPLLOUTREFCLK : out STD_LOGIC; + D : out STD_LOGIC_VECTOR ( 15 downto 0 ); + pipe_dclk_in : in STD_LOGIC; + qpll_drp_en : in STD_LOGIC; + qpll_drp_we : in STD_LOGIC; + sys_clk : in STD_LOGIC; + QPLL_QPLLPD : in STD_LOGIC; + QPLL_QPLLRESET : in STD_LOGIC; + rdy_reg1_reg : in STD_LOGIC_VECTOR ( 15 downto 0 ); + Q : in STD_LOGIC_VECTOR ( 4 downto 0 ) + ); +end pcie_7x_0_pcie_7x_0_qpll_wrapper; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_qpll_wrapper is + signal \NLW_gtx_common.gtxe2_common_i_QPLLFBCLKLOST_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_common.gtxe2_common_i_QPLLREFCLKLOST_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_common.gtxe2_common_i_REFCLKOUTMONITOR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_common.gtxe2_common_i_QPLLDMONITOR_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 0 ); + attribute BOX_TYPE : string; + attribute BOX_TYPE of \gtx_common.gtxe2_common_i\ : label is "PRIMITIVE"; +begin +\gtx_common.gtxe2_common_i\: unisim.vcomponents.GTXE2_COMMON + generic map( + BIAS_CFG => X"0000040000001000", + COMMON_CFG => X"00000000", + IS_DRPCLK_INVERTED => '0', + IS_GTGREFCLK_INVERTED => '0', + IS_QPLLLOCKDETCLK_INVERTED => '0', + QPLL_CFG => X"06801C1", + QPLL_CLKOUT_CFG => B"0000", + QPLL_COARSE_FREQ_OVRD => B"010000", + QPLL_COARSE_FREQ_OVRD_EN => '0', + QPLL_CP => B"0000011111", + QPLL_CP_MONITOR_EN => '0', + QPLL_DMONITOR_SEL => '0', + QPLL_FBDIV => B"0100100000", + QPLL_FBDIV_MONITOR_EN => '0', + QPLL_FBDIV_RATIO => '1', + QPLL_INIT_CFG => X"000006", + QPLL_LOCK_CFG => X"21E8", + QPLL_LPF => B"1101", + QPLL_REFCLK_DIV => 1, + SIM_QPLLREFCLK_SEL => B"001", + SIM_RESET_SPEEDUP => "FALSE", + SIM_VERSION => "3.0" + ) + port map ( + BGBYPASSB => '1', + BGMONITORENB => '1', + BGPDB => '1', + BGRCALOVRD(4 downto 0) => B"11111", + DRPADDR(7) => Q(4), + DRPADDR(6) => '0', + DRPADDR(5) => Q(3), + DRPADDR(4) => Q(3), + DRPADDR(3) => Q(4), + DRPADDR(2 downto 0) => Q(2 downto 0), + DRPCLK => pipe_dclk_in, + DRPDI(15 downto 0) => rdy_reg1_reg(15 downto 0), + DRPDO(15 downto 0) => D(15 downto 0), + DRPEN => qpll_drp_en, + DRPRDY => qpll_drp_rdy, + DRPWE => qpll_drp_we, + GTGREFCLK => '0', + GTNORTHREFCLK0 => '0', + GTNORTHREFCLK1 => '0', + GTREFCLK0 => sys_clk, + GTREFCLK1 => '0', + GTSOUTHREFCLK0 => '0', + GTSOUTHREFCLK1 => '0', + PMARSVD(7 downto 0) => B"00000000", + QPLLDMONITOR(7 downto 0) => \NLW_gtx_common.gtxe2_common_i_QPLLDMONITOR_UNCONNECTED\(7 downto 0), + QPLLFBCLKLOST => \NLW_gtx_common.gtxe2_common_i_QPLLFBCLKLOST_UNCONNECTED\, + QPLLLOCK => QPLL_QPLLLOCK, + QPLLLOCKDETCLK => '0', + QPLLLOCKEN => '1', + QPLLOUTCLK => QPLL_QPLLOUTCLK, + QPLLOUTREFCLK => QPLL_QPLLOUTREFCLK, + QPLLOUTRESET => '0', + QPLLPD => QPLL_QPLLPD, + QPLLREFCLKLOST => \NLW_gtx_common.gtxe2_common_i_QPLLREFCLKLOST_UNCONNECTED\, + QPLLREFCLKSEL(2 downto 0) => B"001", + QPLLRESET => QPLL_QPLLRESET, + QPLLRSVD1(15 downto 0) => B"0000000000000000", + QPLLRSVD2(4 downto 0) => B"11111", + RCALENB => '1', + REFCLKOUTMONITOR => \NLW_gtx_common.gtxe2_common_i_REFCLKOUTMONITOR_UNCONNECTED\ + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_rxeq_scan is + port ( + D : out STD_LOGIC_VECTOR ( 2 downto 0 ); + rxeq_new_txcoeff_req : out STD_LOGIC; + adapt_done_reg_0 : out STD_LOGIC; + new_txcoeff_done_reg_0 : out STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + new_txcoeff_req_reg1_reg_0 : in STD_LOGIC; + rxeq_preset_valid : in STD_LOGIC; + \out\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + Q : in STD_LOGIC_VECTOR ( 4 downto 0 ); + \FSM_onehot_fsm_rx_reg[5]\ : in STD_LOGIC_VECTOR ( 2 downto 0 ); + rxeq_adapt_done_reg_reg : in STD_LOGIC; + rxeq_adapt_done_reg_reg_0 : in STD_LOGIC; + rxeq_adapt_done_reg_reg_1 : in STD_LOGIC; + rxeq_adapt_done_reg : in STD_LOGIC; + USER_RXEQ_ADAPT_DONE : in STD_LOGIC; + \preset_reg1_reg[2]_0\ : in STD_LOGIC_VECTOR ( 2 downto 0 ); + \txpreset_reg1_reg[3]_0\ : in STD_LOGIC_VECTOR ( 3 downto 0 ); + \txcoeff_reg1_reg[17]_0\ : in STD_LOGIC_VECTOR ( 17 downto 0 ); + \fs_reg1_reg[5]_0\ : in STD_LOGIC_VECTOR ( 5 downto 0 ); + \lf_reg1_reg[5]_0\ : in STD_LOGIC_VECTOR ( 5 downto 0 ) + ); +end pcie_7x_0_pcie_7x_0_rxeq_scan; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_rxeq_scan is + signal \FSM_onehot_fsm[1]_i_1__4_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[2]_i_1__4_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[3]_i_1__4_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[3]_i_2__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_10__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_11__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_12__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_13__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_1__4_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_2__3_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_3__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_4__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_5__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_6__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_7__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_8__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_9__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[1]\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[2]\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[3]\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[4]\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx[6]_i_2__2_n_0\ : STD_LOGIC; + signal adapt_done : STD_LOGIC; + signal \adapt_done_cnt_i_1__2_n_0\ : STD_LOGIC; + signal \adapt_done_cnt_i_2__2_n_0\ : STD_LOGIC; + signal adapt_done_cnt_reg_n_0 : STD_LOGIC; + signal converge_cnt : STD_LOGIC_VECTOR ( 21 downto 0 ); + signal converge_cnt0 : STD_LOGIC_VECTOR ( 21 downto 1 ); + signal converge_cnt_0 : STD_LOGIC_VECTOR ( 21 downto 0 ); + signal \converge_cnt_reg[12]_i_2__2_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_2__2_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_2__2_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_2__2_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_2__2_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_2__2_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_2__2_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_2__2_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_2__2_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_2__2_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_2__2_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_2__2_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_2__2_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_2__2_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_2__2_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_2__2_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_2__2_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_2__2_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_2__2_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_2__2_n_3\ : STD_LOGIC; + signal fs_reg1 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of fs_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of fs_reg1 : signal is "true"; + signal fs_reg2 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of fs_reg2 : signal is "NO"; + attribute async_reg of fs_reg2 : signal is "true"; + signal lf_reg1 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of lf_reg1 : signal is "NO"; + attribute async_reg of lf_reg1 : signal is "true"; + signal lf_reg2 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of lf_reg2 : signal is "NO"; + attribute async_reg of lf_reg2 : signal is "true"; + signal new_txcoeff_done : STD_LOGIC; + signal new_txcoeff_req_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of new_txcoeff_req_reg1 : signal is "NO"; + attribute async_reg of new_txcoeff_req_reg1 : signal is "true"; + signal new_txcoeff_req_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of new_txcoeff_req_reg2 : signal is "NO"; + attribute async_reg of new_txcoeff_req_reg2 : signal is "true"; + signal preset_done : STD_LOGIC; + signal preset_done_1 : STD_LOGIC; + signal preset_reg1 : STD_LOGIC_VECTOR ( 2 downto 0 ); + attribute SHIFT_EXTRACT of preset_reg1 : signal is "NO"; + attribute async_reg of preset_reg1 : signal is "true"; + signal preset_reg2 : STD_LOGIC_VECTOR ( 2 downto 0 ); + attribute SHIFT_EXTRACT of preset_reg2 : signal is "NO"; + attribute async_reg of preset_reg2 : signal is "true"; + signal preset_valid_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of preset_valid_reg1 : signal is "NO"; + attribute async_reg of preset_valid_reg1 : signal is "true"; + signal preset_valid_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of preset_valid_reg2 : signal is "NO"; + attribute async_reg of preset_valid_reg2 : signal is "true"; + signal rxeqscan_adapt_done : STD_LOGIC; + signal rxeqscan_new_txcoeff_done : STD_LOGIC; + signal txcoeff_reg1 : STD_LOGIC_VECTOR ( 17 downto 0 ); + attribute SHIFT_EXTRACT of txcoeff_reg1 : signal is "NO"; + attribute async_reg of txcoeff_reg1 : signal is "true"; + signal txcoeff_reg2 : STD_LOGIC_VECTOR ( 17 downto 0 ); + attribute SHIFT_EXTRACT of txcoeff_reg2 : signal is "NO"; + attribute async_reg of txcoeff_reg2 : signal is "true"; + signal txpreset_reg1 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of txpreset_reg1 : signal is "NO"; + attribute async_reg of txpreset_reg1 : signal is "true"; + signal txpreset_reg2 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of txpreset_reg2 : signal is "NO"; + attribute async_reg of txpreset_reg2 : signal is "true"; + signal \NLW_converge_cnt_reg[21]_i_2__2_CO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal \NLW_converge_cnt_reg[21]_i_2__2_O_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \FSM_onehot_fsm[3]_i_2__2\ : label is "soft_lutpair181"; + attribute SOFT_HLUTNM of \FSM_onehot_fsm[4]_i_4__2\ : label is "soft_lutpair180"; + attribute FSM_ENCODED_STATES : string; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[1]\ : label is "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[2]\ : label is "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[3]\ : label is "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[4]\ : label is "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001"; + attribute SOFT_HLUTNM of \FSM_onehot_fsm_rx[6]_i_2__2\ : label is "soft_lutpair182"; + attribute SOFT_HLUTNM of \converge_cnt[18]_i_1__2\ : label is "soft_lutpair180"; + attribute SOFT_HLUTNM of \converge_cnt[21]_i_1__2\ : label is "soft_lutpair181"; + attribute ADDER_THRESHOLD : integer; + attribute ADDER_THRESHOLD of \converge_cnt_reg[12]_i_2__2\ : label is 35; + attribute ADDER_THRESHOLD of \converge_cnt_reg[16]_i_2__2\ : label is 35; + attribute ADDER_THRESHOLD of \converge_cnt_reg[20]_i_2__2\ : label is 35; + attribute ADDER_THRESHOLD of \converge_cnt_reg[21]_i_2__2\ : label is 35; + attribute ADDER_THRESHOLD of \converge_cnt_reg[4]_i_2__2\ : label is 35; + attribute ADDER_THRESHOLD of \converge_cnt_reg[8]_i_2__2\ : label is 35; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of \fs_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of \fs_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \fs_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \fs_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \fs_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \fs_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \fs_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \fs_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \fs_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \fs_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \fs_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \fs_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \fs_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg2_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \lf_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \lf_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \lf_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \lf_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \lf_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \lf_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \lf_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \lf_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \lf_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \lf_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \lf_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \lf_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg2_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of new_txcoeff_req_reg1_reg : label is std.standard.true; + attribute KEEP of new_txcoeff_req_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of new_txcoeff_req_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of new_txcoeff_req_reg2_reg : label is std.standard.true; + attribute KEEP of new_txcoeff_req_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of new_txcoeff_req_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of \preset_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \preset_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \preset_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \preset_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \preset_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \preset_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \preset_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \preset_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \preset_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \preset_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \preset_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \preset_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \preset_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \preset_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \preset_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \preset_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \preset_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \preset_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of preset_valid_reg1_reg : label is std.standard.true; + attribute KEEP of preset_valid_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of preset_valid_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of preset_valid_reg2_reg : label is std.standard.true; + attribute KEEP of preset_valid_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of preset_valid_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \rxeq_new_txcoeff_req_i_1__2\ : label is "soft_lutpair182"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[10]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[11]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[12]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[13]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[14]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[15]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[16]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[16]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[16]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[17]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[17]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[17]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[6]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[7]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[8]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[9]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[9]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[10]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[11]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[12]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[13]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[14]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[15]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[16]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[16]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[16]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[17]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[17]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[17]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[6]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[7]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[8]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[9]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[9]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg2_reg[3]\ : label is "NO"; +begin +\FSM_onehot_fsm[1]_i_1__4\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0F00AFAF0F11AFBB" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[4]\, + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => preset_valid_reg2, + I3 => \FSM_onehot_fsm_reg_n_0_[2]\, + I4 => new_txcoeff_req_reg2, + I5 => \FSM_onehot_fsm_reg_n_0_[1]\, + O => \FSM_onehot_fsm[1]_i_1__4_n_0\ + ); +\FSM_onehot_fsm[2]_i_1__4\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => preset_valid_reg2, + I1 => \FSM_onehot_fsm_reg_n_0_[2]\, + I2 => \FSM_onehot_fsm_reg_n_0_[1]\, + O => \FSM_onehot_fsm[2]_i_1__4_n_0\ + ); +\FSM_onehot_fsm[3]_i_1__4\: unisim.vcomponents.LUT6 + generic map( + INIT => X"04FF040404040404" + ) + port map ( + I0 => \FSM_onehot_fsm[3]_i_2__2_n_0\, + I1 => \FSM_onehot_fsm[4]_i_2__3_n_0\, + I2 => \FSM_onehot_fsm[4]_i_3__2_n_0\, + I3 => preset_valid_reg2, + I4 => new_txcoeff_req_reg2, + I5 => \FSM_onehot_fsm_reg_n_0_[1]\, + O => \FSM_onehot_fsm[3]_i_1__4_n_0\ + ); +\FSM_onehot_fsm[3]_i_2__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"04FF" + ) + port map ( + I0 => \out\(0), + I1 => \out\(1), + I2 => adapt_done_cnt_reg_n_0, + I3 => \FSM_onehot_fsm_reg_n_0_[3]\, + O => \FSM_onehot_fsm[3]_i_2__2_n_0\ + ); +\FSM_onehot_fsm[4]_i_10__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFBFFFFF" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_13__2_n_0\, + I1 => converge_cnt(2), + I2 => converge_cnt(20), + I3 => converge_cnt(10), + I4 => converge_cnt(0), + O => \FSM_onehot_fsm[4]_i_10__2_n_0\ + ); +\FSM_onehot_fsm[4]_i_11__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"EFFF" + ) + port map ( + I0 => converge_cnt(2), + I1 => converge_cnt(6), + I2 => converge_cnt(8), + I3 => converge_cnt(3), + O => \FSM_onehot_fsm[4]_i_11__2_n_0\ + ); +\FSM_onehot_fsm[4]_i_12__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"EFFFFFFF" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_13__2_n_0\, + I1 => converge_cnt(14), + I2 => converge_cnt(10), + I3 => converge_cnt(21), + I4 => converge_cnt(19), + O => \FSM_onehot_fsm[4]_i_12__2_n_0\ + ); +\FSM_onehot_fsm[4]_i_13__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"FF7F" + ) + port map ( + I0 => converge_cnt(16), + I1 => converge_cnt(11), + I2 => converge_cnt(9), + I3 => converge_cnt(5), + O => \FSM_onehot_fsm[4]_i_13__2_n_0\ + ); +\FSM_onehot_fsm[4]_i_1__4\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFD0FFD0FFD0" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_2__3_n_0\, + I1 => \FSM_onehot_fsm[4]_i_3__2_n_0\, + I2 => \FSM_onehot_fsm_reg_n_0_[3]\, + I3 => \FSM_onehot_fsm[4]_i_4__2_n_0\, + I4 => \FSM_onehot_fsm_reg_n_0_[4]\, + I5 => new_txcoeff_req_reg2, + O => \FSM_onehot_fsm[4]_i_1__4_n_0\ + ); +\FSM_onehot_fsm[4]_i_2__3\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFFFFFFBF" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_5__2_n_0\, + I1 => converge_cnt(17), + I2 => converge_cnt(18), + I3 => converge_cnt(21), + I4 => converge_cnt(8), + I5 => \FSM_onehot_fsm[4]_i_6__2_n_0\, + O => \FSM_onehot_fsm[4]_i_2__3_n_0\ + ); +\FSM_onehot_fsm[4]_i_3__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000001000000" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_7__2_n_0\, + I1 => converge_cnt(7), + I2 => converge_cnt(1), + I3 => converge_cnt(15), + I4 => converge_cnt(13), + I5 => \FSM_onehot_fsm[4]_i_8__2_n_0\, + O => \FSM_onehot_fsm[4]_i_3__2_n_0\ + ); +\FSM_onehot_fsm[4]_i_4__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0400" + ) + port map ( + I0 => \out\(0), + I1 => \out\(1), + I2 => adapt_done_cnt_reg_n_0, + I3 => \FSM_onehot_fsm_reg_n_0_[3]\, + O => \FSM_onehot_fsm[4]_i_4__2_n_0\ + ); +\FSM_onehot_fsm[4]_i_5__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"FFF2" + ) + port map ( + I0 => \out\(1), + I1 => \out\(0), + I2 => converge_cnt(7), + I3 => converge_cnt(1), + O => \FSM_onehot_fsm[4]_i_5__2_n_0\ + ); +\FSM_onehot_fsm[4]_i_6__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFFFFFFFB" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_9__2_n_0\, + I1 => converge_cnt(19), + I2 => converge_cnt(6), + I3 => converge_cnt(3), + I4 => converge_cnt(4), + I5 => \FSM_onehot_fsm[4]_i_10__2_n_0\, + O => \FSM_onehot_fsm[4]_i_6__2_n_0\ + ); +\FSM_onehot_fsm[4]_i_7__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"DFFF" + ) + port map ( + I0 => \out\(1), + I1 => \out\(0), + I2 => converge_cnt(17), + I3 => converge_cnt(18), + O => \FSM_onehot_fsm[4]_i_7__2_n_0\ + ); +\FSM_onehot_fsm[4]_i_8__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFFFFFFFE" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_11__2_n_0\, + I1 => converge_cnt(12), + I2 => converge_cnt(20), + I3 => converge_cnt(0), + I4 => converge_cnt(4), + I5 => \FSM_onehot_fsm[4]_i_12__2_n_0\, + O => \FSM_onehot_fsm[4]_i_8__2_n_0\ + ); +\FSM_onehot_fsm[4]_i_9__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"FFDF" + ) + port map ( + I0 => converge_cnt(15), + I1 => converge_cnt(13), + I2 => converge_cnt(14), + I3 => converge_cnt(12), + O => \FSM_onehot_fsm[4]_i_9__2_n_0\ + ); +\FSM_onehot_fsm_reg[1]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[1]_i_1__4_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[1]\, + S => RST_CPLLRESET + ); +\FSM_onehot_fsm_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[2]_i_1__4_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[3]_i_1__4_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[4]_i_1__4_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_rx[2]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"40FF4040" + ) + port map ( + I0 => \out\(1), + I1 => Q(0), + I2 => \out\(0), + I3 => preset_done, + I4 => Q(1), + O => D(0) + ); +\FSM_onehot_fsm_rx[5]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"F444444444444444" + ) + port map ( + I0 => rxeqscan_new_txcoeff_done, + I1 => Q(3), + I2 => \FSM_onehot_fsm_rx_reg[5]\(2), + I3 => \FSM_onehot_fsm_rx_reg[5]\(0), + I4 => \FSM_onehot_fsm_rx_reg[5]\(1), + I5 => Q(2), + O => D(1) + ); +\FSM_onehot_fsm_rx[6]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFFE0E0E0" + ) + port map ( + I0 => \out\(1), + I1 => \out\(0), + I2 => Q(4), + I3 => preset_done, + I4 => Q(1), + I5 => \FSM_onehot_fsm_rx[6]_i_2__2_n_0\, + O => D(2) + ); +\FSM_onehot_fsm_rx[6]_i_2__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => rxeqscan_new_txcoeff_done, + I1 => Q(3), + O => \FSM_onehot_fsm_rx[6]_i_2__2_n_0\ + ); +\adapt_done_cnt_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"000A0A0AF0F0F8F0" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[4]\, + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + I5 => \adapt_done_cnt_i_2__2_n_0\, + O => \adapt_done_cnt_i_1__2_n_0\ + ); +\adapt_done_cnt_i_2__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00FF0101" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[3]\, + I1 => \FSM_onehot_fsm_reg_n_0_[2]\, + I2 => \FSM_onehot_fsm_reg_n_0_[1]\, + I3 => new_txcoeff_req_reg2, + I4 => \FSM_onehot_fsm_reg_n_0_[4]\, + O => \adapt_done_cnt_i_2__2_n_0\ + ); +adapt_done_cnt_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \adapt_done_cnt_i_1__2_n_0\, + Q => adapt_done_cnt_reg_n_0, + R => RST_CPLLRESET + ); +\adapt_done_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"F8000000" + ) + port map ( + I0 => \out\(1), + I1 => \out\(0), + I2 => adapt_done_cnt_reg_n_0, + I3 => new_txcoeff_req_reg2, + I4 => \FSM_onehot_fsm_reg_n_0_[4]\, + O => adapt_done + ); +adapt_done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => adapt_done, + Q => rxeqscan_adapt_done, + R => RST_CPLLRESET + ); +\converge_cnt[0]_i_1__5\: unisim.vcomponents.LUT5 + generic map( + INIT => X"44444044" + ) + port map ( + I0 => converge_cnt(0), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(0) + ); +\converge_cnt[10]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(10), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(10) + ); +\converge_cnt[11]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(11), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(11) + ); +\converge_cnt[12]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(12), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(12) + ); +\converge_cnt[13]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(13), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(13) + ); +\converge_cnt[14]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(14), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(14) + ); +\converge_cnt[15]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(15), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(15) + ); +\converge_cnt[16]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(16), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(16) + ); +\converge_cnt[17]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(17), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(17) + ); +\converge_cnt[18]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(18), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(18) + ); +\converge_cnt[19]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(19), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(19) + ); +\converge_cnt[1]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(1), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(1) + ); +\converge_cnt[20]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(20), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(20) + ); +\converge_cnt[21]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(21), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(21) + ); +\converge_cnt[2]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(2), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(2) + ); +\converge_cnt[3]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(3), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(3) + ); +\converge_cnt[4]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(4), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(4) + ); +\converge_cnt[5]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(5), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(5) + ); +\converge_cnt[6]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(6), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(6) + ); +\converge_cnt[7]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(7), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(7) + ); +\converge_cnt[8]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(8), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(8) + ); +\converge_cnt[9]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(9), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(9) + ); +\converge_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(0), + Q => converge_cnt(0), + R => RST_CPLLRESET + ); +\converge_cnt_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(10), + Q => converge_cnt(10), + R => RST_CPLLRESET + ); +\converge_cnt_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(11), + Q => converge_cnt(11), + R => RST_CPLLRESET + ); +\converge_cnt_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(12), + Q => converge_cnt(12), + R => RST_CPLLRESET + ); +\converge_cnt_reg[12]_i_2__2\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[8]_i_2__2_n_0\, + CO(3) => \converge_cnt_reg[12]_i_2__2_n_0\, + CO(2) => \converge_cnt_reg[12]_i_2__2_n_1\, + CO(1) => \converge_cnt_reg[12]_i_2__2_n_2\, + CO(0) => \converge_cnt_reg[12]_i_2__2_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 0) => converge_cnt0(12 downto 9), + S(3 downto 0) => converge_cnt(12 downto 9) + ); +\converge_cnt_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(13), + Q => converge_cnt(13), + R => RST_CPLLRESET + ); +\converge_cnt_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(14), + Q => converge_cnt(14), + R => RST_CPLLRESET + ); +\converge_cnt_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(15), + Q => converge_cnt(15), + R => RST_CPLLRESET + ); +\converge_cnt_reg[16]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(16), + Q => converge_cnt(16), + R => RST_CPLLRESET + ); +\converge_cnt_reg[16]_i_2__2\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[12]_i_2__2_n_0\, + CO(3) => \converge_cnt_reg[16]_i_2__2_n_0\, + CO(2) => \converge_cnt_reg[16]_i_2__2_n_1\, + CO(1) => \converge_cnt_reg[16]_i_2__2_n_2\, + CO(0) => \converge_cnt_reg[16]_i_2__2_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 0) => converge_cnt0(16 downto 13), + S(3 downto 0) => converge_cnt(16 downto 13) + ); +\converge_cnt_reg[17]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(17), + Q => converge_cnt(17), + R => RST_CPLLRESET + ); +\converge_cnt_reg[18]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(18), + Q => converge_cnt(18), + R => RST_CPLLRESET + ); +\converge_cnt_reg[19]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(19), + Q => converge_cnt(19), + R => RST_CPLLRESET + ); +\converge_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(1), + Q => converge_cnt(1), + R => RST_CPLLRESET + ); +\converge_cnt_reg[20]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(20), + Q => converge_cnt(20), + R => RST_CPLLRESET + ); +\converge_cnt_reg[20]_i_2__2\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[16]_i_2__2_n_0\, + CO(3) => \converge_cnt_reg[20]_i_2__2_n_0\, + CO(2) => \converge_cnt_reg[20]_i_2__2_n_1\, + CO(1) => \converge_cnt_reg[20]_i_2__2_n_2\, + CO(0) => \converge_cnt_reg[20]_i_2__2_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 0) => converge_cnt0(20 downto 17), + S(3 downto 0) => converge_cnt(20 downto 17) + ); +\converge_cnt_reg[21]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(21), + Q => converge_cnt(21), + R => RST_CPLLRESET + ); +\converge_cnt_reg[21]_i_2__2\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[20]_i_2__2_n_0\, + CO(3 downto 0) => \NLW_converge_cnt_reg[21]_i_2__2_CO_UNCONNECTED\(3 downto 0), + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 1) => \NLW_converge_cnt_reg[21]_i_2__2_O_UNCONNECTED\(3 downto 1), + O(0) => converge_cnt0(21), + S(3 downto 1) => B"000", + S(0) => converge_cnt(21) + ); +\converge_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(2), + Q => converge_cnt(2), + R => RST_CPLLRESET + ); +\converge_cnt_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(3), + Q => converge_cnt(3), + R => RST_CPLLRESET + ); +\converge_cnt_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(4), + Q => converge_cnt(4), + R => RST_CPLLRESET + ); +\converge_cnt_reg[4]_i_2__2\: unisim.vcomponents.CARRY4 + port map ( + CI => '0', + CO(3) => \converge_cnt_reg[4]_i_2__2_n_0\, + CO(2) => \converge_cnt_reg[4]_i_2__2_n_1\, + CO(1) => \converge_cnt_reg[4]_i_2__2_n_2\, + CO(0) => \converge_cnt_reg[4]_i_2__2_n_3\, + CYINIT => converge_cnt(0), + DI(3 downto 0) => B"0000", + O(3 downto 0) => converge_cnt0(4 downto 1), + S(3 downto 0) => converge_cnt(4 downto 1) + ); +\converge_cnt_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(5), + Q => converge_cnt(5), + R => RST_CPLLRESET + ); +\converge_cnt_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(6), + Q => converge_cnt(6), + R => RST_CPLLRESET + ); +\converge_cnt_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(7), + Q => converge_cnt(7), + R => RST_CPLLRESET + ); +\converge_cnt_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(8), + Q => converge_cnt(8), + R => RST_CPLLRESET + ); +\converge_cnt_reg[8]_i_2__2\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[4]_i_2__2_n_0\, + CO(3) => \converge_cnt_reg[8]_i_2__2_n_0\, + CO(2) => \converge_cnt_reg[8]_i_2__2_n_1\, + CO(1) => \converge_cnt_reg[8]_i_2__2_n_2\, + CO(0) => \converge_cnt_reg[8]_i_2__2_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 0) => converge_cnt0(8 downto 5), + S(3 downto 0) => converge_cnt(8 downto 5) + ); +\converge_cnt_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(9), + Q => converge_cnt(9), + R => RST_CPLLRESET + ); +\fs_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fs_reg1_reg[5]_0\(0), + Q => fs_reg1(0), + R => RST_CPLLRESET + ); +\fs_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fs_reg1_reg[5]_0\(1), + Q => fs_reg1(1), + R => RST_CPLLRESET + ); +\fs_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fs_reg1_reg[5]_0\(2), + Q => fs_reg1(2), + R => RST_CPLLRESET + ); +\fs_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fs_reg1_reg[5]_0\(3), + Q => fs_reg1(3), + R => RST_CPLLRESET + ); +\fs_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fs_reg1_reg[5]_0\(4), + Q => fs_reg1(4), + R => RST_CPLLRESET + ); +\fs_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fs_reg1_reg[5]_0\(5), + Q => fs_reg1(5), + R => RST_CPLLRESET + ); +\fs_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => fs_reg1(0), + Q => fs_reg2(0), + R => RST_CPLLRESET + ); +\fs_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => fs_reg1(1), + Q => fs_reg2(1), + R => RST_CPLLRESET + ); +\fs_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => fs_reg1(2), + Q => fs_reg2(2), + R => RST_CPLLRESET + ); +\fs_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => fs_reg1(3), + Q => fs_reg2(3), + R => RST_CPLLRESET + ); +\fs_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => fs_reg1(4), + Q => fs_reg2(4), + R => RST_CPLLRESET + ); +\fs_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => fs_reg1(5), + Q => fs_reg2(5), + R => RST_CPLLRESET + ); +\lf_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \lf_reg1_reg[5]_0\(0), + Q => lf_reg1(0), + R => RST_CPLLRESET + ); +\lf_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \lf_reg1_reg[5]_0\(1), + Q => lf_reg1(1), + R => RST_CPLLRESET + ); +\lf_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \lf_reg1_reg[5]_0\(2), + Q => lf_reg1(2), + R => RST_CPLLRESET + ); +\lf_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \lf_reg1_reg[5]_0\(3), + Q => lf_reg1(3), + R => RST_CPLLRESET + ); +\lf_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \lf_reg1_reg[5]_0\(4), + Q => lf_reg1(4), + R => RST_CPLLRESET + ); +\lf_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \lf_reg1_reg[5]_0\(5), + Q => lf_reg1(5), + R => RST_CPLLRESET + ); +\lf_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => lf_reg1(0), + Q => lf_reg2(0), + R => RST_CPLLRESET + ); +\lf_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => lf_reg1(1), + Q => lf_reg2(1), + R => RST_CPLLRESET + ); +\lf_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => lf_reg1(2), + Q => lf_reg2(2), + R => RST_CPLLRESET + ); +\lf_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => lf_reg1(3), + Q => lf_reg2(3), + R => RST_CPLLRESET + ); +\lf_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => lf_reg1(4), + Q => lf_reg2(4), + R => RST_CPLLRESET + ); +\lf_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => lf_reg1(5), + Q => lf_reg2(5), + R => RST_CPLLRESET + ); +\new_txcoeff_done_i_1__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[4]\, + I1 => new_txcoeff_req_reg2, + O => new_txcoeff_done + ); +new_txcoeff_done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => new_txcoeff_done, + Q => rxeqscan_new_txcoeff_done, + R => RST_CPLLRESET + ); +new_txcoeff_req_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => new_txcoeff_req_reg1_reg_0, + Q => new_txcoeff_req_reg1, + R => RST_CPLLRESET + ); +new_txcoeff_req_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => new_txcoeff_req_reg1, + Q => new_txcoeff_req_reg2, + R => RST_CPLLRESET + ); +\preset_done_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"EA" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[2]\, + I1 => \FSM_onehot_fsm_reg_n_0_[1]\, + I2 => preset_valid_reg2, + O => preset_done_1 + ); +preset_done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => preset_done_1, + Q => preset_done, + R => RST_CPLLRESET + ); +\preset_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \preset_reg1_reg[2]_0\(0), + Q => preset_reg1(0), + R => RST_CPLLRESET + ); +\preset_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \preset_reg1_reg[2]_0\(1), + Q => preset_reg1(1), + R => RST_CPLLRESET + ); +\preset_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \preset_reg1_reg[2]_0\(2), + Q => preset_reg1(2), + R => RST_CPLLRESET + ); +\preset_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => preset_reg1(0), + Q => preset_reg2(0), + R => RST_CPLLRESET + ); +\preset_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => preset_reg1(1), + Q => preset_reg2(1), + R => RST_CPLLRESET + ); +\preset_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => preset_reg1(2), + Q => preset_reg2(2), + R => RST_CPLLRESET + ); +preset_valid_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_preset_valid, + Q => preset_valid_reg1, + R => RST_CPLLRESET + ); +preset_valid_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => preset_valid_reg1, + Q => preset_valid_reg2, + R => RST_CPLLRESET + ); +\rxeq_adapt_done_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"A800FFFFA8000000" + ) + port map ( + I0 => rxeqscan_new_txcoeff_done, + I1 => rxeq_adapt_done_reg_reg_1, + I2 => rxeqscan_adapt_done, + I3 => Q(3), + I4 => rxeq_adapt_done_reg, + I5 => USER_RXEQ_ADAPT_DONE, + O => new_txcoeff_done_reg_0 + ); +\rxeq_adapt_done_reg_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FF00FF33AA00A800" + ) + port map ( + I0 => rxeqscan_adapt_done, + I1 => rxeq_adapt_done_reg_reg, + I2 => rxeqscan_new_txcoeff_done, + I3 => Q(3), + I4 => rxeq_adapt_done_reg_reg_0, + I5 => rxeq_adapt_done_reg_reg_1, + O => adapt_done_reg_0 + ); +\rxeq_new_txcoeff_req_i_1__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => Q(3), + I1 => rxeqscan_new_txcoeff_done, + O => rxeq_new_txcoeff_req + ); +\txcoeff_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(0), + Q => txcoeff_reg1(0), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(10), + Q => txcoeff_reg1(10), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(11), + Q => txcoeff_reg1(11), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(12), + Q => txcoeff_reg1(12), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(13), + Q => txcoeff_reg1(13), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(14), + Q => txcoeff_reg1(14), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(15), + Q => txcoeff_reg1(15), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[16]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(16), + Q => txcoeff_reg1(16), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[17]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(17), + Q => txcoeff_reg1(17), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(1), + Q => txcoeff_reg1(1), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(2), + Q => txcoeff_reg1(2), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(3), + Q => txcoeff_reg1(3), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(4), + Q => txcoeff_reg1(4), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(5), + Q => txcoeff_reg1(5), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(6), + Q => txcoeff_reg1(6), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(7), + Q => txcoeff_reg1(7), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(8), + Q => txcoeff_reg1(8), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(9), + Q => txcoeff_reg1(9), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(0), + Q => txcoeff_reg2(0), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(10), + Q => txcoeff_reg2(10), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(11), + Q => txcoeff_reg2(11), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(12), + Q => txcoeff_reg2(12), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(13), + Q => txcoeff_reg2(13), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(14), + Q => txcoeff_reg2(14), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(15), + Q => txcoeff_reg2(15), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[16]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(16), + Q => txcoeff_reg2(16), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[17]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(17), + Q => txcoeff_reg2(17), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(1), + Q => txcoeff_reg2(1), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(2), + Q => txcoeff_reg2(2), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(3), + Q => txcoeff_reg2(3), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(4), + Q => txcoeff_reg2(4), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(5), + Q => txcoeff_reg2(5), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(6), + Q => txcoeff_reg2(6), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(7), + Q => txcoeff_reg2(7), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(8), + Q => txcoeff_reg2(8), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(9), + Q => txcoeff_reg2(9), + R => RST_CPLLRESET + ); +\txpreset_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txpreset_reg1_reg[3]_0\(0), + Q => txpreset_reg1(0), + R => RST_CPLLRESET + ); +\txpreset_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txpreset_reg1_reg[3]_0\(1), + Q => txpreset_reg1(1), + R => RST_CPLLRESET + ); +\txpreset_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txpreset_reg1_reg[3]_0\(2), + Q => txpreset_reg1(2), + R => RST_CPLLRESET + ); +\txpreset_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txpreset_reg1_reg[3]_0\(3), + Q => txpreset_reg1(3), + R => RST_CPLLRESET + ); +\txpreset_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txpreset_reg1(0), + Q => txpreset_reg2(0), + R => RST_CPLLRESET + ); +\txpreset_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txpreset_reg1(1), + Q => txpreset_reg2(1), + R => RST_CPLLRESET + ); +\txpreset_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txpreset_reg1(2), + Q => txpreset_reg2(2), + R => RST_CPLLRESET + ); +\txpreset_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txpreset_reg1(3), + Q => txpreset_reg2(3), + R => RST_CPLLRESET + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_rxeq_scan_55 is + port ( + D : out STD_LOGIC_VECTOR ( 2 downto 0 ); + rxeq_new_txcoeff_req : out STD_LOGIC; + adapt_done_reg_0 : out STD_LOGIC; + new_txcoeff_done_reg_0 : out STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + new_txcoeff_req_reg1_reg_0 : in STD_LOGIC; + rxeq_preset_valid : in STD_LOGIC; + \out\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + Q : in STD_LOGIC_VECTOR ( 4 downto 0 ); + \FSM_onehot_fsm_rx_reg[5]\ : in STD_LOGIC_VECTOR ( 2 downto 0 ); + rxeq_adapt_done_reg_reg : in STD_LOGIC; + rxeq_adapt_done_reg_reg_0 : in STD_LOGIC; + rxeq_adapt_done_reg_reg_1 : in STD_LOGIC; + rxeq_adapt_done_reg : in STD_LOGIC; + USER_RXEQ_ADAPT_DONE : in STD_LOGIC; + \preset_reg1_reg[2]_0\ : in STD_LOGIC_VECTOR ( 2 downto 0 ); + \txpreset_reg1_reg[3]_0\ : in STD_LOGIC_VECTOR ( 3 downto 0 ); + \txcoeff_reg1_reg[17]_0\ : in STD_LOGIC_VECTOR ( 17 downto 0 ); + \fs_reg1_reg[5]_0\ : in STD_LOGIC_VECTOR ( 5 downto 0 ); + \lf_reg1_reg[5]_0\ : in STD_LOGIC_VECTOR ( 5 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_rxeq_scan_55 : entity is "pcie_7x_0_rxeq_scan"; +end pcie_7x_0_pcie_7x_0_rxeq_scan_55; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_rxeq_scan_55 is + signal \FSM_onehot_fsm[1]_i_1__3_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[2]_i_1__3_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[3]_i_1__3_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[3]_i_2__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_10__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_11__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_12__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_13__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_1__3_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_2__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_3__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_4__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_5__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_6__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_7__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_8__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_9__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[1]\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[2]\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[3]\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[4]\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx[6]_i_2__1_n_0\ : STD_LOGIC; + signal adapt_done : STD_LOGIC; + signal \adapt_done_cnt_i_1__1_n_0\ : STD_LOGIC; + signal \adapt_done_cnt_i_2__1_n_0\ : STD_LOGIC; + signal adapt_done_cnt_reg_n_0 : STD_LOGIC; + signal converge_cnt : STD_LOGIC_VECTOR ( 21 downto 0 ); + signal converge_cnt0 : STD_LOGIC_VECTOR ( 21 downto 1 ); + signal converge_cnt_0 : STD_LOGIC_VECTOR ( 21 downto 0 ); + signal \converge_cnt_reg[12]_i_2__1_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_2__1_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_2__1_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_2__1_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_2__1_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_2__1_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_2__1_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_2__1_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_2__1_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_2__1_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_2__1_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_2__1_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_2__1_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_2__1_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_2__1_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_2__1_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_2__1_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_2__1_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_2__1_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_2__1_n_3\ : STD_LOGIC; + signal fs_reg1 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of fs_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of fs_reg1 : signal is "true"; + signal fs_reg2 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of fs_reg2 : signal is "NO"; + attribute async_reg of fs_reg2 : signal is "true"; + signal lf_reg1 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of lf_reg1 : signal is "NO"; + attribute async_reg of lf_reg1 : signal is "true"; + signal lf_reg2 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of lf_reg2 : signal is "NO"; + attribute async_reg of lf_reg2 : signal is "true"; + signal new_txcoeff_done : STD_LOGIC; + signal new_txcoeff_req_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of new_txcoeff_req_reg1 : signal is "NO"; + attribute async_reg of new_txcoeff_req_reg1 : signal is "true"; + signal new_txcoeff_req_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of new_txcoeff_req_reg2 : signal is "NO"; + attribute async_reg of new_txcoeff_req_reg2 : signal is "true"; + signal preset_done : STD_LOGIC; + signal preset_done_1 : STD_LOGIC; + signal preset_reg1 : STD_LOGIC_VECTOR ( 2 downto 0 ); + attribute SHIFT_EXTRACT of preset_reg1 : signal is "NO"; + attribute async_reg of preset_reg1 : signal is "true"; + signal preset_reg2 : STD_LOGIC_VECTOR ( 2 downto 0 ); + attribute SHIFT_EXTRACT of preset_reg2 : signal is "NO"; + attribute async_reg of preset_reg2 : signal is "true"; + signal preset_valid_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of preset_valid_reg1 : signal is "NO"; + attribute async_reg of preset_valid_reg1 : signal is "true"; + signal preset_valid_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of preset_valid_reg2 : signal is "NO"; + attribute async_reg of preset_valid_reg2 : signal is "true"; + signal rxeqscan_adapt_done : STD_LOGIC; + signal rxeqscan_new_txcoeff_done : STD_LOGIC; + signal txcoeff_reg1 : STD_LOGIC_VECTOR ( 17 downto 0 ); + attribute SHIFT_EXTRACT of txcoeff_reg1 : signal is "NO"; + attribute async_reg of txcoeff_reg1 : signal is "true"; + signal txcoeff_reg2 : STD_LOGIC_VECTOR ( 17 downto 0 ); + attribute SHIFT_EXTRACT of txcoeff_reg2 : signal is "NO"; + attribute async_reg of txcoeff_reg2 : signal is "true"; + signal txpreset_reg1 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of txpreset_reg1 : signal is "NO"; + attribute async_reg of txpreset_reg1 : signal is "true"; + signal txpreset_reg2 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of txpreset_reg2 : signal is "NO"; + attribute async_reg of txpreset_reg2 : signal is "true"; + signal \NLW_converge_cnt_reg[21]_i_2__1_CO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal \NLW_converge_cnt_reg[21]_i_2__1_O_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \FSM_onehot_fsm[3]_i_2__1\ : label is "soft_lutpair140"; + attribute SOFT_HLUTNM of \FSM_onehot_fsm[4]_i_4__1\ : label is "soft_lutpair139"; + attribute FSM_ENCODED_STATES : string; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[1]\ : label is "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[2]\ : label is "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[3]\ : label is "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[4]\ : label is "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001"; + attribute SOFT_HLUTNM of \FSM_onehot_fsm_rx[6]_i_2__1\ : label is "soft_lutpair141"; + attribute SOFT_HLUTNM of \converge_cnt[18]_i_1__1\ : label is "soft_lutpair139"; + attribute SOFT_HLUTNM of \converge_cnt[21]_i_1__1\ : label is "soft_lutpair140"; + attribute ADDER_THRESHOLD : integer; + attribute ADDER_THRESHOLD of \converge_cnt_reg[12]_i_2__1\ : label is 35; + attribute ADDER_THRESHOLD of \converge_cnt_reg[16]_i_2__1\ : label is 35; + attribute ADDER_THRESHOLD of \converge_cnt_reg[20]_i_2__1\ : label is 35; + attribute ADDER_THRESHOLD of \converge_cnt_reg[21]_i_2__1\ : label is 35; + attribute ADDER_THRESHOLD of \converge_cnt_reg[4]_i_2__1\ : label is 35; + attribute ADDER_THRESHOLD of \converge_cnt_reg[8]_i_2__1\ : label is 35; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of \fs_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of \fs_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \fs_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \fs_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \fs_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \fs_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \fs_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \fs_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \fs_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \fs_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \fs_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \fs_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \fs_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg2_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \lf_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \lf_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \lf_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \lf_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \lf_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \lf_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \lf_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \lf_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \lf_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \lf_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \lf_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \lf_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg2_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of new_txcoeff_req_reg1_reg : label is std.standard.true; + attribute KEEP of new_txcoeff_req_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of new_txcoeff_req_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of new_txcoeff_req_reg2_reg : label is std.standard.true; + attribute KEEP of new_txcoeff_req_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of new_txcoeff_req_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of \preset_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \preset_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \preset_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \preset_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \preset_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \preset_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \preset_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \preset_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \preset_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \preset_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \preset_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \preset_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \preset_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \preset_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \preset_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \preset_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \preset_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \preset_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of preset_valid_reg1_reg : label is std.standard.true; + attribute KEEP of preset_valid_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of preset_valid_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of preset_valid_reg2_reg : label is std.standard.true; + attribute KEEP of preset_valid_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of preset_valid_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \rxeq_new_txcoeff_req_i_1__1\ : label is "soft_lutpair141"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[10]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[11]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[12]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[13]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[14]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[15]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[16]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[16]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[16]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[17]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[17]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[17]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[6]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[7]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[8]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[9]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[9]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[10]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[11]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[12]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[13]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[14]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[15]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[16]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[16]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[16]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[17]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[17]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[17]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[6]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[7]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[8]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[9]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[9]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg2_reg[3]\ : label is "NO"; +begin +\FSM_onehot_fsm[1]_i_1__3\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0F00AFAF0F11AFBB" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[4]\, + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => preset_valid_reg2, + I3 => \FSM_onehot_fsm_reg_n_0_[2]\, + I4 => new_txcoeff_req_reg2, + I5 => \FSM_onehot_fsm_reg_n_0_[1]\, + O => \FSM_onehot_fsm[1]_i_1__3_n_0\ + ); +\FSM_onehot_fsm[2]_i_1__3\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => preset_valid_reg2, + I1 => \FSM_onehot_fsm_reg_n_0_[2]\, + I2 => \FSM_onehot_fsm_reg_n_0_[1]\, + O => \FSM_onehot_fsm[2]_i_1__3_n_0\ + ); +\FSM_onehot_fsm[3]_i_1__3\: unisim.vcomponents.LUT6 + generic map( + INIT => X"04FF040404040404" + ) + port map ( + I0 => \FSM_onehot_fsm[3]_i_2__1_n_0\, + I1 => \FSM_onehot_fsm[4]_i_2__2_n_0\, + I2 => \FSM_onehot_fsm[4]_i_3__1_n_0\, + I3 => preset_valid_reg2, + I4 => new_txcoeff_req_reg2, + I5 => \FSM_onehot_fsm_reg_n_0_[1]\, + O => \FSM_onehot_fsm[3]_i_1__3_n_0\ + ); +\FSM_onehot_fsm[3]_i_2__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"04FF" + ) + port map ( + I0 => \out\(0), + I1 => \out\(1), + I2 => adapt_done_cnt_reg_n_0, + I3 => \FSM_onehot_fsm_reg_n_0_[3]\, + O => \FSM_onehot_fsm[3]_i_2__1_n_0\ + ); +\FSM_onehot_fsm[4]_i_10__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFBFFFFF" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_13__1_n_0\, + I1 => converge_cnt(2), + I2 => converge_cnt(20), + I3 => converge_cnt(10), + I4 => converge_cnt(0), + O => \FSM_onehot_fsm[4]_i_10__1_n_0\ + ); +\FSM_onehot_fsm[4]_i_11__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"EFFF" + ) + port map ( + I0 => converge_cnt(2), + I1 => converge_cnt(6), + I2 => converge_cnt(8), + I3 => converge_cnt(3), + O => \FSM_onehot_fsm[4]_i_11__1_n_0\ + ); +\FSM_onehot_fsm[4]_i_12__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"EFFFFFFF" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_13__1_n_0\, + I1 => converge_cnt(14), + I2 => converge_cnt(10), + I3 => converge_cnt(21), + I4 => converge_cnt(19), + O => \FSM_onehot_fsm[4]_i_12__1_n_0\ + ); +\FSM_onehot_fsm[4]_i_13__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"FF7F" + ) + port map ( + I0 => converge_cnt(16), + I1 => converge_cnt(11), + I2 => converge_cnt(9), + I3 => converge_cnt(5), + O => \FSM_onehot_fsm[4]_i_13__1_n_0\ + ); +\FSM_onehot_fsm[4]_i_1__3\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFD0FFD0FFD0" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_2__2_n_0\, + I1 => \FSM_onehot_fsm[4]_i_3__1_n_0\, + I2 => \FSM_onehot_fsm_reg_n_0_[3]\, + I3 => \FSM_onehot_fsm[4]_i_4__1_n_0\, + I4 => \FSM_onehot_fsm_reg_n_0_[4]\, + I5 => new_txcoeff_req_reg2, + O => \FSM_onehot_fsm[4]_i_1__3_n_0\ + ); +\FSM_onehot_fsm[4]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFFFFFFBF" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_5__1_n_0\, + I1 => converge_cnt(17), + I2 => converge_cnt(18), + I3 => converge_cnt(21), + I4 => converge_cnt(8), + I5 => \FSM_onehot_fsm[4]_i_6__1_n_0\, + O => \FSM_onehot_fsm[4]_i_2__2_n_0\ + ); +\FSM_onehot_fsm[4]_i_3__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000001000000" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_7__1_n_0\, + I1 => converge_cnt(7), + I2 => converge_cnt(1), + I3 => converge_cnt(15), + I4 => converge_cnt(13), + I5 => \FSM_onehot_fsm[4]_i_8__1_n_0\, + O => \FSM_onehot_fsm[4]_i_3__1_n_0\ + ); +\FSM_onehot_fsm[4]_i_4__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0400" + ) + port map ( + I0 => \out\(0), + I1 => \out\(1), + I2 => adapt_done_cnt_reg_n_0, + I3 => \FSM_onehot_fsm_reg_n_0_[3]\, + O => \FSM_onehot_fsm[4]_i_4__1_n_0\ + ); +\FSM_onehot_fsm[4]_i_5__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"FFF2" + ) + port map ( + I0 => \out\(1), + I1 => \out\(0), + I2 => converge_cnt(7), + I3 => converge_cnt(1), + O => \FSM_onehot_fsm[4]_i_5__1_n_0\ + ); +\FSM_onehot_fsm[4]_i_6__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFFFFFFFB" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_9__1_n_0\, + I1 => converge_cnt(19), + I2 => converge_cnt(6), + I3 => converge_cnt(3), + I4 => converge_cnt(4), + I5 => \FSM_onehot_fsm[4]_i_10__1_n_0\, + O => \FSM_onehot_fsm[4]_i_6__1_n_0\ + ); +\FSM_onehot_fsm[4]_i_7__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"DFFF" + ) + port map ( + I0 => \out\(1), + I1 => \out\(0), + I2 => converge_cnt(17), + I3 => converge_cnt(18), + O => \FSM_onehot_fsm[4]_i_7__1_n_0\ + ); +\FSM_onehot_fsm[4]_i_8__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFFFFFFFE" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_11__1_n_0\, + I1 => converge_cnt(12), + I2 => converge_cnt(20), + I3 => converge_cnt(0), + I4 => converge_cnt(4), + I5 => \FSM_onehot_fsm[4]_i_12__1_n_0\, + O => \FSM_onehot_fsm[4]_i_8__1_n_0\ + ); +\FSM_onehot_fsm[4]_i_9__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"FFDF" + ) + port map ( + I0 => converge_cnt(15), + I1 => converge_cnt(13), + I2 => converge_cnt(14), + I3 => converge_cnt(12), + O => \FSM_onehot_fsm[4]_i_9__1_n_0\ + ); +\FSM_onehot_fsm_reg[1]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[1]_i_1__3_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[1]\, + S => RST_CPLLRESET + ); +\FSM_onehot_fsm_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[2]_i_1__3_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[3]_i_1__3_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[4]_i_1__3_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_rx[2]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"40FF4040" + ) + port map ( + I0 => \out\(1), + I1 => Q(0), + I2 => \out\(0), + I3 => preset_done, + I4 => Q(1), + O => D(0) + ); +\FSM_onehot_fsm_rx[5]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"F444444444444444" + ) + port map ( + I0 => rxeqscan_new_txcoeff_done, + I1 => Q(3), + I2 => \FSM_onehot_fsm_rx_reg[5]\(2), + I3 => \FSM_onehot_fsm_rx_reg[5]\(0), + I4 => \FSM_onehot_fsm_rx_reg[5]\(1), + I5 => Q(2), + O => D(1) + ); +\FSM_onehot_fsm_rx[6]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFFE0E0E0" + ) + port map ( + I0 => \out\(1), + I1 => \out\(0), + I2 => Q(4), + I3 => preset_done, + I4 => Q(1), + I5 => \FSM_onehot_fsm_rx[6]_i_2__1_n_0\, + O => D(2) + ); +\FSM_onehot_fsm_rx[6]_i_2__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => rxeqscan_new_txcoeff_done, + I1 => Q(3), + O => \FSM_onehot_fsm_rx[6]_i_2__1_n_0\ + ); +\adapt_done_cnt_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"000A0A0AF0F0F8F0" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[4]\, + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + I5 => \adapt_done_cnt_i_2__1_n_0\, + O => \adapt_done_cnt_i_1__1_n_0\ + ); +\adapt_done_cnt_i_2__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00FF0101" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[3]\, + I1 => \FSM_onehot_fsm_reg_n_0_[2]\, + I2 => \FSM_onehot_fsm_reg_n_0_[1]\, + I3 => new_txcoeff_req_reg2, + I4 => \FSM_onehot_fsm_reg_n_0_[4]\, + O => \adapt_done_cnt_i_2__1_n_0\ + ); +adapt_done_cnt_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \adapt_done_cnt_i_1__1_n_0\, + Q => adapt_done_cnt_reg_n_0, + R => RST_CPLLRESET + ); +\adapt_done_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"F8000000" + ) + port map ( + I0 => \out\(1), + I1 => \out\(0), + I2 => adapt_done_cnt_reg_n_0, + I3 => new_txcoeff_req_reg2, + I4 => \FSM_onehot_fsm_reg_n_0_[4]\, + O => adapt_done + ); +adapt_done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => adapt_done, + Q => rxeqscan_adapt_done, + R => RST_CPLLRESET + ); +\converge_cnt[0]_i_1__3\: unisim.vcomponents.LUT5 + generic map( + INIT => X"44444044" + ) + port map ( + I0 => converge_cnt(0), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(0) + ); +\converge_cnt[10]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(10), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(10) + ); +\converge_cnt[11]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(11), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(11) + ); +\converge_cnt[12]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(12), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(12) + ); +\converge_cnt[13]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(13), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(13) + ); +\converge_cnt[14]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(14), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(14) + ); +\converge_cnt[15]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(15), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(15) + ); +\converge_cnt[16]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(16), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(16) + ); +\converge_cnt[17]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(17), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(17) + ); +\converge_cnt[18]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(18), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(18) + ); +\converge_cnt[19]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(19), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(19) + ); +\converge_cnt[1]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(1), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(1) + ); +\converge_cnt[20]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(20), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(20) + ); +\converge_cnt[21]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(21), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(21) + ); +\converge_cnt[2]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(2), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(2) + ); +\converge_cnt[3]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(3), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(3) + ); +\converge_cnt[4]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(4), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(4) + ); +\converge_cnt[5]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(5), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(5) + ); +\converge_cnt[6]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(6), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(6) + ); +\converge_cnt[7]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(7), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(7) + ); +\converge_cnt[8]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(8), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(8) + ); +\converge_cnt[9]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(9), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(9) + ); +\converge_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(0), + Q => converge_cnt(0), + R => RST_CPLLRESET + ); +\converge_cnt_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(10), + Q => converge_cnt(10), + R => RST_CPLLRESET + ); +\converge_cnt_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(11), + Q => converge_cnt(11), + R => RST_CPLLRESET + ); +\converge_cnt_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(12), + Q => converge_cnt(12), + R => RST_CPLLRESET + ); +\converge_cnt_reg[12]_i_2__1\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[8]_i_2__1_n_0\, + CO(3) => \converge_cnt_reg[12]_i_2__1_n_0\, + CO(2) => \converge_cnt_reg[12]_i_2__1_n_1\, + CO(1) => \converge_cnt_reg[12]_i_2__1_n_2\, + CO(0) => \converge_cnt_reg[12]_i_2__1_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 0) => converge_cnt0(12 downto 9), + S(3 downto 0) => converge_cnt(12 downto 9) + ); +\converge_cnt_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(13), + Q => converge_cnt(13), + R => RST_CPLLRESET + ); +\converge_cnt_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(14), + Q => converge_cnt(14), + R => RST_CPLLRESET + ); +\converge_cnt_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(15), + Q => converge_cnt(15), + R => RST_CPLLRESET + ); +\converge_cnt_reg[16]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(16), + Q => converge_cnt(16), + R => RST_CPLLRESET + ); +\converge_cnt_reg[16]_i_2__1\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[12]_i_2__1_n_0\, + CO(3) => \converge_cnt_reg[16]_i_2__1_n_0\, + CO(2) => \converge_cnt_reg[16]_i_2__1_n_1\, + CO(1) => \converge_cnt_reg[16]_i_2__1_n_2\, + CO(0) => \converge_cnt_reg[16]_i_2__1_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 0) => converge_cnt0(16 downto 13), + S(3 downto 0) => converge_cnt(16 downto 13) + ); +\converge_cnt_reg[17]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(17), + Q => converge_cnt(17), + R => RST_CPLLRESET + ); +\converge_cnt_reg[18]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(18), + Q => converge_cnt(18), + R => RST_CPLLRESET + ); +\converge_cnt_reg[19]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(19), + Q => converge_cnt(19), + R => RST_CPLLRESET + ); +\converge_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(1), + Q => converge_cnt(1), + R => RST_CPLLRESET + ); +\converge_cnt_reg[20]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(20), + Q => converge_cnt(20), + R => RST_CPLLRESET + ); +\converge_cnt_reg[20]_i_2__1\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[16]_i_2__1_n_0\, + CO(3) => \converge_cnt_reg[20]_i_2__1_n_0\, + CO(2) => \converge_cnt_reg[20]_i_2__1_n_1\, + CO(1) => \converge_cnt_reg[20]_i_2__1_n_2\, + CO(0) => \converge_cnt_reg[20]_i_2__1_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 0) => converge_cnt0(20 downto 17), + S(3 downto 0) => converge_cnt(20 downto 17) + ); +\converge_cnt_reg[21]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(21), + Q => converge_cnt(21), + R => RST_CPLLRESET + ); +\converge_cnt_reg[21]_i_2__1\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[20]_i_2__1_n_0\, + CO(3 downto 0) => \NLW_converge_cnt_reg[21]_i_2__1_CO_UNCONNECTED\(3 downto 0), + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 1) => \NLW_converge_cnt_reg[21]_i_2__1_O_UNCONNECTED\(3 downto 1), + O(0) => converge_cnt0(21), + S(3 downto 1) => B"000", + S(0) => converge_cnt(21) + ); +\converge_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(2), + Q => converge_cnt(2), + R => RST_CPLLRESET + ); +\converge_cnt_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(3), + Q => converge_cnt(3), + R => RST_CPLLRESET + ); +\converge_cnt_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(4), + Q => converge_cnt(4), + R => RST_CPLLRESET + ); +\converge_cnt_reg[4]_i_2__1\: unisim.vcomponents.CARRY4 + port map ( + CI => '0', + CO(3) => \converge_cnt_reg[4]_i_2__1_n_0\, + CO(2) => \converge_cnt_reg[4]_i_2__1_n_1\, + CO(1) => \converge_cnt_reg[4]_i_2__1_n_2\, + CO(0) => \converge_cnt_reg[4]_i_2__1_n_3\, + CYINIT => converge_cnt(0), + DI(3 downto 0) => B"0000", + O(3 downto 0) => converge_cnt0(4 downto 1), + S(3 downto 0) => converge_cnt(4 downto 1) + ); +\converge_cnt_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(5), + Q => converge_cnt(5), + R => RST_CPLLRESET + ); +\converge_cnt_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(6), + Q => converge_cnt(6), + R => RST_CPLLRESET + ); +\converge_cnt_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(7), + Q => converge_cnt(7), + R => RST_CPLLRESET + ); +\converge_cnt_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(8), + Q => converge_cnt(8), + R => RST_CPLLRESET + ); +\converge_cnt_reg[8]_i_2__1\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[4]_i_2__1_n_0\, + CO(3) => \converge_cnt_reg[8]_i_2__1_n_0\, + CO(2) => \converge_cnt_reg[8]_i_2__1_n_1\, + CO(1) => \converge_cnt_reg[8]_i_2__1_n_2\, + CO(0) => \converge_cnt_reg[8]_i_2__1_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 0) => converge_cnt0(8 downto 5), + S(3 downto 0) => converge_cnt(8 downto 5) + ); +\converge_cnt_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(9), + Q => converge_cnt(9), + R => RST_CPLLRESET + ); +\fs_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fs_reg1_reg[5]_0\(0), + Q => fs_reg1(0), + R => RST_CPLLRESET + ); +\fs_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fs_reg1_reg[5]_0\(1), + Q => fs_reg1(1), + R => RST_CPLLRESET + ); +\fs_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fs_reg1_reg[5]_0\(2), + Q => fs_reg1(2), + R => RST_CPLLRESET + ); +\fs_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fs_reg1_reg[5]_0\(3), + Q => fs_reg1(3), + R => RST_CPLLRESET + ); +\fs_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fs_reg1_reg[5]_0\(4), + Q => fs_reg1(4), + R => RST_CPLLRESET + ); +\fs_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fs_reg1_reg[5]_0\(5), + Q => fs_reg1(5), + R => RST_CPLLRESET + ); +\fs_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => fs_reg1(0), + Q => fs_reg2(0), + R => RST_CPLLRESET + ); +\fs_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => fs_reg1(1), + Q => fs_reg2(1), + R => RST_CPLLRESET + ); +\fs_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => fs_reg1(2), + Q => fs_reg2(2), + R => RST_CPLLRESET + ); +\fs_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => fs_reg1(3), + Q => fs_reg2(3), + R => RST_CPLLRESET + ); +\fs_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => fs_reg1(4), + Q => fs_reg2(4), + R => RST_CPLLRESET + ); +\fs_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => fs_reg1(5), + Q => fs_reg2(5), + R => RST_CPLLRESET + ); +\lf_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \lf_reg1_reg[5]_0\(0), + Q => lf_reg1(0), + R => RST_CPLLRESET + ); +\lf_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \lf_reg1_reg[5]_0\(1), + Q => lf_reg1(1), + R => RST_CPLLRESET + ); +\lf_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \lf_reg1_reg[5]_0\(2), + Q => lf_reg1(2), + R => RST_CPLLRESET + ); +\lf_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \lf_reg1_reg[5]_0\(3), + Q => lf_reg1(3), + R => RST_CPLLRESET + ); +\lf_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \lf_reg1_reg[5]_0\(4), + Q => lf_reg1(4), + R => RST_CPLLRESET + ); +\lf_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \lf_reg1_reg[5]_0\(5), + Q => lf_reg1(5), + R => RST_CPLLRESET + ); +\lf_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => lf_reg1(0), + Q => lf_reg2(0), + R => RST_CPLLRESET + ); +\lf_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => lf_reg1(1), + Q => lf_reg2(1), + R => RST_CPLLRESET + ); +\lf_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => lf_reg1(2), + Q => lf_reg2(2), + R => RST_CPLLRESET + ); +\lf_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => lf_reg1(3), + Q => lf_reg2(3), + R => RST_CPLLRESET + ); +\lf_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => lf_reg1(4), + Q => lf_reg2(4), + R => RST_CPLLRESET + ); +\lf_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => lf_reg1(5), + Q => lf_reg2(5), + R => RST_CPLLRESET + ); +\new_txcoeff_done_i_1__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[4]\, + I1 => new_txcoeff_req_reg2, + O => new_txcoeff_done + ); +new_txcoeff_done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => new_txcoeff_done, + Q => rxeqscan_new_txcoeff_done, + R => RST_CPLLRESET + ); +new_txcoeff_req_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => new_txcoeff_req_reg1_reg_0, + Q => new_txcoeff_req_reg1, + R => RST_CPLLRESET + ); +new_txcoeff_req_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => new_txcoeff_req_reg1, + Q => new_txcoeff_req_reg2, + R => RST_CPLLRESET + ); +\preset_done_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"EA" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[2]\, + I1 => \FSM_onehot_fsm_reg_n_0_[1]\, + I2 => preset_valid_reg2, + O => preset_done_1 + ); +preset_done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => preset_done_1, + Q => preset_done, + R => RST_CPLLRESET + ); +\preset_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \preset_reg1_reg[2]_0\(0), + Q => preset_reg1(0), + R => RST_CPLLRESET + ); +\preset_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \preset_reg1_reg[2]_0\(1), + Q => preset_reg1(1), + R => RST_CPLLRESET + ); +\preset_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \preset_reg1_reg[2]_0\(2), + Q => preset_reg1(2), + R => RST_CPLLRESET + ); +\preset_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => preset_reg1(0), + Q => preset_reg2(0), + R => RST_CPLLRESET + ); +\preset_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => preset_reg1(1), + Q => preset_reg2(1), + R => RST_CPLLRESET + ); +\preset_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => preset_reg1(2), + Q => preset_reg2(2), + R => RST_CPLLRESET + ); +preset_valid_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_preset_valid, + Q => preset_valid_reg1, + R => RST_CPLLRESET + ); +preset_valid_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => preset_valid_reg1, + Q => preset_valid_reg2, + R => RST_CPLLRESET + ); +\rxeq_adapt_done_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"A800FFFFA8000000" + ) + port map ( + I0 => rxeqscan_new_txcoeff_done, + I1 => rxeq_adapt_done_reg_reg_1, + I2 => rxeqscan_adapt_done, + I3 => Q(3), + I4 => rxeq_adapt_done_reg, + I5 => USER_RXEQ_ADAPT_DONE, + O => new_txcoeff_done_reg_0 + ); +\rxeq_adapt_done_reg_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FF00FF33AA00A800" + ) + port map ( + I0 => rxeqscan_adapt_done, + I1 => rxeq_adapt_done_reg_reg, + I2 => rxeqscan_new_txcoeff_done, + I3 => Q(3), + I4 => rxeq_adapt_done_reg_reg_0, + I5 => rxeq_adapt_done_reg_reg_1, + O => adapt_done_reg_0 + ); +\rxeq_new_txcoeff_req_i_1__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => Q(3), + I1 => rxeqscan_new_txcoeff_done, + O => rxeq_new_txcoeff_req + ); +\txcoeff_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(0), + Q => txcoeff_reg1(0), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(10), + Q => txcoeff_reg1(10), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(11), + Q => txcoeff_reg1(11), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(12), + Q => txcoeff_reg1(12), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(13), + Q => txcoeff_reg1(13), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(14), + Q => txcoeff_reg1(14), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(15), + Q => txcoeff_reg1(15), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[16]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(16), + Q => txcoeff_reg1(16), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[17]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(17), + Q => txcoeff_reg1(17), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(1), + Q => txcoeff_reg1(1), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(2), + Q => txcoeff_reg1(2), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(3), + Q => txcoeff_reg1(3), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(4), + Q => txcoeff_reg1(4), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(5), + Q => txcoeff_reg1(5), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(6), + Q => txcoeff_reg1(6), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(7), + Q => txcoeff_reg1(7), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(8), + Q => txcoeff_reg1(8), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(9), + Q => txcoeff_reg1(9), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(0), + Q => txcoeff_reg2(0), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(10), + Q => txcoeff_reg2(10), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(11), + Q => txcoeff_reg2(11), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(12), + Q => txcoeff_reg2(12), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(13), + Q => txcoeff_reg2(13), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(14), + Q => txcoeff_reg2(14), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(15), + Q => txcoeff_reg2(15), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[16]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(16), + Q => txcoeff_reg2(16), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[17]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(17), + Q => txcoeff_reg2(17), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(1), + Q => txcoeff_reg2(1), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(2), + Q => txcoeff_reg2(2), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(3), + Q => txcoeff_reg2(3), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(4), + Q => txcoeff_reg2(4), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(5), + Q => txcoeff_reg2(5), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(6), + Q => txcoeff_reg2(6), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(7), + Q => txcoeff_reg2(7), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(8), + Q => txcoeff_reg2(8), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(9), + Q => txcoeff_reg2(9), + R => RST_CPLLRESET + ); +\txpreset_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txpreset_reg1_reg[3]_0\(0), + Q => txpreset_reg1(0), + R => RST_CPLLRESET + ); +\txpreset_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txpreset_reg1_reg[3]_0\(1), + Q => txpreset_reg1(1), + R => RST_CPLLRESET + ); +\txpreset_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txpreset_reg1_reg[3]_0\(2), + Q => txpreset_reg1(2), + R => RST_CPLLRESET + ); +\txpreset_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txpreset_reg1_reg[3]_0\(3), + Q => txpreset_reg1(3), + R => RST_CPLLRESET + ); +\txpreset_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txpreset_reg1(0), + Q => txpreset_reg2(0), + R => RST_CPLLRESET + ); +\txpreset_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txpreset_reg1(1), + Q => txpreset_reg2(1), + R => RST_CPLLRESET + ); +\txpreset_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txpreset_reg1(2), + Q => txpreset_reg2(2), + R => RST_CPLLRESET + ); +\txpreset_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txpreset_reg1(3), + Q => txpreset_reg2(3), + R => RST_CPLLRESET + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_rxeq_scan_57 is + port ( + D : out STD_LOGIC_VECTOR ( 2 downto 0 ); + rxeq_new_txcoeff_req : out STD_LOGIC; + adapt_done_reg_0 : out STD_LOGIC; + new_txcoeff_done_reg_0 : out STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + new_txcoeff_req_reg1_reg_0 : in STD_LOGIC; + rxeq_preset_valid : in STD_LOGIC; + \out\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + Q : in STD_LOGIC_VECTOR ( 4 downto 0 ); + \FSM_onehot_fsm_rx_reg[5]\ : in STD_LOGIC_VECTOR ( 2 downto 0 ); + rxeq_adapt_done_reg_reg : in STD_LOGIC; + rxeq_adapt_done_reg_reg_0 : in STD_LOGIC; + rxeq_adapt_done_reg_reg_1 : in STD_LOGIC; + rxeq_adapt_done_reg : in STD_LOGIC; + USER_RXEQ_ADAPT_DONE : in STD_LOGIC; + \preset_reg1_reg[2]_0\ : in STD_LOGIC_VECTOR ( 2 downto 0 ); + \txpreset_reg1_reg[3]_0\ : in STD_LOGIC_VECTOR ( 3 downto 0 ); + \txcoeff_reg1_reg[17]_0\ : in STD_LOGIC_VECTOR ( 17 downto 0 ); + \fs_reg1_reg[5]_0\ : in STD_LOGIC_VECTOR ( 5 downto 0 ); + \lf_reg1_reg[5]_0\ : in STD_LOGIC_VECTOR ( 5 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_rxeq_scan_57 : entity is "pcie_7x_0_rxeq_scan"; +end pcie_7x_0_pcie_7x_0_rxeq_scan_57; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_rxeq_scan_57 is + signal \FSM_onehot_fsm[1]_i_1__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[2]_i_1__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[3]_i_1__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[3]_i_2__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_10__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_11__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_12__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_13__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_1__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_2__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_3__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_4__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_5__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_6__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_7__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_8__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_9__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[1]\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[2]\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[3]\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[4]\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx[6]_i_2__0_n_0\ : STD_LOGIC; + signal adapt_done : STD_LOGIC; + signal \adapt_done_cnt_i_1__0_n_0\ : STD_LOGIC; + signal \adapt_done_cnt_i_2__0_n_0\ : STD_LOGIC; + signal adapt_done_cnt_reg_n_0 : STD_LOGIC; + signal converge_cnt : STD_LOGIC_VECTOR ( 21 downto 0 ); + signal converge_cnt0 : STD_LOGIC_VECTOR ( 21 downto 1 ); + signal converge_cnt_0 : STD_LOGIC_VECTOR ( 21 downto 0 ); + signal \converge_cnt_reg[12]_i_2__0_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_2__0_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_2__0_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_2__0_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_2__0_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_2__0_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_2__0_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_2__0_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_2__0_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_2__0_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_2__0_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_2__0_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_2__0_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_2__0_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_2__0_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_2__0_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_2__0_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_2__0_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_2__0_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_2__0_n_3\ : STD_LOGIC; + signal fs_reg1 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of fs_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of fs_reg1 : signal is "true"; + signal fs_reg2 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of fs_reg2 : signal is "NO"; + attribute async_reg of fs_reg2 : signal is "true"; + signal lf_reg1 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of lf_reg1 : signal is "NO"; + attribute async_reg of lf_reg1 : signal is "true"; + signal lf_reg2 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of lf_reg2 : signal is "NO"; + attribute async_reg of lf_reg2 : signal is "true"; + signal new_txcoeff_done : STD_LOGIC; + signal new_txcoeff_req_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of new_txcoeff_req_reg1 : signal is "NO"; + attribute async_reg of new_txcoeff_req_reg1 : signal is "true"; + signal new_txcoeff_req_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of new_txcoeff_req_reg2 : signal is "NO"; + attribute async_reg of new_txcoeff_req_reg2 : signal is "true"; + signal preset_done : STD_LOGIC; + signal preset_done_1 : STD_LOGIC; + signal preset_reg1 : STD_LOGIC_VECTOR ( 2 downto 0 ); + attribute SHIFT_EXTRACT of preset_reg1 : signal is "NO"; + attribute async_reg of preset_reg1 : signal is "true"; + signal preset_reg2 : STD_LOGIC_VECTOR ( 2 downto 0 ); + attribute SHIFT_EXTRACT of preset_reg2 : signal is "NO"; + attribute async_reg of preset_reg2 : signal is "true"; + signal preset_valid_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of preset_valid_reg1 : signal is "NO"; + attribute async_reg of preset_valid_reg1 : signal is "true"; + signal preset_valid_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of preset_valid_reg2 : signal is "NO"; + attribute async_reg of preset_valid_reg2 : signal is "true"; + signal rxeqscan_adapt_done : STD_LOGIC; + signal rxeqscan_new_txcoeff_done : STD_LOGIC; + signal txcoeff_reg1 : STD_LOGIC_VECTOR ( 17 downto 0 ); + attribute SHIFT_EXTRACT of txcoeff_reg1 : signal is "NO"; + attribute async_reg of txcoeff_reg1 : signal is "true"; + signal txcoeff_reg2 : STD_LOGIC_VECTOR ( 17 downto 0 ); + attribute SHIFT_EXTRACT of txcoeff_reg2 : signal is "NO"; + attribute async_reg of txcoeff_reg2 : signal is "true"; + signal txpreset_reg1 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of txpreset_reg1 : signal is "NO"; + attribute async_reg of txpreset_reg1 : signal is "true"; + signal txpreset_reg2 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of txpreset_reg2 : signal is "NO"; + attribute async_reg of txpreset_reg2 : signal is "true"; + signal \NLW_converge_cnt_reg[21]_i_2__0_CO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal \NLW_converge_cnt_reg[21]_i_2__0_O_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \FSM_onehot_fsm[3]_i_2__0\ : label is "soft_lutpair98"; + attribute SOFT_HLUTNM of \FSM_onehot_fsm[4]_i_4__0\ : label is "soft_lutpair97"; + attribute FSM_ENCODED_STATES : string; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[1]\ : label is "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[2]\ : label is "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[3]\ : label is "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[4]\ : label is "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001"; + attribute SOFT_HLUTNM of \FSM_onehot_fsm_rx[6]_i_2__0\ : label is "soft_lutpair99"; + attribute SOFT_HLUTNM of \converge_cnt[18]_i_1__0\ : label is "soft_lutpair97"; + attribute SOFT_HLUTNM of \converge_cnt[21]_i_1__0\ : label is "soft_lutpair98"; + attribute ADDER_THRESHOLD : integer; + attribute ADDER_THRESHOLD of \converge_cnt_reg[12]_i_2__0\ : label is 35; + attribute ADDER_THRESHOLD of \converge_cnt_reg[16]_i_2__0\ : label is 35; + attribute ADDER_THRESHOLD of \converge_cnt_reg[20]_i_2__0\ : label is 35; + attribute ADDER_THRESHOLD of \converge_cnt_reg[21]_i_2__0\ : label is 35; + attribute ADDER_THRESHOLD of \converge_cnt_reg[4]_i_2__0\ : label is 35; + attribute ADDER_THRESHOLD of \converge_cnt_reg[8]_i_2__0\ : label is 35; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of \fs_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of \fs_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \fs_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \fs_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \fs_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \fs_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \fs_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \fs_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \fs_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \fs_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \fs_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \fs_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \fs_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg2_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \lf_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \lf_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \lf_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \lf_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \lf_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \lf_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \lf_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \lf_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \lf_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \lf_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \lf_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \lf_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg2_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of new_txcoeff_req_reg1_reg : label is std.standard.true; + attribute KEEP of new_txcoeff_req_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of new_txcoeff_req_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of new_txcoeff_req_reg2_reg : label is std.standard.true; + attribute KEEP of new_txcoeff_req_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of new_txcoeff_req_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of \preset_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \preset_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \preset_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \preset_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \preset_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \preset_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \preset_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \preset_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \preset_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \preset_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \preset_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \preset_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \preset_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \preset_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \preset_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \preset_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \preset_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \preset_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of preset_valid_reg1_reg : label is std.standard.true; + attribute KEEP of preset_valid_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of preset_valid_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of preset_valid_reg2_reg : label is std.standard.true; + attribute KEEP of preset_valid_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of preset_valid_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \rxeq_new_txcoeff_req_i_1__0\ : label is "soft_lutpair99"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[10]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[11]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[12]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[13]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[14]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[15]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[16]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[16]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[16]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[17]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[17]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[17]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[6]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[7]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[8]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[9]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[9]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[10]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[11]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[12]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[13]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[14]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[15]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[16]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[16]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[16]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[17]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[17]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[17]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[6]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[7]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[8]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[9]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[9]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg2_reg[3]\ : label is "NO"; +begin +\FSM_onehot_fsm[1]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0F00AFAF0F11AFBB" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[4]\, + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => preset_valid_reg2, + I3 => \FSM_onehot_fsm_reg_n_0_[2]\, + I4 => new_txcoeff_req_reg2, + I5 => \FSM_onehot_fsm_reg_n_0_[1]\, + O => \FSM_onehot_fsm[1]_i_1__2_n_0\ + ); +\FSM_onehot_fsm[2]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => preset_valid_reg2, + I1 => \FSM_onehot_fsm_reg_n_0_[2]\, + I2 => \FSM_onehot_fsm_reg_n_0_[1]\, + O => \FSM_onehot_fsm[2]_i_1__2_n_0\ + ); +\FSM_onehot_fsm[3]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"04FF040404040404" + ) + port map ( + I0 => \FSM_onehot_fsm[3]_i_2__0_n_0\, + I1 => \FSM_onehot_fsm[4]_i_2__1_n_0\, + I2 => \FSM_onehot_fsm[4]_i_3__0_n_0\, + I3 => preset_valid_reg2, + I4 => new_txcoeff_req_reg2, + I5 => \FSM_onehot_fsm_reg_n_0_[1]\, + O => \FSM_onehot_fsm[3]_i_1__2_n_0\ + ); +\FSM_onehot_fsm[3]_i_2__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"04FF" + ) + port map ( + I0 => \out\(0), + I1 => \out\(1), + I2 => adapt_done_cnt_reg_n_0, + I3 => \FSM_onehot_fsm_reg_n_0_[3]\, + O => \FSM_onehot_fsm[3]_i_2__0_n_0\ + ); +\FSM_onehot_fsm[4]_i_10__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFBFFFFF" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_13__0_n_0\, + I1 => converge_cnt(2), + I2 => converge_cnt(20), + I3 => converge_cnt(10), + I4 => converge_cnt(0), + O => \FSM_onehot_fsm[4]_i_10__0_n_0\ + ); +\FSM_onehot_fsm[4]_i_11__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"EFFF" + ) + port map ( + I0 => converge_cnt(2), + I1 => converge_cnt(6), + I2 => converge_cnt(8), + I3 => converge_cnt(3), + O => \FSM_onehot_fsm[4]_i_11__0_n_0\ + ); +\FSM_onehot_fsm[4]_i_12__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"EFFFFFFF" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_13__0_n_0\, + I1 => converge_cnt(14), + I2 => converge_cnt(10), + I3 => converge_cnt(21), + I4 => converge_cnt(19), + O => \FSM_onehot_fsm[4]_i_12__0_n_0\ + ); +\FSM_onehot_fsm[4]_i_13__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"FF7F" + ) + port map ( + I0 => converge_cnt(16), + I1 => converge_cnt(11), + I2 => converge_cnt(9), + I3 => converge_cnt(5), + O => \FSM_onehot_fsm[4]_i_13__0_n_0\ + ); +\FSM_onehot_fsm[4]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFD0FFD0FFD0" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_2__1_n_0\, + I1 => \FSM_onehot_fsm[4]_i_3__0_n_0\, + I2 => \FSM_onehot_fsm_reg_n_0_[3]\, + I3 => \FSM_onehot_fsm[4]_i_4__0_n_0\, + I4 => \FSM_onehot_fsm_reg_n_0_[4]\, + I5 => new_txcoeff_req_reg2, + O => \FSM_onehot_fsm[4]_i_1__2_n_0\ + ); +\FSM_onehot_fsm[4]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFFFFFFBF" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_5__0_n_0\, + I1 => converge_cnt(17), + I2 => converge_cnt(18), + I3 => converge_cnt(21), + I4 => converge_cnt(8), + I5 => \FSM_onehot_fsm[4]_i_6__0_n_0\, + O => \FSM_onehot_fsm[4]_i_2__1_n_0\ + ); +\FSM_onehot_fsm[4]_i_3__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000001000000" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_7__0_n_0\, + I1 => converge_cnt(7), + I2 => converge_cnt(1), + I3 => converge_cnt(15), + I4 => converge_cnt(13), + I5 => \FSM_onehot_fsm[4]_i_8__0_n_0\, + O => \FSM_onehot_fsm[4]_i_3__0_n_0\ + ); +\FSM_onehot_fsm[4]_i_4__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0400" + ) + port map ( + I0 => \out\(0), + I1 => \out\(1), + I2 => adapt_done_cnt_reg_n_0, + I3 => \FSM_onehot_fsm_reg_n_0_[3]\, + O => \FSM_onehot_fsm[4]_i_4__0_n_0\ + ); +\FSM_onehot_fsm[4]_i_5__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"FFF2" + ) + port map ( + I0 => \out\(1), + I1 => \out\(0), + I2 => converge_cnt(7), + I3 => converge_cnt(1), + O => \FSM_onehot_fsm[4]_i_5__0_n_0\ + ); +\FSM_onehot_fsm[4]_i_6__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFFFFFFFB" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_9__0_n_0\, + I1 => converge_cnt(19), + I2 => converge_cnt(6), + I3 => converge_cnt(3), + I4 => converge_cnt(4), + I5 => \FSM_onehot_fsm[4]_i_10__0_n_0\, + O => \FSM_onehot_fsm[4]_i_6__0_n_0\ + ); +\FSM_onehot_fsm[4]_i_7__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"DFFF" + ) + port map ( + I0 => \out\(1), + I1 => \out\(0), + I2 => converge_cnt(17), + I3 => converge_cnt(18), + O => \FSM_onehot_fsm[4]_i_7__0_n_0\ + ); +\FSM_onehot_fsm[4]_i_8__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFFFFFFFE" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_11__0_n_0\, + I1 => converge_cnt(12), + I2 => converge_cnt(20), + I3 => converge_cnt(0), + I4 => converge_cnt(4), + I5 => \FSM_onehot_fsm[4]_i_12__0_n_0\, + O => \FSM_onehot_fsm[4]_i_8__0_n_0\ + ); +\FSM_onehot_fsm[4]_i_9__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"FFDF" + ) + port map ( + I0 => converge_cnt(15), + I1 => converge_cnt(13), + I2 => converge_cnt(14), + I3 => converge_cnt(12), + O => \FSM_onehot_fsm[4]_i_9__0_n_0\ + ); +\FSM_onehot_fsm_reg[1]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[1]_i_1__2_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[1]\, + S => RST_CPLLRESET + ); +\FSM_onehot_fsm_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[2]_i_1__2_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[3]_i_1__2_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[4]_i_1__2_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_rx[2]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"40FF4040" + ) + port map ( + I0 => \out\(1), + I1 => Q(0), + I2 => \out\(0), + I3 => preset_done, + I4 => Q(1), + O => D(0) + ); +\FSM_onehot_fsm_rx[5]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"F444444444444444" + ) + port map ( + I0 => rxeqscan_new_txcoeff_done, + I1 => Q(3), + I2 => \FSM_onehot_fsm_rx_reg[5]\(2), + I3 => \FSM_onehot_fsm_rx_reg[5]\(0), + I4 => \FSM_onehot_fsm_rx_reg[5]\(1), + I5 => Q(2), + O => D(1) + ); +\FSM_onehot_fsm_rx[6]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFFE0E0E0" + ) + port map ( + I0 => \out\(1), + I1 => \out\(0), + I2 => Q(4), + I3 => preset_done, + I4 => Q(1), + I5 => \FSM_onehot_fsm_rx[6]_i_2__0_n_0\, + O => D(2) + ); +\FSM_onehot_fsm_rx[6]_i_2__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => rxeqscan_new_txcoeff_done, + I1 => Q(3), + O => \FSM_onehot_fsm_rx[6]_i_2__0_n_0\ + ); +\adapt_done_cnt_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"000A0A0AF0F0F8F0" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[4]\, + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + I5 => \adapt_done_cnt_i_2__0_n_0\, + O => \adapt_done_cnt_i_1__0_n_0\ + ); +\adapt_done_cnt_i_2__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00FF0101" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[3]\, + I1 => \FSM_onehot_fsm_reg_n_0_[2]\, + I2 => \FSM_onehot_fsm_reg_n_0_[1]\, + I3 => new_txcoeff_req_reg2, + I4 => \FSM_onehot_fsm_reg_n_0_[4]\, + O => \adapt_done_cnt_i_2__0_n_0\ + ); +adapt_done_cnt_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \adapt_done_cnt_i_1__0_n_0\, + Q => adapt_done_cnt_reg_n_0, + R => RST_CPLLRESET + ); +\adapt_done_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"F8000000" + ) + port map ( + I0 => \out\(1), + I1 => \out\(0), + I2 => adapt_done_cnt_reg_n_0, + I3 => new_txcoeff_req_reg2, + I4 => \FSM_onehot_fsm_reg_n_0_[4]\, + O => adapt_done + ); +adapt_done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => adapt_done, + Q => rxeqscan_adapt_done, + R => RST_CPLLRESET + ); +\converge_cnt[0]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"44444044" + ) + port map ( + I0 => converge_cnt(0), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(0) + ); +\converge_cnt[10]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(10), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(10) + ); +\converge_cnt[11]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(11), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(11) + ); +\converge_cnt[12]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(12), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(12) + ); +\converge_cnt[13]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(13), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(13) + ); +\converge_cnt[14]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(14), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(14) + ); +\converge_cnt[15]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(15), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(15) + ); +\converge_cnt[16]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(16), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(16) + ); +\converge_cnt[17]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(17), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(17) + ); +\converge_cnt[18]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(18), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(18) + ); +\converge_cnt[19]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(19), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(19) + ); +\converge_cnt[1]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(1), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(1) + ); +\converge_cnt[20]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(20), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(20) + ); +\converge_cnt[21]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(21), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(21) + ); +\converge_cnt[2]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(2), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(2) + ); +\converge_cnt[3]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(3), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(3) + ); +\converge_cnt[4]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(4), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(4) + ); +\converge_cnt[5]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(5), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(5) + ); +\converge_cnt[6]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(6), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(6) + ); +\converge_cnt[7]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(7), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(7) + ); +\converge_cnt[8]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(8), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(8) + ); +\converge_cnt[9]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(9), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(9) + ); +\converge_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(0), + Q => converge_cnt(0), + R => RST_CPLLRESET + ); +\converge_cnt_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(10), + Q => converge_cnt(10), + R => RST_CPLLRESET + ); +\converge_cnt_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(11), + Q => converge_cnt(11), + R => RST_CPLLRESET + ); +\converge_cnt_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(12), + Q => converge_cnt(12), + R => RST_CPLLRESET + ); +\converge_cnt_reg[12]_i_2__0\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[8]_i_2__0_n_0\, + CO(3) => \converge_cnt_reg[12]_i_2__0_n_0\, + CO(2) => \converge_cnt_reg[12]_i_2__0_n_1\, + CO(1) => \converge_cnt_reg[12]_i_2__0_n_2\, + CO(0) => \converge_cnt_reg[12]_i_2__0_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 0) => converge_cnt0(12 downto 9), + S(3 downto 0) => converge_cnt(12 downto 9) + ); +\converge_cnt_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(13), + Q => converge_cnt(13), + R => RST_CPLLRESET + ); +\converge_cnt_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(14), + Q => converge_cnt(14), + R => RST_CPLLRESET + ); +\converge_cnt_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(15), + Q => converge_cnt(15), + R => RST_CPLLRESET + ); +\converge_cnt_reg[16]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(16), + Q => converge_cnt(16), + R => RST_CPLLRESET + ); +\converge_cnt_reg[16]_i_2__0\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[12]_i_2__0_n_0\, + CO(3) => \converge_cnt_reg[16]_i_2__0_n_0\, + CO(2) => \converge_cnt_reg[16]_i_2__0_n_1\, + CO(1) => \converge_cnt_reg[16]_i_2__0_n_2\, + CO(0) => \converge_cnt_reg[16]_i_2__0_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 0) => converge_cnt0(16 downto 13), + S(3 downto 0) => converge_cnt(16 downto 13) + ); +\converge_cnt_reg[17]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(17), + Q => converge_cnt(17), + R => RST_CPLLRESET + ); +\converge_cnt_reg[18]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(18), + Q => converge_cnt(18), + R => RST_CPLLRESET + ); +\converge_cnt_reg[19]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(19), + Q => converge_cnt(19), + R => RST_CPLLRESET + ); +\converge_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(1), + Q => converge_cnt(1), + R => RST_CPLLRESET + ); +\converge_cnt_reg[20]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(20), + Q => converge_cnt(20), + R => RST_CPLLRESET + ); +\converge_cnt_reg[20]_i_2__0\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[16]_i_2__0_n_0\, + CO(3) => \converge_cnt_reg[20]_i_2__0_n_0\, + CO(2) => \converge_cnt_reg[20]_i_2__0_n_1\, + CO(1) => \converge_cnt_reg[20]_i_2__0_n_2\, + CO(0) => \converge_cnt_reg[20]_i_2__0_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 0) => converge_cnt0(20 downto 17), + S(3 downto 0) => converge_cnt(20 downto 17) + ); +\converge_cnt_reg[21]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(21), + Q => converge_cnt(21), + R => RST_CPLLRESET + ); +\converge_cnt_reg[21]_i_2__0\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[20]_i_2__0_n_0\, + CO(3 downto 0) => \NLW_converge_cnt_reg[21]_i_2__0_CO_UNCONNECTED\(3 downto 0), + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 1) => \NLW_converge_cnt_reg[21]_i_2__0_O_UNCONNECTED\(3 downto 1), + O(0) => converge_cnt0(21), + S(3 downto 1) => B"000", + S(0) => converge_cnt(21) + ); +\converge_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(2), + Q => converge_cnt(2), + R => RST_CPLLRESET + ); +\converge_cnt_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(3), + Q => converge_cnt(3), + R => RST_CPLLRESET + ); +\converge_cnt_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(4), + Q => converge_cnt(4), + R => RST_CPLLRESET + ); +\converge_cnt_reg[4]_i_2__0\: unisim.vcomponents.CARRY4 + port map ( + CI => '0', + CO(3) => \converge_cnt_reg[4]_i_2__0_n_0\, + CO(2) => \converge_cnt_reg[4]_i_2__0_n_1\, + CO(1) => \converge_cnt_reg[4]_i_2__0_n_2\, + CO(0) => \converge_cnt_reg[4]_i_2__0_n_3\, + CYINIT => converge_cnt(0), + DI(3 downto 0) => B"0000", + O(3 downto 0) => converge_cnt0(4 downto 1), + S(3 downto 0) => converge_cnt(4 downto 1) + ); +\converge_cnt_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(5), + Q => converge_cnt(5), + R => RST_CPLLRESET + ); +\converge_cnt_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(6), + Q => converge_cnt(6), + R => RST_CPLLRESET + ); +\converge_cnt_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(7), + Q => converge_cnt(7), + R => RST_CPLLRESET + ); +\converge_cnt_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(8), + Q => converge_cnt(8), + R => RST_CPLLRESET + ); +\converge_cnt_reg[8]_i_2__0\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[4]_i_2__0_n_0\, + CO(3) => \converge_cnt_reg[8]_i_2__0_n_0\, + CO(2) => \converge_cnt_reg[8]_i_2__0_n_1\, + CO(1) => \converge_cnt_reg[8]_i_2__0_n_2\, + CO(0) => \converge_cnt_reg[8]_i_2__0_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 0) => converge_cnt0(8 downto 5), + S(3 downto 0) => converge_cnt(8 downto 5) + ); +\converge_cnt_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(9), + Q => converge_cnt(9), + R => RST_CPLLRESET + ); +\fs_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fs_reg1_reg[5]_0\(0), + Q => fs_reg1(0), + R => RST_CPLLRESET + ); +\fs_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fs_reg1_reg[5]_0\(1), + Q => fs_reg1(1), + R => RST_CPLLRESET + ); +\fs_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fs_reg1_reg[5]_0\(2), + Q => fs_reg1(2), + R => RST_CPLLRESET + ); +\fs_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fs_reg1_reg[5]_0\(3), + Q => fs_reg1(3), + R => RST_CPLLRESET + ); +\fs_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fs_reg1_reg[5]_0\(4), + Q => fs_reg1(4), + R => RST_CPLLRESET + ); +\fs_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fs_reg1_reg[5]_0\(5), + Q => fs_reg1(5), + R => RST_CPLLRESET + ); +\fs_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => fs_reg1(0), + Q => fs_reg2(0), + R => RST_CPLLRESET + ); +\fs_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => fs_reg1(1), + Q => fs_reg2(1), + R => RST_CPLLRESET + ); +\fs_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => fs_reg1(2), + Q => fs_reg2(2), + R => RST_CPLLRESET + ); +\fs_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => fs_reg1(3), + Q => fs_reg2(3), + R => RST_CPLLRESET + ); +\fs_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => fs_reg1(4), + Q => fs_reg2(4), + R => RST_CPLLRESET + ); +\fs_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => fs_reg1(5), + Q => fs_reg2(5), + R => RST_CPLLRESET + ); +\lf_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \lf_reg1_reg[5]_0\(0), + Q => lf_reg1(0), + R => RST_CPLLRESET + ); +\lf_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \lf_reg1_reg[5]_0\(1), + Q => lf_reg1(1), + R => RST_CPLLRESET + ); +\lf_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \lf_reg1_reg[5]_0\(2), + Q => lf_reg1(2), + R => RST_CPLLRESET + ); +\lf_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \lf_reg1_reg[5]_0\(3), + Q => lf_reg1(3), + R => RST_CPLLRESET + ); +\lf_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \lf_reg1_reg[5]_0\(4), + Q => lf_reg1(4), + R => RST_CPLLRESET + ); +\lf_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \lf_reg1_reg[5]_0\(5), + Q => lf_reg1(5), + R => RST_CPLLRESET + ); +\lf_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => lf_reg1(0), + Q => lf_reg2(0), + R => RST_CPLLRESET + ); +\lf_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => lf_reg1(1), + Q => lf_reg2(1), + R => RST_CPLLRESET + ); +\lf_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => lf_reg1(2), + Q => lf_reg2(2), + R => RST_CPLLRESET + ); +\lf_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => lf_reg1(3), + Q => lf_reg2(3), + R => RST_CPLLRESET + ); +\lf_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => lf_reg1(4), + Q => lf_reg2(4), + R => RST_CPLLRESET + ); +\lf_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => lf_reg1(5), + Q => lf_reg2(5), + R => RST_CPLLRESET + ); +\new_txcoeff_done_i_1__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[4]\, + I1 => new_txcoeff_req_reg2, + O => new_txcoeff_done + ); +new_txcoeff_done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => new_txcoeff_done, + Q => rxeqscan_new_txcoeff_done, + R => RST_CPLLRESET + ); +new_txcoeff_req_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => new_txcoeff_req_reg1_reg_0, + Q => new_txcoeff_req_reg1, + R => RST_CPLLRESET + ); +new_txcoeff_req_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => new_txcoeff_req_reg1, + Q => new_txcoeff_req_reg2, + R => RST_CPLLRESET + ); +\preset_done_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"EA" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[2]\, + I1 => \FSM_onehot_fsm_reg_n_0_[1]\, + I2 => preset_valid_reg2, + O => preset_done_1 + ); +preset_done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => preset_done_1, + Q => preset_done, + R => RST_CPLLRESET + ); +\preset_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \preset_reg1_reg[2]_0\(0), + Q => preset_reg1(0), + R => RST_CPLLRESET + ); +\preset_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \preset_reg1_reg[2]_0\(1), + Q => preset_reg1(1), + R => RST_CPLLRESET + ); +\preset_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \preset_reg1_reg[2]_0\(2), + Q => preset_reg1(2), + R => RST_CPLLRESET + ); +\preset_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => preset_reg1(0), + Q => preset_reg2(0), + R => RST_CPLLRESET + ); +\preset_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => preset_reg1(1), + Q => preset_reg2(1), + R => RST_CPLLRESET + ); +\preset_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => preset_reg1(2), + Q => preset_reg2(2), + R => RST_CPLLRESET + ); +preset_valid_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_preset_valid, + Q => preset_valid_reg1, + R => RST_CPLLRESET + ); +preset_valid_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => preset_valid_reg1, + Q => preset_valid_reg2, + R => RST_CPLLRESET + ); +\rxeq_adapt_done_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"A800FFFFA8000000" + ) + port map ( + I0 => rxeqscan_new_txcoeff_done, + I1 => rxeq_adapt_done_reg_reg_1, + I2 => rxeqscan_adapt_done, + I3 => Q(3), + I4 => rxeq_adapt_done_reg, + I5 => USER_RXEQ_ADAPT_DONE, + O => new_txcoeff_done_reg_0 + ); +\rxeq_adapt_done_reg_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FF00FF33AA00A800" + ) + port map ( + I0 => rxeqscan_adapt_done, + I1 => rxeq_adapt_done_reg_reg, + I2 => rxeqscan_new_txcoeff_done, + I3 => Q(3), + I4 => rxeq_adapt_done_reg_reg_0, + I5 => rxeq_adapt_done_reg_reg_1, + O => adapt_done_reg_0 + ); +\rxeq_new_txcoeff_req_i_1__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => Q(3), + I1 => rxeqscan_new_txcoeff_done, + O => rxeq_new_txcoeff_req + ); +\txcoeff_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(0), + Q => txcoeff_reg1(0), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(10), + Q => txcoeff_reg1(10), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(11), + Q => txcoeff_reg1(11), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(12), + Q => txcoeff_reg1(12), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(13), + Q => txcoeff_reg1(13), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(14), + Q => txcoeff_reg1(14), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(15), + Q => txcoeff_reg1(15), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[16]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(16), + Q => txcoeff_reg1(16), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[17]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(17), + Q => txcoeff_reg1(17), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(1), + Q => txcoeff_reg1(1), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(2), + Q => txcoeff_reg1(2), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(3), + Q => txcoeff_reg1(3), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(4), + Q => txcoeff_reg1(4), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(5), + Q => txcoeff_reg1(5), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(6), + Q => txcoeff_reg1(6), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(7), + Q => txcoeff_reg1(7), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(8), + Q => txcoeff_reg1(8), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(9), + Q => txcoeff_reg1(9), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(0), + Q => txcoeff_reg2(0), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(10), + Q => txcoeff_reg2(10), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(11), + Q => txcoeff_reg2(11), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(12), + Q => txcoeff_reg2(12), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(13), + Q => txcoeff_reg2(13), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(14), + Q => txcoeff_reg2(14), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(15), + Q => txcoeff_reg2(15), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[16]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(16), + Q => txcoeff_reg2(16), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[17]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(17), + Q => txcoeff_reg2(17), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(1), + Q => txcoeff_reg2(1), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(2), + Q => txcoeff_reg2(2), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(3), + Q => txcoeff_reg2(3), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(4), + Q => txcoeff_reg2(4), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(5), + Q => txcoeff_reg2(5), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(6), + Q => txcoeff_reg2(6), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(7), + Q => txcoeff_reg2(7), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(8), + Q => txcoeff_reg2(8), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(9), + Q => txcoeff_reg2(9), + R => RST_CPLLRESET + ); +\txpreset_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txpreset_reg1_reg[3]_0\(0), + Q => txpreset_reg1(0), + R => RST_CPLLRESET + ); +\txpreset_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txpreset_reg1_reg[3]_0\(1), + Q => txpreset_reg1(1), + R => RST_CPLLRESET + ); +\txpreset_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txpreset_reg1_reg[3]_0\(2), + Q => txpreset_reg1(2), + R => RST_CPLLRESET + ); +\txpreset_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txpreset_reg1_reg[3]_0\(3), + Q => txpreset_reg1(3), + R => RST_CPLLRESET + ); +\txpreset_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txpreset_reg1(0), + Q => txpreset_reg2(0), + R => RST_CPLLRESET + ); +\txpreset_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txpreset_reg1(1), + Q => txpreset_reg2(1), + R => RST_CPLLRESET + ); +\txpreset_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txpreset_reg1(2), + Q => txpreset_reg2(2), + R => RST_CPLLRESET + ); +\txpreset_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txpreset_reg1(3), + Q => txpreset_reg2(3), + R => RST_CPLLRESET + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_rxeq_scan_59 is + port ( + D : out STD_LOGIC_VECTOR ( 2 downto 0 ); + rxeq_new_txcoeff_req : out STD_LOGIC; + adapt_done_reg_0 : out STD_LOGIC; + new_txcoeff_done_reg_0 : out STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + new_txcoeff_req_reg1_reg_0 : in STD_LOGIC; + rxeq_preset_valid : in STD_LOGIC; + \out\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + Q : in STD_LOGIC_VECTOR ( 4 downto 0 ); + \FSM_onehot_fsm_rx_reg[5]\ : in STD_LOGIC_VECTOR ( 2 downto 0 ); + rxeq_adapt_done_reg_reg : in STD_LOGIC; + rxeq_adapt_done_reg_reg_0 : in STD_LOGIC; + rxeq_adapt_done_reg_reg_1 : in STD_LOGIC; + rxeq_adapt_done_reg : in STD_LOGIC; + USER_RXEQ_ADAPT_DONE : in STD_LOGIC; + \preset_reg1_reg[2]_0\ : in STD_LOGIC_VECTOR ( 2 downto 0 ); + \txpreset_reg1_reg[3]_0\ : in STD_LOGIC_VECTOR ( 3 downto 0 ); + \txcoeff_reg1_reg[17]_0\ : in STD_LOGIC_VECTOR ( 17 downto 0 ); + \fs_reg1_reg[5]_0\ : in STD_LOGIC_VECTOR ( 5 downto 0 ); + \lf_reg1_reg[5]_0\ : in STD_LOGIC_VECTOR ( 5 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_rxeq_scan_59 : entity is "pcie_7x_0_rxeq_scan"; +end pcie_7x_0_pcie_7x_0_rxeq_scan_59; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_rxeq_scan_59 is + signal \FSM_onehot_fsm[1]_i_1__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[2]_i_1__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[3]_i_1__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[3]_i_2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_10_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_11_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_12_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_13_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_1__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_2__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_3_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_4_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_5_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_6_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_7_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_8_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm[4]_i_9_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[1]\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[2]\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[3]\ : STD_LOGIC; + signal \FSM_onehot_fsm_reg_n_0_[4]\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx[6]_i_2_n_0\ : STD_LOGIC; + signal adapt_done : STD_LOGIC; + signal adapt_done_cnt_i_1_n_0 : STD_LOGIC; + signal adapt_done_cnt_i_2_n_0 : STD_LOGIC; + signal adapt_done_cnt_reg_n_0 : STD_LOGIC; + signal converge_cnt : STD_LOGIC_VECTOR ( 21 downto 0 ); + signal converge_cnt0 : STD_LOGIC_VECTOR ( 21 downto 1 ); + signal converge_cnt_0 : STD_LOGIC_VECTOR ( 21 downto 0 ); + signal \converge_cnt_reg[12]_i_2_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_2_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_2_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[12]_i_2_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_2_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_2_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_2_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[16]_i_2_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_2_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_2_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_2_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[20]_i_2_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_2_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_2_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_2_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[4]_i_2_n_3\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_2_n_0\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_2_n_1\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_2_n_2\ : STD_LOGIC; + signal \converge_cnt_reg[8]_i_2_n_3\ : STD_LOGIC; + signal fs_reg1 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of fs_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of fs_reg1 : signal is "true"; + signal fs_reg2 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of fs_reg2 : signal is "NO"; + attribute async_reg of fs_reg2 : signal is "true"; + signal lf_reg1 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of lf_reg1 : signal is "NO"; + attribute async_reg of lf_reg1 : signal is "true"; + signal lf_reg2 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of lf_reg2 : signal is "NO"; + attribute async_reg of lf_reg2 : signal is "true"; + signal new_txcoeff_done : STD_LOGIC; + signal new_txcoeff_req_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of new_txcoeff_req_reg1 : signal is "NO"; + attribute async_reg of new_txcoeff_req_reg1 : signal is "true"; + signal new_txcoeff_req_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of new_txcoeff_req_reg2 : signal is "NO"; + attribute async_reg of new_txcoeff_req_reg2 : signal is "true"; + signal preset_done : STD_LOGIC; + signal preset_done_1 : STD_LOGIC; + signal preset_reg1 : STD_LOGIC_VECTOR ( 2 downto 0 ); + attribute SHIFT_EXTRACT of preset_reg1 : signal is "NO"; + attribute async_reg of preset_reg1 : signal is "true"; + signal preset_reg2 : STD_LOGIC_VECTOR ( 2 downto 0 ); + attribute SHIFT_EXTRACT of preset_reg2 : signal is "NO"; + attribute async_reg of preset_reg2 : signal is "true"; + signal preset_valid_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of preset_valid_reg1 : signal is "NO"; + attribute async_reg of preset_valid_reg1 : signal is "true"; + signal preset_valid_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of preset_valid_reg2 : signal is "NO"; + attribute async_reg of preset_valid_reg2 : signal is "true"; + signal rxeqscan_adapt_done : STD_LOGIC; + signal rxeqscan_new_txcoeff_done : STD_LOGIC; + signal txcoeff_reg1 : STD_LOGIC_VECTOR ( 17 downto 0 ); + attribute SHIFT_EXTRACT of txcoeff_reg1 : signal is "NO"; + attribute async_reg of txcoeff_reg1 : signal is "true"; + signal txcoeff_reg2 : STD_LOGIC_VECTOR ( 17 downto 0 ); + attribute SHIFT_EXTRACT of txcoeff_reg2 : signal is "NO"; + attribute async_reg of txcoeff_reg2 : signal is "true"; + signal txpreset_reg1 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of txpreset_reg1 : signal is "NO"; + attribute async_reg of txpreset_reg1 : signal is "true"; + signal txpreset_reg2 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of txpreset_reg2 : signal is "NO"; + attribute async_reg of txpreset_reg2 : signal is "true"; + signal \NLW_converge_cnt_reg[21]_i_2_CO_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal \NLW_converge_cnt_reg[21]_i_2_O_UNCONNECTED\ : STD_LOGIC_VECTOR ( 3 downto 1 ); + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \FSM_onehot_fsm[3]_i_2\ : label is "soft_lutpair46"; + attribute SOFT_HLUTNM of \FSM_onehot_fsm[4]_i_4\ : label is "soft_lutpair45"; + attribute FSM_ENCODED_STATES : string; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[1]\ : label is "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[2]\ : label is "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[3]\ : label is "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_reg[4]\ : label is "FSM_PRESET:00100,FSM_CONVERGE:01000,FSM_NEW_TXCOEFF_REQ:10000,FSM_IDLE:00010,iSTATE:00001"; + attribute SOFT_HLUTNM of \FSM_onehot_fsm_rx[6]_i_2\ : label is "soft_lutpair47"; + attribute SOFT_HLUTNM of \converge_cnt[18]_i_1\ : label is "soft_lutpair45"; + attribute SOFT_HLUTNM of \converge_cnt[21]_i_1\ : label is "soft_lutpair46"; + attribute ADDER_THRESHOLD : integer; + attribute ADDER_THRESHOLD of \converge_cnt_reg[12]_i_2\ : label is 35; + attribute ADDER_THRESHOLD of \converge_cnt_reg[16]_i_2\ : label is 35; + attribute ADDER_THRESHOLD of \converge_cnt_reg[20]_i_2\ : label is 35; + attribute ADDER_THRESHOLD of \converge_cnt_reg[21]_i_2\ : label is 35; + attribute ADDER_THRESHOLD of \converge_cnt_reg[4]_i_2\ : label is 35; + attribute ADDER_THRESHOLD of \converge_cnt_reg[8]_i_2\ : label is 35; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of \fs_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of \fs_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \fs_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \fs_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \fs_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \fs_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \fs_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \fs_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \fs_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \fs_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \fs_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \fs_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \fs_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \fs_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \fs_reg2_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \lf_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \lf_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \lf_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \lf_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \lf_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \lf_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \lf_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \lf_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \lf_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \lf_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \lf_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \lf_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \lf_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \lf_reg2_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of new_txcoeff_req_reg1_reg : label is std.standard.true; + attribute KEEP of new_txcoeff_req_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of new_txcoeff_req_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of new_txcoeff_req_reg2_reg : label is std.standard.true; + attribute KEEP of new_txcoeff_req_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of new_txcoeff_req_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of \preset_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \preset_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \preset_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \preset_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \preset_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \preset_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \preset_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \preset_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \preset_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \preset_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \preset_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \preset_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \preset_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \preset_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \preset_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \preset_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \preset_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \preset_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of preset_valid_reg1_reg : label is std.standard.true; + attribute KEEP of preset_valid_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of preset_valid_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of preset_valid_reg2_reg : label is std.standard.true; + attribute KEEP of preset_valid_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of preset_valid_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of rxeq_new_txcoeff_req_i_1 : label is "soft_lutpair47"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[10]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[11]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[12]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[13]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[14]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[15]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[16]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[16]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[16]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[17]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[17]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[17]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[6]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[7]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[8]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg1_reg[9]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg1_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg1_reg[9]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[10]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[11]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[12]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[13]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[14]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[15]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[16]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[16]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[16]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[17]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[17]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[17]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[6]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[7]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[8]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txcoeff_reg2_reg[9]\ : label is std.standard.true; + attribute KEEP of \txcoeff_reg2_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txcoeff_reg2_reg[9]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txpreset_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \txpreset_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txpreset_reg2_reg[3]\ : label is "NO"; +begin +\FSM_onehot_fsm[1]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0F00AFAF0F11AFBB" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[4]\, + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => preset_valid_reg2, + I3 => \FSM_onehot_fsm_reg_n_0_[2]\, + I4 => new_txcoeff_req_reg2, + I5 => \FSM_onehot_fsm_reg_n_0_[1]\, + O => \FSM_onehot_fsm[1]_i_1__1_n_0\ + ); +\FSM_onehot_fsm[2]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => preset_valid_reg2, + I1 => \FSM_onehot_fsm_reg_n_0_[2]\, + I2 => \FSM_onehot_fsm_reg_n_0_[1]\, + O => \FSM_onehot_fsm[2]_i_1__1_n_0\ + ); +\FSM_onehot_fsm[3]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"04FF040404040404" + ) + port map ( + I0 => \FSM_onehot_fsm[3]_i_2_n_0\, + I1 => \FSM_onehot_fsm[4]_i_2__0_n_0\, + I2 => \FSM_onehot_fsm[4]_i_3_n_0\, + I3 => preset_valid_reg2, + I4 => new_txcoeff_req_reg2, + I5 => \FSM_onehot_fsm_reg_n_0_[1]\, + O => \FSM_onehot_fsm[3]_i_1__1_n_0\ + ); +\FSM_onehot_fsm[3]_i_2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"04FF" + ) + port map ( + I0 => \out\(0), + I1 => \out\(1), + I2 => adapt_done_cnt_reg_n_0, + I3 => \FSM_onehot_fsm_reg_n_0_[3]\, + O => \FSM_onehot_fsm[3]_i_2_n_0\ + ); +\FSM_onehot_fsm[4]_i_10\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFBFFFFF" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_13_n_0\, + I1 => converge_cnt(2), + I2 => converge_cnt(20), + I3 => converge_cnt(10), + I4 => converge_cnt(0), + O => \FSM_onehot_fsm[4]_i_10_n_0\ + ); +\FSM_onehot_fsm[4]_i_11\: unisim.vcomponents.LUT4 + generic map( + INIT => X"EFFF" + ) + port map ( + I0 => converge_cnt(2), + I1 => converge_cnt(6), + I2 => converge_cnt(8), + I3 => converge_cnt(3), + O => \FSM_onehot_fsm[4]_i_11_n_0\ + ); +\FSM_onehot_fsm[4]_i_12\: unisim.vcomponents.LUT5 + generic map( + INIT => X"EFFFFFFF" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_13_n_0\, + I1 => converge_cnt(14), + I2 => converge_cnt(10), + I3 => converge_cnt(21), + I4 => converge_cnt(19), + O => \FSM_onehot_fsm[4]_i_12_n_0\ + ); +\FSM_onehot_fsm[4]_i_13\: unisim.vcomponents.LUT4 + generic map( + INIT => X"FF7F" + ) + port map ( + I0 => converge_cnt(16), + I1 => converge_cnt(11), + I2 => converge_cnt(9), + I3 => converge_cnt(5), + O => \FSM_onehot_fsm[4]_i_13_n_0\ + ); +\FSM_onehot_fsm[4]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFD0FFD0FFD0" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_2__0_n_0\, + I1 => \FSM_onehot_fsm[4]_i_3_n_0\, + I2 => \FSM_onehot_fsm_reg_n_0_[3]\, + I3 => \FSM_onehot_fsm[4]_i_4_n_0\, + I4 => \FSM_onehot_fsm_reg_n_0_[4]\, + I5 => new_txcoeff_req_reg2, + O => \FSM_onehot_fsm[4]_i_1__1_n_0\ + ); +\FSM_onehot_fsm[4]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFFFFFFBF" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_5_n_0\, + I1 => converge_cnt(17), + I2 => converge_cnt(18), + I3 => converge_cnt(21), + I4 => converge_cnt(8), + I5 => \FSM_onehot_fsm[4]_i_6_n_0\, + O => \FSM_onehot_fsm[4]_i_2__0_n_0\ + ); +\FSM_onehot_fsm[4]_i_3\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000001000000" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_7_n_0\, + I1 => converge_cnt(7), + I2 => converge_cnt(1), + I3 => converge_cnt(15), + I4 => converge_cnt(13), + I5 => \FSM_onehot_fsm[4]_i_8_n_0\, + O => \FSM_onehot_fsm[4]_i_3_n_0\ + ); +\FSM_onehot_fsm[4]_i_4\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0400" + ) + port map ( + I0 => \out\(0), + I1 => \out\(1), + I2 => adapt_done_cnt_reg_n_0, + I3 => \FSM_onehot_fsm_reg_n_0_[3]\, + O => \FSM_onehot_fsm[4]_i_4_n_0\ + ); +\FSM_onehot_fsm[4]_i_5\: unisim.vcomponents.LUT4 + generic map( + INIT => X"FFF2" + ) + port map ( + I0 => \out\(1), + I1 => \out\(0), + I2 => converge_cnt(7), + I3 => converge_cnt(1), + O => \FSM_onehot_fsm[4]_i_5_n_0\ + ); +\FSM_onehot_fsm[4]_i_6\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFFFFFFFB" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_9_n_0\, + I1 => converge_cnt(19), + I2 => converge_cnt(6), + I3 => converge_cnt(3), + I4 => converge_cnt(4), + I5 => \FSM_onehot_fsm[4]_i_10_n_0\, + O => \FSM_onehot_fsm[4]_i_6_n_0\ + ); +\FSM_onehot_fsm[4]_i_7\: unisim.vcomponents.LUT4 + generic map( + INIT => X"DFFF" + ) + port map ( + I0 => \out\(1), + I1 => \out\(0), + I2 => converge_cnt(17), + I3 => converge_cnt(18), + O => \FSM_onehot_fsm[4]_i_7_n_0\ + ); +\FSM_onehot_fsm[4]_i_8\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFFFFFFFE" + ) + port map ( + I0 => \FSM_onehot_fsm[4]_i_11_n_0\, + I1 => converge_cnt(12), + I2 => converge_cnt(20), + I3 => converge_cnt(0), + I4 => converge_cnt(4), + I5 => \FSM_onehot_fsm[4]_i_12_n_0\, + O => \FSM_onehot_fsm[4]_i_8_n_0\ + ); +\FSM_onehot_fsm[4]_i_9\: unisim.vcomponents.LUT4 + generic map( + INIT => X"FFDF" + ) + port map ( + I0 => converge_cnt(15), + I1 => converge_cnt(13), + I2 => converge_cnt(14), + I3 => converge_cnt(12), + O => \FSM_onehot_fsm[4]_i_9_n_0\ + ); +\FSM_onehot_fsm_reg[1]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[1]_i_1__1_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[1]\, + S => RST_CPLLRESET + ); +\FSM_onehot_fsm_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[2]_i_1__1_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[3]_i_1__1_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm[4]_i_1__1_n_0\, + Q => \FSM_onehot_fsm_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_rx[2]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"40FF4040" + ) + port map ( + I0 => \out\(1), + I1 => Q(0), + I2 => \out\(0), + I3 => preset_done, + I4 => Q(1), + O => D(0) + ); +\FSM_onehot_fsm_rx[5]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"F444444444444444" + ) + port map ( + I0 => rxeqscan_new_txcoeff_done, + I1 => Q(3), + I2 => \FSM_onehot_fsm_rx_reg[5]\(2), + I3 => \FSM_onehot_fsm_rx_reg[5]\(0), + I4 => \FSM_onehot_fsm_rx_reg[5]\(1), + I5 => Q(2), + O => D(1) + ); +\FSM_onehot_fsm_rx[6]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFFE0E0E0" + ) + port map ( + I0 => \out\(1), + I1 => \out\(0), + I2 => Q(4), + I3 => preset_done, + I4 => Q(1), + I5 => \FSM_onehot_fsm_rx[6]_i_2_n_0\, + O => D(2) + ); +\FSM_onehot_fsm_rx[6]_i_2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => rxeqscan_new_txcoeff_done, + I1 => Q(3), + O => \FSM_onehot_fsm_rx[6]_i_2_n_0\ + ); +adapt_done_cnt_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"000A0A0AF0F0F8F0" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[4]\, + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + I5 => adapt_done_cnt_i_2_n_0, + O => adapt_done_cnt_i_1_n_0 + ); +adapt_done_cnt_i_2: unisim.vcomponents.LUT5 + generic map( + INIT => X"00FF0101" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[3]\, + I1 => \FSM_onehot_fsm_reg_n_0_[2]\, + I2 => \FSM_onehot_fsm_reg_n_0_[1]\, + I3 => new_txcoeff_req_reg2, + I4 => \FSM_onehot_fsm_reg_n_0_[4]\, + O => adapt_done_cnt_i_2_n_0 + ); +adapt_done_cnt_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => adapt_done_cnt_i_1_n_0, + Q => adapt_done_cnt_reg_n_0, + R => RST_CPLLRESET + ); +adapt_done_i_1: unisim.vcomponents.LUT5 + generic map( + INIT => X"F8000000" + ) + port map ( + I0 => \out\(1), + I1 => \out\(0), + I2 => adapt_done_cnt_reg_n_0, + I3 => new_txcoeff_req_reg2, + I4 => \FSM_onehot_fsm_reg_n_0_[4]\, + O => adapt_done + ); +adapt_done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => adapt_done, + Q => rxeqscan_adapt_done, + R => RST_CPLLRESET + ); +\converge_cnt[0]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"44444044" + ) + port map ( + I0 => converge_cnt(0), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(0) + ); +\converge_cnt[10]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(10), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(10) + ); +\converge_cnt[11]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(11), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(11) + ); +\converge_cnt[12]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(12), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(12) + ); +\converge_cnt[13]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(13), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(13) + ); +\converge_cnt[14]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(14), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(14) + ); +\converge_cnt[15]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(15), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(15) + ); +\converge_cnt[16]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(16), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(16) + ); +\converge_cnt[17]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(17), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(17) + ); +\converge_cnt[18]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(18), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(18) + ); +\converge_cnt[19]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(19), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(19) + ); +\converge_cnt[1]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(1), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(1) + ); +\converge_cnt[20]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(20), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(20) + ); +\converge_cnt[21]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(21), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(21) + ); +\converge_cnt[2]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(2), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(2) + ); +\converge_cnt[3]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(3), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(3) + ); +\converge_cnt[4]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(4), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(4) + ); +\converge_cnt[5]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(5), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(5) + ); +\converge_cnt[6]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(6), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(6) + ); +\converge_cnt[7]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(7), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(7) + ); +\converge_cnt[8]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(8), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(8) + ); +\converge_cnt[9]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"88888088" + ) + port map ( + I0 => converge_cnt0(9), + I1 => \FSM_onehot_fsm_reg_n_0_[3]\, + I2 => adapt_done_cnt_reg_n_0, + I3 => \out\(1), + I4 => \out\(0), + O => converge_cnt_0(9) + ); +\converge_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(0), + Q => converge_cnt(0), + R => RST_CPLLRESET + ); +\converge_cnt_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(10), + Q => converge_cnt(10), + R => RST_CPLLRESET + ); +\converge_cnt_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(11), + Q => converge_cnt(11), + R => RST_CPLLRESET + ); +\converge_cnt_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(12), + Q => converge_cnt(12), + R => RST_CPLLRESET + ); +\converge_cnt_reg[12]_i_2\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[8]_i_2_n_0\, + CO(3) => \converge_cnt_reg[12]_i_2_n_0\, + CO(2) => \converge_cnt_reg[12]_i_2_n_1\, + CO(1) => \converge_cnt_reg[12]_i_2_n_2\, + CO(0) => \converge_cnt_reg[12]_i_2_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 0) => converge_cnt0(12 downto 9), + S(3 downto 0) => converge_cnt(12 downto 9) + ); +\converge_cnt_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(13), + Q => converge_cnt(13), + R => RST_CPLLRESET + ); +\converge_cnt_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(14), + Q => converge_cnt(14), + R => RST_CPLLRESET + ); +\converge_cnt_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(15), + Q => converge_cnt(15), + R => RST_CPLLRESET + ); +\converge_cnt_reg[16]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(16), + Q => converge_cnt(16), + R => RST_CPLLRESET + ); +\converge_cnt_reg[16]_i_2\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[12]_i_2_n_0\, + CO(3) => \converge_cnt_reg[16]_i_2_n_0\, + CO(2) => \converge_cnt_reg[16]_i_2_n_1\, + CO(1) => \converge_cnt_reg[16]_i_2_n_2\, + CO(0) => \converge_cnt_reg[16]_i_2_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 0) => converge_cnt0(16 downto 13), + S(3 downto 0) => converge_cnt(16 downto 13) + ); +\converge_cnt_reg[17]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(17), + Q => converge_cnt(17), + R => RST_CPLLRESET + ); +\converge_cnt_reg[18]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(18), + Q => converge_cnt(18), + R => RST_CPLLRESET + ); +\converge_cnt_reg[19]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(19), + Q => converge_cnt(19), + R => RST_CPLLRESET + ); +\converge_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(1), + Q => converge_cnt(1), + R => RST_CPLLRESET + ); +\converge_cnt_reg[20]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(20), + Q => converge_cnt(20), + R => RST_CPLLRESET + ); +\converge_cnt_reg[20]_i_2\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[16]_i_2_n_0\, + CO(3) => \converge_cnt_reg[20]_i_2_n_0\, + CO(2) => \converge_cnt_reg[20]_i_2_n_1\, + CO(1) => \converge_cnt_reg[20]_i_2_n_2\, + CO(0) => \converge_cnt_reg[20]_i_2_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 0) => converge_cnt0(20 downto 17), + S(3 downto 0) => converge_cnt(20 downto 17) + ); +\converge_cnt_reg[21]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(21), + Q => converge_cnt(21), + R => RST_CPLLRESET + ); +\converge_cnt_reg[21]_i_2\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[20]_i_2_n_0\, + CO(3 downto 0) => \NLW_converge_cnt_reg[21]_i_2_CO_UNCONNECTED\(3 downto 0), + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 1) => \NLW_converge_cnt_reg[21]_i_2_O_UNCONNECTED\(3 downto 1), + O(0) => converge_cnt0(21), + S(3 downto 1) => B"000", + S(0) => converge_cnt(21) + ); +\converge_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(2), + Q => converge_cnt(2), + R => RST_CPLLRESET + ); +\converge_cnt_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(3), + Q => converge_cnt(3), + R => RST_CPLLRESET + ); +\converge_cnt_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(4), + Q => converge_cnt(4), + R => RST_CPLLRESET + ); +\converge_cnt_reg[4]_i_2\: unisim.vcomponents.CARRY4 + port map ( + CI => '0', + CO(3) => \converge_cnt_reg[4]_i_2_n_0\, + CO(2) => \converge_cnt_reg[4]_i_2_n_1\, + CO(1) => \converge_cnt_reg[4]_i_2_n_2\, + CO(0) => \converge_cnt_reg[4]_i_2_n_3\, + CYINIT => converge_cnt(0), + DI(3 downto 0) => B"0000", + O(3 downto 0) => converge_cnt0(4 downto 1), + S(3 downto 0) => converge_cnt(4 downto 1) + ); +\converge_cnt_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(5), + Q => converge_cnt(5), + R => RST_CPLLRESET + ); +\converge_cnt_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(6), + Q => converge_cnt(6), + R => RST_CPLLRESET + ); +\converge_cnt_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(7), + Q => converge_cnt(7), + R => RST_CPLLRESET + ); +\converge_cnt_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(8), + Q => converge_cnt(8), + R => RST_CPLLRESET + ); +\converge_cnt_reg[8]_i_2\: unisim.vcomponents.CARRY4 + port map ( + CI => \converge_cnt_reg[4]_i_2_n_0\, + CO(3) => \converge_cnt_reg[8]_i_2_n_0\, + CO(2) => \converge_cnt_reg[8]_i_2_n_1\, + CO(1) => \converge_cnt_reg[8]_i_2_n_2\, + CO(0) => \converge_cnt_reg[8]_i_2_n_3\, + CYINIT => '0', + DI(3 downto 0) => B"0000", + O(3 downto 0) => converge_cnt0(8 downto 5), + S(3 downto 0) => converge_cnt(8 downto 5) + ); +\converge_cnt_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => converge_cnt_0(9), + Q => converge_cnt(9), + R => RST_CPLLRESET + ); +\fs_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fs_reg1_reg[5]_0\(0), + Q => fs_reg1(0), + R => RST_CPLLRESET + ); +\fs_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fs_reg1_reg[5]_0\(1), + Q => fs_reg1(1), + R => RST_CPLLRESET + ); +\fs_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fs_reg1_reg[5]_0\(2), + Q => fs_reg1(2), + R => RST_CPLLRESET + ); +\fs_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fs_reg1_reg[5]_0\(3), + Q => fs_reg1(3), + R => RST_CPLLRESET + ); +\fs_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fs_reg1_reg[5]_0\(4), + Q => fs_reg1(4), + R => RST_CPLLRESET + ); +\fs_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fs_reg1_reg[5]_0\(5), + Q => fs_reg1(5), + R => RST_CPLLRESET + ); +\fs_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => fs_reg1(0), + Q => fs_reg2(0), + R => RST_CPLLRESET + ); +\fs_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => fs_reg1(1), + Q => fs_reg2(1), + R => RST_CPLLRESET + ); +\fs_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => fs_reg1(2), + Q => fs_reg2(2), + R => RST_CPLLRESET + ); +\fs_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => fs_reg1(3), + Q => fs_reg2(3), + R => RST_CPLLRESET + ); +\fs_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => fs_reg1(4), + Q => fs_reg2(4), + R => RST_CPLLRESET + ); +\fs_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => fs_reg1(5), + Q => fs_reg2(5), + R => RST_CPLLRESET + ); +\lf_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \lf_reg1_reg[5]_0\(0), + Q => lf_reg1(0), + R => RST_CPLLRESET + ); +\lf_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \lf_reg1_reg[5]_0\(1), + Q => lf_reg1(1), + R => RST_CPLLRESET + ); +\lf_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \lf_reg1_reg[5]_0\(2), + Q => lf_reg1(2), + R => RST_CPLLRESET + ); +\lf_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \lf_reg1_reg[5]_0\(3), + Q => lf_reg1(3), + R => RST_CPLLRESET + ); +\lf_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \lf_reg1_reg[5]_0\(4), + Q => lf_reg1(4), + R => RST_CPLLRESET + ); +\lf_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \lf_reg1_reg[5]_0\(5), + Q => lf_reg1(5), + R => RST_CPLLRESET + ); +\lf_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => lf_reg1(0), + Q => lf_reg2(0), + R => RST_CPLLRESET + ); +\lf_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => lf_reg1(1), + Q => lf_reg2(1), + R => RST_CPLLRESET + ); +\lf_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => lf_reg1(2), + Q => lf_reg2(2), + R => RST_CPLLRESET + ); +\lf_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => lf_reg1(3), + Q => lf_reg2(3), + R => RST_CPLLRESET + ); +\lf_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => lf_reg1(4), + Q => lf_reg2(4), + R => RST_CPLLRESET + ); +\lf_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => lf_reg1(5), + Q => lf_reg2(5), + R => RST_CPLLRESET + ); +new_txcoeff_done_i_1: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[4]\, + I1 => new_txcoeff_req_reg2, + O => new_txcoeff_done + ); +new_txcoeff_done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => new_txcoeff_done, + Q => rxeqscan_new_txcoeff_done, + R => RST_CPLLRESET + ); +new_txcoeff_req_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => new_txcoeff_req_reg1_reg_0, + Q => new_txcoeff_req_reg1, + R => RST_CPLLRESET + ); +new_txcoeff_req_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => new_txcoeff_req_reg1, + Q => new_txcoeff_req_reg2, + R => RST_CPLLRESET + ); +preset_done_i_1: unisim.vcomponents.LUT3 + generic map( + INIT => X"EA" + ) + port map ( + I0 => \FSM_onehot_fsm_reg_n_0_[2]\, + I1 => \FSM_onehot_fsm_reg_n_0_[1]\, + I2 => preset_valid_reg2, + O => preset_done_1 + ); +preset_done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => preset_done_1, + Q => preset_done, + R => RST_CPLLRESET + ); +\preset_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \preset_reg1_reg[2]_0\(0), + Q => preset_reg1(0), + R => RST_CPLLRESET + ); +\preset_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \preset_reg1_reg[2]_0\(1), + Q => preset_reg1(1), + R => RST_CPLLRESET + ); +\preset_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \preset_reg1_reg[2]_0\(2), + Q => preset_reg1(2), + R => RST_CPLLRESET + ); +\preset_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => preset_reg1(0), + Q => preset_reg2(0), + R => RST_CPLLRESET + ); +\preset_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => preset_reg1(1), + Q => preset_reg2(1), + R => RST_CPLLRESET + ); +\preset_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => preset_reg1(2), + Q => preset_reg2(2), + R => RST_CPLLRESET + ); +preset_valid_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_preset_valid, + Q => preset_valid_reg1, + R => RST_CPLLRESET + ); +preset_valid_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => preset_valid_reg1, + Q => preset_valid_reg2, + R => RST_CPLLRESET + ); +rxeq_adapt_done_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"A800FFFFA8000000" + ) + port map ( + I0 => rxeqscan_new_txcoeff_done, + I1 => rxeq_adapt_done_reg_reg_1, + I2 => rxeqscan_adapt_done, + I3 => Q(3), + I4 => rxeq_adapt_done_reg, + I5 => USER_RXEQ_ADAPT_DONE, + O => new_txcoeff_done_reg_0 + ); +rxeq_adapt_done_reg_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"FF00FF33AA00A800" + ) + port map ( + I0 => rxeqscan_adapt_done, + I1 => rxeq_adapt_done_reg_reg, + I2 => rxeqscan_new_txcoeff_done, + I3 => Q(3), + I4 => rxeq_adapt_done_reg_reg_0, + I5 => rxeq_adapt_done_reg_reg_1, + O => adapt_done_reg_0 + ); +rxeq_new_txcoeff_req_i_1: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => Q(3), + I1 => rxeqscan_new_txcoeff_done, + O => rxeq_new_txcoeff_req + ); +\txcoeff_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(0), + Q => txcoeff_reg1(0), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(10), + Q => txcoeff_reg1(10), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(11), + Q => txcoeff_reg1(11), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(12), + Q => txcoeff_reg1(12), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(13), + Q => txcoeff_reg1(13), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(14), + Q => txcoeff_reg1(14), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(15), + Q => txcoeff_reg1(15), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[16]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(16), + Q => txcoeff_reg1(16), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[17]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(17), + Q => txcoeff_reg1(17), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(1), + Q => txcoeff_reg1(1), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(2), + Q => txcoeff_reg1(2), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(3), + Q => txcoeff_reg1(3), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(4), + Q => txcoeff_reg1(4), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(5), + Q => txcoeff_reg1(5), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(6), + Q => txcoeff_reg1(6), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(7), + Q => txcoeff_reg1(7), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(8), + Q => txcoeff_reg1(8), + R => RST_CPLLRESET + ); +\txcoeff_reg1_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txcoeff_reg1_reg[17]_0\(9), + Q => txcoeff_reg1(9), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(0), + Q => txcoeff_reg2(0), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(10), + Q => txcoeff_reg2(10), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(11), + Q => txcoeff_reg2(11), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(12), + Q => txcoeff_reg2(12), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(13), + Q => txcoeff_reg2(13), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(14), + Q => txcoeff_reg2(14), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(15), + Q => txcoeff_reg2(15), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[16]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(16), + Q => txcoeff_reg2(16), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[17]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(17), + Q => txcoeff_reg2(17), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(1), + Q => txcoeff_reg2(1), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(2), + Q => txcoeff_reg2(2), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(3), + Q => txcoeff_reg2(3), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(4), + Q => txcoeff_reg2(4), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(5), + Q => txcoeff_reg2(5), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(6), + Q => txcoeff_reg2(6), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(7), + Q => txcoeff_reg2(7), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(8), + Q => txcoeff_reg2(8), + R => RST_CPLLRESET + ); +\txcoeff_reg2_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txcoeff_reg1(9), + Q => txcoeff_reg2(9), + R => RST_CPLLRESET + ); +\txpreset_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txpreset_reg1_reg[3]_0\(0), + Q => txpreset_reg1(0), + R => RST_CPLLRESET + ); +\txpreset_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txpreset_reg1_reg[3]_0\(1), + Q => txpreset_reg1(1), + R => RST_CPLLRESET + ); +\txpreset_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txpreset_reg1_reg[3]_0\(2), + Q => txpreset_reg1(2), + R => RST_CPLLRESET + ); +\txpreset_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txpreset_reg1_reg[3]_0\(3), + Q => txpreset_reg1(3), + R => RST_CPLLRESET + ); +\txpreset_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txpreset_reg1(0), + Q => txpreset_reg2(0), + R => RST_CPLLRESET + ); +\txpreset_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txpreset_reg1(1), + Q => txpreset_reg2(1), + R => RST_CPLLRESET + ); +\txpreset_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txpreset_reg1(2), + Q => txpreset_reg2(2), + R => RST_CPLLRESET + ); +\txpreset_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txpreset_reg1(3), + Q => txpreset_reg2(3), + R => RST_CPLLRESET + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_xpm_cdc_single is + port ( + src_clk : in STD_LOGIC; + src_in : in STD_LOGIC; + dest_clk : in STD_LOGIC; + dest_out : out STD_LOGIC + ); + attribute DEST_SYNC_FF : integer; + attribute DEST_SYNC_FF of pcie_7x_0_xpm_cdc_single : entity is 2; + attribute INIT_SYNC_FF : integer; + attribute INIT_SYNC_FF of pcie_7x_0_xpm_cdc_single : entity is 0; + attribute SIM_ASSERT_CHK : integer; + attribute SIM_ASSERT_CHK of pcie_7x_0_xpm_cdc_single : entity is 0; + attribute SRC_INPUT_REG : integer; + attribute SRC_INPUT_REG of pcie_7x_0_xpm_cdc_single : entity is 0; + attribute VERSION : integer; + attribute VERSION of pcie_7x_0_xpm_cdc_single : entity is 0; + attribute XPM_MODULE : string; + attribute XPM_MODULE of pcie_7x_0_xpm_cdc_single : entity is "TRUE"; + attribute keep_hierarchy : string; + attribute keep_hierarchy of pcie_7x_0_xpm_cdc_single : entity is "true"; + attribute xpm_cdc : string; + attribute xpm_cdc of pcie_7x_0_xpm_cdc_single : entity is "SINGLE"; +end pcie_7x_0_xpm_cdc_single; + +architecture STRUCTURE of pcie_7x_0_xpm_cdc_single is + signal syncstages_ff : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute RTL_KEEP : string; + attribute RTL_KEEP of syncstages_ff : signal is "true"; + attribute async_reg : string; + attribute async_reg of syncstages_ff : signal is "true"; + attribute xpm_cdc of syncstages_ff : signal is "SINGLE"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of \syncstages_ff_reg[0]\ : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of \syncstages_ff_reg[0]\ : label is "true"; + attribute XPM_CDC of \syncstages_ff_reg[0]\ : label is "SINGLE"; + attribute ASYNC_REG_boolean of \syncstages_ff_reg[1]\ : label is std.standard.true; + attribute KEEP of \syncstages_ff_reg[1]\ : label is "true"; + attribute XPM_CDC of \syncstages_ff_reg[1]\ : label is "SINGLE"; +begin + dest_out <= syncstages_ff(1); +\syncstages_ff_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => dest_clk, + CE => '1', + D => src_in, + Q => syncstages_ff(0), + R => '0' + ); +\syncstages_ff_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => dest_clk, + CE => '1', + D => syncstages_ff(0), + Q => syncstages_ff(1), + R => '0' + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity \pcie_7x_0_xpm_cdc_single__2\ is + port ( + src_clk : in STD_LOGIC; + src_in : in STD_LOGIC; + dest_clk : in STD_LOGIC; + dest_out : out STD_LOGIC + ); + attribute DEST_SYNC_FF : integer; + attribute DEST_SYNC_FF of \pcie_7x_0_xpm_cdc_single__2\ : entity is 2; + attribute INIT_SYNC_FF : integer; + attribute INIT_SYNC_FF of \pcie_7x_0_xpm_cdc_single__2\ : entity is 0; + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of \pcie_7x_0_xpm_cdc_single__2\ : entity is "xpm_cdc_single"; + attribute SIM_ASSERT_CHK : integer; + attribute SIM_ASSERT_CHK of \pcie_7x_0_xpm_cdc_single__2\ : entity is 0; + attribute SRC_INPUT_REG : integer; + attribute SRC_INPUT_REG of \pcie_7x_0_xpm_cdc_single__2\ : entity is 0; + attribute VERSION : integer; + attribute VERSION of \pcie_7x_0_xpm_cdc_single__2\ : entity is 0; + attribute XPM_MODULE : string; + attribute XPM_MODULE of \pcie_7x_0_xpm_cdc_single__2\ : entity is "TRUE"; + attribute keep_hierarchy : string; + attribute keep_hierarchy of \pcie_7x_0_xpm_cdc_single__2\ : entity is "true"; + attribute xpm_cdc : string; + attribute xpm_cdc of \pcie_7x_0_xpm_cdc_single__2\ : entity is "SINGLE"; +end \pcie_7x_0_xpm_cdc_single__2\; + +architecture STRUCTURE of \pcie_7x_0_xpm_cdc_single__2\ is + signal syncstages_ff : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute RTL_KEEP : string; + attribute RTL_KEEP of syncstages_ff : signal is "true"; + attribute async_reg : string; + attribute async_reg of syncstages_ff : signal is "true"; + attribute xpm_cdc of syncstages_ff : signal is "SINGLE"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of \syncstages_ff_reg[0]\ : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of \syncstages_ff_reg[0]\ : label is "true"; + attribute XPM_CDC of \syncstages_ff_reg[0]\ : label is "SINGLE"; + attribute ASYNC_REG_boolean of \syncstages_ff_reg[1]\ : label is std.standard.true; + attribute KEEP of \syncstages_ff_reg[1]\ : label is "true"; + attribute XPM_CDC of \syncstages_ff_reg[1]\ : label is "SINGLE"; +begin + dest_out <= syncstages_ff(1); +\syncstages_ff_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => dest_clk, + CE => '1', + D => src_in, + Q => syncstages_ff(0), + R => '0' + ); +\syncstages_ff_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => dest_clk, + CE => '1', + D => syncstages_ff(0), + Q => syncstages_ff(1), + R => '0' + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_axi_basic_rx is + port ( + E : out STD_LOGIC_VECTOR ( 0 to 0 ); + trn_rsrc_dsc_d : out STD_LOGIC; + m_axis_rx_tvalid_reg : out STD_LOGIC; + m_axis_rx_tkeep : out STD_LOGIC_VECTOR ( 0 to 0 ); + m_axis_rx_tlast : out STD_LOGIC; + trn_in_packet : out STD_LOGIC; + reg_dsc_detect_reg : out STD_LOGIC; + m_axis_rx_tuser : out STD_LOGIC_VECTOR ( 12 downto 0 ); + Q : out STD_LOGIC_VECTOR ( 63 downto 0 ); + \trn_rbar_hit_prev_reg[0]\ : in STD_LOGIC; + pipe_userclk2_in : in STD_LOGIC; + trn_rrem : in STD_LOGIC_VECTOR ( 0 to 0 ); + trn_rsrc_dsc : in STD_LOGIC; + rsrc_rdy_filtered : in STD_LOGIC; + trn_reof : in STD_LOGIC; + trn_rsrc_dsc_prev0 : in STD_LOGIC; + trn_rsof : in STD_LOGIC; + trn_recrc_err : in STD_LOGIC; + trn_rerrfwd : in STD_LOGIC; + trn_in_packet_reg : in STD_LOGIC; + m_axis_rx_tready : in STD_LOGIC; + dsc_detect : in STD_LOGIC; + trn_rd : in STD_LOGIC_VECTOR ( 63 downto 0 ); + trn_rbar_hit : in STD_LOGIC_VECTOR ( 6 downto 0 ) + ); +end pcie_7x_0_pcie_7x_0_axi_basic_rx; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_axi_basic_rx is + signal \^q\ : STD_LOGIC_VECTOR ( 63 downto 0 ); + signal \^m_axis_rx_tuser\ : STD_LOGIC_VECTOR ( 12 downto 0 ); + signal \^m_axis_rx_tvalid_reg\ : STD_LOGIC; + signal new_pkt_len : STD_LOGIC_VECTOR ( 10 downto 0 ); + signal null_mux_sel : STD_LOGIC; + signal rx_null_gen_inst_n_0 : STD_LOGIC; + signal rx_null_gen_inst_n_1 : STD_LOGIC; + signal rx_null_gen_inst_n_2 : STD_LOGIC; + signal rx_null_gen_inst_n_3 : STD_LOGIC; + signal rx_null_gen_inst_n_4 : STD_LOGIC; + signal rx_null_gen_inst_n_5 : STD_LOGIC; + signal rx_null_gen_inst_n_6 : STD_LOGIC; + signal rx_null_gen_inst_n_7 : STD_LOGIC; + signal rx_null_gen_inst_n_8 : STD_LOGIC; + signal rx_pipeline_inst_n_73 : STD_LOGIC; + signal rx_pipeline_inst_n_74 : STD_LOGIC; + signal rx_pipeline_inst_n_8 : STD_LOGIC; +begin + Q(63 downto 0) <= \^q\(63 downto 0); + m_axis_rx_tuser(12 downto 0) <= \^m_axis_rx_tuser\(12 downto 0); + m_axis_rx_tvalid_reg <= \^m_axis_rx_tvalid_reg\; +rx_null_gen_inst: entity work.pcie_7x_0_pcie_7x_0_axi_basic_rx_null_gen + port map ( + D(1) => rx_null_gen_inst_n_0, + D(0) => rx_null_gen_inst_n_1, + Q(4 downto 3) => \^q\(30 downto 29), + Q(2) => \^q\(15), + Q(1 downto 0) => \^q\(1 downto 0), + S(1) => rx_null_gen_inst_n_7, + S(0) => rx_null_gen_inst_n_8, + cur_state_reg_0 => \trn_rbar_hit_prev_reg[0]\, + cur_state_reg_1 => \^m_axis_rx_tvalid_reg\, + m_axis_rx_tready => m_axis_rx_tready, + m_axis_rx_tuser(0) => \^m_axis_rx_tuser\(12), + \m_axis_rx_tuser_reg[19]\ => rx_pipeline_inst_n_74, + \m_axis_rx_tuser_reg[21]\ => rx_pipeline_inst_n_73, + new_pkt_len(10 downto 0) => new_pkt_len(10 downto 0), + null_mux_sel => null_mux_sel, + null_mux_sel_reg => rx_null_gen_inst_n_5, + null_mux_sel_reg_0 => rx_null_gen_inst_n_6, + null_mux_sel_reg_1 => rx_pipeline_inst_n_8, + pipe_userclk2_in => pipe_userclk2_in, + \reg_pkt_len_counter_reg[0]_0\ => rx_null_gen_inst_n_4, + \reg_pkt_len_counter_reg[3]_0\ => rx_null_gen_inst_n_3, + \reg_tkeep[7]_i_7_0\ => rx_null_gen_inst_n_2 + ); +rx_pipeline_inst: entity work.pcie_7x_0_pcie_7x_0_axi_basic_rx_pipeline + port map ( + D(1) => rx_null_gen_inst_n_0, + D(0) => rx_null_gen_inst_n_1, + E(0) => E(0), + Q(63 downto 0) => \^q\(63 downto 0), + S(1) => rx_null_gen_inst_n_7, + S(0) => rx_null_gen_inst_n_8, + data_prev_reg_0 => rx_pipeline_inst_n_73, + data_prev_reg_1 => rx_pipeline_inst_n_74, + dsc_detect => dsc_detect, + m_axis_rx_tkeep(0) => m_axis_rx_tkeep(0), + m_axis_rx_tlast => m_axis_rx_tlast, + m_axis_rx_tready => m_axis_rx_tready, + m_axis_rx_tuser(12 downto 0) => \^m_axis_rx_tuser\(12 downto 0), + m_axis_rx_tvalid_reg_0 => \^m_axis_rx_tvalid_reg\, + new_pkt_len(10 downto 0) => new_pkt_len(10 downto 0), + null_mux_sel => null_mux_sel, + null_mux_sel_reg_0 => rx_null_gen_inst_n_5, + pipe_userclk2_in => pipe_userclk2_in, + reg_dsc_detect_reg_0 => reg_dsc_detect_reg, + \reg_tkeep_reg[7]_0\ => rx_null_gen_inst_n_3, + reg_tlast_reg_0 => rx_null_gen_inst_n_6, + rsrc_rdy_filtered => rsrc_rdy_filtered, + trn_in_packet => trn_in_packet, + trn_in_packet_reg_0 => trn_in_packet_reg, + trn_rbar_hit(6 downto 0) => trn_rbar_hit(6 downto 0), + \trn_rbar_hit_prev_reg[0]_0\ => \trn_rbar_hit_prev_reg[0]\, + trn_rd(63 downto 0) => trn_rd(63 downto 0), + trn_rdst_rdy_reg_0 => rx_null_gen_inst_n_2, + trn_rdst_rdy_reg_1 => rx_null_gen_inst_n_4, + trn_recrc_err => trn_recrc_err, + trn_reof => trn_reof, + trn_rerrfwd => trn_rerrfwd, + trn_rrem(0) => trn_rrem(0), + trn_rsof => trn_rsof, + trn_rsrc_dsc => trn_rsrc_dsc, + trn_rsrc_dsc_d => trn_rsrc_dsc_d, + trn_rsrc_dsc_prev0 => trn_rsrc_dsc_prev0, + user_reset_out_reg => rx_pipeline_inst_n_8 + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_axi_basic_tx is + port ( + reg_tcfg_gnt : out STD_LOGIC; + tready_thrtl_reg : out STD_LOGIC; + trn_teof : out STD_LOGIC; + trn_tsrc_rdy : out STD_LOGIC; + trn_trem : out STD_LOGIC_VECTOR ( 0 to 0 ); + ppm_L1_thrtl : out STD_LOGIC; + lnk_up_thrtl : out STD_LOGIC; + ppm_L1_trig : out STD_LOGIC; + cfg_pm_turnoff_ok_n : out STD_LOGIC; + trn_tcfg_gnt : out STD_LOGIC; + trn_tsof : out STD_LOGIC; + \throttle_ctl_pipeline.reg_tdata_reg[63]\ : out STD_LOGIC_VECTOR ( 63 downto 0 ); + \throttle_ctl_pipeline.reg_tuser_reg[3]\ : out STD_LOGIC_VECTOR ( 3 downto 0 ); + \throttle_ctl_pipeline.reg_tkeep_reg[7]\ : in STD_LOGIC; + tx_cfg_gnt : in STD_LOGIC; + pipe_userclk2_in : in STD_LOGIC; + trn_tcfg_req : in STD_LOGIC; + trn_tdst_rdy : in STD_LOGIC; + tbuf_av_min_trig : in STD_LOGIC; + cfg_turnoff_ok : in STD_LOGIC; + s_axis_tx_tlast : in STD_LOGIC; + s_axis_tx_tvalid : in STD_LOGIC; + s_axis_tx_tkeep : in STD_LOGIC_VECTOR ( 0 to 0 ); + ppm_L1_thrtl_reg : in STD_LOGIC; + lnk_up_thrtl_reg : in STD_LOGIC; + \out\ : in STD_LOGIC; + tcfg_req_trig : in STD_LOGIC; + tready_thrtl_i_5 : in STD_LOGIC; + cfg_pcie_link_state : in STD_LOGIC_VECTOR ( 2 downto 0 ); + s_axis_tx_tdata : in STD_LOGIC_VECTOR ( 63 downto 0 ); + s_axis_tx_tuser : in STD_LOGIC_VECTOR ( 3 downto 0 ); + trn_tbuf_av : in STD_LOGIC_VECTOR ( 5 downto 0 ); + cfg_to_turnoff : in STD_LOGIC + ); +end pcie_7x_0_pcie_7x_0_axi_basic_tx; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_axi_basic_tx is + signal axi_in_packet : STD_LOGIC; + signal reg_disable_trn : STD_LOGIC; + signal reg_tsrc_rdy0 : STD_LOGIC; + signal \thrtl_ctl_enabled.tx_thrl_ctl_inst_n_4\ : STD_LOGIC; + signal \^tready_thrtl_reg\ : STD_LOGIC; +begin + tready_thrtl_reg <= \^tready_thrtl_reg\; +\thrtl_ctl_enabled.tx_thrl_ctl_inst\: entity work.pcie_7x_0_pcie_7x_0_axi_basic_tx_thrtl_ctl + port map ( + axi_in_packet => axi_in_packet, + cfg_pcie_link_state(2 downto 0) => cfg_pcie_link_state(2 downto 0), + cfg_pm_turnoff_ok_n => cfg_pm_turnoff_ok_n, + cfg_to_turnoff => cfg_to_turnoff, + cfg_turnoff_ok => cfg_turnoff_ok, + lnk_up_thrtl => lnk_up_thrtl, + lnk_up_thrtl_reg_0 => lnk_up_thrtl_reg, + \out\ => \out\, + pipe_userclk2_in => pipe_userclk2_in, + ppm_L1_thrtl => ppm_L1_thrtl, + ppm_L1_thrtl_reg_0 => ppm_L1_thrtl_reg, + ppm_L1_trig => ppm_L1_trig, + reg_disable_trn => reg_disable_trn, + reg_tcfg_gnt => reg_tcfg_gnt, + reg_tsrc_rdy0 => reg_tsrc_rdy0, + s_axis_tx_tdata(3 downto 2) => s_axis_tx_tdata(30 downto 29), + s_axis_tx_tdata(1) => s_axis_tx_tdata(15), + s_axis_tx_tdata(0) => s_axis_tx_tdata(0), + s_axis_tx_tlast => s_axis_tx_tlast, + s_axis_tx_tlast_0 => \thrtl_ctl_enabled.tx_thrl_ctl_inst_n_4\, + s_axis_tx_tuser(0) => s_axis_tx_tuser(0), + s_axis_tx_tvalid => s_axis_tx_tvalid, + tbuf_av_min_trig => tbuf_av_min_trig, + \tbuf_gap_cnt_reg[0]_0\ => \throttle_ctl_pipeline.reg_tkeep_reg[7]\, + tcfg_req_trig => tcfg_req_trig, + tready_thrtl_i_5_0 => tready_thrtl_i_5, + tready_thrtl_reg_0 => \^tready_thrtl_reg\, + trn_tbuf_av(5 downto 0) => trn_tbuf_av(5 downto 0), + trn_tcfg_gnt => trn_tcfg_gnt, + trn_tcfg_req => trn_tcfg_req, + trn_tdst_rdy => trn_tdst_rdy, + tx_cfg_gnt => tx_cfg_gnt + ); +tx_pipeline_inst: entity work.pcie_7x_0_pcie_7x_0_axi_basic_tx_pipeline + port map ( + axi_in_packet => axi_in_packet, + axi_in_packet_reg_0 => \thrtl_ctl_enabled.tx_thrl_ctl_inst_n_4\, + \out\ => \out\, + pipe_userclk2_in => pipe_userclk2_in, + reg_disable_trn => reg_disable_trn, + reg_tsrc_rdy0 => reg_tsrc_rdy0, + s_axis_tx_tdata(63 downto 0) => s_axis_tx_tdata(63 downto 0), + s_axis_tx_tkeep(0) => s_axis_tx_tkeep(0), + s_axis_tx_tlast => s_axis_tx_tlast, + s_axis_tx_tuser(3 downto 0) => s_axis_tx_tuser(3 downto 0), + s_axis_tx_tvalid => s_axis_tx_tvalid, + \throttle_ctl_pipeline.reg_tdata_reg[63]_0\(63 downto 0) => \throttle_ctl_pipeline.reg_tdata_reg[63]\(63 downto 0), + \throttle_ctl_pipeline.reg_tkeep_reg[7]_0\ => \throttle_ctl_pipeline.reg_tkeep_reg[7]\, + \throttle_ctl_pipeline.reg_tuser_reg[3]_0\(3 downto 0) => \throttle_ctl_pipeline.reg_tuser_reg[3]\(3 downto 0), + \thrtl_ctl_trn_flush.reg_disable_trn_reg_0\ => \^tready_thrtl_reg\, + trn_tdst_rdy => trn_tdst_rdy, + trn_teof => trn_teof, + trn_trem(0) => trn_trem(0), + trn_tsof => trn_tsof, + trn_tsrc_rdy => trn_tsrc_rdy + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_gt_common is + port ( + QPLL_QPLLLOCK : out STD_LOGIC; + QPLL_QPLLOUTCLK : out STD_LOGIC; + QPLL_QPLLOUTREFCLK : out STD_LOGIC; + QPLL_DRP_DONE : out STD_LOGIC; + RST_DCLK_RESET : in STD_LOGIC; + pipe_dclk_in : in STD_LOGIC; + sys_clk : in STD_LOGIC; + QPLL_QPLLPD : in STD_LOGIC; + QPLL_QPLLRESET : in STD_LOGIC; + QRST_DRP_START : in STD_LOGIC; + QPLL_DRP_GEN3 : in STD_LOGIC + ); +end pcie_7x_0_pcie_7x_0_gt_common; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_gt_common is + signal \^qpll_qplllock\ : STD_LOGIC; + signal qpll_drp_addr : STD_LOGIC_VECTOR ( 7 downto 0 ); + signal qpll_drp_di : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal qpll_drp_do : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal qpll_drp_en : STD_LOGIC; + signal qpll_drp_rdy : STD_LOGIC; + signal qpll_drp_we : STD_LOGIC; +begin + QPLL_QPLLLOCK <= \^qpll_qplllock\; +qpll_drp_i: entity work.pcie_7x_0_pcie_7x_0_qpll_drp + port map ( + D(15 downto 0) => qpll_drp_do(15 downto 0), + Q(4) => qpll_drp_addr(7), + Q(3) => qpll_drp_addr(5), + Q(2 downto 0) => qpll_drp_addr(2 downto 0), + QPLL_DRP_DONE => QPLL_DRP_DONE, + QPLL_DRP_GEN3 => QPLL_DRP_GEN3, + QPLL_QPLLLOCK => \^qpll_qplllock\, + QRST_DRP_START => QRST_DRP_START, + RST_DCLK_RESET => RST_DCLK_RESET, + \di_reg[15]_0\(15 downto 0) => qpll_drp_di(15 downto 0), + pipe_dclk_in => pipe_dclk_in, + qpll_drp_en => qpll_drp_en, + qpll_drp_rdy => qpll_drp_rdy, + qpll_drp_we => qpll_drp_we + ); +qpll_wrapper_i: entity work.pcie_7x_0_pcie_7x_0_qpll_wrapper + port map ( + D(15 downto 0) => qpll_drp_do(15 downto 0), + Q(4) => qpll_drp_addr(7), + Q(3) => qpll_drp_addr(5), + Q(2 downto 0) => qpll_drp_addr(2 downto 0), + QPLL_QPLLLOCK => \^qpll_qplllock\, + QPLL_QPLLOUTCLK => QPLL_QPLLOUTCLK, + QPLL_QPLLOUTREFCLK => QPLL_QPLLOUTREFCLK, + QPLL_QPLLPD => QPLL_QPLLPD, + QPLL_QPLLRESET => QPLL_QPLLRESET, + pipe_dclk_in => pipe_dclk_in, + qpll_drp_en => qpll_drp_en, + qpll_drp_rdy => qpll_drp_rdy, + qpll_drp_we => qpll_drp_we, + rdy_reg1_reg(15 downto 0) => qpll_drp_di(15 downto 0), + sys_clk => sys_clk + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_gt_wrapper is + port ( + cpllpd : out STD_LOGIC; + QRST_CPLLLOCK : out STD_LOGIC_VECTOR ( 0 to 0 ); + DRP_RDY : out STD_LOGIC; + pci_exp_txn : out STD_LOGIC_VECTOR ( 0 to 0 ); + pci_exp_txp : out STD_LOGIC_VECTOR ( 0 to 0 ); + RATE_PHYSTATUS : out STD_LOGIC; + gt_rxcdrlock_0 : out STD_LOGIC; + PIPE_RXCHANISALIGNED : out STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_dclk_in_0 : out STD_LOGIC; + gt_rx_elec_idle_wire_filter : out STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_rxoutclk_out : out STD_LOGIC_VECTOR ( 0 to 0 ); + SYNC_RXPHALIGNDONE_M : out STD_LOGIC; + RATE_RXRATEDONE : out STD_LOGIC; + USER_RXRESETDONE : out STD_LOGIC; + gt_rxvalid_0 : out STD_LOGIC; + pipe_dclk_in_1 : out STD_LOGIC; + pipe_txoutclk_out : out STD_LOGIC; + pipe_dclk_in_2 : out STD_LOGIC; + pipe_dclk_in_3 : out STD_LOGIC; + RATE_TXRATEDONE : out STD_LOGIC; + USER_TXRESETDONE : out STD_LOGIC; + DRP_DO : out STD_LOGIC_VECTOR ( 15 downto 0 ); + PIPE_RXSTATUS : out STD_LOGIC_VECTOR ( 2 downto 0 ); + RXCHBONDO : out STD_LOGIC_VECTOR ( 4 downto 0 ); + gt_rx_data_wire_filter : out STD_LOGIC_VECTOR ( 15 downto 0 ); + gt_rx_data_k_wire_filter : out STD_LOGIC_VECTOR ( 1 downto 0 ); + gt_cpllpdrefclk : in STD_LOGIC; + CPLLPD0 : in STD_LOGIC; + pipe_dclk_in : in STD_LOGIC; + \cplllock_reg1_reg[0]\ : in STD_LOGIC; + \cplllock_reg1_reg[0]_0\ : in STD_LOGIC; + sys_clk : in STD_LOGIC; + DRP_GTXRESET : in STD_LOGIC; + pci_exp_rxn : in STD_LOGIC_VECTOR ( 0 to 0 ); + pci_exp_rxp : in STD_LOGIC_VECTOR ( 0 to 0 ); + QPLL_QPLLOUTCLK : in STD_LOGIC; + QPLL_QPLLOUTREFCLK : in STD_LOGIC; + rxchbonden_0 : in STD_LOGIC; + \cplllock_reg1_reg[0]_1\ : in STD_LOGIC; + rate_txpmareset_0 : in STD_LOGIC; + PIPE_RXPOLARITY : in STD_LOGIC_VECTOR ( 0 to 0 ); + rst_userrdy : in STD_LOGIC; + pipe_rxusrclk_in : in STD_LOGIC; + pipe_tx_deemph_gt : in STD_LOGIC; + pipe_tx_rcvr_det_gt : in STD_LOGIC; + sync_txdlyen_0 : in STD_LOGIC; + SYNC_TXDLYSRESET : in STD_LOGIC; + PIPE_TXELECIDLE : in STD_LOGIC_VECTOR ( 0 to 0 ); + SYNC_TXPHALIGN : in STD_LOGIC; + SYNC_TXPHINIT : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + DRPDI : in STD_LOGIC_VECTOR ( 15 downto 0 ); + PIPE_POWERDOWN : in STD_LOGIC_VECTOR ( 1 downto 0 ); + RXSYSCLKSEL : in STD_LOGIC_VECTOR ( 0 to 0 ); + RXRATE : in STD_LOGIC_VECTOR ( 0 to 0 ); + \cplllock_reg1_reg[0]_2\ : in STD_LOGIC_VECTOR ( 2 downto 0 ); + USER_OOBCLK : in STD_LOGIC; + TXPOSTCURSOR : in STD_LOGIC_VECTOR ( 4 downto 0 ); + TXPRECURSOR : in STD_LOGIC_VECTOR ( 4 downto 0 ); + PIPE_TXDATA : in STD_LOGIC_VECTOR ( 15 downto 0 ); + TXMAINCURSOR : in STD_LOGIC_VECTOR ( 6 downto 0 ); + PIPE_TXCOMPLIANCE : in STD_LOGIC_VECTOR ( 0 to 0 ); + PIPE_TXDATAK : in STD_LOGIC_VECTOR ( 1 downto 0 ); + DRPADDR : in STD_LOGIC_VECTOR ( 7 downto 0 ); + rate_cpllreset_0 : in STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC + ); +end pcie_7x_0_pcie_7x_0_gt_wrapper; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_gt_wrapper is + signal CPLLRESET0 : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_10\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_138\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_139\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_140\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_141\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_142\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_143\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_144\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_145\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_146\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_147\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_148\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_149\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_150\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_151\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_152\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_153\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_16\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_177\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_178\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_179\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_180\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_181\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_182\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_183\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_184\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_189\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_190\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_191\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_192\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_197\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_198\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_201\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_202\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_203\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_204\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_205\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_206\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_207\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_208\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_209\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_210\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_211\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_212\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_213\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_214\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_215\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_216\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_27\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_4\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_82\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_83\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_84\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_9\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_CPLLFBCLKLOST_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_CPLLREFCLKLOST_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_GTREFCLKMONITOR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXCHANBONDSEQ_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXCHANREALIGN_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXCOMINITDET_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXCOMSASDET_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXCOMWAKEDET_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXDATAVALID_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXHEADERVALID_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKFABRIC_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKPCS_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXQPISENN_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXQPISENP_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXSTARTOFSEQ_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_TXCOMFINISH_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_TXGEARBOXREADY_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKFABRIC_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKPCS_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_TXQPISENN_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_TXQPISENP_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_PCSRSVDOUT_UNCONNECTED\ : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXCHARISCOMMA_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 4 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXCHARISK_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 4 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXCLKCORCNT_UNCONNECTED\ : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXDATA_UNCONNECTED\ : STD_LOGIC_VECTOR ( 63 downto 32 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXHEADER_UNCONNECTED\ : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXMONITOROUT_UNCONNECTED\ : STD_LOGIC_VECTOR ( 6 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXPHMONITOR_UNCONNECTED\ : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXPHSLIPMONITOR_UNCONNECTED\ : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_TSTOUT_UNCONNECTED\ : STD_LOGIC_VECTOR ( 9 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_TXBUFSTATUS_UNCONNECTED\ : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute BOX_TYPE : string; + attribute BOX_TYPE of \gtx_channel.gtxe2_channel_i\ : label is "PRIMITIVE"; +begin +cpllPDInst: entity work.pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd_60 + port map ( + CPLLRESET0 => CPLLRESET0, + RST_CPLLRESET => RST_CPLLRESET, + cpllpd => cpllpd, + gt_cpllpdrefclk => gt_cpllpdrefclk, + rate_cpllreset_0 => rate_cpllreset_0 + ); +\gtx_channel.gtxe2_channel_i\: unisim.vcomponents.GTXE2_CHANNEL + generic map( + ALIGN_COMMA_DOUBLE => "FALSE", + ALIGN_COMMA_ENABLE => B"1111111111", + ALIGN_COMMA_WORD => 1, + ALIGN_MCOMMA_DET => "TRUE", + ALIGN_MCOMMA_VALUE => B"1010000011", + ALIGN_PCOMMA_DET => "TRUE", + ALIGN_PCOMMA_VALUE => B"0101111100", + CBCC_DATA_SOURCE_SEL => "DECODED", + CHAN_BOND_KEEP_ALIGN => "TRUE", + CHAN_BOND_MAX_SKEW => 7, + CHAN_BOND_SEQ_1_1 => B"0001001010", + CHAN_BOND_SEQ_1_2 => B"0001001010", + CHAN_BOND_SEQ_1_3 => B"0001001010", + CHAN_BOND_SEQ_1_4 => B"0110111100", + CHAN_BOND_SEQ_1_ENABLE => B"1111", + CHAN_BOND_SEQ_2_1 => B"0001000101", + CHAN_BOND_SEQ_2_2 => B"0001000101", + CHAN_BOND_SEQ_2_3 => B"0001000101", + CHAN_BOND_SEQ_2_4 => B"0110111100", + CHAN_BOND_SEQ_2_ENABLE => B"1111", + CHAN_BOND_SEQ_2_USE => "TRUE", + CHAN_BOND_SEQ_LEN => 4, + CLK_CORRECT_USE => "TRUE", + CLK_COR_KEEP_IDLE => "TRUE", + CLK_COR_MAX_LAT => 20, + CLK_COR_MIN_LAT => 18, + CLK_COR_PRECEDENCE => "TRUE", + CLK_COR_REPEAT_WAIT => 0, + CLK_COR_SEQ_1_1 => B"0100011100", + CLK_COR_SEQ_1_2 => B"0000000000", + CLK_COR_SEQ_1_3 => B"0000000000", + CLK_COR_SEQ_1_4 => B"0000000000", + CLK_COR_SEQ_1_ENABLE => B"1111", + CLK_COR_SEQ_2_1 => B"0000000000", + CLK_COR_SEQ_2_2 => B"0000000000", + CLK_COR_SEQ_2_3 => B"0000000000", + CLK_COR_SEQ_2_4 => B"0000000000", + CLK_COR_SEQ_2_ENABLE => B"0000", + CLK_COR_SEQ_2_USE => "FALSE", + CLK_COR_SEQ_LEN => 1, + CPLL_CFG => X"A407CC", + CPLL_FBDIV => 5, + CPLL_FBDIV_45 => 5, + CPLL_INIT_CFG => X"00001E", + CPLL_LOCK_CFG => X"01E8", + CPLL_REFCLK_DIV => 1, + DEC_MCOMMA_DETECT => "TRUE", + DEC_PCOMMA_DETECT => "TRUE", + DEC_VALID_COMMA_ONLY => "FALSE", + DMONITOR_CFG => X"000B01", + ES_CONTROL => B"000000", + ES_ERRDET_EN => "FALSE", + ES_EYE_SCAN_EN => "FALSE", + ES_HORZ_OFFSET => X"000", + ES_PMA_CFG => B"0000000000", + ES_PRESCALE => B"00000", + ES_QUALIFIER => X"00000000000000000000", + ES_QUAL_MASK => X"00000000000000000000", + ES_SDATA_MASK => X"00000000000000000000", + ES_VERT_OFFSET => B"000000000", + FTS_DESKEW_SEQ_ENABLE => B"1111", + FTS_LANE_DESKEW_CFG => B"1111", + FTS_LANE_DESKEW_EN => "TRUE", + GEARBOX_MODE => B"000", + IS_CPLLLOCKDETCLK_INVERTED => '0', + IS_DRPCLK_INVERTED => '0', + IS_GTGREFCLK_INVERTED => '0', + IS_RXUSRCLK2_INVERTED => '0', + IS_RXUSRCLK_INVERTED => '0', + IS_TXPHDLYTSTCLK_INVERTED => '0', + IS_TXUSRCLK2_INVERTED => '0', + IS_TXUSRCLK_INVERTED => '0', + OUTREFCLK_SEL_INV => B"11", + PCS_PCIE_EN => "TRUE", + PCS_RSVD_ATTR => X"0000000001CF", + PD_TRANS_TIME_FROM_P2 => X"03C", + PD_TRANS_TIME_NONE_P2 => X"09", + PD_TRANS_TIME_TO_P2 => X"64", + PMA_RSV => X"00018480", + PMA_RSV2 => X"2050", + PMA_RSV3 => B"00", + PMA_RSV4 => X"00000000", + RXBUFRESET_TIME => B"00001", + RXBUF_ADDR_MODE => "FULL", + RXBUF_EIDLE_HI_CNT => B"0100", + RXBUF_EIDLE_LO_CNT => B"0000", + RXBUF_EN => "TRUE", + RXBUF_RESET_ON_CB_CHANGE => "TRUE", + RXBUF_RESET_ON_COMMAALIGN => "FALSE", + RXBUF_RESET_ON_EIDLE => "TRUE", + RXBUF_RESET_ON_RATE_CHANGE => "TRUE", + RXBUF_THRESH_OVFLW => 61, + RXBUF_THRESH_OVRD => "FALSE", + RXBUF_THRESH_UNDFLW => 4, + RXCDRFREQRESET_TIME => B"00001", + RXCDRPHRESET_TIME => B"00001", + RXCDR_CFG => X"03000023FF10200020", + RXCDR_FR_RESET_ON_EIDLE => '0', + RXCDR_HOLD_DURING_EIDLE => '1', + RXCDR_LOCK_CFG => B"010101", + RXCDR_PH_RESET_ON_EIDLE => '0', + RXDFELPMRESET_TIME => B"0001111", + RXDLY_CFG => X"001F", + RXDLY_LCFG => X"030", + RXDLY_TAP_CFG => X"0000", + RXGEARBOX_EN => "FALSE", + RXISCANRESET_TIME => B"00001", + RXLPM_HF_CFG => B"00000011110000", + RXLPM_LF_CFG => B"00000011110000", + RXOOB_CFG => B"0000110", + RXOUT_DIV => 2, + RXPCSRESET_TIME => B"00001", + RXPHDLY_CFG => X"004020", + RXPH_CFG => X"000000", + RXPH_MONITOR_SEL => B"00000", + RXPMARESET_TIME => B"00011", + RXPRBS_ERR_LOOPBACK => '0', + RXSLIDE_AUTO_WAIT => 7, + RXSLIDE_MODE => "PMA", + RX_BIAS_CFG => B"000000000100", + RX_BUFFER_CFG => B"000000", + RX_CLK25_DIV => 4, + RX_CLKMUX_PD => '1', + RX_CM_SEL => B"11", + RX_CM_TRIM => B"010", + RX_DATA_WIDTH => 20, + RX_DDI_SEL => B"000000", + RX_DEBUG_CFG => B"000000000000", + RX_DEFER_RESET_BUF_EN => "TRUE", + RX_DFE_GAIN_CFG => X"020FEA", + RX_DFE_H2_CFG => B"000000000000", + RX_DFE_H3_CFG => B"000001000000", + RX_DFE_H4_CFG => B"00011110000", + RX_DFE_H5_CFG => B"00011100000", + RX_DFE_KL_CFG => B"0000011111110", + RX_DFE_KL_CFG2 => X"3290D86C", + RX_DFE_LPM_CFG => X"0954", + RX_DFE_LPM_HOLD_DURING_EIDLE => '1', + RX_DFE_UT_CFG => B"10001111000000000", + RX_DFE_VP_CFG => B"00011111100000011", + RX_DFE_XYD_CFG => B"0000000000000", + RX_DISPERR_SEQ_MATCH => "TRUE", + RX_INT_DATAWIDTH => 0, + RX_OS_CFG => B"0000010000000", + RX_SIG_VALID_DLY => 4, + RX_XCLK_SEL => "RXREC", + SAS_MAX_COM => 64, + SAS_MIN_COM => 36, + SATA_BURST_SEQ_LEN => B"1111", + SATA_BURST_VAL => B"100", + SATA_CPLL_CFG => "VCO_3000MHZ", + SATA_EIDLE_VAL => B"100", + SATA_MAX_BURST => 8, + SATA_MAX_INIT => 21, + SATA_MAX_WAKE => 7, + SATA_MIN_BURST => 4, + SATA_MIN_INIT => 12, + SATA_MIN_WAKE => 4, + SHOW_REALIGN_COMMA => "FALSE", + SIM_CPLLREFCLK_SEL => B"001", + SIM_RECEIVER_DETECT_PASS => "TRUE", + SIM_RESET_SPEEDUP => "FALSE", + SIM_TX_EIDLE_DRIVE_LEVEL => "1", + SIM_VERSION => "3.0", + TERM_RCAL_CFG => B"10000", + TERM_RCAL_OVRD => '0', + TRANS_TIME_RATE => X"0E", + TST_RSV => X"00000000", + TXBUF_EN => "FALSE", + TXBUF_RESET_ON_RATE_CHANGE => "TRUE", + TXDLY_CFG => X"001F", + TXDLY_LCFG => X"030", + TXDLY_TAP_CFG => X"0000", + TXGEARBOX_EN => "FALSE", + TXOUT_DIV => 2, + TXPCSRESET_TIME => B"00001", + TXPHDLY_CFG => X"084020", + TXPH_CFG => X"0780", + TXPH_MONITOR_SEL => B"00000", + TXPMARESET_TIME => B"00011", + TX_CLK25_DIV => 4, + TX_CLKMUX_PD => '1', + TX_DATA_WIDTH => 20, + TX_DEEMPH0 => B"10100", + TX_DEEMPH1 => B"01011", + TX_DRIVE_MODE => "PIPE", + TX_EIDLE_ASSERT_DELAY => B"010", + TX_EIDLE_DEASSERT_DELAY => B"100", + TX_INT_DATAWIDTH => 0, + TX_LOOPBACK_DRIVE_HIZ => "FALSE", + TX_MAINCURSOR_SEL => '0', + TX_MARGIN_FULL_0 => B"1001111", + TX_MARGIN_FULL_1 => B"1001110", + TX_MARGIN_FULL_2 => B"1001101", + TX_MARGIN_FULL_3 => B"1001100", + TX_MARGIN_FULL_4 => B"1000011", + TX_MARGIN_LOW_0 => B"1000101", + TX_MARGIN_LOW_1 => B"1000110", + TX_MARGIN_LOW_2 => B"1000011", + TX_MARGIN_LOW_3 => B"1000010", + TX_MARGIN_LOW_4 => B"1000000", + TX_PREDRIVER_MODE => '0', + TX_QPI_STATUS_EN => '0', + TX_RXDETECT_CFG => X"0064", + TX_RXDETECT_REF => B"011", + TX_XCLK_SEL => "TXUSR", + UCODEER_CLR => '0' + ) + port map ( + CFGRESET => '0', + CLKRSVD(3 downto 1) => B"000", + CLKRSVD(0) => USER_OOBCLK, + CPLLFBCLKLOST => \NLW_gtx_channel.gtxe2_channel_i_CPLLFBCLKLOST_UNCONNECTED\, + CPLLLOCK => QRST_CPLLLOCK(0), + CPLLLOCKDETCLK => '0', + CPLLLOCKEN => '1', + CPLLPD => CPLLPD0, + CPLLREFCLKLOST => \NLW_gtx_channel.gtxe2_channel_i_CPLLREFCLKLOST_UNCONNECTED\, + CPLLREFCLKSEL(2 downto 0) => B"001", + CPLLRESET => CPLLRESET0, + DMONITOROUT(7) => \gtx_channel.gtxe2_channel_i_n_177\, + DMONITOROUT(6) => \gtx_channel.gtxe2_channel_i_n_178\, + DMONITOROUT(5) => \gtx_channel.gtxe2_channel_i_n_179\, + DMONITOROUT(4) => \gtx_channel.gtxe2_channel_i_n_180\, + DMONITOROUT(3) => \gtx_channel.gtxe2_channel_i_n_181\, + DMONITOROUT(2) => \gtx_channel.gtxe2_channel_i_n_182\, + DMONITOROUT(1) => \gtx_channel.gtxe2_channel_i_n_183\, + DMONITOROUT(0) => \gtx_channel.gtxe2_channel_i_n_184\, + DRPADDR(8) => '0', + DRPADDR(7 downto 0) => DRPADDR(7 downto 0), + DRPCLK => pipe_dclk_in, + DRPDI(15 downto 0) => DRPDI(15 downto 0), + DRPDO(15 downto 0) => DRP_DO(15 downto 0), + DRPEN => \cplllock_reg1_reg[0]\, + DRPRDY => DRP_RDY, + DRPWE => \cplllock_reg1_reg[0]_0\, + EYESCANDATAERROR => \gtx_channel.gtxe2_channel_i_n_4\, + EYESCANMODE => '0', + EYESCANRESET => '0', + EYESCANTRIGGER => '0', + GTGREFCLK => '0', + GTNORTHREFCLK0 => '0', + GTNORTHREFCLK1 => '0', + GTREFCLK0 => sys_clk, + GTREFCLK1 => '0', + GTREFCLKMONITOR => \NLW_gtx_channel.gtxe2_channel_i_GTREFCLKMONITOR_UNCONNECTED\, + GTRESETSEL => '0', + GTRSVD(15 downto 0) => B"0000000000000000", + GTRXRESET => DRP_GTXRESET, + GTSOUTHREFCLK0 => '0', + GTSOUTHREFCLK1 => '0', + GTTXRESET => DRP_GTXRESET, + GTXRXN => pci_exp_rxn(0), + GTXRXP => pci_exp_rxp(0), + GTXTXN => pci_exp_txn(0), + GTXTXP => pci_exp_txp(0), + LOOPBACK(2 downto 0) => B"000", + PCSRSVDIN(15 downto 0) => B"0000000000000000", + PCSRSVDIN2(4 downto 0) => B"00000", + PCSRSVDOUT(15 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_PCSRSVDOUT_UNCONNECTED\(15 downto 0), + PHYSTATUS => RATE_PHYSTATUS, + PMARSVDIN(4 downto 0) => B"00000", + PMARSVDIN2(4 downto 0) => B"00000", + QPLLCLK => QPLL_QPLLOUTCLK, + QPLLREFCLK => QPLL_QPLLOUTREFCLK, + RESETOVRD => '0', + RX8B10BEN => rxchbonden_0, + RXBUFRESET => '0', + RXBUFSTATUS(2) => \gtx_channel.gtxe2_channel_i_n_82\, + RXBUFSTATUS(1) => \gtx_channel.gtxe2_channel_i_n_83\, + RXBUFSTATUS(0) => \gtx_channel.gtxe2_channel_i_n_84\, + RXBYTEISALIGNED => \gtx_channel.gtxe2_channel_i_n_9\, + RXBYTEREALIGN => \gtx_channel.gtxe2_channel_i_n_10\, + RXCDRFREQRESET => '0', + RXCDRHOLD => '0', + RXCDRLOCK => gt_rxcdrlock_0, + RXCDROVRDEN => '0', + RXCDRRESET => '0', + RXCDRRESETRSV => '0', + RXCHANBONDSEQ => \NLW_gtx_channel.gtxe2_channel_i_RXCHANBONDSEQ_UNCONNECTED\, + RXCHANISALIGNED => PIPE_RXCHANISALIGNED(0), + RXCHANREALIGN => \NLW_gtx_channel.gtxe2_channel_i_RXCHANREALIGN_UNCONNECTED\, + RXCHARISCOMMA(7 downto 4) => \NLW_gtx_channel.gtxe2_channel_i_RXCHARISCOMMA_UNCONNECTED\(7 downto 4), + RXCHARISCOMMA(3) => \gtx_channel.gtxe2_channel_i_n_189\, + RXCHARISCOMMA(2) => \gtx_channel.gtxe2_channel_i_n_190\, + RXCHARISCOMMA(1) => \gtx_channel.gtxe2_channel_i_n_191\, + RXCHARISCOMMA(0) => \gtx_channel.gtxe2_channel_i_n_192\, + RXCHARISK(7 downto 4) => \NLW_gtx_channel.gtxe2_channel_i_RXCHARISK_UNCONNECTED\(7 downto 4), + RXCHARISK(3) => \gtx_channel.gtxe2_channel_i_n_197\, + RXCHARISK(2) => \gtx_channel.gtxe2_channel_i_n_198\, + RXCHARISK(1 downto 0) => gt_rx_data_k_wire_filter(1 downto 0), + RXCHBONDEN => rxchbonden_0, + RXCHBONDI(4 downto 0) => B"00000", + RXCHBONDLEVEL(2 downto 0) => B"001", + RXCHBONDMASTER => rxchbonden_0, + RXCHBONDO(4 downto 0) => RXCHBONDO(4 downto 0), + RXCHBONDSLAVE => '0', + RXCLKCORCNT(1 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_RXCLKCORCNT_UNCONNECTED\(1 downto 0), + RXCOMINITDET => \NLW_gtx_channel.gtxe2_channel_i_RXCOMINITDET_UNCONNECTED\, + RXCOMMADET => \gtx_channel.gtxe2_channel_i_n_16\, + RXCOMMADETEN => '1', + RXCOMSASDET => \NLW_gtx_channel.gtxe2_channel_i_RXCOMSASDET_UNCONNECTED\, + RXCOMWAKEDET => \NLW_gtx_channel.gtxe2_channel_i_RXCOMWAKEDET_UNCONNECTED\, + RXDATA(63 downto 32) => \NLW_gtx_channel.gtxe2_channel_i_RXDATA_UNCONNECTED\(63 downto 32), + RXDATA(31) => \gtx_channel.gtxe2_channel_i_n_138\, + RXDATA(30) => \gtx_channel.gtxe2_channel_i_n_139\, + RXDATA(29) => \gtx_channel.gtxe2_channel_i_n_140\, + RXDATA(28) => \gtx_channel.gtxe2_channel_i_n_141\, + RXDATA(27) => \gtx_channel.gtxe2_channel_i_n_142\, + RXDATA(26) => \gtx_channel.gtxe2_channel_i_n_143\, + RXDATA(25) => \gtx_channel.gtxe2_channel_i_n_144\, + RXDATA(24) => \gtx_channel.gtxe2_channel_i_n_145\, + RXDATA(23) => \gtx_channel.gtxe2_channel_i_n_146\, + RXDATA(22) => \gtx_channel.gtxe2_channel_i_n_147\, + RXDATA(21) => \gtx_channel.gtxe2_channel_i_n_148\, + RXDATA(20) => \gtx_channel.gtxe2_channel_i_n_149\, + RXDATA(19) => \gtx_channel.gtxe2_channel_i_n_150\, + RXDATA(18) => \gtx_channel.gtxe2_channel_i_n_151\, + RXDATA(17) => \gtx_channel.gtxe2_channel_i_n_152\, + RXDATA(16) => \gtx_channel.gtxe2_channel_i_n_153\, + RXDATA(15 downto 0) => gt_rx_data_wire_filter(15 downto 0), + RXDATAVALID => \NLW_gtx_channel.gtxe2_channel_i_RXDATAVALID_UNCONNECTED\, + RXDDIEN => '0', + RXDFEAGCHOLD => \cplllock_reg1_reg[0]_1\, + RXDFEAGCOVRDEN => '0', + RXDFECM1EN => '0', + RXDFELFHOLD => '0', + RXDFELFOVRDEN => '1', + RXDFELPMRESET => '0', + RXDFETAP2HOLD => '0', + RXDFETAP2OVRDEN => '0', + RXDFETAP3HOLD => '0', + RXDFETAP3OVRDEN => '0', + RXDFETAP4HOLD => '0', + RXDFETAP4OVRDEN => '0', + RXDFETAP5HOLD => '0', + RXDFETAP5OVRDEN => '0', + RXDFEUTHOLD => '0', + RXDFEUTOVRDEN => '0', + RXDFEVPHOLD => '0', + RXDFEVPOVRDEN => '0', + RXDFEVSEN => '0', + RXDFEXYDEN => '0', + RXDFEXYDHOLD => '0', + RXDFEXYDOVRDEN => '0', + RXDISPERR(7) => \gtx_channel.gtxe2_channel_i_n_201\, + RXDISPERR(6) => \gtx_channel.gtxe2_channel_i_n_202\, + RXDISPERR(5) => \gtx_channel.gtxe2_channel_i_n_203\, + RXDISPERR(4) => \gtx_channel.gtxe2_channel_i_n_204\, + RXDISPERR(3) => \gtx_channel.gtxe2_channel_i_n_205\, + RXDISPERR(2) => \gtx_channel.gtxe2_channel_i_n_206\, + RXDISPERR(1) => \gtx_channel.gtxe2_channel_i_n_207\, + RXDISPERR(0) => \gtx_channel.gtxe2_channel_i_n_208\, + RXDLYBYPASS => '1', + RXDLYEN => '0', + RXDLYOVRDEN => '0', + RXDLYSRESET => '0', + RXDLYSRESETDONE => pipe_dclk_in_0, + RXELECIDLE => gt_rx_elec_idle_wire_filter(0), + RXELECIDLEMODE(1 downto 0) => B"00", + RXGEARBOXSLIP => '0', + RXHEADER(2 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_RXHEADER_UNCONNECTED\(2 downto 0), + RXHEADERVALID => \NLW_gtx_channel.gtxe2_channel_i_RXHEADERVALID_UNCONNECTED\, + RXLPMEN => rxchbonden_0, + RXLPMHFHOLD => '0', + RXLPMHFOVRDEN => '0', + RXLPMLFHOLD => '0', + RXLPMLFKLOVRDEN => '0', + RXMCOMMAALIGNEN => rxchbonden_0, + RXMONITOROUT(6 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_RXMONITOROUT_UNCONNECTED\(6 downto 0), + RXMONITORSEL(1 downto 0) => B"00", + RXNOTINTABLE(7) => \gtx_channel.gtxe2_channel_i_n_209\, + RXNOTINTABLE(6) => \gtx_channel.gtxe2_channel_i_n_210\, + RXNOTINTABLE(5) => \gtx_channel.gtxe2_channel_i_n_211\, + RXNOTINTABLE(4) => \gtx_channel.gtxe2_channel_i_n_212\, + RXNOTINTABLE(3) => \gtx_channel.gtxe2_channel_i_n_213\, + RXNOTINTABLE(2) => \gtx_channel.gtxe2_channel_i_n_214\, + RXNOTINTABLE(1) => \gtx_channel.gtxe2_channel_i_n_215\, + RXNOTINTABLE(0) => \gtx_channel.gtxe2_channel_i_n_216\, + RXOOBRESET => '0', + RXOSHOLD => '0', + RXOSOVRDEN => '0', + RXOUTCLK => pipe_rxoutclk_out(0), + RXOUTCLKFABRIC => \NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKFABRIC_UNCONNECTED\, + RXOUTCLKPCS => \NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKPCS_UNCONNECTED\, + RXOUTCLKSEL(2 downto 0) => B"000", + RXPCOMMAALIGNEN => rxchbonden_0, + RXPCSRESET => '0', + RXPD(1 downto 0) => PIPE_POWERDOWN(1 downto 0), + RXPHALIGN => '0', + RXPHALIGNDONE => SYNC_RXPHALIGNDONE_M, + RXPHALIGNEN => '0', + RXPHDLYPD => '0', + RXPHDLYRESET => '0', + RXPHMONITOR(4 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_RXPHMONITOR_UNCONNECTED\(4 downto 0), + RXPHOVRDEN => '0', + RXPHSLIPMONITOR(4 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_RXPHSLIPMONITOR_UNCONNECTED\(4 downto 0), + RXPMARESET => rate_txpmareset_0, + RXPOLARITY => PIPE_RXPOLARITY(0), + RXPRBSCNTRESET => '0', + RXPRBSERR => \gtx_channel.gtxe2_channel_i_n_27\, + RXPRBSSEL(2 downto 0) => B"000", + RXQPIEN => '0', + RXQPISENN => \NLW_gtx_channel.gtxe2_channel_i_RXQPISENN_UNCONNECTED\, + RXQPISENP => \NLW_gtx_channel.gtxe2_channel_i_RXQPISENP_UNCONNECTED\, + RXRATE(2 downto 1) => B"00", + RXRATE(0) => RXRATE(0), + RXRATEDONE => RATE_RXRATEDONE, + RXRESETDONE => USER_RXRESETDONE, + RXSLIDE => '0', + RXSTARTOFSEQ => \NLW_gtx_channel.gtxe2_channel_i_RXSTARTOFSEQ_UNCONNECTED\, + RXSTATUS(2 downto 0) => PIPE_RXSTATUS(2 downto 0), + RXSYSCLKSEL(1) => '0', + RXSYSCLKSEL(0) => RXSYSCLKSEL(0), + RXUSERRDY => rst_userrdy, + RXUSRCLK => pipe_rxusrclk_in, + RXUSRCLK2 => pipe_rxusrclk_in, + RXVALID => gt_rxvalid_0, + SETERRSTATUS => '0', + TSTIN(19 downto 0) => B"11111111111111111111", + TSTOUT(9 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_TSTOUT_UNCONNECTED\(9 downto 0), + TX8B10BBYPASS(7 downto 0) => B"00000000", + TX8B10BEN => rxchbonden_0, + TXBUFDIFFCTRL(2 downto 0) => B"100", + TXBUFSTATUS(1 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_TXBUFSTATUS_UNCONNECTED\(1 downto 0), + TXCHARDISPMODE(7 downto 1) => B"0000000", + TXCHARDISPMODE(0) => PIPE_TXCOMPLIANCE(0), + TXCHARDISPVAL(7 downto 0) => B"00000000", + TXCHARISK(7 downto 2) => B"000000", + TXCHARISK(1 downto 0) => PIPE_TXDATAK(1 downto 0), + TXCOMFINISH => \NLW_gtx_channel.gtxe2_channel_i_TXCOMFINISH_UNCONNECTED\, + TXCOMINIT => '0', + TXCOMSAS => '0', + TXCOMWAKE => '0', + TXDATA(63 downto 16) => B"000000000000000000000000000000000000000000000000", + TXDATA(15 downto 0) => PIPE_TXDATA(15 downto 0), + TXDEEMPH => pipe_tx_deemph_gt, + TXDETECTRX => pipe_tx_rcvr_det_gt, + TXDIFFCTRL(3 downto 0) => B"1100", + TXDIFFPD => '0', + TXDLYBYPASS => '0', + TXDLYEN => sync_txdlyen_0, + TXDLYHOLD => '0', + TXDLYOVRDEN => '0', + TXDLYSRESET => SYNC_TXDLYSRESET, + TXDLYSRESETDONE => pipe_dclk_in_1, + TXDLYUPDOWN => '0', + TXELECIDLE => PIPE_TXELECIDLE(0), + TXGEARBOXREADY => \NLW_gtx_channel.gtxe2_channel_i_TXGEARBOXREADY_UNCONNECTED\, + TXHEADER(2 downto 0) => B"000", + TXINHIBIT => '0', + TXMAINCURSOR(6 downto 0) => TXMAINCURSOR(6 downto 0), + TXMARGIN(2 downto 0) => \cplllock_reg1_reg[0]_2\(2 downto 0), + TXOUTCLK => pipe_txoutclk_out, + TXOUTCLKFABRIC => \NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKFABRIC_UNCONNECTED\, + TXOUTCLKPCS => \NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKPCS_UNCONNECTED\, + TXOUTCLKSEL(2 downto 0) => B"011", + TXPCSRESET => '0', + TXPD(1 downto 0) => PIPE_POWERDOWN(1 downto 0), + TXPDELECIDLEMODE => '0', + TXPHALIGN => SYNC_TXPHALIGN, + TXPHALIGNDONE => pipe_dclk_in_2, + TXPHALIGNEN => '1', + TXPHDLYPD => '0', + TXPHDLYRESET => '0', + TXPHDLYTSTCLK => '0', + TXPHINIT => SYNC_TXPHINIT, + TXPHINITDONE => pipe_dclk_in_3, + TXPHOVRDEN => '0', + TXPISOPD => '0', + TXPMARESET => rate_txpmareset_0, + TXPOLARITY => '0', + TXPOSTCURSOR(4 downto 0) => TXPOSTCURSOR(4 downto 0), + TXPOSTCURSORINV => '0', + TXPRBSFORCEERR => '0', + TXPRBSSEL(2 downto 0) => B"000", + TXPRECURSOR(4 downto 0) => TXPRECURSOR(4 downto 0), + TXPRECURSORINV => '0', + TXQPIBIASEN => '0', + TXQPISENN => \NLW_gtx_channel.gtxe2_channel_i_TXQPISENN_UNCONNECTED\, + TXQPISENP => \NLW_gtx_channel.gtxe2_channel_i_TXQPISENP_UNCONNECTED\, + TXQPISTRONGPDOWN => '0', + TXQPIWEAKPUP => '0', + TXRATE(2 downto 1) => B"00", + TXRATE(0) => RXRATE(0), + TXRATEDONE => RATE_TXRATEDONE, + TXRESETDONE => USER_TXRESETDONE, + TXSEQUENCE(6 downto 0) => B"0000000", + TXSTARTSEQ => '0', + TXSWING => '0', + TXSYSCLKSEL(1) => '0', + TXSYSCLKSEL(0) => RXSYSCLKSEL(0), + TXUSERRDY => rst_userrdy, + TXUSRCLK => pipe_pclk_in, + TXUSRCLK2 => pipe_pclk_in + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_gt_wrapper_37 is + port ( + cpllpd_0 : out STD_LOGIC; + QRST_CPLLLOCK : out STD_LOGIC_VECTOR ( 0 to 0 ); + DRP_RDY : out STD_LOGIC; + pci_exp_txn : out STD_LOGIC_VECTOR ( 0 to 0 ); + pci_exp_txp : out STD_LOGIC_VECTOR ( 0 to 0 ); + RATE_PHYSTATUS : out STD_LOGIC; + gt_rxcdrlock_1 : out STD_LOGIC; + PIPE_RXCHANISALIGNED : out STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_dclk_in_0 : out STD_LOGIC; + gt_rx_elec_idle_wire_filter : out STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_rxoutclk_out : out STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_dclk_in_1 : out STD_LOGIC; + RATE_RXRATEDONE : out STD_LOGIC; + USER_RXRESETDONE : out STD_LOGIC; + gt_rxvalid_1 : out STD_LOGIC; + pipe_dclk_in_2 : out STD_LOGIC; + pipe_dclk_in_3 : out STD_LOGIC; + pipe_dclk_in_4 : out STD_LOGIC; + RATE_TXRATEDONE : out STD_LOGIC; + USER_TXRESETDONE : out STD_LOGIC; + DRP_DO : out STD_LOGIC_VECTOR ( 15 downto 0 ); + pipe_dclk_in_5 : out STD_LOGIC_VECTOR ( 2 downto 0 ); + gt_rx_data_wire_filter : out STD_LOGIC_VECTOR ( 15 downto 0 ); + gt_rx_data_k_wire_filter : out STD_LOGIC_VECTOR ( 1 downto 0 ); + gt_cpllpdrefclk : in STD_LOGIC; + CPLLPD0_3 : in STD_LOGIC; + pipe_dclk_in : in STD_LOGIC; + \cplllock_reg1_reg[1]\ : in STD_LOGIC; + \cplllock_reg1_reg[1]_0\ : in STD_LOGIC; + sys_clk : in STD_LOGIC; + DRP_GTXRESET : in STD_LOGIC; + pci_exp_rxn : in STD_LOGIC_VECTOR ( 0 to 0 ); + pci_exp_rxp : in STD_LOGIC_VECTOR ( 0 to 0 ); + QPLL_QPLLOUTCLK : in STD_LOGIC; + QPLL_QPLLOUTREFCLK : in STD_LOGIC; + rxchbonden_1 : in STD_LOGIC; + \cplllock_reg1_reg[1]_1\ : in STD_LOGIC; + rate_txpmareset_1 : in STD_LOGIC; + PIPE_RXPOLARITY : in STD_LOGIC_VECTOR ( 0 to 0 ); + rst_userrdy : in STD_LOGIC; + pipe_rxusrclk_in : in STD_LOGIC; + pipe_tx_deemph_gt : in STD_LOGIC; + pipe_tx_rcvr_det_gt : in STD_LOGIC; + SYNC_TXDLYSRESET : in STD_LOGIC; + PIPE_TXELECIDLE : in STD_LOGIC_VECTOR ( 0 to 0 ); + SYNC_TXPHALIGN : in STD_LOGIC; + SYNC_TXPHINIT : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + DRPDI : in STD_LOGIC_VECTOR ( 15 downto 0 ); + PIPE_POWERDOWN : in STD_LOGIC_VECTOR ( 1 downto 0 ); + RXSYSCLKSEL : in STD_LOGIC_VECTOR ( 0 to 0 ); + RXRATE : in STD_LOGIC_VECTOR ( 0 to 0 ); + \cplllock_reg1_reg[1]_2\ : in STD_LOGIC_VECTOR ( 2 downto 0 ); + USER_OOBCLK : in STD_LOGIC; + RXCHBONDO : in STD_LOGIC_VECTOR ( 4 downto 0 ); + TXPOSTCURSOR : in STD_LOGIC_VECTOR ( 4 downto 0 ); + TXPRECURSOR : in STD_LOGIC_VECTOR ( 4 downto 0 ); + PIPE_TXDATA : in STD_LOGIC_VECTOR ( 15 downto 0 ); + TXMAINCURSOR : in STD_LOGIC_VECTOR ( 6 downto 0 ); + PIPE_TXCOMPLIANCE : in STD_LOGIC_VECTOR ( 0 to 0 ); + PIPE_TXDATAK : in STD_LOGIC_VECTOR ( 1 downto 0 ); + DRPADDR : in STD_LOGIC_VECTOR ( 7 downto 0 ); + rate_cpllreset_1 : in STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_gt_wrapper_37 : entity is "pcie_7x_0_gt_wrapper"; +end pcie_7x_0_pcie_7x_0_gt_wrapper_37; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_gt_wrapper_37 is + signal CPLLRESET0 : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_10\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_138\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_139\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_140\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_141\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_142\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_143\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_144\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_145\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_146\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_147\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_148\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_149\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_150\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_151\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_152\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_153\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_16\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_177\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_178\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_179\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_180\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_181\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_182\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_183\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_184\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_189\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_190\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_191\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_192\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_197\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_198\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_201\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_202\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_203\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_204\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_205\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_206\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_207\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_208\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_209\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_210\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_211\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_212\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_213\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_214\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_215\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_216\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_27\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_37\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_4\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_82\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_83\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_84\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_9\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_91\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_92\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_93\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_94\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_95\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_CPLLFBCLKLOST_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_CPLLREFCLKLOST_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_GTREFCLKMONITOR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXCHANBONDSEQ_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXCHANREALIGN_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXCOMINITDET_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXCOMSASDET_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXCOMWAKEDET_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXDATAVALID_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXHEADERVALID_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKFABRIC_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKPCS_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXQPISENN_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXQPISENP_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXSTARTOFSEQ_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_TXCOMFINISH_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_TXGEARBOXREADY_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKFABRIC_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKPCS_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_TXQPISENN_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_TXQPISENP_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_PCSRSVDOUT_UNCONNECTED\ : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXCHARISCOMMA_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 4 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXCHARISK_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 4 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXCLKCORCNT_UNCONNECTED\ : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXDATA_UNCONNECTED\ : STD_LOGIC_VECTOR ( 63 downto 32 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXHEADER_UNCONNECTED\ : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXMONITOROUT_UNCONNECTED\ : STD_LOGIC_VECTOR ( 6 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXPHMONITOR_UNCONNECTED\ : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXPHSLIPMONITOR_UNCONNECTED\ : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_TSTOUT_UNCONNECTED\ : STD_LOGIC_VECTOR ( 9 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_TXBUFSTATUS_UNCONNECTED\ : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute BOX_TYPE : string; + attribute BOX_TYPE of \gtx_channel.gtxe2_channel_i\ : label is "PRIMITIVE"; +begin +cpllPDInst: entity work.pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd_58 + port map ( + CPLLRESET0 => CPLLRESET0, + RST_CPLLRESET => RST_CPLLRESET, + cpllpd_0 => cpllpd_0, + gt_cpllpdrefclk => gt_cpllpdrefclk, + rate_cpllreset_1 => rate_cpllreset_1 + ); +\gtx_channel.gtxe2_channel_i\: unisim.vcomponents.GTXE2_CHANNEL + generic map( + ALIGN_COMMA_DOUBLE => "FALSE", + ALIGN_COMMA_ENABLE => B"1111111111", + ALIGN_COMMA_WORD => 1, + ALIGN_MCOMMA_DET => "TRUE", + ALIGN_MCOMMA_VALUE => B"1010000011", + ALIGN_PCOMMA_DET => "TRUE", + ALIGN_PCOMMA_VALUE => B"0101111100", + CBCC_DATA_SOURCE_SEL => "DECODED", + CHAN_BOND_KEEP_ALIGN => "TRUE", + CHAN_BOND_MAX_SKEW => 7, + CHAN_BOND_SEQ_1_1 => B"0001001010", + CHAN_BOND_SEQ_1_2 => B"0001001010", + CHAN_BOND_SEQ_1_3 => B"0001001010", + CHAN_BOND_SEQ_1_4 => B"0110111100", + CHAN_BOND_SEQ_1_ENABLE => B"1111", + CHAN_BOND_SEQ_2_1 => B"0001000101", + CHAN_BOND_SEQ_2_2 => B"0001000101", + CHAN_BOND_SEQ_2_3 => B"0001000101", + CHAN_BOND_SEQ_2_4 => B"0110111100", + CHAN_BOND_SEQ_2_ENABLE => B"1111", + CHAN_BOND_SEQ_2_USE => "TRUE", + CHAN_BOND_SEQ_LEN => 4, + CLK_CORRECT_USE => "TRUE", + CLK_COR_KEEP_IDLE => "TRUE", + CLK_COR_MAX_LAT => 20, + CLK_COR_MIN_LAT => 18, + CLK_COR_PRECEDENCE => "TRUE", + CLK_COR_REPEAT_WAIT => 0, + CLK_COR_SEQ_1_1 => B"0100011100", + CLK_COR_SEQ_1_2 => B"0000000000", + CLK_COR_SEQ_1_3 => B"0000000000", + CLK_COR_SEQ_1_4 => B"0000000000", + CLK_COR_SEQ_1_ENABLE => B"1111", + CLK_COR_SEQ_2_1 => B"0000000000", + CLK_COR_SEQ_2_2 => B"0000000000", + CLK_COR_SEQ_2_3 => B"0000000000", + CLK_COR_SEQ_2_4 => B"0000000000", + CLK_COR_SEQ_2_ENABLE => B"0000", + CLK_COR_SEQ_2_USE => "FALSE", + CLK_COR_SEQ_LEN => 1, + CPLL_CFG => X"A407CC", + CPLL_FBDIV => 5, + CPLL_FBDIV_45 => 5, + CPLL_INIT_CFG => X"00001E", + CPLL_LOCK_CFG => X"01E8", + CPLL_REFCLK_DIV => 1, + DEC_MCOMMA_DETECT => "TRUE", + DEC_PCOMMA_DETECT => "TRUE", + DEC_VALID_COMMA_ONLY => "FALSE", + DMONITOR_CFG => X"000B01", + ES_CONTROL => B"000000", + ES_ERRDET_EN => "FALSE", + ES_EYE_SCAN_EN => "FALSE", + ES_HORZ_OFFSET => X"000", + ES_PMA_CFG => B"0000000000", + ES_PRESCALE => B"00000", + ES_QUALIFIER => X"00000000000000000000", + ES_QUAL_MASK => X"00000000000000000000", + ES_SDATA_MASK => X"00000000000000000000", + ES_VERT_OFFSET => B"000000000", + FTS_DESKEW_SEQ_ENABLE => B"1111", + FTS_LANE_DESKEW_CFG => B"1111", + FTS_LANE_DESKEW_EN => "TRUE", + GEARBOX_MODE => B"000", + IS_CPLLLOCKDETCLK_INVERTED => '0', + IS_DRPCLK_INVERTED => '0', + IS_GTGREFCLK_INVERTED => '0', + IS_RXUSRCLK2_INVERTED => '0', + IS_RXUSRCLK_INVERTED => '0', + IS_TXPHDLYTSTCLK_INVERTED => '0', + IS_TXUSRCLK2_INVERTED => '0', + IS_TXUSRCLK_INVERTED => '0', + OUTREFCLK_SEL_INV => B"11", + PCS_PCIE_EN => "TRUE", + PCS_RSVD_ATTR => X"0000000001CF", + PD_TRANS_TIME_FROM_P2 => X"03C", + PD_TRANS_TIME_NONE_P2 => X"09", + PD_TRANS_TIME_TO_P2 => X"64", + PMA_RSV => X"00018480", + PMA_RSV2 => X"2050", + PMA_RSV3 => B"00", + PMA_RSV4 => X"00000000", + RXBUFRESET_TIME => B"00001", + RXBUF_ADDR_MODE => "FULL", + RXBUF_EIDLE_HI_CNT => B"0100", + RXBUF_EIDLE_LO_CNT => B"0000", + RXBUF_EN => "TRUE", + RXBUF_RESET_ON_CB_CHANGE => "TRUE", + RXBUF_RESET_ON_COMMAALIGN => "FALSE", + RXBUF_RESET_ON_EIDLE => "TRUE", + RXBUF_RESET_ON_RATE_CHANGE => "TRUE", + RXBUF_THRESH_OVFLW => 61, + RXBUF_THRESH_OVRD => "FALSE", + RXBUF_THRESH_UNDFLW => 4, + RXCDRFREQRESET_TIME => B"00001", + RXCDRPHRESET_TIME => B"00001", + RXCDR_CFG => X"03000023FF10200020", + RXCDR_FR_RESET_ON_EIDLE => '0', + RXCDR_HOLD_DURING_EIDLE => '1', + RXCDR_LOCK_CFG => B"010101", + RXCDR_PH_RESET_ON_EIDLE => '0', + RXDFELPMRESET_TIME => B"0001111", + RXDLY_CFG => X"001F", + RXDLY_LCFG => X"030", + RXDLY_TAP_CFG => X"0000", + RXGEARBOX_EN => "FALSE", + RXISCANRESET_TIME => B"00001", + RXLPM_HF_CFG => B"00000011110000", + RXLPM_LF_CFG => B"00000011110000", + RXOOB_CFG => B"0000110", + RXOUT_DIV => 2, + RXPCSRESET_TIME => B"00001", + RXPHDLY_CFG => X"004020", + RXPH_CFG => X"000000", + RXPH_MONITOR_SEL => B"00000", + RXPMARESET_TIME => B"00011", + RXPRBS_ERR_LOOPBACK => '0', + RXSLIDE_AUTO_WAIT => 7, + RXSLIDE_MODE => "PMA", + RX_BIAS_CFG => B"000000000100", + RX_BUFFER_CFG => B"000000", + RX_CLK25_DIV => 4, + RX_CLKMUX_PD => '1', + RX_CM_SEL => B"11", + RX_CM_TRIM => B"010", + RX_DATA_WIDTH => 20, + RX_DDI_SEL => B"000000", + RX_DEBUG_CFG => B"000000000000", + RX_DEFER_RESET_BUF_EN => "TRUE", + RX_DFE_GAIN_CFG => X"020FEA", + RX_DFE_H2_CFG => B"000000000000", + RX_DFE_H3_CFG => B"000001000000", + RX_DFE_H4_CFG => B"00011110000", + RX_DFE_H5_CFG => B"00011100000", + RX_DFE_KL_CFG => B"0000011111110", + RX_DFE_KL_CFG2 => X"3290D86C", + RX_DFE_LPM_CFG => X"0954", + RX_DFE_LPM_HOLD_DURING_EIDLE => '1', + RX_DFE_UT_CFG => B"10001111000000000", + RX_DFE_VP_CFG => B"00011111100000011", + RX_DFE_XYD_CFG => B"0000000000000", + RX_DISPERR_SEQ_MATCH => "TRUE", + RX_INT_DATAWIDTH => 0, + RX_OS_CFG => B"0000010000000", + RX_SIG_VALID_DLY => 4, + RX_XCLK_SEL => "RXREC", + SAS_MAX_COM => 64, + SAS_MIN_COM => 36, + SATA_BURST_SEQ_LEN => B"1111", + SATA_BURST_VAL => B"100", + SATA_CPLL_CFG => "VCO_3000MHZ", + SATA_EIDLE_VAL => B"100", + SATA_MAX_BURST => 8, + SATA_MAX_INIT => 21, + SATA_MAX_WAKE => 7, + SATA_MIN_BURST => 4, + SATA_MIN_INIT => 12, + SATA_MIN_WAKE => 4, + SHOW_REALIGN_COMMA => "FALSE", + SIM_CPLLREFCLK_SEL => B"001", + SIM_RECEIVER_DETECT_PASS => "TRUE", + SIM_RESET_SPEEDUP => "FALSE", + SIM_TX_EIDLE_DRIVE_LEVEL => "1", + SIM_VERSION => "3.0", + TERM_RCAL_CFG => B"10000", + TERM_RCAL_OVRD => '0', + TRANS_TIME_RATE => X"0E", + TST_RSV => X"00000000", + TXBUF_EN => "FALSE", + TXBUF_RESET_ON_RATE_CHANGE => "TRUE", + TXDLY_CFG => X"001F", + TXDLY_LCFG => X"030", + TXDLY_TAP_CFG => X"0000", + TXGEARBOX_EN => "FALSE", + TXOUT_DIV => 2, + TXPCSRESET_TIME => B"00001", + TXPHDLY_CFG => X"084020", + TXPH_CFG => X"0780", + TXPH_MONITOR_SEL => B"00000", + TXPMARESET_TIME => B"00011", + TX_CLK25_DIV => 4, + TX_CLKMUX_PD => '1', + TX_DATA_WIDTH => 20, + TX_DEEMPH0 => B"10100", + TX_DEEMPH1 => B"01011", + TX_DRIVE_MODE => "PIPE", + TX_EIDLE_ASSERT_DELAY => B"010", + TX_EIDLE_DEASSERT_DELAY => B"100", + TX_INT_DATAWIDTH => 0, + TX_LOOPBACK_DRIVE_HIZ => "FALSE", + TX_MAINCURSOR_SEL => '0', + TX_MARGIN_FULL_0 => B"1001111", + TX_MARGIN_FULL_1 => B"1001110", + TX_MARGIN_FULL_2 => B"1001101", + TX_MARGIN_FULL_3 => B"1001100", + TX_MARGIN_FULL_4 => B"1000011", + TX_MARGIN_LOW_0 => B"1000101", + TX_MARGIN_LOW_1 => B"1000110", + TX_MARGIN_LOW_2 => B"1000011", + TX_MARGIN_LOW_3 => B"1000010", + TX_MARGIN_LOW_4 => B"1000000", + TX_PREDRIVER_MODE => '0', + TX_QPI_STATUS_EN => '0', + TX_RXDETECT_CFG => X"0064", + TX_RXDETECT_REF => B"011", + TX_XCLK_SEL => "TXUSR", + UCODEER_CLR => '0' + ) + port map ( + CFGRESET => '0', + CLKRSVD(3 downto 1) => B"000", + CLKRSVD(0) => USER_OOBCLK, + CPLLFBCLKLOST => \NLW_gtx_channel.gtxe2_channel_i_CPLLFBCLKLOST_UNCONNECTED\, + CPLLLOCK => QRST_CPLLLOCK(0), + CPLLLOCKDETCLK => '0', + CPLLLOCKEN => '1', + CPLLPD => CPLLPD0_3, + CPLLREFCLKLOST => \NLW_gtx_channel.gtxe2_channel_i_CPLLREFCLKLOST_UNCONNECTED\, + CPLLREFCLKSEL(2 downto 0) => B"001", + CPLLRESET => CPLLRESET0, + DMONITOROUT(7) => \gtx_channel.gtxe2_channel_i_n_177\, + DMONITOROUT(6) => \gtx_channel.gtxe2_channel_i_n_178\, + DMONITOROUT(5) => \gtx_channel.gtxe2_channel_i_n_179\, + DMONITOROUT(4) => \gtx_channel.gtxe2_channel_i_n_180\, + DMONITOROUT(3) => \gtx_channel.gtxe2_channel_i_n_181\, + DMONITOROUT(2) => \gtx_channel.gtxe2_channel_i_n_182\, + DMONITOROUT(1) => \gtx_channel.gtxe2_channel_i_n_183\, + DMONITOROUT(0) => \gtx_channel.gtxe2_channel_i_n_184\, + DRPADDR(8) => '0', + DRPADDR(7 downto 0) => DRPADDR(7 downto 0), + DRPCLK => pipe_dclk_in, + DRPDI(15 downto 0) => DRPDI(15 downto 0), + DRPDO(15 downto 0) => DRP_DO(15 downto 0), + DRPEN => \cplllock_reg1_reg[1]\, + DRPRDY => DRP_RDY, + DRPWE => \cplllock_reg1_reg[1]_0\, + EYESCANDATAERROR => \gtx_channel.gtxe2_channel_i_n_4\, + EYESCANMODE => '0', + EYESCANRESET => '0', + EYESCANTRIGGER => '0', + GTGREFCLK => '0', + GTNORTHREFCLK0 => '0', + GTNORTHREFCLK1 => '0', + GTREFCLK0 => sys_clk, + GTREFCLK1 => '0', + GTREFCLKMONITOR => \NLW_gtx_channel.gtxe2_channel_i_GTREFCLKMONITOR_UNCONNECTED\, + GTRESETSEL => '0', + GTRSVD(15 downto 0) => B"0000000000000000", + GTRXRESET => DRP_GTXRESET, + GTSOUTHREFCLK0 => '0', + GTSOUTHREFCLK1 => '0', + GTTXRESET => DRP_GTXRESET, + GTXRXN => pci_exp_rxn(0), + GTXRXP => pci_exp_rxp(0), + GTXTXN => pci_exp_txn(0), + GTXTXP => pci_exp_txp(0), + LOOPBACK(2 downto 0) => B"000", + PCSRSVDIN(15 downto 0) => B"0000000000000000", + PCSRSVDIN2(4 downto 0) => B"00000", + PCSRSVDOUT(15 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_PCSRSVDOUT_UNCONNECTED\(15 downto 0), + PHYSTATUS => RATE_PHYSTATUS, + PMARSVDIN(4 downto 0) => B"00000", + PMARSVDIN2(4 downto 0) => B"00000", + QPLLCLK => QPLL_QPLLOUTCLK, + QPLLREFCLK => QPLL_QPLLOUTREFCLK, + RESETOVRD => '0', + RX8B10BEN => rxchbonden_1, + RXBUFRESET => '0', + RXBUFSTATUS(2) => \gtx_channel.gtxe2_channel_i_n_82\, + RXBUFSTATUS(1) => \gtx_channel.gtxe2_channel_i_n_83\, + RXBUFSTATUS(0) => \gtx_channel.gtxe2_channel_i_n_84\, + RXBYTEISALIGNED => \gtx_channel.gtxe2_channel_i_n_9\, + RXBYTEREALIGN => \gtx_channel.gtxe2_channel_i_n_10\, + RXCDRFREQRESET => '0', + RXCDRHOLD => '0', + RXCDRLOCK => gt_rxcdrlock_1, + RXCDROVRDEN => '0', + RXCDRRESET => '0', + RXCDRRESETRSV => '0', + RXCHANBONDSEQ => \NLW_gtx_channel.gtxe2_channel_i_RXCHANBONDSEQ_UNCONNECTED\, + RXCHANISALIGNED => PIPE_RXCHANISALIGNED(0), + RXCHANREALIGN => \NLW_gtx_channel.gtxe2_channel_i_RXCHANREALIGN_UNCONNECTED\, + RXCHARISCOMMA(7 downto 4) => \NLW_gtx_channel.gtxe2_channel_i_RXCHARISCOMMA_UNCONNECTED\(7 downto 4), + RXCHARISCOMMA(3) => \gtx_channel.gtxe2_channel_i_n_189\, + RXCHARISCOMMA(2) => \gtx_channel.gtxe2_channel_i_n_190\, + RXCHARISCOMMA(1) => \gtx_channel.gtxe2_channel_i_n_191\, + RXCHARISCOMMA(0) => \gtx_channel.gtxe2_channel_i_n_192\, + RXCHARISK(7 downto 4) => \NLW_gtx_channel.gtxe2_channel_i_RXCHARISK_UNCONNECTED\(7 downto 4), + RXCHARISK(3) => \gtx_channel.gtxe2_channel_i_n_197\, + RXCHARISK(2) => \gtx_channel.gtxe2_channel_i_n_198\, + RXCHARISK(1 downto 0) => gt_rx_data_k_wire_filter(1 downto 0), + RXCHBONDEN => rxchbonden_1, + RXCHBONDI(4 downto 0) => RXCHBONDO(4 downto 0), + RXCHBONDLEVEL(2 downto 0) => B"000", + RXCHBONDMASTER => '0', + RXCHBONDO(4) => \gtx_channel.gtxe2_channel_i_n_91\, + RXCHBONDO(3) => \gtx_channel.gtxe2_channel_i_n_92\, + RXCHBONDO(2) => \gtx_channel.gtxe2_channel_i_n_93\, + RXCHBONDO(1) => \gtx_channel.gtxe2_channel_i_n_94\, + RXCHBONDO(0) => \gtx_channel.gtxe2_channel_i_n_95\, + RXCHBONDSLAVE => rxchbonden_1, + RXCLKCORCNT(1 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_RXCLKCORCNT_UNCONNECTED\(1 downto 0), + RXCOMINITDET => \NLW_gtx_channel.gtxe2_channel_i_RXCOMINITDET_UNCONNECTED\, + RXCOMMADET => \gtx_channel.gtxe2_channel_i_n_16\, + RXCOMMADETEN => '1', + RXCOMSASDET => \NLW_gtx_channel.gtxe2_channel_i_RXCOMSASDET_UNCONNECTED\, + RXCOMWAKEDET => \NLW_gtx_channel.gtxe2_channel_i_RXCOMWAKEDET_UNCONNECTED\, + RXDATA(63 downto 32) => \NLW_gtx_channel.gtxe2_channel_i_RXDATA_UNCONNECTED\(63 downto 32), + RXDATA(31) => \gtx_channel.gtxe2_channel_i_n_138\, + RXDATA(30) => \gtx_channel.gtxe2_channel_i_n_139\, + RXDATA(29) => \gtx_channel.gtxe2_channel_i_n_140\, + RXDATA(28) => \gtx_channel.gtxe2_channel_i_n_141\, + RXDATA(27) => \gtx_channel.gtxe2_channel_i_n_142\, + RXDATA(26) => \gtx_channel.gtxe2_channel_i_n_143\, + RXDATA(25) => \gtx_channel.gtxe2_channel_i_n_144\, + RXDATA(24) => \gtx_channel.gtxe2_channel_i_n_145\, + RXDATA(23) => \gtx_channel.gtxe2_channel_i_n_146\, + RXDATA(22) => \gtx_channel.gtxe2_channel_i_n_147\, + RXDATA(21) => \gtx_channel.gtxe2_channel_i_n_148\, + RXDATA(20) => \gtx_channel.gtxe2_channel_i_n_149\, + RXDATA(19) => \gtx_channel.gtxe2_channel_i_n_150\, + RXDATA(18) => \gtx_channel.gtxe2_channel_i_n_151\, + RXDATA(17) => \gtx_channel.gtxe2_channel_i_n_152\, + RXDATA(16) => \gtx_channel.gtxe2_channel_i_n_153\, + RXDATA(15 downto 0) => gt_rx_data_wire_filter(15 downto 0), + RXDATAVALID => \NLW_gtx_channel.gtxe2_channel_i_RXDATAVALID_UNCONNECTED\, + RXDDIEN => '0', + RXDFEAGCHOLD => \cplllock_reg1_reg[1]_1\, + RXDFEAGCOVRDEN => '0', + RXDFECM1EN => '0', + RXDFELFHOLD => '0', + RXDFELFOVRDEN => '1', + RXDFELPMRESET => '0', + RXDFETAP2HOLD => '0', + RXDFETAP2OVRDEN => '0', + RXDFETAP3HOLD => '0', + RXDFETAP3OVRDEN => '0', + RXDFETAP4HOLD => '0', + RXDFETAP4OVRDEN => '0', + RXDFETAP5HOLD => '0', + RXDFETAP5OVRDEN => '0', + RXDFEUTHOLD => '0', + RXDFEUTOVRDEN => '0', + RXDFEVPHOLD => '0', + RXDFEVPOVRDEN => '0', + RXDFEVSEN => '0', + RXDFEXYDEN => '0', + RXDFEXYDHOLD => '0', + RXDFEXYDOVRDEN => '0', + RXDISPERR(7) => \gtx_channel.gtxe2_channel_i_n_201\, + RXDISPERR(6) => \gtx_channel.gtxe2_channel_i_n_202\, + RXDISPERR(5) => \gtx_channel.gtxe2_channel_i_n_203\, + RXDISPERR(4) => \gtx_channel.gtxe2_channel_i_n_204\, + RXDISPERR(3) => \gtx_channel.gtxe2_channel_i_n_205\, + RXDISPERR(2) => \gtx_channel.gtxe2_channel_i_n_206\, + RXDISPERR(1) => \gtx_channel.gtxe2_channel_i_n_207\, + RXDISPERR(0) => \gtx_channel.gtxe2_channel_i_n_208\, + RXDLYBYPASS => '1', + RXDLYEN => '0', + RXDLYOVRDEN => '0', + RXDLYSRESET => '0', + RXDLYSRESETDONE => pipe_dclk_in_0, + RXELECIDLE => gt_rx_elec_idle_wire_filter(0), + RXELECIDLEMODE(1 downto 0) => B"00", + RXGEARBOXSLIP => '0', + RXHEADER(2 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_RXHEADER_UNCONNECTED\(2 downto 0), + RXHEADERVALID => \NLW_gtx_channel.gtxe2_channel_i_RXHEADERVALID_UNCONNECTED\, + RXLPMEN => rxchbonden_1, + RXLPMHFHOLD => '0', + RXLPMHFOVRDEN => '0', + RXLPMLFHOLD => '0', + RXLPMLFKLOVRDEN => '0', + RXMCOMMAALIGNEN => rxchbonden_1, + RXMONITOROUT(6 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_RXMONITOROUT_UNCONNECTED\(6 downto 0), + RXMONITORSEL(1 downto 0) => B"00", + RXNOTINTABLE(7) => \gtx_channel.gtxe2_channel_i_n_209\, + RXNOTINTABLE(6) => \gtx_channel.gtxe2_channel_i_n_210\, + RXNOTINTABLE(5) => \gtx_channel.gtxe2_channel_i_n_211\, + RXNOTINTABLE(4) => \gtx_channel.gtxe2_channel_i_n_212\, + RXNOTINTABLE(3) => \gtx_channel.gtxe2_channel_i_n_213\, + RXNOTINTABLE(2) => \gtx_channel.gtxe2_channel_i_n_214\, + RXNOTINTABLE(1) => \gtx_channel.gtxe2_channel_i_n_215\, + RXNOTINTABLE(0) => \gtx_channel.gtxe2_channel_i_n_216\, + RXOOBRESET => '0', + RXOSHOLD => '0', + RXOSOVRDEN => '0', + RXOUTCLK => pipe_rxoutclk_out(0), + RXOUTCLKFABRIC => \NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKFABRIC_UNCONNECTED\, + RXOUTCLKPCS => \NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKPCS_UNCONNECTED\, + RXOUTCLKSEL(2 downto 0) => B"000", + RXPCOMMAALIGNEN => rxchbonden_1, + RXPCSRESET => '0', + RXPD(1 downto 0) => PIPE_POWERDOWN(1 downto 0), + RXPHALIGN => '0', + RXPHALIGNDONE => pipe_dclk_in_1, + RXPHALIGNEN => '0', + RXPHDLYPD => '0', + RXPHDLYRESET => '0', + RXPHMONITOR(4 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_RXPHMONITOR_UNCONNECTED\(4 downto 0), + RXPHOVRDEN => '0', + RXPHSLIPMONITOR(4 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_RXPHSLIPMONITOR_UNCONNECTED\(4 downto 0), + RXPMARESET => rate_txpmareset_1, + RXPOLARITY => PIPE_RXPOLARITY(0), + RXPRBSCNTRESET => '0', + RXPRBSERR => \gtx_channel.gtxe2_channel_i_n_27\, + RXPRBSSEL(2 downto 0) => B"000", + RXQPIEN => '0', + RXQPISENN => \NLW_gtx_channel.gtxe2_channel_i_RXQPISENN_UNCONNECTED\, + RXQPISENP => \NLW_gtx_channel.gtxe2_channel_i_RXQPISENP_UNCONNECTED\, + RXRATE(2 downto 1) => B"00", + RXRATE(0) => RXRATE(0), + RXRATEDONE => RATE_RXRATEDONE, + RXRESETDONE => USER_RXRESETDONE, + RXSLIDE => '0', + RXSTARTOFSEQ => \NLW_gtx_channel.gtxe2_channel_i_RXSTARTOFSEQ_UNCONNECTED\, + RXSTATUS(2 downto 0) => pipe_dclk_in_5(2 downto 0), + RXSYSCLKSEL(1) => '0', + RXSYSCLKSEL(0) => RXSYSCLKSEL(0), + RXUSERRDY => rst_userrdy, + RXUSRCLK => pipe_rxusrclk_in, + RXUSRCLK2 => pipe_rxusrclk_in, + RXVALID => gt_rxvalid_1, + SETERRSTATUS => '0', + TSTIN(19 downto 0) => B"11111111111111111111", + TSTOUT(9 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_TSTOUT_UNCONNECTED\(9 downto 0), + TX8B10BBYPASS(7 downto 0) => B"00000000", + TX8B10BEN => rxchbonden_1, + TXBUFDIFFCTRL(2 downto 0) => B"100", + TXBUFSTATUS(1 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_TXBUFSTATUS_UNCONNECTED\(1 downto 0), + TXCHARDISPMODE(7 downto 1) => B"0000000", + TXCHARDISPMODE(0) => PIPE_TXCOMPLIANCE(0), + TXCHARDISPVAL(7 downto 0) => B"00000000", + TXCHARISK(7 downto 2) => B"000000", + TXCHARISK(1 downto 0) => PIPE_TXDATAK(1 downto 0), + TXCOMFINISH => \NLW_gtx_channel.gtxe2_channel_i_TXCOMFINISH_UNCONNECTED\, + TXCOMINIT => '0', + TXCOMSAS => '0', + TXCOMWAKE => '0', + TXDATA(63 downto 16) => B"000000000000000000000000000000000000000000000000", + TXDATA(15 downto 0) => PIPE_TXDATA(15 downto 0), + TXDEEMPH => pipe_tx_deemph_gt, + TXDETECTRX => pipe_tx_rcvr_det_gt, + TXDIFFCTRL(3 downto 0) => B"1100", + TXDIFFPD => '0', + TXDLYBYPASS => '0', + TXDLYEN => '0', + TXDLYHOLD => '0', + TXDLYOVRDEN => '0', + TXDLYSRESET => SYNC_TXDLYSRESET, + TXDLYSRESETDONE => pipe_dclk_in_2, + TXDLYUPDOWN => '0', + TXELECIDLE => PIPE_TXELECIDLE(0), + TXGEARBOXREADY => \NLW_gtx_channel.gtxe2_channel_i_TXGEARBOXREADY_UNCONNECTED\, + TXHEADER(2 downto 0) => B"000", + TXINHIBIT => '0', + TXMAINCURSOR(6 downto 0) => TXMAINCURSOR(6 downto 0), + TXMARGIN(2 downto 0) => \cplllock_reg1_reg[1]_2\(2 downto 0), + TXOUTCLK => \gtx_channel.gtxe2_channel_i_n_37\, + TXOUTCLKFABRIC => \NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKFABRIC_UNCONNECTED\, + TXOUTCLKPCS => \NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKPCS_UNCONNECTED\, + TXOUTCLKSEL(2 downto 0) => B"000", + TXPCSRESET => '0', + TXPD(1 downto 0) => PIPE_POWERDOWN(1 downto 0), + TXPDELECIDLEMODE => '0', + TXPHALIGN => SYNC_TXPHALIGN, + TXPHALIGNDONE => pipe_dclk_in_3, + TXPHALIGNEN => '1', + TXPHDLYPD => '0', + TXPHDLYRESET => '0', + TXPHDLYTSTCLK => '0', + TXPHINIT => SYNC_TXPHINIT, + TXPHINITDONE => pipe_dclk_in_4, + TXPHOVRDEN => '0', + TXPISOPD => '0', + TXPMARESET => rate_txpmareset_1, + TXPOLARITY => '0', + TXPOSTCURSOR(4 downto 0) => TXPOSTCURSOR(4 downto 0), + TXPOSTCURSORINV => '0', + TXPRBSFORCEERR => '0', + TXPRBSSEL(2 downto 0) => B"000", + TXPRECURSOR(4 downto 0) => TXPRECURSOR(4 downto 0), + TXPRECURSORINV => '0', + TXQPIBIASEN => '0', + TXQPISENN => \NLW_gtx_channel.gtxe2_channel_i_TXQPISENN_UNCONNECTED\, + TXQPISENP => \NLW_gtx_channel.gtxe2_channel_i_TXQPISENP_UNCONNECTED\, + TXQPISTRONGPDOWN => '0', + TXQPIWEAKPUP => '0', + TXRATE(2 downto 1) => B"00", + TXRATE(0) => RXRATE(0), + TXRATEDONE => RATE_TXRATEDONE, + TXRESETDONE => USER_TXRESETDONE, + TXSEQUENCE(6 downto 0) => B"0000000", + TXSTARTSEQ => '0', + TXSWING => '0', + TXSYSCLKSEL(1) => '0', + TXSYSCLKSEL(0) => RXSYSCLKSEL(0), + TXUSERRDY => rst_userrdy, + TXUSRCLK => pipe_pclk_in, + TXUSRCLK2 => pipe_pclk_in + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_gt_wrapper_43 is + port ( + cpllpd_1 : out STD_LOGIC; + QRST_CPLLLOCK : out STD_LOGIC_VECTOR ( 0 to 0 ); + DRP_RDY : out STD_LOGIC; + pci_exp_txn : out STD_LOGIC_VECTOR ( 0 to 0 ); + pci_exp_txp : out STD_LOGIC_VECTOR ( 0 to 0 ); + RATE_PHYSTATUS : out STD_LOGIC; + gt_rxcdrlock_2 : out STD_LOGIC; + PIPE_RXCHANISALIGNED : out STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_dclk_in_0 : out STD_LOGIC; + gt_rx_elec_idle_wire_filter : out STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_rxoutclk_out : out STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_dclk_in_1 : out STD_LOGIC; + RATE_RXRATEDONE : out STD_LOGIC; + USER_RXRESETDONE : out STD_LOGIC; + gt_rxvalid_2 : out STD_LOGIC; + pipe_dclk_in_2 : out STD_LOGIC; + pipe_dclk_in_3 : out STD_LOGIC; + pipe_dclk_in_4 : out STD_LOGIC; + RATE_TXRATEDONE : out STD_LOGIC; + USER_TXRESETDONE : out STD_LOGIC; + DRP_DO : out STD_LOGIC_VECTOR ( 15 downto 0 ); + pipe_dclk_in_5 : out STD_LOGIC_VECTOR ( 2 downto 0 ); + gt_rx_data_wire_filter : out STD_LOGIC_VECTOR ( 15 downto 0 ); + gt_rx_data_k_wire_filter : out STD_LOGIC_VECTOR ( 1 downto 0 ); + gt_cpllpdrefclk : in STD_LOGIC; + CPLLPD0_4 : in STD_LOGIC; + pipe_dclk_in : in STD_LOGIC; + \cplllock_reg1_reg[2]\ : in STD_LOGIC; + \cplllock_reg1_reg[2]_0\ : in STD_LOGIC; + sys_clk : in STD_LOGIC; + DRP_GTXRESET : in STD_LOGIC; + pci_exp_rxn : in STD_LOGIC_VECTOR ( 0 to 0 ); + pci_exp_rxp : in STD_LOGIC_VECTOR ( 0 to 0 ); + QPLL_QPLLOUTCLK : in STD_LOGIC; + QPLL_QPLLOUTREFCLK : in STD_LOGIC; + rxchbonden_2 : in STD_LOGIC; + \cplllock_reg1_reg[2]_1\ : in STD_LOGIC; + rate_txpmareset_2 : in STD_LOGIC; + PIPE_RXPOLARITY : in STD_LOGIC_VECTOR ( 0 to 0 ); + rst_userrdy : in STD_LOGIC; + pipe_rxusrclk_in : in STD_LOGIC; + pipe_tx_deemph_gt : in STD_LOGIC; + pipe_tx_rcvr_det_gt : in STD_LOGIC; + SYNC_TXDLYSRESET : in STD_LOGIC; + PIPE_TXELECIDLE : in STD_LOGIC_VECTOR ( 0 to 0 ); + SYNC_TXPHALIGN : in STD_LOGIC; + SYNC_TXPHINIT : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + DRPDI : in STD_LOGIC_VECTOR ( 15 downto 0 ); + PIPE_POWERDOWN : in STD_LOGIC_VECTOR ( 1 downto 0 ); + RXSYSCLKSEL : in STD_LOGIC_VECTOR ( 0 to 0 ); + RXRATE : in STD_LOGIC_VECTOR ( 0 to 0 ); + \cplllock_reg1_reg[2]_2\ : in STD_LOGIC_VECTOR ( 2 downto 0 ); + USER_OOBCLK : in STD_LOGIC; + RXCHBONDO : in STD_LOGIC_VECTOR ( 4 downto 0 ); + TXPOSTCURSOR : in STD_LOGIC_VECTOR ( 4 downto 0 ); + TXPRECURSOR : in STD_LOGIC_VECTOR ( 4 downto 0 ); + PIPE_TXDATA : in STD_LOGIC_VECTOR ( 15 downto 0 ); + TXMAINCURSOR : in STD_LOGIC_VECTOR ( 6 downto 0 ); + PIPE_TXCOMPLIANCE : in STD_LOGIC_VECTOR ( 0 to 0 ); + PIPE_TXDATAK : in STD_LOGIC_VECTOR ( 1 downto 0 ); + DRPADDR : in STD_LOGIC_VECTOR ( 7 downto 0 ); + rate_cpllreset_2 : in STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_gt_wrapper_43 : entity is "pcie_7x_0_gt_wrapper"; +end pcie_7x_0_pcie_7x_0_gt_wrapper_43; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_gt_wrapper_43 is + signal CPLLRESET0 : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_10\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_138\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_139\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_140\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_141\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_142\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_143\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_144\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_145\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_146\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_147\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_148\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_149\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_150\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_151\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_152\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_153\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_16\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_177\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_178\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_179\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_180\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_181\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_182\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_183\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_184\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_189\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_190\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_191\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_192\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_197\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_198\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_201\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_202\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_203\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_204\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_205\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_206\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_207\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_208\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_209\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_210\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_211\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_212\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_213\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_214\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_215\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_216\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_27\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_37\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_4\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_82\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_83\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_84\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_9\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_91\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_92\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_93\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_94\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_95\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_CPLLFBCLKLOST_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_CPLLREFCLKLOST_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_GTREFCLKMONITOR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXCHANBONDSEQ_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXCHANREALIGN_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXCOMINITDET_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXCOMSASDET_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXCOMWAKEDET_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXDATAVALID_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXHEADERVALID_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKFABRIC_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKPCS_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXQPISENN_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXQPISENP_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXSTARTOFSEQ_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_TXCOMFINISH_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_TXGEARBOXREADY_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKFABRIC_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKPCS_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_TXQPISENN_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_TXQPISENP_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_PCSRSVDOUT_UNCONNECTED\ : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXCHARISCOMMA_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 4 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXCHARISK_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 4 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXCLKCORCNT_UNCONNECTED\ : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXDATA_UNCONNECTED\ : STD_LOGIC_VECTOR ( 63 downto 32 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXHEADER_UNCONNECTED\ : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXMONITOROUT_UNCONNECTED\ : STD_LOGIC_VECTOR ( 6 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXPHMONITOR_UNCONNECTED\ : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXPHSLIPMONITOR_UNCONNECTED\ : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_TSTOUT_UNCONNECTED\ : STD_LOGIC_VECTOR ( 9 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_TXBUFSTATUS_UNCONNECTED\ : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute BOX_TYPE : string; + attribute BOX_TYPE of \gtx_channel.gtxe2_channel_i\ : label is "PRIMITIVE"; +begin +cpllPDInst: entity work.pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd_56 + port map ( + CPLLRESET0 => CPLLRESET0, + RST_CPLLRESET => RST_CPLLRESET, + cpllpd_1 => cpllpd_1, + gt_cpllpdrefclk => gt_cpllpdrefclk, + rate_cpllreset_2 => rate_cpllreset_2 + ); +\gtx_channel.gtxe2_channel_i\: unisim.vcomponents.GTXE2_CHANNEL + generic map( + ALIGN_COMMA_DOUBLE => "FALSE", + ALIGN_COMMA_ENABLE => B"1111111111", + ALIGN_COMMA_WORD => 1, + ALIGN_MCOMMA_DET => "TRUE", + ALIGN_MCOMMA_VALUE => B"1010000011", + ALIGN_PCOMMA_DET => "TRUE", + ALIGN_PCOMMA_VALUE => B"0101111100", + CBCC_DATA_SOURCE_SEL => "DECODED", + CHAN_BOND_KEEP_ALIGN => "TRUE", + CHAN_BOND_MAX_SKEW => 7, + CHAN_BOND_SEQ_1_1 => B"0001001010", + CHAN_BOND_SEQ_1_2 => B"0001001010", + CHAN_BOND_SEQ_1_3 => B"0001001010", + CHAN_BOND_SEQ_1_4 => B"0110111100", + CHAN_BOND_SEQ_1_ENABLE => B"1111", + CHAN_BOND_SEQ_2_1 => B"0001000101", + CHAN_BOND_SEQ_2_2 => B"0001000101", + CHAN_BOND_SEQ_2_3 => B"0001000101", + CHAN_BOND_SEQ_2_4 => B"0110111100", + CHAN_BOND_SEQ_2_ENABLE => B"1111", + CHAN_BOND_SEQ_2_USE => "TRUE", + CHAN_BOND_SEQ_LEN => 4, + CLK_CORRECT_USE => "TRUE", + CLK_COR_KEEP_IDLE => "TRUE", + CLK_COR_MAX_LAT => 20, + CLK_COR_MIN_LAT => 18, + CLK_COR_PRECEDENCE => "TRUE", + CLK_COR_REPEAT_WAIT => 0, + CLK_COR_SEQ_1_1 => B"0100011100", + CLK_COR_SEQ_1_2 => B"0000000000", + CLK_COR_SEQ_1_3 => B"0000000000", + CLK_COR_SEQ_1_4 => B"0000000000", + CLK_COR_SEQ_1_ENABLE => B"1111", + CLK_COR_SEQ_2_1 => B"0000000000", + CLK_COR_SEQ_2_2 => B"0000000000", + CLK_COR_SEQ_2_3 => B"0000000000", + CLK_COR_SEQ_2_4 => B"0000000000", + CLK_COR_SEQ_2_ENABLE => B"0000", + CLK_COR_SEQ_2_USE => "FALSE", + CLK_COR_SEQ_LEN => 1, + CPLL_CFG => X"A407CC", + CPLL_FBDIV => 5, + CPLL_FBDIV_45 => 5, + CPLL_INIT_CFG => X"00001E", + CPLL_LOCK_CFG => X"01E8", + CPLL_REFCLK_DIV => 1, + DEC_MCOMMA_DETECT => "TRUE", + DEC_PCOMMA_DETECT => "TRUE", + DEC_VALID_COMMA_ONLY => "FALSE", + DMONITOR_CFG => X"000B01", + ES_CONTROL => B"000000", + ES_ERRDET_EN => "FALSE", + ES_EYE_SCAN_EN => "FALSE", + ES_HORZ_OFFSET => X"000", + ES_PMA_CFG => B"0000000000", + ES_PRESCALE => B"00000", + ES_QUALIFIER => X"00000000000000000000", + ES_QUAL_MASK => X"00000000000000000000", + ES_SDATA_MASK => X"00000000000000000000", + ES_VERT_OFFSET => B"000000000", + FTS_DESKEW_SEQ_ENABLE => B"1111", + FTS_LANE_DESKEW_CFG => B"1111", + FTS_LANE_DESKEW_EN => "TRUE", + GEARBOX_MODE => B"000", + IS_CPLLLOCKDETCLK_INVERTED => '0', + IS_DRPCLK_INVERTED => '0', + IS_GTGREFCLK_INVERTED => '0', + IS_RXUSRCLK2_INVERTED => '0', + IS_RXUSRCLK_INVERTED => '0', + IS_TXPHDLYTSTCLK_INVERTED => '0', + IS_TXUSRCLK2_INVERTED => '0', + IS_TXUSRCLK_INVERTED => '0', + OUTREFCLK_SEL_INV => B"11", + PCS_PCIE_EN => "TRUE", + PCS_RSVD_ATTR => X"0000000001CF", + PD_TRANS_TIME_FROM_P2 => X"03C", + PD_TRANS_TIME_NONE_P2 => X"09", + PD_TRANS_TIME_TO_P2 => X"64", + PMA_RSV => X"00018480", + PMA_RSV2 => X"2050", + PMA_RSV3 => B"00", + PMA_RSV4 => X"00000000", + RXBUFRESET_TIME => B"00001", + RXBUF_ADDR_MODE => "FULL", + RXBUF_EIDLE_HI_CNT => B"0100", + RXBUF_EIDLE_LO_CNT => B"0000", + RXBUF_EN => "TRUE", + RXBUF_RESET_ON_CB_CHANGE => "TRUE", + RXBUF_RESET_ON_COMMAALIGN => "FALSE", + RXBUF_RESET_ON_EIDLE => "TRUE", + RXBUF_RESET_ON_RATE_CHANGE => "TRUE", + RXBUF_THRESH_OVFLW => 61, + RXBUF_THRESH_OVRD => "FALSE", + RXBUF_THRESH_UNDFLW => 4, + RXCDRFREQRESET_TIME => B"00001", + RXCDRPHRESET_TIME => B"00001", + RXCDR_CFG => X"03000023FF10200020", + RXCDR_FR_RESET_ON_EIDLE => '0', + RXCDR_HOLD_DURING_EIDLE => '1', + RXCDR_LOCK_CFG => B"010101", + RXCDR_PH_RESET_ON_EIDLE => '0', + RXDFELPMRESET_TIME => B"0001111", + RXDLY_CFG => X"001F", + RXDLY_LCFG => X"030", + RXDLY_TAP_CFG => X"0000", + RXGEARBOX_EN => "FALSE", + RXISCANRESET_TIME => B"00001", + RXLPM_HF_CFG => B"00000011110000", + RXLPM_LF_CFG => B"00000011110000", + RXOOB_CFG => B"0000110", + RXOUT_DIV => 2, + RXPCSRESET_TIME => B"00001", + RXPHDLY_CFG => X"004020", + RXPH_CFG => X"000000", + RXPH_MONITOR_SEL => B"00000", + RXPMARESET_TIME => B"00011", + RXPRBS_ERR_LOOPBACK => '0', + RXSLIDE_AUTO_WAIT => 7, + RXSLIDE_MODE => "PMA", + RX_BIAS_CFG => B"000000000100", + RX_BUFFER_CFG => B"000000", + RX_CLK25_DIV => 4, + RX_CLKMUX_PD => '1', + RX_CM_SEL => B"11", + RX_CM_TRIM => B"010", + RX_DATA_WIDTH => 20, + RX_DDI_SEL => B"000000", + RX_DEBUG_CFG => B"000000000000", + RX_DEFER_RESET_BUF_EN => "TRUE", + RX_DFE_GAIN_CFG => X"020FEA", + RX_DFE_H2_CFG => B"000000000000", + RX_DFE_H3_CFG => B"000001000000", + RX_DFE_H4_CFG => B"00011110000", + RX_DFE_H5_CFG => B"00011100000", + RX_DFE_KL_CFG => B"0000011111110", + RX_DFE_KL_CFG2 => X"3290D86C", + RX_DFE_LPM_CFG => X"0954", + RX_DFE_LPM_HOLD_DURING_EIDLE => '1', + RX_DFE_UT_CFG => B"10001111000000000", + RX_DFE_VP_CFG => B"00011111100000011", + RX_DFE_XYD_CFG => B"0000000000000", + RX_DISPERR_SEQ_MATCH => "TRUE", + RX_INT_DATAWIDTH => 0, + RX_OS_CFG => B"0000010000000", + RX_SIG_VALID_DLY => 4, + RX_XCLK_SEL => "RXREC", + SAS_MAX_COM => 64, + SAS_MIN_COM => 36, + SATA_BURST_SEQ_LEN => B"1111", + SATA_BURST_VAL => B"100", + SATA_CPLL_CFG => "VCO_3000MHZ", + SATA_EIDLE_VAL => B"100", + SATA_MAX_BURST => 8, + SATA_MAX_INIT => 21, + SATA_MAX_WAKE => 7, + SATA_MIN_BURST => 4, + SATA_MIN_INIT => 12, + SATA_MIN_WAKE => 4, + SHOW_REALIGN_COMMA => "FALSE", + SIM_CPLLREFCLK_SEL => B"001", + SIM_RECEIVER_DETECT_PASS => "TRUE", + SIM_RESET_SPEEDUP => "FALSE", + SIM_TX_EIDLE_DRIVE_LEVEL => "1", + SIM_VERSION => "3.0", + TERM_RCAL_CFG => B"10000", + TERM_RCAL_OVRD => '0', + TRANS_TIME_RATE => X"0E", + TST_RSV => X"00000000", + TXBUF_EN => "FALSE", + TXBUF_RESET_ON_RATE_CHANGE => "TRUE", + TXDLY_CFG => X"001F", + TXDLY_LCFG => X"030", + TXDLY_TAP_CFG => X"0000", + TXGEARBOX_EN => "FALSE", + TXOUT_DIV => 2, + TXPCSRESET_TIME => B"00001", + TXPHDLY_CFG => X"084020", + TXPH_CFG => X"0780", + TXPH_MONITOR_SEL => B"00000", + TXPMARESET_TIME => B"00011", + TX_CLK25_DIV => 4, + TX_CLKMUX_PD => '1', + TX_DATA_WIDTH => 20, + TX_DEEMPH0 => B"10100", + TX_DEEMPH1 => B"01011", + TX_DRIVE_MODE => "PIPE", + TX_EIDLE_ASSERT_DELAY => B"010", + TX_EIDLE_DEASSERT_DELAY => B"100", + TX_INT_DATAWIDTH => 0, + TX_LOOPBACK_DRIVE_HIZ => "FALSE", + TX_MAINCURSOR_SEL => '0', + TX_MARGIN_FULL_0 => B"1001111", + TX_MARGIN_FULL_1 => B"1001110", + TX_MARGIN_FULL_2 => B"1001101", + TX_MARGIN_FULL_3 => B"1001100", + TX_MARGIN_FULL_4 => B"1000011", + TX_MARGIN_LOW_0 => B"1000101", + TX_MARGIN_LOW_1 => B"1000110", + TX_MARGIN_LOW_2 => B"1000011", + TX_MARGIN_LOW_3 => B"1000010", + TX_MARGIN_LOW_4 => B"1000000", + TX_PREDRIVER_MODE => '0', + TX_QPI_STATUS_EN => '0', + TX_RXDETECT_CFG => X"0064", + TX_RXDETECT_REF => B"011", + TX_XCLK_SEL => "TXUSR", + UCODEER_CLR => '0' + ) + port map ( + CFGRESET => '0', + CLKRSVD(3 downto 1) => B"000", + CLKRSVD(0) => USER_OOBCLK, + CPLLFBCLKLOST => \NLW_gtx_channel.gtxe2_channel_i_CPLLFBCLKLOST_UNCONNECTED\, + CPLLLOCK => QRST_CPLLLOCK(0), + CPLLLOCKDETCLK => '0', + CPLLLOCKEN => '1', + CPLLPD => CPLLPD0_4, + CPLLREFCLKLOST => \NLW_gtx_channel.gtxe2_channel_i_CPLLREFCLKLOST_UNCONNECTED\, + CPLLREFCLKSEL(2 downto 0) => B"001", + CPLLRESET => CPLLRESET0, + DMONITOROUT(7) => \gtx_channel.gtxe2_channel_i_n_177\, + DMONITOROUT(6) => \gtx_channel.gtxe2_channel_i_n_178\, + DMONITOROUT(5) => \gtx_channel.gtxe2_channel_i_n_179\, + DMONITOROUT(4) => \gtx_channel.gtxe2_channel_i_n_180\, + DMONITOROUT(3) => \gtx_channel.gtxe2_channel_i_n_181\, + DMONITOROUT(2) => \gtx_channel.gtxe2_channel_i_n_182\, + DMONITOROUT(1) => \gtx_channel.gtxe2_channel_i_n_183\, + DMONITOROUT(0) => \gtx_channel.gtxe2_channel_i_n_184\, + DRPADDR(8) => '0', + DRPADDR(7 downto 0) => DRPADDR(7 downto 0), + DRPCLK => pipe_dclk_in, + DRPDI(15 downto 0) => DRPDI(15 downto 0), + DRPDO(15 downto 0) => DRP_DO(15 downto 0), + DRPEN => \cplllock_reg1_reg[2]\, + DRPRDY => DRP_RDY, + DRPWE => \cplllock_reg1_reg[2]_0\, + EYESCANDATAERROR => \gtx_channel.gtxe2_channel_i_n_4\, + EYESCANMODE => '0', + EYESCANRESET => '0', + EYESCANTRIGGER => '0', + GTGREFCLK => '0', + GTNORTHREFCLK0 => '0', + GTNORTHREFCLK1 => '0', + GTREFCLK0 => sys_clk, + GTREFCLK1 => '0', + GTREFCLKMONITOR => \NLW_gtx_channel.gtxe2_channel_i_GTREFCLKMONITOR_UNCONNECTED\, + GTRESETSEL => '0', + GTRSVD(15 downto 0) => B"0000000000000000", + GTRXRESET => DRP_GTXRESET, + GTSOUTHREFCLK0 => '0', + GTSOUTHREFCLK1 => '0', + GTTXRESET => DRP_GTXRESET, + GTXRXN => pci_exp_rxn(0), + GTXRXP => pci_exp_rxp(0), + GTXTXN => pci_exp_txn(0), + GTXTXP => pci_exp_txp(0), + LOOPBACK(2 downto 0) => B"000", + PCSRSVDIN(15 downto 0) => B"0000000000000000", + PCSRSVDIN2(4 downto 0) => B"00000", + PCSRSVDOUT(15 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_PCSRSVDOUT_UNCONNECTED\(15 downto 0), + PHYSTATUS => RATE_PHYSTATUS, + PMARSVDIN(4 downto 0) => B"00000", + PMARSVDIN2(4 downto 0) => B"00000", + QPLLCLK => QPLL_QPLLOUTCLK, + QPLLREFCLK => QPLL_QPLLOUTREFCLK, + RESETOVRD => '0', + RX8B10BEN => rxchbonden_2, + RXBUFRESET => '0', + RXBUFSTATUS(2) => \gtx_channel.gtxe2_channel_i_n_82\, + RXBUFSTATUS(1) => \gtx_channel.gtxe2_channel_i_n_83\, + RXBUFSTATUS(0) => \gtx_channel.gtxe2_channel_i_n_84\, + RXBYTEISALIGNED => \gtx_channel.gtxe2_channel_i_n_9\, + RXBYTEREALIGN => \gtx_channel.gtxe2_channel_i_n_10\, + RXCDRFREQRESET => '0', + RXCDRHOLD => '0', + RXCDRLOCK => gt_rxcdrlock_2, + RXCDROVRDEN => '0', + RXCDRRESET => '0', + RXCDRRESETRSV => '0', + RXCHANBONDSEQ => \NLW_gtx_channel.gtxe2_channel_i_RXCHANBONDSEQ_UNCONNECTED\, + RXCHANISALIGNED => PIPE_RXCHANISALIGNED(0), + RXCHANREALIGN => \NLW_gtx_channel.gtxe2_channel_i_RXCHANREALIGN_UNCONNECTED\, + RXCHARISCOMMA(7 downto 4) => \NLW_gtx_channel.gtxe2_channel_i_RXCHARISCOMMA_UNCONNECTED\(7 downto 4), + RXCHARISCOMMA(3) => \gtx_channel.gtxe2_channel_i_n_189\, + RXCHARISCOMMA(2) => \gtx_channel.gtxe2_channel_i_n_190\, + RXCHARISCOMMA(1) => \gtx_channel.gtxe2_channel_i_n_191\, + RXCHARISCOMMA(0) => \gtx_channel.gtxe2_channel_i_n_192\, + RXCHARISK(7 downto 4) => \NLW_gtx_channel.gtxe2_channel_i_RXCHARISK_UNCONNECTED\(7 downto 4), + RXCHARISK(3) => \gtx_channel.gtxe2_channel_i_n_197\, + RXCHARISK(2) => \gtx_channel.gtxe2_channel_i_n_198\, + RXCHARISK(1 downto 0) => gt_rx_data_k_wire_filter(1 downto 0), + RXCHBONDEN => rxchbonden_2, + RXCHBONDI(4 downto 0) => RXCHBONDO(4 downto 0), + RXCHBONDLEVEL(2 downto 0) => B"000", + RXCHBONDMASTER => '0', + RXCHBONDO(4) => \gtx_channel.gtxe2_channel_i_n_91\, + RXCHBONDO(3) => \gtx_channel.gtxe2_channel_i_n_92\, + RXCHBONDO(2) => \gtx_channel.gtxe2_channel_i_n_93\, + RXCHBONDO(1) => \gtx_channel.gtxe2_channel_i_n_94\, + RXCHBONDO(0) => \gtx_channel.gtxe2_channel_i_n_95\, + RXCHBONDSLAVE => rxchbonden_2, + RXCLKCORCNT(1 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_RXCLKCORCNT_UNCONNECTED\(1 downto 0), + RXCOMINITDET => \NLW_gtx_channel.gtxe2_channel_i_RXCOMINITDET_UNCONNECTED\, + RXCOMMADET => \gtx_channel.gtxe2_channel_i_n_16\, + RXCOMMADETEN => '1', + RXCOMSASDET => \NLW_gtx_channel.gtxe2_channel_i_RXCOMSASDET_UNCONNECTED\, + RXCOMWAKEDET => \NLW_gtx_channel.gtxe2_channel_i_RXCOMWAKEDET_UNCONNECTED\, + RXDATA(63 downto 32) => \NLW_gtx_channel.gtxe2_channel_i_RXDATA_UNCONNECTED\(63 downto 32), + RXDATA(31) => \gtx_channel.gtxe2_channel_i_n_138\, + RXDATA(30) => \gtx_channel.gtxe2_channel_i_n_139\, + RXDATA(29) => \gtx_channel.gtxe2_channel_i_n_140\, + RXDATA(28) => \gtx_channel.gtxe2_channel_i_n_141\, + RXDATA(27) => \gtx_channel.gtxe2_channel_i_n_142\, + RXDATA(26) => \gtx_channel.gtxe2_channel_i_n_143\, + RXDATA(25) => \gtx_channel.gtxe2_channel_i_n_144\, + RXDATA(24) => \gtx_channel.gtxe2_channel_i_n_145\, + RXDATA(23) => \gtx_channel.gtxe2_channel_i_n_146\, + RXDATA(22) => \gtx_channel.gtxe2_channel_i_n_147\, + RXDATA(21) => \gtx_channel.gtxe2_channel_i_n_148\, + RXDATA(20) => \gtx_channel.gtxe2_channel_i_n_149\, + RXDATA(19) => \gtx_channel.gtxe2_channel_i_n_150\, + RXDATA(18) => \gtx_channel.gtxe2_channel_i_n_151\, + RXDATA(17) => \gtx_channel.gtxe2_channel_i_n_152\, + RXDATA(16) => \gtx_channel.gtxe2_channel_i_n_153\, + RXDATA(15 downto 0) => gt_rx_data_wire_filter(15 downto 0), + RXDATAVALID => \NLW_gtx_channel.gtxe2_channel_i_RXDATAVALID_UNCONNECTED\, + RXDDIEN => '0', + RXDFEAGCHOLD => \cplllock_reg1_reg[2]_1\, + RXDFEAGCOVRDEN => '0', + RXDFECM1EN => '0', + RXDFELFHOLD => '0', + RXDFELFOVRDEN => '1', + RXDFELPMRESET => '0', + RXDFETAP2HOLD => '0', + RXDFETAP2OVRDEN => '0', + RXDFETAP3HOLD => '0', + RXDFETAP3OVRDEN => '0', + RXDFETAP4HOLD => '0', + RXDFETAP4OVRDEN => '0', + RXDFETAP5HOLD => '0', + RXDFETAP5OVRDEN => '0', + RXDFEUTHOLD => '0', + RXDFEUTOVRDEN => '0', + RXDFEVPHOLD => '0', + RXDFEVPOVRDEN => '0', + RXDFEVSEN => '0', + RXDFEXYDEN => '0', + RXDFEXYDHOLD => '0', + RXDFEXYDOVRDEN => '0', + RXDISPERR(7) => \gtx_channel.gtxe2_channel_i_n_201\, + RXDISPERR(6) => \gtx_channel.gtxe2_channel_i_n_202\, + RXDISPERR(5) => \gtx_channel.gtxe2_channel_i_n_203\, + RXDISPERR(4) => \gtx_channel.gtxe2_channel_i_n_204\, + RXDISPERR(3) => \gtx_channel.gtxe2_channel_i_n_205\, + RXDISPERR(2) => \gtx_channel.gtxe2_channel_i_n_206\, + RXDISPERR(1) => \gtx_channel.gtxe2_channel_i_n_207\, + RXDISPERR(0) => \gtx_channel.gtxe2_channel_i_n_208\, + RXDLYBYPASS => '1', + RXDLYEN => '0', + RXDLYOVRDEN => '0', + RXDLYSRESET => '0', + RXDLYSRESETDONE => pipe_dclk_in_0, + RXELECIDLE => gt_rx_elec_idle_wire_filter(0), + RXELECIDLEMODE(1 downto 0) => B"00", + RXGEARBOXSLIP => '0', + RXHEADER(2 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_RXHEADER_UNCONNECTED\(2 downto 0), + RXHEADERVALID => \NLW_gtx_channel.gtxe2_channel_i_RXHEADERVALID_UNCONNECTED\, + RXLPMEN => rxchbonden_2, + RXLPMHFHOLD => '0', + RXLPMHFOVRDEN => '0', + RXLPMLFHOLD => '0', + RXLPMLFKLOVRDEN => '0', + RXMCOMMAALIGNEN => rxchbonden_2, + RXMONITOROUT(6 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_RXMONITOROUT_UNCONNECTED\(6 downto 0), + RXMONITORSEL(1 downto 0) => B"00", + RXNOTINTABLE(7) => \gtx_channel.gtxe2_channel_i_n_209\, + RXNOTINTABLE(6) => \gtx_channel.gtxe2_channel_i_n_210\, + RXNOTINTABLE(5) => \gtx_channel.gtxe2_channel_i_n_211\, + RXNOTINTABLE(4) => \gtx_channel.gtxe2_channel_i_n_212\, + RXNOTINTABLE(3) => \gtx_channel.gtxe2_channel_i_n_213\, + RXNOTINTABLE(2) => \gtx_channel.gtxe2_channel_i_n_214\, + RXNOTINTABLE(1) => \gtx_channel.gtxe2_channel_i_n_215\, + RXNOTINTABLE(0) => \gtx_channel.gtxe2_channel_i_n_216\, + RXOOBRESET => '0', + RXOSHOLD => '0', + RXOSOVRDEN => '0', + RXOUTCLK => pipe_rxoutclk_out(0), + RXOUTCLKFABRIC => \NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKFABRIC_UNCONNECTED\, + RXOUTCLKPCS => \NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKPCS_UNCONNECTED\, + RXOUTCLKSEL(2 downto 0) => B"000", + RXPCOMMAALIGNEN => rxchbonden_2, + RXPCSRESET => '0', + RXPD(1 downto 0) => PIPE_POWERDOWN(1 downto 0), + RXPHALIGN => '0', + RXPHALIGNDONE => pipe_dclk_in_1, + RXPHALIGNEN => '0', + RXPHDLYPD => '0', + RXPHDLYRESET => '0', + RXPHMONITOR(4 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_RXPHMONITOR_UNCONNECTED\(4 downto 0), + RXPHOVRDEN => '0', + RXPHSLIPMONITOR(4 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_RXPHSLIPMONITOR_UNCONNECTED\(4 downto 0), + RXPMARESET => rate_txpmareset_2, + RXPOLARITY => PIPE_RXPOLARITY(0), + RXPRBSCNTRESET => '0', + RXPRBSERR => \gtx_channel.gtxe2_channel_i_n_27\, + RXPRBSSEL(2 downto 0) => B"000", + RXQPIEN => '0', + RXQPISENN => \NLW_gtx_channel.gtxe2_channel_i_RXQPISENN_UNCONNECTED\, + RXQPISENP => \NLW_gtx_channel.gtxe2_channel_i_RXQPISENP_UNCONNECTED\, + RXRATE(2 downto 1) => B"00", + RXRATE(0) => RXRATE(0), + RXRATEDONE => RATE_RXRATEDONE, + RXRESETDONE => USER_RXRESETDONE, + RXSLIDE => '0', + RXSTARTOFSEQ => \NLW_gtx_channel.gtxe2_channel_i_RXSTARTOFSEQ_UNCONNECTED\, + RXSTATUS(2 downto 0) => pipe_dclk_in_5(2 downto 0), + RXSYSCLKSEL(1) => '0', + RXSYSCLKSEL(0) => RXSYSCLKSEL(0), + RXUSERRDY => rst_userrdy, + RXUSRCLK => pipe_rxusrclk_in, + RXUSRCLK2 => pipe_rxusrclk_in, + RXVALID => gt_rxvalid_2, + SETERRSTATUS => '0', + TSTIN(19 downto 0) => B"11111111111111111111", + TSTOUT(9 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_TSTOUT_UNCONNECTED\(9 downto 0), + TX8B10BBYPASS(7 downto 0) => B"00000000", + TX8B10BEN => rxchbonden_2, + TXBUFDIFFCTRL(2 downto 0) => B"100", + TXBUFSTATUS(1 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_TXBUFSTATUS_UNCONNECTED\(1 downto 0), + TXCHARDISPMODE(7 downto 1) => B"0000000", + TXCHARDISPMODE(0) => PIPE_TXCOMPLIANCE(0), + TXCHARDISPVAL(7 downto 0) => B"00000000", + TXCHARISK(7 downto 2) => B"000000", + TXCHARISK(1 downto 0) => PIPE_TXDATAK(1 downto 0), + TXCOMFINISH => \NLW_gtx_channel.gtxe2_channel_i_TXCOMFINISH_UNCONNECTED\, + TXCOMINIT => '0', + TXCOMSAS => '0', + TXCOMWAKE => '0', + TXDATA(63 downto 16) => B"000000000000000000000000000000000000000000000000", + TXDATA(15 downto 0) => PIPE_TXDATA(15 downto 0), + TXDEEMPH => pipe_tx_deemph_gt, + TXDETECTRX => pipe_tx_rcvr_det_gt, + TXDIFFCTRL(3 downto 0) => B"1100", + TXDIFFPD => '0', + TXDLYBYPASS => '0', + TXDLYEN => '0', + TXDLYHOLD => '0', + TXDLYOVRDEN => '0', + TXDLYSRESET => SYNC_TXDLYSRESET, + TXDLYSRESETDONE => pipe_dclk_in_2, + TXDLYUPDOWN => '0', + TXELECIDLE => PIPE_TXELECIDLE(0), + TXGEARBOXREADY => \NLW_gtx_channel.gtxe2_channel_i_TXGEARBOXREADY_UNCONNECTED\, + TXHEADER(2 downto 0) => B"000", + TXINHIBIT => '0', + TXMAINCURSOR(6 downto 0) => TXMAINCURSOR(6 downto 0), + TXMARGIN(2 downto 0) => \cplllock_reg1_reg[2]_2\(2 downto 0), + TXOUTCLK => \gtx_channel.gtxe2_channel_i_n_37\, + TXOUTCLKFABRIC => \NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKFABRIC_UNCONNECTED\, + TXOUTCLKPCS => \NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKPCS_UNCONNECTED\, + TXOUTCLKSEL(2 downto 0) => B"000", + TXPCSRESET => '0', + TXPD(1 downto 0) => PIPE_POWERDOWN(1 downto 0), + TXPDELECIDLEMODE => '0', + TXPHALIGN => SYNC_TXPHALIGN, + TXPHALIGNDONE => pipe_dclk_in_3, + TXPHALIGNEN => '1', + TXPHDLYPD => '0', + TXPHDLYRESET => '0', + TXPHDLYTSTCLK => '0', + TXPHINIT => SYNC_TXPHINIT, + TXPHINITDONE => pipe_dclk_in_4, + TXPHOVRDEN => '0', + TXPISOPD => '0', + TXPMARESET => rate_txpmareset_2, + TXPOLARITY => '0', + TXPOSTCURSOR(4 downto 0) => TXPOSTCURSOR(4 downto 0), + TXPOSTCURSORINV => '0', + TXPRBSFORCEERR => '0', + TXPRBSSEL(2 downto 0) => B"000", + TXPRECURSOR(4 downto 0) => TXPRECURSOR(4 downto 0), + TXPRECURSORINV => '0', + TXQPIBIASEN => '0', + TXQPISENN => \NLW_gtx_channel.gtxe2_channel_i_TXQPISENN_UNCONNECTED\, + TXQPISENP => \NLW_gtx_channel.gtxe2_channel_i_TXQPISENP_UNCONNECTED\, + TXQPISTRONGPDOWN => '0', + TXQPIWEAKPUP => '0', + TXRATE(2 downto 1) => B"00", + TXRATE(0) => RXRATE(0), + TXRATEDONE => RATE_TXRATEDONE, + TXRESETDONE => USER_TXRESETDONE, + TXSEQUENCE(6 downto 0) => B"0000000", + TXSTARTSEQ => '0', + TXSWING => '0', + TXSYSCLKSEL(1) => '0', + TXSYSCLKSEL(0) => RXSYSCLKSEL(0), + TXUSERRDY => rst_userrdy, + TXUSRCLK => pipe_pclk_in, + TXUSRCLK2 => pipe_pclk_in + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_gt_wrapper_49 is + port ( + cpllpd_2 : out STD_LOGIC; + QRST_CPLLLOCK : out STD_LOGIC_VECTOR ( 0 to 0 ); + DRP_RDY : out STD_LOGIC; + pci_exp_txn : out STD_LOGIC_VECTOR ( 0 to 0 ); + pci_exp_txp : out STD_LOGIC_VECTOR ( 0 to 0 ); + RATE_PHYSTATUS : out STD_LOGIC; + gt_rxcdrlock_3 : out STD_LOGIC; + PIPE_RXCHANISALIGNED : out STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_dclk_in_0 : out STD_LOGIC; + gt_rx_elec_idle_wire_filter : out STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_rxoutclk_out : out STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_dclk_in_1 : out STD_LOGIC; + RATE_RXRATEDONE : out STD_LOGIC; + USER_RXRESETDONE : out STD_LOGIC; + gt_rxvalid_3 : out STD_LOGIC; + pipe_dclk_in_2 : out STD_LOGIC; + pipe_dclk_in_3 : out STD_LOGIC; + pipe_dclk_in_4 : out STD_LOGIC; + RATE_TXRATEDONE : out STD_LOGIC; + USER_TXRESETDONE : out STD_LOGIC; + DRP_DO : out STD_LOGIC_VECTOR ( 15 downto 0 ); + pipe_dclk_in_5 : out STD_LOGIC_VECTOR ( 2 downto 0 ); + gt_rx_data_wire_filter : out STD_LOGIC_VECTOR ( 15 downto 0 ); + gt_rx_data_k_wire_filter : out STD_LOGIC_VECTOR ( 1 downto 0 ); + gt_cpllpdrefclk : in STD_LOGIC; + CPLLPD0_5 : in STD_LOGIC; + pipe_dclk_in : in STD_LOGIC; + \cplllock_reg1_reg[3]\ : in STD_LOGIC; + \cplllock_reg1_reg[3]_0\ : in STD_LOGIC; + sys_clk : in STD_LOGIC; + DRP_GTXRESET : in STD_LOGIC; + pci_exp_rxn : in STD_LOGIC_VECTOR ( 0 to 0 ); + pci_exp_rxp : in STD_LOGIC_VECTOR ( 0 to 0 ); + QPLL_QPLLOUTCLK : in STD_LOGIC; + QPLL_QPLLOUTREFCLK : in STD_LOGIC; + rxchbonden_3 : in STD_LOGIC; + \cplllock_reg1_reg[3]_1\ : in STD_LOGIC; + rate_txpmareset_3 : in STD_LOGIC; + PIPE_RXPOLARITY : in STD_LOGIC_VECTOR ( 0 to 0 ); + rst_userrdy : in STD_LOGIC; + pipe_rxusrclk_in : in STD_LOGIC; + pipe_tx_deemph_gt : in STD_LOGIC; + pipe_tx_rcvr_det_gt : in STD_LOGIC; + SYNC_TXDLYSRESET : in STD_LOGIC; + PIPE_TXELECIDLE : in STD_LOGIC_VECTOR ( 0 to 0 ); + SYNC_TXPHALIGN : in STD_LOGIC; + SYNC_TXPHINIT : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + DRPDI : in STD_LOGIC_VECTOR ( 15 downto 0 ); + PIPE_POWERDOWN : in STD_LOGIC_VECTOR ( 1 downto 0 ); + RXSYSCLKSEL : in STD_LOGIC_VECTOR ( 0 to 0 ); + RXRATE : in STD_LOGIC_VECTOR ( 0 to 0 ); + \cplllock_reg1_reg[3]_2\ : in STD_LOGIC_VECTOR ( 2 downto 0 ); + USER_OOBCLK : in STD_LOGIC; + RXCHBONDO : in STD_LOGIC_VECTOR ( 4 downto 0 ); + TXPOSTCURSOR : in STD_LOGIC_VECTOR ( 4 downto 0 ); + TXPRECURSOR : in STD_LOGIC_VECTOR ( 4 downto 0 ); + PIPE_TXDATA : in STD_LOGIC_VECTOR ( 15 downto 0 ); + TXMAINCURSOR : in STD_LOGIC_VECTOR ( 6 downto 0 ); + PIPE_TXCOMPLIANCE : in STD_LOGIC_VECTOR ( 0 to 0 ); + PIPE_TXDATAK : in STD_LOGIC_VECTOR ( 1 downto 0 ); + DRPADDR : in STD_LOGIC_VECTOR ( 7 downto 0 ); + rate_cpllreset_3 : in STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_gt_wrapper_49 : entity is "pcie_7x_0_gt_wrapper"; +end pcie_7x_0_pcie_7x_0_gt_wrapper_49; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_gt_wrapper_49 is + signal CPLLRESET0 : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_10\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_138\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_139\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_140\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_141\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_142\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_143\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_144\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_145\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_146\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_147\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_148\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_149\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_150\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_151\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_152\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_153\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_16\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_177\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_178\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_179\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_180\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_181\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_182\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_183\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_184\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_189\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_190\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_191\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_192\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_197\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_198\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_201\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_202\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_203\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_204\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_205\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_206\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_207\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_208\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_209\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_210\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_211\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_212\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_213\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_214\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_215\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_216\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_27\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_37\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_4\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_82\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_83\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_84\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_9\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_91\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_92\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_93\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_94\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_n_95\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_CPLLFBCLKLOST_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_CPLLREFCLKLOST_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_GTREFCLKMONITOR_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXCHANBONDSEQ_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXCHANREALIGN_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXCOMINITDET_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXCOMSASDET_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXCOMWAKEDET_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXDATAVALID_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXHEADERVALID_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKFABRIC_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKPCS_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXQPISENN_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXQPISENP_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_RXSTARTOFSEQ_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_TXCOMFINISH_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_TXGEARBOXREADY_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKFABRIC_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKPCS_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_TXQPISENN_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_TXQPISENP_UNCONNECTED\ : STD_LOGIC; + signal \NLW_gtx_channel.gtxe2_channel_i_PCSRSVDOUT_UNCONNECTED\ : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXCHARISCOMMA_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 4 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXCHARISK_UNCONNECTED\ : STD_LOGIC_VECTOR ( 7 downto 4 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXCLKCORCNT_UNCONNECTED\ : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXDATA_UNCONNECTED\ : STD_LOGIC_VECTOR ( 63 downto 32 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXHEADER_UNCONNECTED\ : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXMONITOROUT_UNCONNECTED\ : STD_LOGIC_VECTOR ( 6 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXPHMONITOR_UNCONNECTED\ : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_RXPHSLIPMONITOR_UNCONNECTED\ : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_TSTOUT_UNCONNECTED\ : STD_LOGIC_VECTOR ( 9 downto 0 ); + signal \NLW_gtx_channel.gtxe2_channel_i_TXBUFSTATUS_UNCONNECTED\ : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute BOX_TYPE : string; + attribute BOX_TYPE of \gtx_channel.gtxe2_channel_i\ : label is "PRIMITIVE"; +begin +cpllPDInst: entity work.pcie_7x_0_pcie_7x_0_gtx_cpllpd_ovrd + port map ( + CPLLRESET0 => CPLLRESET0, + RST_CPLLRESET => RST_CPLLRESET, + cpllpd_2 => cpllpd_2, + gt_cpllpdrefclk => gt_cpllpdrefclk, + rate_cpllreset_3 => rate_cpllreset_3 + ); +\gtx_channel.gtxe2_channel_i\: unisim.vcomponents.GTXE2_CHANNEL + generic map( + ALIGN_COMMA_DOUBLE => "FALSE", + ALIGN_COMMA_ENABLE => B"1111111111", + ALIGN_COMMA_WORD => 1, + ALIGN_MCOMMA_DET => "TRUE", + ALIGN_MCOMMA_VALUE => B"1010000011", + ALIGN_PCOMMA_DET => "TRUE", + ALIGN_PCOMMA_VALUE => B"0101111100", + CBCC_DATA_SOURCE_SEL => "DECODED", + CHAN_BOND_KEEP_ALIGN => "TRUE", + CHAN_BOND_MAX_SKEW => 7, + CHAN_BOND_SEQ_1_1 => B"0001001010", + CHAN_BOND_SEQ_1_2 => B"0001001010", + CHAN_BOND_SEQ_1_3 => B"0001001010", + CHAN_BOND_SEQ_1_4 => B"0110111100", + CHAN_BOND_SEQ_1_ENABLE => B"1111", + CHAN_BOND_SEQ_2_1 => B"0001000101", + CHAN_BOND_SEQ_2_2 => B"0001000101", + CHAN_BOND_SEQ_2_3 => B"0001000101", + CHAN_BOND_SEQ_2_4 => B"0110111100", + CHAN_BOND_SEQ_2_ENABLE => B"1111", + CHAN_BOND_SEQ_2_USE => "TRUE", + CHAN_BOND_SEQ_LEN => 4, + CLK_CORRECT_USE => "TRUE", + CLK_COR_KEEP_IDLE => "TRUE", + CLK_COR_MAX_LAT => 20, + CLK_COR_MIN_LAT => 18, + CLK_COR_PRECEDENCE => "TRUE", + CLK_COR_REPEAT_WAIT => 0, + CLK_COR_SEQ_1_1 => B"0100011100", + CLK_COR_SEQ_1_2 => B"0000000000", + CLK_COR_SEQ_1_3 => B"0000000000", + CLK_COR_SEQ_1_4 => B"0000000000", + CLK_COR_SEQ_1_ENABLE => B"1111", + CLK_COR_SEQ_2_1 => B"0000000000", + CLK_COR_SEQ_2_2 => B"0000000000", + CLK_COR_SEQ_2_3 => B"0000000000", + CLK_COR_SEQ_2_4 => B"0000000000", + CLK_COR_SEQ_2_ENABLE => B"0000", + CLK_COR_SEQ_2_USE => "FALSE", + CLK_COR_SEQ_LEN => 1, + CPLL_CFG => X"A407CC", + CPLL_FBDIV => 5, + CPLL_FBDIV_45 => 5, + CPLL_INIT_CFG => X"00001E", + CPLL_LOCK_CFG => X"01E8", + CPLL_REFCLK_DIV => 1, + DEC_MCOMMA_DETECT => "TRUE", + DEC_PCOMMA_DETECT => "TRUE", + DEC_VALID_COMMA_ONLY => "FALSE", + DMONITOR_CFG => X"000B01", + ES_CONTROL => B"000000", + ES_ERRDET_EN => "FALSE", + ES_EYE_SCAN_EN => "FALSE", + ES_HORZ_OFFSET => X"000", + ES_PMA_CFG => B"0000000000", + ES_PRESCALE => B"00000", + ES_QUALIFIER => X"00000000000000000000", + ES_QUAL_MASK => X"00000000000000000000", + ES_SDATA_MASK => X"00000000000000000000", + ES_VERT_OFFSET => B"000000000", + FTS_DESKEW_SEQ_ENABLE => B"1111", + FTS_LANE_DESKEW_CFG => B"1111", + FTS_LANE_DESKEW_EN => "TRUE", + GEARBOX_MODE => B"000", + IS_CPLLLOCKDETCLK_INVERTED => '0', + IS_DRPCLK_INVERTED => '0', + IS_GTGREFCLK_INVERTED => '0', + IS_RXUSRCLK2_INVERTED => '0', + IS_RXUSRCLK_INVERTED => '0', + IS_TXPHDLYTSTCLK_INVERTED => '0', + IS_TXUSRCLK2_INVERTED => '0', + IS_TXUSRCLK_INVERTED => '0', + OUTREFCLK_SEL_INV => B"11", + PCS_PCIE_EN => "TRUE", + PCS_RSVD_ATTR => X"0000000001CF", + PD_TRANS_TIME_FROM_P2 => X"03C", + PD_TRANS_TIME_NONE_P2 => X"09", + PD_TRANS_TIME_TO_P2 => X"64", + PMA_RSV => X"00018480", + PMA_RSV2 => X"2050", + PMA_RSV3 => B"00", + PMA_RSV4 => X"00000000", + RXBUFRESET_TIME => B"00001", + RXBUF_ADDR_MODE => "FULL", + RXBUF_EIDLE_HI_CNT => B"0100", + RXBUF_EIDLE_LO_CNT => B"0000", + RXBUF_EN => "TRUE", + RXBUF_RESET_ON_CB_CHANGE => "TRUE", + RXBUF_RESET_ON_COMMAALIGN => "FALSE", + RXBUF_RESET_ON_EIDLE => "TRUE", + RXBUF_RESET_ON_RATE_CHANGE => "TRUE", + RXBUF_THRESH_OVFLW => 61, + RXBUF_THRESH_OVRD => "FALSE", + RXBUF_THRESH_UNDFLW => 4, + RXCDRFREQRESET_TIME => B"00001", + RXCDRPHRESET_TIME => B"00001", + RXCDR_CFG => X"03000023FF10200020", + RXCDR_FR_RESET_ON_EIDLE => '0', + RXCDR_HOLD_DURING_EIDLE => '1', + RXCDR_LOCK_CFG => B"010101", + RXCDR_PH_RESET_ON_EIDLE => '0', + RXDFELPMRESET_TIME => B"0001111", + RXDLY_CFG => X"001F", + RXDLY_LCFG => X"030", + RXDLY_TAP_CFG => X"0000", + RXGEARBOX_EN => "FALSE", + RXISCANRESET_TIME => B"00001", + RXLPM_HF_CFG => B"00000011110000", + RXLPM_LF_CFG => B"00000011110000", + RXOOB_CFG => B"0000110", + RXOUT_DIV => 2, + RXPCSRESET_TIME => B"00001", + RXPHDLY_CFG => X"004020", + RXPH_CFG => X"000000", + RXPH_MONITOR_SEL => B"00000", + RXPMARESET_TIME => B"00011", + RXPRBS_ERR_LOOPBACK => '0', + RXSLIDE_AUTO_WAIT => 7, + RXSLIDE_MODE => "PMA", + RX_BIAS_CFG => B"000000000100", + RX_BUFFER_CFG => B"000000", + RX_CLK25_DIV => 4, + RX_CLKMUX_PD => '1', + RX_CM_SEL => B"11", + RX_CM_TRIM => B"010", + RX_DATA_WIDTH => 20, + RX_DDI_SEL => B"000000", + RX_DEBUG_CFG => B"000000000000", + RX_DEFER_RESET_BUF_EN => "TRUE", + RX_DFE_GAIN_CFG => X"020FEA", + RX_DFE_H2_CFG => B"000000000000", + RX_DFE_H3_CFG => B"000001000000", + RX_DFE_H4_CFG => B"00011110000", + RX_DFE_H5_CFG => B"00011100000", + RX_DFE_KL_CFG => B"0000011111110", + RX_DFE_KL_CFG2 => X"3290D86C", + RX_DFE_LPM_CFG => X"0954", + RX_DFE_LPM_HOLD_DURING_EIDLE => '1', + RX_DFE_UT_CFG => B"10001111000000000", + RX_DFE_VP_CFG => B"00011111100000011", + RX_DFE_XYD_CFG => B"0000000000000", + RX_DISPERR_SEQ_MATCH => "TRUE", + RX_INT_DATAWIDTH => 0, + RX_OS_CFG => B"0000010000000", + RX_SIG_VALID_DLY => 4, + RX_XCLK_SEL => "RXREC", + SAS_MAX_COM => 64, + SAS_MIN_COM => 36, + SATA_BURST_SEQ_LEN => B"1111", + SATA_BURST_VAL => B"100", + SATA_CPLL_CFG => "VCO_3000MHZ", + SATA_EIDLE_VAL => B"100", + SATA_MAX_BURST => 8, + SATA_MAX_INIT => 21, + SATA_MAX_WAKE => 7, + SATA_MIN_BURST => 4, + SATA_MIN_INIT => 12, + SATA_MIN_WAKE => 4, + SHOW_REALIGN_COMMA => "FALSE", + SIM_CPLLREFCLK_SEL => B"001", + SIM_RECEIVER_DETECT_PASS => "TRUE", + SIM_RESET_SPEEDUP => "FALSE", + SIM_TX_EIDLE_DRIVE_LEVEL => "1", + SIM_VERSION => "3.0", + TERM_RCAL_CFG => B"10000", + TERM_RCAL_OVRD => '0', + TRANS_TIME_RATE => X"0E", + TST_RSV => X"00000000", + TXBUF_EN => "FALSE", + TXBUF_RESET_ON_RATE_CHANGE => "TRUE", + TXDLY_CFG => X"001F", + TXDLY_LCFG => X"030", + TXDLY_TAP_CFG => X"0000", + TXGEARBOX_EN => "FALSE", + TXOUT_DIV => 2, + TXPCSRESET_TIME => B"00001", + TXPHDLY_CFG => X"084020", + TXPH_CFG => X"0780", + TXPH_MONITOR_SEL => B"00000", + TXPMARESET_TIME => B"00011", + TX_CLK25_DIV => 4, + TX_CLKMUX_PD => '1', + TX_DATA_WIDTH => 20, + TX_DEEMPH0 => B"10100", + TX_DEEMPH1 => B"01011", + TX_DRIVE_MODE => "PIPE", + TX_EIDLE_ASSERT_DELAY => B"010", + TX_EIDLE_DEASSERT_DELAY => B"100", + TX_INT_DATAWIDTH => 0, + TX_LOOPBACK_DRIVE_HIZ => "FALSE", + TX_MAINCURSOR_SEL => '0', + TX_MARGIN_FULL_0 => B"1001111", + TX_MARGIN_FULL_1 => B"1001110", + TX_MARGIN_FULL_2 => B"1001101", + TX_MARGIN_FULL_3 => B"1001100", + TX_MARGIN_FULL_4 => B"1000011", + TX_MARGIN_LOW_0 => B"1000101", + TX_MARGIN_LOW_1 => B"1000110", + TX_MARGIN_LOW_2 => B"1000011", + TX_MARGIN_LOW_3 => B"1000010", + TX_MARGIN_LOW_4 => B"1000000", + TX_PREDRIVER_MODE => '0', + TX_QPI_STATUS_EN => '0', + TX_RXDETECT_CFG => X"0064", + TX_RXDETECT_REF => B"011", + TX_XCLK_SEL => "TXUSR", + UCODEER_CLR => '0' + ) + port map ( + CFGRESET => '0', + CLKRSVD(3 downto 1) => B"000", + CLKRSVD(0) => USER_OOBCLK, + CPLLFBCLKLOST => \NLW_gtx_channel.gtxe2_channel_i_CPLLFBCLKLOST_UNCONNECTED\, + CPLLLOCK => QRST_CPLLLOCK(0), + CPLLLOCKDETCLK => '0', + CPLLLOCKEN => '1', + CPLLPD => CPLLPD0_5, + CPLLREFCLKLOST => \NLW_gtx_channel.gtxe2_channel_i_CPLLREFCLKLOST_UNCONNECTED\, + CPLLREFCLKSEL(2 downto 0) => B"001", + CPLLRESET => CPLLRESET0, + DMONITOROUT(7) => \gtx_channel.gtxe2_channel_i_n_177\, + DMONITOROUT(6) => \gtx_channel.gtxe2_channel_i_n_178\, + DMONITOROUT(5) => \gtx_channel.gtxe2_channel_i_n_179\, + DMONITOROUT(4) => \gtx_channel.gtxe2_channel_i_n_180\, + DMONITOROUT(3) => \gtx_channel.gtxe2_channel_i_n_181\, + DMONITOROUT(2) => \gtx_channel.gtxe2_channel_i_n_182\, + DMONITOROUT(1) => \gtx_channel.gtxe2_channel_i_n_183\, + DMONITOROUT(0) => \gtx_channel.gtxe2_channel_i_n_184\, + DRPADDR(8) => '0', + DRPADDR(7 downto 0) => DRPADDR(7 downto 0), + DRPCLK => pipe_dclk_in, + DRPDI(15 downto 0) => DRPDI(15 downto 0), + DRPDO(15 downto 0) => DRP_DO(15 downto 0), + DRPEN => \cplllock_reg1_reg[3]\, + DRPRDY => DRP_RDY, + DRPWE => \cplllock_reg1_reg[3]_0\, + EYESCANDATAERROR => \gtx_channel.gtxe2_channel_i_n_4\, + EYESCANMODE => '0', + EYESCANRESET => '0', + EYESCANTRIGGER => '0', + GTGREFCLK => '0', + GTNORTHREFCLK0 => '0', + GTNORTHREFCLK1 => '0', + GTREFCLK0 => sys_clk, + GTREFCLK1 => '0', + GTREFCLKMONITOR => \NLW_gtx_channel.gtxe2_channel_i_GTREFCLKMONITOR_UNCONNECTED\, + GTRESETSEL => '0', + GTRSVD(15 downto 0) => B"0000000000000000", + GTRXRESET => DRP_GTXRESET, + GTSOUTHREFCLK0 => '0', + GTSOUTHREFCLK1 => '0', + GTTXRESET => DRP_GTXRESET, + GTXRXN => pci_exp_rxn(0), + GTXRXP => pci_exp_rxp(0), + GTXTXN => pci_exp_txn(0), + GTXTXP => pci_exp_txp(0), + LOOPBACK(2 downto 0) => B"000", + PCSRSVDIN(15 downto 0) => B"0000000000000000", + PCSRSVDIN2(4 downto 0) => B"00000", + PCSRSVDOUT(15 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_PCSRSVDOUT_UNCONNECTED\(15 downto 0), + PHYSTATUS => RATE_PHYSTATUS, + PMARSVDIN(4 downto 0) => B"00000", + PMARSVDIN2(4 downto 0) => B"00000", + QPLLCLK => QPLL_QPLLOUTCLK, + QPLLREFCLK => QPLL_QPLLOUTREFCLK, + RESETOVRD => '0', + RX8B10BEN => rxchbonden_3, + RXBUFRESET => '0', + RXBUFSTATUS(2) => \gtx_channel.gtxe2_channel_i_n_82\, + RXBUFSTATUS(1) => \gtx_channel.gtxe2_channel_i_n_83\, + RXBUFSTATUS(0) => \gtx_channel.gtxe2_channel_i_n_84\, + RXBYTEISALIGNED => \gtx_channel.gtxe2_channel_i_n_9\, + RXBYTEREALIGN => \gtx_channel.gtxe2_channel_i_n_10\, + RXCDRFREQRESET => '0', + RXCDRHOLD => '0', + RXCDRLOCK => gt_rxcdrlock_3, + RXCDROVRDEN => '0', + RXCDRRESET => '0', + RXCDRRESETRSV => '0', + RXCHANBONDSEQ => \NLW_gtx_channel.gtxe2_channel_i_RXCHANBONDSEQ_UNCONNECTED\, + RXCHANISALIGNED => PIPE_RXCHANISALIGNED(0), + RXCHANREALIGN => \NLW_gtx_channel.gtxe2_channel_i_RXCHANREALIGN_UNCONNECTED\, + RXCHARISCOMMA(7 downto 4) => \NLW_gtx_channel.gtxe2_channel_i_RXCHARISCOMMA_UNCONNECTED\(7 downto 4), + RXCHARISCOMMA(3) => \gtx_channel.gtxe2_channel_i_n_189\, + RXCHARISCOMMA(2) => \gtx_channel.gtxe2_channel_i_n_190\, + RXCHARISCOMMA(1) => \gtx_channel.gtxe2_channel_i_n_191\, + RXCHARISCOMMA(0) => \gtx_channel.gtxe2_channel_i_n_192\, + RXCHARISK(7 downto 4) => \NLW_gtx_channel.gtxe2_channel_i_RXCHARISK_UNCONNECTED\(7 downto 4), + RXCHARISK(3) => \gtx_channel.gtxe2_channel_i_n_197\, + RXCHARISK(2) => \gtx_channel.gtxe2_channel_i_n_198\, + RXCHARISK(1 downto 0) => gt_rx_data_k_wire_filter(1 downto 0), + RXCHBONDEN => rxchbonden_3, + RXCHBONDI(4 downto 0) => RXCHBONDO(4 downto 0), + RXCHBONDLEVEL(2 downto 0) => B"000", + RXCHBONDMASTER => '0', + RXCHBONDO(4) => \gtx_channel.gtxe2_channel_i_n_91\, + RXCHBONDO(3) => \gtx_channel.gtxe2_channel_i_n_92\, + RXCHBONDO(2) => \gtx_channel.gtxe2_channel_i_n_93\, + RXCHBONDO(1) => \gtx_channel.gtxe2_channel_i_n_94\, + RXCHBONDO(0) => \gtx_channel.gtxe2_channel_i_n_95\, + RXCHBONDSLAVE => rxchbonden_3, + RXCLKCORCNT(1 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_RXCLKCORCNT_UNCONNECTED\(1 downto 0), + RXCOMINITDET => \NLW_gtx_channel.gtxe2_channel_i_RXCOMINITDET_UNCONNECTED\, + RXCOMMADET => \gtx_channel.gtxe2_channel_i_n_16\, + RXCOMMADETEN => '1', + RXCOMSASDET => \NLW_gtx_channel.gtxe2_channel_i_RXCOMSASDET_UNCONNECTED\, + RXCOMWAKEDET => \NLW_gtx_channel.gtxe2_channel_i_RXCOMWAKEDET_UNCONNECTED\, + RXDATA(63 downto 32) => \NLW_gtx_channel.gtxe2_channel_i_RXDATA_UNCONNECTED\(63 downto 32), + RXDATA(31) => \gtx_channel.gtxe2_channel_i_n_138\, + RXDATA(30) => \gtx_channel.gtxe2_channel_i_n_139\, + RXDATA(29) => \gtx_channel.gtxe2_channel_i_n_140\, + RXDATA(28) => \gtx_channel.gtxe2_channel_i_n_141\, + RXDATA(27) => \gtx_channel.gtxe2_channel_i_n_142\, + RXDATA(26) => \gtx_channel.gtxe2_channel_i_n_143\, + RXDATA(25) => \gtx_channel.gtxe2_channel_i_n_144\, + RXDATA(24) => \gtx_channel.gtxe2_channel_i_n_145\, + RXDATA(23) => \gtx_channel.gtxe2_channel_i_n_146\, + RXDATA(22) => \gtx_channel.gtxe2_channel_i_n_147\, + RXDATA(21) => \gtx_channel.gtxe2_channel_i_n_148\, + RXDATA(20) => \gtx_channel.gtxe2_channel_i_n_149\, + RXDATA(19) => \gtx_channel.gtxe2_channel_i_n_150\, + RXDATA(18) => \gtx_channel.gtxe2_channel_i_n_151\, + RXDATA(17) => \gtx_channel.gtxe2_channel_i_n_152\, + RXDATA(16) => \gtx_channel.gtxe2_channel_i_n_153\, + RXDATA(15 downto 0) => gt_rx_data_wire_filter(15 downto 0), + RXDATAVALID => \NLW_gtx_channel.gtxe2_channel_i_RXDATAVALID_UNCONNECTED\, + RXDDIEN => '0', + RXDFEAGCHOLD => \cplllock_reg1_reg[3]_1\, + RXDFEAGCOVRDEN => '0', + RXDFECM1EN => '0', + RXDFELFHOLD => '0', + RXDFELFOVRDEN => '1', + RXDFELPMRESET => '0', + RXDFETAP2HOLD => '0', + RXDFETAP2OVRDEN => '0', + RXDFETAP3HOLD => '0', + RXDFETAP3OVRDEN => '0', + RXDFETAP4HOLD => '0', + RXDFETAP4OVRDEN => '0', + RXDFETAP5HOLD => '0', + RXDFETAP5OVRDEN => '0', + RXDFEUTHOLD => '0', + RXDFEUTOVRDEN => '0', + RXDFEVPHOLD => '0', + RXDFEVPOVRDEN => '0', + RXDFEVSEN => '0', + RXDFEXYDEN => '0', + RXDFEXYDHOLD => '0', + RXDFEXYDOVRDEN => '0', + RXDISPERR(7) => \gtx_channel.gtxe2_channel_i_n_201\, + RXDISPERR(6) => \gtx_channel.gtxe2_channel_i_n_202\, + RXDISPERR(5) => \gtx_channel.gtxe2_channel_i_n_203\, + RXDISPERR(4) => \gtx_channel.gtxe2_channel_i_n_204\, + RXDISPERR(3) => \gtx_channel.gtxe2_channel_i_n_205\, + RXDISPERR(2) => \gtx_channel.gtxe2_channel_i_n_206\, + RXDISPERR(1) => \gtx_channel.gtxe2_channel_i_n_207\, + RXDISPERR(0) => \gtx_channel.gtxe2_channel_i_n_208\, + RXDLYBYPASS => '1', + RXDLYEN => '0', + RXDLYOVRDEN => '0', + RXDLYSRESET => '0', + RXDLYSRESETDONE => pipe_dclk_in_0, + RXELECIDLE => gt_rx_elec_idle_wire_filter(0), + RXELECIDLEMODE(1 downto 0) => B"00", + RXGEARBOXSLIP => '0', + RXHEADER(2 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_RXHEADER_UNCONNECTED\(2 downto 0), + RXHEADERVALID => \NLW_gtx_channel.gtxe2_channel_i_RXHEADERVALID_UNCONNECTED\, + RXLPMEN => rxchbonden_3, + RXLPMHFHOLD => '0', + RXLPMHFOVRDEN => '0', + RXLPMLFHOLD => '0', + RXLPMLFKLOVRDEN => '0', + RXMCOMMAALIGNEN => rxchbonden_3, + RXMONITOROUT(6 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_RXMONITOROUT_UNCONNECTED\(6 downto 0), + RXMONITORSEL(1 downto 0) => B"00", + RXNOTINTABLE(7) => \gtx_channel.gtxe2_channel_i_n_209\, + RXNOTINTABLE(6) => \gtx_channel.gtxe2_channel_i_n_210\, + RXNOTINTABLE(5) => \gtx_channel.gtxe2_channel_i_n_211\, + RXNOTINTABLE(4) => \gtx_channel.gtxe2_channel_i_n_212\, + RXNOTINTABLE(3) => \gtx_channel.gtxe2_channel_i_n_213\, + RXNOTINTABLE(2) => \gtx_channel.gtxe2_channel_i_n_214\, + RXNOTINTABLE(1) => \gtx_channel.gtxe2_channel_i_n_215\, + RXNOTINTABLE(0) => \gtx_channel.gtxe2_channel_i_n_216\, + RXOOBRESET => '0', + RXOSHOLD => '0', + RXOSOVRDEN => '0', + RXOUTCLK => pipe_rxoutclk_out(0), + RXOUTCLKFABRIC => \NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKFABRIC_UNCONNECTED\, + RXOUTCLKPCS => \NLW_gtx_channel.gtxe2_channel_i_RXOUTCLKPCS_UNCONNECTED\, + RXOUTCLKSEL(2 downto 0) => B"000", + RXPCOMMAALIGNEN => rxchbonden_3, + RXPCSRESET => '0', + RXPD(1 downto 0) => PIPE_POWERDOWN(1 downto 0), + RXPHALIGN => '0', + RXPHALIGNDONE => pipe_dclk_in_1, + RXPHALIGNEN => '0', + RXPHDLYPD => '0', + RXPHDLYRESET => '0', + RXPHMONITOR(4 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_RXPHMONITOR_UNCONNECTED\(4 downto 0), + RXPHOVRDEN => '0', + RXPHSLIPMONITOR(4 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_RXPHSLIPMONITOR_UNCONNECTED\(4 downto 0), + RXPMARESET => rate_txpmareset_3, + RXPOLARITY => PIPE_RXPOLARITY(0), + RXPRBSCNTRESET => '0', + RXPRBSERR => \gtx_channel.gtxe2_channel_i_n_27\, + RXPRBSSEL(2 downto 0) => B"000", + RXQPIEN => '0', + RXQPISENN => \NLW_gtx_channel.gtxe2_channel_i_RXQPISENN_UNCONNECTED\, + RXQPISENP => \NLW_gtx_channel.gtxe2_channel_i_RXQPISENP_UNCONNECTED\, + RXRATE(2 downto 1) => B"00", + RXRATE(0) => RXRATE(0), + RXRATEDONE => RATE_RXRATEDONE, + RXRESETDONE => USER_RXRESETDONE, + RXSLIDE => '0', + RXSTARTOFSEQ => \NLW_gtx_channel.gtxe2_channel_i_RXSTARTOFSEQ_UNCONNECTED\, + RXSTATUS(2 downto 0) => pipe_dclk_in_5(2 downto 0), + RXSYSCLKSEL(1) => '0', + RXSYSCLKSEL(0) => RXSYSCLKSEL(0), + RXUSERRDY => rst_userrdy, + RXUSRCLK => pipe_rxusrclk_in, + RXUSRCLK2 => pipe_rxusrclk_in, + RXVALID => gt_rxvalid_3, + SETERRSTATUS => '0', + TSTIN(19 downto 0) => B"11111111111111111111", + TSTOUT(9 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_TSTOUT_UNCONNECTED\(9 downto 0), + TX8B10BBYPASS(7 downto 0) => B"00000000", + TX8B10BEN => rxchbonden_3, + TXBUFDIFFCTRL(2 downto 0) => B"100", + TXBUFSTATUS(1 downto 0) => \NLW_gtx_channel.gtxe2_channel_i_TXBUFSTATUS_UNCONNECTED\(1 downto 0), + TXCHARDISPMODE(7 downto 1) => B"0000000", + TXCHARDISPMODE(0) => PIPE_TXCOMPLIANCE(0), + TXCHARDISPVAL(7 downto 0) => B"00000000", + TXCHARISK(7 downto 2) => B"000000", + TXCHARISK(1 downto 0) => PIPE_TXDATAK(1 downto 0), + TXCOMFINISH => \NLW_gtx_channel.gtxe2_channel_i_TXCOMFINISH_UNCONNECTED\, + TXCOMINIT => '0', + TXCOMSAS => '0', + TXCOMWAKE => '0', + TXDATA(63 downto 16) => B"000000000000000000000000000000000000000000000000", + TXDATA(15 downto 0) => PIPE_TXDATA(15 downto 0), + TXDEEMPH => pipe_tx_deemph_gt, + TXDETECTRX => pipe_tx_rcvr_det_gt, + TXDIFFCTRL(3 downto 0) => B"1100", + TXDIFFPD => '0', + TXDLYBYPASS => '0', + TXDLYEN => '0', + TXDLYHOLD => '0', + TXDLYOVRDEN => '0', + TXDLYSRESET => SYNC_TXDLYSRESET, + TXDLYSRESETDONE => pipe_dclk_in_2, + TXDLYUPDOWN => '0', + TXELECIDLE => PIPE_TXELECIDLE(0), + TXGEARBOXREADY => \NLW_gtx_channel.gtxe2_channel_i_TXGEARBOXREADY_UNCONNECTED\, + TXHEADER(2 downto 0) => B"000", + TXINHIBIT => '0', + TXMAINCURSOR(6 downto 0) => TXMAINCURSOR(6 downto 0), + TXMARGIN(2 downto 0) => \cplllock_reg1_reg[3]_2\(2 downto 0), + TXOUTCLK => \gtx_channel.gtxe2_channel_i_n_37\, + TXOUTCLKFABRIC => \NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKFABRIC_UNCONNECTED\, + TXOUTCLKPCS => \NLW_gtx_channel.gtxe2_channel_i_TXOUTCLKPCS_UNCONNECTED\, + TXOUTCLKSEL(2 downto 0) => B"000", + TXPCSRESET => '0', + TXPD(1 downto 0) => PIPE_POWERDOWN(1 downto 0), + TXPDELECIDLEMODE => '0', + TXPHALIGN => SYNC_TXPHALIGN, + TXPHALIGNDONE => pipe_dclk_in_3, + TXPHALIGNEN => '1', + TXPHDLYPD => '0', + TXPHDLYRESET => '0', + TXPHDLYTSTCLK => '0', + TXPHINIT => SYNC_TXPHINIT, + TXPHINITDONE => pipe_dclk_in_4, + TXPHOVRDEN => '0', + TXPISOPD => '0', + TXPMARESET => rate_txpmareset_3, + TXPOLARITY => '0', + TXPOSTCURSOR(4 downto 0) => TXPOSTCURSOR(4 downto 0), + TXPOSTCURSORINV => '0', + TXPRBSFORCEERR => '0', + TXPRBSSEL(2 downto 0) => B"000", + TXPRECURSOR(4 downto 0) => TXPRECURSOR(4 downto 0), + TXPRECURSORINV => '0', + TXQPIBIASEN => '0', + TXQPISENN => \NLW_gtx_channel.gtxe2_channel_i_TXQPISENN_UNCONNECTED\, + TXQPISENP => \NLW_gtx_channel.gtxe2_channel_i_TXQPISENP_UNCONNECTED\, + TXQPISTRONGPDOWN => '0', + TXQPIWEAKPUP => '0', + TXRATE(2 downto 1) => B"00", + TXRATE(0) => RXRATE(0), + TXRATEDONE => RATE_TXRATEDONE, + TXRESETDONE => USER_TXRESETDONE, + TXSEQUENCE(6 downto 0) => B"0000000", + TXSTARTSEQ => '0', + TXSWING => '0', + TXSYSCLKSEL(1) => '0', + TXSYSCLKSEL(0) => RXSYSCLKSEL(0), + TXUSERRDY => rst_userrdy, + TXUSRCLK => pipe_pclk_in, + TXUSRCLK2 => pipe_pclk_in + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_bram_7x is + port ( + rdata : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_tx_wen : in STD_LOGIC; + mim_tx_ren : in STD_LOGIC; + MIMTXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMTXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + wdata : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); +end pcie_7x_0_pcie_7x_0_pcie_bram_7x; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_bram_7x is +begin +\use_tdp.ramb36\: entity work.pcie_7x_0_BRAM_TDP_MACRO_17 + port map ( + MIMTXRADDR(11 downto 0) => MIMTXRADDR(11 downto 0), + MIMTXWADDR(11 downto 0) => MIMTXWADDR(11 downto 0), + mim_tx_ren => mim_tx_ren, + mim_tx_wen => mim_tx_wen, + pipe_userclk1_in => pipe_userclk1_in, + rdata(8 downto 0) => rdata(8 downto 0), + wdata(8 downto 0) => wdata(8 downto 0) + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_bram_7x_10 is + port ( + rdata : out STD_LOGIC_VECTOR ( 5 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_tx_wen : in STD_LOGIC; + mim_tx_ren : in STD_LOGIC; + MIMTXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMTXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + wdata : in STD_LOGIC_VECTOR ( 5 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pcie_bram_7x_10 : entity is "pcie_7x_0_pcie_bram_7x"; +end pcie_7x_0_pcie_7x_0_pcie_bram_7x_10; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_bram_7x_10 is +begin +\use_tdp.ramb36\: entity work.\pcie_7x_0_BRAM_TDP_MACRO_viv_\ + port map ( + MIMTXRADDR(11 downto 0) => MIMTXRADDR(11 downto 0), + MIMTXWADDR(11 downto 0) => MIMTXWADDR(11 downto 0), + mim_tx_ren => mim_tx_ren, + mim_tx_wen => mim_tx_wen, + pipe_userclk1_in => pipe_userclk1_in, + rdata(5 downto 0) => rdata(5 downto 0), + wdata(5 downto 0) => wdata(5 downto 0) + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_bram_7x_18 is + port ( + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_rx_wen : in STD_LOGIC; + mim_rx_ren : in STD_LOGIC; + MIMRXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMRXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\ : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pcie_bram_7x_18 : entity is "pcie_7x_0_pcie_bram_7x"; +end pcie_7x_0_pcie_7x_0_pcie_bram_7x_18; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_bram_7x_18 is +begin +\use_tdp.ramb36\: entity work.pcie_7x_0_BRAM_TDP_MACRO_33 + port map ( + MIMRXRADDR(11 downto 0) => MIMRXRADDR(11 downto 0), + MIMRXWADDR(11 downto 0) => MIMRXWADDR(11 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(8 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8 downto 0), + mim_rx_ren => mim_rx_ren, + mim_rx_wen => mim_rx_wen, + pipe_userclk1_in => pipe_userclk1_in + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_bram_7x_19 is + port ( + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_rx_wen : in STD_LOGIC; + mim_rx_ren : in STD_LOGIC; + MIMRXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMRXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\ : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pcie_bram_7x_19 : entity is "pcie_7x_0_pcie_bram_7x"; +end pcie_7x_0_pcie_7x_0_pcie_bram_7x_19; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_bram_7x_19 is +begin +\use_tdp.ramb36\: entity work.pcie_7x_0_BRAM_TDP_MACRO_32 + port map ( + MIMRXRADDR(11 downto 0) => MIMRXRADDR(11 downto 0), + MIMRXWADDR(11 downto 0) => MIMRXWADDR(11 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(8 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8 downto 0), + mim_rx_ren => mim_rx_ren, + mim_rx_wen => mim_rx_wen, + pipe_userclk1_in => pipe_userclk1_in + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_bram_7x_20 is + port ( + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_rx_wen : in STD_LOGIC; + mim_rx_ren : in STD_LOGIC; + MIMRXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMRXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\ : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pcie_bram_7x_20 : entity is "pcie_7x_0_pcie_bram_7x"; +end pcie_7x_0_pcie_7x_0_pcie_bram_7x_20; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_bram_7x_20 is +begin +\use_tdp.ramb36\: entity work.pcie_7x_0_BRAM_TDP_MACRO_31 + port map ( + MIMRXRADDR(11 downto 0) => MIMRXRADDR(11 downto 0), + MIMRXWADDR(11 downto 0) => MIMRXWADDR(11 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(8 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8 downto 0), + mim_rx_ren => mim_rx_ren, + mim_rx_wen => mim_rx_wen, + pipe_userclk1_in => pipe_userclk1_in + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_bram_7x_21 is + port ( + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_rx_wen : in STD_LOGIC; + mim_rx_ren : in STD_LOGIC; + MIMRXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMRXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\ : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pcie_bram_7x_21 : entity is "pcie_7x_0_pcie_bram_7x"; +end pcie_7x_0_pcie_7x_0_pcie_bram_7x_21; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_bram_7x_21 is +begin +\use_tdp.ramb36\: entity work.pcie_7x_0_BRAM_TDP_MACRO_30 + port map ( + MIMRXRADDR(11 downto 0) => MIMRXRADDR(11 downto 0), + MIMRXWADDR(11 downto 0) => MIMRXWADDR(11 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(8 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8 downto 0), + mim_rx_ren => mim_rx_ren, + mim_rx_wen => mim_rx_wen, + pipe_userclk1_in => pipe_userclk1_in + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_bram_7x_22 is + port ( + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_rx_wen : in STD_LOGIC; + mim_rx_ren : in STD_LOGIC; + MIMRXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMRXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\ : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pcie_bram_7x_22 : entity is "pcie_7x_0_pcie_bram_7x"; +end pcie_7x_0_pcie_7x_0_pcie_bram_7x_22; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_bram_7x_22 is +begin +\use_tdp.ramb36\: entity work.pcie_7x_0_BRAM_TDP_MACRO_29 + port map ( + MIMRXRADDR(11 downto 0) => MIMRXRADDR(11 downto 0), + MIMRXWADDR(11 downto 0) => MIMRXWADDR(11 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(8 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8 downto 0), + mim_rx_ren => mim_rx_ren, + mim_rx_wen => mim_rx_wen, + pipe_userclk1_in => pipe_userclk1_in + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_bram_7x_23 is + port ( + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_rx_wen : in STD_LOGIC; + mim_rx_ren : in STD_LOGIC; + MIMRXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMRXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\ : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pcie_bram_7x_23 : entity is "pcie_7x_0_pcie_bram_7x"; +end pcie_7x_0_pcie_7x_0_pcie_bram_7x_23; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_bram_7x_23 is +begin +\use_tdp.ramb36\: entity work.pcie_7x_0_BRAM_TDP_MACRO_28 + port map ( + MIMRXRADDR(11 downto 0) => MIMRXRADDR(11 downto 0), + MIMRXWADDR(11 downto 0) => MIMRXWADDR(11 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(8 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8 downto 0), + mim_rx_ren => mim_rx_ren, + mim_rx_wen => mim_rx_wen, + pipe_userclk1_in => pipe_userclk1_in + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_bram_7x_24 is + port ( + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_rx_wen : in STD_LOGIC; + mim_rx_ren : in STD_LOGIC; + MIMRXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMRXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\ : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pcie_bram_7x_24 : entity is "pcie_7x_0_pcie_bram_7x"; +end pcie_7x_0_pcie_7x_0_pcie_bram_7x_24; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_bram_7x_24 is +begin +\use_tdp.ramb36\: entity work.pcie_7x_0_BRAM_TDP_MACRO_27 + port map ( + MIMRXRADDR(11 downto 0) => MIMRXRADDR(11 downto 0), + MIMRXWADDR(11 downto 0) => MIMRXWADDR(11 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(8 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8 downto 0), + mim_rx_ren => mim_rx_ren, + mim_rx_wen => mim_rx_wen, + pipe_userclk1_in => pipe_userclk1_in + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_bram_7x_25 is + port ( + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : out STD_LOGIC_VECTOR ( 4 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_rx_wen : in STD_LOGIC; + mim_rx_ren : in STD_LOGIC; + MIMRXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMRXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\ : in STD_LOGIC_VECTOR ( 4 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pcie_bram_7x_25 : entity is "pcie_7x_0_pcie_bram_7x"; +end pcie_7x_0_pcie_7x_0_pcie_bram_7x_25; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_bram_7x_25 is +begin +\use_tdp.ramb36\: entity work.pcie_7x_0_BRAM_TDP_MACRO_26 + port map ( + MIMRXRADDR(11 downto 0) => MIMRXRADDR(11 downto 0), + MIMRXWADDR(11 downto 0) => MIMRXWADDR(11 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(4 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(4 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_1\(4 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(4 downto 0), + mim_rx_ren => mim_rx_ren, + mim_rx_wen => mim_rx_wen, + pipe_userclk1_in => pipe_userclk1_in + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_bram_7x_4 is + port ( + rdata : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_tx_wen : in STD_LOGIC; + mim_tx_ren : in STD_LOGIC; + MIMTXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMTXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + wdata : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pcie_bram_7x_4 : entity is "pcie_7x_0_pcie_bram_7x"; +end pcie_7x_0_pcie_7x_0_pcie_bram_7x_4; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_bram_7x_4 is +begin +\use_tdp.ramb36\: entity work.pcie_7x_0_BRAM_TDP_MACRO_16 + port map ( + MIMTXRADDR(11 downto 0) => MIMTXRADDR(11 downto 0), + MIMTXWADDR(11 downto 0) => MIMTXWADDR(11 downto 0), + mim_tx_ren => mim_tx_ren, + mim_tx_wen => mim_tx_wen, + pipe_userclk1_in => pipe_userclk1_in, + rdata(8 downto 0) => rdata(8 downto 0), + wdata(8 downto 0) => wdata(8 downto 0) + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_bram_7x_5 is + port ( + rdata : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_tx_wen : in STD_LOGIC; + mim_tx_ren : in STD_LOGIC; + MIMTXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMTXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + wdata : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pcie_bram_7x_5 : entity is "pcie_7x_0_pcie_bram_7x"; +end pcie_7x_0_pcie_7x_0_pcie_bram_7x_5; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_bram_7x_5 is +begin +\use_tdp.ramb36\: entity work.pcie_7x_0_BRAM_TDP_MACRO_15 + port map ( + MIMTXRADDR(11 downto 0) => MIMTXRADDR(11 downto 0), + MIMTXWADDR(11 downto 0) => MIMTXWADDR(11 downto 0), + mim_tx_ren => mim_tx_ren, + mim_tx_wen => mim_tx_wen, + pipe_userclk1_in => pipe_userclk1_in, + rdata(8 downto 0) => rdata(8 downto 0), + wdata(8 downto 0) => wdata(8 downto 0) + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_bram_7x_6 is + port ( + rdata : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_tx_wen : in STD_LOGIC; + mim_tx_ren : in STD_LOGIC; + MIMTXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMTXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + wdata : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pcie_bram_7x_6 : entity is "pcie_7x_0_pcie_bram_7x"; +end pcie_7x_0_pcie_7x_0_pcie_bram_7x_6; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_bram_7x_6 is +begin +\use_tdp.ramb36\: entity work.pcie_7x_0_BRAM_TDP_MACRO_14 + port map ( + MIMTXRADDR(11 downto 0) => MIMTXRADDR(11 downto 0), + MIMTXWADDR(11 downto 0) => MIMTXWADDR(11 downto 0), + mim_tx_ren => mim_tx_ren, + mim_tx_wen => mim_tx_wen, + pipe_userclk1_in => pipe_userclk1_in, + rdata(8 downto 0) => rdata(8 downto 0), + wdata(8 downto 0) => wdata(8 downto 0) + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_bram_7x_7 is + port ( + rdata : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_tx_wen : in STD_LOGIC; + mim_tx_ren : in STD_LOGIC; + MIMTXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMTXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + wdata : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pcie_bram_7x_7 : entity is "pcie_7x_0_pcie_bram_7x"; +end pcie_7x_0_pcie_7x_0_pcie_bram_7x_7; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_bram_7x_7 is +begin +\use_tdp.ramb36\: entity work.pcie_7x_0_BRAM_TDP_MACRO_13 + port map ( + MIMTXRADDR(11 downto 0) => MIMTXRADDR(11 downto 0), + MIMTXWADDR(11 downto 0) => MIMTXWADDR(11 downto 0), + mim_tx_ren => mim_tx_ren, + mim_tx_wen => mim_tx_wen, + pipe_userclk1_in => pipe_userclk1_in, + rdata(8 downto 0) => rdata(8 downto 0), + wdata(8 downto 0) => wdata(8 downto 0) + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_bram_7x_8 is + port ( + rdata : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_tx_wen : in STD_LOGIC; + mim_tx_ren : in STD_LOGIC; + MIMTXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMTXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + wdata : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pcie_bram_7x_8 : entity is "pcie_7x_0_pcie_bram_7x"; +end pcie_7x_0_pcie_7x_0_pcie_bram_7x_8; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_bram_7x_8 is +begin +\use_tdp.ramb36\: entity work.pcie_7x_0_BRAM_TDP_MACRO_12 + port map ( + MIMTXRADDR(11 downto 0) => MIMTXRADDR(11 downto 0), + MIMTXWADDR(11 downto 0) => MIMTXWADDR(11 downto 0), + mim_tx_ren => mim_tx_ren, + mim_tx_wen => mim_tx_wen, + pipe_userclk1_in => pipe_userclk1_in, + rdata(8 downto 0) => rdata(8 downto 0), + wdata(8 downto 0) => wdata(8 downto 0) + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_bram_7x_9 is + port ( + rdata : out STD_LOGIC_VECTOR ( 8 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_tx_wen : in STD_LOGIC; + mim_tx_ren : in STD_LOGIC; + MIMTXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMTXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + wdata : in STD_LOGIC_VECTOR ( 8 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pcie_bram_7x_9 : entity is "pcie_7x_0_pcie_bram_7x"; +end pcie_7x_0_pcie_7x_0_pcie_bram_7x_9; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_bram_7x_9 is +begin +\use_tdp.ramb36\: entity work.pcie_7x_0_BRAM_TDP_MACRO_11 + port map ( + MIMTXRADDR(11 downto 0) => MIMTXRADDR(11 downto 0), + MIMTXWADDR(11 downto 0) => MIMTXWADDR(11 downto 0), + mim_tx_ren => mim_tx_ren, + mim_tx_wen => mim_tx_wen, + pipe_userclk1_in => pipe_userclk1_in, + rdata(8 downto 0) => rdata(8 downto 0), + wdata(8 downto 0) => wdata(8 downto 0) + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_pipe_pipeline is + port ( + pipe_rx1_valid : out STD_LOGIC; + pipe_rx1_chanisaligned : out STD_LOGIC; + pipe_rx1_phy_status : out STD_LOGIC; + pipe_rx1_elec_idle : out STD_LOGIC; + PIPE_RXPOLARITY : out STD_LOGIC_VECTOR ( 3 downto 0 ); + PIPE_TXCOMPLIANCE : out STD_LOGIC_VECTOR ( 3 downto 0 ); + PIPE_TXELECIDLE : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_rx2_valid : out STD_LOGIC; + pipe_rx2_chanisaligned : out STD_LOGIC; + pipe_rx2_phy_status : out STD_LOGIC; + pipe_rx2_elec_idle : out STD_LOGIC; + pipe_rx3_valid : out STD_LOGIC; + pipe_rx3_chanisaligned : out STD_LOGIC; + pipe_rx3_phy_status : out STD_LOGIC; + pipe_rx3_elec_idle : out STD_LOGIC; + pipe_tx_rcvr_det_gt : out STD_LOGIC; + \pipe_stages_1.pipe_tx_rate_q_reg\ : out STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_tx_deemph_gt : out STD_LOGIC; + pipe_rx0_valid : out STD_LOGIC; + pipe_rx0_chanisaligned : out STD_LOGIC; + pipe_rx0_phy_status : out STD_LOGIC; + pipe_rx0_elec_idle : out STD_LOGIC; + Q : out STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_data_q_reg[15]\ : out STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_rx_status_q_reg[2]\ : out STD_LOGIC_VECTOR ( 2 downto 0 ); + PIPE_TXDATAK : out STD_LOGIC_VECTOR ( 7 downto 0 ); + PIPE_TXDATA : out STD_LOGIC_VECTOR ( 63 downto 0 ); + PIPE_POWERDOWN : out STD_LOGIC_VECTOR ( 7 downto 0 ); + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]\ : out STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_data_q_reg[15]_0\ : out STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_rx_status_q_reg[2]_0\ : out STD_LOGIC_VECTOR ( 2 downto 0 ); + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0\ : out STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_data_q_reg[15]_1\ : out STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_rx_status_q_reg[2]_1\ : out STD_LOGIC_VECTOR ( 2 downto 0 ); + \pipe_stages_1.pipe_tx_margin_q_reg[2]\ : out STD_LOGIC_VECTOR ( 2 downto 0 ); + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1\ : out STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_data_q_reg[15]_2\ : out STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_rx_status_q_reg[2]_2\ : out STD_LOGIC_VECTOR ( 2 downto 0 ); + SR : in STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_rx1_valid_gt : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + PIPE_RXCHANISALIGNED : in STD_LOGIC_VECTOR ( 3 downto 0 ); + \pipe_stages_1.pipe_rx_phy_status_q_reg\ : in STD_LOGIC; + \pipe_stages_1.pipe_rx_elec_idle_q_reg\ : in STD_LOGIC; + pipe_rx0_polarity : in STD_LOGIC; + pipe_rx1_polarity : in STD_LOGIC; + pipe_rx2_polarity : in STD_LOGIC; + pipe_rx3_polarity : in STD_LOGIC; + pipe_tx0_compliance : in STD_LOGIC; + pipe_tx1_compliance : in STD_LOGIC; + pipe_tx2_compliance : in STD_LOGIC; + pipe_tx3_compliance : in STD_LOGIC; + pipe_tx0_elec_idle : in STD_LOGIC; + pipe_tx1_elec_idle : in STD_LOGIC; + pipe_tx2_elec_idle : in STD_LOGIC; + pipe_tx3_elec_idle : in STD_LOGIC; + pipe_rx2_valid_gt : in STD_LOGIC; + \pipe_stages_1.pipe_rx_phy_status_q_reg_0\ : in STD_LOGIC; + \pipe_stages_1.pipe_rx_elec_idle_q_reg_0\ : in STD_LOGIC; + pipe_rx3_valid_gt : in STD_LOGIC; + \pipe_stages_1.pipe_rx_phy_status_q_reg_1\ : in STD_LOGIC; + \pipe_stages_1.pipe_rx_elec_idle_q_reg_1\ : in STD_LOGIC; + pipe_tx_rcvr_det : in STD_LOGIC; + pipe_tx_rate : in STD_LOGIC; + pipe_tx_deemph : in STD_LOGIC; + pipe_rx0_valid_gt : in STD_LOGIC; + gt_rx_phy_status_q : in STD_LOGIC; + gt_rxelecidle_q : in STD_LOGIC; + D : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_data_q_reg[15]_3\ : in STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_rx_status_q_reg[2]_3\ : in STD_LOGIC_VECTOR ( 2 downto 0 ); + \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_1\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_2\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_tx_data_q_reg[15]\ : in STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_tx_data_q_reg[15]_0\ : in STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_tx_data_q_reg[15]_1\ : in STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_tx_data_q_reg[15]_2\ : in STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_tx_powerdown_q_reg[1]\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_1\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_2\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_2\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_data_q_reg[15]_4\ : in STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_rx_status_q_reg[2]_4\ : in STD_LOGIC_VECTOR ( 2 downto 0 ); + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_3\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_data_q_reg[15]_5\ : in STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_rx_status_q_reg[2]_5\ : in STD_LOGIC_VECTOR ( 2 downto 0 ); + \pipe_stages_1.pipe_tx_margin_q_reg[2]_0\ : in STD_LOGIC_VECTOR ( 2 downto 0 ); + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_4\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_data_q_reg[15]_6\ : in STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_rx_status_q_reg[2]_6\ : in STD_LOGIC_VECTOR ( 2 downto 0 ) + ); +end pcie_7x_0_pcie_7x_0_pcie_pipe_pipeline; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_pipe_pipeline is +begin +\pipe_2_lane.pipe_lane_1_i\: entity work.pcie_7x_0_pcie_7x_0_pcie_pipe_lane + port map ( + D(1 downto 0) => D(1 downto 0), + PIPE_POWERDOWN(1 downto 0) => PIPE_POWERDOWN(3 downto 2), + PIPE_RXCHANISALIGNED(0) => PIPE_RXCHANISALIGNED(1), + PIPE_RXPOLARITY(0) => PIPE_RXPOLARITY(1), + PIPE_TXCOMPLIANCE(0) => PIPE_TXCOMPLIANCE(1), + PIPE_TXDATA(15 downto 0) => PIPE_TXDATA(31 downto 16), + PIPE_TXDATAK(1 downto 0) => PIPE_TXDATAK(3 downto 2), + PIPE_TXELECIDLE(0) => PIPE_TXELECIDLE(1), + Q(1 downto 0) => Q(1 downto 0), + SR(0) => SR(0), + pipe_pclk_in => pipe_pclk_in, + pipe_rx1_chanisaligned => pipe_rx1_chanisaligned, + pipe_rx1_elec_idle => pipe_rx1_elec_idle, + pipe_rx1_phy_status => pipe_rx1_phy_status, + pipe_rx1_polarity => pipe_rx1_polarity, + pipe_rx1_valid => pipe_rx1_valid, + pipe_rx1_valid_gt => pipe_rx1_valid_gt, + \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(15 downto 0) => \pipe_stages_1.pipe_rx_data_q_reg[15]\(15 downto 0), + \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(15 downto 0) => \pipe_stages_1.pipe_rx_data_q_reg[15]_3\(15 downto 0), + \pipe_stages_1.pipe_rx_elec_idle_q_reg_0\ => \pipe_stages_1.pipe_rx_elec_idle_q_reg\, + \pipe_stages_1.pipe_rx_phy_status_q_reg_0\ => \pipe_stages_1.pipe_rx_phy_status_q_reg\, + \pipe_stages_1.pipe_rx_status_q_reg[2]_0\(2 downto 0) => \pipe_stages_1.pipe_rx_status_q_reg[2]\(2 downto 0), + \pipe_stages_1.pipe_rx_status_q_reg[2]_1\(2 downto 0) => \pipe_stages_1.pipe_rx_status_q_reg[2]_3\(2 downto 0), + \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0\(1 downto 0) => \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0\(1 downto 0), + \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(15 downto 0) => \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(15 downto 0), + \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0\(1 downto 0) => \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0\(1 downto 0), + pipe_tx1_compliance => pipe_tx1_compliance, + pipe_tx1_elec_idle => pipe_tx1_elec_idle + ); +\pipe_4_lane.pipe_lane_2_i\: entity work.pcie_7x_0_pcie_7x_0_pcie_pipe_lane_0 + port map ( + PIPE_POWERDOWN(1 downto 0) => PIPE_POWERDOWN(5 downto 4), + PIPE_RXCHANISALIGNED(0) => PIPE_RXCHANISALIGNED(2), + PIPE_RXPOLARITY(0) => PIPE_RXPOLARITY(2), + PIPE_TXCOMPLIANCE(0) => PIPE_TXCOMPLIANCE(2), + PIPE_TXDATA(15 downto 0) => PIPE_TXDATA(47 downto 32), + PIPE_TXDATAK(1 downto 0) => PIPE_TXDATAK(5 downto 4), + PIPE_TXELECIDLE(0) => PIPE_TXELECIDLE(2), + SR(0) => SR(0), + pipe_pclk_in => pipe_pclk_in, + pipe_rx2_chanisaligned => pipe_rx2_chanisaligned, + pipe_rx2_elec_idle => pipe_rx2_elec_idle, + pipe_rx2_phy_status => pipe_rx2_phy_status, + pipe_rx2_polarity => pipe_rx2_polarity, + pipe_rx2_valid => pipe_rx2_valid, + pipe_rx2_valid_gt => pipe_rx2_valid_gt, + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0\(1 downto 0) => \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]\(1 downto 0), + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1\(1 downto 0) => \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_2\(1 downto 0), + \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(15 downto 0) => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(15 downto 0), + \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(15 downto 0) => \pipe_stages_1.pipe_rx_data_q_reg[15]_4\(15 downto 0), + \pipe_stages_1.pipe_rx_elec_idle_q_reg_0\ => \pipe_stages_1.pipe_rx_elec_idle_q_reg_0\, + \pipe_stages_1.pipe_rx_phy_status_q_reg_0\ => \pipe_stages_1.pipe_rx_phy_status_q_reg_0\, + \pipe_stages_1.pipe_rx_status_q_reg[2]_0\(2 downto 0) => \pipe_stages_1.pipe_rx_status_q_reg[2]_0\(2 downto 0), + \pipe_stages_1.pipe_rx_status_q_reg[2]_1\(2 downto 0) => \pipe_stages_1.pipe_rx_status_q_reg[2]_4\(2 downto 0), + \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0\(1 downto 0) => \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_1\(1 downto 0), + \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(15 downto 0) => \pipe_stages_1.pipe_tx_data_q_reg[15]_1\(15 downto 0), + \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0\(1 downto 0) => \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_1\(1 downto 0), + pipe_tx2_compliance => pipe_tx2_compliance, + pipe_tx2_elec_idle => pipe_tx2_elec_idle + ); +\pipe_4_lane.pipe_lane_3_i\: entity work.pcie_7x_0_pcie_7x_0_pcie_pipe_lane_1 + port map ( + PIPE_POWERDOWN(1 downto 0) => PIPE_POWERDOWN(7 downto 6), + PIPE_RXCHANISALIGNED(0) => PIPE_RXCHANISALIGNED(3), + PIPE_RXPOLARITY(0) => PIPE_RXPOLARITY(3), + PIPE_TXCOMPLIANCE(0) => PIPE_TXCOMPLIANCE(3), + PIPE_TXDATA(15 downto 0) => PIPE_TXDATA(63 downto 48), + PIPE_TXDATAK(1 downto 0) => PIPE_TXDATAK(7 downto 6), + PIPE_TXELECIDLE(0) => PIPE_TXELECIDLE(3), + SR(0) => SR(0), + pipe_pclk_in => pipe_pclk_in, + pipe_rx3_chanisaligned => pipe_rx3_chanisaligned, + pipe_rx3_elec_idle => pipe_rx3_elec_idle, + pipe_rx3_phy_status => pipe_rx3_phy_status, + pipe_rx3_polarity => pipe_rx3_polarity, + pipe_rx3_valid => pipe_rx3_valid, + pipe_rx3_valid_gt => pipe_rx3_valid_gt, + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0\(1 downto 0) => \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0\(1 downto 0), + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1\(1 downto 0) => \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_3\(1 downto 0), + \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(15 downto 0) => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(15 downto 0), + \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(15 downto 0) => \pipe_stages_1.pipe_rx_data_q_reg[15]_5\(15 downto 0), + \pipe_stages_1.pipe_rx_elec_idle_q_reg_0\ => \pipe_stages_1.pipe_rx_elec_idle_q_reg_1\, + \pipe_stages_1.pipe_rx_phy_status_q_reg_0\ => \pipe_stages_1.pipe_rx_phy_status_q_reg_1\, + \pipe_stages_1.pipe_rx_status_q_reg[2]_0\(2 downto 0) => \pipe_stages_1.pipe_rx_status_q_reg[2]_1\(2 downto 0), + \pipe_stages_1.pipe_rx_status_q_reg[2]_1\(2 downto 0) => \pipe_stages_1.pipe_rx_status_q_reg[2]_5\(2 downto 0), + \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0\(1 downto 0) => \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_2\(1 downto 0), + \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(15 downto 0) => \pipe_stages_1.pipe_tx_data_q_reg[15]_2\(15 downto 0), + \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0\(1 downto 0) => \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_2\(1 downto 0), + pipe_tx3_compliance => pipe_tx3_compliance, + pipe_tx3_elec_idle => pipe_tx3_elec_idle + ); +pipe_lane_0_i: entity work.pcie_7x_0_pcie_7x_0_pcie_pipe_lane_2 + port map ( + PIPE_POWERDOWN(1 downto 0) => PIPE_POWERDOWN(1 downto 0), + PIPE_RXCHANISALIGNED(0) => PIPE_RXCHANISALIGNED(0), + PIPE_RXPOLARITY(0) => PIPE_RXPOLARITY(0), + PIPE_TXCOMPLIANCE(0) => PIPE_TXCOMPLIANCE(0), + PIPE_TXDATA(15 downto 0) => PIPE_TXDATA(15 downto 0), + PIPE_TXDATAK(1 downto 0) => PIPE_TXDATAK(1 downto 0), + PIPE_TXELECIDLE(0) => PIPE_TXELECIDLE(0), + SR(0) => SR(0), + gt_rx_phy_status_q => gt_rx_phy_status_q, + gt_rxelecidle_q => gt_rxelecidle_q, + pipe_pclk_in => pipe_pclk_in, + pipe_rx0_chanisaligned => pipe_rx0_chanisaligned, + pipe_rx0_elec_idle => pipe_rx0_elec_idle, + pipe_rx0_phy_status => pipe_rx0_phy_status, + pipe_rx0_polarity => pipe_rx0_polarity, + pipe_rx0_valid => pipe_rx0_valid, + pipe_rx0_valid_gt => pipe_rx0_valid_gt, + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0\(1 downto 0) => \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1\(1 downto 0), + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1\(1 downto 0) => \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_4\(1 downto 0), + \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(15 downto 0) => \pipe_stages_1.pipe_rx_data_q_reg[15]_2\(15 downto 0), + \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(15 downto 0) => \pipe_stages_1.pipe_rx_data_q_reg[15]_6\(15 downto 0), + \pipe_stages_1.pipe_rx_status_q_reg[2]_0\(2 downto 0) => \pipe_stages_1.pipe_rx_status_q_reg[2]_2\(2 downto 0), + \pipe_stages_1.pipe_rx_status_q_reg[2]_1\(2 downto 0) => \pipe_stages_1.pipe_rx_status_q_reg[2]_6\(2 downto 0), + \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0\(1 downto 0) => \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]\(1 downto 0), + \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(15 downto 0) => \pipe_stages_1.pipe_tx_data_q_reg[15]\(15 downto 0), + \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0\(1 downto 0) => \pipe_stages_1.pipe_tx_powerdown_q_reg[1]\(1 downto 0), + pipe_tx0_compliance => pipe_tx0_compliance, + pipe_tx0_elec_idle => pipe_tx0_elec_idle + ); +pipe_misc_i: entity work.pcie_7x_0_pcie_7x_0_pcie_pipe_misc + port map ( + SR(0) => SR(0), + pipe_pclk_in => pipe_pclk_in, + \pipe_stages_1.pipe_tx_margin_q_reg[2]_0\(2 downto 0) => \pipe_stages_1.pipe_tx_margin_q_reg[2]\(2 downto 0), + \pipe_stages_1.pipe_tx_margin_q_reg[2]_1\(2 downto 0) => \pipe_stages_1.pipe_tx_margin_q_reg[2]_0\(2 downto 0), + \pipe_stages_1.pipe_tx_rate_q_reg_0\(0) => \pipe_stages_1.pipe_tx_rate_q_reg\(0), + pipe_tx_deemph => pipe_tx_deemph, + pipe_tx_deemph_gt => pipe_tx_deemph_gt, + pipe_tx_rate => pipe_tx_rate, + pipe_tx_rcvr_det => pipe_tx_rcvr_det, + pipe_tx_rcvr_det_gt => pipe_tx_rcvr_det_gt + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pipe_eq is + port ( + TXPRECURSOR : out STD_LOGIC_VECTOR ( 4 downto 0 ); + TXMAINCURSOR : out STD_LOGIC_VECTOR ( 6 downto 0 ); + TXPOSTCURSOR : out STD_LOGIC_VECTOR ( 4 downto 0 ); + USER_RXEQ_ADAPT_DONE : out STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + USER_RATE_GEN3 : in STD_LOGIC + ); +end pcie_7x_0_pcie_7x_0_pipe_eq; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pipe_eq is + signal \FSM_onehot_fsm_rx[1]_i_1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx[1]_i_2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx[3]_i_1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx[4]_i_1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx_reg_n_0_[1]\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx_reg_n_0_[2]\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx_reg_n_0_[3]\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx_reg_n_0_[4]\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx_reg_n_0_[5]\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx_reg_n_0_[6]\ : STD_LOGIC; + signal \FSM_sequential_fsm_tx[1]_i_2_n_0\ : STD_LOGIC; + signal \FSM_sequential_fsm_tx[2]_i_2_n_0\ : STD_LOGIC; + signal \^user_rxeq_adapt_done\ : STD_LOGIC; + signal fsm_tx : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal \fsm_tx__0\ : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal gen3_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of gen3_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of gen3_reg1 : signal is "true"; + signal gen3_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of gen3_reg2 : signal is "NO"; + attribute async_reg of gen3_reg2 : signal is "true"; + signal p_0_out : STD_LOGIC_VECTOR ( 17 downto 0 ); + signal rxeq_adapt_done_i_2_n_0 : STD_LOGIC; + signal rxeq_adapt_done_reg_i_2_n_0 : STD_LOGIC; + signal rxeq_adapt_done_reg_reg_n_0 : STD_LOGIC; + signal rxeq_cnt : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal \rxeq_cnt_reg_n_0_[0]\ : STD_LOGIC; + signal \rxeq_cnt_reg_n_0_[1]\ : STD_LOGIC; + signal \rxeq_cnt_reg_n_0_[2]\ : STD_LOGIC; + signal rxeq_control_reg1 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_control_reg1 : signal is "NO"; + attribute async_reg of rxeq_control_reg1 : signal is "true"; + signal rxeq_control_reg2 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_control_reg2 : signal is "NO"; + attribute async_reg of rxeq_control_reg2 : signal is "true"; + signal rxeq_fs : STD_LOGIC_VECTOR ( 5 downto 0 ); + signal \rxeq_fs[5]_i_1_n_0\ : STD_LOGIC; + signal \rxeq_fs_reg_n_0_[0]\ : STD_LOGIC; + signal \rxeq_fs_reg_n_0_[1]\ : STD_LOGIC; + signal \rxeq_fs_reg_n_0_[2]\ : STD_LOGIC; + signal \rxeq_fs_reg_n_0_[3]\ : STD_LOGIC; + signal \rxeq_fs_reg_n_0_[4]\ : STD_LOGIC; + signal \rxeq_fs_reg_n_0_[5]\ : STD_LOGIC; + signal rxeq_lf : STD_LOGIC_VECTOR ( 5 downto 0 ); + signal \rxeq_lf[5]_i_1_n_0\ : STD_LOGIC; + signal \rxeq_lf_reg_n_0_[0]\ : STD_LOGIC; + signal \rxeq_lf_reg_n_0_[1]\ : STD_LOGIC; + signal \rxeq_lf_reg_n_0_[2]\ : STD_LOGIC; + signal \rxeq_lf_reg_n_0_[3]\ : STD_LOGIC; + signal \rxeq_lf_reg_n_0_[4]\ : STD_LOGIC; + signal \rxeq_lf_reg_n_0_[5]\ : STD_LOGIC; + signal rxeq_lffs_reg1 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_lffs_reg1 : signal is "NO"; + attribute async_reg of rxeq_lffs_reg1 : signal is "true"; + signal rxeq_lffs_reg2 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_lffs_reg2 : signal is "NO"; + attribute async_reg of rxeq_lffs_reg2 : signal is "true"; + signal rxeq_new_txcoeff_req : STD_LOGIC; + signal rxeq_new_txcoeff_req_reg_n_0 : STD_LOGIC; + signal \rxeq_preset[0]_i_1_n_0\ : STD_LOGIC; + signal \rxeq_preset[1]_i_1_n_0\ : STD_LOGIC; + signal \rxeq_preset[2]_i_1_n_0\ : STD_LOGIC; + signal \rxeq_preset[2]_i_2_n_0\ : STD_LOGIC; + signal \rxeq_preset[2]_i_3_n_0\ : STD_LOGIC; + signal rxeq_preset_reg1 : STD_LOGIC_VECTOR ( 2 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_preset_reg1 : signal is "NO"; + attribute async_reg of rxeq_preset_reg1 : signal is "true"; + signal rxeq_preset_reg2 : STD_LOGIC_VECTOR ( 2 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_preset_reg2 : signal is "NO"; + attribute async_reg of rxeq_preset_reg2 : signal is "true"; + signal \rxeq_preset_reg_n_0_[0]\ : STD_LOGIC; + signal \rxeq_preset_reg_n_0_[1]\ : STD_LOGIC; + signal \rxeq_preset_reg_n_0_[2]\ : STD_LOGIC; + signal rxeq_preset_valid : STD_LOGIC; + signal rxeq_scan_i_n_0 : STD_LOGIC; + signal rxeq_scan_i_n_1 : STD_LOGIC; + signal rxeq_scan_i_n_2 : STD_LOGIC; + signal rxeq_scan_i_n_4 : STD_LOGIC; + signal rxeq_scan_i_n_5 : STD_LOGIC; + signal rxeq_txcoeff : STD_LOGIC_VECTOR ( 17 downto 0 ); + signal \rxeq_txcoeff_reg_n_0_[0]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[10]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[11]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[12]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[13]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[14]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[15]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[16]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[17]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[1]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[2]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[3]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[4]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[5]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[6]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[7]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[8]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[9]\ : STD_LOGIC; + signal rxeq_txpreset : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal \rxeq_txpreset[3]_i_1_n_0\ : STD_LOGIC; + signal \rxeq_txpreset[3]_i_3_n_0\ : STD_LOGIC; + signal rxeq_txpreset_reg1 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_txpreset_reg1 : signal is "NO"; + attribute async_reg of rxeq_txpreset_reg1 : signal is "true"; + signal rxeq_txpreset_reg2 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_txpreset_reg2 : signal is "NO"; + attribute async_reg of rxeq_txpreset_reg2 : signal is "true"; + signal \rxeq_txpreset_reg_n_0_[0]\ : STD_LOGIC; + signal \rxeq_txpreset_reg_n_0_[1]\ : STD_LOGIC; + signal \rxeq_txpreset_reg_n_0_[2]\ : STD_LOGIC; + signal \rxeq_txpreset_reg_n_0_[3]\ : STD_LOGIC; + signal rxeq_user_en_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxeq_user_en_reg1 : signal is "NO"; + attribute async_reg of rxeq_user_en_reg1 : signal is "true"; + signal rxeq_user_en_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxeq_user_en_reg2 : signal is "NO"; + attribute async_reg of rxeq_user_en_reg2 : signal is "true"; + signal rxeq_user_mode_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxeq_user_mode_reg1 : signal is "NO"; + attribute async_reg of rxeq_user_mode_reg1 : signal is "true"; + signal rxeq_user_mode_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxeq_user_mode_reg2 : signal is "NO"; + attribute async_reg of rxeq_user_mode_reg2 : signal is "true"; + signal rxeq_user_txcoeff_reg1 : STD_LOGIC_VECTOR ( 17 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_user_txcoeff_reg1 : signal is "NO"; + attribute async_reg of rxeq_user_txcoeff_reg1 : signal is "true"; + signal rxeq_user_txcoeff_reg2 : STD_LOGIC_VECTOR ( 17 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_user_txcoeff_reg2 : signal is "NO"; + attribute async_reg of rxeq_user_txcoeff_reg2 : signal is "true"; + signal txeq_control_reg1 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of txeq_control_reg1 : signal is "NO"; + attribute async_reg of txeq_control_reg1 : signal is "true"; + signal txeq_control_reg2 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of txeq_control_reg2 : signal is "NO"; + attribute async_reg of txeq_control_reg2 : signal is "true"; + signal txeq_deemph_reg1 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of txeq_deemph_reg1 : signal is "NO"; + attribute async_reg of txeq_deemph_reg1 : signal is "true"; + signal txeq_deemph_reg2 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of txeq_deemph_reg2 : signal is "NO"; + attribute async_reg of txeq_deemph_reg2 : signal is "true"; + signal \txeq_preset[17]_i_1_n_0\ : STD_LOGIC; + signal \txeq_preset[3]_i_1_n_0\ : STD_LOGIC; + signal \txeq_preset[7]_i_1_n_0\ : STD_LOGIC; + signal txeq_preset_done : STD_LOGIC; + signal txeq_preset_done_i_1_n_0 : STD_LOGIC; + signal txeq_preset_reg1 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of txeq_preset_reg1 : signal is "NO"; + attribute async_reg of txeq_preset_reg1 : signal is "true"; + signal txeq_preset_reg2 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of txeq_preset_reg2 : signal is "NO"; + attribute async_reg of txeq_preset_reg2 : signal is "true"; + signal \txeq_preset_reg_n_0_[0]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[10]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[11]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[12]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[13]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[14]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[15]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[16]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[17]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[1]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[2]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[3]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[7]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[8]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[9]\ : STD_LOGIC; + signal txeq_txcoeff : STD_LOGIC; + signal \txeq_txcoeff[0]_i_1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[0]_i_2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[10]_i_1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[10]_i_2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[11]_i_1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[11]_i_2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[12]_i_1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[12]_i_2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[13]_i_1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[13]_i_2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[14]_i_1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[14]_i_2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[15]_i_1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[15]_i_2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[16]_i_1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[16]_i_2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[17]_i_1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[17]_i_2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[18]_i_2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[18]_i_3_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[1]_i_1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[1]_i_2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[2]_i_1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[2]_i_2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[3]_i_1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[3]_i_2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[4]_i_1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[4]_i_2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[5]_i_1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[5]_i_2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[6]_i_1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[6]_i_2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[7]_i_1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[7]_i_2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[8]_i_1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[8]_i_2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[9]_i_1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[9]_i_2_n_0\ : STD_LOGIC; + signal txeq_txcoeff_cnt : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal \txeq_txcoeff_cnt_reg_n_0_[0]\ : STD_LOGIC; + signal \txeq_txcoeff_cnt_reg_n_0_[1]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[0]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[10]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[11]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[12]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[13]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[14]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[15]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[16]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[17]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[18]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[1]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[2]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[3]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[4]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[5]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[6]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[7]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[8]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[9]\ : STD_LOGIC; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \FSM_onehot_fsm_rx[4]_i_1\ : label is "soft_lutpair50"; + attribute FSM_ENCODED_STATES : string; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_rx_reg[1]\ : label is "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_rx_reg[2]\ : label is "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_rx_reg[3]\ : label is "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_rx_reg[4]\ : label is "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_rx_reg[5]\ : label is "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_rx_reg[6]\ : label is "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001"; + attribute SOFT_HLUTNM of \FSM_sequential_fsm_tx[1]_i_2\ : label is "soft_lutpair48"; + attribute SOFT_HLUTNM of \FSM_sequential_fsm_tx[2]_i_2\ : label is "soft_lutpair48"; + attribute FSM_ENCODED_STATES of \FSM_sequential_fsm_tx_reg[0]\ : label is "FSM_TXEQ_QUERY:101,FSM_TXEQ_PRESET:010,FSM_TXEQ_TXCOEFF:011,FSM_TXEQ_REMAP:100,FSM_TXEQ_DONE:110,FSM_TXEQ_IDLE:001,iSTATE:000"; + attribute FSM_ENCODED_STATES of \FSM_sequential_fsm_tx_reg[1]\ : label is "FSM_TXEQ_QUERY:101,FSM_TXEQ_PRESET:010,FSM_TXEQ_TXCOEFF:011,FSM_TXEQ_REMAP:100,FSM_TXEQ_DONE:110,FSM_TXEQ_IDLE:001,iSTATE:000"; + attribute FSM_ENCODED_STATES of \FSM_sequential_fsm_tx_reg[2]\ : label is "FSM_TXEQ_QUERY:101,FSM_TXEQ_PRESET:010,FSM_TXEQ_TXCOEFF:011,FSM_TXEQ_REMAP:100,FSM_TXEQ_DONE:110,FSM_TXEQ_IDLE:001,iSTATE:000"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of gen3_reg1_reg : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of gen3_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of gen3_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of gen3_reg2_reg : label is std.standard.true; + attribute KEEP of gen3_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of gen3_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \rxeq_cnt[1]_i_1\ : label is "soft_lutpair51"; + attribute SOFT_HLUTNM of \rxeq_cnt[2]_i_1\ : label is "soft_lutpair50"; + attribute ASYNC_REG_boolean of \rxeq_control_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_control_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_control_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_control_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_control_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_control_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_control_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_control_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_control_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_control_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_control_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_control_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg2_reg[5]\ : label is "NO"; + attribute SOFT_HLUTNM of \rxeq_preset[2]_i_3\ : label is "soft_lutpair51"; + attribute ASYNC_REG_boolean of \rxeq_preset_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_preset_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_preset_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_preset_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_preset_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_preset_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_preset_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_preset_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_preset_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_preset_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_preset_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_preset_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_preset_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_preset_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_preset_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_preset_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_preset_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_preset_reg2_reg[2]\ : label is "NO"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[0]_i_1\ : label is "soft_lutpair52"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[10]_i_1\ : label is "soft_lutpair57"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[11]_i_1\ : label is "soft_lutpair57"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[1]_i_1\ : label is "soft_lutpair52"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[2]_i_1\ : label is "soft_lutpair53"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[3]_i_1\ : label is "soft_lutpair53"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[4]_i_1\ : label is "soft_lutpair54"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[5]_i_1\ : label is "soft_lutpair54"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[6]_i_1\ : label is "soft_lutpair55"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[7]_i_1\ : label is "soft_lutpair55"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[8]_i_1\ : label is "soft_lutpair56"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[9]_i_1\ : label is "soft_lutpair56"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of rxeq_user_en_reg1_reg : label is std.standard.true; + attribute KEEP of rxeq_user_en_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxeq_user_en_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxeq_user_en_reg2_reg : label is std.standard.true; + attribute KEEP of rxeq_user_en_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxeq_user_en_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxeq_user_mode_reg1_reg : label is std.standard.true; + attribute KEEP of rxeq_user_mode_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxeq_user_mode_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxeq_user_mode_reg2_reg : label is std.standard.true; + attribute KEEP of rxeq_user_mode_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxeq_user_mode_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[10]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[11]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[12]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[13]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[14]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[15]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[16]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[16]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[16]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[17]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[17]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[17]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[6]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[7]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[8]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[9]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[9]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[10]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[11]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[12]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[13]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[14]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[15]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[16]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[16]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[16]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[17]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[17]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[17]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[6]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[7]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[8]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[9]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[9]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_control_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \txeq_control_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_control_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_control_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \txeq_control_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_control_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_control_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \txeq_control_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_control_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_control_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \txeq_control_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_control_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg2_reg[5]\ : label is "NO"; + attribute SOFT_HLUTNM of txeq_preset_done_i_1 : label is "soft_lutpair49"; + attribute ASYNC_REG_boolean of \txeq_preset_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg2_reg[3]\ : label is "NO"; + attribute SOFT_HLUTNM of \txeq_txcoeff_cnt[1]_i_1\ : label is "soft_lutpair49"; +begin + USER_RXEQ_ADAPT_DONE <= \^user_rxeq_adapt_done\; +\FSM_onehot_fsm_rx[1]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"ABABABAA" + ) + port map ( + I0 => \FSM_onehot_fsm_rx[1]_i_2_n_0\, + I1 => rxeq_control_reg2(1), + I2 => rxeq_control_reg2(0), + I3 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I4 => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + O => \FSM_onehot_fsm_rx[1]_i_1_n_0\ + ); +\FSM_onehot_fsm_rx[1]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000000000001" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I3 => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + I4 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I5 => \FSM_onehot_fsm_rx_reg_n_0_[5]\, + O => \FSM_onehot_fsm_rx[1]_i_2_n_0\ + ); +\FSM_onehot_fsm_rx[3]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFF8FF88888888" + ) + port map ( + I0 => rxeq_control_reg2(1), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I2 => \rxeq_cnt_reg_n_0_[2]\, + I3 => \rxeq_cnt_reg_n_0_[1]\, + I4 => \rxeq_cnt_reg_n_0_[0]\, + I5 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + O => \FSM_onehot_fsm_rx[3]_i_1_n_0\ + ); +\FSM_onehot_fsm_rx[4]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"2ABA2AAA" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => \rxeq_cnt_reg_n_0_[2]\, + I2 => \rxeq_cnt_reg_n_0_[1]\, + I3 => \rxeq_cnt_reg_n_0_[0]\, + I4 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + O => \FSM_onehot_fsm_rx[4]_i_1_n_0\ + ); +\FSM_onehot_fsm_rx_reg[1]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm_rx[1]_i_1_n_0\, + Q => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + S => RST_CPLLRESET + ); +\FSM_onehot_fsm_rx_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_scan_i_n_2, + Q => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_rx_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm_rx[3]_i_1_n_0\, + Q => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_rx_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm_rx[4]_i_1_n_0\, + Q => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_rx_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_scan_i_n_1, + Q => \FSM_onehot_fsm_rx_reg_n_0_[5]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_rx_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_scan_i_n_0, + Q => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + R => RST_CPLLRESET + ); +\FSM_sequential_fsm_tx[0]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"C04FC043C04FF04F" + ) + port map ( + I0 => \FSM_sequential_fsm_tx[1]_i_2_n_0\, + I1 => fsm_tx(0), + I2 => fsm_tx(1), + I3 => fsm_tx(2), + I4 => txeq_control_reg2(1), + I5 => txeq_control_reg2(0), + O => \fsm_tx__0\(0) + ); +\FSM_sequential_fsm_tx[1]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"3F703F7C3F7C0F70" + ) + port map ( + I0 => \FSM_sequential_fsm_tx[1]_i_2_n_0\, + I1 => fsm_tx(0), + I2 => fsm_tx(1), + I3 => fsm_tx(2), + I4 => txeq_control_reg2(1), + I5 => txeq_control_reg2(0), + O => \fsm_tx__0\(1) + ); +\FSM_sequential_fsm_tx[1]_i_2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + O => \FSM_sequential_fsm_tx[1]_i_2_n_0\ + ); +\FSM_sequential_fsm_tx[2]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"3A2A2A227F7F7F77" + ) + port map ( + I0 => fsm_tx(2), + I1 => fsm_tx(1), + I2 => fsm_tx(0), + I3 => txeq_control_reg2(1), + I4 => txeq_control_reg2(0), + I5 => \FSM_sequential_fsm_tx[2]_i_2_n_0\, + O => \fsm_tx__0\(2) + ); +\FSM_sequential_fsm_tx[2]_i_2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"D0FFDFFF" + ) + port map ( + I0 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I2 => fsm_tx(0), + I3 => fsm_tx(1), + I4 => txeq_preset_done, + O => \FSM_sequential_fsm_tx[2]_i_2_n_0\ + ); +\FSM_sequential_fsm_tx_reg[0]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fsm_tx__0\(0), + Q => fsm_tx(0), + S => RST_CPLLRESET + ); +\FSM_sequential_fsm_tx_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fsm_tx__0\(1), + Q => fsm_tx(1), + R => RST_CPLLRESET + ); +\FSM_sequential_fsm_tx_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fsm_tx__0\(2), + Q => fsm_tx(2), + R => RST_CPLLRESET + ); +gen3_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => USER_RATE_GEN3, + Q => gen3_reg1, + R => RST_CPLLRESET + ); +gen3_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => gen3_reg1, + Q => gen3_reg2, + R => RST_CPLLRESET + ); +\gtx_channel.gtxe2_channel_i_i_22\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[17]\, + O => TXPOSTCURSOR(4) + ); +\gtx_channel.gtxe2_channel_i_i_23\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[16]\, + O => TXPOSTCURSOR(3) + ); +\gtx_channel.gtxe2_channel_i_i_24\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[15]\, + O => TXPOSTCURSOR(2) + ); +\gtx_channel.gtxe2_channel_i_i_25\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[14]\, + O => TXPOSTCURSOR(1) + ); +\gtx_channel.gtxe2_channel_i_i_26\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[13]\, + O => TXPOSTCURSOR(0) + ); +\gtx_channel.gtxe2_channel_i_i_27\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[4]\, + O => TXPRECURSOR(4) + ); +\gtx_channel.gtxe2_channel_i_i_28\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[3]\, + O => TXPRECURSOR(3) + ); +\gtx_channel.gtxe2_channel_i_i_29\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[2]\, + O => TXPRECURSOR(2) + ); +\gtx_channel.gtxe2_channel_i_i_30\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[1]\, + O => TXPRECURSOR(1) + ); +\gtx_channel.gtxe2_channel_i_i_31\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[0]\, + I1 => gen3_reg2, + O => TXPRECURSOR(0) + ); +\gtx_channel.gtxe2_channel_i_i_32\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[12]\, + O => TXMAINCURSOR(6) + ); +\gtx_channel.gtxe2_channel_i_i_33\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[11]\, + O => TXMAINCURSOR(5) + ); +\gtx_channel.gtxe2_channel_i_i_34\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[10]\, + O => TXMAINCURSOR(4) + ); +\gtx_channel.gtxe2_channel_i_i_35\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[9]\, + O => TXMAINCURSOR(3) + ); +\gtx_channel.gtxe2_channel_i_i_36\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[8]\, + O => TXMAINCURSOR(2) + ); +\gtx_channel.gtxe2_channel_i_i_37\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[7]\, + O => TXMAINCURSOR(1) + ); +\gtx_channel.gtxe2_channel_i_i_38\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[6]\, + O => TXMAINCURSOR(0) + ); +rxeq_adapt_done_i_2: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFEFFFFFFFF" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[5]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + I3 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I4 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I5 => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + O => rxeq_adapt_done_i_2_n_0 + ); +rxeq_adapt_done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_scan_i_n_5, + Q => \^user_rxeq_adapt_done\, + R => RST_CPLLRESET + ); +rxeq_adapt_done_reg_i_2: unisim.vcomponents.LUT3 + generic map( + INIT => X"08" + ) + port map ( + I0 => rxeq_control_reg2(0), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I2 => rxeq_control_reg2(1), + O => rxeq_adapt_done_reg_i_2_n_0 + ); +rxeq_adapt_done_reg_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_scan_i_n_4, + Q => rxeq_adapt_done_reg_reg_n_0, + R => RST_CPLLRESET + ); +\rxeq_cnt[0]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"8888FFF8" + ) + port map ( + I0 => rxeq_control_reg2(1), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I3 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I4 => \rxeq_cnt_reg_n_0_[0]\, + O => rxeq_cnt(0) + ); +\rxeq_cnt[1]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"6660" + ) + port map ( + I0 => \rxeq_cnt_reg_n_0_[0]\, + I1 => \rxeq_cnt_reg_n_0_[1]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I3 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + O => rxeq_cnt(1) + ); +\rxeq_cnt[2]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"78787800" + ) + port map ( + I0 => \rxeq_cnt_reg_n_0_[1]\, + I1 => \rxeq_cnt_reg_n_0_[0]\, + I2 => \rxeq_cnt_reg_n_0_[2]\, + I3 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I4 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + O => rxeq_cnt(2) + ); +\rxeq_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_cnt(0), + Q => \rxeq_cnt_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\rxeq_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_cnt(1), + Q => \rxeq_cnt_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\rxeq_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_cnt(2), + Q => \rxeq_cnt_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\rxeq_control_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_control_reg1(0), + R => RST_CPLLRESET + ); +\rxeq_control_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_control_reg1(1), + R => RST_CPLLRESET + ); +\rxeq_control_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_control_reg1(0), + Q => rxeq_control_reg2(0), + R => RST_CPLLRESET + ); +\rxeq_control_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_control_reg1(1), + Q => rxeq_control_reg2(1), + R => RST_CPLLRESET + ); +\rxeq_fs[0]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => rxeq_lffs_reg2(0), + O => rxeq_fs(0) + ); +\rxeq_fs[1]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => rxeq_lffs_reg2(1), + O => rxeq_fs(1) + ); +\rxeq_fs[2]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => rxeq_lffs_reg2(2), + O => rxeq_fs(2) + ); +\rxeq_fs[3]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => rxeq_lffs_reg2(3), + O => rxeq_fs(3) + ); +\rxeq_fs[4]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => rxeq_lffs_reg2(4), + O => rxeq_fs(4) + ); +\rxeq_fs[5]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"F8" + ) + port map ( + I0 => rxeq_control_reg2(1), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I2 => \FSM_onehot_fsm_rx[1]_i_2_n_0\, + O => \rxeq_fs[5]_i_1_n_0\ + ); +\rxeq_fs[5]_i_2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => rxeq_lffs_reg2(5), + O => rxeq_fs(5) + ); +\rxeq_fs_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_fs[5]_i_1_n_0\, + D => rxeq_fs(0), + Q => \rxeq_fs_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\rxeq_fs_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_fs[5]_i_1_n_0\, + D => rxeq_fs(1), + Q => \rxeq_fs_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\rxeq_fs_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_fs[5]_i_1_n_0\, + D => rxeq_fs(2), + Q => \rxeq_fs_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\rxeq_fs_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_fs[5]_i_1_n_0\, + D => rxeq_fs(3), + Q => \rxeq_fs_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\rxeq_fs_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_fs[5]_i_1_n_0\, + D => rxeq_fs(4), + Q => \rxeq_fs_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\rxeq_fs_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_fs[5]_i_1_n_0\, + D => rxeq_fs(5), + Q => \rxeq_fs_reg_n_0_[5]\, + R => RST_CPLLRESET + ); +\rxeq_lf[0]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => rxeq_lffs_reg2(0), + O => rxeq_lf(0) + ); +\rxeq_lf[1]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => rxeq_lffs_reg2(1), + O => rxeq_lf(1) + ); +\rxeq_lf[2]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => rxeq_lffs_reg2(2), + O => rxeq_lf(2) + ); +\rxeq_lf[3]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => rxeq_lffs_reg2(3), + O => rxeq_lf(3) + ); +\rxeq_lf[4]_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => rxeq_lffs_reg2(4), + O => rxeq_lf(4) + ); +\rxeq_lf[5]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"EAAAAAAA" + ) + port map ( + I0 => \FSM_onehot_fsm_rx[1]_i_2_n_0\, + I1 => \rxeq_cnt_reg_n_0_[2]\, + I2 => \rxeq_cnt_reg_n_0_[0]\, + I3 => \rxeq_cnt_reg_n_0_[1]\, + I4 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + O => \rxeq_lf[5]_i_1_n_0\ + ); +\rxeq_lf[5]_i_2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => rxeq_lffs_reg2(5), + O => rxeq_lf(5) + ); +\rxeq_lf_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_lf[5]_i_1_n_0\, + D => rxeq_lf(0), + Q => \rxeq_lf_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\rxeq_lf_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_lf[5]_i_1_n_0\, + D => rxeq_lf(1), + Q => \rxeq_lf_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\rxeq_lf_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_lf[5]_i_1_n_0\, + D => rxeq_lf(2), + Q => \rxeq_lf_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\rxeq_lf_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_lf[5]_i_1_n_0\, + D => rxeq_lf(3), + Q => \rxeq_lf_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\rxeq_lf_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_lf[5]_i_1_n_0\, + D => rxeq_lf(4), + Q => \rxeq_lf_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\rxeq_lf_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_lf[5]_i_1_n_0\, + D => rxeq_lf(5), + Q => \rxeq_lf_reg_n_0_[5]\, + R => RST_CPLLRESET + ); +\rxeq_lffs_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_lffs_reg1(0), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_lffs_reg1(1), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_lffs_reg1(2), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_lffs_reg1(3), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_lffs_reg1(4), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_lffs_reg1(5), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_lffs_reg1(0), + Q => rxeq_lffs_reg2(0), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_lffs_reg1(1), + Q => rxeq_lffs_reg2(1), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_lffs_reg1(2), + Q => rxeq_lffs_reg2(2), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_lffs_reg1(3), + Q => rxeq_lffs_reg2(3), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_lffs_reg1(4), + Q => rxeq_lffs_reg2(4), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_lffs_reg1(5), + Q => rxeq_lffs_reg2(5), + R => RST_CPLLRESET + ); +rxeq_new_txcoeff_req_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_new_txcoeff_req, + Q => rxeq_new_txcoeff_req_reg_n_0, + R => RST_CPLLRESET + ); +\rxeq_preset[0]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"A8FFA800" + ) + port map ( + I0 => rxeq_preset_reg2(0), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I3 => \rxeq_preset[2]_i_2_n_0\, + I4 => \rxeq_preset_reg_n_0_[0]\, + O => \rxeq_preset[0]_i_1_n_0\ + ); +\rxeq_preset[1]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"A8FFA800" + ) + port map ( + I0 => rxeq_preset_reg2(1), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I3 => \rxeq_preset[2]_i_2_n_0\, + I4 => \rxeq_preset_reg_n_0_[1]\, + O => \rxeq_preset[1]_i_1_n_0\ + ); +\rxeq_preset[2]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"A8FFA800" + ) + port map ( + I0 => rxeq_preset_reg2(2), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I3 => \rxeq_preset[2]_i_2_n_0\, + I4 => \rxeq_preset_reg_n_0_[2]\, + O => \rxeq_preset[2]_i_1_n_0\ + ); +\rxeq_preset[2]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFFFF0002" + ) + port map ( + I0 => \rxeq_preset[2]_i_3_n_0\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I3 => \FSM_onehot_fsm_rx_reg_n_0_[5]\, + I4 => rxeq_adapt_done_reg_i_2_n_0, + I5 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + O => \rxeq_preset[2]_i_2_n_0\ + ); +\rxeq_preset[2]_i_3\: unisim.vcomponents.LUT2 + generic map( + INIT => X"1" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + O => \rxeq_preset[2]_i_3_n_0\ + ); +\rxeq_preset_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_preset_reg1(0), + R => RST_CPLLRESET + ); +\rxeq_preset_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_preset_reg1(1), + R => RST_CPLLRESET + ); +\rxeq_preset_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_preset_reg1(2), + R => RST_CPLLRESET + ); +\rxeq_preset_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_preset_reg1(0), + Q => rxeq_preset_reg2(0), + R => RST_CPLLRESET + ); +\rxeq_preset_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_preset_reg1(1), + Q => rxeq_preset_reg2(1), + R => RST_CPLLRESET + ); +\rxeq_preset_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_preset_reg1(2), + Q => rxeq_preset_reg2(2), + R => RST_CPLLRESET + ); +\rxeq_preset_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rxeq_preset[0]_i_1_n_0\, + Q => \rxeq_preset_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\rxeq_preset_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rxeq_preset[1]_i_1_n_0\, + Q => \rxeq_preset_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\rxeq_preset_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rxeq_preset[2]_i_1_n_0\, + Q => \rxeq_preset_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +rxeq_preset_valid_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + Q => rxeq_preset_valid, + R => RST_CPLLRESET + ); +rxeq_scan_i: entity work.pcie_7x_0_pcie_7x_0_rxeq_scan_59 + port map ( + D(2) => rxeq_scan_i_n_0, + D(1) => rxeq_scan_i_n_1, + D(0) => rxeq_scan_i_n_2, + \FSM_onehot_fsm_rx_reg[5]\(2) => \rxeq_cnt_reg_n_0_[2]\, + \FSM_onehot_fsm_rx_reg[5]\(1) => \rxeq_cnt_reg_n_0_[1]\, + \FSM_onehot_fsm_rx_reg[5]\(0) => \rxeq_cnt_reg_n_0_[0]\, + Q(4) => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + Q(3) => \FSM_onehot_fsm_rx_reg_n_0_[5]\, + Q(2) => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + Q(1) => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + Q(0) => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + RST_CPLLRESET => RST_CPLLRESET, + USER_RXEQ_ADAPT_DONE => \^user_rxeq_adapt_done\, + adapt_done_reg_0 => rxeq_scan_i_n_4, + \fs_reg1_reg[5]_0\(5) => \rxeq_fs_reg_n_0_[5]\, + \fs_reg1_reg[5]_0\(4) => \rxeq_fs_reg_n_0_[4]\, + \fs_reg1_reg[5]_0\(3) => \rxeq_fs_reg_n_0_[3]\, + \fs_reg1_reg[5]_0\(2) => \rxeq_fs_reg_n_0_[2]\, + \fs_reg1_reg[5]_0\(1) => \rxeq_fs_reg_n_0_[1]\, + \fs_reg1_reg[5]_0\(0) => \rxeq_fs_reg_n_0_[0]\, + \lf_reg1_reg[5]_0\(5) => \rxeq_lf_reg_n_0_[5]\, + \lf_reg1_reg[5]_0\(4) => \rxeq_lf_reg_n_0_[4]\, + \lf_reg1_reg[5]_0\(3) => \rxeq_lf_reg_n_0_[3]\, + \lf_reg1_reg[5]_0\(2) => \rxeq_lf_reg_n_0_[2]\, + \lf_reg1_reg[5]_0\(1) => \rxeq_lf_reg_n_0_[1]\, + \lf_reg1_reg[5]_0\(0) => \rxeq_lf_reg_n_0_[0]\, + new_txcoeff_done_reg_0 => rxeq_scan_i_n_5, + new_txcoeff_req_reg1_reg_0 => rxeq_new_txcoeff_req_reg_n_0, + \out\(1 downto 0) => rxeq_control_reg2(1 downto 0), + pipe_pclk_in => pipe_pclk_in, + \preset_reg1_reg[2]_0\(2) => \rxeq_preset_reg_n_0_[2]\, + \preset_reg1_reg[2]_0\(1) => \rxeq_preset_reg_n_0_[1]\, + \preset_reg1_reg[2]_0\(0) => \rxeq_preset_reg_n_0_[0]\, + rxeq_adapt_done_reg => rxeq_adapt_done_i_2_n_0, + rxeq_adapt_done_reg_reg => \FSM_onehot_fsm_rx[1]_i_2_n_0\, + rxeq_adapt_done_reg_reg_0 => rxeq_adapt_done_reg_i_2_n_0, + rxeq_adapt_done_reg_reg_1 => rxeq_adapt_done_reg_reg_n_0, + rxeq_new_txcoeff_req => rxeq_new_txcoeff_req, + rxeq_preset_valid => rxeq_preset_valid, + \txcoeff_reg1_reg[17]_0\(17) => \rxeq_txcoeff_reg_n_0_[17]\, + \txcoeff_reg1_reg[17]_0\(16) => \rxeq_txcoeff_reg_n_0_[16]\, + \txcoeff_reg1_reg[17]_0\(15) => \rxeq_txcoeff_reg_n_0_[15]\, + \txcoeff_reg1_reg[17]_0\(14) => \rxeq_txcoeff_reg_n_0_[14]\, + \txcoeff_reg1_reg[17]_0\(13) => \rxeq_txcoeff_reg_n_0_[13]\, + \txcoeff_reg1_reg[17]_0\(12) => \rxeq_txcoeff_reg_n_0_[12]\, + \txcoeff_reg1_reg[17]_0\(11) => \rxeq_txcoeff_reg_n_0_[11]\, + \txcoeff_reg1_reg[17]_0\(10) => \rxeq_txcoeff_reg_n_0_[10]\, + \txcoeff_reg1_reg[17]_0\(9) => \rxeq_txcoeff_reg_n_0_[9]\, + \txcoeff_reg1_reg[17]_0\(8) => \rxeq_txcoeff_reg_n_0_[8]\, + \txcoeff_reg1_reg[17]_0\(7) => \rxeq_txcoeff_reg_n_0_[7]\, + \txcoeff_reg1_reg[17]_0\(6) => \rxeq_txcoeff_reg_n_0_[6]\, + \txcoeff_reg1_reg[17]_0\(5) => \rxeq_txcoeff_reg_n_0_[5]\, + \txcoeff_reg1_reg[17]_0\(4) => \rxeq_txcoeff_reg_n_0_[4]\, + \txcoeff_reg1_reg[17]_0\(3) => \rxeq_txcoeff_reg_n_0_[3]\, + \txcoeff_reg1_reg[17]_0\(2) => \rxeq_txcoeff_reg_n_0_[2]\, + \txcoeff_reg1_reg[17]_0\(1) => \rxeq_txcoeff_reg_n_0_[1]\, + \txcoeff_reg1_reg[17]_0\(0) => \rxeq_txcoeff_reg_n_0_[0]\, + \txpreset_reg1_reg[3]_0\(3) => \rxeq_txpreset_reg_n_0_[3]\, + \txpreset_reg1_reg[3]_0\(2) => \rxeq_txpreset_reg_n_0_[2]\, + \txpreset_reg1_reg[3]_0\(1) => \rxeq_txpreset_reg_n_0_[1]\, + \txpreset_reg1_reg[3]_0\(0) => \rxeq_txpreset_reg_n_0_[0]\ + ); +\rxeq_txcoeff[0]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[6]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(0) + ); +\rxeq_txcoeff[10]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[16]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(10) + ); +\rxeq_txcoeff[11]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[17]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(11) + ); +\rxeq_txcoeff[12]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => txeq_deemph_reg2(0), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(12) + ); +\rxeq_txcoeff[13]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => txeq_deemph_reg2(1), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(13) + ); +\rxeq_txcoeff[14]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => txeq_deemph_reg2(2), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(14) + ); +\rxeq_txcoeff[15]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => txeq_deemph_reg2(3), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(15) + ); +\rxeq_txcoeff[16]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => txeq_deemph_reg2(4), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(16) + ); +\rxeq_txcoeff[17]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => txeq_deemph_reg2(5), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(17) + ); +\rxeq_txcoeff[1]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[7]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(1) + ); +\rxeq_txcoeff[2]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[8]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(2) + ); +\rxeq_txcoeff[3]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[9]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(3) + ); +\rxeq_txcoeff[4]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[10]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(4) + ); +\rxeq_txcoeff[5]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[11]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(5) + ); +\rxeq_txcoeff[6]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[12]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(6) + ); +\rxeq_txcoeff[7]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[13]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(7) + ); +\rxeq_txcoeff[8]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[14]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(8) + ); +\rxeq_txcoeff[9]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[15]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(9) + ); +\rxeq_txcoeff_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1_n_0\, + D => rxeq_txcoeff(0), + Q => \rxeq_txcoeff_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1_n_0\, + D => rxeq_txcoeff(10), + Q => \rxeq_txcoeff_reg_n_0_[10]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1_n_0\, + D => rxeq_txcoeff(11), + Q => \rxeq_txcoeff_reg_n_0_[11]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1_n_0\, + D => rxeq_txcoeff(12), + Q => \rxeq_txcoeff_reg_n_0_[12]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1_n_0\, + D => rxeq_txcoeff(13), + Q => \rxeq_txcoeff_reg_n_0_[13]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1_n_0\, + D => rxeq_txcoeff(14), + Q => \rxeq_txcoeff_reg_n_0_[14]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1_n_0\, + D => rxeq_txcoeff(15), + Q => \rxeq_txcoeff_reg_n_0_[15]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[16]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1_n_0\, + D => rxeq_txcoeff(16), + Q => \rxeq_txcoeff_reg_n_0_[16]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[17]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1_n_0\, + D => rxeq_txcoeff(17), + Q => \rxeq_txcoeff_reg_n_0_[17]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1_n_0\, + D => rxeq_txcoeff(1), + Q => \rxeq_txcoeff_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1_n_0\, + D => rxeq_txcoeff(2), + Q => \rxeq_txcoeff_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1_n_0\, + D => rxeq_txcoeff(3), + Q => \rxeq_txcoeff_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1_n_0\, + D => rxeq_txcoeff(4), + Q => \rxeq_txcoeff_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1_n_0\, + D => rxeq_txcoeff(5), + Q => \rxeq_txcoeff_reg_n_0_[5]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1_n_0\, + D => rxeq_txcoeff(6), + Q => \rxeq_txcoeff_reg_n_0_[6]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1_n_0\, + D => rxeq_txcoeff(7), + Q => \rxeq_txcoeff_reg_n_0_[7]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1_n_0\, + D => rxeq_txcoeff(8), + Q => \rxeq_txcoeff_reg_n_0_[8]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1_n_0\, + D => rxeq_txcoeff(9), + Q => \rxeq_txcoeff_reg_n_0_[9]\, + R => RST_CPLLRESET + ); +\rxeq_txpreset[0]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => rxeq_txpreset_reg2(0), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txpreset(0) + ); +\rxeq_txpreset[1]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => rxeq_txpreset_reg2(1), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txpreset(1) + ); +\rxeq_txpreset[2]_i_1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => rxeq_txpreset_reg2(2), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txpreset(2) + ); +\rxeq_txpreset[3]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFFF404" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + I1 => \rxeq_txpreset[3]_i_3_n_0\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I3 => rxeq_control_reg2(1), + I4 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + O => \rxeq_txpreset[3]_i_1_n_0\ + ); +\rxeq_txpreset[3]_i_2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => rxeq_txpreset_reg2(3), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txpreset(3) + ); +\rxeq_txpreset[3]_i_3\: unisim.vcomponents.LUT3 + generic map( + INIT => X"01" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[5]\, + O => \rxeq_txpreset[3]_i_3_n_0\ + ); +\rxeq_txpreset_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_txpreset_reg1(0), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_txpreset_reg1(1), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_txpreset_reg1(2), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_txpreset_reg1(3), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_txpreset_reg1(0), + Q => rxeq_txpreset_reg2(0), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_txpreset_reg1(1), + Q => rxeq_txpreset_reg2(1), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_txpreset_reg1(2), + Q => rxeq_txpreset_reg2(2), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_txpreset_reg1(3), + Q => rxeq_txpreset_reg2(3), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1_n_0\, + D => rxeq_txpreset(0), + Q => \rxeq_txpreset_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1_n_0\, + D => rxeq_txpreset(1), + Q => \rxeq_txpreset_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1_n_0\, + D => rxeq_txpreset(2), + Q => \rxeq_txpreset_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1_n_0\, + D => rxeq_txpreset(3), + Q => \rxeq_txpreset_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +rxeq_user_en_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_en_reg1, + R => RST_CPLLRESET + ); +rxeq_user_en_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_en_reg1, + Q => rxeq_user_en_reg2, + R => RST_CPLLRESET + ); +rxeq_user_mode_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_mode_reg1, + R => RST_CPLLRESET + ); +rxeq_user_mode_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_mode_reg1, + Q => rxeq_user_mode_reg2, + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(0), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(10), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(11), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(12), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(13), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(14), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(15), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[16]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(16), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[17]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(17), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(1), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(2), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(3), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(4), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(5), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(6), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(7), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(8), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(9), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(0), + Q => rxeq_user_txcoeff_reg2(0), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(10), + Q => rxeq_user_txcoeff_reg2(10), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(11), + Q => rxeq_user_txcoeff_reg2(11), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(12), + Q => rxeq_user_txcoeff_reg2(12), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(13), + Q => rxeq_user_txcoeff_reg2(13), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(14), + Q => rxeq_user_txcoeff_reg2(14), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(15), + Q => rxeq_user_txcoeff_reg2(15), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[16]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(16), + Q => rxeq_user_txcoeff_reg2(16), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[17]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(17), + Q => rxeq_user_txcoeff_reg2(17), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(1), + Q => rxeq_user_txcoeff_reg2(1), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(2), + Q => rxeq_user_txcoeff_reg2(2), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(3), + Q => rxeq_user_txcoeff_reg2(3), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(4), + Q => rxeq_user_txcoeff_reg2(4), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(5), + Q => rxeq_user_txcoeff_reg2(5), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(6), + Q => rxeq_user_txcoeff_reg2(6), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(7), + Q => rxeq_user_txcoeff_reg2(7), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(8), + Q => rxeq_user_txcoeff_reg2(8), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(9), + Q => rxeq_user_txcoeff_reg2(9), + R => RST_CPLLRESET + ); +\txeq_control_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_control_reg1(0), + R => RST_CPLLRESET + ); +\txeq_control_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_control_reg1(1), + R => RST_CPLLRESET + ); +\txeq_control_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_control_reg1(0), + Q => txeq_control_reg2(0), + R => RST_CPLLRESET + ); +\txeq_control_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_control_reg1(1), + Q => txeq_control_reg2(1), + R => RST_CPLLRESET + ); +\txeq_deemph_reg1_reg[0]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_deemph_reg1(0), + S => RST_CPLLRESET + ); +\txeq_deemph_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_deemph_reg1(1), + R => RST_CPLLRESET + ); +\txeq_deemph_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_deemph_reg1(2), + R => RST_CPLLRESET + ); +\txeq_deemph_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_deemph_reg1(3), + R => RST_CPLLRESET + ); +\txeq_deemph_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_deemph_reg1(4), + R => RST_CPLLRESET + ); +\txeq_deemph_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_deemph_reg1(5), + R => RST_CPLLRESET + ); +\txeq_deemph_reg2_reg[0]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_deemph_reg1(0), + Q => txeq_deemph_reg2(0), + S => RST_CPLLRESET + ); +\txeq_deemph_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_deemph_reg1(1), + Q => txeq_deemph_reg2(1), + R => RST_CPLLRESET + ); +\txeq_deemph_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_deemph_reg1(2), + Q => txeq_deemph_reg2(2), + R => RST_CPLLRESET + ); +\txeq_deemph_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_deemph_reg1(3), + Q => txeq_deemph_reg2(3), + R => RST_CPLLRESET + ); +\txeq_deemph_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_deemph_reg1(4), + Q => txeq_deemph_reg2(4), + R => RST_CPLLRESET + ); +\txeq_deemph_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_deemph_reg1(5), + Q => txeq_deemph_reg2(5), + R => RST_CPLLRESET + ); +\txeq_preset[0]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00001000" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(2), + I2 => txeq_preset_reg2(0), + I3 => txeq_preset_reg2(3), + I4 => txeq_preset_reg2(1), + O => p_0_out(0) + ); +\txeq_preset[10]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"ABEAABAF" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(2), + I2 => txeq_preset_reg2(0), + I3 => txeq_preset_reg2(3), + I4 => txeq_preset_reg2(1), + O => p_0_out(10) + ); +\txeq_preset[11]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFF200D" + ) + port map ( + I0 => txeq_preset_reg2(1), + I1 => txeq_preset_reg2(3), + I2 => txeq_preset_reg2(2), + I3 => txeq_preset_reg2(0), + I4 => RST_CPLLRESET, + O => p_0_out(11) + ); +\txeq_preset[12]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"01151110" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(3), + I2 => txeq_preset_reg2(1), + I3 => txeq_preset_reg2(2), + I4 => txeq_preset_reg2(0), + O => p_0_out(12) + ); +\txeq_preset[13]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"01000010" + ) + port map ( + I0 => txeq_preset_reg2(2), + I1 => RST_CPLLRESET, + I2 => txeq_preset_reg2(0), + I3 => txeq_preset_reg2(3), + I4 => txeq_preset_reg2(1), + O => p_0_out(13) + ); +\txeq_preset[14]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"01000010" + ) + port map ( + I0 => txeq_preset_reg2(2), + I1 => RST_CPLLRESET, + I2 => txeq_preset_reg2(3), + I3 => txeq_preset_reg2(1), + I4 => txeq_preset_reg2(0), + O => p_0_out(14) + ); +\txeq_preset[15]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"F0F1" + ) + port map ( + I0 => txeq_preset_reg2(2), + I1 => txeq_preset_reg2(1), + I2 => RST_CPLLRESET, + I3 => txeq_preset_reg2(3), + O => p_0_out(15) + ); +\txeq_preset[16]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0006" + ) + port map ( + I0 => txeq_preset_reg2(3), + I1 => txeq_preset_reg2(0), + I2 => txeq_preset_reg2(2), + I3 => RST_CPLLRESET, + O => p_0_out(16) + ); +\txeq_preset[17]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AABA" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => fsm_tx(0), + I2 => fsm_tx(1), + I3 => fsm_tx(2), + O => \txeq_preset[17]_i_1_n_0\ + ); +\txeq_preset[17]_i_2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFF400D" + ) + port map ( + I0 => txeq_preset_reg2(3), + I1 => txeq_preset_reg2(1), + I2 => txeq_preset_reg2(2), + I3 => txeq_preset_reg2(0), + I4 => RST_CPLLRESET, + O => p_0_out(17) + ); +\txeq_preset[1]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00001004" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(3), + I2 => txeq_preset_reg2(1), + I3 => txeq_preset_reg2(2), + I4 => txeq_preset_reg2(0), + O => p_0_out(1) + ); +\txeq_preset[2]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0E00" + ) + port map ( + I0 => txeq_preset_reg2(2), + I1 => txeq_preset_reg2(0), + I2 => RST_CPLLRESET, + I3 => txeq_preset_reg2(3), + O => p_0_out(2) + ); +\txeq_preset[3]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"01440140" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(2), + I2 => txeq_preset_reg2(1), + I3 => txeq_preset_reg2(3), + I4 => txeq_preset_reg2(0), + O => \txeq_preset[3]_i_1_n_0\ + ); +\txeq_preset[7]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00001400" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(0), + I2 => txeq_preset_reg2(2), + I3 => txeq_preset_reg2(1), + I4 => txeq_preset_reg2(3), + O => \txeq_preset[7]_i_1_n_0\ + ); +\txeq_preset[8]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"AAAFBEAF" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(0), + I2 => txeq_preset_reg2(2), + I3 => txeq_preset_reg2(1), + I4 => txeq_preset_reg2(3), + O => p_0_out(8) + ); +\txeq_preset[9]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"CCFCCFCD" + ) + port map ( + I0 => txeq_preset_reg2(1), + I1 => RST_CPLLRESET, + I2 => txeq_preset_reg2(2), + I3 => txeq_preset_reg2(3), + I4 => txeq_preset_reg2(0), + O => p_0_out(9) + ); +txeq_preset_done_i_1: unisim.vcomponents.LUT3 + generic map( + INIT => X"04" + ) + port map ( + I0 => fsm_tx(2), + I1 => fsm_tx(1), + I2 => fsm_tx(0), + O => txeq_preset_done_i_1_n_0 + ); +txeq_preset_done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_preset_done_i_1_n_0, + Q => txeq_preset_done, + R => RST_CPLLRESET + ); +\txeq_preset_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_preset_reg1(0), + R => RST_CPLLRESET + ); +\txeq_preset_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_preset_reg1(1), + R => RST_CPLLRESET + ); +\txeq_preset_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_preset_reg1(2), + R => RST_CPLLRESET + ); +\txeq_preset_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_preset_reg1(3), + R => RST_CPLLRESET + ); +\txeq_preset_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_preset_reg1(0), + Q => txeq_preset_reg2(0), + R => RST_CPLLRESET + ); +\txeq_preset_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_preset_reg1(1), + Q => txeq_preset_reg2(1), + R => RST_CPLLRESET + ); +\txeq_preset_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_preset_reg1(2), + Q => txeq_preset_reg2(2), + R => RST_CPLLRESET + ); +\txeq_preset_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_preset_reg1(3), + Q => txeq_preset_reg2(3), + R => RST_CPLLRESET + ); +\txeq_preset_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1_n_0\, + D => p_0_out(0), + Q => \txeq_preset_reg_n_0_[0]\, + R => '0' + ); +\txeq_preset_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1_n_0\, + D => p_0_out(10), + Q => \txeq_preset_reg_n_0_[10]\, + R => '0' + ); +\txeq_preset_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1_n_0\, + D => p_0_out(11), + Q => \txeq_preset_reg_n_0_[11]\, + R => '0' + ); +\txeq_preset_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1_n_0\, + D => p_0_out(12), + Q => \txeq_preset_reg_n_0_[12]\, + R => '0' + ); +\txeq_preset_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1_n_0\, + D => p_0_out(13), + Q => \txeq_preset_reg_n_0_[13]\, + R => '0' + ); +\txeq_preset_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1_n_0\, + D => p_0_out(14), + Q => \txeq_preset_reg_n_0_[14]\, + R => '0' + ); +\txeq_preset_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1_n_0\, + D => p_0_out(15), + Q => \txeq_preset_reg_n_0_[15]\, + R => '0' + ); +\txeq_preset_reg[16]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1_n_0\, + D => p_0_out(16), + Q => \txeq_preset_reg_n_0_[16]\, + R => '0' + ); +\txeq_preset_reg[17]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1_n_0\, + D => p_0_out(17), + Q => \txeq_preset_reg_n_0_[17]\, + R => '0' + ); +\txeq_preset_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1_n_0\, + D => p_0_out(1), + Q => \txeq_preset_reg_n_0_[1]\, + R => '0' + ); +\txeq_preset_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1_n_0\, + D => p_0_out(2), + Q => \txeq_preset_reg_n_0_[2]\, + R => '0' + ); +\txeq_preset_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1_n_0\, + D => \txeq_preset[3]_i_1_n_0\, + Q => \txeq_preset_reg_n_0_[3]\, + R => '0' + ); +\txeq_preset_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1_n_0\, + D => \txeq_preset[7]_i_1_n_0\, + Q => \txeq_preset_reg_n_0_[7]\, + R => '0' + ); +\txeq_preset_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1_n_0\, + D => p_0_out(8), + Q => \txeq_preset_reg_n_0_[8]\, + R => '0' + ); +\txeq_preset_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1_n_0\, + D => p_0_out(9), + Q => \txeq_preset_reg_n_0_[9]\, + R => '0' + ); +\txeq_txcoeff[0]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"45404040" + ) + port map ( + I0 => fsm_tx(2), + I1 => \txeq_txcoeff[0]_i_2_n_0\, + I2 => fsm_tx(1), + I3 => fsm_tx(0), + I4 => \txeq_txcoeff_reg_n_0_[6]\, + O => \txeq_txcoeff[0]_i_1_n_0\ + ); +\txeq_txcoeff[0]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[6]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[7]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[0]\, + O => \txeq_txcoeff[0]_i_2_n_0\ + ); +\txeq_txcoeff[10]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[9]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[10]_i_2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[16]\, + O => \txeq_txcoeff[10]_i_1_n_0\ + ); +\txeq_txcoeff[10]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[16]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[17]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[10]\, + O => \txeq_txcoeff[10]_i_2_n_0\ + ); +\txeq_txcoeff[11]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[10]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[11]_i_2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[17]\, + O => \txeq_txcoeff[11]_i_1_n_0\ + ); +\txeq_txcoeff[11]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[17]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[18]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[11]\, + O => \txeq_txcoeff[11]_i_2_n_0\ + ); +\txeq_txcoeff[12]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[11]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[12]_i_2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[18]\, + O => \txeq_txcoeff[12]_i_1_n_0\ + ); +\txeq_txcoeff[12]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[18]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => txeq_deemph_reg2(0), + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[12]\, + O => \txeq_txcoeff[12]_i_2_n_0\ + ); +\txeq_txcoeff[13]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[12]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[13]_i_2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => txeq_deemph_reg2(0), + O => \txeq_txcoeff[13]_i_1_n_0\ + ); +\txeq_txcoeff[13]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => txeq_deemph_reg2(0), + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => txeq_deemph_reg2(1), + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[13]\, + O => \txeq_txcoeff[13]_i_2_n_0\ + ); +\txeq_txcoeff[14]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[13]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[14]_i_2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => txeq_deemph_reg2(1), + O => \txeq_txcoeff[14]_i_1_n_0\ + ); +\txeq_txcoeff[14]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => txeq_deemph_reg2(1), + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => txeq_deemph_reg2(2), + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[14]\, + O => \txeq_txcoeff[14]_i_2_n_0\ + ); +\txeq_txcoeff[15]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[14]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[15]_i_2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => txeq_deemph_reg2(2), + O => \txeq_txcoeff[15]_i_1_n_0\ + ); +\txeq_txcoeff[15]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => txeq_deemph_reg2(2), + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => txeq_deemph_reg2(3), + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[15]\, + O => \txeq_txcoeff[15]_i_2_n_0\ + ); +\txeq_txcoeff[16]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[15]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[16]_i_2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => txeq_deemph_reg2(3), + O => \txeq_txcoeff[16]_i_1_n_0\ + ); +\txeq_txcoeff[16]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => txeq_deemph_reg2(3), + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => txeq_deemph_reg2(4), + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[16]\, + O => \txeq_txcoeff[16]_i_2_n_0\ + ); +\txeq_txcoeff[17]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[16]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[17]_i_2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => txeq_deemph_reg2(4), + O => \txeq_txcoeff[17]_i_1_n_0\ + ); +\txeq_txcoeff[17]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => txeq_deemph_reg2(4), + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => txeq_deemph_reg2(5), + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[17]\, + O => \txeq_txcoeff[17]_i_2_n_0\ + ); +\txeq_txcoeff[18]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FF040FFF" + ) + port map ( + I0 => txeq_control_reg2(0), + I1 => txeq_control_reg2(1), + I2 => fsm_tx(2), + I3 => fsm_tx(1), + I4 => fsm_tx(0), + O => txeq_txcoeff + ); +\txeq_txcoeff[18]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"22F3220022002200" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[17]\, + I1 => fsm_tx(1), + I2 => \txeq_txcoeff[18]_i_3_n_0\, + I3 => fsm_tx(2), + I4 => txeq_deemph_reg2(5), + I5 => fsm_tx(0), + O => \txeq_txcoeff[18]_i_2_n_0\ + ); +\txeq_txcoeff[18]_i_3\: unisim.vcomponents.LUT2 + generic map( + INIT => X"B" + ) + port map ( + I0 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + O => \txeq_txcoeff[18]_i_3_n_0\ + ); +\txeq_txcoeff[1]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[0]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[1]_i_2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[7]\, + O => \txeq_txcoeff[1]_i_1_n_0\ + ); +\txeq_txcoeff[1]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[7]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[8]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[1]\, + O => \txeq_txcoeff[1]_i_2_n_0\ + ); +\txeq_txcoeff[2]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[1]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[2]_i_2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[8]\, + O => \txeq_txcoeff[2]_i_1_n_0\ + ); +\txeq_txcoeff[2]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[8]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[9]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[2]\, + O => \txeq_txcoeff[2]_i_2_n_0\ + ); +\txeq_txcoeff[3]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[2]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[3]_i_2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[9]\, + O => \txeq_txcoeff[3]_i_1_n_0\ + ); +\txeq_txcoeff[3]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[9]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[10]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[3]\, + O => \txeq_txcoeff[3]_i_2_n_0\ + ); +\txeq_txcoeff[4]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"2F20" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[3]\, + I1 => fsm_tx(1), + I2 => fsm_tx(2), + I3 => \txeq_txcoeff[4]_i_2_n_0\, + O => \txeq_txcoeff[4]_i_1_n_0\ + ); +\txeq_txcoeff[4]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"CACCCCCC00000000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[11]\, + I1 => \txeq_txcoeff_reg_n_0_[10]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I3 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I4 => fsm_tx(1), + I5 => fsm_tx(0), + O => \txeq_txcoeff[4]_i_2_n_0\ + ); +\txeq_txcoeff[5]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"2F20" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[4]\, + I1 => fsm_tx(1), + I2 => fsm_tx(2), + I3 => \txeq_txcoeff[5]_i_2_n_0\, + O => \txeq_txcoeff[5]_i_1_n_0\ + ); +\txeq_txcoeff[5]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"CACCCCCC00000000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[12]\, + I1 => \txeq_txcoeff_reg_n_0_[11]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I3 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I4 => fsm_tx(1), + I5 => fsm_tx(0), + O => \txeq_txcoeff[5]_i_2_n_0\ + ); +\txeq_txcoeff[6]_i_1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"2F20" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[5]\, + I1 => fsm_tx(1), + I2 => fsm_tx(2), + I3 => \txeq_txcoeff[6]_i_2_n_0\, + O => \txeq_txcoeff[6]_i_1_n_0\ + ); +\txeq_txcoeff[6]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"CACCCCCC00000000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[13]\, + I1 => \txeq_txcoeff_reg_n_0_[12]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I3 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I4 => fsm_tx(1), + I5 => fsm_tx(0), + O => \txeq_txcoeff[6]_i_2_n_0\ + ); +\txeq_txcoeff[7]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[6]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[7]_i_2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[13]\, + O => \txeq_txcoeff[7]_i_1_n_0\ + ); +\txeq_txcoeff[7]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[13]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[14]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[7]\, + O => \txeq_txcoeff[7]_i_2_n_0\ + ); +\txeq_txcoeff[8]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[7]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[8]_i_2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[14]\, + O => \txeq_txcoeff[8]_i_1_n_0\ + ); +\txeq_txcoeff[8]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[14]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[15]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[8]\, + O => \txeq_txcoeff[8]_i_2_n_0\ + ); +\txeq_txcoeff[9]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[8]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[9]_i_2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[15]\, + O => \txeq_txcoeff[9]_i_1_n_0\ + ); +\txeq_txcoeff[9]_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[15]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[16]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[9]\, + O => \txeq_txcoeff[9]_i_2_n_0\ + ); +\txeq_txcoeff_cnt[0]_i_1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"000004000F000400" + ) + port map ( + I0 => txeq_control_reg2(0), + I1 => txeq_control_reg2(1), + I2 => fsm_tx(2), + I3 => fsm_tx(0), + I4 => fsm_tx(1), + I5 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + O => txeq_txcoeff_cnt(0) + ); +\txeq_txcoeff_cnt[1]_i_1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00006000" + ) + port map ( + I0 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I2 => fsm_tx(0), + I3 => fsm_tx(1), + I4 => fsm_tx(2), + O => txeq_txcoeff_cnt(1) + ); +\txeq_txcoeff_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_txcoeff_cnt(0), + Q => \txeq_txcoeff_cnt_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_txcoeff_cnt(1), + Q => \txeq_txcoeff_cnt_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[0]_i_1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[10]_i_1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[10]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[11]_i_1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[11]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[12]_i_1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[12]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[13]_i_1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[13]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[14]_i_1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[14]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[15]_i_1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[15]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[16]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[16]_i_1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[16]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[17]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[17]_i_1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[17]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[18]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[18]_i_2_n_0\, + Q => \txeq_txcoeff_reg_n_0_[18]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[1]_i_1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[2]_i_1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[3]_i_1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[4]_i_1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[5]_i_1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[5]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[6]_i_1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[6]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[7]_i_1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[7]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[8]_i_1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[8]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[9]_i_1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[9]\, + R => RST_CPLLRESET + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pipe_eq_39 is + port ( + TXPRECURSOR : out STD_LOGIC_VECTOR ( 4 downto 0 ); + TXMAINCURSOR : out STD_LOGIC_VECTOR ( 6 downto 0 ); + TXPOSTCURSOR : out STD_LOGIC_VECTOR ( 4 downto 0 ); + USER_RXEQ_ADAPT_DONE : out STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + rate_gen3_1 : in STD_LOGIC + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pipe_eq_39 : entity is "pcie_7x_0_pipe_eq"; +end pcie_7x_0_pcie_7x_0_pipe_eq_39; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pipe_eq_39 is + signal \FSM_onehot_fsm_rx[1]_i_1__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx[1]_i_2__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx[3]_i_1__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx[4]_i_1__0_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx_reg_n_0_[1]\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx_reg_n_0_[2]\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx_reg_n_0_[3]\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx_reg_n_0_[4]\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx_reg_n_0_[5]\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx_reg_n_0_[6]\ : STD_LOGIC; + signal \FSM_sequential_fsm_tx[1]_i_2__0_n_0\ : STD_LOGIC; + signal \FSM_sequential_fsm_tx[2]_i_2__0_n_0\ : STD_LOGIC; + signal \^user_rxeq_adapt_done\ : STD_LOGIC; + signal fsm_tx : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal \fsm_tx__0\ : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal gen3_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of gen3_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of gen3_reg1 : signal is "true"; + signal gen3_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of gen3_reg2 : signal is "NO"; + attribute async_reg of gen3_reg2 : signal is "true"; + signal p_0_out : STD_LOGIC_VECTOR ( 17 downto 0 ); + signal \rxeq_adapt_done_i_2__0_n_0\ : STD_LOGIC; + signal \rxeq_adapt_done_reg_i_2__0_n_0\ : STD_LOGIC; + signal rxeq_adapt_done_reg_reg_n_0 : STD_LOGIC; + signal rxeq_cnt : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal \rxeq_cnt_reg_n_0_[0]\ : STD_LOGIC; + signal \rxeq_cnt_reg_n_0_[1]\ : STD_LOGIC; + signal \rxeq_cnt_reg_n_0_[2]\ : STD_LOGIC; + signal rxeq_control_reg1 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_control_reg1 : signal is "NO"; + attribute async_reg of rxeq_control_reg1 : signal is "true"; + signal rxeq_control_reg2 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_control_reg2 : signal is "NO"; + attribute async_reg of rxeq_control_reg2 : signal is "true"; + signal rxeq_fs : STD_LOGIC_VECTOR ( 5 downto 0 ); + signal \rxeq_fs[5]_i_1__0_n_0\ : STD_LOGIC; + signal \rxeq_fs_reg_n_0_[0]\ : STD_LOGIC; + signal \rxeq_fs_reg_n_0_[1]\ : STD_LOGIC; + signal \rxeq_fs_reg_n_0_[2]\ : STD_LOGIC; + signal \rxeq_fs_reg_n_0_[3]\ : STD_LOGIC; + signal \rxeq_fs_reg_n_0_[4]\ : STD_LOGIC; + signal \rxeq_fs_reg_n_0_[5]\ : STD_LOGIC; + signal rxeq_lf : STD_LOGIC_VECTOR ( 5 downto 0 ); + signal \rxeq_lf[5]_i_1__0_n_0\ : STD_LOGIC; + signal \rxeq_lf_reg_n_0_[0]\ : STD_LOGIC; + signal \rxeq_lf_reg_n_0_[1]\ : STD_LOGIC; + signal \rxeq_lf_reg_n_0_[2]\ : STD_LOGIC; + signal \rxeq_lf_reg_n_0_[3]\ : STD_LOGIC; + signal \rxeq_lf_reg_n_0_[4]\ : STD_LOGIC; + signal \rxeq_lf_reg_n_0_[5]\ : STD_LOGIC; + signal rxeq_lffs_reg1 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_lffs_reg1 : signal is "NO"; + attribute async_reg of rxeq_lffs_reg1 : signal is "true"; + signal rxeq_lffs_reg2 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_lffs_reg2 : signal is "NO"; + attribute async_reg of rxeq_lffs_reg2 : signal is "true"; + signal rxeq_new_txcoeff_req : STD_LOGIC; + signal rxeq_new_txcoeff_req_reg_n_0 : STD_LOGIC; + signal \rxeq_preset[0]_i_1__0_n_0\ : STD_LOGIC; + signal \rxeq_preset[1]_i_1__0_n_0\ : STD_LOGIC; + signal \rxeq_preset[2]_i_1__0_n_0\ : STD_LOGIC; + signal \rxeq_preset[2]_i_2__0_n_0\ : STD_LOGIC; + signal \rxeq_preset[2]_i_3__0_n_0\ : STD_LOGIC; + signal rxeq_preset_reg1 : STD_LOGIC_VECTOR ( 2 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_preset_reg1 : signal is "NO"; + attribute async_reg of rxeq_preset_reg1 : signal is "true"; + signal rxeq_preset_reg2 : STD_LOGIC_VECTOR ( 2 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_preset_reg2 : signal is "NO"; + attribute async_reg of rxeq_preset_reg2 : signal is "true"; + signal \rxeq_preset_reg_n_0_[0]\ : STD_LOGIC; + signal \rxeq_preset_reg_n_0_[1]\ : STD_LOGIC; + signal \rxeq_preset_reg_n_0_[2]\ : STD_LOGIC; + signal rxeq_preset_valid : STD_LOGIC; + signal rxeq_scan_i_n_0 : STD_LOGIC; + signal rxeq_scan_i_n_1 : STD_LOGIC; + signal rxeq_scan_i_n_2 : STD_LOGIC; + signal rxeq_scan_i_n_4 : STD_LOGIC; + signal rxeq_scan_i_n_5 : STD_LOGIC; + signal rxeq_txcoeff : STD_LOGIC_VECTOR ( 17 downto 0 ); + signal \rxeq_txcoeff_reg_n_0_[0]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[10]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[11]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[12]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[13]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[14]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[15]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[16]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[17]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[1]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[2]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[3]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[4]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[5]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[6]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[7]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[8]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[9]\ : STD_LOGIC; + signal rxeq_txpreset : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal \rxeq_txpreset[3]_i_1__0_n_0\ : STD_LOGIC; + signal \rxeq_txpreset[3]_i_3__0_n_0\ : STD_LOGIC; + signal rxeq_txpreset_reg1 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_txpreset_reg1 : signal is "NO"; + attribute async_reg of rxeq_txpreset_reg1 : signal is "true"; + signal rxeq_txpreset_reg2 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_txpreset_reg2 : signal is "NO"; + attribute async_reg of rxeq_txpreset_reg2 : signal is "true"; + signal \rxeq_txpreset_reg_n_0_[0]\ : STD_LOGIC; + signal \rxeq_txpreset_reg_n_0_[1]\ : STD_LOGIC; + signal \rxeq_txpreset_reg_n_0_[2]\ : STD_LOGIC; + signal \rxeq_txpreset_reg_n_0_[3]\ : STD_LOGIC; + signal rxeq_user_en_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxeq_user_en_reg1 : signal is "NO"; + attribute async_reg of rxeq_user_en_reg1 : signal is "true"; + signal rxeq_user_en_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxeq_user_en_reg2 : signal is "NO"; + attribute async_reg of rxeq_user_en_reg2 : signal is "true"; + signal rxeq_user_mode_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxeq_user_mode_reg1 : signal is "NO"; + attribute async_reg of rxeq_user_mode_reg1 : signal is "true"; + signal rxeq_user_mode_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxeq_user_mode_reg2 : signal is "NO"; + attribute async_reg of rxeq_user_mode_reg2 : signal is "true"; + signal rxeq_user_txcoeff_reg1 : STD_LOGIC_VECTOR ( 17 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_user_txcoeff_reg1 : signal is "NO"; + attribute async_reg of rxeq_user_txcoeff_reg1 : signal is "true"; + signal rxeq_user_txcoeff_reg2 : STD_LOGIC_VECTOR ( 17 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_user_txcoeff_reg2 : signal is "NO"; + attribute async_reg of rxeq_user_txcoeff_reg2 : signal is "true"; + signal txeq_control_reg1 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of txeq_control_reg1 : signal is "NO"; + attribute async_reg of txeq_control_reg1 : signal is "true"; + signal txeq_control_reg2 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of txeq_control_reg2 : signal is "NO"; + attribute async_reg of txeq_control_reg2 : signal is "true"; + signal txeq_deemph_reg1 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of txeq_deemph_reg1 : signal is "NO"; + attribute async_reg of txeq_deemph_reg1 : signal is "true"; + signal txeq_deemph_reg2 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of txeq_deemph_reg2 : signal is "NO"; + attribute async_reg of txeq_deemph_reg2 : signal is "true"; + signal \txeq_preset[17]_i_1__0_n_0\ : STD_LOGIC; + signal \txeq_preset[3]_i_1__0_n_0\ : STD_LOGIC; + signal \txeq_preset[7]_i_1__0_n_0\ : STD_LOGIC; + signal txeq_preset_done : STD_LOGIC; + signal \txeq_preset_done_i_1__0_n_0\ : STD_LOGIC; + signal txeq_preset_reg1 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of txeq_preset_reg1 : signal is "NO"; + attribute async_reg of txeq_preset_reg1 : signal is "true"; + signal txeq_preset_reg2 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of txeq_preset_reg2 : signal is "NO"; + attribute async_reg of txeq_preset_reg2 : signal is "true"; + signal \txeq_preset_reg_n_0_[0]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[10]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[11]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[12]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[13]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[14]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[15]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[16]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[17]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[1]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[2]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[3]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[7]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[8]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[9]\ : STD_LOGIC; + signal txeq_txcoeff : STD_LOGIC; + signal \txeq_txcoeff[0]_i_1__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[0]_i_2__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[10]_i_1__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[10]_i_2__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[11]_i_1__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[11]_i_2__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[12]_i_1__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[12]_i_2__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[13]_i_1__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[13]_i_2__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[14]_i_1__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[14]_i_2__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[15]_i_1__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[15]_i_2__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[16]_i_1__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[16]_i_2__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[17]_i_1__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[17]_i_2__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[18]_i_2__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[18]_i_3__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[1]_i_1__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[1]_i_2__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[2]_i_1__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[2]_i_2__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[3]_i_1__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[3]_i_2__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[4]_i_1__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[4]_i_2__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[5]_i_1__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[5]_i_2__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[6]_i_1__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[6]_i_2__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[7]_i_1__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[7]_i_2__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[8]_i_1__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[8]_i_2__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[9]_i_1__0_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[9]_i_2__0_n_0\ : STD_LOGIC; + signal txeq_txcoeff_cnt : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal \txeq_txcoeff_cnt_reg_n_0_[0]\ : STD_LOGIC; + signal \txeq_txcoeff_cnt_reg_n_0_[1]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[0]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[10]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[11]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[12]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[13]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[14]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[15]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[16]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[17]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[18]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[1]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[2]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[3]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[4]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[5]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[6]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[7]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[8]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[9]\ : STD_LOGIC; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \FSM_onehot_fsm_rx[4]_i_1__0\ : label is "soft_lutpair102"; + attribute FSM_ENCODED_STATES : string; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_rx_reg[1]\ : label is "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_rx_reg[2]\ : label is "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_rx_reg[3]\ : label is "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_rx_reg[4]\ : label is "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_rx_reg[5]\ : label is "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_rx_reg[6]\ : label is "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001"; + attribute SOFT_HLUTNM of \FSM_sequential_fsm_tx[1]_i_2__0\ : label is "soft_lutpair100"; + attribute SOFT_HLUTNM of \FSM_sequential_fsm_tx[2]_i_2__0\ : label is "soft_lutpair100"; + attribute FSM_ENCODED_STATES of \FSM_sequential_fsm_tx_reg[0]\ : label is "FSM_TXEQ_QUERY:101,FSM_TXEQ_PRESET:010,FSM_TXEQ_TXCOEFF:011,FSM_TXEQ_REMAP:100,FSM_TXEQ_DONE:110,FSM_TXEQ_IDLE:001,iSTATE:000"; + attribute FSM_ENCODED_STATES of \FSM_sequential_fsm_tx_reg[1]\ : label is "FSM_TXEQ_QUERY:101,FSM_TXEQ_PRESET:010,FSM_TXEQ_TXCOEFF:011,FSM_TXEQ_REMAP:100,FSM_TXEQ_DONE:110,FSM_TXEQ_IDLE:001,iSTATE:000"; + attribute FSM_ENCODED_STATES of \FSM_sequential_fsm_tx_reg[2]\ : label is "FSM_TXEQ_QUERY:101,FSM_TXEQ_PRESET:010,FSM_TXEQ_TXCOEFF:011,FSM_TXEQ_REMAP:100,FSM_TXEQ_DONE:110,FSM_TXEQ_IDLE:001,iSTATE:000"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of gen3_reg1_reg : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of gen3_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of gen3_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of gen3_reg2_reg : label is std.standard.true; + attribute KEEP of gen3_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of gen3_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \rxeq_cnt[1]_i_1__0\ : label is "soft_lutpair103"; + attribute SOFT_HLUTNM of \rxeq_cnt[2]_i_1__0\ : label is "soft_lutpair102"; + attribute ASYNC_REG_boolean of \rxeq_control_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_control_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_control_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_control_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_control_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_control_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_control_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_control_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_control_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_control_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_control_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_control_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg2_reg[5]\ : label is "NO"; + attribute SOFT_HLUTNM of \rxeq_preset[2]_i_3__0\ : label is "soft_lutpair103"; + attribute ASYNC_REG_boolean of \rxeq_preset_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_preset_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_preset_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_preset_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_preset_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_preset_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_preset_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_preset_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_preset_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_preset_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_preset_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_preset_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_preset_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_preset_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_preset_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_preset_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_preset_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_preset_reg2_reg[2]\ : label is "NO"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[0]_i_1__0\ : label is "soft_lutpair104"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[10]_i_1__0\ : label is "soft_lutpair109"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[11]_i_1__0\ : label is "soft_lutpair109"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[1]_i_1__0\ : label is "soft_lutpair104"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[2]_i_1__0\ : label is "soft_lutpair105"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[3]_i_1__0\ : label is "soft_lutpair105"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[4]_i_1__0\ : label is "soft_lutpair106"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[5]_i_1__0\ : label is "soft_lutpair106"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[6]_i_1__0\ : label is "soft_lutpair107"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[7]_i_1__0\ : label is "soft_lutpair107"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[8]_i_1__0\ : label is "soft_lutpair108"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[9]_i_1__0\ : label is "soft_lutpair108"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of rxeq_user_en_reg1_reg : label is std.standard.true; + attribute KEEP of rxeq_user_en_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxeq_user_en_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxeq_user_en_reg2_reg : label is std.standard.true; + attribute KEEP of rxeq_user_en_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxeq_user_en_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxeq_user_mode_reg1_reg : label is std.standard.true; + attribute KEEP of rxeq_user_mode_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxeq_user_mode_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxeq_user_mode_reg2_reg : label is std.standard.true; + attribute KEEP of rxeq_user_mode_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxeq_user_mode_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[10]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[11]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[12]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[13]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[14]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[15]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[16]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[16]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[16]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[17]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[17]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[17]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[6]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[7]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[8]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[9]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[9]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[10]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[11]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[12]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[13]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[14]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[15]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[16]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[16]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[16]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[17]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[17]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[17]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[6]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[7]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[8]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[9]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[9]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_control_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \txeq_control_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_control_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_control_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \txeq_control_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_control_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_control_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \txeq_control_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_control_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_control_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \txeq_control_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_control_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg2_reg[5]\ : label is "NO"; + attribute SOFT_HLUTNM of \txeq_preset_done_i_1__0\ : label is "soft_lutpair101"; + attribute ASYNC_REG_boolean of \txeq_preset_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg2_reg[3]\ : label is "NO"; + attribute SOFT_HLUTNM of \txeq_txcoeff_cnt[1]_i_1__0\ : label is "soft_lutpair101"; +begin + USER_RXEQ_ADAPT_DONE <= \^user_rxeq_adapt_done\; +\FSM_onehot_fsm_rx[1]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"ABABABAA" + ) + port map ( + I0 => \FSM_onehot_fsm_rx[1]_i_2__0_n_0\, + I1 => rxeq_control_reg2(1), + I2 => rxeq_control_reg2(0), + I3 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I4 => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + O => \FSM_onehot_fsm_rx[1]_i_1__0_n_0\ + ); +\FSM_onehot_fsm_rx[1]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000000000001" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I3 => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + I4 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I5 => \FSM_onehot_fsm_rx_reg_n_0_[5]\, + O => \FSM_onehot_fsm_rx[1]_i_2__0_n_0\ + ); +\FSM_onehot_fsm_rx[3]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFF8FF88888888" + ) + port map ( + I0 => rxeq_control_reg2(1), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I2 => \rxeq_cnt_reg_n_0_[2]\, + I3 => \rxeq_cnt_reg_n_0_[1]\, + I4 => \rxeq_cnt_reg_n_0_[0]\, + I5 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + O => \FSM_onehot_fsm_rx[3]_i_1__0_n_0\ + ); +\FSM_onehot_fsm_rx[4]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"2ABA2AAA" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => \rxeq_cnt_reg_n_0_[2]\, + I2 => \rxeq_cnt_reg_n_0_[1]\, + I3 => \rxeq_cnt_reg_n_0_[0]\, + I4 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + O => \FSM_onehot_fsm_rx[4]_i_1__0_n_0\ + ); +\FSM_onehot_fsm_rx_reg[1]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm_rx[1]_i_1__0_n_0\, + Q => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + S => RST_CPLLRESET + ); +\FSM_onehot_fsm_rx_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_scan_i_n_2, + Q => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_rx_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm_rx[3]_i_1__0_n_0\, + Q => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_rx_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm_rx[4]_i_1__0_n_0\, + Q => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_rx_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_scan_i_n_1, + Q => \FSM_onehot_fsm_rx_reg_n_0_[5]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_rx_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_scan_i_n_0, + Q => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + R => RST_CPLLRESET + ); +\FSM_sequential_fsm_tx[0]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"C04FC043C04FF04F" + ) + port map ( + I0 => \FSM_sequential_fsm_tx[1]_i_2__0_n_0\, + I1 => fsm_tx(0), + I2 => fsm_tx(1), + I3 => fsm_tx(2), + I4 => txeq_control_reg2(1), + I5 => txeq_control_reg2(0), + O => \fsm_tx__0\(0) + ); +\FSM_sequential_fsm_tx[1]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"3F703F7C3F7C0F70" + ) + port map ( + I0 => \FSM_sequential_fsm_tx[1]_i_2__0_n_0\, + I1 => fsm_tx(0), + I2 => fsm_tx(1), + I3 => fsm_tx(2), + I4 => txeq_control_reg2(1), + I5 => txeq_control_reg2(0), + O => \fsm_tx__0\(1) + ); +\FSM_sequential_fsm_tx[1]_i_2__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + O => \FSM_sequential_fsm_tx[1]_i_2__0_n_0\ + ); +\FSM_sequential_fsm_tx[2]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"3A2A2A227F7F7F77" + ) + port map ( + I0 => fsm_tx(2), + I1 => fsm_tx(1), + I2 => fsm_tx(0), + I3 => txeq_control_reg2(1), + I4 => txeq_control_reg2(0), + I5 => \FSM_sequential_fsm_tx[2]_i_2__0_n_0\, + O => \fsm_tx__0\(2) + ); +\FSM_sequential_fsm_tx[2]_i_2__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"D0FFDFFF" + ) + port map ( + I0 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I2 => fsm_tx(0), + I3 => fsm_tx(1), + I4 => txeq_preset_done, + O => \FSM_sequential_fsm_tx[2]_i_2__0_n_0\ + ); +\FSM_sequential_fsm_tx_reg[0]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fsm_tx__0\(0), + Q => fsm_tx(0), + S => RST_CPLLRESET + ); +\FSM_sequential_fsm_tx_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fsm_tx__0\(1), + Q => fsm_tx(1), + R => RST_CPLLRESET + ); +\FSM_sequential_fsm_tx_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fsm_tx__0\(2), + Q => fsm_tx(2), + R => RST_CPLLRESET + ); +gen3_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rate_gen3_1, + Q => gen3_reg1, + R => RST_CPLLRESET + ); +gen3_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => gen3_reg1, + Q => gen3_reg2, + R => RST_CPLLRESET + ); +\gtx_channel.gtxe2_channel_i_i_22__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[17]\, + O => TXPOSTCURSOR(4) + ); +\gtx_channel.gtxe2_channel_i_i_23__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[16]\, + O => TXPOSTCURSOR(3) + ); +\gtx_channel.gtxe2_channel_i_i_24__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[15]\, + O => TXPOSTCURSOR(2) + ); +\gtx_channel.gtxe2_channel_i_i_25__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[14]\, + O => TXPOSTCURSOR(1) + ); +\gtx_channel.gtxe2_channel_i_i_26__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[13]\, + O => TXPOSTCURSOR(0) + ); +\gtx_channel.gtxe2_channel_i_i_27__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[4]\, + O => TXPRECURSOR(4) + ); +\gtx_channel.gtxe2_channel_i_i_28__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[3]\, + O => TXPRECURSOR(3) + ); +\gtx_channel.gtxe2_channel_i_i_29__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[2]\, + O => TXPRECURSOR(2) + ); +\gtx_channel.gtxe2_channel_i_i_30__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[1]\, + O => TXPRECURSOR(1) + ); +\gtx_channel.gtxe2_channel_i_i_31__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[0]\, + I1 => gen3_reg2, + O => TXPRECURSOR(0) + ); +\gtx_channel.gtxe2_channel_i_i_32__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[12]\, + O => TXMAINCURSOR(6) + ); +\gtx_channel.gtxe2_channel_i_i_33__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[11]\, + O => TXMAINCURSOR(5) + ); +\gtx_channel.gtxe2_channel_i_i_34__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[10]\, + O => TXMAINCURSOR(4) + ); +\gtx_channel.gtxe2_channel_i_i_35__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[9]\, + O => TXMAINCURSOR(3) + ); +\gtx_channel.gtxe2_channel_i_i_36__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[8]\, + O => TXMAINCURSOR(2) + ); +\gtx_channel.gtxe2_channel_i_i_37__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[7]\, + O => TXMAINCURSOR(1) + ); +\gtx_channel.gtxe2_channel_i_i_38__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[6]\, + O => TXMAINCURSOR(0) + ); +\rxeq_adapt_done_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFEFFFFFFFF" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[5]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + I3 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I4 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I5 => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + O => \rxeq_adapt_done_i_2__0_n_0\ + ); +rxeq_adapt_done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_scan_i_n_5, + Q => \^user_rxeq_adapt_done\, + R => RST_CPLLRESET + ); +\rxeq_adapt_done_reg_i_2__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"08" + ) + port map ( + I0 => rxeq_control_reg2(0), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I2 => rxeq_control_reg2(1), + O => \rxeq_adapt_done_reg_i_2__0_n_0\ + ); +rxeq_adapt_done_reg_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_scan_i_n_4, + Q => rxeq_adapt_done_reg_reg_n_0, + R => RST_CPLLRESET + ); +\rxeq_cnt[0]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"8888FFF8" + ) + port map ( + I0 => rxeq_control_reg2(1), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I3 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I4 => \rxeq_cnt_reg_n_0_[0]\, + O => rxeq_cnt(0) + ); +\rxeq_cnt[1]_i_1__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"6660" + ) + port map ( + I0 => \rxeq_cnt_reg_n_0_[0]\, + I1 => \rxeq_cnt_reg_n_0_[1]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I3 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + O => rxeq_cnt(1) + ); +\rxeq_cnt[2]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"78787800" + ) + port map ( + I0 => \rxeq_cnt_reg_n_0_[1]\, + I1 => \rxeq_cnt_reg_n_0_[0]\, + I2 => \rxeq_cnt_reg_n_0_[2]\, + I3 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I4 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + O => rxeq_cnt(2) + ); +\rxeq_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_cnt(0), + Q => \rxeq_cnt_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\rxeq_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_cnt(1), + Q => \rxeq_cnt_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\rxeq_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_cnt(2), + Q => \rxeq_cnt_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\rxeq_control_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_control_reg1(0), + R => RST_CPLLRESET + ); +\rxeq_control_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_control_reg1(1), + R => RST_CPLLRESET + ); +\rxeq_control_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_control_reg1(0), + Q => rxeq_control_reg2(0), + R => RST_CPLLRESET + ); +\rxeq_control_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_control_reg1(1), + Q => rxeq_control_reg2(1), + R => RST_CPLLRESET + ); +\rxeq_fs[0]_i_1__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => rxeq_lffs_reg2(0), + O => rxeq_fs(0) + ); +\rxeq_fs[1]_i_1__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => rxeq_lffs_reg2(1), + O => rxeq_fs(1) + ); +\rxeq_fs[2]_i_1__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => rxeq_lffs_reg2(2), + O => rxeq_fs(2) + ); +\rxeq_fs[3]_i_1__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => rxeq_lffs_reg2(3), + O => rxeq_fs(3) + ); +\rxeq_fs[4]_i_1__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => rxeq_lffs_reg2(4), + O => rxeq_fs(4) + ); +\rxeq_fs[5]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"F8" + ) + port map ( + I0 => rxeq_control_reg2(1), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I2 => \FSM_onehot_fsm_rx[1]_i_2__0_n_0\, + O => \rxeq_fs[5]_i_1__0_n_0\ + ); +\rxeq_fs[5]_i_2__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => rxeq_lffs_reg2(5), + O => rxeq_fs(5) + ); +\rxeq_fs_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_fs[5]_i_1__0_n_0\, + D => rxeq_fs(0), + Q => \rxeq_fs_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\rxeq_fs_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_fs[5]_i_1__0_n_0\, + D => rxeq_fs(1), + Q => \rxeq_fs_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\rxeq_fs_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_fs[5]_i_1__0_n_0\, + D => rxeq_fs(2), + Q => \rxeq_fs_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\rxeq_fs_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_fs[5]_i_1__0_n_0\, + D => rxeq_fs(3), + Q => \rxeq_fs_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\rxeq_fs_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_fs[5]_i_1__0_n_0\, + D => rxeq_fs(4), + Q => \rxeq_fs_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\rxeq_fs_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_fs[5]_i_1__0_n_0\, + D => rxeq_fs(5), + Q => \rxeq_fs_reg_n_0_[5]\, + R => RST_CPLLRESET + ); +\rxeq_lf[0]_i_1__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => rxeq_lffs_reg2(0), + O => rxeq_lf(0) + ); +\rxeq_lf[1]_i_1__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => rxeq_lffs_reg2(1), + O => rxeq_lf(1) + ); +\rxeq_lf[2]_i_1__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => rxeq_lffs_reg2(2), + O => rxeq_lf(2) + ); +\rxeq_lf[3]_i_1__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => rxeq_lffs_reg2(3), + O => rxeq_lf(3) + ); +\rxeq_lf[4]_i_1__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => rxeq_lffs_reg2(4), + O => rxeq_lf(4) + ); +\rxeq_lf[5]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"EAAAAAAA" + ) + port map ( + I0 => \FSM_onehot_fsm_rx[1]_i_2__0_n_0\, + I1 => \rxeq_cnt_reg_n_0_[2]\, + I2 => \rxeq_cnt_reg_n_0_[0]\, + I3 => \rxeq_cnt_reg_n_0_[1]\, + I4 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + O => \rxeq_lf[5]_i_1__0_n_0\ + ); +\rxeq_lf[5]_i_2__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => rxeq_lffs_reg2(5), + O => rxeq_lf(5) + ); +\rxeq_lf_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_lf[5]_i_1__0_n_0\, + D => rxeq_lf(0), + Q => \rxeq_lf_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\rxeq_lf_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_lf[5]_i_1__0_n_0\, + D => rxeq_lf(1), + Q => \rxeq_lf_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\rxeq_lf_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_lf[5]_i_1__0_n_0\, + D => rxeq_lf(2), + Q => \rxeq_lf_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\rxeq_lf_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_lf[5]_i_1__0_n_0\, + D => rxeq_lf(3), + Q => \rxeq_lf_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\rxeq_lf_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_lf[5]_i_1__0_n_0\, + D => rxeq_lf(4), + Q => \rxeq_lf_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\rxeq_lf_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_lf[5]_i_1__0_n_0\, + D => rxeq_lf(5), + Q => \rxeq_lf_reg_n_0_[5]\, + R => RST_CPLLRESET + ); +\rxeq_lffs_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_lffs_reg1(0), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_lffs_reg1(1), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_lffs_reg1(2), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_lffs_reg1(3), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_lffs_reg1(4), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_lffs_reg1(5), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_lffs_reg1(0), + Q => rxeq_lffs_reg2(0), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_lffs_reg1(1), + Q => rxeq_lffs_reg2(1), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_lffs_reg1(2), + Q => rxeq_lffs_reg2(2), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_lffs_reg1(3), + Q => rxeq_lffs_reg2(3), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_lffs_reg1(4), + Q => rxeq_lffs_reg2(4), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_lffs_reg1(5), + Q => rxeq_lffs_reg2(5), + R => RST_CPLLRESET + ); +rxeq_new_txcoeff_req_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_new_txcoeff_req, + Q => rxeq_new_txcoeff_req_reg_n_0, + R => RST_CPLLRESET + ); +\rxeq_preset[0]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"A8FFA800" + ) + port map ( + I0 => rxeq_preset_reg2(0), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I3 => \rxeq_preset[2]_i_2__0_n_0\, + I4 => \rxeq_preset_reg_n_0_[0]\, + O => \rxeq_preset[0]_i_1__0_n_0\ + ); +\rxeq_preset[1]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"A8FFA800" + ) + port map ( + I0 => rxeq_preset_reg2(1), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I3 => \rxeq_preset[2]_i_2__0_n_0\, + I4 => \rxeq_preset_reg_n_0_[1]\, + O => \rxeq_preset[1]_i_1__0_n_0\ + ); +\rxeq_preset[2]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"A8FFA800" + ) + port map ( + I0 => rxeq_preset_reg2(2), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I3 => \rxeq_preset[2]_i_2__0_n_0\, + I4 => \rxeq_preset_reg_n_0_[2]\, + O => \rxeq_preset[2]_i_1__0_n_0\ + ); +\rxeq_preset[2]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFFFF0002" + ) + port map ( + I0 => \rxeq_preset[2]_i_3__0_n_0\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I3 => \FSM_onehot_fsm_rx_reg_n_0_[5]\, + I4 => \rxeq_adapt_done_reg_i_2__0_n_0\, + I5 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + O => \rxeq_preset[2]_i_2__0_n_0\ + ); +\rxeq_preset[2]_i_3__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"1" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + O => \rxeq_preset[2]_i_3__0_n_0\ + ); +\rxeq_preset_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_preset_reg1(0), + R => RST_CPLLRESET + ); +\rxeq_preset_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_preset_reg1(1), + R => RST_CPLLRESET + ); +\rxeq_preset_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_preset_reg1(2), + R => RST_CPLLRESET + ); +\rxeq_preset_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_preset_reg1(0), + Q => rxeq_preset_reg2(0), + R => RST_CPLLRESET + ); +\rxeq_preset_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_preset_reg1(1), + Q => rxeq_preset_reg2(1), + R => RST_CPLLRESET + ); +\rxeq_preset_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_preset_reg1(2), + Q => rxeq_preset_reg2(2), + R => RST_CPLLRESET + ); +\rxeq_preset_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rxeq_preset[0]_i_1__0_n_0\, + Q => \rxeq_preset_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\rxeq_preset_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rxeq_preset[1]_i_1__0_n_0\, + Q => \rxeq_preset_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\rxeq_preset_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rxeq_preset[2]_i_1__0_n_0\, + Q => \rxeq_preset_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +rxeq_preset_valid_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + Q => rxeq_preset_valid, + R => RST_CPLLRESET + ); +rxeq_scan_i: entity work.pcie_7x_0_pcie_7x_0_rxeq_scan_57 + port map ( + D(2) => rxeq_scan_i_n_0, + D(1) => rxeq_scan_i_n_1, + D(0) => rxeq_scan_i_n_2, + \FSM_onehot_fsm_rx_reg[5]\(2) => \rxeq_cnt_reg_n_0_[2]\, + \FSM_onehot_fsm_rx_reg[5]\(1) => \rxeq_cnt_reg_n_0_[1]\, + \FSM_onehot_fsm_rx_reg[5]\(0) => \rxeq_cnt_reg_n_0_[0]\, + Q(4) => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + Q(3) => \FSM_onehot_fsm_rx_reg_n_0_[5]\, + Q(2) => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + Q(1) => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + Q(0) => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + RST_CPLLRESET => RST_CPLLRESET, + USER_RXEQ_ADAPT_DONE => \^user_rxeq_adapt_done\, + adapt_done_reg_0 => rxeq_scan_i_n_4, + \fs_reg1_reg[5]_0\(5) => \rxeq_fs_reg_n_0_[5]\, + \fs_reg1_reg[5]_0\(4) => \rxeq_fs_reg_n_0_[4]\, + \fs_reg1_reg[5]_0\(3) => \rxeq_fs_reg_n_0_[3]\, + \fs_reg1_reg[5]_0\(2) => \rxeq_fs_reg_n_0_[2]\, + \fs_reg1_reg[5]_0\(1) => \rxeq_fs_reg_n_0_[1]\, + \fs_reg1_reg[5]_0\(0) => \rxeq_fs_reg_n_0_[0]\, + \lf_reg1_reg[5]_0\(5) => \rxeq_lf_reg_n_0_[5]\, + \lf_reg1_reg[5]_0\(4) => \rxeq_lf_reg_n_0_[4]\, + \lf_reg1_reg[5]_0\(3) => \rxeq_lf_reg_n_0_[3]\, + \lf_reg1_reg[5]_0\(2) => \rxeq_lf_reg_n_0_[2]\, + \lf_reg1_reg[5]_0\(1) => \rxeq_lf_reg_n_0_[1]\, + \lf_reg1_reg[5]_0\(0) => \rxeq_lf_reg_n_0_[0]\, + new_txcoeff_done_reg_0 => rxeq_scan_i_n_5, + new_txcoeff_req_reg1_reg_0 => rxeq_new_txcoeff_req_reg_n_0, + \out\(1 downto 0) => rxeq_control_reg2(1 downto 0), + pipe_pclk_in => pipe_pclk_in, + \preset_reg1_reg[2]_0\(2) => \rxeq_preset_reg_n_0_[2]\, + \preset_reg1_reg[2]_0\(1) => \rxeq_preset_reg_n_0_[1]\, + \preset_reg1_reg[2]_0\(0) => \rxeq_preset_reg_n_0_[0]\, + rxeq_adapt_done_reg => \rxeq_adapt_done_i_2__0_n_0\, + rxeq_adapt_done_reg_reg => \FSM_onehot_fsm_rx[1]_i_2__0_n_0\, + rxeq_adapt_done_reg_reg_0 => \rxeq_adapt_done_reg_i_2__0_n_0\, + rxeq_adapt_done_reg_reg_1 => rxeq_adapt_done_reg_reg_n_0, + rxeq_new_txcoeff_req => rxeq_new_txcoeff_req, + rxeq_preset_valid => rxeq_preset_valid, + \txcoeff_reg1_reg[17]_0\(17) => \rxeq_txcoeff_reg_n_0_[17]\, + \txcoeff_reg1_reg[17]_0\(16) => \rxeq_txcoeff_reg_n_0_[16]\, + \txcoeff_reg1_reg[17]_0\(15) => \rxeq_txcoeff_reg_n_0_[15]\, + \txcoeff_reg1_reg[17]_0\(14) => \rxeq_txcoeff_reg_n_0_[14]\, + \txcoeff_reg1_reg[17]_0\(13) => \rxeq_txcoeff_reg_n_0_[13]\, + \txcoeff_reg1_reg[17]_0\(12) => \rxeq_txcoeff_reg_n_0_[12]\, + \txcoeff_reg1_reg[17]_0\(11) => \rxeq_txcoeff_reg_n_0_[11]\, + \txcoeff_reg1_reg[17]_0\(10) => \rxeq_txcoeff_reg_n_0_[10]\, + \txcoeff_reg1_reg[17]_0\(9) => \rxeq_txcoeff_reg_n_0_[9]\, + \txcoeff_reg1_reg[17]_0\(8) => \rxeq_txcoeff_reg_n_0_[8]\, + \txcoeff_reg1_reg[17]_0\(7) => \rxeq_txcoeff_reg_n_0_[7]\, + \txcoeff_reg1_reg[17]_0\(6) => \rxeq_txcoeff_reg_n_0_[6]\, + \txcoeff_reg1_reg[17]_0\(5) => \rxeq_txcoeff_reg_n_0_[5]\, + \txcoeff_reg1_reg[17]_0\(4) => \rxeq_txcoeff_reg_n_0_[4]\, + \txcoeff_reg1_reg[17]_0\(3) => \rxeq_txcoeff_reg_n_0_[3]\, + \txcoeff_reg1_reg[17]_0\(2) => \rxeq_txcoeff_reg_n_0_[2]\, + \txcoeff_reg1_reg[17]_0\(1) => \rxeq_txcoeff_reg_n_0_[1]\, + \txcoeff_reg1_reg[17]_0\(0) => \rxeq_txcoeff_reg_n_0_[0]\, + \txpreset_reg1_reg[3]_0\(3) => \rxeq_txpreset_reg_n_0_[3]\, + \txpreset_reg1_reg[3]_0\(2) => \rxeq_txpreset_reg_n_0_[2]\, + \txpreset_reg1_reg[3]_0\(1) => \rxeq_txpreset_reg_n_0_[1]\, + \txpreset_reg1_reg[3]_0\(0) => \rxeq_txpreset_reg_n_0_[0]\ + ); +\rxeq_txcoeff[0]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[6]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(0) + ); +\rxeq_txcoeff[10]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[16]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(10) + ); +\rxeq_txcoeff[11]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[17]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(11) + ); +\rxeq_txcoeff[12]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => txeq_deemph_reg2(0), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(12) + ); +\rxeq_txcoeff[13]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => txeq_deemph_reg2(1), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(13) + ); +\rxeq_txcoeff[14]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => txeq_deemph_reg2(2), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(14) + ); +\rxeq_txcoeff[15]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => txeq_deemph_reg2(3), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(15) + ); +\rxeq_txcoeff[16]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => txeq_deemph_reg2(4), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(16) + ); +\rxeq_txcoeff[17]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => txeq_deemph_reg2(5), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(17) + ); +\rxeq_txcoeff[1]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[7]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(1) + ); +\rxeq_txcoeff[2]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[8]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(2) + ); +\rxeq_txcoeff[3]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[9]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(3) + ); +\rxeq_txcoeff[4]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[10]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(4) + ); +\rxeq_txcoeff[5]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[11]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(5) + ); +\rxeq_txcoeff[6]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[12]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(6) + ); +\rxeq_txcoeff[7]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[13]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(7) + ); +\rxeq_txcoeff[8]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[14]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(8) + ); +\rxeq_txcoeff[9]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[15]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(9) + ); +\rxeq_txcoeff_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__0_n_0\, + D => rxeq_txcoeff(0), + Q => \rxeq_txcoeff_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__0_n_0\, + D => rxeq_txcoeff(10), + Q => \rxeq_txcoeff_reg_n_0_[10]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__0_n_0\, + D => rxeq_txcoeff(11), + Q => \rxeq_txcoeff_reg_n_0_[11]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__0_n_0\, + D => rxeq_txcoeff(12), + Q => \rxeq_txcoeff_reg_n_0_[12]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__0_n_0\, + D => rxeq_txcoeff(13), + Q => \rxeq_txcoeff_reg_n_0_[13]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__0_n_0\, + D => rxeq_txcoeff(14), + Q => \rxeq_txcoeff_reg_n_0_[14]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__0_n_0\, + D => rxeq_txcoeff(15), + Q => \rxeq_txcoeff_reg_n_0_[15]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[16]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__0_n_0\, + D => rxeq_txcoeff(16), + Q => \rxeq_txcoeff_reg_n_0_[16]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[17]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__0_n_0\, + D => rxeq_txcoeff(17), + Q => \rxeq_txcoeff_reg_n_0_[17]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__0_n_0\, + D => rxeq_txcoeff(1), + Q => \rxeq_txcoeff_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__0_n_0\, + D => rxeq_txcoeff(2), + Q => \rxeq_txcoeff_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__0_n_0\, + D => rxeq_txcoeff(3), + Q => \rxeq_txcoeff_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__0_n_0\, + D => rxeq_txcoeff(4), + Q => \rxeq_txcoeff_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__0_n_0\, + D => rxeq_txcoeff(5), + Q => \rxeq_txcoeff_reg_n_0_[5]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__0_n_0\, + D => rxeq_txcoeff(6), + Q => \rxeq_txcoeff_reg_n_0_[6]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__0_n_0\, + D => rxeq_txcoeff(7), + Q => \rxeq_txcoeff_reg_n_0_[7]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__0_n_0\, + D => rxeq_txcoeff(8), + Q => \rxeq_txcoeff_reg_n_0_[8]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__0_n_0\, + D => rxeq_txcoeff(9), + Q => \rxeq_txcoeff_reg_n_0_[9]\, + R => RST_CPLLRESET + ); +\rxeq_txpreset[0]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => rxeq_txpreset_reg2(0), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txpreset(0) + ); +\rxeq_txpreset[1]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => rxeq_txpreset_reg2(1), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txpreset(1) + ); +\rxeq_txpreset[2]_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => rxeq_txpreset_reg2(2), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txpreset(2) + ); +\rxeq_txpreset[3]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFFF404" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + I1 => \rxeq_txpreset[3]_i_3__0_n_0\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I3 => rxeq_control_reg2(1), + I4 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + O => \rxeq_txpreset[3]_i_1__0_n_0\ + ); +\rxeq_txpreset[3]_i_2__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => rxeq_txpreset_reg2(3), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txpreset(3) + ); +\rxeq_txpreset[3]_i_3__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"01" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[5]\, + O => \rxeq_txpreset[3]_i_3__0_n_0\ + ); +\rxeq_txpreset_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_txpreset_reg1(0), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_txpreset_reg1(1), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_txpreset_reg1(2), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_txpreset_reg1(3), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_txpreset_reg1(0), + Q => rxeq_txpreset_reg2(0), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_txpreset_reg1(1), + Q => rxeq_txpreset_reg2(1), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_txpreset_reg1(2), + Q => rxeq_txpreset_reg2(2), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_txpreset_reg1(3), + Q => rxeq_txpreset_reg2(3), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__0_n_0\, + D => rxeq_txpreset(0), + Q => \rxeq_txpreset_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__0_n_0\, + D => rxeq_txpreset(1), + Q => \rxeq_txpreset_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__0_n_0\, + D => rxeq_txpreset(2), + Q => \rxeq_txpreset_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__0_n_0\, + D => rxeq_txpreset(3), + Q => \rxeq_txpreset_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +rxeq_user_en_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_en_reg1, + R => RST_CPLLRESET + ); +rxeq_user_en_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_en_reg1, + Q => rxeq_user_en_reg2, + R => RST_CPLLRESET + ); +rxeq_user_mode_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_mode_reg1, + R => RST_CPLLRESET + ); +rxeq_user_mode_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_mode_reg1, + Q => rxeq_user_mode_reg2, + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(0), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(10), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(11), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(12), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(13), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(14), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(15), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[16]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(16), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[17]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(17), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(1), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(2), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(3), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(4), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(5), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(6), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(7), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(8), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(9), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(0), + Q => rxeq_user_txcoeff_reg2(0), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(10), + Q => rxeq_user_txcoeff_reg2(10), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(11), + Q => rxeq_user_txcoeff_reg2(11), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(12), + Q => rxeq_user_txcoeff_reg2(12), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(13), + Q => rxeq_user_txcoeff_reg2(13), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(14), + Q => rxeq_user_txcoeff_reg2(14), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(15), + Q => rxeq_user_txcoeff_reg2(15), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[16]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(16), + Q => rxeq_user_txcoeff_reg2(16), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[17]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(17), + Q => rxeq_user_txcoeff_reg2(17), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(1), + Q => rxeq_user_txcoeff_reg2(1), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(2), + Q => rxeq_user_txcoeff_reg2(2), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(3), + Q => rxeq_user_txcoeff_reg2(3), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(4), + Q => rxeq_user_txcoeff_reg2(4), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(5), + Q => rxeq_user_txcoeff_reg2(5), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(6), + Q => rxeq_user_txcoeff_reg2(6), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(7), + Q => rxeq_user_txcoeff_reg2(7), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(8), + Q => rxeq_user_txcoeff_reg2(8), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(9), + Q => rxeq_user_txcoeff_reg2(9), + R => RST_CPLLRESET + ); +\txeq_control_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_control_reg1(0), + R => RST_CPLLRESET + ); +\txeq_control_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_control_reg1(1), + R => RST_CPLLRESET + ); +\txeq_control_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_control_reg1(0), + Q => txeq_control_reg2(0), + R => RST_CPLLRESET + ); +\txeq_control_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_control_reg1(1), + Q => txeq_control_reg2(1), + R => RST_CPLLRESET + ); +\txeq_deemph_reg1_reg[0]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_deemph_reg1(0), + S => RST_CPLLRESET + ); +\txeq_deemph_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_deemph_reg1(1), + R => RST_CPLLRESET + ); +\txeq_deemph_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_deemph_reg1(2), + R => RST_CPLLRESET + ); +\txeq_deemph_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_deemph_reg1(3), + R => RST_CPLLRESET + ); +\txeq_deemph_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_deemph_reg1(4), + R => RST_CPLLRESET + ); +\txeq_deemph_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_deemph_reg1(5), + R => RST_CPLLRESET + ); +\txeq_deemph_reg2_reg[0]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_deemph_reg1(0), + Q => txeq_deemph_reg2(0), + S => RST_CPLLRESET + ); +\txeq_deemph_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_deemph_reg1(1), + Q => txeq_deemph_reg2(1), + R => RST_CPLLRESET + ); +\txeq_deemph_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_deemph_reg1(2), + Q => txeq_deemph_reg2(2), + R => RST_CPLLRESET + ); +\txeq_deemph_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_deemph_reg1(3), + Q => txeq_deemph_reg2(3), + R => RST_CPLLRESET + ); +\txeq_deemph_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_deemph_reg1(4), + Q => txeq_deemph_reg2(4), + R => RST_CPLLRESET + ); +\txeq_deemph_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_deemph_reg1(5), + Q => txeq_deemph_reg2(5), + R => RST_CPLLRESET + ); +\txeq_preset[0]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00001000" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(2), + I2 => txeq_preset_reg2(0), + I3 => txeq_preset_reg2(3), + I4 => txeq_preset_reg2(1), + O => p_0_out(0) + ); +\txeq_preset[10]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"ABEAABAF" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(2), + I2 => txeq_preset_reg2(0), + I3 => txeq_preset_reg2(3), + I4 => txeq_preset_reg2(1), + O => p_0_out(10) + ); +\txeq_preset[11]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFF200D" + ) + port map ( + I0 => txeq_preset_reg2(1), + I1 => txeq_preset_reg2(3), + I2 => txeq_preset_reg2(2), + I3 => txeq_preset_reg2(0), + I4 => RST_CPLLRESET, + O => p_0_out(11) + ); +\txeq_preset[12]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"01151110" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(3), + I2 => txeq_preset_reg2(1), + I3 => txeq_preset_reg2(2), + I4 => txeq_preset_reg2(0), + O => p_0_out(12) + ); +\txeq_preset[13]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"01000010" + ) + port map ( + I0 => txeq_preset_reg2(2), + I1 => RST_CPLLRESET, + I2 => txeq_preset_reg2(0), + I3 => txeq_preset_reg2(3), + I4 => txeq_preset_reg2(1), + O => p_0_out(13) + ); +\txeq_preset[14]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"01000010" + ) + port map ( + I0 => txeq_preset_reg2(2), + I1 => RST_CPLLRESET, + I2 => txeq_preset_reg2(3), + I3 => txeq_preset_reg2(1), + I4 => txeq_preset_reg2(0), + O => p_0_out(14) + ); +\txeq_preset[15]_i_1__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"F0F1" + ) + port map ( + I0 => txeq_preset_reg2(2), + I1 => txeq_preset_reg2(1), + I2 => RST_CPLLRESET, + I3 => txeq_preset_reg2(3), + O => p_0_out(15) + ); +\txeq_preset[16]_i_1__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0006" + ) + port map ( + I0 => txeq_preset_reg2(3), + I1 => txeq_preset_reg2(0), + I2 => txeq_preset_reg2(2), + I3 => RST_CPLLRESET, + O => p_0_out(16) + ); +\txeq_preset[17]_i_1__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AABA" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => fsm_tx(0), + I2 => fsm_tx(1), + I3 => fsm_tx(2), + O => \txeq_preset[17]_i_1__0_n_0\ + ); +\txeq_preset[17]_i_2__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFF400D" + ) + port map ( + I0 => txeq_preset_reg2(3), + I1 => txeq_preset_reg2(1), + I2 => txeq_preset_reg2(2), + I3 => txeq_preset_reg2(0), + I4 => RST_CPLLRESET, + O => p_0_out(17) + ); +\txeq_preset[1]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00001004" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(3), + I2 => txeq_preset_reg2(1), + I3 => txeq_preset_reg2(2), + I4 => txeq_preset_reg2(0), + O => p_0_out(1) + ); +\txeq_preset[2]_i_1__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0E00" + ) + port map ( + I0 => txeq_preset_reg2(2), + I1 => txeq_preset_reg2(0), + I2 => RST_CPLLRESET, + I3 => txeq_preset_reg2(3), + O => p_0_out(2) + ); +\txeq_preset[3]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"01440140" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(2), + I2 => txeq_preset_reg2(1), + I3 => txeq_preset_reg2(3), + I4 => txeq_preset_reg2(0), + O => \txeq_preset[3]_i_1__0_n_0\ + ); +\txeq_preset[7]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00001400" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(0), + I2 => txeq_preset_reg2(2), + I3 => txeq_preset_reg2(1), + I4 => txeq_preset_reg2(3), + O => \txeq_preset[7]_i_1__0_n_0\ + ); +\txeq_preset[8]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"AAAFBEAF" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(0), + I2 => txeq_preset_reg2(2), + I3 => txeq_preset_reg2(1), + I4 => txeq_preset_reg2(3), + O => p_0_out(8) + ); +\txeq_preset[9]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"CCFCCFCD" + ) + port map ( + I0 => txeq_preset_reg2(1), + I1 => RST_CPLLRESET, + I2 => txeq_preset_reg2(2), + I3 => txeq_preset_reg2(3), + I4 => txeq_preset_reg2(0), + O => p_0_out(9) + ); +\txeq_preset_done_i_1__0\: unisim.vcomponents.LUT3 + generic map( + INIT => X"04" + ) + port map ( + I0 => fsm_tx(2), + I1 => fsm_tx(1), + I2 => fsm_tx(0), + O => \txeq_preset_done_i_1__0_n_0\ + ); +txeq_preset_done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txeq_preset_done_i_1__0_n_0\, + Q => txeq_preset_done, + R => RST_CPLLRESET + ); +\txeq_preset_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_preset_reg1(0), + R => RST_CPLLRESET + ); +\txeq_preset_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_preset_reg1(1), + R => RST_CPLLRESET + ); +\txeq_preset_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_preset_reg1(2), + R => RST_CPLLRESET + ); +\txeq_preset_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_preset_reg1(3), + R => RST_CPLLRESET + ); +\txeq_preset_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_preset_reg1(0), + Q => txeq_preset_reg2(0), + R => RST_CPLLRESET + ); +\txeq_preset_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_preset_reg1(1), + Q => txeq_preset_reg2(1), + R => RST_CPLLRESET + ); +\txeq_preset_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_preset_reg1(2), + Q => txeq_preset_reg2(2), + R => RST_CPLLRESET + ); +\txeq_preset_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_preset_reg1(3), + Q => txeq_preset_reg2(3), + R => RST_CPLLRESET + ); +\txeq_preset_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__0_n_0\, + D => p_0_out(0), + Q => \txeq_preset_reg_n_0_[0]\, + R => '0' + ); +\txeq_preset_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__0_n_0\, + D => p_0_out(10), + Q => \txeq_preset_reg_n_0_[10]\, + R => '0' + ); +\txeq_preset_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__0_n_0\, + D => p_0_out(11), + Q => \txeq_preset_reg_n_0_[11]\, + R => '0' + ); +\txeq_preset_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__0_n_0\, + D => p_0_out(12), + Q => \txeq_preset_reg_n_0_[12]\, + R => '0' + ); +\txeq_preset_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__0_n_0\, + D => p_0_out(13), + Q => \txeq_preset_reg_n_0_[13]\, + R => '0' + ); +\txeq_preset_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__0_n_0\, + D => p_0_out(14), + Q => \txeq_preset_reg_n_0_[14]\, + R => '0' + ); +\txeq_preset_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__0_n_0\, + D => p_0_out(15), + Q => \txeq_preset_reg_n_0_[15]\, + R => '0' + ); +\txeq_preset_reg[16]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__0_n_0\, + D => p_0_out(16), + Q => \txeq_preset_reg_n_0_[16]\, + R => '0' + ); +\txeq_preset_reg[17]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__0_n_0\, + D => p_0_out(17), + Q => \txeq_preset_reg_n_0_[17]\, + R => '0' + ); +\txeq_preset_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__0_n_0\, + D => p_0_out(1), + Q => \txeq_preset_reg_n_0_[1]\, + R => '0' + ); +\txeq_preset_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__0_n_0\, + D => p_0_out(2), + Q => \txeq_preset_reg_n_0_[2]\, + R => '0' + ); +\txeq_preset_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__0_n_0\, + D => \txeq_preset[3]_i_1__0_n_0\, + Q => \txeq_preset_reg_n_0_[3]\, + R => '0' + ); +\txeq_preset_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__0_n_0\, + D => \txeq_preset[7]_i_1__0_n_0\, + Q => \txeq_preset_reg_n_0_[7]\, + R => '0' + ); +\txeq_preset_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__0_n_0\, + D => p_0_out(8), + Q => \txeq_preset_reg_n_0_[8]\, + R => '0' + ); +\txeq_preset_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__0_n_0\, + D => p_0_out(9), + Q => \txeq_preset_reg_n_0_[9]\, + R => '0' + ); +\txeq_txcoeff[0]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"45404040" + ) + port map ( + I0 => fsm_tx(2), + I1 => \txeq_txcoeff[0]_i_2__0_n_0\, + I2 => fsm_tx(1), + I3 => fsm_tx(0), + I4 => \txeq_txcoeff_reg_n_0_[6]\, + O => \txeq_txcoeff[0]_i_1__0_n_0\ + ); +\txeq_txcoeff[0]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[6]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[7]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[0]\, + O => \txeq_txcoeff[0]_i_2__0_n_0\ + ); +\txeq_txcoeff[10]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[9]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[10]_i_2__0_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[16]\, + O => \txeq_txcoeff[10]_i_1__0_n_0\ + ); +\txeq_txcoeff[10]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[16]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[17]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[10]\, + O => \txeq_txcoeff[10]_i_2__0_n_0\ + ); +\txeq_txcoeff[11]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[10]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[11]_i_2__0_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[17]\, + O => \txeq_txcoeff[11]_i_1__0_n_0\ + ); +\txeq_txcoeff[11]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[17]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[18]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[11]\, + O => \txeq_txcoeff[11]_i_2__0_n_0\ + ); +\txeq_txcoeff[12]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[11]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[12]_i_2__0_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[18]\, + O => \txeq_txcoeff[12]_i_1__0_n_0\ + ); +\txeq_txcoeff[12]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[18]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => txeq_deemph_reg2(0), + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[12]\, + O => \txeq_txcoeff[12]_i_2__0_n_0\ + ); +\txeq_txcoeff[13]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[12]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[13]_i_2__0_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => txeq_deemph_reg2(0), + O => \txeq_txcoeff[13]_i_1__0_n_0\ + ); +\txeq_txcoeff[13]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => txeq_deemph_reg2(0), + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => txeq_deemph_reg2(1), + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[13]\, + O => \txeq_txcoeff[13]_i_2__0_n_0\ + ); +\txeq_txcoeff[14]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[13]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[14]_i_2__0_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => txeq_deemph_reg2(1), + O => \txeq_txcoeff[14]_i_1__0_n_0\ + ); +\txeq_txcoeff[14]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => txeq_deemph_reg2(1), + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => txeq_deemph_reg2(2), + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[14]\, + O => \txeq_txcoeff[14]_i_2__0_n_0\ + ); +\txeq_txcoeff[15]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[14]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[15]_i_2__0_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => txeq_deemph_reg2(2), + O => \txeq_txcoeff[15]_i_1__0_n_0\ + ); +\txeq_txcoeff[15]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => txeq_deemph_reg2(2), + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => txeq_deemph_reg2(3), + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[15]\, + O => \txeq_txcoeff[15]_i_2__0_n_0\ + ); +\txeq_txcoeff[16]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[15]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[16]_i_2__0_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => txeq_deemph_reg2(3), + O => \txeq_txcoeff[16]_i_1__0_n_0\ + ); +\txeq_txcoeff[16]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => txeq_deemph_reg2(3), + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => txeq_deemph_reg2(4), + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[16]\, + O => \txeq_txcoeff[16]_i_2__0_n_0\ + ); +\txeq_txcoeff[17]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[16]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[17]_i_2__0_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => txeq_deemph_reg2(4), + O => \txeq_txcoeff[17]_i_1__0_n_0\ + ); +\txeq_txcoeff[17]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => txeq_deemph_reg2(4), + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => txeq_deemph_reg2(5), + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[17]\, + O => \txeq_txcoeff[17]_i_2__0_n_0\ + ); +\txeq_txcoeff[18]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FF040FFF" + ) + port map ( + I0 => txeq_control_reg2(0), + I1 => txeq_control_reg2(1), + I2 => fsm_tx(2), + I3 => fsm_tx(1), + I4 => fsm_tx(0), + O => txeq_txcoeff + ); +\txeq_txcoeff[18]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"22F3220022002200" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[17]\, + I1 => fsm_tx(1), + I2 => \txeq_txcoeff[18]_i_3__0_n_0\, + I3 => fsm_tx(2), + I4 => txeq_deemph_reg2(5), + I5 => fsm_tx(0), + O => \txeq_txcoeff[18]_i_2__0_n_0\ + ); +\txeq_txcoeff[18]_i_3__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"B" + ) + port map ( + I0 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + O => \txeq_txcoeff[18]_i_3__0_n_0\ + ); +\txeq_txcoeff[1]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[0]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[1]_i_2__0_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[7]\, + O => \txeq_txcoeff[1]_i_1__0_n_0\ + ); +\txeq_txcoeff[1]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[7]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[8]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[1]\, + O => \txeq_txcoeff[1]_i_2__0_n_0\ + ); +\txeq_txcoeff[2]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[1]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[2]_i_2__0_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[8]\, + O => \txeq_txcoeff[2]_i_1__0_n_0\ + ); +\txeq_txcoeff[2]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[8]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[9]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[2]\, + O => \txeq_txcoeff[2]_i_2__0_n_0\ + ); +\txeq_txcoeff[3]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[2]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[3]_i_2__0_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[9]\, + O => \txeq_txcoeff[3]_i_1__0_n_0\ + ); +\txeq_txcoeff[3]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[9]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[10]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[3]\, + O => \txeq_txcoeff[3]_i_2__0_n_0\ + ); +\txeq_txcoeff[4]_i_1__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"2F20" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[3]\, + I1 => fsm_tx(1), + I2 => fsm_tx(2), + I3 => \txeq_txcoeff[4]_i_2__0_n_0\, + O => \txeq_txcoeff[4]_i_1__0_n_0\ + ); +\txeq_txcoeff[4]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"CACCCCCC00000000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[11]\, + I1 => \txeq_txcoeff_reg_n_0_[10]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I3 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I4 => fsm_tx(1), + I5 => fsm_tx(0), + O => \txeq_txcoeff[4]_i_2__0_n_0\ + ); +\txeq_txcoeff[5]_i_1__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"2F20" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[4]\, + I1 => fsm_tx(1), + I2 => fsm_tx(2), + I3 => \txeq_txcoeff[5]_i_2__0_n_0\, + O => \txeq_txcoeff[5]_i_1__0_n_0\ + ); +\txeq_txcoeff[5]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"CACCCCCC00000000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[12]\, + I1 => \txeq_txcoeff_reg_n_0_[11]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I3 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I4 => fsm_tx(1), + I5 => fsm_tx(0), + O => \txeq_txcoeff[5]_i_2__0_n_0\ + ); +\txeq_txcoeff[6]_i_1__0\: unisim.vcomponents.LUT4 + generic map( + INIT => X"2F20" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[5]\, + I1 => fsm_tx(1), + I2 => fsm_tx(2), + I3 => \txeq_txcoeff[6]_i_2__0_n_0\, + O => \txeq_txcoeff[6]_i_1__0_n_0\ + ); +\txeq_txcoeff[6]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"CACCCCCC00000000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[13]\, + I1 => \txeq_txcoeff_reg_n_0_[12]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I3 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I4 => fsm_tx(1), + I5 => fsm_tx(0), + O => \txeq_txcoeff[6]_i_2__0_n_0\ + ); +\txeq_txcoeff[7]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[6]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[7]_i_2__0_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[13]\, + O => \txeq_txcoeff[7]_i_1__0_n_0\ + ); +\txeq_txcoeff[7]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[13]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[14]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[7]\, + O => \txeq_txcoeff[7]_i_2__0_n_0\ + ); +\txeq_txcoeff[8]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[7]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[8]_i_2__0_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[14]\, + O => \txeq_txcoeff[8]_i_1__0_n_0\ + ); +\txeq_txcoeff[8]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[14]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[15]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[8]\, + O => \txeq_txcoeff[8]_i_2__0_n_0\ + ); +\txeq_txcoeff[9]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[8]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[9]_i_2__0_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[15]\, + O => \txeq_txcoeff[9]_i_1__0_n_0\ + ); +\txeq_txcoeff[9]_i_2__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[15]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[16]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[9]\, + O => \txeq_txcoeff[9]_i_2__0_n_0\ + ); +\txeq_txcoeff_cnt[0]_i_1__0\: unisim.vcomponents.LUT6 + generic map( + INIT => X"000004000F000400" + ) + port map ( + I0 => txeq_control_reg2(0), + I1 => txeq_control_reg2(1), + I2 => fsm_tx(2), + I3 => fsm_tx(0), + I4 => fsm_tx(1), + I5 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + O => txeq_txcoeff_cnt(0) + ); +\txeq_txcoeff_cnt[1]_i_1__0\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00006000" + ) + port map ( + I0 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I2 => fsm_tx(0), + I3 => fsm_tx(1), + I4 => fsm_tx(2), + O => txeq_txcoeff_cnt(1) + ); +\txeq_txcoeff_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_txcoeff_cnt(0), + Q => \txeq_txcoeff_cnt_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_txcoeff_cnt(1), + Q => \txeq_txcoeff_cnt_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[0]_i_1__0_n_0\, + Q => \txeq_txcoeff_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[10]_i_1__0_n_0\, + Q => \txeq_txcoeff_reg_n_0_[10]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[11]_i_1__0_n_0\, + Q => \txeq_txcoeff_reg_n_0_[11]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[12]_i_1__0_n_0\, + Q => \txeq_txcoeff_reg_n_0_[12]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[13]_i_1__0_n_0\, + Q => \txeq_txcoeff_reg_n_0_[13]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[14]_i_1__0_n_0\, + Q => \txeq_txcoeff_reg_n_0_[14]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[15]_i_1__0_n_0\, + Q => \txeq_txcoeff_reg_n_0_[15]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[16]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[16]_i_1__0_n_0\, + Q => \txeq_txcoeff_reg_n_0_[16]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[17]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[17]_i_1__0_n_0\, + Q => \txeq_txcoeff_reg_n_0_[17]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[18]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[18]_i_2__0_n_0\, + Q => \txeq_txcoeff_reg_n_0_[18]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[1]_i_1__0_n_0\, + Q => \txeq_txcoeff_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[2]_i_1__0_n_0\, + Q => \txeq_txcoeff_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[3]_i_1__0_n_0\, + Q => \txeq_txcoeff_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[4]_i_1__0_n_0\, + Q => \txeq_txcoeff_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[5]_i_1__0_n_0\, + Q => \txeq_txcoeff_reg_n_0_[5]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[6]_i_1__0_n_0\, + Q => \txeq_txcoeff_reg_n_0_[6]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[7]_i_1__0_n_0\, + Q => \txeq_txcoeff_reg_n_0_[7]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[8]_i_1__0_n_0\, + Q => \txeq_txcoeff_reg_n_0_[8]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[9]_i_1__0_n_0\, + Q => \txeq_txcoeff_reg_n_0_[9]\, + R => RST_CPLLRESET + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pipe_eq_45 is + port ( + TXPRECURSOR : out STD_LOGIC_VECTOR ( 4 downto 0 ); + TXMAINCURSOR : out STD_LOGIC_VECTOR ( 6 downto 0 ); + TXPOSTCURSOR : out STD_LOGIC_VECTOR ( 4 downto 0 ); + USER_RXEQ_ADAPT_DONE : out STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + rate_gen3_2 : in STD_LOGIC + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pipe_eq_45 : entity is "pcie_7x_0_pipe_eq"; +end pcie_7x_0_pcie_7x_0_pipe_eq_45; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pipe_eq_45 is + signal \FSM_onehot_fsm_rx[1]_i_1__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx[1]_i_2__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx[3]_i_1__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx[4]_i_1__1_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx_reg_n_0_[1]\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx_reg_n_0_[2]\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx_reg_n_0_[3]\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx_reg_n_0_[4]\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx_reg_n_0_[5]\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx_reg_n_0_[6]\ : STD_LOGIC; + signal \FSM_sequential_fsm_tx[1]_i_2__1_n_0\ : STD_LOGIC; + signal \FSM_sequential_fsm_tx[2]_i_2__1_n_0\ : STD_LOGIC; + signal \^user_rxeq_adapt_done\ : STD_LOGIC; + signal fsm_tx : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal \fsm_tx__0\ : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal gen3_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of gen3_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of gen3_reg1 : signal is "true"; + signal gen3_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of gen3_reg2 : signal is "NO"; + attribute async_reg of gen3_reg2 : signal is "true"; + signal p_0_out : STD_LOGIC_VECTOR ( 17 downto 0 ); + signal \rxeq_adapt_done_i_2__1_n_0\ : STD_LOGIC; + signal \rxeq_adapt_done_reg_i_2__1_n_0\ : STD_LOGIC; + signal rxeq_adapt_done_reg_reg_n_0 : STD_LOGIC; + signal rxeq_cnt : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal \rxeq_cnt_reg_n_0_[0]\ : STD_LOGIC; + signal \rxeq_cnt_reg_n_0_[1]\ : STD_LOGIC; + signal \rxeq_cnt_reg_n_0_[2]\ : STD_LOGIC; + signal rxeq_control_reg1 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_control_reg1 : signal is "NO"; + attribute async_reg of rxeq_control_reg1 : signal is "true"; + signal rxeq_control_reg2 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_control_reg2 : signal is "NO"; + attribute async_reg of rxeq_control_reg2 : signal is "true"; + signal rxeq_fs : STD_LOGIC_VECTOR ( 5 downto 0 ); + signal \rxeq_fs[5]_i_1__1_n_0\ : STD_LOGIC; + signal \rxeq_fs_reg_n_0_[0]\ : STD_LOGIC; + signal \rxeq_fs_reg_n_0_[1]\ : STD_LOGIC; + signal \rxeq_fs_reg_n_0_[2]\ : STD_LOGIC; + signal \rxeq_fs_reg_n_0_[3]\ : STD_LOGIC; + signal \rxeq_fs_reg_n_0_[4]\ : STD_LOGIC; + signal \rxeq_fs_reg_n_0_[5]\ : STD_LOGIC; + signal rxeq_lf : STD_LOGIC_VECTOR ( 5 downto 0 ); + signal \rxeq_lf[5]_i_1__1_n_0\ : STD_LOGIC; + signal \rxeq_lf_reg_n_0_[0]\ : STD_LOGIC; + signal \rxeq_lf_reg_n_0_[1]\ : STD_LOGIC; + signal \rxeq_lf_reg_n_0_[2]\ : STD_LOGIC; + signal \rxeq_lf_reg_n_0_[3]\ : STD_LOGIC; + signal \rxeq_lf_reg_n_0_[4]\ : STD_LOGIC; + signal \rxeq_lf_reg_n_0_[5]\ : STD_LOGIC; + signal rxeq_lffs_reg1 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_lffs_reg1 : signal is "NO"; + attribute async_reg of rxeq_lffs_reg1 : signal is "true"; + signal rxeq_lffs_reg2 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_lffs_reg2 : signal is "NO"; + attribute async_reg of rxeq_lffs_reg2 : signal is "true"; + signal rxeq_new_txcoeff_req : STD_LOGIC; + signal rxeq_new_txcoeff_req_reg_n_0 : STD_LOGIC; + signal \rxeq_preset[0]_i_1__1_n_0\ : STD_LOGIC; + signal \rxeq_preset[1]_i_1__1_n_0\ : STD_LOGIC; + signal \rxeq_preset[2]_i_1__1_n_0\ : STD_LOGIC; + signal \rxeq_preset[2]_i_2__1_n_0\ : STD_LOGIC; + signal \rxeq_preset[2]_i_3__1_n_0\ : STD_LOGIC; + signal rxeq_preset_reg1 : STD_LOGIC_VECTOR ( 2 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_preset_reg1 : signal is "NO"; + attribute async_reg of rxeq_preset_reg1 : signal is "true"; + signal rxeq_preset_reg2 : STD_LOGIC_VECTOR ( 2 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_preset_reg2 : signal is "NO"; + attribute async_reg of rxeq_preset_reg2 : signal is "true"; + signal \rxeq_preset_reg_n_0_[0]\ : STD_LOGIC; + signal \rxeq_preset_reg_n_0_[1]\ : STD_LOGIC; + signal \rxeq_preset_reg_n_0_[2]\ : STD_LOGIC; + signal rxeq_preset_valid : STD_LOGIC; + signal rxeq_scan_i_n_0 : STD_LOGIC; + signal rxeq_scan_i_n_1 : STD_LOGIC; + signal rxeq_scan_i_n_2 : STD_LOGIC; + signal rxeq_scan_i_n_4 : STD_LOGIC; + signal rxeq_scan_i_n_5 : STD_LOGIC; + signal rxeq_txcoeff : STD_LOGIC_VECTOR ( 17 downto 0 ); + signal \rxeq_txcoeff_reg_n_0_[0]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[10]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[11]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[12]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[13]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[14]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[15]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[16]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[17]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[1]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[2]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[3]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[4]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[5]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[6]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[7]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[8]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[9]\ : STD_LOGIC; + signal rxeq_txpreset : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal \rxeq_txpreset[3]_i_1__1_n_0\ : STD_LOGIC; + signal \rxeq_txpreset[3]_i_3__1_n_0\ : STD_LOGIC; + signal rxeq_txpreset_reg1 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_txpreset_reg1 : signal is "NO"; + attribute async_reg of rxeq_txpreset_reg1 : signal is "true"; + signal rxeq_txpreset_reg2 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_txpreset_reg2 : signal is "NO"; + attribute async_reg of rxeq_txpreset_reg2 : signal is "true"; + signal \rxeq_txpreset_reg_n_0_[0]\ : STD_LOGIC; + signal \rxeq_txpreset_reg_n_0_[1]\ : STD_LOGIC; + signal \rxeq_txpreset_reg_n_0_[2]\ : STD_LOGIC; + signal \rxeq_txpreset_reg_n_0_[3]\ : STD_LOGIC; + signal rxeq_user_en_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxeq_user_en_reg1 : signal is "NO"; + attribute async_reg of rxeq_user_en_reg1 : signal is "true"; + signal rxeq_user_en_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxeq_user_en_reg2 : signal is "NO"; + attribute async_reg of rxeq_user_en_reg2 : signal is "true"; + signal rxeq_user_mode_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxeq_user_mode_reg1 : signal is "NO"; + attribute async_reg of rxeq_user_mode_reg1 : signal is "true"; + signal rxeq_user_mode_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxeq_user_mode_reg2 : signal is "NO"; + attribute async_reg of rxeq_user_mode_reg2 : signal is "true"; + signal rxeq_user_txcoeff_reg1 : STD_LOGIC_VECTOR ( 17 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_user_txcoeff_reg1 : signal is "NO"; + attribute async_reg of rxeq_user_txcoeff_reg1 : signal is "true"; + signal rxeq_user_txcoeff_reg2 : STD_LOGIC_VECTOR ( 17 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_user_txcoeff_reg2 : signal is "NO"; + attribute async_reg of rxeq_user_txcoeff_reg2 : signal is "true"; + signal txeq_control_reg1 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of txeq_control_reg1 : signal is "NO"; + attribute async_reg of txeq_control_reg1 : signal is "true"; + signal txeq_control_reg2 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of txeq_control_reg2 : signal is "NO"; + attribute async_reg of txeq_control_reg2 : signal is "true"; + signal txeq_deemph_reg1 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of txeq_deemph_reg1 : signal is "NO"; + attribute async_reg of txeq_deemph_reg1 : signal is "true"; + signal txeq_deemph_reg2 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of txeq_deemph_reg2 : signal is "NO"; + attribute async_reg of txeq_deemph_reg2 : signal is "true"; + signal \txeq_preset[17]_i_1__1_n_0\ : STD_LOGIC; + signal \txeq_preset[3]_i_1__1_n_0\ : STD_LOGIC; + signal \txeq_preset[7]_i_1__1_n_0\ : STD_LOGIC; + signal txeq_preset_done : STD_LOGIC; + signal \txeq_preset_done_i_1__1_n_0\ : STD_LOGIC; + signal txeq_preset_reg1 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of txeq_preset_reg1 : signal is "NO"; + attribute async_reg of txeq_preset_reg1 : signal is "true"; + signal txeq_preset_reg2 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of txeq_preset_reg2 : signal is "NO"; + attribute async_reg of txeq_preset_reg2 : signal is "true"; + signal \txeq_preset_reg_n_0_[0]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[10]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[11]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[12]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[13]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[14]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[15]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[16]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[17]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[1]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[2]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[3]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[7]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[8]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[9]\ : STD_LOGIC; + signal txeq_txcoeff : STD_LOGIC; + signal \txeq_txcoeff[0]_i_1__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[0]_i_2__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[10]_i_1__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[10]_i_2__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[11]_i_1__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[11]_i_2__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[12]_i_1__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[12]_i_2__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[13]_i_1__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[13]_i_2__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[14]_i_1__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[14]_i_2__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[15]_i_1__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[15]_i_2__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[16]_i_1__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[16]_i_2__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[17]_i_1__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[17]_i_2__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[18]_i_2__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[18]_i_3__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[1]_i_1__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[1]_i_2__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[2]_i_1__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[2]_i_2__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[3]_i_1__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[3]_i_2__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[4]_i_1__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[4]_i_2__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[5]_i_1__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[5]_i_2__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[6]_i_1__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[6]_i_2__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[7]_i_1__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[7]_i_2__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[8]_i_1__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[8]_i_2__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[9]_i_1__1_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[9]_i_2__1_n_0\ : STD_LOGIC; + signal txeq_txcoeff_cnt : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal \txeq_txcoeff_cnt_reg_n_0_[0]\ : STD_LOGIC; + signal \txeq_txcoeff_cnt_reg_n_0_[1]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[0]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[10]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[11]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[12]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[13]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[14]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[15]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[16]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[17]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[18]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[1]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[2]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[3]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[4]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[5]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[6]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[7]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[8]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[9]\ : STD_LOGIC; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \FSM_onehot_fsm_rx[4]_i_1__1\ : label is "soft_lutpair144"; + attribute FSM_ENCODED_STATES : string; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_rx_reg[1]\ : label is "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_rx_reg[2]\ : label is "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_rx_reg[3]\ : label is "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_rx_reg[4]\ : label is "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_rx_reg[5]\ : label is "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_rx_reg[6]\ : label is "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001"; + attribute SOFT_HLUTNM of \FSM_sequential_fsm_tx[1]_i_2__1\ : label is "soft_lutpair142"; + attribute SOFT_HLUTNM of \FSM_sequential_fsm_tx[2]_i_2__1\ : label is "soft_lutpair142"; + attribute FSM_ENCODED_STATES of \FSM_sequential_fsm_tx_reg[0]\ : label is "FSM_TXEQ_QUERY:101,FSM_TXEQ_PRESET:010,FSM_TXEQ_TXCOEFF:011,FSM_TXEQ_REMAP:100,FSM_TXEQ_DONE:110,FSM_TXEQ_IDLE:001,iSTATE:000"; + attribute FSM_ENCODED_STATES of \FSM_sequential_fsm_tx_reg[1]\ : label is "FSM_TXEQ_QUERY:101,FSM_TXEQ_PRESET:010,FSM_TXEQ_TXCOEFF:011,FSM_TXEQ_REMAP:100,FSM_TXEQ_DONE:110,FSM_TXEQ_IDLE:001,iSTATE:000"; + attribute FSM_ENCODED_STATES of \FSM_sequential_fsm_tx_reg[2]\ : label is "FSM_TXEQ_QUERY:101,FSM_TXEQ_PRESET:010,FSM_TXEQ_TXCOEFF:011,FSM_TXEQ_REMAP:100,FSM_TXEQ_DONE:110,FSM_TXEQ_IDLE:001,iSTATE:000"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of gen3_reg1_reg : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of gen3_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of gen3_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of gen3_reg2_reg : label is std.standard.true; + attribute KEEP of gen3_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of gen3_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \rxeq_cnt[1]_i_1__1\ : label is "soft_lutpair145"; + attribute SOFT_HLUTNM of \rxeq_cnt[2]_i_1__1\ : label is "soft_lutpair144"; + attribute ASYNC_REG_boolean of \rxeq_control_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_control_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_control_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_control_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_control_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_control_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_control_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_control_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_control_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_control_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_control_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_control_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg2_reg[5]\ : label is "NO"; + attribute SOFT_HLUTNM of \rxeq_preset[2]_i_3__1\ : label is "soft_lutpair145"; + attribute ASYNC_REG_boolean of \rxeq_preset_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_preset_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_preset_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_preset_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_preset_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_preset_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_preset_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_preset_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_preset_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_preset_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_preset_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_preset_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_preset_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_preset_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_preset_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_preset_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_preset_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_preset_reg2_reg[2]\ : label is "NO"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[0]_i_1__1\ : label is "soft_lutpair146"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[10]_i_1__1\ : label is "soft_lutpair151"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[11]_i_1__1\ : label is "soft_lutpair151"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[1]_i_1__1\ : label is "soft_lutpair146"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[2]_i_1__1\ : label is "soft_lutpair147"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[3]_i_1__1\ : label is "soft_lutpair147"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[4]_i_1__1\ : label is "soft_lutpair148"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[5]_i_1__1\ : label is "soft_lutpair148"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[6]_i_1__1\ : label is "soft_lutpair149"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[7]_i_1__1\ : label is "soft_lutpair149"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[8]_i_1__1\ : label is "soft_lutpair150"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[9]_i_1__1\ : label is "soft_lutpair150"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of rxeq_user_en_reg1_reg : label is std.standard.true; + attribute KEEP of rxeq_user_en_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxeq_user_en_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxeq_user_en_reg2_reg : label is std.standard.true; + attribute KEEP of rxeq_user_en_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxeq_user_en_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxeq_user_mode_reg1_reg : label is std.standard.true; + attribute KEEP of rxeq_user_mode_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxeq_user_mode_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxeq_user_mode_reg2_reg : label is std.standard.true; + attribute KEEP of rxeq_user_mode_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxeq_user_mode_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[10]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[11]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[12]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[13]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[14]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[15]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[16]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[16]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[16]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[17]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[17]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[17]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[6]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[7]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[8]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[9]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[9]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[10]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[11]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[12]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[13]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[14]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[15]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[16]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[16]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[16]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[17]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[17]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[17]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[6]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[7]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[8]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[9]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[9]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_control_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \txeq_control_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_control_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_control_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \txeq_control_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_control_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_control_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \txeq_control_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_control_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_control_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \txeq_control_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_control_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg2_reg[5]\ : label is "NO"; + attribute SOFT_HLUTNM of \txeq_preset_done_i_1__1\ : label is "soft_lutpair143"; + attribute ASYNC_REG_boolean of \txeq_preset_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg2_reg[3]\ : label is "NO"; + attribute SOFT_HLUTNM of \txeq_txcoeff_cnt[1]_i_1__1\ : label is "soft_lutpair143"; +begin + USER_RXEQ_ADAPT_DONE <= \^user_rxeq_adapt_done\; +\FSM_onehot_fsm_rx[1]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"ABABABAA" + ) + port map ( + I0 => \FSM_onehot_fsm_rx[1]_i_2__1_n_0\, + I1 => rxeq_control_reg2(1), + I2 => rxeq_control_reg2(0), + I3 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I4 => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + O => \FSM_onehot_fsm_rx[1]_i_1__1_n_0\ + ); +\FSM_onehot_fsm_rx[1]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000000000001" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I3 => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + I4 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I5 => \FSM_onehot_fsm_rx_reg_n_0_[5]\, + O => \FSM_onehot_fsm_rx[1]_i_2__1_n_0\ + ); +\FSM_onehot_fsm_rx[3]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFF8FF88888888" + ) + port map ( + I0 => rxeq_control_reg2(1), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I2 => \rxeq_cnt_reg_n_0_[2]\, + I3 => \rxeq_cnt_reg_n_0_[1]\, + I4 => \rxeq_cnt_reg_n_0_[0]\, + I5 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + O => \FSM_onehot_fsm_rx[3]_i_1__1_n_0\ + ); +\FSM_onehot_fsm_rx[4]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"2ABA2AAA" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => \rxeq_cnt_reg_n_0_[2]\, + I2 => \rxeq_cnt_reg_n_0_[1]\, + I3 => \rxeq_cnt_reg_n_0_[0]\, + I4 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + O => \FSM_onehot_fsm_rx[4]_i_1__1_n_0\ + ); +\FSM_onehot_fsm_rx_reg[1]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm_rx[1]_i_1__1_n_0\, + Q => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + S => RST_CPLLRESET + ); +\FSM_onehot_fsm_rx_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_scan_i_n_2, + Q => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_rx_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm_rx[3]_i_1__1_n_0\, + Q => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_rx_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm_rx[4]_i_1__1_n_0\, + Q => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_rx_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_scan_i_n_1, + Q => \FSM_onehot_fsm_rx_reg_n_0_[5]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_rx_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_scan_i_n_0, + Q => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + R => RST_CPLLRESET + ); +\FSM_sequential_fsm_tx[0]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"C04FC043C04FF04F" + ) + port map ( + I0 => \FSM_sequential_fsm_tx[1]_i_2__1_n_0\, + I1 => fsm_tx(0), + I2 => fsm_tx(1), + I3 => fsm_tx(2), + I4 => txeq_control_reg2(1), + I5 => txeq_control_reg2(0), + O => \fsm_tx__0\(0) + ); +\FSM_sequential_fsm_tx[1]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"3F703F7C3F7C0F70" + ) + port map ( + I0 => \FSM_sequential_fsm_tx[1]_i_2__1_n_0\, + I1 => fsm_tx(0), + I2 => fsm_tx(1), + I3 => fsm_tx(2), + I4 => txeq_control_reg2(1), + I5 => txeq_control_reg2(0), + O => \fsm_tx__0\(1) + ); +\FSM_sequential_fsm_tx[1]_i_2__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + O => \FSM_sequential_fsm_tx[1]_i_2__1_n_0\ + ); +\FSM_sequential_fsm_tx[2]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"3A2A2A227F7F7F77" + ) + port map ( + I0 => fsm_tx(2), + I1 => fsm_tx(1), + I2 => fsm_tx(0), + I3 => txeq_control_reg2(1), + I4 => txeq_control_reg2(0), + I5 => \FSM_sequential_fsm_tx[2]_i_2__1_n_0\, + O => \fsm_tx__0\(2) + ); +\FSM_sequential_fsm_tx[2]_i_2__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"D0FFDFFF" + ) + port map ( + I0 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I2 => fsm_tx(0), + I3 => fsm_tx(1), + I4 => txeq_preset_done, + O => \FSM_sequential_fsm_tx[2]_i_2__1_n_0\ + ); +\FSM_sequential_fsm_tx_reg[0]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fsm_tx__0\(0), + Q => fsm_tx(0), + S => RST_CPLLRESET + ); +\FSM_sequential_fsm_tx_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fsm_tx__0\(1), + Q => fsm_tx(1), + R => RST_CPLLRESET + ); +\FSM_sequential_fsm_tx_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fsm_tx__0\(2), + Q => fsm_tx(2), + R => RST_CPLLRESET + ); +gen3_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rate_gen3_2, + Q => gen3_reg1, + R => RST_CPLLRESET + ); +gen3_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => gen3_reg1, + Q => gen3_reg2, + R => RST_CPLLRESET + ); +\gtx_channel.gtxe2_channel_i_i_22__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[17]\, + O => TXPOSTCURSOR(4) + ); +\gtx_channel.gtxe2_channel_i_i_23__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[16]\, + O => TXPOSTCURSOR(3) + ); +\gtx_channel.gtxe2_channel_i_i_24__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[15]\, + O => TXPOSTCURSOR(2) + ); +\gtx_channel.gtxe2_channel_i_i_25__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[14]\, + O => TXPOSTCURSOR(1) + ); +\gtx_channel.gtxe2_channel_i_i_26__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[13]\, + O => TXPOSTCURSOR(0) + ); +\gtx_channel.gtxe2_channel_i_i_27__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[4]\, + O => TXPRECURSOR(4) + ); +\gtx_channel.gtxe2_channel_i_i_28__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[3]\, + O => TXPRECURSOR(3) + ); +\gtx_channel.gtxe2_channel_i_i_29__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[2]\, + O => TXPRECURSOR(2) + ); +\gtx_channel.gtxe2_channel_i_i_30__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[1]\, + O => TXPRECURSOR(1) + ); +\gtx_channel.gtxe2_channel_i_i_31__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[0]\, + I1 => gen3_reg2, + O => TXPRECURSOR(0) + ); +\gtx_channel.gtxe2_channel_i_i_32__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[12]\, + O => TXMAINCURSOR(6) + ); +\gtx_channel.gtxe2_channel_i_i_33__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[11]\, + O => TXMAINCURSOR(5) + ); +\gtx_channel.gtxe2_channel_i_i_34__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[10]\, + O => TXMAINCURSOR(4) + ); +\gtx_channel.gtxe2_channel_i_i_35__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[9]\, + O => TXMAINCURSOR(3) + ); +\gtx_channel.gtxe2_channel_i_i_36__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[8]\, + O => TXMAINCURSOR(2) + ); +\gtx_channel.gtxe2_channel_i_i_37__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[7]\, + O => TXMAINCURSOR(1) + ); +\gtx_channel.gtxe2_channel_i_i_38__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[6]\, + O => TXMAINCURSOR(0) + ); +\rxeq_adapt_done_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFEFFFFFFFF" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[5]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + I3 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I4 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I5 => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + O => \rxeq_adapt_done_i_2__1_n_0\ + ); +rxeq_adapt_done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_scan_i_n_5, + Q => \^user_rxeq_adapt_done\, + R => RST_CPLLRESET + ); +\rxeq_adapt_done_reg_i_2__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"08" + ) + port map ( + I0 => rxeq_control_reg2(0), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I2 => rxeq_control_reg2(1), + O => \rxeq_adapt_done_reg_i_2__1_n_0\ + ); +rxeq_adapt_done_reg_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_scan_i_n_4, + Q => rxeq_adapt_done_reg_reg_n_0, + R => RST_CPLLRESET + ); +\rxeq_cnt[0]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"8888FFF8" + ) + port map ( + I0 => rxeq_control_reg2(1), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I3 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I4 => \rxeq_cnt_reg_n_0_[0]\, + O => rxeq_cnt(0) + ); +\rxeq_cnt[1]_i_1__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"6660" + ) + port map ( + I0 => \rxeq_cnt_reg_n_0_[0]\, + I1 => \rxeq_cnt_reg_n_0_[1]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I3 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + O => rxeq_cnt(1) + ); +\rxeq_cnt[2]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"78787800" + ) + port map ( + I0 => \rxeq_cnt_reg_n_0_[1]\, + I1 => \rxeq_cnt_reg_n_0_[0]\, + I2 => \rxeq_cnt_reg_n_0_[2]\, + I3 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I4 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + O => rxeq_cnt(2) + ); +\rxeq_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_cnt(0), + Q => \rxeq_cnt_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\rxeq_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_cnt(1), + Q => \rxeq_cnt_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\rxeq_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_cnt(2), + Q => \rxeq_cnt_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\rxeq_control_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_control_reg1(0), + R => RST_CPLLRESET + ); +\rxeq_control_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_control_reg1(1), + R => RST_CPLLRESET + ); +\rxeq_control_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_control_reg1(0), + Q => rxeq_control_reg2(0), + R => RST_CPLLRESET + ); +\rxeq_control_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_control_reg1(1), + Q => rxeq_control_reg2(1), + R => RST_CPLLRESET + ); +\rxeq_fs[0]_i_1__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => rxeq_lffs_reg2(0), + O => rxeq_fs(0) + ); +\rxeq_fs[1]_i_1__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => rxeq_lffs_reg2(1), + O => rxeq_fs(1) + ); +\rxeq_fs[2]_i_1__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => rxeq_lffs_reg2(2), + O => rxeq_fs(2) + ); +\rxeq_fs[3]_i_1__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => rxeq_lffs_reg2(3), + O => rxeq_fs(3) + ); +\rxeq_fs[4]_i_1__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => rxeq_lffs_reg2(4), + O => rxeq_fs(4) + ); +\rxeq_fs[5]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"F8" + ) + port map ( + I0 => rxeq_control_reg2(1), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I2 => \FSM_onehot_fsm_rx[1]_i_2__1_n_0\, + O => \rxeq_fs[5]_i_1__1_n_0\ + ); +\rxeq_fs[5]_i_2__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => rxeq_lffs_reg2(5), + O => rxeq_fs(5) + ); +\rxeq_fs_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_fs[5]_i_1__1_n_0\, + D => rxeq_fs(0), + Q => \rxeq_fs_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\rxeq_fs_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_fs[5]_i_1__1_n_0\, + D => rxeq_fs(1), + Q => \rxeq_fs_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\rxeq_fs_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_fs[5]_i_1__1_n_0\, + D => rxeq_fs(2), + Q => \rxeq_fs_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\rxeq_fs_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_fs[5]_i_1__1_n_0\, + D => rxeq_fs(3), + Q => \rxeq_fs_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\rxeq_fs_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_fs[5]_i_1__1_n_0\, + D => rxeq_fs(4), + Q => \rxeq_fs_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\rxeq_fs_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_fs[5]_i_1__1_n_0\, + D => rxeq_fs(5), + Q => \rxeq_fs_reg_n_0_[5]\, + R => RST_CPLLRESET + ); +\rxeq_lf[0]_i_1__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => rxeq_lffs_reg2(0), + O => rxeq_lf(0) + ); +\rxeq_lf[1]_i_1__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => rxeq_lffs_reg2(1), + O => rxeq_lf(1) + ); +\rxeq_lf[2]_i_1__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => rxeq_lffs_reg2(2), + O => rxeq_lf(2) + ); +\rxeq_lf[3]_i_1__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => rxeq_lffs_reg2(3), + O => rxeq_lf(3) + ); +\rxeq_lf[4]_i_1__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => rxeq_lffs_reg2(4), + O => rxeq_lf(4) + ); +\rxeq_lf[5]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"EAAAAAAA" + ) + port map ( + I0 => \FSM_onehot_fsm_rx[1]_i_2__1_n_0\, + I1 => \rxeq_cnt_reg_n_0_[2]\, + I2 => \rxeq_cnt_reg_n_0_[0]\, + I3 => \rxeq_cnt_reg_n_0_[1]\, + I4 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + O => \rxeq_lf[5]_i_1__1_n_0\ + ); +\rxeq_lf[5]_i_2__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => rxeq_lffs_reg2(5), + O => rxeq_lf(5) + ); +\rxeq_lf_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_lf[5]_i_1__1_n_0\, + D => rxeq_lf(0), + Q => \rxeq_lf_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\rxeq_lf_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_lf[5]_i_1__1_n_0\, + D => rxeq_lf(1), + Q => \rxeq_lf_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\rxeq_lf_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_lf[5]_i_1__1_n_0\, + D => rxeq_lf(2), + Q => \rxeq_lf_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\rxeq_lf_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_lf[5]_i_1__1_n_0\, + D => rxeq_lf(3), + Q => \rxeq_lf_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\rxeq_lf_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_lf[5]_i_1__1_n_0\, + D => rxeq_lf(4), + Q => \rxeq_lf_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\rxeq_lf_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_lf[5]_i_1__1_n_0\, + D => rxeq_lf(5), + Q => \rxeq_lf_reg_n_0_[5]\, + R => RST_CPLLRESET + ); +\rxeq_lffs_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_lffs_reg1(0), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_lffs_reg1(1), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_lffs_reg1(2), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_lffs_reg1(3), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_lffs_reg1(4), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_lffs_reg1(5), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_lffs_reg1(0), + Q => rxeq_lffs_reg2(0), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_lffs_reg1(1), + Q => rxeq_lffs_reg2(1), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_lffs_reg1(2), + Q => rxeq_lffs_reg2(2), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_lffs_reg1(3), + Q => rxeq_lffs_reg2(3), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_lffs_reg1(4), + Q => rxeq_lffs_reg2(4), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_lffs_reg1(5), + Q => rxeq_lffs_reg2(5), + R => RST_CPLLRESET + ); +rxeq_new_txcoeff_req_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_new_txcoeff_req, + Q => rxeq_new_txcoeff_req_reg_n_0, + R => RST_CPLLRESET + ); +\rxeq_preset[0]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"A8FFA800" + ) + port map ( + I0 => rxeq_preset_reg2(0), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I3 => \rxeq_preset[2]_i_2__1_n_0\, + I4 => \rxeq_preset_reg_n_0_[0]\, + O => \rxeq_preset[0]_i_1__1_n_0\ + ); +\rxeq_preset[1]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"A8FFA800" + ) + port map ( + I0 => rxeq_preset_reg2(1), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I3 => \rxeq_preset[2]_i_2__1_n_0\, + I4 => \rxeq_preset_reg_n_0_[1]\, + O => \rxeq_preset[1]_i_1__1_n_0\ + ); +\rxeq_preset[2]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"A8FFA800" + ) + port map ( + I0 => rxeq_preset_reg2(2), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I3 => \rxeq_preset[2]_i_2__1_n_0\, + I4 => \rxeq_preset_reg_n_0_[2]\, + O => \rxeq_preset[2]_i_1__1_n_0\ + ); +\rxeq_preset[2]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFFFF0002" + ) + port map ( + I0 => \rxeq_preset[2]_i_3__1_n_0\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I3 => \FSM_onehot_fsm_rx_reg_n_0_[5]\, + I4 => \rxeq_adapt_done_reg_i_2__1_n_0\, + I5 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + O => \rxeq_preset[2]_i_2__1_n_0\ + ); +\rxeq_preset[2]_i_3__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"1" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + O => \rxeq_preset[2]_i_3__1_n_0\ + ); +\rxeq_preset_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_preset_reg1(0), + R => RST_CPLLRESET + ); +\rxeq_preset_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_preset_reg1(1), + R => RST_CPLLRESET + ); +\rxeq_preset_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_preset_reg1(2), + R => RST_CPLLRESET + ); +\rxeq_preset_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_preset_reg1(0), + Q => rxeq_preset_reg2(0), + R => RST_CPLLRESET + ); +\rxeq_preset_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_preset_reg1(1), + Q => rxeq_preset_reg2(1), + R => RST_CPLLRESET + ); +\rxeq_preset_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_preset_reg1(2), + Q => rxeq_preset_reg2(2), + R => RST_CPLLRESET + ); +\rxeq_preset_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rxeq_preset[0]_i_1__1_n_0\, + Q => \rxeq_preset_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\rxeq_preset_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rxeq_preset[1]_i_1__1_n_0\, + Q => \rxeq_preset_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\rxeq_preset_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rxeq_preset[2]_i_1__1_n_0\, + Q => \rxeq_preset_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +rxeq_preset_valid_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + Q => rxeq_preset_valid, + R => RST_CPLLRESET + ); +rxeq_scan_i: entity work.pcie_7x_0_pcie_7x_0_rxeq_scan_55 + port map ( + D(2) => rxeq_scan_i_n_0, + D(1) => rxeq_scan_i_n_1, + D(0) => rxeq_scan_i_n_2, + \FSM_onehot_fsm_rx_reg[5]\(2) => \rxeq_cnt_reg_n_0_[2]\, + \FSM_onehot_fsm_rx_reg[5]\(1) => \rxeq_cnt_reg_n_0_[1]\, + \FSM_onehot_fsm_rx_reg[5]\(0) => \rxeq_cnt_reg_n_0_[0]\, + Q(4) => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + Q(3) => \FSM_onehot_fsm_rx_reg_n_0_[5]\, + Q(2) => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + Q(1) => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + Q(0) => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + RST_CPLLRESET => RST_CPLLRESET, + USER_RXEQ_ADAPT_DONE => \^user_rxeq_adapt_done\, + adapt_done_reg_0 => rxeq_scan_i_n_4, + \fs_reg1_reg[5]_0\(5) => \rxeq_fs_reg_n_0_[5]\, + \fs_reg1_reg[5]_0\(4) => \rxeq_fs_reg_n_0_[4]\, + \fs_reg1_reg[5]_0\(3) => \rxeq_fs_reg_n_0_[3]\, + \fs_reg1_reg[5]_0\(2) => \rxeq_fs_reg_n_0_[2]\, + \fs_reg1_reg[5]_0\(1) => \rxeq_fs_reg_n_0_[1]\, + \fs_reg1_reg[5]_0\(0) => \rxeq_fs_reg_n_0_[0]\, + \lf_reg1_reg[5]_0\(5) => \rxeq_lf_reg_n_0_[5]\, + \lf_reg1_reg[5]_0\(4) => \rxeq_lf_reg_n_0_[4]\, + \lf_reg1_reg[5]_0\(3) => \rxeq_lf_reg_n_0_[3]\, + \lf_reg1_reg[5]_0\(2) => \rxeq_lf_reg_n_0_[2]\, + \lf_reg1_reg[5]_0\(1) => \rxeq_lf_reg_n_0_[1]\, + \lf_reg1_reg[5]_0\(0) => \rxeq_lf_reg_n_0_[0]\, + new_txcoeff_done_reg_0 => rxeq_scan_i_n_5, + new_txcoeff_req_reg1_reg_0 => rxeq_new_txcoeff_req_reg_n_0, + \out\(1 downto 0) => rxeq_control_reg2(1 downto 0), + pipe_pclk_in => pipe_pclk_in, + \preset_reg1_reg[2]_0\(2) => \rxeq_preset_reg_n_0_[2]\, + \preset_reg1_reg[2]_0\(1) => \rxeq_preset_reg_n_0_[1]\, + \preset_reg1_reg[2]_0\(0) => \rxeq_preset_reg_n_0_[0]\, + rxeq_adapt_done_reg => \rxeq_adapt_done_i_2__1_n_0\, + rxeq_adapt_done_reg_reg => \FSM_onehot_fsm_rx[1]_i_2__1_n_0\, + rxeq_adapt_done_reg_reg_0 => \rxeq_adapt_done_reg_i_2__1_n_0\, + rxeq_adapt_done_reg_reg_1 => rxeq_adapt_done_reg_reg_n_0, + rxeq_new_txcoeff_req => rxeq_new_txcoeff_req, + rxeq_preset_valid => rxeq_preset_valid, + \txcoeff_reg1_reg[17]_0\(17) => \rxeq_txcoeff_reg_n_0_[17]\, + \txcoeff_reg1_reg[17]_0\(16) => \rxeq_txcoeff_reg_n_0_[16]\, + \txcoeff_reg1_reg[17]_0\(15) => \rxeq_txcoeff_reg_n_0_[15]\, + \txcoeff_reg1_reg[17]_0\(14) => \rxeq_txcoeff_reg_n_0_[14]\, + \txcoeff_reg1_reg[17]_0\(13) => \rxeq_txcoeff_reg_n_0_[13]\, + \txcoeff_reg1_reg[17]_0\(12) => \rxeq_txcoeff_reg_n_0_[12]\, + \txcoeff_reg1_reg[17]_0\(11) => \rxeq_txcoeff_reg_n_0_[11]\, + \txcoeff_reg1_reg[17]_0\(10) => \rxeq_txcoeff_reg_n_0_[10]\, + \txcoeff_reg1_reg[17]_0\(9) => \rxeq_txcoeff_reg_n_0_[9]\, + \txcoeff_reg1_reg[17]_0\(8) => \rxeq_txcoeff_reg_n_0_[8]\, + \txcoeff_reg1_reg[17]_0\(7) => \rxeq_txcoeff_reg_n_0_[7]\, + \txcoeff_reg1_reg[17]_0\(6) => \rxeq_txcoeff_reg_n_0_[6]\, + \txcoeff_reg1_reg[17]_0\(5) => \rxeq_txcoeff_reg_n_0_[5]\, + \txcoeff_reg1_reg[17]_0\(4) => \rxeq_txcoeff_reg_n_0_[4]\, + \txcoeff_reg1_reg[17]_0\(3) => \rxeq_txcoeff_reg_n_0_[3]\, + \txcoeff_reg1_reg[17]_0\(2) => \rxeq_txcoeff_reg_n_0_[2]\, + \txcoeff_reg1_reg[17]_0\(1) => \rxeq_txcoeff_reg_n_0_[1]\, + \txcoeff_reg1_reg[17]_0\(0) => \rxeq_txcoeff_reg_n_0_[0]\, + \txpreset_reg1_reg[3]_0\(3) => \rxeq_txpreset_reg_n_0_[3]\, + \txpreset_reg1_reg[3]_0\(2) => \rxeq_txpreset_reg_n_0_[2]\, + \txpreset_reg1_reg[3]_0\(1) => \rxeq_txpreset_reg_n_0_[1]\, + \txpreset_reg1_reg[3]_0\(0) => \rxeq_txpreset_reg_n_0_[0]\ + ); +\rxeq_txcoeff[0]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[6]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(0) + ); +\rxeq_txcoeff[10]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[16]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(10) + ); +\rxeq_txcoeff[11]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[17]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(11) + ); +\rxeq_txcoeff[12]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => txeq_deemph_reg2(0), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(12) + ); +\rxeq_txcoeff[13]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => txeq_deemph_reg2(1), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(13) + ); +\rxeq_txcoeff[14]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => txeq_deemph_reg2(2), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(14) + ); +\rxeq_txcoeff[15]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => txeq_deemph_reg2(3), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(15) + ); +\rxeq_txcoeff[16]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => txeq_deemph_reg2(4), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(16) + ); +\rxeq_txcoeff[17]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => txeq_deemph_reg2(5), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(17) + ); +\rxeq_txcoeff[1]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[7]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(1) + ); +\rxeq_txcoeff[2]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[8]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(2) + ); +\rxeq_txcoeff[3]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[9]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(3) + ); +\rxeq_txcoeff[4]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[10]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(4) + ); +\rxeq_txcoeff[5]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[11]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(5) + ); +\rxeq_txcoeff[6]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[12]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(6) + ); +\rxeq_txcoeff[7]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[13]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(7) + ); +\rxeq_txcoeff[8]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[14]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(8) + ); +\rxeq_txcoeff[9]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[15]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(9) + ); +\rxeq_txcoeff_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__1_n_0\, + D => rxeq_txcoeff(0), + Q => \rxeq_txcoeff_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__1_n_0\, + D => rxeq_txcoeff(10), + Q => \rxeq_txcoeff_reg_n_0_[10]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__1_n_0\, + D => rxeq_txcoeff(11), + Q => \rxeq_txcoeff_reg_n_0_[11]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__1_n_0\, + D => rxeq_txcoeff(12), + Q => \rxeq_txcoeff_reg_n_0_[12]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__1_n_0\, + D => rxeq_txcoeff(13), + Q => \rxeq_txcoeff_reg_n_0_[13]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__1_n_0\, + D => rxeq_txcoeff(14), + Q => \rxeq_txcoeff_reg_n_0_[14]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__1_n_0\, + D => rxeq_txcoeff(15), + Q => \rxeq_txcoeff_reg_n_0_[15]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[16]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__1_n_0\, + D => rxeq_txcoeff(16), + Q => \rxeq_txcoeff_reg_n_0_[16]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[17]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__1_n_0\, + D => rxeq_txcoeff(17), + Q => \rxeq_txcoeff_reg_n_0_[17]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__1_n_0\, + D => rxeq_txcoeff(1), + Q => \rxeq_txcoeff_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__1_n_0\, + D => rxeq_txcoeff(2), + Q => \rxeq_txcoeff_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__1_n_0\, + D => rxeq_txcoeff(3), + Q => \rxeq_txcoeff_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__1_n_0\, + D => rxeq_txcoeff(4), + Q => \rxeq_txcoeff_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__1_n_0\, + D => rxeq_txcoeff(5), + Q => \rxeq_txcoeff_reg_n_0_[5]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__1_n_0\, + D => rxeq_txcoeff(6), + Q => \rxeq_txcoeff_reg_n_0_[6]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__1_n_0\, + D => rxeq_txcoeff(7), + Q => \rxeq_txcoeff_reg_n_0_[7]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__1_n_0\, + D => rxeq_txcoeff(8), + Q => \rxeq_txcoeff_reg_n_0_[8]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__1_n_0\, + D => rxeq_txcoeff(9), + Q => \rxeq_txcoeff_reg_n_0_[9]\, + R => RST_CPLLRESET + ); +\rxeq_txpreset[0]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => rxeq_txpreset_reg2(0), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txpreset(0) + ); +\rxeq_txpreset[1]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => rxeq_txpreset_reg2(1), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txpreset(1) + ); +\rxeq_txpreset[2]_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => rxeq_txpreset_reg2(2), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txpreset(2) + ); +\rxeq_txpreset[3]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFFF404" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + I1 => \rxeq_txpreset[3]_i_3__1_n_0\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I3 => rxeq_control_reg2(1), + I4 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + O => \rxeq_txpreset[3]_i_1__1_n_0\ + ); +\rxeq_txpreset[3]_i_2__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => rxeq_txpreset_reg2(3), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txpreset(3) + ); +\rxeq_txpreset[3]_i_3__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"01" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[5]\, + O => \rxeq_txpreset[3]_i_3__1_n_0\ + ); +\rxeq_txpreset_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_txpreset_reg1(0), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_txpreset_reg1(1), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_txpreset_reg1(2), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_txpreset_reg1(3), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_txpreset_reg1(0), + Q => rxeq_txpreset_reg2(0), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_txpreset_reg1(1), + Q => rxeq_txpreset_reg2(1), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_txpreset_reg1(2), + Q => rxeq_txpreset_reg2(2), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_txpreset_reg1(3), + Q => rxeq_txpreset_reg2(3), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__1_n_0\, + D => rxeq_txpreset(0), + Q => \rxeq_txpreset_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__1_n_0\, + D => rxeq_txpreset(1), + Q => \rxeq_txpreset_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__1_n_0\, + D => rxeq_txpreset(2), + Q => \rxeq_txpreset_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__1_n_0\, + D => rxeq_txpreset(3), + Q => \rxeq_txpreset_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +rxeq_user_en_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_en_reg1, + R => RST_CPLLRESET + ); +rxeq_user_en_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_en_reg1, + Q => rxeq_user_en_reg2, + R => RST_CPLLRESET + ); +rxeq_user_mode_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_mode_reg1, + R => RST_CPLLRESET + ); +rxeq_user_mode_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_mode_reg1, + Q => rxeq_user_mode_reg2, + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(0), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(10), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(11), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(12), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(13), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(14), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(15), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[16]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(16), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[17]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(17), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(1), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(2), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(3), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(4), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(5), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(6), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(7), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(8), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(9), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(0), + Q => rxeq_user_txcoeff_reg2(0), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(10), + Q => rxeq_user_txcoeff_reg2(10), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(11), + Q => rxeq_user_txcoeff_reg2(11), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(12), + Q => rxeq_user_txcoeff_reg2(12), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(13), + Q => rxeq_user_txcoeff_reg2(13), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(14), + Q => rxeq_user_txcoeff_reg2(14), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(15), + Q => rxeq_user_txcoeff_reg2(15), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[16]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(16), + Q => rxeq_user_txcoeff_reg2(16), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[17]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(17), + Q => rxeq_user_txcoeff_reg2(17), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(1), + Q => rxeq_user_txcoeff_reg2(1), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(2), + Q => rxeq_user_txcoeff_reg2(2), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(3), + Q => rxeq_user_txcoeff_reg2(3), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(4), + Q => rxeq_user_txcoeff_reg2(4), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(5), + Q => rxeq_user_txcoeff_reg2(5), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(6), + Q => rxeq_user_txcoeff_reg2(6), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(7), + Q => rxeq_user_txcoeff_reg2(7), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(8), + Q => rxeq_user_txcoeff_reg2(8), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(9), + Q => rxeq_user_txcoeff_reg2(9), + R => RST_CPLLRESET + ); +\txeq_control_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_control_reg1(0), + R => RST_CPLLRESET + ); +\txeq_control_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_control_reg1(1), + R => RST_CPLLRESET + ); +\txeq_control_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_control_reg1(0), + Q => txeq_control_reg2(0), + R => RST_CPLLRESET + ); +\txeq_control_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_control_reg1(1), + Q => txeq_control_reg2(1), + R => RST_CPLLRESET + ); +\txeq_deemph_reg1_reg[0]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_deemph_reg1(0), + S => RST_CPLLRESET + ); +\txeq_deemph_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_deemph_reg1(1), + R => RST_CPLLRESET + ); +\txeq_deemph_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_deemph_reg1(2), + R => RST_CPLLRESET + ); +\txeq_deemph_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_deemph_reg1(3), + R => RST_CPLLRESET + ); +\txeq_deemph_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_deemph_reg1(4), + R => RST_CPLLRESET + ); +\txeq_deemph_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_deemph_reg1(5), + R => RST_CPLLRESET + ); +\txeq_deemph_reg2_reg[0]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_deemph_reg1(0), + Q => txeq_deemph_reg2(0), + S => RST_CPLLRESET + ); +\txeq_deemph_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_deemph_reg1(1), + Q => txeq_deemph_reg2(1), + R => RST_CPLLRESET + ); +\txeq_deemph_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_deemph_reg1(2), + Q => txeq_deemph_reg2(2), + R => RST_CPLLRESET + ); +\txeq_deemph_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_deemph_reg1(3), + Q => txeq_deemph_reg2(3), + R => RST_CPLLRESET + ); +\txeq_deemph_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_deemph_reg1(4), + Q => txeq_deemph_reg2(4), + R => RST_CPLLRESET + ); +\txeq_deemph_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_deemph_reg1(5), + Q => txeq_deemph_reg2(5), + R => RST_CPLLRESET + ); +\txeq_preset[0]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00001000" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(2), + I2 => txeq_preset_reg2(0), + I3 => txeq_preset_reg2(3), + I4 => txeq_preset_reg2(1), + O => p_0_out(0) + ); +\txeq_preset[10]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"ABEAABAF" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(2), + I2 => txeq_preset_reg2(0), + I3 => txeq_preset_reg2(3), + I4 => txeq_preset_reg2(1), + O => p_0_out(10) + ); +\txeq_preset[11]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFF200D" + ) + port map ( + I0 => txeq_preset_reg2(1), + I1 => txeq_preset_reg2(3), + I2 => txeq_preset_reg2(2), + I3 => txeq_preset_reg2(0), + I4 => RST_CPLLRESET, + O => p_0_out(11) + ); +\txeq_preset[12]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"01151110" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(3), + I2 => txeq_preset_reg2(1), + I3 => txeq_preset_reg2(2), + I4 => txeq_preset_reg2(0), + O => p_0_out(12) + ); +\txeq_preset[13]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"01000010" + ) + port map ( + I0 => txeq_preset_reg2(2), + I1 => RST_CPLLRESET, + I2 => txeq_preset_reg2(0), + I3 => txeq_preset_reg2(3), + I4 => txeq_preset_reg2(1), + O => p_0_out(13) + ); +\txeq_preset[14]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"01000010" + ) + port map ( + I0 => txeq_preset_reg2(2), + I1 => RST_CPLLRESET, + I2 => txeq_preset_reg2(3), + I3 => txeq_preset_reg2(1), + I4 => txeq_preset_reg2(0), + O => p_0_out(14) + ); +\txeq_preset[15]_i_1__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"F0F1" + ) + port map ( + I0 => txeq_preset_reg2(2), + I1 => txeq_preset_reg2(1), + I2 => RST_CPLLRESET, + I3 => txeq_preset_reg2(3), + O => p_0_out(15) + ); +\txeq_preset[16]_i_1__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0006" + ) + port map ( + I0 => txeq_preset_reg2(3), + I1 => txeq_preset_reg2(0), + I2 => txeq_preset_reg2(2), + I3 => RST_CPLLRESET, + O => p_0_out(16) + ); +\txeq_preset[17]_i_1__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AABA" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => fsm_tx(0), + I2 => fsm_tx(1), + I3 => fsm_tx(2), + O => \txeq_preset[17]_i_1__1_n_0\ + ); +\txeq_preset[17]_i_2__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFF400D" + ) + port map ( + I0 => txeq_preset_reg2(3), + I1 => txeq_preset_reg2(1), + I2 => txeq_preset_reg2(2), + I3 => txeq_preset_reg2(0), + I4 => RST_CPLLRESET, + O => p_0_out(17) + ); +\txeq_preset[1]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00001004" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(3), + I2 => txeq_preset_reg2(1), + I3 => txeq_preset_reg2(2), + I4 => txeq_preset_reg2(0), + O => p_0_out(1) + ); +\txeq_preset[2]_i_1__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0E00" + ) + port map ( + I0 => txeq_preset_reg2(2), + I1 => txeq_preset_reg2(0), + I2 => RST_CPLLRESET, + I3 => txeq_preset_reg2(3), + O => p_0_out(2) + ); +\txeq_preset[3]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"01440140" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(2), + I2 => txeq_preset_reg2(1), + I3 => txeq_preset_reg2(3), + I4 => txeq_preset_reg2(0), + O => \txeq_preset[3]_i_1__1_n_0\ + ); +\txeq_preset[7]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00001400" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(0), + I2 => txeq_preset_reg2(2), + I3 => txeq_preset_reg2(1), + I4 => txeq_preset_reg2(3), + O => \txeq_preset[7]_i_1__1_n_0\ + ); +\txeq_preset[8]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"AAAFBEAF" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(0), + I2 => txeq_preset_reg2(2), + I3 => txeq_preset_reg2(1), + I4 => txeq_preset_reg2(3), + O => p_0_out(8) + ); +\txeq_preset[9]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"CCFCCFCD" + ) + port map ( + I0 => txeq_preset_reg2(1), + I1 => RST_CPLLRESET, + I2 => txeq_preset_reg2(2), + I3 => txeq_preset_reg2(3), + I4 => txeq_preset_reg2(0), + O => p_0_out(9) + ); +\txeq_preset_done_i_1__1\: unisim.vcomponents.LUT3 + generic map( + INIT => X"04" + ) + port map ( + I0 => fsm_tx(2), + I1 => fsm_tx(1), + I2 => fsm_tx(0), + O => \txeq_preset_done_i_1__1_n_0\ + ); +txeq_preset_done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txeq_preset_done_i_1__1_n_0\, + Q => txeq_preset_done, + R => RST_CPLLRESET + ); +\txeq_preset_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_preset_reg1(0), + R => RST_CPLLRESET + ); +\txeq_preset_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_preset_reg1(1), + R => RST_CPLLRESET + ); +\txeq_preset_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_preset_reg1(2), + R => RST_CPLLRESET + ); +\txeq_preset_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_preset_reg1(3), + R => RST_CPLLRESET + ); +\txeq_preset_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_preset_reg1(0), + Q => txeq_preset_reg2(0), + R => RST_CPLLRESET + ); +\txeq_preset_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_preset_reg1(1), + Q => txeq_preset_reg2(1), + R => RST_CPLLRESET + ); +\txeq_preset_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_preset_reg1(2), + Q => txeq_preset_reg2(2), + R => RST_CPLLRESET + ); +\txeq_preset_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_preset_reg1(3), + Q => txeq_preset_reg2(3), + R => RST_CPLLRESET + ); +\txeq_preset_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__1_n_0\, + D => p_0_out(0), + Q => \txeq_preset_reg_n_0_[0]\, + R => '0' + ); +\txeq_preset_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__1_n_0\, + D => p_0_out(10), + Q => \txeq_preset_reg_n_0_[10]\, + R => '0' + ); +\txeq_preset_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__1_n_0\, + D => p_0_out(11), + Q => \txeq_preset_reg_n_0_[11]\, + R => '0' + ); +\txeq_preset_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__1_n_0\, + D => p_0_out(12), + Q => \txeq_preset_reg_n_0_[12]\, + R => '0' + ); +\txeq_preset_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__1_n_0\, + D => p_0_out(13), + Q => \txeq_preset_reg_n_0_[13]\, + R => '0' + ); +\txeq_preset_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__1_n_0\, + D => p_0_out(14), + Q => \txeq_preset_reg_n_0_[14]\, + R => '0' + ); +\txeq_preset_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__1_n_0\, + D => p_0_out(15), + Q => \txeq_preset_reg_n_0_[15]\, + R => '0' + ); +\txeq_preset_reg[16]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__1_n_0\, + D => p_0_out(16), + Q => \txeq_preset_reg_n_0_[16]\, + R => '0' + ); +\txeq_preset_reg[17]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__1_n_0\, + D => p_0_out(17), + Q => \txeq_preset_reg_n_0_[17]\, + R => '0' + ); +\txeq_preset_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__1_n_0\, + D => p_0_out(1), + Q => \txeq_preset_reg_n_0_[1]\, + R => '0' + ); +\txeq_preset_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__1_n_0\, + D => p_0_out(2), + Q => \txeq_preset_reg_n_0_[2]\, + R => '0' + ); +\txeq_preset_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__1_n_0\, + D => \txeq_preset[3]_i_1__1_n_0\, + Q => \txeq_preset_reg_n_0_[3]\, + R => '0' + ); +\txeq_preset_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__1_n_0\, + D => \txeq_preset[7]_i_1__1_n_0\, + Q => \txeq_preset_reg_n_0_[7]\, + R => '0' + ); +\txeq_preset_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__1_n_0\, + D => p_0_out(8), + Q => \txeq_preset_reg_n_0_[8]\, + R => '0' + ); +\txeq_preset_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__1_n_0\, + D => p_0_out(9), + Q => \txeq_preset_reg_n_0_[9]\, + R => '0' + ); +\txeq_txcoeff[0]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"45404040" + ) + port map ( + I0 => fsm_tx(2), + I1 => \txeq_txcoeff[0]_i_2__1_n_0\, + I2 => fsm_tx(1), + I3 => fsm_tx(0), + I4 => \txeq_txcoeff_reg_n_0_[6]\, + O => \txeq_txcoeff[0]_i_1__1_n_0\ + ); +\txeq_txcoeff[0]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[6]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[7]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[0]\, + O => \txeq_txcoeff[0]_i_2__1_n_0\ + ); +\txeq_txcoeff[10]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[9]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[10]_i_2__1_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[16]\, + O => \txeq_txcoeff[10]_i_1__1_n_0\ + ); +\txeq_txcoeff[10]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[16]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[17]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[10]\, + O => \txeq_txcoeff[10]_i_2__1_n_0\ + ); +\txeq_txcoeff[11]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[10]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[11]_i_2__1_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[17]\, + O => \txeq_txcoeff[11]_i_1__1_n_0\ + ); +\txeq_txcoeff[11]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[17]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[18]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[11]\, + O => \txeq_txcoeff[11]_i_2__1_n_0\ + ); +\txeq_txcoeff[12]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[11]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[12]_i_2__1_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[18]\, + O => \txeq_txcoeff[12]_i_1__1_n_0\ + ); +\txeq_txcoeff[12]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[18]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => txeq_deemph_reg2(0), + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[12]\, + O => \txeq_txcoeff[12]_i_2__1_n_0\ + ); +\txeq_txcoeff[13]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[12]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[13]_i_2__1_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => txeq_deemph_reg2(0), + O => \txeq_txcoeff[13]_i_1__1_n_0\ + ); +\txeq_txcoeff[13]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => txeq_deemph_reg2(0), + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => txeq_deemph_reg2(1), + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[13]\, + O => \txeq_txcoeff[13]_i_2__1_n_0\ + ); +\txeq_txcoeff[14]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[13]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[14]_i_2__1_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => txeq_deemph_reg2(1), + O => \txeq_txcoeff[14]_i_1__1_n_0\ + ); +\txeq_txcoeff[14]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => txeq_deemph_reg2(1), + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => txeq_deemph_reg2(2), + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[14]\, + O => \txeq_txcoeff[14]_i_2__1_n_0\ + ); +\txeq_txcoeff[15]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[14]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[15]_i_2__1_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => txeq_deemph_reg2(2), + O => \txeq_txcoeff[15]_i_1__1_n_0\ + ); +\txeq_txcoeff[15]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => txeq_deemph_reg2(2), + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => txeq_deemph_reg2(3), + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[15]\, + O => \txeq_txcoeff[15]_i_2__1_n_0\ + ); +\txeq_txcoeff[16]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[15]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[16]_i_2__1_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => txeq_deemph_reg2(3), + O => \txeq_txcoeff[16]_i_1__1_n_0\ + ); +\txeq_txcoeff[16]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => txeq_deemph_reg2(3), + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => txeq_deemph_reg2(4), + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[16]\, + O => \txeq_txcoeff[16]_i_2__1_n_0\ + ); +\txeq_txcoeff[17]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[16]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[17]_i_2__1_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => txeq_deemph_reg2(4), + O => \txeq_txcoeff[17]_i_1__1_n_0\ + ); +\txeq_txcoeff[17]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => txeq_deemph_reg2(4), + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => txeq_deemph_reg2(5), + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[17]\, + O => \txeq_txcoeff[17]_i_2__1_n_0\ + ); +\txeq_txcoeff[18]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FF040FFF" + ) + port map ( + I0 => txeq_control_reg2(0), + I1 => txeq_control_reg2(1), + I2 => fsm_tx(2), + I3 => fsm_tx(1), + I4 => fsm_tx(0), + O => txeq_txcoeff + ); +\txeq_txcoeff[18]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"22F3220022002200" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[17]\, + I1 => fsm_tx(1), + I2 => \txeq_txcoeff[18]_i_3__1_n_0\, + I3 => fsm_tx(2), + I4 => txeq_deemph_reg2(5), + I5 => fsm_tx(0), + O => \txeq_txcoeff[18]_i_2__1_n_0\ + ); +\txeq_txcoeff[18]_i_3__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"B" + ) + port map ( + I0 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + O => \txeq_txcoeff[18]_i_3__1_n_0\ + ); +\txeq_txcoeff[1]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[0]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[1]_i_2__1_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[7]\, + O => \txeq_txcoeff[1]_i_1__1_n_0\ + ); +\txeq_txcoeff[1]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[7]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[8]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[1]\, + O => \txeq_txcoeff[1]_i_2__1_n_0\ + ); +\txeq_txcoeff[2]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[1]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[2]_i_2__1_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[8]\, + O => \txeq_txcoeff[2]_i_1__1_n_0\ + ); +\txeq_txcoeff[2]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[8]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[9]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[2]\, + O => \txeq_txcoeff[2]_i_2__1_n_0\ + ); +\txeq_txcoeff[3]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[2]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[3]_i_2__1_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[9]\, + O => \txeq_txcoeff[3]_i_1__1_n_0\ + ); +\txeq_txcoeff[3]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[9]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[10]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[3]\, + O => \txeq_txcoeff[3]_i_2__1_n_0\ + ); +\txeq_txcoeff[4]_i_1__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"2F20" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[3]\, + I1 => fsm_tx(1), + I2 => fsm_tx(2), + I3 => \txeq_txcoeff[4]_i_2__1_n_0\, + O => \txeq_txcoeff[4]_i_1__1_n_0\ + ); +\txeq_txcoeff[4]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"CACCCCCC00000000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[11]\, + I1 => \txeq_txcoeff_reg_n_0_[10]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I3 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I4 => fsm_tx(1), + I5 => fsm_tx(0), + O => \txeq_txcoeff[4]_i_2__1_n_0\ + ); +\txeq_txcoeff[5]_i_1__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"2F20" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[4]\, + I1 => fsm_tx(1), + I2 => fsm_tx(2), + I3 => \txeq_txcoeff[5]_i_2__1_n_0\, + O => \txeq_txcoeff[5]_i_1__1_n_0\ + ); +\txeq_txcoeff[5]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"CACCCCCC00000000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[12]\, + I1 => \txeq_txcoeff_reg_n_0_[11]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I3 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I4 => fsm_tx(1), + I5 => fsm_tx(0), + O => \txeq_txcoeff[5]_i_2__1_n_0\ + ); +\txeq_txcoeff[6]_i_1__1\: unisim.vcomponents.LUT4 + generic map( + INIT => X"2F20" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[5]\, + I1 => fsm_tx(1), + I2 => fsm_tx(2), + I3 => \txeq_txcoeff[6]_i_2__1_n_0\, + O => \txeq_txcoeff[6]_i_1__1_n_0\ + ); +\txeq_txcoeff[6]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"CACCCCCC00000000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[13]\, + I1 => \txeq_txcoeff_reg_n_0_[12]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I3 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I4 => fsm_tx(1), + I5 => fsm_tx(0), + O => \txeq_txcoeff[6]_i_2__1_n_0\ + ); +\txeq_txcoeff[7]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[6]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[7]_i_2__1_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[13]\, + O => \txeq_txcoeff[7]_i_1__1_n_0\ + ); +\txeq_txcoeff[7]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[13]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[14]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[7]\, + O => \txeq_txcoeff[7]_i_2__1_n_0\ + ); +\txeq_txcoeff[8]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[7]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[8]_i_2__1_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[14]\, + O => \txeq_txcoeff[8]_i_1__1_n_0\ + ); +\txeq_txcoeff[8]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[14]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[15]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[8]\, + O => \txeq_txcoeff[8]_i_2__1_n_0\ + ); +\txeq_txcoeff[9]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[8]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[9]_i_2__1_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[15]\, + O => \txeq_txcoeff[9]_i_1__1_n_0\ + ); +\txeq_txcoeff[9]_i_2__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[15]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[16]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[9]\, + O => \txeq_txcoeff[9]_i_2__1_n_0\ + ); +\txeq_txcoeff_cnt[0]_i_1__1\: unisim.vcomponents.LUT6 + generic map( + INIT => X"000004000F000400" + ) + port map ( + I0 => txeq_control_reg2(0), + I1 => txeq_control_reg2(1), + I2 => fsm_tx(2), + I3 => fsm_tx(0), + I4 => fsm_tx(1), + I5 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + O => txeq_txcoeff_cnt(0) + ); +\txeq_txcoeff_cnt[1]_i_1__1\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00006000" + ) + port map ( + I0 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I2 => fsm_tx(0), + I3 => fsm_tx(1), + I4 => fsm_tx(2), + O => txeq_txcoeff_cnt(1) + ); +\txeq_txcoeff_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_txcoeff_cnt(0), + Q => \txeq_txcoeff_cnt_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_txcoeff_cnt(1), + Q => \txeq_txcoeff_cnt_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[0]_i_1__1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[10]_i_1__1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[10]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[11]_i_1__1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[11]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[12]_i_1__1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[12]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[13]_i_1__1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[13]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[14]_i_1__1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[14]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[15]_i_1__1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[15]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[16]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[16]_i_1__1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[16]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[17]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[17]_i_1__1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[17]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[18]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[18]_i_2__1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[18]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[1]_i_1__1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[2]_i_1__1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[3]_i_1__1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[4]_i_1__1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[5]_i_1__1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[5]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[6]_i_1__1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[6]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[7]_i_1__1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[7]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[8]_i_1__1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[8]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[9]_i_1__1_n_0\, + Q => \txeq_txcoeff_reg_n_0_[9]\, + R => RST_CPLLRESET + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pipe_eq_51 is + port ( + TXPRECURSOR : out STD_LOGIC_VECTOR ( 4 downto 0 ); + TXMAINCURSOR : out STD_LOGIC_VECTOR ( 6 downto 0 ); + TXPOSTCURSOR : out STD_LOGIC_VECTOR ( 4 downto 0 ); + USER_RXEQ_ADAPT_DONE : out STD_LOGIC; + RST_CPLLRESET : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + rate_gen3_3 : in STD_LOGIC + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pipe_eq_51 : entity is "pcie_7x_0_pipe_eq"; +end pcie_7x_0_pcie_7x_0_pipe_eq_51; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pipe_eq_51 is + signal \FSM_onehot_fsm_rx[1]_i_1__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx[1]_i_2__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx[3]_i_1__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx[4]_i_1__2_n_0\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx_reg_n_0_[1]\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx_reg_n_0_[2]\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx_reg_n_0_[3]\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx_reg_n_0_[4]\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx_reg_n_0_[5]\ : STD_LOGIC; + signal \FSM_onehot_fsm_rx_reg_n_0_[6]\ : STD_LOGIC; + signal \FSM_sequential_fsm_tx[1]_i_2__2_n_0\ : STD_LOGIC; + signal \FSM_sequential_fsm_tx[2]_i_2__2_n_0\ : STD_LOGIC; + signal \^user_rxeq_adapt_done\ : STD_LOGIC; + signal fsm_tx : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal \fsm_tx__0\ : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal gen3_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of gen3_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of gen3_reg1 : signal is "true"; + signal gen3_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of gen3_reg2 : signal is "NO"; + attribute async_reg of gen3_reg2 : signal is "true"; + signal p_0_out : STD_LOGIC_VECTOR ( 17 downto 0 ); + signal \rxeq_adapt_done_i_2__2_n_0\ : STD_LOGIC; + signal \rxeq_adapt_done_reg_i_2__2_n_0\ : STD_LOGIC; + signal rxeq_adapt_done_reg_reg_n_0 : STD_LOGIC; + signal rxeq_cnt : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal \rxeq_cnt_reg_n_0_[0]\ : STD_LOGIC; + signal \rxeq_cnt_reg_n_0_[1]\ : STD_LOGIC; + signal \rxeq_cnt_reg_n_0_[2]\ : STD_LOGIC; + signal rxeq_control_reg1 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_control_reg1 : signal is "NO"; + attribute async_reg of rxeq_control_reg1 : signal is "true"; + signal rxeq_control_reg2 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_control_reg2 : signal is "NO"; + attribute async_reg of rxeq_control_reg2 : signal is "true"; + signal rxeq_fs : STD_LOGIC_VECTOR ( 5 downto 0 ); + signal \rxeq_fs[5]_i_1__2_n_0\ : STD_LOGIC; + signal \rxeq_fs_reg_n_0_[0]\ : STD_LOGIC; + signal \rxeq_fs_reg_n_0_[1]\ : STD_LOGIC; + signal \rxeq_fs_reg_n_0_[2]\ : STD_LOGIC; + signal \rxeq_fs_reg_n_0_[3]\ : STD_LOGIC; + signal \rxeq_fs_reg_n_0_[4]\ : STD_LOGIC; + signal \rxeq_fs_reg_n_0_[5]\ : STD_LOGIC; + signal rxeq_lf : STD_LOGIC_VECTOR ( 5 downto 0 ); + signal \rxeq_lf[5]_i_1__2_n_0\ : STD_LOGIC; + signal \rxeq_lf_reg_n_0_[0]\ : STD_LOGIC; + signal \rxeq_lf_reg_n_0_[1]\ : STD_LOGIC; + signal \rxeq_lf_reg_n_0_[2]\ : STD_LOGIC; + signal \rxeq_lf_reg_n_0_[3]\ : STD_LOGIC; + signal \rxeq_lf_reg_n_0_[4]\ : STD_LOGIC; + signal \rxeq_lf_reg_n_0_[5]\ : STD_LOGIC; + signal rxeq_lffs_reg1 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_lffs_reg1 : signal is "NO"; + attribute async_reg of rxeq_lffs_reg1 : signal is "true"; + signal rxeq_lffs_reg2 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_lffs_reg2 : signal is "NO"; + attribute async_reg of rxeq_lffs_reg2 : signal is "true"; + signal rxeq_new_txcoeff_req : STD_LOGIC; + signal rxeq_new_txcoeff_req_reg_n_0 : STD_LOGIC; + signal \rxeq_preset[0]_i_1__2_n_0\ : STD_LOGIC; + signal \rxeq_preset[1]_i_1__2_n_0\ : STD_LOGIC; + signal \rxeq_preset[2]_i_1__2_n_0\ : STD_LOGIC; + signal \rxeq_preset[2]_i_2__2_n_0\ : STD_LOGIC; + signal \rxeq_preset[2]_i_3__2_n_0\ : STD_LOGIC; + signal rxeq_preset_reg1 : STD_LOGIC_VECTOR ( 2 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_preset_reg1 : signal is "NO"; + attribute async_reg of rxeq_preset_reg1 : signal is "true"; + signal rxeq_preset_reg2 : STD_LOGIC_VECTOR ( 2 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_preset_reg2 : signal is "NO"; + attribute async_reg of rxeq_preset_reg2 : signal is "true"; + signal \rxeq_preset_reg_n_0_[0]\ : STD_LOGIC; + signal \rxeq_preset_reg_n_0_[1]\ : STD_LOGIC; + signal \rxeq_preset_reg_n_0_[2]\ : STD_LOGIC; + signal rxeq_preset_valid : STD_LOGIC; + signal rxeq_scan_i_n_0 : STD_LOGIC; + signal rxeq_scan_i_n_1 : STD_LOGIC; + signal rxeq_scan_i_n_2 : STD_LOGIC; + signal rxeq_scan_i_n_4 : STD_LOGIC; + signal rxeq_scan_i_n_5 : STD_LOGIC; + signal rxeq_txcoeff : STD_LOGIC_VECTOR ( 17 downto 0 ); + signal \rxeq_txcoeff_reg_n_0_[0]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[10]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[11]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[12]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[13]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[14]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[15]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[16]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[17]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[1]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[2]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[3]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[4]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[5]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[6]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[7]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[8]\ : STD_LOGIC; + signal \rxeq_txcoeff_reg_n_0_[9]\ : STD_LOGIC; + signal rxeq_txpreset : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal \rxeq_txpreset[3]_i_1__2_n_0\ : STD_LOGIC; + signal \rxeq_txpreset[3]_i_3__2_n_0\ : STD_LOGIC; + signal rxeq_txpreset_reg1 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_txpreset_reg1 : signal is "NO"; + attribute async_reg of rxeq_txpreset_reg1 : signal is "true"; + signal rxeq_txpreset_reg2 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_txpreset_reg2 : signal is "NO"; + attribute async_reg of rxeq_txpreset_reg2 : signal is "true"; + signal \rxeq_txpreset_reg_n_0_[0]\ : STD_LOGIC; + signal \rxeq_txpreset_reg_n_0_[1]\ : STD_LOGIC; + signal \rxeq_txpreset_reg_n_0_[2]\ : STD_LOGIC; + signal \rxeq_txpreset_reg_n_0_[3]\ : STD_LOGIC; + signal rxeq_user_en_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxeq_user_en_reg1 : signal is "NO"; + attribute async_reg of rxeq_user_en_reg1 : signal is "true"; + signal rxeq_user_en_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxeq_user_en_reg2 : signal is "NO"; + attribute async_reg of rxeq_user_en_reg2 : signal is "true"; + signal rxeq_user_mode_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxeq_user_mode_reg1 : signal is "NO"; + attribute async_reg of rxeq_user_mode_reg1 : signal is "true"; + signal rxeq_user_mode_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of rxeq_user_mode_reg2 : signal is "NO"; + attribute async_reg of rxeq_user_mode_reg2 : signal is "true"; + signal rxeq_user_txcoeff_reg1 : STD_LOGIC_VECTOR ( 17 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_user_txcoeff_reg1 : signal is "NO"; + attribute async_reg of rxeq_user_txcoeff_reg1 : signal is "true"; + signal rxeq_user_txcoeff_reg2 : STD_LOGIC_VECTOR ( 17 downto 0 ); + attribute SHIFT_EXTRACT of rxeq_user_txcoeff_reg2 : signal is "NO"; + attribute async_reg of rxeq_user_txcoeff_reg2 : signal is "true"; + signal txeq_control_reg1 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of txeq_control_reg1 : signal is "NO"; + attribute async_reg of txeq_control_reg1 : signal is "true"; + signal txeq_control_reg2 : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute SHIFT_EXTRACT of txeq_control_reg2 : signal is "NO"; + attribute async_reg of txeq_control_reg2 : signal is "true"; + signal txeq_deemph_reg1 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of txeq_deemph_reg1 : signal is "NO"; + attribute async_reg of txeq_deemph_reg1 : signal is "true"; + signal txeq_deemph_reg2 : STD_LOGIC_VECTOR ( 5 downto 0 ); + attribute SHIFT_EXTRACT of txeq_deemph_reg2 : signal is "NO"; + attribute async_reg of txeq_deemph_reg2 : signal is "true"; + signal \txeq_preset[17]_i_1__2_n_0\ : STD_LOGIC; + signal \txeq_preset[3]_i_1__2_n_0\ : STD_LOGIC; + signal \txeq_preset[7]_i_1__2_n_0\ : STD_LOGIC; + signal txeq_preset_done : STD_LOGIC; + signal \txeq_preset_done_i_1__2_n_0\ : STD_LOGIC; + signal txeq_preset_reg1 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of txeq_preset_reg1 : signal is "NO"; + attribute async_reg of txeq_preset_reg1 : signal is "true"; + signal txeq_preset_reg2 : STD_LOGIC_VECTOR ( 3 downto 0 ); + attribute SHIFT_EXTRACT of txeq_preset_reg2 : signal is "NO"; + attribute async_reg of txeq_preset_reg2 : signal is "true"; + signal \txeq_preset_reg_n_0_[0]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[10]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[11]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[12]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[13]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[14]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[15]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[16]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[17]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[1]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[2]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[3]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[7]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[8]\ : STD_LOGIC; + signal \txeq_preset_reg_n_0_[9]\ : STD_LOGIC; + signal txeq_txcoeff : STD_LOGIC; + signal \txeq_txcoeff[0]_i_1__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[0]_i_2__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[10]_i_1__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[10]_i_2__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[11]_i_1__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[11]_i_2__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[12]_i_1__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[12]_i_2__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[13]_i_1__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[13]_i_2__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[14]_i_1__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[14]_i_2__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[15]_i_1__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[15]_i_2__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[16]_i_1__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[16]_i_2__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[17]_i_1__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[17]_i_2__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[18]_i_2__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[18]_i_3__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[1]_i_1__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[1]_i_2__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[2]_i_1__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[2]_i_2__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[3]_i_1__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[3]_i_2__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[4]_i_1__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[4]_i_2__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[5]_i_1__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[5]_i_2__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[6]_i_1__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[6]_i_2__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[7]_i_1__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[7]_i_2__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[8]_i_1__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[8]_i_2__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[9]_i_1__2_n_0\ : STD_LOGIC; + signal \txeq_txcoeff[9]_i_2__2_n_0\ : STD_LOGIC; + signal txeq_txcoeff_cnt : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal \txeq_txcoeff_cnt_reg_n_0_[0]\ : STD_LOGIC; + signal \txeq_txcoeff_cnt_reg_n_0_[1]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[0]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[10]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[11]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[12]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[13]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[14]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[15]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[16]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[17]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[18]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[1]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[2]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[3]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[4]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[5]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[6]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[7]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[8]\ : STD_LOGIC; + signal \txeq_txcoeff_reg_n_0_[9]\ : STD_LOGIC; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of \FSM_onehot_fsm_rx[4]_i_1__2\ : label is "soft_lutpair185"; + attribute FSM_ENCODED_STATES : string; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_rx_reg[1]\ : label is "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_rx_reg[2]\ : label is "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_rx_reg[3]\ : label is "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_rx_reg[4]\ : label is "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_rx_reg[5]\ : label is "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001"; + attribute FSM_ENCODED_STATES of \FSM_onehot_fsm_rx_reg[6]\ : label is "FSM_RXEQ_PRESET:0000100,FSM_RXEQ_TXCOEFF:0001000,FSM_RXEQ_LF:0010000,FSM_RXEQ_NEW_TXCOEFF_REQ:0100000,FSM_RXEQ_DONE:1000000,FSM_RXEQ_IDLE:0000010,iSTATE:0000001"; + attribute SOFT_HLUTNM of \FSM_sequential_fsm_tx[1]_i_2__2\ : label is "soft_lutpair183"; + attribute SOFT_HLUTNM of \FSM_sequential_fsm_tx[2]_i_2__2\ : label is "soft_lutpair183"; + attribute FSM_ENCODED_STATES of \FSM_sequential_fsm_tx_reg[0]\ : label is "FSM_TXEQ_QUERY:101,FSM_TXEQ_PRESET:010,FSM_TXEQ_TXCOEFF:011,FSM_TXEQ_REMAP:100,FSM_TXEQ_DONE:110,FSM_TXEQ_IDLE:001,iSTATE:000"; + attribute FSM_ENCODED_STATES of \FSM_sequential_fsm_tx_reg[1]\ : label is "FSM_TXEQ_QUERY:101,FSM_TXEQ_PRESET:010,FSM_TXEQ_TXCOEFF:011,FSM_TXEQ_REMAP:100,FSM_TXEQ_DONE:110,FSM_TXEQ_IDLE:001,iSTATE:000"; + attribute FSM_ENCODED_STATES of \FSM_sequential_fsm_tx_reg[2]\ : label is "FSM_TXEQ_QUERY:101,FSM_TXEQ_PRESET:010,FSM_TXEQ_TXCOEFF:011,FSM_TXEQ_REMAP:100,FSM_TXEQ_DONE:110,FSM_TXEQ_IDLE:001,iSTATE:000"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of gen3_reg1_reg : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of gen3_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of gen3_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of gen3_reg2_reg : label is std.standard.true; + attribute KEEP of gen3_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of gen3_reg2_reg : label is "NO"; + attribute SOFT_HLUTNM of \rxeq_cnt[1]_i_1__2\ : label is "soft_lutpair186"; + attribute SOFT_HLUTNM of \rxeq_cnt[2]_i_1__2\ : label is "soft_lutpair185"; + attribute ASYNC_REG_boolean of \rxeq_control_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_control_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_control_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_control_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_control_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_control_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_control_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_control_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_control_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_control_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_control_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_control_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_lffs_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \rxeq_lffs_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_lffs_reg2_reg[5]\ : label is "NO"; + attribute SOFT_HLUTNM of \rxeq_preset[2]_i_3__2\ : label is "soft_lutpair186"; + attribute ASYNC_REG_boolean of \rxeq_preset_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_preset_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_preset_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_preset_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_preset_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_preset_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_preset_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_preset_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_preset_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_preset_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_preset_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_preset_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_preset_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_preset_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_preset_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_preset_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_preset_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_preset_reg2_reg[2]\ : label is "NO"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[0]_i_1__2\ : label is "soft_lutpair187"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[10]_i_1__2\ : label is "soft_lutpair192"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[11]_i_1__2\ : label is "soft_lutpair192"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[1]_i_1__2\ : label is "soft_lutpair187"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[2]_i_1__2\ : label is "soft_lutpair188"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[3]_i_1__2\ : label is "soft_lutpair188"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[4]_i_1__2\ : label is "soft_lutpair189"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[5]_i_1__2\ : label is "soft_lutpair189"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[6]_i_1__2\ : label is "soft_lutpair190"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[7]_i_1__2\ : label is "soft_lutpair190"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[8]_i_1__2\ : label is "soft_lutpair191"; + attribute SOFT_HLUTNM of \rxeq_txcoeff[9]_i_1__2\ : label is "soft_lutpair191"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_txpreset_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxeq_txpreset_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_txpreset_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of rxeq_user_en_reg1_reg : label is std.standard.true; + attribute KEEP of rxeq_user_en_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxeq_user_en_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxeq_user_en_reg2_reg : label is std.standard.true; + attribute KEEP of rxeq_user_en_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxeq_user_en_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxeq_user_mode_reg1_reg : label is std.standard.true; + attribute KEEP of rxeq_user_mode_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxeq_user_mode_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of rxeq_user_mode_reg2_reg : label is std.standard.true; + attribute KEEP of rxeq_user_mode_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of rxeq_user_mode_reg2_reg : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[10]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[11]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[12]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[13]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[14]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[15]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[16]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[16]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[16]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[17]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[17]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[17]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[6]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[7]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[8]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg1_reg[9]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg1_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg1_reg[9]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[10]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[10]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[10]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[11]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[11]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[11]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[12]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[12]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[12]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[13]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[13]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[13]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[14]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[14]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[14]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[15]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[15]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[15]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[16]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[16]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[16]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[17]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[17]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[17]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[6]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[6]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[6]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[7]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[7]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[7]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[8]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[8]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[8]\ : label is "NO"; + attribute ASYNC_REG_boolean of \rxeq_user_txcoeff_reg2_reg[9]\ : label is std.standard.true; + attribute KEEP of \rxeq_user_txcoeff_reg2_reg[9]\ : label is "yes"; + attribute SHIFT_EXTRACT of \rxeq_user_txcoeff_reg2_reg[9]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_control_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \txeq_control_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_control_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_control_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \txeq_control_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_control_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_control_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \txeq_control_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_control_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_control_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \txeq_control_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_control_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg1_reg[4]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg1_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg1_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg1_reg[5]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg1_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg1_reg[5]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg2_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg2_reg[4]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg2_reg[4]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg2_reg[4]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_deemph_reg2_reg[5]\ : label is std.standard.true; + attribute KEEP of \txeq_deemph_reg2_reg[5]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_deemph_reg2_reg[5]\ : label is "NO"; + attribute SOFT_HLUTNM of \txeq_preset_done_i_1__2\ : label is "soft_lutpair184"; + attribute ASYNC_REG_boolean of \txeq_preset_reg1_reg[0]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg1_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg1_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg1_reg[1]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg1_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg1_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg1_reg[2]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg1_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg1_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg1_reg[3]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg1_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg1_reg[3]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg2_reg[0]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg2_reg[0]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg2_reg[0]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg2_reg[1]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg2_reg[1]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg2_reg[1]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg2_reg[2]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg2_reg[2]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg2_reg[2]\ : label is "NO"; + attribute ASYNC_REG_boolean of \txeq_preset_reg2_reg[3]\ : label is std.standard.true; + attribute KEEP of \txeq_preset_reg2_reg[3]\ : label is "yes"; + attribute SHIFT_EXTRACT of \txeq_preset_reg2_reg[3]\ : label is "NO"; + attribute SOFT_HLUTNM of \txeq_txcoeff_cnt[1]_i_1__2\ : label is "soft_lutpair184"; +begin + USER_RXEQ_ADAPT_DONE <= \^user_rxeq_adapt_done\; +\FSM_onehot_fsm_rx[1]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"ABABABAA" + ) + port map ( + I0 => \FSM_onehot_fsm_rx[1]_i_2__2_n_0\, + I1 => rxeq_control_reg2(1), + I2 => rxeq_control_reg2(0), + I3 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I4 => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + O => \FSM_onehot_fsm_rx[1]_i_1__2_n_0\ + ); +\FSM_onehot_fsm_rx[1]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000000000001" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I3 => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + I4 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I5 => \FSM_onehot_fsm_rx_reg_n_0_[5]\, + O => \FSM_onehot_fsm_rx[1]_i_2__2_n_0\ + ); +\FSM_onehot_fsm_rx[3]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFF8FF88888888" + ) + port map ( + I0 => rxeq_control_reg2(1), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I2 => \rxeq_cnt_reg_n_0_[2]\, + I3 => \rxeq_cnt_reg_n_0_[1]\, + I4 => \rxeq_cnt_reg_n_0_[0]\, + I5 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + O => \FSM_onehot_fsm_rx[3]_i_1__2_n_0\ + ); +\FSM_onehot_fsm_rx[4]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"2ABA2AAA" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => \rxeq_cnt_reg_n_0_[2]\, + I2 => \rxeq_cnt_reg_n_0_[1]\, + I3 => \rxeq_cnt_reg_n_0_[0]\, + I4 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + O => \FSM_onehot_fsm_rx[4]_i_1__2_n_0\ + ); +\FSM_onehot_fsm_rx_reg[1]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm_rx[1]_i_1__2_n_0\, + Q => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + S => RST_CPLLRESET + ); +\FSM_onehot_fsm_rx_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_scan_i_n_2, + Q => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_rx_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm_rx[3]_i_1__2_n_0\, + Q => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_rx_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm_rx[4]_i_1__2_n_0\, + Q => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_rx_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_scan_i_n_1, + Q => \FSM_onehot_fsm_rx_reg_n_0_[5]\, + R => RST_CPLLRESET + ); +\FSM_onehot_fsm_rx_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_scan_i_n_0, + Q => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + R => RST_CPLLRESET + ); +\FSM_sequential_fsm_tx[0]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"C04FC043C04FF04F" + ) + port map ( + I0 => \FSM_sequential_fsm_tx[1]_i_2__2_n_0\, + I1 => fsm_tx(0), + I2 => fsm_tx(1), + I3 => fsm_tx(2), + I4 => txeq_control_reg2(1), + I5 => txeq_control_reg2(0), + O => \fsm_tx__0\(0) + ); +\FSM_sequential_fsm_tx[1]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"3F703F7C3F7C0F70" + ) + port map ( + I0 => \FSM_sequential_fsm_tx[1]_i_2__2_n_0\, + I1 => fsm_tx(0), + I2 => fsm_tx(1), + I3 => fsm_tx(2), + I4 => txeq_control_reg2(1), + I5 => txeq_control_reg2(0), + O => \fsm_tx__0\(1) + ); +\FSM_sequential_fsm_tx[1]_i_2__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"2" + ) + port map ( + I0 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + O => \FSM_sequential_fsm_tx[1]_i_2__2_n_0\ + ); +\FSM_sequential_fsm_tx[2]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"3A2A2A227F7F7F77" + ) + port map ( + I0 => fsm_tx(2), + I1 => fsm_tx(1), + I2 => fsm_tx(0), + I3 => txeq_control_reg2(1), + I4 => txeq_control_reg2(0), + I5 => \FSM_sequential_fsm_tx[2]_i_2__2_n_0\, + O => \fsm_tx__0\(2) + ); +\FSM_sequential_fsm_tx[2]_i_2__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"D0FFDFFF" + ) + port map ( + I0 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I2 => fsm_tx(0), + I3 => fsm_tx(1), + I4 => txeq_preset_done, + O => \FSM_sequential_fsm_tx[2]_i_2__2_n_0\ + ); +\FSM_sequential_fsm_tx_reg[0]\: unisim.vcomponents.FDSE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fsm_tx__0\(0), + Q => fsm_tx(0), + S => RST_CPLLRESET + ); +\FSM_sequential_fsm_tx_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fsm_tx__0\(1), + Q => fsm_tx(1), + R => RST_CPLLRESET + ); +\FSM_sequential_fsm_tx_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \fsm_tx__0\(2), + Q => fsm_tx(2), + R => RST_CPLLRESET + ); +gen3_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rate_gen3_3, + Q => gen3_reg1, + R => RST_CPLLRESET + ); +gen3_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => gen3_reg1, + Q => gen3_reg2, + R => RST_CPLLRESET + ); +\gtx_channel.gtxe2_channel_i_i_23__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[17]\, + O => TXPOSTCURSOR(4) + ); +\gtx_channel.gtxe2_channel_i_i_24__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[16]\, + O => TXPOSTCURSOR(3) + ); +\gtx_channel.gtxe2_channel_i_i_25__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[15]\, + O => TXPOSTCURSOR(2) + ); +\gtx_channel.gtxe2_channel_i_i_26__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[14]\, + O => TXPOSTCURSOR(1) + ); +\gtx_channel.gtxe2_channel_i_i_27__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[13]\, + O => TXPOSTCURSOR(0) + ); +\gtx_channel.gtxe2_channel_i_i_28__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[4]\, + O => TXPRECURSOR(4) + ); +\gtx_channel.gtxe2_channel_i_i_29__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[3]\, + O => TXPRECURSOR(3) + ); +\gtx_channel.gtxe2_channel_i_i_30__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[2]\, + O => TXPRECURSOR(2) + ); +\gtx_channel.gtxe2_channel_i_i_31__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[1]\, + O => TXPRECURSOR(1) + ); +\gtx_channel.gtxe2_channel_i_i_32__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[0]\, + I1 => gen3_reg2, + O => TXPRECURSOR(0) + ); +\gtx_channel.gtxe2_channel_i_i_33__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[12]\, + O => TXMAINCURSOR(6) + ); +\gtx_channel.gtxe2_channel_i_i_34__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[11]\, + O => TXMAINCURSOR(5) + ); +\gtx_channel.gtxe2_channel_i_i_35__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[10]\, + O => TXMAINCURSOR(4) + ); +\gtx_channel.gtxe2_channel_i_i_36__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[9]\, + O => TXMAINCURSOR(3) + ); +\gtx_channel.gtxe2_channel_i_i_37__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[8]\, + O => TXMAINCURSOR(2) + ); +\gtx_channel.gtxe2_channel_i_i_38__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[7]\, + O => TXMAINCURSOR(1) + ); +\gtx_channel.gtxe2_channel_i_i_39\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => gen3_reg2, + I1 => \txeq_txcoeff_reg_n_0_[6]\, + O => TXMAINCURSOR(0) + ); +\rxeq_adapt_done_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFEFFFFFFFF" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[5]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + I3 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I4 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I5 => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + O => \rxeq_adapt_done_i_2__2_n_0\ + ); +rxeq_adapt_done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_scan_i_n_5, + Q => \^user_rxeq_adapt_done\, + R => RST_CPLLRESET + ); +\rxeq_adapt_done_reg_i_2__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"08" + ) + port map ( + I0 => rxeq_control_reg2(0), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I2 => rxeq_control_reg2(1), + O => \rxeq_adapt_done_reg_i_2__2_n_0\ + ); +rxeq_adapt_done_reg_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_scan_i_n_4, + Q => rxeq_adapt_done_reg_reg_n_0, + R => RST_CPLLRESET + ); +\rxeq_cnt[0]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"8888FFF8" + ) + port map ( + I0 => rxeq_control_reg2(1), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I3 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I4 => \rxeq_cnt_reg_n_0_[0]\, + O => rxeq_cnt(0) + ); +\rxeq_cnt[1]_i_1__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"6660" + ) + port map ( + I0 => \rxeq_cnt_reg_n_0_[0]\, + I1 => \rxeq_cnt_reg_n_0_[1]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I3 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + O => rxeq_cnt(1) + ); +\rxeq_cnt[2]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"78787800" + ) + port map ( + I0 => \rxeq_cnt_reg_n_0_[1]\, + I1 => \rxeq_cnt_reg_n_0_[0]\, + I2 => \rxeq_cnt_reg_n_0_[2]\, + I3 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I4 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + O => rxeq_cnt(2) + ); +\rxeq_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_cnt(0), + Q => \rxeq_cnt_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\rxeq_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_cnt(1), + Q => \rxeq_cnt_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\rxeq_cnt_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_cnt(2), + Q => \rxeq_cnt_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\rxeq_control_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_control_reg1(0), + R => RST_CPLLRESET + ); +\rxeq_control_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_control_reg1(1), + R => RST_CPLLRESET + ); +\rxeq_control_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_control_reg1(0), + Q => rxeq_control_reg2(0), + R => RST_CPLLRESET + ); +\rxeq_control_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_control_reg1(1), + Q => rxeq_control_reg2(1), + R => RST_CPLLRESET + ); +\rxeq_fs[0]_i_1__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => rxeq_lffs_reg2(0), + O => rxeq_fs(0) + ); +\rxeq_fs[1]_i_1__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => rxeq_lffs_reg2(1), + O => rxeq_fs(1) + ); +\rxeq_fs[2]_i_1__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => rxeq_lffs_reg2(2), + O => rxeq_fs(2) + ); +\rxeq_fs[3]_i_1__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => rxeq_lffs_reg2(3), + O => rxeq_fs(3) + ); +\rxeq_fs[4]_i_1__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => rxeq_lffs_reg2(4), + O => rxeq_fs(4) + ); +\rxeq_fs[5]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"F8" + ) + port map ( + I0 => rxeq_control_reg2(1), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I2 => \FSM_onehot_fsm_rx[1]_i_2__2_n_0\, + O => \rxeq_fs[5]_i_1__2_n_0\ + ); +\rxeq_fs[5]_i_2__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => rxeq_lffs_reg2(5), + O => rxeq_fs(5) + ); +\rxeq_fs_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_fs[5]_i_1__2_n_0\, + D => rxeq_fs(0), + Q => \rxeq_fs_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\rxeq_fs_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_fs[5]_i_1__2_n_0\, + D => rxeq_fs(1), + Q => \rxeq_fs_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\rxeq_fs_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_fs[5]_i_1__2_n_0\, + D => rxeq_fs(2), + Q => \rxeq_fs_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\rxeq_fs_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_fs[5]_i_1__2_n_0\, + D => rxeq_fs(3), + Q => \rxeq_fs_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\rxeq_fs_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_fs[5]_i_1__2_n_0\, + D => rxeq_fs(4), + Q => \rxeq_fs_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\rxeq_fs_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_fs[5]_i_1__2_n_0\, + D => rxeq_fs(5), + Q => \rxeq_fs_reg_n_0_[5]\, + R => RST_CPLLRESET + ); +\rxeq_lf[0]_i_1__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => rxeq_lffs_reg2(0), + O => rxeq_lf(0) + ); +\rxeq_lf[1]_i_1__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => rxeq_lffs_reg2(1), + O => rxeq_lf(1) + ); +\rxeq_lf[2]_i_1__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => rxeq_lffs_reg2(2), + O => rxeq_lf(2) + ); +\rxeq_lf[3]_i_1__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => rxeq_lffs_reg2(3), + O => rxeq_lf(3) + ); +\rxeq_lf[4]_i_1__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => rxeq_lffs_reg2(4), + O => rxeq_lf(4) + ); +\rxeq_lf[5]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"EAAAAAAA" + ) + port map ( + I0 => \FSM_onehot_fsm_rx[1]_i_2__2_n_0\, + I1 => \rxeq_cnt_reg_n_0_[2]\, + I2 => \rxeq_cnt_reg_n_0_[0]\, + I3 => \rxeq_cnt_reg_n_0_[1]\, + I4 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + O => \rxeq_lf[5]_i_1__2_n_0\ + ); +\rxeq_lf[5]_i_2__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I1 => rxeq_lffs_reg2(5), + O => rxeq_lf(5) + ); +\rxeq_lf_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_lf[5]_i_1__2_n_0\, + D => rxeq_lf(0), + Q => \rxeq_lf_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\rxeq_lf_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_lf[5]_i_1__2_n_0\, + D => rxeq_lf(1), + Q => \rxeq_lf_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\rxeq_lf_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_lf[5]_i_1__2_n_0\, + D => rxeq_lf(2), + Q => \rxeq_lf_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\rxeq_lf_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_lf[5]_i_1__2_n_0\, + D => rxeq_lf(3), + Q => \rxeq_lf_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\rxeq_lf_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_lf[5]_i_1__2_n_0\, + D => rxeq_lf(4), + Q => \rxeq_lf_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\rxeq_lf_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_lf[5]_i_1__2_n_0\, + D => rxeq_lf(5), + Q => \rxeq_lf_reg_n_0_[5]\, + R => RST_CPLLRESET + ); +\rxeq_lffs_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_lffs_reg1(0), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_lffs_reg1(1), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_lffs_reg1(2), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_lffs_reg1(3), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_lffs_reg1(4), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_lffs_reg1(5), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_lffs_reg1(0), + Q => rxeq_lffs_reg2(0), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_lffs_reg1(1), + Q => rxeq_lffs_reg2(1), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_lffs_reg1(2), + Q => rxeq_lffs_reg2(2), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_lffs_reg1(3), + Q => rxeq_lffs_reg2(3), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_lffs_reg1(4), + Q => rxeq_lffs_reg2(4), + R => RST_CPLLRESET + ); +\rxeq_lffs_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_lffs_reg1(5), + Q => rxeq_lffs_reg2(5), + R => RST_CPLLRESET + ); +rxeq_new_txcoeff_req_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_new_txcoeff_req, + Q => rxeq_new_txcoeff_req_reg_n_0, + R => RST_CPLLRESET + ); +\rxeq_preset[0]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"A8FFA800" + ) + port map ( + I0 => rxeq_preset_reg2(0), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I3 => \rxeq_preset[2]_i_2__2_n_0\, + I4 => \rxeq_preset_reg_n_0_[0]\, + O => \rxeq_preset[0]_i_1__2_n_0\ + ); +\rxeq_preset[1]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"A8FFA800" + ) + port map ( + I0 => rxeq_preset_reg2(1), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I3 => \rxeq_preset[2]_i_2__2_n_0\, + I4 => \rxeq_preset_reg_n_0_[1]\, + O => \rxeq_preset[1]_i_1__2_n_0\ + ); +\rxeq_preset[2]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"A8FFA800" + ) + port map ( + I0 => rxeq_preset_reg2(2), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I3 => \rxeq_preset[2]_i_2__2_n_0\, + I4 => \rxeq_preset_reg_n_0_[2]\, + O => \rxeq_preset[2]_i_1__2_n_0\ + ); +\rxeq_preset[2]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"FFFFFFFFFFFF0002" + ) + port map ( + I0 => \rxeq_preset[2]_i_3__2_n_0\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I3 => \FSM_onehot_fsm_rx_reg_n_0_[5]\, + I4 => \rxeq_adapt_done_reg_i_2__2_n_0\, + I5 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + O => \rxeq_preset[2]_i_2__2_n_0\ + ); +\rxeq_preset[2]_i_3__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"1" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + O => \rxeq_preset[2]_i_3__2_n_0\ + ); +\rxeq_preset_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_preset_reg1(0), + R => RST_CPLLRESET + ); +\rxeq_preset_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_preset_reg1(1), + R => RST_CPLLRESET + ); +\rxeq_preset_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_preset_reg1(2), + R => RST_CPLLRESET + ); +\rxeq_preset_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_preset_reg1(0), + Q => rxeq_preset_reg2(0), + R => RST_CPLLRESET + ); +\rxeq_preset_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_preset_reg1(1), + Q => rxeq_preset_reg2(1), + R => RST_CPLLRESET + ); +\rxeq_preset_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_preset_reg1(2), + Q => rxeq_preset_reg2(2), + R => RST_CPLLRESET + ); +\rxeq_preset_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rxeq_preset[0]_i_1__2_n_0\, + Q => \rxeq_preset_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\rxeq_preset_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rxeq_preset[1]_i_1__2_n_0\, + Q => \rxeq_preset_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\rxeq_preset_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \rxeq_preset[2]_i_1__2_n_0\, + Q => \rxeq_preset_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +rxeq_preset_valid_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + Q => rxeq_preset_valid, + R => RST_CPLLRESET + ); +rxeq_scan_i: entity work.pcie_7x_0_pcie_7x_0_rxeq_scan + port map ( + D(2) => rxeq_scan_i_n_0, + D(1) => rxeq_scan_i_n_1, + D(0) => rxeq_scan_i_n_2, + \FSM_onehot_fsm_rx_reg[5]\(2) => \rxeq_cnt_reg_n_0_[2]\, + \FSM_onehot_fsm_rx_reg[5]\(1) => \rxeq_cnt_reg_n_0_[1]\, + \FSM_onehot_fsm_rx_reg[5]\(0) => \rxeq_cnt_reg_n_0_[0]\, + Q(4) => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + Q(3) => \FSM_onehot_fsm_rx_reg_n_0_[5]\, + Q(2) => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + Q(1) => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + Q(0) => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + RST_CPLLRESET => RST_CPLLRESET, + USER_RXEQ_ADAPT_DONE => \^user_rxeq_adapt_done\, + adapt_done_reg_0 => rxeq_scan_i_n_4, + \fs_reg1_reg[5]_0\(5) => \rxeq_fs_reg_n_0_[5]\, + \fs_reg1_reg[5]_0\(4) => \rxeq_fs_reg_n_0_[4]\, + \fs_reg1_reg[5]_0\(3) => \rxeq_fs_reg_n_0_[3]\, + \fs_reg1_reg[5]_0\(2) => \rxeq_fs_reg_n_0_[2]\, + \fs_reg1_reg[5]_0\(1) => \rxeq_fs_reg_n_0_[1]\, + \fs_reg1_reg[5]_0\(0) => \rxeq_fs_reg_n_0_[0]\, + \lf_reg1_reg[5]_0\(5) => \rxeq_lf_reg_n_0_[5]\, + \lf_reg1_reg[5]_0\(4) => \rxeq_lf_reg_n_0_[4]\, + \lf_reg1_reg[5]_0\(3) => \rxeq_lf_reg_n_0_[3]\, + \lf_reg1_reg[5]_0\(2) => \rxeq_lf_reg_n_0_[2]\, + \lf_reg1_reg[5]_0\(1) => \rxeq_lf_reg_n_0_[1]\, + \lf_reg1_reg[5]_0\(0) => \rxeq_lf_reg_n_0_[0]\, + new_txcoeff_done_reg_0 => rxeq_scan_i_n_5, + new_txcoeff_req_reg1_reg_0 => rxeq_new_txcoeff_req_reg_n_0, + \out\(1 downto 0) => rxeq_control_reg2(1 downto 0), + pipe_pclk_in => pipe_pclk_in, + \preset_reg1_reg[2]_0\(2) => \rxeq_preset_reg_n_0_[2]\, + \preset_reg1_reg[2]_0\(1) => \rxeq_preset_reg_n_0_[1]\, + \preset_reg1_reg[2]_0\(0) => \rxeq_preset_reg_n_0_[0]\, + rxeq_adapt_done_reg => \rxeq_adapt_done_i_2__2_n_0\, + rxeq_adapt_done_reg_reg => \FSM_onehot_fsm_rx[1]_i_2__2_n_0\, + rxeq_adapt_done_reg_reg_0 => \rxeq_adapt_done_reg_i_2__2_n_0\, + rxeq_adapt_done_reg_reg_1 => rxeq_adapt_done_reg_reg_n_0, + rxeq_new_txcoeff_req => rxeq_new_txcoeff_req, + rxeq_preset_valid => rxeq_preset_valid, + \txcoeff_reg1_reg[17]_0\(17) => \rxeq_txcoeff_reg_n_0_[17]\, + \txcoeff_reg1_reg[17]_0\(16) => \rxeq_txcoeff_reg_n_0_[16]\, + \txcoeff_reg1_reg[17]_0\(15) => \rxeq_txcoeff_reg_n_0_[15]\, + \txcoeff_reg1_reg[17]_0\(14) => \rxeq_txcoeff_reg_n_0_[14]\, + \txcoeff_reg1_reg[17]_0\(13) => \rxeq_txcoeff_reg_n_0_[13]\, + \txcoeff_reg1_reg[17]_0\(12) => \rxeq_txcoeff_reg_n_0_[12]\, + \txcoeff_reg1_reg[17]_0\(11) => \rxeq_txcoeff_reg_n_0_[11]\, + \txcoeff_reg1_reg[17]_0\(10) => \rxeq_txcoeff_reg_n_0_[10]\, + \txcoeff_reg1_reg[17]_0\(9) => \rxeq_txcoeff_reg_n_0_[9]\, + \txcoeff_reg1_reg[17]_0\(8) => \rxeq_txcoeff_reg_n_0_[8]\, + \txcoeff_reg1_reg[17]_0\(7) => \rxeq_txcoeff_reg_n_0_[7]\, + \txcoeff_reg1_reg[17]_0\(6) => \rxeq_txcoeff_reg_n_0_[6]\, + \txcoeff_reg1_reg[17]_0\(5) => \rxeq_txcoeff_reg_n_0_[5]\, + \txcoeff_reg1_reg[17]_0\(4) => \rxeq_txcoeff_reg_n_0_[4]\, + \txcoeff_reg1_reg[17]_0\(3) => \rxeq_txcoeff_reg_n_0_[3]\, + \txcoeff_reg1_reg[17]_0\(2) => \rxeq_txcoeff_reg_n_0_[2]\, + \txcoeff_reg1_reg[17]_0\(1) => \rxeq_txcoeff_reg_n_0_[1]\, + \txcoeff_reg1_reg[17]_0\(0) => \rxeq_txcoeff_reg_n_0_[0]\, + \txpreset_reg1_reg[3]_0\(3) => \rxeq_txpreset_reg_n_0_[3]\, + \txpreset_reg1_reg[3]_0\(2) => \rxeq_txpreset_reg_n_0_[2]\, + \txpreset_reg1_reg[3]_0\(1) => \rxeq_txpreset_reg_n_0_[1]\, + \txpreset_reg1_reg[3]_0\(0) => \rxeq_txpreset_reg_n_0_[0]\ + ); +\rxeq_txcoeff[0]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[6]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(0) + ); +\rxeq_txcoeff[10]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[16]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(10) + ); +\rxeq_txcoeff[11]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[17]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(11) + ); +\rxeq_txcoeff[12]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => txeq_deemph_reg2(0), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(12) + ); +\rxeq_txcoeff[13]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => txeq_deemph_reg2(1), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(13) + ); +\rxeq_txcoeff[14]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => txeq_deemph_reg2(2), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(14) + ); +\rxeq_txcoeff[15]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => txeq_deemph_reg2(3), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(15) + ); +\rxeq_txcoeff[16]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => txeq_deemph_reg2(4), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(16) + ); +\rxeq_txcoeff[17]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => txeq_deemph_reg2(5), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(17) + ); +\rxeq_txcoeff[1]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[7]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(1) + ); +\rxeq_txcoeff[2]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[8]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(2) + ); +\rxeq_txcoeff[3]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[9]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(3) + ); +\rxeq_txcoeff[4]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[10]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(4) + ); +\rxeq_txcoeff[5]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[11]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(5) + ); +\rxeq_txcoeff[6]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[12]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(6) + ); +\rxeq_txcoeff[7]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[13]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(7) + ); +\rxeq_txcoeff[8]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[14]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(8) + ); +\rxeq_txcoeff[9]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => \rxeq_txcoeff_reg_n_0_[15]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txcoeff(9) + ); +\rxeq_txcoeff_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__2_n_0\, + D => rxeq_txcoeff(0), + Q => \rxeq_txcoeff_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__2_n_0\, + D => rxeq_txcoeff(10), + Q => \rxeq_txcoeff_reg_n_0_[10]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__2_n_0\, + D => rxeq_txcoeff(11), + Q => \rxeq_txcoeff_reg_n_0_[11]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__2_n_0\, + D => rxeq_txcoeff(12), + Q => \rxeq_txcoeff_reg_n_0_[12]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__2_n_0\, + D => rxeq_txcoeff(13), + Q => \rxeq_txcoeff_reg_n_0_[13]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__2_n_0\, + D => rxeq_txcoeff(14), + Q => \rxeq_txcoeff_reg_n_0_[14]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__2_n_0\, + D => rxeq_txcoeff(15), + Q => \rxeq_txcoeff_reg_n_0_[15]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[16]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__2_n_0\, + D => rxeq_txcoeff(16), + Q => \rxeq_txcoeff_reg_n_0_[16]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[17]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__2_n_0\, + D => rxeq_txcoeff(17), + Q => \rxeq_txcoeff_reg_n_0_[17]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__2_n_0\, + D => rxeq_txcoeff(1), + Q => \rxeq_txcoeff_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__2_n_0\, + D => rxeq_txcoeff(2), + Q => \rxeq_txcoeff_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__2_n_0\, + D => rxeq_txcoeff(3), + Q => \rxeq_txcoeff_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__2_n_0\, + D => rxeq_txcoeff(4), + Q => \rxeq_txcoeff_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__2_n_0\, + D => rxeq_txcoeff(5), + Q => \rxeq_txcoeff_reg_n_0_[5]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__2_n_0\, + D => rxeq_txcoeff(6), + Q => \rxeq_txcoeff_reg_n_0_[6]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__2_n_0\, + D => rxeq_txcoeff(7), + Q => \rxeq_txcoeff_reg_n_0_[7]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__2_n_0\, + D => rxeq_txcoeff(8), + Q => \rxeq_txcoeff_reg_n_0_[8]\, + R => RST_CPLLRESET + ); +\rxeq_txcoeff_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__2_n_0\, + D => rxeq_txcoeff(9), + Q => \rxeq_txcoeff_reg_n_0_[9]\, + R => RST_CPLLRESET + ); +\rxeq_txpreset[0]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => rxeq_txpreset_reg2(0), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txpreset(0) + ); +\rxeq_txpreset[1]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => rxeq_txpreset_reg2(1), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txpreset(1) + ); +\rxeq_txpreset[2]_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => rxeq_txpreset_reg2(2), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txpreset(2) + ); +\rxeq_txpreset[3]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFFF404" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[6]\, + I1 => \rxeq_txpreset[3]_i_3__2_n_0\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + I3 => rxeq_control_reg2(1), + I4 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + O => \rxeq_txpreset[3]_i_1__2_n_0\ + ); +\rxeq_txpreset[3]_i_2__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"A8" + ) + port map ( + I0 => rxeq_txpreset_reg2(3), + I1 => \FSM_onehot_fsm_rx_reg_n_0_[3]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[1]\, + O => rxeq_txpreset(3) + ); +\rxeq_txpreset[3]_i_3__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"01" + ) + port map ( + I0 => \FSM_onehot_fsm_rx_reg_n_0_[2]\, + I1 => \FSM_onehot_fsm_rx_reg_n_0_[4]\, + I2 => \FSM_onehot_fsm_rx_reg_n_0_[5]\, + O => \rxeq_txpreset[3]_i_3__2_n_0\ + ); +\rxeq_txpreset_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_txpreset_reg1(0), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_txpreset_reg1(1), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_txpreset_reg1(2), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_txpreset_reg1(3), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_txpreset_reg1(0), + Q => rxeq_txpreset_reg2(0), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_txpreset_reg1(1), + Q => rxeq_txpreset_reg2(1), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_txpreset_reg1(2), + Q => rxeq_txpreset_reg2(2), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_txpreset_reg1(3), + Q => rxeq_txpreset_reg2(3), + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__2_n_0\, + D => rxeq_txpreset(0), + Q => \rxeq_txpreset_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__2_n_0\, + D => rxeq_txpreset(1), + Q => \rxeq_txpreset_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__2_n_0\, + D => rxeq_txpreset(2), + Q => \rxeq_txpreset_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\rxeq_txpreset_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \rxeq_txpreset[3]_i_1__2_n_0\, + D => rxeq_txpreset(3), + Q => \rxeq_txpreset_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +rxeq_user_en_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_en_reg1, + R => RST_CPLLRESET + ); +rxeq_user_en_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_en_reg1, + Q => rxeq_user_en_reg2, + R => RST_CPLLRESET + ); +rxeq_user_mode_reg1_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_mode_reg1, + R => RST_CPLLRESET + ); +rxeq_user_mode_reg2_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_mode_reg1, + Q => rxeq_user_mode_reg2, + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(0), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(10), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(11), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(12), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(13), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(14), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(15), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[16]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(16), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[17]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(17), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(1), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(2), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(3), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(4), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(5), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(6), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(7), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(8), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg1_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => rxeq_user_txcoeff_reg1(9), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(0), + Q => rxeq_user_txcoeff_reg2(0), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[10]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(10), + Q => rxeq_user_txcoeff_reg2(10), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[11]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(11), + Q => rxeq_user_txcoeff_reg2(11), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[12]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(12), + Q => rxeq_user_txcoeff_reg2(12), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[13]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(13), + Q => rxeq_user_txcoeff_reg2(13), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[14]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(14), + Q => rxeq_user_txcoeff_reg2(14), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[15]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(15), + Q => rxeq_user_txcoeff_reg2(15), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[16]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(16), + Q => rxeq_user_txcoeff_reg2(16), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[17]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(17), + Q => rxeq_user_txcoeff_reg2(17), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(1), + Q => rxeq_user_txcoeff_reg2(1), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(2), + Q => rxeq_user_txcoeff_reg2(2), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(3), + Q => rxeq_user_txcoeff_reg2(3), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(4), + Q => rxeq_user_txcoeff_reg2(4), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(5), + Q => rxeq_user_txcoeff_reg2(5), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(6), + Q => rxeq_user_txcoeff_reg2(6), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(7), + Q => rxeq_user_txcoeff_reg2(7), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[8]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(8), + Q => rxeq_user_txcoeff_reg2(8), + R => RST_CPLLRESET + ); +\rxeq_user_txcoeff_reg2_reg[9]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => rxeq_user_txcoeff_reg1(9), + Q => rxeq_user_txcoeff_reg2(9), + R => RST_CPLLRESET + ); +\txeq_control_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_control_reg1(0), + R => RST_CPLLRESET + ); +\txeq_control_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_control_reg1(1), + R => RST_CPLLRESET + ); +\txeq_control_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_control_reg1(0), + Q => txeq_control_reg2(0), + R => RST_CPLLRESET + ); +\txeq_control_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_control_reg1(1), + Q => txeq_control_reg2(1), + R => RST_CPLLRESET + ); +\txeq_deemph_reg1_reg[0]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_deemph_reg1(0), + S => RST_CPLLRESET + ); +\txeq_deemph_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_deemph_reg1(1), + R => RST_CPLLRESET + ); +\txeq_deemph_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_deemph_reg1(2), + R => RST_CPLLRESET + ); +\txeq_deemph_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_deemph_reg1(3), + R => RST_CPLLRESET + ); +\txeq_deemph_reg1_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_deemph_reg1(4), + R => RST_CPLLRESET + ); +\txeq_deemph_reg1_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_deemph_reg1(5), + R => RST_CPLLRESET + ); +\txeq_deemph_reg2_reg[0]\: unisim.vcomponents.FDSE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_deemph_reg1(0), + Q => txeq_deemph_reg2(0), + S => RST_CPLLRESET + ); +\txeq_deemph_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_deemph_reg1(1), + Q => txeq_deemph_reg2(1), + R => RST_CPLLRESET + ); +\txeq_deemph_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_deemph_reg1(2), + Q => txeq_deemph_reg2(2), + R => RST_CPLLRESET + ); +\txeq_deemph_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_deemph_reg1(3), + Q => txeq_deemph_reg2(3), + R => RST_CPLLRESET + ); +\txeq_deemph_reg2_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_deemph_reg1(4), + Q => txeq_deemph_reg2(4), + R => RST_CPLLRESET + ); +\txeq_deemph_reg2_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_deemph_reg1(5), + Q => txeq_deemph_reg2(5), + R => RST_CPLLRESET + ); +\txeq_preset[0]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00001000" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(2), + I2 => txeq_preset_reg2(0), + I3 => txeq_preset_reg2(3), + I4 => txeq_preset_reg2(1), + O => p_0_out(0) + ); +\txeq_preset[10]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"ABEAABAF" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(2), + I2 => txeq_preset_reg2(0), + I3 => txeq_preset_reg2(3), + I4 => txeq_preset_reg2(1), + O => p_0_out(10) + ); +\txeq_preset[11]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFF200D" + ) + port map ( + I0 => txeq_preset_reg2(1), + I1 => txeq_preset_reg2(3), + I2 => txeq_preset_reg2(2), + I3 => txeq_preset_reg2(0), + I4 => RST_CPLLRESET, + O => p_0_out(11) + ); +\txeq_preset[12]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"01151110" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(3), + I2 => txeq_preset_reg2(1), + I3 => txeq_preset_reg2(2), + I4 => txeq_preset_reg2(0), + O => p_0_out(12) + ); +\txeq_preset[13]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"01000010" + ) + port map ( + I0 => txeq_preset_reg2(2), + I1 => RST_CPLLRESET, + I2 => txeq_preset_reg2(0), + I3 => txeq_preset_reg2(3), + I4 => txeq_preset_reg2(1), + O => p_0_out(13) + ); +\txeq_preset[14]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"01000010" + ) + port map ( + I0 => txeq_preset_reg2(2), + I1 => RST_CPLLRESET, + I2 => txeq_preset_reg2(3), + I3 => txeq_preset_reg2(1), + I4 => txeq_preset_reg2(0), + O => p_0_out(14) + ); +\txeq_preset[15]_i_1__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"F0F1" + ) + port map ( + I0 => txeq_preset_reg2(2), + I1 => txeq_preset_reg2(1), + I2 => RST_CPLLRESET, + I3 => txeq_preset_reg2(3), + O => p_0_out(15) + ); +\txeq_preset[16]_i_1__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0006" + ) + port map ( + I0 => txeq_preset_reg2(3), + I1 => txeq_preset_reg2(0), + I2 => txeq_preset_reg2(2), + I3 => RST_CPLLRESET, + O => p_0_out(16) + ); +\txeq_preset[17]_i_1__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"AABA" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => fsm_tx(0), + I2 => fsm_tx(1), + I3 => fsm_tx(2), + O => \txeq_preset[17]_i_1__2_n_0\ + ); +\txeq_preset[17]_i_2__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFF400D" + ) + port map ( + I0 => txeq_preset_reg2(3), + I1 => txeq_preset_reg2(1), + I2 => txeq_preset_reg2(2), + I3 => txeq_preset_reg2(0), + I4 => RST_CPLLRESET, + O => p_0_out(17) + ); +\txeq_preset[1]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00001004" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(3), + I2 => txeq_preset_reg2(1), + I3 => txeq_preset_reg2(2), + I4 => txeq_preset_reg2(0), + O => p_0_out(1) + ); +\txeq_preset[2]_i_1__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"0E00" + ) + port map ( + I0 => txeq_preset_reg2(2), + I1 => txeq_preset_reg2(0), + I2 => RST_CPLLRESET, + I3 => txeq_preset_reg2(3), + O => p_0_out(2) + ); +\txeq_preset[3]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"01440140" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(2), + I2 => txeq_preset_reg2(1), + I3 => txeq_preset_reg2(3), + I4 => txeq_preset_reg2(0), + O => \txeq_preset[3]_i_1__2_n_0\ + ); +\txeq_preset[7]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00001400" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(0), + I2 => txeq_preset_reg2(2), + I3 => txeq_preset_reg2(1), + I4 => txeq_preset_reg2(3), + O => \txeq_preset[7]_i_1__2_n_0\ + ); +\txeq_preset[8]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"AAAFBEAF" + ) + port map ( + I0 => RST_CPLLRESET, + I1 => txeq_preset_reg2(0), + I2 => txeq_preset_reg2(2), + I3 => txeq_preset_reg2(1), + I4 => txeq_preset_reg2(3), + O => p_0_out(8) + ); +\txeq_preset[9]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"CCFCCFCD" + ) + port map ( + I0 => txeq_preset_reg2(1), + I1 => RST_CPLLRESET, + I2 => txeq_preset_reg2(2), + I3 => txeq_preset_reg2(3), + I4 => txeq_preset_reg2(0), + O => p_0_out(9) + ); +\txeq_preset_done_i_1__2\: unisim.vcomponents.LUT3 + generic map( + INIT => X"04" + ) + port map ( + I0 => fsm_tx(2), + I1 => fsm_tx(1), + I2 => fsm_tx(0), + O => \txeq_preset_done_i_1__2_n_0\ + ); +txeq_preset_done_reg: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \txeq_preset_done_i_1__2_n_0\, + Q => txeq_preset_done, + R => RST_CPLLRESET + ); +\txeq_preset_reg1_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_preset_reg1(0), + R => RST_CPLLRESET + ); +\txeq_preset_reg1_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_preset_reg1(1), + R => RST_CPLLRESET + ); +\txeq_preset_reg1_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_preset_reg1(2), + R => RST_CPLLRESET + ); +\txeq_preset_reg1_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => '0', + Q => txeq_preset_reg1(3), + R => RST_CPLLRESET + ); +\txeq_preset_reg2_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_preset_reg1(0), + Q => txeq_preset_reg2(0), + R => RST_CPLLRESET + ); +\txeq_preset_reg2_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_preset_reg1(1), + Q => txeq_preset_reg2(1), + R => RST_CPLLRESET + ); +\txeq_preset_reg2_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_preset_reg1(2), + Q => txeq_preset_reg2(2), + R => RST_CPLLRESET + ); +\txeq_preset_reg2_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_preset_reg1(3), + Q => txeq_preset_reg2(3), + R => RST_CPLLRESET + ); +\txeq_preset_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__2_n_0\, + D => p_0_out(0), + Q => \txeq_preset_reg_n_0_[0]\, + R => '0' + ); +\txeq_preset_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__2_n_0\, + D => p_0_out(10), + Q => \txeq_preset_reg_n_0_[10]\, + R => '0' + ); +\txeq_preset_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__2_n_0\, + D => p_0_out(11), + Q => \txeq_preset_reg_n_0_[11]\, + R => '0' + ); +\txeq_preset_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__2_n_0\, + D => p_0_out(12), + Q => \txeq_preset_reg_n_0_[12]\, + R => '0' + ); +\txeq_preset_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__2_n_0\, + D => p_0_out(13), + Q => \txeq_preset_reg_n_0_[13]\, + R => '0' + ); +\txeq_preset_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__2_n_0\, + D => p_0_out(14), + Q => \txeq_preset_reg_n_0_[14]\, + R => '0' + ); +\txeq_preset_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__2_n_0\, + D => p_0_out(15), + Q => \txeq_preset_reg_n_0_[15]\, + R => '0' + ); +\txeq_preset_reg[16]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__2_n_0\, + D => p_0_out(16), + Q => \txeq_preset_reg_n_0_[16]\, + R => '0' + ); +\txeq_preset_reg[17]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__2_n_0\, + D => p_0_out(17), + Q => \txeq_preset_reg_n_0_[17]\, + R => '0' + ); +\txeq_preset_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__2_n_0\, + D => p_0_out(1), + Q => \txeq_preset_reg_n_0_[1]\, + R => '0' + ); +\txeq_preset_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__2_n_0\, + D => p_0_out(2), + Q => \txeq_preset_reg_n_0_[2]\, + R => '0' + ); +\txeq_preset_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__2_n_0\, + D => \txeq_preset[3]_i_1__2_n_0\, + Q => \txeq_preset_reg_n_0_[3]\, + R => '0' + ); +\txeq_preset_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__2_n_0\, + D => \txeq_preset[7]_i_1__2_n_0\, + Q => \txeq_preset_reg_n_0_[7]\, + R => '0' + ); +\txeq_preset_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__2_n_0\, + D => p_0_out(8), + Q => \txeq_preset_reg_n_0_[8]\, + R => '0' + ); +\txeq_preset_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => \txeq_preset[17]_i_1__2_n_0\, + D => p_0_out(9), + Q => \txeq_preset_reg_n_0_[9]\, + R => '0' + ); +\txeq_txcoeff[0]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"45404040" + ) + port map ( + I0 => fsm_tx(2), + I1 => \txeq_txcoeff[0]_i_2__2_n_0\, + I2 => fsm_tx(1), + I3 => fsm_tx(0), + I4 => \txeq_txcoeff_reg_n_0_[6]\, + O => \txeq_txcoeff[0]_i_1__2_n_0\ + ); +\txeq_txcoeff[0]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[6]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[7]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[0]\, + O => \txeq_txcoeff[0]_i_2__2_n_0\ + ); +\txeq_txcoeff[10]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[9]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[10]_i_2__2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[16]\, + O => \txeq_txcoeff[10]_i_1__2_n_0\ + ); +\txeq_txcoeff[10]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[16]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[17]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[10]\, + O => \txeq_txcoeff[10]_i_2__2_n_0\ + ); +\txeq_txcoeff[11]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[10]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[11]_i_2__2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[17]\, + O => \txeq_txcoeff[11]_i_1__2_n_0\ + ); +\txeq_txcoeff[11]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[17]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[18]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[11]\, + O => \txeq_txcoeff[11]_i_2__2_n_0\ + ); +\txeq_txcoeff[12]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[11]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[12]_i_2__2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[18]\, + O => \txeq_txcoeff[12]_i_1__2_n_0\ + ); +\txeq_txcoeff[12]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[18]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => txeq_deemph_reg2(0), + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[12]\, + O => \txeq_txcoeff[12]_i_2__2_n_0\ + ); +\txeq_txcoeff[13]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[12]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[13]_i_2__2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => txeq_deemph_reg2(0), + O => \txeq_txcoeff[13]_i_1__2_n_0\ + ); +\txeq_txcoeff[13]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => txeq_deemph_reg2(0), + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => txeq_deemph_reg2(1), + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[13]\, + O => \txeq_txcoeff[13]_i_2__2_n_0\ + ); +\txeq_txcoeff[14]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[13]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[14]_i_2__2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => txeq_deemph_reg2(1), + O => \txeq_txcoeff[14]_i_1__2_n_0\ + ); +\txeq_txcoeff[14]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => txeq_deemph_reg2(1), + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => txeq_deemph_reg2(2), + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[14]\, + O => \txeq_txcoeff[14]_i_2__2_n_0\ + ); +\txeq_txcoeff[15]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[14]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[15]_i_2__2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => txeq_deemph_reg2(2), + O => \txeq_txcoeff[15]_i_1__2_n_0\ + ); +\txeq_txcoeff[15]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => txeq_deemph_reg2(2), + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => txeq_deemph_reg2(3), + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[15]\, + O => \txeq_txcoeff[15]_i_2__2_n_0\ + ); +\txeq_txcoeff[16]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[15]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[16]_i_2__2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => txeq_deemph_reg2(3), + O => \txeq_txcoeff[16]_i_1__2_n_0\ + ); +\txeq_txcoeff[16]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => txeq_deemph_reg2(3), + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => txeq_deemph_reg2(4), + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[16]\, + O => \txeq_txcoeff[16]_i_2__2_n_0\ + ); +\txeq_txcoeff[17]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[16]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[17]_i_2__2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => txeq_deemph_reg2(4), + O => \txeq_txcoeff[17]_i_1__2_n_0\ + ); +\txeq_txcoeff[17]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => txeq_deemph_reg2(4), + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => txeq_deemph_reg2(5), + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[17]\, + O => \txeq_txcoeff[17]_i_2__2_n_0\ + ); +\txeq_txcoeff[18]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"FF040FFF" + ) + port map ( + I0 => txeq_control_reg2(0), + I1 => txeq_control_reg2(1), + I2 => fsm_tx(2), + I3 => fsm_tx(1), + I4 => fsm_tx(0), + O => txeq_txcoeff + ); +\txeq_txcoeff[18]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"22F3220022002200" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[17]\, + I1 => fsm_tx(1), + I2 => \txeq_txcoeff[18]_i_3__2_n_0\, + I3 => fsm_tx(2), + I4 => txeq_deemph_reg2(5), + I5 => fsm_tx(0), + O => \txeq_txcoeff[18]_i_2__2_n_0\ + ); +\txeq_txcoeff[18]_i_3__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"B" + ) + port map ( + I0 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + O => \txeq_txcoeff[18]_i_3__2_n_0\ + ); +\txeq_txcoeff[1]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[0]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[1]_i_2__2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[7]\, + O => \txeq_txcoeff[1]_i_1__2_n_0\ + ); +\txeq_txcoeff[1]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[7]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[8]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[1]\, + O => \txeq_txcoeff[1]_i_2__2_n_0\ + ); +\txeq_txcoeff[2]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[1]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[2]_i_2__2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[8]\, + O => \txeq_txcoeff[2]_i_1__2_n_0\ + ); +\txeq_txcoeff[2]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[8]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[9]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[2]\, + O => \txeq_txcoeff[2]_i_2__2_n_0\ + ); +\txeq_txcoeff[3]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[2]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[3]_i_2__2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[9]\, + O => \txeq_txcoeff[3]_i_1__2_n_0\ + ); +\txeq_txcoeff[3]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[9]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[10]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[3]\, + O => \txeq_txcoeff[3]_i_2__2_n_0\ + ); +\txeq_txcoeff[4]_i_1__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"2F20" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[3]\, + I1 => fsm_tx(1), + I2 => fsm_tx(2), + I3 => \txeq_txcoeff[4]_i_2__2_n_0\, + O => \txeq_txcoeff[4]_i_1__2_n_0\ + ); +\txeq_txcoeff[4]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"CACCCCCC00000000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[11]\, + I1 => \txeq_txcoeff_reg_n_0_[10]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I3 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I4 => fsm_tx(1), + I5 => fsm_tx(0), + O => \txeq_txcoeff[4]_i_2__2_n_0\ + ); +\txeq_txcoeff[5]_i_1__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"2F20" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[4]\, + I1 => fsm_tx(1), + I2 => fsm_tx(2), + I3 => \txeq_txcoeff[5]_i_2__2_n_0\, + O => \txeq_txcoeff[5]_i_1__2_n_0\ + ); +\txeq_txcoeff[5]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"CACCCCCC00000000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[12]\, + I1 => \txeq_txcoeff_reg_n_0_[11]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I3 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I4 => fsm_tx(1), + I5 => fsm_tx(0), + O => \txeq_txcoeff[5]_i_2__2_n_0\ + ); +\txeq_txcoeff[6]_i_1__2\: unisim.vcomponents.LUT4 + generic map( + INIT => X"2F20" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[5]\, + I1 => fsm_tx(1), + I2 => fsm_tx(2), + I3 => \txeq_txcoeff[6]_i_2__2_n_0\, + O => \txeq_txcoeff[6]_i_1__2_n_0\ + ); +\txeq_txcoeff[6]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"CACCCCCC00000000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[13]\, + I1 => \txeq_txcoeff_reg_n_0_[12]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I3 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I4 => fsm_tx(1), + I5 => fsm_tx(0), + O => \txeq_txcoeff[6]_i_2__2_n_0\ + ); +\txeq_txcoeff[7]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[6]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[7]_i_2__2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[13]\, + O => \txeq_txcoeff[7]_i_1__2_n_0\ + ); +\txeq_txcoeff[7]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[13]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[14]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[7]\, + O => \txeq_txcoeff[7]_i_2__2_n_0\ + ); +\txeq_txcoeff[8]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[7]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[8]_i_2__2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[14]\, + O => \txeq_txcoeff[8]_i_1__2_n_0\ + ); +\txeq_txcoeff[8]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[14]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[15]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[8]\, + O => \txeq_txcoeff[8]_i_2__2_n_0\ + ); +\txeq_txcoeff[9]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"30BB308830883088" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[8]\, + I1 => fsm_tx(2), + I2 => \txeq_txcoeff[9]_i_2__2_n_0\, + I3 => fsm_tx(1), + I4 => fsm_tx(0), + I5 => \txeq_txcoeff_reg_n_0_[15]\, + O => \txeq_txcoeff[9]_i_1__2_n_0\ + ); +\txeq_txcoeff[9]_i_2__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"BA8AFFFFBA8A0000" + ) + port map ( + I0 => \txeq_txcoeff_reg_n_0_[15]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I2 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I3 => \txeq_txcoeff_reg_n_0_[16]\, + I4 => fsm_tx(0), + I5 => \txeq_preset_reg_n_0_[9]\, + O => \txeq_txcoeff[9]_i_2__2_n_0\ + ); +\txeq_txcoeff_cnt[0]_i_1__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"000004000F000400" + ) + port map ( + I0 => txeq_control_reg2(0), + I1 => txeq_control_reg2(1), + I2 => fsm_tx(2), + I3 => fsm_tx(0), + I4 => fsm_tx(1), + I5 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + O => txeq_txcoeff_cnt(0) + ); +\txeq_txcoeff_cnt[1]_i_1__2\: unisim.vcomponents.LUT5 + generic map( + INIT => X"00006000" + ) + port map ( + I0 => \txeq_txcoeff_cnt_reg_n_0_[1]\, + I1 => \txeq_txcoeff_cnt_reg_n_0_[0]\, + I2 => fsm_tx(0), + I3 => fsm_tx(1), + I4 => fsm_tx(2), + O => txeq_txcoeff_cnt(1) + ); +\txeq_txcoeff_cnt_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_txcoeff_cnt(0), + Q => \txeq_txcoeff_cnt_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_cnt_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => txeq_txcoeff_cnt(1), + Q => \txeq_txcoeff_cnt_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[0]_i_1__2_n_0\, + Q => \txeq_txcoeff_reg_n_0_[0]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[10]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[10]_i_1__2_n_0\, + Q => \txeq_txcoeff_reg_n_0_[10]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[11]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[11]_i_1__2_n_0\, + Q => \txeq_txcoeff_reg_n_0_[11]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[12]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[12]_i_1__2_n_0\, + Q => \txeq_txcoeff_reg_n_0_[12]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[13]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[13]_i_1__2_n_0\, + Q => \txeq_txcoeff_reg_n_0_[13]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[14]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[14]_i_1__2_n_0\, + Q => \txeq_txcoeff_reg_n_0_[14]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[15]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[15]_i_1__2_n_0\, + Q => \txeq_txcoeff_reg_n_0_[15]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[16]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[16]_i_1__2_n_0\, + Q => \txeq_txcoeff_reg_n_0_[16]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[17]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[17]_i_1__2_n_0\, + Q => \txeq_txcoeff_reg_n_0_[17]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[18]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[18]_i_2__2_n_0\, + Q => \txeq_txcoeff_reg_n_0_[18]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[1]_i_1__2_n_0\, + Q => \txeq_txcoeff_reg_n_0_[1]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[2]_i_1__2_n_0\, + Q => \txeq_txcoeff_reg_n_0_[2]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[3]_i_1__2_n_0\, + Q => \txeq_txcoeff_reg_n_0_[3]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[4]_i_1__2_n_0\, + Q => \txeq_txcoeff_reg_n_0_[4]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[5]_i_1__2_n_0\, + Q => \txeq_txcoeff_reg_n_0_[5]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[6]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[6]_i_1__2_n_0\, + Q => \txeq_txcoeff_reg_n_0_[6]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[7]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[7]_i_1__2_n_0\, + Q => \txeq_txcoeff_reg_n_0_[7]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[8]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[8]_i_1__2_n_0\, + Q => \txeq_txcoeff_reg_n_0_[8]\, + R => RST_CPLLRESET + ); +\txeq_txcoeff_reg[9]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => txeq_txcoeff, + D => \txeq_txcoeff[9]_i_1__2_n_0\, + Q => \txeq_txcoeff_reg_n_0_[9]\, + R => RST_CPLLRESET + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_axi_basic_top is + port ( + E : out STD_LOGIC_VECTOR ( 0 to 0 ); + trn_rsrc_dsc_d : out STD_LOGIC; + m_axis_rx_tvalid_reg : out STD_LOGIC; + m_axis_rx_tkeep : out STD_LOGIC_VECTOR ( 0 to 0 ); + m_axis_rx_tlast : out STD_LOGIC; + reg_tcfg_gnt : out STD_LOGIC; + tready_thrtl_reg : out STD_LOGIC; + trn_teof : out STD_LOGIC; + trn_tsrc_rdy : out STD_LOGIC; + trn_trem : out STD_LOGIC_VECTOR ( 0 to 0 ); + trn_in_packet : out STD_LOGIC; + reg_dsc_detect : out STD_LOGIC; + ppm_L1_thrtl : out STD_LOGIC; + lnk_up_thrtl : out STD_LOGIC; + m_axis_rx_tuser : out STD_LOGIC_VECTOR ( 12 downto 0 ); + ppm_L1_trig : out STD_LOGIC; + cfg_pm_turnoff_ok_n : out STD_LOGIC; + trn_tcfg_gnt : out STD_LOGIC; + trn_tsof : out STD_LOGIC; + Q : out STD_LOGIC_VECTOR ( 63 downto 0 ); + \throttle_ctl_pipeline.reg_tdata_reg[63]\ : out STD_LOGIC_VECTOR ( 63 downto 0 ); + \throttle_ctl_pipeline.reg_tuser_reg[3]\ : out STD_LOGIC_VECTOR ( 3 downto 0 ); + \throttle_ctl_pipeline.reg_tkeep_reg[7]\ : in STD_LOGIC; + pipe_userclk2_in : in STD_LOGIC; + trn_rrem : in STD_LOGIC_VECTOR ( 0 to 0 ); + trn_rsrc_dsc : in STD_LOGIC; + rsrc_rdy_filtered : in STD_LOGIC; + trn_reof : in STD_LOGIC; + trn_rsrc_dsc_prev0 : in STD_LOGIC; + trn_rsof : in STD_LOGIC; + trn_recrc_err : in STD_LOGIC; + trn_rerrfwd : in STD_LOGIC; + tx_cfg_gnt : in STD_LOGIC; + trn_tcfg_req : in STD_LOGIC; + trn_tdst_rdy : in STD_LOGIC; + tbuf_av_min_trig : in STD_LOGIC; + cfg_turnoff_ok : in STD_LOGIC; + s_axis_tx_tlast : in STD_LOGIC; + s_axis_tx_tvalid : in STD_LOGIC; + s_axis_tx_tkeep : in STD_LOGIC_VECTOR ( 0 to 0 ); + trn_in_packet_reg : in STD_LOGIC; + ppm_L1_thrtl_reg : in STD_LOGIC; + lnk_up_thrtl_reg : in STD_LOGIC; + m_axis_rx_tready : in STD_LOGIC; + dsc_detect : in STD_LOGIC; + \out\ : in STD_LOGIC; + tcfg_req_trig : in STD_LOGIC; + tready_thrtl_i_5 : in STD_LOGIC; + cfg_pcie_link_state : in STD_LOGIC_VECTOR ( 2 downto 0 ); + s_axis_tx_tdata : in STD_LOGIC_VECTOR ( 63 downto 0 ); + s_axis_tx_tuser : in STD_LOGIC_VECTOR ( 3 downto 0 ); + trn_tbuf_av : in STD_LOGIC_VECTOR ( 5 downto 0 ); + trn_rd : in STD_LOGIC_VECTOR ( 63 downto 0 ); + trn_rbar_hit : in STD_LOGIC_VECTOR ( 6 downto 0 ); + cfg_to_turnoff : in STD_LOGIC + ); +end pcie_7x_0_pcie_7x_0_axi_basic_top; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_axi_basic_top is +begin +rx_inst: entity work.pcie_7x_0_pcie_7x_0_axi_basic_rx + port map ( + E(0) => E(0), + Q(63 downto 0) => Q(63 downto 0), + dsc_detect => dsc_detect, + m_axis_rx_tkeep(0) => m_axis_rx_tkeep(0), + m_axis_rx_tlast => m_axis_rx_tlast, + m_axis_rx_tready => m_axis_rx_tready, + m_axis_rx_tuser(12 downto 0) => m_axis_rx_tuser(12 downto 0), + m_axis_rx_tvalid_reg => m_axis_rx_tvalid_reg, + pipe_userclk2_in => pipe_userclk2_in, + reg_dsc_detect_reg => reg_dsc_detect, + rsrc_rdy_filtered => rsrc_rdy_filtered, + trn_in_packet => trn_in_packet, + trn_in_packet_reg => trn_in_packet_reg, + trn_rbar_hit(6 downto 0) => trn_rbar_hit(6 downto 0), + \trn_rbar_hit_prev_reg[0]\ => \throttle_ctl_pipeline.reg_tkeep_reg[7]\, + trn_rd(63 downto 0) => trn_rd(63 downto 0), + trn_recrc_err => trn_recrc_err, + trn_reof => trn_reof, + trn_rerrfwd => trn_rerrfwd, + trn_rrem(0) => trn_rrem(0), + trn_rsof => trn_rsof, + trn_rsrc_dsc => trn_rsrc_dsc, + trn_rsrc_dsc_d => trn_rsrc_dsc_d, + trn_rsrc_dsc_prev0 => trn_rsrc_dsc_prev0 + ); +tx_inst: entity work.pcie_7x_0_pcie_7x_0_axi_basic_tx + port map ( + cfg_pcie_link_state(2 downto 0) => cfg_pcie_link_state(2 downto 0), + cfg_pm_turnoff_ok_n => cfg_pm_turnoff_ok_n, + cfg_to_turnoff => cfg_to_turnoff, + cfg_turnoff_ok => cfg_turnoff_ok, + lnk_up_thrtl => lnk_up_thrtl, + lnk_up_thrtl_reg => lnk_up_thrtl_reg, + \out\ => \out\, + pipe_userclk2_in => pipe_userclk2_in, + ppm_L1_thrtl => ppm_L1_thrtl, + ppm_L1_thrtl_reg => ppm_L1_thrtl_reg, + ppm_L1_trig => ppm_L1_trig, + reg_tcfg_gnt => reg_tcfg_gnt, + s_axis_tx_tdata(63 downto 0) => s_axis_tx_tdata(63 downto 0), + s_axis_tx_tkeep(0) => s_axis_tx_tkeep(0), + s_axis_tx_tlast => s_axis_tx_tlast, + s_axis_tx_tuser(3 downto 0) => s_axis_tx_tuser(3 downto 0), + s_axis_tx_tvalid => s_axis_tx_tvalid, + tbuf_av_min_trig => tbuf_av_min_trig, + tcfg_req_trig => tcfg_req_trig, + \throttle_ctl_pipeline.reg_tdata_reg[63]\(63 downto 0) => \throttle_ctl_pipeline.reg_tdata_reg[63]\(63 downto 0), + \throttle_ctl_pipeline.reg_tkeep_reg[7]\ => \throttle_ctl_pipeline.reg_tkeep_reg[7]\, + \throttle_ctl_pipeline.reg_tuser_reg[3]\(3 downto 0) => \throttle_ctl_pipeline.reg_tuser_reg[3]\(3 downto 0), + tready_thrtl_i_5 => tready_thrtl_i_5, + tready_thrtl_reg => tready_thrtl_reg, + trn_tbuf_av(5 downto 0) => trn_tbuf_av(5 downto 0), + trn_tcfg_gnt => trn_tcfg_gnt, + trn_tcfg_req => trn_tcfg_req, + trn_tdst_rdy => trn_tdst_rdy, + trn_teof => trn_teof, + trn_trem(0) => trn_trem(0), + trn_tsof => trn_tsof, + trn_tsrc_rdy => trn_tsrc_rdy, + tx_cfg_gnt => tx_cfg_gnt + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_brams_7x is + port ( + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : out STD_LOGIC_VECTOR ( 67 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_rx_wen : in STD_LOGIC; + mim_rx_ren : in STD_LOGIC; + MIMRXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMRXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\ : in STD_LOGIC_VECTOR ( 67 downto 0 ) + ); +end pcie_7x_0_pcie_7x_0_pcie_brams_7x; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_brams_7x is +begin +\brams[0].ram\: entity work.pcie_7x_0_pcie_7x_0_pcie_bram_7x_18 + port map ( + MIMRXRADDR(11 downto 0) => MIMRXRADDR(11 downto 0), + MIMRXWADDR(11 downto 0) => MIMRXWADDR(11 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(8 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8 downto 0), + mim_rx_ren => mim_rx_ren, + mim_rx_wen => mim_rx_wen, + pipe_userclk1_in => pipe_userclk1_in + ); +\brams[1].ram\: entity work.pcie_7x_0_pcie_7x_0_pcie_bram_7x_19 + port map ( + MIMRXRADDR(11 downto 0) => MIMRXRADDR(11 downto 0), + MIMRXWADDR(11 downto 0) => MIMRXWADDR(11 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(17 downto 9), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(17 downto 9), + mim_rx_ren => mim_rx_ren, + mim_rx_wen => mim_rx_wen, + pipe_userclk1_in => pipe_userclk1_in + ); +\brams[2].ram\: entity work.pcie_7x_0_pcie_7x_0_pcie_bram_7x_20 + port map ( + MIMRXRADDR(11 downto 0) => MIMRXRADDR(11 downto 0), + MIMRXWADDR(11 downto 0) => MIMRXWADDR(11 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(26 downto 18), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(26 downto 18), + mim_rx_ren => mim_rx_ren, + mim_rx_wen => mim_rx_wen, + pipe_userclk1_in => pipe_userclk1_in + ); +\brams[3].ram\: entity work.pcie_7x_0_pcie_7x_0_pcie_bram_7x_21 + port map ( + MIMRXRADDR(11 downto 0) => MIMRXRADDR(11 downto 0), + MIMRXWADDR(11 downto 0) => MIMRXWADDR(11 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(35 downto 27), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(35 downto 27), + mim_rx_ren => mim_rx_ren, + mim_rx_wen => mim_rx_wen, + pipe_userclk1_in => pipe_userclk1_in + ); +\brams[4].ram\: entity work.pcie_7x_0_pcie_7x_0_pcie_bram_7x_22 + port map ( + MIMRXRADDR(11 downto 0) => MIMRXRADDR(11 downto 0), + MIMRXWADDR(11 downto 0) => MIMRXWADDR(11 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(44 downto 36), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(44 downto 36), + mim_rx_ren => mim_rx_ren, + mim_rx_wen => mim_rx_wen, + pipe_userclk1_in => pipe_userclk1_in + ); +\brams[5].ram\: entity work.pcie_7x_0_pcie_7x_0_pcie_bram_7x_23 + port map ( + MIMRXRADDR(11 downto 0) => MIMRXRADDR(11 downto 0), + MIMRXWADDR(11 downto 0) => MIMRXWADDR(11 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(53 downto 45), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(53 downto 45), + mim_rx_ren => mim_rx_ren, + mim_rx_wen => mim_rx_wen, + pipe_userclk1_in => pipe_userclk1_in + ); +\brams[6].ram\: entity work.pcie_7x_0_pcie_7x_0_pcie_bram_7x_24 + port map ( + MIMRXRADDR(11 downto 0) => MIMRXRADDR(11 downto 0), + MIMRXWADDR(11 downto 0) => MIMRXWADDR(11 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(62 downto 54), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(8 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(62 downto 54), + mim_rx_ren => mim_rx_ren, + mim_rx_wen => mim_rx_wen, + pipe_userclk1_in => pipe_userclk1_in + ); +\brams[7].ram\: entity work.pcie_7x_0_pcie_7x_0_pcie_bram_7x_25 + port map ( + MIMRXRADDR(11 downto 0) => MIMRXRADDR(11 downto 0), + MIMRXWADDR(11 downto 0) => MIMRXWADDR(11 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(4 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(67 downto 63), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(4 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(67 downto 63), + mim_rx_ren => mim_rx_ren, + mim_rx_wen => mim_rx_wen, + pipe_userclk1_in => pipe_userclk1_in + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_brams_7x_3 is + port ( + rdata : out STD_LOGIC_VECTOR ( 68 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_tx_wen : in STD_LOGIC; + mim_tx_ren : in STD_LOGIC; + MIMTXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMTXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + wdata : in STD_LOGIC_VECTOR ( 68 downto 0 ) + ); + attribute ORIG_REF_NAME : string; + attribute ORIG_REF_NAME of pcie_7x_0_pcie_7x_0_pcie_brams_7x_3 : entity is "pcie_7x_0_pcie_brams_7x"; +end pcie_7x_0_pcie_7x_0_pcie_brams_7x_3; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_brams_7x_3 is +begin +\brams[0].ram\: entity work.pcie_7x_0_pcie_7x_0_pcie_bram_7x + port map ( + MIMTXRADDR(11 downto 0) => MIMTXRADDR(11 downto 0), + MIMTXWADDR(11 downto 0) => MIMTXWADDR(11 downto 0), + mim_tx_ren => mim_tx_ren, + mim_tx_wen => mim_tx_wen, + pipe_userclk1_in => pipe_userclk1_in, + rdata(8 downto 0) => rdata(8 downto 0), + wdata(8 downto 0) => wdata(8 downto 0) + ); +\brams[1].ram\: entity work.pcie_7x_0_pcie_7x_0_pcie_bram_7x_4 + port map ( + MIMTXRADDR(11 downto 0) => MIMTXRADDR(11 downto 0), + MIMTXWADDR(11 downto 0) => MIMTXWADDR(11 downto 0), + mim_tx_ren => mim_tx_ren, + mim_tx_wen => mim_tx_wen, + pipe_userclk1_in => pipe_userclk1_in, + rdata(8 downto 0) => rdata(17 downto 9), + wdata(8 downto 0) => wdata(17 downto 9) + ); +\brams[2].ram\: entity work.pcie_7x_0_pcie_7x_0_pcie_bram_7x_5 + port map ( + MIMTXRADDR(11 downto 0) => MIMTXRADDR(11 downto 0), + MIMTXWADDR(11 downto 0) => MIMTXWADDR(11 downto 0), + mim_tx_ren => mim_tx_ren, + mim_tx_wen => mim_tx_wen, + pipe_userclk1_in => pipe_userclk1_in, + rdata(8 downto 0) => rdata(26 downto 18), + wdata(8 downto 0) => wdata(26 downto 18) + ); +\brams[3].ram\: entity work.pcie_7x_0_pcie_7x_0_pcie_bram_7x_6 + port map ( + MIMTXRADDR(11 downto 0) => MIMTXRADDR(11 downto 0), + MIMTXWADDR(11 downto 0) => MIMTXWADDR(11 downto 0), + mim_tx_ren => mim_tx_ren, + mim_tx_wen => mim_tx_wen, + pipe_userclk1_in => pipe_userclk1_in, + rdata(8 downto 0) => rdata(35 downto 27), + wdata(8 downto 0) => wdata(35 downto 27) + ); +\brams[4].ram\: entity work.pcie_7x_0_pcie_7x_0_pcie_bram_7x_7 + port map ( + MIMTXRADDR(11 downto 0) => MIMTXRADDR(11 downto 0), + MIMTXWADDR(11 downto 0) => MIMTXWADDR(11 downto 0), + mim_tx_ren => mim_tx_ren, + mim_tx_wen => mim_tx_wen, + pipe_userclk1_in => pipe_userclk1_in, + rdata(8 downto 0) => rdata(44 downto 36), + wdata(8 downto 0) => wdata(44 downto 36) + ); +\brams[5].ram\: entity work.pcie_7x_0_pcie_7x_0_pcie_bram_7x_8 + port map ( + MIMTXRADDR(11 downto 0) => MIMTXRADDR(11 downto 0), + MIMTXWADDR(11 downto 0) => MIMTXWADDR(11 downto 0), + mim_tx_ren => mim_tx_ren, + mim_tx_wen => mim_tx_wen, + pipe_userclk1_in => pipe_userclk1_in, + rdata(8 downto 0) => rdata(53 downto 45), + wdata(8 downto 0) => wdata(53 downto 45) + ); +\brams[6].ram\: entity work.pcie_7x_0_pcie_7x_0_pcie_bram_7x_9 + port map ( + MIMTXRADDR(11 downto 0) => MIMTXRADDR(11 downto 0), + MIMTXWADDR(11 downto 0) => MIMTXWADDR(11 downto 0), + mim_tx_ren => mim_tx_ren, + mim_tx_wen => mim_tx_wen, + pipe_userclk1_in => pipe_userclk1_in, + rdata(8 downto 0) => rdata(62 downto 54), + wdata(8 downto 0) => wdata(62 downto 54) + ); +\brams[7].ram\: entity work.pcie_7x_0_pcie_7x_0_pcie_bram_7x_10 + port map ( + MIMTXRADDR(11 downto 0) => MIMTXRADDR(11 downto 0), + MIMTXWADDR(11 downto 0) => MIMTXWADDR(11 downto 0), + mim_tx_ren => mim_tx_ren, + mim_tx_wen => mim_tx_wen, + pipe_userclk1_in => pipe_userclk1_in, + rdata(5 downto 0) => rdata(68 downto 63), + wdata(5 downto 0) => wdata(68 downto 63) + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pipe_wrapper is + port ( + cpllpd : out STD_LOGIC; + cpllpd_0 : out STD_LOGIC; + cpllpd_1 : out STD_LOGIC; + cpllpd_2 : out STD_LOGIC; + pci_exp_txn : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pci_exp_txp : out STD_LOGIC_VECTOR ( 3 downto 0 ); + PIPE_RXCHANISALIGNED : out STD_LOGIC_VECTOR ( 3 downto 0 ); + gt_rx_elec_idle_wire_filter : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_rxoutclk_out : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_txoutclk_out : out STD_LOGIC; + PIPE_RXSTATUS : out STD_LOGIC_VECTOR ( 2 downto 0 ); + gt_rx_data_wire_filter : out STD_LOGIC_VECTOR ( 63 downto 0 ); + gt_rx_data_k_wire_filter : out STD_LOGIC_VECTOR ( 7 downto 0 ); + pipe_dclk_in_0 : out STD_LOGIC_VECTOR ( 2 downto 0 ); + pipe_dclk_in_1 : out STD_LOGIC_VECTOR ( 2 downto 0 ); + pipe_dclk_in_2 : out STD_LOGIC_VECTOR ( 2 downto 0 ); + reg_clock_locked_reg : out STD_LOGIC; + gt_rxvalid_q_reg : out STD_LOGIC; + gt_rxvalid_q_reg_0 : out STD_LOGIC; + gt_rxvalid_q_reg_1 : out STD_LOGIC; + gt_rxvalid_q_reg_2 : out STD_LOGIC; + gen3_reg : out STD_LOGIC; + pipe_pclk_sel_out : out STD_LOGIC_VECTOR ( 3 downto 0 ); + rate_cpllpd_0 : out STD_LOGIC; + rate_cpllpd_1 : out STD_LOGIC; + rate_cpllpd_2 : out STD_LOGIC; + rate_cpllpd_3 : out STD_LOGIC; + gt_rx_phy_status_wire_filter : out STD_LOGIC_VECTOR ( 3 downto 0 ); + CPLLPD0 : in STD_LOGIC; + pipe_dclk_in : in STD_LOGIC; + sys_clk : in STD_LOGIC; + pci_exp_rxn : in STD_LOGIC_VECTOR ( 3 downto 0 ); + pci_exp_rxp : in STD_LOGIC_VECTOR ( 3 downto 0 ); + PIPE_RXPOLARITY : in STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_rxusrclk_in : in STD_LOGIC; + pipe_tx_deemph_gt : in STD_LOGIC; + pipe_tx_rcvr_det_gt : in STD_LOGIC; + PIPE_TXELECIDLE : in STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_pclk_in : in STD_LOGIC; + PIPE_POWERDOWN : in STD_LOGIC_VECTOR ( 7 downto 0 ); + \cplllock_reg1_reg[3]\ : in STD_LOGIC_VECTOR ( 2 downto 0 ); + PIPE_TXDATA : in STD_LOGIC_VECTOR ( 63 downto 0 ); + PIPE_TXCOMPLIANCE : in STD_LOGIC_VECTOR ( 3 downto 0 ); + PIPE_TXDATAK : in STD_LOGIC_VECTOR ( 7 downto 0 ); + CPLLPD0_3 : in STD_LOGIC; + CPLLPD0_4 : in STD_LOGIC; + CPLLPD0_5 : in STD_LOGIC; + reset_n_reg1_reg_0 : in STD_LOGIC; + reg_clock_locked : in STD_LOGIC; + pipe_rx0_valid_gt : in STD_LOGIC; + pipe_rx1_valid_gt : in STD_LOGIC; + pipe_rx2_valid_gt : in STD_LOGIC; + pipe_rx3_valid_gt : in STD_LOGIC; + \rate_reg1_reg[0]\ : in STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_mmcm_lock_in : in STD_LOGIC; + pipe_oobclk_in : in STD_LOGIC + ); +end pcie_7x_0_pcie_7x_0_pipe_wrapper; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pipe_wrapper is + signal \^pipe_rxstatus\ : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal SYNC_TXSYNC_START0 : STD_LOGIC; + signal SYNC_TXSYNC_START00_out : STD_LOGIC; + signal SYNC_TXSYNC_START010_out : STD_LOGIC; + signal SYNC_TXSYNC_START05_out : STD_LOGIC; + signal drp_done_0 : STD_LOGIC; + signal drp_done_1 : STD_LOGIC; + signal drp_done_2 : STD_LOGIC; + signal drp_done_3 : STD_LOGIC; + signal eq_txeq_maincursor_0 : STD_LOGIC_VECTOR ( 6 downto 0 ); + signal eq_txeq_maincursor_14 : STD_LOGIC_VECTOR ( 6 downto 0 ); + signal eq_txeq_maincursor_21 : STD_LOGIC_VECTOR ( 6 downto 0 ); + signal eq_txeq_maincursor_7 : STD_LOGIC_VECTOR ( 6 downto 0 ); + signal eq_txeq_postcursor_0 : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal eq_txeq_postcursor_10 : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal eq_txeq_postcursor_15 : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal eq_txeq_postcursor_5 : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal eq_txeq_precursor_0 : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal eq_txeq_precursor_10 : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal eq_txeq_precursor_15 : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal eq_txeq_precursor_5 : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal \^gen3_reg\ : STD_LOGIC; + signal gt_cpllpdrefclk : STD_LOGIC; + signal gt_phystatus_0 : STD_LOGIC; + signal gt_phystatus_1 : STD_LOGIC; + signal gt_phystatus_2 : STD_LOGIC; + signal gt_phystatus_3 : STD_LOGIC; + signal \^gt_rx_elec_idle_wire_filter\ : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal gt_rxcdrlock_0 : STD_LOGIC; + signal gt_rxcdrlock_1 : STD_LOGIC; + signal gt_rxcdrlock_2 : STD_LOGIC; + signal gt_rxcdrlock_3 : STD_LOGIC; + signal \gt_rxchbondi[3]_0\ : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal gt_rxratedone_0 : STD_LOGIC; + signal gt_rxratedone_1 : STD_LOGIC; + signal gt_rxratedone_2 : STD_LOGIC; + signal gt_rxratedone_3 : STD_LOGIC; + signal gt_rxresetdone_0 : STD_LOGIC; + signal gt_rxresetdone_1 : STD_LOGIC; + signal gt_rxresetdone_2 : STD_LOGIC; + signal gt_rxresetdone_3 : STD_LOGIC; + signal gt_rxvalid_0 : STD_LOGIC; + signal gt_rxvalid_1 : STD_LOGIC; + signal gt_rxvalid_2 : STD_LOGIC; + signal gt_rxvalid_3 : STD_LOGIC; + signal gt_txratedone_0 : STD_LOGIC; + signal gt_txratedone_1 : STD_LOGIC; + signal gt_txratedone_2 : STD_LOGIC; + signal gt_txratedone_3 : STD_LOGIC; + signal gt_txresetdone_0 : STD_LOGIC; + signal gt_txresetdone_1 : STD_LOGIC; + signal gt_txresetdone_2 : STD_LOGIC; + signal gt_txresetdone_3 : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_i_52_n_0\ : STD_LOGIC; + signal \gtx_channel.gtxe2_channel_i_i_6__2_n_0\ : STD_LOGIC; + signal p_0_in1_in : STD_LOGIC; + signal p_0_in1_in_0 : STD_LOGIC; + signal p_0_in1_in_3 : STD_LOGIC; + signal p_0_in1_in_4 : STD_LOGIC; + signal p_1_in : STD_LOGIC; + signal p_1_in2_in : STD_LOGIC; + signal p_1_in2_in_1 : STD_LOGIC; + signal p_1_in2_in_2 : STD_LOGIC; + signal p_1_in2_in_5 : STD_LOGIC; + signal \^pipe_dclk_in_0\ : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal \^pipe_dclk_in_1\ : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal \^pipe_dclk_in_2\ : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal \pipe_lane[0].gt_wrapper_i_n_1\ : STD_LOGIC; + signal \pipe_lane[0].gt_wrapper_i_n_11\ : STD_LOGIC; + signal \pipe_lane[0].gt_wrapper_i_n_15\ : STD_LOGIC; + signal \pipe_lane[0].gt_wrapper_i_n_17\ : STD_LOGIC; + signal \pipe_lane[0].gt_wrapper_i_n_18\ : STD_LOGIC; + signal \pipe_lane[0].gt_wrapper_i_n_2\ : STD_LOGIC; + signal \pipe_lane[0].gt_wrapper_i_n_21\ : STD_LOGIC; + signal \pipe_lane[0].gt_wrapper_i_n_22\ : STD_LOGIC; + signal \pipe_lane[0].gt_wrapper_i_n_23\ : STD_LOGIC; + signal \pipe_lane[0].gt_wrapper_i_n_24\ : STD_LOGIC; + signal \pipe_lane[0].gt_wrapper_i_n_25\ : STD_LOGIC; + signal \pipe_lane[0].gt_wrapper_i_n_26\ : STD_LOGIC; + signal \pipe_lane[0].gt_wrapper_i_n_27\ : STD_LOGIC; + signal \pipe_lane[0].gt_wrapper_i_n_28\ : STD_LOGIC; + signal \pipe_lane[0].gt_wrapper_i_n_29\ : STD_LOGIC; + signal \pipe_lane[0].gt_wrapper_i_n_30\ : STD_LOGIC; + signal \pipe_lane[0].gt_wrapper_i_n_31\ : STD_LOGIC; + signal \pipe_lane[0].gt_wrapper_i_n_32\ : STD_LOGIC; + signal \pipe_lane[0].gt_wrapper_i_n_33\ : STD_LOGIC; + signal \pipe_lane[0].gt_wrapper_i_n_34\ : STD_LOGIC; + signal \pipe_lane[0].gt_wrapper_i_n_35\ : STD_LOGIC; + signal \pipe_lane[0].gt_wrapper_i_n_36\ : STD_LOGIC; + signal \pipe_lane[0].gt_wrapper_i_n_8\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_0\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_1\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_10\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_11\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_12\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_13\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_14\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_15\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_16\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_17\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_18\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_19\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_2\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_20\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_21\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_22\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_23\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_24\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_25\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_3\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_4\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_5\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_6\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_7\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_8\ : STD_LOGIC; + signal \pipe_lane[0].pipe_drp.pipe_drp_i_n_9\ : STD_LOGIC; + signal \pipe_lane[0].pipe_eq.pipe_eq_i_n_17\ : STD_LOGIC; + signal \pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_0\ : STD_LOGIC; + signal \pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_1\ : STD_LOGIC; + signal \pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_2\ : STD_LOGIC; + signal \pipe_lane[0].pipe_sync_i_n_1\ : STD_LOGIC; + signal \pipe_lane[0].pipe_user_i_n_1\ : STD_LOGIC; + signal \pipe_lane[0].pipe_user_i_n_10\ : STD_LOGIC; + signal \pipe_lane[0].pipe_user_i_n_11\ : STD_LOGIC; + signal \pipe_lane[0].pipe_user_i_n_12\ : STD_LOGIC; + signal \pipe_lane[0].pipe_user_i_n_15\ : STD_LOGIC; + signal \pipe_lane[0].pipe_user_i_n_5\ : STD_LOGIC; + signal \pipe_lane[0].pipe_user_i_n_6\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i_n_1\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i_n_11\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i_n_15\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i_n_16\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i_n_17\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i_n_2\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i_n_20\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i_n_21\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i_n_22\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i_n_23\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i_n_24\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i_n_25\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i_n_26\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i_n_27\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i_n_28\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i_n_29\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i_n_30\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i_n_31\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i_n_32\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i_n_33\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i_n_34\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i_n_35\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i_n_8\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_0\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_1\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_10\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_11\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_12\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_13\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_14\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_15\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_16\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_17\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_18\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_19\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_2\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_20\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_21\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_22\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_23\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_24\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_25\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_3\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_4\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_5\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_6\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_7\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_8\ : STD_LOGIC; + signal \pipe_lane[1].pipe_drp.pipe_drp_i_n_9\ : STD_LOGIC; + signal \pipe_lane[1].pipe_eq.pipe_eq_i_n_17\ : STD_LOGIC; + signal \pipe_lane[1].pipe_rate.pipe_rate_i_n_1\ : STD_LOGIC; + signal \pipe_lane[1].pipe_user_i_n_1\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i_n_1\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i_n_11\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i_n_15\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i_n_16\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i_n_17\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i_n_2\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i_n_20\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i_n_21\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i_n_22\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i_n_23\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i_n_24\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i_n_25\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i_n_26\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i_n_27\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i_n_28\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i_n_29\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i_n_30\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i_n_31\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i_n_32\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i_n_33\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i_n_34\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i_n_35\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i_n_8\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_0\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_1\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_10\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_11\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_12\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_13\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_14\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_15\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_16\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_17\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_18\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_19\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_2\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_20\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_21\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_22\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_23\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_24\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_25\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_3\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_4\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_5\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_6\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_7\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_8\ : STD_LOGIC; + signal \pipe_lane[2].pipe_drp.pipe_drp_i_n_9\ : STD_LOGIC; + signal \pipe_lane[2].pipe_eq.pipe_eq_i_n_17\ : STD_LOGIC; + signal \pipe_lane[2].pipe_user_i_n_10\ : STD_LOGIC; + signal \pipe_lane[2].pipe_user_i_n_11\ : STD_LOGIC; + signal \pipe_lane[2].pipe_user_i_n_14\ : STD_LOGIC; + signal \pipe_lane[2].pipe_user_i_n_2\ : STD_LOGIC; + signal \pipe_lane[2].pipe_user_i_n_5\ : STD_LOGIC; + signal \pipe_lane[2].pipe_user_i_n_9\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i_n_1\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i_n_11\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i_n_15\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i_n_16\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i_n_17\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i_n_2\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i_n_20\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i_n_21\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i_n_22\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i_n_23\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i_n_24\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i_n_25\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i_n_26\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i_n_27\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i_n_28\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i_n_29\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i_n_30\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i_n_31\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i_n_32\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i_n_33\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i_n_34\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i_n_35\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i_n_8\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_0\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_1\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_10\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_11\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_12\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_13\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_14\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_15\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_16\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_17\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_18\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_19\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_2\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_20\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_21\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_22\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_23\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_24\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_25\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_3\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_4\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_5\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_6\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_7\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_8\ : STD_LOGIC; + signal \pipe_lane[3].pipe_drp.pipe_drp_i_n_9\ : STD_LOGIC; + signal \pipe_lane[3].pipe_eq.pipe_eq_i_n_17\ : STD_LOGIC; + signal \pipe_lane[3].pipe_user_i_n_1\ : STD_LOGIC; + signal \^pipe_pclk_sel_out\ : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal \pipe_reset.pipe_reset_i_n_0\ : STD_LOGIC; + signal \pipe_reset.pipe_reset_i_n_1\ : STD_LOGIC; + signal qdrp_done : STD_LOGIC; + signal \qpll_reset.qpll_reset_i_n_0\ : STD_LOGIC; + signal qpllpd : STD_LOGIC; + signal qrst_drp_start : STD_LOGIC; + signal qrst_qpllreset : STD_LOGIC; + signal rate_cpllreset_0 : STD_LOGIC; + signal rate_cpllreset_1 : STD_LOGIC; + signal rate_cpllreset_2 : STD_LOGIC; + signal rate_cpllreset_3 : STD_LOGIC; + signal rate_done_0 : STD_LOGIC; + signal rate_done_1 : STD_LOGIC; + signal rate_done_2 : STD_LOGIC; + signal rate_done_3 : STD_LOGIC; + signal rate_drp_start_0 : STD_LOGIC; + signal rate_drp_start_1 : STD_LOGIC; + signal rate_drp_start_2 : STD_LOGIC; + signal rate_drp_start_3 : STD_LOGIC; + signal rate_drp_x16_0 : STD_LOGIC; + signal rate_drp_x16_1 : STD_LOGIC; + signal rate_drp_x16_2 : STD_LOGIC; + signal rate_drp_x16_3 : STD_LOGIC; + signal rate_drp_x16x20_mode_0 : STD_LOGIC; + signal rate_drp_x16x20_mode_1 : STD_LOGIC; + signal rate_drp_x16x20_mode_2 : STD_LOGIC; + signal rate_drp_x16x20_mode_3 : STD_LOGIC; + signal rate_gen3_1 : STD_LOGIC; + signal rate_gen3_2 : STD_LOGIC; + signal rate_gen3_3 : STD_LOGIC; + signal rate_idle_0 : STD_LOGIC; + signal rate_idle_1 : STD_LOGIC; + signal rate_idle_2 : STD_LOGIC; + signal rate_idle_3 : STD_LOGIC; + signal rate_qpllpd : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal rate_qpllreset : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal rate_rate_0 : STD_LOGIC_VECTOR ( 0 to 0 ); + signal rate_rate_3 : STD_LOGIC_VECTOR ( 0 to 0 ); + signal rate_rate_6 : STD_LOGIC_VECTOR ( 0 to 0 ); + signal rate_rate_9 : STD_LOGIC_VECTOR ( 0 to 0 ); + signal rate_resetovrd_start_0 : STD_LOGIC; + signal rate_resetovrd_start_1 : STD_LOGIC; + signal rate_resetovrd_start_2 : STD_LOGIC; + signal rate_resetovrd_start_3 : STD_LOGIC; + signal rate_rxsync_0 : STD_LOGIC; + signal rate_rxsync_1 : STD_LOGIC; + signal rate_rxsync_2 : STD_LOGIC; + signal rate_rxsync_3 : STD_LOGIC; + signal rate_rxsync_start_0 : STD_LOGIC; + signal rate_rxsync_start_1 : STD_LOGIC; + signal rate_rxsync_start_2 : STD_LOGIC; + signal rate_rxsync_start_3 : STD_LOGIC; + signal rate_sysclksel_0 : STD_LOGIC_VECTOR ( 0 to 0 ); + signal rate_sysclksel_2 : STD_LOGIC_VECTOR ( 0 to 0 ); + signal rate_sysclksel_4 : STD_LOGIC_VECTOR ( 0 to 0 ); + signal rate_sysclksel_6 : STD_LOGIC_VECTOR ( 0 to 0 ); + signal rate_txpmareset_0 : STD_LOGIC; + signal rate_txpmareset_1 : STD_LOGIC; + signal rate_txpmareset_2 : STD_LOGIC; + signal rate_txpmareset_3 : STD_LOGIC; + signal reset_n_reg1 : STD_LOGIC; + attribute SHIFT_EXTRACT : string; + attribute SHIFT_EXTRACT of reset_n_reg1 : signal is "NO"; + attribute async_reg : string; + attribute async_reg of reset_n_reg1 : signal is "true"; + signal reset_n_reg2 : STD_LOGIC; + attribute SHIFT_EXTRACT of reset_n_reg2 : signal is "NO"; + attribute async_reg of reset_n_reg2 : signal is "true"; + signal rst_cpllreset : STD_LOGIC; + signal rst_dclk_reset : STD_LOGIC; + signal rst_gtreset : STD_LOGIC; + signal rst_rxusrclk_reset : STD_LOGIC; + signal rst_txsync_start : STD_LOGIC; + signal rst_userrdy : STD_LOGIC; + signal rxchbonden_0 : STD_LOGIC; + signal rxchbonden_1 : STD_LOGIC; + signal rxchbonden_2 : STD_LOGIC; + signal rxchbonden_3 : STD_LOGIC; + signal rxdlysresetdone_3 : STD_LOGIC; + signal rxphaligndone_s_3 : STD_LOGIC; + signal sync_txdlyen_0 : STD_LOGIC; + signal sync_txdlysreset_0 : STD_LOGIC; + signal sync_txdlysreset_1 : STD_LOGIC; + signal sync_txdlysreset_2 : STD_LOGIC; + signal sync_txdlysreset_3 : STD_LOGIC; + signal sync_txphalign_0 : STD_LOGIC; + signal sync_txphalign_1 : STD_LOGIC; + signal sync_txphalign_2 : STD_LOGIC; + signal sync_txphalign_3 : STD_LOGIC; + signal sync_txphinit_0 : STD_LOGIC; + signal sync_txphinit_1 : STD_LOGIC; + signal sync_txphinit_2 : STD_LOGIC; + signal sync_txphinit_3 : STD_LOGIC; + signal sync_txsync_done_0 : STD_LOGIC; + signal sync_txsync_done_1 : STD_LOGIC; + signal sync_txsync_done_2 : STD_LOGIC; + signal sync_txsync_done_3 : STD_LOGIC; + signal txdlysresetdone_3 : STD_LOGIC; + signal txsyncallin : STD_LOGIC; + signal user_active_lane_0 : STD_LOGIC; + signal user_active_lane_1 : STD_LOGIC; + signal user_active_lane_2 : STD_LOGIC; + signal user_active_lane_3 : STD_LOGIC; + signal user_oobclk_0 : STD_LOGIC; + signal user_oobclk_1 : STD_LOGIC; + signal user_oobclk_2 : STD_LOGIC; + signal user_oobclk_3 : STD_LOGIC; + signal user_resetdone : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal user_rx_converge : STD_LOGIC_VECTOR ( 3 downto 1 ); + signal user_rxcdrlock_0 : STD_LOGIC; + signal user_rxcdrlock_1 : STD_LOGIC; + signal user_rxcdrlock_2 : STD_LOGIC; + signal user_rxcdrlock_3 : STD_LOGIC; + attribute BOX_TYPE : string; + attribute BOX_TYPE of cpllpd_refclk_inst : label is "PRIMITIVE"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of reset_n_reg1_reg : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of reset_n_reg1_reg : label is "yes"; + attribute SHIFT_EXTRACT of reset_n_reg1_reg : label is "NO"; + attribute ASYNC_REG_boolean of reset_n_reg2_reg : label is std.standard.true; + attribute KEEP of reset_n_reg2_reg : label is "yes"; + attribute SHIFT_EXTRACT of reset_n_reg2_reg : label is "NO"; +begin + PIPE_RXSTATUS(2 downto 0) <= \^pipe_rxstatus\(2 downto 0); + gen3_reg <= \^gen3_reg\; + gt_rx_elec_idle_wire_filter(3 downto 0) <= \^gt_rx_elec_idle_wire_filter\(3 downto 0); + pipe_dclk_in_0(2 downto 0) <= \^pipe_dclk_in_0\(2 downto 0); + pipe_dclk_in_1(2 downto 0) <= \^pipe_dclk_in_1\(2 downto 0); + pipe_dclk_in_2(2 downto 0) <= \^pipe_dclk_in_2\(2 downto 0); + pipe_pclk_sel_out(3 downto 0) <= \^pipe_pclk_sel_out\(3 downto 0); +cpllpd_refclk_inst: unisim.vcomponents.BUFG + port map ( + I => sys_clk, + O => gt_cpllpdrefclk + ); +\gtx_channel.gtxe2_channel_i_i_52\: unisim.vcomponents.LUT5 + generic map( + INIT => X"4555FFFF" + ) + port map ( + I0 => \pipe_lane[2].pipe_user_i_n_14\, + I1 => \pipe_lane[2].pipe_user_i_n_9\, + I2 => \pipe_lane[2].pipe_user_i_n_11\, + I3 => \pipe_lane[2].pipe_user_i_n_10\, + I4 => user_rx_converge(3), + O => \gtx_channel.gtxe2_channel_i_i_52_n_0\ + ); +\gtx_channel.gtxe2_channel_i_i_6__2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"00000000AAAA0080" + ) + port map ( + I0 => user_rx_converge(1), + I1 => \pipe_lane[0].pipe_user_i_n_11\, + I2 => \pipe_lane[0].pipe_user_i_n_12\, + I3 => \pipe_lane[0].pipe_user_i_n_10\, + I4 => \pipe_lane[0].pipe_user_i_n_15\, + I5 => \gtx_channel.gtxe2_channel_i_i_52_n_0\, + O => \gtx_channel.gtxe2_channel_i_i_6__2_n_0\ + ); +\pipe_lane[0].gt_wrapper_i\: entity work.pcie_7x_0_pcie_7x_0_gt_wrapper + port map ( + CPLLPD0 => CPLLPD0, + DRPADDR(7) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_18\, + DRPADDR(6) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_19\, + DRPADDR(5) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_20\, + DRPADDR(4) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_21\, + DRPADDR(3) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_22\, + DRPADDR(2) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_23\, + DRPADDR(1) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_24\, + DRPADDR(0) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_25\, + DRPDI(15) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_2\, + DRPDI(14) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_3\, + DRPDI(13) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_4\, + DRPDI(12) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_5\, + DRPDI(11) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_6\, + DRPDI(10) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_7\, + DRPDI(9) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_8\, + DRPDI(8) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_9\, + DRPDI(7) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_10\, + DRPDI(6) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_11\, + DRPDI(5) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_12\, + DRPDI(4) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_13\, + DRPDI(3) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_14\, + DRPDI(2) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_15\, + DRPDI(1) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_16\, + DRPDI(0) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_17\, + DRP_DO(15) => \pipe_lane[0].gt_wrapper_i_n_21\, + DRP_DO(14) => \pipe_lane[0].gt_wrapper_i_n_22\, + DRP_DO(13) => \pipe_lane[0].gt_wrapper_i_n_23\, + DRP_DO(12) => \pipe_lane[0].gt_wrapper_i_n_24\, + DRP_DO(11) => \pipe_lane[0].gt_wrapper_i_n_25\, + DRP_DO(10) => \pipe_lane[0].gt_wrapper_i_n_26\, + DRP_DO(9) => \pipe_lane[0].gt_wrapper_i_n_27\, + DRP_DO(8) => \pipe_lane[0].gt_wrapper_i_n_28\, + DRP_DO(7) => \pipe_lane[0].gt_wrapper_i_n_29\, + DRP_DO(6) => \pipe_lane[0].gt_wrapper_i_n_30\, + DRP_DO(5) => \pipe_lane[0].gt_wrapper_i_n_31\, + DRP_DO(4) => \pipe_lane[0].gt_wrapper_i_n_32\, + DRP_DO(3) => \pipe_lane[0].gt_wrapper_i_n_33\, + DRP_DO(2) => \pipe_lane[0].gt_wrapper_i_n_34\, + DRP_DO(1) => \pipe_lane[0].gt_wrapper_i_n_35\, + DRP_DO(0) => \pipe_lane[0].gt_wrapper_i_n_36\, + DRP_GTXRESET => rst_gtreset, + DRP_RDY => \pipe_lane[0].gt_wrapper_i_n_2\, + PIPE_POWERDOWN(1 downto 0) => PIPE_POWERDOWN(1 downto 0), + PIPE_RXCHANISALIGNED(0) => PIPE_RXCHANISALIGNED(0), + PIPE_RXPOLARITY(0) => PIPE_RXPOLARITY(0), + PIPE_RXSTATUS(2 downto 0) => \^pipe_rxstatus\(2 downto 0), + PIPE_TXCOMPLIANCE(0) => PIPE_TXCOMPLIANCE(0), + PIPE_TXDATA(15 downto 0) => PIPE_TXDATA(15 downto 0), + PIPE_TXDATAK(1 downto 0) => PIPE_TXDATAK(1 downto 0), + PIPE_TXELECIDLE(0) => PIPE_TXELECIDLE(0), + QPLL_QPLLOUTCLK => \pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_1\, + QPLL_QPLLOUTREFCLK => \pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_2\, + QRST_CPLLLOCK(0) => \pipe_lane[0].gt_wrapper_i_n_1\, + RATE_PHYSTATUS => gt_phystatus_0, + RATE_RXRATEDONE => gt_rxratedone_0, + RATE_TXRATEDONE => gt_txratedone_0, + RST_CPLLRESET => rst_cpllreset, + RXCHBONDO(4 downto 0) => \gt_rxchbondi[3]_0\(4 downto 0), + RXRATE(0) => rate_rate_0(0), + RXSYSCLKSEL(0) => rate_sysclksel_0(0), + SYNC_RXPHALIGNDONE_M => \pipe_lane[0].gt_wrapper_i_n_11\, + SYNC_TXDLYSRESET => sync_txdlysreset_0, + SYNC_TXPHALIGN => sync_txphalign_0, + SYNC_TXPHINIT => sync_txphinit_0, + TXMAINCURSOR(6 downto 0) => eq_txeq_maincursor_0(6 downto 0), + TXPOSTCURSOR(4 downto 0) => eq_txeq_postcursor_0(4 downto 0), + TXPRECURSOR(4 downto 0) => eq_txeq_precursor_0(4 downto 0), + USER_OOBCLK => user_oobclk_0, + USER_RXRESETDONE => gt_rxresetdone_0, + USER_TXRESETDONE => gt_txresetdone_0, + \cplllock_reg1_reg[0]\ => \pipe_lane[0].pipe_drp.pipe_drp_i_n_0\, + \cplllock_reg1_reg[0]_0\ => \pipe_lane[0].pipe_drp.pipe_drp_i_n_1\, + \cplllock_reg1_reg[0]_1\ => \gtx_channel.gtxe2_channel_i_i_6__2_n_0\, + \cplllock_reg1_reg[0]_2\(2 downto 0) => \cplllock_reg1_reg[3]\(2 downto 0), + cpllpd => cpllpd, + gt_cpllpdrefclk => gt_cpllpdrefclk, + gt_rx_data_k_wire_filter(1 downto 0) => gt_rx_data_k_wire_filter(1 downto 0), + gt_rx_data_wire_filter(15 downto 0) => gt_rx_data_wire_filter(15 downto 0), + gt_rx_elec_idle_wire_filter(0) => \^gt_rx_elec_idle_wire_filter\(0), + gt_rxcdrlock_0 => gt_rxcdrlock_0, + gt_rxvalid_0 => gt_rxvalid_0, + pci_exp_rxn(0) => pci_exp_rxn(0), + pci_exp_rxp(0) => pci_exp_rxp(0), + pci_exp_txn(0) => pci_exp_txn(0), + pci_exp_txp(0) => pci_exp_txp(0), + pipe_dclk_in => pipe_dclk_in, + pipe_dclk_in_0 => \pipe_lane[0].gt_wrapper_i_n_8\, + pipe_dclk_in_1 => \pipe_lane[0].gt_wrapper_i_n_15\, + pipe_dclk_in_2 => \pipe_lane[0].gt_wrapper_i_n_17\, + pipe_dclk_in_3 => \pipe_lane[0].gt_wrapper_i_n_18\, + pipe_pclk_in => pipe_pclk_in, + pipe_rxoutclk_out(0) => pipe_rxoutclk_out(0), + pipe_rxusrclk_in => pipe_rxusrclk_in, + pipe_tx_deemph_gt => pipe_tx_deemph_gt, + pipe_tx_rcvr_det_gt => pipe_tx_rcvr_det_gt, + pipe_txoutclk_out => pipe_txoutclk_out, + rate_cpllreset_0 => rate_cpllreset_0, + rate_txpmareset_0 => rate_txpmareset_0, + rst_userrdy => rst_userrdy, + rxchbonden_0 => rxchbonden_0, + sync_txdlyen_0 => sync_txdlyen_0, + sys_clk => sys_clk + ); +\pipe_lane[0].pipe_drp.pipe_drp_i\: entity work.pcie_7x_0_pcie_7x_0_pipe_drp + port map ( + D(15) => \pipe_lane[0].gt_wrapper_i_n_21\, + D(14) => \pipe_lane[0].gt_wrapper_i_n_22\, + D(13) => \pipe_lane[0].gt_wrapper_i_n_23\, + D(12) => \pipe_lane[0].gt_wrapper_i_n_24\, + D(11) => \pipe_lane[0].gt_wrapper_i_n_25\, + D(10) => \pipe_lane[0].gt_wrapper_i_n_26\, + D(9) => \pipe_lane[0].gt_wrapper_i_n_27\, + D(8) => \pipe_lane[0].gt_wrapper_i_n_28\, + D(7) => \pipe_lane[0].gt_wrapper_i_n_29\, + D(6) => \pipe_lane[0].gt_wrapper_i_n_30\, + D(5) => \pipe_lane[0].gt_wrapper_i_n_31\, + D(4) => \pipe_lane[0].gt_wrapper_i_n_32\, + D(3) => \pipe_lane[0].gt_wrapper_i_n_33\, + D(2) => \pipe_lane[0].gt_wrapper_i_n_34\, + D(1) => \pipe_lane[0].gt_wrapper_i_n_35\, + D(0) => \pipe_lane[0].gt_wrapper_i_n_36\, + DRPADDR(7) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_18\, + DRPADDR(6) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_19\, + DRPADDR(5) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_20\, + DRPADDR(4) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_21\, + DRPADDR(3) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_22\, + DRPADDR(2) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_23\, + DRPADDR(1) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_24\, + DRPADDR(0) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_25\, + DRPDI(15) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_2\, + DRPDI(14) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_3\, + DRPDI(13) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_4\, + DRPDI(12) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_5\, + DRPDI(11) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_6\, + DRPDI(10) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_7\, + DRPDI(9) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_8\, + DRPDI(8) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_9\, + DRPDI(7) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_10\, + DRPDI(6) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_11\, + DRPDI(5) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_12\, + DRPDI(4) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_13\, + DRPDI(3) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_14\, + DRPDI(2) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_15\, + DRPDI(1) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_16\, + DRPDI(0) => \pipe_lane[0].pipe_drp.pipe_drp_i_n_17\, + DRP_DONE => drp_done_0, + DRP_GTXRESET => rst_gtreset, + DRP_RDY => \pipe_lane[0].gt_wrapper_i_n_2\, + RATE_DRP_START => rate_drp_start_0, + RATE_DRP_X16 => rate_drp_x16_0, + RATE_DRP_X16X20_MODE => rate_drp_x16x20_mode_0, + RST_DCLK_RESET => rst_dclk_reset, + \fsm_reg[1]_0\ => \pipe_lane[0].pipe_drp.pipe_drp_i_n_0\, + \fsm_reg[1]_1\ => \pipe_lane[0].pipe_drp.pipe_drp_i_n_1\, + pipe_dclk_in => pipe_dclk_in, + \rate_reg1_reg[0]_0\(0) => \rate_reg1_reg[0]\(0) + ); +\pipe_lane[0].pipe_eq.pipe_eq_i\: entity work.pcie_7x_0_pcie_7x_0_pipe_eq + port map ( + RST_CPLLRESET => rst_cpllreset, + TXMAINCURSOR(6 downto 0) => eq_txeq_maincursor_0(6 downto 0), + TXPOSTCURSOR(4 downto 0) => eq_txeq_postcursor_0(4 downto 0), + TXPRECURSOR(4 downto 0) => eq_txeq_precursor_0(4 downto 0), + USER_RATE_GEN3 => \^gen3_reg\, + USER_RXEQ_ADAPT_DONE => \pipe_lane[0].pipe_eq.pipe_eq_i_n_17\, + pipe_pclk_in => pipe_pclk_in + ); +\pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i\: entity work.pcie_7x_0_pcie_7x_0_gt_common + port map ( + QPLL_DRP_DONE => qdrp_done, + QPLL_DRP_GEN3 => \pipe_lane[1].pipe_rate.pipe_rate_i_n_1\, + QPLL_QPLLLOCK => \pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_0\, + QPLL_QPLLOUTCLK => \pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_1\, + QPLL_QPLLOUTREFCLK => \pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_2\, + QPLL_QPLLPD => qpllpd, + QPLL_QPLLRESET => qrst_qpllreset, + QRST_DRP_START => qrst_drp_start, + RST_DCLK_RESET => rst_dclk_reset, + pipe_dclk_in => pipe_dclk_in, + sys_clk => sys_clk + ); +\pipe_lane[0].pipe_rate.pipe_rate_i\: entity work.pcie_7x_0_pcie_7x_0_pipe_rate + port map ( + QRST_CPLLLOCK(0) => \pipe_lane[0].gt_wrapper_i_n_1\, + QRST_QPLLPD_IN(0) => rate_qpllpd(0), + QRST_QPLLRESET_IN(0) => rate_qpllreset(0), + RATE_DRP_DONE => drp_done_0, + RATE_DRP_START => rate_drp_start_0, + RATE_DRP_X16 => rate_drp_x16_0, + RATE_DRP_X16X20_MODE => rate_drp_x16x20_mode_0, + RATE_PHYSTATUS => gt_phystatus_0, + RATE_QPLLLOCK => \pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_0\, + RATE_RXRATEDONE => gt_rxratedone_0, + RATE_TXRATEDONE => gt_txratedone_0, + RATE_TXSYNC_DONE => sync_txsync_done_0, + RST_CPLLRESET => rst_cpllreset, + RST_IDLE => \pipe_reset.pipe_reset_i_n_1\, + RST_TXSYNC_START => rst_txsync_start, + RXRATE(0) => rate_rate_0(0), + RXSYSCLKSEL(0) => rate_sysclksel_0(0), + SYNC_RATE_IDLE => rate_idle_0, + SYNC_RXSYNC_START => rate_rxsync_start_0, + SYNC_TXSYNC_START => SYNC_TXSYNC_START010_out, + USER_RATE_DONE => rate_done_0, + USER_RATE_GEN3 => \^gen3_reg\, + USER_RATE_RXSYNC => rate_rxsync_0, + USER_RESETOVRD_START => rate_resetovrd_start_0, + USER_RXRESETDONE => gt_rxresetdone_0, + USER_TXRESETDONE => gt_txresetdone_0, + \fsm[0]_i_9_0\ => p_1_in2_in, + \out\ => p_0_in1_in, + pipe_mmcm_lock_in => pipe_mmcm_lock_in, + pipe_pclk_in => pipe_pclk_in, + pipe_pclk_sel_out(0) => \^pipe_pclk_sel_out\(0), + rate_cpllpd_0 => rate_cpllpd_0, + rate_cpllreset_0 => rate_cpllreset_0, + \rate_in_reg1_reg[0]_0\(0) => \rate_reg1_reg[0]\(0), + rate_txpmareset_0 => rate_txpmareset_0, + rxchbonden_0 => rxchbonden_0, + user_active_lane_0 => user_active_lane_0 + ); +\pipe_lane[0].pipe_sync_i\: entity work.pcie_7x_0_pcie_7x_0_pipe_sync + port map ( + \FSM_onehot_txsync_fsm.fsm_tx_reg[5]_0\ => \pipe_lane[0].pipe_user_i_n_6\, + \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0\ => p_1_in2_in, + \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_1\ => p_0_in1_in, + Q(2) => sync_txphalign_0, + Q(1) => sync_txphinit_0, + Q(0) => sync_txdlysreset_0, + RST_CPLLRESET => rst_cpllreset, + RST_TXSYNC_DONE(0) => sync_txsync_done_0, + SYNC_RATE_IDLE => rate_idle_0, + SYNC_RXCDRLOCK => user_rxcdrlock_0, + SYNC_RXDLYSRESETDONE => rxdlysresetdone_3, + SYNC_RXPHALIGNDONE_M => \pipe_lane[0].gt_wrapper_i_n_11\, + SYNC_RXPHALIGNDONE_S => rxphaligndone_s_3, + SYNC_RXSYNC_START => rate_rxsync_start_0, + SYNC_TXDLYSRESETDONE => txdlysresetdone_3, + SYNC_TXPHALIGNDONE => txsyncallin, + SYNC_TXPHINITDONE => \pipe_lane[0].pipe_user_i_n_5\, + SYNC_TXSYNC_START => SYNC_TXSYNC_START010_out, + USER_RATE_GEN3 => \^gen3_reg\, + gt_rx_elec_idle_wire_filter(0) => \^gt_rx_elec_idle_wire_filter\(0), + \out\ => p_1_in, + pipe_mmcm_lock_in => pipe_mmcm_lock_in, + pipe_pclk_in => pipe_pclk_in, + sync_txdlyen_0 => sync_txdlyen_0, + txphaligndone_reg3_reg_0 => \pipe_lane[0].pipe_sync_i_n_1\, + user_active_lane_0 => user_active_lane_0 + ); +\pipe_lane[0].pipe_user_i\: entity work.pcie_7x_0_pcie_7x_0_pipe_user + port map ( + \FSM_onehot_txsync_fsm.fsm_tx_reg[5]\ => \pipe_lane[0].pipe_sync_i_n_1\, + \FSM_onehot_txsync_fsm.fsm_tx_reg[5]_0\ => p_1_in, + PIPE_RXSTATUS(0) => \^pipe_rxstatus\(2), + PIPE_TXCOMPLIANCE(0) => PIPE_TXCOMPLIANCE(0), + PIPE_TXELECIDLE(0) => PIPE_TXELECIDLE(0), + RST_CPLLRESET => rst_cpllreset, + RST_IDLE => \pipe_reset.pipe_reset_i_n_1\, + RST_PHYSTATUS(0) => gt_phystatus_0, + RST_RESETDONE(0) => user_resetdone(0), + RST_RXCDRLOCK(0) => user_rxcdrlock_0, + RST_RXUSRCLK_RESET => rst_rxusrclk_reset, + SYNC_TXPHALIGNDONE => txsyncallin, + SYNC_TXPHINITDONE => \pipe_lane[0].pipe_user_i_n_5\, + USER_OOBCLK => user_oobclk_0, + USER_RATE_DONE => rate_done_0, + USER_RATE_GEN3 => \^gen3_reg\, + USER_RATE_IDLE => rate_idle_0, + USER_RATE_RXSYNC => rate_rxsync_0, + USER_RESETOVRD_START => rate_resetovrd_start_0, + USER_RXEQ_ADAPT_DONE => \pipe_lane[0].pipe_eq.pipe_eq_i_n_17\, + USER_RXRESETDONE => gt_rxresetdone_0, + USER_TXRESETDONE => gt_txresetdone_0, + \converge_cnt_reg[15]_0\ => \pipe_lane[0].pipe_user_i_n_10\, + \converge_cnt_reg[1]_0\ => \pipe_lane[0].pipe_user_i_n_11\, + \converge_cnt_reg[6]_0\ => \pipe_lane[0].pipe_user_i_n_12\, + converge_gen3_reg_0 => \pipe_lane[0].pipe_user_i_n_15\, + gt_rx_elec_idle_wire_filter(0) => \^gt_rx_elec_idle_wire_filter\(0), + gt_rx_phy_status_wire_filter(0) => gt_rx_phy_status_wire_filter(0), + gt_rxcdrlock_0 => gt_rxcdrlock_0, + gt_rxvalid_0 => gt_rxvalid_0, + gt_rxvalid_q_reg => gt_rxvalid_q_reg, + \out\ => \pipe_lane[0].pipe_user_i_n_1\, + pipe_oobclk_in => pipe_oobclk_in, + pipe_pclk_in => pipe_pclk_in, + pipe_pclk_sel_out(0) => \^pipe_pclk_sel_out\(0), + pipe_rx0_valid_gt => pipe_rx0_valid_gt, + pipe_rxusrclk_in => pipe_rxusrclk_in, + txcompliance_reg2_reg_0 => p_0_in1_in, + txelecidle_reg2_reg_0 => p_1_in2_in, + txelecidle_reg2_reg_1 => \pipe_lane[0].pipe_user_i_n_6\, + txphaligndone_reg1_reg => \pipe_lane[1].gt_wrapper_i_n_16\, + txphaligndone_reg1_reg_0 => \pipe_lane[0].gt_wrapper_i_n_17\, + txphaligndone_reg1_reg_1 => \pipe_lane[2].pipe_user_i_n_2\, + txphinitdone_reg1_reg => \pipe_lane[1].gt_wrapper_i_n_17\, + txphinitdone_reg1_reg_0 => \pipe_lane[0].gt_wrapper_i_n_18\, + txphinitdone_reg1_reg_1 => \pipe_lane[2].pipe_user_i_n_5\, + user_active_lane_0 => user_active_lane_0, + user_active_lane_1 => user_active_lane_1 + ); +\pipe_lane[1].gt_wrapper_i\: entity work.pcie_7x_0_pcie_7x_0_gt_wrapper_37 + port map ( + CPLLPD0_3 => CPLLPD0_3, + DRPADDR(7) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_2\, + DRPADDR(6) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_3\, + DRPADDR(5) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_4\, + DRPADDR(4) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_5\, + DRPADDR(3) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_6\, + DRPADDR(2) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_7\, + DRPADDR(1) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_8\, + DRPADDR(0) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_9\, + DRPDI(15) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_10\, + DRPDI(14) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_11\, + DRPDI(13) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_12\, + DRPDI(12) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_13\, + DRPDI(11) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_14\, + DRPDI(10) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_15\, + DRPDI(9) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_16\, + DRPDI(8) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_17\, + DRPDI(7) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_18\, + DRPDI(6) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_19\, + DRPDI(5) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_20\, + DRPDI(4) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_21\, + DRPDI(3) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_22\, + DRPDI(2) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_23\, + DRPDI(1) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_24\, + DRPDI(0) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_25\, + DRP_DO(15) => \pipe_lane[1].gt_wrapper_i_n_20\, + DRP_DO(14) => \pipe_lane[1].gt_wrapper_i_n_21\, + DRP_DO(13) => \pipe_lane[1].gt_wrapper_i_n_22\, + DRP_DO(12) => \pipe_lane[1].gt_wrapper_i_n_23\, + DRP_DO(11) => \pipe_lane[1].gt_wrapper_i_n_24\, + DRP_DO(10) => \pipe_lane[1].gt_wrapper_i_n_25\, + DRP_DO(9) => \pipe_lane[1].gt_wrapper_i_n_26\, + DRP_DO(8) => \pipe_lane[1].gt_wrapper_i_n_27\, + DRP_DO(7) => \pipe_lane[1].gt_wrapper_i_n_28\, + DRP_DO(6) => \pipe_lane[1].gt_wrapper_i_n_29\, + DRP_DO(5) => \pipe_lane[1].gt_wrapper_i_n_30\, + DRP_DO(4) => \pipe_lane[1].gt_wrapper_i_n_31\, + DRP_DO(3) => \pipe_lane[1].gt_wrapper_i_n_32\, + DRP_DO(2) => \pipe_lane[1].gt_wrapper_i_n_33\, + DRP_DO(1) => \pipe_lane[1].gt_wrapper_i_n_34\, + DRP_DO(0) => \pipe_lane[1].gt_wrapper_i_n_35\, + DRP_GTXRESET => rst_gtreset, + DRP_RDY => \pipe_lane[1].gt_wrapper_i_n_2\, + PIPE_POWERDOWN(1 downto 0) => PIPE_POWERDOWN(3 downto 2), + PIPE_RXCHANISALIGNED(0) => PIPE_RXCHANISALIGNED(1), + PIPE_RXPOLARITY(0) => PIPE_RXPOLARITY(1), + PIPE_TXCOMPLIANCE(0) => PIPE_TXCOMPLIANCE(1), + PIPE_TXDATA(15 downto 0) => PIPE_TXDATA(31 downto 16), + PIPE_TXDATAK(1 downto 0) => PIPE_TXDATAK(3 downto 2), + PIPE_TXELECIDLE(0) => PIPE_TXELECIDLE(1), + QPLL_QPLLOUTCLK => \pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_1\, + QPLL_QPLLOUTREFCLK => \pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_2\, + QRST_CPLLLOCK(0) => \pipe_lane[1].gt_wrapper_i_n_1\, + RATE_PHYSTATUS => gt_phystatus_1, + RATE_RXRATEDONE => gt_rxratedone_1, + RATE_TXRATEDONE => gt_txratedone_1, + RST_CPLLRESET => rst_cpllreset, + RXCHBONDO(4 downto 0) => \gt_rxchbondi[3]_0\(4 downto 0), + RXRATE(0) => rate_rate_3(0), + RXSYSCLKSEL(0) => rate_sysclksel_2(0), + SYNC_TXDLYSRESET => sync_txdlysreset_1, + SYNC_TXPHALIGN => sync_txphalign_1, + SYNC_TXPHINIT => sync_txphinit_1, + TXMAINCURSOR(6 downto 0) => eq_txeq_maincursor_7(6 downto 0), + TXPOSTCURSOR(4 downto 0) => eq_txeq_postcursor_5(4 downto 0), + TXPRECURSOR(4 downto 0) => eq_txeq_precursor_5(4 downto 0), + USER_OOBCLK => user_oobclk_1, + USER_RXRESETDONE => gt_rxresetdone_1, + USER_TXRESETDONE => gt_txresetdone_1, + \cplllock_reg1_reg[1]\ => \pipe_lane[1].pipe_drp.pipe_drp_i_n_0\, + \cplllock_reg1_reg[1]_0\ => \pipe_lane[1].pipe_drp.pipe_drp_i_n_1\, + \cplllock_reg1_reg[1]_1\ => \gtx_channel.gtxe2_channel_i_i_6__2_n_0\, + \cplllock_reg1_reg[1]_2\(2 downto 0) => \cplllock_reg1_reg[3]\(2 downto 0), + cpllpd_0 => cpllpd_0, + gt_cpllpdrefclk => gt_cpllpdrefclk, + gt_rx_data_k_wire_filter(1 downto 0) => gt_rx_data_k_wire_filter(3 downto 2), + gt_rx_data_wire_filter(15 downto 0) => gt_rx_data_wire_filter(31 downto 16), + gt_rx_elec_idle_wire_filter(0) => \^gt_rx_elec_idle_wire_filter\(1), + gt_rxcdrlock_1 => gt_rxcdrlock_1, + gt_rxvalid_1 => gt_rxvalid_1, + pci_exp_rxn(0) => pci_exp_rxn(1), + pci_exp_rxp(0) => pci_exp_rxp(1), + pci_exp_txn(0) => pci_exp_txn(1), + pci_exp_txp(0) => pci_exp_txp(1), + pipe_dclk_in => pipe_dclk_in, + pipe_dclk_in_0 => \pipe_lane[1].gt_wrapper_i_n_8\, + pipe_dclk_in_1 => \pipe_lane[1].gt_wrapper_i_n_11\, + pipe_dclk_in_2 => \pipe_lane[1].gt_wrapper_i_n_15\, + pipe_dclk_in_3 => \pipe_lane[1].gt_wrapper_i_n_16\, + pipe_dclk_in_4 => \pipe_lane[1].gt_wrapper_i_n_17\, + pipe_dclk_in_5(2 downto 0) => \^pipe_dclk_in_0\(2 downto 0), + pipe_pclk_in => pipe_pclk_in, + pipe_rxoutclk_out(0) => pipe_rxoutclk_out(1), + pipe_rxusrclk_in => pipe_rxusrclk_in, + pipe_tx_deemph_gt => pipe_tx_deemph_gt, + pipe_tx_rcvr_det_gt => pipe_tx_rcvr_det_gt, + rate_cpllreset_1 => rate_cpllreset_1, + rate_txpmareset_1 => rate_txpmareset_1, + rst_userrdy => rst_userrdy, + rxchbonden_1 => rxchbonden_1, + sys_clk => sys_clk + ); +\pipe_lane[1].pipe_drp.pipe_drp_i\: entity work.pcie_7x_0_pcie_7x_0_pipe_drp_38 + port map ( + D(15) => \pipe_lane[1].gt_wrapper_i_n_20\, + D(14) => \pipe_lane[1].gt_wrapper_i_n_21\, + D(13) => \pipe_lane[1].gt_wrapper_i_n_22\, + D(12) => \pipe_lane[1].gt_wrapper_i_n_23\, + D(11) => \pipe_lane[1].gt_wrapper_i_n_24\, + D(10) => \pipe_lane[1].gt_wrapper_i_n_25\, + D(9) => \pipe_lane[1].gt_wrapper_i_n_26\, + D(8) => \pipe_lane[1].gt_wrapper_i_n_27\, + D(7) => \pipe_lane[1].gt_wrapper_i_n_28\, + D(6) => \pipe_lane[1].gt_wrapper_i_n_29\, + D(5) => \pipe_lane[1].gt_wrapper_i_n_30\, + D(4) => \pipe_lane[1].gt_wrapper_i_n_31\, + D(3) => \pipe_lane[1].gt_wrapper_i_n_32\, + D(2) => \pipe_lane[1].gt_wrapper_i_n_33\, + D(1) => \pipe_lane[1].gt_wrapper_i_n_34\, + D(0) => \pipe_lane[1].gt_wrapper_i_n_35\, + DRPADDR(7) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_2\, + DRPADDR(6) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_3\, + DRPADDR(5) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_4\, + DRPADDR(4) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_5\, + DRPADDR(3) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_6\, + DRPADDR(2) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_7\, + DRPADDR(1) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_8\, + DRPADDR(0) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_9\, + DRPDI(15) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_10\, + DRPDI(14) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_11\, + DRPDI(13) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_12\, + DRPDI(12) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_13\, + DRPDI(11) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_14\, + DRPDI(10) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_15\, + DRPDI(9) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_16\, + DRPDI(8) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_17\, + DRPDI(7) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_18\, + DRPDI(6) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_19\, + DRPDI(5) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_20\, + DRPDI(4) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_21\, + DRPDI(3) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_22\, + DRPDI(2) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_23\, + DRPDI(1) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_24\, + DRPDI(0) => \pipe_lane[1].pipe_drp.pipe_drp_i_n_25\, + DRP_DONE => drp_done_1, + DRP_GTXRESET => rst_gtreset, + DRP_RDY => \pipe_lane[1].gt_wrapper_i_n_2\, + RATE_DRP_START => rate_drp_start_1, + RATE_DRP_X16 => rate_drp_x16_1, + RATE_DRP_X16X20_MODE => rate_drp_x16x20_mode_1, + RST_DCLK_RESET => rst_dclk_reset, + \fsm_reg[1]_0\ => \pipe_lane[1].pipe_drp.pipe_drp_i_n_0\, + \fsm_reg[1]_1\ => \pipe_lane[1].pipe_drp.pipe_drp_i_n_1\, + pipe_dclk_in => pipe_dclk_in, + \rate_reg1_reg[0]_0\(0) => \rate_reg1_reg[0]\(0) + ); +\pipe_lane[1].pipe_eq.pipe_eq_i\: entity work.pcie_7x_0_pcie_7x_0_pipe_eq_39 + port map ( + RST_CPLLRESET => rst_cpllreset, + TXMAINCURSOR(6 downto 0) => eq_txeq_maincursor_7(6 downto 0), + TXPOSTCURSOR(4 downto 0) => eq_txeq_postcursor_5(4 downto 0), + TXPRECURSOR(4 downto 0) => eq_txeq_precursor_5(4 downto 0), + USER_RXEQ_ADAPT_DONE => \pipe_lane[1].pipe_eq.pipe_eq_i_n_17\, + pipe_pclk_in => pipe_pclk_in, + rate_gen3_1 => rate_gen3_1 + ); +\pipe_lane[1].pipe_rate.pipe_rate_i\: entity work.pcie_7x_0_pcie_7x_0_pipe_rate_40 + port map ( + QPLL_DRP_GEN3 => \pipe_lane[1].pipe_rate.pipe_rate_i_n_1\, + QRST_CPLLLOCK(0) => \pipe_lane[1].gt_wrapper_i_n_1\, + QRST_QPLLPD_IN(0) => rate_qpllpd(1), + QRST_QPLLRESET_IN(0) => rate_qpllreset(1), + RATE_DRP_DONE => drp_done_1, + RATE_DRP_START => rate_drp_start_1, + RATE_DRP_X16 => rate_drp_x16_1, + RATE_DRP_X16X20_MODE => rate_drp_x16x20_mode_1, + RATE_PHYSTATUS => gt_phystatus_1, + RATE_QPLLLOCK => \pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_0\, + RATE_RXRATEDONE => gt_rxratedone_1, + RATE_TXRATEDONE => gt_txratedone_1, + RATE_TXSYNC_DONE => sync_txsync_done_1, + RST_CPLLRESET => rst_cpllreset, + RST_IDLE => \pipe_reset.pipe_reset_i_n_1\, + RST_TXSYNC_START => rst_txsync_start, + RXRATE(0) => rate_rate_3(0), + RXSYSCLKSEL(0) => rate_sysclksel_2(0), + SYNC_RATE_IDLE => rate_idle_1, + SYNC_RXSYNC_START => rate_rxsync_start_1, + SYNC_TXSYNC_START => SYNC_TXSYNC_START05_out, + USER_RATE_DONE => rate_done_1, + USER_RATE_GEN3 => \^gen3_reg\, + USER_RATE_RXSYNC => rate_rxsync_1, + USER_RESETOVRD_START => rate_resetovrd_start_1, + USER_RXRESETDONE => gt_rxresetdone_1, + USER_TXRESETDONE => gt_txresetdone_1, + \fsm[0]_i_9__0_0\ => p_1_in2_in_1, + \out\ => p_0_in1_in_0, + pipe_mmcm_lock_in => pipe_mmcm_lock_in, + pipe_pclk_in => pipe_pclk_in, + pipe_pclk_sel_out(0) => \^pipe_pclk_sel_out\(1), + rate_cpllpd_1 => rate_cpllpd_1, + rate_cpllreset_1 => rate_cpllreset_1, + rate_gen3_1 => rate_gen3_1, + rate_gen3_2 => rate_gen3_2, + rate_gen3_3 => rate_gen3_3, + \rate_in_reg1_reg[0]_0\(0) => \rate_reg1_reg[0]\(0), + rate_txpmareset_1 => rate_txpmareset_1, + rxchbonden_1 => rxchbonden_1, + user_active_lane_1 => user_active_lane_1 + ); +\pipe_lane[1].pipe_sync_i\: entity work.pcie_7x_0_pcie_7x_0_pipe_sync_41 + port map ( + \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0\ => p_0_in1_in_0, + Q(2) => sync_txphalign_1, + Q(1) => sync_txphinit_1, + Q(0) => sync_txdlysreset_1, + RST_CPLLRESET => rst_cpllreset, + RST_TXSYNC_DONE(0) => sync_txsync_done_1, + SYNC_GEN3 => rate_gen3_1, + SYNC_RATE_IDLE => rate_idle_1, + SYNC_RXCDRLOCK => user_rxcdrlock_1, + SYNC_RXDLYSRESETDONE => rxdlysresetdone_3, + SYNC_RXPHALIGNDONE_M => \pipe_lane[0].gt_wrapper_i_n_11\, + SYNC_RXPHALIGNDONE_S => rxphaligndone_s_3, + SYNC_RXSYNC_START => rate_rxsync_start_1, + SYNC_TXDLYSRESETDONE => txdlysresetdone_3, + SYNC_TXPHALIGNDONE => txsyncallin, + SYNC_TXPHINITDONE => \pipe_lane[0].pipe_user_i_n_5\, + SYNC_TXSYNC_START => SYNC_TXSYNC_START05_out, + gt_rx_elec_idle_wire_filter(0) => \^gt_rx_elec_idle_wire_filter\(1), + \out\ => p_1_in2_in_1, + pipe_mmcm_lock_in => pipe_mmcm_lock_in, + pipe_pclk_in => pipe_pclk_in, + user_active_lane_1 => user_active_lane_1 + ); +\pipe_lane[1].pipe_user_i\: entity work.pcie_7x_0_pcie_7x_0_pipe_user_42 + port map ( + PIPE_TXCOMPLIANCE(0) => PIPE_TXCOMPLIANCE(1), + PIPE_TXELECIDLE(0) => PIPE_TXELECIDLE(1), + RST_CPLLRESET => rst_cpllreset, + RST_IDLE => \pipe_reset.pipe_reset_i_n_1\, + RST_PHYSTATUS(0) => gt_phystatus_1, + RST_RESETDONE(0) => user_resetdone(1), + RST_RXCDRLOCK(0) => user_rxcdrlock_1, + RST_RXUSRCLK_RESET => rst_rxusrclk_reset, + USER_OOBCLK => user_oobclk_1, + USER_RATE_DONE => rate_done_1, + USER_RATE_GEN3 => rate_gen3_1, + USER_RATE_IDLE => rate_idle_1, + USER_RATE_RXSYNC => rate_rxsync_1, + USER_RESETOVRD_START => rate_resetovrd_start_1, + USER_RXEQ_ADAPT_DONE => \pipe_lane[1].pipe_eq.pipe_eq_i_n_17\, + USER_RXRESETDONE => gt_rxresetdone_1, + USER_TXRESETDONE => gt_txresetdone_1, + gt_rx_elec_idle_wire_filter(0) => \^gt_rx_elec_idle_wire_filter\(1), + gt_rx_phy_status_wire_filter(0) => gt_rx_phy_status_wire_filter(1), + gt_rxcdrlock_1 => gt_rxcdrlock_1, + gt_rxvalid_1 => gt_rxvalid_1, + gt_rxvalid_q_reg => gt_rxvalid_q_reg_0, + \out\ => \pipe_lane[1].pipe_user_i_n_1\, + pipe_oobclk_in => pipe_oobclk_in, + pipe_pclk_in => pipe_pclk_in, + pipe_pclk_sel_out(0) => \^pipe_pclk_sel_out\(1), + pipe_rx1_valid_gt => pipe_rx1_valid_gt, + pipe_rxusrclk_in => pipe_rxusrclk_in, + rxstatus_reg1_reg_0(0) => \^pipe_dclk_in_0\(2), + txcompliance_reg2_reg_0 => p_0_in1_in_0, + txelecidle_reg2_reg_0 => p_1_in2_in_1, + user_active_lane_1 => user_active_lane_1, + user_rx_converge(0) => user_rx_converge(1) + ); +\pipe_lane[2].gt_wrapper_i\: entity work.pcie_7x_0_pcie_7x_0_gt_wrapper_43 + port map ( + CPLLPD0_4 => CPLLPD0_4, + DRPADDR(7) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_2\, + DRPADDR(6) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_3\, + DRPADDR(5) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_4\, + DRPADDR(4) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_5\, + DRPADDR(3) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_6\, + DRPADDR(2) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_7\, + DRPADDR(1) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_8\, + DRPADDR(0) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_9\, + DRPDI(15) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_10\, + DRPDI(14) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_11\, + DRPDI(13) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_12\, + DRPDI(12) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_13\, + DRPDI(11) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_14\, + DRPDI(10) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_15\, + DRPDI(9) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_16\, + DRPDI(8) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_17\, + DRPDI(7) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_18\, + DRPDI(6) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_19\, + DRPDI(5) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_20\, + DRPDI(4) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_21\, + DRPDI(3) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_22\, + DRPDI(2) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_23\, + DRPDI(1) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_24\, + DRPDI(0) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_25\, + DRP_DO(15) => \pipe_lane[2].gt_wrapper_i_n_20\, + DRP_DO(14) => \pipe_lane[2].gt_wrapper_i_n_21\, + DRP_DO(13) => \pipe_lane[2].gt_wrapper_i_n_22\, + DRP_DO(12) => \pipe_lane[2].gt_wrapper_i_n_23\, + DRP_DO(11) => \pipe_lane[2].gt_wrapper_i_n_24\, + DRP_DO(10) => \pipe_lane[2].gt_wrapper_i_n_25\, + DRP_DO(9) => \pipe_lane[2].gt_wrapper_i_n_26\, + DRP_DO(8) => \pipe_lane[2].gt_wrapper_i_n_27\, + DRP_DO(7) => \pipe_lane[2].gt_wrapper_i_n_28\, + DRP_DO(6) => \pipe_lane[2].gt_wrapper_i_n_29\, + DRP_DO(5) => \pipe_lane[2].gt_wrapper_i_n_30\, + DRP_DO(4) => \pipe_lane[2].gt_wrapper_i_n_31\, + DRP_DO(3) => \pipe_lane[2].gt_wrapper_i_n_32\, + DRP_DO(2) => \pipe_lane[2].gt_wrapper_i_n_33\, + DRP_DO(1) => \pipe_lane[2].gt_wrapper_i_n_34\, + DRP_DO(0) => \pipe_lane[2].gt_wrapper_i_n_35\, + DRP_GTXRESET => rst_gtreset, + DRP_RDY => \pipe_lane[2].gt_wrapper_i_n_2\, + PIPE_POWERDOWN(1 downto 0) => PIPE_POWERDOWN(5 downto 4), + PIPE_RXCHANISALIGNED(0) => PIPE_RXCHANISALIGNED(2), + PIPE_RXPOLARITY(0) => PIPE_RXPOLARITY(2), + PIPE_TXCOMPLIANCE(0) => PIPE_TXCOMPLIANCE(2), + PIPE_TXDATA(15 downto 0) => PIPE_TXDATA(47 downto 32), + PIPE_TXDATAK(1 downto 0) => PIPE_TXDATAK(5 downto 4), + PIPE_TXELECIDLE(0) => PIPE_TXELECIDLE(2), + QPLL_QPLLOUTCLK => \pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_1\, + QPLL_QPLLOUTREFCLK => \pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_2\, + QRST_CPLLLOCK(0) => \pipe_lane[2].gt_wrapper_i_n_1\, + RATE_PHYSTATUS => gt_phystatus_2, + RATE_RXRATEDONE => gt_rxratedone_2, + RATE_TXRATEDONE => gt_txratedone_2, + RST_CPLLRESET => rst_cpllreset, + RXCHBONDO(4 downto 0) => \gt_rxchbondi[3]_0\(4 downto 0), + RXRATE(0) => rate_rate_6(0), + RXSYSCLKSEL(0) => rate_sysclksel_4(0), + SYNC_TXDLYSRESET => sync_txdlysreset_2, + SYNC_TXPHALIGN => sync_txphalign_2, + SYNC_TXPHINIT => sync_txphinit_2, + TXMAINCURSOR(6 downto 0) => eq_txeq_maincursor_14(6 downto 0), + TXPOSTCURSOR(4 downto 0) => eq_txeq_postcursor_10(4 downto 0), + TXPRECURSOR(4 downto 0) => eq_txeq_precursor_10(4 downto 0), + USER_OOBCLK => user_oobclk_2, + USER_RXRESETDONE => gt_rxresetdone_2, + USER_TXRESETDONE => gt_txresetdone_2, + \cplllock_reg1_reg[2]\ => \pipe_lane[2].pipe_drp.pipe_drp_i_n_0\, + \cplllock_reg1_reg[2]_0\ => \pipe_lane[2].pipe_drp.pipe_drp_i_n_1\, + \cplllock_reg1_reg[2]_1\ => \gtx_channel.gtxe2_channel_i_i_6__2_n_0\, + \cplllock_reg1_reg[2]_2\(2 downto 0) => \cplllock_reg1_reg[3]\(2 downto 0), + cpllpd_1 => cpllpd_1, + gt_cpllpdrefclk => gt_cpllpdrefclk, + gt_rx_data_k_wire_filter(1 downto 0) => gt_rx_data_k_wire_filter(5 downto 4), + gt_rx_data_wire_filter(15 downto 0) => gt_rx_data_wire_filter(47 downto 32), + gt_rx_elec_idle_wire_filter(0) => \^gt_rx_elec_idle_wire_filter\(2), + gt_rxcdrlock_2 => gt_rxcdrlock_2, + gt_rxvalid_2 => gt_rxvalid_2, + pci_exp_rxn(0) => pci_exp_rxn(2), + pci_exp_rxp(0) => pci_exp_rxp(2), + pci_exp_txn(0) => pci_exp_txn(2), + pci_exp_txp(0) => pci_exp_txp(2), + pipe_dclk_in => pipe_dclk_in, + pipe_dclk_in_0 => \pipe_lane[2].gt_wrapper_i_n_8\, + pipe_dclk_in_1 => \pipe_lane[2].gt_wrapper_i_n_11\, + pipe_dclk_in_2 => \pipe_lane[2].gt_wrapper_i_n_15\, + pipe_dclk_in_3 => \pipe_lane[2].gt_wrapper_i_n_16\, + pipe_dclk_in_4 => \pipe_lane[2].gt_wrapper_i_n_17\, + pipe_dclk_in_5(2 downto 0) => \^pipe_dclk_in_1\(2 downto 0), + pipe_pclk_in => pipe_pclk_in, + pipe_rxoutclk_out(0) => pipe_rxoutclk_out(2), + pipe_rxusrclk_in => pipe_rxusrclk_in, + pipe_tx_deemph_gt => pipe_tx_deemph_gt, + pipe_tx_rcvr_det_gt => pipe_tx_rcvr_det_gt, + rate_cpllreset_2 => rate_cpllreset_2, + rate_txpmareset_2 => rate_txpmareset_2, + rst_userrdy => rst_userrdy, + rxchbonden_2 => rxchbonden_2, + sys_clk => sys_clk + ); +\pipe_lane[2].pipe_drp.pipe_drp_i\: entity work.pcie_7x_0_pcie_7x_0_pipe_drp_44 + port map ( + D(15) => \pipe_lane[2].gt_wrapper_i_n_20\, + D(14) => \pipe_lane[2].gt_wrapper_i_n_21\, + D(13) => \pipe_lane[2].gt_wrapper_i_n_22\, + D(12) => \pipe_lane[2].gt_wrapper_i_n_23\, + D(11) => \pipe_lane[2].gt_wrapper_i_n_24\, + D(10) => \pipe_lane[2].gt_wrapper_i_n_25\, + D(9) => \pipe_lane[2].gt_wrapper_i_n_26\, + D(8) => \pipe_lane[2].gt_wrapper_i_n_27\, + D(7) => \pipe_lane[2].gt_wrapper_i_n_28\, + D(6) => \pipe_lane[2].gt_wrapper_i_n_29\, + D(5) => \pipe_lane[2].gt_wrapper_i_n_30\, + D(4) => \pipe_lane[2].gt_wrapper_i_n_31\, + D(3) => \pipe_lane[2].gt_wrapper_i_n_32\, + D(2) => \pipe_lane[2].gt_wrapper_i_n_33\, + D(1) => \pipe_lane[2].gt_wrapper_i_n_34\, + D(0) => \pipe_lane[2].gt_wrapper_i_n_35\, + DRPADDR(7) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_2\, + DRPADDR(6) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_3\, + DRPADDR(5) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_4\, + DRPADDR(4) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_5\, + DRPADDR(3) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_6\, + DRPADDR(2) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_7\, + DRPADDR(1) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_8\, + DRPADDR(0) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_9\, + DRPDI(15) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_10\, + DRPDI(14) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_11\, + DRPDI(13) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_12\, + DRPDI(12) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_13\, + DRPDI(11) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_14\, + DRPDI(10) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_15\, + DRPDI(9) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_16\, + DRPDI(8) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_17\, + DRPDI(7) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_18\, + DRPDI(6) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_19\, + DRPDI(5) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_20\, + DRPDI(4) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_21\, + DRPDI(3) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_22\, + DRPDI(2) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_23\, + DRPDI(1) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_24\, + DRPDI(0) => \pipe_lane[2].pipe_drp.pipe_drp_i_n_25\, + DRP_DONE => drp_done_2, + DRP_GTXRESET => rst_gtreset, + DRP_RDY => \pipe_lane[2].gt_wrapper_i_n_2\, + RATE_DRP_START => rate_drp_start_2, + RATE_DRP_X16 => rate_drp_x16_2, + RATE_DRP_X16X20_MODE => rate_drp_x16x20_mode_2, + RST_DCLK_RESET => rst_dclk_reset, + \fsm_reg[1]_0\ => \pipe_lane[2].pipe_drp.pipe_drp_i_n_0\, + \fsm_reg[1]_1\ => \pipe_lane[2].pipe_drp.pipe_drp_i_n_1\, + pipe_dclk_in => pipe_dclk_in, + \rate_reg1_reg[0]_0\(0) => \rate_reg1_reg[0]\(0) + ); +\pipe_lane[2].pipe_eq.pipe_eq_i\: entity work.pcie_7x_0_pcie_7x_0_pipe_eq_45 + port map ( + RST_CPLLRESET => rst_cpllreset, + TXMAINCURSOR(6 downto 0) => eq_txeq_maincursor_14(6 downto 0), + TXPOSTCURSOR(4 downto 0) => eq_txeq_postcursor_10(4 downto 0), + TXPRECURSOR(4 downto 0) => eq_txeq_precursor_10(4 downto 0), + USER_RXEQ_ADAPT_DONE => \pipe_lane[2].pipe_eq.pipe_eq_i_n_17\, + pipe_pclk_in => pipe_pclk_in, + rate_gen3_2 => rate_gen3_2 + ); +\pipe_lane[2].pipe_rate.pipe_rate_i\: entity work.pcie_7x_0_pcie_7x_0_pipe_rate_46 + port map ( + QRST_CPLLLOCK(0) => \pipe_lane[2].gt_wrapper_i_n_1\, + QRST_QPLLPD_IN(0) => rate_qpllpd(2), + QRST_QPLLRESET_IN(0) => rate_qpllreset(2), + RATE_DRP_DONE => drp_done_2, + RATE_DRP_START => rate_drp_start_2, + RATE_DRP_X16 => rate_drp_x16_2, + RATE_DRP_X16X20_MODE => rate_drp_x16x20_mode_2, + RATE_PHYSTATUS => gt_phystatus_2, + RATE_QPLLLOCK => \pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_0\, + RATE_RXRATEDONE => gt_rxratedone_2, + RATE_TXRATEDONE => gt_txratedone_2, + RATE_TXSYNC_DONE => sync_txsync_done_2, + RST_CPLLRESET => rst_cpllreset, + RST_IDLE => \pipe_reset.pipe_reset_i_n_1\, + RST_TXSYNC_START => rst_txsync_start, + RXRATE(0) => rate_rate_6(0), + RXSYSCLKSEL(0) => rate_sysclksel_4(0), + SYNC_RATE_IDLE => rate_idle_2, + SYNC_RXSYNC_START => rate_rxsync_start_2, + SYNC_TXSYNC_START => SYNC_TXSYNC_START00_out, + USER_RATE_DONE => rate_done_2, + USER_RATE_RXSYNC => rate_rxsync_2, + USER_RESETOVRD_START => rate_resetovrd_start_2, + USER_RXRESETDONE => gt_rxresetdone_2, + USER_TXRESETDONE => gt_txresetdone_2, + \fsm[0]_i_9__1_0\ => p_1_in2_in_2, + \out\ => p_0_in1_in_3, + pipe_mmcm_lock_in => pipe_mmcm_lock_in, + pipe_pclk_in => pipe_pclk_in, + pipe_pclk_sel_out(0) => \^pipe_pclk_sel_out\(2), + rate_cpllpd_2 => rate_cpllpd_2, + rate_cpllreset_2 => rate_cpllreset_2, + rate_gen3_2 => rate_gen3_2, + \rate_in_reg1_reg[0]_0\(0) => \rate_reg1_reg[0]\(0), + rate_txpmareset_2 => rate_txpmareset_2, + rxchbonden_2 => rxchbonden_2, + user_active_lane_2 => user_active_lane_2 + ); +\pipe_lane[2].pipe_sync_i\: entity work.pcie_7x_0_pcie_7x_0_pipe_sync_47 + port map ( + \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0\ => p_0_in1_in_3, + Q(2) => sync_txphalign_2, + Q(1) => sync_txphinit_2, + Q(0) => sync_txdlysreset_2, + RST_CPLLRESET => rst_cpllreset, + RST_TXSYNC_DONE(0) => sync_txsync_done_2, + SYNC_GEN3 => rate_gen3_2, + SYNC_RATE_IDLE => rate_idle_2, + SYNC_RXCDRLOCK => user_rxcdrlock_2, + SYNC_RXDLYSRESETDONE => rxdlysresetdone_3, + SYNC_RXPHALIGNDONE_M => \pipe_lane[0].gt_wrapper_i_n_11\, + SYNC_RXPHALIGNDONE_S => rxphaligndone_s_3, + SYNC_RXSYNC_START => rate_rxsync_start_2, + SYNC_TXDLYSRESETDONE => txdlysresetdone_3, + SYNC_TXPHALIGNDONE => txsyncallin, + SYNC_TXPHINITDONE => \pipe_lane[0].pipe_user_i_n_5\, + SYNC_TXSYNC_START => SYNC_TXSYNC_START00_out, + gt_rx_elec_idle_wire_filter(0) => \^gt_rx_elec_idle_wire_filter\(2), + \out\ => p_1_in2_in_2, + pipe_mmcm_lock_in => pipe_mmcm_lock_in, + pipe_pclk_in => pipe_pclk_in, + user_active_lane_2 => user_active_lane_2 + ); +\pipe_lane[2].pipe_user_i\: entity work.pcie_7x_0_pcie_7x_0_pipe_user_48 + port map ( + PIPE_TXCOMPLIANCE(0) => PIPE_TXCOMPLIANCE(2), + PIPE_TXELECIDLE(0) => PIPE_TXELECIDLE(2), + RST_CPLLRESET => rst_cpllreset, + RST_IDLE => \pipe_reset.pipe_reset_i_n_1\, + RST_PHYSTATUS(0) => gt_phystatus_2, + RST_RESETDONE(0) => user_resetdone(2), + RST_RXCDRLOCK(0) => user_rxcdrlock_2, + RST_RXUSRCLK_RESET => rst_rxusrclk_reset, + USER_OOBCLK => user_oobclk_2, + USER_RATE_DONE => rate_done_2, + USER_RATE_IDLE => rate_idle_2, + USER_RATE_RXSYNC => rate_rxsync_2, + USER_RESETOVRD_START => rate_resetovrd_start_2, + USER_RXEQ_ADAPT_DONE => \pipe_lane[2].pipe_eq.pipe_eq_i_n_17\, + USER_RXRESETDONE => gt_rxresetdone_2, + USER_TXRESETDONE => gt_txresetdone_2, + \converge_cnt_reg[15]_0\ => \pipe_lane[2].pipe_user_i_n_9\, + \converge_cnt_reg[1]_0\ => \pipe_lane[2].pipe_user_i_n_10\, + \converge_cnt_reg[6]_0\ => \pipe_lane[2].pipe_user_i_n_11\, + converge_gen3_reg_0 => \pipe_lane[2].pipe_user_i_n_14\, + gt_rx_elec_idle_wire_filter(0) => \^gt_rx_elec_idle_wire_filter\(2), + gt_rx_phy_status_wire_filter(0) => gt_rx_phy_status_wire_filter(2), + gt_rxcdrlock_2 => gt_rxcdrlock_2, + gt_rxvalid_2 => gt_rxvalid_2, + gt_rxvalid_q_reg => gt_rxvalid_q_reg_1, + \out\ => \pipe_lane[3].pipe_user_i_n_1\, + phy_rdy_n_int_reg => \pipe_lane[0].pipe_user_i_n_1\, + phy_rdy_n_int_reg_0 => \pipe_lane[1].pipe_user_i_n_1\, + pipe_oobclk_in => pipe_oobclk_in, + pipe_pclk_in => pipe_pclk_in, + pipe_pclk_sel_out(0) => \^pipe_pclk_sel_out\(2), + pipe_rx2_valid_gt => pipe_rx2_valid_gt, + pipe_rxusrclk_in => pipe_rxusrclk_in, + rate_gen3_2 => rate_gen3_2, + reg_clock_locked => reg_clock_locked, + reg_clock_locked_reg => reg_clock_locked_reg, + rxstatus_reg1_reg_0(0) => \^pipe_dclk_in_1\(2), + txcompliance_reg2_reg_0 => \pipe_lane[2].pipe_user_i_n_2\, + txcompliance_reg2_reg_1 => p_0_in1_in_3, + txcompliance_reg2_reg_2 => \pipe_lane[2].pipe_user_i_n_5\, + txelecidle_reg2_reg_0 => p_1_in2_in_2, + txphaligndone_reg1_reg => \pipe_lane[2].gt_wrapper_i_n_16\, + txphaligndone_reg1_reg_0 => p_0_in1_in_4, + txphaligndone_reg1_reg_1 => p_1_in2_in_5, + txphaligndone_reg1_reg_2 => \pipe_lane[3].gt_wrapper_i_n_16\, + txphinitdone_reg1_reg => \pipe_lane[2].gt_wrapper_i_n_17\, + txphinitdone_reg1_reg_0 => \pipe_lane[3].gt_wrapper_i_n_17\, + user_active_lane_2 => user_active_lane_2 + ); +\pipe_lane[3].gt_wrapper_i\: entity work.pcie_7x_0_pcie_7x_0_gt_wrapper_49 + port map ( + CPLLPD0_5 => CPLLPD0_5, + DRPADDR(7) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_2\, + DRPADDR(6) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_3\, + DRPADDR(5) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_4\, + DRPADDR(4) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_5\, + DRPADDR(3) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_6\, + DRPADDR(2) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_7\, + DRPADDR(1) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_8\, + DRPADDR(0) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_9\, + DRPDI(15) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_10\, + DRPDI(14) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_11\, + DRPDI(13) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_12\, + DRPDI(12) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_13\, + DRPDI(11) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_14\, + DRPDI(10) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_15\, + DRPDI(9) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_16\, + DRPDI(8) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_17\, + DRPDI(7) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_18\, + DRPDI(6) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_19\, + DRPDI(5) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_20\, + DRPDI(4) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_21\, + DRPDI(3) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_22\, + DRPDI(2) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_23\, + DRPDI(1) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_24\, + DRPDI(0) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_25\, + DRP_DO(15) => \pipe_lane[3].gt_wrapper_i_n_20\, + DRP_DO(14) => \pipe_lane[3].gt_wrapper_i_n_21\, + DRP_DO(13) => \pipe_lane[3].gt_wrapper_i_n_22\, + DRP_DO(12) => \pipe_lane[3].gt_wrapper_i_n_23\, + DRP_DO(11) => \pipe_lane[3].gt_wrapper_i_n_24\, + DRP_DO(10) => \pipe_lane[3].gt_wrapper_i_n_25\, + DRP_DO(9) => \pipe_lane[3].gt_wrapper_i_n_26\, + DRP_DO(8) => \pipe_lane[3].gt_wrapper_i_n_27\, + DRP_DO(7) => \pipe_lane[3].gt_wrapper_i_n_28\, + DRP_DO(6) => \pipe_lane[3].gt_wrapper_i_n_29\, + DRP_DO(5) => \pipe_lane[3].gt_wrapper_i_n_30\, + DRP_DO(4) => \pipe_lane[3].gt_wrapper_i_n_31\, + DRP_DO(3) => \pipe_lane[3].gt_wrapper_i_n_32\, + DRP_DO(2) => \pipe_lane[3].gt_wrapper_i_n_33\, + DRP_DO(1) => \pipe_lane[3].gt_wrapper_i_n_34\, + DRP_DO(0) => \pipe_lane[3].gt_wrapper_i_n_35\, + DRP_GTXRESET => rst_gtreset, + DRP_RDY => \pipe_lane[3].gt_wrapper_i_n_2\, + PIPE_POWERDOWN(1 downto 0) => PIPE_POWERDOWN(7 downto 6), + PIPE_RXCHANISALIGNED(0) => PIPE_RXCHANISALIGNED(3), + PIPE_RXPOLARITY(0) => PIPE_RXPOLARITY(3), + PIPE_TXCOMPLIANCE(0) => PIPE_TXCOMPLIANCE(3), + PIPE_TXDATA(15 downto 0) => PIPE_TXDATA(63 downto 48), + PIPE_TXDATAK(1 downto 0) => PIPE_TXDATAK(7 downto 6), + PIPE_TXELECIDLE(0) => PIPE_TXELECIDLE(3), + QPLL_QPLLOUTCLK => \pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_1\, + QPLL_QPLLOUTREFCLK => \pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_2\, + QRST_CPLLLOCK(0) => \pipe_lane[3].gt_wrapper_i_n_1\, + RATE_PHYSTATUS => gt_phystatus_3, + RATE_RXRATEDONE => gt_rxratedone_3, + RATE_TXRATEDONE => gt_txratedone_3, + RST_CPLLRESET => rst_cpllreset, + RXCHBONDO(4 downto 0) => \gt_rxchbondi[3]_0\(4 downto 0), + RXRATE(0) => rate_rate_9(0), + RXSYSCLKSEL(0) => rate_sysclksel_6(0), + SYNC_TXDLYSRESET => sync_txdlysreset_3, + SYNC_TXPHALIGN => sync_txphalign_3, + SYNC_TXPHINIT => sync_txphinit_3, + TXMAINCURSOR(6 downto 0) => eq_txeq_maincursor_21(6 downto 0), + TXPOSTCURSOR(4 downto 0) => eq_txeq_postcursor_15(4 downto 0), + TXPRECURSOR(4 downto 0) => eq_txeq_precursor_15(4 downto 0), + USER_OOBCLK => user_oobclk_3, + USER_RXRESETDONE => gt_rxresetdone_3, + USER_TXRESETDONE => gt_txresetdone_3, + \cplllock_reg1_reg[3]\ => \pipe_lane[3].pipe_drp.pipe_drp_i_n_0\, + \cplllock_reg1_reg[3]_0\ => \pipe_lane[3].pipe_drp.pipe_drp_i_n_1\, + \cplllock_reg1_reg[3]_1\ => \gtx_channel.gtxe2_channel_i_i_6__2_n_0\, + \cplllock_reg1_reg[3]_2\(2 downto 0) => \cplllock_reg1_reg[3]\(2 downto 0), + cpllpd_2 => cpllpd_2, + gt_cpllpdrefclk => gt_cpllpdrefclk, + gt_rx_data_k_wire_filter(1 downto 0) => gt_rx_data_k_wire_filter(7 downto 6), + gt_rx_data_wire_filter(15 downto 0) => gt_rx_data_wire_filter(63 downto 48), + gt_rx_elec_idle_wire_filter(0) => \^gt_rx_elec_idle_wire_filter\(3), + gt_rxcdrlock_3 => gt_rxcdrlock_3, + gt_rxvalid_3 => gt_rxvalid_3, + pci_exp_rxn(0) => pci_exp_rxn(3), + pci_exp_rxp(0) => pci_exp_rxp(3), + pci_exp_txn(0) => pci_exp_txn(3), + pci_exp_txp(0) => pci_exp_txp(3), + pipe_dclk_in => pipe_dclk_in, + pipe_dclk_in_0 => \pipe_lane[3].gt_wrapper_i_n_8\, + pipe_dclk_in_1 => \pipe_lane[3].gt_wrapper_i_n_11\, + pipe_dclk_in_2 => \pipe_lane[3].gt_wrapper_i_n_15\, + pipe_dclk_in_3 => \pipe_lane[3].gt_wrapper_i_n_16\, + pipe_dclk_in_4 => \pipe_lane[3].gt_wrapper_i_n_17\, + pipe_dclk_in_5(2 downto 0) => \^pipe_dclk_in_2\(2 downto 0), + pipe_pclk_in => pipe_pclk_in, + pipe_rxoutclk_out(0) => pipe_rxoutclk_out(3), + pipe_rxusrclk_in => pipe_rxusrclk_in, + pipe_tx_deemph_gt => pipe_tx_deemph_gt, + pipe_tx_rcvr_det_gt => pipe_tx_rcvr_det_gt, + rate_cpllreset_3 => rate_cpllreset_3, + rate_txpmareset_3 => rate_txpmareset_3, + rst_userrdy => rst_userrdy, + rxchbonden_3 => rxchbonden_3, + sys_clk => sys_clk + ); +\pipe_lane[3].pipe_drp.pipe_drp_i\: entity work.pcie_7x_0_pcie_7x_0_pipe_drp_50 + port map ( + D(15) => \pipe_lane[3].gt_wrapper_i_n_20\, + D(14) => \pipe_lane[3].gt_wrapper_i_n_21\, + D(13) => \pipe_lane[3].gt_wrapper_i_n_22\, + D(12) => \pipe_lane[3].gt_wrapper_i_n_23\, + D(11) => \pipe_lane[3].gt_wrapper_i_n_24\, + D(10) => \pipe_lane[3].gt_wrapper_i_n_25\, + D(9) => \pipe_lane[3].gt_wrapper_i_n_26\, + D(8) => \pipe_lane[3].gt_wrapper_i_n_27\, + D(7) => \pipe_lane[3].gt_wrapper_i_n_28\, + D(6) => \pipe_lane[3].gt_wrapper_i_n_29\, + D(5) => \pipe_lane[3].gt_wrapper_i_n_30\, + D(4) => \pipe_lane[3].gt_wrapper_i_n_31\, + D(3) => \pipe_lane[3].gt_wrapper_i_n_32\, + D(2) => \pipe_lane[3].gt_wrapper_i_n_33\, + D(1) => \pipe_lane[3].gt_wrapper_i_n_34\, + D(0) => \pipe_lane[3].gt_wrapper_i_n_35\, + DRPADDR(7) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_2\, + DRPADDR(6) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_3\, + DRPADDR(5) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_4\, + DRPADDR(4) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_5\, + DRPADDR(3) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_6\, + DRPADDR(2) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_7\, + DRPADDR(1) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_8\, + DRPADDR(0) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_9\, + DRPDI(15) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_10\, + DRPDI(14) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_11\, + DRPDI(13) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_12\, + DRPDI(12) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_13\, + DRPDI(11) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_14\, + DRPDI(10) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_15\, + DRPDI(9) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_16\, + DRPDI(8) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_17\, + DRPDI(7) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_18\, + DRPDI(6) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_19\, + DRPDI(5) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_20\, + DRPDI(4) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_21\, + DRPDI(3) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_22\, + DRPDI(2) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_23\, + DRPDI(1) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_24\, + DRPDI(0) => \pipe_lane[3].pipe_drp.pipe_drp_i_n_25\, + DRP_DONE => drp_done_3, + DRP_GTXRESET => rst_gtreset, + DRP_RDY => \pipe_lane[3].gt_wrapper_i_n_2\, + RATE_DRP_START => rate_drp_start_3, + RATE_DRP_X16 => rate_drp_x16_3, + RATE_DRP_X16X20_MODE => rate_drp_x16x20_mode_3, + RST_DCLK_RESET => rst_dclk_reset, + \fsm_reg[1]_0\ => \pipe_lane[3].pipe_drp.pipe_drp_i_n_0\, + \fsm_reg[1]_1\ => \pipe_lane[3].pipe_drp.pipe_drp_i_n_1\, + pipe_dclk_in => pipe_dclk_in, + \rate_reg1_reg[0]_0\(0) => \rate_reg1_reg[0]\(0) + ); +\pipe_lane[3].pipe_eq.pipe_eq_i\: entity work.pcie_7x_0_pcie_7x_0_pipe_eq_51 + port map ( + RST_CPLLRESET => rst_cpllreset, + TXMAINCURSOR(6 downto 0) => eq_txeq_maincursor_21(6 downto 0), + TXPOSTCURSOR(4 downto 0) => eq_txeq_postcursor_15(4 downto 0), + TXPRECURSOR(4 downto 0) => eq_txeq_precursor_15(4 downto 0), + USER_RXEQ_ADAPT_DONE => \pipe_lane[3].pipe_eq.pipe_eq_i_n_17\, + pipe_pclk_in => pipe_pclk_in, + rate_gen3_3 => rate_gen3_3 + ); +\pipe_lane[3].pipe_rate.pipe_rate_i\: entity work.pcie_7x_0_pcie_7x_0_pipe_rate_52 + port map ( + QPLL_QPLLLOCK => \pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_0\, + QRST_CPLLLOCK(0) => \pipe_lane[3].gt_wrapper_i_n_1\, + QRST_QPLLPD_IN(0) => rate_qpllpd(3), + QRST_QPLLRESET_IN(0) => rate_qpllreset(3), + RATE_DRP_DONE => drp_done_3, + RATE_DRP_START => rate_drp_start_3, + RATE_DRP_X16 => rate_drp_x16_3, + RATE_DRP_X16X20_MODE => rate_drp_x16x20_mode_3, + RATE_PHYSTATUS => gt_phystatus_3, + RATE_RXRATEDONE => gt_rxratedone_3, + RATE_TXRATEDONE => gt_txratedone_3, + RATE_TXSYNC_DONE => sync_txsync_done_3, + RST_CPLLRESET => rst_cpllreset, + RST_IDLE => \pipe_reset.pipe_reset_i_n_1\, + RST_TXSYNC_START => rst_txsync_start, + RXRATE(0) => rate_rate_9(0), + RXSYSCLKSEL(0) => rate_sysclksel_6(0), + SYNC_RATE_IDLE => rate_idle_3, + SYNC_RXSYNC_START => rate_rxsync_start_3, + SYNC_TXSYNC_START => SYNC_TXSYNC_START0, + USER_RATE_DONE => rate_done_3, + USER_RATE_RXSYNC => rate_rxsync_3, + USER_RESETOVRD_START => rate_resetovrd_start_3, + USER_RXRESETDONE => gt_rxresetdone_3, + USER_TXRESETDONE => gt_txresetdone_3, + \fsm[0]_i_9__2_0\ => p_1_in2_in_5, + \out\ => p_0_in1_in_4, + pipe_mmcm_lock_in => pipe_mmcm_lock_in, + pipe_pclk_in => pipe_pclk_in, + pipe_pclk_sel_out(0) => \^pipe_pclk_sel_out\(3), + rate_cpllpd_3 => rate_cpllpd_3, + rate_cpllreset_3 => rate_cpllreset_3, + rate_gen3_3 => rate_gen3_3, + \rate_in_reg1_reg[0]_0\(0) => \rate_reg1_reg[0]\(0), + rate_txpmareset_3 => rate_txpmareset_3, + rxchbonden_3 => rxchbonden_3, + user_active_lane_3 => user_active_lane_3 + ); +\pipe_lane[3].pipe_sync_i\: entity work.pcie_7x_0_pcie_7x_0_pipe_sync_53 + port map ( + \FSM_onehot_txsync_fsm.fsm_tx_reg[6]_0\ => p_0_in1_in_4, + Q(2) => sync_txphalign_3, + Q(1) => sync_txphinit_3, + Q(0) => sync_txdlysreset_3, + RST_CPLLRESET => rst_cpllreset, + RST_TXSYNC_DONE(0) => sync_txsync_done_3, + SYNC_GEN3 => rate_gen3_3, + SYNC_RATE_IDLE => rate_idle_3, + SYNC_RXCDRLOCK => user_rxcdrlock_3, + SYNC_RXDLYSRESETDONE => rxdlysresetdone_3, + SYNC_RXPHALIGNDONE_M => \pipe_lane[0].gt_wrapper_i_n_11\, + SYNC_RXPHALIGNDONE_S => rxphaligndone_s_3, + SYNC_RXSYNC_START => rate_rxsync_start_3, + SYNC_TXDLYSRESETDONE => txdlysresetdone_3, + SYNC_TXPHALIGNDONE => txsyncallin, + SYNC_TXPHINITDONE => \pipe_lane[0].pipe_user_i_n_5\, + SYNC_TXSYNC_START => SYNC_TXSYNC_START0, + gt_rx_elec_idle_wire_filter(0) => \^gt_rx_elec_idle_wire_filter\(3), + \out\ => p_1_in2_in_5, + pipe_mmcm_lock_in => pipe_mmcm_lock_in, + pipe_pclk_in => pipe_pclk_in, + user_active_lane_3 => user_active_lane_3 + ); +\pipe_lane[3].pipe_user_i\: entity work.pcie_7x_0_pcie_7x_0_pipe_user_54 + port map ( + PIPE_TXCOMPLIANCE(0) => PIPE_TXCOMPLIANCE(3), + PIPE_TXELECIDLE(0) => PIPE_TXELECIDLE(3), + RST_CPLLRESET => rst_cpllreset, + RST_IDLE => \pipe_reset.pipe_reset_i_n_1\, + RST_PHYSTATUS(0) => gt_phystatus_3, + RST_RESETDONE(0) => user_resetdone(3), + RST_RXCDRLOCK(0) => user_rxcdrlock_3, + RST_RXUSRCLK_RESET => rst_rxusrclk_reset, + USER_OOBCLK => user_oobclk_3, + USER_RATE_DONE => rate_done_3, + USER_RATE_IDLE => rate_idle_3, + USER_RATE_RXSYNC => rate_rxsync_3, + USER_RESETOVRD_START => rate_resetovrd_start_3, + USER_RXEQ_ADAPT_DONE => \pipe_lane[3].pipe_eq.pipe_eq_i_n_17\, + USER_RXRESETDONE => gt_rxresetdone_3, + USER_TXRESETDONE => gt_txresetdone_3, + gt_rx_elec_idle_wire_filter(0) => \^gt_rx_elec_idle_wire_filter\(3), + gt_rx_phy_status_wire_filter(0) => gt_rx_phy_status_wire_filter(3), + gt_rxcdrlock_3 => gt_rxcdrlock_3, + gt_rxvalid_3 => gt_rxvalid_3, + gt_rxvalid_q_reg => gt_rxvalid_q_reg_2, + \out\ => \pipe_lane[3].pipe_user_i_n_1\, + pipe_oobclk_in => pipe_oobclk_in, + pipe_pclk_in => pipe_pclk_in, + pipe_pclk_sel_out(0) => \^pipe_pclk_sel_out\(3), + pipe_rx3_valid_gt => pipe_rx3_valid_gt, + pipe_rxusrclk_in => pipe_rxusrclk_in, + rate_gen3_3 => rate_gen3_3, + rxstatus_reg1_reg_0(0) => \^pipe_dclk_in_2\(2), + txcompliance_reg2_reg_0 => p_0_in1_in_4, + txelecidle_reg2_reg_0 => p_1_in2_in_5, + user_active_lane_3 => user_active_lane_3, + user_rx_converge(0) => user_rx_converge(3) + ); +\pipe_reset.pipe_reset_i\: entity work.pcie_7x_0_pcie_7x_0_pipe_reset + port map ( + D(3 downto 0) => user_resetdone(3 downto 0), + DRP_GTXRESET => rst_gtreset, + Q(1) => \pipe_reset.pipe_reset_i_n_1\, + Q(0) => rst_txsync_start, + QRST_CPLLLOCK(3) => \pipe_lane[3].gt_wrapper_i_n_1\, + QRST_CPLLLOCK(2) => \pipe_lane[2].gt_wrapper_i_n_1\, + QRST_CPLLLOCK(1) => \pipe_lane[1].gt_wrapper_i_n_1\, + QRST_CPLLLOCK(0) => \pipe_lane[0].gt_wrapper_i_n_1\, + QRST_IDLE => \qpll_reset.qpll_reset_i_n_0\, + RST_CPLLRESET => rst_cpllreset, + RST_DCLK_RESET => rst_dclk_reset, + RST_RXUSRCLK_RESET => rst_rxusrclk_reset, + SS(0) => \pipe_reset.pipe_reset_i_n_0\, + \drp_done_reg1_reg[3]_0\(3) => drp_done_3, + \drp_done_reg1_reg[3]_0\(2) => drp_done_2, + \drp_done_reg1_reg[3]_0\(1) => drp_done_1, + \drp_done_reg1_reg[3]_0\(0) => drp_done_0, + \out\ => reset_n_reg2, + \phystatus_reg1_reg[3]_0\(3) => gt_phystatus_3, + \phystatus_reg1_reg[3]_0\(2) => gt_phystatus_2, + \phystatus_reg1_reg[3]_0\(1) => gt_phystatus_1, + \phystatus_reg1_reg[3]_0\(0) => gt_phystatus_0, + pipe_dclk_in => pipe_dclk_in, + pipe_mmcm_lock_in => pipe_mmcm_lock_in, + pipe_pclk_in => pipe_pclk_in, + pipe_rxusrclk_in => pipe_rxusrclk_in, + \rate_idle_reg1_reg[3]_0\(3) => rate_idle_3, + \rate_idle_reg1_reg[3]_0\(2) => rate_idle_2, + \rate_idle_reg1_reg[3]_0\(1) => rate_idle_1, + \rate_idle_reg1_reg[3]_0\(0) => rate_idle_0, + rst_userrdy => rst_userrdy, + \rxcdrlock_reg1_reg[3]_0\(3) => user_rxcdrlock_3, + \rxcdrlock_reg1_reg[3]_0\(2) => user_rxcdrlock_2, + \rxcdrlock_reg1_reg[3]_0\(1) => user_rxcdrlock_1, + \rxcdrlock_reg1_reg[3]_0\(0) => user_rxcdrlock_0, + \txsync_done_reg1_reg[3]_0\(3) => sync_txsync_done_3, + \txsync_done_reg1_reg[3]_0\(2) => sync_txsync_done_2, + \txsync_done_reg1_reg[3]_0\(1) => sync_txsync_done_1, + \txsync_done_reg1_reg[3]_0\(0) => sync_txsync_done_0 + ); +\qpll_reset.qpll_reset_i\: entity work.pcie_7x_0_pcie_7x_0_qpll_reset + port map ( + D(3 downto 0) => rate_qpllpd(3 downto 0), + Q(1) => \qpll_reset.qpll_reset_i_n_0\, + Q(0) => qrst_drp_start, + QPLL_QPLLLOCK => \pipe_lane[0].pipe_quad.gt_common_enabled.gt_common_int.gt_common_i_n_0\, + QPLL_QPLLPD => qpllpd, + QPLL_QPLLRESET => qrst_qpllreset, + QRST_DRP_DONE(0) => qdrp_done, + SS(0) => \pipe_reset.pipe_reset_i_n_0\, + \cplllock_reg1_reg[3]_0\(3) => \pipe_lane[3].gt_wrapper_i_n_1\, + \cplllock_reg1_reg[3]_0\(2) => \pipe_lane[2].gt_wrapper_i_n_1\, + \cplllock_reg1_reg[3]_0\(1) => \pipe_lane[1].gt_wrapper_i_n_1\, + \cplllock_reg1_reg[3]_0\(0) => \pipe_lane[0].gt_wrapper_i_n_1\, + pipe_mmcm_lock_in => pipe_mmcm_lock_in, + pipe_pclk_in => pipe_pclk_in, + \qpllreset_in_reg1_reg[3]_0\(3 downto 0) => rate_qpllreset(3 downto 0), + \rate_reg1_reg[0]_0\(0) => \rate_reg1_reg[0]\(0) + ); +reset_n_reg1_reg: unisim.vcomponents.FDCE + port map ( + C => pipe_pclk_in, + CE => '1', + CLR => reset_n_reg1_reg_0, + D => '1', + Q => reset_n_reg1 + ); +reset_n_reg2_reg: unisim.vcomponents.FDCE + port map ( + C => pipe_pclk_in, + CE => '1', + CLR => reset_n_reg1_reg_0, + D => reset_n_reg1, + Q => reset_n_reg2 + ); +rxdlysresetdone_0: unisim.vcomponents.LUT4 + generic map( + INIT => X"8000" + ) + port map ( + I0 => \pipe_lane[1].gt_wrapper_i_n_8\, + I1 => \pipe_lane[0].gt_wrapper_i_n_8\, + I2 => \pipe_lane[3].gt_wrapper_i_n_8\, + I3 => \pipe_lane[2].gt_wrapper_i_n_8\, + O => rxdlysresetdone_3 + ); +rxphaligndone_s_0: unisim.vcomponents.LUT3 + generic map( + INIT => X"80" + ) + port map ( + I0 => \pipe_lane[1].gt_wrapper_i_n_11\, + I1 => \pipe_lane[3].gt_wrapper_i_n_11\, + I2 => \pipe_lane[2].gt_wrapper_i_n_11\, + O => rxphaligndone_s_3 + ); +txdlysresetdone_0: unisim.vcomponents.LUT4 + generic map( + INIT => X"8000" + ) + port map ( + I0 => \pipe_lane[1].gt_wrapper_i_n_15\, + I1 => \pipe_lane[0].gt_wrapper_i_n_15\, + I2 => \pipe_lane[3].gt_wrapper_i_n_15\, + I3 => \pipe_lane[2].gt_wrapper_i_n_15\, + O => txdlysresetdone_3 + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_gt_top is + port ( + pipe_rx0_valid_gt : out STD_LOGIC; + phy_rdy_n : out STD_LOGIC; + pipe_rx1_valid_gt : out STD_LOGIC; + pipe_rx2_valid_gt : out STD_LOGIC; + pipe_rx3_valid_gt : out STD_LOGIC; + gt_rx_phy_status_q_reg : out STD_LOGIC; + gt_rxelecidle_q_reg : out STD_LOGIC; + gt_rx_phy_status_q_reg_0 : out STD_LOGIC; + gt_rxelecidle_q_reg_0 : out STD_LOGIC; + gt_rx_phy_status_q_reg_1 : out STD_LOGIC; + gt_rxelecidle_q_reg_1 : out STD_LOGIC; + gt_rx_phy_status_q : out STD_LOGIC; + gt_rxelecidle_q : out STD_LOGIC; + sys_rst_n : out STD_LOGIC; + Q : out STD_LOGIC_VECTOR ( 15 downto 0 ); + \gt_rxdata_q_reg[15]\ : out STD_LOGIC_VECTOR ( 15 downto 0 ); + \gt_rxdata_q_reg[15]_0\ : out STD_LOGIC_VECTOR ( 15 downto 0 ); + \gt_rxdata_q_reg[15]_1\ : out STD_LOGIC_VECTOR ( 15 downto 0 ); + \gt_rx_status_q_reg[2]\ : out STD_LOGIC_VECTOR ( 2 downto 0 ); + \gt_rx_status_q_reg[2]_0\ : out STD_LOGIC_VECTOR ( 2 downto 0 ); + \gt_rx_status_q_reg[2]_1\ : out STD_LOGIC_VECTOR ( 2 downto 0 ); + \gt_rx_status_q_reg[2]_2\ : out STD_LOGIC_VECTOR ( 2 downto 0 ); + D : out STD_LOGIC_VECTOR ( 1 downto 0 ); + gt_rxvalid_q_reg : out STD_LOGIC_VECTOR ( 1 downto 0 ); + gt_rxvalid_q_reg_0 : out STD_LOGIC_VECTOR ( 1 downto 0 ); + gt_rxvalid_q_reg_1 : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pipe_pclk_sel_out : out STD_LOGIC_VECTOR ( 3 downto 0 ); + USER_RATE_GEN3 : out STD_LOGIC; + pci_exp_txn : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pci_exp_txp : out STD_LOGIC_VECTOR ( 3 downto 0 ); + PIPE_RXCHANISALIGNED : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_rxoutclk_out : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_txoutclk_out : out STD_LOGIC; + sys_rst_n_0 : out STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + pipe_mmcm_lock_in : in STD_LOGIC; + pl_ltssm_state : in STD_LOGIC_VECTOR ( 5 downto 0 ); + pipe_rxusrclk_in : in STD_LOGIC; + pipe_dclk_in : in STD_LOGIC; + \rate_reg1_reg[0]\ : in STD_LOGIC_VECTOR ( 0 to 0 ); + sys_clk : in STD_LOGIC; + pipe_oobclk_in : in STD_LOGIC; + PIPE_TXELECIDLE : in STD_LOGIC_VECTOR ( 3 downto 0 ); + PIPE_TXCOMPLIANCE : in STD_LOGIC_VECTOR ( 3 downto 0 ); + pci_exp_rxn : in STD_LOGIC_VECTOR ( 3 downto 0 ); + pci_exp_rxp : in STD_LOGIC_VECTOR ( 3 downto 0 ); + PIPE_RXPOLARITY : in STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_tx_deemph_gt : in STD_LOGIC; + pipe_tx_rcvr_det_gt : in STD_LOGIC; + PIPE_POWERDOWN : in STD_LOGIC_VECTOR ( 7 downto 0 ); + \cplllock_reg1_reg[3]\ : in STD_LOGIC_VECTOR ( 2 downto 0 ); + PIPE_TXDATA : in STD_LOGIC_VECTOR ( 63 downto 0 ); + PIPE_TXDATAK : in STD_LOGIC_VECTOR ( 7 downto 0 ); + reset_n_reg1_reg : in STD_LOGIC + ); +end pcie_7x_0_pcie_7x_0_gt_top; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_gt_top is + signal gt_rx_data_k_wire_filter : STD_LOGIC_VECTOR ( 13 downto 0 ); + signal gt_rx_data_wire_filter : STD_LOGIC_VECTOR ( 111 downto 0 ); + signal gt_rx_elec_idle_wire_filter : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal gt_rx_phy_status_wire_filter : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal \gt_rx_valid_filter[0].GT_RX_VALID_FILTER_7x_inst_n_3\ : STD_LOGIC; + signal \^phy_rdy_n\ : STD_LOGIC; + signal \pipe_lane[0].gt_wrapper_i/CPLLPD0\ : STD_LOGIC; + signal \pipe_lane[0].gt_wrapper_i/cpllpd\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i/CPLLPD0\ : STD_LOGIC; + signal \pipe_lane[1].gt_wrapper_i/cpllpd\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i/CPLLPD0\ : STD_LOGIC; + signal \pipe_lane[2].gt_wrapper_i/cpllpd\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i/CPLLPD0\ : STD_LOGIC; + signal \pipe_lane[3].gt_wrapper_i/cpllpd\ : STD_LOGIC; + signal \^pipe_rx0_valid_gt\ : STD_LOGIC; + signal \^pipe_rx1_valid_gt\ : STD_LOGIC; + signal \^pipe_rx2_valid_gt\ : STD_LOGIC; + signal \^pipe_rx3_valid_gt\ : STD_LOGIC; + signal pipe_wrapper_i_n_100 : STD_LOGIC; + signal pipe_wrapper_i_n_101 : STD_LOGIC; + signal pipe_wrapper_i_n_102 : STD_LOGIC; + signal pipe_wrapper_i_n_103 : STD_LOGIC; + signal pipe_wrapper_i_n_104 : STD_LOGIC; + signal pipe_wrapper_i_n_105 : STD_LOGIC; + signal pipe_wrapper_i_n_106 : STD_LOGIC; + signal pipe_wrapper_i_n_107 : STD_LOGIC; + signal pipe_wrapper_i_n_108 : STD_LOGIC; + signal pipe_wrapper_i_n_109 : STD_LOGIC; + signal pipe_wrapper_i_n_110 : STD_LOGIC; + signal pipe_wrapper_i_n_111 : STD_LOGIC; + signal pipe_wrapper_i_n_112 : STD_LOGIC; + signal pipe_wrapper_i_n_113 : STD_LOGIC; + signal pipe_wrapper_i_n_25 : STD_LOGIC; + signal pipe_wrapper_i_n_26 : STD_LOGIC; + signal pipe_wrapper_i_n_27 : STD_LOGIC; + signal pl_ltssm_state_q : STD_LOGIC_VECTOR ( 5 downto 0 ); + signal rate_cpllpd_0 : STD_LOGIC; + signal rate_cpllpd_1 : STD_LOGIC; + signal rate_cpllpd_2 : STD_LOGIC; + signal rate_cpllpd_3 : STD_LOGIC; + signal reg_clock_locked : STD_LOGIC; + signal reg_clock_locked_i_1_n_0 : STD_LOGIC; + signal \^sys_rst_n_0\ : STD_LOGIC; +begin + phy_rdy_n <= \^phy_rdy_n\; + pipe_rx0_valid_gt <= \^pipe_rx0_valid_gt\; + pipe_rx1_valid_gt <= \^pipe_rx1_valid_gt\; + pipe_rx2_valid_gt <= \^pipe_rx2_valid_gt\; + pipe_rx3_valid_gt <= \^pipe_rx3_valid_gt\; + sys_rst_n_0 <= \^sys_rst_n_0\; +\gt_rx_valid_filter[0].GT_RX_VALID_FILTER_7x_inst\: entity work.pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x + port map ( + D(1 downto 0) => D(1 downto 0), + PIPE_RXDATA(15 downto 0) => gt_rx_data_wire_filter(15 downto 0), + PIPE_RXDATAK(1 downto 0) => gt_rx_data_k_wire_filter(1 downto 0), + PIPE_RXELECIDLE(0) => gt_rx_elec_idle_wire_filter(0), + PIPE_RXSTATUS(2) => pipe_wrapper_i_n_25, + PIPE_RXSTATUS(1) => pipe_wrapper_i_n_26, + PIPE_RXSTATUS(0) => pipe_wrapper_i_n_27, + Q(15 downto 0) => Q(15 downto 0), + SR(0) => \^phy_rdy_n\, + gt_rx_phy_status_q => gt_rx_phy_status_q, + gt_rx_phy_status_wire_filter(0) => gt_rx_phy_status_wire_filter(0), + \gt_rx_status_q_reg[0]_0\(5 downto 0) => pl_ltssm_state_q(5 downto 0), + \gt_rx_status_q_reg[2]_0\(2 downto 0) => \gt_rx_status_q_reg[2]_2\(2 downto 0), + gt_rxelecidle_q => gt_rxelecidle_q, + gt_rxvalid_q_reg_0 => \^pipe_rx0_valid_gt\, + gt_rxvalid_q_reg_1 => pipe_wrapper_i_n_110, + pipe_pclk_in => pipe_pclk_in, + \pl_ltssm_state_q_reg[5]\ => \gt_rx_valid_filter[0].GT_RX_VALID_FILTER_7x_inst_n_3\ + ); +\gt_rx_valid_filter[1].GT_RX_VALID_FILTER_7x_inst\: entity work.pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x_34 + port map ( + PIPE_RXDATA(15 downto 0) => gt_rx_data_wire_filter(47 downto 32), + PIPE_RXDATAK(1 downto 0) => gt_rx_data_k_wire_filter(5 downto 4), + PIPE_RXELECIDLE(0) => gt_rx_elec_idle_wire_filter(1), + PIPE_RXSTATUS(2) => pipe_wrapper_i_n_100, + PIPE_RXSTATUS(1) => pipe_wrapper_i_n_101, + PIPE_RXSTATUS(0) => pipe_wrapper_i_n_102, + Q(15 downto 0) => \gt_rxdata_q_reg[15]\(15 downto 0), + SR(0) => \^phy_rdy_n\, + gt_rx_phy_status_q_reg_0 => gt_rx_phy_status_q_reg, + gt_rx_phy_status_wire_filter(0) => gt_rx_phy_status_wire_filter(1), + \gt_rx_status_q_reg[0]_0\ => \gt_rx_valid_filter[0].GT_RX_VALID_FILTER_7x_inst_n_3\, + \gt_rx_status_q_reg[2]_0\(2 downto 0) => \gt_rx_status_q_reg[2]\(2 downto 0), + gt_rxelecidle_q_reg_0 => gt_rxelecidle_q_reg, + gt_rxvalid_q_reg_0 => \^pipe_rx1_valid_gt\, + gt_rxvalid_q_reg_1(1 downto 0) => gt_rxvalid_q_reg(1 downto 0), + gt_rxvalid_q_reg_2 => pipe_wrapper_i_n_111, + pipe_pclk_in => pipe_pclk_in + ); +\gt_rx_valid_filter[2].GT_RX_VALID_FILTER_7x_inst\: entity work.pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x_35 + port map ( + PIPE_RXDATA(15 downto 0) => gt_rx_data_wire_filter(79 downto 64), + PIPE_RXDATAK(1 downto 0) => gt_rx_data_k_wire_filter(9 downto 8), + PIPE_RXELECIDLE(0) => gt_rx_elec_idle_wire_filter(2), + PIPE_RXSTATUS(2) => pipe_wrapper_i_n_103, + PIPE_RXSTATUS(1) => pipe_wrapper_i_n_104, + PIPE_RXSTATUS(0) => pipe_wrapper_i_n_105, + Q(15 downto 0) => \gt_rxdata_q_reg[15]_0\(15 downto 0), + SR(0) => \^phy_rdy_n\, + gt_rx_phy_status_q_reg_0 => gt_rx_phy_status_q_reg_0, + gt_rx_phy_status_wire_filter(0) => gt_rx_phy_status_wire_filter(2), + \gt_rx_status_q_reg[0]_0\ => \gt_rx_valid_filter[0].GT_RX_VALID_FILTER_7x_inst_n_3\, + \gt_rx_status_q_reg[2]_0\(2 downto 0) => \gt_rx_status_q_reg[2]_0\(2 downto 0), + gt_rxelecidle_q_reg_0 => gt_rxelecidle_q_reg_0, + gt_rxvalid_q_reg_0 => \^pipe_rx2_valid_gt\, + gt_rxvalid_q_reg_1(1 downto 0) => gt_rxvalid_q_reg_0(1 downto 0), + gt_rxvalid_q_reg_2 => pipe_wrapper_i_n_112, + pipe_pclk_in => pipe_pclk_in + ); +\gt_rx_valid_filter[3].GT_RX_VALID_FILTER_7x_inst\: entity work.pcie_7x_0_pcie_7x_0_gt_rx_valid_filter_7x_36 + port map ( + PIPE_RXDATA(15 downto 0) => gt_rx_data_wire_filter(111 downto 96), + PIPE_RXDATAK(1 downto 0) => gt_rx_data_k_wire_filter(13 downto 12), + PIPE_RXELECIDLE(0) => gt_rx_elec_idle_wire_filter(3), + PIPE_RXSTATUS(2) => pipe_wrapper_i_n_106, + PIPE_RXSTATUS(1) => pipe_wrapper_i_n_107, + PIPE_RXSTATUS(0) => pipe_wrapper_i_n_108, + Q(15 downto 0) => \gt_rxdata_q_reg[15]_1\(15 downto 0), + SR(0) => \^phy_rdy_n\, + gt_rx_phy_status_q_reg_0 => gt_rx_phy_status_q_reg_1, + gt_rx_phy_status_wire_filter(0) => gt_rx_phy_status_wire_filter(3), + \gt_rx_status_q_reg[0]_0\ => \gt_rx_valid_filter[0].GT_RX_VALID_FILTER_7x_inst_n_3\, + \gt_rx_status_q_reg[2]_0\(2 downto 0) => \gt_rx_status_q_reg[2]_1\(2 downto 0), + gt_rxelecidle_q_reg_0 => gt_rxelecidle_q_reg_1, + gt_rxvalid_q_reg_0 => \^pipe_rx3_valid_gt\, + gt_rxvalid_q_reg_1(1 downto 0) => gt_rxvalid_q_reg_1(1 downto 0), + gt_rxvalid_q_reg_2 => pipe_wrapper_i_n_113, + pipe_pclk_in => pipe_pclk_in + ); +\gtx_channel.gtxe2_channel_i_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"E" + ) + port map ( + I0 => \pipe_lane[0].gt_wrapper_i/cpllpd\, + I1 => rate_cpllpd_0, + O => \pipe_lane[0].gt_wrapper_i/CPLLPD0\ + ); +\gtx_channel.gtxe2_channel_i_i_1__0\: unisim.vcomponents.LUT2 + generic map( + INIT => X"E" + ) + port map ( + I0 => \pipe_lane[1].gt_wrapper_i/cpllpd\, + I1 => rate_cpllpd_1, + O => \pipe_lane[1].gt_wrapper_i/CPLLPD0\ + ); +\gtx_channel.gtxe2_channel_i_i_1__1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"E" + ) + port map ( + I0 => \pipe_lane[2].gt_wrapper_i/cpllpd\, + I1 => rate_cpllpd_2, + O => \pipe_lane[2].gt_wrapper_i/CPLLPD0\ + ); +\gtx_channel.gtxe2_channel_i_i_1__2\: unisim.vcomponents.LUT2 + generic map( + INIT => X"E" + ) + port map ( + I0 => \pipe_lane[3].gt_wrapper_i/cpllpd\, + I1 => rate_cpllpd_3, + O => \pipe_lane[3].gt_wrapper_i/CPLLPD0\ + ); +pcie_block_i_i_29: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => \^phy_rdy_n\, + O => sys_rst_n + ); +phy_rdy_n_int_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_pclk_in, + CE => '1', + D => pipe_wrapper_i_n_109, + Q => \^phy_rdy_n\, + R => '0' + ); +pipe_wrapper_i: entity work.pcie_7x_0_pcie_7x_0_pipe_wrapper + port map ( + CPLLPD0 => \pipe_lane[0].gt_wrapper_i/CPLLPD0\, + CPLLPD0_3 => \pipe_lane[1].gt_wrapper_i/CPLLPD0\, + CPLLPD0_4 => \pipe_lane[2].gt_wrapper_i/CPLLPD0\, + CPLLPD0_5 => \pipe_lane[3].gt_wrapper_i/CPLLPD0\, + PIPE_POWERDOWN(7 downto 0) => PIPE_POWERDOWN(7 downto 0), + PIPE_RXCHANISALIGNED(3 downto 0) => PIPE_RXCHANISALIGNED(3 downto 0), + PIPE_RXPOLARITY(3 downto 0) => PIPE_RXPOLARITY(3 downto 0), + PIPE_RXSTATUS(2) => pipe_wrapper_i_n_25, + PIPE_RXSTATUS(1) => pipe_wrapper_i_n_26, + PIPE_RXSTATUS(0) => pipe_wrapper_i_n_27, + PIPE_TXCOMPLIANCE(3 downto 0) => PIPE_TXCOMPLIANCE(3 downto 0), + PIPE_TXDATA(63 downto 0) => PIPE_TXDATA(63 downto 0), + PIPE_TXDATAK(7 downto 0) => PIPE_TXDATAK(7 downto 0), + PIPE_TXELECIDLE(3 downto 0) => PIPE_TXELECIDLE(3 downto 0), + \cplllock_reg1_reg[3]\(2 downto 0) => \cplllock_reg1_reg[3]\(2 downto 0), + cpllpd => \pipe_lane[0].gt_wrapper_i/cpllpd\, + cpllpd_0 => \pipe_lane[1].gt_wrapper_i/cpllpd\, + cpllpd_1 => \pipe_lane[2].gt_wrapper_i/cpllpd\, + cpllpd_2 => \pipe_lane[3].gt_wrapper_i/cpllpd\, + gen3_reg => USER_RATE_GEN3, + gt_rx_data_k_wire_filter(7 downto 6) => gt_rx_data_k_wire_filter(13 downto 12), + gt_rx_data_k_wire_filter(5 downto 4) => gt_rx_data_k_wire_filter(9 downto 8), + gt_rx_data_k_wire_filter(3 downto 2) => gt_rx_data_k_wire_filter(5 downto 4), + gt_rx_data_k_wire_filter(1 downto 0) => gt_rx_data_k_wire_filter(1 downto 0), + gt_rx_data_wire_filter(63 downto 48) => gt_rx_data_wire_filter(111 downto 96), + gt_rx_data_wire_filter(47 downto 32) => gt_rx_data_wire_filter(79 downto 64), + gt_rx_data_wire_filter(31 downto 16) => gt_rx_data_wire_filter(47 downto 32), + gt_rx_data_wire_filter(15 downto 0) => gt_rx_data_wire_filter(15 downto 0), + gt_rx_elec_idle_wire_filter(3 downto 0) => gt_rx_elec_idle_wire_filter(3 downto 0), + gt_rx_phy_status_wire_filter(3 downto 0) => gt_rx_phy_status_wire_filter(3 downto 0), + gt_rxvalid_q_reg => pipe_wrapper_i_n_110, + gt_rxvalid_q_reg_0 => pipe_wrapper_i_n_111, + gt_rxvalid_q_reg_1 => pipe_wrapper_i_n_112, + gt_rxvalid_q_reg_2 => pipe_wrapper_i_n_113, + pci_exp_rxn(3 downto 0) => pci_exp_rxn(3 downto 0), + pci_exp_rxp(3 downto 0) => pci_exp_rxp(3 downto 0), + pci_exp_txn(3 downto 0) => pci_exp_txn(3 downto 0), + pci_exp_txp(3 downto 0) => pci_exp_txp(3 downto 0), + pipe_dclk_in => pipe_dclk_in, + pipe_dclk_in_0(2) => pipe_wrapper_i_n_100, + pipe_dclk_in_0(1) => pipe_wrapper_i_n_101, + pipe_dclk_in_0(0) => pipe_wrapper_i_n_102, + pipe_dclk_in_1(2) => pipe_wrapper_i_n_103, + pipe_dclk_in_1(1) => pipe_wrapper_i_n_104, + pipe_dclk_in_1(0) => pipe_wrapper_i_n_105, + pipe_dclk_in_2(2) => pipe_wrapper_i_n_106, + pipe_dclk_in_2(1) => pipe_wrapper_i_n_107, + pipe_dclk_in_2(0) => pipe_wrapper_i_n_108, + pipe_mmcm_lock_in => pipe_mmcm_lock_in, + pipe_oobclk_in => pipe_oobclk_in, + pipe_pclk_in => pipe_pclk_in, + pipe_pclk_sel_out(3 downto 0) => pipe_pclk_sel_out(3 downto 0), + pipe_rx0_valid_gt => \^pipe_rx0_valid_gt\, + pipe_rx1_valid_gt => \^pipe_rx1_valid_gt\, + pipe_rx2_valid_gt => \^pipe_rx2_valid_gt\, + pipe_rx3_valid_gt => \^pipe_rx3_valid_gt\, + pipe_rxoutclk_out(3 downto 0) => pipe_rxoutclk_out(3 downto 0), + pipe_rxusrclk_in => pipe_rxusrclk_in, + pipe_tx_deemph_gt => pipe_tx_deemph_gt, + pipe_tx_rcvr_det_gt => pipe_tx_rcvr_det_gt, + pipe_txoutclk_out => pipe_txoutclk_out, + rate_cpllpd_0 => rate_cpllpd_0, + rate_cpllpd_1 => rate_cpllpd_1, + rate_cpllpd_2 => rate_cpllpd_2, + rate_cpllpd_3 => rate_cpllpd_3, + \rate_reg1_reg[0]\(0) => \rate_reg1_reg[0]\(0), + reg_clock_locked => reg_clock_locked, + reg_clock_locked_reg => pipe_wrapper_i_n_109, + reset_n_reg1_reg_0 => \^sys_rst_n_0\, + sys_clk => sys_clk + ); +\pl_ltssm_state_q_reg[0]\: unisim.vcomponents.FDCE + port map ( + C => pipe_pclk_in, + CE => '1', + CLR => reg_clock_locked_i_1_n_0, + D => pl_ltssm_state(0), + Q => pl_ltssm_state_q(0) + ); +\pl_ltssm_state_q_reg[1]\: unisim.vcomponents.FDCE + port map ( + C => pipe_pclk_in, + CE => '1', + CLR => reg_clock_locked_i_1_n_0, + D => pl_ltssm_state(1), + Q => pl_ltssm_state_q(1) + ); +\pl_ltssm_state_q_reg[2]\: unisim.vcomponents.FDCE + port map ( + C => pipe_pclk_in, + CE => '1', + CLR => reg_clock_locked_i_1_n_0, + D => pl_ltssm_state(2), + Q => pl_ltssm_state_q(2) + ); +\pl_ltssm_state_q_reg[3]\: unisim.vcomponents.FDCE + port map ( + C => pipe_pclk_in, + CE => '1', + CLR => reg_clock_locked_i_1_n_0, + D => pl_ltssm_state(3), + Q => pl_ltssm_state_q(3) + ); +\pl_ltssm_state_q_reg[4]\: unisim.vcomponents.FDCE + port map ( + C => pipe_pclk_in, + CE => '1', + CLR => reg_clock_locked_i_1_n_0, + D => pl_ltssm_state(4), + Q => pl_ltssm_state_q(4) + ); +\pl_ltssm_state_q_reg[5]\: unisim.vcomponents.FDCE + port map ( + C => pipe_pclk_in, + CE => '1', + CLR => reg_clock_locked_i_1_n_0, + D => pl_ltssm_state(5), + Q => pl_ltssm_state_q(5) + ); +pl_phy_lnk_up_q_i_1: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => reset_n_reg1_reg, + O => \^sys_rst_n_0\ + ); +reg_clock_locked_i_1: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => pipe_mmcm_lock_in, + O => reg_clock_locked_i_1_n_0 + ); +reg_clock_locked_reg: unisim.vcomponents.FDCE + port map ( + C => pipe_pclk_in, + CE => '1', + CLR => reg_clock_locked_i_1_n_0, + D => '1', + Q => reg_clock_locked + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_bram_top_7x is + port ( + rdata : out STD_LOGIC_VECTOR ( 68 downto 0 ); + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\ : out STD_LOGIC_VECTOR ( 67 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + mim_tx_wen : in STD_LOGIC; + mim_tx_ren : in STD_LOGIC; + MIMTXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMTXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + wdata : in STD_LOGIC_VECTOR ( 68 downto 0 ); + mim_rx_wen : in STD_LOGIC; + mim_rx_ren : in STD_LOGIC; + MIMRXWADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + MIMRXRADDR : in STD_LOGIC_VECTOR ( 11 downto 0 ); + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\ : in STD_LOGIC_VECTOR ( 67 downto 0 ) + ); +end pcie_7x_0_pcie_7x_0_pcie_bram_top_7x; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_bram_top_7x is +begin +pcie_brams_rx: entity work.pcie_7x_0_pcie_7x_0_pcie_brams_7x + port map ( + MIMRXRADDR(11 downto 0) => MIMRXRADDR(11 downto 0), + MIMRXWADDR(11 downto 0) => MIMRXWADDR(11 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(67 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(67 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(67 downto 0) => \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(67 downto 0), + mim_rx_ren => mim_rx_ren, + mim_rx_wen => mim_rx_wen, + pipe_userclk1_in => pipe_userclk1_in + ); +pcie_brams_tx: entity work.pcie_7x_0_pcie_7x_0_pcie_brams_7x_3 + port map ( + MIMTXRADDR(11 downto 0) => MIMTXRADDR(11 downto 0), + MIMTXWADDR(11 downto 0) => MIMTXWADDR(11 downto 0), + mim_tx_ren => mim_tx_ren, + mim_tx_wen => mim_tx_wen, + pipe_userclk1_in => pipe_userclk1_in, + rdata(68 downto 0) => rdata(68 downto 0), + wdata(68 downto 0) => wdata(68 downto 0) + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_7x is + port ( + user_reset_int_reg : out STD_LOGIC; + src_in : out STD_LOGIC; + cfg_mgmt_rd_wr_done : out STD_LOGIC; + cfg_err_aer_headerlog_set : out STD_LOGIC; + cfg_err_cpl_rdy : out STD_LOGIC; + cfg_interrupt_rdy : out STD_LOGIC; + E : out STD_LOGIC_VECTOR ( 0 to 0 ); + cfg_msg_received : out STD_LOGIC; + cfg_received_func_lvl_rst : out STD_LOGIC; + trn_in_packet_reg : out STD_LOGIC; + trn_reof : out STD_LOGIC; + trn_rsof : out STD_LOGIC; + trn_rsrc_dsc : out STD_LOGIC; + ppm_L1_thrtl_reg : out STD_LOGIC; + cfg_pcie_link_state : out STD_LOGIC_VECTOR ( 2 downto 0 ); + dsc_detect : out STD_LOGIC; + rsrc_rdy_filtered : out STD_LOGIC; + trn_rsrc_dsc_prev0 : out STD_LOGIC; + tcfg_req_trig : out STD_LOGIC; + trn_tcfg_req : out STD_LOGIC; + pcie_drp_clk_0 : out STD_LOGIC; + trn_tbuf_av : out STD_LOGIC_VECTOR ( 5 downto 0 ); + tbuf_av_min_trig : out STD_LOGIC; + lnk_up_thrtl_reg : out STD_LOGIC; + trn_tdst_rdy : out STD_LOGIC; + cfg_aer_ecrc_check_en : out STD_LOGIC; + cfg_aer_ecrc_gen_en : out STD_LOGIC; + cfg_aer_rooterr_corr_err_received : out STD_LOGIC; + cfg_aer_rooterr_corr_err_reporting_en : out STD_LOGIC; + cfg_aer_rooterr_fatal_err_received : out STD_LOGIC; + cfg_aer_rooterr_fatal_err_reporting_en : out STD_LOGIC; + cfg_aer_rooterr_non_fatal_err_received : out STD_LOGIC; + cfg_aer_rooterr_non_fatal_err_reporting_en : out STD_LOGIC; + cfg_bridge_serr_en : out STD_LOGIC; + cfg_command : out STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_dcommand2 : out STD_LOGIC_VECTOR ( 11 downto 0 ); + cfg_dcommand : out STD_LOGIC_VECTOR ( 14 downto 0 ); + cfg_dstatus : out STD_LOGIC_VECTOR ( 3 downto 0 ); + cfg_interrupt_msienable : out STD_LOGIC; + cfg_interrupt_msixenable : out STD_LOGIC; + cfg_interrupt_msixfm : out STD_LOGIC; + cfg_lcommand : out STD_LOGIC_VECTOR ( 10 downto 0 ); + cfg_lstatus : out STD_LOGIC_VECTOR ( 9 downto 0 ); + cfg_msg_received_assert_int_a : out STD_LOGIC; + cfg_msg_received_assert_int_b : out STD_LOGIC; + cfg_msg_received_assert_int_c : out STD_LOGIC; + cfg_msg_received_assert_int_d : out STD_LOGIC; + cfg_msg_received_deassert_int_a : out STD_LOGIC; + cfg_msg_received_deassert_int_b : out STD_LOGIC; + cfg_msg_received_deassert_int_c : out STD_LOGIC; + cfg_msg_received_deassert_int_d : out STD_LOGIC; + cfg_msg_received_err_cor : out STD_LOGIC; + cfg_msg_received_err_fatal : out STD_LOGIC; + cfg_msg_received_err_non_fatal : out STD_LOGIC; + cfg_msg_received_pm_as_nak : out STD_LOGIC; + cfg_to_turnoff : out STD_LOGIC; + cfg_msg_received_pme_to_ack : out STD_LOGIC; + cfg_msg_received_pm_pme : out STD_LOGIC; + cfg_msg_received_setslotpowerlimit : out STD_LOGIC; + cfg_pmcsr_pme_en : out STD_LOGIC; + cfg_pmcsr_pme_status : out STD_LOGIC; + cfg_root_control_pme_int_en : out STD_LOGIC; + cfg_root_control_syserr_corr_err_en : out STD_LOGIC; + cfg_root_control_syserr_fatal_err_en : out STD_LOGIC; + cfg_root_control_syserr_non_fatal_err_en : out STD_LOGIC; + cfg_slot_control_electromech_il_ctl_pulse : out STD_LOGIC; + pcie_drp_rdy : out STD_LOGIC; + pipe_rx0_polarity : out STD_LOGIC; + pipe_rx1_polarity : out STD_LOGIC; + pipe_rx2_polarity : out STD_LOGIC; + pipe_rx3_polarity : out STD_LOGIC; + pipe_tx0_compliance : out STD_LOGIC; + pipe_tx0_elec_idle : out STD_LOGIC; + pipe_tx1_compliance : out STD_LOGIC; + pipe_tx1_elec_idle : out STD_LOGIC; + pipe_tx2_compliance : out STD_LOGIC; + pipe_tx2_elec_idle : out STD_LOGIC; + pipe_tx3_compliance : out STD_LOGIC; + pipe_tx3_elec_idle : out STD_LOGIC; + pipe_tx_deemph : out STD_LOGIC; + pipe_tx_rate : out STD_LOGIC; + pipe_tx_rcvr_det : out STD_LOGIC; + pl_directed_change_done : out STD_LOGIC; + pl_link_gen2_cap : out STD_LOGIC; + pl_link_partner_gen2_supported : out STD_LOGIC; + pl_link_upcfg_cap : out STD_LOGIC; + pl_received_hot_rst : out STD_LOGIC; + pl_sel_lnk_rate : out STD_LOGIC; + trn_lnk_up : out STD_LOGIC; + trn_recrc_err : out STD_LOGIC; + trn_rerrfwd : out STD_LOGIC; + tx_err_drop : out STD_LOGIC; + fc_cpld : out STD_LOGIC_VECTOR ( 11 downto 0 ); + fc_npd : out STD_LOGIC_VECTOR ( 11 downto 0 ); + fc_pd : out STD_LOGIC_VECTOR ( 11 downto 0 ); + pcie_drp_clk_1 : out STD_LOGIC_VECTOR ( 63 downto 0 ); + cfg_msg_data : out STD_LOGIC_VECTOR ( 15 downto 0 ); + pcie_drp_do : out STD_LOGIC_VECTOR ( 15 downto 0 ); + pipe_tx0_data : out STD_LOGIC_VECTOR ( 15 downto 0 ); + pipe_tx1_data : out STD_LOGIC_VECTOR ( 15 downto 0 ); + pipe_tx2_data : out STD_LOGIC_VECTOR ( 15 downto 0 ); + pipe_tx3_data : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_pmcsr_powerstate : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pipe_tx0_char_is_k : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pipe_tx0_powerdown : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pipe_tx1_char_is_k : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pipe_tx1_powerdown : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pipe_tx2_char_is_k : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pipe_tx2_powerdown : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pipe_tx3_char_is_k : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pipe_tx3_powerdown : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_lane_reversal_mode : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_rx_pm_state : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_sel_lnk_width : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pcie_drp_clk_2 : out STD_LOGIC_VECTOR ( 0 to 0 ); + cfg_interrupt_mmenable : out STD_LOGIC_VECTOR ( 2 downto 0 ); + pipe_tx_margin : out STD_LOGIC_VECTOR ( 2 downto 0 ); + pl_initial_link_width : out STD_LOGIC_VECTOR ( 2 downto 0 ); + pl_tx_pm_state : out STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_mgmt_do : out STD_LOGIC_VECTOR ( 31 downto 0 ); + pl_ltssm_state : out STD_LOGIC_VECTOR ( 5 downto 0 ); + cfg_vc_tcvc_map : out STD_LOGIC_VECTOR ( 6 downto 0 ); + cfg_interrupt_do : out STD_LOGIC_VECTOR ( 7 downto 0 ); + fc_cplh : out STD_LOGIC_VECTOR ( 7 downto 0 ); + fc_nph : out STD_LOGIC_VECTOR ( 7 downto 0 ); + fc_ph : out STD_LOGIC_VECTOR ( 7 downto 0 ); + trn_rbar_hit : out STD_LOGIC_VECTOR ( 6 downto 0 ); + bridge_reset_int : in STD_LOGIC; + pl_phy_lnk_up : in STD_LOGIC; + cfg_trn_pending : in STD_LOGIC; + cfg_mgmt_wr_rw1c_as_rw : in STD_LOGIC; + cfg_mgmt_wr_readonly : in STD_LOGIC; + cfg_mgmt_wr_en : in STD_LOGIC; + cfg_mgmt_rd_en : in STD_LOGIC; + cfg_err_malformed : in STD_LOGIC; + cfg_err_cor : in STD_LOGIC; + cfg_err_ur : in STD_LOGIC; + cfg_err_ecrc : in STD_LOGIC; + cfg_err_cpl_timeout : in STD_LOGIC; + cfg_err_cpl_abort : in STD_LOGIC; + cfg_err_cpl_unexpect : in STD_LOGIC; + cfg_err_poisoned : in STD_LOGIC; + cfg_err_atomic_egress_blocked : in STD_LOGIC; + cfg_err_mc_blocked : in STD_LOGIC; + cfg_err_internal_uncor : in STD_LOGIC; + cfg_err_internal_cor : in STD_LOGIC; + cfg_err_posted : in STD_LOGIC; + cfg_err_locked : in STD_LOGIC; + cfg_err_norecovery : in STD_LOGIC; + cfg_interrupt : in STD_LOGIC; + cfg_interrupt_assert : in STD_LOGIC; + cfg_interrupt_stat : in STD_LOGIC; + cfg_pm_halt_aspm_l0s : in STD_LOGIC; + cfg_pm_halt_aspm_l1 : in STD_LOGIC; + cfg_pm_force_state_en : in STD_LOGIC; + cfg_pm_wake : in STD_LOGIC; + trn_in_packet : in STD_LOGIC; + trn_rdst_rdy : in STD_LOGIC; + ppm_L1_trig : in STD_LOGIC; + ppm_L1_thrtl : in STD_LOGIC; + trn_rsrc_dsc_d : in STD_LOGIC; + reg_dsc_detect : in STD_LOGIC; + reg_tcfg_gnt : in STD_LOGIC; + lnk_up_thrtl : in STD_LOGIC; + \out\ : in STD_LOGIC; + pipe_userclk1_in : in STD_LOGIC; + cfg_pm_turnoff_ok_n : in STD_LOGIC; + pcie_drp_clk : in STD_LOGIC; + pcie_drp_en : in STD_LOGIC; + pcie_drp_we : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + pipe_rx0_chanisaligned : in STD_LOGIC; + pipe_rx0_elec_idle : in STD_LOGIC; + pipe_rx0_phy_status : in STD_LOGIC; + pipe_rx0_valid : in STD_LOGIC; + pipe_rx1_chanisaligned : in STD_LOGIC; + pipe_rx1_elec_idle : in STD_LOGIC; + pipe_rx1_phy_status : in STD_LOGIC; + pipe_rx1_valid : in STD_LOGIC; + pipe_rx2_chanisaligned : in STD_LOGIC; + pipe_rx2_elec_idle : in STD_LOGIC; + pipe_rx2_phy_status : in STD_LOGIC; + pipe_rx2_valid : in STD_LOGIC; + pipe_rx3_chanisaligned : in STD_LOGIC; + pipe_rx3_elec_idle : in STD_LOGIC; + pipe_rx3_phy_status : in STD_LOGIC; + pipe_rx3_valid : in STD_LOGIC; + pl_directed_link_auton : in STD_LOGIC; + pl_directed_link_speed : in STD_LOGIC; + pl_downstream_deemph_source : in STD_LOGIC; + pl_transmit_hot_rst : in STD_LOGIC; + pl_upstream_prefer_deemph : in STD_LOGIC; + sys_rst_n : in STD_LOGIC; + rx_np_ok : in STD_LOGIC; + rx_np_req : in STD_LOGIC; + trn_tcfg_gnt : in STD_LOGIC; + cfg_aer_ecrc_check_en_0 : in STD_LOGIC_VECTOR ( 3 downto 0 ); + trn_teof : in STD_LOGIC; + trn_tsof : in STD_LOGIC; + trn_tsrc_rdy : in STD_LOGIC; + pipe_userclk2_in : in STD_LOGIC; + cfg_err_aer_headerlog : in STD_LOGIC_VECTOR ( 127 downto 0 ); + trn_td : in STD_LOGIC_VECTOR ( 63 downto 0 ); + pcie_drp_di : in STD_LOGIC_VECTOR ( 15 downto 0 ); + Q : in STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_aer_ecrc_check_en_1 : in STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_aer_ecrc_check_en_2 : in STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_aer_ecrc_check_en_3 : in STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_pm_force_state : in STD_LOGIC_VECTOR ( 1 downto 0 ); + cfg_aer_ecrc_check_en_4 : in STD_LOGIC_VECTOR ( 1 downto 0 ); + cfg_aer_ecrc_check_en_5 : in STD_LOGIC_VECTOR ( 1 downto 0 ); + cfg_aer_ecrc_check_en_6 : in STD_LOGIC_VECTOR ( 1 downto 0 ); + cfg_aer_ecrc_check_en_7 : in STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_directed_link_change : in STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_directed_link_width : in STD_LOGIC_VECTOR ( 1 downto 0 ); + trn_trem : in STD_LOGIC_VECTOR ( 0 to 0 ); + cfg_ds_function_number : in STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_aer_ecrc_check_en_8 : in STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_aer_ecrc_check_en_9 : in STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_aer_ecrc_check_en_10 : in STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_aer_ecrc_check_en_11 : in STD_LOGIC_VECTOR ( 2 downto 0 ); + fc_sel : in STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_mgmt_di : in STD_LOGIC_VECTOR ( 31 downto 0 ); + cfg_mgmt_byte_en_n : in STD_LOGIC_VECTOR ( 3 downto 0 ); + cfg_err_tlp_cpl_header : in STD_LOGIC_VECTOR ( 47 downto 0 ); + cfg_aer_interrupt_msgnum : in STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_ds_device_number : in STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_pciecap_interrupt_msgnum : in STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_dsn : in STD_LOGIC_VECTOR ( 63 downto 0 ); + cfg_ds_bus_number : in STD_LOGIC_VECTOR ( 7 downto 0 ); + cfg_interrupt_di : in STD_LOGIC_VECTOR ( 7 downto 0 ); + pcie_drp_addr : in STD_LOGIC_VECTOR ( 8 downto 0 ); + cfg_mgmt_dwaddr : in STD_LOGIC_VECTOR ( 9 downto 0 ) + ); +end pcie_7x_0_pcie_7x_0_pcie_7x; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_7x is + signal cfg_err_aer_headerlog_set_n : STD_LOGIC; + signal cfg_err_cpl_rdy_n : STD_LOGIC; + signal cfg_interrupt_rdy_n : STD_LOGIC; + signal cfg_mgmt_rd_wr_done_n : STD_LOGIC; + signal \^cfg_msg_received\ : STD_LOGIC; + signal \^cfg_pcie_link_state\ : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal cfg_received_func_lvl_rst_n : STD_LOGIC; + signal mim_rx_raddr : STD_LOGIC_VECTOR ( 12 downto 0 ); + signal mim_rx_rdata : STD_LOGIC_VECTOR ( 67 downto 0 ); + signal mim_rx_ren : STD_LOGIC; + signal mim_rx_waddr : STD_LOGIC_VECTOR ( 12 downto 0 ); + signal mim_rx_wdata : STD_LOGIC_VECTOR ( 67 downto 0 ); + signal mim_rx_wen : STD_LOGIC; + signal mim_tx_raddr : STD_LOGIC_VECTOR ( 12 downto 0 ); + signal mim_tx_rdata : STD_LOGIC_VECTOR ( 68 downto 0 ); + signal mim_tx_ren : STD_LOGIC; + signal mim_tx_waddr : STD_LOGIC_VECTOR ( 12 downto 0 ); + signal mim_tx_wdata : STD_LOGIC_VECTOR ( 68 downto 0 ); + signal mim_tx_wen : STD_LOGIC; + signal pcie_block_i_i_10_n_0 : STD_LOGIC; + signal pcie_block_i_i_11_n_0 : STD_LOGIC; + signal pcie_block_i_i_12_n_0 : STD_LOGIC; + signal pcie_block_i_i_13_n_0 : STD_LOGIC; + signal pcie_block_i_i_14_n_0 : STD_LOGIC; + signal pcie_block_i_i_15_n_0 : STD_LOGIC; + signal pcie_block_i_i_16_n_0 : STD_LOGIC; + signal pcie_block_i_i_17_n_0 : STD_LOGIC; + signal pcie_block_i_i_18_n_0 : STD_LOGIC; + signal pcie_block_i_i_19_n_0 : STD_LOGIC; + signal pcie_block_i_i_1_n_0 : STD_LOGIC; + signal pcie_block_i_i_20_n_0 : STD_LOGIC; + signal pcie_block_i_i_21_n_0 : STD_LOGIC; + signal pcie_block_i_i_22_n_0 : STD_LOGIC; + signal pcie_block_i_i_23_n_0 : STD_LOGIC; + signal pcie_block_i_i_24_n_0 : STD_LOGIC; + signal pcie_block_i_i_25_n_0 : STD_LOGIC; + signal pcie_block_i_i_27_n_0 : STD_LOGIC; + signal pcie_block_i_i_28_n_0 : STD_LOGIC; + signal pcie_block_i_i_2_n_0 : STD_LOGIC; + signal pcie_block_i_i_3_n_0 : STD_LOGIC; + signal pcie_block_i_i_4_n_0 : STD_LOGIC; + signal pcie_block_i_i_5_n_0 : STD_LOGIC; + signal pcie_block_i_i_6_n_0 : STD_LOGIC; + signal pcie_block_i_i_7_n_0 : STD_LOGIC; + signal pcie_block_i_i_8_n_0 : STD_LOGIC; + signal pcie_block_i_i_9_n_0 : STD_LOGIC; + signal pcie_block_i_n_100 : STD_LOGIC; + signal pcie_block_i_n_101 : STD_LOGIC; + signal pcie_block_i_n_102 : STD_LOGIC; + signal pcie_block_i_n_103 : STD_LOGIC; + signal pcie_block_i_n_104 : STD_LOGIC; + signal pcie_block_i_n_105 : STD_LOGIC; + signal pcie_block_i_n_106 : STD_LOGIC; + signal pcie_block_i_n_107 : STD_LOGIC; + signal pcie_block_i_n_108 : STD_LOGIC; + signal pcie_block_i_n_1097 : STD_LOGIC; + signal pcie_block_i_n_1098 : STD_LOGIC; + signal pcie_block_i_n_1099 : STD_LOGIC; + signal pcie_block_i_n_1100 : STD_LOGIC; + signal pcie_block_i_n_1101 : STD_LOGIC; + signal pcie_block_i_n_1102 : STD_LOGIC; + signal pcie_block_i_n_1103 : STD_LOGIC; + signal pcie_block_i_n_1143 : STD_LOGIC; + signal pcie_block_i_n_140 : STD_LOGIC; + signal pcie_block_i_n_141 : STD_LOGIC; + signal pcie_block_i_n_142 : STD_LOGIC; + signal pcie_block_i_n_143 : STD_LOGIC; + signal pcie_block_i_n_144 : STD_LOGIC; + signal pcie_block_i_n_145 : STD_LOGIC; + signal pcie_block_i_n_146 : STD_LOGIC; + signal pcie_block_i_n_155 : STD_LOGIC; + signal pcie_block_i_n_156 : STD_LOGIC; + signal pcie_block_i_n_157 : STD_LOGIC; + signal pcie_block_i_n_158 : STD_LOGIC; + signal pcie_block_i_n_159 : STD_LOGIC; + signal pcie_block_i_n_160 : STD_LOGIC; + signal pcie_block_i_n_169 : STD_LOGIC; + signal pcie_block_i_n_172 : STD_LOGIC; + signal pcie_block_i_n_173 : STD_LOGIC; + signal pcie_block_i_n_174 : STD_LOGIC; + signal pcie_block_i_n_175 : STD_LOGIC; + signal pcie_block_i_n_176 : STD_LOGIC; + signal pcie_block_i_n_177 : STD_LOGIC; + signal pcie_block_i_n_178 : STD_LOGIC; + signal pcie_block_i_n_179 : STD_LOGIC; + signal pcie_block_i_n_180 : STD_LOGIC; + signal pcie_block_i_n_181 : STD_LOGIC; + signal pcie_block_i_n_182 : STD_LOGIC; + signal pcie_block_i_n_183 : STD_LOGIC; + signal pcie_block_i_n_184 : STD_LOGIC; + signal pcie_block_i_n_185 : STD_LOGIC; + signal pcie_block_i_n_186 : STD_LOGIC; + signal pcie_block_i_n_187 : STD_LOGIC; + signal pcie_block_i_n_188 : STD_LOGIC; + signal pcie_block_i_n_189 : STD_LOGIC; + signal pcie_block_i_n_190 : STD_LOGIC; + signal pcie_block_i_n_191 : STD_LOGIC; + signal pcie_block_i_n_192 : STD_LOGIC; + signal pcie_block_i_n_193 : STD_LOGIC; + signal pcie_block_i_n_194 : STD_LOGIC; + signal pcie_block_i_n_195 : STD_LOGIC; + signal pcie_block_i_n_610 : STD_LOGIC; + signal pcie_block_i_n_611 : STD_LOGIC; + signal pcie_block_i_n_618 : STD_LOGIC; + signal pcie_block_i_n_619 : STD_LOGIC; + signal pcie_block_i_n_687 : STD_LOGIC; + signal pcie_block_i_n_688 : STD_LOGIC; + signal pcie_block_i_n_689 : STD_LOGIC; + signal pcie_block_i_n_690 : STD_LOGIC; + signal pcie_block_i_n_691 : STD_LOGIC; + signal pcie_block_i_n_704 : STD_LOGIC; + signal pcie_block_i_n_705 : STD_LOGIC; + signal pcie_block_i_n_706 : STD_LOGIC; + signal pcie_block_i_n_707 : STD_LOGIC; + signal pcie_block_i_n_708 : STD_LOGIC; + signal pcie_block_i_n_709 : STD_LOGIC; + signal pcie_block_i_n_710 : STD_LOGIC; + signal pcie_block_i_n_711 : STD_LOGIC; + signal pcie_block_i_n_712 : STD_LOGIC; + signal pcie_block_i_n_713 : STD_LOGIC; + signal pcie_block_i_n_714 : STD_LOGIC; + signal pcie_block_i_n_715 : STD_LOGIC; + signal pcie_block_i_n_716 : STD_LOGIC; + signal pcie_block_i_n_717 : STD_LOGIC; + signal pcie_block_i_n_718 : STD_LOGIC; + signal pcie_block_i_n_719 : STD_LOGIC; + signal pcie_block_i_n_72 : STD_LOGIC; + signal pcie_block_i_n_720 : STD_LOGIC; + signal pcie_block_i_n_721 : STD_LOGIC; + signal pcie_block_i_n_722 : STD_LOGIC; + signal pcie_block_i_n_723 : STD_LOGIC; + signal pcie_block_i_n_724 : STD_LOGIC; + signal pcie_block_i_n_725 : STD_LOGIC; + signal pcie_block_i_n_726 : STD_LOGIC; + signal pcie_block_i_n_727 : STD_LOGIC; + signal pcie_block_i_n_728 : STD_LOGIC; + signal pcie_block_i_n_729 : STD_LOGIC; + signal pcie_block_i_n_730 : STD_LOGIC; + signal pcie_block_i_n_731 : STD_LOGIC; + signal pcie_block_i_n_732 : STD_LOGIC; + signal pcie_block_i_n_733 : STD_LOGIC; + signal pcie_block_i_n_734 : STD_LOGIC; + signal pcie_block_i_n_735 : STD_LOGIC; + signal pcie_block_i_n_736 : STD_LOGIC; + signal pcie_block_i_n_737 : STD_LOGIC; + signal pcie_block_i_n_738 : STD_LOGIC; + signal pcie_block_i_n_739 : STD_LOGIC; + signal pcie_block_i_n_740 : STD_LOGIC; + signal pcie_block_i_n_741 : STD_LOGIC; + signal pcie_block_i_n_742 : STD_LOGIC; + signal pcie_block_i_n_743 : STD_LOGIC; + signal pcie_block_i_n_744 : STD_LOGIC; + signal pcie_block_i_n_745 : STD_LOGIC; + signal pcie_block_i_n_746 : STD_LOGIC; + signal pcie_block_i_n_747 : STD_LOGIC; + signal pcie_block_i_n_748 : STD_LOGIC; + signal pcie_block_i_n_749 : STD_LOGIC; + signal pcie_block_i_n_75 : STD_LOGIC; + signal pcie_block_i_n_750 : STD_LOGIC; + signal pcie_block_i_n_751 : STD_LOGIC; + signal pcie_block_i_n_752 : STD_LOGIC; + signal pcie_block_i_n_753 : STD_LOGIC; + signal pcie_block_i_n_754 : STD_LOGIC; + signal pcie_block_i_n_755 : STD_LOGIC; + signal pcie_block_i_n_756 : STD_LOGIC; + signal pcie_block_i_n_757 : STD_LOGIC; + signal pcie_block_i_n_758 : STD_LOGIC; + signal pcie_block_i_n_759 : STD_LOGIC; + signal pcie_block_i_n_76 : STD_LOGIC; + signal pcie_block_i_n_760 : STD_LOGIC; + signal pcie_block_i_n_761 : STD_LOGIC; + signal pcie_block_i_n_762 : STD_LOGIC; + signal pcie_block_i_n_763 : STD_LOGIC; + signal pcie_block_i_n_764 : STD_LOGIC; + signal pcie_block_i_n_765 : STD_LOGIC; + signal pcie_block_i_n_766 : STD_LOGIC; + signal pcie_block_i_n_767 : STD_LOGIC; + signal pcie_block_i_n_768 : STD_LOGIC; + signal pcie_block_i_n_769 : STD_LOGIC; + signal pcie_block_i_n_77 : STD_LOGIC; + signal pcie_block_i_n_770 : STD_LOGIC; + signal pcie_block_i_n_771 : STD_LOGIC; + signal pcie_block_i_n_772 : STD_LOGIC; + signal pcie_block_i_n_773 : STD_LOGIC; + signal pcie_block_i_n_774 : STD_LOGIC; + signal pcie_block_i_n_775 : STD_LOGIC; + signal pcie_block_i_n_776 : STD_LOGIC; + signal pcie_block_i_n_777 : STD_LOGIC; + signal pcie_block_i_n_778 : STD_LOGIC; + signal pcie_block_i_n_779 : STD_LOGIC; + signal pcie_block_i_n_78 : STD_LOGIC; + signal pcie_block_i_n_780 : STD_LOGIC; + signal pcie_block_i_n_781 : STD_LOGIC; + signal pcie_block_i_n_782 : STD_LOGIC; + signal pcie_block_i_n_783 : STD_LOGIC; + signal pcie_block_i_n_784 : STD_LOGIC; + signal pcie_block_i_n_785 : STD_LOGIC; + signal pcie_block_i_n_786 : STD_LOGIC; + signal pcie_block_i_n_787 : STD_LOGIC; + signal pcie_block_i_n_788 : STD_LOGIC; + signal pcie_block_i_n_789 : STD_LOGIC; + signal pcie_block_i_n_790 : STD_LOGIC; + signal pcie_block_i_n_791 : STD_LOGIC; + signal pcie_block_i_n_792 : STD_LOGIC; + signal pcie_block_i_n_793 : STD_LOGIC; + signal pcie_block_i_n_794 : STD_LOGIC; + signal pcie_block_i_n_795 : STD_LOGIC; + signal pcie_block_i_n_796 : STD_LOGIC; + signal pcie_block_i_n_797 : STD_LOGIC; + signal pcie_block_i_n_798 : STD_LOGIC; + signal pcie_block_i_n_799 : STD_LOGIC; + signal pcie_block_i_n_800 : STD_LOGIC; + signal pcie_block_i_n_801 : STD_LOGIC; + signal pcie_block_i_n_802 : STD_LOGIC; + signal pcie_block_i_n_803 : STD_LOGIC; + signal pcie_block_i_n_804 : STD_LOGIC; + signal pcie_block_i_n_805 : STD_LOGIC; + signal pcie_block_i_n_806 : STD_LOGIC; + signal pcie_block_i_n_807 : STD_LOGIC; + signal pcie_block_i_n_808 : STD_LOGIC; + signal pcie_block_i_n_809 : STD_LOGIC; + signal pcie_block_i_n_810 : STD_LOGIC; + signal pcie_block_i_n_811 : STD_LOGIC; + signal pcie_block_i_n_812 : STD_LOGIC; + signal pcie_block_i_n_813 : STD_LOGIC; + signal pcie_block_i_n_814 : STD_LOGIC; + signal pcie_block_i_n_815 : STD_LOGIC; + signal pcie_block_i_n_816 : STD_LOGIC; + signal pcie_block_i_n_817 : STD_LOGIC; + signal pcie_block_i_n_818 : STD_LOGIC; + signal pcie_block_i_n_819 : STD_LOGIC; + signal pcie_block_i_n_820 : STD_LOGIC; + signal pcie_block_i_n_821 : STD_LOGIC; + signal pcie_block_i_n_822 : STD_LOGIC; + signal pcie_block_i_n_823 : STD_LOGIC; + signal pcie_block_i_n_824 : STD_LOGIC; + signal pcie_block_i_n_825 : STD_LOGIC; + signal pcie_block_i_n_826 : STD_LOGIC; + signal pcie_block_i_n_827 : STD_LOGIC; + signal pcie_block_i_n_828 : STD_LOGIC; + signal pcie_block_i_n_829 : STD_LOGIC; + signal pcie_block_i_n_830 : STD_LOGIC; + signal pcie_block_i_n_831 : STD_LOGIC; + signal pcie_block_i_n_832 : STD_LOGIC; + signal pcie_block_i_n_833 : STD_LOGIC; + signal pcie_block_i_n_834 : STD_LOGIC; + signal pcie_block_i_n_835 : STD_LOGIC; + signal pcie_block_i_n_836 : STD_LOGIC; + signal pcie_block_i_n_837 : STD_LOGIC; + signal pcie_block_i_n_838 : STD_LOGIC; + signal pcie_block_i_n_839 : STD_LOGIC; + signal pcie_block_i_n_84 : STD_LOGIC; + signal pcie_block_i_n_840 : STD_LOGIC; + signal pcie_block_i_n_841 : STD_LOGIC; + signal pcie_block_i_n_842 : STD_LOGIC; + signal pcie_block_i_n_843 : STD_LOGIC; + signal pcie_block_i_n_844 : STD_LOGIC; + signal pcie_block_i_n_845 : STD_LOGIC; + signal pcie_block_i_n_846 : STD_LOGIC; + signal pcie_block_i_n_847 : STD_LOGIC; + signal pcie_block_i_n_848 : STD_LOGIC; + signal pcie_block_i_n_849 : STD_LOGIC; + signal pcie_block_i_n_85 : STD_LOGIC; + signal pcie_block_i_n_850 : STD_LOGIC; + signal pcie_block_i_n_851 : STD_LOGIC; + signal pcie_block_i_n_852 : STD_LOGIC; + signal pcie_block_i_n_853 : STD_LOGIC; + signal pcie_block_i_n_854 : STD_LOGIC; + signal pcie_block_i_n_855 : STD_LOGIC; + signal pcie_block_i_n_856 : STD_LOGIC; + signal pcie_block_i_n_857 : STD_LOGIC; + signal pcie_block_i_n_858 : STD_LOGIC; + signal pcie_block_i_n_859 : STD_LOGIC; + signal pcie_block_i_n_86 : STD_LOGIC; + signal pcie_block_i_n_860 : STD_LOGIC; + signal pcie_block_i_n_861 : STD_LOGIC; + signal pcie_block_i_n_862 : STD_LOGIC; + signal pcie_block_i_n_863 : STD_LOGIC; + signal pcie_block_i_n_864 : STD_LOGIC; + signal pcie_block_i_n_865 : STD_LOGIC; + signal pcie_block_i_n_866 : STD_LOGIC; + signal pcie_block_i_n_867 : STD_LOGIC; + signal pcie_block_i_n_868 : STD_LOGIC; + signal pcie_block_i_n_869 : STD_LOGIC; + signal pcie_block_i_n_87 : STD_LOGIC; + signal pcie_block_i_n_870 : STD_LOGIC; + signal pcie_block_i_n_871 : STD_LOGIC; + signal pcie_block_i_n_872 : STD_LOGIC; + signal pcie_block_i_n_873 : STD_LOGIC; + signal pcie_block_i_n_874 : STD_LOGIC; + signal pcie_block_i_n_875 : STD_LOGIC; + signal pcie_block_i_n_876 : STD_LOGIC; + signal pcie_block_i_n_877 : STD_LOGIC; + signal pcie_block_i_n_878 : STD_LOGIC; + signal pcie_block_i_n_879 : STD_LOGIC; + signal pcie_block_i_n_88 : STD_LOGIC; + signal pcie_block_i_n_880 : STD_LOGIC; + signal pcie_block_i_n_881 : STD_LOGIC; + signal pcie_block_i_n_882 : STD_LOGIC; + signal pcie_block_i_n_883 : STD_LOGIC; + signal pcie_block_i_n_884 : STD_LOGIC; + signal pcie_block_i_n_885 : STD_LOGIC; + signal pcie_block_i_n_886 : STD_LOGIC; + signal pcie_block_i_n_887 : STD_LOGIC; + signal pcie_block_i_n_888 : STD_LOGIC; + signal pcie_block_i_n_889 : STD_LOGIC; + signal pcie_block_i_n_89 : STD_LOGIC; + signal pcie_block_i_n_890 : STD_LOGIC; + signal pcie_block_i_n_891 : STD_LOGIC; + signal pcie_block_i_n_892 : STD_LOGIC; + signal pcie_block_i_n_893 : STD_LOGIC; + signal pcie_block_i_n_894 : STD_LOGIC; + signal pcie_block_i_n_895 : STD_LOGIC; + signal pcie_block_i_n_896 : STD_LOGIC; + signal pcie_block_i_n_897 : STD_LOGIC; + signal pcie_block_i_n_898 : STD_LOGIC; + signal pcie_block_i_n_899 : STD_LOGIC; + signal pcie_block_i_n_90 : STD_LOGIC; + signal pcie_block_i_n_900 : STD_LOGIC; + signal pcie_block_i_n_901 : STD_LOGIC; + signal pcie_block_i_n_902 : STD_LOGIC; + signal pcie_block_i_n_903 : STD_LOGIC; + signal pcie_block_i_n_904 : STD_LOGIC; + signal pcie_block_i_n_905 : STD_LOGIC; + signal pcie_block_i_n_906 : STD_LOGIC; + signal pcie_block_i_n_907 : STD_LOGIC; + signal pcie_block_i_n_908 : STD_LOGIC; + signal pcie_block_i_n_909 : STD_LOGIC; + signal pcie_block_i_n_91 : STD_LOGIC; + signal pcie_block_i_n_910 : STD_LOGIC; + signal pcie_block_i_n_911 : STD_LOGIC; + signal pcie_block_i_n_912 : STD_LOGIC; + signal pcie_block_i_n_913 : STD_LOGIC; + signal pcie_block_i_n_914 : STD_LOGIC; + signal pcie_block_i_n_915 : STD_LOGIC; + signal pcie_block_i_n_916 : STD_LOGIC; + signal pcie_block_i_n_917 : STD_LOGIC; + signal pcie_block_i_n_918 : STD_LOGIC; + signal pcie_block_i_n_919 : STD_LOGIC; + signal pcie_block_i_n_92 : STD_LOGIC; + signal pcie_block_i_n_920 : STD_LOGIC; + signal pcie_block_i_n_921 : STD_LOGIC; + signal pcie_block_i_n_922 : STD_LOGIC; + signal pcie_block_i_n_923 : STD_LOGIC; + signal pcie_block_i_n_924 : STD_LOGIC; + signal pcie_block_i_n_925 : STD_LOGIC; + signal pcie_block_i_n_926 : STD_LOGIC; + signal pcie_block_i_n_927 : STD_LOGIC; + signal pcie_block_i_n_928 : STD_LOGIC; + signal pcie_block_i_n_929 : STD_LOGIC; + signal pcie_block_i_n_93 : STD_LOGIC; + signal pcie_block_i_n_930 : STD_LOGIC; + signal pcie_block_i_n_931 : STD_LOGIC; + signal pcie_block_i_n_932 : STD_LOGIC; + signal pcie_block_i_n_933 : STD_LOGIC; + signal pcie_block_i_n_934 : STD_LOGIC; + signal pcie_block_i_n_935 : STD_LOGIC; + signal pcie_block_i_n_936 : STD_LOGIC; + signal pcie_block_i_n_937 : STD_LOGIC; + signal pcie_block_i_n_938 : STD_LOGIC; + signal pcie_block_i_n_939 : STD_LOGIC; + signal pcie_block_i_n_94 : STD_LOGIC; + signal pcie_block_i_n_940 : STD_LOGIC; + signal pcie_block_i_n_941 : STD_LOGIC; + signal pcie_block_i_n_942 : STD_LOGIC; + signal pcie_block_i_n_943 : STD_LOGIC; + signal pcie_block_i_n_944 : STD_LOGIC; + signal pcie_block_i_n_945 : STD_LOGIC; + signal pcie_block_i_n_946 : STD_LOGIC; + signal pcie_block_i_n_947 : STD_LOGIC; + signal pcie_block_i_n_948 : STD_LOGIC; + signal pcie_block_i_n_949 : STD_LOGIC; + signal pcie_block_i_n_95 : STD_LOGIC; + signal pcie_block_i_n_950 : STD_LOGIC; + signal pcie_block_i_n_951 : STD_LOGIC; + signal pcie_block_i_n_952 : STD_LOGIC; + signal pcie_block_i_n_953 : STD_LOGIC; + signal pcie_block_i_n_954 : STD_LOGIC; + signal pcie_block_i_n_955 : STD_LOGIC; + signal pcie_block_i_n_956 : STD_LOGIC; + signal pcie_block_i_n_957 : STD_LOGIC; + signal pcie_block_i_n_958 : STD_LOGIC; + signal pcie_block_i_n_959 : STD_LOGIC; + signal pcie_block_i_n_96 : STD_LOGIC; + signal pcie_block_i_n_98 : STD_LOGIC; + signal pcie_block_i_n_99 : STD_LOGIC; + signal pipe_rx4_polarity : STD_LOGIC; + signal pipe_rx5_polarity : STD_LOGIC; + signal pipe_rx6_polarity : STD_LOGIC; + signal pipe_rx7_polarity : STD_LOGIC; + signal pipe_tx4_char_is_k : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_tx4_compliance : STD_LOGIC; + signal pipe_tx4_data : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal pipe_tx4_elec_idle : STD_LOGIC; + signal pipe_tx4_powerdown : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_tx5_char_is_k : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_tx5_compliance : STD_LOGIC; + signal pipe_tx5_data : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal pipe_tx5_elec_idle : STD_LOGIC; + signal pipe_tx5_powerdown : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_tx6_char_is_k : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_tx6_compliance : STD_LOGIC; + signal pipe_tx6_data : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal pipe_tx6_elec_idle : STD_LOGIC; + signal pipe_tx6_powerdown : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_tx7_char_is_k : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_tx7_compliance : STD_LOGIC; + signal pipe_tx7_data : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal pipe_tx7_elec_idle : STD_LOGIC; + signal pipe_tx7_powerdown : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pl_phy_lnk_up_n : STD_LOGIC; + signal trn_rd : STD_LOGIC_VECTOR ( 127 downto 64 ); + signal \^trn_reof\ : STD_LOGIC; + signal trn_rrem : STD_LOGIC_VECTOR ( 1 to 1 ); + signal \^trn_rsof\ : STD_LOGIC; + signal \^trn_rsrc_dsc\ : STD_LOGIC; + signal trn_rsrc_rdy : STD_LOGIC; + signal \^trn_tbuf_av\ : STD_LOGIC_VECTOR ( 5 downto 0 ); + signal \^trn_tcfg_req\ : STD_LOGIC; + signal \^trn_tdst_rdy\ : STD_LOGIC; + signal user_rst_n : STD_LOGIC; + signal NLW_pcie_block_i_TRNTDSTRDY_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 1 ); + attribute BOX_TYPE : string; + attribute BOX_TYPE of pcie_block_i : label is "PRIMITIVE"; + attribute SOFT_HLUTNM : string; + attribute SOFT_HLUTNM of trn_rsrc_dsc_prev_i_1 : label is "soft_lutpair256"; + attribute SOFT_HLUTNM of trn_rsrc_rdy_prev_i_1 : label is "soft_lutpair256"; +begin + cfg_msg_received <= \^cfg_msg_received\; + cfg_pcie_link_state(2 downto 0) <= \^cfg_pcie_link_state\(2 downto 0); + trn_reof <= \^trn_reof\; + trn_rsof <= \^trn_rsof\; + trn_rsrc_dsc <= \^trn_rsrc_dsc\; + trn_tbuf_av(5 downto 0) <= \^trn_tbuf_av\(5 downto 0); + trn_tcfg_req <= \^trn_tcfg_req\; + trn_tdst_rdy <= \^trn_tdst_rdy\; +\cfg_bus_number_d[7]_i_2\: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => \^cfg_msg_received\, + O => E(0) + ); +cfg_err_aer_headerlog_set_INST_0: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_err_aer_headerlog_set_n, + O => cfg_err_aer_headerlog_set + ); +cfg_err_cpl_rdy_INST_0: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_err_cpl_rdy_n, + O => cfg_err_cpl_rdy + ); +cfg_interrupt_rdy_INST_0: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_interrupt_rdy_n, + O => cfg_interrupt_rdy + ); +cfg_mgmt_rd_wr_done_INST_0: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_mgmt_rd_wr_done_n, + O => cfg_mgmt_rd_wr_done + ); +cfg_received_func_lvl_rst_INST_0: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_received_func_lvl_rst_n, + O => cfg_received_func_lvl_rst + ); +lnk_up_thrtl_i_1: unisim.vcomponents.LUT3 + generic map( + INIT => X"4F" + ) + port map ( + I0 => \^trn_tdst_rdy\, + I1 => lnk_up_thrtl, + I2 => \out\, + O => lnk_up_thrtl_reg + ); +m_axis_rx_tvalid_i_2: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000027000000" + ) + port map ( + I0 => \^trn_reof\, + I1 => trn_rdst_rdy, + I2 => \^trn_rsof\, + I3 => \^trn_rsrc_dsc\, + I4 => trn_in_packet, + I5 => trn_rsrc_dsc_d, + O => dsc_detect + ); +pcie_block_i: unisim.vcomponents.PCIE_2_1 + generic map( + AER_BASE_PTR => X"000", + AER_CAP_ECRC_CHECK_CAPABLE => "FALSE", + AER_CAP_ECRC_GEN_CAPABLE => "FALSE", + AER_CAP_ID => X"0001", + AER_CAP_MULTIHEADER => "FALSE", + AER_CAP_NEXTPTR => X"000", + AER_CAP_ON => "FALSE", + AER_CAP_OPTIONAL_ERR_SUPPORT => X"000000", + AER_CAP_PERMIT_ROOTERR_UPDATE => "FALSE", + AER_CAP_VERSION => X"1", + ALLOW_X8_GEN2 => "FALSE", + BAR0 => X"FFFF0000", + BAR1 => X"00000000", + BAR2 => X"00000000", + BAR3 => X"00000000", + BAR4 => X"00000000", + BAR5 => X"00000000", + CAPABILITIES_PTR => X"40", + CARDBUS_CIS_POINTER => X"00000000", + CFG_ECRC_ERR_CPLSTAT => 0, + CLASS_CODE => X"050000", + CMD_INTX_IMPLEMENTED => "TRUE", + CPL_TIMEOUT_DISABLE_SUPPORTED => "FALSE", + CPL_TIMEOUT_RANGES_SUPPORTED => X"2", + CRM_MODULE_RSTS => X"00", + DEV_CAP2_ARI_FORWARDING_SUPPORTED => "FALSE", + DEV_CAP2_ATOMICOP32_COMPLETER_SUPPORTED => "FALSE", + DEV_CAP2_ATOMICOP64_COMPLETER_SUPPORTED => "FALSE", + DEV_CAP2_ATOMICOP_ROUTING_SUPPORTED => "FALSE", + DEV_CAP2_CAS128_COMPLETER_SUPPORTED => "FALSE", + DEV_CAP2_ENDEND_TLP_PREFIX_SUPPORTED => "FALSE", + DEV_CAP2_EXTENDED_FMT_FIELD_SUPPORTED => "FALSE", + DEV_CAP2_LTR_MECHANISM_SUPPORTED => "FALSE", + DEV_CAP2_MAX_ENDEND_TLP_PREFIXES => X"0", + DEV_CAP2_NO_RO_ENABLED_PRPR_PASSING => "FALSE", + DEV_CAP2_TPH_COMPLETER_SUPPORTED => X"0", + DEV_CAP_ENABLE_SLOT_PWR_LIMIT_SCALE => "TRUE", + DEV_CAP_ENABLE_SLOT_PWR_LIMIT_VALUE => "TRUE", + DEV_CAP_ENDPOINT_L0S_LATENCY => 0, + DEV_CAP_ENDPOINT_L1_LATENCY => 7, + DEV_CAP_EXT_TAG_SUPPORTED => "FALSE", + DEV_CAP_FUNCTION_LEVEL_RESET_CAPABLE => "FALSE", + DEV_CAP_MAX_PAYLOAD_SUPPORTED => 3, + DEV_CAP_PHANTOM_FUNCTIONS_SUPPORT => 0, + DEV_CAP_ROLE_BASED_ERROR => "TRUE", + DEV_CAP_RSVD_14_12 => 0, + DEV_CAP_RSVD_17_16 => 0, + DEV_CAP_RSVD_31_29 => 0, + DEV_CONTROL_AUX_POWER_SUPPORTED => "FALSE", + DEV_CONTROL_EXT_TAG_DEFAULT => "FALSE", + DISABLE_ASPM_L1_TIMER => "FALSE", + DISABLE_BAR_FILTERING => "FALSE", + DISABLE_ERR_MSG => "FALSE", + DISABLE_ID_CHECK => "FALSE", + DISABLE_LANE_REVERSAL => "TRUE", + DISABLE_LOCKED_FILTER => "FALSE", + DISABLE_PPM_FILTER => "FALSE", + DISABLE_RX_POISONED_RESP => "FALSE", + DISABLE_RX_TC_FILTER => "FALSE", + DISABLE_SCRAMBLING => "FALSE", + DNSTREAM_LINK_NUM => X"00", + DSN_BASE_PTR => X"100", + DSN_CAP_ID => X"0003", + DSN_CAP_NEXTPTR => X"000", + DSN_CAP_ON => "TRUE", + DSN_CAP_VERSION => X"1", + ENABLE_MSG_ROUTE => X"000", + ENABLE_RX_TD_ECRC_TRIM => "FALSE", + ENDEND_TLP_PREFIX_FORWARDING_SUPPORTED => "FALSE", + ENTER_RVRY_EI_L0 => "TRUE", + EXIT_LOOPBACK_ON_EI => "TRUE", + EXPANSION_ROM => X"00000000", + EXT_CFG_CAP_PTR => X"3F", + EXT_CFG_XP_CAP_PTR => X"3FF", + HEADER_TYPE => X"00", + INFER_EI => X"00", + INTERRUPT_PIN => X"01", + INTERRUPT_STAT_AUTO => "TRUE", + IS_SWITCH => "FALSE", + LAST_CONFIG_DWORD => X"3FF", + LINK_CAP_ASPM_OPTIONALITY => "FALSE", + LINK_CAP_ASPM_SUPPORT => 1, + LINK_CAP_CLOCK_POWER_MANAGEMENT => "FALSE", + LINK_CAP_DLL_LINK_ACTIVE_REPORTING_CAP => "FALSE", + LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN1 => 7, + LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN2 => 7, + LINK_CAP_L0S_EXIT_LATENCY_GEN1 => 7, + LINK_CAP_L0S_EXIT_LATENCY_GEN2 => 7, + LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN1 => 7, + LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN2 => 7, + LINK_CAP_L1_EXIT_LATENCY_GEN1 => 7, + LINK_CAP_L1_EXIT_LATENCY_GEN2 => 7, + LINK_CAP_LINK_BANDWIDTH_NOTIFICATION_CAP => "FALSE", + LINK_CAP_MAX_LINK_SPEED => X"2", + LINK_CAP_MAX_LINK_WIDTH => X"04", + LINK_CAP_RSVD_23 => 0, + LINK_CAP_SURPRISE_DOWN_ERROR_CAPABLE => "FALSE", + LINK_CONTROL_RCB => 0, + LINK_CTRL2_DEEMPHASIS => "FALSE", + LINK_CTRL2_HW_AUTONOMOUS_SPEED_DISABLE => "FALSE", + LINK_CTRL2_TARGET_LINK_SPEED => X"2", + LINK_STATUS_SLOT_CLOCK_CONFIG => "TRUE", + LL_ACK_TIMEOUT => X"0000", + LL_ACK_TIMEOUT_EN => "FALSE", + LL_ACK_TIMEOUT_FUNC => 0, + LL_REPLAY_TIMEOUT => X"0000", + LL_REPLAY_TIMEOUT_EN => "FALSE", + LL_REPLAY_TIMEOUT_FUNC => 1, + LTSSM_MAX_LINK_WIDTH => X"04", + MPS_FORCE => "FALSE", + MSIX_BASE_PTR => X"9C", + MSIX_CAP_ID => X"11", + MSIX_CAP_NEXTPTR => X"00", + MSIX_CAP_ON => "FALSE", + MSIX_CAP_PBA_BIR => 0, + MSIX_CAP_PBA_OFFSET => X"00000000", + MSIX_CAP_TABLE_BIR => 0, + MSIX_CAP_TABLE_OFFSET => X"00000000", + MSIX_CAP_TABLE_SIZE => X"000", + MSI_BASE_PTR => X"48", + MSI_CAP_64_BIT_ADDR_CAPABLE => "TRUE", + MSI_CAP_ID => X"05", + MSI_CAP_MULTIMSGCAP => 0, + MSI_CAP_MULTIMSG_EXTENSION => 0, + MSI_CAP_NEXTPTR => X"60", + MSI_CAP_ON => "FALSE", + MSI_CAP_PER_VECTOR_MASKING_CAPABLE => "FALSE", + N_FTS_COMCLK_GEN1 => 255, + N_FTS_COMCLK_GEN2 => 255, + N_FTS_GEN1 => 255, + N_FTS_GEN2 => 255, + PCIE_BASE_PTR => X"60", + PCIE_CAP_CAPABILITY_ID => X"10", + PCIE_CAP_CAPABILITY_VERSION => X"2", + PCIE_CAP_DEVICE_PORT_TYPE => X"0", + PCIE_CAP_NEXTPTR => X"00", + PCIE_CAP_ON => "TRUE", + PCIE_CAP_RSVD_15_14 => 0, + PCIE_CAP_SLOT_IMPLEMENTED => "FALSE", + PCIE_REVISION => 2, + PL_AUTO_CONFIG => 0, + PL_FAST_TRAIN => "TRUE", + PM_ASPML0S_TIMEOUT => X"0000", + PM_ASPML0S_TIMEOUT_EN => "FALSE", + PM_ASPML0S_TIMEOUT_FUNC => 0, + PM_ASPM_FASTEXIT => "FALSE", + PM_BASE_PTR => X"40", + PM_CAP_AUXCURRENT => 0, + PM_CAP_D1SUPPORT => "FALSE", + PM_CAP_D2SUPPORT => "FALSE", + PM_CAP_DSI => "FALSE", + PM_CAP_ID => X"01", + PM_CAP_NEXTPTR => X"60", + PM_CAP_ON => "TRUE", + PM_CAP_PMESUPPORT => X"0F", + PM_CAP_PME_CLOCK => "FALSE", + PM_CAP_RSVD_04 => 0, + PM_CAP_VERSION => 3, + PM_CSR_B2B3 => "FALSE", + PM_CSR_BPCCEN => "FALSE", + PM_CSR_NOSOFTRST => "TRUE", + PM_DATA0 => X"00", + PM_DATA1 => X"00", + PM_DATA2 => X"00", + PM_DATA3 => X"00", + PM_DATA4 => X"00", + PM_DATA5 => X"00", + PM_DATA6 => X"00", + PM_DATA7 => X"00", + PM_DATA_SCALE0 => X"0", + PM_DATA_SCALE1 => X"0", + PM_DATA_SCALE2 => X"0", + PM_DATA_SCALE3 => X"0", + PM_DATA_SCALE4 => X"0", + PM_DATA_SCALE5 => X"0", + PM_DATA_SCALE6 => X"0", + PM_DATA_SCALE7 => X"0", + PM_MF => "FALSE", + RBAR_BASE_PTR => X"000", + RBAR_CAP_CONTROL_ENCODEDBAR0 => X"00", + RBAR_CAP_CONTROL_ENCODEDBAR1 => X"00", + RBAR_CAP_CONTROL_ENCODEDBAR2 => X"00", + RBAR_CAP_CONTROL_ENCODEDBAR3 => X"00", + RBAR_CAP_CONTROL_ENCODEDBAR4 => X"00", + RBAR_CAP_CONTROL_ENCODEDBAR5 => X"00", + RBAR_CAP_ID => X"0015", + RBAR_CAP_INDEX0 => X"0", + RBAR_CAP_INDEX1 => X"0", + RBAR_CAP_INDEX2 => X"0", + RBAR_CAP_INDEX3 => X"0", + RBAR_CAP_INDEX4 => X"0", + RBAR_CAP_INDEX5 => X"0", + RBAR_CAP_NEXTPTR => X"000", + RBAR_CAP_ON => "FALSE", + RBAR_CAP_SUP0 => X"00000001", + RBAR_CAP_SUP1 => X"00000001", + RBAR_CAP_SUP2 => X"00000001", + RBAR_CAP_SUP3 => X"00000001", + RBAR_CAP_SUP4 => X"00000001", + RBAR_CAP_SUP5 => X"00000001", + RBAR_CAP_VERSION => X"1", + RBAR_NUM => X"0", + RECRC_CHK => 0, + RECRC_CHK_TRIM => "FALSE", + ROOT_CAP_CRS_SW_VISIBILITY => "FALSE", + RP_AUTO_SPD => X"1", + RP_AUTO_SPD_LOOPCNT => X"1F", + SELECT_DLL_IF => "FALSE", + SIM_VERSION => "1.0", + SLOT_CAP_ATT_BUTTON_PRESENT => "FALSE", + SLOT_CAP_ATT_INDICATOR_PRESENT => "FALSE", + SLOT_CAP_ELEC_INTERLOCK_PRESENT => "FALSE", + SLOT_CAP_HOTPLUG_CAPABLE => "FALSE", + SLOT_CAP_HOTPLUG_SURPRISE => "FALSE", + SLOT_CAP_MRL_SENSOR_PRESENT => "FALSE", + SLOT_CAP_NO_CMD_COMPLETED_SUPPORT => "FALSE", + SLOT_CAP_PHYSICAL_SLOT_NUM => X"0000", + SLOT_CAP_POWER_CONTROLLER_PRESENT => "FALSE", + SLOT_CAP_POWER_INDICATOR_PRESENT => "FALSE", + SLOT_CAP_SLOT_POWER_LIMIT_SCALE => 0, + SLOT_CAP_SLOT_POWER_LIMIT_VALUE => X"00", + SPARE_BIT0 => 0, + SPARE_BIT1 => 0, + SPARE_BIT2 => 0, + SPARE_BIT3 => 0, + SPARE_BIT4 => 0, + SPARE_BIT5 => 0, + SPARE_BIT6 => 0, + SPARE_BIT7 => 0, + SPARE_BIT8 => 0, + SPARE_BYTE0 => X"00", + SPARE_BYTE1 => X"00", + SPARE_BYTE2 => X"00", + SPARE_BYTE3 => X"00", + SPARE_WORD0 => X"00000000", + SPARE_WORD1 => X"00000000", + SPARE_WORD2 => X"00000000", + SPARE_WORD3 => X"00000000", + SSL_MESSAGE_AUTO => "FALSE", + TECRC_EP_INV => "FALSE", + TL_RBYPASS => "FALSE", + TL_RX_RAM_RADDR_LATENCY => 0, + TL_RX_RAM_RDATA_LATENCY => 2, + TL_RX_RAM_WRITE_LATENCY => 0, + TL_TFC_DISABLE => "FALSE", + TL_TX_CHECKS_DISABLE => "FALSE", + TL_TX_RAM_RADDR_LATENCY => 0, + TL_TX_RAM_RDATA_LATENCY => 2, + TL_TX_RAM_WRITE_LATENCY => 0, + TRN_DW => "FALSE", + TRN_NP_FC => "TRUE", + UPCONFIG_CAPABLE => "TRUE", + UPSTREAM_FACING => "TRUE", + UR_ATOMIC => "FALSE", + UR_CFG1 => "TRUE", + UR_INV_REQ => "TRUE", + UR_PRS_RESPONSE => "TRUE", + USER_CLK2_DIV2 => "FALSE", + USER_CLK_FREQ => 3, + USE_RID_PINS => "FALSE", + VC0_CPL_INFINITE => "TRUE", + VC0_RX_RAM_LIMIT => X"0FFF", + VC0_TOTAL_CREDITS_CD => 973, + VC0_TOTAL_CREDITS_CH => 36, + VC0_TOTAL_CREDITS_NPD => 24, + VC0_TOTAL_CREDITS_NPH => 12, + VC0_TOTAL_CREDITS_PD => 949, + VC0_TOTAL_CREDITS_PH => 32, + VC0_TX_LASTPACKET => 30, + VC_BASE_PTR => X"000", + VC_CAP_ID => X"0002", + VC_CAP_NEXTPTR => X"000", + VC_CAP_ON => "FALSE", + VC_CAP_REJECT_SNOOP_TRANSACTIONS => "FALSE", + VC_CAP_VERSION => X"1", + VSEC_BASE_PTR => X"000", + VSEC_CAP_HDR_ID => X"1234", + VSEC_CAP_HDR_LENGTH => X"018", + VSEC_CAP_HDR_REVISION => X"1", + VSEC_CAP_ID => X"000B", + VSEC_CAP_IS_LINK_VISIBLE => "TRUE", + VSEC_CAP_NEXTPTR => X"000", + VSEC_CAP_ON => "FALSE", + VSEC_CAP_VERSION => X"1" + ) + port map ( + CFGAERECRCCHECKEN => cfg_aer_ecrc_check_en, + CFGAERECRCGENEN => cfg_aer_ecrc_gen_en, + CFGAERINTERRUPTMSGNUM(4 downto 0) => cfg_aer_interrupt_msgnum(4 downto 0), + CFGAERROOTERRCORRERRRECEIVED => cfg_aer_rooterr_corr_err_received, + CFGAERROOTERRCORRERRREPORTINGEN => cfg_aer_rooterr_corr_err_reporting_en, + CFGAERROOTERRFATALERRRECEIVED => cfg_aer_rooterr_fatal_err_received, + CFGAERROOTERRFATALERRREPORTINGEN => cfg_aer_rooterr_fatal_err_reporting_en, + CFGAERROOTERRNONFATALERRRECEIVED => cfg_aer_rooterr_non_fatal_err_received, + CFGAERROOTERRNONFATALERRREPORTINGEN => cfg_aer_rooterr_non_fatal_err_reporting_en, + CFGBRIDGESERREN => cfg_bridge_serr_en, + CFGCOMMANDBUSMASTERENABLE => cfg_command(2), + CFGCOMMANDINTERRUPTDISABLE => cfg_command(4), + CFGCOMMANDIOENABLE => cfg_command(0), + CFGCOMMANDMEMENABLE => cfg_command(1), + CFGCOMMANDSERREN => cfg_command(3), + CFGDEVCONTROL2ARIFORWARDEN => cfg_dcommand2(5), + CFGDEVCONTROL2ATOMICEGRESSBLOCK => cfg_dcommand2(7), + CFGDEVCONTROL2ATOMICREQUESTEREN => cfg_dcommand2(6), + CFGDEVCONTROL2CPLTIMEOUTDIS => cfg_dcommand2(4), + CFGDEVCONTROL2CPLTIMEOUTVAL(3 downto 0) => cfg_dcommand2(3 downto 0), + CFGDEVCONTROL2IDOCPLEN => cfg_dcommand2(9), + CFGDEVCONTROL2IDOREQEN => cfg_dcommand2(8), + CFGDEVCONTROL2LTREN => cfg_dcommand2(10), + CFGDEVCONTROL2TLPPREFIXBLOCK => cfg_dcommand2(11), + CFGDEVCONTROLAUXPOWEREN => cfg_dcommand(10), + CFGDEVCONTROLCORRERRREPORTINGEN => cfg_dcommand(0), + CFGDEVCONTROLENABLERO => cfg_dcommand(4), + CFGDEVCONTROLEXTTAGEN => cfg_dcommand(8), + CFGDEVCONTROLFATALERRREPORTINGEN => cfg_dcommand(2), + CFGDEVCONTROLMAXPAYLOAD(2 downto 0) => cfg_dcommand(7 downto 5), + CFGDEVCONTROLMAXREADREQ(2 downto 0) => cfg_dcommand(14 downto 12), + CFGDEVCONTROLNONFATALREPORTINGEN => cfg_dcommand(1), + CFGDEVCONTROLNOSNOOPEN => cfg_dcommand(11), + CFGDEVCONTROLPHANTOMEN => cfg_dcommand(9), + CFGDEVCONTROLURERRREPORTINGEN => cfg_dcommand(3), + CFGDEVID(15 downto 0) => B"0111000000100100", + CFGDEVSTATUSCORRERRDETECTED => cfg_dstatus(0), + CFGDEVSTATUSFATALERRDETECTED => cfg_dstatus(2), + CFGDEVSTATUSNONFATALERRDETECTED => cfg_dstatus(1), + CFGDEVSTATUSURDETECTED => cfg_dstatus(3), + CFGDSBUSNUMBER(7 downto 0) => cfg_ds_bus_number(7 downto 0), + CFGDSDEVICENUMBER(4 downto 0) => cfg_ds_device_number(4 downto 0), + CFGDSFUNCTIONNUMBER(2 downto 0) => cfg_ds_function_number(2 downto 0), + CFGDSN(63 downto 0) => cfg_dsn(63 downto 0), + CFGERRACSN => '1', + CFGERRAERHEADERLOG(127 downto 0) => cfg_err_aer_headerlog(127 downto 0), + CFGERRAERHEADERLOGSETN => cfg_err_aer_headerlog_set_n, + CFGERRATOMICEGRESSBLOCKEDN => pcie_block_i_i_1_n_0, + CFGERRCORN => pcie_block_i_i_2_n_0, + CFGERRCPLABORTN => pcie_block_i_i_3_n_0, + CFGERRCPLRDYN => cfg_err_cpl_rdy_n, + CFGERRCPLTIMEOUTN => pcie_block_i_i_4_n_0, + CFGERRCPLUNEXPECTN => pcie_block_i_i_5_n_0, + CFGERRECRCN => pcie_block_i_i_6_n_0, + CFGERRINTERNALCORN => pcie_block_i_i_7_n_0, + CFGERRINTERNALUNCORN => pcie_block_i_i_8_n_0, + CFGERRLOCKEDN => pcie_block_i_i_9_n_0, + CFGERRMALFORMEDN => pcie_block_i_i_10_n_0, + CFGERRMCBLOCKEDN => pcie_block_i_i_11_n_0, + CFGERRNORECOVERYN => pcie_block_i_i_12_n_0, + CFGERRPOISONEDN => pcie_block_i_i_13_n_0, + CFGERRPOSTEDN => pcie_block_i_i_14_n_0, + CFGERRTLPCPLHEADER(47 downto 0) => cfg_err_tlp_cpl_header(47 downto 0), + CFGERRURN => pcie_block_i_i_15_n_0, + CFGFORCECOMMONCLOCKOFF => '0', + CFGFORCEEXTENDEDSYNCON => '0', + CFGFORCEMPS(2 downto 0) => B"000", + CFGINTERRUPTASSERTN => pcie_block_i_i_16_n_0, + CFGINTERRUPTDI(7 downto 0) => cfg_interrupt_di(7 downto 0), + CFGINTERRUPTDO(7 downto 0) => cfg_interrupt_do(7 downto 0), + CFGINTERRUPTMMENABLE(2 downto 0) => cfg_interrupt_mmenable(2 downto 0), + CFGINTERRUPTMSIENABLE => cfg_interrupt_msienable, + CFGINTERRUPTMSIXENABLE => cfg_interrupt_msixenable, + CFGINTERRUPTMSIXFM => cfg_interrupt_msixfm, + CFGINTERRUPTN => pcie_block_i_i_17_n_0, + CFGINTERRUPTRDYN => cfg_interrupt_rdy_n, + CFGINTERRUPTSTATN => pcie_block_i_i_18_n_0, + CFGLINKCONTROLASPMCONTROL(1 downto 0) => cfg_lcommand(1 downto 0), + CFGLINKCONTROLAUTOBANDWIDTHINTEN => cfg_lcommand(10), + CFGLINKCONTROLBANDWIDTHINTEN => cfg_lcommand(9), + CFGLINKCONTROLCLOCKPMEN => cfg_lcommand(7), + CFGLINKCONTROLCOMMONCLOCK => cfg_lcommand(5), + CFGLINKCONTROLEXTENDEDSYNC => cfg_lcommand(6), + CFGLINKCONTROLHWAUTOWIDTHDIS => cfg_lcommand(8), + CFGLINKCONTROLLINKDISABLE => cfg_lcommand(3), + CFGLINKCONTROLRCB => cfg_lcommand(2), + CFGLINKCONTROLRETRAINLINK => cfg_lcommand(4), + CFGLINKSTATUSAUTOBANDWIDTHSTATUS => cfg_lstatus(9), + CFGLINKSTATUSBANDWIDTHSTATUS => cfg_lstatus(8), + CFGLINKSTATUSCURRENTSPEED(1 downto 0) => cfg_lstatus(1 downto 0), + CFGLINKSTATUSDLLACTIVE => cfg_lstatus(7), + CFGLINKSTATUSLINKTRAINING => cfg_lstatus(6), + CFGLINKSTATUSNEGOTIATEDWIDTH(3 downto 0) => cfg_lstatus(5 downto 2), + CFGMGMTBYTEENN(3 downto 0) => cfg_mgmt_byte_en_n(3 downto 0), + CFGMGMTDI(31 downto 0) => cfg_mgmt_di(31 downto 0), + CFGMGMTDO(31 downto 0) => cfg_mgmt_do(31 downto 0), + CFGMGMTDWADDR(9 downto 0) => cfg_mgmt_dwaddr(9 downto 0), + CFGMGMTRDENN => pcie_block_i_i_19_n_0, + CFGMGMTRDWRDONEN => cfg_mgmt_rd_wr_done_n, + CFGMGMTWRENN => pcie_block_i_i_20_n_0, + CFGMGMTWRREADONLYN => pcie_block_i_i_21_n_0, + CFGMGMTWRRW1CASRWN => pcie_block_i_i_22_n_0, + CFGMSGDATA(15 downto 0) => cfg_msg_data(15 downto 0), + CFGMSGRECEIVED => \^cfg_msg_received\, + CFGMSGRECEIVEDASSERTINTA => cfg_msg_received_assert_int_a, + CFGMSGRECEIVEDASSERTINTB => cfg_msg_received_assert_int_b, + CFGMSGRECEIVEDASSERTINTC => cfg_msg_received_assert_int_c, + CFGMSGRECEIVEDASSERTINTD => cfg_msg_received_assert_int_d, + CFGMSGRECEIVEDDEASSERTINTA => cfg_msg_received_deassert_int_a, + CFGMSGRECEIVEDDEASSERTINTB => cfg_msg_received_deassert_int_b, + CFGMSGRECEIVEDDEASSERTINTC => cfg_msg_received_deassert_int_c, + CFGMSGRECEIVEDDEASSERTINTD => cfg_msg_received_deassert_int_d, + CFGMSGRECEIVEDERRCOR => cfg_msg_received_err_cor, + CFGMSGRECEIVEDERRFATAL => cfg_msg_received_err_fatal, + CFGMSGRECEIVEDERRNONFATAL => cfg_msg_received_err_non_fatal, + CFGMSGRECEIVEDPMASNAK => cfg_msg_received_pm_as_nak, + CFGMSGRECEIVEDPMETO => cfg_to_turnoff, + CFGMSGRECEIVEDPMETOACK => cfg_msg_received_pme_to_ack, + CFGMSGRECEIVEDPMPME => cfg_msg_received_pm_pme, + CFGMSGRECEIVEDSETSLOTPOWERLIMIT => cfg_msg_received_setslotpowerlimit, + CFGMSGRECEIVEDUNLOCK => pcie_block_i_n_72, + CFGPCIECAPINTERRUPTMSGNUM(4 downto 0) => cfg_pciecap_interrupt_msgnum(4 downto 0), + CFGPCIELINKSTATE(2 downto 0) => \^cfg_pcie_link_state\(2 downto 0), + CFGPMCSRPMEEN => cfg_pmcsr_pme_en, + CFGPMCSRPMESTATUS => cfg_pmcsr_pme_status, + CFGPMCSRPOWERSTATE(1 downto 0) => cfg_pmcsr_powerstate(1 downto 0), + CFGPMFORCESTATE(1 downto 0) => cfg_pm_force_state(1 downto 0), + CFGPMFORCESTATEENN => pcie_block_i_i_23_n_0, + CFGPMHALTASPML0SN => pcie_block_i_i_24_n_0, + CFGPMHALTASPML1N => pcie_block_i_i_25_n_0, + CFGPMRCVASREQL1N => pcie_block_i_n_75, + CFGPMRCVENTERL1N => pcie_block_i_n_76, + CFGPMRCVENTERL23N => pcie_block_i_n_77, + CFGPMRCVREQACKN => pcie_block_i_n_78, + CFGPMSENDPMETON => '1', + CFGPMTURNOFFOKN => cfg_pm_turnoff_ok_n, + CFGPMWAKEN => pcie_block_i_i_27_n_0, + CFGPORTNUMBER(7 downto 0) => B"00000000", + CFGREVID(7 downto 0) => B"00000000", + CFGROOTCONTROLPMEINTEN => cfg_root_control_pme_int_en, + CFGROOTCONTROLSYSERRCORRERREN => cfg_root_control_syserr_corr_err_en, + CFGROOTCONTROLSYSERRFATALERREN => cfg_root_control_syserr_fatal_err_en, + CFGROOTCONTROLSYSERRNONFATALERREN => cfg_root_control_syserr_non_fatal_err_en, + CFGSLOTCONTROLELECTROMECHILCTLPULSE => cfg_slot_control_electromech_il_ctl_pulse, + CFGSUBSYSID(15 downto 0) => B"0000000000000111", + CFGSUBSYSVENDID(15 downto 0) => B"0001000011101110", + CFGTRANSACTION => pcie_block_i_n_84, + CFGTRANSACTIONADDR(6) => pcie_block_i_n_1097, + CFGTRANSACTIONADDR(5) => pcie_block_i_n_1098, + CFGTRANSACTIONADDR(4) => pcie_block_i_n_1099, + CFGTRANSACTIONADDR(3) => pcie_block_i_n_1100, + CFGTRANSACTIONADDR(2) => pcie_block_i_n_1101, + CFGTRANSACTIONADDR(1) => pcie_block_i_n_1102, + CFGTRANSACTIONADDR(0) => pcie_block_i_n_1103, + CFGTRANSACTIONTYPE => pcie_block_i_n_85, + CFGTRNPENDINGN => pcie_block_i_i_28_n_0, + CFGVCTCVCMAP(6 downto 0) => cfg_vc_tcvc_map(6 downto 0), + CFGVENDID(15 downto 0) => B"0001000011101110", + CMRSTN => '1', + CMSTICKYRSTN => '1', + DBGMODE(1 downto 0) => B"00", + DBGSCLRA => pcie_block_i_n_86, + DBGSCLRB => pcie_block_i_n_87, + DBGSCLRC => pcie_block_i_n_88, + DBGSCLRD => pcie_block_i_n_89, + DBGSCLRE => pcie_block_i_n_90, + DBGSCLRF => pcie_block_i_n_91, + DBGSCLRG => pcie_block_i_n_92, + DBGSCLRH => pcie_block_i_n_93, + DBGSCLRI => pcie_block_i_n_94, + DBGSCLRJ => pcie_block_i_n_95, + DBGSCLRK => pcie_block_i_n_96, + DBGSUBMODE => '0', + DBGVECA(63) => pcie_block_i_n_704, + DBGVECA(62) => pcie_block_i_n_705, + DBGVECA(61) => pcie_block_i_n_706, + DBGVECA(60) => pcie_block_i_n_707, + DBGVECA(59) => pcie_block_i_n_708, + DBGVECA(58) => pcie_block_i_n_709, + DBGVECA(57) => pcie_block_i_n_710, + DBGVECA(56) => pcie_block_i_n_711, + DBGVECA(55) => pcie_block_i_n_712, + DBGVECA(54) => pcie_block_i_n_713, + DBGVECA(53) => pcie_block_i_n_714, + DBGVECA(52) => pcie_block_i_n_715, + DBGVECA(51) => pcie_block_i_n_716, + DBGVECA(50) => pcie_block_i_n_717, + DBGVECA(49) => pcie_block_i_n_718, + DBGVECA(48) => pcie_block_i_n_719, + DBGVECA(47) => pcie_block_i_n_720, + DBGVECA(46) => pcie_block_i_n_721, + DBGVECA(45) => pcie_block_i_n_722, + DBGVECA(44) => pcie_block_i_n_723, + DBGVECA(43) => pcie_block_i_n_724, + DBGVECA(42) => pcie_block_i_n_725, + DBGVECA(41) => pcie_block_i_n_726, + DBGVECA(40) => pcie_block_i_n_727, + DBGVECA(39) => pcie_block_i_n_728, + DBGVECA(38) => pcie_block_i_n_729, + DBGVECA(37) => pcie_block_i_n_730, + DBGVECA(36) => pcie_block_i_n_731, + DBGVECA(35) => pcie_block_i_n_732, + DBGVECA(34) => pcie_block_i_n_733, + DBGVECA(33) => pcie_block_i_n_734, + DBGVECA(32) => pcie_block_i_n_735, + DBGVECA(31) => pcie_block_i_n_736, + DBGVECA(30) => pcie_block_i_n_737, + DBGVECA(29) => pcie_block_i_n_738, + DBGVECA(28) => pcie_block_i_n_739, + DBGVECA(27) => pcie_block_i_n_740, + DBGVECA(26) => pcie_block_i_n_741, + DBGVECA(25) => pcie_block_i_n_742, + DBGVECA(24) => pcie_block_i_n_743, + DBGVECA(23) => pcie_block_i_n_744, + DBGVECA(22) => pcie_block_i_n_745, + DBGVECA(21) => pcie_block_i_n_746, + DBGVECA(20) => pcie_block_i_n_747, + DBGVECA(19) => pcie_block_i_n_748, + DBGVECA(18) => pcie_block_i_n_749, + DBGVECA(17) => pcie_block_i_n_750, + DBGVECA(16) => pcie_block_i_n_751, + DBGVECA(15) => pcie_block_i_n_752, + DBGVECA(14) => pcie_block_i_n_753, + DBGVECA(13) => pcie_block_i_n_754, + DBGVECA(12) => pcie_block_i_n_755, + DBGVECA(11) => pcie_block_i_n_756, + DBGVECA(10) => pcie_block_i_n_757, + DBGVECA(9) => pcie_block_i_n_758, + DBGVECA(8) => pcie_block_i_n_759, + DBGVECA(7) => pcie_block_i_n_760, + DBGVECA(6) => pcie_block_i_n_761, + DBGVECA(5) => pcie_block_i_n_762, + DBGVECA(4) => pcie_block_i_n_763, + DBGVECA(3) => pcie_block_i_n_764, + DBGVECA(2) => pcie_block_i_n_765, + DBGVECA(1) => pcie_block_i_n_766, + DBGVECA(0) => pcie_block_i_n_767, + DBGVECB(63) => pcie_block_i_n_768, + DBGVECB(62) => pcie_block_i_n_769, + DBGVECB(61) => pcie_block_i_n_770, + DBGVECB(60) => pcie_block_i_n_771, + DBGVECB(59) => pcie_block_i_n_772, + DBGVECB(58) => pcie_block_i_n_773, + DBGVECB(57) => pcie_block_i_n_774, + DBGVECB(56) => pcie_block_i_n_775, + DBGVECB(55) => pcie_block_i_n_776, + DBGVECB(54) => pcie_block_i_n_777, + DBGVECB(53) => pcie_block_i_n_778, + DBGVECB(52) => pcie_block_i_n_779, + DBGVECB(51) => pcie_block_i_n_780, + DBGVECB(50) => pcie_block_i_n_781, + DBGVECB(49) => pcie_block_i_n_782, + DBGVECB(48) => pcie_block_i_n_783, + DBGVECB(47) => pcie_block_i_n_784, + DBGVECB(46) => pcie_block_i_n_785, + DBGVECB(45) => pcie_block_i_n_786, + DBGVECB(44) => pcie_block_i_n_787, + DBGVECB(43) => pcie_block_i_n_788, + DBGVECB(42) => pcie_block_i_n_789, + DBGVECB(41) => pcie_block_i_n_790, + DBGVECB(40) => pcie_block_i_n_791, + DBGVECB(39) => pcie_block_i_n_792, + DBGVECB(38) => pcie_block_i_n_793, + DBGVECB(37) => pcie_block_i_n_794, + DBGVECB(36) => pcie_block_i_n_795, + DBGVECB(35) => pcie_block_i_n_796, + DBGVECB(34) => pcie_block_i_n_797, + DBGVECB(33) => pcie_block_i_n_798, + DBGVECB(32) => pcie_block_i_n_799, + DBGVECB(31) => pcie_block_i_n_800, + DBGVECB(30) => pcie_block_i_n_801, + DBGVECB(29) => pcie_block_i_n_802, + DBGVECB(28) => pcie_block_i_n_803, + DBGVECB(27) => pcie_block_i_n_804, + DBGVECB(26) => pcie_block_i_n_805, + DBGVECB(25) => pcie_block_i_n_806, + DBGVECB(24) => pcie_block_i_n_807, + DBGVECB(23) => pcie_block_i_n_808, + DBGVECB(22) => pcie_block_i_n_809, + DBGVECB(21) => pcie_block_i_n_810, + DBGVECB(20) => pcie_block_i_n_811, + DBGVECB(19) => pcie_block_i_n_812, + DBGVECB(18) => pcie_block_i_n_813, + DBGVECB(17) => pcie_block_i_n_814, + DBGVECB(16) => pcie_block_i_n_815, + DBGVECB(15) => pcie_block_i_n_816, + DBGVECB(14) => pcie_block_i_n_817, + DBGVECB(13) => pcie_block_i_n_818, + DBGVECB(12) => pcie_block_i_n_819, + DBGVECB(11) => pcie_block_i_n_820, + DBGVECB(10) => pcie_block_i_n_821, + DBGVECB(9) => pcie_block_i_n_822, + DBGVECB(8) => pcie_block_i_n_823, + DBGVECB(7) => pcie_block_i_n_824, + DBGVECB(6) => pcie_block_i_n_825, + DBGVECB(5) => pcie_block_i_n_826, + DBGVECB(4) => pcie_block_i_n_827, + DBGVECB(3) => pcie_block_i_n_828, + DBGVECB(2) => pcie_block_i_n_829, + DBGVECB(1) => pcie_block_i_n_830, + DBGVECB(0) => pcie_block_i_n_831, + DBGVECC(11) => pcie_block_i_n_172, + DBGVECC(10) => pcie_block_i_n_173, + DBGVECC(9) => pcie_block_i_n_174, + DBGVECC(8) => pcie_block_i_n_175, + DBGVECC(7) => pcie_block_i_n_176, + DBGVECC(6) => pcie_block_i_n_177, + DBGVECC(5) => pcie_block_i_n_178, + DBGVECC(4) => pcie_block_i_n_179, + DBGVECC(3) => pcie_block_i_n_180, + DBGVECC(2) => pcie_block_i_n_181, + DBGVECC(1) => pcie_block_i_n_182, + DBGVECC(0) => pcie_block_i_n_183, + DLRSTN => '1', + DRPADDR(8 downto 0) => pcie_drp_addr(8 downto 0), + DRPCLK => pcie_drp_clk, + DRPDI(15 downto 0) => pcie_drp_di(15 downto 0), + DRPDO(15 downto 0) => pcie_drp_do(15 downto 0), + DRPEN => pcie_drp_en, + DRPRDY => pcie_drp_rdy, + DRPWE => pcie_drp_we, + FUNCLVLRSTN => '1', + LL2BADDLLPERR => pcie_block_i_n_98, + LL2BADTLPERR => pcie_block_i_n_99, + LL2LINKSTATUS(4) => pcie_block_i_n_687, + LL2LINKSTATUS(3) => pcie_block_i_n_688, + LL2LINKSTATUS(2) => pcie_block_i_n_689, + LL2LINKSTATUS(1) => pcie_block_i_n_690, + LL2LINKSTATUS(0) => pcie_block_i_n_691, + LL2PROTOCOLERR => pcie_block_i_n_100, + LL2RECEIVERERR => pcie_block_i_n_101, + LL2REPLAYROERR => pcie_block_i_n_102, + LL2REPLAYTOERR => pcie_block_i_n_103, + LL2SENDASREQL1 => '0', + LL2SENDENTERL1 => '0', + LL2SENDENTERL23 => '0', + LL2SENDPMACK => '0', + LL2SUSPENDNOW => '0', + LL2SUSPENDOK => pcie_block_i_n_104, + LL2TFCINIT1SEQ => pcie_block_i_n_105, + LL2TFCINIT2SEQ => pcie_block_i_n_106, + LL2TLPRCV => '0', + LL2TXIDLE => pcie_block_i_n_107, + LNKCLKEN => pcie_block_i_n_108, + MIMRXRADDR(12 downto 0) => mim_rx_raddr(12 downto 0), + MIMRXRDATA(67 downto 0) => mim_rx_rdata(67 downto 0), + MIMRXREN => mim_rx_ren, + MIMRXWADDR(12 downto 0) => mim_rx_waddr(12 downto 0), + MIMRXWDATA(67 downto 0) => mim_rx_wdata(67 downto 0), + MIMRXWEN => mim_rx_wen, + MIMTXRADDR(12 downto 0) => mim_tx_raddr(12 downto 0), + MIMTXRDATA(68 downto 0) => mim_tx_rdata(68 downto 0), + MIMTXREN => mim_tx_ren, + MIMTXWADDR(12 downto 0) => mim_tx_waddr(12 downto 0), + MIMTXWDATA(68 downto 0) => mim_tx_wdata(68 downto 0), + MIMTXWEN => mim_tx_wen, + PIPECLK => pipe_pclk_in, + PIPERX0CHANISALIGNED => pipe_rx0_chanisaligned, + PIPERX0CHARISK(1 downto 0) => cfg_aer_ecrc_check_en_4(1 downto 0), + PIPERX0DATA(15 downto 0) => Q(15 downto 0), + PIPERX0ELECIDLE => pipe_rx0_elec_idle, + PIPERX0PHYSTATUS => pipe_rx0_phy_status, + PIPERX0POLARITY => pipe_rx0_polarity, + PIPERX0STATUS(2 downto 0) => cfg_aer_ecrc_check_en_8(2 downto 0), + PIPERX0VALID => pipe_rx0_valid, + PIPERX1CHANISALIGNED => pipe_rx1_chanisaligned, + PIPERX1CHARISK(1 downto 0) => cfg_aer_ecrc_check_en_5(1 downto 0), + PIPERX1DATA(15 downto 0) => cfg_aer_ecrc_check_en_1(15 downto 0), + PIPERX1ELECIDLE => pipe_rx1_elec_idle, + PIPERX1PHYSTATUS => pipe_rx1_phy_status, + PIPERX1POLARITY => pipe_rx1_polarity, + PIPERX1STATUS(2 downto 0) => cfg_aer_ecrc_check_en_9(2 downto 0), + PIPERX1VALID => pipe_rx1_valid, + PIPERX2CHANISALIGNED => pipe_rx2_chanisaligned, + PIPERX2CHARISK(1 downto 0) => cfg_aer_ecrc_check_en_6(1 downto 0), + PIPERX2DATA(15 downto 0) => cfg_aer_ecrc_check_en_2(15 downto 0), + PIPERX2ELECIDLE => pipe_rx2_elec_idle, + PIPERX2PHYSTATUS => pipe_rx2_phy_status, + PIPERX2POLARITY => pipe_rx2_polarity, + PIPERX2STATUS(2 downto 0) => cfg_aer_ecrc_check_en_10(2 downto 0), + PIPERX2VALID => pipe_rx2_valid, + PIPERX3CHANISALIGNED => pipe_rx3_chanisaligned, + PIPERX3CHARISK(1 downto 0) => cfg_aer_ecrc_check_en_7(1 downto 0), + PIPERX3DATA(15 downto 0) => cfg_aer_ecrc_check_en_3(15 downto 0), + PIPERX3ELECIDLE => pipe_rx3_elec_idle, + PIPERX3PHYSTATUS => pipe_rx3_phy_status, + PIPERX3POLARITY => pipe_rx3_polarity, + PIPERX3STATUS(2 downto 0) => cfg_aer_ecrc_check_en_11(2 downto 0), + PIPERX3VALID => pipe_rx3_valid, + PIPERX4CHANISALIGNED => '0', + PIPERX4CHARISK(1 downto 0) => B"00", + PIPERX4DATA(15 downto 0) => B"0000000000000000", + PIPERX4ELECIDLE => '1', + PIPERX4PHYSTATUS => '0', + PIPERX4POLARITY => pipe_rx4_polarity, + PIPERX4STATUS(2 downto 0) => B"000", + PIPERX4VALID => '0', + PIPERX5CHANISALIGNED => '0', + PIPERX5CHARISK(1 downto 0) => B"00", + PIPERX5DATA(15 downto 0) => B"0000000000000000", + PIPERX5ELECIDLE => '1', + PIPERX5PHYSTATUS => '0', + PIPERX5POLARITY => pipe_rx5_polarity, + PIPERX5STATUS(2 downto 0) => B"000", + PIPERX5VALID => '0', + PIPERX6CHANISALIGNED => '0', + PIPERX6CHARISK(1 downto 0) => B"00", + PIPERX6DATA(15 downto 0) => B"0000000000000000", + PIPERX6ELECIDLE => '1', + PIPERX6PHYSTATUS => '0', + PIPERX6POLARITY => pipe_rx6_polarity, + PIPERX6STATUS(2 downto 0) => B"000", + PIPERX6VALID => '0', + PIPERX7CHANISALIGNED => '0', + PIPERX7CHARISK(1 downto 0) => B"00", + PIPERX7DATA(15 downto 0) => B"0000000000000000", + PIPERX7ELECIDLE => '1', + PIPERX7PHYSTATUS => '0', + PIPERX7POLARITY => pipe_rx7_polarity, + PIPERX7STATUS(2 downto 0) => B"000", + PIPERX7VALID => '0', + PIPETX0CHARISK(1 downto 0) => pipe_tx0_char_is_k(1 downto 0), + PIPETX0COMPLIANCE => pipe_tx0_compliance, + PIPETX0DATA(15 downto 0) => pipe_tx0_data(15 downto 0), + PIPETX0ELECIDLE => pipe_tx0_elec_idle, + PIPETX0POWERDOWN(1 downto 0) => pipe_tx0_powerdown(1 downto 0), + PIPETX1CHARISK(1 downto 0) => pipe_tx1_char_is_k(1 downto 0), + PIPETX1COMPLIANCE => pipe_tx1_compliance, + PIPETX1DATA(15 downto 0) => pipe_tx1_data(15 downto 0), + PIPETX1ELECIDLE => pipe_tx1_elec_idle, + PIPETX1POWERDOWN(1 downto 0) => pipe_tx1_powerdown(1 downto 0), + PIPETX2CHARISK(1 downto 0) => pipe_tx2_char_is_k(1 downto 0), + PIPETX2COMPLIANCE => pipe_tx2_compliance, + PIPETX2DATA(15 downto 0) => pipe_tx2_data(15 downto 0), + PIPETX2ELECIDLE => pipe_tx2_elec_idle, + PIPETX2POWERDOWN(1 downto 0) => pipe_tx2_powerdown(1 downto 0), + PIPETX3CHARISK(1 downto 0) => pipe_tx3_char_is_k(1 downto 0), + PIPETX3COMPLIANCE => pipe_tx3_compliance, + PIPETX3DATA(15 downto 0) => pipe_tx3_data(15 downto 0), + PIPETX3ELECIDLE => pipe_tx3_elec_idle, + PIPETX3POWERDOWN(1 downto 0) => pipe_tx3_powerdown(1 downto 0), + PIPETX4CHARISK(1 downto 0) => pipe_tx4_char_is_k(1 downto 0), + PIPETX4COMPLIANCE => pipe_tx4_compliance, + PIPETX4DATA(15 downto 0) => pipe_tx4_data(15 downto 0), + PIPETX4ELECIDLE => pipe_tx4_elec_idle, + PIPETX4POWERDOWN(1 downto 0) => pipe_tx4_powerdown(1 downto 0), + PIPETX5CHARISK(1 downto 0) => pipe_tx5_char_is_k(1 downto 0), + PIPETX5COMPLIANCE => pipe_tx5_compliance, + PIPETX5DATA(15 downto 0) => pipe_tx5_data(15 downto 0), + PIPETX5ELECIDLE => pipe_tx5_elec_idle, + PIPETX5POWERDOWN(1 downto 0) => pipe_tx5_powerdown(1 downto 0), + PIPETX6CHARISK(1 downto 0) => pipe_tx6_char_is_k(1 downto 0), + PIPETX6COMPLIANCE => pipe_tx6_compliance, + PIPETX6DATA(15 downto 0) => pipe_tx6_data(15 downto 0), + PIPETX6ELECIDLE => pipe_tx6_elec_idle, + PIPETX6POWERDOWN(1 downto 0) => pipe_tx6_powerdown(1 downto 0), + PIPETX7CHARISK(1 downto 0) => pipe_tx7_char_is_k(1 downto 0), + PIPETX7COMPLIANCE => pipe_tx7_compliance, + PIPETX7DATA(15 downto 0) => pipe_tx7_data(15 downto 0), + PIPETX7ELECIDLE => pipe_tx7_elec_idle, + PIPETX7POWERDOWN(1 downto 0) => pipe_tx7_powerdown(1 downto 0), + PIPETXDEEMPH => pipe_tx_deemph, + PIPETXMARGIN(2 downto 0) => pipe_tx_margin(2 downto 0), + PIPETXRATE => pipe_tx_rate, + PIPETXRCVRDET => pipe_tx_rcvr_det, + PIPETXRESET => pcie_block_i_n_140, + PL2DIRECTEDLSTATE(4 downto 0) => B"00000", + PL2L0REQ => pcie_block_i_n_141, + PL2LINKUP => pcie_block_i_n_142, + PL2RECEIVERERR => pcie_block_i_n_143, + PL2RECOVERY => pcie_block_i_n_144, + PL2RXELECIDLE => pcie_block_i_n_145, + PL2RXPMSTATE(1) => pcie_block_i_n_610, + PL2RXPMSTATE(0) => pcie_block_i_n_611, + PL2SUSPENDOK => pcie_block_i_n_146, + PLDBGMODE(2 downto 0) => B"000", + PLDBGVEC(11) => pcie_block_i_n_184, + PLDBGVEC(10) => pcie_block_i_n_185, + PLDBGVEC(9) => pcie_block_i_n_186, + PLDBGVEC(8) => pcie_block_i_n_187, + PLDBGVEC(7) => pcie_block_i_n_188, + PLDBGVEC(6) => pcie_block_i_n_189, + PLDBGVEC(5) => pcie_block_i_n_190, + PLDBGVEC(4) => pcie_block_i_n_191, + PLDBGVEC(3) => pcie_block_i_n_192, + PLDBGVEC(2) => pcie_block_i_n_193, + PLDBGVEC(1) => pcie_block_i_n_194, + PLDBGVEC(0) => pcie_block_i_n_195, + PLDIRECTEDCHANGEDONE => pl_directed_change_done, + PLDIRECTEDLINKAUTON => pl_directed_link_auton, + PLDIRECTEDLINKCHANGE(1 downto 0) => pl_directed_link_change(1 downto 0), + PLDIRECTEDLINKSPEED => pl_directed_link_speed, + PLDIRECTEDLINKWIDTH(1 downto 0) => pl_directed_link_width(1 downto 0), + PLDIRECTEDLTSSMNEW(5 downto 0) => B"000000", + PLDIRECTEDLTSSMNEWVLD => '0', + PLDIRECTEDLTSSMSTALL => '0', + PLDOWNSTREAMDEEMPHSOURCE => pl_downstream_deemph_source, + PLINITIALLINKWIDTH(2 downto 0) => pl_initial_link_width(2 downto 0), + PLLANEREVERSALMODE(1 downto 0) => pl_lane_reversal_mode(1 downto 0), + PLLINKGEN2CAP => pl_link_gen2_cap, + PLLINKPARTNERGEN2SUPPORTED => pl_link_partner_gen2_supported, + PLLINKUPCFGCAP => pl_link_upcfg_cap, + PLLTSSMSTATE(5 downto 0) => pl_ltssm_state(5 downto 0), + PLPHYLNKUPN => pl_phy_lnk_up_n, + PLRECEIVEDHOTRST => pl_received_hot_rst, + PLRSTN => '1', + PLRXPMSTATE(1 downto 0) => pl_rx_pm_state(1 downto 0), + PLSELLNKRATE => pl_sel_lnk_rate, + PLSELLNKWIDTH(1 downto 0) => pl_sel_lnk_width(1 downto 0), + PLTRANSMITHOTRST => pl_transmit_hot_rst, + PLTXPMSTATE(2 downto 0) => pl_tx_pm_state(2 downto 0), + PLUPSTREAMPREFERDEEMPH => pl_upstream_prefer_deemph, + RECEIVEDFUNCLVLRSTN => cfg_received_func_lvl_rst_n, + SYSRSTN => sys_rst_n, + TL2ASPMSUSPENDCREDITCHECK => '0', + TL2ASPMSUSPENDCREDITCHECKOK => pcie_block_i_n_155, + TL2ASPMSUSPENDREQ => pcie_block_i_n_156, + TL2ERRFCPE => pcie_block_i_n_157, + TL2ERRHDR(63) => pcie_block_i_n_832, + TL2ERRHDR(62) => pcie_block_i_n_833, + TL2ERRHDR(61) => pcie_block_i_n_834, + TL2ERRHDR(60) => pcie_block_i_n_835, + TL2ERRHDR(59) => pcie_block_i_n_836, + TL2ERRHDR(58) => pcie_block_i_n_837, + TL2ERRHDR(57) => pcie_block_i_n_838, + TL2ERRHDR(56) => pcie_block_i_n_839, + TL2ERRHDR(55) => pcie_block_i_n_840, + TL2ERRHDR(54) => pcie_block_i_n_841, + TL2ERRHDR(53) => pcie_block_i_n_842, + TL2ERRHDR(52) => pcie_block_i_n_843, + TL2ERRHDR(51) => pcie_block_i_n_844, + TL2ERRHDR(50) => pcie_block_i_n_845, + TL2ERRHDR(49) => pcie_block_i_n_846, + TL2ERRHDR(48) => pcie_block_i_n_847, + TL2ERRHDR(47) => pcie_block_i_n_848, + TL2ERRHDR(46) => pcie_block_i_n_849, + TL2ERRHDR(45) => pcie_block_i_n_850, + TL2ERRHDR(44) => pcie_block_i_n_851, + TL2ERRHDR(43) => pcie_block_i_n_852, + TL2ERRHDR(42) => pcie_block_i_n_853, + TL2ERRHDR(41) => pcie_block_i_n_854, + TL2ERRHDR(40) => pcie_block_i_n_855, + TL2ERRHDR(39) => pcie_block_i_n_856, + TL2ERRHDR(38) => pcie_block_i_n_857, + TL2ERRHDR(37) => pcie_block_i_n_858, + TL2ERRHDR(36) => pcie_block_i_n_859, + TL2ERRHDR(35) => pcie_block_i_n_860, + TL2ERRHDR(34) => pcie_block_i_n_861, + TL2ERRHDR(33) => pcie_block_i_n_862, + TL2ERRHDR(32) => pcie_block_i_n_863, + TL2ERRHDR(31) => pcie_block_i_n_864, + TL2ERRHDR(30) => pcie_block_i_n_865, + TL2ERRHDR(29) => pcie_block_i_n_866, + TL2ERRHDR(28) => pcie_block_i_n_867, + TL2ERRHDR(27) => pcie_block_i_n_868, + TL2ERRHDR(26) => pcie_block_i_n_869, + TL2ERRHDR(25) => pcie_block_i_n_870, + TL2ERRHDR(24) => pcie_block_i_n_871, + TL2ERRHDR(23) => pcie_block_i_n_872, + TL2ERRHDR(22) => pcie_block_i_n_873, + TL2ERRHDR(21) => pcie_block_i_n_874, + TL2ERRHDR(20) => pcie_block_i_n_875, + TL2ERRHDR(19) => pcie_block_i_n_876, + TL2ERRHDR(18) => pcie_block_i_n_877, + TL2ERRHDR(17) => pcie_block_i_n_878, + TL2ERRHDR(16) => pcie_block_i_n_879, + TL2ERRHDR(15) => pcie_block_i_n_880, + TL2ERRHDR(14) => pcie_block_i_n_881, + TL2ERRHDR(13) => pcie_block_i_n_882, + TL2ERRHDR(12) => pcie_block_i_n_883, + TL2ERRHDR(11) => pcie_block_i_n_884, + TL2ERRHDR(10) => pcie_block_i_n_885, + TL2ERRHDR(9) => pcie_block_i_n_886, + TL2ERRHDR(8) => pcie_block_i_n_887, + TL2ERRHDR(7) => pcie_block_i_n_888, + TL2ERRHDR(6) => pcie_block_i_n_889, + TL2ERRHDR(5) => pcie_block_i_n_890, + TL2ERRHDR(4) => pcie_block_i_n_891, + TL2ERRHDR(3) => pcie_block_i_n_892, + TL2ERRHDR(2) => pcie_block_i_n_893, + TL2ERRHDR(1) => pcie_block_i_n_894, + TL2ERRHDR(0) => pcie_block_i_n_895, + TL2ERRMALFORMED => pcie_block_i_n_158, + TL2ERRRXOVERFLOW => pcie_block_i_n_159, + TL2PPMSUSPENDOK => pcie_block_i_n_160, + TL2PPMSUSPENDREQ => '0', + TLRSTN => '1', + TRNFCCPLD(11 downto 0) => fc_cpld(11 downto 0), + TRNFCCPLH(7 downto 0) => fc_cplh(7 downto 0), + TRNFCNPD(11 downto 0) => fc_npd(11 downto 0), + TRNFCNPH(7 downto 0) => fc_nph(7 downto 0), + TRNFCPD(11 downto 0) => fc_pd(11 downto 0), + TRNFCPH(7 downto 0) => fc_ph(7 downto 0), + TRNFCSEL(2 downto 0) => fc_sel(2 downto 0), + TRNLNKUP => trn_lnk_up, + TRNRBARHIT(7) => pcie_block_i_n_1143, + TRNRBARHIT(6 downto 0) => trn_rbar_hit(6 downto 0), + TRNRD(127 downto 64) => trn_rd(127 downto 64), + TRNRD(63 downto 0) => pcie_drp_clk_1(63 downto 0), + TRNRDLLPDATA(63) => pcie_block_i_n_896, + TRNRDLLPDATA(62) => pcie_block_i_n_897, + TRNRDLLPDATA(61) => pcie_block_i_n_898, + TRNRDLLPDATA(60) => pcie_block_i_n_899, + TRNRDLLPDATA(59) => pcie_block_i_n_900, + TRNRDLLPDATA(58) => pcie_block_i_n_901, + TRNRDLLPDATA(57) => pcie_block_i_n_902, + TRNRDLLPDATA(56) => pcie_block_i_n_903, + TRNRDLLPDATA(55) => pcie_block_i_n_904, + TRNRDLLPDATA(54) => pcie_block_i_n_905, + TRNRDLLPDATA(53) => pcie_block_i_n_906, + TRNRDLLPDATA(52) => pcie_block_i_n_907, + TRNRDLLPDATA(51) => pcie_block_i_n_908, + TRNRDLLPDATA(50) => pcie_block_i_n_909, + TRNRDLLPDATA(49) => pcie_block_i_n_910, + TRNRDLLPDATA(48) => pcie_block_i_n_911, + TRNRDLLPDATA(47) => pcie_block_i_n_912, + TRNRDLLPDATA(46) => pcie_block_i_n_913, + TRNRDLLPDATA(45) => pcie_block_i_n_914, + TRNRDLLPDATA(44) => pcie_block_i_n_915, + TRNRDLLPDATA(43) => pcie_block_i_n_916, + TRNRDLLPDATA(42) => pcie_block_i_n_917, + TRNRDLLPDATA(41) => pcie_block_i_n_918, + TRNRDLLPDATA(40) => pcie_block_i_n_919, + TRNRDLLPDATA(39) => pcie_block_i_n_920, + TRNRDLLPDATA(38) => pcie_block_i_n_921, + TRNRDLLPDATA(37) => pcie_block_i_n_922, + TRNRDLLPDATA(36) => pcie_block_i_n_923, + TRNRDLLPDATA(35) => pcie_block_i_n_924, + TRNRDLLPDATA(34) => pcie_block_i_n_925, + TRNRDLLPDATA(33) => pcie_block_i_n_926, + TRNRDLLPDATA(32) => pcie_block_i_n_927, + TRNRDLLPDATA(31) => pcie_block_i_n_928, + TRNRDLLPDATA(30) => pcie_block_i_n_929, + TRNRDLLPDATA(29) => pcie_block_i_n_930, + TRNRDLLPDATA(28) => pcie_block_i_n_931, + TRNRDLLPDATA(27) => pcie_block_i_n_932, + TRNRDLLPDATA(26) => pcie_block_i_n_933, + TRNRDLLPDATA(25) => pcie_block_i_n_934, + TRNRDLLPDATA(24) => pcie_block_i_n_935, + TRNRDLLPDATA(23) => pcie_block_i_n_936, + TRNRDLLPDATA(22) => pcie_block_i_n_937, + TRNRDLLPDATA(21) => pcie_block_i_n_938, + TRNRDLLPDATA(20) => pcie_block_i_n_939, + TRNRDLLPDATA(19) => pcie_block_i_n_940, + TRNRDLLPDATA(18) => pcie_block_i_n_941, + TRNRDLLPDATA(17) => pcie_block_i_n_942, + TRNRDLLPDATA(16) => pcie_block_i_n_943, + TRNRDLLPDATA(15) => pcie_block_i_n_944, + TRNRDLLPDATA(14) => pcie_block_i_n_945, + TRNRDLLPDATA(13) => pcie_block_i_n_946, + TRNRDLLPDATA(12) => pcie_block_i_n_947, + TRNRDLLPDATA(11) => pcie_block_i_n_948, + TRNRDLLPDATA(10) => pcie_block_i_n_949, + TRNRDLLPDATA(9) => pcie_block_i_n_950, + TRNRDLLPDATA(8) => pcie_block_i_n_951, + TRNRDLLPDATA(7) => pcie_block_i_n_952, + TRNRDLLPDATA(6) => pcie_block_i_n_953, + TRNRDLLPDATA(5) => pcie_block_i_n_954, + TRNRDLLPDATA(4) => pcie_block_i_n_955, + TRNRDLLPDATA(3) => pcie_block_i_n_956, + TRNRDLLPDATA(2) => pcie_block_i_n_957, + TRNRDLLPDATA(1) => pcie_block_i_n_958, + TRNRDLLPDATA(0) => pcie_block_i_n_959, + TRNRDLLPSRCRDY(1) => pcie_block_i_n_618, + TRNRDLLPSRCRDY(0) => pcie_block_i_n_619, + TRNRDSTRDY => trn_rdst_rdy, + TRNRECRCERR => trn_recrc_err, + TRNREOF => \^trn_reof\, + TRNRERRFWD => trn_rerrfwd, + TRNRFCPRET => '1', + TRNRNPOK => rx_np_ok, + TRNRNPREQ => rx_np_req, + TRNRREM(1) => trn_rrem(1), + TRNRREM(0) => pcie_drp_clk_2(0), + TRNRSOF => \^trn_rsof\, + TRNRSRCDSC => \^trn_rsrc_dsc\, + TRNRSRCRDY => trn_rsrc_rdy, + TRNTBUFAV(5 downto 0) => \^trn_tbuf_av\(5 downto 0), + TRNTCFGGNT => trn_tcfg_gnt, + TRNTCFGREQ => \^trn_tcfg_req\, + TRNTD(127 downto 64) => B"0000000000000000000000000000000000000000000000000000000000000000", + TRNTD(63 downto 0) => trn_td(63 downto 0), + TRNTDLLPDATA(31 downto 0) => B"00000000000000000000000000000000", + TRNTDLLPDSTRDY => pcie_block_i_n_169, + TRNTDLLPSRCRDY => '0', + TRNTDSTRDY(3 downto 1) => NLW_pcie_block_i_TRNTDSTRDY_UNCONNECTED(3 downto 1), + TRNTDSTRDY(0) => \^trn_tdst_rdy\, + TRNTECRCGEN => cfg_aer_ecrc_check_en_0(0), + TRNTEOF => trn_teof, + TRNTERRDROP => tx_err_drop, + TRNTERRFWD => cfg_aer_ecrc_check_en_0(1), + TRNTREM(1) => '0', + TRNTREM(0) => trn_trem(0), + TRNTSOF => trn_tsof, + TRNTSRCDSC => cfg_aer_ecrc_check_en_0(3), + TRNTSRCRDY => trn_tsrc_rdy, + TRNTSTR => cfg_aer_ecrc_check_en_0(2), + USERCLK => pipe_userclk1_in, + USERCLK2 => pipe_userclk2_in, + USERRSTN => user_rst_n + ); +pcie_block_i_i_1: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_err_atomic_egress_blocked, + O => pcie_block_i_i_1_n_0 + ); +pcie_block_i_i_10: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_err_malformed, + O => pcie_block_i_i_10_n_0 + ); +pcie_block_i_i_11: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_err_mc_blocked, + O => pcie_block_i_i_11_n_0 + ); +pcie_block_i_i_12: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_err_norecovery, + O => pcie_block_i_i_12_n_0 + ); +pcie_block_i_i_13: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_err_poisoned, + O => pcie_block_i_i_13_n_0 + ); +pcie_block_i_i_14: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_err_posted, + O => pcie_block_i_i_14_n_0 + ); +pcie_block_i_i_15: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_err_ur, + O => pcie_block_i_i_15_n_0 + ); +pcie_block_i_i_16: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_interrupt_assert, + O => pcie_block_i_i_16_n_0 + ); +pcie_block_i_i_17: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_interrupt, + O => pcie_block_i_i_17_n_0 + ); +pcie_block_i_i_18: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_interrupt_stat, + O => pcie_block_i_i_18_n_0 + ); +pcie_block_i_i_19: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_mgmt_rd_en, + O => pcie_block_i_i_19_n_0 + ); +pcie_block_i_i_2: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_err_cor, + O => pcie_block_i_i_2_n_0 + ); +pcie_block_i_i_20: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_mgmt_wr_en, + O => pcie_block_i_i_20_n_0 + ); +pcie_block_i_i_21: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_mgmt_wr_readonly, + O => pcie_block_i_i_21_n_0 + ); +pcie_block_i_i_22: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_mgmt_wr_rw1c_as_rw, + O => pcie_block_i_i_22_n_0 + ); +pcie_block_i_i_23: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_pm_force_state_en, + O => pcie_block_i_i_23_n_0 + ); +pcie_block_i_i_24: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_pm_halt_aspm_l0s, + O => pcie_block_i_i_24_n_0 + ); +pcie_block_i_i_25: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_pm_halt_aspm_l1, + O => pcie_block_i_i_25_n_0 + ); +pcie_block_i_i_27: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_pm_wake, + O => pcie_block_i_i_27_n_0 + ); +pcie_block_i_i_28: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_trn_pending, + O => pcie_block_i_i_28_n_0 + ); +pcie_block_i_i_3: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_err_cpl_abort, + O => pcie_block_i_i_3_n_0 + ); +pcie_block_i_i_4: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_err_cpl_timeout, + O => pcie_block_i_i_4_n_0 + ); +pcie_block_i_i_5: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_err_cpl_unexpect, + O => pcie_block_i_i_5_n_0 + ); +pcie_block_i_i_6: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_err_ecrc, + O => pcie_block_i_i_6_n_0 + ); +pcie_block_i_i_7: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_err_internal_cor, + O => pcie_block_i_i_7_n_0 + ); +pcie_block_i_i_8: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_err_internal_uncor, + O => pcie_block_i_i_8_n_0 + ); +pcie_block_i_i_9: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_err_locked, + O => pcie_block_i_i_9_n_0 + ); +pcie_bram_top: entity work.pcie_7x_0_pcie_7x_0_pcie_bram_top_7x + port map ( + MIMRXRADDR(11 downto 0) => mim_rx_raddr(11 downto 0), + MIMRXWADDR(11 downto 0) => mim_rx_waddr(11 downto 0), + MIMTXRADDR(11 downto 0) => mim_tx_raddr(11 downto 0), + MIMTXWADDR(11 downto 0) => mim_tx_waddr(11 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl\(67 downto 0) => mim_rx_rdata(67 downto 0), + \genblk5_0.bram36_tdp_bl.bram36_tdp_bl_0\(67 downto 0) => mim_rx_wdata(67 downto 0), + mim_rx_ren => mim_rx_ren, + mim_rx_wen => mim_rx_wen, + mim_tx_ren => mim_tx_ren, + mim_tx_wen => mim_tx_wen, + pipe_userclk1_in => pipe_userclk1_in, + rdata(68 downto 0) => mim_tx_rdata(68 downto 0), + wdata(68 downto 0) => mim_tx_wdata(68 downto 0) + ); +phy_lnk_up_cdc_i_1: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => pl_phy_lnk_up_n, + O => src_in + ); +ppm_L1_thrtl_i_1: unisim.vcomponents.LUT5 + generic map( + INIT => X"FFFEAAAA" + ) + port map ( + I0 => ppm_L1_trig, + I1 => \^cfg_pcie_link_state\(0), + I2 => \^cfg_pcie_link_state\(2), + I3 => \^cfg_pcie_link_state\(1), + I4 => ppm_L1_thrtl, + O => ppm_L1_thrtl_reg + ); +tbuf_av_min_thrtl_i_1: unisim.vcomponents.LUT5 + generic map( + INIT => X"00000001" + ) + port map ( + I0 => \^trn_tbuf_av\(5), + I1 => \^trn_tbuf_av\(4), + I2 => \^trn_tbuf_av\(3), + I3 => \^trn_tbuf_av\(2), + I4 => \^trn_tbuf_av\(1), + O => tbuf_av_min_trig + ); +tready_thrtl_i_11: unisim.vcomponents.LUT6 + generic map( + INIT => X"0000000100010001" + ) + port map ( + I0 => \^trn_tbuf_av\(5), + I1 => \^trn_tbuf_av\(4), + I2 => \^trn_tbuf_av\(3), + I3 => \^trn_tbuf_av\(2), + I4 => \^trn_tbuf_av\(0), + I5 => \^trn_tbuf_av\(1), + O => pcie_drp_clk_0 + ); +tready_thrtl_i_9: unisim.vcomponents.LUT2 + generic map( + INIT => X"8" + ) + port map ( + I0 => \^trn_tcfg_req\, + I1 => reg_tcfg_gnt, + O => tcfg_req_trig + ); +trn_in_packet_i_1: unisim.vcomponents.LUT6 + generic map( + INIT => X"08000000AEAA2AAA" + ) + port map ( + I0 => trn_in_packet, + I1 => trn_rdst_rdy, + I2 => \^trn_reof\, + I3 => trn_rsrc_rdy, + I4 => \^trn_rsof\, + I5 => \^trn_rsrc_dsc\, + O => trn_in_packet_reg + ); +trn_rsrc_dsc_prev_i_1: unisim.vcomponents.LUT2 + generic map( + INIT => X"E" + ) + port map ( + I0 => \^trn_rsrc_dsc\, + I1 => reg_dsc_detect, + O => trn_rsrc_dsc_prev0 + ); +trn_rsrc_rdy_prev_i_1: unisim.vcomponents.LUT4 + generic map( + INIT => X"AA08" + ) + port map ( + I0 => trn_rsrc_rdy, + I1 => \^trn_rsof\, + I2 => \^trn_rsrc_dsc\, + I3 => trn_in_packet, + O => rsrc_rdy_filtered + ); +user_reset_int_i_1: unisim.vcomponents.LUT3 + generic map( + INIT => X"2A" + ) + port map ( + I0 => bridge_reset_int, + I1 => pl_phy_lnk_up, + I2 => user_rst_n, + O => user_reset_int_reg + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie_top is + port ( + m_axis_rx_tvalid_reg : out STD_LOGIC; + m_axis_rx_tkeep : out STD_LOGIC_VECTOR ( 0 to 0 ); + m_axis_rx_tlast : out STD_LOGIC; + trn_tcfg_req : out STD_LOGIC; + tready_thrtl_reg : out STD_LOGIC; + PIPE_RXPOLARITY : out STD_LOGIC_VECTOR ( 3 downto 0 ); + PIPE_TXCOMPLIANCE : out STD_LOGIC_VECTOR ( 3 downto 0 ); + PIPE_TXELECIDLE : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_tx_rcvr_det_gt : out STD_LOGIC; + \pipe_stages_1.pipe_tx_rate_q_reg\ : out STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_tx_deemph_gt : out STD_LOGIC; + user_reset_int_reg : out STD_LOGIC; + src_in : out STD_LOGIC; + cfg_mgmt_rd_wr_done : out STD_LOGIC; + cfg_err_aer_headerlog_set : out STD_LOGIC; + cfg_err_cpl_rdy : out STD_LOGIC; + cfg_interrupt_rdy : out STD_LOGIC; + cfg_msg_received : out STD_LOGIC; + cfg_received_func_lvl_rst : out STD_LOGIC; + cfg_pcie_link_state : out STD_LOGIC_VECTOR ( 2 downto 0 ); + m_axis_rx_tdata : out STD_LOGIC_VECTOR ( 63 downto 0 ); + m_axis_rx_tuser : out STD_LOGIC_VECTOR ( 12 downto 0 ); + trn_tbuf_av : out STD_LOGIC_VECTOR ( 5 downto 0 ); + cfg_to_turnoff : out STD_LOGIC; + cfg_bus_number : out STD_LOGIC_VECTOR ( 7 downto 0 ); + cfg_msg_data : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_device_number : out STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_function_number : out STD_LOGIC_VECTOR ( 2 downto 0 ); + PIPE_TXDATAK : out STD_LOGIC_VECTOR ( 7 downto 0 ); + PIPE_TXDATA : out STD_LOGIC_VECTOR ( 63 downto 0 ); + PIPE_POWERDOWN : out STD_LOGIC_VECTOR ( 7 downto 0 ); + Q : out STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_aer_ecrc_check_en : out STD_LOGIC; + cfg_aer_ecrc_gen_en : out STD_LOGIC; + cfg_aer_rooterr_corr_err_received : out STD_LOGIC; + cfg_aer_rooterr_corr_err_reporting_en : out STD_LOGIC; + cfg_aer_rooterr_fatal_err_received : out STD_LOGIC; + cfg_aer_rooterr_fatal_err_reporting_en : out STD_LOGIC; + cfg_aer_rooterr_non_fatal_err_received : out STD_LOGIC; + cfg_aer_rooterr_non_fatal_err_reporting_en : out STD_LOGIC; + cfg_bridge_serr_en : out STD_LOGIC; + cfg_command : out STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_dcommand2 : out STD_LOGIC_VECTOR ( 11 downto 0 ); + cfg_dcommand : out STD_LOGIC_VECTOR ( 14 downto 0 ); + cfg_dstatus : out STD_LOGIC_VECTOR ( 3 downto 0 ); + cfg_interrupt_msienable : out STD_LOGIC; + cfg_interrupt_msixenable : out STD_LOGIC; + cfg_interrupt_msixfm : out STD_LOGIC; + cfg_lcommand : out STD_LOGIC_VECTOR ( 10 downto 0 ); + cfg_lstatus : out STD_LOGIC_VECTOR ( 9 downto 0 ); + cfg_msg_received_assert_int_a : out STD_LOGIC; + cfg_msg_received_assert_int_b : out STD_LOGIC; + cfg_msg_received_assert_int_c : out STD_LOGIC; + cfg_msg_received_assert_int_d : out STD_LOGIC; + cfg_msg_received_deassert_int_a : out STD_LOGIC; + cfg_msg_received_deassert_int_b : out STD_LOGIC; + cfg_msg_received_deassert_int_c : out STD_LOGIC; + cfg_msg_received_deassert_int_d : out STD_LOGIC; + cfg_msg_received_err_cor : out STD_LOGIC; + cfg_msg_received_err_fatal : out STD_LOGIC; + cfg_msg_received_err_non_fatal : out STD_LOGIC; + cfg_msg_received_pm_as_nak : out STD_LOGIC; + cfg_msg_received_pme_to_ack : out STD_LOGIC; + cfg_msg_received_pm_pme : out STD_LOGIC; + cfg_msg_received_setslotpowerlimit : out STD_LOGIC; + cfg_pmcsr_pme_en : out STD_LOGIC; + cfg_pmcsr_pme_status : out STD_LOGIC; + cfg_root_control_pme_int_en : out STD_LOGIC; + cfg_root_control_syserr_corr_err_en : out STD_LOGIC; + cfg_root_control_syserr_fatal_err_en : out STD_LOGIC; + cfg_root_control_syserr_non_fatal_err_en : out STD_LOGIC; + cfg_slot_control_electromech_il_ctl_pulse : out STD_LOGIC; + pcie_drp_rdy : out STD_LOGIC; + pl_directed_change_done : out STD_LOGIC; + pl_link_gen2_cap : out STD_LOGIC; + pl_link_partner_gen2_supported : out STD_LOGIC; + pl_link_upcfg_cap : out STD_LOGIC; + pl_received_hot_rst : out STD_LOGIC; + pl_sel_lnk_rate : out STD_LOGIC; + trn_lnk_up : out STD_LOGIC; + tx_err_drop : out STD_LOGIC; + fc_cpld : out STD_LOGIC_VECTOR ( 11 downto 0 ); + fc_npd : out STD_LOGIC_VECTOR ( 11 downto 0 ); + fc_pd : out STD_LOGIC_VECTOR ( 11 downto 0 ); + pcie_drp_do : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_pmcsr_powerstate : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_lane_reversal_mode : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_rx_pm_state : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_sel_lnk_width : out STD_LOGIC_VECTOR ( 1 downto 0 ); + cfg_interrupt_mmenable : out STD_LOGIC_VECTOR ( 2 downto 0 ); + pl_initial_link_width : out STD_LOGIC_VECTOR ( 2 downto 0 ); + pl_tx_pm_state : out STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_mgmt_do : out STD_LOGIC_VECTOR ( 31 downto 0 ); + pl_ltssm_state : out STD_LOGIC_VECTOR ( 5 downto 0 ); + cfg_vc_tcvc_map : out STD_LOGIC_VECTOR ( 6 downto 0 ); + cfg_interrupt_do : out STD_LOGIC_VECTOR ( 7 downto 0 ); + fc_cplh : out STD_LOGIC_VECTOR ( 7 downto 0 ); + fc_nph : out STD_LOGIC_VECTOR ( 7 downto 0 ); + fc_ph : out STD_LOGIC_VECTOR ( 7 downto 0 ); + \throttle_ctl_pipeline.reg_tkeep_reg[7]\ : in STD_LOGIC; + pipe_userclk2_in : in STD_LOGIC; + tx_cfg_gnt : in STD_LOGIC; + cfg_turnoff_ok : in STD_LOGIC; + s_axis_tx_tlast : in STD_LOGIC; + s_axis_tx_tvalid : in STD_LOGIC; + s_axis_tx_tkeep : in STD_LOGIC_VECTOR ( 0 to 0 ); + SR : in STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_rx1_valid_gt : in STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + PIPE_RXCHANISALIGNED : in STD_LOGIC_VECTOR ( 3 downto 0 ); + \pipe_stages_1.pipe_rx_phy_status_q_reg\ : in STD_LOGIC; + \pipe_stages_1.pipe_rx_elec_idle_q_reg\ : in STD_LOGIC; + pipe_rx2_valid_gt : in STD_LOGIC; + \pipe_stages_1.pipe_rx_phy_status_q_reg_0\ : in STD_LOGIC; + \pipe_stages_1.pipe_rx_elec_idle_q_reg_0\ : in STD_LOGIC; + pipe_rx3_valid_gt : in STD_LOGIC; + \pipe_stages_1.pipe_rx_phy_status_q_reg_1\ : in STD_LOGIC; + \pipe_stages_1.pipe_rx_elec_idle_q_reg_1\ : in STD_LOGIC; + pipe_rx0_valid_gt : in STD_LOGIC; + gt_rx_phy_status_q : in STD_LOGIC; + gt_rxelecidle_q : in STD_LOGIC; + bridge_reset_int : in STD_LOGIC; + pl_phy_lnk_up : in STD_LOGIC; + m_axis_rx_tready : in STD_LOGIC; + cfg_trn_pending : in STD_LOGIC; + cfg_mgmt_wr_rw1c_as_rw : in STD_LOGIC; + cfg_mgmt_wr_readonly : in STD_LOGIC; + cfg_mgmt_wr_en : in STD_LOGIC; + cfg_mgmt_rd_en : in STD_LOGIC; + cfg_err_malformed : in STD_LOGIC; + cfg_err_cor : in STD_LOGIC; + cfg_err_ur : in STD_LOGIC; + cfg_err_ecrc : in STD_LOGIC; + cfg_err_cpl_timeout : in STD_LOGIC; + cfg_err_cpl_abort : in STD_LOGIC; + cfg_err_cpl_unexpect : in STD_LOGIC; + cfg_err_poisoned : in STD_LOGIC; + cfg_err_atomic_egress_blocked : in STD_LOGIC; + cfg_err_mc_blocked : in STD_LOGIC; + cfg_err_internal_uncor : in STD_LOGIC; + cfg_err_internal_cor : in STD_LOGIC; + cfg_err_posted : in STD_LOGIC; + cfg_err_locked : in STD_LOGIC; + cfg_err_norecovery : in STD_LOGIC; + cfg_interrupt : in STD_LOGIC; + cfg_interrupt_assert : in STD_LOGIC; + cfg_interrupt_stat : in STD_LOGIC; + cfg_pm_halt_aspm_l0s : in STD_LOGIC; + cfg_pm_halt_aspm_l1 : in STD_LOGIC; + cfg_pm_force_state_en : in STD_LOGIC; + cfg_pm_wake : in STD_LOGIC; + \out\ : in STD_LOGIC; + s_axis_tx_tdata : in STD_LOGIC_VECTOR ( 63 downto 0 ); + s_axis_tx_tuser : in STD_LOGIC_VECTOR ( 3 downto 0 ); + D : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_data_q_reg[15]\ : in STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_rx_status_q_reg[2]\ : in STD_LOGIC_VECTOR ( 2 downto 0 ); + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_data_q_reg[15]_0\ : in STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_rx_status_q_reg[2]_0\ : in STD_LOGIC_VECTOR ( 2 downto 0 ); + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_data_q_reg[15]_1\ : in STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_rx_status_q_reg[2]_1\ : in STD_LOGIC_VECTOR ( 2 downto 0 ); + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1\ : in STD_LOGIC_VECTOR ( 1 downto 0 ); + \pipe_stages_1.pipe_rx_data_q_reg[15]_2\ : in STD_LOGIC_VECTOR ( 15 downto 0 ); + \pipe_stages_1.pipe_rx_status_q_reg[2]_2\ : in STD_LOGIC_VECTOR ( 2 downto 0 ); + pipe_userclk1_in : in STD_LOGIC; + pcie_drp_clk : in STD_LOGIC; + pcie_drp_en : in STD_LOGIC; + pcie_drp_we : in STD_LOGIC; + pl_directed_link_auton : in STD_LOGIC; + pl_directed_link_speed : in STD_LOGIC; + pl_downstream_deemph_source : in STD_LOGIC; + pl_transmit_hot_rst : in STD_LOGIC; + pl_upstream_prefer_deemph : in STD_LOGIC; + sys_rst_n : in STD_LOGIC; + rx_np_ok : in STD_LOGIC; + rx_np_req : in STD_LOGIC; + cfg_err_aer_headerlog : in STD_LOGIC_VECTOR ( 127 downto 0 ); + pcie_drp_di : in STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_pm_force_state : in STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_directed_link_change : in STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_directed_link_width : in STD_LOGIC_VECTOR ( 1 downto 0 ); + cfg_ds_function_number : in STD_LOGIC_VECTOR ( 2 downto 0 ); + fc_sel : in STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_mgmt_di : in STD_LOGIC_VECTOR ( 31 downto 0 ); + cfg_mgmt_byte_en_n : in STD_LOGIC_VECTOR ( 3 downto 0 ); + cfg_err_tlp_cpl_header : in STD_LOGIC_VECTOR ( 47 downto 0 ); + cfg_aer_interrupt_msgnum : in STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_ds_device_number : in STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_pciecap_interrupt_msgnum : in STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_dsn : in STD_LOGIC_VECTOR ( 63 downto 0 ); + cfg_ds_bus_number : in STD_LOGIC_VECTOR ( 7 downto 0 ); + cfg_interrupt_di : in STD_LOGIC_VECTOR ( 7 downto 0 ); + pcie_drp_addr : in STD_LOGIC_VECTOR ( 8 downto 0 ); + cfg_mgmt_dwaddr : in STD_LOGIC_VECTOR ( 9 downto 0 ) + ); +end pcie_7x_0_pcie_7x_0_pcie_top; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie_top is + signal \^cfg_msg_data\ : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal \^cfg_pcie_link_state\ : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal \^cfg_to_turnoff\ : STD_LOGIC; + signal cfg_turnoff_ok_w : STD_LOGIC; + signal pcie_7x_i_n_13 : STD_LOGIC; + signal pcie_7x_i_n_22 : STD_LOGIC; + signal pcie_7x_i_n_30 : STD_LOGIC; + signal pcie_7x_i_n_6 : STD_LOGIC; + signal pcie_7x_i_n_9 : STD_LOGIC; + signal pipe_rx0_chanisaligned : STD_LOGIC; + signal pipe_rx0_char_is_k : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_rx0_data : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal pipe_rx0_elec_idle : STD_LOGIC; + signal pipe_rx0_phy_status : STD_LOGIC; + signal pipe_rx0_polarity : STD_LOGIC; + signal pipe_rx0_status : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal pipe_rx0_valid : STD_LOGIC; + signal pipe_rx1_chanisaligned : STD_LOGIC; + signal pipe_rx1_char_is_k : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_rx1_data : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal pipe_rx1_elec_idle : STD_LOGIC; + signal pipe_rx1_phy_status : STD_LOGIC; + signal pipe_rx1_polarity : STD_LOGIC; + signal pipe_rx1_status : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal pipe_rx1_valid : STD_LOGIC; + signal pipe_rx2_chanisaligned : STD_LOGIC; + signal pipe_rx2_char_is_k : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_rx2_data : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal pipe_rx2_elec_idle : STD_LOGIC; + signal pipe_rx2_phy_status : STD_LOGIC; + signal pipe_rx2_polarity : STD_LOGIC; + signal pipe_rx2_status : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal pipe_rx2_valid : STD_LOGIC; + signal pipe_rx3_chanisaligned : STD_LOGIC; + signal pipe_rx3_char_is_k : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_rx3_data : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal pipe_rx3_elec_idle : STD_LOGIC; + signal pipe_rx3_phy_status : STD_LOGIC; + signal pipe_rx3_polarity : STD_LOGIC; + signal pipe_rx3_status : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal pipe_rx3_valid : STD_LOGIC; + signal pipe_tx0_char_is_k : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_tx0_compliance : STD_LOGIC; + signal pipe_tx0_data : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal pipe_tx0_elec_idle : STD_LOGIC; + signal pipe_tx0_powerdown : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_tx1_char_is_k : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_tx1_compliance : STD_LOGIC; + signal pipe_tx1_data : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal pipe_tx1_elec_idle : STD_LOGIC; + signal pipe_tx1_powerdown : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_tx2_char_is_k : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_tx2_compliance : STD_LOGIC; + signal pipe_tx2_data : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal pipe_tx2_elec_idle : STD_LOGIC; + signal pipe_tx2_powerdown : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_tx3_char_is_k : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_tx3_compliance : STD_LOGIC; + signal pipe_tx3_data : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal pipe_tx3_elec_idle : STD_LOGIC; + signal pipe_tx3_powerdown : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_tx_deemph : STD_LOGIC; + signal pipe_tx_margin : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal pipe_tx_rate : STD_LOGIC; + signal pipe_tx_rcvr_det : STD_LOGIC; + signal \rx_inst/rx_pipeline_inst/dsc_detect\ : STD_LOGIC; + signal \rx_inst/rx_pipeline_inst/reg_dsc_detect\ : STD_LOGIC; + signal \rx_inst/rx_pipeline_inst/rsrc_rdy_filtered\ : STD_LOGIC; + signal \rx_inst/rx_pipeline_inst/trn_in_packet\ : STD_LOGIC; + signal \rx_inst/rx_pipeline_inst/trn_rsrc_dsc_d\ : STD_LOGIC; + signal \rx_inst/rx_pipeline_inst/trn_rsrc_dsc_prev0\ : STD_LOGIC; + signal trn_rbar_hit : STD_LOGIC_VECTOR ( 6 downto 0 ); + signal trn_rd : STD_LOGIC_VECTOR ( 63 downto 0 ); + signal trn_rdst_rdy : STD_LOGIC; + signal trn_recrc_err : STD_LOGIC; + signal trn_reof : STD_LOGIC; + signal trn_rerrfwd : STD_LOGIC; + signal trn_rrem : STD_LOGIC_VECTOR ( 0 to 0 ); + signal trn_rsof : STD_LOGIC; + signal trn_rsrc_dsc : STD_LOGIC; + signal \^trn_tbuf_av\ : STD_LOGIC_VECTOR ( 5 downto 0 ); + signal trn_tcfg_gnt : STD_LOGIC; + signal \^trn_tcfg_req\ : STD_LOGIC; + signal trn_td : STD_LOGIC_VECTOR ( 63 downto 0 ); + signal trn_tdst_rdy : STD_LOGIC; + signal trn_tecrc_gen : STD_LOGIC; + signal trn_teof : STD_LOGIC; + signal trn_terrfwd : STD_LOGIC; + signal trn_trem : STD_LOGIC; + signal trn_tsof : STD_LOGIC; + signal trn_tsrc_dsc : STD_LOGIC; + signal trn_tsrc_rdy : STD_LOGIC; + signal trn_tstr : STD_LOGIC; + signal \tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/lnk_up_thrtl\ : STD_LOGIC; + signal \tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/ppm_L1_thrtl\ : STD_LOGIC; + signal \tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/ppm_L1_trig\ : STD_LOGIC; + signal \tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/reg_tcfg_gnt\ : STD_LOGIC; + signal \tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/tbuf_av_min_trig\ : STD_LOGIC; + signal \tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/tcfg_req_trig\ : STD_LOGIC; + signal \tx_inst/tx_pipeline_inst/reg_disable_trn2\ : STD_LOGIC; +begin + cfg_msg_data(15 downto 0) <= \^cfg_msg_data\(15 downto 0); + cfg_pcie_link_state(2 downto 0) <= \^cfg_pcie_link_state\(2 downto 0); + cfg_to_turnoff <= \^cfg_to_turnoff\; + trn_tbuf_av(5 downto 0) <= \^trn_tbuf_av\(5 downto 0); + trn_tcfg_req <= \^trn_tcfg_req\; +axi_basic_top: entity work.pcie_7x_0_pcie_7x_0_axi_basic_top + port map ( + E(0) => trn_rdst_rdy, + Q(63 downto 0) => m_axis_rx_tdata(63 downto 0), + cfg_pcie_link_state(2 downto 0) => \^cfg_pcie_link_state\(2 downto 0), + cfg_pm_turnoff_ok_n => cfg_turnoff_ok_w, + cfg_to_turnoff => \^cfg_to_turnoff\, + cfg_turnoff_ok => cfg_turnoff_ok, + dsc_detect => \rx_inst/rx_pipeline_inst/dsc_detect\, + lnk_up_thrtl => \tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/lnk_up_thrtl\, + lnk_up_thrtl_reg => pcie_7x_i_n_30, + m_axis_rx_tkeep(0) => m_axis_rx_tkeep(0), + m_axis_rx_tlast => m_axis_rx_tlast, + m_axis_rx_tready => m_axis_rx_tready, + m_axis_rx_tuser(12 downto 0) => m_axis_rx_tuser(12 downto 0), + m_axis_rx_tvalid_reg => m_axis_rx_tvalid_reg, + \out\ => \out\, + pipe_userclk2_in => pipe_userclk2_in, + ppm_L1_thrtl => \tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/ppm_L1_thrtl\, + ppm_L1_thrtl_reg => pcie_7x_i_n_13, + ppm_L1_trig => \tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/ppm_L1_trig\, + reg_dsc_detect => \rx_inst/rx_pipeline_inst/reg_dsc_detect\, + reg_tcfg_gnt => \tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/reg_tcfg_gnt\, + rsrc_rdy_filtered => \rx_inst/rx_pipeline_inst/rsrc_rdy_filtered\, + s_axis_tx_tdata(63 downto 0) => s_axis_tx_tdata(63 downto 0), + s_axis_tx_tkeep(0) => s_axis_tx_tkeep(0), + s_axis_tx_tlast => s_axis_tx_tlast, + s_axis_tx_tuser(3 downto 0) => s_axis_tx_tuser(3 downto 0), + s_axis_tx_tvalid => s_axis_tx_tvalid, + tbuf_av_min_trig => \tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/tbuf_av_min_trig\, + tcfg_req_trig => \tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/tcfg_req_trig\, + \throttle_ctl_pipeline.reg_tdata_reg[63]\(63 downto 32) => trn_td(31 downto 0), + \throttle_ctl_pipeline.reg_tdata_reg[63]\(31 downto 0) => trn_td(63 downto 32), + \throttle_ctl_pipeline.reg_tkeep_reg[7]\ => \throttle_ctl_pipeline.reg_tkeep_reg[7]\, + \throttle_ctl_pipeline.reg_tuser_reg[3]\(3) => trn_tsrc_dsc, + \throttle_ctl_pipeline.reg_tuser_reg[3]\(2) => trn_tstr, + \throttle_ctl_pipeline.reg_tuser_reg[3]\(1) => trn_terrfwd, + \throttle_ctl_pipeline.reg_tuser_reg[3]\(0) => trn_tecrc_gen, + tready_thrtl_i_5 => pcie_7x_i_n_22, + tready_thrtl_reg => tready_thrtl_reg, + trn_in_packet => \rx_inst/rx_pipeline_inst/trn_in_packet\, + trn_in_packet_reg => pcie_7x_i_n_9, + trn_rbar_hit(6 downto 0) => trn_rbar_hit(6 downto 0), + trn_rd(63 downto 0) => trn_rd(63 downto 0), + trn_recrc_err => trn_recrc_err, + trn_reof => trn_reof, + trn_rerrfwd => trn_rerrfwd, + trn_rrem(0) => trn_rrem(0), + trn_rsof => trn_rsof, + trn_rsrc_dsc => trn_rsrc_dsc, + trn_rsrc_dsc_d => \rx_inst/rx_pipeline_inst/trn_rsrc_dsc_d\, + trn_rsrc_dsc_prev0 => \rx_inst/rx_pipeline_inst/trn_rsrc_dsc_prev0\, + trn_tbuf_av(5 downto 0) => \^trn_tbuf_av\(5 downto 0), + trn_tcfg_gnt => trn_tcfg_gnt, + trn_tcfg_req => \^trn_tcfg_req\, + trn_tdst_rdy => trn_tdst_rdy, + trn_teof => trn_teof, + trn_trem(0) => trn_trem, + trn_tsof => trn_tsof, + trn_tsrc_rdy => trn_tsrc_rdy, + tx_cfg_gnt => tx_cfg_gnt + ); +\cfg_bus_number_d[7]_i_1\: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => \out\, + O => \tx_inst/tx_pipeline_inst/reg_disable_trn2\ + ); +\cfg_bus_number_d_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => pcie_7x_i_n_6, + D => \^cfg_msg_data\(8), + Q => cfg_bus_number(0), + R => \tx_inst/tx_pipeline_inst/reg_disable_trn2\ + ); +\cfg_bus_number_d_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => pcie_7x_i_n_6, + D => \^cfg_msg_data\(9), + Q => cfg_bus_number(1), + R => \tx_inst/tx_pipeline_inst/reg_disable_trn2\ + ); +\cfg_bus_number_d_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => pcie_7x_i_n_6, + D => \^cfg_msg_data\(10), + Q => cfg_bus_number(2), + R => \tx_inst/tx_pipeline_inst/reg_disable_trn2\ + ); +\cfg_bus_number_d_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => pcie_7x_i_n_6, + D => \^cfg_msg_data\(11), + Q => cfg_bus_number(3), + R => \tx_inst/tx_pipeline_inst/reg_disable_trn2\ + ); +\cfg_bus_number_d_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => pcie_7x_i_n_6, + D => \^cfg_msg_data\(12), + Q => cfg_bus_number(4), + R => \tx_inst/tx_pipeline_inst/reg_disable_trn2\ + ); +\cfg_bus_number_d_reg[5]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => pcie_7x_i_n_6, + D => \^cfg_msg_data\(13), + Q => cfg_bus_number(5), + R => \tx_inst/tx_pipeline_inst/reg_disable_trn2\ + ); +\cfg_bus_number_d_reg[6]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => pcie_7x_i_n_6, + D => \^cfg_msg_data\(14), + Q => cfg_bus_number(6), + R => \tx_inst/tx_pipeline_inst/reg_disable_trn2\ + ); +\cfg_bus_number_d_reg[7]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => pcie_7x_i_n_6, + D => \^cfg_msg_data\(15), + Q => cfg_bus_number(7), + R => \tx_inst/tx_pipeline_inst/reg_disable_trn2\ + ); +\cfg_device_number_d_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => pcie_7x_i_n_6, + D => \^cfg_msg_data\(3), + Q => cfg_device_number(0), + R => \tx_inst/tx_pipeline_inst/reg_disable_trn2\ + ); +\cfg_device_number_d_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => pcie_7x_i_n_6, + D => \^cfg_msg_data\(4), + Q => cfg_device_number(1), + R => \tx_inst/tx_pipeline_inst/reg_disable_trn2\ + ); +\cfg_device_number_d_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => pcie_7x_i_n_6, + D => \^cfg_msg_data\(5), + Q => cfg_device_number(2), + R => \tx_inst/tx_pipeline_inst/reg_disable_trn2\ + ); +\cfg_device_number_d_reg[3]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => pcie_7x_i_n_6, + D => \^cfg_msg_data\(6), + Q => cfg_device_number(3), + R => \tx_inst/tx_pipeline_inst/reg_disable_trn2\ + ); +\cfg_device_number_d_reg[4]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => pcie_7x_i_n_6, + D => \^cfg_msg_data\(7), + Q => cfg_device_number(4), + R => \tx_inst/tx_pipeline_inst/reg_disable_trn2\ + ); +\cfg_function_number_d_reg[0]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => pcie_7x_i_n_6, + D => \^cfg_msg_data\(0), + Q => cfg_function_number(0), + R => \tx_inst/tx_pipeline_inst/reg_disable_trn2\ + ); +\cfg_function_number_d_reg[1]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => pcie_7x_i_n_6, + D => \^cfg_msg_data\(1), + Q => cfg_function_number(1), + R => \tx_inst/tx_pipeline_inst/reg_disable_trn2\ + ); +\cfg_function_number_d_reg[2]\: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => pcie_7x_i_n_6, + D => \^cfg_msg_data\(2), + Q => cfg_function_number(2), + R => \tx_inst/tx_pipeline_inst/reg_disable_trn2\ + ); +pcie_7x_i: entity work.pcie_7x_0_pcie_7x_0_pcie_7x + port map ( + E(0) => pcie_7x_i_n_6, + Q(15 downto 0) => pipe_rx0_data(15 downto 0), + bridge_reset_int => bridge_reset_int, + cfg_aer_ecrc_check_en => cfg_aer_ecrc_check_en, + cfg_aer_ecrc_check_en_0(3) => trn_tsrc_dsc, + cfg_aer_ecrc_check_en_0(2) => trn_tstr, + cfg_aer_ecrc_check_en_0(1) => trn_terrfwd, + cfg_aer_ecrc_check_en_0(0) => trn_tecrc_gen, + cfg_aer_ecrc_check_en_1(15 downto 0) => pipe_rx1_data(15 downto 0), + cfg_aer_ecrc_check_en_10(2 downto 0) => pipe_rx2_status(2 downto 0), + cfg_aer_ecrc_check_en_11(2 downto 0) => pipe_rx3_status(2 downto 0), + cfg_aer_ecrc_check_en_2(15 downto 0) => pipe_rx2_data(15 downto 0), + cfg_aer_ecrc_check_en_3(15 downto 0) => pipe_rx3_data(15 downto 0), + cfg_aer_ecrc_check_en_4(1 downto 0) => pipe_rx0_char_is_k(1 downto 0), + cfg_aer_ecrc_check_en_5(1 downto 0) => pipe_rx1_char_is_k(1 downto 0), + cfg_aer_ecrc_check_en_6(1 downto 0) => pipe_rx2_char_is_k(1 downto 0), + cfg_aer_ecrc_check_en_7(1 downto 0) => pipe_rx3_char_is_k(1 downto 0), + cfg_aer_ecrc_check_en_8(2 downto 0) => pipe_rx0_status(2 downto 0), + cfg_aer_ecrc_check_en_9(2 downto 0) => pipe_rx1_status(2 downto 0), + cfg_aer_ecrc_gen_en => cfg_aer_ecrc_gen_en, + cfg_aer_interrupt_msgnum(4 downto 0) => cfg_aer_interrupt_msgnum(4 downto 0), + cfg_aer_rooterr_corr_err_received => cfg_aer_rooterr_corr_err_received, + cfg_aer_rooterr_corr_err_reporting_en => cfg_aer_rooterr_corr_err_reporting_en, + cfg_aer_rooterr_fatal_err_received => cfg_aer_rooterr_fatal_err_received, + cfg_aer_rooterr_fatal_err_reporting_en => cfg_aer_rooterr_fatal_err_reporting_en, + cfg_aer_rooterr_non_fatal_err_received => cfg_aer_rooterr_non_fatal_err_received, + cfg_aer_rooterr_non_fatal_err_reporting_en => cfg_aer_rooterr_non_fatal_err_reporting_en, + cfg_bridge_serr_en => cfg_bridge_serr_en, + cfg_command(4 downto 0) => cfg_command(4 downto 0), + cfg_dcommand(14 downto 0) => cfg_dcommand(14 downto 0), + cfg_dcommand2(11 downto 0) => cfg_dcommand2(11 downto 0), + cfg_ds_bus_number(7 downto 0) => cfg_ds_bus_number(7 downto 0), + cfg_ds_device_number(4 downto 0) => cfg_ds_device_number(4 downto 0), + cfg_ds_function_number(2 downto 0) => cfg_ds_function_number(2 downto 0), + cfg_dsn(63 downto 0) => cfg_dsn(63 downto 0), + cfg_dstatus(3 downto 0) => cfg_dstatus(3 downto 0), + cfg_err_aer_headerlog(127 downto 0) => cfg_err_aer_headerlog(127 downto 0), + cfg_err_aer_headerlog_set => cfg_err_aer_headerlog_set, + cfg_err_atomic_egress_blocked => cfg_err_atomic_egress_blocked, + cfg_err_cor => cfg_err_cor, + cfg_err_cpl_abort => cfg_err_cpl_abort, + cfg_err_cpl_rdy => cfg_err_cpl_rdy, + cfg_err_cpl_timeout => cfg_err_cpl_timeout, + cfg_err_cpl_unexpect => cfg_err_cpl_unexpect, + cfg_err_ecrc => cfg_err_ecrc, + cfg_err_internal_cor => cfg_err_internal_cor, + cfg_err_internal_uncor => cfg_err_internal_uncor, + cfg_err_locked => cfg_err_locked, + cfg_err_malformed => cfg_err_malformed, + cfg_err_mc_blocked => cfg_err_mc_blocked, + cfg_err_norecovery => cfg_err_norecovery, + cfg_err_poisoned => cfg_err_poisoned, + cfg_err_posted => cfg_err_posted, + cfg_err_tlp_cpl_header(47 downto 0) => cfg_err_tlp_cpl_header(47 downto 0), + cfg_err_ur => cfg_err_ur, + cfg_interrupt => cfg_interrupt, + cfg_interrupt_assert => cfg_interrupt_assert, + cfg_interrupt_di(7 downto 0) => cfg_interrupt_di(7 downto 0), + cfg_interrupt_do(7 downto 0) => cfg_interrupt_do(7 downto 0), + cfg_interrupt_mmenable(2 downto 0) => cfg_interrupt_mmenable(2 downto 0), + cfg_interrupt_msienable => cfg_interrupt_msienable, + cfg_interrupt_msixenable => cfg_interrupt_msixenable, + cfg_interrupt_msixfm => cfg_interrupt_msixfm, + cfg_interrupt_rdy => cfg_interrupt_rdy, + cfg_interrupt_stat => cfg_interrupt_stat, + cfg_lcommand(10 downto 0) => cfg_lcommand(10 downto 0), + cfg_lstatus(9 downto 0) => cfg_lstatus(9 downto 0), + cfg_mgmt_byte_en_n(3 downto 0) => cfg_mgmt_byte_en_n(3 downto 0), + cfg_mgmt_di(31 downto 0) => cfg_mgmt_di(31 downto 0), + cfg_mgmt_do(31 downto 0) => cfg_mgmt_do(31 downto 0), + cfg_mgmt_dwaddr(9 downto 0) => cfg_mgmt_dwaddr(9 downto 0), + cfg_mgmt_rd_en => cfg_mgmt_rd_en, + cfg_mgmt_rd_wr_done => cfg_mgmt_rd_wr_done, + cfg_mgmt_wr_en => cfg_mgmt_wr_en, + cfg_mgmt_wr_readonly => cfg_mgmt_wr_readonly, + cfg_mgmt_wr_rw1c_as_rw => cfg_mgmt_wr_rw1c_as_rw, + cfg_msg_data(15 downto 0) => \^cfg_msg_data\(15 downto 0), + cfg_msg_received => cfg_msg_received, + cfg_msg_received_assert_int_a => cfg_msg_received_assert_int_a, + cfg_msg_received_assert_int_b => cfg_msg_received_assert_int_b, + cfg_msg_received_assert_int_c => cfg_msg_received_assert_int_c, + cfg_msg_received_assert_int_d => cfg_msg_received_assert_int_d, + cfg_msg_received_deassert_int_a => cfg_msg_received_deassert_int_a, + cfg_msg_received_deassert_int_b => cfg_msg_received_deassert_int_b, + cfg_msg_received_deassert_int_c => cfg_msg_received_deassert_int_c, + cfg_msg_received_deassert_int_d => cfg_msg_received_deassert_int_d, + cfg_msg_received_err_cor => cfg_msg_received_err_cor, + cfg_msg_received_err_fatal => cfg_msg_received_err_fatal, + cfg_msg_received_err_non_fatal => cfg_msg_received_err_non_fatal, + cfg_msg_received_pm_as_nak => cfg_msg_received_pm_as_nak, + cfg_msg_received_pm_pme => cfg_msg_received_pm_pme, + cfg_msg_received_pme_to_ack => cfg_msg_received_pme_to_ack, + cfg_msg_received_setslotpowerlimit => cfg_msg_received_setslotpowerlimit, + cfg_pcie_link_state(2 downto 0) => \^cfg_pcie_link_state\(2 downto 0), + cfg_pciecap_interrupt_msgnum(4 downto 0) => cfg_pciecap_interrupt_msgnum(4 downto 0), + cfg_pm_force_state(1 downto 0) => cfg_pm_force_state(1 downto 0), + cfg_pm_force_state_en => cfg_pm_force_state_en, + cfg_pm_halt_aspm_l0s => cfg_pm_halt_aspm_l0s, + cfg_pm_halt_aspm_l1 => cfg_pm_halt_aspm_l1, + cfg_pm_turnoff_ok_n => cfg_turnoff_ok_w, + cfg_pm_wake => cfg_pm_wake, + cfg_pmcsr_pme_en => cfg_pmcsr_pme_en, + cfg_pmcsr_pme_status => cfg_pmcsr_pme_status, + cfg_pmcsr_powerstate(1 downto 0) => cfg_pmcsr_powerstate(1 downto 0), + cfg_received_func_lvl_rst => cfg_received_func_lvl_rst, + cfg_root_control_pme_int_en => cfg_root_control_pme_int_en, + cfg_root_control_syserr_corr_err_en => cfg_root_control_syserr_corr_err_en, + cfg_root_control_syserr_fatal_err_en => cfg_root_control_syserr_fatal_err_en, + cfg_root_control_syserr_non_fatal_err_en => cfg_root_control_syserr_non_fatal_err_en, + cfg_slot_control_electromech_il_ctl_pulse => cfg_slot_control_electromech_il_ctl_pulse, + cfg_to_turnoff => \^cfg_to_turnoff\, + cfg_trn_pending => cfg_trn_pending, + cfg_vc_tcvc_map(6 downto 0) => cfg_vc_tcvc_map(6 downto 0), + dsc_detect => \rx_inst/rx_pipeline_inst/dsc_detect\, + fc_cpld(11 downto 0) => fc_cpld(11 downto 0), + fc_cplh(7 downto 0) => fc_cplh(7 downto 0), + fc_npd(11 downto 0) => fc_npd(11 downto 0), + fc_nph(7 downto 0) => fc_nph(7 downto 0), + fc_pd(11 downto 0) => fc_pd(11 downto 0), + fc_ph(7 downto 0) => fc_ph(7 downto 0), + fc_sel(2 downto 0) => fc_sel(2 downto 0), + lnk_up_thrtl => \tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/lnk_up_thrtl\, + lnk_up_thrtl_reg => pcie_7x_i_n_30, + \out\ => \out\, + pcie_drp_addr(8 downto 0) => pcie_drp_addr(8 downto 0), + pcie_drp_clk => pcie_drp_clk, + pcie_drp_clk_0 => pcie_7x_i_n_22, + pcie_drp_clk_1(63 downto 0) => trn_rd(63 downto 0), + pcie_drp_clk_2(0) => trn_rrem(0), + pcie_drp_di(15 downto 0) => pcie_drp_di(15 downto 0), + pcie_drp_do(15 downto 0) => pcie_drp_do(15 downto 0), + pcie_drp_en => pcie_drp_en, + pcie_drp_rdy => pcie_drp_rdy, + pcie_drp_we => pcie_drp_we, + pipe_pclk_in => pipe_pclk_in, + pipe_rx0_chanisaligned => pipe_rx0_chanisaligned, + pipe_rx0_elec_idle => pipe_rx0_elec_idle, + pipe_rx0_phy_status => pipe_rx0_phy_status, + pipe_rx0_polarity => pipe_rx0_polarity, + pipe_rx0_valid => pipe_rx0_valid, + pipe_rx1_chanisaligned => pipe_rx1_chanisaligned, + pipe_rx1_elec_idle => pipe_rx1_elec_idle, + pipe_rx1_phy_status => pipe_rx1_phy_status, + pipe_rx1_polarity => pipe_rx1_polarity, + pipe_rx1_valid => pipe_rx1_valid, + pipe_rx2_chanisaligned => pipe_rx2_chanisaligned, + pipe_rx2_elec_idle => pipe_rx2_elec_idle, + pipe_rx2_phy_status => pipe_rx2_phy_status, + pipe_rx2_polarity => pipe_rx2_polarity, + pipe_rx2_valid => pipe_rx2_valid, + pipe_rx3_chanisaligned => pipe_rx3_chanisaligned, + pipe_rx3_elec_idle => pipe_rx3_elec_idle, + pipe_rx3_phy_status => pipe_rx3_phy_status, + pipe_rx3_polarity => pipe_rx3_polarity, + pipe_rx3_valid => pipe_rx3_valid, + pipe_tx0_char_is_k(1 downto 0) => pipe_tx0_char_is_k(1 downto 0), + pipe_tx0_compliance => pipe_tx0_compliance, + pipe_tx0_data(15 downto 0) => pipe_tx0_data(15 downto 0), + pipe_tx0_elec_idle => pipe_tx0_elec_idle, + pipe_tx0_powerdown(1 downto 0) => pipe_tx0_powerdown(1 downto 0), + pipe_tx1_char_is_k(1 downto 0) => pipe_tx1_char_is_k(1 downto 0), + pipe_tx1_compliance => pipe_tx1_compliance, + pipe_tx1_data(15 downto 0) => pipe_tx1_data(15 downto 0), + pipe_tx1_elec_idle => pipe_tx1_elec_idle, + pipe_tx1_powerdown(1 downto 0) => pipe_tx1_powerdown(1 downto 0), + pipe_tx2_char_is_k(1 downto 0) => pipe_tx2_char_is_k(1 downto 0), + pipe_tx2_compliance => pipe_tx2_compliance, + pipe_tx2_data(15 downto 0) => pipe_tx2_data(15 downto 0), + pipe_tx2_elec_idle => pipe_tx2_elec_idle, + pipe_tx2_powerdown(1 downto 0) => pipe_tx2_powerdown(1 downto 0), + pipe_tx3_char_is_k(1 downto 0) => pipe_tx3_char_is_k(1 downto 0), + pipe_tx3_compliance => pipe_tx3_compliance, + pipe_tx3_data(15 downto 0) => pipe_tx3_data(15 downto 0), + pipe_tx3_elec_idle => pipe_tx3_elec_idle, + pipe_tx3_powerdown(1 downto 0) => pipe_tx3_powerdown(1 downto 0), + pipe_tx_deemph => pipe_tx_deemph, + pipe_tx_margin(2 downto 0) => pipe_tx_margin(2 downto 0), + pipe_tx_rate => pipe_tx_rate, + pipe_tx_rcvr_det => pipe_tx_rcvr_det, + pipe_userclk1_in => pipe_userclk1_in, + pipe_userclk2_in => pipe_userclk2_in, + pl_directed_change_done => pl_directed_change_done, + pl_directed_link_auton => pl_directed_link_auton, + pl_directed_link_change(1 downto 0) => pl_directed_link_change(1 downto 0), + pl_directed_link_speed => pl_directed_link_speed, + pl_directed_link_width(1 downto 0) => pl_directed_link_width(1 downto 0), + pl_downstream_deemph_source => pl_downstream_deemph_source, + pl_initial_link_width(2 downto 0) => pl_initial_link_width(2 downto 0), + pl_lane_reversal_mode(1 downto 0) => pl_lane_reversal_mode(1 downto 0), + pl_link_gen2_cap => pl_link_gen2_cap, + pl_link_partner_gen2_supported => pl_link_partner_gen2_supported, + pl_link_upcfg_cap => pl_link_upcfg_cap, + pl_ltssm_state(5 downto 0) => pl_ltssm_state(5 downto 0), + pl_phy_lnk_up => pl_phy_lnk_up, + pl_received_hot_rst => pl_received_hot_rst, + pl_rx_pm_state(1 downto 0) => pl_rx_pm_state(1 downto 0), + pl_sel_lnk_rate => pl_sel_lnk_rate, + pl_sel_lnk_width(1 downto 0) => pl_sel_lnk_width(1 downto 0), + pl_transmit_hot_rst => pl_transmit_hot_rst, + pl_tx_pm_state(2 downto 0) => pl_tx_pm_state(2 downto 0), + pl_upstream_prefer_deemph => pl_upstream_prefer_deemph, + ppm_L1_thrtl => \tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/ppm_L1_thrtl\, + ppm_L1_thrtl_reg => pcie_7x_i_n_13, + ppm_L1_trig => \tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/ppm_L1_trig\, + reg_dsc_detect => \rx_inst/rx_pipeline_inst/reg_dsc_detect\, + reg_tcfg_gnt => \tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/reg_tcfg_gnt\, + rsrc_rdy_filtered => \rx_inst/rx_pipeline_inst/rsrc_rdy_filtered\, + rx_np_ok => rx_np_ok, + rx_np_req => rx_np_req, + src_in => src_in, + sys_rst_n => sys_rst_n, + tbuf_av_min_trig => \tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/tbuf_av_min_trig\, + tcfg_req_trig => \tx_inst/thrtl_ctl_enabled.tx_thrl_ctl_inst/tcfg_req_trig\, + trn_in_packet => \rx_inst/rx_pipeline_inst/trn_in_packet\, + trn_in_packet_reg => pcie_7x_i_n_9, + trn_lnk_up => trn_lnk_up, + trn_rbar_hit(6 downto 0) => trn_rbar_hit(6 downto 0), + trn_rdst_rdy => trn_rdst_rdy, + trn_recrc_err => trn_recrc_err, + trn_reof => trn_reof, + trn_rerrfwd => trn_rerrfwd, + trn_rsof => trn_rsof, + trn_rsrc_dsc => trn_rsrc_dsc, + trn_rsrc_dsc_d => \rx_inst/rx_pipeline_inst/trn_rsrc_dsc_d\, + trn_rsrc_dsc_prev0 => \rx_inst/rx_pipeline_inst/trn_rsrc_dsc_prev0\, + trn_tbuf_av(5 downto 0) => \^trn_tbuf_av\(5 downto 0), + trn_tcfg_gnt => trn_tcfg_gnt, + trn_tcfg_req => \^trn_tcfg_req\, + trn_td(63 downto 0) => trn_td(63 downto 0), + trn_tdst_rdy => trn_tdst_rdy, + trn_teof => trn_teof, + trn_trem(0) => trn_trem, + trn_tsof => trn_tsof, + trn_tsrc_rdy => trn_tsrc_rdy, + tx_err_drop => tx_err_drop, + user_reset_int_reg => user_reset_int_reg + ); +pcie_pipe_pipeline_i: entity work.pcie_7x_0_pcie_7x_0_pcie_pipe_pipeline + port map ( + D(1 downto 0) => D(1 downto 0), + PIPE_POWERDOWN(7 downto 0) => PIPE_POWERDOWN(7 downto 0), + PIPE_RXCHANISALIGNED(3 downto 0) => PIPE_RXCHANISALIGNED(3 downto 0), + PIPE_RXPOLARITY(3 downto 0) => PIPE_RXPOLARITY(3 downto 0), + PIPE_TXCOMPLIANCE(3 downto 0) => PIPE_TXCOMPLIANCE(3 downto 0), + PIPE_TXDATA(63 downto 0) => PIPE_TXDATA(63 downto 0), + PIPE_TXDATAK(7 downto 0) => PIPE_TXDATAK(7 downto 0), + PIPE_TXELECIDLE(3 downto 0) => PIPE_TXELECIDLE(3 downto 0), + Q(1 downto 0) => pipe_rx1_char_is_k(1 downto 0), + SR(0) => SR(0), + gt_rx_phy_status_q => gt_rx_phy_status_q, + gt_rxelecidle_q => gt_rxelecidle_q, + pipe_pclk_in => pipe_pclk_in, + pipe_rx0_chanisaligned => pipe_rx0_chanisaligned, + pipe_rx0_elec_idle => pipe_rx0_elec_idle, + pipe_rx0_phy_status => pipe_rx0_phy_status, + pipe_rx0_polarity => pipe_rx0_polarity, + pipe_rx0_valid => pipe_rx0_valid, + pipe_rx0_valid_gt => pipe_rx0_valid_gt, + pipe_rx1_chanisaligned => pipe_rx1_chanisaligned, + pipe_rx1_elec_idle => pipe_rx1_elec_idle, + pipe_rx1_phy_status => pipe_rx1_phy_status, + pipe_rx1_polarity => pipe_rx1_polarity, + pipe_rx1_valid => pipe_rx1_valid, + pipe_rx1_valid_gt => pipe_rx1_valid_gt, + pipe_rx2_chanisaligned => pipe_rx2_chanisaligned, + pipe_rx2_elec_idle => pipe_rx2_elec_idle, + pipe_rx2_phy_status => pipe_rx2_phy_status, + pipe_rx2_polarity => pipe_rx2_polarity, + pipe_rx2_valid => pipe_rx2_valid, + pipe_rx2_valid_gt => pipe_rx2_valid_gt, + pipe_rx3_chanisaligned => pipe_rx3_chanisaligned, + pipe_rx3_elec_idle => pipe_rx3_elec_idle, + pipe_rx3_phy_status => pipe_rx3_phy_status, + pipe_rx3_polarity => pipe_rx3_polarity, + pipe_rx3_valid => pipe_rx3_valid, + pipe_rx3_valid_gt => pipe_rx3_valid_gt, + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]\(1 downto 0) => pipe_rx2_char_is_k(1 downto 0), + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0\(1 downto 0) => pipe_rx3_char_is_k(1 downto 0), + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1\(1 downto 0) => pipe_rx0_char_is_k(1 downto 0), + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_2\(1 downto 0) => \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]\(1 downto 0), + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_3\(1 downto 0) => \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0\(1 downto 0), + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_4\(1 downto 0) => \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1\(1 downto 0), + \pipe_stages_1.pipe_rx_data_q_reg[15]\(15 downto 0) => pipe_rx1_data(15 downto 0), + \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(15 downto 0) => pipe_rx2_data(15 downto 0), + \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(15 downto 0) => pipe_rx3_data(15 downto 0), + \pipe_stages_1.pipe_rx_data_q_reg[15]_2\(15 downto 0) => pipe_rx0_data(15 downto 0), + \pipe_stages_1.pipe_rx_data_q_reg[15]_3\(15 downto 0) => \pipe_stages_1.pipe_rx_data_q_reg[15]\(15 downto 0), + \pipe_stages_1.pipe_rx_data_q_reg[15]_4\(15 downto 0) => \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(15 downto 0), + \pipe_stages_1.pipe_rx_data_q_reg[15]_5\(15 downto 0) => \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(15 downto 0), + \pipe_stages_1.pipe_rx_data_q_reg[15]_6\(15 downto 0) => \pipe_stages_1.pipe_rx_data_q_reg[15]_2\(15 downto 0), + \pipe_stages_1.pipe_rx_elec_idle_q_reg\ => \pipe_stages_1.pipe_rx_elec_idle_q_reg\, + \pipe_stages_1.pipe_rx_elec_idle_q_reg_0\ => \pipe_stages_1.pipe_rx_elec_idle_q_reg_0\, + \pipe_stages_1.pipe_rx_elec_idle_q_reg_1\ => \pipe_stages_1.pipe_rx_elec_idle_q_reg_1\, + \pipe_stages_1.pipe_rx_phy_status_q_reg\ => \pipe_stages_1.pipe_rx_phy_status_q_reg\, + \pipe_stages_1.pipe_rx_phy_status_q_reg_0\ => \pipe_stages_1.pipe_rx_phy_status_q_reg_0\, + \pipe_stages_1.pipe_rx_phy_status_q_reg_1\ => \pipe_stages_1.pipe_rx_phy_status_q_reg_1\, + \pipe_stages_1.pipe_rx_status_q_reg[2]\(2 downto 0) => pipe_rx1_status(2 downto 0), + \pipe_stages_1.pipe_rx_status_q_reg[2]_0\(2 downto 0) => pipe_rx2_status(2 downto 0), + \pipe_stages_1.pipe_rx_status_q_reg[2]_1\(2 downto 0) => pipe_rx3_status(2 downto 0), + \pipe_stages_1.pipe_rx_status_q_reg[2]_2\(2 downto 0) => pipe_rx0_status(2 downto 0), + \pipe_stages_1.pipe_rx_status_q_reg[2]_3\(2 downto 0) => \pipe_stages_1.pipe_rx_status_q_reg[2]\(2 downto 0), + \pipe_stages_1.pipe_rx_status_q_reg[2]_4\(2 downto 0) => \pipe_stages_1.pipe_rx_status_q_reg[2]_0\(2 downto 0), + \pipe_stages_1.pipe_rx_status_q_reg[2]_5\(2 downto 0) => \pipe_stages_1.pipe_rx_status_q_reg[2]_1\(2 downto 0), + \pipe_stages_1.pipe_rx_status_q_reg[2]_6\(2 downto 0) => \pipe_stages_1.pipe_rx_status_q_reg[2]_2\(2 downto 0), + \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]\(1 downto 0) => pipe_tx0_char_is_k(1 downto 0), + \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_0\(1 downto 0) => pipe_tx1_char_is_k(1 downto 0), + \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_1\(1 downto 0) => pipe_tx2_char_is_k(1 downto 0), + \pipe_stages_1.pipe_tx_char_is_k_q_reg[1]_2\(1 downto 0) => pipe_tx3_char_is_k(1 downto 0), + \pipe_stages_1.pipe_tx_data_q_reg[15]\(15 downto 0) => pipe_tx0_data(15 downto 0), + \pipe_stages_1.pipe_tx_data_q_reg[15]_0\(15 downto 0) => pipe_tx1_data(15 downto 0), + \pipe_stages_1.pipe_tx_data_q_reg[15]_1\(15 downto 0) => pipe_tx2_data(15 downto 0), + \pipe_stages_1.pipe_tx_data_q_reg[15]_2\(15 downto 0) => pipe_tx3_data(15 downto 0), + \pipe_stages_1.pipe_tx_margin_q_reg[2]\(2 downto 0) => Q(2 downto 0), + \pipe_stages_1.pipe_tx_margin_q_reg[2]_0\(2 downto 0) => pipe_tx_margin(2 downto 0), + \pipe_stages_1.pipe_tx_powerdown_q_reg[1]\(1 downto 0) => pipe_tx0_powerdown(1 downto 0), + \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_0\(1 downto 0) => pipe_tx1_powerdown(1 downto 0), + \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_1\(1 downto 0) => pipe_tx2_powerdown(1 downto 0), + \pipe_stages_1.pipe_tx_powerdown_q_reg[1]_2\(1 downto 0) => pipe_tx3_powerdown(1 downto 0), + \pipe_stages_1.pipe_tx_rate_q_reg\(0) => \pipe_stages_1.pipe_tx_rate_q_reg\(0), + pipe_tx0_compliance => pipe_tx0_compliance, + pipe_tx0_elec_idle => pipe_tx0_elec_idle, + pipe_tx1_compliance => pipe_tx1_compliance, + pipe_tx1_elec_idle => pipe_tx1_elec_idle, + pipe_tx2_compliance => pipe_tx2_compliance, + pipe_tx2_elec_idle => pipe_tx2_elec_idle, + pipe_tx3_compliance => pipe_tx3_compliance, + pipe_tx3_elec_idle => pipe_tx3_elec_idle, + pipe_tx_deemph => pipe_tx_deemph, + pipe_tx_deemph_gt => pipe_tx_deemph_gt, + pipe_tx_rate => pipe_tx_rate, + pipe_tx_rcvr_det => pipe_tx_rcvr_det, + pipe_tx_rcvr_det_gt => pipe_tx_rcvr_det_gt + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_core_top is + port ( + pl_ltssm_state : out STD_LOGIC_VECTOR ( 5 downto 0 ); + pl_phy_lnk_up : out STD_LOGIC; + user_reset_out : out STD_LOGIC; + m_axis_rx_tvalid : out STD_LOGIC; + s_axis_tx_tready : out STD_LOGIC; + cfg_aer_ecrc_check_en : out STD_LOGIC; + cfg_aer_ecrc_gen_en : out STD_LOGIC; + cfg_aer_rooterr_corr_err_received : out STD_LOGIC; + cfg_aer_rooterr_corr_err_reporting_en : out STD_LOGIC; + cfg_aer_rooterr_fatal_err_received : out STD_LOGIC; + cfg_aer_rooterr_fatal_err_reporting_en : out STD_LOGIC; + cfg_aer_rooterr_non_fatal_err_received : out STD_LOGIC; + cfg_aer_rooterr_non_fatal_err_reporting_en : out STD_LOGIC; + cfg_bridge_serr_en : out STD_LOGIC; + cfg_command : out STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_dcommand2 : out STD_LOGIC_VECTOR ( 11 downto 0 ); + cfg_dcommand : out STD_LOGIC_VECTOR ( 14 downto 0 ); + cfg_dstatus : out STD_LOGIC_VECTOR ( 3 downto 0 ); + cfg_interrupt_msienable : out STD_LOGIC; + cfg_interrupt_msixenable : out STD_LOGIC; + cfg_interrupt_msixfm : out STD_LOGIC; + cfg_lcommand : out STD_LOGIC_VECTOR ( 10 downto 0 ); + cfg_lstatus : out STD_LOGIC_VECTOR ( 9 downto 0 ); + cfg_msg_received : out STD_LOGIC; + cfg_msg_received_assert_int_a : out STD_LOGIC; + cfg_msg_received_assert_int_b : out STD_LOGIC; + cfg_msg_received_assert_int_c : out STD_LOGIC; + cfg_msg_received_assert_int_d : out STD_LOGIC; + cfg_msg_received_deassert_int_a : out STD_LOGIC; + cfg_msg_received_deassert_int_b : out STD_LOGIC; + cfg_msg_received_deassert_int_c : out STD_LOGIC; + cfg_msg_received_deassert_int_d : out STD_LOGIC; + cfg_msg_received_err_cor : out STD_LOGIC; + cfg_msg_received_err_fatal : out STD_LOGIC; + cfg_msg_received_err_non_fatal : out STD_LOGIC; + cfg_msg_received_pm_as_nak : out STD_LOGIC; + cfg_to_turnoff : out STD_LOGIC; + cfg_msg_received_pme_to_ack : out STD_LOGIC; + cfg_msg_received_pm_pme : out STD_LOGIC; + cfg_msg_received_setslotpowerlimit : out STD_LOGIC; + cfg_pmcsr_pme_en : out STD_LOGIC; + cfg_pmcsr_pme_status : out STD_LOGIC; + cfg_root_control_pme_int_en : out STD_LOGIC; + cfg_root_control_syserr_corr_err_en : out STD_LOGIC; + cfg_root_control_syserr_fatal_err_en : out STD_LOGIC; + cfg_root_control_syserr_non_fatal_err_en : out STD_LOGIC; + cfg_slot_control_electromech_il_ctl_pulse : out STD_LOGIC; + pcie_drp_rdy : out STD_LOGIC; + pl_directed_change_done : out STD_LOGIC; + pl_link_gen2_cap : out STD_LOGIC; + pl_link_partner_gen2_supported : out STD_LOGIC; + pl_link_upcfg_cap : out STD_LOGIC; + pl_sel_lnk_rate : out STD_LOGIC; + tx_cfg_req : out STD_LOGIC; + tx_err_drop : out STD_LOGIC; + fc_cpld : out STD_LOGIC_VECTOR ( 11 downto 0 ); + fc_npd : out STD_LOGIC_VECTOR ( 11 downto 0 ); + fc_pd : out STD_LOGIC_VECTOR ( 11 downto 0 ); + cfg_msg_data : out STD_LOGIC_VECTOR ( 15 downto 0 ); + pcie_drp_do : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_pmcsr_powerstate : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_lane_reversal_mode : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_rx_pm_state : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_sel_lnk_width : out STD_LOGIC_VECTOR ( 1 downto 0 ); + cfg_interrupt_mmenable : out STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_pcie_link_state : out STD_LOGIC_VECTOR ( 2 downto 0 ); + pl_initial_link_width : out STD_LOGIC_VECTOR ( 2 downto 0 ); + pl_tx_pm_state : out STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_mgmt_do : out STD_LOGIC_VECTOR ( 31 downto 0 ); + tx_buf_av : out STD_LOGIC_VECTOR ( 5 downto 0 ); + cfg_vc_tcvc_map : out STD_LOGIC_VECTOR ( 6 downto 0 ); + cfg_interrupt_do : out STD_LOGIC_VECTOR ( 7 downto 0 ); + fc_cplh : out STD_LOGIC_VECTOR ( 7 downto 0 ); + fc_nph : out STD_LOGIC_VECTOR ( 7 downto 0 ); + fc_ph : out STD_LOGIC_VECTOR ( 7 downto 0 ); + pipe_pclk_sel_out : out STD_LOGIC_VECTOR ( 3 downto 0 ); + gen3_reg : out STD_LOGIC; + pci_exp_txn : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pci_exp_txp : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_rxoutclk_out : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_txoutclk_out : out STD_LOGIC; + user_lnk_up : out STD_LOGIC; + m_axis_rx_tdata : out STD_LOGIC_VECTOR ( 63 downto 0 ); + m_axis_rx_tkeep : out STD_LOGIC_VECTOR ( 0 to 0 ); + m_axis_rx_tlast : out STD_LOGIC; + m_axis_rx_tuser : out STD_LOGIC_VECTOR ( 12 downto 0 ); + cfg_bus_number : out STD_LOGIC_VECTOR ( 7 downto 0 ); + cfg_device_number : out STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_function_number : out STD_LOGIC_VECTOR ( 2 downto 0 ); + pl_received_hot_rst : out STD_LOGIC; + cfg_mgmt_rd_wr_done : out STD_LOGIC; + cfg_err_aer_headerlog_set : out STD_LOGIC; + cfg_err_cpl_rdy : out STD_LOGIC; + cfg_interrupt_rdy : out STD_LOGIC; + cfg_received_func_lvl_rst : out STD_LOGIC; + pipe_pclk_in : in STD_LOGIC; + m_axis_rx_tready : in STD_LOGIC; + s_axis_tx_tlast : in STD_LOGIC; + s_axis_tx_tvalid : in STD_LOGIC; + pipe_userclk2_in : in STD_LOGIC; + pipe_userclk1_in : in STD_LOGIC; + pcie_drp_clk : in STD_LOGIC; + pcie_drp_en : in STD_LOGIC; + pcie_drp_we : in STD_LOGIC; + pl_directed_link_auton : in STD_LOGIC; + pl_directed_link_speed : in STD_LOGIC; + pl_downstream_deemph_source : in STD_LOGIC; + pl_transmit_hot_rst : in STD_LOGIC; + pl_upstream_prefer_deemph : in STD_LOGIC; + rx_np_ok : in STD_LOGIC; + rx_np_req : in STD_LOGIC; + cfg_err_aer_headerlog : in STD_LOGIC_VECTOR ( 127 downto 0 ); + pcie_drp_di : in STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_pm_force_state : in STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_directed_link_change : in STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_directed_link_width : in STD_LOGIC_VECTOR ( 1 downto 0 ); + cfg_ds_function_number : in STD_LOGIC_VECTOR ( 2 downto 0 ); + fc_sel : in STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_mgmt_di : in STD_LOGIC_VECTOR ( 31 downto 0 ); + cfg_err_tlp_cpl_header : in STD_LOGIC_VECTOR ( 47 downto 0 ); + cfg_aer_interrupt_msgnum : in STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_ds_device_number : in STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_pciecap_interrupt_msgnum : in STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_dsn : in STD_LOGIC_VECTOR ( 63 downto 0 ); + cfg_ds_bus_number : in STD_LOGIC_VECTOR ( 7 downto 0 ); + cfg_interrupt_di : in STD_LOGIC_VECTOR ( 7 downto 0 ); + pcie_drp_addr : in STD_LOGIC_VECTOR ( 8 downto 0 ); + cfg_mgmt_dwaddr : in STD_LOGIC_VECTOR ( 9 downto 0 ); + pipe_mmcm_lock_in : in STD_LOGIC; + pipe_rxusrclk_in : in STD_LOGIC; + pipe_dclk_in : in STD_LOGIC; + sys_clk : in STD_LOGIC; + pipe_oobclk_in : in STD_LOGIC; + pci_exp_rxn : in STD_LOGIC_VECTOR ( 3 downto 0 ); + pci_exp_rxp : in STD_LOGIC_VECTOR ( 3 downto 0 ); + sys_rst_n : in STD_LOGIC; + tx_cfg_gnt : in STD_LOGIC; + cfg_turnoff_ok : in STD_LOGIC; + s_axis_tx_tdata : in STD_LOGIC_VECTOR ( 63 downto 0 ); + s_axis_tx_tuser : in STD_LOGIC_VECTOR ( 3 downto 0 ); + s_axis_tx_tkeep : in STD_LOGIC_VECTOR ( 0 to 0 ); + cfg_mgmt_byte_en : in STD_LOGIC_VECTOR ( 3 downto 0 ); + cfg_trn_pending : in STD_LOGIC; + cfg_mgmt_wr_rw1c_as_rw : in STD_LOGIC; + cfg_mgmt_wr_readonly : in STD_LOGIC; + cfg_mgmt_wr_en : in STD_LOGIC; + cfg_mgmt_rd_en : in STD_LOGIC; + cfg_err_malformed : in STD_LOGIC; + cfg_err_cor : in STD_LOGIC; + cfg_err_ur : in STD_LOGIC; + cfg_err_ecrc : in STD_LOGIC; + cfg_err_cpl_timeout : in STD_LOGIC; + cfg_err_cpl_abort : in STD_LOGIC; + cfg_err_cpl_unexpect : in STD_LOGIC; + cfg_err_poisoned : in STD_LOGIC; + cfg_err_atomic_egress_blocked : in STD_LOGIC; + cfg_err_mc_blocked : in STD_LOGIC; + cfg_err_internal_uncor : in STD_LOGIC; + cfg_err_internal_cor : in STD_LOGIC; + cfg_err_posted : in STD_LOGIC; + cfg_err_locked : in STD_LOGIC; + cfg_err_norecovery : in STD_LOGIC; + cfg_interrupt : in STD_LOGIC; + cfg_interrupt_assert : in STD_LOGIC; + cfg_interrupt_stat : in STD_LOGIC; + cfg_pm_halt_aspm_l0s : in STD_LOGIC; + cfg_pm_halt_aspm_l1 : in STD_LOGIC; + cfg_pm_force_state_en : in STD_LOGIC; + cfg_pm_wake : in STD_LOGIC + ); +end pcie_7x_0_pcie_7x_0_core_top; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_core_top is + signal \_inferred__0/store_ltssm_inferred_i_2_n_0\ : STD_LOGIC; + signal \_inferred__0/store_ltssm_inferred_i_3_n_0\ : STD_LOGIC; + signal bridge_reset_int : STD_LOGIC; + signal gt_rx_phy_status_q : STD_LOGIC; + signal gt_rxelecidle_q : STD_LOGIC; + signal gt_top_i_n_10 : STD_LOGIC; + signal gt_top_i_n_120 : STD_LOGIC; + signal gt_top_i_n_13 : STD_LOGIC; + signal gt_top_i_n_5 : STD_LOGIC; + signal gt_top_i_n_6 : STD_LOGIC; + signal gt_top_i_n_7 : STD_LOGIC; + signal gt_top_i_n_78 : STD_LOGIC; + signal gt_top_i_n_79 : STD_LOGIC; + signal gt_top_i_n_8 : STD_LOGIC; + signal gt_top_i_n_80 : STD_LOGIC; + signal gt_top_i_n_81 : STD_LOGIC; + signal gt_top_i_n_82 : STD_LOGIC; + signal gt_top_i_n_83 : STD_LOGIC; + signal gt_top_i_n_84 : STD_LOGIC; + signal gt_top_i_n_85 : STD_LOGIC; + signal gt_top_i_n_86 : STD_LOGIC; + signal gt_top_i_n_87 : STD_LOGIC; + signal gt_top_i_n_88 : STD_LOGIC; + signal gt_top_i_n_89 : STD_LOGIC; + signal gt_top_i_n_9 : STD_LOGIC; + signal \ltssm_reg1_reg[0]_srl2_n_0\ : STD_LOGIC; + signal \ltssm_reg1_reg[1]_srl2_n_0\ : STD_LOGIC; + signal \ltssm_reg1_reg[2]_srl2_n_0\ : STD_LOGIC; + signal \ltssm_reg1_reg[3]_srl2_n_0\ : STD_LOGIC; + signal \ltssm_reg1_reg[4]_srl2_n_0\ : STD_LOGIC; + signal \ltssm_reg1_reg[5]_srl2_n_0\ : STD_LOGIC; + signal ltssm_reg2 : STD_LOGIC_VECTOR ( 5 downto 0 ); + signal pcie_block_i_i_32_n_0 : STD_LOGIC; + signal pcie_block_i_i_33_n_0 : STD_LOGIC; + signal pcie_block_i_i_34_n_0 : STD_LOGIC; + signal pcie_block_i_i_35_n_0 : STD_LOGIC; + signal pcie_top_i_n_20 : STD_LOGIC; + signal phy_rdy_n : STD_LOGIC; + signal pipe_rx0_chanisaligned_gt : STD_LOGIC; + signal pipe_rx0_char_is_k_gt : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_rx0_data_gt : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal pipe_rx0_polarity_gt : STD_LOGIC; + signal pipe_rx0_valid_gt : STD_LOGIC; + signal pipe_rx1_chanisaligned_gt : STD_LOGIC; + signal pipe_rx1_char_is_k_gt : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_rx1_data_gt : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal pipe_rx1_polarity_gt : STD_LOGIC; + signal pipe_rx1_valid_gt : STD_LOGIC; + signal pipe_rx2_chanisaligned_gt : STD_LOGIC; + signal pipe_rx2_char_is_k_gt : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_rx2_data_gt : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal pipe_rx2_polarity_gt : STD_LOGIC; + signal pipe_rx2_valid_gt : STD_LOGIC; + signal pipe_rx3_chanisaligned_gt : STD_LOGIC; + signal pipe_rx3_char_is_k_gt : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_rx3_data_gt : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal pipe_rx3_polarity_gt : STD_LOGIC; + signal pipe_rx3_valid_gt : STD_LOGIC; + signal pipe_tx0_char_is_k_gt : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_tx0_compliance_gt : STD_LOGIC; + signal pipe_tx0_data_gt : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal pipe_tx0_elec_idle_gt : STD_LOGIC; + signal pipe_tx0_powerdown_gt : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_tx1_char_is_k_gt : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_tx1_compliance_gt : STD_LOGIC; + signal pipe_tx1_data_gt : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal pipe_tx1_elec_idle_gt : STD_LOGIC; + signal pipe_tx1_powerdown_gt : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_tx2_char_is_k_gt : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_tx2_compliance_gt : STD_LOGIC; + signal pipe_tx2_data_gt : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal pipe_tx2_elec_idle_gt : STD_LOGIC; + signal pipe_tx2_powerdown_gt : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_tx3_char_is_k_gt : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_tx3_compliance_gt : STD_LOGIC; + signal pipe_tx3_data_gt : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal pipe_tx3_elec_idle_gt : STD_LOGIC; + signal pipe_tx3_powerdown_gt : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal pipe_tx_deemph_gt : STD_LOGIC; + signal pipe_tx_margin_gt : STD_LOGIC_VECTOR ( 2 downto 0 ); + signal pipe_tx_rate_gt : STD_LOGIC; + signal pipe_tx_rcvr_det_gt : STD_LOGIC; + signal \^pl_ltssm_state\ : STD_LOGIC_VECTOR ( 5 downto 0 ); + signal \^pl_phy_lnk_up\ : STD_LOGIC; + signal pl_phy_lnk_up_sync : STD_LOGIC; + signal pl_phy_lnk_up_wire : STD_LOGIC; + signal \^pl_received_hot_rst\ : STD_LOGIC; + signal pl_received_hot_rst_sync : STD_LOGIC; + signal pl_received_hot_rst_wire : STD_LOGIC; + signal store_ltssm : STD_LOGIC; + attribute DONT_TOUCH : boolean; + attribute DONT_TOUCH of store_ltssm : signal is std.standard.true; + signal sys_or_hot_rst : STD_LOGIC; + signal trn_lnk_up : STD_LOGIC; + signal user_lnk_up_int : STD_LOGIC; + attribute RTL_KEEP : string; + attribute RTL_KEEP of user_lnk_up_int : signal is "true"; + attribute async_reg : string; + attribute async_reg of user_lnk_up_int : signal is "true"; + signal user_lnk_up_mux : STD_LOGIC; + attribute async_reg of user_lnk_up_mux : signal is "true"; + signal \^user_reset_out\ : STD_LOGIC; + attribute srl_bus_name : string; + attribute srl_bus_name of \ltssm_reg1_reg[0]_srl2\ : label is "inst/\inst/ltssm_reg1_reg "; + attribute srl_name : string; + attribute srl_name of \ltssm_reg1_reg[0]_srl2\ : label is "inst/\inst/ltssm_reg1_reg[0]_srl2 "; + attribute srl_bus_name of \ltssm_reg1_reg[1]_srl2\ : label is "inst/\inst/ltssm_reg1_reg "; + attribute srl_name of \ltssm_reg1_reg[1]_srl2\ : label is "inst/\inst/ltssm_reg1_reg[1]_srl2 "; + attribute srl_bus_name of \ltssm_reg1_reg[2]_srl2\ : label is "inst/\inst/ltssm_reg1_reg "; + attribute srl_name of \ltssm_reg1_reg[2]_srl2\ : label is "inst/\inst/ltssm_reg1_reg[2]_srl2 "; + attribute srl_bus_name of \ltssm_reg1_reg[3]_srl2\ : label is "inst/\inst/ltssm_reg1_reg "; + attribute srl_name of \ltssm_reg1_reg[3]_srl2\ : label is "inst/\inst/ltssm_reg1_reg[3]_srl2 "; + attribute srl_bus_name of \ltssm_reg1_reg[4]_srl2\ : label is "inst/\inst/ltssm_reg1_reg "; + attribute srl_name of \ltssm_reg1_reg[4]_srl2\ : label is "inst/\inst/ltssm_reg1_reg[4]_srl2 "; + attribute srl_bus_name of \ltssm_reg1_reg[5]_srl2\ : label is "inst/\inst/ltssm_reg1_reg "; + attribute srl_name of \ltssm_reg1_reg[5]_srl2\ : label is "inst/\inst/ltssm_reg1_reg[5]_srl2 "; + attribute DEST_SYNC_FF : integer; + attribute DEST_SYNC_FF of phy_lnk_up_cdc : label is 2; + attribute INIT_SYNC_FF : integer; + attribute INIT_SYNC_FF of phy_lnk_up_cdc : label is 0; + attribute SIM_ASSERT_CHK : integer; + attribute SIM_ASSERT_CHK of phy_lnk_up_cdc : label is 0; + attribute SRC_INPUT_REG : integer; + attribute SRC_INPUT_REG of phy_lnk_up_cdc : label is 0; + attribute VERSION : integer; + attribute VERSION of phy_lnk_up_cdc : label is 0; + attribute XPM_CDC : string; + attribute XPM_CDC of phy_lnk_up_cdc : label is "SINGLE"; + attribute XPM_MODULE : string; + attribute XPM_MODULE of phy_lnk_up_cdc : label is "TRUE"; + attribute DEST_SYNC_FF of pl_received_hot_rst_cdc : label is 2; + attribute INIT_SYNC_FF of pl_received_hot_rst_cdc : label is 0; + attribute SIM_ASSERT_CHK of pl_received_hot_rst_cdc : label is 0; + attribute SRC_INPUT_REG of pl_received_hot_rst_cdc : label is 0; + attribute VERSION of pl_received_hot_rst_cdc : label is 0; + attribute XPM_CDC of pl_received_hot_rst_cdc : label is "SINGLE"; + attribute XPM_MODULE of pl_received_hot_rst_cdc : label is "TRUE"; + attribute ASYNC_REG_boolean : boolean; + attribute ASYNC_REG_boolean of user_lnk_up_int_reg : label is std.standard.true; + attribute KEEP : string; + attribute KEEP of user_lnk_up_int_reg : label is "yes"; + attribute ASYNC_REG_boolean of user_lnk_up_mux_reg : label is std.standard.true; + attribute KEEP of user_lnk_up_mux_reg : label is "yes"; +begin + pl_ltssm_state(5 downto 0) <= \^pl_ltssm_state\(5 downto 0); + pl_phy_lnk_up <= \^pl_phy_lnk_up\; + pl_received_hot_rst <= \^pl_received_hot_rst\; + user_lnk_up <= user_lnk_up_int; + user_reset_out <= \^user_reset_out\; +\_inferred__0/store_ltssm_inferred_i_1\: unisim.vcomponents.LUT2 + generic map( + INIT => X"E" + ) + port map ( + I0 => \_inferred__0/store_ltssm_inferred_i_2_n_0\, + I1 => \_inferred__0/store_ltssm_inferred_i_3_n_0\, + O => store_ltssm + ); +\_inferred__0/store_ltssm_inferred_i_2\: unisim.vcomponents.LUT6 + generic map( + INIT => X"6FF6FFFFFFFF6FF6" + ) + port map ( + I0 => ltssm_reg2(0), + I1 => \^pl_ltssm_state\(0), + I2 => \^pl_ltssm_state\(2), + I3 => ltssm_reg2(2), + I4 => \^pl_ltssm_state\(1), + I5 => ltssm_reg2(1), + O => \_inferred__0/store_ltssm_inferred_i_2_n_0\ + ); +\_inferred__0/store_ltssm_inferred_i_3\: unisim.vcomponents.LUT6 + generic map( + INIT => X"6FF6FFFFFFFF6FF6" + ) + port map ( + I0 => ltssm_reg2(3), + I1 => \^pl_ltssm_state\(3), + I2 => \^pl_ltssm_state\(5), + I3 => ltssm_reg2(5), + I4 => \^pl_ltssm_state\(4), + I5 => ltssm_reg2(4), + O => \_inferred__0/store_ltssm_inferred_i_3_n_0\ + ); +gt_top_i: entity work.pcie_7x_0_pcie_7x_0_gt_top + port map ( + D(1 downto 0) => pipe_rx0_char_is_k_gt(1 downto 0), + PIPE_POWERDOWN(7 downto 6) => pipe_tx3_powerdown_gt(1 downto 0), + PIPE_POWERDOWN(5 downto 4) => pipe_tx2_powerdown_gt(1 downto 0), + PIPE_POWERDOWN(3 downto 2) => pipe_tx1_powerdown_gt(1 downto 0), + PIPE_POWERDOWN(1 downto 0) => pipe_tx0_powerdown_gt(1 downto 0), + PIPE_RXCHANISALIGNED(3) => pipe_rx3_chanisaligned_gt, + PIPE_RXCHANISALIGNED(2) => pipe_rx2_chanisaligned_gt, + PIPE_RXCHANISALIGNED(1) => pipe_rx1_chanisaligned_gt, + PIPE_RXCHANISALIGNED(0) => pipe_rx0_chanisaligned_gt, + PIPE_RXPOLARITY(3) => pipe_rx3_polarity_gt, + PIPE_RXPOLARITY(2) => pipe_rx2_polarity_gt, + PIPE_RXPOLARITY(1) => pipe_rx1_polarity_gt, + PIPE_RXPOLARITY(0) => pipe_rx0_polarity_gt, + PIPE_TXCOMPLIANCE(3) => pipe_tx3_compliance_gt, + PIPE_TXCOMPLIANCE(2) => pipe_tx2_compliance_gt, + PIPE_TXCOMPLIANCE(1) => pipe_tx1_compliance_gt, + PIPE_TXCOMPLIANCE(0) => pipe_tx0_compliance_gt, + PIPE_TXDATA(63 downto 48) => pipe_tx3_data_gt(15 downto 0), + PIPE_TXDATA(47 downto 32) => pipe_tx2_data_gt(15 downto 0), + PIPE_TXDATA(31 downto 16) => pipe_tx1_data_gt(15 downto 0), + PIPE_TXDATA(15 downto 0) => pipe_tx0_data_gt(15 downto 0), + PIPE_TXDATAK(7 downto 6) => pipe_tx3_char_is_k_gt(1 downto 0), + PIPE_TXDATAK(5 downto 4) => pipe_tx2_char_is_k_gt(1 downto 0), + PIPE_TXDATAK(3 downto 2) => pipe_tx1_char_is_k_gt(1 downto 0), + PIPE_TXDATAK(1 downto 0) => pipe_tx0_char_is_k_gt(1 downto 0), + PIPE_TXELECIDLE(3) => pipe_tx3_elec_idle_gt, + PIPE_TXELECIDLE(2) => pipe_tx2_elec_idle_gt, + PIPE_TXELECIDLE(1) => pipe_tx1_elec_idle_gt, + PIPE_TXELECIDLE(0) => pipe_tx0_elec_idle_gt, + Q(15 downto 0) => pipe_rx0_data_gt(15 downto 0), + USER_RATE_GEN3 => gen3_reg, + \cplllock_reg1_reg[3]\(2 downto 0) => pipe_tx_margin_gt(2 downto 0), + gt_rx_phy_status_q => gt_rx_phy_status_q, + gt_rx_phy_status_q_reg => gt_top_i_n_5, + gt_rx_phy_status_q_reg_0 => gt_top_i_n_7, + gt_rx_phy_status_q_reg_1 => gt_top_i_n_9, + \gt_rx_status_q_reg[2]\(2) => gt_top_i_n_78, + \gt_rx_status_q_reg[2]\(1) => gt_top_i_n_79, + \gt_rx_status_q_reg[2]\(0) => gt_top_i_n_80, + \gt_rx_status_q_reg[2]_0\(2) => gt_top_i_n_81, + \gt_rx_status_q_reg[2]_0\(1) => gt_top_i_n_82, + \gt_rx_status_q_reg[2]_0\(0) => gt_top_i_n_83, + \gt_rx_status_q_reg[2]_1\(2) => gt_top_i_n_84, + \gt_rx_status_q_reg[2]_1\(1) => gt_top_i_n_85, + \gt_rx_status_q_reg[2]_1\(0) => gt_top_i_n_86, + \gt_rx_status_q_reg[2]_2\(2) => gt_top_i_n_87, + \gt_rx_status_q_reg[2]_2\(1) => gt_top_i_n_88, + \gt_rx_status_q_reg[2]_2\(0) => gt_top_i_n_89, + \gt_rxdata_q_reg[15]\(15 downto 0) => pipe_rx1_data_gt(15 downto 0), + \gt_rxdata_q_reg[15]_0\(15 downto 0) => pipe_rx2_data_gt(15 downto 0), + \gt_rxdata_q_reg[15]_1\(15 downto 0) => pipe_rx3_data_gt(15 downto 0), + gt_rxelecidle_q => gt_rxelecidle_q, + gt_rxelecidle_q_reg => gt_top_i_n_6, + gt_rxelecidle_q_reg_0 => gt_top_i_n_8, + gt_rxelecidle_q_reg_1 => gt_top_i_n_10, + gt_rxvalid_q_reg(1 downto 0) => pipe_rx1_char_is_k_gt(1 downto 0), + gt_rxvalid_q_reg_0(1 downto 0) => pipe_rx2_char_is_k_gt(1 downto 0), + gt_rxvalid_q_reg_1(1 downto 0) => pipe_rx3_char_is_k_gt(1 downto 0), + pci_exp_rxn(3 downto 0) => pci_exp_rxn(3 downto 0), + pci_exp_rxp(3 downto 0) => pci_exp_rxp(3 downto 0), + pci_exp_txn(3 downto 0) => pci_exp_txn(3 downto 0), + pci_exp_txp(3 downto 0) => pci_exp_txp(3 downto 0), + phy_rdy_n => phy_rdy_n, + pipe_dclk_in => pipe_dclk_in, + pipe_mmcm_lock_in => pipe_mmcm_lock_in, + pipe_oobclk_in => pipe_oobclk_in, + pipe_pclk_in => pipe_pclk_in, + pipe_pclk_sel_out(3 downto 0) => pipe_pclk_sel_out(3 downto 0), + pipe_rx0_valid_gt => pipe_rx0_valid_gt, + pipe_rx1_valid_gt => pipe_rx1_valid_gt, + pipe_rx2_valid_gt => pipe_rx2_valid_gt, + pipe_rx3_valid_gt => pipe_rx3_valid_gt, + pipe_rxoutclk_out(3 downto 0) => pipe_rxoutclk_out(3 downto 0), + pipe_rxusrclk_in => pipe_rxusrclk_in, + pipe_tx_deemph_gt => pipe_tx_deemph_gt, + pipe_tx_rcvr_det_gt => pipe_tx_rcvr_det_gt, + pipe_txoutclk_out => pipe_txoutclk_out, + pl_ltssm_state(5 downto 0) => \^pl_ltssm_state\(5 downto 0), + \rate_reg1_reg[0]\(0) => pipe_tx_rate_gt, + reset_n_reg1_reg => sys_rst_n, + sys_clk => sys_clk, + sys_rst_n => gt_top_i_n_13, + sys_rst_n_0 => gt_top_i_n_120 + ); +\ltssm_reg1_reg[0]_srl2\: unisim.vcomponents.SRL16E + generic map( + INIT => X"0000" + ) + port map ( + A0 => '1', + A1 => '0', + A2 => '0', + A3 => '0', + CE => '1', + CLK => pipe_pclk_in, + D => \^pl_ltssm_state\(0), + Q => \ltssm_reg1_reg[0]_srl2_n_0\ + ); +\ltssm_reg1_reg[1]_srl2\: unisim.vcomponents.SRL16E + generic map( + INIT => X"0000" + ) + port map ( + A0 => '1', + A1 => '0', + A2 => '0', + A3 => '0', + CE => '1', + CLK => pipe_pclk_in, + D => \^pl_ltssm_state\(1), + Q => \ltssm_reg1_reg[1]_srl2_n_0\ + ); +\ltssm_reg1_reg[2]_srl2\: unisim.vcomponents.SRL16E + generic map( + INIT => X"0000" + ) + port map ( + A0 => '1', + A1 => '0', + A2 => '0', + A3 => '0', + CE => '1', + CLK => pipe_pclk_in, + D => \^pl_ltssm_state\(2), + Q => \ltssm_reg1_reg[2]_srl2_n_0\ + ); +\ltssm_reg1_reg[3]_srl2\: unisim.vcomponents.SRL16E + generic map( + INIT => X"0000" + ) + port map ( + A0 => '1', + A1 => '0', + A2 => '0', + A3 => '0', + CE => '1', + CLK => pipe_pclk_in, + D => \^pl_ltssm_state\(3), + Q => \ltssm_reg1_reg[3]_srl2_n_0\ + ); +\ltssm_reg1_reg[4]_srl2\: unisim.vcomponents.SRL16E + generic map( + INIT => X"0000" + ) + port map ( + A0 => '1', + A1 => '0', + A2 => '0', + A3 => '0', + CE => '1', + CLK => pipe_pclk_in, + D => \^pl_ltssm_state\(4), + Q => \ltssm_reg1_reg[4]_srl2_n_0\ + ); +\ltssm_reg1_reg[5]_srl2\: unisim.vcomponents.SRL16E + generic map( + INIT => X"0000" + ) + port map ( + A0 => '1', + A1 => '0', + A2 => '0', + A3 => '0', + CE => '1', + CLK => pipe_pclk_in, + D => \^pl_ltssm_state\(5), + Q => \ltssm_reg1_reg[5]_srl2_n_0\ + ); +\ltssm_reg2_reg[0]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \ltssm_reg1_reg[0]_srl2_n_0\, + Q => ltssm_reg2(0), + R => '0' + ); +\ltssm_reg2_reg[1]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \ltssm_reg1_reg[1]_srl2_n_0\, + Q => ltssm_reg2(1), + R => '0' + ); +\ltssm_reg2_reg[2]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \ltssm_reg1_reg[2]_srl2_n_0\, + Q => ltssm_reg2(2), + R => '0' + ); +\ltssm_reg2_reg[3]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \ltssm_reg1_reg[3]_srl2_n_0\, + Q => ltssm_reg2(3), + R => '0' + ); +\ltssm_reg2_reg[4]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \ltssm_reg1_reg[4]_srl2_n_0\, + Q => ltssm_reg2(4), + R => '0' + ); +\ltssm_reg2_reg[5]\: unisim.vcomponents.FDRE + generic map( + INIT => '0' + ) + port map ( + C => pipe_pclk_in, + CE => '1', + D => \ltssm_reg1_reg[5]_srl2_n_0\, + Q => ltssm_reg2(5), + R => '0' + ); +pcie_block_i_i_32: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_mgmt_byte_en(3), + O => pcie_block_i_i_32_n_0 + ); +pcie_block_i_i_33: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_mgmt_byte_en(2), + O => pcie_block_i_i_33_n_0 + ); +pcie_block_i_i_34: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_mgmt_byte_en(1), + O => pcie_block_i_i_34_n_0 + ); +pcie_block_i_i_35: unisim.vcomponents.LUT1 + generic map( + INIT => X"1" + ) + port map ( + I0 => cfg_mgmt_byte_en(0), + O => pcie_block_i_i_35_n_0 + ); +pcie_top_i: entity work.pcie_7x_0_pcie_7x_0_pcie_top + port map ( + D(1 downto 0) => pipe_rx1_char_is_k_gt(1 downto 0), + PIPE_POWERDOWN(7 downto 6) => pipe_tx3_powerdown_gt(1 downto 0), + PIPE_POWERDOWN(5 downto 4) => pipe_tx2_powerdown_gt(1 downto 0), + PIPE_POWERDOWN(3 downto 2) => pipe_tx1_powerdown_gt(1 downto 0), + PIPE_POWERDOWN(1 downto 0) => pipe_tx0_powerdown_gt(1 downto 0), + PIPE_RXCHANISALIGNED(3) => pipe_rx3_chanisaligned_gt, + PIPE_RXCHANISALIGNED(2) => pipe_rx2_chanisaligned_gt, + PIPE_RXCHANISALIGNED(1) => pipe_rx1_chanisaligned_gt, + PIPE_RXCHANISALIGNED(0) => pipe_rx0_chanisaligned_gt, + PIPE_RXPOLARITY(3) => pipe_rx3_polarity_gt, + PIPE_RXPOLARITY(2) => pipe_rx2_polarity_gt, + PIPE_RXPOLARITY(1) => pipe_rx1_polarity_gt, + PIPE_RXPOLARITY(0) => pipe_rx0_polarity_gt, + PIPE_TXCOMPLIANCE(3) => pipe_tx3_compliance_gt, + PIPE_TXCOMPLIANCE(2) => pipe_tx2_compliance_gt, + PIPE_TXCOMPLIANCE(1) => pipe_tx1_compliance_gt, + PIPE_TXCOMPLIANCE(0) => pipe_tx0_compliance_gt, + PIPE_TXDATA(63 downto 48) => pipe_tx3_data_gt(15 downto 0), + PIPE_TXDATA(47 downto 32) => pipe_tx2_data_gt(15 downto 0), + PIPE_TXDATA(31 downto 16) => pipe_tx1_data_gt(15 downto 0), + PIPE_TXDATA(15 downto 0) => pipe_tx0_data_gt(15 downto 0), + PIPE_TXDATAK(7 downto 6) => pipe_tx3_char_is_k_gt(1 downto 0), + PIPE_TXDATAK(5 downto 4) => pipe_tx2_char_is_k_gt(1 downto 0), + PIPE_TXDATAK(3 downto 2) => pipe_tx1_char_is_k_gt(1 downto 0), + PIPE_TXDATAK(1 downto 0) => pipe_tx0_char_is_k_gt(1 downto 0), + PIPE_TXELECIDLE(3) => pipe_tx3_elec_idle_gt, + PIPE_TXELECIDLE(2) => pipe_tx2_elec_idle_gt, + PIPE_TXELECIDLE(1) => pipe_tx1_elec_idle_gt, + PIPE_TXELECIDLE(0) => pipe_tx0_elec_idle_gt, + Q(2 downto 0) => pipe_tx_margin_gt(2 downto 0), + SR(0) => phy_rdy_n, + bridge_reset_int => bridge_reset_int, + cfg_aer_ecrc_check_en => cfg_aer_ecrc_check_en, + cfg_aer_ecrc_gen_en => cfg_aer_ecrc_gen_en, + cfg_aer_interrupt_msgnum(4 downto 0) => cfg_aer_interrupt_msgnum(4 downto 0), + cfg_aer_rooterr_corr_err_received => cfg_aer_rooterr_corr_err_received, + cfg_aer_rooterr_corr_err_reporting_en => cfg_aer_rooterr_corr_err_reporting_en, + cfg_aer_rooterr_fatal_err_received => cfg_aer_rooterr_fatal_err_received, + cfg_aer_rooterr_fatal_err_reporting_en => cfg_aer_rooterr_fatal_err_reporting_en, + cfg_aer_rooterr_non_fatal_err_received => cfg_aer_rooterr_non_fatal_err_received, + cfg_aer_rooterr_non_fatal_err_reporting_en => cfg_aer_rooterr_non_fatal_err_reporting_en, + cfg_bridge_serr_en => cfg_bridge_serr_en, + cfg_bus_number(7 downto 0) => cfg_bus_number(7 downto 0), + cfg_command(4 downto 0) => cfg_command(4 downto 0), + cfg_dcommand(14 downto 0) => cfg_dcommand(14 downto 0), + cfg_dcommand2(11 downto 0) => cfg_dcommand2(11 downto 0), + cfg_device_number(4 downto 0) => cfg_device_number(4 downto 0), + cfg_ds_bus_number(7 downto 0) => cfg_ds_bus_number(7 downto 0), + cfg_ds_device_number(4 downto 0) => cfg_ds_device_number(4 downto 0), + cfg_ds_function_number(2 downto 0) => cfg_ds_function_number(2 downto 0), + cfg_dsn(63 downto 0) => cfg_dsn(63 downto 0), + cfg_dstatus(3 downto 0) => cfg_dstatus(3 downto 0), + cfg_err_aer_headerlog(127 downto 0) => cfg_err_aer_headerlog(127 downto 0), + cfg_err_aer_headerlog_set => cfg_err_aer_headerlog_set, + cfg_err_atomic_egress_blocked => cfg_err_atomic_egress_blocked, + cfg_err_cor => cfg_err_cor, + cfg_err_cpl_abort => cfg_err_cpl_abort, + cfg_err_cpl_rdy => cfg_err_cpl_rdy, + cfg_err_cpl_timeout => cfg_err_cpl_timeout, + cfg_err_cpl_unexpect => cfg_err_cpl_unexpect, + cfg_err_ecrc => cfg_err_ecrc, + cfg_err_internal_cor => cfg_err_internal_cor, + cfg_err_internal_uncor => cfg_err_internal_uncor, + cfg_err_locked => cfg_err_locked, + cfg_err_malformed => cfg_err_malformed, + cfg_err_mc_blocked => cfg_err_mc_blocked, + cfg_err_norecovery => cfg_err_norecovery, + cfg_err_poisoned => cfg_err_poisoned, + cfg_err_posted => cfg_err_posted, + cfg_err_tlp_cpl_header(47 downto 0) => cfg_err_tlp_cpl_header(47 downto 0), + cfg_err_ur => cfg_err_ur, + cfg_function_number(2 downto 0) => cfg_function_number(2 downto 0), + cfg_interrupt => cfg_interrupt, + cfg_interrupt_assert => cfg_interrupt_assert, + cfg_interrupt_di(7 downto 0) => cfg_interrupt_di(7 downto 0), + cfg_interrupt_do(7 downto 0) => cfg_interrupt_do(7 downto 0), + cfg_interrupt_mmenable(2 downto 0) => cfg_interrupt_mmenable(2 downto 0), + cfg_interrupt_msienable => cfg_interrupt_msienable, + cfg_interrupt_msixenable => cfg_interrupt_msixenable, + cfg_interrupt_msixfm => cfg_interrupt_msixfm, + cfg_interrupt_rdy => cfg_interrupt_rdy, + cfg_interrupt_stat => cfg_interrupt_stat, + cfg_lcommand(10 downto 0) => cfg_lcommand(10 downto 0), + cfg_lstatus(9 downto 0) => cfg_lstatus(9 downto 0), + cfg_mgmt_byte_en_n(3) => pcie_block_i_i_32_n_0, + cfg_mgmt_byte_en_n(2) => pcie_block_i_i_33_n_0, + cfg_mgmt_byte_en_n(1) => pcie_block_i_i_34_n_0, + cfg_mgmt_byte_en_n(0) => pcie_block_i_i_35_n_0, + cfg_mgmt_di(31 downto 0) => cfg_mgmt_di(31 downto 0), + cfg_mgmt_do(31 downto 0) => cfg_mgmt_do(31 downto 0), + cfg_mgmt_dwaddr(9 downto 0) => cfg_mgmt_dwaddr(9 downto 0), + cfg_mgmt_rd_en => cfg_mgmt_rd_en, + cfg_mgmt_rd_wr_done => cfg_mgmt_rd_wr_done, + cfg_mgmt_wr_en => cfg_mgmt_wr_en, + cfg_mgmt_wr_readonly => cfg_mgmt_wr_readonly, + cfg_mgmt_wr_rw1c_as_rw => cfg_mgmt_wr_rw1c_as_rw, + cfg_msg_data(15 downto 0) => cfg_msg_data(15 downto 0), + cfg_msg_received => cfg_msg_received, + cfg_msg_received_assert_int_a => cfg_msg_received_assert_int_a, + cfg_msg_received_assert_int_b => cfg_msg_received_assert_int_b, + cfg_msg_received_assert_int_c => cfg_msg_received_assert_int_c, + cfg_msg_received_assert_int_d => cfg_msg_received_assert_int_d, + cfg_msg_received_deassert_int_a => cfg_msg_received_deassert_int_a, + cfg_msg_received_deassert_int_b => cfg_msg_received_deassert_int_b, + cfg_msg_received_deassert_int_c => cfg_msg_received_deassert_int_c, + cfg_msg_received_deassert_int_d => cfg_msg_received_deassert_int_d, + cfg_msg_received_err_cor => cfg_msg_received_err_cor, + cfg_msg_received_err_fatal => cfg_msg_received_err_fatal, + cfg_msg_received_err_non_fatal => cfg_msg_received_err_non_fatal, + cfg_msg_received_pm_as_nak => cfg_msg_received_pm_as_nak, + cfg_msg_received_pm_pme => cfg_msg_received_pm_pme, + cfg_msg_received_pme_to_ack => cfg_msg_received_pme_to_ack, + cfg_msg_received_setslotpowerlimit => cfg_msg_received_setslotpowerlimit, + cfg_pcie_link_state(2 downto 0) => cfg_pcie_link_state(2 downto 0), + cfg_pciecap_interrupt_msgnum(4 downto 0) => cfg_pciecap_interrupt_msgnum(4 downto 0), + cfg_pm_force_state(1 downto 0) => cfg_pm_force_state(1 downto 0), + cfg_pm_force_state_en => cfg_pm_force_state_en, + cfg_pm_halt_aspm_l0s => cfg_pm_halt_aspm_l0s, + cfg_pm_halt_aspm_l1 => cfg_pm_halt_aspm_l1, + cfg_pm_wake => cfg_pm_wake, + cfg_pmcsr_pme_en => cfg_pmcsr_pme_en, + cfg_pmcsr_pme_status => cfg_pmcsr_pme_status, + cfg_pmcsr_powerstate(1 downto 0) => cfg_pmcsr_powerstate(1 downto 0), + cfg_received_func_lvl_rst => cfg_received_func_lvl_rst, + cfg_root_control_pme_int_en => cfg_root_control_pme_int_en, + cfg_root_control_syserr_corr_err_en => cfg_root_control_syserr_corr_err_en, + cfg_root_control_syserr_fatal_err_en => cfg_root_control_syserr_fatal_err_en, + cfg_root_control_syserr_non_fatal_err_en => cfg_root_control_syserr_non_fatal_err_en, + cfg_slot_control_electromech_il_ctl_pulse => cfg_slot_control_electromech_il_ctl_pulse, + cfg_to_turnoff => cfg_to_turnoff, + cfg_trn_pending => cfg_trn_pending, + cfg_turnoff_ok => cfg_turnoff_ok, + cfg_vc_tcvc_map(6 downto 0) => cfg_vc_tcvc_map(6 downto 0), + fc_cpld(11 downto 0) => fc_cpld(11 downto 0), + fc_cplh(7 downto 0) => fc_cplh(7 downto 0), + fc_npd(11 downto 0) => fc_npd(11 downto 0), + fc_nph(7 downto 0) => fc_nph(7 downto 0), + fc_pd(11 downto 0) => fc_pd(11 downto 0), + fc_ph(7 downto 0) => fc_ph(7 downto 0), + fc_sel(2 downto 0) => fc_sel(2 downto 0), + gt_rx_phy_status_q => gt_rx_phy_status_q, + gt_rxelecidle_q => gt_rxelecidle_q, + m_axis_rx_tdata(63 downto 0) => m_axis_rx_tdata(63 downto 0), + m_axis_rx_tkeep(0) => m_axis_rx_tkeep(0), + m_axis_rx_tlast => m_axis_rx_tlast, + m_axis_rx_tready => m_axis_rx_tready, + m_axis_rx_tuser(12 downto 0) => m_axis_rx_tuser(12 downto 0), + m_axis_rx_tvalid_reg => m_axis_rx_tvalid, + \out\ => user_lnk_up_int, + pcie_drp_addr(8 downto 0) => pcie_drp_addr(8 downto 0), + pcie_drp_clk => pcie_drp_clk, + pcie_drp_di(15 downto 0) => pcie_drp_di(15 downto 0), + pcie_drp_do(15 downto 0) => pcie_drp_do(15 downto 0), + pcie_drp_en => pcie_drp_en, + pcie_drp_rdy => pcie_drp_rdy, + pcie_drp_we => pcie_drp_we, + pipe_pclk_in => pipe_pclk_in, + pipe_rx0_valid_gt => pipe_rx0_valid_gt, + pipe_rx1_valid_gt => pipe_rx1_valid_gt, + pipe_rx2_valid_gt => pipe_rx2_valid_gt, + pipe_rx3_valid_gt => pipe_rx3_valid_gt, + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]\(1 downto 0) => pipe_rx2_char_is_k_gt(1 downto 0), + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_0\(1 downto 0) => pipe_rx3_char_is_k_gt(1 downto 0), + \pipe_stages_1.pipe_rx_char_is_k_q_reg[1]_1\(1 downto 0) => pipe_rx0_char_is_k_gt(1 downto 0), + \pipe_stages_1.pipe_rx_data_q_reg[15]\(15 downto 0) => pipe_rx1_data_gt(15 downto 0), + \pipe_stages_1.pipe_rx_data_q_reg[15]_0\(15 downto 0) => pipe_rx2_data_gt(15 downto 0), + \pipe_stages_1.pipe_rx_data_q_reg[15]_1\(15 downto 0) => pipe_rx3_data_gt(15 downto 0), + \pipe_stages_1.pipe_rx_data_q_reg[15]_2\(15 downto 0) => pipe_rx0_data_gt(15 downto 0), + \pipe_stages_1.pipe_rx_elec_idle_q_reg\ => gt_top_i_n_6, + \pipe_stages_1.pipe_rx_elec_idle_q_reg_0\ => gt_top_i_n_8, + \pipe_stages_1.pipe_rx_elec_idle_q_reg_1\ => gt_top_i_n_10, + \pipe_stages_1.pipe_rx_phy_status_q_reg\ => gt_top_i_n_5, + \pipe_stages_1.pipe_rx_phy_status_q_reg_0\ => gt_top_i_n_7, + \pipe_stages_1.pipe_rx_phy_status_q_reg_1\ => gt_top_i_n_9, + \pipe_stages_1.pipe_rx_status_q_reg[2]\(2) => gt_top_i_n_78, + \pipe_stages_1.pipe_rx_status_q_reg[2]\(1) => gt_top_i_n_79, + \pipe_stages_1.pipe_rx_status_q_reg[2]\(0) => gt_top_i_n_80, + \pipe_stages_1.pipe_rx_status_q_reg[2]_0\(2) => gt_top_i_n_81, + \pipe_stages_1.pipe_rx_status_q_reg[2]_0\(1) => gt_top_i_n_82, + \pipe_stages_1.pipe_rx_status_q_reg[2]_0\(0) => gt_top_i_n_83, + \pipe_stages_1.pipe_rx_status_q_reg[2]_1\(2) => gt_top_i_n_84, + \pipe_stages_1.pipe_rx_status_q_reg[2]_1\(1) => gt_top_i_n_85, + \pipe_stages_1.pipe_rx_status_q_reg[2]_1\(0) => gt_top_i_n_86, + \pipe_stages_1.pipe_rx_status_q_reg[2]_2\(2) => gt_top_i_n_87, + \pipe_stages_1.pipe_rx_status_q_reg[2]_2\(1) => gt_top_i_n_88, + \pipe_stages_1.pipe_rx_status_q_reg[2]_2\(0) => gt_top_i_n_89, + \pipe_stages_1.pipe_tx_rate_q_reg\(0) => pipe_tx_rate_gt, + pipe_tx_deemph_gt => pipe_tx_deemph_gt, + pipe_tx_rcvr_det_gt => pipe_tx_rcvr_det_gt, + pipe_userclk1_in => pipe_userclk1_in, + pipe_userclk2_in => pipe_userclk2_in, + pl_directed_change_done => pl_directed_change_done, + pl_directed_link_auton => pl_directed_link_auton, + pl_directed_link_change(1 downto 0) => pl_directed_link_change(1 downto 0), + pl_directed_link_speed => pl_directed_link_speed, + pl_directed_link_width(1 downto 0) => pl_directed_link_width(1 downto 0), + pl_downstream_deemph_source => pl_downstream_deemph_source, + pl_initial_link_width(2 downto 0) => pl_initial_link_width(2 downto 0), + pl_lane_reversal_mode(1 downto 0) => pl_lane_reversal_mode(1 downto 0), + pl_link_gen2_cap => pl_link_gen2_cap, + pl_link_partner_gen2_supported => pl_link_partner_gen2_supported, + pl_link_upcfg_cap => pl_link_upcfg_cap, + pl_ltssm_state(5 downto 0) => \^pl_ltssm_state\(5 downto 0), + pl_phy_lnk_up => \^pl_phy_lnk_up\, + pl_received_hot_rst => pl_received_hot_rst_wire, + pl_rx_pm_state(1 downto 0) => pl_rx_pm_state(1 downto 0), + pl_sel_lnk_rate => pl_sel_lnk_rate, + pl_sel_lnk_width(1 downto 0) => pl_sel_lnk_width(1 downto 0), + pl_transmit_hot_rst => pl_transmit_hot_rst, + pl_tx_pm_state(2 downto 0) => pl_tx_pm_state(2 downto 0), + pl_upstream_prefer_deemph => pl_upstream_prefer_deemph, + rx_np_ok => rx_np_ok, + rx_np_req => rx_np_req, + s_axis_tx_tdata(63 downto 0) => s_axis_tx_tdata(63 downto 0), + s_axis_tx_tkeep(0) => s_axis_tx_tkeep(0), + s_axis_tx_tlast => s_axis_tx_tlast, + s_axis_tx_tuser(3 downto 0) => s_axis_tx_tuser(3 downto 0), + s_axis_tx_tvalid => s_axis_tx_tvalid, + src_in => pl_phy_lnk_up_wire, + sys_rst_n => gt_top_i_n_13, + \throttle_ctl_pipeline.reg_tkeep_reg[7]\ => \^user_reset_out\, + tready_thrtl_reg => s_axis_tx_tready, + trn_lnk_up => trn_lnk_up, + trn_tbuf_av(5 downto 0) => tx_buf_av(5 downto 0), + trn_tcfg_req => tx_cfg_req, + tx_cfg_gnt => tx_cfg_gnt, + tx_err_drop => tx_err_drop, + user_reset_int_reg => pcie_top_i_n_20 + ); +phy_lnk_up_cdc: entity work.\pcie_7x_0_xpm_cdc_single__2\ + port map ( + dest_clk => pipe_userclk2_in, + dest_out => pl_phy_lnk_up_sync, + src_clk => '0', + src_in => pl_phy_lnk_up_wire + ); +pl_phy_lnk_up_q_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => pl_phy_lnk_up_sync, + Q => \^pl_phy_lnk_up\, + R => gt_top_i_n_120 + ); +pl_received_hot_rst_cdc: entity work.pcie_7x_0_xpm_cdc_single + port map ( + dest_clk => pipe_userclk2_in, + dest_out => pl_received_hot_rst_sync, + src_clk => '0', + src_in => pl_received_hot_rst_wire + ); +pl_received_hot_rst_q_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => pl_received_hot_rst_sync, + Q => \^pl_received_hot_rst\, + R => gt_top_i_n_120 + ); +user_lnk_up_int_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => trn_lnk_up, + Q => user_lnk_up_int, + R => gt_top_i_n_120 + ); +user_lnk_up_mux_reg: unisim.vcomponents.FDRE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => user_lnk_up_int, + Q => user_lnk_up_mux, + R => gt_top_i_n_120 + ); +user_reset_int_reg: unisim.vcomponents.FDPE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => pcie_top_i_n_20, + PRE => sys_or_hot_rst, + Q => bridge_reset_int + ); +user_reset_out_i_1: unisim.vcomponents.LUT2 + generic map( + INIT => X"B" + ) + port map ( + I0 => \^pl_received_hot_rst\, + I1 => sys_rst_n, + O => sys_or_hot_rst + ); +user_reset_out_reg: unisim.vcomponents.FDPE + port map ( + C => pipe_userclk2_in, + CE => '1', + D => bridge_reset_int, + PRE => sys_or_hot_rst, + Q => \^user_reset_out\ + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0_pcie_7x_0_pcie2_top is + port ( + pci_exp_txn : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pci_exp_txp : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pci_exp_rxn : in STD_LOGIC_VECTOR ( 3 downto 0 ); + pci_exp_rxp : in STD_LOGIC_VECTOR ( 3 downto 0 ); + int_pclk_out_slave : out STD_LOGIC; + int_pipe_rxusrclk_out : out STD_LOGIC; + int_rxoutclk_out : out STD_LOGIC_VECTOR ( 3 downto 0 ); + int_dclk_out : out STD_LOGIC; + int_userclk1_out : out STD_LOGIC; + int_userclk2_out : out STD_LOGIC; + int_oobclk_out : out STD_LOGIC; + int_mmcm_lock_out : out STD_LOGIC; + int_qplllock_out : out STD_LOGIC_VECTOR ( 1 downto 0 ); + int_qplloutclk_out : out STD_LOGIC_VECTOR ( 1 downto 0 ); + int_qplloutrefclk_out : out STD_LOGIC_VECTOR ( 1 downto 0 ); + int_pclk_sel_slave : in STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_pclk_in : in STD_LOGIC; + pipe_rxusrclk_in : in STD_LOGIC; + pipe_rxoutclk_in : in STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_dclk_in : in STD_LOGIC; + pipe_userclk1_in : in STD_LOGIC; + pipe_userclk2_in : in STD_LOGIC; + pipe_oobclk_in : in STD_LOGIC; + pipe_mmcm_lock_in : in STD_LOGIC; + pipe_txoutclk_out : out STD_LOGIC; + pipe_rxoutclk_out : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_pclk_sel_out : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_gen3_out : out STD_LOGIC; + qpll_drp_crscode : in STD_LOGIC_VECTOR ( 11 downto 0 ); + qpll_drp_fsm : in STD_LOGIC_VECTOR ( 17 downto 0 ); + qpll_drp_done : in STD_LOGIC_VECTOR ( 1 downto 0 ); + qpll_drp_reset : in STD_LOGIC_VECTOR ( 1 downto 0 ); + qpll_qplllock : in STD_LOGIC_VECTOR ( 1 downto 0 ); + qpll_qplloutclk : in STD_LOGIC_VECTOR ( 1 downto 0 ); + qpll_qplloutrefclk : in STD_LOGIC_VECTOR ( 1 downto 0 ); + qpll_qplld : out STD_LOGIC; + qpll_qpllreset : out STD_LOGIC_VECTOR ( 1 downto 0 ); + qpll_drp_clk : out STD_LOGIC; + qpll_drp_rst_n : out STD_LOGIC; + qpll_drp_ovrd : out STD_LOGIC; + qpll_drp_gen3 : out STD_LOGIC; + qpll_drp_start : out STD_LOGIC; + user_clk_out : out STD_LOGIC; + user_reset_out : out STD_LOGIC; + user_lnk_up : out STD_LOGIC; + user_app_rdy : out STD_LOGIC; + tx_buf_av : out STD_LOGIC_VECTOR ( 5 downto 0 ); + tx_err_drop : out STD_LOGIC; + tx_cfg_req : out STD_LOGIC; + s_axis_tx_tdata : in STD_LOGIC_VECTOR ( 63 downto 0 ); + s_axis_tx_tvalid : in STD_LOGIC; + s_axis_tx_tready : out STD_LOGIC; + s_axis_tx_tkeep : in STD_LOGIC_VECTOR ( 7 downto 0 ); + s_axis_tx_tlast : in STD_LOGIC; + s_axis_tx_tuser : in STD_LOGIC_VECTOR ( 3 downto 0 ); + tx_cfg_gnt : in STD_LOGIC; + m_axis_rx_tdata : out STD_LOGIC_VECTOR ( 63 downto 0 ); + m_axis_rx_tvalid : out STD_LOGIC; + m_axis_rx_tready : in STD_LOGIC; + m_axis_rx_tkeep : out STD_LOGIC_VECTOR ( 7 downto 0 ); + m_axis_rx_tlast : out STD_LOGIC; + m_axis_rx_tuser : out STD_LOGIC_VECTOR ( 21 downto 0 ); + rx_np_ok : in STD_LOGIC; + rx_np_req : in STD_LOGIC; + fc_cpld : out STD_LOGIC_VECTOR ( 11 downto 0 ); + fc_cplh : out STD_LOGIC_VECTOR ( 7 downto 0 ); + fc_npd : out STD_LOGIC_VECTOR ( 11 downto 0 ); + fc_nph : out STD_LOGIC_VECTOR ( 7 downto 0 ); + fc_pd : out STD_LOGIC_VECTOR ( 11 downto 0 ); + fc_ph : out STD_LOGIC_VECTOR ( 7 downto 0 ); + fc_sel : in STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_mgmt_do : out STD_LOGIC_VECTOR ( 31 downto 0 ); + cfg_mgmt_rd_wr_done : out STD_LOGIC; + cfg_status : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_command : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_dstatus : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_dcommand : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_lstatus : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_lcommand : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_dcommand2 : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_pcie_link_state : out STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_pmcsr_pme_en : out STD_LOGIC; + cfg_pmcsr_powerstate : out STD_LOGIC_VECTOR ( 1 downto 0 ); + cfg_pmcsr_pme_status : out STD_LOGIC; + cfg_received_func_lvl_rst : out STD_LOGIC; + cfg_mgmt_di : in STD_LOGIC_VECTOR ( 31 downto 0 ); + cfg_mgmt_byte_en : in STD_LOGIC_VECTOR ( 3 downto 0 ); + cfg_mgmt_dwaddr : in STD_LOGIC_VECTOR ( 9 downto 0 ); + cfg_mgmt_wr_en : in STD_LOGIC; + cfg_mgmt_rd_en : in STD_LOGIC; + cfg_mgmt_wr_readonly : in STD_LOGIC; + cfg_err_ecrc : in STD_LOGIC; + cfg_err_ur : in STD_LOGIC; + cfg_err_cpl_timeout : in STD_LOGIC; + cfg_err_cpl_unexpect : in STD_LOGIC; + cfg_err_cpl_abort : in STD_LOGIC; + cfg_err_posted : in STD_LOGIC; + cfg_err_cor : in STD_LOGIC; + cfg_err_atomic_egress_blocked : in STD_LOGIC; + cfg_err_internal_cor : in STD_LOGIC; + cfg_err_malformed : in STD_LOGIC; + cfg_err_mc_blocked : in STD_LOGIC; + cfg_err_poisoned : in STD_LOGIC; + cfg_err_norecovery : in STD_LOGIC; + cfg_err_tlp_cpl_header : in STD_LOGIC_VECTOR ( 47 downto 0 ); + cfg_err_cpl_rdy : out STD_LOGIC; + cfg_err_locked : in STD_LOGIC; + cfg_err_acs : in STD_LOGIC; + cfg_err_internal_uncor : in STD_LOGIC; + cfg_trn_pending : in STD_LOGIC; + cfg_pm_halt_aspm_l0s : in STD_LOGIC; + cfg_pm_halt_aspm_l1 : in STD_LOGIC; + cfg_pm_force_state_en : in STD_LOGIC; + cfg_pm_force_state : in STD_LOGIC_VECTOR ( 1 downto 0 ); + cfg_dsn : in STD_LOGIC_VECTOR ( 63 downto 0 ); + cfg_msg_received : out STD_LOGIC; + cfg_msg_data : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_interrupt : in STD_LOGIC; + cfg_interrupt_rdy : out STD_LOGIC; + cfg_interrupt_assert : in STD_LOGIC; + cfg_interrupt_di : in STD_LOGIC_VECTOR ( 7 downto 0 ); + cfg_interrupt_do : out STD_LOGIC_VECTOR ( 7 downto 0 ); + cfg_interrupt_mmenable : out STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_interrupt_msienable : out STD_LOGIC; + cfg_interrupt_msixenable : out STD_LOGIC; + cfg_interrupt_msixfm : out STD_LOGIC; + cfg_interrupt_stat : in STD_LOGIC; + cfg_pciecap_interrupt_msgnum : in STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_to_turnoff : out STD_LOGIC; + cfg_turnoff_ok : in STD_LOGIC; + cfg_bus_number : out STD_LOGIC_VECTOR ( 7 downto 0 ); + cfg_device_number : out STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_function_number : out STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_pm_wake : in STD_LOGIC; + cfg_msg_received_pm_as_nak : out STD_LOGIC; + cfg_msg_received_setslotpowerlimit : out STD_LOGIC; + cfg_pm_send_pme_to : in STD_LOGIC; + cfg_ds_bus_number : in STD_LOGIC_VECTOR ( 7 downto 0 ); + cfg_ds_device_number : in STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_ds_function_number : in STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_mgmt_wr_rw1c_as_rw : in STD_LOGIC; + cfg_bridge_serr_en : out STD_LOGIC; + cfg_slot_control_electromech_il_ctl_pulse : out STD_LOGIC; + cfg_root_control_syserr_corr_err_en : out STD_LOGIC; + cfg_root_control_syserr_non_fatal_err_en : out STD_LOGIC; + cfg_root_control_syserr_fatal_err_en : out STD_LOGIC; + cfg_root_control_pme_int_en : out STD_LOGIC; + cfg_aer_rooterr_corr_err_reporting_en : out STD_LOGIC; + cfg_aer_rooterr_non_fatal_err_reporting_en : out STD_LOGIC; + cfg_aer_rooterr_fatal_err_reporting_en : out STD_LOGIC; + cfg_aer_rooterr_corr_err_received : out STD_LOGIC; + cfg_aer_rooterr_non_fatal_err_received : out STD_LOGIC; + cfg_aer_rooterr_fatal_err_received : out STD_LOGIC; + cfg_msg_received_err_cor : out STD_LOGIC; + cfg_msg_received_err_non_fatal : out STD_LOGIC; + cfg_msg_received_err_fatal : out STD_LOGIC; + cfg_msg_received_pm_pme : out STD_LOGIC; + cfg_msg_received_pme_to_ack : out STD_LOGIC; + cfg_msg_received_assert_int_a : out STD_LOGIC; + cfg_msg_received_assert_int_b : out STD_LOGIC; + cfg_msg_received_assert_int_c : out STD_LOGIC; + cfg_msg_received_assert_int_d : out STD_LOGIC; + cfg_msg_received_deassert_int_a : out STD_LOGIC; + cfg_msg_received_deassert_int_b : out STD_LOGIC; + cfg_msg_received_deassert_int_c : out STD_LOGIC; + cfg_msg_received_deassert_int_d : out STD_LOGIC; + pl_directed_link_change : in STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_directed_link_width : in STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_directed_link_speed : in STD_LOGIC; + pl_directed_link_auton : in STD_LOGIC; + pl_upstream_prefer_deemph : in STD_LOGIC; + pl_sel_lnk_rate : out STD_LOGIC; + pl_sel_lnk_width : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_ltssm_state : out STD_LOGIC_VECTOR ( 5 downto 0 ); + pl_lane_reversal_mode : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_phy_lnk_up : out STD_LOGIC; + pl_tx_pm_state : out STD_LOGIC_VECTOR ( 2 downto 0 ); + pl_rx_pm_state : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_link_upcfg_cap : out STD_LOGIC; + pl_link_gen2_cap : out STD_LOGIC; + pl_link_partner_gen2_supported : out STD_LOGIC; + pl_initial_link_width : out STD_LOGIC_VECTOR ( 2 downto 0 ); + pl_directed_change_done : out STD_LOGIC; + pl_received_hot_rst : out STD_LOGIC; + pl_transmit_hot_rst : in STD_LOGIC; + pl_downstream_deemph_source : in STD_LOGIC; + cfg_err_aer_headerlog : in STD_LOGIC_VECTOR ( 127 downto 0 ); + cfg_aer_interrupt_msgnum : in STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_err_aer_headerlog_set : out STD_LOGIC; + cfg_aer_ecrc_check_en : out STD_LOGIC; + cfg_aer_ecrc_gen_en : out STD_LOGIC; + cfg_vc_tcvc_map : out STD_LOGIC_VECTOR ( 6 downto 0 ); + pcie_drp_clk : in STD_LOGIC; + pcie_drp_en : in STD_LOGIC; + pcie_drp_we : in STD_LOGIC; + pcie_drp_addr : in STD_LOGIC_VECTOR ( 8 downto 0 ); + pcie_drp_di : in STD_LOGIC_VECTOR ( 15 downto 0 ); + pcie_drp_rdy : out STD_LOGIC; + pcie_drp_do : out STD_LOGIC_VECTOR ( 15 downto 0 ); + startup_eos_in : in STD_LOGIC; + startup_cfgclk : out STD_LOGIC; + startup_cfgmclk : out STD_LOGIC; + startup_eos : out STD_LOGIC; + startup_preq : out STD_LOGIC; + startup_clk : in STD_LOGIC; + startup_gsr : in STD_LOGIC; + startup_gts : in STD_LOGIC; + startup_keyclearb : in STD_LOGIC; + startup_pack : in STD_LOGIC; + startup_usrcclko : in STD_LOGIC; + startup_usrcclkts : in STD_LOGIC; + startup_usrdoneo : in STD_LOGIC; + startup_usrdonets : in STD_LOGIC; + icap_clk : in STD_LOGIC; + icap_csib : in STD_LOGIC; + icap_rdwrb : in STD_LOGIC; + icap_i : in STD_LOGIC_VECTOR ( 31 downto 0 ); + icap_o : out STD_LOGIC_VECTOR ( 31 downto 0 ); + pipe_txprbssel : in STD_LOGIC_VECTOR ( 2 downto 0 ); + pipe_rxprbssel : in STD_LOGIC_VECTOR ( 2 downto 0 ); + pipe_txprbsforceerr : in STD_LOGIC; + pipe_rxprbscntreset : in STD_LOGIC; + pipe_loopback : in STD_LOGIC_VECTOR ( 2 downto 0 ); + pipe_rxprbserr : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_txinhibit : in STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_rst_fsm : out STD_LOGIC_VECTOR ( 4 downto 0 ); + pipe_qrst_fsm : out STD_LOGIC_VECTOR ( 11 downto 0 ); + pipe_rate_fsm : out STD_LOGIC_VECTOR ( 19 downto 0 ); + pipe_sync_fsm_tx : out STD_LOGIC_VECTOR ( 23 downto 0 ); + pipe_sync_fsm_rx : out STD_LOGIC_VECTOR ( 27 downto 0 ); + pipe_drp_fsm : out STD_LOGIC_VECTOR ( 27 downto 0 ); + pipe_rst_idle : out STD_LOGIC; + pipe_qrst_idle : out STD_LOGIC; + pipe_rate_idle : out STD_LOGIC; + pipe_eyescandataerror : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_rxstatus : out STD_LOGIC_VECTOR ( 11 downto 0 ); + pipe_dmonitorout : out STD_LOGIC_VECTOR ( 59 downto 0 ); + pipe_cpll_lock : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_qpll_lock : out STD_LOGIC_VECTOR ( 0 to 0 ); + pipe_rxpmaresetdone : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_rxbufstatus : out STD_LOGIC_VECTOR ( 11 downto 0 ); + pipe_txphaligndone : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_txphinitdone : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_txdlysresetdone : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_rxphaligndone : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_rxdlysresetdone : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_rxsyncdone : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_rxdisperr : out STD_LOGIC_VECTOR ( 31 downto 0 ); + pipe_rxnotintable : out STD_LOGIC_VECTOR ( 31 downto 0 ); + pipe_rxcommadet : out STD_LOGIC_VECTOR ( 3 downto 0 ); + gt_ch_drp_rdy : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_debug_0 : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_debug_1 : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_debug_2 : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_debug_3 : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_debug_4 : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_debug_5 : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_debug_6 : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_debug_7 : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_debug_8 : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_debug_9 : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_debug : out STD_LOGIC_VECTOR ( 31 downto 0 ); + ext_ch_gt_drpclk : out STD_LOGIC; + ext_ch_gt_drpaddr : in STD_LOGIC_VECTOR ( 35 downto 0 ); + ext_ch_gt_drpen : in STD_LOGIC_VECTOR ( 3 downto 0 ); + ext_ch_gt_drpdi : in STD_LOGIC_VECTOR ( 63 downto 0 ); + ext_ch_gt_drpwe : in STD_LOGIC_VECTOR ( 3 downto 0 ); + ext_ch_gt_drpdo : out STD_LOGIC_VECTOR ( 63 downto 0 ); + ext_ch_gt_drprdy : out STD_LOGIC_VECTOR ( 3 downto 0 ); + common_commands_in : in STD_LOGIC_VECTOR ( 11 downto 0 ); + pipe_rx_0_sigs : in STD_LOGIC_VECTOR ( 24 downto 0 ); + pipe_rx_1_sigs : in STD_LOGIC_VECTOR ( 24 downto 0 ); + pipe_rx_2_sigs : in STD_LOGIC_VECTOR ( 24 downto 0 ); + pipe_rx_3_sigs : in STD_LOGIC_VECTOR ( 24 downto 0 ); + pipe_rx_4_sigs : in STD_LOGIC_VECTOR ( 24 downto 0 ); + pipe_rx_5_sigs : in STD_LOGIC_VECTOR ( 24 downto 0 ); + pipe_rx_6_sigs : in STD_LOGIC_VECTOR ( 24 downto 0 ); + pipe_rx_7_sigs : in STD_LOGIC_VECTOR ( 24 downto 0 ); + common_commands_out : out STD_LOGIC_VECTOR ( 11 downto 0 ); + pipe_tx_0_sigs : out STD_LOGIC_VECTOR ( 24 downto 0 ); + pipe_tx_1_sigs : out STD_LOGIC_VECTOR ( 24 downto 0 ); + pipe_tx_2_sigs : out STD_LOGIC_VECTOR ( 24 downto 0 ); + pipe_tx_3_sigs : out STD_LOGIC_VECTOR ( 24 downto 0 ); + pipe_tx_4_sigs : out STD_LOGIC_VECTOR ( 24 downto 0 ); + pipe_tx_5_sigs : out STD_LOGIC_VECTOR ( 24 downto 0 ); + pipe_tx_6_sigs : out STD_LOGIC_VECTOR ( 24 downto 0 ); + pipe_tx_7_sigs : out STD_LOGIC_VECTOR ( 24 downto 0 ); + pipe_mmcm_rst_n : in STD_LOGIC; + sys_clk : in STD_LOGIC; + sys_rst_n : in STD_LOGIC + ); + attribute CFG_CTL_IF : string; + attribute CFG_CTL_IF of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute CFG_FC_IF : string; + attribute CFG_FC_IF of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute CFG_MGMT_IF : string; + attribute CFG_MGMT_IF of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute CFG_STATUS_IF : string; + attribute CFG_STATUS_IF of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute C_DATA_WIDTH : integer; + attribute C_DATA_WIDTH of pcie_7x_0_pcie_7x_0_pcie2_top : entity is 64; + attribute DowngradeIPIdentifiedWarnings : string; + attribute DowngradeIPIdentifiedWarnings of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "yes"; + attribute ENABLE_JTAG_DBG : string; + attribute ENABLE_JTAG_DBG of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute ERR_REPORTING_IF : string; + attribute ERR_REPORTING_IF of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute EXT_CH_GT_DRP : string; + attribute EXT_CH_GT_DRP of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute EXT_PIPE_INTERFACE : string; + attribute EXT_PIPE_INTERFACE of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute EXT_STARTUP_PRIMITIVE : string; + attribute EXT_STARTUP_PRIMITIVE of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute KEEP_WIDTH : integer; + attribute KEEP_WIDTH of pcie_7x_0_pcie_7x_0_pcie2_top : entity is 8; + attribute LINK_CAP_MAX_LINK_WIDTH : integer; + attribute LINK_CAP_MAX_LINK_WIDTH of pcie_7x_0_pcie_7x_0_pcie2_top : entity is 4; + attribute PCIE_ASYNC_EN : string; + attribute PCIE_ASYNC_EN of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute PCIE_EXT_CLK : string; + attribute PCIE_EXT_CLK of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute PCIE_EXT_GT_COMMON : string; + attribute PCIE_EXT_GT_COMMON of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute PIPE_SIM : string; + attribute PIPE_SIM of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute PL_INTERFACE : string; + attribute PL_INTERFACE of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute RCV_MSG_IF : string; + attribute RCV_MSG_IF of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute REDUCE_OOB_FREQ : string; + attribute REDUCE_OOB_FREQ of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute SHARED_LOGIC_IN_CORE : string; + attribute SHARED_LOGIC_IN_CORE of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute TRANSCEIVER_CTRL_STATUS_PORTS : string; + attribute TRANSCEIVER_CTRL_STATUS_PORTS of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute bar_0 : string; + attribute bar_0 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FFFF0000"; + attribute bar_1 : string; + attribute bar_1 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00000000"; + attribute bar_2 : string; + attribute bar_2 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00000000"; + attribute bar_3 : string; + attribute bar_3 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00000000"; + attribute bar_4 : string; + attribute bar_4 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00000000"; + attribute bar_5 : string; + attribute bar_5 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00000000"; + attribute bram_lat : string; + attribute bram_lat of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_aer_base_ptr : string; + attribute c_aer_base_ptr of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "000"; + attribute c_aer_cap_ecrc_check_capable : string; + attribute c_aer_cap_ecrc_check_capable of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_aer_cap_ecrc_gen_capable : string; + attribute c_aer_cap_ecrc_gen_capable of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_aer_cap_multiheader : string; + attribute c_aer_cap_multiheader of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_aer_cap_nextptr : string; + attribute c_aer_cap_nextptr of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "000"; + attribute c_aer_cap_on : string; + attribute c_aer_cap_on of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_aer_cap_optional_err_support : string; + attribute c_aer_cap_optional_err_support of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "000000"; + attribute c_aer_cap_permit_rooterr_update : string; + attribute c_aer_cap_permit_rooterr_update of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_buf_opt_bma : string; + attribute c_buf_opt_bma of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute c_component_name : string; + attribute c_component_name of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "pcie_7x_0"; + attribute c_cpl_inf : string; + attribute c_cpl_inf of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute c_cpl_infinite : string; + attribute c_cpl_infinite of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute c_cpl_timeout_disable_sup : string; + attribute c_cpl_timeout_disable_sup of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_cpl_timeout_range : string; + attribute c_cpl_timeout_range of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0010"; + attribute c_cpl_timeout_ranges_sup : string; + attribute c_cpl_timeout_ranges_sup of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "2"; + attribute c_d1_support : string; + attribute c_d1_support of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_d2_support : string; + attribute c_d2_support of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_de_emph : string; + attribute c_de_emph of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_dev_cap2_ari_forwarding_supported : string; + attribute c_dev_cap2_ari_forwarding_supported of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_dev_cap2_atomicop32_completer_supported : string; + attribute c_dev_cap2_atomicop32_completer_supported of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_dev_cap2_atomicop64_completer_supported : string; + attribute c_dev_cap2_atomicop64_completer_supported of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_dev_cap2_atomicop_routing_supported : string; + attribute c_dev_cap2_atomicop_routing_supported of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_dev_cap2_cas128_completer_supported : string; + attribute c_dev_cap2_cas128_completer_supported of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_dev_cap2_tph_completer_supported : string; + attribute c_dev_cap2_tph_completer_supported of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00"; + attribute c_dev_control_ext_tag_default : string; + attribute c_dev_control_ext_tag_default of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_dev_port_type : string; + attribute c_dev_port_type of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_dis_lane_reverse : string; + attribute c_dis_lane_reverse of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute c_disable_rx_poisoned_resp : string; + attribute c_disable_rx_poisoned_resp of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_disable_scrambling : string; + attribute c_disable_scrambling of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_disable_tx_aspm_l0s : string; + attribute c_disable_tx_aspm_l0s of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_dll_lnk_actv_cap : string; + attribute c_dll_lnk_actv_cap of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_dsi_bool : string; + attribute c_dsi_bool of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_dsn_base_ptr : string; + attribute c_dsn_base_ptr of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "100"; + attribute c_dsn_cap_enabled : string; + attribute c_dsn_cap_enabled of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute c_dsn_next_ptr : string; + attribute c_dsn_next_ptr of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "000"; + attribute c_enable_msg_route : string; + attribute c_enable_msg_route of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00000000000"; + attribute c_ep_l0s_accpt_lat : string; + attribute c_ep_l0s_accpt_lat of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_ep_l1_accpt_lat : string; + attribute c_ep_l1_accpt_lat of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "7"; + attribute c_ext_pci_cfg_space_addr : string; + attribute c_ext_pci_cfg_space_addr of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "3FF"; + attribute c_external_clocking : string; + attribute c_external_clocking of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute c_fc_cpld : string; + attribute c_fc_cpld of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "973"; + attribute c_fc_cplh : string; + attribute c_fc_cplh of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "36"; + attribute c_fc_npd : string; + attribute c_fc_npd of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "24"; + attribute c_fc_nph : string; + attribute c_fc_nph of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "12"; + attribute c_fc_pd : string; + attribute c_fc_pd of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "949"; + attribute c_fc_ph : string; + attribute c_fc_ph of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "32"; + attribute c_gen1 : string; + attribute c_gen1 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "1'b1"; + attribute c_header_type : string; + attribute c_header_type of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00"; + attribute c_hw_auton_spd_disable : string; + attribute c_hw_auton_spd_disable of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_int_width : integer; + attribute c_int_width of pcie_7x_0_pcie_7x_0_pcie2_top : entity is 64; + attribute c_last_cfg_dw : string; + attribute c_last_cfg_dw of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "10C"; + attribute c_link_cap_aspm_optionality : string; + attribute c_link_cap_aspm_optionality of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_ll_ack_timeout : string; + attribute c_ll_ack_timeout of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0000"; + attribute c_ll_ack_timeout_enable : string; + attribute c_ll_ack_timeout_enable of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_ll_ack_timeout_function : string; + attribute c_ll_ack_timeout_function of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_ll_replay_timeout : string; + attribute c_ll_replay_timeout of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0000"; + attribute c_ll_replay_timeout_enable : string; + attribute c_ll_replay_timeout_enable of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_ll_replay_timeout_func : string; + attribute c_ll_replay_timeout_func of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "1"; + attribute c_lnk_bndwdt_notif : string; + attribute c_lnk_bndwdt_notif of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_msi : string; + attribute c_msi of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_msi_64b_addr : string; + attribute c_msi_64b_addr of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute c_msi_cap_on : string; + attribute c_msi_cap_on of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_msi_mult_msg_extn : string; + attribute c_msi_mult_msg_extn of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_msi_per_vctr_mask_cap : string; + attribute c_msi_per_vctr_mask_cap of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_msix_cap_on : string; + attribute c_msix_cap_on of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_msix_next_ptr : string; + attribute c_msix_next_ptr of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00"; + attribute c_msix_pba_bir : string; + attribute c_msix_pba_bir of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_msix_pba_offset : string; + attribute c_msix_pba_offset of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_msix_table_bir : string; + attribute c_msix_table_bir of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_msix_table_offset : string; + attribute c_msix_table_offset of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_msix_table_size : string; + attribute c_msix_table_size of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "000"; + attribute c_pci_cfg_space_addr : string; + attribute c_pci_cfg_space_addr of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "3F"; + attribute c_pcie_blk_locn : string; + attribute c_pcie_blk_locn of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_pcie_cap_next_ptr : string; + attribute c_pcie_cap_next_ptr of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00"; + attribute c_pcie_cap_slot_implemented : string; + attribute c_pcie_cap_slot_implemented of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_pcie_dbg_ports : string; + attribute c_pcie_dbg_ports of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute c_pcie_fast_config : integer; + attribute c_pcie_fast_config of pcie_7x_0_pcie_7x_0_pcie2_top : entity is 0; + attribute c_perf_level_high : string; + attribute c_perf_level_high of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute c_phantom_functions : string; + attribute c_phantom_functions of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_pm_cap_next_ptr : string; + attribute c_pm_cap_next_ptr of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "60"; + attribute c_pme_support : string; + attribute c_pme_support of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0F"; + attribute c_rbar_base_ptr : string; + attribute c_rbar_base_ptr of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "000"; + attribute c_rbar_cap_control_encodedbar0 : string; + attribute c_rbar_cap_control_encodedbar0 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00"; + attribute c_rbar_cap_control_encodedbar1 : string; + attribute c_rbar_cap_control_encodedbar1 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00"; + attribute c_rbar_cap_control_encodedbar2 : string; + attribute c_rbar_cap_control_encodedbar2 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00"; + attribute c_rbar_cap_control_encodedbar3 : string; + attribute c_rbar_cap_control_encodedbar3 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00"; + attribute c_rbar_cap_control_encodedbar4 : string; + attribute c_rbar_cap_control_encodedbar4 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00"; + attribute c_rbar_cap_control_encodedbar5 : string; + attribute c_rbar_cap_control_encodedbar5 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00"; + attribute c_rbar_cap_index0 : string; + attribute c_rbar_cap_index0 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_rbar_cap_index1 : string; + attribute c_rbar_cap_index1 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_rbar_cap_index2 : string; + attribute c_rbar_cap_index2 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_rbar_cap_index3 : string; + attribute c_rbar_cap_index3 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_rbar_cap_index4 : string; + attribute c_rbar_cap_index4 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_rbar_cap_index5 : string; + attribute c_rbar_cap_index5 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_rbar_cap_nextptr : string; + attribute c_rbar_cap_nextptr of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "000"; + attribute c_rbar_cap_on : string; + attribute c_rbar_cap_on of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_rbar_cap_sup0 : string; + attribute c_rbar_cap_sup0 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00001"; + attribute c_rbar_cap_sup1 : string; + attribute c_rbar_cap_sup1 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00001"; + attribute c_rbar_cap_sup2 : string; + attribute c_rbar_cap_sup2 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00001"; + attribute c_rbar_cap_sup3 : string; + attribute c_rbar_cap_sup3 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00001"; + attribute c_rbar_cap_sup4 : string; + attribute c_rbar_cap_sup4 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00001"; + attribute c_rbar_cap_sup5 : string; + attribute c_rbar_cap_sup5 of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00001"; + attribute c_rbar_num : string; + attribute c_rbar_num of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_rcb : string; + attribute c_rcb of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_recrc_check : string; + attribute c_recrc_check of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_recrc_check_trim : string; + attribute c_recrc_check_trim of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_rev_gt_order : string; + attribute c_rev_gt_order of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_root_cap_crs : string; + attribute c_root_cap_crs of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_rx_raddr_lat : string; + attribute c_rx_raddr_lat of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_rx_ram_limit : string; + attribute c_rx_ram_limit of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FFF"; + attribute c_rx_rdata_lat : string; + attribute c_rx_rdata_lat of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "2"; + attribute c_rx_write_lat : string; + attribute c_rx_write_lat of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_silicon_rev : string; + attribute c_silicon_rev of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "2"; + attribute c_slot_cap_attn_butn : string; + attribute c_slot_cap_attn_butn of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_slot_cap_attn_ind : string; + attribute c_slot_cap_attn_ind of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_slot_cap_elec_interlock : string; + attribute c_slot_cap_elec_interlock of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_slot_cap_hotplug_cap : string; + attribute c_slot_cap_hotplug_cap of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_slot_cap_hotplug_surprise : string; + attribute c_slot_cap_hotplug_surprise of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_slot_cap_mrl : string; + attribute c_slot_cap_mrl of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_slot_cap_no_cmd_comp_sup : string; + attribute c_slot_cap_no_cmd_comp_sup of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_slot_cap_physical_slot_num : string; + attribute c_slot_cap_physical_slot_num of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_slot_cap_pwr_ctrl : string; + attribute c_slot_cap_pwr_ctrl of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_slot_cap_pwr_ind : string; + attribute c_slot_cap_pwr_ind of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_slot_cap_pwr_limit_scale : string; + attribute c_slot_cap_pwr_limit_scale of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_slot_cap_pwr_limit_value : string; + attribute c_slot_cap_pwr_limit_value of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_surprise_dn_err_cap : string; + attribute c_surprise_dn_err_cap of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_trgt_lnk_spd : string; + attribute c_trgt_lnk_spd of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "2"; + attribute c_trn_np_fc : string; + attribute c_trn_np_fc of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute c_tx_last_tlp : string; + attribute c_tx_last_tlp of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "30"; + attribute c_tx_raddr_lat : string; + attribute c_tx_raddr_lat of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_tx_rdata_lat : string; + attribute c_tx_rdata_lat of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "2"; + attribute c_tx_write_lat : string; + attribute c_tx_write_lat of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute c_upconfig_capable : string; + attribute c_upconfig_capable of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute c_upstream_facing : string; + attribute c_upstream_facing of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute c_ur_atomic : string; + attribute c_ur_atomic of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_ur_inv_req : string; + attribute c_ur_inv_req of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute c_ur_prs_response : string; + attribute c_ur_prs_response of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute c_vc_base_ptr : string; + attribute c_vc_base_ptr of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "000"; + attribute c_vc_cap_enabled : string; + attribute c_vc_cap_enabled of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_vc_cap_reject_snoop : string; + attribute c_vc_cap_reject_snoop of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_vc_next_ptr : string; + attribute c_vc_next_ptr of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "000"; + attribute c_vsec_base_ptr : string; + attribute c_vsec_base_ptr of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "000"; + attribute c_vsec_cap_enabled : string; + attribute c_vsec_cap_enabled of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute c_vsec_next_ptr : string; + attribute c_vsec_next_ptr of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "000"; + attribute c_xlnx_ref_board : string; + attribute c_xlnx_ref_board of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "ZC706"; + attribute cap_ver : string; + attribute cap_ver of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "2"; + attribute cardbus_cis_ptr : string; + attribute cardbus_cis_ptr of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00000000"; + attribute class_code : string; + attribute class_code of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "050000"; + attribute cmps : string; + attribute cmps of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "3"; + attribute con_scl_fctr_d0_state : string; + attribute con_scl_fctr_d0_state of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute con_scl_fctr_d1_state : string; + attribute con_scl_fctr_d1_state of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute con_scl_fctr_d2_state : string; + attribute con_scl_fctr_d2_state of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute con_scl_fctr_d3_state : string; + attribute con_scl_fctr_d3_state of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute cost_table : integer; + attribute cost_table of pcie_7x_0_pcie_7x_0_pcie2_top : entity is 1; + attribute d1_sup : string; + attribute d1_sup of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute d2_sup : string; + attribute d2_sup of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute dev_id : string; + attribute dev_id of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "7024"; + attribute dev_port_type : string; + attribute dev_port_type of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0000"; + attribute dis_scl_fctr_d0_state : string; + attribute dis_scl_fctr_d0_state of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute dis_scl_fctr_d1_state : string; + attribute dis_scl_fctr_d1_state of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute dis_scl_fctr_d2_state : string; + attribute dis_scl_fctr_d2_state of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute dis_scl_fctr_d3_state : string; + attribute dis_scl_fctr_d3_state of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute dsi : string; + attribute dsi of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute ep_l0s_accpt_lat : string; + attribute ep_l0s_accpt_lat of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "000"; + attribute ep_l1_accpt_lat : string; + attribute ep_l1_accpt_lat of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "111"; + attribute ext_tag_fld_sup : string; + attribute ext_tag_fld_sup of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "FALSE"; + attribute int_pin : string; + attribute int_pin of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "1"; + attribute intx : string; + attribute intx of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute max_lnk_spd : string; + attribute max_lnk_spd of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "2"; + attribute max_lnk_wdt : string; + attribute max_lnk_wdt of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "000100"; + attribute mps : string; + attribute mps of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "011"; + attribute no_soft_rst : string; + attribute no_soft_rst of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute pci_exp_int_freq : integer; + attribute pci_exp_int_freq of pcie_7x_0_pcie_7x_0_pcie2_top : entity is 3; + attribute pci_exp_ref_freq : string; + attribute pci_exp_ref_freq of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0"; + attribute phantm_func_sup : string; + attribute phantm_func_sup of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00"; + attribute pme_sup : string; + attribute pme_sup of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0F"; + attribute pwr_con_d0_state : string; + attribute pwr_con_d0_state of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00"; + attribute pwr_con_d1_state : string; + attribute pwr_con_d1_state of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00"; + attribute pwr_con_d2_state : string; + attribute pwr_con_d2_state of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00"; + attribute pwr_con_d3_state : string; + attribute pwr_con_d3_state of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00"; + attribute pwr_dis_d0_state : string; + attribute pwr_dis_d0_state of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00"; + attribute pwr_dis_d1_state : string; + attribute pwr_dis_d1_state of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00"; + attribute pwr_dis_d2_state : string; + attribute pwr_dis_d2_state of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00"; + attribute pwr_dis_d3_state : string; + attribute pwr_dis_d3_state of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00"; + attribute rev_id : string; + attribute rev_id of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00"; + attribute slot_clk : string; + attribute slot_clk of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "TRUE"; + attribute subsys_id : string; + attribute subsys_id of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "0007"; + attribute subsys_ven_id : string; + attribute subsys_ven_id of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "10EE"; + attribute ven_id : string; + attribute ven_id of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "10EE"; + attribute xrom_bar : string; + attribute xrom_bar of pcie_7x_0_pcie_7x_0_pcie2_top : entity is "00000000"; +end pcie_7x_0_pcie_7x_0_pcie2_top; + +architecture STRUCTURE of pcie_7x_0_pcie_7x_0_pcie2_top is + signal \\ : STD_LOGIC; + signal \^cfg_command\ : STD_LOGIC_VECTOR ( 10 downto 0 ); + signal \^cfg_dcommand\ : STD_LOGIC_VECTOR ( 14 downto 0 ); + signal \^cfg_dcommand2\ : STD_LOGIC_VECTOR ( 11 downto 0 ); + signal \^cfg_dstatus\ : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal \^cfg_lcommand\ : STD_LOGIC_VECTOR ( 11 downto 0 ); + signal \^cfg_lstatus\ : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal \^cfg_trn_pending\ : STD_LOGIC; + signal \^m_axis_rx_tkeep\ : STD_LOGIC_VECTOR ( 6 to 6 ); + signal \^m_axis_rx_tuser\ : STD_LOGIC_VECTOR ( 21 downto 0 ); + signal \^pipe_userclk2_in\ : STD_LOGIC; +begin + \^cfg_trn_pending\ <= cfg_trn_pending; + \^pipe_userclk2_in\ <= pipe_userclk2_in; + cfg_command(15) <= \\; + cfg_command(14) <= \\; + cfg_command(13) <= \\; + cfg_command(12) <= \\; + cfg_command(11) <= \\; + cfg_command(10) <= \^cfg_command\(10); + cfg_command(9) <= \\; + cfg_command(8) <= \^cfg_command\(8); + cfg_command(7) <= \\; + cfg_command(6) <= \\; + cfg_command(5) <= \\; + cfg_command(4) <= \\; + cfg_command(3) <= \\; + cfg_command(2 downto 0) <= \^cfg_command\(2 downto 0); + cfg_dcommand(15) <= \\; + cfg_dcommand(14 downto 0) <= \^cfg_dcommand\(14 downto 0); + cfg_dcommand2(15) <= \\; + cfg_dcommand2(14) <= \\; + cfg_dcommand2(13) <= \\; + cfg_dcommand2(12) <= \\; + cfg_dcommand2(11 downto 0) <= \^cfg_dcommand2\(11 downto 0); + cfg_dstatus(15) <= \\; + cfg_dstatus(14) <= \\; + cfg_dstatus(13) <= \\; + cfg_dstatus(12) <= \\; + cfg_dstatus(11) <= \\; + cfg_dstatus(10) <= \\; + cfg_dstatus(9) <= \\; + cfg_dstatus(8) <= \\; + cfg_dstatus(7) <= \\; + cfg_dstatus(6) <= \\; + cfg_dstatus(5) <= \^cfg_trn_pending\; + cfg_dstatus(4) <= \\; + cfg_dstatus(3 downto 0) <= \^cfg_dstatus\(3 downto 0); + cfg_lcommand(15) <= \\; + cfg_lcommand(14) <= \\; + cfg_lcommand(13) <= \\; + cfg_lcommand(12) <= \\; + cfg_lcommand(11 downto 3) <= \^cfg_lcommand\(11 downto 3); + cfg_lcommand(2) <= \\; + cfg_lcommand(1 downto 0) <= \^cfg_lcommand\(1 downto 0); + cfg_lstatus(15 downto 13) <= \^cfg_lstatus\(15 downto 13); + cfg_lstatus(12) <= \\; + cfg_lstatus(11) <= \^cfg_lstatus\(11); + cfg_lstatus(10) <= \\; + cfg_lstatus(9) <= \\; + cfg_lstatus(8) <= \\; + cfg_lstatus(7 downto 4) <= \^cfg_lstatus\(7 downto 4); + cfg_lstatus(3) <= \\; + cfg_lstatus(2) <= \\; + cfg_lstatus(1 downto 0) <= \^cfg_lstatus\(1 downto 0); + cfg_status(15) <= \\; + cfg_status(14) <= \\; + cfg_status(13) <= \\; + cfg_status(12) <= \\; + cfg_status(11) <= \\; + cfg_status(10) <= \\; + cfg_status(9) <= \\; + cfg_status(8) <= \\; + cfg_status(7) <= \\; + cfg_status(6) <= \\; + cfg_status(5) <= \\; + cfg_status(4) <= \\; + cfg_status(3) <= \\; + cfg_status(2) <= \\; + cfg_status(1) <= \\; + cfg_status(0) <= \\; + common_commands_out(11) <= \\; + common_commands_out(10) <= \\; + common_commands_out(9) <= \\; + common_commands_out(8) <= \\; + common_commands_out(7) <= \\; + common_commands_out(6) <= \\; + common_commands_out(5) <= \\; + common_commands_out(4) <= \\; + common_commands_out(3) <= \\; + common_commands_out(2) <= \\; + common_commands_out(1) <= \\; + common_commands_out(0) <= \\; + ext_ch_gt_drpclk <= \\; + ext_ch_gt_drpdo(63) <= \\; + ext_ch_gt_drpdo(62) <= \\; + ext_ch_gt_drpdo(61) <= \\; + ext_ch_gt_drpdo(60) <= \\; + ext_ch_gt_drpdo(59) <= \\; + ext_ch_gt_drpdo(58) <= \\; + ext_ch_gt_drpdo(57) <= \\; + ext_ch_gt_drpdo(56) <= \\; + ext_ch_gt_drpdo(55) <= \\; + ext_ch_gt_drpdo(54) <= \\; + ext_ch_gt_drpdo(53) <= \\; + ext_ch_gt_drpdo(52) <= \\; + ext_ch_gt_drpdo(51) <= \\; + ext_ch_gt_drpdo(50) <= \\; + ext_ch_gt_drpdo(49) <= \\; + ext_ch_gt_drpdo(48) <= \\; + ext_ch_gt_drpdo(47) <= \\; + ext_ch_gt_drpdo(46) <= \\; + ext_ch_gt_drpdo(45) <= \\; + ext_ch_gt_drpdo(44) <= \\; + ext_ch_gt_drpdo(43) <= \\; + ext_ch_gt_drpdo(42) <= \\; + ext_ch_gt_drpdo(41) <= \\; + ext_ch_gt_drpdo(40) <= \\; + ext_ch_gt_drpdo(39) <= \\; + ext_ch_gt_drpdo(38) <= \\; + ext_ch_gt_drpdo(37) <= \\; + ext_ch_gt_drpdo(36) <= \\; + ext_ch_gt_drpdo(35) <= \\; + ext_ch_gt_drpdo(34) <= \\; + ext_ch_gt_drpdo(33) <= \\; + ext_ch_gt_drpdo(32) <= \\; + ext_ch_gt_drpdo(31) <= \\; + ext_ch_gt_drpdo(30) <= \\; + ext_ch_gt_drpdo(29) <= \\; + ext_ch_gt_drpdo(28) <= \\; + ext_ch_gt_drpdo(27) <= \\; + ext_ch_gt_drpdo(26) <= \\; + ext_ch_gt_drpdo(25) <= \\; + ext_ch_gt_drpdo(24) <= \\; + ext_ch_gt_drpdo(23) <= \\; + ext_ch_gt_drpdo(22) <= \\; + ext_ch_gt_drpdo(21) <= \\; + ext_ch_gt_drpdo(20) <= \\; + ext_ch_gt_drpdo(19) <= \\; + ext_ch_gt_drpdo(18) <= \\; + ext_ch_gt_drpdo(17) <= \\; + ext_ch_gt_drpdo(16) <= \\; + ext_ch_gt_drpdo(15) <= \\; + ext_ch_gt_drpdo(14) <= \\; + ext_ch_gt_drpdo(13) <= \\; + ext_ch_gt_drpdo(12) <= \\; + ext_ch_gt_drpdo(11) <= \\; + ext_ch_gt_drpdo(10) <= \\; + ext_ch_gt_drpdo(9) <= \\; + ext_ch_gt_drpdo(8) <= \\; + ext_ch_gt_drpdo(7) <= \\; + ext_ch_gt_drpdo(6) <= \\; + ext_ch_gt_drpdo(5) <= \\; + ext_ch_gt_drpdo(4) <= \\; + ext_ch_gt_drpdo(3) <= \\; + ext_ch_gt_drpdo(2) <= \\; + ext_ch_gt_drpdo(1) <= \\; + ext_ch_gt_drpdo(0) <= \\; + ext_ch_gt_drprdy(3) <= \\; + ext_ch_gt_drprdy(2) <= \\; + ext_ch_gt_drprdy(1) <= \\; + ext_ch_gt_drprdy(0) <= \\; + gt_ch_drp_rdy(3) <= \\; + gt_ch_drp_rdy(2) <= \\; + gt_ch_drp_rdy(1) <= \\; + gt_ch_drp_rdy(0) <= \\; + icap_o(31) <= \\; + icap_o(30) <= \\; + icap_o(29) <= \\; + icap_o(28) <= \\; + icap_o(27) <= \\; + icap_o(26) <= \\; + icap_o(25) <= \\; + icap_o(24) <= \\; + icap_o(23) <= \\; + icap_o(22) <= \\; + icap_o(21) <= \\; + icap_o(20) <= \\; + icap_o(19) <= \\; + icap_o(18) <= \\; + icap_o(17) <= \\; + icap_o(16) <= \\; + icap_o(15) <= \\; + icap_o(14) <= \\; + icap_o(13) <= \\; + icap_o(12) <= \\; + icap_o(11) <= \\; + icap_o(10) <= \\; + icap_o(9) <= \\; + icap_o(8) <= \\; + icap_o(7) <= \\; + icap_o(6) <= \\; + icap_o(5) <= \\; + icap_o(4) <= \\; + icap_o(3) <= \\; + icap_o(2) <= \\; + icap_o(1) <= \\; + icap_o(0) <= \\; + int_dclk_out <= \\; + int_mmcm_lock_out <= \\; + int_oobclk_out <= \\; + int_pclk_out_slave <= \\; + int_pipe_rxusrclk_out <= \\; + int_qplllock_out(1) <= \\; + int_qplllock_out(0) <= \\; + int_qplloutclk_out(1) <= \\; + int_qplloutclk_out(0) <= \\; + int_qplloutrefclk_out(1) <= \\; + int_qplloutrefclk_out(0) <= \\; + int_rxoutclk_out(3) <= \\; + int_rxoutclk_out(2) <= \\; + int_rxoutclk_out(1) <= \\; + int_rxoutclk_out(0) <= \\; + int_userclk1_out <= \\; + int_userclk2_out <= \\; + m_axis_rx_tkeep(7) <= \^m_axis_rx_tkeep\(6); + m_axis_rx_tkeep(6) <= \^m_axis_rx_tkeep\(6); + m_axis_rx_tkeep(5) <= \^m_axis_rx_tkeep\(6); + m_axis_rx_tkeep(4) <= \^m_axis_rx_tkeep\(6); + m_axis_rx_tkeep(3) <= \\; + m_axis_rx_tkeep(2) <= \\; + m_axis_rx_tkeep(1) <= \\; + m_axis_rx_tkeep(0) <= \\; + m_axis_rx_tuser(21) <= \^m_axis_rx_tuser\(21); + m_axis_rx_tuser(20) <= \\; + m_axis_rx_tuser(19) <= \^m_axis_rx_tuser\(19); + m_axis_rx_tuser(18) <= \^m_axis_rx_tuser\(17); + m_axis_rx_tuser(17) <= \^m_axis_rx_tuser\(17); + m_axis_rx_tuser(16) <= \\; + m_axis_rx_tuser(15) <= \\; + m_axis_rx_tuser(14) <= \^m_axis_rx_tuser\(14); + m_axis_rx_tuser(13) <= \\; + m_axis_rx_tuser(12) <= \\; + m_axis_rx_tuser(11) <= \\; + m_axis_rx_tuser(10) <= \\; + m_axis_rx_tuser(9) <= \\; + m_axis_rx_tuser(8 downto 0) <= \^m_axis_rx_tuser\(8 downto 0); + pipe_cpll_lock(3) <= \\; + pipe_cpll_lock(2) <= \\; + pipe_cpll_lock(1) <= \\; + pipe_cpll_lock(0) <= \\; + pipe_debug(31) <= \\; + pipe_debug(30) <= \\; + pipe_debug(29) <= \\; + pipe_debug(28) <= \\; + pipe_debug(27) <= \\; + pipe_debug(26) <= \\; + pipe_debug(25) <= \\; + pipe_debug(24) <= \\; + pipe_debug(23) <= \\; + pipe_debug(22) <= \\; + pipe_debug(21) <= \\; + pipe_debug(20) <= \\; + pipe_debug(19) <= \\; + pipe_debug(18) <= \\; + pipe_debug(17) <= \\; + pipe_debug(16) <= \\; + pipe_debug(15) <= \\; + pipe_debug(14) <= \\; + pipe_debug(13) <= \\; + pipe_debug(12) <= \\; + pipe_debug(11) <= \\; + pipe_debug(10) <= \\; + pipe_debug(9) <= \\; + pipe_debug(8) <= \\; + pipe_debug(7) <= \\; + pipe_debug(6) <= \\; + pipe_debug(5) <= \\; + pipe_debug(4) <= \\; + pipe_debug(3) <= \\; + pipe_debug(2) <= \\; + pipe_debug(1) <= \\; + pipe_debug(0) <= \\; + pipe_debug_0(3) <= \\; + pipe_debug_0(2) <= \\; + pipe_debug_0(1) <= \\; + pipe_debug_0(0) <= \\; + pipe_debug_1(3) <= \\; + pipe_debug_1(2) <= \\; + pipe_debug_1(1) <= \\; + pipe_debug_1(0) <= \\; + pipe_debug_2(3) <= \\; + pipe_debug_2(2) <= \\; + pipe_debug_2(1) <= \\; + pipe_debug_2(0) <= \\; + pipe_debug_3(3) <= \\; + pipe_debug_3(2) <= \\; + pipe_debug_3(1) <= \\; + pipe_debug_3(0) <= \\; + pipe_debug_4(3) <= \\; + pipe_debug_4(2) <= \\; + pipe_debug_4(1) <= \\; + pipe_debug_4(0) <= \\; + pipe_debug_5(3) <= \\; + pipe_debug_5(2) <= \\; + pipe_debug_5(1) <= \\; + pipe_debug_5(0) <= \\; + pipe_debug_6(3) <= \\; + pipe_debug_6(2) <= \\; + pipe_debug_6(1) <= \\; + pipe_debug_6(0) <= \\; + pipe_debug_7(3) <= \\; + pipe_debug_7(2) <= \\; + pipe_debug_7(1) <= \\; + pipe_debug_7(0) <= \\; + pipe_debug_8(3) <= \\; + pipe_debug_8(2) <= \\; + pipe_debug_8(1) <= \\; + pipe_debug_8(0) <= \\; + pipe_debug_9(3) <= \\; + pipe_debug_9(2) <= \\; + pipe_debug_9(1) <= \\; + pipe_debug_9(0) <= \\; + pipe_dmonitorout(59) <= \\; + pipe_dmonitorout(58) <= \\; + pipe_dmonitorout(57) <= \\; + pipe_dmonitorout(56) <= \\; + pipe_dmonitorout(55) <= \\; + pipe_dmonitorout(54) <= \\; + pipe_dmonitorout(53) <= \\; + pipe_dmonitorout(52) <= \\; + pipe_dmonitorout(51) <= \\; + pipe_dmonitorout(50) <= \\; + pipe_dmonitorout(49) <= \\; + pipe_dmonitorout(48) <= \\; + pipe_dmonitorout(47) <= \\; + pipe_dmonitorout(46) <= \\; + pipe_dmonitorout(45) <= \\; + pipe_dmonitorout(44) <= \\; + pipe_dmonitorout(43) <= \\; + pipe_dmonitorout(42) <= \\; + pipe_dmonitorout(41) <= \\; + pipe_dmonitorout(40) <= \\; + pipe_dmonitorout(39) <= \\; + pipe_dmonitorout(38) <= \\; + pipe_dmonitorout(37) <= \\; + pipe_dmonitorout(36) <= \\; + pipe_dmonitorout(35) <= \\; + pipe_dmonitorout(34) <= \\; + pipe_dmonitorout(33) <= \\; + pipe_dmonitorout(32) <= \\; + pipe_dmonitorout(31) <= \\; + pipe_dmonitorout(30) <= \\; + pipe_dmonitorout(29) <= \\; + pipe_dmonitorout(28) <= \\; + pipe_dmonitorout(27) <= \\; + pipe_dmonitorout(26) <= \\; + pipe_dmonitorout(25) <= \\; + pipe_dmonitorout(24) <= \\; + pipe_dmonitorout(23) <= \\; + pipe_dmonitorout(22) <= \\; + pipe_dmonitorout(21) <= \\; + pipe_dmonitorout(20) <= \\; + pipe_dmonitorout(19) <= \\; + pipe_dmonitorout(18) <= \\; + pipe_dmonitorout(17) <= \\; + pipe_dmonitorout(16) <= \\; + pipe_dmonitorout(15) <= \\; + pipe_dmonitorout(14) <= \\; + pipe_dmonitorout(13) <= \\; + pipe_dmonitorout(12) <= \\; + pipe_dmonitorout(11) <= \\; + pipe_dmonitorout(10) <= \\; + pipe_dmonitorout(9) <= \\; + pipe_dmonitorout(8) <= \\; + pipe_dmonitorout(7) <= \\; + pipe_dmonitorout(6) <= \\; + pipe_dmonitorout(5) <= \\; + pipe_dmonitorout(4) <= \\; + pipe_dmonitorout(3) <= \\; + pipe_dmonitorout(2) <= \\; + pipe_dmonitorout(1) <= \\; + pipe_dmonitorout(0) <= \\; + pipe_drp_fsm(27) <= \\; + pipe_drp_fsm(26) <= \\; + pipe_drp_fsm(25) <= \\; + pipe_drp_fsm(24) <= \\; + pipe_drp_fsm(23) <= \\; + pipe_drp_fsm(22) <= \\; + pipe_drp_fsm(21) <= \\; + pipe_drp_fsm(20) <= \\; + pipe_drp_fsm(19) <= \\; + pipe_drp_fsm(18) <= \\; + pipe_drp_fsm(17) <= \\; + pipe_drp_fsm(16) <= \\; + pipe_drp_fsm(15) <= \\; + pipe_drp_fsm(14) <= \\; + pipe_drp_fsm(13) <= \\; + pipe_drp_fsm(12) <= \\; + pipe_drp_fsm(11) <= \\; + pipe_drp_fsm(10) <= \\; + pipe_drp_fsm(9) <= \\; + pipe_drp_fsm(8) <= \\; + pipe_drp_fsm(7) <= \\; + pipe_drp_fsm(6) <= \\; + pipe_drp_fsm(5) <= \\; + pipe_drp_fsm(4) <= \\; + pipe_drp_fsm(3) <= \\; + pipe_drp_fsm(2) <= \\; + pipe_drp_fsm(1) <= \\; + pipe_drp_fsm(0) <= \\; + pipe_eyescandataerror(3) <= \\; + pipe_eyescandataerror(2) <= \\; + pipe_eyescandataerror(1) <= \\; + pipe_eyescandataerror(0) <= \\; + pipe_qpll_lock(0) <= \\; + pipe_qrst_fsm(11) <= \\; + pipe_qrst_fsm(10) <= \\; + pipe_qrst_fsm(9) <= \\; + pipe_qrst_fsm(8) <= \\; + pipe_qrst_fsm(7) <= \\; + pipe_qrst_fsm(6) <= \\; + pipe_qrst_fsm(5) <= \\; + pipe_qrst_fsm(4) <= \\; + pipe_qrst_fsm(3) <= \\; + pipe_qrst_fsm(2) <= \\; + pipe_qrst_fsm(1) <= \\; + pipe_qrst_fsm(0) <= \\; + pipe_qrst_idle <= \\; + pipe_rate_fsm(19) <= \\; + pipe_rate_fsm(18) <= \\; + pipe_rate_fsm(17) <= \\; + pipe_rate_fsm(16) <= \\; + pipe_rate_fsm(15) <= \\; + pipe_rate_fsm(14) <= \\; + pipe_rate_fsm(13) <= \\; + pipe_rate_fsm(12) <= \\; + pipe_rate_fsm(11) <= \\; + pipe_rate_fsm(10) <= \\; + pipe_rate_fsm(9) <= \\; + pipe_rate_fsm(8) <= \\; + pipe_rate_fsm(7) <= \\; + pipe_rate_fsm(6) <= \\; + pipe_rate_fsm(5) <= \\; + pipe_rate_fsm(4) <= \\; + pipe_rate_fsm(3) <= \\; + pipe_rate_fsm(2) <= \\; + pipe_rate_fsm(1) <= \\; + pipe_rate_fsm(0) <= \\; + pipe_rate_idle <= \\; + pipe_rst_fsm(4) <= \\; + pipe_rst_fsm(3) <= \\; + pipe_rst_fsm(2) <= \\; + pipe_rst_fsm(1) <= \\; + pipe_rst_fsm(0) <= \\; + pipe_rst_idle <= \\; + pipe_rxbufstatus(11) <= \\; + pipe_rxbufstatus(10) <= \\; + pipe_rxbufstatus(9) <= \\; + pipe_rxbufstatus(8) <= \\; + pipe_rxbufstatus(7) <= \\; + pipe_rxbufstatus(6) <= \\; + pipe_rxbufstatus(5) <= \\; + pipe_rxbufstatus(4) <= \\; + pipe_rxbufstatus(3) <= \\; + pipe_rxbufstatus(2) <= \\; + pipe_rxbufstatus(1) <= \\; + pipe_rxbufstatus(0) <= \\; + pipe_rxcommadet(3) <= \\; + pipe_rxcommadet(2) <= \\; + pipe_rxcommadet(1) <= \\; + pipe_rxcommadet(0) <= \\; + pipe_rxdisperr(31) <= \\; + pipe_rxdisperr(30) <= \\; + pipe_rxdisperr(29) <= \\; + pipe_rxdisperr(28) <= \\; + pipe_rxdisperr(27) <= \\; + pipe_rxdisperr(26) <= \\; + pipe_rxdisperr(25) <= \\; + pipe_rxdisperr(24) <= \\; + pipe_rxdisperr(23) <= \\; + pipe_rxdisperr(22) <= \\; + pipe_rxdisperr(21) <= \\; + pipe_rxdisperr(20) <= \\; + pipe_rxdisperr(19) <= \\; + pipe_rxdisperr(18) <= \\; + pipe_rxdisperr(17) <= \\; + pipe_rxdisperr(16) <= \\; + pipe_rxdisperr(15) <= \\; + pipe_rxdisperr(14) <= \\; + pipe_rxdisperr(13) <= \\; + pipe_rxdisperr(12) <= \\; + pipe_rxdisperr(11) <= \\; + pipe_rxdisperr(10) <= \\; + pipe_rxdisperr(9) <= \\; + pipe_rxdisperr(8) <= \\; + pipe_rxdisperr(7) <= \\; + pipe_rxdisperr(6) <= \\; + pipe_rxdisperr(5) <= \\; + pipe_rxdisperr(4) <= \\; + pipe_rxdisperr(3) <= \\; + pipe_rxdisperr(2) <= \\; + pipe_rxdisperr(1) <= \\; + pipe_rxdisperr(0) <= \\; + pipe_rxdlysresetdone(3) <= \\; + pipe_rxdlysresetdone(2) <= \\; + pipe_rxdlysresetdone(1) <= \\; + pipe_rxdlysresetdone(0) <= \\; + pipe_rxnotintable(31) <= \\; + pipe_rxnotintable(30) <= \\; + pipe_rxnotintable(29) <= \\; + pipe_rxnotintable(28) <= \\; + pipe_rxnotintable(27) <= \\; + pipe_rxnotintable(26) <= \\; + pipe_rxnotintable(25) <= \\; + pipe_rxnotintable(24) <= \\; + pipe_rxnotintable(23) <= \\; + pipe_rxnotintable(22) <= \\; + pipe_rxnotintable(21) <= \\; + pipe_rxnotintable(20) <= \\; + pipe_rxnotintable(19) <= \\; + pipe_rxnotintable(18) <= \\; + pipe_rxnotintable(17) <= \\; + pipe_rxnotintable(16) <= \\; + pipe_rxnotintable(15) <= \\; + pipe_rxnotintable(14) <= \\; + pipe_rxnotintable(13) <= \\; + pipe_rxnotintable(12) <= \\; + pipe_rxnotintable(11) <= \\; + pipe_rxnotintable(10) <= \\; + pipe_rxnotintable(9) <= \\; + pipe_rxnotintable(8) <= \\; + pipe_rxnotintable(7) <= \\; + pipe_rxnotintable(6) <= \\; + pipe_rxnotintable(5) <= \\; + pipe_rxnotintable(4) <= \\; + pipe_rxnotintable(3) <= \\; + pipe_rxnotintable(2) <= \\; + pipe_rxnotintable(1) <= \\; + pipe_rxnotintable(0) <= \\; + pipe_rxphaligndone(3) <= \\; + pipe_rxphaligndone(2) <= \\; + pipe_rxphaligndone(1) <= \\; + pipe_rxphaligndone(0) <= \\; + pipe_rxpmaresetdone(3) <= \\; + pipe_rxpmaresetdone(2) <= \\; + pipe_rxpmaresetdone(1) <= \\; + pipe_rxpmaresetdone(0) <= \\; + pipe_rxprbserr(3) <= \\; + pipe_rxprbserr(2) <= \\; + pipe_rxprbserr(1) <= \\; + pipe_rxprbserr(0) <= \\; + pipe_rxstatus(11) <= \\; + pipe_rxstatus(10) <= \\; + pipe_rxstatus(9) <= \\; + pipe_rxstatus(8) <= \\; + pipe_rxstatus(7) <= \\; + pipe_rxstatus(6) <= \\; + pipe_rxstatus(5) <= \\; + pipe_rxstatus(4) <= \\; + pipe_rxstatus(3) <= \\; + pipe_rxstatus(2) <= \\; + pipe_rxstatus(1) <= \\; + pipe_rxstatus(0) <= \\; + pipe_rxsyncdone(3) <= \\; + pipe_rxsyncdone(2) <= \\; + pipe_rxsyncdone(1) <= \\; + pipe_rxsyncdone(0) <= \\; + pipe_sync_fsm_rx(27) <= \\; + pipe_sync_fsm_rx(26) <= \\; + pipe_sync_fsm_rx(25) <= \\; + pipe_sync_fsm_rx(24) <= \\; + pipe_sync_fsm_rx(23) <= \\; + pipe_sync_fsm_rx(22) <= \\; + pipe_sync_fsm_rx(21) <= \\; + pipe_sync_fsm_rx(20) <= \\; + pipe_sync_fsm_rx(19) <= \\; + pipe_sync_fsm_rx(18) <= \\; + pipe_sync_fsm_rx(17) <= \\; + pipe_sync_fsm_rx(16) <= \\; + pipe_sync_fsm_rx(15) <= \\; + pipe_sync_fsm_rx(14) <= \\; + pipe_sync_fsm_rx(13) <= \\; + pipe_sync_fsm_rx(12) <= \\; + pipe_sync_fsm_rx(11) <= \\; + pipe_sync_fsm_rx(10) <= \\; + pipe_sync_fsm_rx(9) <= \\; + pipe_sync_fsm_rx(8) <= \\; + pipe_sync_fsm_rx(7) <= \\; + pipe_sync_fsm_rx(6) <= \\; + pipe_sync_fsm_rx(5) <= \\; + pipe_sync_fsm_rx(4) <= \\; + pipe_sync_fsm_rx(3) <= \\; + pipe_sync_fsm_rx(2) <= \\; + pipe_sync_fsm_rx(1) <= \\; + pipe_sync_fsm_rx(0) <= \\; + pipe_sync_fsm_tx(23) <= \\; + pipe_sync_fsm_tx(22) <= \\; + pipe_sync_fsm_tx(21) <= \\; + pipe_sync_fsm_tx(20) <= \\; + pipe_sync_fsm_tx(19) <= \\; + pipe_sync_fsm_tx(18) <= \\; + pipe_sync_fsm_tx(17) <= \\; + pipe_sync_fsm_tx(16) <= \\; + pipe_sync_fsm_tx(15) <= \\; + pipe_sync_fsm_tx(14) <= \\; + pipe_sync_fsm_tx(13) <= \\; + pipe_sync_fsm_tx(12) <= \\; + pipe_sync_fsm_tx(11) <= \\; + pipe_sync_fsm_tx(10) <= \\; + pipe_sync_fsm_tx(9) <= \\; + pipe_sync_fsm_tx(8) <= \\; + pipe_sync_fsm_tx(7) <= \\; + pipe_sync_fsm_tx(6) <= \\; + pipe_sync_fsm_tx(5) <= \\; + pipe_sync_fsm_tx(4) <= \\; + pipe_sync_fsm_tx(3) <= \\; + pipe_sync_fsm_tx(2) <= \\; + pipe_sync_fsm_tx(1) <= \\; + pipe_sync_fsm_tx(0) <= \\; + pipe_tx_0_sigs(24) <= \\; + pipe_tx_0_sigs(23) <= \\; + pipe_tx_0_sigs(22) <= \\; + pipe_tx_0_sigs(21) <= \\; + pipe_tx_0_sigs(20) <= \\; + pipe_tx_0_sigs(19) <= \\; + pipe_tx_0_sigs(18) <= \\; + pipe_tx_0_sigs(17) <= \\; + pipe_tx_0_sigs(16) <= \\; + pipe_tx_0_sigs(15) <= \\; + pipe_tx_0_sigs(14) <= \\; + pipe_tx_0_sigs(13) <= \\; + pipe_tx_0_sigs(12) <= \\; + pipe_tx_0_sigs(11) <= \\; + pipe_tx_0_sigs(10) <= \\; + pipe_tx_0_sigs(9) <= \\; + pipe_tx_0_sigs(8) <= \\; + pipe_tx_0_sigs(7) <= \\; + pipe_tx_0_sigs(6) <= \\; + pipe_tx_0_sigs(5) <= \\; + pipe_tx_0_sigs(4) <= \\; + pipe_tx_0_sigs(3) <= \\; + pipe_tx_0_sigs(2) <= \\; + pipe_tx_0_sigs(1) <= \\; + pipe_tx_0_sigs(0) <= \\; + pipe_tx_1_sigs(24) <= \\; + pipe_tx_1_sigs(23) <= \\; + pipe_tx_1_sigs(22) <= \\; + pipe_tx_1_sigs(21) <= \\; + pipe_tx_1_sigs(20) <= \\; + pipe_tx_1_sigs(19) <= \\; + pipe_tx_1_sigs(18) <= \\; + pipe_tx_1_sigs(17) <= \\; + pipe_tx_1_sigs(16) <= \\; + pipe_tx_1_sigs(15) <= \\; + pipe_tx_1_sigs(14) <= \\; + pipe_tx_1_sigs(13) <= \\; + pipe_tx_1_sigs(12) <= \\; + pipe_tx_1_sigs(11) <= \\; + pipe_tx_1_sigs(10) <= \\; + pipe_tx_1_sigs(9) <= \\; + pipe_tx_1_sigs(8) <= \\; + pipe_tx_1_sigs(7) <= \\; + pipe_tx_1_sigs(6) <= \\; + pipe_tx_1_sigs(5) <= \\; + pipe_tx_1_sigs(4) <= \\; + pipe_tx_1_sigs(3) <= \\; + pipe_tx_1_sigs(2) <= \\; + pipe_tx_1_sigs(1) <= \\; + pipe_tx_1_sigs(0) <= \\; + pipe_tx_2_sigs(24) <= \\; + pipe_tx_2_sigs(23) <= \\; + pipe_tx_2_sigs(22) <= \\; + pipe_tx_2_sigs(21) <= \\; + pipe_tx_2_sigs(20) <= \\; + pipe_tx_2_sigs(19) <= \\; + pipe_tx_2_sigs(18) <= \\; + pipe_tx_2_sigs(17) <= \\; + pipe_tx_2_sigs(16) <= \\; + pipe_tx_2_sigs(15) <= \\; + pipe_tx_2_sigs(14) <= \\; + pipe_tx_2_sigs(13) <= \\; + pipe_tx_2_sigs(12) <= \\; + pipe_tx_2_sigs(11) <= \\; + pipe_tx_2_sigs(10) <= \\; + pipe_tx_2_sigs(9) <= \\; + pipe_tx_2_sigs(8) <= \\; + pipe_tx_2_sigs(7) <= \\; + pipe_tx_2_sigs(6) <= \\; + pipe_tx_2_sigs(5) <= \\; + pipe_tx_2_sigs(4) <= \\; + pipe_tx_2_sigs(3) <= \\; + pipe_tx_2_sigs(2) <= \\; + pipe_tx_2_sigs(1) <= \\; + pipe_tx_2_sigs(0) <= \\; + pipe_tx_3_sigs(24) <= \\; + pipe_tx_3_sigs(23) <= \\; + pipe_tx_3_sigs(22) <= \\; + pipe_tx_3_sigs(21) <= \\; + pipe_tx_3_sigs(20) <= \\; + pipe_tx_3_sigs(19) <= \\; + pipe_tx_3_sigs(18) <= \\; + pipe_tx_3_sigs(17) <= \\; + pipe_tx_3_sigs(16) <= \\; + pipe_tx_3_sigs(15) <= \\; + pipe_tx_3_sigs(14) <= \\; + pipe_tx_3_sigs(13) <= \\; + pipe_tx_3_sigs(12) <= \\; + pipe_tx_3_sigs(11) <= \\; + pipe_tx_3_sigs(10) <= \\; + pipe_tx_3_sigs(9) <= \\; + pipe_tx_3_sigs(8) <= \\; + pipe_tx_3_sigs(7) <= \\; + pipe_tx_3_sigs(6) <= \\; + pipe_tx_3_sigs(5) <= \\; + pipe_tx_3_sigs(4) <= \\; + pipe_tx_3_sigs(3) <= \\; + pipe_tx_3_sigs(2) <= \\; + pipe_tx_3_sigs(1) <= \\; + pipe_tx_3_sigs(0) <= \\; + pipe_tx_4_sigs(24) <= \\; + pipe_tx_4_sigs(23) <= \\; + pipe_tx_4_sigs(22) <= \\; + pipe_tx_4_sigs(21) <= \\; + pipe_tx_4_sigs(20) <= \\; + pipe_tx_4_sigs(19) <= \\; + pipe_tx_4_sigs(18) <= \\; + pipe_tx_4_sigs(17) <= \\; + pipe_tx_4_sigs(16) <= \\; + pipe_tx_4_sigs(15) <= \\; + pipe_tx_4_sigs(14) <= \\; + pipe_tx_4_sigs(13) <= \\; + pipe_tx_4_sigs(12) <= \\; + pipe_tx_4_sigs(11) <= \\; + pipe_tx_4_sigs(10) <= \\; + pipe_tx_4_sigs(9) <= \\; + pipe_tx_4_sigs(8) <= \\; + pipe_tx_4_sigs(7) <= \\; + pipe_tx_4_sigs(6) <= \\; + pipe_tx_4_sigs(5) <= \\; + pipe_tx_4_sigs(4) <= \\; + pipe_tx_4_sigs(3) <= \\; + pipe_tx_4_sigs(2) <= \\; + pipe_tx_4_sigs(1) <= \\; + pipe_tx_4_sigs(0) <= \\; + pipe_tx_5_sigs(24) <= \\; + pipe_tx_5_sigs(23) <= \\; + pipe_tx_5_sigs(22) <= \\; + pipe_tx_5_sigs(21) <= \\; + pipe_tx_5_sigs(20) <= \\; + pipe_tx_5_sigs(19) <= \\; + pipe_tx_5_sigs(18) <= \\; + pipe_tx_5_sigs(17) <= \\; + pipe_tx_5_sigs(16) <= \\; + pipe_tx_5_sigs(15) <= \\; + pipe_tx_5_sigs(14) <= \\; + pipe_tx_5_sigs(13) <= \\; + pipe_tx_5_sigs(12) <= \\; + pipe_tx_5_sigs(11) <= \\; + pipe_tx_5_sigs(10) <= \\; + pipe_tx_5_sigs(9) <= \\; + pipe_tx_5_sigs(8) <= \\; + pipe_tx_5_sigs(7) <= \\; + pipe_tx_5_sigs(6) <= \\; + pipe_tx_5_sigs(5) <= \\; + pipe_tx_5_sigs(4) <= \\; + pipe_tx_5_sigs(3) <= \\; + pipe_tx_5_sigs(2) <= \\; + pipe_tx_5_sigs(1) <= \\; + pipe_tx_5_sigs(0) <= \\; + pipe_tx_6_sigs(24) <= \\; + pipe_tx_6_sigs(23) <= \\; + pipe_tx_6_sigs(22) <= \\; + pipe_tx_6_sigs(21) <= \\; + pipe_tx_6_sigs(20) <= \\; + pipe_tx_6_sigs(19) <= \\; + pipe_tx_6_sigs(18) <= \\; + pipe_tx_6_sigs(17) <= \\; + pipe_tx_6_sigs(16) <= \\; + pipe_tx_6_sigs(15) <= \\; + pipe_tx_6_sigs(14) <= \\; + pipe_tx_6_sigs(13) <= \\; + pipe_tx_6_sigs(12) <= \\; + pipe_tx_6_sigs(11) <= \\; + pipe_tx_6_sigs(10) <= \\; + pipe_tx_6_sigs(9) <= \\; + pipe_tx_6_sigs(8) <= \\; + pipe_tx_6_sigs(7) <= \\; + pipe_tx_6_sigs(6) <= \\; + pipe_tx_6_sigs(5) <= \\; + pipe_tx_6_sigs(4) <= \\; + pipe_tx_6_sigs(3) <= \\; + pipe_tx_6_sigs(2) <= \\; + pipe_tx_6_sigs(1) <= \\; + pipe_tx_6_sigs(0) <= \\; + pipe_tx_7_sigs(24) <= \\; + pipe_tx_7_sigs(23) <= \\; + pipe_tx_7_sigs(22) <= \\; + pipe_tx_7_sigs(21) <= \\; + pipe_tx_7_sigs(20) <= \\; + pipe_tx_7_sigs(19) <= \\; + pipe_tx_7_sigs(18) <= \\; + pipe_tx_7_sigs(17) <= \\; + pipe_tx_7_sigs(16) <= \\; + pipe_tx_7_sigs(15) <= \\; + pipe_tx_7_sigs(14) <= \\; + pipe_tx_7_sigs(13) <= \\; + pipe_tx_7_sigs(12) <= \\; + pipe_tx_7_sigs(11) <= \\; + pipe_tx_7_sigs(10) <= \\; + pipe_tx_7_sigs(9) <= \\; + pipe_tx_7_sigs(8) <= \\; + pipe_tx_7_sigs(7) <= \\; + pipe_tx_7_sigs(6) <= \\; + pipe_tx_7_sigs(5) <= \\; + pipe_tx_7_sigs(4) <= \\; + pipe_tx_7_sigs(3) <= \\; + pipe_tx_7_sigs(2) <= \\; + pipe_tx_7_sigs(1) <= \\; + pipe_tx_7_sigs(0) <= \\; + pipe_txdlysresetdone(3) <= \\; + pipe_txdlysresetdone(2) <= \\; + pipe_txdlysresetdone(1) <= \\; + pipe_txdlysresetdone(0) <= \\; + pipe_txphaligndone(3) <= \\; + pipe_txphaligndone(2) <= \\; + pipe_txphaligndone(1) <= \\; + pipe_txphaligndone(0) <= \\; + pipe_txphinitdone(3) <= \\; + pipe_txphinitdone(2) <= \\; + pipe_txphinitdone(1) <= \\; + pipe_txphinitdone(0) <= \\; + qpll_drp_clk <= \\; + qpll_drp_gen3 <= \\; + qpll_drp_ovrd <= \\; + qpll_drp_rst_n <= \\; + qpll_drp_start <= \\; + qpll_qplld <= \\; + qpll_qpllreset(1) <= \\; + qpll_qpllreset(0) <= \\; + startup_cfgclk <= \\; + startup_cfgmclk <= \\; + startup_eos <= \\; + startup_preq <= \\; + user_app_rdy <= \\; + user_clk_out <= \^pipe_userclk2_in\; +GND: unisim.vcomponents.GND + port map ( + G => \\ + ); +inst: entity work.pcie_7x_0_pcie_7x_0_core_top + port map ( + cfg_aer_ecrc_check_en => cfg_aer_ecrc_check_en, + cfg_aer_ecrc_gen_en => cfg_aer_ecrc_gen_en, + cfg_aer_interrupt_msgnum(4 downto 0) => cfg_aer_interrupt_msgnum(4 downto 0), + cfg_aer_rooterr_corr_err_received => cfg_aer_rooterr_corr_err_received, + cfg_aer_rooterr_corr_err_reporting_en => cfg_aer_rooterr_corr_err_reporting_en, + cfg_aer_rooterr_fatal_err_received => cfg_aer_rooterr_fatal_err_received, + cfg_aer_rooterr_fatal_err_reporting_en => cfg_aer_rooterr_fatal_err_reporting_en, + cfg_aer_rooterr_non_fatal_err_received => cfg_aer_rooterr_non_fatal_err_received, + cfg_aer_rooterr_non_fatal_err_reporting_en => cfg_aer_rooterr_non_fatal_err_reporting_en, + cfg_bridge_serr_en => cfg_bridge_serr_en, + cfg_bus_number(7 downto 0) => cfg_bus_number(7 downto 0), + cfg_command(4) => \^cfg_command\(10), + cfg_command(3) => \^cfg_command\(8), + cfg_command(2 downto 0) => \^cfg_command\(2 downto 0), + cfg_dcommand(14 downto 0) => \^cfg_dcommand\(14 downto 0), + cfg_dcommand2(11 downto 0) => \^cfg_dcommand2\(11 downto 0), + cfg_device_number(4 downto 0) => cfg_device_number(4 downto 0), + cfg_ds_bus_number(7 downto 0) => cfg_ds_bus_number(7 downto 0), + cfg_ds_device_number(4 downto 0) => cfg_ds_device_number(4 downto 0), + cfg_ds_function_number(2 downto 0) => cfg_ds_function_number(2 downto 0), + cfg_dsn(63 downto 0) => cfg_dsn(63 downto 0), + cfg_dstatus(3 downto 0) => \^cfg_dstatus\(3 downto 0), + cfg_err_aer_headerlog(127 downto 0) => cfg_err_aer_headerlog(127 downto 0), + cfg_err_aer_headerlog_set => cfg_err_aer_headerlog_set, + cfg_err_atomic_egress_blocked => cfg_err_atomic_egress_blocked, + cfg_err_cor => cfg_err_cor, + cfg_err_cpl_abort => cfg_err_cpl_abort, + cfg_err_cpl_rdy => cfg_err_cpl_rdy, + cfg_err_cpl_timeout => cfg_err_cpl_timeout, + cfg_err_cpl_unexpect => cfg_err_cpl_unexpect, + cfg_err_ecrc => cfg_err_ecrc, + cfg_err_internal_cor => cfg_err_internal_cor, + cfg_err_internal_uncor => cfg_err_internal_uncor, + cfg_err_locked => cfg_err_locked, + cfg_err_malformed => cfg_err_malformed, + cfg_err_mc_blocked => cfg_err_mc_blocked, + cfg_err_norecovery => cfg_err_norecovery, + cfg_err_poisoned => cfg_err_poisoned, + cfg_err_posted => cfg_err_posted, + cfg_err_tlp_cpl_header(47 downto 0) => cfg_err_tlp_cpl_header(47 downto 0), + cfg_err_ur => cfg_err_ur, + cfg_function_number(2 downto 0) => cfg_function_number(2 downto 0), + cfg_interrupt => cfg_interrupt, + cfg_interrupt_assert => cfg_interrupt_assert, + cfg_interrupt_di(7 downto 0) => cfg_interrupt_di(7 downto 0), + cfg_interrupt_do(7 downto 0) => cfg_interrupt_do(7 downto 0), + cfg_interrupt_mmenable(2 downto 0) => cfg_interrupt_mmenable(2 downto 0), + cfg_interrupt_msienable => cfg_interrupt_msienable, + cfg_interrupt_msixenable => cfg_interrupt_msixenable, + cfg_interrupt_msixfm => cfg_interrupt_msixfm, + cfg_interrupt_rdy => cfg_interrupt_rdy, + cfg_interrupt_stat => cfg_interrupt_stat, + cfg_lcommand(10 downto 2) => \^cfg_lcommand\(11 downto 3), + cfg_lcommand(1 downto 0) => \^cfg_lcommand\(1 downto 0), + cfg_lstatus(9 downto 7) => \^cfg_lstatus\(15 downto 13), + cfg_lstatus(6) => \^cfg_lstatus\(11), + cfg_lstatus(5 downto 2) => \^cfg_lstatus\(7 downto 4), + cfg_lstatus(1 downto 0) => \^cfg_lstatus\(1 downto 0), + cfg_mgmt_byte_en(3 downto 0) => cfg_mgmt_byte_en(3 downto 0), + cfg_mgmt_di(31 downto 0) => cfg_mgmt_di(31 downto 0), + cfg_mgmt_do(31 downto 0) => cfg_mgmt_do(31 downto 0), + cfg_mgmt_dwaddr(9 downto 0) => cfg_mgmt_dwaddr(9 downto 0), + cfg_mgmt_rd_en => cfg_mgmt_rd_en, + cfg_mgmt_rd_wr_done => cfg_mgmt_rd_wr_done, + cfg_mgmt_wr_en => cfg_mgmt_wr_en, + cfg_mgmt_wr_readonly => cfg_mgmt_wr_readonly, + cfg_mgmt_wr_rw1c_as_rw => cfg_mgmt_wr_rw1c_as_rw, + cfg_msg_data(15 downto 0) => cfg_msg_data(15 downto 0), + cfg_msg_received => cfg_msg_received, + cfg_msg_received_assert_int_a => cfg_msg_received_assert_int_a, + cfg_msg_received_assert_int_b => cfg_msg_received_assert_int_b, + cfg_msg_received_assert_int_c => cfg_msg_received_assert_int_c, + cfg_msg_received_assert_int_d => cfg_msg_received_assert_int_d, + cfg_msg_received_deassert_int_a => cfg_msg_received_deassert_int_a, + cfg_msg_received_deassert_int_b => cfg_msg_received_deassert_int_b, + cfg_msg_received_deassert_int_c => cfg_msg_received_deassert_int_c, + cfg_msg_received_deassert_int_d => cfg_msg_received_deassert_int_d, + cfg_msg_received_err_cor => cfg_msg_received_err_cor, + cfg_msg_received_err_fatal => cfg_msg_received_err_fatal, + cfg_msg_received_err_non_fatal => cfg_msg_received_err_non_fatal, + cfg_msg_received_pm_as_nak => cfg_msg_received_pm_as_nak, + cfg_msg_received_pm_pme => cfg_msg_received_pm_pme, + cfg_msg_received_pme_to_ack => cfg_msg_received_pme_to_ack, + cfg_msg_received_setslotpowerlimit => cfg_msg_received_setslotpowerlimit, + cfg_pcie_link_state(2 downto 0) => cfg_pcie_link_state(2 downto 0), + cfg_pciecap_interrupt_msgnum(4 downto 0) => cfg_pciecap_interrupt_msgnum(4 downto 0), + cfg_pm_force_state(1 downto 0) => cfg_pm_force_state(1 downto 0), + cfg_pm_force_state_en => cfg_pm_force_state_en, + cfg_pm_halt_aspm_l0s => cfg_pm_halt_aspm_l0s, + cfg_pm_halt_aspm_l1 => cfg_pm_halt_aspm_l1, + cfg_pm_wake => cfg_pm_wake, + cfg_pmcsr_pme_en => cfg_pmcsr_pme_en, + cfg_pmcsr_pme_status => cfg_pmcsr_pme_status, + cfg_pmcsr_powerstate(1 downto 0) => cfg_pmcsr_powerstate(1 downto 0), + cfg_received_func_lvl_rst => cfg_received_func_lvl_rst, + cfg_root_control_pme_int_en => cfg_root_control_pme_int_en, + cfg_root_control_syserr_corr_err_en => cfg_root_control_syserr_corr_err_en, + cfg_root_control_syserr_fatal_err_en => cfg_root_control_syserr_fatal_err_en, + cfg_root_control_syserr_non_fatal_err_en => cfg_root_control_syserr_non_fatal_err_en, + cfg_slot_control_electromech_il_ctl_pulse => cfg_slot_control_electromech_il_ctl_pulse, + cfg_to_turnoff => cfg_to_turnoff, + cfg_trn_pending => \^cfg_trn_pending\, + cfg_turnoff_ok => cfg_turnoff_ok, + cfg_vc_tcvc_map(6 downto 0) => cfg_vc_tcvc_map(6 downto 0), + fc_cpld(11 downto 0) => fc_cpld(11 downto 0), + fc_cplh(7 downto 0) => fc_cplh(7 downto 0), + fc_npd(11 downto 0) => fc_npd(11 downto 0), + fc_nph(7 downto 0) => fc_nph(7 downto 0), + fc_pd(11 downto 0) => fc_pd(11 downto 0), + fc_ph(7 downto 0) => fc_ph(7 downto 0), + fc_sel(2 downto 0) => fc_sel(2 downto 0), + gen3_reg => pipe_gen3_out, + m_axis_rx_tdata(63 downto 0) => m_axis_rx_tdata(63 downto 0), + m_axis_rx_tkeep(0) => \^m_axis_rx_tkeep\(6), + m_axis_rx_tlast => m_axis_rx_tlast, + m_axis_rx_tready => m_axis_rx_tready, + m_axis_rx_tuser(12) => \^m_axis_rx_tuser\(21), + m_axis_rx_tuser(11) => \^m_axis_rx_tuser\(19), + m_axis_rx_tuser(10) => \^m_axis_rx_tuser\(17), + m_axis_rx_tuser(9) => \^m_axis_rx_tuser\(14), + m_axis_rx_tuser(8 downto 0) => \^m_axis_rx_tuser\(8 downto 0), + m_axis_rx_tvalid => m_axis_rx_tvalid, + pci_exp_rxn(3 downto 0) => pci_exp_rxn(3 downto 0), + pci_exp_rxp(3 downto 0) => pci_exp_rxp(3 downto 0), + pci_exp_txn(3 downto 0) => pci_exp_txn(3 downto 0), + pci_exp_txp(3 downto 0) => pci_exp_txp(3 downto 0), + pcie_drp_addr(8 downto 0) => pcie_drp_addr(8 downto 0), + pcie_drp_clk => pcie_drp_clk, + pcie_drp_di(15 downto 0) => pcie_drp_di(15 downto 0), + pcie_drp_do(15 downto 0) => pcie_drp_do(15 downto 0), + pcie_drp_en => pcie_drp_en, + pcie_drp_rdy => pcie_drp_rdy, + pcie_drp_we => pcie_drp_we, + pipe_dclk_in => pipe_dclk_in, + pipe_mmcm_lock_in => pipe_mmcm_lock_in, + pipe_oobclk_in => pipe_oobclk_in, + pipe_pclk_in => pipe_pclk_in, + pipe_pclk_sel_out(3 downto 0) => pipe_pclk_sel_out(3 downto 0), + pipe_rxoutclk_out(3 downto 0) => pipe_rxoutclk_out(3 downto 0), + pipe_rxusrclk_in => pipe_rxusrclk_in, + pipe_txoutclk_out => pipe_txoutclk_out, + pipe_userclk1_in => pipe_userclk1_in, + pipe_userclk2_in => \^pipe_userclk2_in\, + pl_directed_change_done => pl_directed_change_done, + pl_directed_link_auton => pl_directed_link_auton, + pl_directed_link_change(1 downto 0) => pl_directed_link_change(1 downto 0), + pl_directed_link_speed => pl_directed_link_speed, + pl_directed_link_width(1 downto 0) => pl_directed_link_width(1 downto 0), + pl_downstream_deemph_source => pl_downstream_deemph_source, + pl_initial_link_width(2 downto 0) => pl_initial_link_width(2 downto 0), + pl_lane_reversal_mode(1 downto 0) => pl_lane_reversal_mode(1 downto 0), + pl_link_gen2_cap => pl_link_gen2_cap, + pl_link_partner_gen2_supported => pl_link_partner_gen2_supported, + pl_link_upcfg_cap => pl_link_upcfg_cap, + pl_ltssm_state(5 downto 0) => pl_ltssm_state(5 downto 0), + pl_phy_lnk_up => pl_phy_lnk_up, + pl_received_hot_rst => pl_received_hot_rst, + pl_rx_pm_state(1 downto 0) => pl_rx_pm_state(1 downto 0), + pl_sel_lnk_rate => pl_sel_lnk_rate, + pl_sel_lnk_width(1 downto 0) => pl_sel_lnk_width(1 downto 0), + pl_transmit_hot_rst => pl_transmit_hot_rst, + pl_tx_pm_state(2 downto 0) => pl_tx_pm_state(2 downto 0), + pl_upstream_prefer_deemph => pl_upstream_prefer_deemph, + rx_np_ok => rx_np_ok, + rx_np_req => rx_np_req, + s_axis_tx_tdata(63 downto 0) => s_axis_tx_tdata(63 downto 0), + s_axis_tx_tkeep(0) => s_axis_tx_tkeep(7), + s_axis_tx_tlast => s_axis_tx_tlast, + s_axis_tx_tready => s_axis_tx_tready, + s_axis_tx_tuser(3 downto 0) => s_axis_tx_tuser(3 downto 0), + s_axis_tx_tvalid => s_axis_tx_tvalid, + sys_clk => sys_clk, + sys_rst_n => sys_rst_n, + tx_buf_av(5 downto 0) => tx_buf_av(5 downto 0), + tx_cfg_gnt => tx_cfg_gnt, + tx_cfg_req => tx_cfg_req, + tx_err_drop => tx_err_drop, + user_lnk_up => user_lnk_up, + user_reset_out => user_reset_out + ); +end STRUCTURE; +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.ALL; +entity pcie_7x_0 is + port ( + pci_exp_txp : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pci_exp_txn : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pci_exp_rxp : in STD_LOGIC_VECTOR ( 3 downto 0 ); + pci_exp_rxn : in STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_pclk_in : in STD_LOGIC; + pipe_rxusrclk_in : in STD_LOGIC; + pipe_rxoutclk_in : in STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_dclk_in : in STD_LOGIC; + pipe_userclk1_in : in STD_LOGIC; + pipe_userclk2_in : in STD_LOGIC; + pipe_oobclk_in : in STD_LOGIC; + pipe_mmcm_lock_in : in STD_LOGIC; + pipe_txoutclk_out : out STD_LOGIC; + pipe_rxoutclk_out : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_pclk_sel_out : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_gen3_out : out STD_LOGIC; + user_clk_out : out STD_LOGIC; + user_reset_out : out STD_LOGIC; + user_lnk_up : out STD_LOGIC; + user_app_rdy : out STD_LOGIC; + tx_buf_av : out STD_LOGIC_VECTOR ( 5 downto 0 ); + tx_cfg_req : out STD_LOGIC; + tx_err_drop : out STD_LOGIC; + s_axis_tx_tready : out STD_LOGIC; + s_axis_tx_tdata : in STD_LOGIC_VECTOR ( 63 downto 0 ); + s_axis_tx_tkeep : in STD_LOGIC_VECTOR ( 7 downto 0 ); + s_axis_tx_tlast : in STD_LOGIC; + s_axis_tx_tvalid : in STD_LOGIC; + s_axis_tx_tuser : in STD_LOGIC_VECTOR ( 3 downto 0 ); + tx_cfg_gnt : in STD_LOGIC; + m_axis_rx_tdata : out STD_LOGIC_VECTOR ( 63 downto 0 ); + m_axis_rx_tkeep : out STD_LOGIC_VECTOR ( 7 downto 0 ); + m_axis_rx_tlast : out STD_LOGIC; + m_axis_rx_tvalid : out STD_LOGIC; + m_axis_rx_tready : in STD_LOGIC; + m_axis_rx_tuser : out STD_LOGIC_VECTOR ( 21 downto 0 ); + rx_np_ok : in STD_LOGIC; + rx_np_req : in STD_LOGIC; + fc_cpld : out STD_LOGIC_VECTOR ( 11 downto 0 ); + fc_cplh : out STD_LOGIC_VECTOR ( 7 downto 0 ); + fc_npd : out STD_LOGIC_VECTOR ( 11 downto 0 ); + fc_nph : out STD_LOGIC_VECTOR ( 7 downto 0 ); + fc_pd : out STD_LOGIC_VECTOR ( 11 downto 0 ); + fc_ph : out STD_LOGIC_VECTOR ( 7 downto 0 ); + fc_sel : in STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_mgmt_do : out STD_LOGIC_VECTOR ( 31 downto 0 ); + cfg_mgmt_rd_wr_done : out STD_LOGIC; + cfg_status : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_command : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_dstatus : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_dcommand : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_lstatus : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_lcommand : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_dcommand2 : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_pcie_link_state : out STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_pmcsr_pme_en : out STD_LOGIC; + cfg_pmcsr_powerstate : out STD_LOGIC_VECTOR ( 1 downto 0 ); + cfg_pmcsr_pme_status : out STD_LOGIC; + cfg_received_func_lvl_rst : out STD_LOGIC; + cfg_mgmt_di : in STD_LOGIC_VECTOR ( 31 downto 0 ); + cfg_mgmt_byte_en : in STD_LOGIC_VECTOR ( 3 downto 0 ); + cfg_mgmt_dwaddr : in STD_LOGIC_VECTOR ( 9 downto 0 ); + cfg_mgmt_wr_en : in STD_LOGIC; + cfg_mgmt_rd_en : in STD_LOGIC; + cfg_mgmt_wr_readonly : in STD_LOGIC; + cfg_err_ecrc : in STD_LOGIC; + cfg_err_ur : in STD_LOGIC; + cfg_err_cpl_timeout : in STD_LOGIC; + cfg_err_cpl_unexpect : in STD_LOGIC; + cfg_err_cpl_abort : in STD_LOGIC; + cfg_err_posted : in STD_LOGIC; + cfg_err_cor : in STD_LOGIC; + cfg_err_atomic_egress_blocked : in STD_LOGIC; + cfg_err_internal_cor : in STD_LOGIC; + cfg_err_malformed : in STD_LOGIC; + cfg_err_mc_blocked : in STD_LOGIC; + cfg_err_poisoned : in STD_LOGIC; + cfg_err_norecovery : in STD_LOGIC; + cfg_err_tlp_cpl_header : in STD_LOGIC_VECTOR ( 47 downto 0 ); + cfg_err_cpl_rdy : out STD_LOGIC; + cfg_err_locked : in STD_LOGIC; + cfg_err_acs : in STD_LOGIC; + cfg_err_internal_uncor : in STD_LOGIC; + cfg_trn_pending : in STD_LOGIC; + cfg_pm_halt_aspm_l0s : in STD_LOGIC; + cfg_pm_halt_aspm_l1 : in STD_LOGIC; + cfg_pm_force_state_en : in STD_LOGIC; + cfg_pm_force_state : in STD_LOGIC_VECTOR ( 1 downto 0 ); + cfg_dsn : in STD_LOGIC_VECTOR ( 63 downto 0 ); + cfg_interrupt : in STD_LOGIC; + cfg_interrupt_rdy : out STD_LOGIC; + cfg_interrupt_assert : in STD_LOGIC; + cfg_interrupt_di : in STD_LOGIC_VECTOR ( 7 downto 0 ); + cfg_interrupt_do : out STD_LOGIC_VECTOR ( 7 downto 0 ); + cfg_interrupt_mmenable : out STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_interrupt_msienable : out STD_LOGIC; + cfg_interrupt_msixenable : out STD_LOGIC; + cfg_interrupt_msixfm : out STD_LOGIC; + cfg_interrupt_stat : in STD_LOGIC; + cfg_pciecap_interrupt_msgnum : in STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_to_turnoff : out STD_LOGIC; + cfg_turnoff_ok : in STD_LOGIC; + cfg_bus_number : out STD_LOGIC_VECTOR ( 7 downto 0 ); + cfg_device_number : out STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_function_number : out STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_pm_wake : in STD_LOGIC; + cfg_pm_send_pme_to : in STD_LOGIC; + cfg_ds_bus_number : in STD_LOGIC_VECTOR ( 7 downto 0 ); + cfg_ds_device_number : in STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_ds_function_number : in STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_mgmt_wr_rw1c_as_rw : in STD_LOGIC; + cfg_msg_received : out STD_LOGIC; + cfg_msg_data : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_bridge_serr_en : out STD_LOGIC; + cfg_slot_control_electromech_il_ctl_pulse : out STD_LOGIC; + cfg_root_control_syserr_corr_err_en : out STD_LOGIC; + cfg_root_control_syserr_non_fatal_err_en : out STD_LOGIC; + cfg_root_control_syserr_fatal_err_en : out STD_LOGIC; + cfg_root_control_pme_int_en : out STD_LOGIC; + cfg_aer_rooterr_corr_err_reporting_en : out STD_LOGIC; + cfg_aer_rooterr_non_fatal_err_reporting_en : out STD_LOGIC; + cfg_aer_rooterr_fatal_err_reporting_en : out STD_LOGIC; + cfg_aer_rooterr_corr_err_received : out STD_LOGIC; + cfg_aer_rooterr_non_fatal_err_received : out STD_LOGIC; + cfg_aer_rooterr_fatal_err_received : out STD_LOGIC; + cfg_msg_received_err_cor : out STD_LOGIC; + cfg_msg_received_err_non_fatal : out STD_LOGIC; + cfg_msg_received_err_fatal : out STD_LOGIC; + cfg_msg_received_pm_as_nak : out STD_LOGIC; + cfg_msg_received_pm_pme : out STD_LOGIC; + cfg_msg_received_pme_to_ack : out STD_LOGIC; + cfg_msg_received_assert_int_a : out STD_LOGIC; + cfg_msg_received_assert_int_b : out STD_LOGIC; + cfg_msg_received_assert_int_c : out STD_LOGIC; + cfg_msg_received_assert_int_d : out STD_LOGIC; + cfg_msg_received_deassert_int_a : out STD_LOGIC; + cfg_msg_received_deassert_int_b : out STD_LOGIC; + cfg_msg_received_deassert_int_c : out STD_LOGIC; + cfg_msg_received_deassert_int_d : out STD_LOGIC; + cfg_msg_received_setslotpowerlimit : out STD_LOGIC; + pl_directed_link_change : in STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_directed_link_width : in STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_directed_link_speed : in STD_LOGIC; + pl_directed_link_auton : in STD_LOGIC; + pl_upstream_prefer_deemph : in STD_LOGIC; + pl_sel_lnk_rate : out STD_LOGIC; + pl_sel_lnk_width : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_ltssm_state : out STD_LOGIC_VECTOR ( 5 downto 0 ); + pl_lane_reversal_mode : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_phy_lnk_up : out STD_LOGIC; + pl_tx_pm_state : out STD_LOGIC_VECTOR ( 2 downto 0 ); + pl_rx_pm_state : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_link_upcfg_cap : out STD_LOGIC; + pl_link_gen2_cap : out STD_LOGIC; + pl_link_partner_gen2_supported : out STD_LOGIC; + pl_initial_link_width : out STD_LOGIC_VECTOR ( 2 downto 0 ); + pl_directed_change_done : out STD_LOGIC; + pl_received_hot_rst : out STD_LOGIC; + pl_transmit_hot_rst : in STD_LOGIC; + pl_downstream_deemph_source : in STD_LOGIC; + cfg_err_aer_headerlog : in STD_LOGIC_VECTOR ( 127 downto 0 ); + cfg_aer_interrupt_msgnum : in STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_err_aer_headerlog_set : out STD_LOGIC; + cfg_aer_ecrc_check_en : out STD_LOGIC; + cfg_aer_ecrc_gen_en : out STD_LOGIC; + cfg_vc_tcvc_map : out STD_LOGIC_VECTOR ( 6 downto 0 ); + sys_clk : in STD_LOGIC; + sys_rst_n : in STD_LOGIC; + pipe_mmcm_rst_n : in STD_LOGIC; + pcie_drp_clk : in STD_LOGIC; + pcie_drp_en : in STD_LOGIC; + pcie_drp_we : in STD_LOGIC; + pcie_drp_addr : in STD_LOGIC_VECTOR ( 8 downto 0 ); + pcie_drp_di : in STD_LOGIC_VECTOR ( 15 downto 0 ); + pcie_drp_do : out STD_LOGIC_VECTOR ( 15 downto 0 ); + pcie_drp_rdy : out STD_LOGIC + ); + attribute NotValidForBitStream : boolean; + attribute NotValidForBitStream of pcie_7x_0 : entity is true; + attribute CHECK_LICENSE_TYPE : string; + attribute CHECK_LICENSE_TYPE of pcie_7x_0 : entity is "pcie_7x_0,pcie_7x_0_pcie2_top,{}"; + attribute DowngradeIPIdentifiedWarnings : string; + attribute DowngradeIPIdentifiedWarnings of pcie_7x_0 : entity is "yes"; + attribute X_CORE_INFO : string; + attribute X_CORE_INFO of pcie_7x_0 : entity is "pcie_7x_0_pcie2_top,Vivado 2020.2"; +end pcie_7x_0; + +architecture STRUCTURE of pcie_7x_0 is + signal \\ : STD_LOGIC; + signal \\ : STD_LOGIC; + signal \^cfg_command\ : STD_LOGIC_VECTOR ( 10 downto 0 ); + signal \^cfg_dcommand\ : STD_LOGIC_VECTOR ( 14 downto 0 ); + signal \^cfg_dcommand2\ : STD_LOGIC_VECTOR ( 11 downto 0 ); + signal \^cfg_dstatus\ : STD_LOGIC_VECTOR ( 5 downto 0 ); + signal \^cfg_lcommand\ : STD_LOGIC_VECTOR ( 11 downto 0 ); + signal \^cfg_lstatus\ : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal \^m_axis_rx_tkeep\ : STD_LOGIC_VECTOR ( 7 downto 4 ); + signal \^m_axis_rx_tuser\ : STD_LOGIC_VECTOR ( 21 downto 0 ); + signal NLW_inst_ext_ch_gt_drpclk_UNCONNECTED : STD_LOGIC; + signal NLW_inst_int_dclk_out_UNCONNECTED : STD_LOGIC; + signal NLW_inst_int_mmcm_lock_out_UNCONNECTED : STD_LOGIC; + signal NLW_inst_int_oobclk_out_UNCONNECTED : STD_LOGIC; + signal NLW_inst_int_pclk_out_slave_UNCONNECTED : STD_LOGIC; + signal NLW_inst_int_pipe_rxusrclk_out_UNCONNECTED : STD_LOGIC; + signal NLW_inst_int_userclk1_out_UNCONNECTED : STD_LOGIC; + signal NLW_inst_int_userclk2_out_UNCONNECTED : STD_LOGIC; + signal NLW_inst_pipe_qrst_idle_UNCONNECTED : STD_LOGIC; + signal NLW_inst_pipe_rate_idle_UNCONNECTED : STD_LOGIC; + signal NLW_inst_pipe_rst_idle_UNCONNECTED : STD_LOGIC; + signal NLW_inst_qpll_drp_clk_UNCONNECTED : STD_LOGIC; + signal NLW_inst_qpll_drp_gen3_UNCONNECTED : STD_LOGIC; + signal NLW_inst_qpll_drp_ovrd_UNCONNECTED : STD_LOGIC; + signal NLW_inst_qpll_drp_rst_n_UNCONNECTED : STD_LOGIC; + signal NLW_inst_qpll_drp_start_UNCONNECTED : STD_LOGIC; + signal NLW_inst_qpll_qplld_UNCONNECTED : STD_LOGIC; + signal NLW_inst_startup_cfgclk_UNCONNECTED : STD_LOGIC; + signal NLW_inst_startup_cfgmclk_UNCONNECTED : STD_LOGIC; + signal NLW_inst_startup_eos_UNCONNECTED : STD_LOGIC; + signal NLW_inst_startup_preq_UNCONNECTED : STD_LOGIC; + signal NLW_inst_user_app_rdy_UNCONNECTED : STD_LOGIC; + signal NLW_inst_cfg_command_UNCONNECTED : STD_LOGIC_VECTOR ( 15 downto 3 ); + signal NLW_inst_cfg_dcommand_UNCONNECTED : STD_LOGIC_VECTOR ( 15 to 15 ); + signal NLW_inst_cfg_dcommand2_UNCONNECTED : STD_LOGIC_VECTOR ( 15 downto 12 ); + signal NLW_inst_cfg_dstatus_UNCONNECTED : STD_LOGIC_VECTOR ( 15 downto 4 ); + signal NLW_inst_cfg_lcommand_UNCONNECTED : STD_LOGIC_VECTOR ( 15 downto 2 ); + signal NLW_inst_cfg_lstatus_UNCONNECTED : STD_LOGIC_VECTOR ( 12 downto 2 ); + signal NLW_inst_cfg_status_UNCONNECTED : STD_LOGIC_VECTOR ( 15 downto 0 ); + signal NLW_inst_common_commands_out_UNCONNECTED : STD_LOGIC_VECTOR ( 11 downto 0 ); + signal NLW_inst_ext_ch_gt_drpdo_UNCONNECTED : STD_LOGIC_VECTOR ( 63 downto 0 ); + signal NLW_inst_ext_ch_gt_drprdy_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_gt_ch_drp_rdy_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_icap_o_UNCONNECTED : STD_LOGIC_VECTOR ( 31 downto 0 ); + signal NLW_inst_int_qplllock_out_UNCONNECTED : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal NLW_inst_int_qplloutclk_out_UNCONNECTED : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal NLW_inst_int_qplloutrefclk_out_UNCONNECTED : STD_LOGIC_VECTOR ( 1 downto 0 ); + signal NLW_inst_int_rxoutclk_out_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_m_axis_rx_tkeep_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_m_axis_rx_tuser_UNCONNECTED : STD_LOGIC_VECTOR ( 20 downto 9 ); + signal NLW_inst_pipe_cpll_lock_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_pipe_debug_UNCONNECTED : STD_LOGIC_VECTOR ( 31 downto 0 ); + signal NLW_inst_pipe_debug_0_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_pipe_debug_1_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_pipe_debug_2_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_pipe_debug_3_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_pipe_debug_4_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_pipe_debug_5_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_pipe_debug_6_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_pipe_debug_7_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_pipe_debug_8_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_pipe_debug_9_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_pipe_dmonitorout_UNCONNECTED : STD_LOGIC_VECTOR ( 59 downto 0 ); + signal NLW_inst_pipe_drp_fsm_UNCONNECTED : STD_LOGIC_VECTOR ( 27 downto 0 ); + signal NLW_inst_pipe_eyescandataerror_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_pipe_qpll_lock_UNCONNECTED : STD_LOGIC_VECTOR ( 0 to 0 ); + signal NLW_inst_pipe_qrst_fsm_UNCONNECTED : STD_LOGIC_VECTOR ( 11 downto 0 ); + signal NLW_inst_pipe_rate_fsm_UNCONNECTED : STD_LOGIC_VECTOR ( 19 downto 0 ); + signal NLW_inst_pipe_rst_fsm_UNCONNECTED : STD_LOGIC_VECTOR ( 4 downto 0 ); + signal NLW_inst_pipe_rxbufstatus_UNCONNECTED : STD_LOGIC_VECTOR ( 11 downto 0 ); + signal NLW_inst_pipe_rxcommadet_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_pipe_rxdisperr_UNCONNECTED : STD_LOGIC_VECTOR ( 31 downto 0 ); + signal NLW_inst_pipe_rxdlysresetdone_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_pipe_rxnotintable_UNCONNECTED : STD_LOGIC_VECTOR ( 31 downto 0 ); + signal NLW_inst_pipe_rxphaligndone_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_pipe_rxpmaresetdone_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_pipe_rxprbserr_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_pipe_rxstatus_UNCONNECTED : STD_LOGIC_VECTOR ( 11 downto 0 ); + signal NLW_inst_pipe_rxsyncdone_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_pipe_sync_fsm_rx_UNCONNECTED : STD_LOGIC_VECTOR ( 27 downto 0 ); + signal NLW_inst_pipe_sync_fsm_tx_UNCONNECTED : STD_LOGIC_VECTOR ( 23 downto 0 ); + signal NLW_inst_pipe_tx_0_sigs_UNCONNECTED : STD_LOGIC_VECTOR ( 24 downto 0 ); + signal NLW_inst_pipe_tx_1_sigs_UNCONNECTED : STD_LOGIC_VECTOR ( 24 downto 0 ); + signal NLW_inst_pipe_tx_2_sigs_UNCONNECTED : STD_LOGIC_VECTOR ( 24 downto 0 ); + signal NLW_inst_pipe_tx_3_sigs_UNCONNECTED : STD_LOGIC_VECTOR ( 24 downto 0 ); + signal NLW_inst_pipe_tx_4_sigs_UNCONNECTED : STD_LOGIC_VECTOR ( 24 downto 0 ); + signal NLW_inst_pipe_tx_5_sigs_UNCONNECTED : STD_LOGIC_VECTOR ( 24 downto 0 ); + signal NLW_inst_pipe_tx_6_sigs_UNCONNECTED : STD_LOGIC_VECTOR ( 24 downto 0 ); + signal NLW_inst_pipe_tx_7_sigs_UNCONNECTED : STD_LOGIC_VECTOR ( 24 downto 0 ); + signal NLW_inst_pipe_txdlysresetdone_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_pipe_txphaligndone_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_pipe_txphinitdone_UNCONNECTED : STD_LOGIC_VECTOR ( 3 downto 0 ); + signal NLW_inst_qpll_qpllreset_UNCONNECTED : STD_LOGIC_VECTOR ( 1 downto 0 ); + attribute CFG_CTL_IF : string; + attribute CFG_CTL_IF of inst : label is "TRUE"; + attribute CFG_FC_IF : string; + attribute CFG_FC_IF of inst : label is "TRUE"; + attribute CFG_MGMT_IF : string; + attribute CFG_MGMT_IF of inst : label is "TRUE"; + attribute CFG_STATUS_IF : string; + attribute CFG_STATUS_IF of inst : label is "TRUE"; + attribute CLASS_CODE : string; + attribute CLASS_CODE of inst : label is "050000"; + attribute C_DATA_WIDTH : integer; + attribute C_DATA_WIDTH of inst : label is 64; + attribute DowngradeIPIdentifiedWarnings of inst : label is "yes"; + attribute ENABLE_JTAG_DBG : string; + attribute ENABLE_JTAG_DBG of inst : label is "FALSE"; + attribute ERR_REPORTING_IF : string; + attribute ERR_REPORTING_IF of inst : label is "TRUE"; + attribute EXT_CH_GT_DRP : string; + attribute EXT_CH_GT_DRP of inst : label is "FALSE"; + attribute EXT_PIPE_INTERFACE : string; + attribute EXT_PIPE_INTERFACE of inst : label is "FALSE"; + attribute EXT_STARTUP_PRIMITIVE : string; + attribute EXT_STARTUP_PRIMITIVE of inst : label is "FALSE"; + attribute KEEP_WIDTH : integer; + attribute KEEP_WIDTH of inst : label is 8; + attribute LINK_CAP_MAX_LINK_WIDTH : integer; + attribute LINK_CAP_MAX_LINK_WIDTH of inst : label is 4; + attribute PCIE_ASYNC_EN : string; + attribute PCIE_ASYNC_EN of inst : label is "FALSE"; + attribute PCIE_EXT_CLK : string; + attribute PCIE_EXT_CLK of inst : label is "TRUE"; + attribute PCIE_EXT_GT_COMMON : string; + attribute PCIE_EXT_GT_COMMON of inst : label is "FALSE"; + attribute PIPE_SIM : string; + attribute PIPE_SIM of inst : label is "FALSE"; + attribute PL_INTERFACE : string; + attribute PL_INTERFACE of inst : label is "TRUE"; + attribute RCV_MSG_IF : string; + attribute RCV_MSG_IF of inst : label is "TRUE"; + attribute REDUCE_OOB_FREQ : string; + attribute REDUCE_OOB_FREQ of inst : label is "FALSE"; + attribute SHARED_LOGIC_IN_CORE : string; + attribute SHARED_LOGIC_IN_CORE of inst : label is "FALSE"; + attribute TRANSCEIVER_CTRL_STATUS_PORTS : string; + attribute TRANSCEIVER_CTRL_STATUS_PORTS of inst : label is "FALSE"; + attribute bar_0 : string; + attribute bar_0 of inst : label is "FFFF0000"; + attribute bar_1 : string; + attribute bar_1 of inst : label is "00000000"; + attribute bar_2 : string; + attribute bar_2 of inst : label is "00000000"; + attribute bar_3 : string; + attribute bar_3 of inst : label is "00000000"; + attribute bar_4 : string; + attribute bar_4 of inst : label is "00000000"; + attribute bar_5 : string; + attribute bar_5 of inst : label is "00000000"; + attribute bram_lat : string; + attribute bram_lat of inst : label is "0"; + attribute c_aer_base_ptr : string; + attribute c_aer_base_ptr of inst : label is "000"; + attribute c_aer_cap_ecrc_check_capable : string; + attribute c_aer_cap_ecrc_check_capable of inst : label is "FALSE"; + attribute c_aer_cap_ecrc_gen_capable : string; + attribute c_aer_cap_ecrc_gen_capable of inst : label is "FALSE"; + attribute c_aer_cap_multiheader : string; + attribute c_aer_cap_multiheader of inst : label is "FALSE"; + attribute c_aer_cap_nextptr : string; + attribute c_aer_cap_nextptr of inst : label is "000"; + attribute c_aer_cap_on : string; + attribute c_aer_cap_on of inst : label is "FALSE"; + attribute c_aer_cap_optional_err_support : string; + attribute c_aer_cap_optional_err_support of inst : label is "000000"; + attribute c_aer_cap_permit_rooterr_update : string; + attribute c_aer_cap_permit_rooterr_update of inst : label is "FALSE"; + attribute c_buf_opt_bma : string; + attribute c_buf_opt_bma of inst : label is "TRUE"; + attribute c_component_name : string; + attribute c_component_name of inst : label is "pcie_7x_0"; + attribute c_cpl_inf : string; + attribute c_cpl_inf of inst : label is "TRUE"; + attribute c_cpl_infinite : string; + attribute c_cpl_infinite of inst : label is "TRUE"; + attribute c_cpl_timeout_disable_sup : string; + attribute c_cpl_timeout_disable_sup of inst : label is "FALSE"; + attribute c_cpl_timeout_range : string; + attribute c_cpl_timeout_range of inst : label is "0010"; + attribute c_cpl_timeout_ranges_sup : string; + attribute c_cpl_timeout_ranges_sup of inst : label is "2"; + attribute c_d1_support : string; + attribute c_d1_support of inst : label is "FALSE"; + attribute c_d2_support : string; + attribute c_d2_support of inst : label is "FALSE"; + attribute c_de_emph : string; + attribute c_de_emph of inst : label is "FALSE"; + attribute c_dev_cap2_ari_forwarding_supported : string; + attribute c_dev_cap2_ari_forwarding_supported of inst : label is "FALSE"; + attribute c_dev_cap2_atomicop32_completer_supported : string; + attribute c_dev_cap2_atomicop32_completer_supported of inst : label is "FALSE"; + attribute c_dev_cap2_atomicop64_completer_supported : string; + attribute c_dev_cap2_atomicop64_completer_supported of inst : label is "FALSE"; + attribute c_dev_cap2_atomicop_routing_supported : string; + attribute c_dev_cap2_atomicop_routing_supported of inst : label is "FALSE"; + attribute c_dev_cap2_cas128_completer_supported : string; + attribute c_dev_cap2_cas128_completer_supported of inst : label is "FALSE"; + attribute c_dev_cap2_tph_completer_supported : string; + attribute c_dev_cap2_tph_completer_supported of inst : label is "00"; + attribute c_dev_control_ext_tag_default : string; + attribute c_dev_control_ext_tag_default of inst : label is "FALSE"; + attribute c_dev_port_type : string; + attribute c_dev_port_type of inst : label is "0"; + attribute c_dis_lane_reverse : string; + attribute c_dis_lane_reverse of inst : label is "TRUE"; + attribute c_disable_rx_poisoned_resp : string; + attribute c_disable_rx_poisoned_resp of inst : label is "FALSE"; + attribute c_disable_scrambling : string; + attribute c_disable_scrambling of inst : label is "FALSE"; + attribute c_disable_tx_aspm_l0s : string; + attribute c_disable_tx_aspm_l0s of inst : label is "FALSE"; + attribute c_dll_lnk_actv_cap : string; + attribute c_dll_lnk_actv_cap of inst : label is "FALSE"; + attribute c_dsi_bool : string; + attribute c_dsi_bool of inst : label is "FALSE"; + attribute c_dsn_base_ptr : string; + attribute c_dsn_base_ptr of inst : label is "100"; + attribute c_dsn_cap_enabled : string; + attribute c_dsn_cap_enabled of inst : label is "TRUE"; + attribute c_dsn_next_ptr : string; + attribute c_dsn_next_ptr of inst : label is "000"; + attribute c_enable_msg_route : string; + attribute c_enable_msg_route of inst : label is "00000000000"; + attribute c_ep_l0s_accpt_lat : string; + attribute c_ep_l0s_accpt_lat of inst : label is "0"; + attribute c_ep_l1_accpt_lat : string; + attribute c_ep_l1_accpt_lat of inst : label is "7"; + attribute c_ext_pci_cfg_space_addr : string; + attribute c_ext_pci_cfg_space_addr of inst : label is "3FF"; + attribute c_external_clocking : string; + attribute c_external_clocking of inst : label is "TRUE"; + attribute c_fc_cpld : string; + attribute c_fc_cpld of inst : label is "973"; + attribute c_fc_cplh : string; + attribute c_fc_cplh of inst : label is "36"; + attribute c_fc_npd : string; + attribute c_fc_npd of inst : label is "24"; + attribute c_fc_nph : string; + attribute c_fc_nph of inst : label is "12"; + attribute c_fc_pd : string; + attribute c_fc_pd of inst : label is "949"; + attribute c_fc_ph : string; + attribute c_fc_ph of inst : label is "32"; + attribute c_gen1 : string; + attribute c_gen1 of inst : label is "1'b1"; + attribute c_header_type : string; + attribute c_header_type of inst : label is "00"; + attribute c_hw_auton_spd_disable : string; + attribute c_hw_auton_spd_disable of inst : label is "FALSE"; + attribute c_int_width : integer; + attribute c_int_width of inst : label is 64; + attribute c_last_cfg_dw : string; + attribute c_last_cfg_dw of inst : label is "10C"; + attribute c_link_cap_aspm_optionality : string; + attribute c_link_cap_aspm_optionality of inst : label is "FALSE"; + attribute c_ll_ack_timeout : string; + attribute c_ll_ack_timeout of inst : label is "0000"; + attribute c_ll_ack_timeout_enable : string; + attribute c_ll_ack_timeout_enable of inst : label is "FALSE"; + attribute c_ll_ack_timeout_function : string; + attribute c_ll_ack_timeout_function of inst : label is "0"; + attribute c_ll_replay_timeout : string; + attribute c_ll_replay_timeout of inst : label is "0000"; + attribute c_ll_replay_timeout_enable : string; + attribute c_ll_replay_timeout_enable of inst : label is "FALSE"; + attribute c_ll_replay_timeout_func : string; + attribute c_ll_replay_timeout_func of inst : label is "1"; + attribute c_lnk_bndwdt_notif : string; + attribute c_lnk_bndwdt_notif of inst : label is "FALSE"; + attribute c_msi : string; + attribute c_msi of inst : label is "0"; + attribute c_msi_64b_addr : string; + attribute c_msi_64b_addr of inst : label is "TRUE"; + attribute c_msi_cap_on : string; + attribute c_msi_cap_on of inst : label is "FALSE"; + attribute c_msi_mult_msg_extn : string; + attribute c_msi_mult_msg_extn of inst : label is "0"; + attribute c_msi_per_vctr_mask_cap : string; + attribute c_msi_per_vctr_mask_cap of inst : label is "FALSE"; + attribute c_msix_cap_on : string; + attribute c_msix_cap_on of inst : label is "FALSE"; + attribute c_msix_next_ptr : string; + attribute c_msix_next_ptr of inst : label is "00"; + attribute c_msix_pba_bir : string; + attribute c_msix_pba_bir of inst : label is "0"; + attribute c_msix_pba_offset : string; + attribute c_msix_pba_offset of inst : label is "0"; + attribute c_msix_table_bir : string; + attribute c_msix_table_bir of inst : label is "0"; + attribute c_msix_table_offset : string; + attribute c_msix_table_offset of inst : label is "0"; + attribute c_msix_table_size : string; + attribute c_msix_table_size of inst : label is "000"; + attribute c_pci_cfg_space_addr : string; + attribute c_pci_cfg_space_addr of inst : label is "3F"; + attribute c_pcie_blk_locn : string; + attribute c_pcie_blk_locn of inst : label is "0"; + attribute c_pcie_cap_next_ptr : string; + attribute c_pcie_cap_next_ptr of inst : label is "00"; + attribute c_pcie_cap_slot_implemented : string; + attribute c_pcie_cap_slot_implemented of inst : label is "FALSE"; + attribute c_pcie_dbg_ports : string; + attribute c_pcie_dbg_ports of inst : label is "TRUE"; + attribute c_pcie_fast_config : integer; + attribute c_pcie_fast_config of inst : label is 0; + attribute c_perf_level_high : string; + attribute c_perf_level_high of inst : label is "TRUE"; + attribute c_phantom_functions : string; + attribute c_phantom_functions of inst : label is "0"; + attribute c_pm_cap_next_ptr : string; + attribute c_pm_cap_next_ptr of inst : label is "60"; + attribute c_pme_support : string; + attribute c_pme_support of inst : label is "0F"; + attribute c_rbar_base_ptr : string; + attribute c_rbar_base_ptr of inst : label is "000"; + attribute c_rbar_cap_control_encodedbar0 : string; + attribute c_rbar_cap_control_encodedbar0 of inst : label is "00"; + attribute c_rbar_cap_control_encodedbar1 : string; + attribute c_rbar_cap_control_encodedbar1 of inst : label is "00"; + attribute c_rbar_cap_control_encodedbar2 : string; + attribute c_rbar_cap_control_encodedbar2 of inst : label is "00"; + attribute c_rbar_cap_control_encodedbar3 : string; + attribute c_rbar_cap_control_encodedbar3 of inst : label is "00"; + attribute c_rbar_cap_control_encodedbar4 : string; + attribute c_rbar_cap_control_encodedbar4 of inst : label is "00"; + attribute c_rbar_cap_control_encodedbar5 : string; + attribute c_rbar_cap_control_encodedbar5 of inst : label is "00"; + attribute c_rbar_cap_index0 : string; + attribute c_rbar_cap_index0 of inst : label is "0"; + attribute c_rbar_cap_index1 : string; + attribute c_rbar_cap_index1 of inst : label is "0"; + attribute c_rbar_cap_index2 : string; + attribute c_rbar_cap_index2 of inst : label is "0"; + attribute c_rbar_cap_index3 : string; + attribute c_rbar_cap_index3 of inst : label is "0"; + attribute c_rbar_cap_index4 : string; + attribute c_rbar_cap_index4 of inst : label is "0"; + attribute c_rbar_cap_index5 : string; + attribute c_rbar_cap_index5 of inst : label is "0"; + attribute c_rbar_cap_nextptr : string; + attribute c_rbar_cap_nextptr of inst : label is "000"; + attribute c_rbar_cap_on : string; + attribute c_rbar_cap_on of inst : label is "FALSE"; + attribute c_rbar_cap_sup0 : string; + attribute c_rbar_cap_sup0 of inst : label is "00001"; + attribute c_rbar_cap_sup1 : string; + attribute c_rbar_cap_sup1 of inst : label is "00001"; + attribute c_rbar_cap_sup2 : string; + attribute c_rbar_cap_sup2 of inst : label is "00001"; + attribute c_rbar_cap_sup3 : string; + attribute c_rbar_cap_sup3 of inst : label is "00001"; + attribute c_rbar_cap_sup4 : string; + attribute c_rbar_cap_sup4 of inst : label is "00001"; + attribute c_rbar_cap_sup5 : string; + attribute c_rbar_cap_sup5 of inst : label is "00001"; + attribute c_rbar_num : string; + attribute c_rbar_num of inst : label is "0"; + attribute c_rcb : string; + attribute c_rcb of inst : label is "0"; + attribute c_recrc_check : string; + attribute c_recrc_check of inst : label is "0"; + attribute c_recrc_check_trim : string; + attribute c_recrc_check_trim of inst : label is "FALSE"; + attribute c_rev_gt_order : string; + attribute c_rev_gt_order of inst : label is "FALSE"; + attribute c_root_cap_crs : string; + attribute c_root_cap_crs of inst : label is "FALSE"; + attribute c_rx_raddr_lat : string; + attribute c_rx_raddr_lat of inst : label is "0"; + attribute c_rx_ram_limit : string; + attribute c_rx_ram_limit of inst : label is "FFF"; + attribute c_rx_rdata_lat : string; + attribute c_rx_rdata_lat of inst : label is "2"; + attribute c_rx_write_lat : string; + attribute c_rx_write_lat of inst : label is "0"; + attribute c_silicon_rev : string; + attribute c_silicon_rev of inst : label is "2"; + attribute c_slot_cap_attn_butn : string; + attribute c_slot_cap_attn_butn of inst : label is "FALSE"; + attribute c_slot_cap_attn_ind : string; + attribute c_slot_cap_attn_ind of inst : label is "FALSE"; + attribute c_slot_cap_elec_interlock : string; + attribute c_slot_cap_elec_interlock of inst : label is "FALSE"; + attribute c_slot_cap_hotplug_cap : string; + attribute c_slot_cap_hotplug_cap of inst : label is "FALSE"; + attribute c_slot_cap_hotplug_surprise : string; + attribute c_slot_cap_hotplug_surprise of inst : label is "FALSE"; + attribute c_slot_cap_mrl : string; + attribute c_slot_cap_mrl of inst : label is "FALSE"; + attribute c_slot_cap_no_cmd_comp_sup : string; + attribute c_slot_cap_no_cmd_comp_sup of inst : label is "FALSE"; + attribute c_slot_cap_physical_slot_num : string; + attribute c_slot_cap_physical_slot_num of inst : label is "0"; + attribute c_slot_cap_pwr_ctrl : string; + attribute c_slot_cap_pwr_ctrl of inst : label is "FALSE"; + attribute c_slot_cap_pwr_ind : string; + attribute c_slot_cap_pwr_ind of inst : label is "FALSE"; + attribute c_slot_cap_pwr_limit_scale : string; + attribute c_slot_cap_pwr_limit_scale of inst : label is "0"; + attribute c_slot_cap_pwr_limit_value : string; + attribute c_slot_cap_pwr_limit_value of inst : label is "0"; + attribute c_surprise_dn_err_cap : string; + attribute c_surprise_dn_err_cap of inst : label is "FALSE"; + attribute c_trgt_lnk_spd : string; + attribute c_trgt_lnk_spd of inst : label is "2"; + attribute c_trn_np_fc : string; + attribute c_trn_np_fc of inst : label is "TRUE"; + attribute c_tx_last_tlp : string; + attribute c_tx_last_tlp of inst : label is "30"; + attribute c_tx_raddr_lat : string; + attribute c_tx_raddr_lat of inst : label is "0"; + attribute c_tx_rdata_lat : string; + attribute c_tx_rdata_lat of inst : label is "2"; + attribute c_tx_write_lat : string; + attribute c_tx_write_lat of inst : label is "0"; + attribute c_upconfig_capable : string; + attribute c_upconfig_capable of inst : label is "TRUE"; + attribute c_upstream_facing : string; + attribute c_upstream_facing of inst : label is "TRUE"; + attribute c_ur_atomic : string; + attribute c_ur_atomic of inst : label is "FALSE"; + attribute c_ur_inv_req : string; + attribute c_ur_inv_req of inst : label is "TRUE"; + attribute c_ur_prs_response : string; + attribute c_ur_prs_response of inst : label is "TRUE"; + attribute c_vc_base_ptr : string; + attribute c_vc_base_ptr of inst : label is "000"; + attribute c_vc_cap_enabled : string; + attribute c_vc_cap_enabled of inst : label is "FALSE"; + attribute c_vc_cap_reject_snoop : string; + attribute c_vc_cap_reject_snoop of inst : label is "FALSE"; + attribute c_vc_next_ptr : string; + attribute c_vc_next_ptr of inst : label is "000"; + attribute c_vsec_base_ptr : string; + attribute c_vsec_base_ptr of inst : label is "000"; + attribute c_vsec_cap_enabled : string; + attribute c_vsec_cap_enabled of inst : label is "FALSE"; + attribute c_vsec_next_ptr : string; + attribute c_vsec_next_ptr of inst : label is "000"; + attribute c_xlnx_ref_board : string; + attribute c_xlnx_ref_board of inst : label is "ZC706"; + attribute cap_ver : string; + attribute cap_ver of inst : label is "2"; + attribute cardbus_cis_ptr : string; + attribute cardbus_cis_ptr of inst : label is "00000000"; + attribute cmps : string; + attribute cmps of inst : label is "3"; + attribute con_scl_fctr_d0_state : string; + attribute con_scl_fctr_d0_state of inst : label is "0"; + attribute con_scl_fctr_d1_state : string; + attribute con_scl_fctr_d1_state of inst : label is "0"; + attribute con_scl_fctr_d2_state : string; + attribute con_scl_fctr_d2_state of inst : label is "0"; + attribute con_scl_fctr_d3_state : string; + attribute con_scl_fctr_d3_state of inst : label is "0"; + attribute cost_table : integer; + attribute cost_table of inst : label is 1; + attribute d1_sup : string; + attribute d1_sup of inst : label is "0"; + attribute d2_sup : string; + attribute d2_sup of inst : label is "0"; + attribute dev_id : string; + attribute dev_id of inst : label is "7024"; + attribute dev_port_type : string; + attribute dev_port_type of inst : label is "0000"; + attribute dis_scl_fctr_d0_state : string; + attribute dis_scl_fctr_d0_state of inst : label is "0"; + attribute dis_scl_fctr_d1_state : string; + attribute dis_scl_fctr_d1_state of inst : label is "0"; + attribute dis_scl_fctr_d2_state : string; + attribute dis_scl_fctr_d2_state of inst : label is "0"; + attribute dis_scl_fctr_d3_state : string; + attribute dis_scl_fctr_d3_state of inst : label is "0"; + attribute dsi : string; + attribute dsi of inst : label is "0"; + attribute ep_l0s_accpt_lat : string; + attribute ep_l0s_accpt_lat of inst : label is "000"; + attribute ep_l1_accpt_lat : string; + attribute ep_l1_accpt_lat of inst : label is "111"; + attribute ext_tag_fld_sup : string; + attribute ext_tag_fld_sup of inst : label is "FALSE"; + attribute int_pin : string; + attribute int_pin of inst : label is "1"; + attribute intx : string; + attribute intx of inst : label is "TRUE"; + attribute max_lnk_spd : string; + attribute max_lnk_spd of inst : label is "2"; + attribute max_lnk_wdt : string; + attribute max_lnk_wdt of inst : label is "000100"; + attribute mps : string; + attribute mps of inst : label is "011"; + attribute no_soft_rst : string; + attribute no_soft_rst of inst : label is "TRUE"; + attribute pci_exp_int_freq : integer; + attribute pci_exp_int_freq of inst : label is 3; + attribute pci_exp_ref_freq : string; + attribute pci_exp_ref_freq of inst : label is "0"; + attribute phantm_func_sup : string; + attribute phantm_func_sup of inst : label is "00"; + attribute pme_sup : string; + attribute pme_sup of inst : label is "0F"; + attribute pwr_con_d0_state : string; + attribute pwr_con_d0_state of inst : label is "00"; + attribute pwr_con_d1_state : string; + attribute pwr_con_d1_state of inst : label is "00"; + attribute pwr_con_d2_state : string; + attribute pwr_con_d2_state of inst : label is "00"; + attribute pwr_con_d3_state : string; + attribute pwr_con_d3_state of inst : label is "00"; + attribute pwr_dis_d0_state : string; + attribute pwr_dis_d0_state of inst : label is "00"; + attribute pwr_dis_d1_state : string; + attribute pwr_dis_d1_state of inst : label is "00"; + attribute pwr_dis_d2_state : string; + attribute pwr_dis_d2_state of inst : label is "00"; + attribute pwr_dis_d3_state : string; + attribute pwr_dis_d3_state of inst : label is "00"; + attribute rev_id : string; + attribute rev_id of inst : label is "00"; + attribute slot_clk : string; + attribute slot_clk of inst : label is "TRUE"; + attribute subsys_id : string; + attribute subsys_id of inst : label is "0007"; + attribute subsys_ven_id : string; + attribute subsys_ven_id of inst : label is "10EE"; + attribute ven_id : string; + attribute ven_id of inst : label is "10EE"; + attribute xrom_bar : string; + attribute xrom_bar of inst : label is "00000000"; + attribute X_INTERFACE_INFO : string; + attribute X_INTERFACE_INFO of cfg_aer_ecrc_check_en : signal is "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err aer_ecrc_check_en"; + attribute X_INTERFACE_INFO of cfg_aer_ecrc_gen_en : signal is "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err aer_ecrc_gen_en"; + attribute X_INTERFACE_INFO of cfg_aer_rooterr_corr_err_received : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status aer_rooterr_corr_err_received"; + attribute X_INTERFACE_INFO of cfg_aer_rooterr_corr_err_reporting_en : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status aer_rooterr_corr_err_reporting_en"; + attribute X_INTERFACE_INFO of cfg_aer_rooterr_fatal_err_received : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status aer_rooterr_fatal_err_received"; + attribute X_INTERFACE_INFO of cfg_aer_rooterr_fatal_err_reporting_en : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status aer_rooterr_fatal_err_reporting_en"; + attribute X_INTERFACE_INFO of cfg_aer_rooterr_non_fatal_err_received : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status aer_rooterr_non_fatal_err_received"; + attribute X_INTERFACE_INFO of cfg_aer_rooterr_non_fatal_err_reporting_en : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status aer_rooterr_non_fatal_err_reporting_en"; + attribute X_INTERFACE_INFO of cfg_bridge_serr_en : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status bridge_serr_en"; + attribute X_INTERFACE_INFO of cfg_err_acs : signal is "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err acs"; + attribute X_INTERFACE_INFO of cfg_err_aer_headerlog_set : signal is "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err err_aer_headerlog_set"; + attribute X_INTERFACE_INFO of cfg_err_atomic_egress_blocked : signal is "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err atomic_egress_blocked"; + attribute X_INTERFACE_INFO of cfg_err_cor : signal is "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err cor"; + attribute X_INTERFACE_INFO of cfg_err_cpl_abort : signal is "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err cpl_abort"; + attribute X_INTERFACE_INFO of cfg_err_cpl_rdy : signal is "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err cpl_rdy"; + attribute X_INTERFACE_INFO of cfg_err_cpl_timeout : signal is "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err cpl_timeout"; + attribute X_INTERFACE_INFO of cfg_err_cpl_unexpect : signal is "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err cpl_unexpect"; + attribute X_INTERFACE_INFO of cfg_err_ecrc : signal is "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err ecrc"; + attribute X_INTERFACE_INFO of cfg_err_internal_cor : signal is "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err internal_cor"; + attribute X_INTERFACE_INFO of cfg_err_internal_uncor : signal is "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err internal_uncor"; + attribute X_INTERFACE_INFO of cfg_err_locked : signal is "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err locked"; + attribute X_INTERFACE_INFO of cfg_err_malformed : signal is "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err malformed"; + attribute X_INTERFACE_INFO of cfg_err_mc_blocked : signal is "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err mc_blocked"; + attribute X_INTERFACE_INFO of cfg_err_norecovery : signal is "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err norecovery"; + attribute X_INTERFACE_INFO of cfg_err_poisoned : signal is "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err poisoned"; + attribute X_INTERFACE_INFO of cfg_err_posted : signal is "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err posted"; + attribute X_INTERFACE_INFO of cfg_err_ur : signal is "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err ur"; + attribute X_INTERFACE_INFO of cfg_interrupt : signal is "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt interrupt"; + attribute X_INTERFACE_INFO of cfg_interrupt_assert : signal is "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt assert"; + attribute X_INTERFACE_INFO of cfg_interrupt_msienable : signal is "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt msienable"; + attribute X_INTERFACE_INFO of cfg_interrupt_msixenable : signal is "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt msixenable"; + attribute X_INTERFACE_INFO of cfg_interrupt_msixfm : signal is "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt msixfm"; + attribute X_INTERFACE_INFO of cfg_interrupt_rdy : signal is "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt rdy"; + attribute X_INTERFACE_INFO of cfg_interrupt_stat : signal is "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt stat"; + attribute X_INTERFACE_INFO of cfg_mgmt_rd_en : signal is "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt READ_EN"; + attribute X_INTERFACE_INFO of cfg_mgmt_rd_wr_done : signal is "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt READ_WRITE_DONE"; + attribute X_INTERFACE_INFO of cfg_mgmt_wr_en : signal is "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt WRITE_EN"; + attribute X_INTERFACE_INFO of cfg_mgmt_wr_readonly : signal is "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt READONLY"; + attribute X_INTERFACE_INFO of cfg_mgmt_wr_rw1c_as_rw : signal is "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt TYPE1_CFG_REG_ACCESS"; + attribute X_INTERFACE_INFO of cfg_msg_received : signal is "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd received"; + attribute X_INTERFACE_INFO of cfg_msg_received_assert_int_a : signal is "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd assert_int_a"; + attribute X_INTERFACE_INFO of cfg_msg_received_assert_int_b : signal is "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd assert_int_b"; + attribute X_INTERFACE_INFO of cfg_msg_received_assert_int_c : signal is "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd assert_int_c"; + attribute X_INTERFACE_INFO of cfg_msg_received_assert_int_d : signal is "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd assert_int_d"; + attribute X_INTERFACE_INFO of cfg_msg_received_deassert_int_a : signal is "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd deassert_int_a"; + attribute X_INTERFACE_INFO of cfg_msg_received_deassert_int_b : signal is "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd deassert_int_b"; + attribute X_INTERFACE_INFO of cfg_msg_received_deassert_int_c : signal is "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd deassert_int_c"; + attribute X_INTERFACE_INFO of cfg_msg_received_deassert_int_d : signal is "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd deassert_int_d"; + attribute X_INTERFACE_INFO of cfg_msg_received_err_cor : signal is "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd err_cor"; + attribute X_INTERFACE_INFO of cfg_msg_received_err_fatal : signal is "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd err_fatal"; + attribute X_INTERFACE_INFO of cfg_msg_received_err_non_fatal : signal is "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd err_non_fatal"; + attribute X_INTERFACE_INFO of cfg_msg_received_pm_as_nak : signal is "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd received_pm_as_nak"; + attribute X_INTERFACE_INFO of cfg_msg_received_pm_pme : signal is "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd pm_pme"; + attribute X_INTERFACE_INFO of cfg_msg_received_pme_to_ack : signal is "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd pme_to_ack"; + attribute X_INTERFACE_INFO of cfg_msg_received_setslotpowerlimit : signal is "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd received_setslotpowerlimit"; + attribute X_INTERFACE_INFO of cfg_pm_force_state_en : signal is "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control pm_force_state_en"; + attribute X_INTERFACE_INFO of cfg_pm_halt_aspm_l0s : signal is "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control pm_halt_aspm_l0s"; + attribute X_INTERFACE_INFO of cfg_pm_halt_aspm_l1 : signal is "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control pm_halt_aspm_l1"; + attribute X_INTERFACE_INFO of cfg_pm_send_pme_to : signal is "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control pm_send_pme_to"; + attribute X_INTERFACE_INFO of cfg_pm_wake : signal is "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control pm_wake"; + attribute X_INTERFACE_INFO of cfg_pmcsr_pme_en : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status pmcsr_pme_en"; + attribute X_INTERFACE_INFO of cfg_pmcsr_pme_status : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status pmcsr_pme_status"; + attribute X_INTERFACE_INFO of cfg_received_func_lvl_rst : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status received_func_lvl_rst"; + attribute X_INTERFACE_INFO of cfg_root_control_pme_int_en : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status root_control_pme_int_en"; + attribute X_INTERFACE_INFO of cfg_root_control_syserr_corr_err_en : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status root_control_syserr_corr_err_en"; + attribute X_INTERFACE_INFO of cfg_root_control_syserr_fatal_err_en : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status root_control_syserr_fatal_err_en"; + attribute X_INTERFACE_INFO of cfg_root_control_syserr_non_fatal_err_en : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status root_control_syserr_non_fatal_err_en"; + attribute X_INTERFACE_INFO of cfg_slot_control_electromech_il_ctl_pulse : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status slot_control_electromech_il_ctl_pulse"; + attribute X_INTERFACE_INFO of cfg_to_turnoff : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status turnoff"; + attribute X_INTERFACE_INFO of cfg_trn_pending : signal is "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control trn_pending"; + attribute X_INTERFACE_INFO of cfg_turnoff_ok : signal is "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control turnoff_ok"; + attribute X_INTERFACE_INFO of m_axis_rx_tlast : signal is "xilinx.com:interface:axis:1.0 m_axis_rx TLAST"; + attribute X_INTERFACE_INFO of m_axis_rx_tready : signal is "xilinx.com:interface:axis:1.0 m_axis_rx TREADY"; + attribute X_INTERFACE_INFO of m_axis_rx_tvalid : signal is "xilinx.com:interface:axis:1.0 m_axis_rx TVALID"; + attribute X_INTERFACE_INFO of pcie_drp_en : signal is "xilinx.com:interface:drp:1.0 drp DEN"; + attribute X_INTERFACE_INFO of pcie_drp_rdy : signal is "xilinx.com:interface:drp:1.0 drp DRDY"; + attribute X_INTERFACE_INFO of pcie_drp_we : signal is "xilinx.com:interface:drp:1.0 drp DWE"; + attribute X_INTERFACE_INFO of pipe_dclk_in : signal is "xilinx.com:interface:pipe_clock:1.0 pipe_clock dclk_in"; + attribute X_INTERFACE_INFO of pipe_gen3_out : signal is "xilinx.com:interface:pipe_clock:1.0 pipe_clock gen3_out"; + attribute X_INTERFACE_INFO of pipe_mmcm_lock_in : signal is "xilinx.com:interface:pipe_clock:1.0 pipe_clock mmcm_lock_in"; + attribute X_INTERFACE_INFO of pipe_mmcm_rst_n : signal is "xilinx.com:interface:pipe_clock:1.0 pipe_clock mmcm_rst_n"; + attribute X_INTERFACE_INFO of pipe_oobclk_in : signal is "xilinx.com:interface:pipe_clock:1.0 pipe_clock oobclk_in"; + attribute X_INTERFACE_INFO of pipe_pclk_in : signal is "xilinx.com:interface:pipe_clock:1.0 pipe_clock pclk_in"; + attribute X_INTERFACE_INFO of pipe_rxusrclk_in : signal is "xilinx.com:interface:pipe_clock:1.0 pipe_clock rxusrclk_in"; + attribute X_INTERFACE_INFO of pipe_txoutclk_out : signal is "xilinx.com:interface:pipe_clock:1.0 pipe_clock txoutclk_out"; + attribute X_INTERFACE_INFO of pipe_userclk1_in : signal is "xilinx.com:interface:pipe_clock:1.0 pipe_clock userclk1_in"; + attribute X_INTERFACE_INFO of pipe_userclk2_in : signal is "xilinx.com:interface:pipe_clock:1.0 pipe_clock userclk2_in"; + attribute X_INTERFACE_INFO of pl_directed_change_done : signal is "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl directed_change_done"; + attribute X_INTERFACE_INFO of pl_directed_link_auton : signal is "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl directed_link_auton"; + attribute X_INTERFACE_INFO of pl_directed_link_speed : signal is "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl directed_link_speed"; + attribute X_INTERFACE_INFO of pl_downstream_deemph_source : signal is "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl downstream_deemph_source"; + attribute X_INTERFACE_INFO of pl_link_gen2_cap : signal is "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl link_gen2_cap"; + attribute X_INTERFACE_INFO of pl_link_partner_gen2_supported : signal is "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl link_partner_gen2_supported"; + attribute X_INTERFACE_INFO of pl_link_upcfg_cap : signal is "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl link_upcfg_cap"; + attribute X_INTERFACE_INFO of pl_phy_lnk_up : signal is "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl phy_lnk_up"; + attribute X_INTERFACE_INFO of pl_received_hot_rst : signal is "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl received_hot_rst"; + attribute X_INTERFACE_INFO of pl_sel_lnk_rate : signal is "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl sel_lnk_rate"; + attribute X_INTERFACE_INFO of pl_transmit_hot_rst : signal is "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl transmit_hot_rst"; + attribute X_INTERFACE_INFO of pl_upstream_prefer_deemph : signal is "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl upstream_prefer_deemph"; + attribute X_INTERFACE_INFO of rx_np_ok : signal is "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control rx_np_ok"; + attribute X_INTERFACE_INFO of rx_np_req : signal is "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control rx_np_req"; + attribute X_INTERFACE_INFO of s_axis_tx_tlast : signal is "xilinx.com:interface:axis:1.0 s_axis_tx TLAST"; + attribute X_INTERFACE_INFO of s_axis_tx_tready : signal is "xilinx.com:interface:axis:1.0 s_axis_tx TREADY"; + attribute X_INTERFACE_INFO of s_axis_tx_tvalid : signal is "xilinx.com:interface:axis:1.0 s_axis_tx TVALID"; + attribute X_INTERFACE_INFO of sys_clk : signal is "xilinx.com:signal:clock:1.0 CLK.sys_clk CLK"; + attribute X_INTERFACE_PARAMETER : string; + attribute X_INTERFACE_PARAMETER of sys_clk : signal is "XIL_INTERFACENAME CLK.sys_clk, FREQ_HZ 100000000, FREQ_TOLERANCE_HZ 0, PHASE 0.000, INSERT_VIP 0"; + attribute X_INTERFACE_INFO of sys_rst_n : signal is "xilinx.com:signal:reset:1.0 RST.sys_rst_n RST"; + attribute X_INTERFACE_PARAMETER of sys_rst_n : signal is "XIL_INTERFACENAME RST.sys_rst_n, POLARITY ACTIVE_LOW, INSERT_VIP 0"; + attribute X_INTERFACE_INFO of tx_cfg_gnt : signal is "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control tx_cfg_gnt"; + attribute X_INTERFACE_INFO of tx_cfg_req : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status tx_cfg_req"; + attribute X_INTERFACE_INFO of tx_err_drop : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status tx_err_drop"; + attribute X_INTERFACE_INFO of user_clk_out : signal is "xilinx.com:signal:clock:1.0 CLK.user_clk_out CLK"; + attribute X_INTERFACE_PARAMETER of user_clk_out : signal is "XIL_INTERFACENAME CLK.user_clk_out, ASSOCIATED_BUSIF m_axis_rx:s_axis_tx, FREQ_HZ 125000000, ASSOCIATED_RESET user_reset_out, FREQ_TOLERANCE_HZ 0, PHASE 0.000, INSERT_VIP 0"; + attribute X_INTERFACE_INFO of user_reset_out : signal is "xilinx.com:signal:reset:1.0 RST.user_reset_out RST"; + attribute X_INTERFACE_PARAMETER of user_reset_out : signal is "XIL_INTERFACENAME RST.user_reset_out, POLARITY ACTIVE_HIGH, INSERT_VIP 0"; + attribute X_INTERFACE_INFO of cfg_aer_interrupt_msgnum : signal is "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err aer_interrupt_msgnum"; + attribute X_INTERFACE_INFO of cfg_bus_number : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status bus_number"; + attribute X_INTERFACE_INFO of cfg_command : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status command"; + attribute X_INTERFACE_INFO of cfg_dcommand : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status dcommand"; + attribute X_INTERFACE_INFO of cfg_dcommand2 : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status dcommand2"; + attribute X_INTERFACE_INFO of cfg_device_number : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status device_number"; + attribute X_INTERFACE_INFO of cfg_ds_bus_number : signal is "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control ds_bus_number"; + attribute X_INTERFACE_INFO of cfg_ds_device_number : signal is "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control ds_device_number"; + attribute X_INTERFACE_INFO of cfg_ds_function_number : signal is "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control ds_function_number"; + attribute X_INTERFACE_INFO of cfg_dsn : signal is "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control dsn"; + attribute X_INTERFACE_INFO of cfg_dstatus : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status dstatus"; + attribute X_INTERFACE_INFO of cfg_err_aer_headerlog : signal is "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err err_aer_headerlog"; + attribute X_INTERFACE_INFO of cfg_err_tlp_cpl_header : signal is "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err tlp_cpl_header"; + attribute X_INTERFACE_INFO of cfg_function_number : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status function_number"; + attribute X_INTERFACE_INFO of cfg_interrupt_di : signal is "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt write_data"; + attribute X_INTERFACE_INFO of cfg_interrupt_do : signal is "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt read_data"; + attribute X_INTERFACE_INFO of cfg_interrupt_mmenable : signal is "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt mmenable"; + attribute X_INTERFACE_INFO of cfg_lcommand : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status lcommand"; + attribute X_INTERFACE_INFO of cfg_lstatus : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status lstatus"; + attribute X_INTERFACE_INFO of cfg_mgmt_byte_en : signal is "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt BYTE_EN"; + attribute X_INTERFACE_INFO of cfg_mgmt_di : signal is "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt WRITE_DATA"; + attribute X_INTERFACE_INFO of cfg_mgmt_do : signal is "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt READ_DATA"; + attribute X_INTERFACE_INFO of cfg_mgmt_dwaddr : signal is "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt ADDR"; + attribute X_INTERFACE_INFO of cfg_msg_data : signal is "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd data"; + attribute X_INTERFACE_INFO of cfg_pcie_link_state : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status pcie_link_state"; + attribute X_INTERFACE_INFO of cfg_pciecap_interrupt_msgnum : signal is "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt pciecap_interrupt_msgnum"; + attribute X_INTERFACE_INFO of cfg_pm_force_state : signal is "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control pm_force_state"; + attribute X_INTERFACE_INFO of cfg_pmcsr_powerstate : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status pmcsr_powerstate"; + attribute X_INTERFACE_INFO of cfg_status : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status status"; + attribute X_INTERFACE_INFO of cfg_vc_tcvc_map : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status vc_tcvc_map"; + attribute X_INTERFACE_INFO of fc_cpld : signal is "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc CPLD"; + attribute X_INTERFACE_INFO of fc_cplh : signal is "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc CPLH"; + attribute X_INTERFACE_INFO of fc_npd : signal is "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc NPD"; + attribute X_INTERFACE_INFO of fc_nph : signal is "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc NPH"; + attribute X_INTERFACE_INFO of fc_pd : signal is "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc PD"; + attribute X_INTERFACE_INFO of fc_ph : signal is "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc PH"; + attribute X_INTERFACE_INFO of fc_sel : signal is "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc SEL"; + attribute X_INTERFACE_INFO of m_axis_rx_tdata : signal is "xilinx.com:interface:axis:1.0 m_axis_rx TDATA"; + attribute X_INTERFACE_INFO of m_axis_rx_tkeep : signal is "xilinx.com:interface:axis:1.0 m_axis_rx TKEEP"; + attribute X_INTERFACE_INFO of m_axis_rx_tuser : signal is "xilinx.com:interface:axis:1.0 m_axis_rx TUSER"; + attribute X_INTERFACE_PARAMETER of m_axis_rx_tuser : signal is "XIL_INTERFACENAME m_axis_rx, TDATA_NUM_BYTES 8, TDEST_WIDTH 0, TID_WIDTH 0, TUSER_WIDTH 22, HAS_TREADY 1, HAS_TSTRB 0, HAS_TKEEP 1, HAS_TLAST 1, FREQ_HZ 100000000, PHASE 0.000, LAYERED_METADATA undef, INSERT_VIP 0"; + attribute X_INTERFACE_INFO of pci_exp_rxn : signal is "xilinx.com:interface:pcie_7x_mgt:1.0 pcie_7x_mgt rxn"; + attribute X_INTERFACE_INFO of pci_exp_rxp : signal is "xilinx.com:interface:pcie_7x_mgt:1.0 pcie_7x_mgt rxp"; + attribute X_INTERFACE_INFO of pci_exp_txn : signal is "xilinx.com:interface:pcie_7x_mgt:1.0 pcie_7x_mgt txn"; + attribute X_INTERFACE_INFO of pci_exp_txp : signal is "xilinx.com:interface:pcie_7x_mgt:1.0 pcie_7x_mgt txp"; + attribute X_INTERFACE_INFO of pcie_drp_addr : signal is "xilinx.com:interface:drp:1.0 drp DADDR"; + attribute X_INTERFACE_INFO of pcie_drp_di : signal is "xilinx.com:interface:drp:1.0 drp DI"; + attribute X_INTERFACE_INFO of pcie_drp_do : signal is "xilinx.com:interface:drp:1.0 drp DO"; + attribute X_INTERFACE_INFO of pipe_pclk_sel_out : signal is "xilinx.com:interface:pipe_clock:1.0 pipe_clock pclk_sel_out"; + attribute X_INTERFACE_INFO of pipe_rxoutclk_in : signal is "xilinx.com:interface:pipe_clock:1.0 pipe_clock rxoutclk_in"; + attribute X_INTERFACE_INFO of pipe_rxoutclk_out : signal is "xilinx.com:interface:pipe_clock:1.0 pipe_clock rxoutclk_out"; + attribute X_INTERFACE_INFO of pl_directed_link_change : signal is "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl directed_link_change"; + attribute X_INTERFACE_INFO of pl_directed_link_width : signal is "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl directed_link_width"; + attribute X_INTERFACE_INFO of pl_initial_link_width : signal is "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl initial_link_width"; + attribute X_INTERFACE_INFO of pl_lane_reversal_mode : signal is "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl lane_reversal_mode"; + attribute X_INTERFACE_INFO of pl_ltssm_state : signal is "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl ltssm_state"; + attribute X_INTERFACE_INFO of pl_rx_pm_state : signal is "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl rx_pm_state"; + attribute X_INTERFACE_INFO of pl_sel_lnk_width : signal is "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl sel_lnk_width"; + attribute X_INTERFACE_INFO of pl_tx_pm_state : signal is "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl tx_pm_state"; + attribute X_INTERFACE_INFO of s_axis_tx_tdata : signal is "xilinx.com:interface:axis:1.0 s_axis_tx TDATA"; + attribute X_INTERFACE_INFO of s_axis_tx_tkeep : signal is "xilinx.com:interface:axis:1.0 s_axis_tx TKEEP"; + attribute X_INTERFACE_INFO of s_axis_tx_tuser : signal is "xilinx.com:interface:axis:1.0 s_axis_tx TUSER"; + attribute X_INTERFACE_PARAMETER of s_axis_tx_tuser : signal is "XIL_INTERFACENAME s_axis_tx, TDATA_NUM_BYTES 8, TDEST_WIDTH 0, TID_WIDTH 0, TUSER_WIDTH 4, HAS_TREADY 1, HAS_TSTRB 0, HAS_TKEEP 1, HAS_TLAST 1, FREQ_HZ 100000000, PHASE 0.000, LAYERED_METADATA undef, INSERT_VIP 0"; + attribute X_INTERFACE_INFO of tx_buf_av : signal is "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status tx_buf_av"; +begin + cfg_command(15) <= \\; + cfg_command(14) <= \\; + cfg_command(13) <= \\; + cfg_command(12) <= \\; + cfg_command(11) <= \\; + cfg_command(10) <= \^cfg_command\(10); + cfg_command(9) <= \\; + cfg_command(8) <= \^cfg_command\(8); + cfg_command(7) <= \\; + cfg_command(6) <= \\; + cfg_command(5) <= \\; + cfg_command(4) <= \\; + cfg_command(3) <= \\; + cfg_command(2 downto 0) <= \^cfg_command\(2 downto 0); + cfg_dcommand(15) <= \\; + cfg_dcommand(14 downto 0) <= \^cfg_dcommand\(14 downto 0); + cfg_dcommand2(15) <= \\; + cfg_dcommand2(14) <= \\; + cfg_dcommand2(13) <= \\; + cfg_dcommand2(12) <= \\; + cfg_dcommand2(11 downto 0) <= \^cfg_dcommand2\(11 downto 0); + cfg_dstatus(15) <= \\; + cfg_dstatus(14) <= \\; + cfg_dstatus(13) <= \\; + cfg_dstatus(12) <= \\; + cfg_dstatus(11) <= \\; + cfg_dstatus(10) <= \\; + cfg_dstatus(9) <= \\; + cfg_dstatus(8) <= \\; + cfg_dstatus(7) <= \\; + cfg_dstatus(6) <= \\; + cfg_dstatus(5) <= \^cfg_dstatus\(5); + cfg_dstatus(4) <= \\; + cfg_dstatus(3 downto 0) <= \^cfg_dstatus\(3 downto 0); + cfg_lcommand(15) <= \\; + cfg_lcommand(14) <= \\; + cfg_lcommand(13) <= \\; + cfg_lcommand(12) <= \\; + cfg_lcommand(11 downto 3) <= \^cfg_lcommand\(11 downto 3); + cfg_lcommand(2) <= \\; + cfg_lcommand(1 downto 0) <= \^cfg_lcommand\(1 downto 0); + cfg_lstatus(15 downto 13) <= \^cfg_lstatus\(15 downto 13); + cfg_lstatus(12) <= \\; + cfg_lstatus(11) <= \^cfg_lstatus\(11); + cfg_lstatus(10) <= \\; + cfg_lstatus(9) <= \\; + cfg_lstatus(8) <= \\; + cfg_lstatus(7 downto 4) <= \^cfg_lstatus\(7 downto 4); + cfg_lstatus(3) <= \\; + cfg_lstatus(2) <= \\; + cfg_lstatus(1 downto 0) <= \^cfg_lstatus\(1 downto 0); + cfg_status(15) <= \\; + cfg_status(14) <= \\; + cfg_status(13) <= \\; + cfg_status(12) <= \\; + cfg_status(11) <= \\; + cfg_status(10) <= \\; + cfg_status(9) <= \\; + cfg_status(8) <= \\; + cfg_status(7) <= \\; + cfg_status(6) <= \\; + cfg_status(5) <= \\; + cfg_status(4) <= \\; + cfg_status(3) <= \\; + cfg_status(2) <= \\; + cfg_status(1) <= \\; + cfg_status(0) <= \\; + m_axis_rx_tkeep(7 downto 4) <= \^m_axis_rx_tkeep\(7 downto 4); + m_axis_rx_tkeep(3) <= \\; + m_axis_rx_tkeep(2) <= \\; + m_axis_rx_tkeep(1) <= \\; + m_axis_rx_tkeep(0) <= \\; + m_axis_rx_tuser(21) <= \^m_axis_rx_tuser\(21); + m_axis_rx_tuser(20) <= \\; + m_axis_rx_tuser(19 downto 17) <= \^m_axis_rx_tuser\(19 downto 17); + m_axis_rx_tuser(16) <= \\; + m_axis_rx_tuser(15) <= \\; + m_axis_rx_tuser(14) <= \^m_axis_rx_tuser\(14); + m_axis_rx_tuser(13) <= \\; + m_axis_rx_tuser(12) <= \\; + m_axis_rx_tuser(11) <= \\; + m_axis_rx_tuser(10) <= \\; + m_axis_rx_tuser(9) <= \\; + m_axis_rx_tuser(8 downto 0) <= \^m_axis_rx_tuser\(8 downto 0); + user_app_rdy <= \\; +GND: unisim.vcomponents.GND + port map ( + G => \\ + ); +VCC: unisim.vcomponents.VCC + port map ( + P => \\ + ); +inst: entity work.pcie_7x_0_pcie_7x_0_pcie2_top + port map ( + cfg_aer_ecrc_check_en => cfg_aer_ecrc_check_en, + cfg_aer_ecrc_gen_en => cfg_aer_ecrc_gen_en, + cfg_aer_interrupt_msgnum(4 downto 0) => cfg_aer_interrupt_msgnum(4 downto 0), + cfg_aer_rooterr_corr_err_received => cfg_aer_rooterr_corr_err_received, + cfg_aer_rooterr_corr_err_reporting_en => cfg_aer_rooterr_corr_err_reporting_en, + cfg_aer_rooterr_fatal_err_received => cfg_aer_rooterr_fatal_err_received, + cfg_aer_rooterr_fatal_err_reporting_en => cfg_aer_rooterr_fatal_err_reporting_en, + cfg_aer_rooterr_non_fatal_err_received => cfg_aer_rooterr_non_fatal_err_received, + cfg_aer_rooterr_non_fatal_err_reporting_en => cfg_aer_rooterr_non_fatal_err_reporting_en, + cfg_bridge_serr_en => cfg_bridge_serr_en, + cfg_bus_number(7 downto 0) => cfg_bus_number(7 downto 0), + cfg_command(15 downto 11) => NLW_inst_cfg_command_UNCONNECTED(15 downto 11), + cfg_command(10) => \^cfg_command\(10), + cfg_command(9) => NLW_inst_cfg_command_UNCONNECTED(9), + cfg_command(8) => \^cfg_command\(8), + cfg_command(7 downto 3) => NLW_inst_cfg_command_UNCONNECTED(7 downto 3), + cfg_command(2 downto 0) => \^cfg_command\(2 downto 0), + cfg_dcommand(15) => NLW_inst_cfg_dcommand_UNCONNECTED(15), + cfg_dcommand(14 downto 0) => \^cfg_dcommand\(14 downto 0), + cfg_dcommand2(15 downto 12) => NLW_inst_cfg_dcommand2_UNCONNECTED(15 downto 12), + cfg_dcommand2(11 downto 0) => \^cfg_dcommand2\(11 downto 0), + cfg_device_number(4 downto 0) => cfg_device_number(4 downto 0), + cfg_ds_bus_number(7 downto 0) => cfg_ds_bus_number(7 downto 0), + cfg_ds_device_number(4 downto 0) => cfg_ds_device_number(4 downto 0), + cfg_ds_function_number(2 downto 0) => cfg_ds_function_number(2 downto 0), + cfg_dsn(63 downto 0) => cfg_dsn(63 downto 0), + cfg_dstatus(15 downto 6) => NLW_inst_cfg_dstatus_UNCONNECTED(15 downto 6), + cfg_dstatus(5) => \^cfg_dstatus\(5), + cfg_dstatus(4) => NLW_inst_cfg_dstatus_UNCONNECTED(4), + cfg_dstatus(3 downto 0) => \^cfg_dstatus\(3 downto 0), + cfg_err_acs => '0', + cfg_err_aer_headerlog(127 downto 0) => cfg_err_aer_headerlog(127 downto 0), + cfg_err_aer_headerlog_set => cfg_err_aer_headerlog_set, + cfg_err_atomic_egress_blocked => cfg_err_atomic_egress_blocked, + cfg_err_cor => cfg_err_cor, + cfg_err_cpl_abort => cfg_err_cpl_abort, + cfg_err_cpl_rdy => cfg_err_cpl_rdy, + cfg_err_cpl_timeout => cfg_err_cpl_timeout, + cfg_err_cpl_unexpect => cfg_err_cpl_unexpect, + cfg_err_ecrc => cfg_err_ecrc, + cfg_err_internal_cor => cfg_err_internal_cor, + cfg_err_internal_uncor => cfg_err_internal_uncor, + cfg_err_locked => cfg_err_locked, + cfg_err_malformed => cfg_err_malformed, + cfg_err_mc_blocked => cfg_err_mc_blocked, + cfg_err_norecovery => cfg_err_norecovery, + cfg_err_poisoned => cfg_err_poisoned, + cfg_err_posted => cfg_err_posted, + cfg_err_tlp_cpl_header(47 downto 0) => cfg_err_tlp_cpl_header(47 downto 0), + cfg_err_ur => cfg_err_ur, + cfg_function_number(2 downto 0) => cfg_function_number(2 downto 0), + cfg_interrupt => cfg_interrupt, + cfg_interrupt_assert => cfg_interrupt_assert, + cfg_interrupt_di(7 downto 0) => cfg_interrupt_di(7 downto 0), + cfg_interrupt_do(7 downto 0) => cfg_interrupt_do(7 downto 0), + cfg_interrupt_mmenable(2 downto 0) => cfg_interrupt_mmenable(2 downto 0), + cfg_interrupt_msienable => cfg_interrupt_msienable, + cfg_interrupt_msixenable => cfg_interrupt_msixenable, + cfg_interrupt_msixfm => cfg_interrupt_msixfm, + cfg_interrupt_rdy => cfg_interrupt_rdy, + cfg_interrupt_stat => cfg_interrupt_stat, + cfg_lcommand(15 downto 12) => NLW_inst_cfg_lcommand_UNCONNECTED(15 downto 12), + cfg_lcommand(11 downto 3) => \^cfg_lcommand\(11 downto 3), + cfg_lcommand(2) => NLW_inst_cfg_lcommand_UNCONNECTED(2), + cfg_lcommand(1 downto 0) => \^cfg_lcommand\(1 downto 0), + cfg_lstatus(15 downto 13) => \^cfg_lstatus\(15 downto 13), + cfg_lstatus(12) => NLW_inst_cfg_lstatus_UNCONNECTED(12), + cfg_lstatus(11) => \^cfg_lstatus\(11), + cfg_lstatus(10 downto 8) => NLW_inst_cfg_lstatus_UNCONNECTED(10 downto 8), + cfg_lstatus(7 downto 4) => \^cfg_lstatus\(7 downto 4), + cfg_lstatus(3 downto 2) => NLW_inst_cfg_lstatus_UNCONNECTED(3 downto 2), + cfg_lstatus(1 downto 0) => \^cfg_lstatus\(1 downto 0), + cfg_mgmt_byte_en(3 downto 0) => cfg_mgmt_byte_en(3 downto 0), + cfg_mgmt_di(31 downto 0) => cfg_mgmt_di(31 downto 0), + cfg_mgmt_do(31 downto 0) => cfg_mgmt_do(31 downto 0), + cfg_mgmt_dwaddr(9 downto 0) => cfg_mgmt_dwaddr(9 downto 0), + cfg_mgmt_rd_en => cfg_mgmt_rd_en, + cfg_mgmt_rd_wr_done => cfg_mgmt_rd_wr_done, + cfg_mgmt_wr_en => cfg_mgmt_wr_en, + cfg_mgmt_wr_readonly => cfg_mgmt_wr_readonly, + cfg_mgmt_wr_rw1c_as_rw => cfg_mgmt_wr_rw1c_as_rw, + cfg_msg_data(15 downto 0) => cfg_msg_data(15 downto 0), + cfg_msg_received => cfg_msg_received, + cfg_msg_received_assert_int_a => cfg_msg_received_assert_int_a, + cfg_msg_received_assert_int_b => cfg_msg_received_assert_int_b, + cfg_msg_received_assert_int_c => cfg_msg_received_assert_int_c, + cfg_msg_received_assert_int_d => cfg_msg_received_assert_int_d, + cfg_msg_received_deassert_int_a => cfg_msg_received_deassert_int_a, + cfg_msg_received_deassert_int_b => cfg_msg_received_deassert_int_b, + cfg_msg_received_deassert_int_c => cfg_msg_received_deassert_int_c, + cfg_msg_received_deassert_int_d => cfg_msg_received_deassert_int_d, + cfg_msg_received_err_cor => cfg_msg_received_err_cor, + cfg_msg_received_err_fatal => cfg_msg_received_err_fatal, + cfg_msg_received_err_non_fatal => cfg_msg_received_err_non_fatal, + cfg_msg_received_pm_as_nak => cfg_msg_received_pm_as_nak, + cfg_msg_received_pm_pme => cfg_msg_received_pm_pme, + cfg_msg_received_pme_to_ack => cfg_msg_received_pme_to_ack, + cfg_msg_received_setslotpowerlimit => cfg_msg_received_setslotpowerlimit, + cfg_pcie_link_state(2 downto 0) => cfg_pcie_link_state(2 downto 0), + cfg_pciecap_interrupt_msgnum(4 downto 0) => cfg_pciecap_interrupt_msgnum(4 downto 0), + cfg_pm_force_state(1 downto 0) => cfg_pm_force_state(1 downto 0), + cfg_pm_force_state_en => cfg_pm_force_state_en, + cfg_pm_halt_aspm_l0s => cfg_pm_halt_aspm_l0s, + cfg_pm_halt_aspm_l1 => cfg_pm_halt_aspm_l1, + cfg_pm_send_pme_to => '0', + cfg_pm_wake => cfg_pm_wake, + cfg_pmcsr_pme_en => cfg_pmcsr_pme_en, + cfg_pmcsr_pme_status => cfg_pmcsr_pme_status, + cfg_pmcsr_powerstate(1 downto 0) => cfg_pmcsr_powerstate(1 downto 0), + cfg_received_func_lvl_rst => cfg_received_func_lvl_rst, + cfg_root_control_pme_int_en => cfg_root_control_pme_int_en, + cfg_root_control_syserr_corr_err_en => cfg_root_control_syserr_corr_err_en, + cfg_root_control_syserr_fatal_err_en => cfg_root_control_syserr_fatal_err_en, + cfg_root_control_syserr_non_fatal_err_en => cfg_root_control_syserr_non_fatal_err_en, + cfg_slot_control_electromech_il_ctl_pulse => cfg_slot_control_electromech_il_ctl_pulse, + cfg_status(15 downto 0) => NLW_inst_cfg_status_UNCONNECTED(15 downto 0), + cfg_to_turnoff => cfg_to_turnoff, + cfg_trn_pending => cfg_trn_pending, + cfg_turnoff_ok => cfg_turnoff_ok, + cfg_vc_tcvc_map(6 downto 0) => cfg_vc_tcvc_map(6 downto 0), + common_commands_in(11 downto 0) => B"000000000000", + common_commands_out(11 downto 0) => NLW_inst_common_commands_out_UNCONNECTED(11 downto 0), + ext_ch_gt_drpaddr(35 downto 0) => B"000000000000000000000000000000000000", + ext_ch_gt_drpclk => NLW_inst_ext_ch_gt_drpclk_UNCONNECTED, + ext_ch_gt_drpdi(63 downto 0) => B"0000000000000000000000000000000000000000000000000000000000000000", + ext_ch_gt_drpdo(63 downto 0) => NLW_inst_ext_ch_gt_drpdo_UNCONNECTED(63 downto 0), + ext_ch_gt_drpen(3 downto 0) => B"0000", + ext_ch_gt_drprdy(3 downto 0) => NLW_inst_ext_ch_gt_drprdy_UNCONNECTED(3 downto 0), + ext_ch_gt_drpwe(3 downto 0) => B"0000", + fc_cpld(11 downto 0) => fc_cpld(11 downto 0), + fc_cplh(7 downto 0) => fc_cplh(7 downto 0), + fc_npd(11 downto 0) => fc_npd(11 downto 0), + fc_nph(7 downto 0) => fc_nph(7 downto 0), + fc_pd(11 downto 0) => fc_pd(11 downto 0), + fc_ph(7 downto 0) => fc_ph(7 downto 0), + fc_sel(2 downto 0) => fc_sel(2 downto 0), + gt_ch_drp_rdy(3 downto 0) => NLW_inst_gt_ch_drp_rdy_UNCONNECTED(3 downto 0), + icap_clk => '0', + icap_csib => '0', + icap_i(31 downto 0) => B"00000000000000000000000000000000", + icap_o(31 downto 0) => NLW_inst_icap_o_UNCONNECTED(31 downto 0), + icap_rdwrb => '0', + int_dclk_out => NLW_inst_int_dclk_out_UNCONNECTED, + int_mmcm_lock_out => NLW_inst_int_mmcm_lock_out_UNCONNECTED, + int_oobclk_out => NLW_inst_int_oobclk_out_UNCONNECTED, + int_pclk_out_slave => NLW_inst_int_pclk_out_slave_UNCONNECTED, + int_pclk_sel_slave(3 downto 0) => B"0000", + int_pipe_rxusrclk_out => NLW_inst_int_pipe_rxusrclk_out_UNCONNECTED, + int_qplllock_out(1 downto 0) => NLW_inst_int_qplllock_out_UNCONNECTED(1 downto 0), + int_qplloutclk_out(1 downto 0) => NLW_inst_int_qplloutclk_out_UNCONNECTED(1 downto 0), + int_qplloutrefclk_out(1 downto 0) => NLW_inst_int_qplloutrefclk_out_UNCONNECTED(1 downto 0), + int_rxoutclk_out(3 downto 0) => NLW_inst_int_rxoutclk_out_UNCONNECTED(3 downto 0), + int_userclk1_out => NLW_inst_int_userclk1_out_UNCONNECTED, + int_userclk2_out => NLW_inst_int_userclk2_out_UNCONNECTED, + m_axis_rx_tdata(63 downto 0) => m_axis_rx_tdata(63 downto 0), + m_axis_rx_tkeep(7 downto 4) => \^m_axis_rx_tkeep\(7 downto 4), + m_axis_rx_tkeep(3 downto 0) => NLW_inst_m_axis_rx_tkeep_UNCONNECTED(3 downto 0), + m_axis_rx_tlast => m_axis_rx_tlast, + m_axis_rx_tready => m_axis_rx_tready, + m_axis_rx_tuser(21) => \^m_axis_rx_tuser\(21), + m_axis_rx_tuser(20) => NLW_inst_m_axis_rx_tuser_UNCONNECTED(20), + m_axis_rx_tuser(19 downto 17) => \^m_axis_rx_tuser\(19 downto 17), + m_axis_rx_tuser(16 downto 15) => NLW_inst_m_axis_rx_tuser_UNCONNECTED(16 downto 15), + m_axis_rx_tuser(14) => \^m_axis_rx_tuser\(14), + m_axis_rx_tuser(13 downto 9) => NLW_inst_m_axis_rx_tuser_UNCONNECTED(13 downto 9), + m_axis_rx_tuser(8 downto 0) => \^m_axis_rx_tuser\(8 downto 0), + m_axis_rx_tvalid => m_axis_rx_tvalid, + pci_exp_rxn(3 downto 0) => pci_exp_rxn(3 downto 0), + pci_exp_rxp(3 downto 0) => pci_exp_rxp(3 downto 0), + pci_exp_txn(3 downto 0) => pci_exp_txn(3 downto 0), + pci_exp_txp(3 downto 0) => pci_exp_txp(3 downto 0), + pcie_drp_addr(8 downto 0) => pcie_drp_addr(8 downto 0), + pcie_drp_clk => pcie_drp_clk, + pcie_drp_di(15 downto 0) => pcie_drp_di(15 downto 0), + pcie_drp_do(15 downto 0) => pcie_drp_do(15 downto 0), + pcie_drp_en => pcie_drp_en, + pcie_drp_rdy => pcie_drp_rdy, + pcie_drp_we => pcie_drp_we, + pipe_cpll_lock(3 downto 0) => NLW_inst_pipe_cpll_lock_UNCONNECTED(3 downto 0), + pipe_dclk_in => pipe_dclk_in, + pipe_debug(31 downto 0) => NLW_inst_pipe_debug_UNCONNECTED(31 downto 0), + pipe_debug_0(3 downto 0) => NLW_inst_pipe_debug_0_UNCONNECTED(3 downto 0), + pipe_debug_1(3 downto 0) => NLW_inst_pipe_debug_1_UNCONNECTED(3 downto 0), + pipe_debug_2(3 downto 0) => NLW_inst_pipe_debug_2_UNCONNECTED(3 downto 0), + pipe_debug_3(3 downto 0) => NLW_inst_pipe_debug_3_UNCONNECTED(3 downto 0), + pipe_debug_4(3 downto 0) => NLW_inst_pipe_debug_4_UNCONNECTED(3 downto 0), + pipe_debug_5(3 downto 0) => NLW_inst_pipe_debug_5_UNCONNECTED(3 downto 0), + pipe_debug_6(3 downto 0) => NLW_inst_pipe_debug_6_UNCONNECTED(3 downto 0), + pipe_debug_7(3 downto 0) => NLW_inst_pipe_debug_7_UNCONNECTED(3 downto 0), + pipe_debug_8(3 downto 0) => NLW_inst_pipe_debug_8_UNCONNECTED(3 downto 0), + pipe_debug_9(3 downto 0) => NLW_inst_pipe_debug_9_UNCONNECTED(3 downto 0), + pipe_dmonitorout(59 downto 0) => NLW_inst_pipe_dmonitorout_UNCONNECTED(59 downto 0), + pipe_drp_fsm(27 downto 0) => NLW_inst_pipe_drp_fsm_UNCONNECTED(27 downto 0), + pipe_eyescandataerror(3 downto 0) => NLW_inst_pipe_eyescandataerror_UNCONNECTED(3 downto 0), + pipe_gen3_out => pipe_gen3_out, + pipe_loopback(2 downto 0) => B"000", + pipe_mmcm_lock_in => pipe_mmcm_lock_in, + pipe_mmcm_rst_n => '0', + pipe_oobclk_in => pipe_oobclk_in, + pipe_pclk_in => pipe_pclk_in, + pipe_pclk_sel_out(3 downto 0) => pipe_pclk_sel_out(3 downto 0), + pipe_qpll_lock(0) => NLW_inst_pipe_qpll_lock_UNCONNECTED(0), + pipe_qrst_fsm(11 downto 0) => NLW_inst_pipe_qrst_fsm_UNCONNECTED(11 downto 0), + pipe_qrst_idle => NLW_inst_pipe_qrst_idle_UNCONNECTED, + pipe_rate_fsm(19 downto 0) => NLW_inst_pipe_rate_fsm_UNCONNECTED(19 downto 0), + pipe_rate_idle => NLW_inst_pipe_rate_idle_UNCONNECTED, + pipe_rst_fsm(4 downto 0) => NLW_inst_pipe_rst_fsm_UNCONNECTED(4 downto 0), + pipe_rst_idle => NLW_inst_pipe_rst_idle_UNCONNECTED, + pipe_rx_0_sigs(24 downto 0) => B"0000000000000000000000000", + pipe_rx_1_sigs(24 downto 0) => B"0000000000000000000000000", + pipe_rx_2_sigs(24 downto 0) => B"0000000000000000000000000", + pipe_rx_3_sigs(24 downto 0) => B"0000000000000000000000000", + pipe_rx_4_sigs(24 downto 0) => B"0000000000000000000000000", + pipe_rx_5_sigs(24 downto 0) => B"0000000000000000000000000", + pipe_rx_6_sigs(24 downto 0) => B"0000000000000000000000000", + pipe_rx_7_sigs(24 downto 0) => B"0000000000000000000000000", + pipe_rxbufstatus(11 downto 0) => NLW_inst_pipe_rxbufstatus_UNCONNECTED(11 downto 0), + pipe_rxcommadet(3 downto 0) => NLW_inst_pipe_rxcommadet_UNCONNECTED(3 downto 0), + pipe_rxdisperr(31 downto 0) => NLW_inst_pipe_rxdisperr_UNCONNECTED(31 downto 0), + pipe_rxdlysresetdone(3 downto 0) => NLW_inst_pipe_rxdlysresetdone_UNCONNECTED(3 downto 0), + pipe_rxnotintable(31 downto 0) => NLW_inst_pipe_rxnotintable_UNCONNECTED(31 downto 0), + pipe_rxoutclk_in(3 downto 0) => B"0000", + pipe_rxoutclk_out(3 downto 0) => pipe_rxoutclk_out(3 downto 0), + pipe_rxphaligndone(3 downto 0) => NLW_inst_pipe_rxphaligndone_UNCONNECTED(3 downto 0), + pipe_rxpmaresetdone(3 downto 0) => NLW_inst_pipe_rxpmaresetdone_UNCONNECTED(3 downto 0), + pipe_rxprbscntreset => '0', + pipe_rxprbserr(3 downto 0) => NLW_inst_pipe_rxprbserr_UNCONNECTED(3 downto 0), + pipe_rxprbssel(2 downto 0) => B"000", + pipe_rxstatus(11 downto 0) => NLW_inst_pipe_rxstatus_UNCONNECTED(11 downto 0), + pipe_rxsyncdone(3 downto 0) => NLW_inst_pipe_rxsyncdone_UNCONNECTED(3 downto 0), + pipe_rxusrclk_in => pipe_rxusrclk_in, + pipe_sync_fsm_rx(27 downto 0) => NLW_inst_pipe_sync_fsm_rx_UNCONNECTED(27 downto 0), + pipe_sync_fsm_tx(23 downto 0) => NLW_inst_pipe_sync_fsm_tx_UNCONNECTED(23 downto 0), + pipe_tx_0_sigs(24 downto 0) => NLW_inst_pipe_tx_0_sigs_UNCONNECTED(24 downto 0), + pipe_tx_1_sigs(24 downto 0) => NLW_inst_pipe_tx_1_sigs_UNCONNECTED(24 downto 0), + pipe_tx_2_sigs(24 downto 0) => NLW_inst_pipe_tx_2_sigs_UNCONNECTED(24 downto 0), + pipe_tx_3_sigs(24 downto 0) => NLW_inst_pipe_tx_3_sigs_UNCONNECTED(24 downto 0), + pipe_tx_4_sigs(24 downto 0) => NLW_inst_pipe_tx_4_sigs_UNCONNECTED(24 downto 0), + pipe_tx_5_sigs(24 downto 0) => NLW_inst_pipe_tx_5_sigs_UNCONNECTED(24 downto 0), + pipe_tx_6_sigs(24 downto 0) => NLW_inst_pipe_tx_6_sigs_UNCONNECTED(24 downto 0), + pipe_tx_7_sigs(24 downto 0) => NLW_inst_pipe_tx_7_sigs_UNCONNECTED(24 downto 0), + pipe_txdlysresetdone(3 downto 0) => NLW_inst_pipe_txdlysresetdone_UNCONNECTED(3 downto 0), + pipe_txinhibit(3 downto 0) => B"0000", + pipe_txoutclk_out => pipe_txoutclk_out, + pipe_txphaligndone(3 downto 0) => NLW_inst_pipe_txphaligndone_UNCONNECTED(3 downto 0), + pipe_txphinitdone(3 downto 0) => NLW_inst_pipe_txphinitdone_UNCONNECTED(3 downto 0), + pipe_txprbsforceerr => '0', + pipe_txprbssel(2 downto 0) => B"000", + pipe_userclk1_in => pipe_userclk1_in, + pipe_userclk2_in => pipe_userclk2_in, + pl_directed_change_done => pl_directed_change_done, + pl_directed_link_auton => pl_directed_link_auton, + pl_directed_link_change(1 downto 0) => pl_directed_link_change(1 downto 0), + pl_directed_link_speed => pl_directed_link_speed, + pl_directed_link_width(1 downto 0) => pl_directed_link_width(1 downto 0), + pl_downstream_deemph_source => pl_downstream_deemph_source, + pl_initial_link_width(2 downto 0) => pl_initial_link_width(2 downto 0), + pl_lane_reversal_mode(1 downto 0) => pl_lane_reversal_mode(1 downto 0), + pl_link_gen2_cap => pl_link_gen2_cap, + pl_link_partner_gen2_supported => pl_link_partner_gen2_supported, + pl_link_upcfg_cap => pl_link_upcfg_cap, + pl_ltssm_state(5 downto 0) => pl_ltssm_state(5 downto 0), + pl_phy_lnk_up => pl_phy_lnk_up, + pl_received_hot_rst => pl_received_hot_rst, + pl_rx_pm_state(1 downto 0) => pl_rx_pm_state(1 downto 0), + pl_sel_lnk_rate => pl_sel_lnk_rate, + pl_sel_lnk_width(1 downto 0) => pl_sel_lnk_width(1 downto 0), + pl_transmit_hot_rst => pl_transmit_hot_rst, + pl_tx_pm_state(2 downto 0) => pl_tx_pm_state(2 downto 0), + pl_upstream_prefer_deemph => pl_upstream_prefer_deemph, + qpll_drp_clk => NLW_inst_qpll_drp_clk_UNCONNECTED, + qpll_drp_crscode(11 downto 0) => B"000000000000", + qpll_drp_done(1 downto 0) => B"00", + qpll_drp_fsm(17 downto 0) => B"000000000000000000", + qpll_drp_gen3 => NLW_inst_qpll_drp_gen3_UNCONNECTED, + qpll_drp_ovrd => NLW_inst_qpll_drp_ovrd_UNCONNECTED, + qpll_drp_reset(1 downto 0) => B"00", + qpll_drp_rst_n => NLW_inst_qpll_drp_rst_n_UNCONNECTED, + qpll_drp_start => NLW_inst_qpll_drp_start_UNCONNECTED, + qpll_qplld => NLW_inst_qpll_qplld_UNCONNECTED, + qpll_qplllock(1 downto 0) => B"00", + qpll_qplloutclk(1 downto 0) => B"00", + qpll_qplloutrefclk(1 downto 0) => B"00", + qpll_qpllreset(1 downto 0) => NLW_inst_qpll_qpllreset_UNCONNECTED(1 downto 0), + rx_np_ok => rx_np_ok, + rx_np_req => rx_np_req, + s_axis_tx_tdata(63 downto 0) => s_axis_tx_tdata(63 downto 0), + s_axis_tx_tkeep(7) => s_axis_tx_tkeep(7), + s_axis_tx_tkeep(6 downto 0) => B"0000000", + s_axis_tx_tlast => s_axis_tx_tlast, + s_axis_tx_tready => s_axis_tx_tready, + s_axis_tx_tuser(3 downto 0) => s_axis_tx_tuser(3 downto 0), + s_axis_tx_tvalid => s_axis_tx_tvalid, + startup_cfgclk => NLW_inst_startup_cfgclk_UNCONNECTED, + startup_cfgmclk => NLW_inst_startup_cfgmclk_UNCONNECTED, + startup_clk => '0', + startup_eos => NLW_inst_startup_eos_UNCONNECTED, + startup_eos_in => '0', + startup_gsr => '0', + startup_gts => '0', + startup_keyclearb => '1', + startup_pack => '0', + startup_preq => NLW_inst_startup_preq_UNCONNECTED, + startup_usrcclko => '1', + startup_usrcclkts => '0', + startup_usrdoneo => '0', + startup_usrdonets => '1', + sys_clk => sys_clk, + sys_rst_n => sys_rst_n, + tx_buf_av(5 downto 0) => tx_buf_av(5 downto 0), + tx_cfg_gnt => tx_cfg_gnt, + tx_cfg_req => tx_cfg_req, + tx_err_drop => tx_err_drop, + user_app_rdy => NLW_inst_user_app_rdy_UNCONNECTED, + user_clk_out => user_clk_out, + user_lnk_up => user_lnk_up, + user_reset_out => user_reset_out + ); +end STRUCTURE; diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0_stub.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0_stub.v new file mode 100644 index 0000000..ba049d4 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0_stub.v @@ -0,0 +1,241 @@ +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// -------------------------------------------------------------------------------- +// Tool Version: Vivado v.2020.2 (win64) Build 3064766 Wed Nov 18 09:12:45 MST 2020 +// Date : Wed Jul 20 13:38:01 2022 +// Host : DESKTOP-4NLVFC8 running 64-bit major release (build 9200) +// Command : write_verilog -force -mode synth_stub -rename_top pcie_7x_0 -prefix +// pcie_7x_0_ pcie_7x_0_stub.v +// Design : pcie_7x_0 +// Purpose : Stub declaration of top-level module interface +// Device : xc7z045ffg900-2 +// -------------------------------------------------------------------------------- + +// This empty module with port declaration file causes synthesis tools to infer a black box for IP. +// The synthesis directives are for Synopsys Synplify support to prevent IO buffer insertion. +// Please paste the declaration into a Verilog source file or add the file as an additional source. +(* X_CORE_INFO = "pcie_7x_0_pcie2_top,Vivado 2020.2" *) +module pcie_7x_0(pci_exp_txp, pci_exp_txn, pci_exp_rxp, + pci_exp_rxn, pipe_pclk_in, pipe_rxusrclk_in, pipe_rxoutclk_in, pipe_dclk_in, + pipe_userclk1_in, pipe_userclk2_in, pipe_oobclk_in, pipe_mmcm_lock_in, pipe_txoutclk_out, + pipe_rxoutclk_out, pipe_pclk_sel_out, pipe_gen3_out, user_clk_out, user_reset_out, + user_lnk_up, user_app_rdy, tx_buf_av, tx_cfg_req, tx_err_drop, s_axis_tx_tready, + s_axis_tx_tdata, s_axis_tx_tkeep, s_axis_tx_tlast, s_axis_tx_tvalid, s_axis_tx_tuser, + tx_cfg_gnt, m_axis_rx_tdata, m_axis_rx_tkeep, m_axis_rx_tlast, m_axis_rx_tvalid, + m_axis_rx_tready, m_axis_rx_tuser, rx_np_ok, rx_np_req, fc_cpld, fc_cplh, fc_npd, fc_nph, fc_pd, + fc_ph, fc_sel, cfg_mgmt_do, cfg_mgmt_rd_wr_done, cfg_status, cfg_command, cfg_dstatus, + cfg_dcommand, cfg_lstatus, cfg_lcommand, cfg_dcommand2, cfg_pcie_link_state, + cfg_pmcsr_pme_en, cfg_pmcsr_powerstate, cfg_pmcsr_pme_status, + cfg_received_func_lvl_rst, cfg_mgmt_di, cfg_mgmt_byte_en, cfg_mgmt_dwaddr, + cfg_mgmt_wr_en, cfg_mgmt_rd_en, cfg_mgmt_wr_readonly, cfg_err_ecrc, cfg_err_ur, + cfg_err_cpl_timeout, cfg_err_cpl_unexpect, cfg_err_cpl_abort, cfg_err_posted, + cfg_err_cor, cfg_err_atomic_egress_blocked, cfg_err_internal_cor, cfg_err_malformed, + cfg_err_mc_blocked, cfg_err_poisoned, cfg_err_norecovery, cfg_err_tlp_cpl_header, + cfg_err_cpl_rdy, cfg_err_locked, cfg_err_acs, cfg_err_internal_uncor, cfg_trn_pending, + cfg_pm_halt_aspm_l0s, cfg_pm_halt_aspm_l1, cfg_pm_force_state_en, cfg_pm_force_state, + cfg_dsn, cfg_interrupt, cfg_interrupt_rdy, cfg_interrupt_assert, cfg_interrupt_di, + cfg_interrupt_do, cfg_interrupt_mmenable, cfg_interrupt_msienable, + cfg_interrupt_msixenable, cfg_interrupt_msixfm, cfg_interrupt_stat, + cfg_pciecap_interrupt_msgnum, cfg_to_turnoff, cfg_turnoff_ok, cfg_bus_number, + cfg_device_number, cfg_function_number, cfg_pm_wake, cfg_pm_send_pme_to, + cfg_ds_bus_number, cfg_ds_device_number, cfg_ds_function_number, + cfg_mgmt_wr_rw1c_as_rw, cfg_msg_received, cfg_msg_data, cfg_bridge_serr_en, + cfg_slot_control_electromech_il_ctl_pulse, cfg_root_control_syserr_corr_err_en, + cfg_root_control_syserr_non_fatal_err_en, cfg_root_control_syserr_fatal_err_en, + cfg_root_control_pme_int_en, cfg_aer_rooterr_corr_err_reporting_en, + cfg_aer_rooterr_non_fatal_err_reporting_en, cfg_aer_rooterr_fatal_err_reporting_en, + cfg_aer_rooterr_corr_err_received, cfg_aer_rooterr_non_fatal_err_received, + cfg_aer_rooterr_fatal_err_received, cfg_msg_received_err_cor, + cfg_msg_received_err_non_fatal, cfg_msg_received_err_fatal, + cfg_msg_received_pm_as_nak, cfg_msg_received_pm_pme, cfg_msg_received_pme_to_ack, + cfg_msg_received_assert_int_a, cfg_msg_received_assert_int_b, + cfg_msg_received_assert_int_c, cfg_msg_received_assert_int_d, + cfg_msg_received_deassert_int_a, cfg_msg_received_deassert_int_b, + cfg_msg_received_deassert_int_c, cfg_msg_received_deassert_int_d, + cfg_msg_received_setslotpowerlimit, pl_directed_link_change, pl_directed_link_width, + pl_directed_link_speed, pl_directed_link_auton, pl_upstream_prefer_deemph, + pl_sel_lnk_rate, pl_sel_lnk_width, pl_ltssm_state, pl_lane_reversal_mode, pl_phy_lnk_up, + pl_tx_pm_state, pl_rx_pm_state, pl_link_upcfg_cap, pl_link_gen2_cap, + pl_link_partner_gen2_supported, pl_initial_link_width, pl_directed_change_done, + pl_received_hot_rst, pl_transmit_hot_rst, pl_downstream_deemph_source, + cfg_err_aer_headerlog, cfg_aer_interrupt_msgnum, cfg_err_aer_headerlog_set, + cfg_aer_ecrc_check_en, cfg_aer_ecrc_gen_en, cfg_vc_tcvc_map, sys_clk, sys_rst_n, + pipe_mmcm_rst_n, pcie_drp_clk, pcie_drp_en, pcie_drp_we, pcie_drp_addr, pcie_drp_di, + pcie_drp_do, pcie_drp_rdy) +/* synthesis syn_black_box black_box_pad_pin="pci_exp_txp[3:0],pci_exp_txn[3:0],pci_exp_rxp[3:0],pci_exp_rxn[3:0],pipe_pclk_in,pipe_rxusrclk_in,pipe_rxoutclk_in[3:0],pipe_dclk_in,pipe_userclk1_in,pipe_userclk2_in,pipe_oobclk_in,pipe_mmcm_lock_in,pipe_txoutclk_out,pipe_rxoutclk_out[3:0],pipe_pclk_sel_out[3:0],pipe_gen3_out,user_clk_out,user_reset_out,user_lnk_up,user_app_rdy,tx_buf_av[5:0],tx_cfg_req,tx_err_drop,s_axis_tx_tready,s_axis_tx_tdata[63:0],s_axis_tx_tkeep[7:0],s_axis_tx_tlast,s_axis_tx_tvalid,s_axis_tx_tuser[3:0],tx_cfg_gnt,m_axis_rx_tdata[63:0],m_axis_rx_tkeep[7:0],m_axis_rx_tlast,m_axis_rx_tvalid,m_axis_rx_tready,m_axis_rx_tuser[21:0],rx_np_ok,rx_np_req,fc_cpld[11:0],fc_cplh[7:0],fc_npd[11:0],fc_nph[7:0],fc_pd[11:0],fc_ph[7:0],fc_sel[2:0],cfg_mgmt_do[31:0],cfg_mgmt_rd_wr_done,cfg_status[15:0],cfg_command[15:0],cfg_dstatus[15:0],cfg_dcommand[15:0],cfg_lstatus[15:0],cfg_lcommand[15:0],cfg_dcommand2[15:0],cfg_pcie_link_state[2:0],cfg_pmcsr_pme_en,cfg_pmcsr_powerstate[1:0],cfg_pmcsr_pme_status,cfg_received_func_lvl_rst,cfg_mgmt_di[31:0],cfg_mgmt_byte_en[3:0],cfg_mgmt_dwaddr[9:0],cfg_mgmt_wr_en,cfg_mgmt_rd_en,cfg_mgmt_wr_readonly,cfg_err_ecrc,cfg_err_ur,cfg_err_cpl_timeout,cfg_err_cpl_unexpect,cfg_err_cpl_abort,cfg_err_posted,cfg_err_cor,cfg_err_atomic_egress_blocked,cfg_err_internal_cor,cfg_err_malformed,cfg_err_mc_blocked,cfg_err_poisoned,cfg_err_norecovery,cfg_err_tlp_cpl_header[47:0],cfg_err_cpl_rdy,cfg_err_locked,cfg_err_acs,cfg_err_internal_uncor,cfg_trn_pending,cfg_pm_halt_aspm_l0s,cfg_pm_halt_aspm_l1,cfg_pm_force_state_en,cfg_pm_force_state[1:0],cfg_dsn[63:0],cfg_interrupt,cfg_interrupt_rdy,cfg_interrupt_assert,cfg_interrupt_di[7:0],cfg_interrupt_do[7:0],cfg_interrupt_mmenable[2:0],cfg_interrupt_msienable,cfg_interrupt_msixenable,cfg_interrupt_msixfm,cfg_interrupt_stat,cfg_pciecap_interrupt_msgnum[4:0],cfg_to_turnoff,cfg_turnoff_ok,cfg_bus_number[7:0],cfg_device_number[4:0],cfg_function_number[2:0],cfg_pm_wake,cfg_pm_send_pme_to,cfg_ds_bus_number[7:0],cfg_ds_device_number[4:0],cfg_ds_function_number[2:0],cfg_mgmt_wr_rw1c_as_rw,cfg_msg_received,cfg_msg_data[15:0],cfg_bridge_serr_en,cfg_slot_control_electromech_il_ctl_pulse,cfg_root_control_syserr_corr_err_en,cfg_root_control_syserr_non_fatal_err_en,cfg_root_control_syserr_fatal_err_en,cfg_root_control_pme_int_en,cfg_aer_rooterr_corr_err_reporting_en,cfg_aer_rooterr_non_fatal_err_reporting_en,cfg_aer_rooterr_fatal_err_reporting_en,cfg_aer_rooterr_corr_err_received,cfg_aer_rooterr_non_fatal_err_received,cfg_aer_rooterr_fatal_err_received,cfg_msg_received_err_cor,cfg_msg_received_err_non_fatal,cfg_msg_received_err_fatal,cfg_msg_received_pm_as_nak,cfg_msg_received_pm_pme,cfg_msg_received_pme_to_ack,cfg_msg_received_assert_int_a,cfg_msg_received_assert_int_b,cfg_msg_received_assert_int_c,cfg_msg_received_assert_int_d,cfg_msg_received_deassert_int_a,cfg_msg_received_deassert_int_b,cfg_msg_received_deassert_int_c,cfg_msg_received_deassert_int_d,cfg_msg_received_setslotpowerlimit,pl_directed_link_change[1:0],pl_directed_link_width[1:0],pl_directed_link_speed,pl_directed_link_auton,pl_upstream_prefer_deemph,pl_sel_lnk_rate,pl_sel_lnk_width[1:0],pl_ltssm_state[5:0],pl_lane_reversal_mode[1:0],pl_phy_lnk_up,pl_tx_pm_state[2:0],pl_rx_pm_state[1:0],pl_link_upcfg_cap,pl_link_gen2_cap,pl_link_partner_gen2_supported,pl_initial_link_width[2:0],pl_directed_change_done,pl_received_hot_rst,pl_transmit_hot_rst,pl_downstream_deemph_source,cfg_err_aer_headerlog[127:0],cfg_aer_interrupt_msgnum[4:0],cfg_err_aer_headerlog_set,cfg_aer_ecrc_check_en,cfg_aer_ecrc_gen_en,cfg_vc_tcvc_map[6:0],sys_clk,sys_rst_n,pipe_mmcm_rst_n,pcie_drp_clk,pcie_drp_en,pcie_drp_we,pcie_drp_addr[8:0],pcie_drp_di[15:0],pcie_drp_do[15:0],pcie_drp_rdy" */; + output [3:0]pci_exp_txp; + output [3:0]pci_exp_txn; + input [3:0]pci_exp_rxp; + input [3:0]pci_exp_rxn; + input pipe_pclk_in; + input pipe_rxusrclk_in; + input [3:0]pipe_rxoutclk_in; + input pipe_dclk_in; + input pipe_userclk1_in; + input pipe_userclk2_in; + input pipe_oobclk_in; + input pipe_mmcm_lock_in; + output pipe_txoutclk_out; + output [3:0]pipe_rxoutclk_out; + output [3:0]pipe_pclk_sel_out; + output pipe_gen3_out; + output user_clk_out; + output user_reset_out; + output user_lnk_up; + output user_app_rdy; + output [5:0]tx_buf_av; + output tx_cfg_req; + output tx_err_drop; + output s_axis_tx_tready; + input [63:0]s_axis_tx_tdata; + input [7:0]s_axis_tx_tkeep; + input s_axis_tx_tlast; + input s_axis_tx_tvalid; + input [3:0]s_axis_tx_tuser; + input tx_cfg_gnt; + output [63:0]m_axis_rx_tdata; + output [7:0]m_axis_rx_tkeep; + output m_axis_rx_tlast; + output m_axis_rx_tvalid; + input m_axis_rx_tready; + output [21:0]m_axis_rx_tuser; + input rx_np_ok; + input rx_np_req; + output [11:0]fc_cpld; + output [7:0]fc_cplh; + output [11:0]fc_npd; + output [7:0]fc_nph; + output [11:0]fc_pd; + output [7:0]fc_ph; + input [2:0]fc_sel; + output [31:0]cfg_mgmt_do; + output cfg_mgmt_rd_wr_done; + output [15:0]cfg_status; + output [15:0]cfg_command; + output [15:0]cfg_dstatus; + output [15:0]cfg_dcommand; + output [15:0]cfg_lstatus; + output [15:0]cfg_lcommand; + output [15:0]cfg_dcommand2; + output [2:0]cfg_pcie_link_state; + output cfg_pmcsr_pme_en; + output [1:0]cfg_pmcsr_powerstate; + output cfg_pmcsr_pme_status; + output cfg_received_func_lvl_rst; + input [31:0]cfg_mgmt_di; + input [3:0]cfg_mgmt_byte_en; + input [9:0]cfg_mgmt_dwaddr; + input cfg_mgmt_wr_en; + input cfg_mgmt_rd_en; + input cfg_mgmt_wr_readonly; + input cfg_err_ecrc; + input cfg_err_ur; + input cfg_err_cpl_timeout; + input cfg_err_cpl_unexpect; + input cfg_err_cpl_abort; + input cfg_err_posted; + input cfg_err_cor; + input cfg_err_atomic_egress_blocked; + input cfg_err_internal_cor; + input cfg_err_malformed; + input cfg_err_mc_blocked; + input cfg_err_poisoned; + input cfg_err_norecovery; + input [47:0]cfg_err_tlp_cpl_header; + output cfg_err_cpl_rdy; + input cfg_err_locked; + input cfg_err_acs; + input cfg_err_internal_uncor; + input cfg_trn_pending; + input cfg_pm_halt_aspm_l0s; + input cfg_pm_halt_aspm_l1; + input cfg_pm_force_state_en; + input [1:0]cfg_pm_force_state; + input [63:0]cfg_dsn; + input cfg_interrupt; + output cfg_interrupt_rdy; + input cfg_interrupt_assert; + input [7:0]cfg_interrupt_di; + output [7:0]cfg_interrupt_do; + output [2:0]cfg_interrupt_mmenable; + output cfg_interrupt_msienable; + output cfg_interrupt_msixenable; + output cfg_interrupt_msixfm; + input cfg_interrupt_stat; + input [4:0]cfg_pciecap_interrupt_msgnum; + output cfg_to_turnoff; + input cfg_turnoff_ok; + output [7:0]cfg_bus_number; + output [4:0]cfg_device_number; + output [2:0]cfg_function_number; + input cfg_pm_wake; + input cfg_pm_send_pme_to; + input [7:0]cfg_ds_bus_number; + input [4:0]cfg_ds_device_number; + input [2:0]cfg_ds_function_number; + input cfg_mgmt_wr_rw1c_as_rw; + output cfg_msg_received; + output [15:0]cfg_msg_data; + output cfg_bridge_serr_en; + output cfg_slot_control_electromech_il_ctl_pulse; + output cfg_root_control_syserr_corr_err_en; + output cfg_root_control_syserr_non_fatal_err_en; + output cfg_root_control_syserr_fatal_err_en; + output cfg_root_control_pme_int_en; + output cfg_aer_rooterr_corr_err_reporting_en; + output cfg_aer_rooterr_non_fatal_err_reporting_en; + output cfg_aer_rooterr_fatal_err_reporting_en; + output cfg_aer_rooterr_corr_err_received; + output cfg_aer_rooterr_non_fatal_err_received; + output cfg_aer_rooterr_fatal_err_received; + output cfg_msg_received_err_cor; + output cfg_msg_received_err_non_fatal; + output cfg_msg_received_err_fatal; + output cfg_msg_received_pm_as_nak; + output cfg_msg_received_pm_pme; + output cfg_msg_received_pme_to_ack; + output cfg_msg_received_assert_int_a; + output cfg_msg_received_assert_int_b; + output cfg_msg_received_assert_int_c; + output cfg_msg_received_assert_int_d; + output cfg_msg_received_deassert_int_a; + output cfg_msg_received_deassert_int_b; + output cfg_msg_received_deassert_int_c; + output cfg_msg_received_deassert_int_d; + output cfg_msg_received_setslotpowerlimit; + input [1:0]pl_directed_link_change; + input [1:0]pl_directed_link_width; + input pl_directed_link_speed; + input pl_directed_link_auton; + input pl_upstream_prefer_deemph; + output pl_sel_lnk_rate; + output [1:0]pl_sel_lnk_width; + output [5:0]pl_ltssm_state; + output [1:0]pl_lane_reversal_mode; + output pl_phy_lnk_up; + output [2:0]pl_tx_pm_state; + output [1:0]pl_rx_pm_state; + output pl_link_upcfg_cap; + output pl_link_gen2_cap; + output pl_link_partner_gen2_supported; + output [2:0]pl_initial_link_width; + output pl_directed_change_done; + output pl_received_hot_rst; + input pl_transmit_hot_rst; + input pl_downstream_deemph_source; + input [127:0]cfg_err_aer_headerlog; + input [4:0]cfg_aer_interrupt_msgnum; + output cfg_err_aer_headerlog_set; + output cfg_aer_ecrc_check_en; + output cfg_aer_ecrc_gen_en; + output [6:0]cfg_vc_tcvc_map; + input sys_clk; + input sys_rst_n; + input pipe_mmcm_rst_n; + input pcie_drp_clk; + input pcie_drp_en; + input pcie_drp_we; + input [8:0]pcie_drp_addr; + input [15:0]pcie_drp_di; + output [15:0]pcie_drp_do; + output pcie_drp_rdy; +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0_stub.vhdl b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0_stub.vhdl new file mode 100644 index 0000000..fd423ad --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/pcie_7x_0_stub.vhdl @@ -0,0 +1,205 @@ +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- -------------------------------------------------------------------------------- +-- Tool Version: Vivado v.2020.2 (win64) Build 3064766 Wed Nov 18 09:12:45 MST 2020 +-- Date : Wed Jul 20 13:38:01 2022 +-- Host : DESKTOP-4NLVFC8 running 64-bit major release (build 9200) +-- Command : write_vhdl -force -mode synth_stub -rename_top pcie_7x_0 -prefix +-- pcie_7x_0_ pcie_7x_0_stub.vhdl +-- Design : pcie_7x_0 +-- Purpose : Stub declaration of top-level module interface +-- Device : xc7z045ffg900-2 +-- -------------------------------------------------------------------------------- +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; + +entity pcie_7x_0 is + Port ( + pci_exp_txp : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pci_exp_txn : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pci_exp_rxp : in STD_LOGIC_VECTOR ( 3 downto 0 ); + pci_exp_rxn : in STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_pclk_in : in STD_LOGIC; + pipe_rxusrclk_in : in STD_LOGIC; + pipe_rxoutclk_in : in STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_dclk_in : in STD_LOGIC; + pipe_userclk1_in : in STD_LOGIC; + pipe_userclk2_in : in STD_LOGIC; + pipe_oobclk_in : in STD_LOGIC; + pipe_mmcm_lock_in : in STD_LOGIC; + pipe_txoutclk_out : out STD_LOGIC; + pipe_rxoutclk_out : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_pclk_sel_out : out STD_LOGIC_VECTOR ( 3 downto 0 ); + pipe_gen3_out : out STD_LOGIC; + user_clk_out : out STD_LOGIC; + user_reset_out : out STD_LOGIC; + user_lnk_up : out STD_LOGIC; + user_app_rdy : out STD_LOGIC; + tx_buf_av : out STD_LOGIC_VECTOR ( 5 downto 0 ); + tx_cfg_req : out STD_LOGIC; + tx_err_drop : out STD_LOGIC; + s_axis_tx_tready : out STD_LOGIC; + s_axis_tx_tdata : in STD_LOGIC_VECTOR ( 63 downto 0 ); + s_axis_tx_tkeep : in STD_LOGIC_VECTOR ( 7 downto 0 ); + s_axis_tx_tlast : in STD_LOGIC; + s_axis_tx_tvalid : in STD_LOGIC; + s_axis_tx_tuser : in STD_LOGIC_VECTOR ( 3 downto 0 ); + tx_cfg_gnt : in STD_LOGIC; + m_axis_rx_tdata : out STD_LOGIC_VECTOR ( 63 downto 0 ); + m_axis_rx_tkeep : out STD_LOGIC_VECTOR ( 7 downto 0 ); + m_axis_rx_tlast : out STD_LOGIC; + m_axis_rx_tvalid : out STD_LOGIC; + m_axis_rx_tready : in STD_LOGIC; + m_axis_rx_tuser : out STD_LOGIC_VECTOR ( 21 downto 0 ); + rx_np_ok : in STD_LOGIC; + rx_np_req : in STD_LOGIC; + fc_cpld : out STD_LOGIC_VECTOR ( 11 downto 0 ); + fc_cplh : out STD_LOGIC_VECTOR ( 7 downto 0 ); + fc_npd : out STD_LOGIC_VECTOR ( 11 downto 0 ); + fc_nph : out STD_LOGIC_VECTOR ( 7 downto 0 ); + fc_pd : out STD_LOGIC_VECTOR ( 11 downto 0 ); + fc_ph : out STD_LOGIC_VECTOR ( 7 downto 0 ); + fc_sel : in STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_mgmt_do : out STD_LOGIC_VECTOR ( 31 downto 0 ); + cfg_mgmt_rd_wr_done : out STD_LOGIC; + cfg_status : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_command : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_dstatus : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_dcommand : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_lstatus : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_lcommand : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_dcommand2 : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_pcie_link_state : out STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_pmcsr_pme_en : out STD_LOGIC; + cfg_pmcsr_powerstate : out STD_LOGIC_VECTOR ( 1 downto 0 ); + cfg_pmcsr_pme_status : out STD_LOGIC; + cfg_received_func_lvl_rst : out STD_LOGIC; + cfg_mgmt_di : in STD_LOGIC_VECTOR ( 31 downto 0 ); + cfg_mgmt_byte_en : in STD_LOGIC_VECTOR ( 3 downto 0 ); + cfg_mgmt_dwaddr : in STD_LOGIC_VECTOR ( 9 downto 0 ); + cfg_mgmt_wr_en : in STD_LOGIC; + cfg_mgmt_rd_en : in STD_LOGIC; + cfg_mgmt_wr_readonly : in STD_LOGIC; + cfg_err_ecrc : in STD_LOGIC; + cfg_err_ur : in STD_LOGIC; + cfg_err_cpl_timeout : in STD_LOGIC; + cfg_err_cpl_unexpect : in STD_LOGIC; + cfg_err_cpl_abort : in STD_LOGIC; + cfg_err_posted : in STD_LOGIC; + cfg_err_cor : in STD_LOGIC; + cfg_err_atomic_egress_blocked : in STD_LOGIC; + cfg_err_internal_cor : in STD_LOGIC; + cfg_err_malformed : in STD_LOGIC; + cfg_err_mc_blocked : in STD_LOGIC; + cfg_err_poisoned : in STD_LOGIC; + cfg_err_norecovery : in STD_LOGIC; + cfg_err_tlp_cpl_header : in STD_LOGIC_VECTOR ( 47 downto 0 ); + cfg_err_cpl_rdy : out STD_LOGIC; + cfg_err_locked : in STD_LOGIC; + cfg_err_acs : in STD_LOGIC; + cfg_err_internal_uncor : in STD_LOGIC; + cfg_trn_pending : in STD_LOGIC; + cfg_pm_halt_aspm_l0s : in STD_LOGIC; + cfg_pm_halt_aspm_l1 : in STD_LOGIC; + cfg_pm_force_state_en : in STD_LOGIC; + cfg_pm_force_state : in STD_LOGIC_VECTOR ( 1 downto 0 ); + cfg_dsn : in STD_LOGIC_VECTOR ( 63 downto 0 ); + cfg_interrupt : in STD_LOGIC; + cfg_interrupt_rdy : out STD_LOGIC; + cfg_interrupt_assert : in STD_LOGIC; + cfg_interrupt_di : in STD_LOGIC_VECTOR ( 7 downto 0 ); + cfg_interrupt_do : out STD_LOGIC_VECTOR ( 7 downto 0 ); + cfg_interrupt_mmenable : out STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_interrupt_msienable : out STD_LOGIC; + cfg_interrupt_msixenable : out STD_LOGIC; + cfg_interrupt_msixfm : out STD_LOGIC; + cfg_interrupt_stat : in STD_LOGIC; + cfg_pciecap_interrupt_msgnum : in STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_to_turnoff : out STD_LOGIC; + cfg_turnoff_ok : in STD_LOGIC; + cfg_bus_number : out STD_LOGIC_VECTOR ( 7 downto 0 ); + cfg_device_number : out STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_function_number : out STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_pm_wake : in STD_LOGIC; + cfg_pm_send_pme_to : in STD_LOGIC; + cfg_ds_bus_number : in STD_LOGIC_VECTOR ( 7 downto 0 ); + cfg_ds_device_number : in STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_ds_function_number : in STD_LOGIC_VECTOR ( 2 downto 0 ); + cfg_mgmt_wr_rw1c_as_rw : in STD_LOGIC; + cfg_msg_received : out STD_LOGIC; + cfg_msg_data : out STD_LOGIC_VECTOR ( 15 downto 0 ); + cfg_bridge_serr_en : out STD_LOGIC; + cfg_slot_control_electromech_il_ctl_pulse : out STD_LOGIC; + cfg_root_control_syserr_corr_err_en : out STD_LOGIC; + cfg_root_control_syserr_non_fatal_err_en : out STD_LOGIC; + cfg_root_control_syserr_fatal_err_en : out STD_LOGIC; + cfg_root_control_pme_int_en : out STD_LOGIC; + cfg_aer_rooterr_corr_err_reporting_en : out STD_LOGIC; + cfg_aer_rooterr_non_fatal_err_reporting_en : out STD_LOGIC; + cfg_aer_rooterr_fatal_err_reporting_en : out STD_LOGIC; + cfg_aer_rooterr_corr_err_received : out STD_LOGIC; + cfg_aer_rooterr_non_fatal_err_received : out STD_LOGIC; + cfg_aer_rooterr_fatal_err_received : out STD_LOGIC; + cfg_msg_received_err_cor : out STD_LOGIC; + cfg_msg_received_err_non_fatal : out STD_LOGIC; + cfg_msg_received_err_fatal : out STD_LOGIC; + cfg_msg_received_pm_as_nak : out STD_LOGIC; + cfg_msg_received_pm_pme : out STD_LOGIC; + cfg_msg_received_pme_to_ack : out STD_LOGIC; + cfg_msg_received_assert_int_a : out STD_LOGIC; + cfg_msg_received_assert_int_b : out STD_LOGIC; + cfg_msg_received_assert_int_c : out STD_LOGIC; + cfg_msg_received_assert_int_d : out STD_LOGIC; + cfg_msg_received_deassert_int_a : out STD_LOGIC; + cfg_msg_received_deassert_int_b : out STD_LOGIC; + cfg_msg_received_deassert_int_c : out STD_LOGIC; + cfg_msg_received_deassert_int_d : out STD_LOGIC; + cfg_msg_received_setslotpowerlimit : out STD_LOGIC; + pl_directed_link_change : in STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_directed_link_width : in STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_directed_link_speed : in STD_LOGIC; + pl_directed_link_auton : in STD_LOGIC; + pl_upstream_prefer_deemph : in STD_LOGIC; + pl_sel_lnk_rate : out STD_LOGIC; + pl_sel_lnk_width : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_ltssm_state : out STD_LOGIC_VECTOR ( 5 downto 0 ); + pl_lane_reversal_mode : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_phy_lnk_up : out STD_LOGIC; + pl_tx_pm_state : out STD_LOGIC_VECTOR ( 2 downto 0 ); + pl_rx_pm_state : out STD_LOGIC_VECTOR ( 1 downto 0 ); + pl_link_upcfg_cap : out STD_LOGIC; + pl_link_gen2_cap : out STD_LOGIC; + pl_link_partner_gen2_supported : out STD_LOGIC; + pl_initial_link_width : out STD_LOGIC_VECTOR ( 2 downto 0 ); + pl_directed_change_done : out STD_LOGIC; + pl_received_hot_rst : out STD_LOGIC; + pl_transmit_hot_rst : in STD_LOGIC; + pl_downstream_deemph_source : in STD_LOGIC; + cfg_err_aer_headerlog : in STD_LOGIC_VECTOR ( 127 downto 0 ); + cfg_aer_interrupt_msgnum : in STD_LOGIC_VECTOR ( 4 downto 0 ); + cfg_err_aer_headerlog_set : out STD_LOGIC; + cfg_aer_ecrc_check_en : out STD_LOGIC; + cfg_aer_ecrc_gen_en : out STD_LOGIC; + cfg_vc_tcvc_map : out STD_LOGIC_VECTOR ( 6 downto 0 ); + sys_clk : in STD_LOGIC; + sys_rst_n : in STD_LOGIC; + pipe_mmcm_rst_n : in STD_LOGIC; + pcie_drp_clk : in STD_LOGIC; + pcie_drp_en : in STD_LOGIC; + pcie_drp_we : in STD_LOGIC; + pcie_drp_addr : in STD_LOGIC_VECTOR ( 8 downto 0 ); + pcie_drp_di : in STD_LOGIC_VECTOR ( 15 downto 0 ); + pcie_drp_do : out STD_LOGIC_VECTOR ( 15 downto 0 ); + pcie_drp_rdy : out STD_LOGIC + ); + +end pcie_7x_0; + +architecture stub of pcie_7x_0 is +attribute syn_black_box : boolean; +attribute black_box_pad_pin : string; +attribute syn_black_box of stub : architecture is true; +attribute black_box_pad_pin of stub : architecture is "pci_exp_txp[3:0],pci_exp_txn[3:0],pci_exp_rxp[3:0],pci_exp_rxn[3:0],pipe_pclk_in,pipe_rxusrclk_in,pipe_rxoutclk_in[3:0],pipe_dclk_in,pipe_userclk1_in,pipe_userclk2_in,pipe_oobclk_in,pipe_mmcm_lock_in,pipe_txoutclk_out,pipe_rxoutclk_out[3:0],pipe_pclk_sel_out[3:0],pipe_gen3_out,user_clk_out,user_reset_out,user_lnk_up,user_app_rdy,tx_buf_av[5:0],tx_cfg_req,tx_err_drop,s_axis_tx_tready,s_axis_tx_tdata[63:0],s_axis_tx_tkeep[7:0],s_axis_tx_tlast,s_axis_tx_tvalid,s_axis_tx_tuser[3:0],tx_cfg_gnt,m_axis_rx_tdata[63:0],m_axis_rx_tkeep[7:0],m_axis_rx_tlast,m_axis_rx_tvalid,m_axis_rx_tready,m_axis_rx_tuser[21:0],rx_np_ok,rx_np_req,fc_cpld[11:0],fc_cplh[7:0],fc_npd[11:0],fc_nph[7:0],fc_pd[11:0],fc_ph[7:0],fc_sel[2:0],cfg_mgmt_do[31:0],cfg_mgmt_rd_wr_done,cfg_status[15:0],cfg_command[15:0],cfg_dstatus[15:0],cfg_dcommand[15:0],cfg_lstatus[15:0],cfg_lcommand[15:0],cfg_dcommand2[15:0],cfg_pcie_link_state[2:0],cfg_pmcsr_pme_en,cfg_pmcsr_powerstate[1:0],cfg_pmcsr_pme_status,cfg_received_func_lvl_rst,cfg_mgmt_di[31:0],cfg_mgmt_byte_en[3:0],cfg_mgmt_dwaddr[9:0],cfg_mgmt_wr_en,cfg_mgmt_rd_en,cfg_mgmt_wr_readonly,cfg_err_ecrc,cfg_err_ur,cfg_err_cpl_timeout,cfg_err_cpl_unexpect,cfg_err_cpl_abort,cfg_err_posted,cfg_err_cor,cfg_err_atomic_egress_blocked,cfg_err_internal_cor,cfg_err_malformed,cfg_err_mc_blocked,cfg_err_poisoned,cfg_err_norecovery,cfg_err_tlp_cpl_header[47:0],cfg_err_cpl_rdy,cfg_err_locked,cfg_err_acs,cfg_err_internal_uncor,cfg_trn_pending,cfg_pm_halt_aspm_l0s,cfg_pm_halt_aspm_l1,cfg_pm_force_state_en,cfg_pm_force_state[1:0],cfg_dsn[63:0],cfg_interrupt,cfg_interrupt_rdy,cfg_interrupt_assert,cfg_interrupt_di[7:0],cfg_interrupt_do[7:0],cfg_interrupt_mmenable[2:0],cfg_interrupt_msienable,cfg_interrupt_msixenable,cfg_interrupt_msixfm,cfg_interrupt_stat,cfg_pciecap_interrupt_msgnum[4:0],cfg_to_turnoff,cfg_turnoff_ok,cfg_bus_number[7:0],cfg_device_number[4:0],cfg_function_number[2:0],cfg_pm_wake,cfg_pm_send_pme_to,cfg_ds_bus_number[7:0],cfg_ds_device_number[4:0],cfg_ds_function_number[2:0],cfg_mgmt_wr_rw1c_as_rw,cfg_msg_received,cfg_msg_data[15:0],cfg_bridge_serr_en,cfg_slot_control_electromech_il_ctl_pulse,cfg_root_control_syserr_corr_err_en,cfg_root_control_syserr_non_fatal_err_en,cfg_root_control_syserr_fatal_err_en,cfg_root_control_pme_int_en,cfg_aer_rooterr_corr_err_reporting_en,cfg_aer_rooterr_non_fatal_err_reporting_en,cfg_aer_rooterr_fatal_err_reporting_en,cfg_aer_rooterr_corr_err_received,cfg_aer_rooterr_non_fatal_err_received,cfg_aer_rooterr_fatal_err_received,cfg_msg_received_err_cor,cfg_msg_received_err_non_fatal,cfg_msg_received_err_fatal,cfg_msg_received_pm_as_nak,cfg_msg_received_pm_pme,cfg_msg_received_pme_to_ack,cfg_msg_received_assert_int_a,cfg_msg_received_assert_int_b,cfg_msg_received_assert_int_c,cfg_msg_received_assert_int_d,cfg_msg_received_deassert_int_a,cfg_msg_received_deassert_int_b,cfg_msg_received_deassert_int_c,cfg_msg_received_deassert_int_d,cfg_msg_received_setslotpowerlimit,pl_directed_link_change[1:0],pl_directed_link_width[1:0],pl_directed_link_speed,pl_directed_link_auton,pl_upstream_prefer_deemph,pl_sel_lnk_rate,pl_sel_lnk_width[1:0],pl_ltssm_state[5:0],pl_lane_reversal_mode[1:0],pl_phy_lnk_up,pl_tx_pm_state[2:0],pl_rx_pm_state[1:0],pl_link_upcfg_cap,pl_link_gen2_cap,pl_link_partner_gen2_supported,pl_initial_link_width[2:0],pl_directed_change_done,pl_received_hot_rst,pl_transmit_hot_rst,pl_downstream_deemph_source,cfg_err_aer_headerlog[127:0],cfg_aer_interrupt_msgnum[4:0],cfg_err_aer_headerlog_set,cfg_aer_ecrc_check_en,cfg_aer_ecrc_gen_en,cfg_vc_tcvc_map[6:0],sys_clk,sys_rst_n,pipe_mmcm_rst_n,pcie_drp_clk,pcie_drp_en,pcie_drp_we,pcie_drp_addr[8:0],pcie_drp_di[15:0],pcie_drp_do[15:0],pcie_drp_rdy"; +attribute X_CORE_INFO : string; +attribute X_CORE_INFO of stub : architecture is "pcie_7x_0_pcie2_top,Vivado 2020.2"; +begin +end; diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/sim/pcie_7x_0.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/sim/pcie_7x_0.v new file mode 100644 index 0000000..cc10708 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/sim/pcie_7x_0.v @@ -0,0 +1,1096 @@ +// (c) Copyright 1995-2022 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:pcie_7x:3.3 +// IP Revision: 14 + +`timescale 1ns/1ps + +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0 ( + pci_exp_txp, + pci_exp_txn, + pci_exp_rxp, + pci_exp_rxn, + pipe_pclk_in, + pipe_rxusrclk_in, + pipe_rxoutclk_in, + pipe_dclk_in, + pipe_userclk1_in, + pipe_userclk2_in, + pipe_oobclk_in, + pipe_mmcm_lock_in, + pipe_txoutclk_out, + pipe_rxoutclk_out, + pipe_pclk_sel_out, + pipe_gen3_out, + user_clk_out, + user_reset_out, + user_lnk_up, + user_app_rdy, + tx_buf_av, + tx_cfg_req, + tx_err_drop, + s_axis_tx_tready, + s_axis_tx_tdata, + s_axis_tx_tkeep, + s_axis_tx_tlast, + s_axis_tx_tvalid, + s_axis_tx_tuser, + tx_cfg_gnt, + m_axis_rx_tdata, + m_axis_rx_tkeep, + m_axis_rx_tlast, + m_axis_rx_tvalid, + m_axis_rx_tready, + m_axis_rx_tuser, + rx_np_ok, + rx_np_req, + fc_cpld, + fc_cplh, + fc_npd, + fc_nph, + fc_pd, + fc_ph, + fc_sel, + cfg_mgmt_do, + cfg_mgmt_rd_wr_done, + cfg_status, + cfg_command, + cfg_dstatus, + cfg_dcommand, + cfg_lstatus, + cfg_lcommand, + cfg_dcommand2, + cfg_pcie_link_state, + cfg_pmcsr_pme_en, + cfg_pmcsr_powerstate, + cfg_pmcsr_pme_status, + cfg_received_func_lvl_rst, + cfg_mgmt_di, + cfg_mgmt_byte_en, + cfg_mgmt_dwaddr, + cfg_mgmt_wr_en, + cfg_mgmt_rd_en, + cfg_mgmt_wr_readonly, + cfg_err_ecrc, + cfg_err_ur, + cfg_err_cpl_timeout, + cfg_err_cpl_unexpect, + cfg_err_cpl_abort, + cfg_err_posted, + cfg_err_cor, + cfg_err_atomic_egress_blocked, + cfg_err_internal_cor, + cfg_err_malformed, + cfg_err_mc_blocked, + cfg_err_poisoned, + cfg_err_norecovery, + cfg_err_tlp_cpl_header, + cfg_err_cpl_rdy, + cfg_err_locked, + cfg_err_acs, + cfg_err_internal_uncor, + cfg_trn_pending, + cfg_pm_halt_aspm_l0s, + cfg_pm_halt_aspm_l1, + cfg_pm_force_state_en, + cfg_pm_force_state, + cfg_dsn, + cfg_interrupt, + cfg_interrupt_rdy, + cfg_interrupt_assert, + cfg_interrupt_di, + cfg_interrupt_do, + cfg_interrupt_mmenable, + cfg_interrupt_msienable, + cfg_interrupt_msixenable, + cfg_interrupt_msixfm, + cfg_interrupt_stat, + cfg_pciecap_interrupt_msgnum, + cfg_to_turnoff, + cfg_turnoff_ok, + cfg_bus_number, + cfg_device_number, + cfg_function_number, + cfg_pm_wake, + cfg_pm_send_pme_to, + cfg_ds_bus_number, + cfg_ds_device_number, + cfg_ds_function_number, + cfg_mgmt_wr_rw1c_as_rw, + cfg_msg_received, + cfg_msg_data, + cfg_bridge_serr_en, + cfg_slot_control_electromech_il_ctl_pulse, + cfg_root_control_syserr_corr_err_en, + cfg_root_control_syserr_non_fatal_err_en, + cfg_root_control_syserr_fatal_err_en, + cfg_root_control_pme_int_en, + cfg_aer_rooterr_corr_err_reporting_en, + cfg_aer_rooterr_non_fatal_err_reporting_en, + cfg_aer_rooterr_fatal_err_reporting_en, + cfg_aer_rooterr_corr_err_received, + cfg_aer_rooterr_non_fatal_err_received, + cfg_aer_rooterr_fatal_err_received, + cfg_msg_received_err_cor, + cfg_msg_received_err_non_fatal, + cfg_msg_received_err_fatal, + cfg_msg_received_pm_as_nak, + cfg_msg_received_pm_pme, + cfg_msg_received_pme_to_ack, + cfg_msg_received_assert_int_a, + cfg_msg_received_assert_int_b, + cfg_msg_received_assert_int_c, + cfg_msg_received_assert_int_d, + cfg_msg_received_deassert_int_a, + cfg_msg_received_deassert_int_b, + cfg_msg_received_deassert_int_c, + cfg_msg_received_deassert_int_d, + cfg_msg_received_setslotpowerlimit, + pl_directed_link_change, + pl_directed_link_width, + pl_directed_link_speed, + pl_directed_link_auton, + pl_upstream_prefer_deemph, + pl_sel_lnk_rate, + pl_sel_lnk_width, + pl_ltssm_state, + pl_lane_reversal_mode, + pl_phy_lnk_up, + pl_tx_pm_state, + pl_rx_pm_state, + pl_link_upcfg_cap, + pl_link_gen2_cap, + pl_link_partner_gen2_supported, + pl_initial_link_width, + pl_directed_change_done, + pl_received_hot_rst, + pl_transmit_hot_rst, + pl_downstream_deemph_source, + cfg_err_aer_headerlog, + cfg_aer_interrupt_msgnum, + cfg_err_aer_headerlog_set, + cfg_aer_ecrc_check_en, + cfg_aer_ecrc_gen_en, + cfg_vc_tcvc_map, + sys_clk, + sys_rst_n, + pipe_mmcm_rst_n, + pcie_drp_clk, + pcie_drp_en, + pcie_drp_we, + pcie_drp_addr, + pcie_drp_di, + pcie_drp_do, + pcie_drp_rdy +); + +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_7x_mgt:1.0 pcie_7x_mgt txp" *) +output wire [3 : 0] pci_exp_txp; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_7x_mgt:1.0 pcie_7x_mgt txn" *) +output wire [3 : 0] pci_exp_txn; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_7x_mgt:1.0 pcie_7x_mgt rxp" *) +input wire [3 : 0] pci_exp_rxp; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_7x_mgt:1.0 pcie_7x_mgt rxn" *) +input wire [3 : 0] pci_exp_rxn; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock pclk_in" *) +input wire pipe_pclk_in; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock rxusrclk_in" *) +input wire pipe_rxusrclk_in; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock rxoutclk_in" *) +input wire [3 : 0] pipe_rxoutclk_in; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock dclk_in" *) +input wire pipe_dclk_in; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock userclk1_in" *) +input wire pipe_userclk1_in; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock userclk2_in" *) +input wire pipe_userclk2_in; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock oobclk_in" *) +input wire pipe_oobclk_in; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock mmcm_lock_in" *) +input wire pipe_mmcm_lock_in; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock txoutclk_out" *) +output wire pipe_txoutclk_out; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock rxoutclk_out" *) +output wire [3 : 0] pipe_rxoutclk_out; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock pclk_sel_out" *) +output wire [3 : 0] pipe_pclk_sel_out; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock gen3_out" *) +output wire pipe_gen3_out; +(* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME CLK.user_clk_out, ASSOCIATED_BUSIF m_axis_rx:s_axis_tx, FREQ_HZ 125000000, ASSOCIATED_RESET user_reset_out, FREQ_TOLERANCE_HZ 0, PHASE 0.000, INSERT_VIP 0" *) +(* X_INTERFACE_INFO = "xilinx.com:signal:clock:1.0 CLK.user_clk_out CLK" *) +output wire user_clk_out; +(* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME RST.user_reset_out, POLARITY ACTIVE_HIGH, INSERT_VIP 0" *) +(* X_INTERFACE_INFO = "xilinx.com:signal:reset:1.0 RST.user_reset_out RST" *) +output wire user_reset_out; +output wire user_lnk_up; +output wire user_app_rdy; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status tx_buf_av" *) +output wire [5 : 0] tx_buf_av; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status tx_cfg_req" *) +output wire tx_cfg_req; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status tx_err_drop" *) +output wire tx_err_drop; +(* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 s_axis_tx TREADY" *) +output wire s_axis_tx_tready; +(* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 s_axis_tx TDATA" *) +input wire [63 : 0] s_axis_tx_tdata; +(* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 s_axis_tx TKEEP" *) +input wire [7 : 0] s_axis_tx_tkeep; +(* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 s_axis_tx TLAST" *) +input wire s_axis_tx_tlast; +(* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 s_axis_tx TVALID" *) +input wire s_axis_tx_tvalid; +(* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME s_axis_tx, TDATA_NUM_BYTES 8, TDEST_WIDTH 0, TID_WIDTH 0, TUSER_WIDTH 4, HAS_TREADY 1, HAS_TSTRB 0, HAS_TKEEP 1, HAS_TLAST 1, FREQ_HZ 100000000, PHASE 0.000, LAYERED_METADATA undef, INSERT_VIP 0" *) +(* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 s_axis_tx TUSER" *) +input wire [3 : 0] s_axis_tx_tuser; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control tx_cfg_gnt" *) +input wire tx_cfg_gnt; +(* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 m_axis_rx TDATA" *) +output wire [63 : 0] m_axis_rx_tdata; +(* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 m_axis_rx TKEEP" *) +output wire [7 : 0] m_axis_rx_tkeep; +(* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 m_axis_rx TLAST" *) +output wire m_axis_rx_tlast; +(* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 m_axis_rx TVALID" *) +output wire m_axis_rx_tvalid; +(* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 m_axis_rx TREADY" *) +input wire m_axis_rx_tready; +(* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME m_axis_rx, TDATA_NUM_BYTES 8, TDEST_WIDTH 0, TID_WIDTH 0, TUSER_WIDTH 22, HAS_TREADY 1, HAS_TSTRB 0, HAS_TKEEP 1, HAS_TLAST 1, FREQ_HZ 100000000, PHASE 0.000, LAYERED_METADATA undef, INSERT_VIP 0" *) +(* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 m_axis_rx TUSER" *) +output wire [21 : 0] m_axis_rx_tuser; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control rx_np_ok" *) +input wire rx_np_ok; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control rx_np_req" *) +input wire rx_np_req; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc CPLD" *) +output wire [11 : 0] fc_cpld; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc CPLH" *) +output wire [7 : 0] fc_cplh; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc NPD" *) +output wire [11 : 0] fc_npd; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc NPH" *) +output wire [7 : 0] fc_nph; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc PD" *) +output wire [11 : 0] fc_pd; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc PH" *) +output wire [7 : 0] fc_ph; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc SEL" *) +input wire [2 : 0] fc_sel; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt READ_DATA" *) +output wire [31 : 0] cfg_mgmt_do; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt READ_WRITE_DONE" *) +output wire cfg_mgmt_rd_wr_done; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status status" *) +output wire [15 : 0] cfg_status; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status command" *) +output wire [15 : 0] cfg_command; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status dstatus" *) +output wire [15 : 0] cfg_dstatus; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status dcommand" *) +output wire [15 : 0] cfg_dcommand; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status lstatus" *) +output wire [15 : 0] cfg_lstatus; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status lcommand" *) +output wire [15 : 0] cfg_lcommand; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status dcommand2" *) +output wire [15 : 0] cfg_dcommand2; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status pcie_link_state" *) +output wire [2 : 0] cfg_pcie_link_state; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status pmcsr_pme_en" *) +output wire cfg_pmcsr_pme_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status pmcsr_powerstate" *) +output wire [1 : 0] cfg_pmcsr_powerstate; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status pmcsr_pme_status" *) +output wire cfg_pmcsr_pme_status; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status received_func_lvl_rst" *) +output wire cfg_received_func_lvl_rst; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt WRITE_DATA" *) +input wire [31 : 0] cfg_mgmt_di; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt BYTE_EN" *) +input wire [3 : 0] cfg_mgmt_byte_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt ADDR" *) +input wire [9 : 0] cfg_mgmt_dwaddr; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt WRITE_EN" *) +input wire cfg_mgmt_wr_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt READ_EN" *) +input wire cfg_mgmt_rd_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt READONLY" *) +input wire cfg_mgmt_wr_readonly; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err ecrc" *) +input wire cfg_err_ecrc; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err ur" *) +input wire cfg_err_ur; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err cpl_timeout" *) +input wire cfg_err_cpl_timeout; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err cpl_unexpect" *) +input wire cfg_err_cpl_unexpect; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err cpl_abort" *) +input wire cfg_err_cpl_abort; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err posted" *) +input wire cfg_err_posted; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err cor" *) +input wire cfg_err_cor; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err atomic_egress_blocked" *) +input wire cfg_err_atomic_egress_blocked; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err internal_cor" *) +input wire cfg_err_internal_cor; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err malformed" *) +input wire cfg_err_malformed; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err mc_blocked" *) +input wire cfg_err_mc_blocked; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err poisoned" *) +input wire cfg_err_poisoned; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err norecovery" *) +input wire cfg_err_norecovery; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err tlp_cpl_header" *) +input wire [47 : 0] cfg_err_tlp_cpl_header; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err cpl_rdy" *) +output wire cfg_err_cpl_rdy; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err locked" *) +input wire cfg_err_locked; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err acs" *) +input wire cfg_err_acs; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err internal_uncor" *) +input wire cfg_err_internal_uncor; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control trn_pending" *) +input wire cfg_trn_pending; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control pm_halt_aspm_l0s" *) +input wire cfg_pm_halt_aspm_l0s; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control pm_halt_aspm_l1" *) +input wire cfg_pm_halt_aspm_l1; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control pm_force_state_en" *) +input wire cfg_pm_force_state_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control pm_force_state" *) +input wire [1 : 0] cfg_pm_force_state; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control dsn" *) +input wire [63 : 0] cfg_dsn; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt interrupt" *) +input wire cfg_interrupt; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt rdy" *) +output wire cfg_interrupt_rdy; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt assert" *) +input wire cfg_interrupt_assert; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt write_data" *) +input wire [7 : 0] cfg_interrupt_di; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt read_data" *) +output wire [7 : 0] cfg_interrupt_do; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt mmenable" *) +output wire [2 : 0] cfg_interrupt_mmenable; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt msienable" *) +output wire cfg_interrupt_msienable; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt msixenable" *) +output wire cfg_interrupt_msixenable; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt msixfm" *) +output wire cfg_interrupt_msixfm; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt stat" *) +input wire cfg_interrupt_stat; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt pciecap_interrupt_msgnum" *) +input wire [4 : 0] cfg_pciecap_interrupt_msgnum; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status turnoff" *) +output wire cfg_to_turnoff; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control turnoff_ok" *) +input wire cfg_turnoff_ok; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status bus_number" *) +output wire [7 : 0] cfg_bus_number; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status device_number" *) +output wire [4 : 0] cfg_device_number; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status function_number" *) +output wire [2 : 0] cfg_function_number; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control pm_wake" *) +input wire cfg_pm_wake; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control pm_send_pme_to" *) +input wire cfg_pm_send_pme_to; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control ds_bus_number" *) +input wire [7 : 0] cfg_ds_bus_number; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control ds_device_number" *) +input wire [4 : 0] cfg_ds_device_number; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control ds_function_number" *) +input wire [2 : 0] cfg_ds_function_number; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt TYPE1_CFG_REG_ACCESS" *) +input wire cfg_mgmt_wr_rw1c_as_rw; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd received" *) +output wire cfg_msg_received; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd data" *) +output wire [15 : 0] cfg_msg_data; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status bridge_serr_en" *) +output wire cfg_bridge_serr_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status slot_control_electromech_il_ctl_pulse" *) +output wire cfg_slot_control_electromech_il_ctl_pulse; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status root_control_syserr_corr_err_en" *) +output wire cfg_root_control_syserr_corr_err_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status root_control_syserr_non_fatal_err_en" *) +output wire cfg_root_control_syserr_non_fatal_err_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status root_control_syserr_fatal_err_en" *) +output wire cfg_root_control_syserr_fatal_err_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status root_control_pme_int_en" *) +output wire cfg_root_control_pme_int_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status aer_rooterr_corr_err_reporting_en" *) +output wire cfg_aer_rooterr_corr_err_reporting_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status aer_rooterr_non_fatal_err_reporting_en" *) +output wire cfg_aer_rooterr_non_fatal_err_reporting_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status aer_rooterr_fatal_err_reporting_en" *) +output wire cfg_aer_rooterr_fatal_err_reporting_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status aer_rooterr_corr_err_received" *) +output wire cfg_aer_rooterr_corr_err_received; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status aer_rooterr_non_fatal_err_received" *) +output wire cfg_aer_rooterr_non_fatal_err_received; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status aer_rooterr_fatal_err_received" *) +output wire cfg_aer_rooterr_fatal_err_received; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd err_cor" *) +output wire cfg_msg_received_err_cor; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd err_non_fatal" *) +output wire cfg_msg_received_err_non_fatal; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd err_fatal" *) +output wire cfg_msg_received_err_fatal; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd received_pm_as_nak" *) +output wire cfg_msg_received_pm_as_nak; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd pm_pme" *) +output wire cfg_msg_received_pm_pme; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd pme_to_ack" *) +output wire cfg_msg_received_pme_to_ack; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd assert_int_a" *) +output wire cfg_msg_received_assert_int_a; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd assert_int_b" *) +output wire cfg_msg_received_assert_int_b; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd assert_int_c" *) +output wire cfg_msg_received_assert_int_c; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd assert_int_d" *) +output wire cfg_msg_received_assert_int_d; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd deassert_int_a" *) +output wire cfg_msg_received_deassert_int_a; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd deassert_int_b" *) +output wire cfg_msg_received_deassert_int_b; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd deassert_int_c" *) +output wire cfg_msg_received_deassert_int_c; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd deassert_int_d" *) +output wire cfg_msg_received_deassert_int_d; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd received_setslotpowerlimit" *) +output wire cfg_msg_received_setslotpowerlimit; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl directed_link_change" *) +input wire [1 : 0] pl_directed_link_change; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl directed_link_width" *) +input wire [1 : 0] pl_directed_link_width; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl directed_link_speed" *) +input wire pl_directed_link_speed; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl directed_link_auton" *) +input wire pl_directed_link_auton; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl upstream_prefer_deemph" *) +input wire pl_upstream_prefer_deemph; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl sel_lnk_rate" *) +output wire pl_sel_lnk_rate; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl sel_lnk_width" *) +output wire [1 : 0] pl_sel_lnk_width; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl ltssm_state" *) +output wire [5 : 0] pl_ltssm_state; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl lane_reversal_mode" *) +output wire [1 : 0] pl_lane_reversal_mode; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl phy_lnk_up" *) +output wire pl_phy_lnk_up; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl tx_pm_state" *) +output wire [2 : 0] pl_tx_pm_state; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl rx_pm_state" *) +output wire [1 : 0] pl_rx_pm_state; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl link_upcfg_cap" *) +output wire pl_link_upcfg_cap; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl link_gen2_cap" *) +output wire pl_link_gen2_cap; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl link_partner_gen2_supported" *) +output wire pl_link_partner_gen2_supported; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl initial_link_width" *) +output wire [2 : 0] pl_initial_link_width; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl directed_change_done" *) +output wire pl_directed_change_done; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl received_hot_rst" *) +output wire pl_received_hot_rst; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl transmit_hot_rst" *) +input wire pl_transmit_hot_rst; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl downstream_deemph_source" *) +input wire pl_downstream_deemph_source; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err err_aer_headerlog" *) +input wire [127 : 0] cfg_err_aer_headerlog; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err aer_interrupt_msgnum" *) +input wire [4 : 0] cfg_aer_interrupt_msgnum; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err err_aer_headerlog_set" *) +output wire cfg_err_aer_headerlog_set; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err aer_ecrc_check_en" *) +output wire cfg_aer_ecrc_check_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err aer_ecrc_gen_en" *) +output wire cfg_aer_ecrc_gen_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status vc_tcvc_map" *) +output wire [6 : 0] cfg_vc_tcvc_map; +(* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME CLK.sys_clk, FREQ_HZ 100000000, FREQ_TOLERANCE_HZ 0, PHASE 0.000, INSERT_VIP 0" *) +(* X_INTERFACE_INFO = "xilinx.com:signal:clock:1.0 CLK.sys_clk CLK" *) +input wire sys_clk; +(* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME RST.sys_rst_n, POLARITY ACTIVE_LOW, INSERT_VIP 0" *) +(* X_INTERFACE_INFO = "xilinx.com:signal:reset:1.0 RST.sys_rst_n RST" *) +input wire sys_rst_n; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock mmcm_rst_n" *) +input wire pipe_mmcm_rst_n; +input wire pcie_drp_clk; +(* X_INTERFACE_INFO = "xilinx.com:interface:drp:1.0 drp DEN" *) +input wire pcie_drp_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:drp:1.0 drp DWE" *) +input wire pcie_drp_we; +(* X_INTERFACE_INFO = "xilinx.com:interface:drp:1.0 drp DADDR" *) +input wire [8 : 0] pcie_drp_addr; +(* X_INTERFACE_INFO = "xilinx.com:interface:drp:1.0 drp DI" *) +input wire [15 : 0] pcie_drp_di; +(* X_INTERFACE_INFO = "xilinx.com:interface:drp:1.0 drp DO" *) +output wire [15 : 0] pcie_drp_do; +(* X_INTERFACE_INFO = "xilinx.com:interface:drp:1.0 drp DRDY" *) +output wire pcie_drp_rdy; + + pcie_7x_0_pcie2_top #( + .c_component_name("pcie_7x_0"), + .dev_port_type("0000"), + .c_dev_port_type("0"), + .c_header_type("00"), + .c_upstream_facing("TRUE"), + .max_lnk_wdt("000100"), + .max_lnk_spd("2"), + .c_gen1(1'B1), + .pci_exp_int_freq(3), + .c_pcie_fast_config(0), + .bar_0("FFFF0000"), + .bar_1("00000000"), + .bar_2("00000000"), + .bar_3("00000000"), + .bar_4("00000000"), + .bar_5("00000000"), + .xrom_bar("00000000"), + .cost_table(1), + .ven_id("10EE"), + .dev_id("7024"), + .rev_id("00"), + .subsys_ven_id("10EE"), + .subsys_id("0007"), + .class_code("050000"), + .cardbus_cis_ptr("00000000"), + .cap_ver("2"), + .c_pcie_cap_slot_implemented("FALSE"), + .mps("011"), + .cmps("3"), + .ext_tag_fld_sup("FALSE"), + .c_dev_control_ext_tag_default("FALSE"), + .phantm_func_sup("00"), + .c_phantom_functions("0"), + .ep_l0s_accpt_lat("000"), + .c_ep_l0s_accpt_lat("0"), + .ep_l1_accpt_lat("111"), + .c_ep_l1_accpt_lat("7"), + .c_cpl_timeout_disable_sup("FALSE"), + .c_cpl_timeout_range("0010"), + .c_cpl_timeout_ranges_sup("2"), + .c_buf_opt_bma("TRUE"), + .c_perf_level_high("TRUE"), + .c_tx_last_tlp("30"), + .c_rx_ram_limit("FFF"), + .c_fc_ph("32"), + .c_fc_pd("949"), + .c_fc_nph("12"), + .c_fc_npd("24"), + .c_fc_cplh("36"), + .c_fc_cpld("973"), + .c_cpl_inf("TRUE"), + .c_cpl_infinite("TRUE"), + .c_dll_lnk_actv_cap("FALSE"), + .c_trgt_lnk_spd("2"), + .c_hw_auton_spd_disable("FALSE"), + .c_de_emph("FALSE"), + .slot_clk("TRUE"), + .c_rcb("0"), + .c_root_cap_crs("FALSE"), + .c_slot_cap_attn_butn("FALSE"), + .c_slot_cap_attn_ind("FALSE"), + .c_slot_cap_pwr_ctrl("FALSE"), + .c_slot_cap_pwr_ind("FALSE"), + .c_slot_cap_hotplug_surprise("FALSE"), + .c_slot_cap_hotplug_cap("FALSE"), + .c_slot_cap_mrl("FALSE"), + .c_slot_cap_elec_interlock("FALSE"), + .c_slot_cap_no_cmd_comp_sup("FALSE"), + .c_slot_cap_pwr_limit_value("0"), + .c_slot_cap_pwr_limit_scale("0"), + .c_slot_cap_physical_slot_num("0"), + .intx("TRUE"), + .int_pin("1"), + .c_msi_cap_on("FALSE"), + .c_pm_cap_next_ptr("60"), + .c_msi_64b_addr("TRUE"), + .c_msi("0"), + .c_msi_mult_msg_extn("0"), + .c_msi_per_vctr_mask_cap("FALSE"), + .c_msix_cap_on("FALSE"), + .c_msix_next_ptr("00"), + .c_pcie_cap_next_ptr("00"), + .c_msix_table_size("000"), + .c_msix_table_offset("0"), + .c_msix_table_bir("0"), + .c_msix_pba_offset("0"), + .c_msix_pba_bir("0"), + .dsi("0"), + .c_dsi_bool("FALSE"), + .d1_sup("0"), + .c_d1_support("FALSE"), + .d2_sup("0"), + .c_d2_support("FALSE"), + .pme_sup("0F"), + .c_pme_support("0F"), + .no_soft_rst("TRUE"), + .pwr_con_d0_state("00"), + .con_scl_fctr_d0_state("0"), + .pwr_con_d1_state("00"), + .con_scl_fctr_d1_state("0"), + .pwr_con_d2_state("00"), + .con_scl_fctr_d2_state("0"), + .pwr_con_d3_state("00"), + .con_scl_fctr_d3_state("0"), + .pwr_dis_d0_state("00"), + .dis_scl_fctr_d0_state("0"), + .pwr_dis_d1_state("00"), + .dis_scl_fctr_d1_state("0"), + .pwr_dis_d2_state("00"), + .dis_scl_fctr_d2_state("0"), + .pwr_dis_d3_state("00"), + .dis_scl_fctr_d3_state("0"), + .c_dsn_cap_enabled("TRUE"), + .c_dsn_base_ptr("100"), + .c_vc_cap_enabled("FALSE"), + .c_vc_base_ptr("000"), + .c_vc_cap_reject_snoop("FALSE"), + .c_vsec_cap_enabled("FALSE"), + .c_vsec_base_ptr("000"), + .c_vsec_next_ptr("000"), + .c_dsn_next_ptr("000"), + .c_vc_next_ptr("000"), + .c_pci_cfg_space_addr("3F"), + .c_ext_pci_cfg_space_addr("3FF"), + .c_last_cfg_dw("10C"), + .c_enable_msg_route("00000000000"), + .bram_lat("0"), + .c_rx_raddr_lat("0"), + .c_rx_rdata_lat("2"), + .c_rx_write_lat("0"), + .c_tx_raddr_lat("0"), + .c_tx_rdata_lat("2"), + .c_tx_write_lat("0"), + .c_ll_ack_timeout_enable("FALSE"), + .c_ll_ack_timeout_function("0"), + .c_ll_ack_timeout("0000"), + .c_ll_replay_timeout_enable("FALSE"), + .c_ll_replay_timeout_func("1"), + .c_ll_replay_timeout("0000"), + .c_dis_lane_reverse("TRUE"), + .c_upconfig_capable("TRUE"), + .c_disable_scrambling("FALSE"), + .c_disable_tx_aspm_l0s("FALSE"), + .c_pcie_dbg_ports("TRUE"), + .pci_exp_ref_freq("0"), + .c_xlnx_ref_board("ZC706"), + .c_pcie_blk_locn("0"), + .c_ur_atomic("FALSE"), + .c_dev_cap2_atomicop32_completer_supported("FALSE"), + .c_dev_cap2_atomicop64_completer_supported("FALSE"), + .c_dev_cap2_cas128_completer_supported("FALSE"), + .c_dev_cap2_tph_completer_supported("00"), + .c_dev_cap2_ari_forwarding_supported("FALSE"), + .c_dev_cap2_atomicop_routing_supported("FALSE"), + .c_link_cap_aspm_optionality("FALSE"), + .c_aer_cap_on("FALSE"), + .c_aer_base_ptr("000"), + .c_aer_cap_nextptr("000"), + .c_aer_cap_ecrc_check_capable("FALSE"), + .c_aer_cap_ecrc_gen_capable("FALSE"), + .c_aer_cap_multiheader("FALSE"), + .c_aer_cap_permit_rooterr_update("FALSE"), + .c_rbar_cap_on("FALSE"), + .c_rbar_base_ptr("000"), + .c_rbar_cap_nextptr("000"), + .c_rbar_num("0"), + .c_rbar_cap_sup0("00001"), + .c_rbar_cap_index0("0"), + .c_rbar_cap_control_encodedbar0("00"), + .c_rbar_cap_sup1("00001"), + .c_rbar_cap_index1("0"), + .c_rbar_cap_control_encodedbar1("00"), + .c_rbar_cap_sup2("00001"), + .c_rbar_cap_index2("0"), + .c_rbar_cap_control_encodedbar2("00"), + .c_rbar_cap_sup3("00001"), + .c_rbar_cap_index3("0"), + .c_rbar_cap_control_encodedbar3("00"), + .c_rbar_cap_sup4("00001"), + .c_rbar_cap_index4("0"), + .c_rbar_cap_control_encodedbar4("00"), + .c_rbar_cap_sup5("00001"), + .c_rbar_cap_index5("0"), + .c_rbar_cap_control_encodedbar5("00"), + .c_recrc_check("0"), + .c_recrc_check_trim("FALSE"), + .c_disable_rx_poisoned_resp("FALSE"), + .c_trn_np_fc("TRUE"), + .c_ur_inv_req("TRUE"), + .c_ur_prs_response("TRUE"), + .c_silicon_rev("2"), + .c_aer_cap_optional_err_support("000000"), + .LINK_CAP_MAX_LINK_WIDTH(4), + .C_DATA_WIDTH(64), + .PIPE_SIM("FALSE"), + .PCIE_EXT_CLK("TRUE"), + .PCIE_EXT_GT_COMMON("FALSE"), + .EXT_CH_GT_DRP("FALSE"), + .TRANSCEIVER_CTRL_STATUS_PORTS("FALSE"), + .SHARED_LOGIC_IN_CORE("FALSE"), + .ERR_REPORTING_IF("TRUE"), + .PL_INTERFACE("TRUE"), + .CFG_MGMT_IF("TRUE"), + .CFG_CTL_IF("TRUE"), + .CFG_STATUS_IF("TRUE"), + .RCV_MSG_IF("TRUE"), + .CFG_FC_IF("TRUE"), + .EXT_PIPE_INTERFACE("FALSE"), + .EXT_STARTUP_PRIMITIVE("FALSE"), + .KEEP_WIDTH(8), + .PCIE_ASYNC_EN("FALSE"), + .ENABLE_JTAG_DBG("FALSE"), + .REDUCE_OOB_FREQ("FALSE") + ) inst ( + .pci_exp_txp(pci_exp_txp), + .pci_exp_txn(pci_exp_txn), + .pci_exp_rxp(pci_exp_rxp), + .pci_exp_rxn(pci_exp_rxn), + .int_pclk_out_slave(), + .int_pipe_rxusrclk_out(), + .int_rxoutclk_out(), + .int_dclk_out(), + .int_mmcm_lock_out(), + .int_userclk1_out(), + .int_userclk2_out(), + .int_oobclk_out(), + .int_qplllock_out(), + .int_qplloutclk_out(), + .int_qplloutrefclk_out(), + .int_pclk_sel_slave(4'B0), + .pipe_pclk_in(pipe_pclk_in), + .pipe_rxusrclk_in(pipe_rxusrclk_in), + .pipe_rxoutclk_in(pipe_rxoutclk_in), + .pipe_dclk_in(pipe_dclk_in), + .pipe_userclk1_in(pipe_userclk1_in), + .pipe_userclk2_in(pipe_userclk2_in), + .pipe_oobclk_in(pipe_oobclk_in), + .pipe_mmcm_lock_in(pipe_mmcm_lock_in), + .pipe_txoutclk_out(pipe_txoutclk_out), + .pipe_rxoutclk_out(pipe_rxoutclk_out), + .pipe_pclk_sel_out(pipe_pclk_sel_out), + .pipe_gen3_out(pipe_gen3_out), + .user_clk_out(user_clk_out), + .user_reset_out(user_reset_out), + .user_lnk_up(user_lnk_up), + .user_app_rdy(user_app_rdy), + .tx_buf_av(tx_buf_av), + .tx_cfg_req(tx_cfg_req), + .tx_err_drop(tx_err_drop), + .s_axis_tx_tready(s_axis_tx_tready), + .s_axis_tx_tdata(s_axis_tx_tdata), + .s_axis_tx_tkeep(s_axis_tx_tkeep), + .s_axis_tx_tlast(s_axis_tx_tlast), + .s_axis_tx_tvalid(s_axis_tx_tvalid), + .s_axis_tx_tuser(s_axis_tx_tuser), + .tx_cfg_gnt(tx_cfg_gnt), + .m_axis_rx_tdata(m_axis_rx_tdata), + .m_axis_rx_tkeep(m_axis_rx_tkeep), + .m_axis_rx_tlast(m_axis_rx_tlast), + .m_axis_rx_tvalid(m_axis_rx_tvalid), + .m_axis_rx_tready(m_axis_rx_tready), + .m_axis_rx_tuser(m_axis_rx_tuser), + .rx_np_ok(rx_np_ok), + .rx_np_req(rx_np_req), + .fc_cpld(fc_cpld), + .fc_cplh(fc_cplh), + .fc_npd(fc_npd), + .fc_nph(fc_nph), + .fc_pd(fc_pd), + .fc_ph(fc_ph), + .fc_sel(fc_sel), + .cfg_mgmt_do(cfg_mgmt_do), + .cfg_mgmt_rd_wr_done(cfg_mgmt_rd_wr_done), + .cfg_status(cfg_status), + .cfg_command(cfg_command), + .cfg_dstatus(cfg_dstatus), + .cfg_dcommand(cfg_dcommand), + .cfg_lstatus(cfg_lstatus), + .cfg_lcommand(cfg_lcommand), + .cfg_dcommand2(cfg_dcommand2), + .cfg_pcie_link_state(cfg_pcie_link_state), + .cfg_pmcsr_pme_en(cfg_pmcsr_pme_en), + .cfg_pmcsr_powerstate(cfg_pmcsr_powerstate), + .cfg_pmcsr_pme_status(cfg_pmcsr_pme_status), + .cfg_received_func_lvl_rst(cfg_received_func_lvl_rst), + .cfg_mgmt_di(cfg_mgmt_di), + .cfg_mgmt_byte_en(cfg_mgmt_byte_en), + .cfg_mgmt_dwaddr(cfg_mgmt_dwaddr), + .cfg_mgmt_wr_en(cfg_mgmt_wr_en), + .cfg_mgmt_rd_en(cfg_mgmt_rd_en), + .cfg_mgmt_wr_readonly(cfg_mgmt_wr_readonly), + .cfg_err_ecrc(cfg_err_ecrc), + .cfg_err_ur(cfg_err_ur), + .cfg_err_cpl_timeout(cfg_err_cpl_timeout), + .cfg_err_cpl_unexpect(cfg_err_cpl_unexpect), + .cfg_err_cpl_abort(cfg_err_cpl_abort), + .cfg_err_posted(cfg_err_posted), + .cfg_err_cor(cfg_err_cor), + .cfg_err_atomic_egress_blocked(cfg_err_atomic_egress_blocked), + .cfg_err_internal_cor(cfg_err_internal_cor), + .cfg_err_malformed(cfg_err_malformed), + .cfg_err_mc_blocked(cfg_err_mc_blocked), + .cfg_err_poisoned(cfg_err_poisoned), + .cfg_err_norecovery(cfg_err_norecovery), + .cfg_err_tlp_cpl_header(cfg_err_tlp_cpl_header), + .cfg_err_cpl_rdy(cfg_err_cpl_rdy), + .cfg_err_locked(cfg_err_locked), + .cfg_err_acs(cfg_err_acs), + .cfg_err_internal_uncor(cfg_err_internal_uncor), + .cfg_trn_pending(cfg_trn_pending), + .cfg_pm_halt_aspm_l0s(cfg_pm_halt_aspm_l0s), + .cfg_pm_halt_aspm_l1(cfg_pm_halt_aspm_l1), + .cfg_pm_force_state_en(cfg_pm_force_state_en), + .cfg_pm_force_state(cfg_pm_force_state), + .cfg_dsn(cfg_dsn), + .cfg_interrupt(cfg_interrupt), + .cfg_interrupt_rdy(cfg_interrupt_rdy), + .cfg_interrupt_assert(cfg_interrupt_assert), + .cfg_interrupt_di(cfg_interrupt_di), + .cfg_interrupt_do(cfg_interrupt_do), + .cfg_interrupt_mmenable(cfg_interrupt_mmenable), + .cfg_interrupt_msienable(cfg_interrupt_msienable), + .cfg_interrupt_msixenable(cfg_interrupt_msixenable), + .cfg_interrupt_msixfm(cfg_interrupt_msixfm), + .cfg_interrupt_stat(cfg_interrupt_stat), + .cfg_pciecap_interrupt_msgnum(cfg_pciecap_interrupt_msgnum), + .cfg_to_turnoff(cfg_to_turnoff), + .cfg_turnoff_ok(cfg_turnoff_ok), + .cfg_bus_number(cfg_bus_number), + .cfg_device_number(cfg_device_number), + .cfg_function_number(cfg_function_number), + .cfg_pm_wake(cfg_pm_wake), + .cfg_pm_send_pme_to(cfg_pm_send_pme_to), + .cfg_ds_bus_number(cfg_ds_bus_number), + .cfg_ds_device_number(cfg_ds_device_number), + .cfg_ds_function_number(cfg_ds_function_number), + .cfg_mgmt_wr_rw1c_as_rw(cfg_mgmt_wr_rw1c_as_rw), + .cfg_msg_received(cfg_msg_received), + .cfg_msg_data(cfg_msg_data), + .cfg_bridge_serr_en(cfg_bridge_serr_en), + .cfg_slot_control_electromech_il_ctl_pulse(cfg_slot_control_electromech_il_ctl_pulse), + .cfg_root_control_syserr_corr_err_en(cfg_root_control_syserr_corr_err_en), + .cfg_root_control_syserr_non_fatal_err_en(cfg_root_control_syserr_non_fatal_err_en), + .cfg_root_control_syserr_fatal_err_en(cfg_root_control_syserr_fatal_err_en), + .cfg_root_control_pme_int_en(cfg_root_control_pme_int_en), + .cfg_aer_rooterr_corr_err_reporting_en(cfg_aer_rooterr_corr_err_reporting_en), + .cfg_aer_rooterr_non_fatal_err_reporting_en(cfg_aer_rooterr_non_fatal_err_reporting_en), + .cfg_aer_rooterr_fatal_err_reporting_en(cfg_aer_rooterr_fatal_err_reporting_en), + .cfg_aer_rooterr_corr_err_received(cfg_aer_rooterr_corr_err_received), + .cfg_aer_rooterr_non_fatal_err_received(cfg_aer_rooterr_non_fatal_err_received), + .cfg_aer_rooterr_fatal_err_received(cfg_aer_rooterr_fatal_err_received), + .cfg_msg_received_err_cor(cfg_msg_received_err_cor), + .cfg_msg_received_err_non_fatal(cfg_msg_received_err_non_fatal), + .cfg_msg_received_err_fatal(cfg_msg_received_err_fatal), + .cfg_msg_received_pm_as_nak(cfg_msg_received_pm_as_nak), + .cfg_msg_received_pm_pme(cfg_msg_received_pm_pme), + .cfg_msg_received_pme_to_ack(cfg_msg_received_pme_to_ack), + .cfg_msg_received_assert_int_a(cfg_msg_received_assert_int_a), + .cfg_msg_received_assert_int_b(cfg_msg_received_assert_int_b), + .cfg_msg_received_assert_int_c(cfg_msg_received_assert_int_c), + .cfg_msg_received_assert_int_d(cfg_msg_received_assert_int_d), + .cfg_msg_received_deassert_int_a(cfg_msg_received_deassert_int_a), + .cfg_msg_received_deassert_int_b(cfg_msg_received_deassert_int_b), + .cfg_msg_received_deassert_int_c(cfg_msg_received_deassert_int_c), + .cfg_msg_received_deassert_int_d(cfg_msg_received_deassert_int_d), + .cfg_msg_received_setslotpowerlimit(cfg_msg_received_setslotpowerlimit), + .pl_directed_link_change(pl_directed_link_change), + .pl_directed_link_width(pl_directed_link_width), + .pl_directed_link_speed(pl_directed_link_speed), + .pl_directed_link_auton(pl_directed_link_auton), + .pl_upstream_prefer_deemph(pl_upstream_prefer_deemph), + .pl_sel_lnk_rate(pl_sel_lnk_rate), + .pl_sel_lnk_width(pl_sel_lnk_width), + .pl_ltssm_state(pl_ltssm_state), + .pl_lane_reversal_mode(pl_lane_reversal_mode), + .pl_phy_lnk_up(pl_phy_lnk_up), + .pl_tx_pm_state(pl_tx_pm_state), + .pl_rx_pm_state(pl_rx_pm_state), + .pl_link_upcfg_cap(pl_link_upcfg_cap), + .pl_link_gen2_cap(pl_link_gen2_cap), + .pl_link_partner_gen2_supported(pl_link_partner_gen2_supported), + .pl_initial_link_width(pl_initial_link_width), + .pl_directed_change_done(pl_directed_change_done), + .pl_received_hot_rst(pl_received_hot_rst), + .pl_transmit_hot_rst(pl_transmit_hot_rst), + .pl_downstream_deemph_source(pl_downstream_deemph_source), + .cfg_err_aer_headerlog(cfg_err_aer_headerlog), + .cfg_aer_interrupt_msgnum(cfg_aer_interrupt_msgnum), + .cfg_err_aer_headerlog_set(cfg_err_aer_headerlog_set), + .cfg_aer_ecrc_check_en(cfg_aer_ecrc_check_en), + .cfg_aer_ecrc_gen_en(cfg_aer_ecrc_gen_en), + .cfg_vc_tcvc_map(cfg_vc_tcvc_map), + .sys_clk(sys_clk), + .sys_rst_n(sys_rst_n), + .pipe_mmcm_rst_n(pipe_mmcm_rst_n), + .startup_eos_in(1'B0), + .startup_cfgclk(), + .startup_cfgmclk(), + .startup_eos(), + .startup_preq(), + .startup_clk(1'B0), + .startup_gsr(1'B0), + .startup_gts(1'B0), + .startup_keyclearb(1'B1), + .startup_pack(1'B0), + .startup_usrcclko(1'B1), + .startup_usrcclkts(1'B0), + .startup_usrdoneo(1'B0), + .startup_usrdonets(1'B1), + .icap_clk(1'B0), + .icap_csib(1'B0), + .icap_rdwrb(1'B0), + .icap_i(32'B0), + .icap_o(), + .qpll_drp_crscode(12'B0), + .qpll_drp_fsm(18'B0), + .qpll_drp_done(2'B0), + .qpll_drp_reset(2'B0), + .qpll_qplllock(2'B0), + .qpll_qplloutclk(2'B0), + .qpll_qplloutrefclk(2'B0), + .qpll_qplld(), + .qpll_qpllreset(), + .qpll_drp_clk(), + .qpll_drp_rst_n(), + .qpll_drp_ovrd(), + .qpll_drp_gen3(), + .qpll_drp_start(), + .pipe_txprbssel(3'B0), + .pipe_rxprbssel(3'B0), + .pipe_txprbsforceerr(1'B0), + .pipe_rxprbscntreset(1'B0), + .pipe_loopback(3'B0), + .pipe_rxprbserr(), + .pipe_txinhibit(4'B0), + .pipe_rst_fsm(), + .pipe_qrst_fsm(), + .pipe_rate_fsm(), + .pipe_sync_fsm_tx(), + .pipe_sync_fsm_rx(), + .pipe_drp_fsm(), + .pipe_rst_idle(), + .pipe_qrst_idle(), + .pipe_rate_idle(), + .pipe_eyescandataerror(), + .pipe_rxstatus(), + .pipe_dmonitorout(), + .pipe_cpll_lock(), + .pipe_qpll_lock(), + .pipe_rxpmaresetdone(), + .pipe_rxbufstatus(), + .pipe_txphaligndone(), + .pipe_txphinitdone(), + .pipe_txdlysresetdone(), + .pipe_rxphaligndone(), + .pipe_rxdlysresetdone(), + .pipe_rxsyncdone(), + .pipe_rxdisperr(), + .pipe_rxnotintable(), + .pipe_rxcommadet(), + .gt_ch_drp_rdy(), + .pipe_debug_1(), + .pipe_debug_2(), + .pipe_debug_3(), + .pipe_debug_4(), + .pipe_debug_5(), + .pipe_debug_6(), + .pipe_debug_7(), + .pipe_debug_8(), + .pipe_debug_9(), + .pipe_debug(), + .ext_ch_gt_drpclk(), + .ext_ch_gt_drpaddr(36'B0), + .ext_ch_gt_drpen(4'B0), + .ext_ch_gt_drpdi(64'B0), + .ext_ch_gt_drpwe(4'B0), + .ext_ch_gt_drpdo(), + .ext_ch_gt_drprdy(), + .pcie_drp_clk(pcie_drp_clk), + .pcie_drp_en(pcie_drp_en), + .pcie_drp_we(pcie_drp_we), + .pcie_drp_addr(pcie_drp_addr), + .pcie_drp_di(pcie_drp_di), + .pcie_drp_do(pcie_drp_do), + .pcie_drp_rdy(pcie_drp_rdy), + .common_commands_in(12'B0), + .pipe_rx_0_sigs(25'B0), + .pipe_rx_1_sigs(25'B0), + .pipe_rx_2_sigs(25'B0), + .pipe_rx_3_sigs(25'B0), + .pipe_rx_4_sigs(25'B0), + .pipe_rx_5_sigs(25'B0), + .pipe_rx_6_sigs(25'B0), + .pipe_rx_7_sigs(25'B0), + .common_commands_out(), + .pipe_tx_0_sigs(), + .pipe_tx_1_sigs(), + .pipe_tx_2_sigs(), + .pipe_tx_3_sigs(), + .pipe_tx_4_sigs(), + .pipe_tx_5_sigs(), + .pipe_tx_6_sigs(), + .pipe_tx_7_sigs() + ); +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0-PCIE_X0Y0.xdc b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0-PCIE_X0Y0.xdc new file mode 100644 index 0000000..5c630b4 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0-PCIE_X0Y0.xdc @@ -0,0 +1,156 @@ +##----------------------------------------------------------------------------- +## +## (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. +## +##----------------------------------------------------------------------------- +## Project : Series-7 Integrated Block for PCI Express +## File : pcie_7x_0-PCIE_X0Y0.xdc +## Version : 3.3 +# +############################################################################### +# Vivado - PCIe GUI / User Configuration +############################################################################### +# +# Family - zynq +# Part - xc7z045 +# Package - ffg900 +# Speed grade - -2 +# PCIe Block - PCIE_X0Y0 +# +# Link Speed - 2 +# Link Width - X4 +# AXIST Width - 64-bit +# AXIST Frequ - 3 +# +############################################################################### +# User Time Names / User Time Groups / Time Specs +############################################################################### + +############################################################################### +# User Physical Constraints +############################################################################### + + +############################################################################### +# Pinout and Related I/O Constraints +############################################################################### + + +############################################################################### +# Physical Constraints +############################################################################### +# +# Transceiver instance placement. This constraint selects the +# transceivers to be used, which also dictates the pinout for the +# transmit and receive differential pairs. Please refer to the +# Virtex-7 GT Transceiver User Guide (UG) for more information. +# + +# PCIe Lane 0 +set_property LOC GTXE2_CHANNEL_X0Y15 [get_cells {inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/gtx_channel.gtxe2_channel_i}] +# PCIe Lane 1 +set_property LOC GTXE2_CHANNEL_X0Y14 [get_cells {inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/gtx_channel.gtxe2_channel_i}] +# PCIe Lane 2 +set_property LOC GTXE2_CHANNEL_X0Y13 [get_cells {inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/gtx_channel.gtxe2_channel_i}] +# PCIe Lane 3 +set_property LOC GTXE2_CHANNEL_X0Y12 [get_cells {inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/gtx_channel.gtxe2_channel_i}] + + +# +# PCI Express Block placement. This constraint selects the PCI Express +# Block to be used. +# + +set_property LOC PCIE_X0Y0 [get_cells inst/pcie_top_i/pcie_7x_i/pcie_block_i] + +# +# BlockRAM placement +# +set_property LOC RAMB36_X7Y35 [get_cells {inst/pcie_top_i/pcie_7x_i/pcie_bram_top/pcie_brams_rx/brams[7].ram/use_tdp.ramb36/genblk*.bram36_tdp_bl.bram36_tdp_bl}] +set_property LOC RAMB36_X7Y36 [get_cells {inst/pcie_top_i/pcie_7x_i/pcie_bram_top/pcie_brams_rx/brams[6].ram/use_tdp.ramb36/genblk*.bram36_tdp_bl.bram36_tdp_bl}] +set_property LOC RAMB36_X7Y27 [get_cells {inst/pcie_top_i/pcie_7x_i/pcie_bram_top/pcie_brams_tx/brams[5].ram/use_tdp.ramb36/genblk*.bram36_tdp_bl.bram36_tdp_bl}] +set_property LOC RAMB36_X7Y28 [get_cells {inst/pcie_top_i/pcie_7x_i/pcie_bram_top/pcie_brams_tx/brams[6].ram/use_tdp.ramb36/genblk*.bram36_tdp_bl.bram36_tdp_bl}] +set_property LOC RAMB36_X7Y29 [get_cells {inst/pcie_top_i/pcie_7x_i/pcie_bram_top/pcie_brams_tx/brams[7].ram/use_tdp.ramb36/genblk*.bram36_tdp_bl.bram36_tdp_bl}] +set_property LOC RAMB36_X6Y37 [get_cells {inst/pcie_top_i/pcie_7x_i/pcie_bram_top/pcie_brams_rx/brams[5].ram/use_tdp.ramb36/genblk*.bram36_tdp_bl.bram36_tdp_bl}] +set_property LOC RAMB36_X6Y36 [get_cells {inst/pcie_top_i/pcie_7x_i/pcie_bram_top/pcie_brams_rx/brams[4].ram/use_tdp.ramb36/genblk*.bram36_tdp_bl.bram36_tdp_bl}] +set_property LOC RAMB36_X6Y35 [get_cells {inst/pcie_top_i/pcie_7x_i/pcie_bram_top/pcie_brams_rx/brams[3].ram/use_tdp.ramb36/genblk*.bram36_tdp_bl.bram36_tdp_bl}] +set_property LOC RAMB36_X6Y34 [get_cells {inst/pcie_top_i/pcie_7x_i/pcie_bram_top/pcie_brams_rx/brams[2].ram/use_tdp.ramb36/genblk*.bram36_tdp_bl.bram36_tdp_bl}] +set_property LOC RAMB36_X6Y33 [get_cells {inst/pcie_top_i/pcie_7x_i/pcie_bram_top/pcie_brams_rx/brams[1].ram/use_tdp.ramb36/genblk*.bram36_tdp_bl.bram36_tdp_bl}] +set_property LOC RAMB36_X6Y32 [get_cells {inst/pcie_top_i/pcie_7x_i/pcie_bram_top/pcie_brams_rx/brams[0].ram/use_tdp.ramb36/genblk*.bram36_tdp_bl.bram36_tdp_bl}] +set_property LOC RAMB36_X6Y31 [get_cells {inst/pcie_top_i/pcie_7x_i/pcie_bram_top/pcie_brams_tx/brams[0].ram/use_tdp.ramb36/genblk*.bram36_tdp_bl.bram36_tdp_bl}] +set_property LOC RAMB36_X6Y30 [get_cells {inst/pcie_top_i/pcie_7x_i/pcie_bram_top/pcie_brams_tx/brams[1].ram/use_tdp.ramb36/genblk*.bram36_tdp_bl.bram36_tdp_bl}] +set_property LOC RAMB36_X6Y29 [get_cells {inst/pcie_top_i/pcie_7x_i/pcie_bram_top/pcie_brams_tx/brams[2].ram/use_tdp.ramb36/genblk*.bram36_tdp_bl.bram36_tdp_bl}] +set_property LOC RAMB36_X6Y28 [get_cells {inst/pcie_top_i/pcie_7x_i/pcie_bram_top/pcie_brams_tx/brams[3].ram/use_tdp.ramb36/genblk*.bram36_tdp_bl.bram36_tdp_bl}] +set_property LOC RAMB36_X6Y27 [get_cells {inst/pcie_top_i/pcie_7x_i/pcie_bram_top/pcie_brams_tx/brams[4].ram/use_tdp.ramb36/genblk*.bram36_tdp_bl.bram36_tdp_bl}] + +############################################################################### +# Timing Constraints +############################################################################### +# +create_clock -name txoutclk_x0y0 -period 10 [get_pins {inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/gtx_channel.gtxe2_channel_i/TXOUTCLK}] +# +# +set_false_path -through [get_pins -filter {REF_PIN_NAME=~PLPHYLNKUPN} -of_objects [get_cells -hierarchical -filter { PRIMITIVE_TYPE =~ * }]] +set_false_path -through [get_pins -filter {REF_PIN_NAME=~PLRECEIVEDHOTRST} -of_objects [get_cells -hierarchical -filter { PRIMITIVE_TYPE =~ * }]] + +#------------------------------------------------------------------------------ +# Asynchronous Paths +#------------------------------------------------------------------------------ +set_false_path -through [get_pins -filter {REF_PIN_NAME=~RXELECIDLE} -of_objects [get_cells -hierarchical -filter { PRIMITIVE_TYPE =~ IO.gt.* }]] +set_false_path -through [get_pins -filter {REF_PIN_NAME=~TXPHINITDONE} -of_objects [get_cells -hierarchical -filter { PRIMITIVE_TYPE =~ IO.gt.* }]] +set_false_path -through [get_pins -filter {REF_PIN_NAME=~TXPHALIGNDONE} -of_objects [get_cells -hierarchical -filter { PRIMITIVE_TYPE =~ IO.gt.* }]] +set_false_path -through [get_pins -filter {REF_PIN_NAME=~TXDLYSRESETDONE} -of_objects [get_cells -hierarchical -filter { PRIMITIVE_TYPE =~ IO.gt.* }]] +set_false_path -through [get_pins -filter {REF_PIN_NAME=~RXDLYSRESETDONE} -of_objects [get_cells -hierarchical -filter { PRIMITIVE_TYPE =~ IO.gt.* }]] +set_false_path -through [get_pins -filter {REF_PIN_NAME=~RXPHALIGNDONE} -of_objects [get_cells -hierarchical -filter { PRIMITIVE_TYPE =~ IO.gt.* }]] +set_false_path -through [get_pins -filter {REF_PIN_NAME=~RXCDRLOCK} -of_objects [get_cells -hierarchical -filter { PRIMITIVE_TYPE =~ IO.gt.* }]] +set_false_path -through [get_pins -filter {REF_PIN_NAME=~CFGMSGRECEIVEDPMETO} -of_objects [get_cells -hierarchical -filter { PRIMITIVE_TYPE =~ * }]] +set_false_path -through [get_pins -filter {REF_PIN_NAME=~CPLLLOCK} -of_objects [get_cells -hierarchical -filter { PRIMITIVE_TYPE =~ IO.gt.* }]] +set_false_path -through [get_pins -filter {REF_PIN_NAME=~QPLLLOCK} -of_objects [get_cells -hierarchical -filter { PRIMITIVE_TYPE =~ IO.gt.* }]] + +############################################################################### +# End +############################################################################### diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_rx.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_rx.v new file mode 100644 index 0000000..52c3895 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_rx.v @@ -0,0 +1,212 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_axi_basic_rx.v +// Version : 3.3 +// // +// Description: // +// TRN to AXI RX module. Instantiates pipeline and null generator RX // +// submodules. // +// // +// Notes: // +// Optional notes section. // +// // +// Hierarchical: // +// axi_basic_top // +// axi_basic_rx // +// // +//----------------------------------------------------------------------------// + +`timescale 1ps/1ps + +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_axi_basic_rx #( + parameter C_DATA_WIDTH = 128, // RX/TX interface data width + parameter C_FAMILY = "X7", // Targeted FPGA family + parameter C_ROOT_PORT = "FALSE", // PCIe block is in root port mode + parameter C_PM_PRIORITY = "FALSE", // Disable TX packet boundary thrtl + parameter TCQ = 1, // Clock to Q time + + // Do not override parameters below this line + parameter REM_WIDTH = (C_DATA_WIDTH == 128) ? 2 : 1, // trem/rrem width + parameter KEEP_WIDTH = C_DATA_WIDTH / 8 // KEEP width + ) ( + //---------------------------------------------// + // User Design I/O // + //---------------------------------------------// + + // AXI RX + //----------- + output [C_DATA_WIDTH-1:0] m_axis_rx_tdata, // RX data to user + output m_axis_rx_tvalid, // RX data is valid + input m_axis_rx_tready, // RX ready for data + output [KEEP_WIDTH-1:0] m_axis_rx_tkeep, // RX strobe byte enables + output m_axis_rx_tlast, // RX data is last + output [21:0] m_axis_rx_tuser, // RX user signals + + //---------------------------------------------// + // PCIe Block I/O // + //---------------------------------------------// + + // TRN RX + //----------- + input [C_DATA_WIDTH-1:0] trn_rd, // RX data from block + input trn_rsof, // RX start of packet + input trn_reof, // RX end of packet + input trn_rsrc_rdy, // RX source ready + output trn_rdst_rdy, // RX destination ready + input trn_rsrc_dsc, // RX source discontinue + input [REM_WIDTH-1:0] trn_rrem, // RX remainder + input trn_rerrfwd, // RX error forward + input [6:0] trn_rbar_hit, // RX BAR hit + input trn_recrc_err, // RX ECRC error + + // System + //----------- + output [2:0] np_counter, // Non-posted counter + input user_clk, // user clock from block + input user_rst // user reset from block +); + + +// Wires +wire null_rx_tvalid; +wire null_rx_tlast; +wire [KEEP_WIDTH-1:0] null_rx_tkeep; +wire null_rdst_rdy; +wire [4:0] null_is_eof; + +//---------------------------------------------// +// RX Data Pipeline // +//---------------------------------------------// + +pcie_7x_0_axi_basic_rx_pipeline #( + .C_DATA_WIDTH( C_DATA_WIDTH ), + .C_FAMILY( C_FAMILY ), + .TCQ( TCQ ), + + .REM_WIDTH( REM_WIDTH ), + .KEEP_WIDTH( KEEP_WIDTH ) + +) rx_pipeline_inst ( + + // Outgoing AXI TX + //----------- + .m_axis_rx_tdata( m_axis_rx_tdata ), + .m_axis_rx_tvalid( m_axis_rx_tvalid ), + .m_axis_rx_tready( m_axis_rx_tready ), + .m_axis_rx_tkeep( m_axis_rx_tkeep ), + .m_axis_rx_tlast( m_axis_rx_tlast ), + .m_axis_rx_tuser( m_axis_rx_tuser ), + + // Incoming TRN RX + //----------- + .trn_rd( trn_rd ), + .trn_rsof( trn_rsof ), + .trn_reof( trn_reof ), + .trn_rsrc_rdy( trn_rsrc_rdy ), + .trn_rdst_rdy( trn_rdst_rdy ), + .trn_rsrc_dsc( trn_rsrc_dsc ), + .trn_rrem( trn_rrem ), + .trn_rerrfwd( trn_rerrfwd ), + .trn_rbar_hit( trn_rbar_hit ), + .trn_recrc_err( trn_recrc_err ), + + // Null Inputs + //----------- + .null_rx_tvalid( null_rx_tvalid ), + .null_rx_tlast( null_rx_tlast ), + .null_rx_tkeep( null_rx_tkeep ), + .null_rdst_rdy( null_rdst_rdy ), + .null_is_eof( null_is_eof ), + + // System + //----------- + .np_counter( np_counter ), + .user_clk( user_clk ), + .user_rst( user_rst ) +); + + + //---------------------------------------------// + // RX Null Packet Generator // + //---------------------------------------------// + +pcie_7x_0_axi_basic_rx_null_gen #( + .C_DATA_WIDTH( C_DATA_WIDTH ), + .TCQ( TCQ ), + + .KEEP_WIDTH( KEEP_WIDTH ) + + ) rx_null_gen_inst ( + + // Inputs + //----------- + .m_axis_rx_tdata( m_axis_rx_tdata ), + .m_axis_rx_tvalid( m_axis_rx_tvalid ), + .m_axis_rx_tready( m_axis_rx_tready ), + .m_axis_rx_tlast( m_axis_rx_tlast ), + .m_axis_rx_tuser( m_axis_rx_tuser ), + + // Null Outputs + //----------- + .null_rx_tvalid( null_rx_tvalid ), + .null_rx_tlast( null_rx_tlast ), + .null_rx_tkeep( null_rx_tkeep ), + .null_rdst_rdy( null_rdst_rdy ), + .null_is_eof( null_is_eof ), + + // System + //----------- + .user_clk( user_clk ), + .user_rst( user_rst ) + ); + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_rx_null_gen.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_rx_null_gen.v new file mode 100644 index 0000000..f23efe4 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_rx_null_gen.v @@ -0,0 +1,383 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_axi_basic_rx_null_gen.v +// Version : 3.3 +// // +// Description: // +// TRN to AXI RX null generator. Generates null packets for use in // +// discontinue situations. // +// // +// Notes: // +// Optional notes section. // +// // +// Hierarchical: // +// axi_basic_top // +// axi_basic_rx // +// axi_basic_rx_null_gen // +// // +//----------------------------------------------------------------------------// + +`timescale 1ps/1ps + +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_axi_basic_rx_null_gen # ( + parameter C_DATA_WIDTH = 128, // RX/TX interface data width + parameter TCQ = 1, // Clock to Q time + + // Do not override parameters below this line + parameter KEEP_WIDTH = C_DATA_WIDTH / 8 // KEEP width + ) ( + + // AXI RX + //----------- + input [C_DATA_WIDTH-1:0] m_axis_rx_tdata, // RX data to user + input m_axis_rx_tvalid, // RX data is valid + input m_axis_rx_tready, // RX ready for data + input m_axis_rx_tlast, // RX data is last + input [21:0] m_axis_rx_tuser, // RX user signals + + // Null Inputs + //----------- + output null_rx_tvalid, // NULL generated tvalid + output null_rx_tlast, // NULL generated tlast + output [KEEP_WIDTH-1:0] null_rx_tkeep, // NULL generated tkeep + output null_rdst_rdy, // NULL generated rdst_rdy + output reg [4:0] null_is_eof, // NULL generated is_eof + + // System + //----------- + input user_clk, // user clock from block + input user_rst // user reset from block +); + + +localparam INTERFACE_WIDTH_DWORDS = (C_DATA_WIDTH == 128) ? 11'd4 : + (C_DATA_WIDTH == 64) ? 11'd2 : 11'd1; + +//----------------------------------------------------------------------------// +// NULL packet generator state machine // +// This state machine shadows the AXI RX interface, tracking each packet as // +// it's passed to the AXI user. When a multi-cycle packet is detected, the // +// state machine automatically generates a "null" packet. In the event of a // +// discontinue, the RX pipeline can switch over to this null packet as // +// necessary. // +//----------------------------------------------------------------------------// + +// State machine variables and states +localparam IDLE = 0; +localparam IN_PACKET = 1; +reg cur_state; +reg next_state; + +// Signals for tracking a packet on the AXI interface +reg [11:0] reg_pkt_len_counter; +reg [11:0] pkt_len_counter; +wire [11:0] pkt_len_counter_dec; +wire pkt_done; + +// Calculate packet fields, which are needed to determine total packet length. +wire [11:0] new_pkt_len; +wire [9:0] payload_len; +wire [1:0] packet_fmt; +wire packet_td; +reg [3:0] packet_overhead; + +// Misc. +wire [KEEP_WIDTH-1:0] eof_tkeep; +wire straddle_sof; +wire eof; + + +// Create signals to detect sof and eof situations. These signals vary depending +// on data width. +assign eof = m_axis_rx_tuser[21]; +generate + if(C_DATA_WIDTH == 128) begin : sof_eof_128 + assign straddle_sof = (m_axis_rx_tuser[14:13] == 2'b11); + end + else begin : sof_eof_64_32 + assign straddle_sof = 1'b0; + end +endgenerate + + +//----------------------------------------------------------------------------// +// Calculate the length of the packet being presented on the RX interface. To // +// do so, we need the relevent packet fields that impact total packet length. // +// These are: // +// - Header length: obtained from bit 1 of FMT field in 1st DWORD of header // +// - Payload length: obtained from LENGTH field in 1st DWORD of header // +// - TLP digest: obtained from TD field in 1st DWORD of header // +// - Current data: the number of bytes that have already been presented // +// on the data interface // +// // +// packet length = header + payload + tlp digest - # of DWORDS already // +// transmitted // +// // +// packet_overhead is where we calculate everything except payload. // +//----------------------------------------------------------------------------// +generate + if(C_DATA_WIDTH == 128) begin : len_calc_128 + assign packet_fmt = straddle_sof ? + m_axis_rx_tdata[94:93] : m_axis_rx_tdata[30:29]; + assign packet_td = straddle_sof ? + m_axis_rx_tdata[79] : m_axis_rx_tdata[15]; + assign payload_len = packet_fmt[1] ? + (straddle_sof ? m_axis_rx_tdata[73:64] : m_axis_rx_tdata[9:0]) : 10'h0; + + always @(*) begin + // In 128-bit mode, the amount of data currently on the interface + // depends on whether we're straddling or not. If so, 2 DWORDs have been + // seen. If not, 4 DWORDs. + case({packet_fmt[0], packet_td, straddle_sof}) + // Header + TD - Data currently on interface + 3'b0_0_0: packet_overhead = 4'd3 + 4'd0 - 4'd4; + 3'b0_0_1: packet_overhead = 4'd3 + 4'd0 - 4'd2; + 3'b0_1_0: packet_overhead = 4'd3 + 4'd1 - 4'd4; + 3'b0_1_1: packet_overhead = 4'd3 + 4'd1 - 4'd2; + 3'b1_0_0: packet_overhead = 4'd4 + 4'd0 - 4'd4; + 3'b1_0_1: packet_overhead = 4'd4 + 4'd0 - 4'd2; + 3'b1_1_0: packet_overhead = 4'd4 + 4'd1 - 4'd4; + 3'b1_1_1: packet_overhead = 4'd4 + 4'd1 - 4'd2; + endcase + end +assign new_pkt_len = + {{9{packet_overhead[3]}}, packet_overhead[2:0]} + {2'b0, payload_len}; + end + else if(C_DATA_WIDTH == 64) begin : len_calc_64 + assign packet_fmt = m_axis_rx_tdata[30:29]; + assign packet_td = m_axis_rx_tdata[15]; + assign payload_len = packet_fmt[1] ? m_axis_rx_tdata[9:0] : 10'h0; + + always @(*) begin + // 64-bit mode: no straddling, so always 2 DWORDs + case({packet_fmt[0], packet_td}) + // Header + TD - Data currently on interface + 2'b0_0: packet_overhead[1:0] = 2'b01 ;//4'd3 + 4'd0 - 4'd2; // 1 + 2'b0_1: packet_overhead[1:0] = 2'b10 ;//4'd3 + 4'd1 - 4'd2; // 2 + 2'b1_0: packet_overhead[1:0] = 2'b10 ;//4'd4 + 4'd0 - 4'd2; // 2 + 2'b1_1: packet_overhead[1:0] = 2'b11 ;//4'd4 + 4'd1 - 4'd2; // 3 + endcase + end +assign new_pkt_len = + {{10{1'b0}}, packet_overhead[1:0]} + {2'b0, payload_len}; + end + else begin : len_calc_32 + assign packet_fmt = m_axis_rx_tdata[30:29]; + assign packet_td = m_axis_rx_tdata[15]; + assign payload_len = packet_fmt[1] ? m_axis_rx_tdata[9:0] : 10'h0; + + always @(*) begin + // 32-bit mode: no straddling, so always 1 DWORD + case({packet_fmt[0], packet_td}) + // Header + TD - Data currently on interface + 2'b0_0: packet_overhead = 4'd3 + 4'd0 - 4'd1; + 2'b0_1: packet_overhead = 4'd3 + 4'd1 - 4'd1; + 2'b1_0: packet_overhead = 4'd4 + 4'd0 - 4'd1; + 2'b1_1: packet_overhead = 4'd4 + 4'd1 - 4'd1; + endcase + end +assign new_pkt_len = + {{9{packet_overhead[3]}}, packet_overhead[2:0]} + {2'b0, payload_len}; + end +endgenerate + +// Now calculate actual packet length, adding the packet overhead and the +// payload length. This is signed math, so sign-extend packet_overhead. +// NOTE: a payload length of zero means 1024 DW in the PCIe spec, but this +// behavior isn't supported in our block. +//assign new_pkt_len = +// {{9{packet_overhead[3]}}, packet_overhead[2:0]} + {2'b0, payload_len}; + + +// Math signals needed in the state machine below. These are seperate wires to +// help ensure synthesis tools sre smart about optimizing them. +assign pkt_len_counter_dec = reg_pkt_len_counter - INTERFACE_WIDTH_DWORDS; +assign pkt_done = (reg_pkt_len_counter <= INTERFACE_WIDTH_DWORDS); + +//----------------------------------------------------------------------------// +// Null generator Mealy state machine. Determine outputs based on: // +// 1) current st // +// 2) current inp // +//----------------------------------------------------------------------------// +always @(*) begin + case (cur_state) + + // IDLE state: the interface is IDLE and we're waiting for a packet to + // start. If a packet starts, move to state IN_PACKET and begin tracking + // it as long as it's NOT a single cycle packet (indicated by assertion of + // eof at packet start) + IDLE: begin + if(m_axis_rx_tvalid && m_axis_rx_tready && !eof) begin + next_state = IN_PACKET; + end + else begin + next_state = IDLE; + end + + pkt_len_counter = new_pkt_len; + end + + // IN_PACKET: a mutli-cycle packet is in progress and we're tracking it. We + // are in lock-step with the AXI interface decrementing our packet length + // tracking reg, and waiting for the packet to finish. + // + // * If packet finished and a new one starts, this is a straddle situation. + // Next state is IN_PACKET (128-bit only). + // * If the current packet is done, next state is IDLE. + // * Otherwise, next state is IN_PACKET. + IN_PACKET: begin + // Straddle packet + if((C_DATA_WIDTH == 128) && straddle_sof && m_axis_rx_tvalid) begin + pkt_len_counter = new_pkt_len; + next_state = IN_PACKET; + end + + // Current packet finished + else if(m_axis_rx_tready && pkt_done) + begin + pkt_len_counter = new_pkt_len; + next_state = IDLE; + end + + // Packet in progress + else begin + if(m_axis_rx_tready) begin + // Not throttled + pkt_len_counter = pkt_len_counter_dec; + end + else begin + // Throttled + pkt_len_counter = reg_pkt_len_counter; + end + + next_state = IN_PACKET; + end + end + + default: begin + pkt_len_counter = reg_pkt_len_counter; + next_state = IDLE; + end + endcase +end + + +// Synchronous NULL packet generator state machine logic +always @(posedge user_clk) begin + if(user_rst) begin + cur_state <= #TCQ IDLE; + reg_pkt_len_counter <= #TCQ 12'h0; + end + else begin + cur_state <= #TCQ next_state; + reg_pkt_len_counter <= #TCQ pkt_len_counter; + end +end + + +// Generate tkeep/is_eof for an end-of-packet situation. +generate + if(C_DATA_WIDTH == 128) begin : strb_calc_128 + always @(*) begin + // Assign null_is_eof depending on how many DWORDs are left in the + // packet. + case(pkt_len_counter) + 10'd1: null_is_eof = 5'b10011; + 10'd2: null_is_eof = 5'b10111; + 10'd3: null_is_eof = 5'b11011; + 10'd4: null_is_eof = 5'b11111; + default: null_is_eof = 5'b00011; + endcase + end + + // tkeep not used in 128-bit interface + assign eof_tkeep = {KEEP_WIDTH{1'b0}}; + end + else if(C_DATA_WIDTH == 64) begin : strb_calc_64 + always @(*) begin + // Assign null_is_eof depending on how many DWORDs are left in the + // packet. + case(pkt_len_counter) + 10'd1: null_is_eof = 5'b10011; + 10'd2: null_is_eof = 5'b10111; + default: null_is_eof = 5'b00011; + endcase + end + + // Assign tkeep to 0xFF or 0x0F depending on how many DWORDs are left in + // the current packet. + assign eof_tkeep = { ((pkt_len_counter == 12'd2) ? 4'hF:4'h0), 4'hF }; + end + else begin : strb_calc_32 + always @(*) begin + // is_eof is either on or off for 32-bit + if(pkt_len_counter == 12'd1) begin + null_is_eof = 5'b10011; + end + else begin + null_is_eof = 5'b00011; + end + end + + // The entire DWORD is always valid in 32-bit mode, so tkeep is always 0xF + assign eof_tkeep = 4'hF; + end +endgenerate + + +// Finally, use everything we've generated to calculate our NULL outputs +assign null_rx_tvalid = 1'b1; +assign null_rx_tlast = (pkt_len_counter <= INTERFACE_WIDTH_DWORDS); +assign null_rx_tkeep = null_rx_tlast ? eof_tkeep : {KEEP_WIDTH{1'b1}}; +assign null_rdst_rdy = null_rx_tlast; + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_rx_pipeline.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_rx_pipeline.v new file mode 100644 index 0000000..2f81823 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_rx_pipeline.v @@ -0,0 +1,623 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_axi_basic_rx_pipeline.v +// Version : 3.3 +// // +// Description: // +// TRN to AXI RX pipeline. Converts received data from TRN protocol to AXI. // +// // +// Notes: // +// Optional notes section. // +// // +// Hierarchical: // +// axi_basic_top // +// axi_basic_rx // +// axi_basic_rx_pipeline // +// // +//----------------------------------------------------------------------------// + +`timescale 1ps/1ps + +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_axi_basic_rx_pipeline #( + parameter C_DATA_WIDTH = 128, // RX/TX interface data width + parameter C_FAMILY = "X7", // Targeted FPGA family + parameter TCQ = 1, // Clock to Q time + + // Do not override parameters below this line + parameter REM_WIDTH = (C_DATA_WIDTH == 128) ? 2 : 1, // trem/rrem width + parameter KEEP_WIDTH = C_DATA_WIDTH / 8 // KEEP width + ) ( + + // AXI RX + //----------- + output reg [C_DATA_WIDTH-1:0] m_axis_rx_tdata, // RX data to user + output reg m_axis_rx_tvalid, // RX data is valid + input m_axis_rx_tready, // RX ready for data + output [KEEP_WIDTH-1:0] m_axis_rx_tkeep, // RX strobe byte enables + output m_axis_rx_tlast, // RX data is last + output reg [21:0] m_axis_rx_tuser, // RX user signals + + // TRN RX + //----------- + input [C_DATA_WIDTH-1:0] trn_rd, // RX data from block + input trn_rsof, // RX start of packet + input trn_reof, // RX end of packet + input trn_rsrc_rdy, // RX source ready + output reg trn_rdst_rdy, // RX destination ready + input trn_rsrc_dsc, // RX source discontinue + input [REM_WIDTH-1:0] trn_rrem, // RX remainder + input trn_rerrfwd, // RX error forward + input [6:0] trn_rbar_hit, // RX BAR hit + input trn_recrc_err, // RX ECRC error + + // Null Inputs + //----------- + input null_rx_tvalid, // NULL generated tvalid + input null_rx_tlast, // NULL generated tlast + input [KEEP_WIDTH-1:0] null_rx_tkeep, // NULL generated tkeep + input null_rdst_rdy, // NULL generated rdst_rdy + input [4:0] null_is_eof, // NULL generated is_eof + + // System + //----------- + output [2:0] np_counter, // Non-posted counter + input user_clk, // user clock from block + input user_rst // user reset from block +); + + +// Wires and regs for creating AXI signals +wire [4:0] is_sof; +wire [4:0] is_sof_prev; + +wire [4:0] is_eof; +wire [4:0] is_eof_prev; + +reg [KEEP_WIDTH-1:0] reg_tkeep; +wire [KEEP_WIDTH-1:0] tkeep; +wire [KEEP_WIDTH-1:0] tkeep_prev; + +reg reg_tlast; +wire rsrc_rdy_filtered; + +// Wires and regs for previous value buffer +wire [C_DATA_WIDTH-1:0] trn_rd_DW_swapped; +reg [C_DATA_WIDTH-1:0] trn_rd_prev; + +wire data_hold; +reg data_prev; + +reg trn_reof_prev; +reg [REM_WIDTH-1:0] trn_rrem_prev; +reg trn_rsrc_rdy_prev; +reg trn_rsrc_dsc_prev; +reg trn_rsof_prev; +reg [6:0] trn_rbar_hit_prev; +reg trn_rerrfwd_prev; +reg trn_recrc_err_prev; + +// Null packet handling signals +reg null_mux_sel; +reg trn_in_packet; +wire dsc_flag; +wire dsc_detect; +reg reg_dsc_detect; +reg trn_rsrc_dsc_d; + + +// Create "filtered" version of rsrc_rdy, where discontinued SOFs are removed. +assign rsrc_rdy_filtered = trn_rsrc_rdy && + (trn_in_packet || (trn_rsof && !trn_rsrc_dsc)); + +//----------------------------------------------------------------------------// +// Previous value buffer // +// --------------------- // +// We are inserting a pipeline stage in between TRN and AXI, which causes // +// some issues with handshaking signals m_axis_rx_tready/trn_rdst_rdy. The // +// added cycle of latency in the path causes the user design to fall behind // +// the TRN interface whenever it throttles. // +// // +// To avoid loss of data, we must keep the previous value of all trn_r* // +// signals in case the user throttles. // +//----------------------------------------------------------------------------// +always @(posedge user_clk) begin + if(user_rst) begin + trn_rd_prev <= #TCQ {C_DATA_WIDTH{1'b0}}; + trn_rsof_prev <= #TCQ 1'b0; + trn_rrem_prev <= #TCQ {REM_WIDTH{1'b0}}; + trn_rsrc_rdy_prev <= #TCQ 1'b0; + trn_rbar_hit_prev <= #TCQ 7'h00; + trn_rerrfwd_prev <= #TCQ 1'b0; + trn_recrc_err_prev <= #TCQ 1'b0; + trn_reof_prev <= #TCQ 1'b0; + trn_rsrc_dsc_prev <= #TCQ 1'b0; + end + else begin + // prev buffer works by checking trn_rdst_rdy. When trn_rdst_rdy is + // asserted, a new value is present on the interface. + if(trn_rdst_rdy) begin + trn_rd_prev <= #TCQ trn_rd_DW_swapped; + trn_rsof_prev <= #TCQ trn_rsof; + trn_rrem_prev <= #TCQ trn_rrem; + trn_rbar_hit_prev <= #TCQ trn_rbar_hit; + trn_rerrfwd_prev <= #TCQ trn_rerrfwd; + trn_recrc_err_prev <= #TCQ trn_recrc_err; + trn_rsrc_rdy_prev <= #TCQ rsrc_rdy_filtered; + trn_reof_prev <= #TCQ trn_reof; + trn_rsrc_dsc_prev <= #TCQ trn_rsrc_dsc || dsc_flag; + end + end +end + + +//----------------------------------------------------------------------------// +// Create TDATA // +//----------------------------------------------------------------------------// + +// Convert TRN data format to AXI data format. AXI is DWORD swapped from TRN +// 128-bit: 64-bit: 32-bit: +// TRN DW0 maps to AXI DW3 TRN DW0 maps to AXI DW1 TNR DW0 maps to AXI DW0 +// TRN DW1 maps to AXI DW2 TRN DW1 maps to AXI DW0 +// TRN DW2 maps to AXI DW1 +// TRN DW3 maps to AXI DW0 +generate + if(C_DATA_WIDTH == 128) begin : rd_DW_swap_128 + assign trn_rd_DW_swapped = {trn_rd[31:0], + trn_rd[63:32], + trn_rd[95:64], + trn_rd[127:96]}; + end + else if(C_DATA_WIDTH == 64) begin : rd_DW_swap_64 + assign trn_rd_DW_swapped = {trn_rd[31:0], trn_rd[63:32]}; + end + else begin : rd_DW_swap_32 + assign trn_rd_DW_swapped = trn_rd; + end +endgenerate + + +// Create special buffer which locks in the proper value of TDATA depending +// on whether the user is throttling or not. This buffer has three states: +// +// HOLD state: TDATA maintains its current value +// - the user has throttled the PCIe block +// PREVIOUS state: the buffer provides the previous value on trn_rd +// - the user has finished throttling, and is a little behind +// the PCIe block +// CURRENT state: the buffer passes the current value on trn_rd +// - the user is caught up and ready to receive the latest +// data from the PCIe block +always @(posedge user_clk) begin + if(user_rst) begin + m_axis_rx_tdata <= #TCQ {C_DATA_WIDTH{1'b0}}; + end + else begin + if(!data_hold) begin + // PREVIOUS state + if(data_prev) begin + m_axis_rx_tdata <= #TCQ trn_rd_prev; + end + + // CURRENT state + else begin + m_axis_rx_tdata <= #TCQ trn_rd_DW_swapped; + end + end + // else HOLD state + end +end + +// Logic to instruct pipeline to hold its value +assign data_hold = (!m_axis_rx_tready && m_axis_rx_tvalid); + +// Logic to instruct pipeline to use previous bus values. Always use previous +// value after holding a value. +always @(posedge user_clk) begin + if(user_rst) begin + data_prev <= #TCQ 1'b0; + end + else begin + data_prev <= #TCQ data_hold; + end +end + + +//----------------------------------------------------------------------------// +// Create TVALID, TLAST, tkeep, TUSER // +// ----------------------------------- // +// Use the same strategy for these signals as for TDATA, except here we need // +// an extra provision for null packets. // +//----------------------------------------------------------------------------// +always @(posedge user_clk) begin + if(user_rst) begin + m_axis_rx_tvalid <= #TCQ 1'b0; + reg_tlast <= #TCQ 1'b0; + reg_tkeep <= #TCQ {KEEP_WIDTH{1'b1}}; + m_axis_rx_tuser <= #TCQ 22'h0; + end + else begin + if(!data_hold) begin + // If in a null packet, use null generated value + if(null_mux_sel) begin + m_axis_rx_tvalid <= #TCQ null_rx_tvalid; + reg_tlast <= #TCQ null_rx_tlast; + reg_tkeep <= #TCQ null_rx_tkeep; + m_axis_rx_tuser <= #TCQ {null_is_eof, 17'h0000}; + end + + // PREVIOUS state + else if(data_prev) begin + m_axis_rx_tvalid <= #TCQ (trn_rsrc_rdy_prev || dsc_flag); + reg_tlast <= #TCQ trn_reof_prev; + reg_tkeep <= #TCQ tkeep_prev; + m_axis_rx_tuser <= #TCQ {is_eof_prev, // TUSER bits [21:17] + 2'b00, // TUSER bits [16:15] + is_sof_prev, // TUSER bits [14:10] + 1'b0, // TUSER bit [9] + trn_rbar_hit_prev, // TUSER bits [8:2] + trn_rerrfwd_prev, // TUSER bit [1] + trn_recrc_err_prev}; // TUSER bit [0] + end + + // CURRENT state + else begin + m_axis_rx_tvalid <= #TCQ (rsrc_rdy_filtered || dsc_flag); + reg_tlast <= #TCQ trn_reof; + reg_tkeep <= #TCQ tkeep; + m_axis_rx_tuser <= #TCQ {is_eof, // TUSER bits [21:17] + 2'b00, // TUSER bits [16:15] + is_sof, // TUSER bits [14:10] + 1'b0, // TUSER bit [9] + trn_rbar_hit, // TUSER bits [8:2] + trn_rerrfwd, // TUSER bit [1] + trn_recrc_err}; // TUSER bit [0] + end + end + // else HOLD state + end +end + +// Hook up TLAST and tkeep depending on interface width +generate + // For 128-bit interface, don't pass TLAST and tkeep to user (is_eof and + // is_data passed to user instead). reg_tlast is still used internally. + if(C_DATA_WIDTH == 128) begin : tlast_tkeep_hookup_128 + assign m_axis_rx_tlast = 1'b0; + assign m_axis_rx_tkeep = {KEEP_WIDTH{1'b1}}; + end + + // For 64/32-bit interface, pass TLAST to user. + else begin : tlast_tkeep_hookup_64_32 + assign m_axis_rx_tlast = reg_tlast; + assign m_axis_rx_tkeep = reg_tkeep; + end +endgenerate + + +//----------------------------------------------------------------------------// +// Create tkeep // +// ------------ // +// Convert RREM to STRB. Here, we are converting the encoding method for the // +// location of the EOF from TRN flavor (rrem) to AXI (tkeep). // +// // +// NOTE: for each configuration, we need two values of tkeep, the current and // +// previous values. The need for these two values is described below. // +//----------------------------------------------------------------------------// +generate + if(C_DATA_WIDTH == 128) begin : rrem_to_tkeep_128 + // TLAST and tkeep not used in 128-bit interface. is_sof and is_eof used + // instead. + assign tkeep = 16'h0000; + assign tkeep_prev = 16'h0000; + end + else if(C_DATA_WIDTH == 64) begin : rrem_to_tkeep_64 + // 64-bit interface: contains 2 DWORDs per cycle, for a total of 8 bytes + // - tkeep has only two possible values here, 0xFF or 0x0F + assign tkeep = trn_rrem ? 8'hFF : 8'h0F; + assign tkeep_prev = trn_rrem_prev ? 8'hFF : 8'h0F; + end + else begin : rrem_to_tkeep_32 + // 32-bit interface: contains 1 DWORD per cycle, for a total of 4 bytes + // - tkeep is always 0xF in this case, due to the nature of the PCIe block + assign tkeep = 4'hF; + assign tkeep_prev = 4'hF; + end +endgenerate + + +//----------------------------------------------------------------------------// +// Create is_sof // +// ------------- // +// is_sof is a signal to the user indicating the location of SOF in TDATA . // +// Due to inherent 64-bit alignment of packets from the block, the only // +// possible values are: // +// Value Valid data widths // +// 5'b11000 (sof @ byte 8) 128 // +// 5'b10000 (sof @ byte 0) 128, 64, 32 // +// 5'b00000 (sof not present) 128, 64, 32 // +//----------------------------------------------------------------------------// +generate + if(C_DATA_WIDTH == 128) begin : is_sof_128 + assign is_sof = {(trn_rsof && !trn_rsrc_dsc), // bit 4: enable + (trn_rsof && !trn_rrem[1]), // bit 3: sof @ byte 8? + 3'b000}; // bit 2-0: hardwired 0 + + assign is_sof_prev = {(trn_rsof_prev && !trn_rsrc_dsc_prev), // bit 4 + (trn_rsof_prev && !trn_rrem_prev[1]), // bit 3 + 3'b000}; // bit 2-0 + end + else begin : is_sof_64_32 + assign is_sof = {(trn_rsof && !trn_rsrc_dsc), // bit 4: enable + 4'b0000}; // bit 3-0: hardwired 0 + + assign is_sof_prev = {(trn_rsof_prev && !trn_rsrc_dsc_prev), // bit 4 + 4'b0000}; // bit 3-0 + end +endgenerate + + +//----------------------------------------------------------------------------// +// Create is_eof // +// ------------- // +// is_eof is a signal to the user indicating the location of EOF in TDATA . // +// Due to DWORD granularity of packets from the block, the only // +// possible values are: // +// Value Valid data widths // +// 5'b11111 (eof @ byte 15) 128 // +// 5'b11011 (eof @ byte 11) 128 // +// 5'b10111 (eof @ byte 7) 128, 64 // +// 5'b10011 (eof @ byte 3)` 128, 64, 32 // +// 5'b00011 (eof not present) 128, 64, 32 // +//----------------------------------------------------------------------------// +generate + if(C_DATA_WIDTH == 128) begin : is_eof_128 + assign is_eof = {trn_reof, // bit 4: enable + trn_rrem, // bit 3-2: encoded eof loc rom block + 2'b11}; // bit 1-0: hardwired 1 + + assign is_eof_prev = {trn_reof_prev, // bit 4: enable + trn_rrem_prev, // bit 3-2: encoded eof loc from block + 2'b11}; // bit 1-0: hardwired 1 + end + else if(C_DATA_WIDTH == 64) begin : is_eof_64 + assign is_eof = {trn_reof, // bit 4: enable + 1'b0, // bit 3: hardwired 0 + trn_rrem, // bit 2: encoded eof loc from block + 2'b11}; // bit 1-0: hardwired 1 + + assign is_eof_prev = {trn_reof_prev, // bit 4: enable + 1'b0, // bit 3: hardwired 0 + trn_rrem_prev, // bit 2: encoded eof loc from block + 2'b11}; // bit 1-0: hardwired 1 + end + else begin : is_eof_32 + assign is_eof = {trn_reof, // bit 4: enable + 4'b0011}; // bit 3-0: hardwired to byte 3 + + assign is_eof_prev = {trn_reof_prev, // bit 4: enable + 4'b0011}; // bit 3-0: hardwired to byte 3 + end +endgenerate + + + +//----------------------------------------------------------------------------// +// Create trn_rdst_rdy // +//----------------------------------------------------------------------------// +always @(posedge user_clk) begin + if(user_rst) begin + trn_rdst_rdy <= #TCQ 1'b0; + end + else begin + // If in a null packet, use null generated value + if(null_mux_sel && m_axis_rx_tready) begin + trn_rdst_rdy <= #TCQ null_rdst_rdy; + end + + // If a discontinue needs to be serviced, throttle the block until we are + // ready to pad out the packet. + else if(dsc_flag) begin + trn_rdst_rdy <= #TCQ 1'b0; + end + + // If in a packet, pass user back-pressure directly to block + else if(m_axis_rx_tvalid) begin + trn_rdst_rdy <= #TCQ m_axis_rx_tready; + end + + // If idle, default to no back-pressure. We need to default to the + // "ready to accept data" state to make sure we catch the first + // clock of data of a new packet. + else begin + trn_rdst_rdy <= #TCQ 1'b1; + end + end +end + +//----------------------------------------------------------------------------// +// Create null_mux_sel // +// null_mux_sel is the signal used to detect a discontinue situation and // +// mux in the null packet generated in rx_null_gen. Only mux in null data // +// when not at the beginningof a packet. SOF discontinues do not require // +// padding, as the whole packet is simply squashed instead. // +//----------------------------------------------------------------------------// +always @(posedge user_clk) begin + if(user_rst) begin + null_mux_sel <= #TCQ 1'b0; + end + else begin + // NULL packet done + if(null_mux_sel && null_rx_tlast && m_axis_rx_tready) + begin + null_mux_sel <= #TCQ 1'b0; + end + + // Discontinue detected and we're in packet, so switch to NULL packet + else if(dsc_flag && !data_hold) begin + null_mux_sel <= #TCQ 1'b1; + end + end +end + + +//----------------------------------------------------------------------------// +// Create discontinue tracking signals // +//----------------------------------------------------------------------------// +// Create signal trn_in_packet, which is needed to validate trn_rsrc_dsc. We +// should ignore trn_rsrc_dsc when it's asserted out-of-packet. +always @(posedge user_clk) begin + if(user_rst) begin + trn_in_packet <= #TCQ 1'b0; + end + else begin + if(trn_rsof && !trn_reof && rsrc_rdy_filtered && trn_rdst_rdy) + begin + trn_in_packet <= #TCQ 1'b1; + end + else if(trn_rsrc_dsc) begin + trn_in_packet <= #TCQ 1'b0; + end + else if(trn_reof && !trn_rsof && trn_rsrc_rdy && trn_rdst_rdy) begin + trn_in_packet <= #TCQ 1'b0; + end + end +end + + +// Create dsc_flag, which identifies and stores mid-packet discontinues that +// require null packet padding. This signal is edge sensitive to trn_rsrc_dsc, +// to make sure we don't service the same dsc twice in the event that +// trn_rsrc_dsc stays asserted for longer than it takes to pad out the packet. +assign dsc_detect = trn_rsrc_dsc && !trn_rsrc_dsc_d && trn_in_packet && + (!trn_rsof || trn_reof) && !(trn_rdst_rdy && trn_reof); + +always @(posedge user_clk) begin + if(user_rst) begin + reg_dsc_detect <= #TCQ 1'b0; + trn_rsrc_dsc_d <= #TCQ 1'b0; + end + else begin + if(dsc_detect) begin + reg_dsc_detect <= #TCQ 1'b1; + end + else if(null_mux_sel) begin + reg_dsc_detect <= #TCQ 1'b0; + end + + trn_rsrc_dsc_d <= #TCQ trn_rsrc_dsc; + end +end + +assign dsc_flag = dsc_detect || reg_dsc_detect; + + + +//----------------------------------------------------------------------------// +// Create np_counter (V6 128-bit only). This counter tells the V6 128-bit // +// interface core how many NP packets have left the RX pipeline. The V6 // +// 128-bit interface uses this count to perform rnp_ok modulation. // +//----------------------------------------------------------------------------// +generate + if(C_FAMILY == "V6" && C_DATA_WIDTH == 128) begin : np_cntr_to_128_enabled + reg [2:0] reg_np_counter; + + // Look for NP packets beginning on lower (i.e. unaligned) start + wire mrd_lower = (!(|m_axis_rx_tdata[92:88]) && !m_axis_rx_tdata[94]); + wire mrd_lk_lower = (m_axis_rx_tdata[92:88] == 5'b00001); + wire io_rdwr_lower = (m_axis_rx_tdata[92:88] == 5'b00010); + wire cfg_rdwr_lower = (m_axis_rx_tdata[92:89] == 4'b0010); + wire atomic_lower = ((&m_axis_rx_tdata[91:90]) && m_axis_rx_tdata[94]); + + wire np_pkt_lower = (mrd_lower || + mrd_lk_lower || + io_rdwr_lower || + cfg_rdwr_lower || + atomic_lower) && m_axis_rx_tuser[13]; + + // Look for NP packets beginning on upper (i.e. aligned) start + wire mrd_upper = (!(|m_axis_rx_tdata[28:24]) && !m_axis_rx_tdata[30]); + wire mrd_lk_upper = (m_axis_rx_tdata[28:24] == 5'b00001); + wire io_rdwr_upper = (m_axis_rx_tdata[28:24] == 5'b00010); + wire cfg_rdwr_upper = (m_axis_rx_tdata[28:25] == 4'b0010); + wire atomic_upper = ((&m_axis_rx_tdata[27:26]) && m_axis_rx_tdata[30]); + + wire np_pkt_upper = (mrd_upper || + mrd_lk_upper || + io_rdwr_upper || + cfg_rdwr_upper || + atomic_upper) && !m_axis_rx_tuser[13]; + + wire pkt_accepted = + m_axis_rx_tuser[14] && m_axis_rx_tready && m_axis_rx_tvalid; + + // Increment counter whenever an NP packet leaves the RX pipeline + always @(posedge user_clk) begin + if (user_rst) begin + reg_np_counter <= #TCQ 0; + end + else begin + if((np_pkt_lower || np_pkt_upper) && pkt_accepted) + begin + reg_np_counter <= #TCQ reg_np_counter + 3'h1; + end + end + end + + assign np_counter = reg_np_counter; + end + else begin : np_cntr_to_128_disabled + assign np_counter = 3'h0; + end +endgenerate + + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_top.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_top.v new file mode 100644 index 0000000..f180020 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_top.v @@ -0,0 +1,282 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_axi_basic_top.v +// Version : 3.3 +// // +// Description: // +// TRN/AXI4-S Bridge top level module. Instantiates RX and TX modules. // +// // +// Notes: // +// Optional notes section. // +// // +// Hierarchical: // +// axi_basic_top // +// // +//----------------------------------------------------------------------------// + +`timescale 1ps/1ps + +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_axi_basic_top #( + parameter C_DATA_WIDTH = 128, // RX/TX interface data width + parameter C_FAMILY = "X7", // Targeted FPGA family + parameter C_ROOT_PORT = "FALSE", // PCIe block is in root port mode + parameter C_PM_PRIORITY = "FALSE", // Disable TX packet boundary thrtl + parameter TCQ = 1, // Clock to Q time + + // Do not override parameters below this line + parameter REM_WIDTH = (C_DATA_WIDTH == 128) ? 2 : 1, // trem/rrem width + parameter KEEP_WIDTH = C_DATA_WIDTH / 8 // KEEP width + ) ( + //---------------------------------------------// + // User Design I/O // + //---------------------------------------------// + + // AXI TX + //----------- + input [C_DATA_WIDTH-1:0] s_axis_tx_tdata, // TX data from user + input s_axis_tx_tvalid, // TX data is valid + output s_axis_tx_tready, // TX ready for data + input [KEEP_WIDTH-1:0] s_axis_tx_tkeep, // TX strobe byte enables + input s_axis_tx_tlast, // TX data is last + input [3:0] s_axis_tx_tuser, // TX user signals + + // AXI RX + //----------- + output [C_DATA_WIDTH-1:0] m_axis_rx_tdata, // RX data to user + output m_axis_rx_tvalid, // RX data is valid + input m_axis_rx_tready, // RX ready for data + output [KEEP_WIDTH-1:0] m_axis_rx_tkeep, // RX strobe byte enables + output m_axis_rx_tlast, // RX data is last + output [21:0] m_axis_rx_tuser, // RX user signals + + // User Misc. + //----------- + input user_turnoff_ok, // Turnoff OK from user + input user_tcfg_gnt, // Send cfg OK from user + + //---------------------------------------------// + // PCIe Block I/O // + //---------------------------------------------// + + // TRN TX + //----------- + output [C_DATA_WIDTH-1:0] trn_td, // TX data from block + output trn_tsof, // TX start of packet + output trn_teof, // TX end of packet + output trn_tsrc_rdy, // TX source ready + input trn_tdst_rdy, // TX destination ready + output trn_tsrc_dsc, // TX source discontinue + output [REM_WIDTH-1:0] trn_trem, // TX remainder + output trn_terrfwd, // TX error forward + output trn_tstr, // TX streaming enable + input [5:0] trn_tbuf_av, // TX buffers available + output trn_tecrc_gen, // TX ECRC generate + + // TRN RX + //----------- + input [127:0] trn_rd, // RX data from block + input trn_rsof, // RX start of packet + input trn_reof, // RX end of packet + input trn_rsrc_rdy, // RX source ready + output trn_rdst_rdy, // RX destination ready + input trn_rsrc_dsc, // RX source discontinue + input [1:0] trn_rrem, // RX remainder + input trn_rerrfwd, // RX error forward + input [6:0] trn_rbar_hit, // RX BAR hit + input trn_recrc_err, // RX ECRC error + + // TRN Misc. + //----------- + input trn_tcfg_req, // TX config request + output trn_tcfg_gnt, // RX config grant + input trn_lnk_up, // PCIe link up + + // 7 Series/Virtex6 PM + //----------- + input [2:0] cfg_pcie_link_state, // Encoded PCIe link state + + // Virtex6 PM + //----------- + input cfg_pm_send_pme_to, // PM send PME turnoff msg + input [1:0] cfg_pmcsr_powerstate, // PMCSR power state + input [31:0] trn_rdllp_data, // RX DLLP data + input trn_rdllp_src_rdy, // RX DLLP source ready + + // Virtex6/Spartan6 PM + //----------- + input cfg_to_turnoff, // Turnoff request + output cfg_turnoff_ok, // Turnoff grant + + // System + //----------- + output [2:0] np_counter, // Non-posted counter + input user_clk, // user clock from block + input user_rst // user reset from block +); + + +//---------------------------------------------// +// RX Data Pipeline // +//---------------------------------------------// + +pcie_7x_0_axi_basic_rx #( + .C_DATA_WIDTH( C_DATA_WIDTH ), + .C_FAMILY( C_FAMILY ), + + .TCQ( TCQ ), + .REM_WIDTH( REM_WIDTH ), + .KEEP_WIDTH( KEEP_WIDTH ) +) rx_inst ( + + // Outgoing AXI TX + //----------- + .m_axis_rx_tdata( m_axis_rx_tdata ), + .m_axis_rx_tvalid( m_axis_rx_tvalid ), + .m_axis_rx_tready( m_axis_rx_tready ), + .m_axis_rx_tkeep( m_axis_rx_tkeep ), + .m_axis_rx_tlast( m_axis_rx_tlast ), + .m_axis_rx_tuser( m_axis_rx_tuser ), + + // Incoming TRN RX + //----------- + .trn_rd( trn_rd[C_DATA_WIDTH-1:0] ), + .trn_rsof( trn_rsof ), + .trn_reof( trn_reof ), + .trn_rsrc_rdy( trn_rsrc_rdy ), + .trn_rdst_rdy( trn_rdst_rdy ), + .trn_rsrc_dsc( trn_rsrc_dsc ), + .trn_rrem( trn_rrem[REM_WIDTH-1:0] ), + .trn_rerrfwd( trn_rerrfwd ), + .trn_rbar_hit( trn_rbar_hit ), + .trn_recrc_err( trn_recrc_err ), + + // System + //----------- + .np_counter( np_counter ), + .user_clk( user_clk ), + .user_rst( user_rst ) +); + + + +//---------------------------------------------// +// TX Data Pipeline // +//---------------------------------------------// + +pcie_7x_0_axi_basic_tx #( + .C_DATA_WIDTH( C_DATA_WIDTH ), + .C_FAMILY( C_FAMILY ), + .C_ROOT_PORT( C_ROOT_PORT ), + .C_PM_PRIORITY( C_PM_PRIORITY ), + + .TCQ( TCQ ), + .REM_WIDTH( REM_WIDTH ), + .KEEP_WIDTH( KEEP_WIDTH ) +) tx_inst ( + + // Incoming AXI RX + //----------- + .s_axis_tx_tdata( s_axis_tx_tdata ), + .s_axis_tx_tvalid( s_axis_tx_tvalid ), + .s_axis_tx_tready( s_axis_tx_tready ), + .s_axis_tx_tkeep( s_axis_tx_tkeep ), + .s_axis_tx_tlast( s_axis_tx_tlast ), + .s_axis_tx_tuser( s_axis_tx_tuser ), + + // User Misc. + //----------- + .user_turnoff_ok( user_turnoff_ok ), + .user_tcfg_gnt( user_tcfg_gnt ), + + // Outgoing TRN TX + //----------- + .trn_td( trn_td ), + .trn_tsof( trn_tsof ), + .trn_teof( trn_teof ), + .trn_tsrc_rdy( trn_tsrc_rdy ), + .trn_tdst_rdy( trn_tdst_rdy ), + .trn_tsrc_dsc( trn_tsrc_dsc ), + .trn_trem( trn_trem ), + .trn_terrfwd( trn_terrfwd ), + .trn_tstr( trn_tstr ), + .trn_tbuf_av( trn_tbuf_av ), + .trn_tecrc_gen( trn_tecrc_gen ), + + // TRN Misc. + //----------- + .trn_tcfg_req( trn_tcfg_req ), + .trn_tcfg_gnt( trn_tcfg_gnt ), + .trn_lnk_up( trn_lnk_up ), + + // 7 Series/Virtex6 PM + //----------- + .cfg_pcie_link_state( cfg_pcie_link_state ), + + // Virtex6 PM + //----------- + .cfg_pm_send_pme_to( cfg_pm_send_pme_to ), + .cfg_pmcsr_powerstate( cfg_pmcsr_powerstate ), + .trn_rdllp_data( trn_rdllp_data ), + .trn_rdllp_src_rdy( trn_rdllp_src_rdy ), + + // Spartan6 PM + //----------- + .cfg_to_turnoff( cfg_to_turnoff ), + .cfg_turnoff_ok( cfg_turnoff_ok ), + + // System + //----------- + .user_clk( user_clk ), + .user_rst( user_rst ) +); + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_tx.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_tx.v new file mode 100644 index 0000000..b1c1899 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_tx.v @@ -0,0 +1,260 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_axi_basic_tx.v +// Version : 3.3 +// // +// Description: // +// AXI to TRN TX module. Instantiates pipeline and throttle control TX // +// submodules. // +// // +// Notes: // +// Optional notes section. // +// // +// Hierarchical: // +// axi_basic_top // +// axi_basic_tx // +// // +//----------------------------------------------------------------------------// + +`timescale 1ps/1ps + +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_axi_basic_tx #( + parameter C_DATA_WIDTH = 128, // RX/TX interface data width + parameter C_FAMILY = "X7", // Targeted FPGA family + parameter C_ROOT_PORT = "FALSE", // PCIe block is in root port mode + parameter C_PM_PRIORITY = "FALSE", // Disable TX packet boundary thrtl + parameter TCQ = 1, // Clock to Q time + + // Do not override parameters below this line + parameter REM_WIDTH = (C_DATA_WIDTH == 128) ? 2 : 1, // trem/rrem width + parameter KEEP_WIDTH = C_DATA_WIDTH / 8 // KEEP width + ) ( + //---------------------------------------------// + // User Design I/O // + //---------------------------------------------// + + // AXI TX + //----------- + input [C_DATA_WIDTH-1:0] s_axis_tx_tdata, // TX data from user + input s_axis_tx_tvalid, // TX data is valid + output s_axis_tx_tready, // TX ready for data + input [KEEP_WIDTH-1:0] s_axis_tx_tkeep, // TX strobe byte enables + input s_axis_tx_tlast, // TX data is last + input [3:0] s_axis_tx_tuser, // TX user signals + + // User Misc. + //----------- + input user_turnoff_ok, // Turnoff OK from user + input user_tcfg_gnt, // Send cfg OK from user + + //---------------------------------------------// + // PCIe Block I/O // + //---------------------------------------------// + + // TRN TX + //----------- + output [C_DATA_WIDTH-1:0] trn_td, // TX data from block + output trn_tsof, // TX start of packet + output trn_teof, // TX end of packet + output trn_tsrc_rdy, // TX source ready + input trn_tdst_rdy, // TX destination ready + output trn_tsrc_dsc, // TX source discontinue + output [REM_WIDTH-1:0] trn_trem, // TX remainder + output trn_terrfwd, // TX error forward + output trn_tstr, // TX streaming enable + input [5:0] trn_tbuf_av, // TX buffers available + output trn_tecrc_gen, // TX ECRC generate + + // TRN Misc. + //----------- + input trn_tcfg_req, // TX config request + output trn_tcfg_gnt, // RX config grant + input trn_lnk_up, // PCIe link up + + // 7 Series/Virtex6 PM + //----------- + input [2:0] cfg_pcie_link_state, // Encoded PCIe link state + + // Virtex6 PM + //----------- + input cfg_pm_send_pme_to, // PM send PME turnoff msg + input [1:0] cfg_pmcsr_powerstate, // PMCSR power state + input [31:0] trn_rdllp_data, // RX DLLP data + input trn_rdllp_src_rdy, // RX DLLP source ready + + // Virtex6/Spartan6 PM + //----------- + input cfg_to_turnoff, // Turnoff request + output cfg_turnoff_ok, // Turnoff grant + + // System + //----------- + input user_clk, // user clock from block + input user_rst // user reset from block +); + + +wire tready_thrtl; + +//---------------------------------------------// +// TX Data Pipeline // +//---------------------------------------------// + +pcie_7x_0_axi_basic_tx_pipeline #( + .C_DATA_WIDTH( C_DATA_WIDTH ), + .C_PM_PRIORITY( C_PM_PRIORITY ), + .TCQ( TCQ ), + + .REM_WIDTH( REM_WIDTH ), + .KEEP_WIDTH( KEEP_WIDTH ) +) tx_pipeline_inst ( + + // Incoming AXI RX + //----------- + .s_axis_tx_tdata( s_axis_tx_tdata ), + .s_axis_tx_tready( s_axis_tx_tready ), + .s_axis_tx_tvalid( s_axis_tx_tvalid ), + .s_axis_tx_tkeep( s_axis_tx_tkeep ), + .s_axis_tx_tlast( s_axis_tx_tlast ), + .s_axis_tx_tuser( s_axis_tx_tuser ), + + // Outgoing TRN TX + //----------- + .trn_td( trn_td ), + .trn_tsof( trn_tsof ), + .trn_teof( trn_teof ), + .trn_tsrc_rdy( trn_tsrc_rdy ), + .trn_tdst_rdy( trn_tdst_rdy ), + .trn_tsrc_dsc( trn_tsrc_dsc ), + .trn_trem( trn_trem ), + .trn_terrfwd( trn_terrfwd ), + .trn_tstr( trn_tstr ), + .trn_tecrc_gen( trn_tecrc_gen ), + .trn_lnk_up( trn_lnk_up ), + + // System + //----------- + .tready_thrtl( tready_thrtl ), + .user_clk( user_clk ), + .user_rst( user_rst ) +); + + +//---------------------------------------------// +// TX Throttle Controller // +//---------------------------------------------// + +generate + if(C_PM_PRIORITY == "FALSE") begin : thrtl_ctl_enabled +pcie_7x_0_axi_basic_tx_thrtl_ctl #( + .C_DATA_WIDTH( C_DATA_WIDTH ), + .C_FAMILY( C_FAMILY ), + .C_ROOT_PORT( C_ROOT_PORT ), + .TCQ( TCQ ) + + ) tx_thrl_ctl_inst ( + + // Outgoing AXI TX + //----------- + .s_axis_tx_tdata( s_axis_tx_tdata ), + .s_axis_tx_tvalid( s_axis_tx_tvalid ), + .s_axis_tx_tuser( s_axis_tx_tuser ), + .s_axis_tx_tlast( s_axis_tx_tlast ), + + // User Misc. + //----------- + .user_turnoff_ok( user_turnoff_ok ), + .user_tcfg_gnt( user_tcfg_gnt ), + + // Incoming TRN RX + //----------- + .trn_tbuf_av( trn_tbuf_av ), + .trn_tdst_rdy( trn_tdst_rdy ), + + // TRN Misc. + //----------- + .trn_tcfg_req( trn_tcfg_req ), + .trn_tcfg_gnt( trn_tcfg_gnt ), + .trn_lnk_up( trn_lnk_up ), + + // 7 Seriesq/Virtex6 PM + //----------- + .cfg_pcie_link_state( cfg_pcie_link_state ), + + // Virtex6 PM + //----------- + .cfg_pm_send_pme_to( cfg_pm_send_pme_to ), + .cfg_pmcsr_powerstate( cfg_pmcsr_powerstate ), + .trn_rdllp_data( trn_rdllp_data ), + .trn_rdllp_src_rdy( trn_rdllp_src_rdy ), + + // Spartan6 PM + //----------- + .cfg_to_turnoff( cfg_to_turnoff ), + .cfg_turnoff_ok( cfg_turnoff_ok ), + + // System + //----------- + .tready_thrtl( tready_thrtl ), + .user_clk( user_clk ), + .user_rst( user_rst ) + ); + end + else begin : thrtl_ctl_disabled + assign tready_thrtl = 1'b0; + + assign cfg_turnoff_ok = user_turnoff_ok; + assign trn_tcfg_gnt = user_tcfg_gnt; + end +endgenerate + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_tx_pipeline.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_tx_pipeline.v new file mode 100644 index 0000000..efa08af --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_tx_pipeline.v @@ -0,0 +1,543 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_axi_basic_tx_pipeline.v +// Version : 3.3 +// // +// Description: // +// AXI to TRN TX pipeline. Converts transmitted data from AXI protocol to // +// TRN. // +// // +// Notes: // +// Optional notes section. // +// // +// Hierarchical: // +// axi_basic_top // +// axi_basic_tx // +// axi_basic_tx_pipeline // +// // +//----------------------------------------------------------------------------// + +`timescale 1ps/1ps + +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_axi_basic_tx_pipeline #( + parameter C_DATA_WIDTH = 128, // RX/TX interface data width + parameter C_PM_PRIORITY = "FALSE", // Disable TX packet boundary thrtl + parameter TCQ = 1, // Clock to Q time + + // Do not override parameters below this line + parameter REM_WIDTH = (C_DATA_WIDTH == 128) ? 2 : 1, // trem/rrem width + parameter KEEP_WIDTH = C_DATA_WIDTH / 8 // KEEP width + ) ( + //---------------------------------------------// + // User Design I/O // + //---------------------------------------------// + + // AXI TX + //----------- + input [C_DATA_WIDTH-1:0] s_axis_tx_tdata, // TX data from user + input s_axis_tx_tvalid, // TX data is valid + output s_axis_tx_tready, // TX ready for data + input [KEEP_WIDTH-1:0] s_axis_tx_tkeep, // TX strobe byte enables + input s_axis_tx_tlast, // TX data is last + input [3:0] s_axis_tx_tuser, // TX user signals + + //---------------------------------------------// + // PCIe Block I/O // + //---------------------------------------------// + + // TRN TX + //----------- + output [C_DATA_WIDTH-1:0] trn_td, // TX data from block + output trn_tsof, // TX start of packet + output trn_teof, // TX end of packet + output trn_tsrc_rdy, // TX source ready + input trn_tdst_rdy, // TX destination ready + output trn_tsrc_dsc, // TX source discontinue + output [REM_WIDTH-1:0] trn_trem, // TX remainder + output trn_terrfwd, // TX error forward + output trn_tstr, // TX streaming enable + output trn_tecrc_gen, // TX ECRC generate + input trn_lnk_up, // PCIe link up + + // System + //----------- + input tready_thrtl, // TREADY from thrtl ctl + input user_clk, // user clock from block + input user_rst // user reset from block +); + + +// Input register stage +reg [C_DATA_WIDTH-1:0] reg_tdata; +reg reg_tvalid; +reg [KEEP_WIDTH-1:0] reg_tkeep; +reg [3:0] reg_tuser; +reg reg_tlast; +reg reg_tready; + +// Pipeline utility signals +reg trn_in_packet; +reg axi_in_packet; +reg flush_axi; +wire disable_trn; +reg reg_disable_trn; + +wire axi_beat_live = s_axis_tx_tvalid && s_axis_tx_tready; +wire axi_end_packet = axi_beat_live && s_axis_tx_tlast; + + +//----------------------------------------------------------------------------// +// Convert TRN data format to AXI data format. AXI is DWORD swapped from TRN. // +// 128-bit: 64-bit: 32-bit: // +// TRN DW0 maps to AXI DW3 TRN DW0 maps to AXI DW1 TNR DW0 maps to AXI DW0 // +// TRN DW1 maps to AXI DW2 TRN DW1 maps to AXI DW0 // +// TRN DW2 maps to AXI DW1 // +// TRN DW3 maps to AXI DW0 // +//----------------------------------------------------------------------------// +generate + if(C_DATA_WIDTH == 128) begin : td_DW_swap_128 + assign trn_td = {reg_tdata[31:0], + reg_tdata[63:32], + reg_tdata[95:64], + reg_tdata[127:96]}; + end + else if(C_DATA_WIDTH == 64) begin : td_DW_swap_64 + assign trn_td = {reg_tdata[31:0], reg_tdata[63:32]}; + end + else begin : td_DW_swap_32 + assign trn_td = reg_tdata; + end +endgenerate + + +//----------------------------------------------------------------------------// +// Create trn_tsof. If we're not currently in a packet and TVALID goes high, // +// assert TSOF. // +//----------------------------------------------------------------------------// +assign trn_tsof = reg_tvalid && !trn_in_packet; + + +//----------------------------------------------------------------------------// +// Create trn_in_packet. This signal tracks if the TRN interface is currently // +// in the middle of a packet, which is needed to generate trn_tsof // +//----------------------------------------------------------------------------// +always @(posedge user_clk) begin + if(user_rst) begin + trn_in_packet <= #TCQ 1'b0; + end + else begin + if(trn_tsof && trn_tsrc_rdy && trn_tdst_rdy && !trn_teof) begin + trn_in_packet <= #TCQ 1'b1; + end + else if((trn_in_packet && trn_teof && trn_tsrc_rdy) || !trn_lnk_up) begin + trn_in_packet <= #TCQ 1'b0; + end + end +end + + +//----------------------------------------------------------------------------// +// Create axi_in_packet. This signal tracks if the AXI interface is currently // +// in the middle of a packet, which is needed in case the link goes down. // +//----------------------------------------------------------------------------// +always @(posedge user_clk) begin + if(user_rst) begin + axi_in_packet <= #TCQ 1'b0; + end + else begin + if(axi_beat_live && !s_axis_tx_tlast) begin + axi_in_packet <= #TCQ 1'b1; + end + else if(axi_beat_live) begin + axi_in_packet <= #TCQ 1'b0; + end + end +end + + +//----------------------------------------------------------------------------// +// Create disable_trn. This signal asserts when the link goes down and // +// triggers the deassertiong of trn_tsrc_rdy. The deassertion of disable_trn // +// depends on C_PM_PRIORITY, as described below. // +//----------------------------------------------------------------------------// +generate + // In the C_PM_PRIORITY pipeline, we disable the TRN interfacefrom the time + // the link goes down until the the AXI interface is ready to accept packets + // again (via assertion of TREADY). By waiting for TREADY, we allow the + // previous value buffer to fill, so we're ready for any throttling by the + // user or the block. + if(C_PM_PRIORITY == "TRUE") begin : pm_priority_trn_flush + always @(posedge user_clk) begin + if(user_rst) begin + reg_disable_trn <= #TCQ 1'b1; + end + else begin + // When the link goes down, disable the TRN interface. + if(!trn_lnk_up) + begin + reg_disable_trn <= #TCQ 1'b1; + end + + // When the link comes back up and the AXI interface is ready, we can + // release the pipeline and return to normal operation. + else if(!flush_axi && s_axis_tx_tready) begin + reg_disable_trn <= #TCQ 1'b0; + end + end + end + + assign disable_trn = reg_disable_trn; + end + + // In the throttle-controlled pipeline, we don't have a previous value buffer. + // The throttle control mechanism handles TREADY, so all we need to do is + // detect when the link goes down and disable the TRN interface until the link + // comes back up and the AXI interface is finished flushing any packets. + else begin : thrtl_ctl_trn_flush + always @(posedge user_clk) begin + if(user_rst) begin + reg_disable_trn <= #TCQ 1'b0; + end + else begin + // If the link is down and AXI is in packet, disable TRN and look for + // the end of the packet + if(axi_in_packet && !trn_lnk_up && !axi_end_packet) + begin + reg_disable_trn <= #TCQ 1'b1; + end + + // AXI packet is ending, so we're done flushing + else if(axi_end_packet) begin + reg_disable_trn <= #TCQ 1'b0; + end + end + end + + // Disable the TRN interface if link is down or we're still flushing the AXI + // interface. + assign disable_trn = reg_disable_trn || !trn_lnk_up; + end +endgenerate + + +//----------------------------------------------------------------------------// +// Convert STRB to RREM. Here, we are converting the encoding method for the // +// location of the EOF from AXI (tkeep) to TRN flavor (rrem). // +//----------------------------------------------------------------------------// +generate + if(C_DATA_WIDTH == 128) begin : tkeep_to_trem_128 + //---------------------------------------// + // Conversion table: // + // trem | tkeep // + // [1] [0] | [15:12] [11:8] [7:4] [3:0] // + // ------------------------------------- // + // 1 1 | D3 D2 D1 D0 // + // 1 0 | -- D2 D1 D0 // + // 0 1 | -- -- D1 D0 // + // 0 0 | -- -- -- D0 // + //---------------------------------------// + + wire axi_DW_1 = reg_tkeep[7]; + wire axi_DW_2 = reg_tkeep[11]; + wire axi_DW_3 = reg_tkeep[15]; + assign trn_trem[1] = axi_DW_2; + assign trn_trem[0] = axi_DW_3 || (axi_DW_1 && !axi_DW_2); + end + else if(C_DATA_WIDTH == 64) begin : tkeep_to_trem_64 + assign trn_trem = reg_tkeep[7]; + end + else begin : tkeep_to_trem_32 + assign trn_trem = 1'b0; + end +endgenerate + + +//----------------------------------------------------------------------------// +// Create remaining TRN signals // +//----------------------------------------------------------------------------// +assign trn_teof = reg_tlast; +assign trn_tecrc_gen = reg_tuser[0]; +assign trn_terrfwd = reg_tuser[1]; +assign trn_tstr = reg_tuser[2]; +assign trn_tsrc_dsc = reg_tuser[3]; + + +//----------------------------------------------------------------------------// +// Pipeline stage // +//----------------------------------------------------------------------------// +// We need one of two approaches for the pipeline stage depending on the +// C_PM_PRIORITY parameter. +generate + reg reg_tsrc_rdy; + + // If set to FALSE, that means the user wants to use the TX packet boundary + // throttling feature. Since all Block throttling will now be predicted, we + // can use a simple straight-through pipeline. + if(C_PM_PRIORITY == "FALSE") begin : throttle_ctl_pipeline + always @(posedge user_clk) begin + if(user_rst) begin + reg_tdata <= #TCQ {C_DATA_WIDTH{1'b0}}; + reg_tvalid <= #TCQ 1'b0; + reg_tkeep <= #TCQ {KEEP_WIDTH{1'b0}}; + reg_tlast <= #TCQ 1'b0; + reg_tuser <= #TCQ 4'h0; + reg_tsrc_rdy <= #TCQ 1'b0; + end + else begin + reg_tdata <= #TCQ s_axis_tx_tdata; + reg_tvalid <= #TCQ s_axis_tx_tvalid; + reg_tkeep <= #TCQ s_axis_tx_tkeep; + reg_tlast <= #TCQ s_axis_tx_tlast; + reg_tuser <= #TCQ s_axis_tx_tuser; + + // Hold trn_tsrc_rdy low when flushing a packet. + reg_tsrc_rdy <= #TCQ axi_beat_live && !disable_trn; + end + end + + assign trn_tsrc_rdy = reg_tsrc_rdy; + + // With TX packet boundary throttling, TREADY is pipelined in + // axi_basic_tx_thrtl_ctl and wired through here. + assign s_axis_tx_tready = tready_thrtl; + end + + //**************************************************************************// + + // If C_PM_PRIORITY is set to TRUE, that means the user prefers to have all PM + // functionality intact isntead of TX packet boundary throttling. Now the + // Block could back-pressure at any time, which creates the standard problem + // of potential data loss due to the handshaking latency. Here we need a + // previous value buffer, just like the RX data path. + else begin : pm_prioity_pipeline + reg [C_DATA_WIDTH-1:0] tdata_prev; + reg tvalid_prev; + reg [KEEP_WIDTH-1:0] tkeep_prev; + reg tlast_prev; + reg [3:0] tuser_prev; + reg reg_tdst_rdy; + + wire data_hold; + reg data_prev; + + + //------------------------------------------------------------------------// + // Previous value buffer // + // --------------------- // + // We are inserting a pipeline stage in between AXI and TRN, which causes // + // some issues with handshaking signals trn_tsrc_rdy/s_axis_tx_tready. // + // The added cycle of latency in the path causes the Block to fall behind // + // the AXI interface whenever it throttles. // + // // + // To avoid loss of data, we must keep the previous value of all // + // s_axis_tx_* signals in case the Block throttles. // + //------------------------------------------------------------------------// + always @(posedge user_clk) begin + if(user_rst) begin + tdata_prev <= #TCQ {C_DATA_WIDTH{1'b0}}; + tvalid_prev <= #TCQ 1'b0; + tkeep_prev <= #TCQ {KEEP_WIDTH{1'b0}}; + tlast_prev <= #TCQ 1'b0; + tuser_prev <= #TCQ 4'h 0; + end + else begin + // prev buffer works by checking s_axis_tx_tready. When + // s_axis_tx_tready is asserted, a new value is present on the + // interface. + if(!s_axis_tx_tready) begin + tdata_prev <= #TCQ tdata_prev; + tvalid_prev <= #TCQ tvalid_prev; + tkeep_prev <= #TCQ tkeep_prev; + tlast_prev <= #TCQ tlast_prev; + tuser_prev <= #TCQ tuser_prev; + end + else begin + tdata_prev <= #TCQ s_axis_tx_tdata; + tvalid_prev <= #TCQ s_axis_tx_tvalid; + tkeep_prev <= #TCQ s_axis_tx_tkeep; + tlast_prev <= #TCQ s_axis_tx_tlast; + tuser_prev <= #TCQ s_axis_tx_tuser; + end + end + end + + // Create special buffer which locks in the proper value of TDATA depending + // on whether the user is throttling or not. This buffer has three states: + // + // HOLD state: TDATA maintains its current value + // - the Block has throttled the PCIe block + // PREVIOUS state: the buffer provides the previous value on TDATA + // - the Block has finished throttling, and is a little + // behind the user + // CURRENT state: the buffer passes the current value on TDATA + // - the Block is caught up and ready to receive the + // latest data from the user + always @(posedge user_clk) begin + if(user_rst) begin + reg_tdata <= #TCQ {C_DATA_WIDTH{1'b0}}; + reg_tvalid <= #TCQ 1'b0; + reg_tkeep <= #TCQ {KEEP_WIDTH{1'b0}}; + reg_tlast <= #TCQ 1'b0; + reg_tuser <= #TCQ 4'h0; + + reg_tdst_rdy <= #TCQ 1'b0; + end + else begin + reg_tdst_rdy <= #TCQ trn_tdst_rdy; + + if(!data_hold) begin + // PREVIOUS state + if(data_prev) begin + reg_tdata <= #TCQ tdata_prev; + reg_tvalid <= #TCQ tvalid_prev; + reg_tkeep <= #TCQ tkeep_prev; + reg_tlast <= #TCQ tlast_prev; + reg_tuser <= #TCQ tuser_prev; + end + + // CURRENT state + else begin + reg_tdata <= #TCQ s_axis_tx_tdata; + reg_tvalid <= #TCQ s_axis_tx_tvalid; + reg_tkeep <= #TCQ s_axis_tx_tkeep; + reg_tlast <= #TCQ s_axis_tx_tlast; + reg_tuser <= #TCQ s_axis_tx_tuser; + end + end + // else HOLD state + end + end + + + // Logic to instruct pipeline to hold its value + assign data_hold = trn_tsrc_rdy && !trn_tdst_rdy; + + + // Logic to instruct pipeline to use previous bus values. Always use + // previous value after holding a value. + always @(posedge user_clk) begin + if(user_rst) begin + data_prev <= #TCQ 1'b0; + end + else begin + data_prev <= #TCQ data_hold; + end + end + + + //------------------------------------------------------------------------// + // Create trn_tsrc_rdy. If we're flushing the TRN hold trn_tsrc_rdy low. // + //------------------------------------------------------------------------// + assign trn_tsrc_rdy = reg_tvalid && !disable_trn; + + + //------------------------------------------------------------------------// + // Create TREADY // + //------------------------------------------------------------------------// + always @(posedge user_clk) begin + if(user_rst) begin + reg_tready <= #TCQ 1'b0; + end + else begin + // If the link went down and we need to flush a packet in flight, hold + // TREADY high + if(flush_axi && !axi_end_packet) begin + reg_tready <= #TCQ 1'b1; + end + + // If the link is up, TREADY is as follows: + // TREADY = 1 when trn_tsrc_rdy == 0 + // - While idle, keep the pipeline primed and ready for the next + // packet + // + // TREADY = trn_tdst_rdy when trn_tsrc_rdy == 1 + // - While in packet, throttle pipeline based on state of TRN + else if(trn_lnk_up) begin + reg_tready <= #TCQ trn_tdst_rdy || !trn_tsrc_rdy; + end + + // If the link is down and we're not flushing a packet, hold TREADY low + // wait for link to come back up + else begin + reg_tready <= #TCQ 1'b0; + end + end + end + + assign s_axis_tx_tready = reg_tready; + end + + + //--------------------------------------------------------------------------// + // Create flush_axi. This signal detects if the link goes down while the // + // AXI interface is in packet. In this situation, we need to flush the // + // packet through the AXI interface and discard it. // + //--------------------------------------------------------------------------// + always @(posedge user_clk) begin + if(user_rst) begin + flush_axi <= #TCQ 1'b0; + end + else begin + // If the AXI interface is in packet and the link goes down, purge it. + if(axi_in_packet && !trn_lnk_up && !axi_end_packet) begin + flush_axi <= #TCQ 1'b1; + end + + // The packet is finished, so we're done flushing. + else if(axi_end_packet) begin + flush_axi <= #TCQ 1'b0; + end + end + end +endgenerate + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_tx_thrtl_ctl.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_tx_thrtl_ctl.v new file mode 100644 index 0000000..d1feee2 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_axi_basic_tx_thrtl_ctl.v @@ -0,0 +1,784 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_axi_basic_tx_thrtl_ctl.v +// Version : 3.3 +// // +// Description: // +// TX throttle controller. Anticipates back-pressure from PCIe block and // +// preemptively back-pressures user design (packet boundary throttling). // +// // +// Notes: // +// Optional notes section. // +// // +// Hierarchical: // +// axi_basic_top // +// axi_basic_tx // +// axi_basic_tx_thrtl_ctl // +// // +//----------------------------------------------------------------------------// + +`timescale 1ps/1ps + +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_axi_basic_tx_thrtl_ctl #( + parameter C_DATA_WIDTH = 128, // RX/TX interface data width + parameter C_FAMILY = "X7", // Targeted FPGA family + parameter C_ROOT_PORT = "FALSE", // PCIe block is in root port mode + parameter TCQ = 1 // Clock to Q time + ) ( + + // AXI TX + //----------- + input [C_DATA_WIDTH-1:0] s_axis_tx_tdata, // TX data from user + input s_axis_tx_tvalid, // TX data is valid + input [3:0] s_axis_tx_tuser, // TX user signals + input s_axis_tx_tlast, // TX data is last + + // User Misc. + //----------- + input user_turnoff_ok, // Turnoff OK from user + input user_tcfg_gnt, // Send cfg OK from user + + // TRN TX + //----------- + input [5:0] trn_tbuf_av, // TX buffers available + input trn_tdst_rdy, // TX destination ready + + // TRN Misc. + //----------- + input trn_tcfg_req, // TX config request + output trn_tcfg_gnt, // TX config grant + input trn_lnk_up, // PCIe link up + + // 7 Series/Virtex6 PM + //----------- + input [2:0] cfg_pcie_link_state, // Encoded PCIe link state + + // Virtex6 PM + //----------- + input cfg_pm_send_pme_to, // PM send PME turnoff msg + input [1:0] cfg_pmcsr_powerstate, // PMCSR power state + input [31:0] trn_rdllp_data, // RX DLLP data + input trn_rdllp_src_rdy, // RX DLLP source ready + + // Virtex6/Spartan6 PM + //----------- + input cfg_to_turnoff, // Turnoff request + output reg cfg_turnoff_ok, // Turnoff grant + + // System + //----------- + output reg tready_thrtl, // TREADY to pipeline + input user_clk, // user clock from block + input user_rst // user reset from block +); + +// Thrtl user when TBUF hits this val +localparam TBUF_AV_MIN = (C_DATA_WIDTH == 128) ? 5 : + (C_DATA_WIDTH == 64) ? 1 : 0; + +// Pause user when TBUF hits this val +localparam TBUF_AV_GAP = TBUF_AV_MIN + 1; + +// GAP pause time - the latency from the time a packet is accepted on the TRN +// interface to the time trn_tbuf_av from the Block will decrement. +localparam TBUF_GAP_TIME = (C_DATA_WIDTH == 128) ? 4 : 1; + +// Latency time from when tcfg_gnt is asserted to when PCIe block will throttle +localparam TCFG_LATENCY_TIME = 2'd2; + +// Number of pipeline stages to delay trn_tcfg_gnt. For V6 128-bit only +localparam TCFG_GNT_PIPE_STAGES = 3; + +// Throttle condition registers and constants +reg lnk_up_thrtl; +wire lnk_up_trig; +wire lnk_up_exit; + +reg tbuf_av_min_thrtl; +wire tbuf_av_min_trig; + +reg tbuf_av_gap_thrtl; +reg [2:0] tbuf_gap_cnt; +wire tbuf_av_gap_trig; +wire tbuf_av_gap_exit; +wire gap_trig_tlast; +wire gap_trig_decr; +wire gap_trig_tcfg; +reg [5:0] tbuf_av_d; + +reg tcfg_req_thrtl; +reg [1:0] tcfg_req_cnt; +reg trn_tdst_rdy_d; +wire tcfg_req_trig; +wire tcfg_req_exit; +reg tcfg_gnt_log; + +wire pre_throttle; +wire reg_throttle; +wire exit_crit; +reg reg_tcfg_gnt; +reg trn_tcfg_req_d; +reg tcfg_gnt_pending; +wire wire_to_turnoff; +reg reg_turnoff_ok; + +reg tready_thrtl_mux; + +localparam LINKSTATE_L0 = 3'b000; +localparam LINKSTATE_PPM_L1 = 3'b001; +localparam LINKSTATE_PPM_L1_TRANS = 3'b101; +localparam LINKSTATE_PPM_L23R_TRANS = 3'b110; +localparam PM_ENTER_L1 = 8'h20; +localparam POWERSTATE_D0 = 2'b00; + +reg ppm_L1_thrtl; +wire ppm_L1_trig; +wire ppm_L1_exit; +reg [2:0] cfg_pcie_link_state_d; +reg trn_rdllp_src_rdy_d; + +reg ppm_L23_thrtl; +wire ppm_L23_trig; +reg cfg_turnoff_ok_pending; + +reg reg_tlast; + +// Throttle control state machine states and registers +localparam IDLE = 0; +localparam THROTTLE = 1; +reg cur_state; +reg next_state; + +reg reg_axi_in_pkt; +wire axi_in_pkt; +wire axi_pkt_ending; +wire axi_throttled; +wire axi_thrtl_ok; +wire tx_ecrc_pause; + +//----------------------------------------------------------------------------// +// THROTTLE REASON: PCIe link is down // +// - When to throttle: trn_lnk_up deasserted // +// - When to stop: trn_tdst_rdy assesrted // +//----------------------------------------------------------------------------// +assign lnk_up_trig = !trn_lnk_up; +assign lnk_up_exit = trn_tdst_rdy; + +always @(posedge user_clk) begin + if(user_rst) begin + lnk_up_thrtl <= #TCQ 1'b1; + end + else begin + if(lnk_up_trig) begin + lnk_up_thrtl <= #TCQ 1'b1; + end + else if(lnk_up_exit) begin + lnk_up_thrtl <= #TCQ 1'b0; + end + end +end + + +//----------------------------------------------------------------------------// +// THROTTLE REASON: Transmit buffers depleted // +// - When to throttle: trn_tbuf_av falls to 0 // +// - When to stop: trn_tbuf_av rises above 0 again // +//----------------------------------------------------------------------------// +assign tbuf_av_min_trig = (trn_tbuf_av <= TBUF_AV_MIN); + +always @(posedge user_clk) begin + if(user_rst) begin + tbuf_av_min_thrtl <= #TCQ 1'b0; + end + else begin + if(tbuf_av_min_trig) begin + tbuf_av_min_thrtl <= #TCQ 1'b1; + end + + // The exit condition for tbuf_av_min_thrtl is !tbuf_av_min_trig + else begin + tbuf_av_min_thrtl <= #TCQ 1'b0; + end + end +end + + +//----------------------------------------------------------------------------// +// THROTTLE REASON: Transmit buffers getting low // +// - When to throttle: trn_tbuf_av falls below "gap" threshold TBUF_AV_GAP // +// - When to stop: after TBUF_GAP_TIME cycles elapse // +// // +// If we're about to run out of transmit buffers, throttle the user for a // +// few clock cycles to give the PCIe block time to catch up. This is // +// needed to compensate for latency in decrementing trn_tbuf_av in the PCIe // +// Block transmit path. // +//----------------------------------------------------------------------------// + +// Detect two different scenarios for buffers getting low: +// 1) If we see a TLAST. a new packet has been inserted into the buffer, and +// we need to pause and let that packet "soak in" +assign gap_trig_tlast = (trn_tbuf_av <= TBUF_AV_GAP) && + s_axis_tx_tvalid && tready_thrtl && s_axis_tx_tlast; + +// 2) Any time tbug_avail decrements to the TBUF_AV_GAP threshold, we need to +// pause and make sure no other packets are about to soak in and cause the +// buffer availability to drop further. +assign gap_trig_decr = (trn_tbuf_av == (TBUF_AV_GAP)) && + (tbuf_av_d == (TBUF_AV_GAP+1)); + +assign gap_trig_tcfg = (tcfg_req_thrtl && tcfg_req_exit); +assign tbuf_av_gap_trig = gap_trig_tlast || gap_trig_decr || gap_trig_tcfg; +assign tbuf_av_gap_exit = (tbuf_gap_cnt == 0); + +always @(posedge user_clk) begin + if(user_rst) begin + tbuf_av_gap_thrtl <= #TCQ 1'b0; + tbuf_gap_cnt <= #TCQ 3'h0; + tbuf_av_d <= #TCQ 6'h00; + end + else begin + if(tbuf_av_gap_trig) begin + tbuf_av_gap_thrtl <= #TCQ 1'b1; + end + else if(tbuf_av_gap_exit) begin + tbuf_av_gap_thrtl <= #TCQ 1'b0; + end + + // tbuf gap counter: + // This logic controls the length of the throttle condition when tbufs are + // getting low. + if(tbuf_av_gap_thrtl && (cur_state == THROTTLE)) begin + if(tbuf_gap_cnt > 0) begin + tbuf_gap_cnt <= #TCQ tbuf_gap_cnt - 3'd1; + end + end + else begin + tbuf_gap_cnt <= #TCQ TBUF_GAP_TIME; + end + + tbuf_av_d <= #TCQ trn_tbuf_av; + end +end + + +//----------------------------------------------------------------------------// +// THROTTLE REASON: Block needs to send a CFG response // +// - When to throttle: trn_tcfg_req and user_tcfg_gnt asserted // +// - When to stop: after trn_tdst_rdy transitions to unasserted // +// // +// If the block needs to send a response to a CFG packet, this will cause // +// the subsequent deassertion of trn_tdst_rdy. When the user design permits, // +// grant permission to the block to service request and throttle the user. // +//----------------------------------------------------------------------------// +assign tcfg_req_trig = trn_tcfg_req && reg_tcfg_gnt; +assign tcfg_req_exit = (tcfg_req_cnt == 2'd0) && !trn_tdst_rdy_d && + trn_tdst_rdy; +always @(posedge user_clk) begin + if(user_rst) begin + tcfg_req_thrtl <= #TCQ 1'b0; + trn_tcfg_req_d <= #TCQ 1'b0; + trn_tdst_rdy_d <= #TCQ 1'b1; + reg_tcfg_gnt <= #TCQ 1'b0; + tcfg_req_cnt <= #TCQ 2'd0; + tcfg_gnt_pending <= #TCQ 1'b0; + end + else begin + if(tcfg_req_trig) begin + tcfg_req_thrtl <= #TCQ 1'b1; + end + else if(tcfg_req_exit) begin + tcfg_req_thrtl <= #TCQ 1'b0; + end + + // We need to wait the appropriate amount of time for the tcfg_gnt to + // "sink in" to the PCIe block. After that, we know that the PCIe block will + // not reassert trn_tdst_rdy until the CFG request has been serviced. If a + // new request is being service (tcfg_gnt_log == 1), then reset the timer. + if((trn_tcfg_req && !trn_tcfg_req_d) || tcfg_gnt_pending) begin + tcfg_req_cnt <= #TCQ TCFG_LATENCY_TIME; + end + else begin + if(tcfg_req_cnt > 0) begin + tcfg_req_cnt <= #TCQ tcfg_req_cnt - 2'd1; + end + end + + // Make sure tcfg_gnt_log pulses once for one clock cycle for every + // cfg packet request. + if(trn_tcfg_req && !trn_tcfg_req_d) begin + tcfg_gnt_pending <= #TCQ 1'b1; + end + else if(tcfg_gnt_log) begin + tcfg_gnt_pending <= #TCQ 1'b0; + end + + trn_tcfg_req_d <= #TCQ trn_tcfg_req; + trn_tdst_rdy_d <= #TCQ trn_tdst_rdy; + reg_tcfg_gnt <= #TCQ user_tcfg_gnt; + end +end + + +//----------------------------------------------------------------------------// +// THROTTLE REASON: Block needs to transition to low power state PPM L1 // +// - When to throttle: appropriate low power state signal asserted // +// (architecture dependent) // +// - When to stop: cfg_pcie_link_state goes to proper value (C_ROOT_PORT // +// dependent) // +// // +// If the block needs to transition to PM state PPM L1, we need to finish // +// up what we're doing and throttle immediately. // +//----------------------------------------------------------------------------// +generate + // PPM L1 signals for 7 Series in RC mode + if((C_FAMILY == "X7") && (C_ROOT_PORT == "TRUE")) begin : x7_L1_thrtl_rp + assign ppm_L1_trig = (cfg_pcie_link_state_d == LINKSTATE_L0) && + (cfg_pcie_link_state == LINKSTATE_PPM_L1_TRANS); + assign ppm_L1_exit = cfg_pcie_link_state == LINKSTATE_PPM_L1; + end + + // PPM L1 signals for 7 Series in EP mode + else if((C_FAMILY == "X7") && (C_ROOT_PORT == "FALSE")) begin : x7_L1_thrtl_ep + assign ppm_L1_trig = (cfg_pcie_link_state_d == LINKSTATE_L0) && + (cfg_pcie_link_state == LINKSTATE_PPM_L1_TRANS); + assign ppm_L1_exit = cfg_pcie_link_state == LINKSTATE_L0; + end + + // PPM L1 signals for V6 in RC mode + else if((C_FAMILY == "V6") && (C_ROOT_PORT == "TRUE")) begin : v6_L1_thrtl_rp + assign ppm_L1_trig = (trn_rdllp_data[31:24] == PM_ENTER_L1) && + trn_rdllp_src_rdy && !trn_rdllp_src_rdy_d; + assign ppm_L1_exit = cfg_pcie_link_state == LINKSTATE_PPM_L1; + end + + // PPM L1 signals for V6 in EP mode + else if((C_FAMILY == "V6") && (C_ROOT_PORT == "FALSE")) begin : v6_L1_thrtl_ep + assign ppm_L1_trig = (cfg_pmcsr_powerstate != POWERSTATE_D0); + assign ppm_L1_exit = cfg_pcie_link_state == LINKSTATE_L0; + end + + // PPM L1 detection not supported for S6 + else begin : s6_L1_thrtl + assign ppm_L1_trig = 1'b0; + assign ppm_L1_exit = 1'b1; + end +endgenerate + +always @(posedge user_clk) begin + if(user_rst) begin + ppm_L1_thrtl <= #TCQ 1'b0; + cfg_pcie_link_state_d <= #TCQ 3'b0; + trn_rdllp_src_rdy_d <= #TCQ 1'b0; + end + else begin + if(ppm_L1_trig) begin + ppm_L1_thrtl <= #TCQ 1'b1; + end + else if(ppm_L1_exit) begin + ppm_L1_thrtl <= #TCQ 1'b0; + end + cfg_pcie_link_state_d <= #TCQ cfg_pcie_link_state; + trn_rdllp_src_rdy_d <= #TCQ trn_rdllp_src_rdy; + end +end + + +//----------------------------------------------------------------------------// +// THROTTLE REASON: Block needs to transition to low power state PPM L2/3 // +// - When to throttle: appropriate PM signal indicates a transition to // +// L2/3 is pending or in progress (family and role dependent) // +// - When to stop: never (the only path out of L2/3 is a full reset) // +// // +// If the block needs to transition to PM state PPM L2/3, we need to finish // +// up what we're doing and throttle when the user gives permission. // +//----------------------------------------------------------------------------// +generate + // PPM L2/3 signals for 7 Series in RC mode + if((C_FAMILY == "X7") && (C_ROOT_PORT == "TRUE")) begin : x7_L23_thrtl_rp + assign ppm_L23_trig = (cfg_pcie_link_state_d == LINKSTATE_PPM_L23R_TRANS); + assign wire_to_turnoff = 1'b0; + end + + // PPM L2/3 signals for V6 in RC mode + else if((C_FAMILY == "V6") && (C_ROOT_PORT == "TRUE")) begin : v6_L23_thrtl_rp + assign ppm_L23_trig = cfg_pm_send_pme_to; + assign wire_to_turnoff = 1'b0; + end + + // PPM L2/3 signals in EP mode + else begin : L23_thrtl_ep + assign ppm_L23_trig = wire_to_turnoff && reg_turnoff_ok; + + // PPM L2/3 signals for 7 Series in EP mode + // For 7 Series, cfg_to_turnoff pulses once when a turnoff request is + // outstanding, so we need a "sticky" register that grabs the request. + if(C_FAMILY == "X7") begin : x7_L23_thrtl_ep + reg reg_to_turnoff; + + always @(posedge user_clk) begin + if(user_rst) begin + reg_to_turnoff <= #TCQ 1'b0; + end + else begin + if(cfg_to_turnoff) begin + reg_to_turnoff <= #TCQ 1'b1; + end + end + end + + assign wire_to_turnoff = reg_to_turnoff; + end + + // PPM L2/3 signals for V6/S6 in EP mode + // In V6 and S6, the to_turnoff signal asserts and remains asserted until + // turnoff_ok is asserted, so a sticky reg is not necessary. + else begin : v6_s6_L23_thrtl_ep + assign wire_to_turnoff = cfg_to_turnoff; + end + + always @(posedge user_clk) begin + if(user_rst) begin + reg_turnoff_ok <= #TCQ 1'b0; + end + else begin + reg_turnoff_ok <= #TCQ user_turnoff_ok; + end + end + end +endgenerate + +always @(posedge user_clk) begin + if(user_rst) begin + ppm_L23_thrtl <= #TCQ 1'b0; + cfg_turnoff_ok_pending <= #TCQ 1'b0; + end + else begin + if(ppm_L23_trig) begin + ppm_L23_thrtl <= #TCQ 1'b1; + end + + // Make sure cfg_turnoff_ok pulses once for one clock cycle for every + // turnoff request. + if(ppm_L23_trig && !ppm_L23_thrtl) begin + cfg_turnoff_ok_pending <= #TCQ 1'b1; + end + else if(cfg_turnoff_ok) begin + cfg_turnoff_ok_pending <= #TCQ 1'b0; + end + end +end + + +//----------------------------------------------------------------------------// +// Create axi_thrtl_ok. This signal determines if it's OK to throttle the // +// user design on the AXI interface. Since TREADY is registered, this signal // +// needs to assert on the cycle ~before~ we actually intend to throttle. // +// The only time it's OK to throttle when TVALID is asserted is on the first // +// beat of a new packet. Therefore, assert axi_thrtl_ok if one of the // +// is true: // +// 1) The user is not in a packet and is not starting one // +// 2) The user is just finishing a packet // +// 3) We're already throttled, so it's OK to continue throttling // +//----------------------------------------------------------------------------// +always @(posedge user_clk) begin + if(user_rst) begin + reg_axi_in_pkt <= #TCQ 1'b0; + end + else begin + if(s_axis_tx_tvalid && s_axis_tx_tlast) begin + reg_axi_in_pkt <= #TCQ 1'b0; + end + else if(tready_thrtl && s_axis_tx_tvalid) begin + reg_axi_in_pkt <= #TCQ 1'b1; + end + end +end + +assign axi_in_pkt = s_axis_tx_tvalid || reg_axi_in_pkt; +assign axi_pkt_ending = s_axis_tx_tvalid && s_axis_tx_tlast; +assign axi_throttled = !tready_thrtl; +assign axi_thrtl_ok = !axi_in_pkt || axi_pkt_ending || axi_throttled; + + +//----------------------------------------------------------------------------// +// Throttle CTL State Machine: // +// Throttle user design when a throttle trigger (or triggers) occur. // +// Keep user throttled until all exit criteria have been met. // +//----------------------------------------------------------------------------// + +// Immediate throttle signal. Used to "pounce" on a throttle opportunity when +// we're seeking one +assign pre_throttle = tbuf_av_min_trig || tbuf_av_gap_trig || lnk_up_trig + || tcfg_req_trig || ppm_L1_trig || ppm_L23_trig; + + +// Registered throttle signals. Used to control throttle state machine +assign reg_throttle = tbuf_av_min_thrtl || tbuf_av_gap_thrtl || lnk_up_thrtl + || tcfg_req_thrtl || ppm_L1_thrtl || ppm_L23_thrtl; + +assign exit_crit = !tbuf_av_min_thrtl && !tbuf_av_gap_thrtl && !lnk_up_thrtl + && !tcfg_req_thrtl && !ppm_L1_thrtl && !ppm_L23_thrtl; + +always @(*) begin + case(cur_state) + // IDLE: in this state we're waiting for a trigger event to occur. As + // soon as an event occurs and the user isn't transmitting a packet, we + // throttle the PCIe block and the user and next state is THROTTLE. + IDLE: begin + if(reg_throttle && axi_thrtl_ok) begin + // Throttle user + tready_thrtl_mux = 1'b0; + next_state = THROTTLE; + + // Assert appropriate grant signal depending on the throttle type. + if(tcfg_req_thrtl) begin + tcfg_gnt_log = 1'b1; // For cfg request, grant the request + cfg_turnoff_ok = 1'b0; // + end + else if(ppm_L23_thrtl) begin + tcfg_gnt_log = 1'b0; // + cfg_turnoff_ok = 1'b1; // For PM request, permit transition + end + else begin + tcfg_gnt_log = 1'b0; // Otherwise do nothing + cfg_turnoff_ok = 1'b0; // + end + end + + // If there's not throttle event, do nothing + else begin + // Throttle user as soon as possible + tready_thrtl_mux = !(axi_thrtl_ok && pre_throttle); + next_state = IDLE; + + tcfg_gnt_log = 1'b0; + cfg_turnoff_ok = 1'b0; + end + end + + // THROTTLE: in this state the user is throttle and we're waiting for + // exit criteria, which tells us that the throttle event is over. When + // the exit criteria is satisfied, de-throttle the user and next state + // is IDLE. + THROTTLE: begin + if(exit_crit) begin + // Dethrottle user + tready_thrtl_mux = !pre_throttle; + next_state = IDLE; + end + else begin + // Throttle user + tready_thrtl_mux = 1'b0; + next_state = THROTTLE; + end + + // Assert appropriate grant signal depending on the throttle type. + if(tcfg_req_thrtl && tcfg_gnt_pending) begin + tcfg_gnt_log = 1'b1; // For cfg request, grant the request + cfg_turnoff_ok = 1'b0; // + end + else if(cfg_turnoff_ok_pending) begin + tcfg_gnt_log = 1'b0; // + cfg_turnoff_ok = 1'b1; // For PM request, permit transition + end + else begin + tcfg_gnt_log = 1'b0; // Otherwise do nothing + cfg_turnoff_ok = 1'b0; // + end + end + + default: begin + tready_thrtl_mux = 1'b0; + next_state = IDLE; + tcfg_gnt_log = 1'b0; + cfg_turnoff_ok = 1'b0; + end + endcase +end + +// Synchronous logic +always @(posedge user_clk) begin + if(user_rst) begin + // Throttle user by default until link comes up + cur_state <= #TCQ THROTTLE; + + reg_tlast <= #TCQ 1'b0; + + tready_thrtl <= #TCQ 1'b0; + end + else begin + cur_state <= #TCQ next_state; + + tready_thrtl <= #TCQ tready_thrtl_mux && !tx_ecrc_pause; + reg_tlast <= #TCQ s_axis_tx_tlast; + end +end + +// For X7, the PCIe block will generate the ECRC for a packet if trn_tecrc_gen +// is asserted at SOF. In this case, the Block needs an extra data beat to +// calculate the ECRC, but only if the following conditions are met: +// 1) there is no empty DWORDS at the end of the packet +// (i.e. packet length % C_DATA_WIDTH == 0) +// +// 2) There isn't a ECRC in the TLP already, as indicated by the TD bit in the +// TLP header +// +// If both conditions are met, the Block will stall the TRN interface for one +// data beat after EOF. We need to predict this stall and preemptively stall the +// User for one beat. +generate + if(C_FAMILY == "X7") begin : ecrc_pause_enabled + wire tx_ecrc_pkt; + reg reg_tx_ecrc_pkt; + + wire [1:0] packet_fmt; + wire packet_td; + wire [2:0] header_len; + wire [9:0] payload_len; + wire [13:0] packet_len; + wire pause_needed; + + // Grab necessary packet fields + assign packet_fmt = s_axis_tx_tdata[30:29]; + assign packet_td = s_axis_tx_tdata[15]; + + // Calculate total packet length + assign header_len = packet_fmt[0] ? 3'd4 : 3'd3; + assign payload_len = packet_fmt[1] ? s_axis_tx_tdata[9:0] : 10'h0; + assign packet_len = {10'h000, header_len} + {4'h0, payload_len}; + + + // Determine if packet a ECRC pause is needed + if(C_DATA_WIDTH == 128) begin : packet_len_check_128 + assign pause_needed = (packet_len[1:0] == 2'b00) && !packet_td; + end + else begin : packet_len_check_64 + assign pause_needed = (packet_len[0] == 1'b0) && !packet_td; + end + + + // Create flag to alert TX pipeline to insert a stall + assign tx_ecrc_pkt = s_axis_tx_tuser[0] && pause_needed && + tready_thrtl && s_axis_tx_tvalid && !reg_axi_in_pkt; + + always @(posedge user_clk) begin + if(user_rst) begin + reg_tx_ecrc_pkt <= #TCQ 1'b0; + end + else begin + if(tx_ecrc_pkt && !s_axis_tx_tlast) begin + reg_tx_ecrc_pkt <= #TCQ 1'b1; + end + else if(tready_thrtl && s_axis_tx_tvalid && s_axis_tx_tlast) begin + reg_tx_ecrc_pkt <= #TCQ 1'b0; + end + end + end + + + // Insert the stall now + assign tx_ecrc_pause = ((tx_ecrc_pkt || reg_tx_ecrc_pkt) && + s_axis_tx_tlast && s_axis_tx_tvalid && tready_thrtl); + + end + else begin : ecrc_pause_disabled + assign tx_ecrc_pause = 1'b0; + end +endgenerate + + +// Logic for 128-bit single cycle bug fix. +// This tcfg_gnt pipeline addresses an issue with 128-bit V6 designs where a +// single cycle packet transmitted simultaneously with an assertion of tcfg_gnt +// from AXI Basic causes the packet to be dropped. The packet drop occurs +// because the 128-bit shim doesn't know about the tcfg_req/gnt, and therefor +// isn't expecting trn_tdst_rdy to go low. Since the 128-bit shim does throttle +// prediction just as we do, it ignores the value of trn_tdst_rdy, and +// ultimately drops the packet when transmitting the packet to the block. +generate + if(C_DATA_WIDTH == 128 && C_FAMILY == "V6") begin : tcfg_gnt_pipeline + genvar stage; + reg tcfg_gnt_pipe [TCFG_GNT_PIPE_STAGES:0]; + + // Create a configurable depth FF delay pipeline + for(stage = 0; stage < TCFG_GNT_PIPE_STAGES; stage = stage + 1) + begin : tcfg_gnt_pipeline_stage + + always @(posedge user_clk) begin + if(user_rst) begin + tcfg_gnt_pipe[stage] <= #TCQ 1'b0; + end + else begin + // For stage 0, insert the actual tcfg_gnt signal from logic + if(stage == 0) begin + tcfg_gnt_pipe[stage] <= #TCQ tcfg_gnt_log; + end + + // For stages 1+, chain together + else begin + tcfg_gnt_pipe[stage] <= #TCQ tcfg_gnt_pipe[stage - 1]; + end + end + end + + // tcfg_gnt output to block assigned the last pipeline stage + assign trn_tcfg_gnt = tcfg_gnt_pipe[TCFG_GNT_PIPE_STAGES-1]; + end + end + else begin : tcfg_gnt_no_pipeline + + // For all other architectures, no pipeline delay needed for tcfg_gnt + assign trn_tcfg_gnt = tcfg_gnt_log; + end +endgenerate + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_core_top.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_core_top.v new file mode 100644 index 0000000..8d714e6 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_core_top.v @@ -0,0 +1,2152 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_core_top.v +// Version : 3.3 +// +// Description: 7-series solution wrapper : Endpoint for PCI Express +// +// +// +//-------------------------------------------------------------------------------- + +`timescale 1ps/1ps + +(* CORE_GENERATION_INFO = "pcie_7x_0,pcie_7x_v3_3_14,{LINK_CAP_MAX_LINK_SPEED=2,LINK_CAP_MAX_LINK_WIDTH=4,PCIE_CAP_DEVICE_PORT_TYPE=0000,DEV_CAP_MAX_PAYLOAD_SUPPORTED=3,USER_CLK_FREQ=3,REF_CLK_FREQ=0,MSI_CAP_ON=FALSE,MSI_CAP_MULTIMSGCAP=0,MSI_CAP_MULTIMSG_EXTENSION=0,MSIX_CAP_ON=FALSE,TL_TX_RAM_RADDR_LATENCY=0,TL_TX_RAM_RDATA_LATENCY=2,TL_RX_RAM_RADDR_LATENCY=0,TL_RX_RAM_RDATA_LATENCY=2,TL_RX_RAM_WRITE_LATENCY=0,\ +VC0_TX_LASTPACKET=30,VC0_RX_RAM_LIMIT=FFF,VC0_TOTAL_CREDITS_PH=32,VC0_TOTAL_CREDITS_PD=949,VC0_TOTAL_CREDITS_NPH=12,VC0_TOTAL_CREDITS_NPD=24,VC0_TOTAL_CREDITS_CH=36,VC0_TOTAL_CREDITS_CD=973,VC0_CPL_INFINITE=TRUE,DEV_CAP_PHANTOM_FUNCTIONS_SUPPORT=0,DEV_CAP_EXT_TAG_SUPPORTED=FALSE,LINK_STATUS_SLOT_CLOCK_CONFIG=TRUE,DISABLE_LANE_REVERSAL=TRUE,DISABLE_SCRAMBLING=FALSE,DSN_CAP_ON=TRUE,REVISION_ID=00,VC_CAP_ON=FALSE}" *) +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_core_top # ( + parameter CFG_VEND_ID = 16'h10EE, + parameter CFG_DEV_ID = 16'h7024, + parameter CFG_REV_ID = 8'h00, + parameter CFG_SUBSYS_VEND_ID = 16'h10EE, + parameter CFG_SUBSYS_ID = 16'h0007, + + parameter EXT_PIPE_SIM = "FALSE", + + parameter ALLOW_X8_GEN2 = "FALSE", + parameter PIPE_PIPELINE_STAGES = 1, + parameter [11:0] AER_BASE_PTR = 12'h000, + parameter AER_CAP_ECRC_CHECK_CAPABLE = "FALSE", + parameter AER_CAP_ECRC_GEN_CAPABLE = "FALSE", + parameter AER_CAP_MULTIHEADER = "FALSE", + parameter [11:0] AER_CAP_NEXTPTR = 12'h000, + parameter [23:0] AER_CAP_OPTIONAL_ERR_SUPPORT = 24'h000000, + parameter AER_CAP_ON = "FALSE", + parameter AER_CAP_PERMIT_ROOTERR_UPDATE = "FALSE", + + parameter [31:0] BAR0 = 32'hFFFF0000, + parameter [31:0] BAR1 = 32'h00000000, + parameter [31:0] BAR2 = 32'h00000000, + parameter [31:0] BAR3 = 32'h00000000, + parameter [31:0] BAR4 = 32'h00000000, + parameter [31:0] BAR5 = 32'h00000000, + + parameter C_DATA_WIDTH = 64, + parameter [31:0] CARDBUS_CIS_POINTER = 32'h00000000, + parameter [23:0] CLASS_CODE = 24'h050000, + parameter CMD_INTX_IMPLEMENTED = "TRUE", + parameter CPL_TIMEOUT_DISABLE_SUPPORTED = "FALSE", + parameter [3:0] CPL_TIMEOUT_RANGES_SUPPORTED = 4'h2, + + parameter integer DEV_CAP_ENDPOINT_L0S_LATENCY = 0, + parameter integer DEV_CAP_ENDPOINT_L1_LATENCY = 7, + parameter DEV_CAP_EXT_TAG_SUPPORTED = "FALSE", + parameter integer DEV_CAP_MAX_PAYLOAD_SUPPORTED = 3, + parameter integer DEV_CAP_PHANTOM_FUNCTIONS_SUPPORT = 0, + + parameter DEV_CAP2_ARI_FORWARDING_SUPPORTED = "FALSE", + parameter DEV_CAP2_ATOMICOP32_COMPLETER_SUPPORTED = "FALSE", + parameter DEV_CAP2_ATOMICOP64_COMPLETER_SUPPORTED = "FALSE", + parameter DEV_CAP2_ATOMICOP_ROUTING_SUPPORTED = "FALSE", + parameter DEV_CAP2_CAS128_COMPLETER_SUPPORTED = "FALSE", + parameter [1:0] DEV_CAP2_TPH_COMPLETER_SUPPORTED = 2'b00, + parameter DEV_CONTROL_EXT_TAG_DEFAULT = "FALSE", + + parameter DISABLE_LANE_REVERSAL = "TRUE", + parameter DISABLE_RX_POISONED_RESP = "FALSE", + parameter DISABLE_SCRAMBLING = "FALSE", + parameter [11:0] DSN_BASE_PTR = 12'h100, + parameter [11:0] DSN_CAP_NEXTPTR = 12'h000, + parameter DSN_CAP_ON = "TRUE", + + parameter [10:0] ENABLE_MSG_ROUTE = 11'b00000000000, + parameter ENABLE_RX_TD_ECRC_TRIM = "FALSE", + parameter [31:0] EXPANSION_ROM = 32'h00000000, + parameter [5:0] EXT_CFG_CAP_PTR = 6'h3F, + parameter [9:0] EXT_CFG_XP_CAP_PTR = 10'h3FF, + parameter [7:0] HEADER_TYPE = 8'h00, + parameter [7:0] INTERRUPT_PIN = 8'h1, + + parameter [9:0] LAST_CONFIG_DWORD = 10'h3FF, + parameter LINK_CAP_ASPM_OPTIONALITY = "FALSE", + parameter LINK_CAP_DLL_LINK_ACTIVE_REPORTING_CAP = "FALSE", + parameter LINK_CAP_LINK_BANDWIDTH_NOTIFICATION_CAP = "FALSE", + parameter [3:0] LINK_CAP_MAX_LINK_SPEED = 4'h2, + parameter [5:0] LINK_CAP_MAX_LINK_WIDTH = 6'h4, + + parameter LINK_CTRL2_DEEMPHASIS = "FALSE", + parameter LINK_CTRL2_HW_AUTONOMOUS_SPEED_DISABLE = "FALSE", + parameter [3:0] LINK_CTRL2_TARGET_LINK_SPEED = 4'h2, + parameter LINK_STATUS_SLOT_CLOCK_CONFIG = "TRUE", + + parameter [14:0] LL_ACK_TIMEOUT = 15'h0000, + parameter LL_ACK_TIMEOUT_EN = "FALSE", + parameter integer LL_ACK_TIMEOUT_FUNC = 0, + parameter [14:0] LL_REPLAY_TIMEOUT = 15'h0000, + parameter LL_REPLAY_TIMEOUT_EN = "FALSE", + parameter integer LL_REPLAY_TIMEOUT_FUNC = 1, + + parameter [5:0] LTSSM_MAX_LINK_WIDTH = 6'h4, + parameter MSI_CAP_MULTIMSGCAP = 0, + parameter MSI_CAP_MULTIMSG_EXTENSION = 0, + parameter MSI_CAP_ON = "FALSE", + parameter MSI_CAP_PER_VECTOR_MASKING_CAPABLE = "FALSE", + parameter MSI_CAP_64_BIT_ADDR_CAPABLE = "TRUE", + + parameter MSIX_CAP_ON = "FALSE", + parameter MSIX_CAP_PBA_BIR = 0, + parameter [28:0] MSIX_CAP_PBA_OFFSET = 29'h0, + parameter MSIX_CAP_TABLE_BIR = 0, + parameter [28:0] MSIX_CAP_TABLE_OFFSET = 29'h0, + parameter [10:0] MSIX_CAP_TABLE_SIZE = 11'h000, + + parameter [3:0] PCIE_CAP_DEVICE_PORT_TYPE = 4'h0, + parameter [7:0] PCIE_CAP_NEXTPTR = 8'h00, + + parameter PM_CAP_DSI = "FALSE", + parameter PM_CAP_D1SUPPORT = "FALSE", + parameter PM_CAP_D2SUPPORT = "FALSE", + parameter [7:0] PM_CAP_NEXTPTR = 8'h60, + parameter [4:0] PM_CAP_PMESUPPORT = 5'h0F, + parameter PM_CSR_NOSOFTRST = "TRUE", + + parameter [1:0] PM_DATA_SCALE0 = 2'h0, + parameter [1:0] PM_DATA_SCALE1 = 2'h0, + parameter [1:0] PM_DATA_SCALE2 = 2'h0, + parameter [1:0] PM_DATA_SCALE3 = 2'h0, + parameter [1:0] PM_DATA_SCALE4 = 2'h0, + parameter [1:0] PM_DATA_SCALE5 = 2'h0, + parameter [1:0] PM_DATA_SCALE6 = 2'h0, + parameter [1:0] PM_DATA_SCALE7 = 2'h0, + + parameter [7:0] PM_DATA0 = 8'h00, + parameter [7:0] PM_DATA1 = 8'h00, + parameter [7:0] PM_DATA2 = 8'h00, + parameter [7:0] PM_DATA3 = 8'h00, + parameter [7:0] PM_DATA4 = 8'h00, + parameter [7:0] PM_DATA5 = 8'h00, + parameter [7:0] PM_DATA6 = 8'h00, + parameter [7:0] PM_DATA7 = 8'h00, + + parameter [11:0] RBAR_BASE_PTR = 12'h000, + parameter [4:0] RBAR_CAP_CONTROL_ENCODEDBAR0 = 5'h00, + parameter [4:0] RBAR_CAP_CONTROL_ENCODEDBAR1 = 5'h00, + parameter [4:0] RBAR_CAP_CONTROL_ENCODEDBAR2 = 5'h00, + parameter [4:0] RBAR_CAP_CONTROL_ENCODEDBAR3 = 5'h00, + parameter [4:0] RBAR_CAP_CONTROL_ENCODEDBAR4 = 5'h00, + parameter [4:0] RBAR_CAP_CONTROL_ENCODEDBAR5 = 5'h00, + parameter [2:0] RBAR_CAP_INDEX0 = 3'h0, + parameter [2:0] RBAR_CAP_INDEX1 = 3'h0, + parameter [2:0] RBAR_CAP_INDEX2 = 3'h0, + parameter [2:0] RBAR_CAP_INDEX3 = 3'h0, + parameter [2:0] RBAR_CAP_INDEX4 = 3'h0, + parameter [2:0] RBAR_CAP_INDEX5 = 3'h0, + parameter RBAR_CAP_ON = "FALSE", + parameter [31:0] RBAR_CAP_SUP0 = 32'h00001, + parameter [31:0] RBAR_CAP_SUP1 = 32'h00001, + parameter [31:0] RBAR_CAP_SUP2 = 32'h00001, + parameter [31:0] RBAR_CAP_SUP3 = 32'h00001, + parameter [31:0] RBAR_CAP_SUP4 = 32'h00001, + parameter [31:0] RBAR_CAP_SUP5 = 32'h00001, + parameter [2:0] RBAR_NUM = 3'h0, + + parameter RECRC_CHK = 0, + parameter RECRC_CHK_TRIM = "FALSE", + parameter REF_CLK_FREQ = 0, // 0 - 100 MHz, 1 - 125 MHz, 2 - 250 MHz + parameter REM_WIDTH = (C_DATA_WIDTH == 128) ? 2 : 1, + parameter KEEP_WIDTH = C_DATA_WIDTH / 8, + + parameter TL_RX_RAM_RADDR_LATENCY = 0, + parameter TL_RX_RAM_WRITE_LATENCY = 0, + parameter TL_TX_RAM_RADDR_LATENCY = 0, + parameter TL_TX_RAM_WRITE_LATENCY = 0, + parameter TL_RX_RAM_RDATA_LATENCY = 2, + parameter TL_TX_RAM_RDATA_LATENCY = 2, + parameter TRN_NP_FC = "TRUE", + parameter TRN_DW = "FALSE", + + parameter UPCONFIG_CAPABLE = "TRUE", + parameter UPSTREAM_FACING = "TRUE", + parameter UR_ATOMIC = "FALSE", + parameter UR_INV_REQ = "TRUE", + parameter UR_PRS_RESPONSE = "TRUE", + parameter USER_CLK_FREQ = 3, + parameter USER_CLK2_DIV2 = "FALSE", + + parameter [11:0] VC_BASE_PTR = 12'h000, + parameter [11:0] VC_CAP_NEXTPTR = 12'h000, + parameter VC_CAP_ON = "FALSE", + parameter VC_CAP_REJECT_SNOOP_TRANSACTIONS = "FALSE", + + parameter VC0_CPL_INFINITE = "TRUE", + parameter [12:0] VC0_RX_RAM_LIMIT = 13'hFFF, + parameter VC0_TOTAL_CREDITS_CD = 973, + parameter VC0_TOTAL_CREDITS_CH = 36, + parameter VC0_TOTAL_CREDITS_NPH = 12, + parameter VC0_TOTAL_CREDITS_NPD = 24, + parameter VC0_TOTAL_CREDITS_PD = 949, + parameter VC0_TOTAL_CREDITS_PH = 32, + parameter VC0_TX_LASTPACKET = 30, + + parameter [11:0] VSEC_BASE_PTR = 12'h000, + parameter [11:0] VSEC_CAP_NEXTPTR = 12'h000, + parameter VSEC_CAP_ON = "FALSE", + + parameter DISABLE_ASPM_L1_TIMER = "FALSE", + parameter DISABLE_BAR_FILTERING = "FALSE", + parameter DISABLE_ID_CHECK = "FALSE", + parameter DISABLE_RX_TC_FILTER = "FALSE", + parameter [7:0] DNSTREAM_LINK_NUM = 8'h00, + + parameter [15:0] DSN_CAP_ID = 16'h0003, + parameter [3:0] DSN_CAP_VERSION = 4'h1, + parameter ENTER_RVRY_EI_L0 = "TRUE", + parameter [4:0] INFER_EI = 5'h00, + parameter IS_SWITCH = "FALSE", + + parameter LINK_CAP_ASPM_SUPPORT = 1, + parameter LINK_CAP_CLOCK_POWER_MANAGEMENT = "FALSE", + parameter LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN1 = 7, + parameter LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN2 = 7, + parameter LINK_CAP_L0S_EXIT_LATENCY_GEN1 = 7, + parameter LINK_CAP_L0S_EXIT_LATENCY_GEN2 = 7, + parameter LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN1 = 7, + parameter LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN2 = 7, + parameter LINK_CAP_L1_EXIT_LATENCY_GEN1 = 7, + parameter LINK_CAP_L1_EXIT_LATENCY_GEN2 = 7, + parameter LINK_CAP_RSVD_23 = 0, + parameter LINK_CONTROL_RCB = 0, + + parameter [7:0] MSI_BASE_PTR = 8'h48, + parameter [7:0] MSI_CAP_ID = 8'h05, + parameter [7:0] MSI_CAP_NEXTPTR = 8'h60, + parameter [7:0] MSIX_BASE_PTR = 8'h9C, + parameter [7:0] MSIX_CAP_ID = 8'h11, + parameter [7:0] MSIX_CAP_NEXTPTR =8'h00, + + parameter N_FTS_COMCLK_GEN1 = 255, + parameter N_FTS_COMCLK_GEN2 = 255, + parameter N_FTS_GEN1 = 255, + parameter N_FTS_GEN2 = 255, + + parameter [7:0] PCIE_BASE_PTR = 8'h60, + parameter [7:0] PCIE_CAP_CAPABILITY_ID = 8'h10, + parameter [3:0] PCIE_CAP_CAPABILITY_VERSION = 4'h2, + parameter PCIE_CAP_ON = "TRUE", + parameter PCIE_CAP_RSVD_15_14 = 0, + parameter PCIE_CAP_SLOT_IMPLEMENTED = "FALSE", + parameter PCIE_REVISION = 2, + + parameter PL_AUTO_CONFIG = 0, + parameter PL_FAST_TRAIN = "FALSE", + parameter PCIE_EXT_CLK = "TRUE", + + parameter PCIE_EXT_GT_COMMON = "FALSE", + parameter EXT_CH_GT_DRP = "FALSE", + parameter TRANSCEIVER_CTRL_STATUS_PORTS = "FALSE", + parameter SHARED_LOGIC_IN_CORE = "FALSE", + + parameter [7:0] PM_BASE_PTR = 8'h40, + parameter PM_CAP_AUXCURRENT = 0, + parameter [7:0] PM_CAP_ID = 8'h01, + parameter PM_CAP_ON = "TRUE", + parameter PM_CAP_PME_CLOCK = "FALSE", + parameter PM_CAP_RSVD_04 = 0, + parameter PM_CAP_VERSION = 3, + parameter PM_CSR_BPCCEN = "FALSE", + parameter PM_CSR_B2B3 = "FALSE", + + parameter ROOT_CAP_CRS_SW_VISIBILITY = "FALSE", + parameter SELECT_DLL_IF = "FALSE", + parameter SLOT_CAP_ATT_BUTTON_PRESENT = "FALSE", + parameter SLOT_CAP_ATT_INDICATOR_PRESENT = "FALSE", + parameter SLOT_CAP_ELEC_INTERLOCK_PRESENT = "FALSE", + parameter SLOT_CAP_HOTPLUG_CAPABLE = "FALSE", + parameter SLOT_CAP_HOTPLUG_SURPRISE = "FALSE", + parameter SLOT_CAP_MRL_SENSOR_PRESENT = "FALSE", + parameter SLOT_CAP_NO_CMD_COMPLETED_SUPPORT = "FALSE", + parameter [12:0] SLOT_CAP_PHYSICAL_SLOT_NUM = 13'h0000, + parameter SLOT_CAP_POWER_CONTROLLER_PRESENT = "FALSE", + parameter SLOT_CAP_POWER_INDICATOR_PRESENT = "FALSE", + parameter SLOT_CAP_SLOT_POWER_LIMIT_SCALE = 0, + parameter [7:0] SLOT_CAP_SLOT_POWER_LIMIT_VALUE = 8'h00, + + parameter integer SPARE_BIT0 = 0, + + parameter integer SPARE_BIT1 = 0, + parameter integer SPARE_BIT2 = 0, + parameter integer SPARE_BIT3 = 0, + parameter integer SPARE_BIT4 = 0, + parameter integer SPARE_BIT5 = 0, + parameter integer SPARE_BIT6 = 0, + parameter integer SPARE_BIT7 = 0, + parameter integer SPARE_BIT8 = 0, + parameter [7:0] SPARE_BYTE0 = 8'h00, + parameter [7:0] SPARE_BYTE1 = 8'h00, + parameter [7:0] SPARE_BYTE2 = 8'h00, + parameter [7:0] SPARE_BYTE3 = 8'h00, + parameter [31:0] SPARE_WORD0 = 32'h00000000, + parameter [31:0] SPARE_WORD1 = 32'h00000000, + parameter [31:0] SPARE_WORD2 = 32'h00000000, + parameter [31:0] SPARE_WORD3 = 32'h00000000, + + parameter TL_RBYPASS = "FALSE", + parameter TL_TFC_DISABLE = "FALSE", + parameter TL_TX_CHECKS_DISABLE = "FALSE", + parameter EXIT_LOOPBACK_ON_EI = "TRUE", + + parameter CFG_ECRC_ERR_CPLSTAT = 0, + parameter [7:0] CAPABILITIES_PTR = 8'h40, + parameter [6:0] CRM_MODULE_RSTS = 7'h00, + parameter DEV_CAP_ENABLE_SLOT_PWR_LIMIT_SCALE = "TRUE", + parameter DEV_CAP_ENABLE_SLOT_PWR_LIMIT_VALUE = "TRUE", + parameter DEV_CAP_FUNCTION_LEVEL_RESET_CAPABLE = "FALSE", + parameter DEV_CAP_ROLE_BASED_ERROR = "TRUE", + parameter DEV_CAP_RSVD_14_12 = 0, + parameter DEV_CAP_RSVD_17_16 = 0, + parameter DEV_CAP_RSVD_31_29 = 0, + parameter DEV_CONTROL_AUX_POWER_SUPPORTED = "FALSE", + + parameter [15:0] VC_CAP_ID = 16'h0002, + parameter [3:0] VC_CAP_VERSION = 4'h1, + parameter [15:0] VSEC_CAP_HDR_ID = 16'h1234, + parameter [11:0] VSEC_CAP_HDR_LENGTH = 12'h018, + parameter [3:0] VSEC_CAP_HDR_REVISION = 4'h1, + parameter [15:0] VSEC_CAP_ID = 16'h000B, + parameter VSEC_CAP_IS_LINK_VISIBLE = "TRUE", + parameter [3:0] VSEC_CAP_VERSION = 4'h1, + + parameter DISABLE_ERR_MSG = "FALSE", + parameter DISABLE_LOCKED_FILTER = "FALSE", + parameter DISABLE_PPM_FILTER = "FALSE", + parameter ENDEND_TLP_PREFIX_FORWARDING_SUPPORTED = "FALSE", + parameter INTERRUPT_STAT_AUTO = "TRUE", + parameter MPS_FORCE = "FALSE", + parameter [14:0] PM_ASPML0S_TIMEOUT = 15'h0000, + parameter PM_ASPML0S_TIMEOUT_EN = "FALSE", + parameter PM_ASPML0S_TIMEOUT_FUNC = 0, + parameter PM_ASPM_FASTEXIT = "FALSE", + parameter PM_MF = "FALSE", + + parameter [1:0] RP_AUTO_SPD = 2'h1, + parameter [4:0] RP_AUTO_SPD_LOOPCNT = 5'h1f, + parameter SIM_VERSION = "1.0", + parameter SSL_MESSAGE_AUTO = "FALSE", + parameter TECRC_EP_INV = "FALSE", + parameter UR_CFG1 = "TRUE", + parameter USE_RID_PINS = "FALSE", + +// New Parameters + parameter DEV_CAP2_ENDEND_TLP_PREFIX_SUPPORTED = "FALSE", + parameter DEV_CAP2_EXTENDED_FMT_FIELD_SUPPORTED = "FALSE", + parameter DEV_CAP2_LTR_MECHANISM_SUPPORTED = "FALSE", + parameter [1:0] DEV_CAP2_MAX_ENDEND_TLP_PREFIXES = 2'h0, + parameter DEV_CAP2_NO_RO_ENABLED_PRPR_PASSING = "FALSE", + + parameter LINK_CAP_SURPRISE_DOWN_ERROR_CAPABLE = "FALSE", + + parameter [15:0] AER_CAP_ID = 16'h0001, + parameter [3:0] AER_CAP_VERSION = 4'h1, + + parameter [15:0] RBAR_CAP_ID = 16'h0015, + parameter [11:0] RBAR_CAP_NEXTPTR = 12'h000, + parameter [3:0] RBAR_CAP_VERSION = 4'h1, + parameter PCIE_USE_MODE = "3.0", + parameter PCIE_GT_DEVICE = "GTX", + parameter PCIE_CHAN_BOND = 0, + parameter PCIE_PLL_SEL = "CPLL", + parameter PCIE_ASYNC_EN = "FALSE", + parameter PCIE_TXBUF_EN = "FALSE", + parameter PL_INTERFACE = "TRUE", + parameter CFG_MGMT_IF = "TRUE", + parameter CFG_CTL_IF = "TRUE", + parameter CFG_STATUS_IF = "TRUE", + parameter RCV_MSG_IF = "TRUE", + parameter CFG_FC_IF = "TRUE", + parameter EXT_PIPE_INTERFACE = "FALSE", + + parameter TX_MARGIN_FULL_0 = 7'b1001111, + parameter TX_MARGIN_FULL_1 = 7'b1001110, + parameter TX_MARGIN_FULL_2 = 7'b1001101, + parameter TX_MARGIN_FULL_3 = 7'b1001100, + parameter TX_MARGIN_FULL_4 = 7'b1000011, + parameter TX_MARGIN_LOW_0 = 7'b1000101, + parameter TX_MARGIN_LOW_1 = 7'b1000110, + parameter TX_MARGIN_LOW_2 = 7'b1000011, + parameter TX_MARGIN_LOW_3 = 7'b1000010, + parameter TX_MARGIN_LOW_4 = 7'b1000000, + parameter ENABLE_JTAG_DBG = "FALSE", + parameter REDUCE_OOB_FREQ = "FALSE" +) +( + + //----------------------------------------------------------------------------------------------------------------// + // 1. PCI Express (pci_exp) Interface // + //----------------------------------------------------------------------------------------------------------------// + + // Tx + output [(LINK_CAP_MAX_LINK_WIDTH - 1) : 0] pci_exp_txn, + output [(LINK_CAP_MAX_LINK_WIDTH - 1) : 0] pci_exp_txp, + + // Rx + input [(LINK_CAP_MAX_LINK_WIDTH - 1) : 0] pci_exp_rxn, + input [(LINK_CAP_MAX_LINK_WIDTH - 1) : 0] pci_exp_rxp, + + //----------------------------------------------------------------------------------------------------------------// + // 2. Clock & GT COMMON Sharing Interface // + //----------------------------------------------------------------------------------------------------------------// + + // Shared Logic Internal + output int_pclk_out_slave, + output int_pipe_rxusrclk_out, + output [(LINK_CAP_MAX_LINK_WIDTH-1):0] int_rxoutclk_out, + output int_dclk_out, + output int_userclk1_out, + output int_userclk2_out, + output int_oobclk_out, + output int_mmcm_lock_out, + output [1:0] int_qplllock_out, + output [1:0] int_qplloutclk_out, + output [1:0] int_qplloutrefclk_out, + input [(LINK_CAP_MAX_LINK_WIDTH-1):0] int_pclk_sel_slave, + + // Shared Logic External - Clocks + input pipe_pclk_in, + input pipe_rxusrclk_in, + input [(LINK_CAP_MAX_LINK_WIDTH - 1) : 0] pipe_rxoutclk_in, + input pipe_dclk_in, + input pipe_userclk1_in, + input pipe_userclk2_in, + input pipe_oobclk_in, + input pipe_mmcm_lock_in, + + output pipe_txoutclk_out, + output [(LINK_CAP_MAX_LINK_WIDTH - 1) : 0] pipe_rxoutclk_out, + output [(LINK_CAP_MAX_LINK_WIDTH - 1) : 0] pipe_pclk_sel_out, + output pipe_gen3_out, + + // Shared Logic External - GT COMMON + + input [11:0] qpll_drp_crscode, + input [17:0] qpll_drp_fsm, + input [1:0] qpll_drp_done, + input [1:0] qpll_drp_reset, + input [1:0] qpll_qplllock, + input [1:0] qpll_qplloutclk, + input [1:0] qpll_qplloutrefclk, + output qpll_qplld, + output [1:0] qpll_qpllreset, + output qpll_drp_clk, + output qpll_drp_rst_n, + output qpll_drp_ovrd, + output qpll_drp_gen3, + output qpll_drp_start, + + //----------------------------------------------------------------------------------------------------------------// + // 3. AXI-S Interface // + //----------------------------------------------------------------------------------------------------------------// + + // Common + output user_clk_out, + output reg user_reset_out, + output user_lnk_up, + output wire user_app_rdy, + + // AXI TX + //----------- + output [5:0] tx_buf_av, + output tx_err_drop, + output tx_cfg_req, + input [C_DATA_WIDTH-1:0] s_axis_tx_tdata, + input s_axis_tx_tvalid, + output s_axis_tx_tready, + input [KEEP_WIDTH-1:0] s_axis_tx_tkeep, + input s_axis_tx_tlast, + input [3:0] s_axis_tx_tuser, + input tx_cfg_gnt, + + // AXI RX + //----------- + output [C_DATA_WIDTH-1:0] m_axis_rx_tdata, + output m_axis_rx_tvalid, + input m_axis_rx_tready, + output [KEEP_WIDTH-1:0] m_axis_rx_tkeep, + output m_axis_rx_tlast, + output [21:0] m_axis_rx_tuser, + input rx_np_ok, + input rx_np_req, + + // Flow Control + output [11:0] fc_cpld, + output [7:0] fc_cplh, + output [11:0] fc_npd, + output [7:0] fc_nph, + output [11:0] fc_pd, + output [7:0] fc_ph, + input [2:0] fc_sel, + + + //----------------------------------------------------------------------------------------------------------------// + // 4. Configuration (CFG) Interface // + //----------------------------------------------------------------------------------------------------------------// + + //------------------------------------------------// + // EP and RP // + //------------------------------------------------// + output wire [31:0] cfg_mgmt_do, + output wire cfg_mgmt_rd_wr_done, + + output wire [15:0] cfg_status, + output wire [15:0] cfg_command, + output wire [15:0] cfg_dstatus, + output wire [15:0] cfg_dcommand, + output wire [15:0] cfg_lstatus, + output wire [15:0] cfg_lcommand, + output wire [15:0] cfg_dcommand2, + output [2:0] cfg_pcie_link_state, + + output wire cfg_pmcsr_pme_en, + output wire [1:0] cfg_pmcsr_powerstate, + output wire cfg_pmcsr_pme_status, + output wire cfg_received_func_lvl_rst, + + // Management Interface + input wire [31:0] cfg_mgmt_di, + input wire [3:0] cfg_mgmt_byte_en, + input wire [9:0] cfg_mgmt_dwaddr, + input wire cfg_mgmt_wr_en, + input wire cfg_mgmt_rd_en, + input wire cfg_mgmt_wr_readonly, + + // Error Reporting Interface + input wire cfg_err_ecrc, + input wire cfg_err_ur, + input wire cfg_err_cpl_timeout, + input wire cfg_err_cpl_unexpect, + input wire cfg_err_cpl_abort, + input wire cfg_err_posted, + input wire cfg_err_cor, + input wire cfg_err_atomic_egress_blocked, + input wire cfg_err_internal_cor, + input wire cfg_err_malformed, + input wire cfg_err_mc_blocked, + input wire cfg_err_poisoned, + input wire cfg_err_norecovery, + input wire [47:0] cfg_err_tlp_cpl_header, + output wire cfg_err_cpl_rdy, + input wire cfg_err_locked, + input wire cfg_err_acs, + input wire cfg_err_internal_uncor, + + input wire cfg_trn_pending, + input wire cfg_pm_halt_aspm_l0s, + input wire cfg_pm_halt_aspm_l1, + input wire cfg_pm_force_state_en, + input wire [1:0] cfg_pm_force_state, + + input wire [63:0] cfg_dsn, + output cfg_msg_received, + output [15:0] cfg_msg_data, + + //------------------------------------------------// + // EP Only // + //------------------------------------------------// + + // Interrupt Interface Signals + input wire cfg_interrupt, + output wire cfg_interrupt_rdy, + input wire cfg_interrupt_assert, + input wire [7:0] cfg_interrupt_di, + output wire [7:0] cfg_interrupt_do, + output wire [2:0] cfg_interrupt_mmenable, + output wire cfg_interrupt_msienable, + output wire cfg_interrupt_msixenable, + output wire cfg_interrupt_msixfm, + input wire cfg_interrupt_stat, + input wire [4:0] cfg_pciecap_interrupt_msgnum, + + + output cfg_to_turnoff, + input wire cfg_turnoff_ok, + output wire [7:0] cfg_bus_number, + output wire [4:0] cfg_device_number, + output wire [2:0] cfg_function_number, + input wire cfg_pm_wake, + + output wire cfg_msg_received_pm_as_nak, + output wire cfg_msg_received_setslotpowerlimit, + + //------------------------------------------------// + // RP Only // + //------------------------------------------------// + input wire cfg_pm_send_pme_to, + input wire [7:0] cfg_ds_bus_number, + input wire [4:0] cfg_ds_device_number, + input wire [2:0] cfg_ds_function_number, + + input wire cfg_mgmt_wr_rw1c_as_rw, + + output wire cfg_bridge_serr_en, + output wire cfg_slot_control_electromech_il_ctl_pulse, + output wire cfg_root_control_syserr_corr_err_en, + output wire cfg_root_control_syserr_non_fatal_err_en, + output wire cfg_root_control_syserr_fatal_err_en, + output wire cfg_root_control_pme_int_en, + output wire cfg_aer_rooterr_corr_err_reporting_en, + output wire cfg_aer_rooterr_non_fatal_err_reporting_en, + output wire cfg_aer_rooterr_fatal_err_reporting_en, + output wire cfg_aer_rooterr_corr_err_received, + output wire cfg_aer_rooterr_non_fatal_err_received, + output wire cfg_aer_rooterr_fatal_err_received, + + output wire cfg_msg_received_err_cor, + output wire cfg_msg_received_err_non_fatal, + output wire cfg_msg_received_err_fatal, + output wire cfg_msg_received_pm_pme, + output wire cfg_msg_received_pme_to_ack, + output wire cfg_msg_received_assert_int_a, + output wire cfg_msg_received_assert_int_b, + output wire cfg_msg_received_assert_int_c, + output wire cfg_msg_received_assert_int_d, + output wire cfg_msg_received_deassert_int_a, + output wire cfg_msg_received_deassert_int_b, + output wire cfg_msg_received_deassert_int_c, + output wire cfg_msg_received_deassert_int_d, + + //----------------------------------------------------------------------------------------------------------------// + // 5. Physical Layer Control and Status (PL) Interface // + //----------------------------------------------------------------------------------------------------------------// + + //------------------------------------------------// + // EP and RP // + //------------------------------------------------// + input wire [1:0] pl_directed_link_change, + input wire [1:0] pl_directed_link_width, + input wire pl_directed_link_speed, + input wire pl_directed_link_auton, + input wire pl_upstream_prefer_deemph, + + + + output wire pl_sel_lnk_rate, + output wire [1:0] pl_sel_lnk_width, + output wire [5:0] pl_ltssm_state, + output wire [1:0] pl_lane_reversal_mode, + + output wire pl_phy_lnk_up, + output wire [2:0] pl_tx_pm_state, + output wire [1:0] pl_rx_pm_state, + + output wire pl_link_upcfg_cap, + output wire pl_link_gen2_cap, + output wire pl_link_partner_gen2_supported, + output wire [2:0] pl_initial_link_width, + + output wire pl_directed_change_done, + + //------------------------------------------------// + // EP Only // + //------------------------------------------------// + output wire pl_received_hot_rst, + + //------------------------------------------------// + // RP Only // + //------------------------------------------------// + input wire pl_transmit_hot_rst, + input wire pl_downstream_deemph_source, + + //----------------------------------------------------------------------------------------------------------------// + // 6. AER interface // + //----------------------------------------------------------------------------------------------------------------// + + input wire [127:0] cfg_err_aer_headerlog, + input wire [4:0] cfg_aer_interrupt_msgnum, + output wire cfg_err_aer_headerlog_set, + output wire cfg_aer_ecrc_check_en, + output wire cfg_aer_ecrc_gen_en, + + //----------------------------------------------------------------------------------------------------------------// + // 7. VC interface // + //----------------------------------------------------------------------------------------------------------------// + + output wire [6:0] cfg_vc_tcvc_map, + + //----------------------------------------------------------------------------------------------------------------// + // PCIe Fast Config: ICAP primitive Interface // + //----------------------------------------------------------------------------------------------------------------// + + input wire icap_clk, + input wire icap_csib, + input wire icap_rdwrb, + input wire [31:0] icap_i, + output wire [31:0] icap_o, + + + + input [ 2:0] pipe_txprbssel, + input [ 2:0] pipe_rxprbssel, + input pipe_txprbsforceerr, + input pipe_rxprbscntreset, + input [ 2:0] pipe_loopback, + + output [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_rxprbserr, + input [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_txinhibit, + + + output [4:0] pipe_rst_fsm, + output [11:0] pipe_qrst_fsm, + output [(LINK_CAP_MAX_LINK_WIDTH*5)-1:0] pipe_rate_fsm, + output [(LINK_CAP_MAX_LINK_WIDTH*6)-1:0] pipe_sync_fsm_tx, + output [(LINK_CAP_MAX_LINK_WIDTH*7)-1:0] pipe_sync_fsm_rx, + output [(LINK_CAP_MAX_LINK_WIDTH*7)-1:0] pipe_drp_fsm, + + output pipe_rst_idle, + output pipe_qrst_idle, + output pipe_rate_idle, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_eyescandataerror, + output [(LINK_CAP_MAX_LINK_WIDTH*3)-1:0] pipe_rxstatus, + output [(LINK_CAP_MAX_LINK_WIDTH*15)-1:0] pipe_dmonitorout, + + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] pipe_cpll_lock, + output [(LINK_CAP_MAX_LINK_WIDTH-1)>>2:0] pipe_qpll_lock, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] pipe_rxpmaresetdone, + output [(LINK_CAP_MAX_LINK_WIDTH*3)-1:0] pipe_rxbufstatus, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] pipe_txphaligndone, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] pipe_txphinitdone, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] pipe_txdlysresetdone, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] pipe_rxphaligndone, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] pipe_rxdlysresetdone, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] pipe_rxsyncdone, + output [(LINK_CAP_MAX_LINK_WIDTH*8)-1:0] pipe_rxdisperr, + output [(LINK_CAP_MAX_LINK_WIDTH*8)-1:0] pipe_rxnotintable, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] pipe_rxcommadet, + + output [LINK_CAP_MAX_LINK_WIDTH-1:0] gt_ch_drp_rdy, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_debug_0, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_debug_1, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_debug_2, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_debug_3, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_debug_4, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_debug_5, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_debug_6, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_debug_7, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_debug_8, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_debug_9, + output [31:0] pipe_debug, + + //--------------Channel DRP--------------------------------- + output ext_ch_gt_drpclk, + input [(LINK_CAP_MAX_LINK_WIDTH*9)-1:0] ext_ch_gt_drpaddr, + input [LINK_CAP_MAX_LINK_WIDTH-1:0] ext_ch_gt_drpen, + input [(LINK_CAP_MAX_LINK_WIDTH*16)-1:0] ext_ch_gt_drpdi, + input [LINK_CAP_MAX_LINK_WIDTH-1:0] ext_ch_gt_drpwe, + + output [(LINK_CAP_MAX_LINK_WIDTH*16)-1:0] ext_ch_gt_drpdo, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] ext_ch_gt_drprdy, + + + //----------------------------------------------------------------------------------------------------------------// + // PCIe Fast Config: STARTUP primitive Interface // + //----------------------------------------------------------------------------------------------------------------// + + // This input should be used when the startup block is generated exteranl to the PCI Express Core + input startup_eos_in, // 1-bit input: This signal should be driven by the EOS output of the STARTUP primitive. + // These inputs and outputs may be use when the startup block is generated internal to the PCI Express Core. + output startup_cfgclk, // 1-bit output: Configuration main clock output + output startup_cfgmclk, // 1-bit output: Configuration internal oscillator clock output + output startup_eos, // 1-bit output: Active high output signal indicating the End Of Startup + output startup_preq, // 1-bit output: PROGRAM request to fabric output + input startup_clk, // 1-bit input: User start-up clock input + input startup_gsr, // 1-bit input: Global Set/Reset input (GSR cannot be used for the port name) + input startup_gts, // 1-bit input: Global 3-state input (GTS cannot be used for the port name) + input startup_keyclearb, // 1-bit input: Clear AES Decrypter Key input from Battery-Backed RAM (BBRAM) + input startup_pack, // 1-bit input: PROGRAM acknowledge input + input startup_usrcclko, // 1-bit input: User CCLK input + input startup_usrcclkts, // 1-bit input: User CCLK 3-state enable input + input startup_usrdoneo, // 1-bit input: User DONE pin output control + input startup_usrdonets, // 1-bit input: User DONE 3-state enable output + + //----------------------------------------------------------------------------------------------------------------// + // 8. PCIe DRP (PCIe DRP) Interface // + //----------------------------------------------------------------------------------------------------------------// + + input wire pcie_drp_clk, + input wire pcie_drp_en, + input wire pcie_drp_we, + input wire [8:0] pcie_drp_addr, + input wire [15:0] pcie_drp_di, + output wire pcie_drp_rdy, + output wire [15:0] pcie_drp_do, + //----------------------------------------------------------------------------------------------------------------// + // PIPE PORTS to TOP Level For PIPE SIMULATION with 3rd Party IP/BFM/Xilinx BFM + //----------------------------------------------------------------------------------------------------------------// + input wire [11:0] common_commands_in, + input wire [24:0] pipe_rx_0_sigs, + input wire [24:0] pipe_rx_1_sigs, + input wire [24:0] pipe_rx_2_sigs, + input wire [24:0] pipe_rx_3_sigs, + input wire [24:0] pipe_rx_4_sigs, + input wire [24:0] pipe_rx_5_sigs, + input wire [24:0] pipe_rx_6_sigs, + input wire [24:0] pipe_rx_7_sigs, + + output wire [11:0] common_commands_out, + output wire [24:0] pipe_tx_0_sigs, + output wire [24:0] pipe_tx_1_sigs, + output wire [24:0] pipe_tx_2_sigs, + output wire [24:0] pipe_tx_3_sigs, + output wire [24:0] pipe_tx_4_sigs, + output wire [24:0] pipe_tx_5_sigs, + output wire [24:0] pipe_tx_6_sigs, + output wire [24:0] pipe_tx_7_sigs, + //----------------------------------------------------------------------------------------------------------------// + // 9. System(SYS) Interface // + //----------------------------------------------------------------------------------------------------------------// + + input wire pipe_mmcm_rst_n, // Async | Async + input wire sys_clk, + input wire sys_rst_n +); + + wire user_clk; + wire user_clk2; + wire pipe_clk; + wire [15:0] cfg_vend_id = CFG_VEND_ID; + wire [15:0] cfg_dev_id = CFG_DEV_ID; + wire [7:0] cfg_rev_id = CFG_REV_ID; + wire [15:0] cfg_subsys_vend_id = CFG_SUBSYS_VEND_ID; + wire [15:0] cfg_subsys_id = CFG_SUBSYS_ID; + + // PIPE Interface Wires + wire phy_rdy_n; + wire pipe_rx0_polarity_gt; + wire pipe_rx1_polarity_gt; + wire pipe_rx2_polarity_gt; + wire pipe_rx3_polarity_gt; + wire pipe_rx4_polarity_gt; + wire pipe_rx5_polarity_gt; + wire pipe_rx6_polarity_gt; + wire pipe_rx7_polarity_gt; + wire pipe_tx_deemph_gt; + wire [2:0] pipe_tx_margin_gt; + wire pipe_tx_rate_gt; + wire pipe_tx_rcvr_det_gt; + wire [1:0] pipe_tx0_char_is_k_gt; + wire pipe_tx0_compliance_gt; + wire [15:0] pipe_tx0_data_gt; + wire pipe_tx0_elec_idle_gt; + wire [1:0] pipe_tx0_powerdown_gt; + wire [1:0] pipe_tx1_char_is_k_gt; + wire pipe_tx1_compliance_gt; + wire [15:0] pipe_tx1_data_gt; + wire pipe_tx1_elec_idle_gt; + wire [1:0] pipe_tx1_powerdown_gt; + wire [1:0] pipe_tx2_char_is_k_gt; + wire pipe_tx2_compliance_gt; + wire [15:0] pipe_tx2_data_gt; + wire pipe_tx2_elec_idle_gt; + wire [1:0] pipe_tx2_powerdown_gt; + wire [1:0] pipe_tx3_char_is_k_gt; + wire pipe_tx3_compliance_gt; + wire [15:0] pipe_tx3_data_gt; + wire pipe_tx3_elec_idle_gt; + wire [1:0] pipe_tx3_powerdown_gt; + wire [1:0] pipe_tx4_char_is_k_gt; + wire pipe_tx4_compliance_gt; + wire [15:0] pipe_tx4_data_gt; + wire pipe_tx4_elec_idle_gt; + wire [1:0] pipe_tx4_powerdown_gt; + wire [1:0] pipe_tx5_char_is_k_gt; + wire pipe_tx5_compliance_gt; + wire [15:0] pipe_tx5_data_gt; + wire pipe_tx5_elec_idle_gt; + wire [1:0] pipe_tx5_powerdown_gt; + wire [1:0] pipe_tx6_char_is_k_gt; + wire pipe_tx6_compliance_gt; + wire [15:0] pipe_tx6_data_gt; + wire pipe_tx6_elec_idle_gt; + wire [1:0] pipe_tx6_powerdown_gt; + wire [1:0] pipe_tx7_char_is_k_gt; + wire pipe_tx7_compliance_gt; + wire [15:0] pipe_tx7_data_gt; + wire pipe_tx7_elec_idle_gt; + wire [1:0] pipe_tx7_powerdown_gt; + + wire pipe_rx0_chanisaligned_gt; + wire [1:0] pipe_rx0_char_is_k_gt; + wire [15:0] pipe_rx0_data_gt; + wire pipe_rx0_elec_idle_gt; + wire pipe_rx0_phy_status_gt; + wire [2:0] pipe_rx0_status_gt; + wire pipe_rx0_valid_gt; + wire pipe_rx1_chanisaligned_gt; + wire [1:0] pipe_rx1_char_is_k_gt; + wire [15:0] pipe_rx1_data_gt; + wire pipe_rx1_elec_idle_gt; + wire pipe_rx1_phy_status_gt; + wire [2:0] pipe_rx1_status_gt; + wire pipe_rx1_valid_gt; + wire pipe_rx2_chanisaligned_gt; + wire [1:0] pipe_rx2_char_is_k_gt; + wire [15:0] pipe_rx2_data_gt; + wire pipe_rx2_elec_idle_gt; + wire pipe_rx2_phy_status_gt; + wire [2:0] pipe_rx2_status_gt; + wire pipe_rx2_valid_gt; + wire pipe_rx3_chanisaligned_gt; + wire [1:0] pipe_rx3_char_is_k_gt; + wire [15:0] pipe_rx3_data_gt; + wire pipe_rx3_elec_idle_gt; + wire pipe_rx3_phy_status_gt; + wire [2:0] pipe_rx3_status_gt; + wire pipe_rx3_valid_gt; + wire pipe_rx4_chanisaligned_gt; + wire [1:0] pipe_rx4_char_is_k_gt; + wire [15:0] pipe_rx4_data_gt; + wire pipe_rx4_elec_idle_gt; + wire pipe_rx4_phy_status_gt; + wire [2:0] pipe_rx4_status_gt; + wire pipe_rx4_valid_gt; + wire pipe_rx5_chanisaligned_gt; + wire [1:0] pipe_rx5_char_is_k_gt; + wire [15:0] pipe_rx5_data_gt; + wire pipe_rx5_elec_idle_gt; + wire pipe_rx5_phy_status_gt; + wire [2:0] pipe_rx5_status_gt; + wire pipe_rx5_valid_gt; + wire pipe_rx6_chanisaligned_gt; + wire [1:0] pipe_rx6_char_is_k_gt; + wire [15:0] pipe_rx6_data_gt; + wire pipe_rx6_elec_idle_gt; + wire pipe_rx6_phy_status_gt; + wire [2:0] pipe_rx6_status_gt; + wire pipe_rx6_valid_gt; + wire pipe_rx7_chanisaligned_gt; + wire [1:0] pipe_rx7_char_is_k_gt; + wire [15:0] pipe_rx7_data_gt; + wire pipe_rx7_elec_idle_gt; + wire pipe_rx7_phy_status_gt; + wire [2:0] pipe_rx7_status_gt; + wire pipe_rx7_valid_gt; + wire [3:0] cfg_link_status_negotiated_width; + wire [1:0] cfg_link_status_current_speed; + + + (* ASYNC_REG = "TRUE" *) reg user_lnk_up_mux; + (* KEEP = "TRUE", ASYNC_REG = "TRUE" *) reg user_lnk_up_int; + reg user_reset_int; + + reg bridge_reset_int; + reg bridge_reset_d; + wire user_rst_n; + reg pl_received_hot_rst_q; + wire pl_received_hot_rst_wire; + wire pl_received_hot_rst_sync; + reg pl_phy_lnk_up_q; + wire pl_phy_lnk_up_wire; + wire pl_phy_lnk_up_sync; + wire sys_or_hot_rst; + wire trn_lnk_up; + + wire [5:0] pl_ltssm_state_int; + wire user_app_rdy_req; + + localparam TCQ = 100; + localparam ENABLE_FAST_SIM_TRAINING = "TRUE"; + + assign user_lnk_up = user_lnk_up_int; + + + assign user_app_rdy = 1'b1; + assign pl_ltssm_state = pl_ltssm_state_int; + assign pl_phy_lnk_up = pl_phy_lnk_up_q; + assign pl_received_hot_rst = pl_received_hot_rst_q; + + // CDC on PCIe block outputs The source clock of these pins is in + // the pipe_clk domain. + xpm_cdc_single #( + .DEST_SYNC_FF (2), + .SRC_INPUT_REG (0) + ) phy_lnk_up_cdc ( + .src_clk (pipe_clk), + .src_in (pl_phy_lnk_up_wire), + .dest_clk (user_clk_out), + .dest_out (pl_phy_lnk_up_sync) + ); + xpm_cdc_single #( + .DEST_SYNC_FF (2), + .SRC_INPUT_REG (0) + ) pl_received_hot_rst_cdc ( + .src_clk (pipe_clk), + .src_in (pl_received_hot_rst_wire), + .dest_clk (user_clk_out), + .dest_out (pl_received_hot_rst_sync) + ); + + // Register block outputs pl_received_hot_rst and phy_lnk_up to ease timing on block output + assign sys_or_hot_rst = !sys_rst_n || pl_received_hot_rst_q; + always @(posedge user_clk_out) + begin + if (!sys_rst_n) begin + pl_received_hot_rst_q <= #TCQ 1'b0; + pl_phy_lnk_up_q <= #TCQ 1'b0; + end else begin + pl_received_hot_rst_q <= #TCQ pl_received_hot_rst_sync; + pl_phy_lnk_up_q <= #TCQ pl_phy_lnk_up_sync; + end + end + // Generate user_lnk_up_mux + always @(posedge user_clk_out) + begin + if (!sys_rst_n) begin + user_lnk_up_mux <= #TCQ 1'b0; + end else begin + user_lnk_up_mux <= #TCQ user_lnk_up_int; + end + end + + always @(posedge user_clk_out) + begin + if (!sys_rst_n) begin + user_lnk_up_int <= #TCQ 1'b0; + end else begin + user_lnk_up_int <= #TCQ trn_lnk_up; + end + end + + + // Generate user_reset_out // + // Once user reset output of PCIE and Phy Layer is active, de-assert reset // + // Only assert reset if system reset or hot reset is seen. Keep AXI backend/user application alive otherwise // + //------------------------------------------------------------------------------------------------------------------// + + always @(posedge user_clk_out or posedge sys_or_hot_rst) + begin + if (sys_or_hot_rst) begin + user_reset_int <= #TCQ 1'b1; + end else if (user_rst_n && pl_phy_lnk_up_q) begin + user_reset_int <= #TCQ 1'b0; + end + end + + // Invert active low reset to active high AXI reset + always @(posedge user_clk_out or posedge sys_or_hot_rst) + begin + if (sys_or_hot_rst) begin + user_reset_out <= #TCQ 1'b1; + end else begin + user_reset_out <= #TCQ user_reset_int; + end + end + always @(posedge user_clk_out or posedge sys_or_hot_rst) + begin + if (sys_or_hot_rst) begin + bridge_reset_int <= #TCQ 1'b1; + end else if (user_rst_n && pl_phy_lnk_up_q) begin + bridge_reset_int <= #TCQ 1'b0; + end + end + + // Invert active low reset to active high AXI reset + always @(posedge user_clk_out or posedge sys_or_hot_rst) + begin + if (sys_or_hot_rst) begin + bridge_reset_d <= #TCQ 1'b1; + end else begin + bridge_reset_d <= #TCQ bridge_reset_int; + end + end + + //------------------------------------------------------------------------------------------------------------------// + // **** PCI Express Core Wrapper **** // + // The PCI Express Core Wrapper includes the following: // + // 1) AXI Streaming Bridge // + // 2) PCIE 2_1 Hard Block // + // 3) PCIE PIPE Interface Pipeline // + //------------------------------------------------------------------------------------------------------------------// +pcie_7x_0_pcie_top # ( + .PIPE_PIPELINE_STAGES ( PIPE_PIPELINE_STAGES ), + .AER_BASE_PTR ( AER_BASE_PTR ), + .AER_CAP_ECRC_CHECK_CAPABLE ( AER_CAP_ECRC_CHECK_CAPABLE ), + .AER_CAP_ECRC_GEN_CAPABLE ( AER_CAP_ECRC_GEN_CAPABLE ), + .AER_CAP_ID ( AER_CAP_ID ), + .AER_CAP_MULTIHEADER ( AER_CAP_MULTIHEADER ), + .AER_CAP_NEXTPTR ( AER_CAP_NEXTPTR ), + .AER_CAP_ON ( AER_CAP_ON ), + .AER_CAP_OPTIONAL_ERR_SUPPORT ( AER_CAP_OPTIONAL_ERR_SUPPORT ), + .AER_CAP_PERMIT_ROOTERR_UPDATE ( AER_CAP_PERMIT_ROOTERR_UPDATE ), + .AER_CAP_VERSION ( AER_CAP_VERSION ), + .ALLOW_X8_GEN2 ( ALLOW_X8_GEN2 ), + .BAR0 ( BAR0 ), + .BAR1 ( BAR1 ), + .BAR2 ( BAR2 ), + .BAR3 ( BAR3 ), + .BAR4 ( BAR4 ), + .BAR5 ( BAR5 ), + .C_DATA_WIDTH ( C_DATA_WIDTH ), + .CAPABILITIES_PTR ( CAPABILITIES_PTR ), + .CARDBUS_CIS_POINTER ( CARDBUS_CIS_POINTER ), + .CFG_ECRC_ERR_CPLSTAT ( CFG_ECRC_ERR_CPLSTAT ), + .CLASS_CODE ( CLASS_CODE ), + .CMD_INTX_IMPLEMENTED ( CMD_INTX_IMPLEMENTED ), + .CPL_TIMEOUT_DISABLE_SUPPORTED ( CPL_TIMEOUT_DISABLE_SUPPORTED ), + .CPL_TIMEOUT_RANGES_SUPPORTED ( CPL_TIMEOUT_RANGES_SUPPORTED ), + .CRM_MODULE_RSTS ( CRM_MODULE_RSTS ), + .DEV_CAP_ENABLE_SLOT_PWR_LIMIT_SCALE ( DEV_CAP_ENABLE_SLOT_PWR_LIMIT_SCALE ), + .DEV_CAP_ENABLE_SLOT_PWR_LIMIT_VALUE ( DEV_CAP_ENABLE_SLOT_PWR_LIMIT_VALUE ), + .DEV_CAP_ENDPOINT_L0S_LATENCY ( DEV_CAP_ENDPOINT_L0S_LATENCY ), + .DEV_CAP_ENDPOINT_L1_LATENCY ( DEV_CAP_ENDPOINT_L1_LATENCY ), + .DEV_CAP_EXT_TAG_SUPPORTED ( DEV_CAP_EXT_TAG_SUPPORTED ), + .DEV_CAP_FUNCTION_LEVEL_RESET_CAPABLE ( DEV_CAP_FUNCTION_LEVEL_RESET_CAPABLE ), + .DEV_CAP_MAX_PAYLOAD_SUPPORTED ( DEV_CAP_MAX_PAYLOAD_SUPPORTED ), + .DEV_CAP_PHANTOM_FUNCTIONS_SUPPORT ( DEV_CAP_PHANTOM_FUNCTIONS_SUPPORT ), + .DEV_CAP_ROLE_BASED_ERROR ( DEV_CAP_ROLE_BASED_ERROR ), + .DEV_CAP_RSVD_14_12 ( DEV_CAP_RSVD_14_12 ), + .DEV_CAP_RSVD_17_16 ( DEV_CAP_RSVD_17_16 ), + .DEV_CAP_RSVD_31_29 ( DEV_CAP_RSVD_31_29 ), + .DEV_CONTROL_AUX_POWER_SUPPORTED ( DEV_CONTROL_AUX_POWER_SUPPORTED ), + .DEV_CONTROL_EXT_TAG_DEFAULT ( DEV_CONTROL_EXT_TAG_DEFAULT ), + .DISABLE_ASPM_L1_TIMER ( DISABLE_ASPM_L1_TIMER ), + .DISABLE_BAR_FILTERING ( DISABLE_BAR_FILTERING ), + .DISABLE_ID_CHECK ( DISABLE_ID_CHECK ), + .DISABLE_LANE_REVERSAL ( DISABLE_LANE_REVERSAL ), + .DISABLE_RX_POISONED_RESP ( DISABLE_RX_POISONED_RESP ), + .DISABLE_RX_TC_FILTER ( DISABLE_RX_TC_FILTER ), + .DISABLE_SCRAMBLING ( DISABLE_SCRAMBLING ), + .DNSTREAM_LINK_NUM ( DNSTREAM_LINK_NUM ), + .DSN_BASE_PTR ( DSN_BASE_PTR ), + .DSN_CAP_ID ( DSN_CAP_ID ), + .DSN_CAP_NEXTPTR ( DSN_CAP_NEXTPTR ), + .DSN_CAP_ON ( DSN_CAP_ON ), + .DSN_CAP_VERSION ( DSN_CAP_VERSION ), + .DEV_CAP2_ARI_FORWARDING_SUPPORTED ( DEV_CAP2_ARI_FORWARDING_SUPPORTED ), + .DEV_CAP2_ATOMICOP32_COMPLETER_SUPPORTED ( DEV_CAP2_ATOMICOP32_COMPLETER_SUPPORTED ), + .DEV_CAP2_ATOMICOP64_COMPLETER_SUPPORTED ( DEV_CAP2_ATOMICOP64_COMPLETER_SUPPORTED ), + .DEV_CAP2_ATOMICOP_ROUTING_SUPPORTED ( DEV_CAP2_ATOMICOP_ROUTING_SUPPORTED ), + .DEV_CAP2_CAS128_COMPLETER_SUPPORTED ( DEV_CAP2_CAS128_COMPLETER_SUPPORTED ), + .DEV_CAP2_ENDEND_TLP_PREFIX_SUPPORTED ( DEV_CAP2_ENDEND_TLP_PREFIX_SUPPORTED ), + .DEV_CAP2_EXTENDED_FMT_FIELD_SUPPORTED ( DEV_CAP2_EXTENDED_FMT_FIELD_SUPPORTED ), + .DEV_CAP2_LTR_MECHANISM_SUPPORTED ( DEV_CAP2_LTR_MECHANISM_SUPPORTED ), + .DEV_CAP2_MAX_ENDEND_TLP_PREFIXES ( DEV_CAP2_MAX_ENDEND_TLP_PREFIXES ), + .DEV_CAP2_NO_RO_ENABLED_PRPR_PASSING ( DEV_CAP2_NO_RO_ENABLED_PRPR_PASSING ), + .DEV_CAP2_TPH_COMPLETER_SUPPORTED ( DEV_CAP2_TPH_COMPLETER_SUPPORTED ), + .DISABLE_ERR_MSG ( DISABLE_ERR_MSG ), + .DISABLE_LOCKED_FILTER ( DISABLE_LOCKED_FILTER ), + .DISABLE_PPM_FILTER ( DISABLE_PPM_FILTER ), + .ENDEND_TLP_PREFIX_FORWARDING_SUPPORTED ( ENDEND_TLP_PREFIX_FORWARDING_SUPPORTED ), + .ENABLE_MSG_ROUTE ( ENABLE_MSG_ROUTE ), + .ENABLE_RX_TD_ECRC_TRIM ( ENABLE_RX_TD_ECRC_TRIM ), + .ENTER_RVRY_EI_L0 ( ENTER_RVRY_EI_L0 ), + .EXIT_LOOPBACK_ON_EI ( EXIT_LOOPBACK_ON_EI ), + .EXPANSION_ROM ( EXPANSION_ROM ), + .EXT_CFG_CAP_PTR ( EXT_CFG_CAP_PTR ), + .EXT_CFG_XP_CAP_PTR ( EXT_CFG_XP_CAP_PTR ), + .HEADER_TYPE ( HEADER_TYPE ), + .INFER_EI ( INFER_EI ), + .INTERRUPT_PIN ( INTERRUPT_PIN ), + .INTERRUPT_STAT_AUTO ( INTERRUPT_STAT_AUTO ), + .IS_SWITCH ( IS_SWITCH ), + .LAST_CONFIG_DWORD ( LAST_CONFIG_DWORD ), + .LINK_CAP_ASPM_OPTIONALITY ( LINK_CAP_ASPM_OPTIONALITY ), + .LINK_CAP_ASPM_SUPPORT ( LINK_CAP_ASPM_SUPPORT ), + .LINK_CAP_CLOCK_POWER_MANAGEMENT ( LINK_CAP_CLOCK_POWER_MANAGEMENT ), + .LINK_CAP_DLL_LINK_ACTIVE_REPORTING_CAP ( LINK_CAP_DLL_LINK_ACTIVE_REPORTING_CAP ), + .LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN1 ( LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN1 ), + .LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN2 ( LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN2 ), + .LINK_CAP_L0S_EXIT_LATENCY_GEN1 ( LINK_CAP_L0S_EXIT_LATENCY_GEN1 ), + .LINK_CAP_L0S_EXIT_LATENCY_GEN2 ( LINK_CAP_L0S_EXIT_LATENCY_GEN2 ), + .LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN1 ( LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN1 ), + .LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN2 ( LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN2 ), + .LINK_CAP_L1_EXIT_LATENCY_GEN1 ( LINK_CAP_L1_EXIT_LATENCY_GEN1 ), + .LINK_CAP_L1_EXIT_LATENCY_GEN2 ( LINK_CAP_L1_EXIT_LATENCY_GEN2 ), + .LINK_CAP_LINK_BANDWIDTH_NOTIFICATION_CAP ( LINK_CAP_LINK_BANDWIDTH_NOTIFICATION_CAP ), + .LINK_CAP_MAX_LINK_SPEED ( LINK_CAP_MAX_LINK_SPEED ), + .LINK_CAP_MAX_LINK_WIDTH ( LINK_CAP_MAX_LINK_WIDTH ), + .LINK_CAP_RSVD_23 ( LINK_CAP_RSVD_23 ), + .LINK_CAP_SURPRISE_DOWN_ERROR_CAPABLE ( LINK_CAP_SURPRISE_DOWN_ERROR_CAPABLE ), + .LINK_CONTROL_RCB ( LINK_CONTROL_RCB ), + .LINK_CTRL2_DEEMPHASIS ( LINK_CTRL2_DEEMPHASIS ), + .LINK_CTRL2_HW_AUTONOMOUS_SPEED_DISABLE ( LINK_CTRL2_HW_AUTONOMOUS_SPEED_DISABLE ), + .LINK_CTRL2_TARGET_LINK_SPEED ( LINK_CTRL2_TARGET_LINK_SPEED ), + .LINK_STATUS_SLOT_CLOCK_CONFIG ( LINK_STATUS_SLOT_CLOCK_CONFIG ), + .LL_ACK_TIMEOUT ( LL_ACK_TIMEOUT ), + .LL_ACK_TIMEOUT_EN ( LL_ACK_TIMEOUT_EN ), + .LL_ACK_TIMEOUT_FUNC ( LL_ACK_TIMEOUT_FUNC ), + .LL_REPLAY_TIMEOUT ( LL_REPLAY_TIMEOUT ), + .LL_REPLAY_TIMEOUT_EN ( LL_REPLAY_TIMEOUT_EN ), + .LL_REPLAY_TIMEOUT_FUNC ( LL_REPLAY_TIMEOUT_FUNC ), + .LTSSM_MAX_LINK_WIDTH ( LTSSM_MAX_LINK_WIDTH ), + .MPS_FORCE ( MPS_FORCE), + .MSI_BASE_PTR ( MSI_BASE_PTR ), + .MSI_CAP_ID ( MSI_CAP_ID ), + .MSI_CAP_MULTIMSGCAP ( MSI_CAP_MULTIMSGCAP ), + .MSI_CAP_MULTIMSG_EXTENSION ( MSI_CAP_MULTIMSG_EXTENSION ), + .MSI_CAP_NEXTPTR ( MSI_CAP_NEXTPTR ), + .MSI_CAP_ON ( MSI_CAP_ON ), + .MSI_CAP_PER_VECTOR_MASKING_CAPABLE ( MSI_CAP_PER_VECTOR_MASKING_CAPABLE ), + .MSI_CAP_64_BIT_ADDR_CAPABLE ( MSI_CAP_64_BIT_ADDR_CAPABLE ), + .MSIX_BASE_PTR ( MSIX_BASE_PTR ), + .MSIX_CAP_ID ( MSIX_CAP_ID ), + .MSIX_CAP_NEXTPTR ( MSIX_CAP_NEXTPTR ), + .MSIX_CAP_ON ( MSIX_CAP_ON ), + .MSIX_CAP_PBA_BIR ( MSIX_CAP_PBA_BIR ), + .MSIX_CAP_PBA_OFFSET ( {3'b000,MSIX_CAP_PBA_OFFSET[28:3]} ), + .MSIX_CAP_TABLE_BIR ( MSIX_CAP_TABLE_BIR ), + .MSIX_CAP_TABLE_OFFSET ( {3'b000,MSIX_CAP_TABLE_OFFSET[28:3]} ), + .MSIX_CAP_TABLE_SIZE ( MSIX_CAP_TABLE_SIZE ), + .N_FTS_COMCLK_GEN1 ( N_FTS_COMCLK_GEN1 ), + .N_FTS_COMCLK_GEN2 ( N_FTS_COMCLK_GEN2 ), + .N_FTS_GEN1 ( N_FTS_GEN1 ), + .N_FTS_GEN2 ( N_FTS_GEN2 ), + .PCIE_BASE_PTR ( PCIE_BASE_PTR ), + .PCIE_CAP_CAPABILITY_ID ( PCIE_CAP_CAPABILITY_ID ), + .PCIE_CAP_CAPABILITY_VERSION ( PCIE_CAP_CAPABILITY_VERSION ), + .PCIE_CAP_DEVICE_PORT_TYPE ( PCIE_CAP_DEVICE_PORT_TYPE ), + .PCIE_CAP_NEXTPTR ( PCIE_CAP_NEXTPTR ), + .PCIE_CAP_ON ( PCIE_CAP_ON ), + .PCIE_CAP_RSVD_15_14 ( PCIE_CAP_RSVD_15_14 ), + .PCIE_CAP_SLOT_IMPLEMENTED ( PCIE_CAP_SLOT_IMPLEMENTED ), + .PCIE_REVISION ( PCIE_REVISION ), + .PL_AUTO_CONFIG ( PL_AUTO_CONFIG ), + + // synthesis translate_off + .PL_FAST_TRAIN ( ENABLE_FAST_SIM_TRAINING ), + // synthesis translate_on + + .PM_ASPML0S_TIMEOUT ( PM_ASPML0S_TIMEOUT ), + .PM_ASPML0S_TIMEOUT_EN ( PM_ASPML0S_TIMEOUT_EN ), + .PM_ASPML0S_TIMEOUT_FUNC ( PM_ASPML0S_TIMEOUT_FUNC ), + .PM_ASPM_FASTEXIT ( PM_ASPM_FASTEXIT ), + .PM_BASE_PTR ( PM_BASE_PTR ), + .PM_CAP_AUXCURRENT ( PM_CAP_AUXCURRENT ), + .PM_CAP_D1SUPPORT ( PM_CAP_D1SUPPORT ), + .PM_CAP_D2SUPPORT ( PM_CAP_D2SUPPORT ), + .PM_CAP_DSI ( PM_CAP_DSI ), + .PM_CAP_ID ( PM_CAP_ID ), + .PM_CAP_NEXTPTR ( PM_CAP_NEXTPTR ), + .PM_CAP_ON ( PM_CAP_ON ), + .PM_CAP_PME_CLOCK ( PM_CAP_PME_CLOCK ), + .PM_CAP_PMESUPPORT ( PM_CAP_PMESUPPORT ), + .PM_CAP_RSVD_04 ( PM_CAP_RSVD_04 ), + .PM_CAP_VERSION ( PM_CAP_VERSION ), + .PM_CSR_B2B3 ( PM_CSR_B2B3 ), + .PM_CSR_BPCCEN ( PM_CSR_BPCCEN ), + .PM_CSR_NOSOFTRST ( PM_CSR_NOSOFTRST ), + .PM_DATA0 ( PM_DATA0 ), + .PM_DATA1 ( PM_DATA1 ), + .PM_DATA2 ( PM_DATA2 ), + .PM_DATA3 ( PM_DATA3 ), + .PM_DATA4 ( PM_DATA4 ), + .PM_DATA5 ( PM_DATA5 ), + .PM_DATA6 ( PM_DATA6 ), + .PM_DATA7 ( PM_DATA7 ), + .PM_DATA_SCALE0 ( PM_DATA_SCALE0 ), + .PM_DATA_SCALE1 ( PM_DATA_SCALE1 ), + .PM_DATA_SCALE2 ( PM_DATA_SCALE2 ), + .PM_DATA_SCALE3 ( PM_DATA_SCALE3 ), + .PM_DATA_SCALE4 ( PM_DATA_SCALE4 ), + .PM_DATA_SCALE5 ( PM_DATA_SCALE5 ), + .PM_DATA_SCALE6 ( PM_DATA_SCALE6 ), + .PM_DATA_SCALE7 ( PM_DATA_SCALE7 ), + .PM_MF ( PM_MF ), + .RBAR_BASE_PTR ( RBAR_BASE_PTR ), + .RBAR_CAP_CONTROL_ENCODEDBAR0 ( RBAR_CAP_CONTROL_ENCODEDBAR0 ), + .RBAR_CAP_CONTROL_ENCODEDBAR1 ( RBAR_CAP_CONTROL_ENCODEDBAR1 ), + .RBAR_CAP_CONTROL_ENCODEDBAR2 ( RBAR_CAP_CONTROL_ENCODEDBAR2 ), + .RBAR_CAP_CONTROL_ENCODEDBAR3 ( RBAR_CAP_CONTROL_ENCODEDBAR3 ), + .RBAR_CAP_CONTROL_ENCODEDBAR4 ( RBAR_CAP_CONTROL_ENCODEDBAR4 ), + .RBAR_CAP_CONTROL_ENCODEDBAR5 ( RBAR_CAP_CONTROL_ENCODEDBAR5 ), + .RBAR_CAP_ID ( RBAR_CAP_ID), + .RBAR_CAP_INDEX0 ( RBAR_CAP_INDEX0 ), + .RBAR_CAP_INDEX1 ( RBAR_CAP_INDEX1 ), + .RBAR_CAP_INDEX2 ( RBAR_CAP_INDEX2 ), + .RBAR_CAP_INDEX3 ( RBAR_CAP_INDEX3 ), + .RBAR_CAP_INDEX4 ( RBAR_CAP_INDEX4 ), + .RBAR_CAP_INDEX5 ( RBAR_CAP_INDEX5 ), + .RBAR_CAP_NEXTPTR ( RBAR_CAP_NEXTPTR ), + .RBAR_CAP_ON ( RBAR_CAP_ON ), + .RBAR_CAP_SUP0 ( RBAR_CAP_SUP0 ), + .RBAR_CAP_SUP1 ( RBAR_CAP_SUP1 ), + .RBAR_CAP_SUP2 ( RBAR_CAP_SUP2 ), + .RBAR_CAP_SUP3 ( RBAR_CAP_SUP3 ), + .RBAR_CAP_SUP4 ( RBAR_CAP_SUP4 ), + .RBAR_CAP_SUP5 ( RBAR_CAP_SUP5 ), + .RBAR_CAP_VERSION ( RBAR_CAP_VERSION ), + .RBAR_NUM ( RBAR_NUM ), + .RECRC_CHK ( RECRC_CHK ), + .RECRC_CHK_TRIM ( RECRC_CHK_TRIM ), + .ROOT_CAP_CRS_SW_VISIBILITY ( ROOT_CAP_CRS_SW_VISIBILITY ), + .RP_AUTO_SPD ( RP_AUTO_SPD ), + .RP_AUTO_SPD_LOOPCNT ( RP_AUTO_SPD_LOOPCNT ), + .SELECT_DLL_IF ( SELECT_DLL_IF ), + .SLOT_CAP_ATT_BUTTON_PRESENT ( SLOT_CAP_ATT_BUTTON_PRESENT ), + .SLOT_CAP_ATT_INDICATOR_PRESENT ( SLOT_CAP_ATT_INDICATOR_PRESENT ), + .SLOT_CAP_ELEC_INTERLOCK_PRESENT ( SLOT_CAP_ELEC_INTERLOCK_PRESENT ), + .SLOT_CAP_HOTPLUG_CAPABLE ( SLOT_CAP_HOTPLUG_CAPABLE ), + .SLOT_CAP_HOTPLUG_SURPRISE ( SLOT_CAP_HOTPLUG_SURPRISE ), + .SLOT_CAP_MRL_SENSOR_PRESENT ( SLOT_CAP_MRL_SENSOR_PRESENT ), + .SLOT_CAP_NO_CMD_COMPLETED_SUPPORT ( SLOT_CAP_NO_CMD_COMPLETED_SUPPORT ), + .SLOT_CAP_PHYSICAL_SLOT_NUM ( SLOT_CAP_PHYSICAL_SLOT_NUM ), + .SLOT_CAP_POWER_CONTROLLER_PRESENT ( SLOT_CAP_POWER_CONTROLLER_PRESENT ), + .SLOT_CAP_POWER_INDICATOR_PRESENT ( SLOT_CAP_POWER_INDICATOR_PRESENT ), + .SLOT_CAP_SLOT_POWER_LIMIT_SCALE ( SLOT_CAP_SLOT_POWER_LIMIT_SCALE ), + .SLOT_CAP_SLOT_POWER_LIMIT_VALUE ( SLOT_CAP_SLOT_POWER_LIMIT_VALUE ), + .SPARE_BIT0 ( SPARE_BIT0 ), + .SPARE_BIT1 ( SPARE_BIT1 ), + .SPARE_BIT2 ( SPARE_BIT2 ), + .SPARE_BIT3 ( SPARE_BIT3 ), + .SPARE_BIT4 ( SPARE_BIT4 ), + .SPARE_BIT5 ( SPARE_BIT5 ), + .SPARE_BIT6 ( SPARE_BIT6 ), + .SPARE_BIT7 ( SPARE_BIT7 ), + .SPARE_BIT8 ( SPARE_BIT8 ), + .SPARE_BYTE0 ( SPARE_BYTE0 ), + .SPARE_BYTE1 ( SPARE_BYTE1 ), + .SPARE_BYTE2 ( SPARE_BYTE2 ), + .SPARE_BYTE3 ( SPARE_BYTE3 ), + .SPARE_WORD0 ( SPARE_WORD0 ), + .SPARE_WORD1 ( SPARE_WORD1 ), + .SPARE_WORD2 ( SPARE_WORD2 ), + .SPARE_WORD3 ( SPARE_WORD3 ), + .SSL_MESSAGE_AUTO ( SSL_MESSAGE_AUTO ), + .TECRC_EP_INV ( TECRC_EP_INV ), + .TL_RBYPASS ( TL_RBYPASS ), + .TL_RX_RAM_RADDR_LATENCY ( TL_RX_RAM_RADDR_LATENCY ), + .TL_RX_RAM_RDATA_LATENCY ( TL_RX_RAM_RDATA_LATENCY ), + .TL_RX_RAM_WRITE_LATENCY ( TL_RX_RAM_WRITE_LATENCY ), + .TL_TFC_DISABLE ( TL_TFC_DISABLE ), + .TL_TX_CHECKS_DISABLE ( TL_TX_CHECKS_DISABLE ), + .TL_TX_RAM_RADDR_LATENCY ( TL_TX_RAM_RADDR_LATENCY ), + .TL_TX_RAM_RDATA_LATENCY ( TL_TX_RAM_RDATA_LATENCY ), + .TL_TX_RAM_WRITE_LATENCY ( TL_TX_RAM_WRITE_LATENCY ), + .TRN_DW ( TRN_DW ), + .TRN_NP_FC ( TRN_NP_FC ), + .UPCONFIG_CAPABLE ( UPCONFIG_CAPABLE ), + .UPSTREAM_FACING ( UPSTREAM_FACING ), + .UR_ATOMIC ( UR_ATOMIC ), + .UR_CFG1 ( UR_CFG1 ), + .UR_INV_REQ ( UR_INV_REQ ), + .UR_PRS_RESPONSE ( UR_PRS_RESPONSE ), + .USER_CLK2_DIV2 ( USER_CLK2_DIV2 ), + .USER_CLK_FREQ ( USER_CLK_FREQ ), + .USE_RID_PINS ( USE_RID_PINS ), + .VC0_CPL_INFINITE ( VC0_CPL_INFINITE ), + .VC0_RX_RAM_LIMIT ( VC0_RX_RAM_LIMIT ), + .VC0_TOTAL_CREDITS_CD ( VC0_TOTAL_CREDITS_CD ), + .VC0_TOTAL_CREDITS_CH ( VC0_TOTAL_CREDITS_CH ), + .VC0_TOTAL_CREDITS_NPD ( VC0_TOTAL_CREDITS_NPD), + .VC0_TOTAL_CREDITS_NPH ( VC0_TOTAL_CREDITS_NPH ), + .VC0_TOTAL_CREDITS_PD ( VC0_TOTAL_CREDITS_PD ), + .VC0_TOTAL_CREDITS_PH ( VC0_TOTAL_CREDITS_PH ), + .VC0_TX_LASTPACKET ( VC0_TX_LASTPACKET ), + .VC_BASE_PTR ( VC_BASE_PTR ), + .VC_CAP_ID ( VC_CAP_ID ), + .VC_CAP_NEXTPTR ( VC_CAP_NEXTPTR ), + .VC_CAP_ON ( VC_CAP_ON ), + .VC_CAP_REJECT_SNOOP_TRANSACTIONS ( VC_CAP_REJECT_SNOOP_TRANSACTIONS ), + .VC_CAP_VERSION ( VC_CAP_VERSION ), + .VSEC_BASE_PTR ( VSEC_BASE_PTR ), + .VSEC_CAP_HDR_ID ( VSEC_CAP_HDR_ID ), + .VSEC_CAP_HDR_LENGTH ( VSEC_CAP_HDR_LENGTH ), + .VSEC_CAP_HDR_REVISION ( VSEC_CAP_HDR_REVISION ), + .VSEC_CAP_ID ( VSEC_CAP_ID ), + .VSEC_CAP_IS_LINK_VISIBLE ( VSEC_CAP_IS_LINK_VISIBLE ), + .VSEC_CAP_NEXTPTR ( VSEC_CAP_NEXTPTR ), + .VSEC_CAP_ON ( VSEC_CAP_ON ), + .VSEC_CAP_VERSION ( VSEC_CAP_VERSION ) + // I/O + ) pcie_top_i ( + + // AXI Interface + .user_clk_out ( user_clk_out ), + .user_reset ( bridge_reset_d ), + .user_lnk_up ( user_lnk_up ), + + .user_rst_n ( user_rst_n ), + .trn_lnk_up ( trn_lnk_up ), + + .tx_buf_av ( tx_buf_av ), + .tx_err_drop ( tx_err_drop ), + .tx_cfg_req ( tx_cfg_req ), + .s_axis_tx_tready ( s_axis_tx_tready ), + .s_axis_tx_tdata ( s_axis_tx_tdata ), + .s_axis_tx_tkeep ( s_axis_tx_tkeep ), + .s_axis_tx_tuser ( s_axis_tx_tuser ), + .s_axis_tx_tlast ( s_axis_tx_tlast ), + .s_axis_tx_tvalid ( s_axis_tx_tvalid ), + .tx_cfg_gnt ( tx_cfg_gnt ), + + .m_axis_rx_tdata ( m_axis_rx_tdata ), + .m_axis_rx_tkeep ( m_axis_rx_tkeep ), + .m_axis_rx_tlast ( m_axis_rx_tlast ), + .m_axis_rx_tvalid ( m_axis_rx_tvalid ), + .m_axis_rx_tready ( m_axis_rx_tready ), + .m_axis_rx_tuser ( m_axis_rx_tuser ), + .rx_np_ok ( rx_np_ok ), + .rx_np_req ( rx_np_req ), + + .fc_cpld ( fc_cpld ), + .fc_cplh ( fc_cplh ), + .fc_npd ( fc_npd ), + .fc_nph ( fc_nph ), + .fc_pd ( fc_pd ), + .fc_ph ( fc_ph ), + .fc_sel ( fc_sel ), + .cfg_turnoff_ok ( cfg_turnoff_ok ), + .cfg_received_func_lvl_rst ( cfg_received_func_lvl_rst ), + + .cm_rst_n ( 1'b1 ), + .func_lvl_rst_n ( 1'b1 ), + .lnk_clk_en ( ), + .cfg_dev_id ( cfg_dev_id ), + .cfg_vend_id ( cfg_vend_id ), + .cfg_rev_id ( cfg_rev_id ), + .cfg_subsys_id ( cfg_subsys_id ), + .cfg_subsys_vend_id ( cfg_subsys_vend_id ), + .cfg_pciecap_interrupt_msgnum ( cfg_pciecap_interrupt_msgnum ), + + .cfg_bridge_serr_en ( cfg_bridge_serr_en ), + + .cfg_command_bus_master_enable ( ), + .cfg_command_interrupt_disable ( ), + .cfg_command_io_enable ( ), + .cfg_command_mem_enable ( ), + .cfg_command_serr_en ( ), + .cfg_dev_control_aux_power_en ( ), + .cfg_dev_control_corr_err_reporting_en ( ), + .cfg_dev_control_enable_ro ( ), + .cfg_dev_control_ext_tag_en ( ), + .cfg_dev_control_fatal_err_reporting_en ( ), + .cfg_dev_control_max_payload ( ), + .cfg_dev_control_max_read_req ( ), + .cfg_dev_control_non_fatal_reporting_en ( ), + .cfg_dev_control_no_snoop_en ( ), + .cfg_dev_control_phantom_en ( ), + .cfg_dev_control_ur_err_reporting_en ( ), + .cfg_dev_control2_cpl_timeout_dis ( ), + .cfg_dev_control2_cpl_timeout_val ( ), + .cfg_dev_control2_ari_forward_en ( ), + .cfg_dev_control2_atomic_requester_en ( ), + .cfg_dev_control2_atomic_egress_block ( ), + .cfg_dev_control2_ido_req_en ( ), + .cfg_dev_control2_ido_cpl_en ( ), + .cfg_dev_control2_ltr_en ( ), + .cfg_dev_control2_tlp_prefix_block ( ), + .cfg_dev_status_corr_err_detected ( ), + .cfg_dev_status_fatal_err_detected ( ), + .cfg_dev_status_non_fatal_err_detected ( ), + .cfg_dev_status_ur_detected ( ), + + .cfg_mgmt_do ( cfg_mgmt_do ), + .cfg_err_aer_headerlog_set ( cfg_err_aer_headerlog_set ), + .cfg_err_aer_headerlog ( cfg_err_aer_headerlog ), + .cfg_err_cpl_rdy ( cfg_err_cpl_rdy ), + .cfg_interrupt_do ( cfg_interrupt_do ), + .cfg_interrupt_mmenable ( cfg_interrupt_mmenable ), + .cfg_interrupt_msienable ( cfg_interrupt_msienable ), + .cfg_interrupt_msixenable ( cfg_interrupt_msixenable ), + .cfg_interrupt_msixfm ( cfg_interrupt_msixfm ), + .cfg_interrupt_rdy ( cfg_interrupt_rdy ), + .cfg_link_control_rcb ( ), + .cfg_link_control_aspm_control ( ), + .cfg_link_control_auto_bandwidth_int_en ( ), + .cfg_link_control_bandwidth_int_en ( ), + .cfg_link_control_clock_pm_en ( ), + .cfg_link_control_common_clock ( ), + .cfg_link_control_extended_sync ( ), + .cfg_link_control_hw_auto_width_dis ( ), + .cfg_link_control_link_disable ( ), + .cfg_link_control_retrain_link ( ), + .cfg_link_status_auto_bandwidth_status ( ), + .cfg_link_status_bandwidth_status ( ), + .cfg_link_status_current_speed ( cfg_link_status_current_speed ), + .cfg_link_status_dll_active ( ), + .cfg_link_status_link_training ( ), + .cfg_link_status_negotiated_width ( cfg_link_status_negotiated_width ), + .cfg_msg_data ( cfg_msg_data ), + .cfg_msg_received ( cfg_msg_received ), + .cfg_msg_received_assert_int_a ( cfg_msg_received_assert_int_a ), + .cfg_msg_received_assert_int_b ( cfg_msg_received_assert_int_b ), + .cfg_msg_received_assert_int_c ( cfg_msg_received_assert_int_c ), + .cfg_msg_received_assert_int_d ( cfg_msg_received_assert_int_d ), + .cfg_msg_received_deassert_int_a ( cfg_msg_received_deassert_int_a ), + .cfg_msg_received_deassert_int_b ( cfg_msg_received_deassert_int_b ), + .cfg_msg_received_deassert_int_c ( cfg_msg_received_deassert_int_c ), + .cfg_msg_received_deassert_int_d ( cfg_msg_received_deassert_int_d ), + .cfg_msg_received_err_cor ( cfg_msg_received_err_cor ), + .cfg_msg_received_err_fatal ( cfg_msg_received_err_fatal ), + .cfg_msg_received_err_non_fatal ( cfg_msg_received_err_non_fatal ), + .cfg_msg_received_pm_as_nak ( cfg_msg_received_pm_as_nak ), + .cfg_msg_received_pme_to ( ), + .cfg_msg_received_pme_to_ack ( cfg_msg_received_pme_to_ack ), + .cfg_msg_received_pm_pme ( cfg_msg_received_pm_pme ), + .cfg_msg_received_setslotpowerlimit ( cfg_msg_received_setslotpowerlimit ), + .cfg_msg_received_unlock ( ), + .cfg_to_turnoff ( cfg_to_turnoff ), + .cfg_status ( cfg_status ), + .cfg_command ( cfg_command ), + .cfg_dstatus ( cfg_dstatus ), + .cfg_dcommand ( cfg_dcommand ), + .cfg_lstatus ( cfg_lstatus ), + .cfg_lcommand ( cfg_lcommand ), + .cfg_dcommand2 ( cfg_dcommand2 ), + .cfg_pcie_link_state ( cfg_pcie_link_state ), + .cfg_pmcsr_pme_en ( cfg_pmcsr_pme_en ), + .cfg_pmcsr_powerstate ( cfg_pmcsr_powerstate ), + .cfg_pmcsr_pme_status ( cfg_pmcsr_pme_status ), + .cfg_pm_rcv_as_req_l1_n ( ), + .cfg_pm_rcv_enter_l1_n ( ), + .cfg_pm_rcv_enter_l23_n ( ), + .cfg_pm_rcv_req_ack_n ( ), + .cfg_mgmt_rd_wr_done ( cfg_mgmt_rd_wr_done ), + .cfg_slot_control_electromech_il_ctl_pulse ( cfg_slot_control_electromech_il_ctl_pulse ), + .cfg_root_control_syserr_corr_err_en ( cfg_root_control_syserr_corr_err_en ), + .cfg_root_control_syserr_non_fatal_err_en ( cfg_root_control_syserr_non_fatal_err_en ), + .cfg_root_control_syserr_fatal_err_en ( cfg_root_control_syserr_fatal_err_en ), + .cfg_root_control_pme_int_en ( cfg_root_control_pme_int_en), + .cfg_aer_ecrc_check_en ( cfg_aer_ecrc_check_en ), + .cfg_aer_ecrc_gen_en ( cfg_aer_ecrc_gen_en ), + .cfg_aer_rooterr_corr_err_reporting_en ( cfg_aer_rooterr_corr_err_reporting_en ), + .cfg_aer_rooterr_non_fatal_err_reporting_en ( cfg_aer_rooterr_non_fatal_err_reporting_en ), + .cfg_aer_rooterr_fatal_err_reporting_en ( cfg_aer_rooterr_fatal_err_reporting_en ), + .cfg_aer_rooterr_corr_err_received ( cfg_aer_rooterr_corr_err_received ), + .cfg_aer_rooterr_non_fatal_err_received ( cfg_aer_rooterr_non_fatal_err_received ), + .cfg_aer_rooterr_fatal_err_received ( cfg_aer_rooterr_fatal_err_received ), + .cfg_aer_interrupt_msgnum ( cfg_aer_interrupt_msgnum ), + .cfg_transaction ( ), + .cfg_transaction_addr ( ), + .cfg_transaction_type ( ), + .cfg_vc_tcvc_map ( cfg_vc_tcvc_map ), + .cfg_mgmt_byte_en_n ( ~cfg_mgmt_byte_en ), + .cfg_mgmt_di ( cfg_mgmt_di ), + .cfg_dsn ( cfg_dsn ), + .cfg_mgmt_dwaddr ( cfg_mgmt_dwaddr ), + .cfg_err_acs_n ( 1'b1 ), + .cfg_err_cor_n ( ~cfg_err_cor ), + .cfg_err_cpl_abort_n ( ~cfg_err_cpl_abort ), + .cfg_err_cpl_timeout_n ( ~cfg_err_cpl_timeout ), + .cfg_err_cpl_unexpect_n ( ~cfg_err_cpl_unexpect ), + .cfg_err_ecrc_n ( ~cfg_err_ecrc ), + .cfg_err_locked_n ( ~cfg_err_locked ), + .cfg_err_posted_n ( ~cfg_err_posted ), + .cfg_err_tlp_cpl_header ( cfg_err_tlp_cpl_header ), + .cfg_err_ur_n ( ~cfg_err_ur ), + .cfg_err_malformed_n ( ~cfg_err_malformed ), + .cfg_err_poisoned_n ( ~cfg_err_poisoned ), + .cfg_err_atomic_egress_blocked_n ( ~cfg_err_atomic_egress_blocked ), + .cfg_err_mc_blocked_n ( ~cfg_err_mc_blocked ), + .cfg_err_internal_uncor_n ( ~cfg_err_internal_uncor ), + .cfg_err_internal_cor_n ( ~cfg_err_internal_cor ), + .cfg_err_norecovery_n ( ~cfg_err_norecovery ), + + .cfg_interrupt_assert_n ( ~cfg_interrupt_assert ), + .cfg_interrupt_di ( cfg_interrupt_di ), + .cfg_interrupt_n ( ~cfg_interrupt ), + .cfg_interrupt_stat_n ( ~cfg_interrupt_stat ), + .cfg_bus_number ( cfg_bus_number ), + .cfg_device_number ( cfg_device_number ), + .cfg_function_number ( cfg_function_number ), + .cfg_ds_bus_number ( cfg_ds_bus_number ), + .cfg_ds_device_number ( cfg_ds_device_number ), + .cfg_ds_function_number ( cfg_ds_function_number ), + .cfg_pm_send_pme_to_n ( 1'b1 ), + .cfg_pm_wake_n ( ~cfg_pm_wake ), + .cfg_pm_halt_aspm_l0s_n ( ~cfg_pm_halt_aspm_l0s ), + .cfg_pm_halt_aspm_l1_n ( ~cfg_pm_halt_aspm_l1 ), + .cfg_pm_force_state_en_n ( ~cfg_pm_force_state_en), + .cfg_pm_force_state ( cfg_pm_force_state ), + .cfg_force_mps ( 3'b0 ), + .cfg_force_common_clock_off ( 1'b0 ), + .cfg_force_extended_sync_on ( 1'b0 ), + .cfg_port_number ( 8'b0 ), + .cfg_mgmt_rd_en_n ( ~cfg_mgmt_rd_en ), + .cfg_trn_pending ( cfg_trn_pending ), + .cfg_mgmt_wr_en_n ( ~cfg_mgmt_wr_en ), + .cfg_mgmt_wr_readonly_n ( ~cfg_mgmt_wr_readonly ), + .cfg_mgmt_wr_rw1c_as_rw_n ( ~cfg_mgmt_wr_rw1c_as_rw ), + + .pl_initial_link_width ( pl_initial_link_width ), + .pl_lane_reversal_mode ( pl_lane_reversal_mode ), + .pl_link_gen2_cap ( pl_link_gen2_cap ), + .pl_link_partner_gen2_supported ( pl_link_partner_gen2_supported ), + .pl_link_upcfg_cap ( pl_link_upcfg_cap ), + .pl_ltssm_state ( pl_ltssm_state_int ), + .pl_phy_lnk_up ( pl_phy_lnk_up_wire ), + .pl_received_hot_rst ( pl_received_hot_rst_wire ), + .pl_rx_pm_state ( pl_rx_pm_state ), + .pl_sel_lnk_rate ( pl_sel_lnk_rate ), + .pl_sel_lnk_width ( pl_sel_lnk_width ), + .pl_tx_pm_state ( pl_tx_pm_state ), + .pl_directed_link_auton ( pl_directed_link_auton ), + .pl_directed_link_change ( pl_directed_link_change ), + .pl_directed_link_speed ( pl_directed_link_speed ), + .pl_directed_link_width ( pl_directed_link_width ), + .pl_downstream_deemph_source ( pl_downstream_deemph_source ), + .pl_upstream_prefer_deemph ( pl_upstream_prefer_deemph ), + .pl_transmit_hot_rst ( pl_transmit_hot_rst ), + .pl_directed_ltssm_new_vld ( 1'b0 ), + .pl_directed_ltssm_new ( 6'b0 ), + .pl_directed_ltssm_stall ( 1'b0 ), + .pl_directed_change_done ( pl_directed_change_done ), + + .phy_rdy_n ( phy_rdy_n ), + .dbg_sclr_a ( ), + .dbg_sclr_b ( ), + .dbg_sclr_c ( ), + .dbg_sclr_d ( ), + .dbg_sclr_e ( ), + .dbg_sclr_f ( ), + .dbg_sclr_g ( ), + .dbg_sclr_h ( ), + .dbg_sclr_i ( ), + .dbg_sclr_j ( ), + .dbg_sclr_k ( ), + + .dbg_vec_a ( ), + .dbg_vec_b ( ), + .dbg_vec_c ( ), + .pl_dbg_vec ( ), + .trn_rdllp_data ( ), + .trn_rdllp_src_rdy ( ), + .dbg_mode ( 2'b0 ), + .dbg_sub_mode ( 1'b0 ), + .pl_dbg_mode ( 3'b0 ), + + .drp_clk ( pcie_drp_clk ), + .drp_do ( pcie_drp_do ), + .drp_rdy ( pcie_drp_rdy ), + .drp_addr ( pcie_drp_addr ), + .drp_en ( pcie_drp_en ), + .drp_di ( pcie_drp_di ), + .drp_we ( pcie_drp_we ), + + // Pipe Interface + + .pipe_clk ( pipe_clk ), + .user_clk ( user_clk ), + .user_clk2 ( user_clk2 ), + .pipe_rx0_polarity_gt ( pipe_rx0_polarity_gt ), + .pipe_rx1_polarity_gt ( pipe_rx1_polarity_gt ), + .pipe_rx2_polarity_gt ( pipe_rx2_polarity_gt ), + .pipe_rx3_polarity_gt ( pipe_rx3_polarity_gt ), + .pipe_rx4_polarity_gt ( pipe_rx4_polarity_gt ), + .pipe_rx5_polarity_gt ( pipe_rx5_polarity_gt ), + .pipe_rx6_polarity_gt ( pipe_rx6_polarity_gt ), + .pipe_rx7_polarity_gt ( pipe_rx7_polarity_gt ), + .pipe_tx_deemph_gt ( pipe_tx_deemph_gt ), + .pipe_tx_margin_gt ( pipe_tx_margin_gt ), + .pipe_tx_rate_gt ( pipe_tx_rate_gt ), + .pipe_tx_rcvr_det_gt ( pipe_tx_rcvr_det_gt ), + .pipe_tx0_char_is_k_gt ( pipe_tx0_char_is_k_gt ), + .pipe_tx0_compliance_gt ( pipe_tx0_compliance_gt ), + .pipe_tx0_data_gt ( pipe_tx0_data_gt ), + .pipe_tx0_elec_idle_gt ( pipe_tx0_elec_idle_gt ), + .pipe_tx0_powerdown_gt ( pipe_tx0_powerdown_gt ), + .pipe_tx1_char_is_k_gt ( pipe_tx1_char_is_k_gt ), + .pipe_tx1_compliance_gt ( pipe_tx1_compliance_gt ), + .pipe_tx1_data_gt ( pipe_tx1_data_gt ), + .pipe_tx1_elec_idle_gt ( pipe_tx1_elec_idle_gt ), + .pipe_tx1_powerdown_gt ( pipe_tx1_powerdown_gt ), + .pipe_tx2_char_is_k_gt ( pipe_tx2_char_is_k_gt ), + .pipe_tx2_compliance_gt ( pipe_tx2_compliance_gt ), + .pipe_tx2_data_gt ( pipe_tx2_data_gt ), + .pipe_tx2_elec_idle_gt ( pipe_tx2_elec_idle_gt ), + .pipe_tx2_powerdown_gt ( pipe_tx2_powerdown_gt ), + .pipe_tx3_char_is_k_gt ( pipe_tx3_char_is_k_gt ), + .pipe_tx3_compliance_gt ( pipe_tx3_compliance_gt ), + .pipe_tx3_data_gt ( pipe_tx3_data_gt ), + .pipe_tx3_elec_idle_gt ( pipe_tx3_elec_idle_gt ), + .pipe_tx3_powerdown_gt ( pipe_tx3_powerdown_gt ), + .pipe_tx4_char_is_k_gt ( pipe_tx4_char_is_k_gt ), + .pipe_tx4_compliance_gt ( pipe_tx4_compliance_gt ), + .pipe_tx4_data_gt ( pipe_tx4_data_gt ), + .pipe_tx4_elec_idle_gt ( pipe_tx4_elec_idle_gt ), + .pipe_tx4_powerdown_gt ( pipe_tx4_powerdown_gt ), + .pipe_tx5_char_is_k_gt ( pipe_tx5_char_is_k_gt ), + .pipe_tx5_compliance_gt ( pipe_tx5_compliance_gt ), + .pipe_tx5_data_gt ( pipe_tx5_data_gt ), + .pipe_tx5_elec_idle_gt ( pipe_tx5_elec_idle_gt ), + .pipe_tx5_powerdown_gt ( pipe_tx5_powerdown_gt ), + .pipe_tx6_char_is_k_gt ( pipe_tx6_char_is_k_gt ), + .pipe_tx6_compliance_gt ( pipe_tx6_compliance_gt ), + .pipe_tx6_data_gt ( pipe_tx6_data_gt ), + .pipe_tx6_elec_idle_gt ( pipe_tx6_elec_idle_gt ), + .pipe_tx6_powerdown_gt ( pipe_tx6_powerdown_gt ), + .pipe_tx7_char_is_k_gt ( pipe_tx7_char_is_k_gt ), + .pipe_tx7_compliance_gt ( pipe_tx7_compliance_gt ), + .pipe_tx7_data_gt ( pipe_tx7_data_gt ), + .pipe_tx7_elec_idle_gt ( pipe_tx7_elec_idle_gt ), + .pipe_tx7_powerdown_gt ( pipe_tx7_powerdown_gt ), + + .pipe_rx0_chanisaligned_gt ( pipe_rx0_chanisaligned_gt ), + .pipe_rx0_char_is_k_gt ( pipe_rx0_char_is_k_gt ), + .pipe_rx0_data_gt ( pipe_rx0_data_gt ), + .pipe_rx0_elec_idle_gt ( pipe_rx0_elec_idle_gt ), + .pipe_rx0_phy_status_gt ( pipe_rx0_phy_status_gt ), + .pipe_rx0_status_gt ( pipe_rx0_status_gt ), + .pipe_rx0_valid_gt ( pipe_rx0_valid_gt ), + .pipe_rx1_chanisaligned_gt ( pipe_rx1_chanisaligned_gt ), + .pipe_rx1_char_is_k_gt ( pipe_rx1_char_is_k_gt ), + .pipe_rx1_data_gt ( pipe_rx1_data_gt ), + .pipe_rx1_elec_idle_gt ( pipe_rx1_elec_idle_gt ), + .pipe_rx1_phy_status_gt ( pipe_rx1_phy_status_gt ), + .pipe_rx1_status_gt ( pipe_rx1_status_gt ), + .pipe_rx1_valid_gt ( pipe_rx1_valid_gt ), + .pipe_rx2_chanisaligned_gt ( pipe_rx2_chanisaligned_gt ), + .pipe_rx2_char_is_k_gt ( pipe_rx2_char_is_k_gt ), + .pipe_rx2_data_gt ( pipe_rx2_data_gt ), + .pipe_rx2_elec_idle_gt ( pipe_rx2_elec_idle_gt ), + .pipe_rx2_phy_status_gt ( pipe_rx2_phy_status_gt ), + .pipe_rx2_status_gt ( pipe_rx2_status_gt ), + .pipe_rx2_valid_gt ( pipe_rx2_valid_gt ), + .pipe_rx3_chanisaligned_gt ( pipe_rx3_chanisaligned_gt ), + .pipe_rx3_char_is_k_gt ( pipe_rx3_char_is_k_gt ), + .pipe_rx3_data_gt ( pipe_rx3_data_gt ), + .pipe_rx3_elec_idle_gt ( pipe_rx3_elec_idle_gt ), + .pipe_rx3_phy_status_gt ( pipe_rx3_phy_status_gt ), + .pipe_rx3_status_gt ( pipe_rx3_status_gt ), + .pipe_rx3_valid_gt ( pipe_rx3_valid_gt ), + .pipe_rx4_chanisaligned_gt ( pipe_rx4_chanisaligned_gt ), + .pipe_rx4_char_is_k_gt ( pipe_rx4_char_is_k_gt ), + .pipe_rx4_data_gt ( pipe_rx4_data_gt ), + .pipe_rx4_elec_idle_gt ( pipe_rx4_elec_idle_gt ), + .pipe_rx4_phy_status_gt ( pipe_rx4_phy_status_gt ), + .pipe_rx4_status_gt ( pipe_rx4_status_gt ), + .pipe_rx4_valid_gt ( pipe_rx4_valid_gt ), + .pipe_rx5_chanisaligned_gt ( pipe_rx5_chanisaligned_gt ), + .pipe_rx5_char_is_k_gt ( pipe_rx5_char_is_k_gt ), + .pipe_rx5_data_gt ( pipe_rx5_data_gt ), + .pipe_rx5_elec_idle_gt ( pipe_rx5_elec_idle_gt ), + .pipe_rx5_phy_status_gt ( pipe_rx5_phy_status_gt ), + .pipe_rx5_status_gt ( pipe_rx5_status_gt ), + .pipe_rx5_valid_gt ( pipe_rx5_valid_gt ), + .pipe_rx6_chanisaligned_gt ( pipe_rx6_chanisaligned_gt ), + .pipe_rx6_char_is_k_gt ( pipe_rx6_char_is_k_gt ), + .pipe_rx6_data_gt ( pipe_rx6_data_gt ), + .pipe_rx6_elec_idle_gt ( pipe_rx6_elec_idle_gt ), + .pipe_rx6_phy_status_gt ( pipe_rx6_phy_status_gt ), + .pipe_rx6_status_gt ( pipe_rx6_status_gt ), + .pipe_rx6_valid_gt ( pipe_rx6_valid_gt ), + .pipe_rx7_chanisaligned_gt ( pipe_rx7_chanisaligned_gt ), + .pipe_rx7_char_is_k_gt ( pipe_rx7_char_is_k_gt ), + .pipe_rx7_data_gt ( pipe_rx7_data_gt ), + .pipe_rx7_elec_idle_gt ( pipe_rx7_elec_idle_gt ), + .pipe_rx7_phy_status_gt ( pipe_rx7_phy_status_gt ), + .pipe_rx7_status_gt ( pipe_rx7_status_gt ), + .pipe_rx7_valid_gt ( pipe_rx7_valid_gt ) + + ); + assign common_commands_out = 12'b0; + assign pipe_tx_0_sigs = 25'b0; + assign pipe_tx_1_sigs = 25'b0; + assign pipe_tx_2_sigs = 25'b0; + assign pipe_tx_3_sigs = 25'b0; + assign pipe_tx_4_sigs = 25'b0; + assign pipe_tx_5_sigs = 25'b0; + assign pipe_tx_6_sigs = 25'b0; + assign pipe_tx_7_sigs = 25'b0; + + + //------------------------------------------------------------------------------------------------------------------// + // **** V7/K7/A7 GTX Wrapper **** // + // The 7-Series GTX Wrapper includes the following: // + // 1) Virtex-7 GTX // + // 2) Kintex-7 GTX // + // 3) Artix-7 GTP // + //------------------------------------------------------------------------------------------------------------------// +pcie_7x_0_gt_top #( + .LINK_CAP_MAX_LINK_WIDTH ( LINK_CAP_MAX_LINK_WIDTH ), + .REF_CLK_FREQ ( REF_CLK_FREQ ), + .USER_CLK_FREQ ( USER_CLK_FREQ ), + .USER_CLK2_DIV2 ( USER_CLK2_DIV2 ), + + // synthesis translate_off + .PL_FAST_TRAIN ( ENABLE_FAST_SIM_TRAINING ), + // synthesis translate_on + + .PCIE_EXT_CLK ( PCIE_EXT_CLK ), + .PCIE_USE_MODE ( PCIE_USE_MODE ), + .PCIE_GT_DEVICE ( PCIE_GT_DEVICE ), + .PCIE_PLL_SEL ( PCIE_PLL_SEL ), + .PCIE_ASYNC_EN ( PCIE_ASYNC_EN ), + .PCIE_TXBUF_EN ( PCIE_TXBUF_EN ), + .PCIE_EXT_GT_COMMON ( PCIE_EXT_GT_COMMON ), + .EXT_CH_GT_DRP ( EXT_CH_GT_DRP ), + .TX_MARGIN_FULL_0 ( TX_MARGIN_FULL_0 ), + .TX_MARGIN_FULL_1 ( TX_MARGIN_FULL_1 ), + .TX_MARGIN_FULL_2 ( TX_MARGIN_FULL_2 ), + .TX_MARGIN_FULL_3 ( TX_MARGIN_FULL_3 ), + .TX_MARGIN_FULL_4 ( TX_MARGIN_FULL_4 ), + .TX_MARGIN_LOW_0 ( TX_MARGIN_LOW_0 ), + .TX_MARGIN_LOW_1 ( TX_MARGIN_LOW_1 ), + .TX_MARGIN_LOW_2 ( TX_MARGIN_LOW_2 ), + .TX_MARGIN_LOW_3 ( TX_MARGIN_LOW_3 ), + .TX_MARGIN_LOW_4 ( TX_MARGIN_LOW_4 ), + .PCIE_CHAN_BOND ( PCIE_CHAN_BOND ) + + ) gt_top_i ( + // pl ltssm + .pl_ltssm_state ( pl_ltssm_state_int ), + + // Pipe Common Signals + .pipe_tx_rcvr_det ( pipe_tx_rcvr_det_gt ), + .pipe_tx_reset ( 1'b0 ), + .pipe_tx_rate ( pipe_tx_rate_gt ), + .pipe_tx_deemph ( pipe_tx_deemph_gt ), + .pipe_tx_margin ( pipe_tx_margin_gt ), + .pipe_tx_swing ( 1'b0 ), + + // Pipe Per-Lane Signals - Lane 0 + .pipe_rx0_char_is_k ( pipe_rx0_char_is_k_gt), + .pipe_rx0_data ( pipe_rx0_data_gt ), + .pipe_rx0_valid ( pipe_rx0_valid_gt ), + .pipe_rx0_chanisaligned ( pipe_rx0_chanisaligned_gt ), + .pipe_rx0_status ( pipe_rx0_status_gt ), + .pipe_rx0_phy_status ( pipe_rx0_phy_status_gt ), + .pipe_rx0_elec_idle ( pipe_rx0_elec_idle_gt ), + .pipe_rx0_polarity ( pipe_rx0_polarity_gt ), + .pipe_tx0_compliance ( pipe_tx0_compliance_gt ), + .pipe_tx0_char_is_k ( pipe_tx0_char_is_k_gt ), + .pipe_tx0_data ( pipe_tx0_data_gt ), + .pipe_tx0_elec_idle ( pipe_tx0_elec_idle_gt ), + .pipe_tx0_powerdown ( pipe_tx0_powerdown_gt ), + + // Pipe Per-Lane Signals - Lane 1 + + .pipe_rx1_char_is_k ( pipe_rx1_char_is_k_gt), + .pipe_rx1_data ( pipe_rx1_data_gt ), + .pipe_rx1_valid ( pipe_rx1_valid_gt ), + .pipe_rx1_chanisaligned ( pipe_rx1_chanisaligned_gt ), + .pipe_rx1_status ( pipe_rx1_status_gt ), + .pipe_rx1_phy_status ( pipe_rx1_phy_status_gt ), + .pipe_rx1_elec_idle ( pipe_rx1_elec_idle_gt ), + .pipe_rx1_polarity ( pipe_rx1_polarity_gt ), + .pipe_tx1_compliance ( pipe_tx1_compliance_gt ), + .pipe_tx1_char_is_k ( pipe_tx1_char_is_k_gt ), + .pipe_tx1_data ( pipe_tx1_data_gt ), + .pipe_tx1_elec_idle ( pipe_tx1_elec_idle_gt ), + .pipe_tx1_powerdown ( pipe_tx1_powerdown_gt ), + + // Pipe Per-Lane Signals - Lane 2 + + .pipe_rx2_char_is_k ( pipe_rx2_char_is_k_gt), + .pipe_rx2_data ( pipe_rx2_data_gt ), + .pipe_rx2_valid ( pipe_rx2_valid_gt ), + .pipe_rx2_chanisaligned ( pipe_rx2_chanisaligned_gt ), + .pipe_rx2_status ( pipe_rx2_status_gt ), + .pipe_rx2_phy_status ( pipe_rx2_phy_status_gt ), + .pipe_rx2_elec_idle ( pipe_rx2_elec_idle_gt ), + .pipe_rx2_polarity ( pipe_rx2_polarity_gt ), + .pipe_tx2_compliance ( pipe_tx2_compliance_gt ), + .pipe_tx2_char_is_k ( pipe_tx2_char_is_k_gt ), + .pipe_tx2_data ( pipe_tx2_data_gt ), + .pipe_tx2_elec_idle ( pipe_tx2_elec_idle_gt ), + .pipe_tx2_powerdown ( pipe_tx2_powerdown_gt ), + + // Pipe Per-Lane Signals - Lane 3 + + .pipe_rx3_char_is_k ( pipe_rx3_char_is_k_gt), + .pipe_rx3_data ( pipe_rx3_data_gt ), + .pipe_rx3_valid ( pipe_rx3_valid_gt ), + .pipe_rx3_chanisaligned ( pipe_rx3_chanisaligned_gt ), + .pipe_rx3_status ( pipe_rx3_status_gt ), + .pipe_rx3_phy_status ( pipe_rx3_phy_status_gt ), + .pipe_rx3_elec_idle ( pipe_rx3_elec_idle_gt ), + .pipe_rx3_polarity ( pipe_rx3_polarity_gt ), + .pipe_tx3_compliance ( pipe_tx3_compliance_gt ), + .pipe_tx3_char_is_k ( pipe_tx3_char_is_k_gt ), + .pipe_tx3_data ( pipe_tx3_data_gt ), + .pipe_tx3_elec_idle ( pipe_tx3_elec_idle_gt ), + .pipe_tx3_powerdown ( pipe_tx3_powerdown_gt ), + + // Pipe Per-Lane Signals - Lane 4 + + .pipe_rx4_char_is_k ( pipe_rx4_char_is_k_gt), + .pipe_rx4_data ( pipe_rx4_data_gt ), + .pipe_rx4_valid ( pipe_rx4_valid_gt ), + .pipe_rx4_chanisaligned ( pipe_rx4_chanisaligned_gt ), + .pipe_rx4_status ( pipe_rx4_status_gt ), + .pipe_rx4_phy_status ( pipe_rx4_phy_status_gt ), + .pipe_rx4_elec_idle ( pipe_rx4_elec_idle_gt ), + .pipe_rx4_polarity ( pipe_rx4_polarity_gt ), + .pipe_tx4_compliance ( pipe_tx4_compliance_gt ), + .pipe_tx4_char_is_k ( pipe_tx4_char_is_k_gt ), + .pipe_tx4_data ( pipe_tx4_data_gt ), + .pipe_tx4_elec_idle ( pipe_tx4_elec_idle_gt ), + .pipe_tx4_powerdown ( pipe_tx4_powerdown_gt ), + + // Pipe Per-Lane Signals - Lane 5 + + .pipe_rx5_char_is_k ( pipe_rx5_char_is_k_gt), + .pipe_rx5_data ( pipe_rx5_data_gt ), + .pipe_rx5_valid ( pipe_rx5_valid_gt ), + .pipe_rx5_chanisaligned ( pipe_rx5_chanisaligned_gt ), + .pipe_rx5_status ( pipe_rx5_status_gt ), + .pipe_rx5_phy_status ( pipe_rx5_phy_status_gt ), + .pipe_rx5_elec_idle ( pipe_rx5_elec_idle_gt ), + .pipe_rx5_polarity ( pipe_rx5_polarity_gt ), + .pipe_tx5_compliance ( pipe_tx5_compliance_gt ), + .pipe_tx5_char_is_k ( pipe_tx5_char_is_k_gt ), + .pipe_tx5_data ( pipe_tx5_data_gt ), + .pipe_tx5_elec_idle ( pipe_tx5_elec_idle_gt ), + .pipe_tx5_powerdown ( pipe_tx5_powerdown_gt ), + + // Pipe Per-Lane Signals - Lane 6 + + .pipe_rx6_char_is_k ( pipe_rx6_char_is_k_gt), + .pipe_rx6_data ( pipe_rx6_data_gt ), + .pipe_rx6_valid ( pipe_rx6_valid_gt ), + .pipe_rx6_chanisaligned ( pipe_rx6_chanisaligned_gt ), + .pipe_rx6_status ( pipe_rx6_status_gt ), + .pipe_rx6_phy_status ( pipe_rx6_phy_status_gt ), + .pipe_rx6_elec_idle ( pipe_rx6_elec_idle_gt ), + .pipe_rx6_polarity ( pipe_rx6_polarity_gt ), + .pipe_tx6_compliance ( pipe_tx6_compliance_gt ), + .pipe_tx6_char_is_k ( pipe_tx6_char_is_k_gt ), + .pipe_tx6_data ( pipe_tx6_data_gt ), + .pipe_tx6_elec_idle ( pipe_tx6_elec_idle_gt ), + .pipe_tx6_powerdown ( pipe_tx6_powerdown_gt ), + + // Pipe Per-Lane Signals - Lane 7 + + .pipe_rx7_char_is_k ( pipe_rx7_char_is_k_gt), + .pipe_rx7_data ( pipe_rx7_data_gt ), + .pipe_rx7_valid ( pipe_rx7_valid_gt ), + .pipe_rx7_chanisaligned ( pipe_rx7_chanisaligned_gt ), + .pipe_rx7_status ( pipe_rx7_status_gt ), + .pipe_rx7_phy_status ( pipe_rx7_phy_status_gt ), + .pipe_rx7_elec_idle ( pipe_rx7_elec_idle_gt ), + .pipe_rx7_polarity ( pipe_rx7_polarity_gt ), + .pipe_tx7_compliance ( pipe_tx7_compliance_gt ), + .pipe_tx7_char_is_k ( pipe_tx7_char_is_k_gt ), + .pipe_tx7_data ( pipe_tx7_data_gt ), + .pipe_tx7_elec_idle ( pipe_tx7_elec_idle_gt ), + .pipe_tx7_powerdown ( pipe_tx7_powerdown_gt ), + + // PCI Express Signals + .pci_exp_txn ( pci_exp_txn ), + .pci_exp_txp ( pci_exp_txp ), + .pci_exp_rxn ( pci_exp_rxn ), + .pci_exp_rxp ( pci_exp_rxp ), + + // Non PIPE Signals + .sys_clk ( sys_clk ), + .sys_rst_n ( sys_rst_n ), + .PIPE_MMCM_RST_N ( pipe_mmcm_rst_n ), // Async | Async + .pipe_clk ( pipe_clk ), + + .user_clk ( user_clk ), + .user_clk2 ( user_clk2 ), + .phy_rdy_n ( phy_rdy_n ), + + // ---------- Shared Logic Internal------------------ + .INT_PCLK_OUT_SLAVE ( int_pclk_out_slave ), + .INT_RXUSRCLK_OUT ( int_pipe_rxusrclk_out ), + .INT_RXOUTCLK_OUT ( int_rxoutclk_out ), + .INT_DCLK_OUT ( int_dclk_out ), + .INT_USERCLK1_OUT ( int_userclk1_out ), + .INT_USERCLK2_OUT ( int_userclk2_out), + .INT_OOBCLK_OUT ( int_oobclk_out), + .INT_MMCM_LOCK_OUT ( int_mmcm_lock_out ), + .INT_QPLLLOCK_OUT ( int_qplllock_out ), + .INT_QPLLOUTCLK_OUT ( int_qplloutclk_out ), + .INT_QPLLOUTREFCLK_OUT ( int_qplloutrefclk_out ), + .INT_PCLK_SEL_SLAVE ( int_pclk_sel_slave ), + + // ---------- Shared Logic External------------------ + //External Clock Ports + .PIPE_PCLK_IN ( pipe_pclk_in ), + .PIPE_RXUSRCLK_IN ( pipe_rxusrclk_in ), + .PIPE_RXOUTCLK_IN ( pipe_rxoutclk_in ), + .PIPE_DCLK_IN ( pipe_dclk_in ), + .PIPE_USERCLK1_IN ( pipe_userclk1_in ), + .PIPE_USERCLK2_IN ( pipe_userclk2_in ), + .PIPE_OOBCLK_IN ( pipe_oobclk_in ), + .PIPE_MMCM_LOCK_IN ( pipe_mmcm_lock_in ), + + .PIPE_TXOUTCLK_OUT ( pipe_txoutclk_out ), + .PIPE_RXOUTCLK_OUT ( pipe_rxoutclk_out ), + .PIPE_PCLK_SEL_OUT ( pipe_pclk_sel_out ), + .PIPE_GEN3_OUT ( pipe_gen3_out ), + + //External GT COMMON Ports + + .qpll_drp_crscode ( qpll_drp_crscode ), + .qpll_drp_fsm ( qpll_drp_fsm ), + .qpll_drp_done ( qpll_drp_done ), + .qpll_drp_reset ( qpll_drp_reset ), + .qpll_qplllock ( qpll_qplllock ), + .qpll_qplloutclk ( qpll_qplloutclk ), + .qpll_qplloutrefclk ( qpll_qplloutrefclk ), + .qpll_qplld ( qpll_qplld ), + .qpll_qpllreset ( qpll_qpllreset ), + .qpll_drp_clk ( qpll_drp_clk ), + .qpll_drp_rst_n ( qpll_drp_rst_n ), + .qpll_drp_ovrd ( qpll_drp_ovrd ), + .qpll_drp_gen3 ( qpll_drp_gen3), + .qpll_drp_start ( qpll_drp_start ), + + //TRANSCEIVER DEBUG EOU + .ext_ch_gt_drpclk ( ext_ch_gt_drpclk ), + .ext_ch_gt_drpaddr ( ext_ch_gt_drpaddr ), + .ext_ch_gt_drpen ( ext_ch_gt_drpen ), + .ext_ch_gt_drpdi ( ext_ch_gt_drpdi ), + .ext_ch_gt_drpwe ( ext_ch_gt_drpwe ), + .ext_ch_gt_drpdo ( ext_ch_gt_drpdo ), + .ext_ch_gt_drprdy ( ext_ch_gt_drprdy ), + +//---------- PRBS/Loopback Ports ----------------------- + .PIPE_TXPRBSSEL ( pipe_txprbssel ), + .PIPE_RXPRBSSEL ( pipe_rxprbssel ), + .PIPE_TXPRBSFORCEERR ( pipe_txprbsforceerr ), + .PIPE_RXPRBSCNTRESET ( pipe_rxprbscntreset ), + .PIPE_LOOPBACK ( pipe_loopback ), + + .PIPE_RXPRBSERR ( pipe_rxprbserr ), + .PIPE_TXINHIBIT ( pipe_txinhibit ), + +//---------- Transceiver Debug FSM Ports --------------------------------- + .PIPE_RST_FSM ( pipe_rst_fsm ), + .PIPE_QRST_FSM ( pipe_qrst_fsm ), + .PIPE_RATE_FSM ( pipe_rate_fsm ), + .PIPE_SYNC_FSM_TX ( pipe_sync_fsm_tx ), + .PIPE_SYNC_FSM_RX ( pipe_sync_fsm_rx ), + .PIPE_DRP_FSM ( pipe_drp_fsm ), + + .PIPE_RST_IDLE ( pipe_rst_idle ), + .PIPE_QRST_IDLE ( pipe_qrst_idle ), + .PIPE_RATE_IDLE ( pipe_rate_idle ), + .PIPE_EYESCANDATAERROR ( pipe_eyescandataerror ), + .PIPE_RXSTATUS ( pipe_rxstatus ), + .PIPE_DMONITOROUT ( pipe_dmonitorout ), + + .PIPE_CPLL_LOCK ( pipe_cpll_lock ), + .PIPE_QPLL_LOCK ( pipe_qpll_lock ), + .PIPE_RXPMARESETDONE ( pipe_rxpmaresetdone ), + .PIPE_RXBUFSTATUS ( pipe_rxbufstatus ), + .PIPE_TXPHALIGNDONE ( pipe_txphaligndone ), + .PIPE_TXPHINITDONE ( pipe_txphinitdone ), + .PIPE_TXDLYSRESETDONE ( pipe_txdlysresetdone ), + .PIPE_RXPHALIGNDONE ( pipe_rxphaligndone ), + .PIPE_RXDLYSRESETDONE ( pipe_rxdlysresetdone ), + .PIPE_RXSYNCDONE ( pipe_rxsyncdone ), + .PIPE_RXDISPERR ( pipe_rxdisperr ), + .PIPE_RXNOTINTABLE ( pipe_rxnotintable ), + .PIPE_RXCOMMADET ( pipe_rxcommadet ), + //---------- JTAG Ports -------------------------------- + .PIPE_JTAG_RDY (gt_ch_drp_rdy ), + + + //---------- Debug Ports ------------------------------- + .PIPE_DEBUG_0 ( pipe_debug_0 ), + .PIPE_DEBUG_1 ( pipe_debug_1 ), + .PIPE_DEBUG_2 ( pipe_debug_2 ), + .PIPE_DEBUG_3 ( pipe_debug_3 ), + .PIPE_DEBUG_4 ( pipe_debug_4 ), + .PIPE_DEBUG_5 ( pipe_debug_5 ), + .PIPE_DEBUG_6 ( pipe_debug_6 ), + .PIPE_DEBUG_7 ( pipe_debug_7 ), + .PIPE_DEBUG_8 ( pipe_debug_8 ), + .PIPE_DEBUG_9 ( pipe_debug_9 ), + .PIPE_DEBUG ( pipe_debug ) + ); + + assign common_commands_out = 12'b0; + assign pipe_tx_0_sigs = 25'b0; + assign pipe_tx_1_sigs = 25'b0; + assign pipe_tx_2_sigs = 25'b0; + assign pipe_tx_3_sigs = 25'b0; + assign pipe_tx_4_sigs = 25'b0; + assign pipe_tx_5_sigs = 25'b0; + assign pipe_tx_6_sigs = 25'b0; + assign pipe_tx_7_sigs = 25'b0; + //------------------------------------------------------------------------------------------------------------------// + + // Tie-Off Unused Tandem Outputs + assign icap_o = 32'b0; + assign startup_cfgclk = 1'b0; + assign startup_cfgmclk = 1'b0; + assign startup_eos = 1'b0; + assign startup_preq = 1'b0; + +//////////////////////////////////////////////STORE_LTSSM////////////////////////////////////////////////// + + (* dont_touch = "true" *) wire store_ltssm; + reg [5:0] ltssm_reg0 = 6'b0; + reg [5:0] ltssm_reg1 = 6'b0; + reg [5:0] ltssm_reg2 = 6'b0; + + always@ (posedge pipe_clk) + begin + ltssm_reg0 <= pl_ltssm_state; + ltssm_reg1 <= ltssm_reg0; + ltssm_reg2 <= ltssm_reg1; + end + + assign store_ltssm = (ltssm_reg2 != pl_ltssm_state) ? 1'b1 : 1'b0; + +/////////////////////////////////////////////////////////////////////////////////////////////////////////// +//enable_jtag_dbg = FALSE + + + + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gt_common.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gt_common.v new file mode 100644 index 0000000..e8f61e7 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gt_common.v @@ -0,0 +1,166 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_gt_common.v +// Version : 3.3 +`timescale 1ns / 1ps + +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_gt_common #( + +parameter PCIE_SIM_MODE = "FALSE", // PCIe sim mode +parameter PCIE_GT_DEVICE = "GTX", // PCIe GT device +parameter PCIE_USE_MODE = "2.1", // PCIe use mode +parameter PCIE_PLL_SEL = "CPLL", // PCIe PLL select for Gen1/Gen2 only +parameter PCIE_REFCLK_FREQ = 0 // PCIe reference clock frequency +) + +( +input CPLLPDREFCLK, +input PIPE_CLK, +input QPLL_QPLLPD, +input QPLL_QPLLRESET, +input QPLL_DRP_CLK, +input QPLL_DRP_RST_N, +input QPLL_DRP_OVRD, +input QPLL_DRP_GEN3, +input QPLL_DRP_START, +output [5:0] QPLL_DRP_CRSCODE, +output [8:0] QPLL_DRP_FSM, +output QPLL_DRP_DONE, +output QPLL_DRP_RESET, +output QPLL_QPLLLOCK, +output QPLL_QPLLOUTCLK, +output QPLL_QPLLOUTREFCLK +); + + //---------- QPLL DRP Module Output -------------------- + +wire [7:0] qpll_drp_addr; +wire qpll_drp_en; +wire [15:0] qpll_drp_di; +wire qpll_drp_we; + + //---------- QPLL Wrapper Output ----------------------- + +wire [15:0] qpll_drp_do; +wire qpll_drp_rdy; + + //---------- QPLL Resets ----------------------- + + + //---------- QPLL DRP Module --------------------------------------- + +pcie_7x_0_qpll_drp # + ( + + .PCIE_GT_DEVICE (PCIE_GT_DEVICE), // PCIe GT device + .PCIE_USE_MODE (PCIE_USE_MODE), // PCIe use mode + .PCIE_PLL_SEL (PCIE_PLL_SEL), // PCIe PLL select for Gen1/Gen2 only + .PCIE_REFCLK_FREQ (PCIE_REFCLK_FREQ) // PCIe reference clock frequency + + ) + qpll_drp_i + ( + + //---------- Input ------------------------- + .DRP_CLK (QPLL_DRP_CLK), + .DRP_RST_N (!QPLL_DRP_RST_N), + .DRP_OVRD (QPLL_DRP_OVRD), + .DRP_GEN3 (&QPLL_DRP_GEN3), + .DRP_QPLLLOCK (QPLL_QPLLLOCK), + .DRP_START (QPLL_DRP_START), + .DRP_DO (qpll_drp_do), + .DRP_RDY (qpll_drp_rdy), + + //---------- Output ------------------------ + .DRP_ADDR (qpll_drp_addr), + .DRP_EN (qpll_drp_en), + .DRP_DI (qpll_drp_di), + .DRP_WE (qpll_drp_we), + .DRP_DONE (QPLL_DRP_DONE), + .DRP_QPLLRESET (QPLL_DRP_RESET), + .DRP_CRSCODE (QPLL_DRP_CRSCODE), + .DRP_FSM (QPLL_DRP_FSM) + ); + + + //---------- QPLL Wrapper ------------------------------------------ +pcie_7x_0_qpll_wrapper # + ( + .PCIE_SIM_MODE (PCIE_SIM_MODE), // PCIe sim mode + .PCIE_GT_DEVICE (PCIE_GT_DEVICE), // PCIe GT device + .PCIE_USE_MODE (PCIE_USE_MODE), // PCIe use mode + .PCIE_PLL_SEL (PCIE_PLL_SEL), // PCIe PLL select for Gen1/Gen2 only + .PCIE_REFCLK_FREQ (PCIE_REFCLK_FREQ) // PCIe reference clock frequency + ) + qpll_wrapper_i + ( + //---------- QPLL Clock Ports -------------- + .QPLL_CPLLPDREFCLK (CPLLPDREFCLK), + .QPLL_GTGREFCLK (PIPE_CLK), + .QPLL_QPLLLOCKDETCLK (1'd0), + .QPLL_QPLLOUTCLK (QPLL_QPLLOUTCLK), + .QPLL_QPLLOUTREFCLK (QPLL_QPLLOUTREFCLK), + .QPLL_QPLLLOCK (QPLL_QPLLLOCK), + //---------- QPLL Reset Ports -------------- + .QPLL_QPLLPD (QPLL_QPLLPD), + .QPLL_QPLLRESET (QPLL_QPLLRESET), + //---------- QPLL DRP Ports ---------------- + .QPLL_DRPCLK (QPLL_DRP_CLK), + .QPLL_DRPADDR (qpll_drp_addr), + .QPLL_DRPEN (qpll_drp_en), + .QPLL_DRPDI (qpll_drp_di), + .QPLL_DRPWE (qpll_drp_we), + .QPLL_DRPDO (qpll_drp_do), + .QPLL_DRPRDY (qpll_drp_rdy) + ); + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gt_rx_valid_filter_7x.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gt_rx_valid_filter_7x.v new file mode 100644 index 0000000..7beb2b9 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gt_rx_valid_filter_7x.v @@ -0,0 +1,285 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_gt_rx_valid_filter_7x.v +// Version : 3.3 +//-- Description: GTX module for 7-series Integrated PCIe Block +//-- +//-- +//-- +//-------------------------------------------------------------------------------- + +`timescale 1ns / 1ns + +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_gt_rx_valid_filter_7x #( + + parameter CLK_COR_MIN_LAT = 28, + parameter TCQ = 1 + +) +( + output [1:0] USER_RXCHARISK, + output [15:0] USER_RXDATA, + output USER_RXVALID, + output USER_RXELECIDLE, + output [ 2:0] USER_RX_STATUS, + output USER_RX_PHY_STATUS, + input [1:0] GT_RXCHARISK, + input [15:0] GT_RXDATA, + input GT_RXVALID, + input GT_RXELECIDLE, + input [ 2:0] GT_RX_STATUS, + input GT_RX_PHY_STATUS, + + input PLM_IN_L0, + input PLM_IN_RS, + + input USER_CLK, + input RESET + +); + + + + localparam EIOS_DET_IDL = 5'b00001; + localparam EIOS_DET_NO_STR0 = 5'b00010; + localparam EIOS_DET_STR0 = 5'b00100; + localparam EIOS_DET_STR1 = 5'b01000; + localparam EIOS_DET_DONE = 5'b10000; + + localparam EIOS_COM = 8'hBC; + localparam EIOS_IDL = 8'h7C; + localparam FTSOS_COM = 8'hBC; + localparam FTSOS_FTS = 8'h3C; + + reg [4:0] reg_state_eios_det; + wire [4:0] state_eios_det; + + reg reg_eios_detected; + wire eios_detected; + + reg reg_symbol_after_eios; + wire symbol_after_eios; + + localparam USER_RXVLD_IDL = 4'b0001; + localparam USER_RXVLD_EI = 4'b0010; + localparam USER_RXVLD_EI_DB0 = 4'b0100; + localparam USER_RXVLD_EI_DB1 = 4'b1000; + + + reg [1:0] gt_rxcharisk_q; + reg [15:0] gt_rxdata_q; + reg gt_rxvalid_q; + reg gt_rxelecidle_q; + + reg [ 2:0] gt_rx_status_q; + reg gt_rx_phy_status_q; + reg gt_rx_is_skp0_q; + reg gt_rx_is_skp1_q; + + // EIOS detector + + always @(posedge USER_CLK) begin + + if (RESET) begin + + reg_eios_detected <= #TCQ 1'b0; + reg_state_eios_det <= #TCQ EIOS_DET_IDL; + reg_symbol_after_eios <= #TCQ 1'b0; + gt_rxcharisk_q <= #TCQ 2'b00; + gt_rxdata_q <= #TCQ 16'h0; + gt_rxvalid_q <= #TCQ 1'b0; + gt_rxelecidle_q <= #TCQ 1'b0; + gt_rx_status_q <= #TCQ 3'b000; + gt_rx_phy_status_q <= #TCQ 1'b0; + gt_rx_is_skp0_q <= #TCQ 1'b0; + gt_rx_is_skp1_q <= #TCQ 1'b0; + + end else begin + reg_eios_detected <= #TCQ 1'b0; + reg_symbol_after_eios <= #TCQ 1'b0; + gt_rxcharisk_q <= #TCQ GT_RXCHARISK; + gt_rxelecidle_q <= #TCQ GT_RXELECIDLE; + gt_rxdata_q <= #TCQ GT_RXDATA; + gt_rx_phy_status_q <= #TCQ GT_RX_PHY_STATUS; + + //De-assert rx_valid signal when EIOS is detected on RXDATA + if(((reg_state_eios_det == 5'b10000)) && (PLM_IN_L0) + ) begin + + gt_rxvalid_q <= #TCQ 1'b0; + end + else if (GT_RXELECIDLE && !gt_rxvalid_q) begin + gt_rxvalid_q <= #TCQ 1'b0; + end + else begin + gt_rxvalid_q <= GT_RXVALID; + end + + if (gt_rxvalid_q) begin + gt_rx_status_q <= #TCQ GT_RX_STATUS; + + end + else if (!gt_rxvalid_q && PLM_IN_L0) begin + gt_rx_status_q <= #TCQ 3'b0; + end + else begin + gt_rx_status_q <= #TCQ GT_RX_STATUS; + end + + + + if (GT_RXCHARISK[0] && GT_RXDATA[7:0] == FTSOS_FTS) + gt_rx_is_skp0_q <= #TCQ 1'b1; + else + gt_rx_is_skp0_q <= #TCQ 1'b0; + + if (GT_RXCHARISK[1] && GT_RXDATA[15:8] == FTSOS_FTS) + gt_rx_is_skp1_q <= #TCQ 1'b1; + else + gt_rx_is_skp1_q <= #TCQ 1'b0; + + case ( state_eios_det ) + + EIOS_DET_IDL : begin + + if ((gt_rxcharisk_q[0]) && (gt_rxdata_q[7:0] == EIOS_COM) && + (gt_rxcharisk_q[1]) && (gt_rxdata_q[15:8] == EIOS_IDL)) begin + + reg_state_eios_det <= #TCQ EIOS_DET_NO_STR0; + reg_eios_detected <= #TCQ 1'b1; + // gt_rxvalid_q <= #TCQ 1'b0; + + end else if ((gt_rxcharisk_q[1]) && (gt_rxdata_q[15:8] == EIOS_COM)) + reg_state_eios_det <= #TCQ EIOS_DET_STR0; + else + reg_state_eios_det <= #TCQ EIOS_DET_IDL; + + end + + EIOS_DET_NO_STR0 : begin + + if ((gt_rxcharisk_q[0] && (gt_rxdata_q[7:0] == EIOS_IDL)) && + (gt_rxcharisk_q[1] && (gt_rxdata_q[15:8] == EIOS_IDL))) + begin + reg_state_eios_det <= #TCQ EIOS_DET_DONE; + gt_rxvalid_q <= #TCQ 1'b0; + end + else if (gt_rxcharisk_q[0] && (gt_rxdata_q[7:0] == EIOS_IDL)) begin + + reg_state_eios_det <= #TCQ EIOS_DET_DONE; + gt_rxvalid_q <= #TCQ 1'b0; + end + else + reg_state_eios_det <= #TCQ EIOS_DET_IDL; + + end + + EIOS_DET_STR0 : begin + + if ((gt_rxcharisk_q[0] && (gt_rxdata_q[7:0] == EIOS_IDL)) && + (gt_rxcharisk_q[1] && (gt_rxdata_q[15:8] == EIOS_IDL))) begin + + reg_state_eios_det <= #TCQ EIOS_DET_STR1; + reg_eios_detected <= #TCQ 1'b1; + gt_rxvalid_q <= #TCQ 1'b0; + reg_symbol_after_eios <= #TCQ 1'b1; + + end else + reg_state_eios_det <= #TCQ EIOS_DET_IDL; + + end + + EIOS_DET_STR1 : begin + + if ((gt_rxcharisk_q[0]) && (gt_rxdata_q[7:0] == EIOS_IDL)) + begin + reg_state_eios_det <= #TCQ EIOS_DET_DONE; + gt_rxvalid_q <= #TCQ 1'b0; + end + else + reg_state_eios_det <= #TCQ EIOS_DET_IDL; + + end + + EIOS_DET_DONE : begin + + reg_state_eios_det <= #TCQ EIOS_DET_IDL; + + end + + endcase + + end + + end + assign state_eios_det = reg_state_eios_det; + assign eios_detected = reg_eios_detected; + assign symbol_after_eios = reg_symbol_after_eios; + /*SRL16E #(.INIT(0)) rx_elec_idle_delay (.Q(USER_RXELECIDLE), + .D(gt_rxelecidle_q), + .CLK(USER_CLK), + .CE(1'b1), .A3(1'b1),.A2(1'b1),.A1(1'b1),.A0(1'b1)); +*/ +wire rst_l = ~RESET; + + +assign USER_RXVALID = gt_rxvalid_q; +assign USER_RXCHARISK[0] = gt_rxvalid_q ? gt_rxcharisk_q[0] : 1'b0; +assign USER_RXCHARISK[1] = (gt_rxvalid_q && !symbol_after_eios) ? gt_rxcharisk_q[1] : 1'b0; +assign USER_RXDATA[7:0] = gt_rxdata_q[7:0]; +assign USER_RXDATA[15:8] = gt_rxdata_q[15:8]; +assign USER_RX_STATUS = gt_rx_status_q; +assign USER_RX_PHY_STATUS = gt_rx_phy_status_q; +assign USER_RXELECIDLE = gt_rxelecidle_q; + + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gt_top.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gt_top.v new file mode 100644 index 0000000..a7b0f0a --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gt_top.v @@ -0,0 +1,1027 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_gt_top.v +// Version : 3.3 +//-- Description: GTX module for 7-series Integrated PCIe Block +//-- +//-- +//-- +//-------------------------------------------------------------------------------- + +`timescale 1ns/1ns + +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_gt_top # +( + parameter LINK_CAP_MAX_LINK_WIDTH = 8, // 1 - x1 , 2 - x2 , 4 - x4 , 8 - x8 + parameter REF_CLK_FREQ = 0, // 0 - 100 MHz , 1 - 125 MHz , 2 - 250 MHz + parameter USER_CLK2_DIV2 = "FALSE", // "FALSE" => user_clk2 = user_clk + // "TRUE" => user_clk2 = user_clk/2, where user_clk = 500 or 250 MHz. + parameter integer USER_CLK_FREQ = 3, // 0 - 31.25 MHz , 1 - 62.5 MHz , 2 - 125 MHz , 3 - 250 MHz , 4 - 500Mhz + parameter PL_FAST_TRAIN = "FALSE", // Simulation Speedup + parameter PCIE_EXT_CLK = "FALSE", // Use External Clocking + parameter PCIE_USE_MODE = "1.0", // 1.0 = K325T IES, 1.1 = VX485T IES, 3.0 = K325T GES + parameter PCIE_GT_DEVICE = "GTX", // Select the GT to use (GTP for Artix-7, GTX for K7/V7) + parameter PCIE_PLL_SEL = "CPLL", // Select the PLL (CPLL or QPLL) + parameter PCIE_ASYNC_EN = "FALSE", // Asynchronous Clocking Enable + parameter PCIE_TXBUF_EN = "FALSE", // Use the Tansmit Buffer + parameter PCIE_EXT_GT_COMMON = "FALSE", + parameter EXT_CH_GT_DRP = "FALSE", + parameter TX_MARGIN_FULL_0 = 7'b1001111, // 1000 mV + parameter TX_MARGIN_FULL_1 = 7'b1001110, // 950 mV + parameter TX_MARGIN_FULL_2 = 7'b1001101, // 900 mV + parameter TX_MARGIN_FULL_3 = 7'b1001100, // 850 mV + parameter TX_MARGIN_FULL_4 = 7'b1000011, // 400 mV + parameter TX_MARGIN_LOW_0 = 7'b1000101, // 500 mV + parameter TX_MARGIN_LOW_1 = 7'b1000110, // 450 mV + parameter TX_MARGIN_LOW_2 = 7'b1000011, // 400 mV + parameter TX_MARGIN_LOW_3 = 7'b1000010, // 350 mV + parameter TX_MARGIN_LOW_4 = 7'b1000000, + + parameter PCIE_CHAN_BOND = 0, + parameter TCQ = 1 //synthesis warning solved: parameter declaration becomes local +) +( + //-----------------------------------------------------------------------------------------------------------------// + // pl ltssm + input wire [5:0] pl_ltssm_state , + // Pipe Per-Link Signals + input wire pipe_tx_rcvr_det , + input wire pipe_tx_reset , + input wire pipe_tx_rate , + input wire pipe_tx_deemph , + input wire [2:0] pipe_tx_margin , + input wire pipe_tx_swing , + + //-----------------------------------------------------------------------------------------------------------------// + // Pipe Per-Lane Signals // + //-----------------------------------------------------------------------------------------------------------------// + + + // Pipe Per-Lane Signals - Lane 0 + output wire [ 1:0] pipe_rx0_char_is_k , + output wire [15:0] pipe_rx0_data , + output wire pipe_rx0_valid , + output wire pipe_rx0_chanisaligned , + output wire [ 2:0] pipe_rx0_status , + output wire pipe_rx0_phy_status , + output wire pipe_rx0_elec_idle , + input wire pipe_rx0_polarity , + input wire pipe_tx0_compliance , + input wire [ 1:0] pipe_tx0_char_is_k , + input wire [15:0] pipe_tx0_data , + input wire pipe_tx0_elec_idle , + input wire [ 1:0] pipe_tx0_powerdown , + + // Pipe Per-Lane Signals - Lane 1 + output wire [ 1:0] pipe_rx1_char_is_k , + output wire [15:0] pipe_rx1_data , + output wire pipe_rx1_valid , + output wire pipe_rx1_chanisaligned , + output wire [ 2:0] pipe_rx1_status , + output wire pipe_rx1_phy_status , + output wire pipe_rx1_elec_idle , + input wire pipe_rx1_polarity , + input wire pipe_tx1_compliance , + input wire [ 1:0] pipe_tx1_char_is_k , + input wire [15:0] pipe_tx1_data , + input wire pipe_tx1_elec_idle , + input wire [ 1:0] pipe_tx1_powerdown , + + // Pipe Per-Lane Signals - Lane 2 + output wire [ 1:0] pipe_rx2_char_is_k , + output wire [15:0] pipe_rx2_data , + output wire pipe_rx2_valid , + output wire pipe_rx2_chanisaligned , + output wire [ 2:0] pipe_rx2_status , + output wire pipe_rx2_phy_status , + output wire pipe_rx2_elec_idle , + input wire pipe_rx2_polarity , + input wire pipe_tx2_compliance , + input wire [ 1:0] pipe_tx2_char_is_k , + input wire [15:0] pipe_tx2_data , + input wire pipe_tx2_elec_idle , + input wire [ 1:0] pipe_tx2_powerdown , + + // Pipe Per-Lane Signals - Lane 3 + output wire [ 1:0] pipe_rx3_char_is_k , + output wire [15:0] pipe_rx3_data , + output wire pipe_rx3_valid , + output wire pipe_rx3_chanisaligned , + output wire [ 2:0] pipe_rx3_status , + output wire pipe_rx3_phy_status , + output wire pipe_rx3_elec_idle , + input wire pipe_rx3_polarity , + input wire pipe_tx3_compliance , + input wire [ 1:0] pipe_tx3_char_is_k , + input wire [15:0] pipe_tx3_data , + input wire pipe_tx3_elec_idle , + input wire [ 1:0] pipe_tx3_powerdown , + + // Pipe Per-Lane Signals - Lane 4 + output wire [ 1:0] pipe_rx4_char_is_k , + output wire [15:0] pipe_rx4_data , + output wire pipe_rx4_valid , + output wire pipe_rx4_chanisaligned , + output wire [ 2:0] pipe_rx4_status , + output wire pipe_rx4_phy_status , + output wire pipe_rx4_elec_idle , + input wire pipe_rx4_polarity , + input wire pipe_tx4_compliance , + input wire [ 1:0] pipe_tx4_char_is_k , + input wire [15:0] pipe_tx4_data , + input wire pipe_tx4_elec_idle , + input wire [ 1:0] pipe_tx4_powerdown , + + // Pipe Per-Lane Signals - Lane 5 + output wire [ 1:0] pipe_rx5_char_is_k , + output wire [15:0] pipe_rx5_data , + output wire pipe_rx5_valid , + output wire pipe_rx5_chanisaligned , + output wire [ 2:0] pipe_rx5_status , + output wire pipe_rx5_phy_status , + output wire pipe_rx5_elec_idle , + input wire pipe_rx5_polarity , + input wire pipe_tx5_compliance , + input wire [ 1:0] pipe_tx5_char_is_k , + input wire [15:0] pipe_tx5_data , + input wire pipe_tx5_elec_idle , + input wire [ 1:0] pipe_tx5_powerdown , + + // Pipe Per-Lane Signals - Lane 6 + output wire [ 1:0] pipe_rx6_char_is_k , + output wire [15:0] pipe_rx6_data , + output wire pipe_rx6_valid , + output wire pipe_rx6_chanisaligned , + output wire [ 2:0] pipe_rx6_status , + output wire pipe_rx6_phy_status , + output wire pipe_rx6_elec_idle , + input wire pipe_rx6_polarity , + input wire pipe_tx6_compliance , + input wire [ 1:0] pipe_tx6_char_is_k , + input wire [15:0] pipe_tx6_data , + input wire pipe_tx6_elec_idle , + input wire [ 1:0] pipe_tx6_powerdown , + + // Pipe Per-Lane Signals - Lane 7 + output wire [ 1:0] pipe_rx7_char_is_k , + output wire [15:0] pipe_rx7_data , + output wire pipe_rx7_valid , + output wire pipe_rx7_chanisaligned , + output wire [ 2:0] pipe_rx7_status , + output wire pipe_rx7_phy_status , + output wire pipe_rx7_elec_idle , + input wire pipe_rx7_polarity , + input wire pipe_tx7_compliance , + input wire [ 1:0] pipe_tx7_char_is_k , + input wire [15:0] pipe_tx7_data , + input wire pipe_tx7_elec_idle , + input wire [ 1:0] pipe_tx7_powerdown , + + // PCI Express signals + output wire [ (LINK_CAP_MAX_LINK_WIDTH-1):0] pci_exp_txn , + output wire [ (LINK_CAP_MAX_LINK_WIDTH-1):0] pci_exp_txp , + input wire [ (LINK_CAP_MAX_LINK_WIDTH-1):0] pci_exp_rxn , + input wire [ (LINK_CAP_MAX_LINK_WIDTH-1):0] pci_exp_rxp , + + // Non PIPE signals + input wire sys_clk , + input wire sys_rst_n , + input wire PIPE_MMCM_RST_N , + output wire pipe_clk , + output wire user_clk , + output wire user_clk2 , + +//----------- Shared Logic Internal-------------------------------------- + + output INT_PCLK_OUT_SLAVE, // PCLK | PCLK + output INT_RXUSRCLK_OUT, // RXUSERCLK + output [(LINK_CAP_MAX_LINK_WIDTH-1):0] INT_RXOUTCLK_OUT, // RX recovered clock + output INT_DCLK_OUT, // DCLK | DCLK + output INT_USERCLK1_OUT, // Optional user clock + output INT_USERCLK2_OUT, // Optional user clock + output INT_OOBCLK_OUT, // OOB | OOB + output INT_MMCM_LOCK_OUT, // Async | Async + output [1:0] INT_QPLLLOCK_OUT, + output [1:0] INT_QPLLOUTCLK_OUT, + output [1:0] INT_QPLLOUTREFCLK_OUT, + input [(LINK_CAP_MAX_LINK_WIDTH-1):0] INT_PCLK_SEL_SLAVE, + + // Shared Logic External + + //---------- External GT COMMON Ports ---------------------- + input [11:0] qpll_drp_crscode, + input [17:0] qpll_drp_fsm, + input [1:0] qpll_drp_done, + input [1:0] qpll_drp_reset, + input [1:0] qpll_qplllock, + input [1:0] qpll_qplloutclk, + input [1:0] qpll_qplloutrefclk, + output qpll_qplld, + output [1:0] qpll_qpllreset, + output qpll_drp_clk, + output qpll_drp_rst_n, + output qpll_drp_ovrd, + output qpll_drp_gen3, + output qpll_drp_start, + + //---------- External Clock Ports ---------------------- + input PIPE_PCLK_IN, // PCLK | PCLK + input PIPE_RXUSRCLK_IN, // RXUSERCLK + input [LINK_CAP_MAX_LINK_WIDTH-1:0] PIPE_RXOUTCLK_IN, // RX recovered clock + input PIPE_DCLK_IN, // DCLK | DCLK + input PIPE_USERCLK1_IN, // Optional user clock + input PIPE_USERCLK2_IN, // Optional user clock + input PIPE_OOBCLK_IN, // OOB | OOB + input PIPE_MMCM_LOCK_IN, // Async | Async + output PIPE_TXOUTCLK_OUT, // PCLK | PCLK + output [LINK_CAP_MAX_LINK_WIDTH-1:0] PIPE_RXOUTCLK_OUT, // RX recovered clock (for debug only) + output [LINK_CAP_MAX_LINK_WIDTH-1:0] PIPE_PCLK_SEL_OUT, // PCLK | PCLK + output PIPE_GEN3_OUT , // PCLK | PCLK + +//-----------TRANSCEIVER DEBUG-------------------------------- + + output [4:0] PIPE_RST_FSM, + output [11:0] PIPE_QRST_FSM, + output [(LINK_CAP_MAX_LINK_WIDTH*5)-1:0] PIPE_RATE_FSM, + output [(LINK_CAP_MAX_LINK_WIDTH*6)-1:0] PIPE_SYNC_FSM_TX, + output [(LINK_CAP_MAX_LINK_WIDTH*7)-1:0] PIPE_SYNC_FSM_RX, + output [(LINK_CAP_MAX_LINK_WIDTH*7)-1:0] PIPE_DRP_FSM, + + output PIPE_RST_IDLE, + output PIPE_QRST_IDLE, + output PIPE_RATE_IDLE, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] PIPE_EYESCANDATAERROR, + output [(LINK_CAP_MAX_LINK_WIDTH*3)-1:0] PIPE_RXSTATUS, + output [(LINK_CAP_MAX_LINK_WIDTH*15)-1:0] PIPE_DMONITOROUT, + + //---------- Debug Ports ------------------------------- + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] PIPE_CPLL_LOCK, + output [(LINK_CAP_MAX_LINK_WIDTH-1)>>2:0] PIPE_QPLL_LOCK, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] PIPE_RXPMARESETDONE, + output [(LINK_CAP_MAX_LINK_WIDTH*3)-1:0] PIPE_RXBUFSTATUS, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] PIPE_TXPHALIGNDONE, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] PIPE_TXPHINITDONE, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] PIPE_TXDLYSRESETDONE, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] PIPE_RXPHALIGNDONE, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] PIPE_RXDLYSRESETDONE, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] PIPE_RXSYNCDONE, + output [(LINK_CAP_MAX_LINK_WIDTH*8)-1:0] PIPE_RXDISPERR, + output [(LINK_CAP_MAX_LINK_WIDTH*8)-1:0] PIPE_RXNOTINTABLE, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] PIPE_RXCOMMADET, + + output [LINK_CAP_MAX_LINK_WIDTH-1:0] PIPE_DEBUG_0, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] PIPE_DEBUG_1, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] PIPE_DEBUG_2, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] PIPE_DEBUG_3, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] PIPE_DEBUG_4, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] PIPE_DEBUG_5, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] PIPE_DEBUG_6, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] PIPE_DEBUG_7, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] PIPE_DEBUG_8, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] PIPE_DEBUG_9, + output [31:0] PIPE_DEBUG, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] PIPE_JTAG_RDY, + + input [ 2:0] PIPE_TXPRBSSEL, + input [ 2:0] PIPE_RXPRBSSEL, + input PIPE_TXPRBSFORCEERR, + input PIPE_RXPRBSCNTRESET, + input [ 2:0] PIPE_LOOPBACK, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] PIPE_RXPRBSERR, + input [LINK_CAP_MAX_LINK_WIDTH-1:0] PIPE_TXINHIBIT, + + //-----------Channel DRP---------------------------------------- + output ext_ch_gt_drpclk, + input [(LINK_CAP_MAX_LINK_WIDTH*9)-1:0] ext_ch_gt_drpaddr, + input [LINK_CAP_MAX_LINK_WIDTH-1:0] ext_ch_gt_drpen, + input [(LINK_CAP_MAX_LINK_WIDTH*16)-1:0]ext_ch_gt_drpdi, + input [LINK_CAP_MAX_LINK_WIDTH-1:0] ext_ch_gt_drpwe, + + output [(LINK_CAP_MAX_LINK_WIDTH*16)-1:0]ext_ch_gt_drpdo, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] ext_ch_gt_drprdy, + + output wire phy_rdy_n +); + + + localparam USERCLK2_FREQ = (USER_CLK2_DIV2 == "FALSE") ? USER_CLK_FREQ : + (USER_CLK_FREQ == 4) ? 3 : + (USER_CLK_FREQ == 3) ? 2 : + USER_CLK_FREQ; + + localparam PCIE_LPM_DFE = (PL_FAST_TRAIN == "TRUE") ? "DFE" : "LPM"; + localparam PCIE_LINK_SPEED = (PL_FAST_TRAIN == "TRUE") ? 2 : 3; + + // The parameter PCIE_OOBCLK_MODE_ENABLE value should be "0" for simulation and for synthesis it should be 1 + //localparam PCIE_OOBCLK_MODE_ENABLE = (PL_FAST_TRAIN == "TRUE") ? 0 : 1; + localparam PCIE_OOBCLK_MODE_ENABLE = 1; + + localparam PCIE_TX_EIDLE_ASSERT_DELAY = (PL_FAST_TRAIN == "TRUE") ? 3'd4 : 3'd2; + + wire [ 7:0] gt_rx_phy_status_wire ; + wire [ 7:0] gt_rxchanisaligned_wire ; + wire [ 31:0] gt_rx_data_k_wire ; + wire [255:0] gt_rx_data_wire ; + wire [ 7:0] gt_rx_elec_idle_wire ; + wire [ 23:0] gt_rx_status_wire ; + wire [ 7:0] gt_rx_valid_wire ; + wire [ 7:0] gt_rx_polarity ; + wire [ 15:0] gt_power_down ; + wire [ 7:0] gt_tx_char_disp_mode ; + wire [ 31:0] gt_tx_data_k ; + wire [255:0] gt_tx_data ; + wire gt_tx_detect_rx_loopback ; + wire [ 7:0] gt_tx_elec_idle ; + wire [ 7:0] gt_rx_elec_idle_reset ; + wire [LINK_CAP_MAX_LINK_WIDTH-1:0] phystatus_rst ; + wire clock_locked ; + + wire [ 7:0] gt_rx_phy_status_wire_filter ; + wire [ 31:0] gt_rx_data_k_wire_filter ; + wire [255:0] gt_rx_data_wire_filter ; + wire [ 7:0] gt_rx_elec_idle_wire_filter ; + wire [ 23:0] gt_rx_status_wire_filter ; + wire [ 7:0] gt_rx_valid_wire_filter ; + + wire [LINK_CAP_MAX_LINK_WIDTH-1:0] gt_eyescandataerror ; + wire pipe_clk_int; + reg phy_rdy_n_int; + + reg reg_clock_locked; + wire all_phystatus_rst; + +reg [5:0] pl_ltssm_state_q; + +always @(posedge pipe_clk_int or negedge clock_locked) begin + + if (!clock_locked) + pl_ltssm_state_q <= #TCQ 6'b0; + else + pl_ltssm_state_q <= #TCQ pl_ltssm_state; + +end + + assign pipe_clk = pipe_clk_int ; + + wire plm_in_l0 = (pl_ltssm_state_q == 6'h16); + wire plm_in_rl = (pl_ltssm_state_q == 6'h1c); + wire plm_in_dt = (pl_ltssm_state_q == 6'h2d); + wire plm_in_rs = (pl_ltssm_state_q == 6'h1f); + +//-------------RX FILTER Instantiation----------------------------------------------------------// +genvar i; +generate for (i=0; i= 2 ) ? gt_rx_phy_status_wire[1] : 1'b0; +assign pipe_rx2_phy_status = (LINK_CAP_MAX_LINK_WIDTH >= 4 ) ? gt_rx_phy_status_wire[2] : 1'b0; +assign pipe_rx3_phy_status = (LINK_CAP_MAX_LINK_WIDTH >= 4 ) ? gt_rx_phy_status_wire[3] : 1'b0; +assign pipe_rx4_phy_status = (LINK_CAP_MAX_LINK_WIDTH >= 8 ) ? gt_rx_phy_status_wire[4] : 1'b0; +assign pipe_rx5_phy_status = (LINK_CAP_MAX_LINK_WIDTH >= 8 ) ? gt_rx_phy_status_wire[5] : 1'b0; +assign pipe_rx6_phy_status = (LINK_CAP_MAX_LINK_WIDTH >= 8 ) ? gt_rx_phy_status_wire[6] : 1'b0; +assign pipe_rx7_phy_status = (LINK_CAP_MAX_LINK_WIDTH >= 8 ) ? gt_rx_phy_status_wire[7] : 1'b0; + +assign pipe_rx0_chanisaligned = gt_rxchanisaligned_wire[0]; +assign pipe_rx1_chanisaligned = (LINK_CAP_MAX_LINK_WIDTH >= 2 ) ? gt_rxchanisaligned_wire[1] : 1'b0 ; +assign pipe_rx2_chanisaligned = (LINK_CAP_MAX_LINK_WIDTH >= 4 ) ? gt_rxchanisaligned_wire[2] : 1'b0 ; +assign pipe_rx3_chanisaligned = (LINK_CAP_MAX_LINK_WIDTH >= 4 ) ? gt_rxchanisaligned_wire[3] : 1'b0 ; +assign pipe_rx4_chanisaligned = (LINK_CAP_MAX_LINK_WIDTH >= 8 ) ? gt_rxchanisaligned_wire[4] : 1'b0 ; +assign pipe_rx5_chanisaligned = (LINK_CAP_MAX_LINK_WIDTH >= 8 ) ? gt_rxchanisaligned_wire[5] : 1'b0 ; +assign pipe_rx6_chanisaligned = (LINK_CAP_MAX_LINK_WIDTH >= 8 ) ? gt_rxchanisaligned_wire[6] : 1'b0 ; +assign pipe_rx7_chanisaligned = (LINK_CAP_MAX_LINK_WIDTH >= 8 ) ? gt_rxchanisaligned_wire[7] : 1'b0 ; + +//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< +//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + +generate + if (LINK_CAP_MAX_LINK_WIDTH == 1) + begin : rx_link_width_x1 + + assign pipe_rx0_char_is_k = {gt_rx_data_k_wire[1], gt_rx_data_k_wire[0]}; + assign pipe_rx1_char_is_k = 2'b0 ; + assign pipe_rx2_char_is_k = 2'b0 ; + assign pipe_rx3_char_is_k = 2'b0 ; + assign pipe_rx4_char_is_k = 2'b0 ; + assign pipe_rx5_char_is_k = 2'b0 ; + assign pipe_rx6_char_is_k = 2'b0 ; + assign pipe_rx7_char_is_k = 2'b0 ; + + //synthesis warning solved: for nets below does not have driver; --assigned remaining bits of net gt_rx_data_wire to '0' + assign gt_rx_data_k_wire[3:2] = 2'b0; + assign gt_rx_data_k_wire[5:4] = 2'b0; + assign gt_rx_data_k_wire[7:6] = 2'b0; + assign gt_rx_data_k_wire[9:8] = 2'b0; + assign gt_rx_data_k_wire[11:10] = 2'b0; + assign gt_rx_data_k_wire[13:12] = 2'b0; + assign gt_rx_data_k_wire[15:14] = 2'b0; + assign gt_rx_data_k_wire[17:16] = 2'b0; + assign gt_rx_data_k_wire[19:18] = 2'b0; + assign gt_rx_data_k_wire[21:20] = 2'b0; + assign gt_rx_data_k_wire[23:22] = 2'b0; + assign gt_rx_data_k_wire[25:24] = 2'b0; + assign gt_rx_data_k_wire[27:26] = 2'b0; + assign gt_rx_data_k_wire[29:28] = 2'b0; + assign gt_rx_data_k_wire[31:30] = 2'b0; + + assign pipe_rx0_data = {gt_rx_data_wire[ 15: 8], gt_rx_data_wire[ 7: 0]}; + assign pipe_rx1_data = 16'h0 ; + assign pipe_rx2_data = 16'h0 ; + assign pipe_rx3_data = 16'h0 ; + assign pipe_rx4_data = 16'h0 ; + assign pipe_rx5_data = 16'h0 ; + assign pipe_rx6_data = 16'h0 ; + assign pipe_rx7_data = 16'h0 ; + + //synthesis warning solved: for nets below does not have driver; --assigned remaining bits of net gt_rx_data_wire to '0' + assign gt_rx_data_wire[31:16] = 16'b0; + assign gt_rx_data_wire[47:32] = 16'b0; + assign gt_rx_data_wire[63:48] = 16'b0; + assign gt_rx_data_wire[79:64] = 16'b0; + assign gt_rx_data_wire[95:80] = 16'b0; + assign gt_rx_data_wire[111:96] = 16'b0; + assign gt_rx_data_wire[127:112] = 16'b0; + assign gt_rx_data_wire[143:128] = 16'b0; + assign gt_rx_data_wire[159:144] = 16'b0; + assign gt_rx_data_wire[175:160] = 16'b0; + assign gt_rx_data_wire[191:176] = 16'b0; + assign gt_rx_data_wire[207:192] = 16'b0; + assign gt_rx_data_wire[223:208] = 16'b0; + assign gt_rx_data_wire[239:224] = 16'b0; + assign gt_rx_data_wire[255:240] = 16'b0; + + end // rx_link_width_x1 + else if (LINK_CAP_MAX_LINK_WIDTH == 2) + begin : rx_link_width_x2 + + assign pipe_rx0_char_is_k = {gt_rx_data_k_wire[1], gt_rx_data_k_wire[0]}; + assign pipe_rx1_char_is_k = {gt_rx_data_k_wire[5], gt_rx_data_k_wire[4]}; + assign pipe_rx2_char_is_k = 2'b0 ; + assign pipe_rx3_char_is_k = 2'b0 ; + assign pipe_rx4_char_is_k = 2'b0 ; + assign pipe_rx5_char_is_k = 2'b0 ; + assign pipe_rx6_char_is_k = 2'b0 ; + assign pipe_rx7_char_is_k = 2'b0 ; + + //synthesis warning solved: for nets below does not have driver; --assigned remaining bits of net gt_rx_data_wire to '0' + assign gt_rx_data_k_wire[3:2] = 2'b0; + assign gt_rx_data_k_wire[7:6] = 2'b0; + assign gt_rx_data_k_wire[9:8] = 2'b0; + assign gt_rx_data_k_wire[11:10] = 2'b0; + assign gt_rx_data_k_wire[13:12] = 2'b0; + assign gt_rx_data_k_wire[15:14] = 2'b0; + assign gt_rx_data_k_wire[17:16] = 2'b0; + assign gt_rx_data_k_wire[19:18] = 2'b0; + assign gt_rx_data_k_wire[21:20] = 2'b0; + assign gt_rx_data_k_wire[23:22] = 2'b0; + assign gt_rx_data_k_wire[25:24] = 2'b0; + assign gt_rx_data_k_wire[27:26] = 2'b0; + assign gt_rx_data_k_wire[29:28] = 2'b0; + assign gt_rx_data_k_wire[31:30] = 2'b0; + + assign pipe_rx0_data = {gt_rx_data_wire[15: 8], gt_rx_data_wire[ 7: 0]}; + assign pipe_rx1_data = {gt_rx_data_wire[47:40], gt_rx_data_wire[39:32]} ; + assign pipe_rx2_data = 16'h0 ; + assign pipe_rx3_data = 16'h0 ; + assign pipe_rx4_data = 16'h0 ; + assign pipe_rx5_data = 16'h0 ; + assign pipe_rx6_data = 16'h0 ; + assign pipe_rx7_data = 16'h0 ; + + //synthesis warning solved: for nets below does not have driver; --assigned remaining bits of net gt_rx_data_wire to '0' + assign gt_rx_data_wire[31:16] = 16'b0; + assign gt_rx_data_wire[63:48] = 16'b0; + assign gt_rx_data_wire[79:64] = 16'b0; + assign gt_rx_data_wire[95:80] = 16'b0; + assign gt_rx_data_wire[111:96] = 16'b0; + assign gt_rx_data_wire[127:112] = 16'b0; + assign gt_rx_data_wire[143:128] = 16'b0; + assign gt_rx_data_wire[159:144] = 16'b0; + assign gt_rx_data_wire[175:160] = 16'b0; + assign gt_rx_data_wire[191:176] = 16'b0; + assign gt_rx_data_wire[207:192] = 16'b0; + assign gt_rx_data_wire[223:208] = 16'b0; + assign gt_rx_data_wire[239:224] = 16'b0; + assign gt_rx_data_wire[255:240] = 16'b0; + + end // rx_link_width_x2 + else if (LINK_CAP_MAX_LINK_WIDTH == 4) + begin : rx_link_width_x4 + + assign pipe_rx0_char_is_k = {gt_rx_data_k_wire[1], gt_rx_data_k_wire[0]}; + assign pipe_rx1_char_is_k = {gt_rx_data_k_wire[5], gt_rx_data_k_wire[4]}; + assign pipe_rx2_char_is_k = {gt_rx_data_k_wire[9], gt_rx_data_k_wire[8]}; + assign pipe_rx3_char_is_k = {gt_rx_data_k_wire[13], gt_rx_data_k_wire[12]}; + assign pipe_rx4_char_is_k = 2'b0 ; + assign pipe_rx5_char_is_k = 2'b0 ; + assign pipe_rx6_char_is_k = 2'b0 ; + assign pipe_rx7_char_is_k = 2'b0 ; + + //synthesis warning solved: for nets below does not have driver; --assigned remaining bits of net gt_rx_data_wire to '0' + assign gt_rx_data_k_wire[3:2] = 2'b0; + assign gt_rx_data_k_wire[7:6] = 2'b0; + assign gt_rx_data_k_wire[11:10] = 2'b0; + assign gt_rx_data_k_wire[15:14] = 2'b0; + assign gt_rx_data_k_wire[17:16] = 2'b0; + assign gt_rx_data_k_wire[19:18] = 2'b0; + assign gt_rx_data_k_wire[21:20] = 2'b0; + assign gt_rx_data_k_wire[23:22] = 2'b0; + assign gt_rx_data_k_wire[25:24] = 2'b0; + assign gt_rx_data_k_wire[27:26] = 2'b0; + assign gt_rx_data_k_wire[29:28] = 2'b0; + assign gt_rx_data_k_wire[31:30] = 2'b0; + + assign pipe_rx0_data = {gt_rx_data_wire[15: 8], gt_rx_data_wire[ 7: 0]}; + assign pipe_rx1_data = {gt_rx_data_wire[47:40], gt_rx_data_wire[39:32]}; + assign pipe_rx2_data = {gt_rx_data_wire[79:72], gt_rx_data_wire[71:64]}; + assign pipe_rx3_data = {gt_rx_data_wire[111:104], gt_rx_data_wire[103:96]}; + assign pipe_rx4_data = 16'h0 ; + assign pipe_rx5_data = 16'h0 ; + assign pipe_rx6_data = 16'h0 ; + assign pipe_rx7_data = 16'h0 ; + + //synthesis warning solved: for nets below does not have driver; --assigned remaining bits of net gt_rx_data_wire to '0' + assign gt_rx_data_wire[31:16] = 16'b0; + assign gt_rx_data_wire[63:48] = 16'b0; + assign gt_rx_data_wire[95:80] = 16'b0; + assign gt_rx_data_wire[127:112] = 16'b0; + assign gt_rx_data_wire[143:128] = 16'b0; + assign gt_rx_data_wire[159:144] = 16'b0; + assign gt_rx_data_wire[175:160] = 16'b0; + assign gt_rx_data_wire[191:176] = 16'b0; + assign gt_rx_data_wire[207:192] = 16'b0; + assign gt_rx_data_wire[223:208] = 16'b0; + assign gt_rx_data_wire[239:224] = 16'b0; + assign gt_rx_data_wire[255:240] = 16'b0; + + end // rx_link_width_x4 + else + begin : rx_link_width_x8 + + assign pipe_rx0_char_is_k = {gt_rx_data_k_wire[1], gt_rx_data_k_wire[0]}; + assign pipe_rx1_char_is_k = {gt_rx_data_k_wire[5], gt_rx_data_k_wire[4]}; + assign pipe_rx2_char_is_k = {gt_rx_data_k_wire[9], gt_rx_data_k_wire[8]}; + assign pipe_rx3_char_is_k = {gt_rx_data_k_wire[13], gt_rx_data_k_wire[12]}; + assign pipe_rx4_char_is_k = {gt_rx_data_k_wire[17], gt_rx_data_k_wire[16]}; + assign pipe_rx5_char_is_k = {gt_rx_data_k_wire[21], gt_rx_data_k_wire[20]}; + assign pipe_rx6_char_is_k = {gt_rx_data_k_wire[25], gt_rx_data_k_wire[24]}; + assign pipe_rx7_char_is_k = {gt_rx_data_k_wire[29], gt_rx_data_k_wire[28]}; + + //synthesis warning solved: for nets below does not have driver; --assigned remaining bits of net gt_rx_data_wire to '0' + assign gt_rx_data_k_wire[3:2] = 2'b0; + assign gt_rx_data_k_wire[7:6] = 2'b0; + assign gt_rx_data_k_wire[11:10] = 2'b0; + assign gt_rx_data_k_wire[15:14] = 2'b0; + assign gt_rx_data_k_wire[19:18] = 2'b0; + assign gt_rx_data_k_wire[23:22] = 2'b0; + assign gt_rx_data_k_wire[27:26] = 2'b0; + assign gt_rx_data_k_wire[31:30] = 2'b0; + + assign pipe_rx0_data = {gt_rx_data_wire[15: 8], gt_rx_data_wire[ 7: 0]}; + assign pipe_rx1_data = {gt_rx_data_wire[47:40], gt_rx_data_wire[39:32]}; + assign pipe_rx2_data = {gt_rx_data_wire[79:72], gt_rx_data_wire[71:64]}; + assign pipe_rx3_data = {gt_rx_data_wire[111:104], gt_rx_data_wire[103:96]}; + assign pipe_rx4_data = {gt_rx_data_wire[143:136], gt_rx_data_wire[135:128]}; + assign pipe_rx5_data = {gt_rx_data_wire[175:168], gt_rx_data_wire[167:160]}; + assign pipe_rx6_data = {gt_rx_data_wire[207:200], gt_rx_data_wire[199:192]}; + assign pipe_rx7_data = {gt_rx_data_wire[239:232], gt_rx_data_wire[231:224]}; + + //synthesis warning solved: for nets below does not have driver; --assigned remaining bits of net gt_rx_data_wire to '0' + assign gt_rx_data_wire[31:16] = 16'b0; + assign gt_rx_data_wire[63:48] = 16'b0; + assign gt_rx_data_wire[95:80] = 16'b0; + assign gt_rx_data_wire[127:112] = 16'b0; + assign gt_rx_data_wire[159:144] = 16'b0; + assign gt_rx_data_wire[191:176] = 16'b0; + assign gt_rx_data_wire[223:208] = 16'b0; + assign gt_rx_data_wire[255:240] = 16'b0; + + end // rx_link_width_x8 +endgenerate + +assign pipe_rx0_status = gt_rx_status_wire[ 2: 0]; +assign pipe_rx1_status = (LINK_CAP_MAX_LINK_WIDTH >= 2 ) ? gt_rx_status_wire[ 5: 3] : 3'b0 ; +assign pipe_rx2_status = (LINK_CAP_MAX_LINK_WIDTH >= 4 ) ? gt_rx_status_wire[ 8: 6] : 3'b0 ; +assign pipe_rx3_status = (LINK_CAP_MAX_LINK_WIDTH >= 4 ) ? gt_rx_status_wire[11: 9] : 3'b0 ; +assign pipe_rx4_status = (LINK_CAP_MAX_LINK_WIDTH >= 8 ) ? gt_rx_status_wire[14:12] : 3'b0 ; +assign pipe_rx5_status = (LINK_CAP_MAX_LINK_WIDTH >= 8 ) ? gt_rx_status_wire[17:15] : 3'b0 ; +assign pipe_rx6_status = (LINK_CAP_MAX_LINK_WIDTH >= 8 ) ? gt_rx_status_wire[20:18] : 3'b0 ; +assign pipe_rx7_status = (LINK_CAP_MAX_LINK_WIDTH >= 8 ) ? gt_rx_status_wire[23:21] : 3'b0 ; + +//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< +//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + +assign pipe_rx0_elec_idle = gt_rx_elec_idle_wire[0]; +assign pipe_rx1_elec_idle = (LINK_CAP_MAX_LINK_WIDTH >= 2 ) ? gt_rx_elec_idle_wire[1] : 1'b1 ; +assign pipe_rx2_elec_idle = (LINK_CAP_MAX_LINK_WIDTH >= 4 ) ? gt_rx_elec_idle_wire[2] : 1'b1 ; +assign pipe_rx3_elec_idle = (LINK_CAP_MAX_LINK_WIDTH >= 4 ) ? gt_rx_elec_idle_wire[3] : 1'b1 ; +assign pipe_rx4_elec_idle = (LINK_CAP_MAX_LINK_WIDTH >= 8 ) ? gt_rx_elec_idle_wire[4] : 1'b1 ; +assign pipe_rx5_elec_idle = (LINK_CAP_MAX_LINK_WIDTH >= 8 ) ? gt_rx_elec_idle_wire[5] : 1'b1 ; +assign pipe_rx6_elec_idle = (LINK_CAP_MAX_LINK_WIDTH >= 8 ) ? gt_rx_elec_idle_wire[6] : 1'b1 ; +assign pipe_rx7_elec_idle = (LINK_CAP_MAX_LINK_WIDTH >= 8 ) ? gt_rx_elec_idle_wire[7] : 1'b1 ; + +assign pipe_rx0_valid = gt_rx_valid_wire[0]; +assign pipe_rx1_valid = (LINK_CAP_MAX_LINK_WIDTH >= 2 ) ? gt_rx_valid_wire[1] : 1'b0 ; +assign pipe_rx2_valid = (LINK_CAP_MAX_LINK_WIDTH >= 4 ) ? gt_rx_valid_wire[2] : 1'b0 ; +assign pipe_rx3_valid = (LINK_CAP_MAX_LINK_WIDTH >= 4 ) ? gt_rx_valid_wire[3] : 1'b0 ; +assign pipe_rx4_valid = (LINK_CAP_MAX_LINK_WIDTH >= 8 ) ? gt_rx_valid_wire[4] : 1'b0 ; +assign pipe_rx5_valid = (LINK_CAP_MAX_LINK_WIDTH >= 8 ) ? gt_rx_valid_wire[5] : 1'b0 ; +assign pipe_rx6_valid = (LINK_CAP_MAX_LINK_WIDTH >= 8 ) ? gt_rx_valid_wire[6] : 1'b0 ; +assign pipe_rx7_valid = (LINK_CAP_MAX_LINK_WIDTH >= 8 ) ? gt_rx_valid_wire[7] : 1'b0 ; + +assign gt_rx_polarity[0] = pipe_rx0_polarity; +assign gt_rx_polarity[1] = pipe_rx1_polarity; +assign gt_rx_polarity[2] = pipe_rx2_polarity; +assign gt_rx_polarity[3] = pipe_rx3_polarity; +assign gt_rx_polarity[4] = pipe_rx4_polarity; +assign gt_rx_polarity[5] = pipe_rx5_polarity; +assign gt_rx_polarity[6] = pipe_rx6_polarity; +assign gt_rx_polarity[7] = pipe_rx7_polarity; + +assign gt_power_down[ 1: 0] = pipe_tx0_powerdown; +assign gt_power_down[ 3: 2] = pipe_tx1_powerdown; +assign gt_power_down[ 5: 4] = pipe_tx2_powerdown; +assign gt_power_down[ 7: 6] = pipe_tx3_powerdown; +assign gt_power_down[ 9: 8] = pipe_tx4_powerdown; +assign gt_power_down[11:10] = pipe_tx5_powerdown; +assign gt_power_down[13:12] = pipe_tx6_powerdown; +assign gt_power_down[15:14] = pipe_tx7_powerdown; + +assign gt_tx_char_disp_mode = {pipe_tx7_compliance, + pipe_tx6_compliance, + pipe_tx5_compliance, + pipe_tx4_compliance, + pipe_tx3_compliance, + pipe_tx2_compliance, + pipe_tx1_compliance, + pipe_tx0_compliance}; + + +assign gt_tx_data_k = {2'd0, + pipe_tx7_char_is_k, + 2'd0, + pipe_tx6_char_is_k, + 2'd0, + pipe_tx5_char_is_k, + 2'd0, + pipe_tx4_char_is_k, + 2'd0, + pipe_tx3_char_is_k, + 2'd0, + pipe_tx2_char_is_k, + 2'd0, + pipe_tx1_char_is_k, + 2'd0, + pipe_tx0_char_is_k}; + +assign gt_tx_data = {16'd0, + pipe_tx7_data, + 16'd0, + pipe_tx6_data, + 16'd0, + pipe_tx5_data, + 16'd0, + pipe_tx4_data, + 16'd0, + pipe_tx3_data, + 16'd0, + pipe_tx2_data, + 16'd0, + pipe_tx1_data, + 16'd0, + pipe_tx0_data}; + +assign gt_tx_detect_rx_loopback = pipe_tx_rcvr_det; + +assign gt_tx_elec_idle = {pipe_tx7_elec_idle, + pipe_tx6_elec_idle, + pipe_tx5_elec_idle, + pipe_tx4_elec_idle, + pipe_tx3_elec_idle, + pipe_tx2_elec_idle, + pipe_tx1_elec_idle, + pipe_tx0_elec_idle}; + +always @(posedge pipe_clk_int or negedge clock_locked) begin + if (!clock_locked) + reg_clock_locked <= #TCQ 1'b0; + else + reg_clock_locked <= #TCQ 1'b1; +end + +always @(posedge pipe_clk_int) begin + if (!reg_clock_locked) + phy_rdy_n_int <= #TCQ 1'b0; + else + phy_rdy_n_int <= #TCQ all_phystatus_rst; +end + +assign all_phystatus_rst = (&phystatus_rst[LINK_CAP_MAX_LINK_WIDTH-1:0]); +assign phy_rdy_n = phy_rdy_n_int; + +endmodule + diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gt_wrapper.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gt_wrapper.v new file mode 100644 index 0000000..2507de4 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gt_wrapper.v @@ -0,0 +1,2369 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_gt_wrapper.v +// Version : 3.3 +//------------------------------------------------------------------------------ +// Filename : gt_wrapper.v +// Description : GT Wrapper Module for 7 Series Transceiver +// Version : 19.0 +//------------------------------------------------------------------------------ + + + +`timescale 1ns / 1ps + + + +//---------- GT Wrapper -------------------------------------------------------- +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_gt_wrapper # +( + parameter PCIE_SIM_MODE = "FALSE", // PCIe sim mode + parameter PCIE_SIM_SPEEDUP = "FALSE", // PCIe sim speedup + parameter PCIE_SIM_TX_EIDLE_DRIVE_LEVEL = "1", // PCIe sim TX electrical idle drive level + parameter PCIE_GT_DEVICE = "GTX", // PCIe GT device + parameter PCIE_USE_MODE = "3.0", // PCIe use mode + parameter PCIE_PLL_SEL = "CPLL", // PCIe PLL select for Gen1/Gen2 + parameter PCIE_LPM_DFE = "LPM", // PCIe LPM or DFE mode for Gen1/Gen2 only + parameter PCIE_LPM_DFE_GEN3 = "DFE", // PCIe LPM or DFE mode for Gen3 only + parameter PCIE_ASYNC_EN = "FALSE", // PCIe async enable + parameter PCIE_TXBUF_EN = "FALSE", // PCIe TX buffer enable for Gen1/Gen2 only + parameter PCIE_TXSYNC_MODE = 0, // PCIe TX sync mode + parameter PCIE_RXSYNC_MODE = 0, // PCIe RX sync mode + parameter PCIE_CHAN_BOND = 0, // PCIe channel bonding mode + parameter PCIE_CHAN_BOND_EN = "TRUE", // PCIe channel bonding enable for Gen1/Gen2 only + parameter PCIE_LANE = 1, // PCIe number of lane + parameter PCIE_REFCLK_FREQ = 0, // PCIe reference clock frequency + parameter PCIE_TX_EIDLE_ASSERT_DELAY = 3'd4, // PCIe TX electrical idle assert delay + parameter PCIE_OOBCLK_MODE = 1, // PCIe OOB clock mode + parameter TX_MARGIN_FULL_0 = 7'b1001111, // 1000 mV + parameter TX_MARGIN_FULL_1 = 7'b1001110, // 950 mV + parameter TX_MARGIN_FULL_2 = 7'b1001101, // 900 mV + parameter TX_MARGIN_FULL_3 = 7'b1001100, // 850 mV + parameter TX_MARGIN_FULL_4 = 7'b1000011, // 400 mV + parameter TX_MARGIN_LOW_0 = 7'b1000101, // 500 mV + parameter TX_MARGIN_LOW_1 = 7'b1000110 , // 450 mV + parameter TX_MARGIN_LOW_2 = 7'b1000011, // 400 mV + parameter TX_MARGIN_LOW_3 = 7'b1000010 , // 350 mV + parameter TX_MARGIN_LOW_4 = 7'b1000000 , + parameter PCIE_DEBUG_MODE = 0 // PCIe debug mode +) + +( + //---------- GT User Ports ----------------------------- + input GT_MASTER, + input GT_GEN3, + input GT_RX_CONVERGE, + + //---------- GT Clock Ports ---------------------------- + input GT_GTREFCLK0, + input GT_QPLLCLK, + input GT_QPLLREFCLK, + input GT_TXUSRCLK, + input GT_RXUSRCLK, + input GT_TXUSRCLK2, + input GT_RXUSRCLK2, + input GT_OOBCLK, + input [ 1:0] GT_TXSYSCLKSEL, + input [ 1:0] GT_RXSYSCLKSEL, + input GT_CPLLPDREFCLK, + output GT_TXOUTCLK, + output GT_RXOUTCLK, + output GT_CPLLLOCK, + output GT_RXCDRLOCK, + + //---------- GT Reset Ports ---------------------------- + input GT_CPLLPD, + input GT_CPLLRESET, + input GT_TXUSERRDY, + input GT_RXUSERRDY, + input GT_RESETOVRD, + input GT_GTTXRESET, + input GT_GTRXRESET, + input GT_TXPMARESET, + input GT_RXPMARESET, + input GT_RXCDRRESET, + input GT_RXCDRFREQRESET, + input GT_RXDFELPMRESET, + input GT_EYESCANRESET, + input GT_TXPCSRESET, + input GT_RXPCSRESET, + input GT_RXBUFRESET, + + output GT_EYESCANDATAERROR, + output GT_TXRESETDONE, + output GT_RXRESETDONE, + output GT_RXPMARESETDONE, + + //---------- GT TX Data Ports -------------------------- + input [31:0] GT_TXDATA, + input [ 3:0] GT_TXDATAK, + + output GT_TXP, + output GT_TXN, + + //---------- GT RX Data Ports -------------------------- + input GT_RXN, + input GT_RXP, + + output [31:0] GT_RXDATA, + output [ 3:0] GT_RXDATAK, + + //---------- GT Command Ports -------------------------- + input GT_TXDETECTRX, + input GT_TXELECIDLE, + input GT_TXCOMPLIANCE, + input GT_RXPOLARITY, + input [ 1:0] GT_TXPOWERDOWN, + input [ 1:0] GT_RXPOWERDOWN, + input [ 2:0] GT_TXRATE, + input [ 2:0] GT_RXRATE, + + //---------- GT Electrical Command Ports --------------- + input [ 2:0] GT_TXMARGIN, + input GT_TXSWING, + input GT_TXDEEMPH, + input GT_TXINHIBIT, + input [ 4:0] GT_TXPRECURSOR, + input [ 6:0] GT_TXMAINCURSOR, + input [ 4:0] GT_TXPOSTCURSOR, + + //---------- GT Status Ports --------------------------- + output GT_RXVALID, + output GT_PHYSTATUS, + output GT_RXELECIDLE, + output [ 2:0] GT_RXSTATUS, + output [ 2:0] GT_RXBUFSTATUS, + output GT_TXRATEDONE, + output GT_RXRATEDONE, + + output [7:0] GT_RXDISPERR, + output [7:0] GT_RXNOTINTABLE, + + //---------- GT DRP Ports ------------------------------ + input GT_DRPCLK, + input [ 8:0] GT_DRPADDR, + input GT_DRPEN, + input [15:0] GT_DRPDI, + input GT_DRPWE, + + output [15:0] GT_DRPDO, + output GT_DRPRDY, + + //---------- GT TX Sync Ports -------------------------- + input GT_TXPHALIGN, + input GT_TXPHALIGNEN, + input GT_TXPHINIT, + input GT_TXDLYBYPASS, + input GT_TXDLYSRESET, + input GT_TXDLYEN, + + output GT_TXDLYSRESETDONE, + output GT_TXPHINITDONE, + output GT_TXPHALIGNDONE, + + input GT_TXPHDLYRESET, + input GT_TXSYNCMODE, // GTH + input GT_TXSYNCIN, // GTH + input GT_TXSYNCALLIN, // GTH + + output GT_TXSYNCOUT, // GTH + output GT_TXSYNCDONE, // GTH + + //---------- GT RX Sync Ports -------------------------- + input GT_RXPHALIGN, + input GT_RXPHALIGNEN, + input GT_RXDLYBYPASS, + input GT_RXDLYSRESET, + input GT_RXDLYEN, + input GT_RXDDIEN, + + output GT_RXDLYSRESETDONE, + output GT_RXPHALIGNDONE, + + input GT_RXSYNCMODE, // GTH + input GT_RXSYNCIN, // GTH + input GT_RXSYNCALLIN, // GTH + + output GT_RXSYNCOUT, // GTH + output GT_RXSYNCDONE, // GTH + + //---------- GT Comma Alignment Ports ------------------ + input GT_RXSLIDE, + + output GT_RXCOMMADET, + output [ 3:0] GT_RXCHARISCOMMA, + output GT_RXBYTEISALIGNED, + output GT_RXBYTEREALIGN, + + //---------- GT Channel Bonding Ports ------------------ + input GT_RXCHBONDEN, + input [ 4:0] GT_RXCHBONDI, + input [ 2:0] GT_RXCHBONDLEVEL, + input GT_RXCHBONDMASTER, + input GT_RXCHBONDSLAVE, + + output GT_RXCHANISALIGNED, + output [ 4:0] GT_RXCHBONDO, + + //---------- GT PRBS/Loopback Ports -------------------- + input [ 2:0] GT_TXPRBSSEL, + input [ 2:0] GT_RXPRBSSEL, + input GT_TXPRBSFORCEERR, + input GT_RXPRBSCNTRESET, + input [ 2:0] GT_LOOPBACK, + + output GT_RXPRBSERR, + + //---------- GT Debug Ports ---------------------------- + output [14:0] GT_DMONITOROUT + +); + + //---------- Internal Signals -------------------------- + wire [ 2:0] txoutclksel; + wire [ 2:0] rxoutclksel; + wire [63:0] rxdata; + wire [ 7:0] rxdatak; + wire [ 7:0] rxchariscomma; + wire rxlpmen; + wire [14:0] dmonitorout; + wire dmonitorclk; + + wire cpllpd; + wire cpllrst; + + //---------- Select CPLL and Clock Dividers ------------ + localparam CPLL_REFCLK_DIV = 1; + localparam CPLL_FBDIV_45 = 5; + localparam CPLL_FBDIV = (PCIE_REFCLK_FREQ == 2) ? 2 : + (PCIE_REFCLK_FREQ == 1) ? 4 : 5; + localparam OUT_DIV = (PCIE_PLL_SEL == "QPLL") ? 4 : 2; + localparam CLK25_DIV = (PCIE_REFCLK_FREQ == 2) ? 10 : + (PCIE_REFCLK_FREQ == 1) ? 5 : 4; + + //---------- Select IES vs. GES ------------------------ + localparam CLKMUX_PD = ((PCIE_USE_MODE == "1.0") || (PCIE_USE_MODE == "1.1")) ? 1'd0 : 1'd1; + + //---------- Select GTP CPLL configuration ------------- + // PLL0/1_CFG[ 5:2] = CP1 : [ 8, 4, 2, 1] units + // PLL0/1_CFG[10:6] = CP2 : [16, 8, 4, 2, 1] units + // CP2/CP1 = 2 to 3 + // (8/4=2) = 27'h01F0210 = 0000_0001_1111_0000_0010_0001_0000 + // (9/3=3) = 27'h01F024C = 0000_0001_1111_0000_0010_0100_1100 + // (8/3=2.67) = 27'h01F020C = 0000_0001_1111_0000_0010_0000_1100 + // (7/3=2.33) = 27'h01F01CC = 0000_0001_1111_0000_0001_1100_1100 + // (6/3=2) = 27'h01F018C = 0000_0001_1111_0000_0001_1000_1100 + // (5/3=1.67) = 27'h01F014C = 0000_0001_1111_0000_0001_0100_1100 + // (6/2=3) = 27'h01F0188 = 0000_0001_1111_0000_0001_1000_1000 + //---------- Select GTX CPLL configuration ------------- + // CPLL_CFG[ 5: 2] = CP1 : [ 8, 4, 2, 1] units + // CPLL_CFG[22:18] = CP2 : [16, 8, 4, 2, 1] units + // CP2/CP1 = 2 to 3 + // (9/3=3) = 1010_0100_0000_0111_1100_1100 + //------------------------------------------------------ + localparam CPLL_CFG = ((PCIE_USE_MODE == "1.0") || (PCIE_USE_MODE == "1.1")) ? 24'hB407CC : 24'hA407CC; + + //---------- Select TX XCLK ---------------------------- + // TXOUT for TX Buffer Use + // TXUSR for TX Buffer Bypass + //------------------------------------------------------ + localparam TX_XCLK_SEL = (PCIE_TXBUF_EN == "TRUE") ? "TXOUT" : "TXUSR"; + + //---------- Select TX Receiver Detection Configuration + localparam TX_RXDETECT_CFG = (PCIE_REFCLK_FREQ == 2) ? 14'd250 : + (PCIE_REFCLK_FREQ == 1) ? 14'd125 : 14'd100; + localparam TX_RXDETECT_REF = (((PCIE_USE_MODE == "1.0") || (PCIE_USE_MODE == "1.1")) && (PCIE_SIM_MODE == "FALSE")) ? 3'b000 : 3'b011; + + //---------- Select PCS_RSVD_ATTR ---------------------- + // [0]: 1 = enable latch when bypassing TX buffer, 0 = disable latch when using TX buffer + // [1]: 1 = enable manual TX sync, 0 = enable auto TX sync + // [2]: 1 = enable manual RX sync, 0 = enable auto RX sync + // [3]: 1 = select external clock for OOB 0 = select reference clock for OOB + // [6]: 1 = enable DMON 0 = disable DMON + // [7]: 1 = filter stale TX[P/N] data when exiting TX electrical idle + // [8]: 1 = power up OOB 0 = power down OOB + //------------------------------------------------------ + localparam OOBCLK_SEL = (PCIE_OOBCLK_MODE == 0) ? 1'd0 : 1'd1; // GTX + localparam RXOOB_CLK_CFG = (PCIE_OOBCLK_MODE == 0) ? "PMA" : "FABRIC"; // GTH/GTP + + localparam PCS_RSVD_ATTR = ((PCIE_USE_MODE == "1.0") && (PCIE_TXBUF_EN == "FALSE")) ? {44'h0000000001C, OOBCLK_SEL, 3'd1} : + ((PCIE_USE_MODE == "1.0") && (PCIE_TXBUF_EN == "TRUE" )) ? {44'h0000000001C, OOBCLK_SEL, 3'd0} : + ((PCIE_RXSYNC_MODE == 0) && (PCIE_TXSYNC_MODE == 0) && (PCIE_TXBUF_EN == "FALSE")) ? {44'h0000000001C, OOBCLK_SEL, 3'd7} : + ((PCIE_RXSYNC_MODE == 0) && (PCIE_TXSYNC_MODE == 0) && (PCIE_TXBUF_EN == "TRUE" )) ? {44'h0000000001C, OOBCLK_SEL, 3'd6} : + ((PCIE_RXSYNC_MODE == 0) && (PCIE_TXSYNC_MODE == 1) && (PCIE_TXBUF_EN == "FALSE")) ? {44'h0000000001C, OOBCLK_SEL, 3'd5} : + ((PCIE_RXSYNC_MODE == 0) && (PCIE_TXSYNC_MODE == 1) && (PCIE_TXBUF_EN == "TRUE" )) ? {44'h0000000001C, OOBCLK_SEL, 3'd4} : + ((PCIE_RXSYNC_MODE == 1) && (PCIE_TXSYNC_MODE == 0) && (PCIE_TXBUF_EN == "FALSE")) ? {44'h0000000001C, OOBCLK_SEL, 3'd3} : + ((PCIE_RXSYNC_MODE == 1) && (PCIE_TXSYNC_MODE == 0) && (PCIE_TXBUF_EN == "TRUE" )) ? {44'h0000000001C, OOBCLK_SEL, 3'd2} : + ((PCIE_RXSYNC_MODE == 1) && (PCIE_TXSYNC_MODE == 1) && (PCIE_TXBUF_EN == "FALSE")) ? {44'h0000000001C, OOBCLK_SEL, 3'd1} : + ((PCIE_RXSYNC_MODE == 1) && (PCIE_TXSYNC_MODE == 1) && (PCIE_TXBUF_EN == "TRUE" )) ? {44'h0000000001C, OOBCLK_SEL, 3'd0} : {44'h0000000001C, OOBCLK_SEL, 3'd7}; + + //---------- Select RXCDR_CFG -------------------------- + + //---------- GTX Note ---------------------------------- + // For GTX PCIe Gen1/Gen2 with 8B/10B, the following CDR setting may provide more margin + // Async 72'h03_8000_23FF_1040_0020 + // Sync: 72'h03_0000_23FF_1040_0020 + //------------------------------------------------------ + + localparam RXCDR_CFG_GTX = ((PCIE_USE_MODE == "1.0") || (PCIE_USE_MODE == "1.1")) ? + ((PCIE_ASYNC_EN == "TRUE") ? 72'b0000_0010_0000_0111_1111_1110_0010_0000_0110_0000_0010_0001_0001_0000_0000000000010000 + : 72'h11_07FE_4060_0104_0000): // IES setting + ((PCIE_ASYNC_EN == "TRUE") ? 72'h03_8000_23FF_1020_0020 // + : 72'h03_0000_23FF_1020_0020); // optimized for GES silicon + + localparam RXCDR_CFG_GTH = (PCIE_USE_MODE == "2.0") ? + ((PCIE_ASYNC_EN == "TRUE") ? 83'h0_0011_07FE_4060_2104_1010 + : 83'h0_0011_07FE_4060_0104_1010): // Optimized for IES silicon + ((PCIE_ASYNC_EN == "TRUE") ? 83'h0_0020_07FE_2000_C208_8018 + : 83'h0_0020_07FE_2000_C208_0018); // Optimized for 1.2 silicon + + localparam RXCDR_CFG_GTP = ((PCIE_ASYNC_EN == "TRUE") ? 83'h0_0001_07FE_4060_2104_1010 + : 83'h0_0001_07FE_4060_0104_1010); // Optimized for IES silicon + + + + + //---------- Select TX and RX Sync Mode ---------------- + localparam TXSYNC_OVRD = (PCIE_TXSYNC_MODE == 1) ? 1'd0 : 1'd1; + localparam RXSYNC_OVRD = (PCIE_TXSYNC_MODE == 1) ? 1'd0 : 1'd1; + + localparam TXSYNC_MULTILANE = (PCIE_LANE == 1) ? 1'd0 : 1'd1; + localparam RXSYNC_MULTILANE = (PCIE_LANE == 1) ? 1'd0 : 1'd1; + + //---------- Select Clock Correction Min and Max Latency + // CLK_COR_MIN_LAT = Larger of (2 * RXCHBONDLEVEL + 13) or (CHAN_BOND_MAX_SKEW + 11) + // = 13 when PCIE_LANE = 1 + // CLK_COR_MAX_LAT = CLK_COR_MIN_LAT + CLK_COR_SEQ_LEN + 1 + // = CLK_COR_MIN_LAT + 2 + //------------------------------------------------------ + + //---------- CLK_COR_MIN_LAT Look-up Table ------------- + // Lane | One-Hop | Daisy-Chain | Binary-Tree + //------------------------------------------------------ + // 0 | 13 | 13 | 13 + // 1 | 15 to 18 | 15 to 18 | 15 to 18 + // 2 | 15 to 18 | 17 to 18 | 15 to 18 + // 3 | 15 to 18 | 19 | 17 to 18 + // 4 | 15 to 18 | 21 | 17 to 18 + // 5 | 15 to 18 | 23 | 19 + // 6 | 15 to 18 | 25 | 19 + // 7 | 15 to 18 | 27 | 21 + //------------------------------------------------------ + + localparam CLK_COR_MIN_LAT = ((PCIE_LANE == 8) && (PCIE_CHAN_BOND != 0) && (PCIE_CHAN_BOND_EN == "TRUE")) ? ((PCIE_CHAN_BOND == 1) ? 27 : 21) : + ((PCIE_LANE == 7) && (PCIE_CHAN_BOND != 0) && (PCIE_CHAN_BOND_EN == "TRUE")) ? ((PCIE_CHAN_BOND == 1) ? 25 : 19) : + ((PCIE_LANE == 6) && (PCIE_CHAN_BOND != 0) && (PCIE_CHAN_BOND_EN == "TRUE")) ? ((PCIE_CHAN_BOND == 1) ? 23 : 19) : + ((PCIE_LANE == 5) && (PCIE_CHAN_BOND != 0) && (PCIE_CHAN_BOND_EN == "TRUE")) ? ((PCIE_CHAN_BOND == 1) ? 21 : 18) : + ((PCIE_LANE == 4) && (PCIE_CHAN_BOND != 0) && (PCIE_CHAN_BOND_EN == "TRUE")) ? ((PCIE_CHAN_BOND == 1) ? 19 : 18) : + ((PCIE_LANE == 3) && (PCIE_CHAN_BOND != 0) && (PCIE_CHAN_BOND_EN == "TRUE")) ? ((PCIE_CHAN_BOND == 1) ? 18 : 18) : + ((PCIE_LANE == 2) && (PCIE_CHAN_BOND != 0) && (PCIE_CHAN_BOND_EN == "TRUE")) ? ((PCIE_CHAN_BOND == 1) ? 18 : 18) : + ((PCIE_LANE == 1) || (PCIE_CHAN_BOND_EN == "FALSE")) ? 13 : 18; + + localparam CLK_COR_MAX_LAT = CLK_COR_MIN_LAT + 2; + + //---------- Simulation Speedup ------------------------ + //localparam CFOK_CFG_GTH = (PCIE_SIM_MODE == "TRUE") ? 42'h240_0004_0F80 : 42'h248_0004_0E80; // [8] : 1 = Skip CFOK + //localparam CFOK_CFG_GTP = (PCIE_SIM_MODE == "TRUE") ? 43'h000_0000_0000 : 43'h000_0000_0100; // [2] : 1 = Skip CFOK + + //---------- Select [TX/RX]OUTCLK ---------------------- + assign txoutclksel = GT_MASTER ? 3'd3 : 3'd0; + assign rxoutclksel = ((PCIE_DEBUG_MODE == 1) || ((PCIE_ASYNC_EN == "TRUE") && GT_MASTER)) ? 3'd2 : 3'd0; + + //---------- Select DFE vs. LPM ------------------------ + // Gen1/2 = Use LPM by default. Option to use DFE. + // Gen3 = Use DFE by default. Option to use LPM. + //------------------------------------------------------ + assign rxlpmen = GT_GEN3 ? ((PCIE_LPM_DFE_GEN3 == "LPM") ? 1'd1 : 1'd0) : ((PCIE_LPM_DFE == "LPM") ? 1'd1 : 1'd0); + + + +//---------- Generate DMONITOR Clock Buffer for Debug ------ +generate if (PCIE_DEBUG_MODE == 1) + + begin : dmonitorclk_i + //---------- DMONITOR CLK ------------------------------ + BUFG dmonitorclk_i + ( + //---------- Input --------------------------------- + .I (dmonitorout[7]), + //---------- Output -------------------------------- + .O (dmonitorclk) + ); + end + +else + + begin : dmonitorclk_i_disable + assign dmonitorclk = 1'd0; + end + +endgenerate + + +pcie_7x_0_gtx_cpllpd_ovrd cpllPDInst ( + .i_ibufds_gte2(GT_CPLLPDREFCLK), + .o_cpllpd_ovrd(cpllpd), + .o_cpllreset_ovrd(cpllrst)); + +//---------- Select GTX or GTH or GTP ------------------------------------------ +// Notes : Attributes that are commented out always use the GT default settings +//------------------------------------------------------------------------------ +generate if (PCIE_GT_DEVICE == "GTP") + + begin : gtp_channel + + //---------- GTP Channel Module -------------------------------------------- + GTPE2_CHANNEL # + ( + + //---------- Simulation Attributes ------------------------------------- + .SIM_RESET_SPEEDUP (PCIE_SIM_SPEEDUP), // + .SIM_RECEIVER_DETECT_PASS ("TRUE"), // + .SIM_TX_EIDLE_DRIVE_LEVEL (PCIE_SIM_TX_EIDLE_DRIVE_LEVEL), // + .SIM_VERSION (PCIE_USE_MODE), // + + //---------- Clock Attributes ------------------------------------------ + .TXOUT_DIV (OUT_DIV), // + .RXOUT_DIV (OUT_DIV), // + .TX_CLK25_DIV (CLK25_DIV), // + .RX_CLK25_DIV (CLK25_DIV), // + //.TX_CLKMUX_EN ( 1'b1), // GTP rename + //.RX_CLKMUX_EN ( 1'b1), // GTP rename + .TX_XCLK_SEL (TX_XCLK_SEL), // TXOUT = use TX buffer, TXUSR = bypass TX buffer + .RX_XCLK_SEL ("RXREC"), // RXREC = use RX buffer, RXUSR = bypass RX buffer + //.OUTREFCLK_SEL_INV ( 2'b11), // + + //---------- Reset Attributes ------------------------------------------ + .TXPCSRESET_TIME ( 5'b00001), // + .RXPCSRESET_TIME ( 5'b00001), // + .TXPMARESET_TIME ( 5'b00011), // + .RXPMARESET_TIME ( 5'b00011), // Optimized for sim + //.RXISCANRESET_TIME ( 5'b00001), // + + //---------- TX Data Attributes ---------------------------------------- + .TX_DATA_WIDTH (20), // 2-byte external datawidth for Gen1/Gen2 + + //---------- RX Data Attributes ---------------------------------------- + .RX_DATA_WIDTH (20), // 2-byte external datawidth for Gen1/Gen2 + + //---------- Command Attributes ---------------------------------------- + .TX_RXDETECT_CFG (TX_RXDETECT_CFG), // + .TX_RXDETECT_REF ( 3'b011), // + .RX_CM_SEL ( 2'd3), // 0 = AVTT, 1 = GND, 2 = Float, 3 = Programmable + .RX_CM_TRIM ( 4'b1010), // Select 800mV, Changed from 3 to 4-bits, optimized for IES + .TX_EIDLE_ASSERT_DELAY (PCIE_TX_EIDLE_ASSERT_DELAY), // Optimized for sim + .TX_EIDLE_DEASSERT_DELAY ( 3'b010), // Optimized for sim + //.PD_TRANS_TIME_FROM_P2 (12'h03C), // + .PD_TRANS_TIME_NONE_P2 ( 8'h09), // + //.PD_TRANS_TIME_TO_P2 ( 8'h64), // + //.TRANS_TIME_RATE ( 8'h0E), // + + //---------- Electrical Command Attributes ----------------------------- + .TX_DRIVE_MODE ("PIPE"), // Gen1/Gen2 = PIPE, Gen3 = PIPEGEN3 + .TX_DEEMPH0 ( 5'b10100), // 6.0 dB + .TX_DEEMPH1 ( 5'b01011), // 3.5 dB + .TX_MARGIN_FULL_0 ( 7'b1001111), // 1000 mV + .TX_MARGIN_FULL_1 ( 7'b1001110), // 950 mV + .TX_MARGIN_FULL_2 ( 7'b1001101), // 900 mV + .TX_MARGIN_FULL_3 ( 7'b1001100), // 850 mV + .TX_MARGIN_FULL_4 ( 7'b1000011), // 400 mV + .TX_MARGIN_LOW_0 ( 7'b1000101), // 500 mV + .TX_MARGIN_LOW_1 ( 7'b1000110), // 450 mV + .TX_MARGIN_LOW_2 ( 7'b1000011), // 400 mV + .TX_MARGIN_LOW_3 ( 7'b1000010), // 350 mV + .TX_MARGIN_LOW_4 ( 7'b1000000), // 250 mV + .TX_MAINCURSOR_SEL ( 1'b0), // + .TX_PREDRIVER_MODE ( 1'b0), // GTP + + //---------- Status Attributes ----------------------------------------- + //.RX_SIG_VALID_DLY ( 4), // CHECK + + //---------- DRP Attributes -------------------------------------------- + + //---------- PCS Attributes -------------------------------------------- + .PCS_PCIE_EN ("TRUE"), // PCIe + .PCS_RSVD_ATTR (48'h0000_0000_0100), // [8] : 1 = OOB power-up + + //---------- PMA Attributes ------------------------------------------- + //.CLK_COMMON_SWING ( 1'b0), // GTP new + //.PMA_RSV (32'd0), // + .PMA_RSV2 (32'h00002040), // Optimized for GES + //.PMA_RSV3 ( 2'd0), // + //.PMA_RSV4 ( 4'd0), // Changed from 15 to 4-bits + //.PMA_RSV5 ( 1'd0), // Changed from 4 to 1-bit + //.PMA_RSV6 ( 1'd0), // GTP new + //.PMA_RSV7 ( 1'd0), // GTP new + .RX_BIAS_CFG (16'h0F33), // Optimized for IES + .TERM_RCAL_CFG (15'b100001000010000), // Optimized for IES + .TERM_RCAL_OVRD ( 3'b000), // Optimized for IES + + //---------- TX PI ---------------------------------------------------- + //.TXPI_CFG0 ( 2'd0), // + //.TXPI_CFG1 ( 2'd0), // + //.TXPI_CFG2 ( 2'd0), // + //.TXPI_CFG3 ( 1'd0), // + //.TXPI_CFG4 ( 1'd0), // + //.TXPI_CFG5 ( 3'd000), // + //.TXPI_GREY_SEL ( 1'd0), // + //.TXPI_INVSTROBE_SEL ( 1'd0), // + //.TXPI_PPMCLK_SEL ("TXUSRCLK2"), // + //.TXPI_PPM_CFG ( 8'd0), // + //.TXPI_SYNFREQ_PPM ( 3'd0), // + + //---------- RX PI ----------------------------------------------------- + .RXPI_CFG0 ( 3'd0), // Changed from 3 to 2-bits, Optimized for IES + .RXPI_CFG1 ( 1'd1), // Changed from 2 to 1-bits, Optimized for IES + .RXPI_CFG2 ( 1'd1), // Changed from 2 to 1-bits, Optimized for IES + + //---------- CDR Attributes --------------------------------------------- + //.RXCDR_CFG (72'b0000_001000000_11111_11111_001000000_011_0000111_000_001000_010000_100000000000000), // CHECK + .RXCDR_CFG (RXCDR_CFG_GTP), // Optimized for IES + .RXCDR_LOCK_CFG ( 6'b010101), // [5:3] Window Refresh, [2:1] Window Size, [0] Enable Detection (sensitive lock = 6'b111001) CHECK + .RXCDR_HOLD_DURING_EIDLE ( 1'd1), // Hold RX CDR on electrical idle for Gen1/Gen2 + .RXCDR_FR_RESET_ON_EIDLE ( 1'd0), // Reset RX CDR frequency on electrical idle for Gen3 + .RXCDR_PH_RESET_ON_EIDLE ( 1'd0), // Reset RX CDR phase on electrical idle for Gen3 + //.RXCDRFREQRESET_TIME ( 5'b00001), // + //.RXCDRPHRESET_TIME ( 5'b00001), // + + //---------- LPM Attributes -------------------------------------------- + //.RXLPMRESET_TIME ( 7'b0001111), // GTP new + //.RXLPM_BIAS_STARTUP_DISABLE ( 1'b0), // GTP new + .RXLPM_CFG ( 4'b0110), // GTP new, optimized for IES + //.RXLPM_CFG1 ( 1'b0), // GTP new + //.RXLPM_CM_CFG ( 1'b0), // GTP new + .RXLPM_GC_CFG ( 9'b111100010), // GTP new, optimized for IES + .RXLPM_GC_CFG2 ( 3'b001), // GTP new, optimized for IES + //.RXLPM_HF_CFG (14'b00001111110000), // + .RXLPM_HF_CFG2 ( 5'b01010), // GTP new + //.RXLPM_HF_CFG3 ( 4'b0000), // GTP new + .RXLPM_HOLD_DURING_EIDLE ( 1'b1), // GTP new + .RXLPM_INCM_CFG ( 1'b1), // GTP new, optimized for IES + .RXLPM_IPCM_CFG ( 1'b0), // GTP new, optimized for IES + //.RXLPM_LF_CFG (18'b000000001111110000), // + .RXLPM_LF_CFG2 ( 5'b01010), // GTP new, optimized for IES + .RXLPM_OSINT_CFG ( 3'b100), // GTP new, optimized for IES + + //---------- OS Attributes --------------------------------------------- + .RX_OS_CFG (13'h0080), // CHECK + .RXOSCALRESET_TIME (5'b00011), // Optimized for IES + .RXOSCALRESET_TIMEOUT (5'b00000), // Disable timeout, Optimized for IES + + //---------- Eye Scan Attributes --------------------------------------- + //.ES_CLK_PHASE_SEL ( 1'b0), // + //.ES_CONTROL ( 6'd0), // + //.ES_ERRDET_EN ("FALSE"), // + .ES_EYE_SCAN_EN ("FALSE"), // + //.ES_HORZ_OFFSET (12'd0), // + //.ES_PMA_CFG (10'd0), // + //.ES_PRESCALE ( 5'd0), // + //.ES_QUAL_MASK (80'd0), // + //.ES_QUALIFIER (80'd0), // + //.ES_SDATA_MASK (80'd0), // + //.ES_VERT_OFFSET ( 9'd0), // + + //---------- TX Buffer Attributes -------------------------------------- + .TXBUF_EN (PCIE_TXBUF_EN), // + .TXBUF_RESET_ON_RATE_CHANGE ("TRUE"), // + + //---------- RX Buffer Attributes -------------------------------------- + .RXBUF_EN ("TRUE"), // + //.RX_BUFFER_CFG ( 6'd0), // + .RX_DEFER_RESET_BUF_EN ("TRUE"), // + .RXBUF_ADDR_MODE ("FULL"), // + .RXBUF_EIDLE_HI_CNT ( 4'd4), // Optimized for sim + .RXBUF_EIDLE_LO_CNT ( 4'd0), // Optimized for sim + .RXBUF_RESET_ON_CB_CHANGE ("TRUE"), // + .RXBUF_RESET_ON_COMMAALIGN ("FALSE"), // + .RXBUF_RESET_ON_EIDLE ("TRUE"), // PCIe + .RXBUF_RESET_ON_RATE_CHANGE ("TRUE"), // + .RXBUF_THRESH_OVRD ("FALSE"), // + .RXBUF_THRESH_OVFLW (61), // + .RXBUF_THRESH_UNDFLW ( 4), // + //.RXBUFRESET_TIME ( 5'b00001), // + + //---------- TX Sync Attributes ---------------------------------------- + .TXPH_CFG (16'h0780), // + .TXPH_MONITOR_SEL ( 5'd0), // + .TXPHDLY_CFG (24'h084020), // [19] : 1 = full range, 0 = half range + .TXDLY_CFG (16'h001F), // + .TXDLY_LCFG ( 9'h030), // + .TXDLY_TAP_CFG (16'd0), // + + .TXSYNC_OVRD (TXSYNC_OVRD), // + .TXSYNC_MULTILANE (TXSYNC_MULTILANE), // + .TXSYNC_SKIP_DA (1'b0), // + + //---------- RX Sync Attributes ---------------------------------------- + .RXPH_CFG (24'd0), // + .RXPH_MONITOR_SEL ( 5'd0), // + .RXPHDLY_CFG (24'h004020), // [19] : 1 = full range, 0 = half range + .RXDLY_CFG (16'h001F), // + .RXDLY_LCFG ( 9'h030), // + .RXDLY_TAP_CFG (16'd0), // + .RX_DDI_SEL ( 6'd0), // + + .RXSYNC_OVRD (RXSYNC_OVRD), // + .RXSYNC_MULTILANE (RXSYNC_MULTILANE), // + .RXSYNC_SKIP_DA (1'b0), // + + //---------- Comma Alignment Attributes -------------------------------- + .ALIGN_COMMA_DOUBLE ("FALSE"), // + .ALIGN_COMMA_ENABLE (10'b1111111111), // PCIe + .ALIGN_COMMA_WORD ( 1), // + .ALIGN_MCOMMA_DET ("TRUE"), // + .ALIGN_MCOMMA_VALUE (10'b1010000011), // + .ALIGN_PCOMMA_DET ("TRUE"), // + .ALIGN_PCOMMA_VALUE (10'b0101111100), // + .DEC_MCOMMA_DETECT ("TRUE"), // + .DEC_PCOMMA_DETECT ("TRUE"), // + .DEC_VALID_COMMA_ONLY ("FALSE"), // PCIe + .SHOW_REALIGN_COMMA ("FALSE"), // PCIe + .RXSLIDE_AUTO_WAIT ( 7), // + .RXSLIDE_MODE ("PMA"), // PCIe + + //---------- Channel Bonding Attributes -------------------------------- + .CHAN_BOND_KEEP_ALIGN ("TRUE"), // PCIe + .CHAN_BOND_MAX_SKEW ( 7), // + .CHAN_BOND_SEQ_LEN ( 4), // PCIe + .CHAN_BOND_SEQ_1_ENABLE ( 4'b1111), // + .CHAN_BOND_SEQ_1_1 (10'b0001001010), // D10.2 (4A) - TS1 + .CHAN_BOND_SEQ_1_2 (10'b0001001010), // D10.2 (4A) - TS1 + .CHAN_BOND_SEQ_1_3 (10'b0001001010), // D10.2 (4A) - TS1 + .CHAN_BOND_SEQ_1_4 (10'b0110111100), // K28.5 (BC) - COM + .CHAN_BOND_SEQ_2_USE ("TRUE"), // PCIe + .CHAN_BOND_SEQ_2_ENABLE (4'b1111), // + .CHAN_BOND_SEQ_2_1 (10'b0001000101), // D5.2 (45) - TS2 + .CHAN_BOND_SEQ_2_2 (10'b0001000101), // D5.2 (45) - TS2 + .CHAN_BOND_SEQ_2_3 (10'b0001000101), // D5.2 (45) - TS2 + .CHAN_BOND_SEQ_2_4 (10'b0110111100), // K28.5 (BC) - COM + .FTS_DESKEW_SEQ_ENABLE ( 4'b1111), // + .FTS_LANE_DESKEW_EN ("TRUE"), // PCIe + .FTS_LANE_DESKEW_CFG ( 4'b1111), // + + //---------- Clock Correction Attributes ------------------------------- + .CBCC_DATA_SOURCE_SEL ("DECODED"), // + .CLK_CORRECT_USE ("TRUE"), // + .CLK_COR_KEEP_IDLE ("TRUE"), // PCIe + .CLK_COR_MAX_LAT (CLK_COR_MAX_LAT), // + .CLK_COR_MIN_LAT (CLK_COR_MIN_LAT), // + .CLK_COR_PRECEDENCE ("TRUE"), // + .CLK_COR_REPEAT_WAIT ( 0), // + .CLK_COR_SEQ_LEN ( 1), // + .CLK_COR_SEQ_1_ENABLE ( 4'b1111), // + .CLK_COR_SEQ_1_1 (10'b0100011100), // K28.0 (1C) - SKP + .CLK_COR_SEQ_1_2 (10'b0000000000), // Disabled + .CLK_COR_SEQ_1_3 (10'b0000000000), // Disabled + .CLK_COR_SEQ_1_4 (10'b0000000000), // Disabled + .CLK_COR_SEQ_2_ENABLE ( 4'b0000), // Disabled + .CLK_COR_SEQ_2_USE ("FALSE"), // + .CLK_COR_SEQ_2_1 (10'b0000000000), // Disabled + .CLK_COR_SEQ_2_2 (10'b0000000000), // Disabled + .CLK_COR_SEQ_2_3 (10'b0000000000), // Disabled + .CLK_COR_SEQ_2_4 (10'b0000000000), // Disabled + + //---------- 8b10b Attributes ------------------------------------------ + .RX_DISPERR_SEQ_MATCH ("TRUE"), // + + //---------- 64b/66b & 64b/67b Attributes ------------------------------ + .GEARBOX_MODE ( 3'd0), // + .TXGEARBOX_EN ("FALSE"), // + .RXGEARBOX_EN ("FALSE"), // + + //---------- PRBS & Loopback Attributes --------------------------------- + .LOOPBACK_CFG ( 1'd0), // Enable latch when bypassing TX buffer, equivalent to GTX PCS_RSVD_ATTR[0] + .RXPRBS_ERR_LOOPBACK ( 1'd0), // + .TX_LOOPBACK_DRIVE_HIZ ("FALSE"), // + + //---------- OOB & SATA Attributes -------------------------------------- + .TXOOB_CFG ( 1'd1), // Filter stale TX data when exiting TX electrical idle, equivalent to GTX PCS_RSVD_ATTR[7] + //.RXOOB_CFG ( 7'b0000110), // + .RXOOB_CLK_CFG (RXOOB_CLK_CFG), // + //.SAS_MAX_COM (64), // + //.SAS_MIN_COM (36), // + //.SATA_BURST_SEQ_LEN ( 4'b1111), // + //.SATA_BURST_VAL ( 3'b100), // + //.SATA_PLL_CFG ("VCO_3000MHZ"), // + //.SATA_EIDLE_VAL ( 3'b100), // + //.SATA_MAX_BURST ( 8), // + //.SATA_MAX_INIT (21), // + //.SATA_MAX_WAKE ( 7), // + //.SATA_MIN_BURST ( 4), // + //.SATA_MIN_INIT (12), // + //.SATA_MIN_WAKE ( 4), // + + //---------- MISC ------------------------------------------------------ + .DMONITOR_CFG (24'h000B01), // + .RX_DEBUG_CFG (14'h0000), // Optimized for IES + //.TST_RSV (32'd0), // + //.UCODEER_CLR ( 1'd0) // + + //---------- GTP ------------------------------------------------------- + //.ACJTAG_DEBUG_MODE (1'd0), // + //.ACJTAG_MODE (1'd0), // + //.ACJTAG_RESET (1'd0), // + //.ADAPT_CFG0 (20'd0), // + .CFOK_CFG (43'h490_0004_0E80), // Changed from 42 to 43-bits, Optimized for IES + .CFOK_CFG2 ( 7'b010_0000), // Changed from 6 to 7-bits, Optimized for IES + .CFOK_CFG3 ( 7'b010_0000), // Changed from 6 to 7-bits, Optimized for IES + .CFOK_CFG4 ( 1'd0), // GTP new, Optimized for IES + .CFOK_CFG5 ( 2'd0), // GTP new, Optimized for IES + .CFOK_CFG6 ( 4'd0) // GTP new, Optimized for IES + + ) + gtpe2_channel_i + ( + + //---------- Clock ----------------------------------------------------- + .PLL0CLK (GT_QPLLCLK), // + .PLL1CLK (1'd0), // + .PLL0REFCLK (GT_QPLLREFCLK), // + .PLL1REFCLK (1'd0), // + .TXUSRCLK (GT_TXUSRCLK), // + .RXUSRCLK (GT_RXUSRCLK), // + .TXUSRCLK2 (GT_TXUSRCLK2), // + .RXUSRCLK2 (GT_RXUSRCLK2), // + .TXSYSCLKSEL (GT_TXSYSCLKSEL), // + .RXSYSCLKSEL (GT_RXSYSCLKSEL), // + .TXOUTCLKSEL (txoutclksel), // + .RXOUTCLKSEL (rxoutclksel), // + .CLKRSVD0 (1'd0), // + .CLKRSVD1 (1'd0), // + + .TXOUTCLK (GT_TXOUTCLK), // + .RXOUTCLK (GT_RXOUTCLK), // + .TXOUTCLKFABRIC (), // + .RXOUTCLKFABRIC (), // + .TXOUTCLKPCS (), // + .RXOUTCLKPCS (), // + .RXCDRLOCK (GT_RXCDRLOCK), // + + //---------- Reset ----------------------------------------------------- + .TXUSERRDY (GT_TXUSERRDY), // + .RXUSERRDY (GT_RXUSERRDY), // + .CFGRESET (1'd0), // + .GTRESETSEL (1'd0), // + .RESETOVRD (GT_RESETOVRD), // + .GTTXRESET (GT_GTTXRESET), // + .GTRXRESET (GT_GTRXRESET), // + + .TXRESETDONE (GT_TXRESETDONE), // + .RXRESETDONE (GT_RXRESETDONE), // + + //---------- TX Data --------------------------------------------------- + .TXDATA (GT_TXDATA), // + .TXCHARISK (GT_TXDATAK), // + + .GTPTXP (GT_TXP), // GTP + .GTPTXN (GT_TXN), // GTP + + //---------- RX Data --------------------------------------------------- + .GTPRXP (GT_RXP), // GTP + .GTPRXN (GT_RXN), // GTP + + .RXDATA (rxdata[31:0]), // + .RXCHARISK (rxdatak[3:0]), // + + //---------- Command --------------------------------------------------- + .TXDETECTRX (GT_TXDETECTRX), // + .TXPDELECIDLEMODE ( 1'd0), // + .RXELECIDLEMODE ( 2'd0), // + .TXELECIDLE (GT_TXELECIDLE), // + .TXCHARDISPMODE ({3'd0, GT_TXCOMPLIANCE}), // Changed from 8 to 4-bits + .TXCHARDISPVAL ( 4'd0), // Changed from 8 to 4-bits + .TXPOLARITY ( 1'b0), // + .RXPOLARITY (GT_RXPOLARITY), // + .TXPD (GT_TXPOWERDOWN), // + .RXPD (GT_RXPOWERDOWN), // + .TXRATE (GT_TXRATE), // + .RXRATE (GT_RXRATE), // + .TXRATEMODE (1'b0), // + .RXRATEMODE (1'b0), // + + //---------- Electrical Command ---------------------------------------- + .TXMARGIN (GT_TXMARGIN), // + .TXSWING (GT_TXSWING), // + .TXDEEMPH (GT_TXDEEMPH), // + .TXINHIBIT (GT_TXINHIBIT), // + .TXBUFDIFFCTRL (3'b100), // + .TXDIFFCTRL (4'b1100), // Select 850mV + .TXPRECURSOR (GT_TXPRECURSOR), // + .TXPRECURSORINV (1'd0), // + .TXMAINCURSOR (GT_TXMAINCURSOR), // + .TXPOSTCURSOR (GT_TXPOSTCURSOR), // + .TXPOSTCURSORINV (1'd0), // + + //---------- Status ---------------------------------------------------- + .RXVALID (GT_RXVALID), // + .PHYSTATUS (GT_PHYSTATUS), // + .RXELECIDLE (GT_RXELECIDLE), // + .RXSTATUS (GT_RXSTATUS), // + .TXRATEDONE (GT_TXRATEDONE), // + .RXRATEDONE (GT_RXRATEDONE), // + + //---------- DRP ------------------------------------------------------- + .DRPCLK (GT_DRPCLK), // + .DRPADDR (GT_DRPADDR), // + .DRPEN (GT_DRPEN), // + .DRPDI (GT_DRPDI), // + .DRPWE (GT_DRPWE), // + + .DRPDO (GT_DRPDO), // + .DRPRDY (GT_DRPRDY), // + + //---------- PMA ------------------------------------------------------- + .TXPMARESET (GT_TXPMARESET), // + .RXPMARESET (GT_RXPMARESET), // + .RXLPMRESET ( 1'd0), // GTP new + .RXLPMOSINTNTRLEN ( 1'd0), // GTP new + .RXLPMHFHOLD ( 1'd0), // + .RXLPMHFOVRDEN ( 1'd0), // + .RXLPMLFHOLD ( 1'd0), // + .RXLPMLFOVRDEN ( 1'd0), // + .PMARSVDIN0 ( 1'd0), // GTP new + .PMARSVDIN1 ( 1'd0), // GTP new + .PMARSVDIN2 ( 1'd0), // GTP new + .PMARSVDIN3 ( 1'd0), // GTP new + .PMARSVDIN4 ( 1'd0), // GTP new + .GTRSVD (16'd0), // + + .PMARSVDOUT0 (), // GTP new + .PMARSVDOUT1 (), // GTP new + .DMONITOROUT (dmonitorout), // GTP 15-bits + + //---------- PCS ------------------------------------------------------- + .TXPCSRESET (GT_TXPCSRESET), // + .RXPCSRESET (GT_RXPCSRESET), // + .PCSRSVDIN (16'd0), // [0]: 1 = TXRATE async, [1]: 1 = RXRATE async + + .PCSRSVDOUT (), // + + //---------- CDR ------------------------------------------------------- + .RXCDRRESET (GT_RXCDRRESET), // + .RXCDRRESETRSV (1'd0), // + .RXCDRFREQRESET (GT_RXCDRFREQRESET), // + .RXCDRHOLD (1'b0), // + .RXCDROVRDEN (1'd0), // + + //---------- PI -------------------------------------------------------- + .TXPIPPMEN (1'd0), // + .TXPIPPMOVRDEN (1'd0), // + .TXPIPPMPD (1'd0), // + .TXPIPPMSEL (1'd0), // + .TXPIPPMSTEPSIZE (5'd0), // + .TXPISOPD (1'd0), // GTP new + + //---------- DFE ------------------------------------------------------- + .RXDFEXYDEN (1'd0), // + + //---------- OS -------------------------------------------------------- + .RXOSHOLD (1'd0), // Optimized for IES + .RXOSOVRDEN (1'd0), // Optimized for IES + .RXOSINTEN (1'd1), // Optimized for IES + .RXOSINTHOLD (1'd0), // Optimized for IES + .RXOSINTNTRLEN (1'd0), // Optimized for IES + .RXOSINTOVRDEN (1'd0), // Optimized for IES + .RXOSINTPD (1'd0), // GTP new, Optimized for IES + .RXOSINTSTROBE (1'd0), // Optimized for IES + .RXOSINTTESTOVRDEN (1'd0), // Optimized for IES + .RXOSINTCFG (4'b0010), // Optimized for IES + .RXOSINTID0 (4'd0), // Optimized for IES + + .RXOSINTDONE (), // + .RXOSINTSTARTED (), // + .RXOSINTSTROBEDONE (), // + .RXOSINTSTROBESTARTED (), // + + //---------- Eye Scan -------------------------------------------------- + .EYESCANRESET (GT_EYESCANRESET), // + .EYESCANMODE (1'd0), // + .EYESCANTRIGGER (1'b0), // + + .EYESCANDATAERROR (GT_EYESCANDATAERROR), // + + //---------- TX Buffer ------------------------------------------------- + .TXBUFSTATUS (), // + + //---------- RX Buffer ------------------------------------------------- + .RXBUFRESET (GT_RXBUFRESET), // + + .RXBUFSTATUS (GT_RXBUFSTATUS), // + + //---------- TX Sync --------------------------------------------------- + .TXPHDLYRESET (GT_TXPHDLYRESET), // + .TXPHDLYTSTCLK (1'd0), // + .TXPHALIGN (GT_TXPHALIGN), // + .TXPHALIGNEN (GT_TXPHALIGNEN), // + .TXPHDLYPD (1'd0), // + .TXPHINIT (GT_TXPHINIT), // + .TXPHOVRDEN (1'd0), // + .TXDLYBYPASS (GT_TXDLYBYPASS), // + .TXDLYSRESET (GT_TXDLYSRESET), // + .TXDLYEN (GT_TXDLYEN), // + .TXDLYOVRDEN (1'd0), // + .TXDLYHOLD (1'd0), // + .TXDLYUPDOWN (1'd0), // + + .TXPHALIGNDONE (GT_TXPHALIGNDONE), // + .TXPHINITDONE (GT_TXPHINITDONE), // + .TXDLYSRESETDONE (GT_TXDLYSRESETDONE), // + + .TXSYNCMODE (GT_TXSYNCMODE), // + .TXSYNCIN (GT_TXSYNCIN), // + .TXSYNCALLIN (GT_TXSYNCALLIN), // + + .TXSYNCDONE (GT_TXSYNCDONE), // + .TXSYNCOUT (GT_TXSYNCOUT), // + + //---------- RX Sync --------------------------------------------------- + .RXPHDLYRESET (1'd0), // + .RXPHALIGN (GT_RXPHALIGN), // + .RXPHALIGNEN (GT_RXPHALIGNEN), // + .RXPHDLYPD (1'd0), // + .RXPHOVRDEN (1'd0), // + .RXDLYBYPASS (GT_RXDLYBYPASS), // + .RXDLYSRESET (GT_RXDLYSRESET), // + .RXDLYEN (GT_RXDLYEN), // + .RXDLYOVRDEN (1'd0), // + .RXDDIEN (GT_RXDDIEN), // + + .RXPHALIGNDONE (GT_RXPHALIGNDONE), // + .RXPHMONITOR (), // + .RXPHSLIPMONITOR (), // + .RXDLYSRESETDONE (GT_RXDLYSRESETDONE), // + + .RXSYNCMODE (GT_RXSYNCMODE), // + .RXSYNCIN (GT_RXSYNCIN), // + .RXSYNCALLIN (GT_RXSYNCALLIN), // + + .RXSYNCDONE (GT_RXSYNCDONE), // + .RXSYNCOUT (GT_RXSYNCOUT), // + + //---------- Comma Alignment ------------------------------------------- + .RXCOMMADETEN (1'd1), // + .RXMCOMMAALIGNEN (1'd1), // No Gen3 support in GTP + .RXPCOMMAALIGNEN (1'd1), // No Gen3 support in GTP + .RXSLIDE (GT_RXSLIDE), // + .RXCOMMADET (GT_RXCOMMADET), // + .RXCHARISCOMMA (rxchariscomma[3:0]), // + .RXBYTEISALIGNED (GT_RXBYTEISALIGNED), // + .RXBYTEREALIGN (GT_RXBYTEREALIGN), // + + //---------- Channel Bonding ------------------------------------------- + .RXCHBONDEN (GT_RXCHBONDEN), // + .RXCHBONDI (GT_RXCHBONDI[3:0]), // + .RXCHBONDLEVEL (GT_RXCHBONDLEVEL), // + .RXCHBONDMASTER (GT_RXCHBONDMASTER), // + .RXCHBONDSLAVE (GT_RXCHBONDSLAVE), // + + .RXCHANBONDSEQ (), // + .RXCHANISALIGNED (GT_RXCHANISALIGNED), // + .RXCHANREALIGN (), // + .RXCHBONDO (GT_RXCHBONDO[3:0]), // + + //---------- Clock Correction ----------------------------------------- + .RXCLKCORCNT (), // + + //---------- 8b10b ----------------------------------------------------- + .TX8B10BBYPASS (4'd0), // + .TX8B10BEN (1'b1), // No Gen3 support in GTP + .RX8B10BEN (1'b1), // No Gen3 support in GTP + + .RXDISPERR (GT_RXDISPERR[3:0]), // + .RXNOTINTABLE (GT_RXNOTINTABLE[3:0]), // + + //---------- 64b/66b & 64b/67b ----------------------------------------- + .TXHEADER (3'd0), // + .TXSEQUENCE (7'd0), // + .TXSTARTSEQ (1'd0), // + .RXGEARBOXSLIP (1'd0), // + + .TXGEARBOXREADY (), // + .RXDATAVALID (), // + .RXHEADER (), // + .RXHEADERVALID (), // + .RXSTARTOFSEQ (), // + + //---------- PRBS/Loopback --------------------------------------------- + .TXPRBSSEL (GT_TXPRBSSEL), // + .RXPRBSSEL (GT_RXPRBSSEL), // + .TXPRBSFORCEERR (GT_TXPRBSFORCEERR), // + .RXPRBSCNTRESET (GT_RXPRBSCNTRESET), // + .LOOPBACK (GT_LOOPBACK), // + + .RXPRBSERR (GT_RXPRBSERR), // + + //---------- OOB ------------------------------------------------------- + .SIGVALIDCLK (GT_OOBCLK), // Optimized for debug + .TXCOMINIT (1'd0), // + .TXCOMSAS (1'd0), // + .TXCOMWAKE (1'd0), // + .RXOOBRESET (1'd0), // + + .TXCOMFINISH (), // + .RXCOMINITDET (), // + .RXCOMSASDET (), // + .RXCOMWAKEDET (), // + + //---------- MISC ------------------------------------------------------ + .SETERRSTATUS ( 1'd0), // + .TXDIFFPD ( 1'd0), // + .TSTIN (20'hFFFFF), // + + //---------- GTP ------------------------------------------------------- + .RXADAPTSELTEST (14'd0), // + .DMONFIFORESET ( 1'd0), // + .DMONITORCLK (dmonitorclk), // + .RXOSCALRESET ( 1'd0), // + + .RXPMARESETDONE (GT_RXPMARESETDONE), // GTP + .TXPMARESETDONE () // + + ); + + assign GT_CPLLLOCK = 1'b0; + + end + +else if (PCIE_GT_DEVICE == "GTH") + + begin : gth_channel + + //---------- GTH Channel Module -------------------------------------------- + GTHE2_CHANNEL # + ( + + //---------- Simulation Attributes ------------------------------------- + .SIM_CPLLREFCLK_SEL (3'b001), // + .SIM_RESET_SPEEDUP (PCIE_SIM_SPEEDUP), // + .SIM_RECEIVER_DETECT_PASS ("TRUE"), // + .SIM_TX_EIDLE_DRIVE_LEVEL (PCIE_SIM_TX_EIDLE_DRIVE_LEVEL), // + .SIM_VERSION ("2.0"), // + + //---------- Clock Attributes ------------------------------------------ + .CPLL_REFCLK_DIV (CPLL_REFCLK_DIV), // + .CPLL_FBDIV_45 (CPLL_FBDIV_45), // + .CPLL_FBDIV (CPLL_FBDIV), // + .TXOUT_DIV (OUT_DIV), // + .RXOUT_DIV (OUT_DIV), // + .TX_CLK25_DIV (CLK25_DIV), // + .RX_CLK25_DIV (CLK25_DIV), // + .TX_CLKMUX_PD ( 1'b1), // GTH + .RX_CLKMUX_PD ( 1'b1), // GTH + .TX_XCLK_SEL (TX_XCLK_SEL), // TXOUT = use TX buffer, TXUSR = bypass TX buffer + .RX_XCLK_SEL ("RXREC"), // RXREC = use RX buffer, RXUSR = bypass RX buffer + .OUTREFCLK_SEL_INV ( 2'b11), // + .CPLL_CFG (29'h00A407CC), // Changed from 24 to 29-bits, Optimized for PCIe PLL BW + .CPLL_INIT_CFG (24'h00001E), // Optimized for IES + .CPLL_LOCK_CFG (16'h01E8), // Optimized for IES + //.USE_PCS_CLK_PHASE_SEL ( 1'd0) // GTH new + + //---------- Reset Attributes ------------------------------------------ + .TXPCSRESET_TIME (5'b00001), // + .RXPCSRESET_TIME (5'b00001), // + .TXPMARESET_TIME (5'b00011), // + .RXPMARESET_TIME (5'b00011), // Optimized for sim and for DRP + //.RXISCANRESET_TIME (5'b00001), // + //.RESET_POWERSAVE_DISABLE ( 1'd0), // GTH new + + //---------- TX Data Attributes ---------------------------------------- + .TX_DATA_WIDTH (20), // 2-byte external datawidth for Gen1/Gen2 + .TX_INT_DATAWIDTH ( 0), // 2-byte internal datawidth for Gen1/Gen2 + + //---------- RX Data Attributes ---------------------------------------- + .RX_DATA_WIDTH (20), // 2-byte external datawidth for Gen1/Gen2 + .RX_INT_DATAWIDTH ( 0), // 2-byte internal datawidth for Gen1/Gen2 + + //---------- Command Attributes ---------------------------------------- + .TX_RXDETECT_CFG (TX_RXDETECT_CFG), // + .TX_RXDETECT_PRECHARGE_TIME (17'h00001), // GTH new, Optimized for sim + .TX_RXDETECT_REF ( 3'b011), // + .RX_CM_SEL ( 2'b11), // 0 = AVTT, 1 = GND, 2 = Float, 3 = Programmable, optimized for silicon + .RX_CM_TRIM ( 4'b1010), // Select 800mV, Changed from 3 to 4-bits, optimized for silicon + .TX_EIDLE_ASSERT_DELAY (PCIE_TX_EIDLE_ASSERT_DELAY), // Optimized for sim (3'd4) + .TX_EIDLE_DEASSERT_DELAY ( 3'b100), // Optimized for sim + //.PD_TRANS_TIME_FROM_P2 (12'h03C), // + .PD_TRANS_TIME_NONE_P2 ( 8'h09), // Optimized for sim + //.PD_TRANS_TIME_TO_P2 ( 8'h64), // + //.TRANS_TIME_RATE ( 8'h0E), // + + //---------- Electrical Command Attributes ----------------------------- + .TX_DRIVE_MODE ("PIPE"), // Gen1/Gen2 = PIPE, Gen3 = PIPEGEN3 + .TX_DEEMPH0 ( 6'b010100), // 6.0 dB, optimized for compliance, changed from 5 to 6-bits + .TX_DEEMPH1 ( 6'b001011), // 3.5 dB, optimized for compliance, changed from 5 to 6-bits + .TX_MARGIN_FULL_0 ( 7'b1001111), // 1000 mV + .TX_MARGIN_FULL_1 ( 7'b1001110), // 950 mV + .TX_MARGIN_FULL_2 ( 7'b1001101), // 900 mV + .TX_MARGIN_FULL_3 ( 7'b1001100), // 850 mV + .TX_MARGIN_FULL_4 ( 7'b1000011), // 400 mV + .TX_MARGIN_LOW_0 ( 7'b1000101), // 500 mV + .TX_MARGIN_LOW_1 ( 7'b1000110), // 450 mV + .TX_MARGIN_LOW_2 ( 7'b1000011), // 400 mV + .TX_MARGIN_LOW_3 ( 7'b1000010), // 350 mV + .TX_MARGIN_LOW_4 ( 7'b1000000), // 250 mV + .TX_MAINCURSOR_SEL ( 1'b0), // + .TX_QPI_STATUS_EN ( 1'b0), // + + //---------- Status Attributes ----------------------------------------- + .RX_SIG_VALID_DLY (4), // Optimized for sim + + //---------- DRP Attributes -------------------------------------------- + + //---------- PCS Attributes -------------------------------------------- + .PCS_PCIE_EN ("TRUE"), // PCIe + .PCS_RSVD_ATTR (48'h0000_0000_0140), // [8] : 1 = OOB power-up, [6] : 1 = DMON enable, Optimized for IES + + //---------- PMA Attributes -------------------------------------------- + .PMA_RSV (32'h00000080), // Optimized for IES + .PMA_RSV2 (32'h1C00000A), // Changed from 16 to 32-bits, Optimized for IES + //.PMA_RSV3 ( 2'h0), // + .PMA_RSV4 (15'h0008), // GTH new, Optimized for IES + //.PMA_RSV5 ( 4'h00), // GTH new + .RX_BIAS_CFG (24'h0C0010), // Changed from 12 to 24-bits, Optimized for IES + .TERM_RCAL_CFG (15'b100001000010000), // Changed from 5 to 15-bits, Optimized for IES + .TERM_RCAL_OVRD ( 3'b000), // Changed from 1 to 3-bits, Optimized for IES + + //---------- TX PI ----------------------------------------------------- + //.TXPI_CFG0 ( 2'd0), // GTH new + //.TXPI_CFG1 ( 2'd0), // GTH new + //.TXPI_CFG2 ( 2'd0), // GTH new + //.TXPI_CFG3 ( 1'd0), // GTH new + //.TXPI_CFG4 ( 1'd0), // GTH new + //.TXPI_CFG5 ( 3'b100), // GTH new + //.TXPI_GREY_SEL ( 1'd0), // GTH new + //.TXPI_INVSTROBE_SEL ( 1'd0), // GTH new + //.TXPI_PPMCLK_SEL ("TXUSRCLK2"), // GTH new + //.TXPI_PPM_CFG ( 8'd0), // GTH new + //.TXPI_SYNFREQ_PPM ( 3'd0), // GTH new + + //---------- RX PI ----------------------------------------------------- + .RXPI_CFG0 (2'b00), // GTH new + .RXPI_CFG1 (2'b11), // GTH new + .RXPI_CFG2 (2'b11), // GTH new + .RXPI_CFG3 (2'b11), // GTH new + .RXPI_CFG4 (1'b0), // GTH new + .RXPI_CFG5 (1'b0), // GTH new + .RXPI_CFG6 (3'b100), // GTH new + + //---------- CDR Attributes -------------------------------------------- + .RXCDR_CFG (RXCDR_CFG_GTH), // + //.RXCDR_CFG (83'h0_0011_07FE_4060_0104_1010), // A. Changed from 72 to 83-bits, optimized for IES div1 (Gen2), +/-000ppm, default, converted from GTX GES VnC,(2 Gen1) + //.RXCDR_CFG (83'h0_0011_07FE_4060_2104_1010), // B. Changed from 72 to 83-bits, optimized for IES div1 (Gen2), +/-300ppm, default, converted from GTX GES VnC,(2 Gen1) + //.RXCDR_CFG (83'h0_0011_07FE_2060_0104_1010), // C. Changed from 72 to 83-bits, optimized for IES div1 (Gen2), +/-000ppm, converted from GTX GES recommended, (3 Gen1) + //.RXCDR_CFG (83'h0_0011_07FE_2060_2104_1010), // D. Changed from 72 to 83-bits, optimized for IES div1 (Gen2), +/-300ppm, converted from GTX GES recommended, (3 Gen1) + //.RXCDR_CFG (83'h0_0001_07FE_1060_0110_1010), // E. Changed from 72 to 83-bits, optimized for IES div2 (Gen1), +/-000ppm, default, (3 Gen2) + //.RXCDR_CFG (83'h0_0001_07FE_1060_2110_1010), // F. Changed from 72 to 83-bits, optimized for IES div2 (Gen1), +/-300ppm, default, (3 Gen2) + //.RXCDR_CFG (83'h0_0011_07FE_1060_0110_1010), // G. Changed from 72 to 83-bits, optimized for IES div2 (Gen1), +/-000ppm, converted from GTX GES recommended, (3 Gen2) + //.RXCDR_CFG (83'h0_0011_07FE_1060_2110_1010), // H. Changed from 72 to 83-bits, optimized for IES div2 (Gen1), +/-300ppm, converted from GTX GES recommended, (2 Gen1) + .RXCDR_LOCK_CFG ( 6'b010101), // [5:3] Window Refresh, [2:1] Window Size, [0] Enable Detection (sensitive lock = 6'b111001) + .RXCDR_HOLD_DURING_EIDLE ( 1'd1), // Hold RX CDR on electrical idle for Gen1/Gen2 + .RXCDR_FR_RESET_ON_EIDLE ( 1'd0), // Reset RX CDR frequency on electrical idle for Gen3 + .RXCDR_PH_RESET_ON_EIDLE ( 1'd0), // Reset RX CDR phase on electrical idle for Gen3 + //.RXCDRFREQRESET_TIME ( 5'b00001), // optimized for IES + //.RXCDRPHRESET_TIME ( 5'b00001), // optimized for IES + + //---------- LPM Attributes -------------------------------------------- + .RXLPM_HF_CFG (14'h0200), // Optimized for IES + .RXLPM_LF_CFG (18'h09000), // Changed from 14 to 18-bits, Optimized for IES + + //---------- DFE Attributes -------------------------------------------- + .RXDFELPMRESET_TIME ( 7'h0F), // Optimized for IES + .RX_DFE_AGC_CFG0 ( 2'h0), // GTH new, optimized for IES + .RX_DFE_AGC_CFG1 ( 3'h4), // GTH new, optimized for IES, DFE + .RX_DFE_AGC_CFG2 ( 4'h0), // GTH new, optimized for IES + .RX_DFE_AGC_OVRDEN ( 1'h1), // GTH new, optimized for IES + .RX_DFE_GAIN_CFG (23'h0020C0), // Optimized for IES + .RX_DFE_H2_CFG (12'h000), // Optimized for IES + .RX_DFE_H3_CFG (12'h040), // Optimized for IES + .RX_DFE_H4_CFG (11'h0E0), // Optimized for IES + .RX_DFE_H5_CFG (11'h0E0), // Optimized for IES + .RX_DFE_H6_CFG (11'h020), // GTH new, optimized for IES + .RX_DFE_H7_CFG (11'h020), // GTH new, optimized for IES + .RX_DFE_KL_CFG (33'h000000310), // Changed from 13 to 33-bits, optimized for IES + .RX_DFE_KL_LPM_KH_CFG0 ( 2'h2), // GTH new, optimized for IES, DFE + .RX_DFE_KL_LPM_KH_CFG1 ( 3'h2), // GTH new, optimized for IES + .RX_DFE_KL_LPM_KH_CFG2 ( 4'h2), // GTH new, optimized for IES + .RX_DFE_KL_LPM_KH_OVRDEN ( 1'h1), // GTH new, optimized for IES + .RX_DFE_KL_LPM_KL_CFG0 ( 2'h2), // GTH new, optimized for IES, DFE + .RX_DFE_KL_LPM_KL_CFG1 ( 3'h2), // GTH new, optimized for IES + .RX_DFE_KL_LPM_KL_CFG2 ( 4'h2), // GTH new, optimized for IES + .RX_DFE_KL_LPM_KL_OVRDEN ( 1'b1), // GTH new, optimized for IES + .RX_DFE_LPM_CFG (16'h0080), // Optimized for IES + .RX_DFELPM_CFG0 ( 4'h6), // GTH new, optimized for IES + .RX_DFELPM_CFG1 ( 4'h0), // GTH new, optimized for IES + .RX_DFELPM_KLKH_AGC_STUP_EN ( 1'h1), // GTH new, optimized for IES + .RX_DFE_LPM_HOLD_DURING_EIDLE ( 1'h1), // PCIe use mode + .RX_DFE_ST_CFG (54'h00_C100_000C_003F), // GTH new, optimized for IES + .RX_DFE_UT_CFG (17'h03800), // Optimized for IES + .RX_DFE_VP_CFG (17'h03AA3), // Optimized for IES + + //---------- OS Attributes --------------------------------------------- + .RX_OS_CFG (13'h0080), // Optimized for IES + .A_RXOSCALRESET ( 1'd0), // GTH new, optimized for IES + .RXOSCALRESET_TIME ( 5'b00011), // GTH new, optimized for IES + .RXOSCALRESET_TIMEOUT ( 5'b00000), // GTH new, disable timeout, optimized for IES + + //---------- Eye Scan Attributes --------------------------------------- + //.ES_CLK_PHASE_SEL ( 1'd0), // GTH new + //.ES_CONTROL ( 6'd0), // + //.ES_ERRDET_EN ("FALSE"), // + .ES_EYE_SCAN_EN ("FALSE"), // Optimized for IES + .ES_HORZ_OFFSET (12'h000), // Optimized for IES + //.ES_PMA_CFG (10'd0), // + //.ES_PRESCALE ( 5'd0), // + //.ES_QUAL_MASK (80'd0), // + //.ES_QUALIFIER (80'd0), // + //.ES_SDATA_MASK (80'd0), // + //.ES_VERT_OFFSET ( 9'd0), // + + //---------- TX Buffer Attributes -------------------------------------- + .TXBUF_EN (PCIE_TXBUF_EN), // + .TXBUF_RESET_ON_RATE_CHANGE ("TRUE"), // + + //---------- RX Buffer Attributes -------------------------------------- + .RXBUF_EN ("TRUE"), // + //.RX_BUFFER_CFG ( 6'd0), // + .RX_DEFER_RESET_BUF_EN ("TRUE"), // + .RXBUF_ADDR_MODE ("FULL"), // + .RXBUF_EIDLE_HI_CNT ( 4'd4), // Optimized for sim + .RXBUF_EIDLE_LO_CNT ( 4'd0), // Optimized for sim + .RXBUF_RESET_ON_CB_CHANGE ("TRUE"), // + .RXBUF_RESET_ON_COMMAALIGN ("FALSE"), // + .RXBUF_RESET_ON_EIDLE ("TRUE"), // PCIe + .RXBUF_RESET_ON_RATE_CHANGE ("TRUE"), // + .RXBUF_THRESH_OVRD ("FALSE"), // + .RXBUF_THRESH_OVFLW (61), // + .RXBUF_THRESH_UNDFLW ( 4), // + //.RXBUFRESET_TIME ( 5'b00001), // + + //---------- TX Sync Attributes ---------------------------------------- + //.TXPH_CFG (16'h0780), // + .TXPH_MONITOR_SEL ( 5'd0), // + //.TXPHDLY_CFG (24'h084020), // [19] : 1 = full range, 0 = half range + //.TXDLY_CFG (16'h001F), // + //.TXDLY_LCFG ( 9'h030), // + //.TXDLY_TAP_CFG (16'd0), // + + .TXSYNC_OVRD (TXSYNC_OVRD), // GTH new + .TXSYNC_MULTILANE (TXSYNC_MULTILANE), // GTH new + .TXSYNC_SKIP_DA (1'b0), // GTH new + + //---------- RX Sync Attributes ---------------------------------------- + //.RXPH_CFG (24'd0), // + .RXPH_MONITOR_SEL ( 5'd0), // + .RXPHDLY_CFG (24'h004020), // [19] : 1 = full range, 0 = half range + //.RXDLY_CFG (16'h001F), // + //.RXDLY_LCFG ( 9'h030), // + //.RXDLY_TAP_CFG (16'd0), // + .RX_DDI_SEL ( 6'd0), // + + .RXSYNC_OVRD (RXSYNC_OVRD), // GTH new + .RXSYNC_MULTILANE (RXSYNC_MULTILANE), // GTH new + .RXSYNC_SKIP_DA (1'b0), // GTH new + + //---------- Comma Alignment Attributes -------------------------------- + .ALIGN_COMMA_DOUBLE ("FALSE"), // + .ALIGN_COMMA_ENABLE (10'b1111111111), // PCIe + .ALIGN_COMMA_WORD ( 1), // + .ALIGN_MCOMMA_DET ("TRUE"), // + .ALIGN_MCOMMA_VALUE (10'b1010000011), // + .ALIGN_PCOMMA_DET ("TRUE"), // + .ALIGN_PCOMMA_VALUE (10'b0101111100), // + .DEC_MCOMMA_DETECT ("TRUE"), // + .DEC_PCOMMA_DETECT ("TRUE"), // + .DEC_VALID_COMMA_ONLY ("FALSE"), // PCIe + .SHOW_REALIGN_COMMA ("FALSE"), // PCIe + .RXSLIDE_AUTO_WAIT ( 7), // + .RXSLIDE_MODE ("PMA"), // PCIe + + //---------- Channel Bonding Attributes -------------------------------- + .CHAN_BOND_KEEP_ALIGN ("TRUE"), // PCIe + .CHAN_BOND_MAX_SKEW ( 7), // + .CHAN_BOND_SEQ_LEN ( 4), // PCIe + .CHAN_BOND_SEQ_1_ENABLE ( 4'b1111), // + .CHAN_BOND_SEQ_1_1 (10'b0001001010), // D10.2 (4A) - TS1 + .CHAN_BOND_SEQ_1_2 (10'b0001001010), // D10.2 (4A) - TS1 + .CHAN_BOND_SEQ_1_3 (10'b0001001010), // D10.2 (4A) - TS1 + .CHAN_BOND_SEQ_1_4 (10'b0110111100), // K28.5 (BC) - COM + .CHAN_BOND_SEQ_2_USE ("TRUE"), // PCIe + .CHAN_BOND_SEQ_2_ENABLE ( 4'b1111), // + .CHAN_BOND_SEQ_2_1 (10'b0001000101), // D5.2 (45) - TS2 + .CHAN_BOND_SEQ_2_2 (10'b0001000101), // D5.2 (45) - TS2 + .CHAN_BOND_SEQ_2_3 (10'b0001000101), // D5.2 (45) - TS2 + .CHAN_BOND_SEQ_2_4 (10'b0110111100), // K28.5 (BC) - COM + .FTS_DESKEW_SEQ_ENABLE ( 4'b1111), // + .FTS_LANE_DESKEW_EN ("TRUE"), // PCIe + .FTS_LANE_DESKEW_CFG ( 4'b1111), // + + //---------- Clock Correction Attributes ------------------------------- + .CBCC_DATA_SOURCE_SEL ("DECODED"), // + .CLK_CORRECT_USE ("TRUE"), // + .CLK_COR_KEEP_IDLE ("TRUE"), // PCIe + .CLK_COR_MAX_LAT (CLK_COR_MAX_LAT), // + .CLK_COR_MIN_LAT (CLK_COR_MIN_LAT), // + .CLK_COR_PRECEDENCE ("TRUE"), // + .CLK_COR_REPEAT_WAIT ( 0), // + .CLK_COR_SEQ_LEN ( 1), // + .CLK_COR_SEQ_1_ENABLE ( 4'b1111), // + .CLK_COR_SEQ_1_1 (10'b0100011100), // K28.0 (1C) - SKP + .CLK_COR_SEQ_1_2 (10'b0000000000), // Disabled + .CLK_COR_SEQ_1_3 (10'b0000000000), // Disabled + .CLK_COR_SEQ_1_4 (10'b0000000000), // Disabled + .CLK_COR_SEQ_2_ENABLE ( 4'b0000), // Disabled + .CLK_COR_SEQ_2_USE ("FALSE"), // + .CLK_COR_SEQ_2_1 (10'b0000000000), // Disabled + .CLK_COR_SEQ_2_2 (10'b0000000000), // Disabled + .CLK_COR_SEQ_2_3 (10'b0000000000), // Disabled + .CLK_COR_SEQ_2_4 (10'b0000000000), // Disabled + + //---------- 8b10b Attributes ------------------------------------------ + .RX_DISPERR_SEQ_MATCH ("TRUE"), // + + //---------- 64b/66b & 64b/67b Attributes ------------------------------ + .GEARBOX_MODE (3'd0), // + .TXGEARBOX_EN ("FALSE"), // + .RXGEARBOX_EN ("FALSE"), // + + //---------- PRBS & Loopback Attributes -------------------------------- + .LOOPBACK_CFG ( 1'd1), // GTH new, enable latch when bypassing TX buffer, equivalent to GTX PCS_RSVD_ATTR[0] + .RXPRBS_ERR_LOOPBACK ( 1'd0), // + .TX_LOOPBACK_DRIVE_HIZ ("FALSE"), // + + //---------- OOB & SATA Attributes ------------------------------------- + .TXOOB_CFG ( 1'd1), // GTH new, filter stale TX data when exiting TX electrical idle, equivalent to GTX PCS_RSVD_ATTR[7] + //.RXOOB_CFG ( 7'b0000110), // + .RXOOB_CLK_CFG (RXOOB_CLK_CFG), // GTH new + //.SAS_MAX_COM (64), // + //.SAS_MIN_COM (36), // + //.SATA_BURST_SEQ_LEN ( 4'b1111), // + //.SATA_BURST_VAL ( 3'b100), // + //.SATA_CPLL_CFG ("VCO_3000MHZ"), // + //.SATA_EIDLE_VAL ( 3'b100), // + //.SATA_MAX_BURST ( 8), // + //.SATA_MAX_INIT (21), // + //.SATA_MAX_WAKE ( 7), // + //.SATA_MIN_BURST ( 4), // + //.SATA_MIN_INIT (12), // + //.SATA_MIN_WAKE ( 4), // + + //---------- MISC ------------------------------------------------------ + .DMONITOR_CFG (24'h000AB1), // Optimized for debug; [7:4] : 1011 = AGC + //.DMONITOR_CFG (24'h000AB1), // Optimized for debug; [7:4] : 0000 = CDR FSM + .RX_DEBUG_CFG (14'b00000011000000), // Changed from 12 to 14-bits, optimized for IES + //.TST_RSV (32'd0), // + //.UCODEER_CLR ( 1'd0), // + + //---------- GTH ------------------------------------------------------- + //.ACJTAG_DEBUG_MODE ( 1'd0), // GTH new + //.ACJTAG_MODE ( 1'd0), // GTH new + //.ACJTAG_RESET ( 1'd0), // GTH new + .ADAPT_CFG0 (20'h00C10), // GTH new, optimized for IES + .CFOK_CFG (42'h248_0004_0E80), // GTH new, optimized for IES, [8] : 1 = Skip CFOK + .CFOK_CFG2 ( 6'b100000), // GTH new, optimized for IES + .CFOK_CFG3 ( 6'b100000) // GTH new, optimized for IES + + ) + gthe2_channel_i + ( + + //---------- Clock ----------------------------------------------------- + .GTGREFCLK (1'd0), // + .GTREFCLK0 (GT_GTREFCLK0), // + .GTREFCLK1 (1'd0), // + .GTNORTHREFCLK0 (1'd0), // + .GTNORTHREFCLK1 (1'd0), // + .GTSOUTHREFCLK0 (1'd0), // + .GTSOUTHREFCLK1 (1'd0), // + .QPLLCLK (GT_QPLLCLK), // + .QPLLREFCLK (GT_QPLLREFCLK), // + .TXUSRCLK (GT_TXUSRCLK), // + .RXUSRCLK (GT_RXUSRCLK), // + .TXUSRCLK2 (GT_TXUSRCLK2), // + .RXUSRCLK2 (GT_RXUSRCLK2), // + .TXSYSCLKSEL (GT_TXSYSCLKSEL), // + .RXSYSCLKSEL (GT_RXSYSCLKSEL), // + .TXOUTCLKSEL (txoutclksel), // + .RXOUTCLKSEL (rxoutclksel), // + .CPLLREFCLKSEL (3'd1), // + .CPLLLOCKDETCLK (1'd0), // + .CPLLLOCKEN (1'd1), // + .CLKRSVD0 (1'd0), // GTH + .CLKRSVD1 (1'd0), // GTH + + .TXOUTCLK (GT_TXOUTCLK), // + .RXOUTCLK (GT_RXOUTCLK), // + .TXOUTCLKFABRIC (), // + .RXOUTCLKFABRIC (), // + .TXOUTCLKPCS (), // + .RXOUTCLKPCS (), // + .CPLLLOCK (GT_CPLLLOCK), // + .CPLLREFCLKLOST (), // + .CPLLFBCLKLOST (), // + .RXCDRLOCK (GT_RXCDRLOCK), // + .GTREFCLKMONITOR (), // + + //---------- Reset ----------------------------------------------------- + .CPLLPD (cpllpd | GT_CPLLPD), // + .CPLLRESET (cpllrst | GT_CPLLRESET), // + .TXUSERRDY (GT_TXUSERRDY), // + .RXUSERRDY (GT_RXUSERRDY), // + .CFGRESET (1'd0), // + .GTRESETSEL (1'd0), // + .RESETOVRD (GT_RESETOVRD), // + .GTTXRESET (GT_GTTXRESET), // + .GTRXRESET (GT_GTRXRESET), // + + .TXRESETDONE (GT_TXRESETDONE), // + .RXRESETDONE (GT_RXRESETDONE), // + + //---------- TX Data --------------------------------------------------- + .TXDATA ({32'd0, GT_TXDATA}), // + .TXCHARISK ({ 4'd0, GT_TXDATAK}), // + + .GTHTXP (GT_TXP), // GTH + .GTHTXN (GT_TXN), // GTH + + //---------- RX Data --------------------------------------------------- + .GTHRXP (GT_RXP), // GTH + .GTHRXN (GT_RXN), // GTH + + .RXDATA (rxdata), // + .RXCHARISK (rxdatak), // + + //---------- Command --------------------------------------------------- + .TXDETECTRX (GT_TXDETECTRX), // + .TXPDELECIDLEMODE ( 1'd0), // + .RXELECIDLEMODE ( 2'd0), // + .TXELECIDLE (GT_TXELECIDLE), // + .TXCHARDISPMODE ({7'd0, GT_TXCOMPLIANCE}), // + .TXCHARDISPVAL ( 8'd0), // + .TXPOLARITY ( 1'b0), // + .RXPOLARITY (GT_RXPOLARITY), // + .TXPD (GT_TXPOWERDOWN), // + .RXPD (GT_RXPOWERDOWN), // + .TXRATE (GT_TXRATE), // + .RXRATE (GT_RXRATE), // + .TXRATEMODE (1'd0), // GTH + .RXRATEMODE (1'd0), // GTH + + //---------- Electrical Command ---------------------------------------- + .TXMARGIN (GT_TXMARGIN), // + .TXSWING (GT_TXSWING), // + .TXDEEMPH (GT_TXDEEMPH), // + .TXINHIBIT (GT_TXINHIBIT), // + .TXBUFDIFFCTRL (3'b100), // + .TXDIFFCTRL (4'b1111), // Select 850mV + .TXPRECURSOR (GT_TXPRECURSOR), // + .TXPRECURSORINV (1'd0), // + .TXMAINCURSOR (GT_TXMAINCURSOR), // + .TXPOSTCURSOR (GT_TXPOSTCURSOR), // + .TXPOSTCURSORINV (1'd0), // + + //---------- Status ---------------------------------------------------- + .RXVALID (GT_RXVALID), // + .PHYSTATUS (GT_PHYSTATUS), // + .RXELECIDLE (GT_RXELECIDLE), // + .RXSTATUS (GT_RXSTATUS), // + .TXRATEDONE (GT_TXRATEDONE), // + .RXRATEDONE (GT_RXRATEDONE), // + + //---------- DRP ------------------------------------------------------- + .DRPCLK (GT_DRPCLK), // + .DRPADDR (GT_DRPADDR), // + .DRPEN (GT_DRPEN), // + .DRPDI (GT_DRPDI), // + .DRPWE (GT_DRPWE), // + + .DRPDO (GT_DRPDO), // + .DRPRDY (GT_DRPRDY), // + + //---------- PMA ------------------------------------------------------- + .TXPMARESET (GT_TXPMARESET), // + .RXPMARESET (GT_RXPMARESET), // + .RXLPMEN (rxlpmen), // *** + .RXLPMHFHOLD (GT_RX_CONVERGE), // Set to 1 after convergence + .RXLPMHFOVRDEN ( 1'd0), // + .RXLPMLFHOLD (GT_RX_CONVERGE), // Set to 1 after convergence + .RXLPMLFKLOVRDEN ( 1'd0), // + .TXQPIBIASEN ( 1'd0), // + .TXQPISTRONGPDOWN ( 1'd0), // + .TXQPIWEAKPUP ( 1'd0), // + .RXQPIEN ( 1'd0), // Optimized for IES + .PMARSVDIN ( 5'd0), // + .GTRSVD (16'd0), // + + .TXQPISENP (), // + .TXQPISENN (), // + .RXQPISENP (), // + .RXQPISENN (), // + .DMONITOROUT (dmonitorout), // GTH 15-bits. + + //---------- PCS ------------------------------------------------------- + .TXPCSRESET (GT_TXPCSRESET), // + .RXPCSRESET (GT_RXPCSRESET), // + .PCSRSVDIN (16'd0), // [0]: 1 = TXRATE async, [1]: 1 = RXRATE async + .PCSRSVDIN2 ( 5'd0), // + + .PCSRSVDOUT (), // + + //---------- CDR ------------------------------------------------------- + .RXCDRRESET (GT_RXCDRRESET), // + .RXCDRRESETRSV (1'd0), // + .RXCDRFREQRESET (GT_RXCDRFREQRESET), // + .RXCDRHOLD (1'b0), // + .RXCDROVRDEN (1'd0), // + + //---------- PI -------------------------------------------------------- + .TXPIPPMEN (1'd0), // GTH new + .TXPIPPMOVRDEN (1'd0), // GTH new + .TXPIPPMPD (1'd0), // GTH new + .TXPIPPMSEL (1'd0), // GTH new + .TXPIPPMSTEPSIZE (5'd0), // GTH new + + //---------- DFE ------------------------------------------------------- + .RXDFELPMRESET (GT_RXDFELPMRESET), // + .RXDFEAGCTRL (5'b10000), // GTH new, optimized for IES + .RXDFECM1EN (1'd0), // + .RXDFEVSEN (1'd0), // + .RXDFETAP2HOLD (1'd0), // + .RXDFETAP2OVRDEN (1'd0), // + .RXDFETAP3HOLD (1'd0), // + .RXDFETAP3OVRDEN (1'd0), // + .RXDFETAP4HOLD (1'd0), // + .RXDFETAP4OVRDEN (1'd0), // + .RXDFETAP5HOLD (1'd0), // + .RXDFETAP5OVRDEN (1'd0), // + .RXDFETAP6HOLD (1'd0), // GTH new + .RXDFETAP6OVRDEN (1'd0), // GTH new + .RXDFETAP7HOLD (1'd0), // GTH new + .RXDFETAP7OVRDEN (1'd0), // GTH new + .RXDFEAGCHOLD (GT_RX_CONVERGE), // Set to 1 after convergence + .RXDFEAGCOVRDEN (rxlpmen), // + .RXDFELFHOLD (GT_RX_CONVERGE), // Set to 1 after convergence + .RXDFELFOVRDEN (1'd0), // + .RXDFEUTHOLD (1'd0), // + .RXDFEUTOVRDEN (1'd0), // + .RXDFEVPHOLD (1'd0), // + .RXDFEVPOVRDEN (1'd0), // + .RXDFEXYDEN (1'd1), // Optimized for IES + .RXMONITORSEL (2'd0), // + .RXDFESLIDETAP (5'd0), // GTH new + .RXDFESLIDETAPID (6'd0), // GTH new + .RXDFESLIDETAPHOLD (1'd0), // GTH new + .RXDFESLIDETAPOVRDEN (1'd0), // GTH new + .RXDFESLIDETAPADAPTEN (1'd0), // GTH new + .RXDFESLIDETAPINITOVRDEN (1'd0), // GTH new + .RXDFESLIDETAPONLYADAPTEN (1'd0), // GTH new + .RXDFESLIDETAPSTROBE (1'd0), // GTH new + + .RXMONITOROUT (), // + .RXDFESLIDETAPSTARTED (), // GTH new + .RXDFESLIDETAPSTROBEDONE (), // GTH new + .RXDFESLIDETAPSTROBESTARTED (), // GTH new + .RXDFESTADAPTDONE (), // GTH new + + //---------- OS -------------------------------------------------------- + .RXOSHOLD (1'd0), // optimized for IES + .RXOSOVRDEN (1'd0), // optimized for IES + .RXOSINTEN (1'd1), // GTH new, optimized for IES + .RXOSINTHOLD (1'd0), // GTH new, optimized for IES + .RXOSINTNTRLEN (1'd0), // GTH new, optimized for IES + .RXOSINTOVRDEN (1'd0), // GTH new, optimized for IES + .RXOSINTSTROBE (1'd0), // GTH new, optimized for IES + .RXOSINTTESTOVRDEN (1'd0), // GTH new, optimized for IES + .RXOSINTCFG (4'b0110), // GTH new, optimized for IES + .RXOSINTID0 (4'b0000), // GTH new, optimized for IES + .RXOSCALRESET ( 1'd0), // GTH, optimized for IES + + .RSOSINTDONE (), // GTH new + .RXOSINTSTARTED (), // GTH new + .RXOSINTSTROBEDONE (), // GTH new + .RXOSINTSTROBESTARTED (), // GTH new + + //---------- Eye Scan -------------------------------------------------- + .EYESCANRESET (GT_EYESCANRESET), // + .EYESCANMODE (1'd0), // + .EYESCANTRIGGER (1'b0), // + + .EYESCANDATAERROR (GT_EYESCANDATAERROR), // + + //---------- TX Buffer ------------------------------------------------- + .TXBUFSTATUS (), // + + //---------- RX Buffer ------------------------------------------------- + .RXBUFRESET (GT_RXBUFRESET), // + + .RXBUFSTATUS (GT_RXBUFSTATUS), // + + //---------- TX Sync --------------------------------------------------- + .TXPHDLYRESET (GT_TXPHDLYRESET), // + .TXPHDLYTSTCLK (1'd0), // + .TXPHALIGN (GT_TXPHALIGN), // + .TXPHALIGNEN (GT_TXPHALIGNEN), // + .TXPHDLYPD (1'd0), // + .TXPHINIT (GT_TXPHINIT), // + .TXPHOVRDEN (1'd0), // + .TXDLYBYPASS (GT_TXDLYBYPASS), // + .TXDLYSRESET (GT_TXDLYSRESET), // + .TXDLYEN (GT_TXDLYEN), // + .TXDLYOVRDEN (1'd0), // + .TXDLYHOLD (1'd0), // + .TXDLYUPDOWN (1'd0), // + + .TXPHALIGNDONE (GT_TXPHALIGNDONE), // + .TXPHINITDONE (GT_TXPHINITDONE), // + .TXDLYSRESETDONE (GT_TXDLYSRESETDONE), // + + .TXSYNCMODE (GT_TXSYNCMODE), // GTH + .TXSYNCIN (GT_TXSYNCIN), // GTH + .TXSYNCALLIN (GT_TXSYNCALLIN), // GTH + + .TXSYNCDONE (GT_TXSYNCDONE), // GTH + .TXSYNCOUT (GT_TXSYNCOUT), // GTH + + //---------- RX Sync --------------------------------------------------- + .RXPHDLYRESET (1'd0), // + .RXPHALIGN (GT_RXPHALIGN), // + .RXPHALIGNEN (GT_RXPHALIGNEN), // + .RXPHDLYPD (1'd0), // + .RXPHOVRDEN (1'd0), // + .RXDLYBYPASS (GT_RXDLYBYPASS), // + .RXDLYSRESET (GT_RXDLYSRESET), // + .RXDLYEN (GT_RXDLYEN), // + .RXDLYOVRDEN (1'd0), // + .RXDDIEN (GT_RXDDIEN), // + + .RXPHALIGNDONE (GT_RXPHALIGNDONE), // + .RXPHMONITOR (), // + .RXPHSLIPMONITOR (), // + .RXDLYSRESETDONE (GT_RXDLYSRESETDONE), // + + .RXSYNCMODE (GT_RXSYNCMODE), // GTH + .RXSYNCIN (GT_RXSYNCIN), // GTH + .RXSYNCALLIN (GT_RXSYNCALLIN), // GTH + + .RXSYNCDONE (GT_RXSYNCDONE), // GTH + .RXSYNCOUT (GT_RXSYNCOUT), // GTH + + //---------- Comma Alignment ------------------------------------------- + .RXCOMMADETEN ( 1'd1), // + .RXMCOMMAALIGNEN (!GT_GEN3), // 0 = disable comma alignment in Gen3 + .RXPCOMMAALIGNEN (!GT_GEN3), // 0 = disable comma alignment in Gen3 + .RXSLIDE ( GT_RXSLIDE), // + + .RXCOMMADET (GT_RXCOMMADET), // + .RXCHARISCOMMA (rxchariscomma), // + .RXBYTEISALIGNED (GT_RXBYTEISALIGNED), // + .RXBYTEREALIGN (GT_RXBYTEREALIGN), // + + //---------- Channel Bonding ------------------------------------------- + .RXCHBONDEN (GT_RXCHBONDEN), // + .RXCHBONDI (GT_RXCHBONDI), // + .RXCHBONDLEVEL (GT_RXCHBONDLEVEL), // + .RXCHBONDMASTER (GT_RXCHBONDMASTER), // + .RXCHBONDSLAVE (GT_RXCHBONDSLAVE), // + + .RXCHANBONDSEQ (), // + .RXCHANISALIGNED (GT_RXCHANISALIGNED), // + .RXCHANREALIGN (), // + .RXCHBONDO (GT_RXCHBONDO), // + + //---------- Clock Correction ----------------------------------------- + .RXCLKCORCNT (), // + + //---------- 8b10b ----------------------------------------------------- + .TX8B10BBYPASS (8'd0), // + .TX8B10BEN (!GT_GEN3), // 0 = disable TX 8b10b in Gen3 + .RX8B10BEN (!GT_GEN3), // 0 = disable RX 8b10b in Gen3 + + .RXDISPERR (GT_RXDISPERR), // + .RXNOTINTABLE (GT_RXNOTINTABLE), // + + //---------- 64b/66b & 64b/67b ----------------------------------------- + .TXHEADER (3'd0), // + .TXSEQUENCE (7'd0), // + .TXSTARTSEQ (1'd0), // + .RXGEARBOXSLIP (1'd0), // + + .TXGEARBOXREADY (), // + .RXDATAVALID (), // + .RXHEADER (), // + .RXHEADERVALID (), // + .RXSTARTOFSEQ (), // + + //---------- PRBS & Loopback ------------------------------------------- + .TXPRBSSEL (GT_TXPRBSSEL), // + .RXPRBSSEL (GT_RXPRBSSEL), // + .TXPRBSFORCEERR (GT_TXPRBSFORCEERR), // + .RXPRBSCNTRESET (GT_RXPRBSCNTRESET), // + .LOOPBACK (GT_LOOPBACK), // + + .RXPRBSERR (GT_RXPRBSERR), // + + //---------- OOB ------------------------------------------------------- + .SIGVALIDCLK (GT_OOBCLK), // GTH, optimized for debug + .TXCOMINIT (1'd0), // + .TXCOMSAS (1'd0), // + .TXCOMWAKE (1'd0), // + .RXOOBRESET (1'd0), // + + .TXCOMFINISH (), // + .RXCOMINITDET (), // + .RXCOMSASDET (), // + .RXCOMWAKEDET (), // + + //---------- MISC ------------------------------------------------------ + .SETERRSTATUS ( 1'd0), // + .TXDIFFPD ( 1'd0), // + .TXPISOPD ( 1'd0), // + .TSTIN (20'hFFFFF), // + + //---------- GTH ------------------------------------------------------- + .RXADAPTSELTEST (14'd0), // GTH new + .DMONFIFORESET ( 1'd0), // GTH + .DMONITORCLK (dmonitorclk), // GTH, optimized for debug + //.DMONITORCLK (GT_DRPCLK), // GTH, optimized for debug + + .RXPMARESETDONE (GT_RXPMARESETDONE), // GTH + .TXPMARESETDONE () // GTH + + ); + + end + +else + + begin : gtx_channel + + //---------- GTX Channel Module -------------------------------------------- + GTXE2_CHANNEL # + ( + + //---------- Simulation Attributes ------------------------------------- + .SIM_CPLLREFCLK_SEL (3'b001), // + .SIM_RESET_SPEEDUP (PCIE_SIM_SPEEDUP), // + .SIM_RECEIVER_DETECT_PASS ("TRUE"), // + .SIM_TX_EIDLE_DRIVE_LEVEL (PCIE_SIM_TX_EIDLE_DRIVE_LEVEL), // + .SIM_VERSION (PCIE_USE_MODE), // + + //---------- Clock Attributes ------------------------------------------ + .CPLL_REFCLK_DIV (CPLL_REFCLK_DIV), // + .CPLL_FBDIV_45 (CPLL_FBDIV_45), // + .CPLL_FBDIV (CPLL_FBDIV), // + .TXOUT_DIV (OUT_DIV), // + .RXOUT_DIV (OUT_DIV), // + .TX_CLK25_DIV (CLK25_DIV), // + .RX_CLK25_DIV (CLK25_DIV), // + .TX_CLKMUX_PD (CLKMUX_PD), // GTX + .RX_CLKMUX_PD (CLKMUX_PD), // GTX + .TX_XCLK_SEL (TX_XCLK_SEL), // TXOUT = use TX buffer, TXUSR = bypass TX buffer + .RX_XCLK_SEL ("RXREC"), // RXREC = use RX buffer, RXUSR = bypass RX buffer + .OUTREFCLK_SEL_INV ( 2'b11), // + .CPLL_CFG (CPLL_CFG), // Optimized for silicon + //.CPLL_INIT_CFG (24'h00001E), // + //.CPLL_LOCK_CFG (16'h01E8), // + + //---------- Reset Attributes ------------------------------------------ + .TXPCSRESET_TIME (5'b00001), // + .RXPCSRESET_TIME (5'b00001), // + .TXPMARESET_TIME (5'b00011), // + .RXPMARESET_TIME (5'b00011), // Optimized for sim and for DRP + //.RXISCANRESET_TIME (5'b00001), // + + //---------- TX Data Attributes ---------------------------------------- + .TX_DATA_WIDTH (20), // 2-byte external datawidth for Gen1/Gen2 + .TX_INT_DATAWIDTH ( 0), // 2-byte internal datawidth for Gen1/Gen2 + + //---------- RX Data Attributes ---------------------------------------- + .RX_DATA_WIDTH (20), // 2-byte external datawidth for Gen1/Gen2 + .RX_INT_DATAWIDTH ( 0), // 2-byte internal datawidth for Gen1/Gen2 + + //---------- Command Attributes ---------------------------------------- + .TX_RXDETECT_CFG (TX_RXDETECT_CFG), // + .TX_RXDETECT_REF (TX_RXDETECT_REF), // + .RX_CM_SEL ( 2'd3), // 0 = AVTT, 1 = GND, 2 = Float, 3 = Programmable + .RX_CM_TRIM ( 3'b010), // Select 800mV + .TX_EIDLE_ASSERT_DELAY (PCIE_TX_EIDLE_ASSERT_DELAY), // Optimized for sim (3'd4) + .TX_EIDLE_DEASSERT_DELAY ( 3'b100), // Optimized for sim + //.PD_TRANS_TIME_FROM_P2 (12'h03C), // + .PD_TRANS_TIME_NONE_P2 ( 8'h09), // + //.PD_TRANS_TIME_TO_P2 ( 8'h64), // + //.TRANS_TIME_RATE ( 8'h0E), // + + //---------- Electrical Command Attributes ----------------------------- + .TX_DRIVE_MODE ("PIPE"), // Gen1/Gen2 = PIPE, Gen3 = PIPEGEN3 + .TX_DEEMPH0 ( 5'b10100), // 6.0 dB + .TX_DEEMPH1 ( 5'b01011), // 3.5 dB + .TX_MARGIN_FULL_0 ( 7'b1001111), // 1000 mV + .TX_MARGIN_FULL_1 ( 7'b1001110), // 950 mV + .TX_MARGIN_FULL_2 ( 7'b1001101), // 900 mV + .TX_MARGIN_FULL_3 ( 7'b1001100), // 850 mV + .TX_MARGIN_FULL_4 ( 7'b1000011), // 400 mV + .TX_MARGIN_LOW_0 ( 7'b1000101), // 500 mV + .TX_MARGIN_LOW_1 ( 7'b1000110), // 450 mV + .TX_MARGIN_LOW_2 ( 7'b1000011), // 400 mV + .TX_MARGIN_LOW_3 ( 7'b1000010), // 350 mV + .TX_MARGIN_LOW_4 ( 7'b1000000), // 250 mV + .TX_MAINCURSOR_SEL ( 1'b0), // + .TX_PREDRIVER_MODE ( 1'b0), // GTX + .TX_QPI_STATUS_EN ( 1'b0), // + + //---------- Status Attributes ----------------------------------------- + .RX_SIG_VALID_DLY (4), // Optimized for sim + + //---------- DRP Attributes -------------------------------------------- + + //---------- PCS Attributes -------------------------------------------- + .PCS_PCIE_EN ("TRUE"), // PCIe + .PCS_RSVD_ATTR (PCS_RSVD_ATTR), // + + //---------- PMA Attributes -------------------------------------------- + .PMA_RSV (32'h00018480), // Optimized for GES Gen1/Gen2 + .PMA_RSV2 (16'h2050), // Optimized for silicon, [4] RX_CM_TRIM[4], [5] = 1 Enable Eye Scan + //.PMA_RSV3 ( 2'd0), // + //.PMA_RSV4 (32'd0), // GTX 3.0 new + .RX_BIAS_CFG (12'b000000000100), // Optimized for GES + //.TERM_RCAL_CFG ( 5'b10000), // + //.TERM_RCAL_OVRD ( 1'd0), // + + //---------- CDR Attributes -------------------------------------------- + .RXCDR_CFG (RXCDR_CFG_GTX), // + .RXCDR_LOCK_CFG ( 6'b010101), // [5:3] Window Refresh, [2:1] Window Size, [0] Enable Detection (sensitive lock = 6'b111001) + .RXCDR_HOLD_DURING_EIDLE ( 1'd1), // Hold RX CDR on electrical idle for Gen1/Gen2 + .RXCDR_FR_RESET_ON_EIDLE ( 1'd0), // Reset RX CDR frequency on electrical idle for Gen3 + .RXCDR_PH_RESET_ON_EIDLE ( 1'd0), // Reset RX CDR phase on electrical idle for Gen3 + //.RXCDRFREQRESET_TIME ( 5'b00001), // + //.RXCDRPHRESET_TIME ( 5'b00001), // + + //---------- LPM Attributes -------------------------------------------- + .RXLPM_HF_CFG (14'h00F0), // Optimized for silicon + .RXLPM_LF_CFG (14'h00F0), // Optimized for silicon + + //---------- DFE Attributes -------------------------------------------- + //.RXDFELPMRESET_TIME ( 7'b0001111), // + .RX_DFE_GAIN_CFG (23'h020FEA), // Optimized for GES, IES = 23'h001F0A + .RX_DFE_H2_CFG (12'b000000000000), // Optimized for GES + .RX_DFE_H3_CFG (12'b000001000000), // Optimized for GES + .RX_DFE_H4_CFG (11'b00011110000), // Optimized for GES + .RX_DFE_H5_CFG (11'b00011100000), // Optimized for GES + .RX_DFE_KL_CFG (13'b0000011111110), // Optimized for GES + .RX_DFE_KL_CFG2 (32'h3290D86C), // Optimized for GES, GTX new, CTLE 3 3 5, default = 32'h3010D90C + .RX_DFE_LPM_CFG (16'h0954), // Optimized for GES + .RX_DFE_LPM_HOLD_DURING_EIDLE ( 1'd1), // Optimized for PCIe + .RX_DFE_UT_CFG (17'b10001111000000000), // Optimized for GES, IES = 17'h08F00 + .RX_DFE_VP_CFG (17'b00011111100000011), // Optimized for GES + .RX_DFE_XYD_CFG (13'h0000), // Optimized for 4.0 + + //---------- OS Attributes --------------------------------------------- + .RX_OS_CFG (13'b0000010000000), // Optimized for GES + + //---------- Eye Scan Attributes --------------------------------------- + //.ES_CONTROL ( 6'd0), // + //.ES_ERRDET_EN ("FALSE"), // + .ES_EYE_SCAN_EN ("FALSE"), // + .ES_HORZ_OFFSET (12'd0), // + //.ES_PMA_CFG (10'd0), // + //.ES_PRESCALE ( 5'd0), // + //.ES_QUAL_MASK (80'd0), // + //.ES_QUALIFIER (80'd0), // + //.ES_SDATA_MASK (80'd0), // + //.ES_VERT_OFFSET ( 9'd0), // + + //---------- TX Buffer Attributes -------------------------------------- + .TXBUF_EN (PCIE_TXBUF_EN), // + .TXBUF_RESET_ON_RATE_CHANGE ("TRUE"), // + + //---------- RX Buffer Attributes -------------------------------------- + .RXBUF_EN ("TRUE"), // + //.RX_BUFFER_CFG ( 6'd0), // + .RX_DEFER_RESET_BUF_EN ("TRUE"), // + .RXBUF_ADDR_MODE ("FULL"), // + .RXBUF_EIDLE_HI_CNT ( 4'd4), // Optimized for sim + .RXBUF_EIDLE_LO_CNT ( 4'd0), // Optimized for sim + .RXBUF_RESET_ON_CB_CHANGE ("TRUE"), // + .RXBUF_RESET_ON_COMMAALIGN ("FALSE"), // + .RXBUF_RESET_ON_EIDLE ("TRUE"), // PCIe + .RXBUF_RESET_ON_RATE_CHANGE ("TRUE"), // + .RXBUF_THRESH_OVRD ("FALSE"), // + .RXBUF_THRESH_OVFLW (61), // + .RXBUF_THRESH_UNDFLW ( 4), // + //.RXBUFRESET_TIME ( 5'b00001), // + + //---------- TX Sync Attributes ---------------------------------------- + //.TXPH_CFG (16'h0780), // + .TXPH_MONITOR_SEL ( 5'd0), // + //.TXPHDLY_CFG (24'h084020), // + //.TXDLY_CFG (16'h001F), // + //.TXDLY_LCFG ( 9'h030), // + //.TXDLY_TAP_CFG (16'd0), // + + //---------- RX Sync Attributes ---------------------------------------- + //.RXPH_CFG (24'd0), // + .RXPH_MONITOR_SEL ( 5'd0), // + .RXPHDLY_CFG (24'h004020), // Optimized for sim + //.RXDLY_CFG (16'h001F), // + //.RXDLY_LCFG ( 9'h030), // + //.RXDLY_TAP_CFG (16'd0), // + .RX_DDI_SEL ( 6'd0), // + + //---------- Comma Alignment Attributes -------------------------------- + .ALIGN_COMMA_DOUBLE ("FALSE"), // + .ALIGN_COMMA_ENABLE (10'b1111111111), // PCIe + .ALIGN_COMMA_WORD ( 1), // + .ALIGN_MCOMMA_DET ("TRUE"), // + .ALIGN_MCOMMA_VALUE (10'b1010000011), // + .ALIGN_PCOMMA_DET ("TRUE"), // + .ALIGN_PCOMMA_VALUE (10'b0101111100), // + .DEC_MCOMMA_DETECT ("TRUE"), // + .DEC_PCOMMA_DETECT ("TRUE"), // + .DEC_VALID_COMMA_ONLY ("FALSE"), // PCIe + .SHOW_REALIGN_COMMA ("FALSE"), // PCIe + .RXSLIDE_AUTO_WAIT ( 7), // + .RXSLIDE_MODE ("PMA"), // PCIe + + //---------- Channel Bonding Attributes -------------------------------- + .CHAN_BOND_KEEP_ALIGN ("TRUE"), // PCIe + .CHAN_BOND_MAX_SKEW ( 7), // + .CHAN_BOND_SEQ_LEN ( 4), // PCIe + .CHAN_BOND_SEQ_1_ENABLE ( 4'b1111), // + .CHAN_BOND_SEQ_1_1 (10'b0001001010), // D10.2 (4A) - TS1 + .CHAN_BOND_SEQ_1_2 (10'b0001001010), // D10.2 (4A) - TS1 + .CHAN_BOND_SEQ_1_3 (10'b0001001010), // D10.2 (4A) - TS1 + .CHAN_BOND_SEQ_1_4 (10'b0110111100), // K28.5 (BC) - COM + .CHAN_BOND_SEQ_2_USE ("TRUE"), // PCIe + .CHAN_BOND_SEQ_2_ENABLE ( 4'b1111), // + .CHAN_BOND_SEQ_2_1 (10'b0001000101), // D5.2 (45) - TS2 + .CHAN_BOND_SEQ_2_2 (10'b0001000101), // D5.2 (45) - TS2 + .CHAN_BOND_SEQ_2_3 (10'b0001000101), // D5.2 (45) - TS2 + .CHAN_BOND_SEQ_2_4 (10'b0110111100), // K28.5 (BC) - COM + .FTS_DESKEW_SEQ_ENABLE ( 4'b1111), // + .FTS_LANE_DESKEW_EN ("TRUE"), // PCIe + .FTS_LANE_DESKEW_CFG ( 4'b1111), // + + //---------- Clock Correction Attributes ------------------------------- + .CBCC_DATA_SOURCE_SEL ("DECODED"), // + .CLK_CORRECT_USE ("TRUE"), // + .CLK_COR_KEEP_IDLE ("TRUE"), // PCIe + .CLK_COR_MAX_LAT (CLK_COR_MAX_LAT), // + .CLK_COR_MIN_LAT (CLK_COR_MIN_LAT), // + .CLK_COR_PRECEDENCE ("TRUE"), // + .CLK_COR_REPEAT_WAIT ( 0), // + .CLK_COR_SEQ_LEN ( 1), // + .CLK_COR_SEQ_1_ENABLE ( 4'b1111), // + .CLK_COR_SEQ_1_1 (10'b0100011100), // K28.0 (1C) - SKP + .CLK_COR_SEQ_1_2 (10'b0000000000), // Disabled + .CLK_COR_SEQ_1_3 (10'b0000000000), // Disabled + .CLK_COR_SEQ_1_4 (10'b0000000000), // Disabled + .CLK_COR_SEQ_2_ENABLE ( 4'b0000), // Disabled + .CLK_COR_SEQ_2_USE ("FALSE"), // + .CLK_COR_SEQ_2_1 (10'b0000000000), // Disabled + .CLK_COR_SEQ_2_2 (10'b0000000000), // Disabled + .CLK_COR_SEQ_2_3 (10'b0000000000), // Disabled + .CLK_COR_SEQ_2_4 (10'b0000000000), // Disabled + + //---------- 8b10b Attributes ------------------------------------------ + .RX_DISPERR_SEQ_MATCH ("TRUE"), // + + //---------- 64b/66b & 64b/67b Attributes ------------------------------ + .GEARBOX_MODE (3'd0), // + .TXGEARBOX_EN ("FALSE"), // + .RXGEARBOX_EN ("FALSE"), // + + //---------- PRBS & Loopback Attributes -------------------------------- + .RXPRBS_ERR_LOOPBACK (1'd0), // + .TX_LOOPBACK_DRIVE_HIZ ("FALSE"), // + + //---------- OOB & SATA Attributes ------------------------------------- + //.RXOOB_CFG ( 7'b0000110), // + //.SAS_MAX_COM (64), // + //.SAS_MIN_COM (36), // + //.SATA_BURST_SEQ_LEN ( 4'b1111), // + //.SATA_BURST_VAL ( 3'b100), // + //.SATA_CPLL_CFG ("VCO_3000MHZ"), // + //.SATA_EIDLE_VAL ( 3'b100), // + //.SATA_MAX_BURST ( 8), // + //.SATA_MAX_INIT (21), // + //.SATA_MAX_WAKE ( 7), // + //.SATA_MIN_BURST ( 4), // + //.SATA_MIN_INIT (12), // + //.SATA_MIN_WAKE ( 4), // + + //---------- MISC ------------------------------------------------------ + .DMONITOR_CFG (24'h000B01), // Optimized for debug + .RX_DEBUG_CFG (12'd0) // Optimized for GES + //.TST_RSV (32'd0), // + //.UCODEER_CLR ( 1'd0) // + + ) + gtxe2_channel_i + ( + + //---------- Clock ----------------------------------------------------- + .GTGREFCLK (1'd0), // + .GTREFCLK0 (GT_GTREFCLK0), // + .GTREFCLK1 (1'd0), // + .GTNORTHREFCLK0 (1'd0), // + .GTNORTHREFCLK1 (1'd0), // + .GTSOUTHREFCLK0 (1'd0), // + .GTSOUTHREFCLK1 (1'd0), // + .QPLLCLK (GT_QPLLCLK), // + .QPLLREFCLK (GT_QPLLREFCLK), // + .TXUSRCLK (GT_TXUSRCLK), // + .RXUSRCLK (GT_RXUSRCLK), // + .TXUSRCLK2 (GT_TXUSRCLK2), // + .RXUSRCLK2 (GT_RXUSRCLK2), // + .TXSYSCLKSEL (GT_TXSYSCLKSEL), // + .RXSYSCLKSEL (GT_RXSYSCLKSEL), // + .TXOUTCLKSEL (txoutclksel), // + .RXOUTCLKSEL (rxoutclksel), // + .CPLLREFCLKSEL (3'd1), // + .CPLLLOCKDETCLK (1'd0), // + .CPLLLOCKEN (1'd1), // + .CLKRSVD ({2'd0, dmonitorclk, GT_OOBCLK}), // Optimized for debug + + .TXOUTCLK (GT_TXOUTCLK), // + .RXOUTCLK (GT_RXOUTCLK), // + .TXOUTCLKFABRIC (), // + .RXOUTCLKFABRIC (), // + .TXOUTCLKPCS (), // + .RXOUTCLKPCS (), // + .CPLLLOCK (GT_CPLLLOCK), // + .CPLLREFCLKLOST (), // + .CPLLFBCLKLOST (), // + .RXCDRLOCK (GT_RXCDRLOCK), // + .GTREFCLKMONITOR (), // + + //---------- Reset ----------------------------------------------------- + .CPLLPD (cpllpd | GT_CPLLPD), // + .CPLLRESET (cpllrst | GT_CPLLRESET), // + .TXUSERRDY (GT_TXUSERRDY), // + .RXUSERRDY (GT_RXUSERRDY), // + .CFGRESET (1'd0), // + .GTRESETSEL (1'd0), // + .RESETOVRD (GT_RESETOVRD), // + .GTTXRESET (GT_GTTXRESET), // + .GTRXRESET (GT_GTRXRESET), // + + .TXRESETDONE (GT_TXRESETDONE), // + .RXRESETDONE (GT_RXRESETDONE), // + + //---------- TX Data --------------------------------------------------- + .TXDATA ({32'd0, GT_TXDATA}), // + .TXCHARISK ({ 4'd0, GT_TXDATAK}), // + + .GTXTXP (GT_TXP), // GTX + .GTXTXN (GT_TXN), // GTX + + //---------- RX Data --------------------------------------------------- + .GTXRXP (GT_RXP), // GTX + .GTXRXN (GT_RXN), // GTX + + .RXDATA (rxdata), // + .RXCHARISK (rxdatak), // + + //---------- Command --------------------------------------------------- + .TXDETECTRX (GT_TXDETECTRX), // + .TXPDELECIDLEMODE ( 1'd0), // + .RXELECIDLEMODE ( 2'd0), // + .TXELECIDLE (GT_TXELECIDLE), // + .TXCHARDISPMODE ({7'd0, GT_TXCOMPLIANCE}), // + .TXCHARDISPVAL ( 8'd0), // + .TXPOLARITY ( 1'b0), // + .RXPOLARITY (GT_RXPOLARITY), // + .TXPD (GT_TXPOWERDOWN), // + .RXPD (GT_RXPOWERDOWN), // + .TXRATE (GT_TXRATE), // + .RXRATE (GT_RXRATE), // + + //---------- Electrical Command ---------------------------------------- + .TXMARGIN (GT_TXMARGIN), // + .TXSWING (GT_TXSWING), // + .TXDEEMPH (GT_TXDEEMPH), // + .TXINHIBIT (GT_TXINHIBIT), // + .TXBUFDIFFCTRL (3'b100), // + .TXDIFFCTRL (4'b1100), // + .TXPRECURSOR (GT_TXPRECURSOR), // + .TXPRECURSORINV (1'd0), // + .TXMAINCURSOR (GT_TXMAINCURSOR), // + .TXPOSTCURSOR (GT_TXPOSTCURSOR), // + .TXPOSTCURSORINV (1'd0), // + + //---------- Status ---------------------------------------------------- + .RXVALID (GT_RXVALID), // + .PHYSTATUS (GT_PHYSTATUS), // + .RXELECIDLE (GT_RXELECIDLE), // + .RXSTATUS (GT_RXSTATUS), // + .TXRATEDONE (GT_TXRATEDONE), // + .RXRATEDONE (GT_RXRATEDONE), // + + //---------- DRP ------------------------------------------------------- + .DRPCLK (GT_DRPCLK), // + .DRPADDR (GT_DRPADDR), // + .DRPEN (GT_DRPEN), // + .DRPDI (GT_DRPDI), // + .DRPWE (GT_DRPWE), // + + .DRPDO (GT_DRPDO), // + .DRPRDY (GT_DRPRDY), // + + //---------- PMA ------------------------------------------------------- + .TXPMARESET (GT_TXPMARESET), // + .RXPMARESET (GT_RXPMARESET), // + .RXLPMEN (rxlpmen), // + .RXLPMHFHOLD ( 1'd0), // + .RXLPMHFOVRDEN ( 1'd0), // + .RXLPMLFHOLD ( 1'd0), // + .RXLPMLFKLOVRDEN ( 1'd0), // + .TXQPIBIASEN ( 1'd0), // + .TXQPISTRONGPDOWN ( 1'd0), // + .TXQPIWEAKPUP ( 1'd0), // + .RXQPIEN ( 1'd0), // + .PMARSVDIN ( 5'd0), // + .PMARSVDIN2 ( 5'd0), // GTX + .GTRSVD (16'd0), // + + .TXQPISENP (), // + .TXQPISENN (), // + .RXQPISENP (), // + .RXQPISENN (), // + .DMONITOROUT (dmonitorout[7:0]), // GTX 8-bits + + //---------- PCS ------------------------------------------------------- + .TXPCSRESET (GT_TXPCSRESET), // + .RXPCSRESET (GT_RXPCSRESET), // + .PCSRSVDIN (16'd0), // [0]: 1 = TXRATE async, [1]: 1 = RXRATE async + .PCSRSVDIN2 ( 5'd0), // + + .PCSRSVDOUT (), // + //---------- CDR ------------------------------------------------------- + .RXCDRRESET (GT_RXCDRRESET), // + .RXCDRRESETRSV (1'd0), // + .RXCDRFREQRESET (GT_RXCDRFREQRESET), // + .RXCDRHOLD (1'b0), // + .RXCDROVRDEN (1'd0), // + + //---------- DFE ------------------------------------------------------- + .RXDFELPMRESET (GT_RXDFELPMRESET), // + .RXDFECM1EN (1'd0), // + .RXDFEVSEN (1'd0), // + .RXDFETAP2HOLD (1'd0), // + .RXDFETAP2OVRDEN (1'd0), // + .RXDFETAP3HOLD (1'd0), // + .RXDFETAP3OVRDEN (1'd0), // + .RXDFETAP4HOLD (1'd0), // + .RXDFETAP4OVRDEN (1'd0), // + .RXDFETAP5HOLD (1'd0), // + .RXDFETAP5OVRDEN (1'd0), // + .RXDFEAGCHOLD (GT_RX_CONVERGE), // Optimized for GES, Set to 1 after convergence + .RXDFEAGCOVRDEN (1'd0), // + .RXDFELFHOLD (1'd0), // + .RXDFELFOVRDEN (1'd1), // Optimized for GES + .RXDFEUTHOLD (1'd0), // + .RXDFEUTOVRDEN (1'd0), // + .RXDFEVPHOLD (1'd0), // + .RXDFEVPOVRDEN (1'd0), // + .RXDFEXYDEN (1'd0), // + .RXDFEXYDHOLD (1'd0), // GTX + .RXDFEXYDOVRDEN (1'd0), // GTX + .RXMONITORSEL (2'd0), // + + .RXMONITOROUT (), // + + //---------- OS -------------------------------------------------------- + .RXOSHOLD (1'd0), // + .RXOSOVRDEN (1'd0), // + + //---------- Eye Scan -------------------------------------------------- + .EYESCANRESET (GT_EYESCANRESET), // + .EYESCANMODE (1'd0), // + .EYESCANTRIGGER (1'b0), // + + .EYESCANDATAERROR (GT_EYESCANDATAERROR), // + + //---------- TX Buffer ------------------------------------------------- + .TXBUFSTATUS (), // + + //---------- RX Buffer ------------------------------------------------- + .RXBUFRESET (GT_RXBUFRESET), // + + .RXBUFSTATUS (GT_RXBUFSTATUS), // + + //---------- TX Sync --------------------------------------------------- + .TXPHDLYRESET (1'd0), // + .TXPHDLYTSTCLK (1'd0), // + .TXPHALIGN (GT_TXPHALIGN), // + .TXPHALIGNEN (GT_TXPHALIGNEN), // + .TXPHDLYPD (1'd0), // + .TXPHINIT (GT_TXPHINIT), // + .TXPHOVRDEN (1'd0), // + .TXDLYBYPASS (GT_TXDLYBYPASS), // + .TXDLYSRESET (GT_TXDLYSRESET), // + .TXDLYEN (GT_TXDLYEN), // + .TXDLYOVRDEN (1'd0), // + .TXDLYHOLD (1'd0), // + .TXDLYUPDOWN (1'd0), // + + .TXPHALIGNDONE (GT_TXPHALIGNDONE), // + .TXPHINITDONE (GT_TXPHINITDONE), // + .TXDLYSRESETDONE (GT_TXDLYSRESETDONE), // + + //---------- RX Sync --------------------------------------------------- + .RXPHDLYRESET (1'd0), // + .RXPHALIGN (GT_RXPHALIGN), // + .RXPHALIGNEN (GT_RXPHALIGNEN), // + .RXPHDLYPD (1'd0), // + .RXPHOVRDEN (1'd0), // + .RXDLYBYPASS (GT_RXDLYBYPASS), // + .RXDLYSRESET (GT_RXDLYSRESET), // + .RXDLYEN (GT_RXDLYEN), // + .RXDLYOVRDEN (1'd0), // + .RXDDIEN (GT_RXDDIEN), // + + .RXPHALIGNDONE (GT_RXPHALIGNDONE), // + .RXPHMONITOR (), // + .RXPHSLIPMONITOR (), // + .RXDLYSRESETDONE (GT_RXDLYSRESETDONE), // + + //---------- Comma Alignment ------------------------------------------- + .RXCOMMADETEN ( 1'd1), // + .RXMCOMMAALIGNEN (!GT_GEN3), // 0 = disable comma alignment in Gen3 + .RXPCOMMAALIGNEN (!GT_GEN3), // 0 = disable comma alignment in Gen3 + .RXSLIDE ( GT_RXSLIDE), // + + .RXCOMMADET (GT_RXCOMMADET), // + .RXCHARISCOMMA (rxchariscomma), // + .RXBYTEISALIGNED (GT_RXBYTEISALIGNED), // + .RXBYTEREALIGN (GT_RXBYTEREALIGN), // + + //---------- Channel Bonding ------------------------------------------- + .RXCHBONDEN (GT_RXCHBONDEN), // + .RXCHBONDI (GT_RXCHBONDI), // + .RXCHBONDLEVEL (GT_RXCHBONDLEVEL), // + .RXCHBONDMASTER (GT_RXCHBONDMASTER), // + .RXCHBONDSLAVE (GT_RXCHBONDSLAVE), // + + .RXCHANBONDSEQ (), // + .RXCHANISALIGNED (GT_RXCHANISALIGNED), // + .RXCHANREALIGN (), // + .RXCHBONDO (GT_RXCHBONDO), // + + //---------- Clock Correction ----------------------------------------- + .RXCLKCORCNT (), // + + //---------- 8b10b ----------------------------------------------------- + .TX8B10BBYPASS (8'd0), // + .TX8B10BEN (!GT_GEN3), // 0 = disable TX 8b10b in Gen3 + .RX8B10BEN (!GT_GEN3), // 0 = disable RX 8b10b in Gen3 + + .RXDISPERR (GT_RXDISPERR), // + .RXNOTINTABLE (GT_RXNOTINTABLE), // + + //---------- 64b/66b & 64b/67b ----------------------------------------- + .TXHEADER (3'd0), // + .TXSEQUENCE (7'd0), // + .TXSTARTSEQ (1'd0), // + .RXGEARBOXSLIP (1'd0), // + + .TXGEARBOXREADY (), // + .RXDATAVALID (), // + .RXHEADER (), // + .RXHEADERVALID (), // + .RXSTARTOFSEQ (), // + + //---------- PRBS/Loopback --------------------------------------------- + .TXPRBSSEL (GT_TXPRBSSEL), // + .RXPRBSSEL (GT_RXPRBSSEL), // + .TXPRBSFORCEERR (GT_TXPRBSFORCEERR), // + .RXPRBSCNTRESET (GT_RXPRBSCNTRESET), // + .LOOPBACK (GT_LOOPBACK), // + + .RXPRBSERR (GT_RXPRBSERR), // + + //---------- OOB ------------------------------------------------------- + .TXCOMINIT (1'd0), // + .TXCOMSAS (1'd0), // + .TXCOMWAKE (1'd0), // + .RXOOBRESET (1'd0), // + + .TXCOMFINISH (), // + .RXCOMINITDET (), // + .RXCOMSASDET (), // + .RXCOMWAKEDET (), // + + //---------- MISC ------------------------------------------------------ + .SETERRSTATUS ( 1'd0), // + .TXDIFFPD ( 1'd0), // + .TXPISOPD ( 1'd0), // + .TSTIN (20'hFFFFF), // + + .TSTOUT () // GTX + + ); + + //---------- Default ------------------------------------------------------- + assign dmonitorout[14:8] = 7'd0; // GTH GTP + assign GT_TXSYNCOUT = 1'd0; // GTH GTP + assign GT_TXSYNCDONE = 1'd0; // GTH GTP + assign GT_RXSYNCOUT = 1'd0; // GTH GTP + assign GT_RXSYNCDONE = 1'd0; // GTH GTP + assign GT_RXPMARESETDONE = 1'd0; // GTH GTP + + end + +endgenerate + +//---------- GT Wrapper Outputs ------------------------------------------------ +assign GT_RXDATA = rxdata [31:0]; +assign GT_RXDATAK = rxdatak[ 3:0]; +assign GT_RXCHARISCOMMA = rxchariscomma[ 3:0]; +assign GT_DMONITOROUT = dmonitorout; + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gtp_cpllpd_ovrd.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gtp_cpllpd_ovrd.v new file mode 100644 index 0000000..7ae62bd --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gtp_cpllpd_ovrd.v @@ -0,0 +1,68 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_gtp_cpllpd_ovrd.v +// Version : 3.3 +`timescale 1ns / 1ps +module pcie_7x_0_gtp_cpllpd_ovrd ( + input i_ibufds_gte2, + output o_cpllpd_ovrd, + output o_cpllreset_ovrd + ); + (* equivalent_register_removal="no" *) reg [95:0] cpllpd_wait = 96'hFFFFFFFFFFFFFFFFFFFFFFFF; + (* equivalent_register_removal="no" *) reg [127:0] cpllreset_wait = 128'h000000000000000000000000000000FF; + always @(posedge i_ibufds_gte2) + begin + cpllpd_wait <= {cpllpd_wait[94:0], 1'b0}; + cpllreset_wait <= {cpllreset_wait[126:0], 1'b0}; + end + assign o_cpllpd_ovrd = cpllpd_wait[95]; + assign o_cpllreset_ovrd = cpllreset_wait[127]; +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gtp_pipe_drp.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gtp_pipe_drp.v new file mode 100644 index 0000000..280067f --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gtp_pipe_drp.v @@ -0,0 +1,370 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_gtp_pipe_drp.v +// Version : 3.3 +//------------------------------------------------------------------------------ +// Filename : gtp_pipe_drp.v +// Description : GTP PIPE DRP Module for 7 Series Transceiver +// Version : 19.0 +//------------------------------------------------------------------------------ + + + +`timescale 1ns / 1ps + + + +//---------- GTP PIPE DRP Module ----------------------------------------------- +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_gtp_pipe_drp # +( + + parameter LOAD_CNT_MAX = 2'd1, // Load max count + parameter INDEX_MAX = 1'd0 // Index max count + +) + +( + + //---------- Input ------------------------------------- + input DRP_CLK, + input DRP_RST_N, + input DRP_X16, + input DRP_START, + input [15:0] DRP_DO, + input DRP_RDY, + + //---------- Output ------------------------------------ + output [ 8:0] DRP_ADDR, + output DRP_EN, + output [15:0] DRP_DI, + output DRP_WE, + output DRP_DONE, + output [ 2:0] DRP_FSM + +); + + //---------- Input Registers --------------------------- +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg x16_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg start_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [15:0] do_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rdy_reg1; + +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg x16_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg start_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [15:0] do_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rdy_reg2; + + //---------- Internal Signals -------------------------- + reg [ 1:0] load_cnt = 2'd0; + reg [ 4:0] index = 5'd0; + reg [ 8:0] addr_reg = 9'd0; + reg [15:0] di_reg = 16'd0; + + //---------- Output Registers -------------------------- + reg done = 1'd0; + reg [ 2:0] fsm = 0; + + //---------- DRP Address ------------------------------- + localparam ADDR_RX_DATAWIDTH = 9'h011; + + //---------- DRP Mask ---------------------------------- + localparam MASK_RX_DATAWIDTH = 16'b1111011111111111; // Unmask bit [ 11] + + //---------- DRP Data for x16 -------------------------- + localparam X16_RX_DATAWIDTH = 16'b0000000000000000; // 2-byte (16-bit) internal data width + + //---------- DRP Data for x20 -------------------------- + localparam X20_RX_DATAWIDTH = 16'b0000100000000000; // 2-byte (20-bit) internal data width + + //---------- DRP Data ---------------------------------- + wire [15:0] data_rx_datawidth; + + //---------- FSM --------------------------------------- + localparam FSM_IDLE = 0; + localparam FSM_LOAD = 1; + localparam FSM_READ = 2; + localparam FSM_RRDY = 3; + localparam FSM_WRITE = 4; + localparam FSM_WRDY = 5; + localparam FSM_DONE = 6; + + + +//---------- Input FF ---------------------------------------------------------- +always @ (posedge DRP_CLK) +begin + + if (!DRP_RST_N) + begin + //---------- 1st Stage FF -------------------------- + x16_reg1 <= 1'd0; + do_reg1 <= 16'd0; + rdy_reg1 <= 1'd0; + start_reg1 <= 1'd0; + //---------- 2nd Stage FF -------------------------- + x16_reg2 <= 1'd0; + do_reg2 <= 16'd0; + rdy_reg2 <= 1'd0; + start_reg2 <= 1'd0; + end + + else + begin + //---------- 1st Stage FF -------------------------- + x16_reg1 <= DRP_X16; + do_reg1 <= DRP_DO; + rdy_reg1 <= DRP_RDY; + start_reg1 <= DRP_START; + //---------- 2nd Stage FF -------------------------- + x16_reg2 <= x16_reg1; + do_reg2 <= do_reg1; + rdy_reg2 <= rdy_reg1; + start_reg2 <= start_reg1; + end + +end + + + +//---------- Select DRP Data --------------------------------------------------- +assign data_rx_datawidth = x16_reg2 ? X16_RX_DATAWIDTH : X20_RX_DATAWIDTH; + + + +//---------- Load Counter ------------------------------------------------------ +always @ (posedge DRP_CLK) +begin + + if (!DRP_RST_N) + load_cnt <= 2'd0; + else + + //---------- Increment Load Counter ---------------- + if ((fsm == FSM_LOAD) && (load_cnt < LOAD_CNT_MAX)) + load_cnt <= load_cnt + 2'd1; + + //---------- Hold Load Counter --------------------- + else if ((fsm == FSM_LOAD) && (load_cnt == LOAD_CNT_MAX)) + load_cnt <= load_cnt; + + //---------- Reset Load Counter -------------------- + else + load_cnt <= 2'd0; + +end + + + +//---------- Update DRP Address and Data --------------------------------------- +always @ (posedge DRP_CLK) +begin + + if (!DRP_RST_N) + begin + addr_reg <= 9'd0; + di_reg <= 16'd0; + end + else + begin + + case (index) + + //-------------------------------------------------- + 1'd0 : + begin + addr_reg <= ADDR_RX_DATAWIDTH; + di_reg <= (do_reg2 & MASK_RX_DATAWIDTH) | data_rx_datawidth; + end + + //-------------------------------------------------- + default : + begin + addr_reg <= 9'd0; + di_reg <= 16'd0; + end + + endcase + + end + +end + + + +//---------- PIPE DRP FSM ------------------------------------------------------ +always @ (posedge DRP_CLK) +begin + + if (!DRP_RST_N) + begin + fsm <= FSM_IDLE; + index <= 5'd0; + done <= 1'd1; //Fix applied for GTP DRP issue + end + else + begin + + case (fsm) + + //---------- Idle State ---------------------------- + FSM_IDLE : + + begin + //---------- Reset or Rate Change -------------- + if (start_reg2) + begin + fsm <= FSM_LOAD; + index <= 5'd0; + done <= 1'd0; + end + //---------- Idle ------------------------------ + else + begin + fsm <= FSM_IDLE; + index <= 5'd0; + done <= 1'd1; + end + end + + //---------- Load DRP Address --------------------- + FSM_LOAD : + + begin + fsm <= (load_cnt == LOAD_CNT_MAX) ? FSM_READ : FSM_LOAD; + index <= index; + + done <= 1'd0; + end + + //---------- Read DRP ------------------------------ + FSM_READ : + + begin + fsm <= FSM_RRDY; + index <= index; + done <= 1'd0; + end + + //---------- Read DRP Ready ------------------------ + FSM_RRDY : + + begin + fsm <= rdy_reg2 ? FSM_WRITE : FSM_RRDY; + index <= index; + done <= 1'd0; + end + + + //---------- Write DRP ----------------------------- + FSM_WRITE : + + begin + fsm <= FSM_WRDY; + index <= index; + done <= 1'd0; + end + + //---------- Write DRP Ready ----------------------- + FSM_WRDY : + + begin + fsm <= rdy_reg2 ? FSM_DONE : FSM_WRDY; + index <= index; + done <= 1'd0; + end + + //---------- DRP Done ------------------------------ + FSM_DONE : + + begin + if (index == INDEX_MAX) + begin + fsm <= FSM_IDLE; + index <= 5'd0; + done <= 1'd1; //Fix applied for GTP DRP issue + end + else + begin + fsm <= FSM_LOAD; + index <= index + 5'd1; + done <= 1'd0; + end + end + + //---------- Default State ------------------------- + default : + + begin + fsm <= FSM_IDLE; + index <= 5'd0; + done <= 1'd1; //Fix applied for GTP DRP issue + end + + endcase + + end + +end + + + +//---------- PIPE DRP Output --------------------------------------------------- +assign DRP_ADDR = addr_reg; +assign DRP_EN = (fsm == FSM_READ) || (fsm == FSM_WRITE); +assign DRP_DI = di_reg; +assign DRP_WE = (fsm == FSM_WRITE); +assign DRP_DONE = done; +assign DRP_FSM = fsm; + + + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gtp_pipe_rate.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gtp_pipe_rate.v new file mode 100644 index 0000000..51ae111 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gtp_pipe_rate.v @@ -0,0 +1,461 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_gtp_pipe_rate.v +// Version : 3.3 +//------------------------------------------------------------------------------ +// Filename : gtp_pipe_rate.v +// Description : PIPE Rate Module for 7 Series Transceiver +// Version : 19.0 +//------------------------------------------------------------------------------ + + + +`timescale 1ns / 1ps + + + +//---------- PIPE Rate Module -------------------------------------------------- +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_gtp_pipe_rate # +( + + parameter PCIE_SIM_SPEEDUP = "FALSE", // PCIe sim mode + parameter TXDATA_WAIT_MAX = 4'd15 // TXDATA wait max + +) + +( + + //---------- Input ------------------------------------- + input RATE_CLK, + input RATE_RST_N, + input [ 1:0] RATE_RATE_IN, + input RATE_DRP_DONE, + input RATE_RXPMARESETDONE, + input RATE_TXRATEDONE, + input RATE_RXRATEDONE, + input RATE_TXSYNC_DONE, + input RATE_PHYSTATUS, + + //---------- Output ------------------------------------ + output RATE_PCLK_SEL, + output RATE_DRP_START, + output RATE_DRP_X16, + output [ 2:0] RATE_RATE_OUT, + output RATE_TXSYNC_START, + output RATE_DONE, + output RATE_IDLE, + output [ 4:0] RATE_FSM + +); + + //---------- Input FF or Buffer ------------------------ +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 1:0] rate_in_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg drp_done_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxpmaresetdone_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txratedone_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxratedone_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg phystatus_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txsync_done_reg1; + +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 1:0] rate_in_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg drp_done_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxpmaresetdone_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txratedone_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxratedone_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg phystatus_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txsync_done_reg2; + + //---------- Internal Signals -------------------------- + wire [ 2:0] rate; + reg [ 3:0] txdata_wait_cnt = 4'd0; + reg txratedone = 1'd0; + reg rxratedone = 1'd0; + reg phystatus = 1'd0; + reg ratedone = 1'd0; + + //---------- Output FF or Buffer ----------------------- + reg pclk_sel = 1'd0; + reg [ 2:0] rate_out = 3'd0; + reg [ 3:0] fsm = 0; + + //---------- FSM --------------------------------------- + localparam FSM_IDLE = 0; + localparam FSM_TXDATA_WAIT = 1; + localparam FSM_PCLK_SEL = 2; + localparam FSM_DRP_X16_START = 3; + localparam FSM_DRP_X16_DONE = 4; + localparam FSM_RATE_SEL = 5; + localparam FSM_RXPMARESETDONE = 6; + localparam FSM_DRP_X20_START = 7; + localparam FSM_DRP_X20_DONE = 8; + localparam FSM_RATE_DONE = 9; + localparam FSM_TXSYNC_START = 10; + localparam FSM_TXSYNC_DONE = 11; + localparam FSM_DONE = 12; // Must sync value to pipe_user.v + +//---------- Input FF ---------------------------------------------------------- +always @ (posedge RATE_CLK) +begin + + if (!RATE_RST_N) + begin + //---------- 1st Stage FF -------------------------- + rate_in_reg1 <= 2'd0; + drp_done_reg1 <= 1'd0; + rxpmaresetdone_reg1 <= 1'd0; + txratedone_reg1 <= 1'd0; + rxratedone_reg1 <= 1'd0; + phystatus_reg1 <= 1'd0; + txsync_done_reg1 <= 1'd0; + //---------- 2nd Stage FF -------------------------- + rate_in_reg2 <= 2'd0; + drp_done_reg2 <= 1'd0; + rxpmaresetdone_reg2 <= 1'd0; + txratedone_reg2 <= 1'd0; + rxratedone_reg2 <= 1'd0; + phystatus_reg2 <= 1'd0; + txsync_done_reg2 <= 1'd0; + end + else + begin + //---------- 1st Stage FF -------------------------- + rate_in_reg1 <= RATE_RATE_IN; + drp_done_reg1 <= RATE_DRP_DONE; + rxpmaresetdone_reg1 <= RATE_RXPMARESETDONE; + txratedone_reg1 <= RATE_TXRATEDONE; + rxratedone_reg1 <= RATE_RXRATEDONE; + phystatus_reg1 <= RATE_PHYSTATUS; + txsync_done_reg1 <= RATE_TXSYNC_DONE; + //---------- 2nd Stage FF -------------------------- + rate_in_reg2 <= rate_in_reg1; + drp_done_reg2 <= drp_done_reg1; + rxpmaresetdone_reg2 <= rxpmaresetdone_reg1; + txratedone_reg2 <= txratedone_reg1; + rxratedone_reg2 <= rxratedone_reg1; + phystatus_reg2 <= phystatus_reg1; + txsync_done_reg2 <= txsync_done_reg1; + end + +end + + + +//---------- Select Rate ------------------------------------------------------- +// Gen1 : div 2 using [TX/RX]OUT_DIV = 2 +// Gen2 : div 1 using [TX/RX]RATE = 3'd1 +//------------------------------------------------------------------------------ +assign rate = (rate_in_reg2 == 2'd1) ? 3'd1 : 3'd0; + + + +//---------- TXDATA Wait Counter ----------------------------------------------- +always @ (posedge RATE_CLK) +begin + + if (!RATE_RST_N) + txdata_wait_cnt <= 4'd0; + else + + //---------- Increment Wait Counter ---------------- + if ((fsm == FSM_TXDATA_WAIT) && (txdata_wait_cnt < TXDATA_WAIT_MAX)) + txdata_wait_cnt <= txdata_wait_cnt + 4'd1; + + //---------- Hold Wait Counter --------------------- + else if ((fsm == FSM_TXDATA_WAIT) && (txdata_wait_cnt == TXDATA_WAIT_MAX)) + txdata_wait_cnt <= txdata_wait_cnt; + + //---------- Reset Wait Counter -------------------- + else + txdata_wait_cnt <= 4'd0; + +end + + + +//---------- Latch TXRATEDONE, RXRATEDONE, and PHYSTATUS ----------------------- +always @ (posedge RATE_CLK) +begin + + if (!RATE_RST_N) + begin + txratedone <= 1'd0; + rxratedone <= 1'd0; + phystatus <= 1'd0; + ratedone <= 1'd0; + end + else + begin + + if ((fsm == FSM_RATE_DONE) || (fsm == FSM_RXPMARESETDONE) || (fsm == FSM_DRP_X20_START) || (fsm == FSM_DRP_X20_DONE)) + + begin + + //---------- Latch TXRATEDONE ------------------ + if (txratedone_reg2) + txratedone <= 1'd1; + else + txratedone <= txratedone; + + //---------- Latch RXRATEDONE ------------------ + if (rxratedone_reg2) + rxratedone <= 1'd1; + else + rxratedone <= rxratedone; + + //---------- Latch PHYSTATUS ------------------- + if (phystatus_reg2) + phystatus <= 1'd1; + else + phystatus <= phystatus; + + //---------- Latch Rate Done ------------------- + if (rxratedone && txratedone && phystatus) + ratedone <= 1'd1; + else + ratedone <= ratedone; + + end + + else + + begin + txratedone <= 1'd0; + rxratedone <= 1'd0; + phystatus <= 1'd0; + ratedone <= 1'd0; + end + + end + +end + + + +//---------- PIPE Rate FSM ----------------------------------------------------- +always @ (posedge RATE_CLK) +begin + + if (!RATE_RST_N) + begin + fsm <= FSM_IDLE; + pclk_sel <= 1'd0; + rate_out <= 3'd0; + end + else + begin + + case (fsm) + + //---------- Idle State ---------------------------- + FSM_IDLE : + + begin + //---------- Detect Rate Change ---------------- + if (rate_in_reg2 != rate_in_reg1) + begin + fsm <= FSM_TXDATA_WAIT; + pclk_sel <= pclk_sel; + rate_out <= rate_out; + end + else + begin + fsm <= FSM_IDLE; + pclk_sel <= pclk_sel; + rate_out <= rate_out; + end + end + + //---------- Wait for TXDATA to TX[P/N] Latency ---- + FSM_TXDATA_WAIT : + + begin + fsm <= (txdata_wait_cnt == TXDATA_WAIT_MAX) ? FSM_PCLK_SEL : FSM_TXDATA_WAIT; + pclk_sel <= pclk_sel; + rate_out <= rate_out; + end + + //---------- Select PCLK Frequency ----------------- + // Gen1 : PCLK = 125 MHz + // Gen2 : PCLK = 250 MHz + //-------------------------------------------------- + FSM_PCLK_SEL : + + begin + fsm <= (PCIE_SIM_SPEEDUP == "TRUE") ? FSM_RATE_SEL : FSM_DRP_X16_START; + pclk_sel <= (rate_in_reg2 == 2'd1); + rate_out <= rate_out; + end + + //---------- Start DRP x16 ------------------------- + FSM_DRP_X16_START : + + begin + fsm <= (!drp_done_reg2) ? FSM_DRP_X16_DONE : FSM_DRP_X16_START; + pclk_sel <= pclk_sel; + rate_out <= rate_out; + end + + //---------- Wait for DRP x16 Done ----------------- + FSM_DRP_X16_DONE : + + begin + fsm <= drp_done_reg2 ? FSM_RATE_SEL : FSM_DRP_X16_DONE; + pclk_sel <= pclk_sel; + rate_out <= rate_out; + end + + //---------- Select Rate --------------------------- + FSM_RATE_SEL : + + begin + fsm <= (PCIE_SIM_SPEEDUP == "TRUE") ? FSM_RATE_DONE : FSM_RXPMARESETDONE; + pclk_sel <= pclk_sel; + rate_out <= rate; // Update [TX/RX]RATE + end + + //---------- Wait for RXPMARESETDONE De-assertion -- + FSM_RXPMARESETDONE : + + begin + fsm <= (!rxpmaresetdone_reg2) ? FSM_DRP_X20_START : FSM_RXPMARESETDONE; + pclk_sel <= pclk_sel; + rate_out <= rate_out; + end + + //---------- Start DRP x20 ------------------------- + FSM_DRP_X20_START : + + begin + fsm <= (!drp_done_reg2) ? FSM_DRP_X20_DONE : FSM_DRP_X20_START; + pclk_sel <= pclk_sel; + rate_out <= rate_out; + end + + //---------- Wait for DRP x20 Done ----------------- + FSM_DRP_X20_DONE : + + begin + fsm <= drp_done_reg2 ? FSM_RATE_DONE : FSM_DRP_X20_DONE; + pclk_sel <= pclk_sel; + rate_out <= rate_out; + end + + //---------- Wait for Rate Change Done ------------- + FSM_RATE_DONE : + + begin + if (ratedone) + fsm <= FSM_TXSYNC_START; + else + fsm <= FSM_RATE_DONE; + + pclk_sel <= pclk_sel; + rate_out <= rate_out; + end + + //---------- Start TX Sync ------------------------- + FSM_TXSYNC_START: + + begin + fsm <= (!txsync_done_reg2 ? FSM_TXSYNC_DONE : FSM_TXSYNC_START); + pclk_sel <= pclk_sel; + rate_out <= rate_out; + end + + //---------- Wait for TX Sync Done ----------------- + FSM_TXSYNC_DONE: + + begin + fsm <= (txsync_done_reg2 ? FSM_DONE : FSM_TXSYNC_DONE); + pclk_sel <= pclk_sel; + rate_out <= rate_out; + end + + //---------- Rate Change Done ---------------------- + FSM_DONE : + + begin + fsm <= FSM_IDLE; + pclk_sel <= pclk_sel; + rate_out <= rate_out; + end + + //---------- Default State ------------------------- + default : + + begin + fsm <= FSM_IDLE; + pclk_sel <= 1'd0; + rate_out <= 3'd0; + end + + endcase + + end + +end + + + +//---------- PIPE Rate Output -------------------------------------------------- +assign RATE_PCLK_SEL = pclk_sel; +assign RATE_DRP_START = (fsm == FSM_DRP_X16_START) || (fsm == FSM_DRP_X20_START); +assign RATE_DRP_X16 = (fsm == FSM_DRP_X16_START) || (fsm == FSM_DRP_X16_DONE); +assign RATE_RATE_OUT = rate_out; +assign RATE_TXSYNC_START = (fsm == FSM_TXSYNC_START); +assign RATE_DONE = (fsm == FSM_DONE); +assign RATE_IDLE = (fsm == FSM_IDLE); +assign RATE_FSM = {1'd0, fsm}; + + + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gtp_pipe_reset.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gtp_pipe_reset.v new file mode 100644 index 0000000..95fbecc --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gtp_pipe_reset.v @@ -0,0 +1,537 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_gtp_pipe_reset.v +// Version : 3.3 +//------------------------------------------------------------------------------ +// Filename : gtp_pipe_reset.v +// Description : GTP PIPE Reset Module for 7 Series Transceiver +// Version : 19.0 +//------------------------------------------------------------------------------ + + + +`timescale 1ns / 1ps + + + +//---------- PIPE Reset Module ------------------------------------------------- +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_gtp_pipe_reset # +( + + //---------- Global ------------------------------------ + parameter PCIE_SIM_SPEEDUP = "FALSE", // PCIe sim speedup + parameter PCIE_LANE = 1, // PCIe number of lanes + //---------- Local ------------------------------------- + parameter CFG_WAIT_MAX = 6'd63, // Configuration wait max + parameter BYPASS_RXCDRLOCK = 1 // Bypass RXCDRLOCK + +) + +( + + //---------- Input ------------------------------------- + input RST_CLK, + input RST_RXUSRCLK, + input RST_DCLK, + input RST_RST_N, + input [PCIE_LANE-1:0] RST_DRP_DONE, + input [PCIE_LANE-1:0] RST_RXPMARESETDONE, + input RST_PLLLOCK, + input [PCIE_LANE-1:0] RST_RATE_IDLE, + input [PCIE_LANE-1:0] RST_RXCDRLOCK, + input RST_MMCM_LOCK, + input [PCIE_LANE-1:0] RST_RESETDONE, + input [PCIE_LANE-1:0] RST_PHYSTATUS, + input [PCIE_LANE-1:0] RST_TXSYNC_DONE, + + //---------- Output ------------------------------------ + output RST_CPLLRESET, + output RST_CPLLPD, + output reg RST_DRP_START, + output reg RST_DRP_X16, + output RST_RXUSRCLK_RESET, + output RST_DCLK_RESET, + output RST_GTRESET, + output RST_USERRDY, + output RST_TXSYNC_START, + output RST_IDLE, + output [ 4:0] RST_FSM + +); + + //---------- Input Register ---------------------------- +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] drp_done_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] rxpmaresetdone_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg plllock_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] rate_idle_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] rxcdrlock_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg mmcm_lock_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] resetdone_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] phystatus_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] txsync_done_reg1; + +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] drp_done_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] rxpmaresetdone_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg plllock_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] rate_idle_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] rxcdrlock_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg mmcm_lock_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] resetdone_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] phystatus_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] txsync_done_reg2; + + //---------- Internal Signal --------------------------- + reg [ 5:0] cfg_wait_cnt = 6'd0; + + //---------- Output Register --------------------------- + reg pllreset = 1'd0; + reg pllpd = 1'd0; + reg rxusrclk_rst_reg1 = 1'd0; + reg rxusrclk_rst_reg2 = 1'd0; + reg dclk_rst_reg1 = 1'd0; + reg dclk_rst_reg2 = 1'd0; + reg gtreset = 1'd0; + reg userrdy = 1'd0; + reg [ 4:0] fsm = 5'h1; + + //---------- FSM --------------------------------------- + localparam FSM_IDLE = 5'h0; + localparam FSM_CFG_WAIT = 5'h1; + localparam FSM_PLLRESET = 5'h2; + localparam FSM_DRP_X16_START = 5'h3; + localparam FSM_DRP_X16_DONE = 5'h4; + localparam FSM_PLLLOCK = 5'h5; + localparam FSM_GTRESET = 5'h6; + localparam FSM_RXPMARESETDONE_1 = 5'h7; + localparam FSM_RXPMARESETDONE_2 = 5'h8; + localparam FSM_DRP_X20_START = 5'h9; + localparam FSM_DRP_X20_DONE = 5'hA; + localparam FSM_MMCM_LOCK = 5'hB; + localparam FSM_RESETDONE = 5'hC; + localparam FSM_TXSYNC_START = 5'hD; + localparam FSM_TXSYNC_DONE = 5'hE; + + + +//---------- Input FF ---------------------------------------------------------- +always @ (posedge RST_CLK) +begin + + if (!RST_RST_N) + begin + //---------- 1st Stage FF -------------------------- + drp_done_reg1 <= {PCIE_LANE{1'd0}}; + rxpmaresetdone_reg1 <= {PCIE_LANE{1'd0}}; + plllock_reg1 <= 1'd0; + rate_idle_reg1 <= {PCIE_LANE{1'd0}}; + rxcdrlock_reg1 <= {PCIE_LANE{1'd0}}; + mmcm_lock_reg1 <= 1'd0; + resetdone_reg1 <= {PCIE_LANE{1'd0}}; + phystatus_reg1 <= {PCIE_LANE{1'd0}}; + txsync_done_reg1 <= {PCIE_LANE{1'd0}}; + //---------- 2nd Stage FF -------------------------- + drp_done_reg2 <= {PCIE_LANE{1'd0}}; + rxpmaresetdone_reg2 <= {PCIE_LANE{1'd0}}; + plllock_reg2 <= 1'd0; + rate_idle_reg2 <= {PCIE_LANE{1'd0}}; + rxcdrlock_reg2 <= {PCIE_LANE{1'd0}}; + mmcm_lock_reg2 <= 1'd0; + resetdone_reg2 <= {PCIE_LANE{1'd0}}; + phystatus_reg2 <= {PCIE_LANE{1'd0}}; + txsync_done_reg2 <= {PCIE_LANE{1'd0}}; + end + else + begin + //---------- 1st Stage FF -------------------------- + drp_done_reg1 <= RST_DRP_DONE; + rxpmaresetdone_reg1 <= RST_RXPMARESETDONE; + plllock_reg1 <= RST_PLLLOCK; + rate_idle_reg1 <= RST_RATE_IDLE; + rxcdrlock_reg1 <= RST_RXCDRLOCK; + mmcm_lock_reg1 <= RST_MMCM_LOCK; + resetdone_reg1 <= RST_RESETDONE; + phystatus_reg1 <= RST_PHYSTATUS; + txsync_done_reg1 <= RST_TXSYNC_DONE; + //---------- 2nd Stage FF -------------------------- + drp_done_reg2 <= drp_done_reg1; + rxpmaresetdone_reg2 <= rxpmaresetdone_reg1; + plllock_reg2 <= plllock_reg1; + rate_idle_reg2 <= rate_idle_reg1; + rxcdrlock_reg2 <= rxcdrlock_reg1; + mmcm_lock_reg2 <= mmcm_lock_reg1; + resetdone_reg2 <= resetdone_reg1; + phystatus_reg2 <= phystatus_reg1; + txsync_done_reg2 <= txsync_done_reg1; + end + +end + + + +//---------- Configuration Reset Wait Counter ---------------------------------- +always @ (posedge RST_CLK) +begin + + if (!RST_RST_N) + cfg_wait_cnt <= 6'd0; + else + + //---------- Increment Configuration Reset Wait Counter + if ((fsm == FSM_CFG_WAIT) && (cfg_wait_cnt < CFG_WAIT_MAX)) + cfg_wait_cnt <= cfg_wait_cnt + 6'd1; + + //---------- Hold Configuration Reset Wait Counter - + else if ((fsm == FSM_CFG_WAIT) && (cfg_wait_cnt == CFG_WAIT_MAX)) + cfg_wait_cnt <= cfg_wait_cnt; + + //---------- Reset Configuration Reset Wait Counter + else + cfg_wait_cnt <= 6'd0; + +end + + + +//---------- PIPE Reset FSM ---------------------------------------------------- +always @ (posedge RST_CLK) +begin + + if (!RST_RST_N) + begin + fsm <= FSM_CFG_WAIT; + pllreset <= 1'd0; + pllpd <= 1'd0; + gtreset <= 1'd0; + userrdy <= 1'd0; + end + else + begin + + case (fsm) + + //---------- Idle State ---------------------------- + FSM_IDLE : + + begin + if (!RST_RST_N) + begin + fsm <= FSM_CFG_WAIT; + pllreset <= 1'd0; + pllpd <= 1'd0; + gtreset <= 1'd0; + userrdy <= 1'd0; + end + else + begin + fsm <= FSM_IDLE; + pllreset <= pllreset; + pllpd <= pllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + end + + //---------- Wait for Configuration Reset Delay --- + FSM_CFG_WAIT : + + begin + fsm <= ((cfg_wait_cnt == CFG_WAIT_MAX) ? FSM_PLLRESET : FSM_CFG_WAIT); + pllreset <= pllreset; + pllpd <= pllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + + //---------- Hold PLL and GTP Channel in Reset ---- + FSM_PLLRESET : + + begin + fsm <= (((~plllock_reg2) && (&(~resetdone_reg2))) ? FSM_DRP_X16_START : FSM_PLLRESET); + pllreset <= 1'd1; + pllpd <= pllpd; + gtreset <= 1'd1; + userrdy <= userrdy; + end + + //---------- Start DRP x16 ------------------------- + FSM_DRP_X16_START : + + begin + fsm <= &(~drp_done_reg2) ? FSM_DRP_X16_DONE : FSM_DRP_X16_START; + pllreset <= pllreset; + pllpd <= pllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + + //---------- Wait for DRP x16 Done ----------------- + FSM_DRP_X16_DONE : + + begin + fsm <= (&drp_done_reg2) ? FSM_PLLLOCK : FSM_DRP_X16_DONE; + pllreset <= pllreset; + pllpd <= pllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + + //---------- Wait for PLL Lock -------------------- + FSM_PLLLOCK : + + begin + fsm <= (plllock_reg2 ? FSM_GTRESET : FSM_PLLLOCK); + pllreset <= 1'd0; + pllpd <= pllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + + //---------- Release GTRESET ----------------------- + FSM_GTRESET : + + begin + fsm <= FSM_RXPMARESETDONE_1; + pllreset <= pllreset; + pllpd <= pllpd; + gtreset <= 1'b0; + userrdy <= userrdy; + end + + //---------- Wait for RXPMARESETDONE Assertion ----- + FSM_RXPMARESETDONE_1 : + + begin + fsm <= (&rxpmaresetdone_reg2 || (PCIE_SIM_SPEEDUP == "TRUE")) ? FSM_RXPMARESETDONE_2 : FSM_RXPMARESETDONE_1; + pllreset <= pllreset; + pllpd <= pllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + + //---------- Wait for RXPMARESETDONE De-assertion -- + FSM_RXPMARESETDONE_2 : + + begin + fsm <= (&(~rxpmaresetdone_reg2) || (PCIE_SIM_SPEEDUP == "TRUE")) ? FSM_DRP_X20_START : FSM_RXPMARESETDONE_2; + pllreset <= pllreset; + pllpd <= pllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + + //---------- Start DRP x20 ------------------------- + FSM_DRP_X20_START : + + begin + fsm <= &(~drp_done_reg2) ? FSM_DRP_X20_DONE : FSM_DRP_X20_START; + pllreset <= pllreset; + pllpd <= pllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + + //---------- Wait for DRP x20 Done ----------------- + FSM_DRP_X20_DONE : + + begin + fsm <= (&drp_done_reg2) ? FSM_MMCM_LOCK : FSM_DRP_X20_DONE; + pllreset <= pllreset; + pllpd <= pllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + + //---------- Wait for MMCM and RX CDR Lock --------- + FSM_MMCM_LOCK : + + begin + if (mmcm_lock_reg2 && (&rxcdrlock_reg2 || (BYPASS_RXCDRLOCK == 1))) + begin + fsm <= FSM_RESETDONE; + pllreset <= pllreset; + pllpd <= pllpd; + gtreset <= gtreset; + userrdy <= 1'd1; + end + else + begin + fsm <= FSM_MMCM_LOCK; + pllreset <= pllreset; + pllpd <= pllpd; + gtreset <= gtreset; + userrdy <= 1'd0; + end + end + + //---------- Wait for [TX/RX]RESETDONE and PHYSTATUS + FSM_RESETDONE : + + begin + fsm <= (&resetdone_reg2 && (&(~phystatus_reg2)) ? FSM_TXSYNC_START : FSM_RESETDONE); + pllreset <= pllreset; + pllpd <= pllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + + //---------- Start TX Sync ------------------------- + FSM_TXSYNC_START : + + begin + fsm <= (&(~txsync_done_reg2) ? FSM_TXSYNC_DONE : FSM_TXSYNC_START); + pllreset <= pllreset; + pllpd <= pllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + + //---------- Wait for TX Sync Done ----------------- + FSM_TXSYNC_DONE : + + begin + fsm <= (&txsync_done_reg2 ? FSM_IDLE : FSM_TXSYNC_DONE); + pllreset <= pllreset; + pllpd <= pllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + + //---------- Default State ------------------------- + default : + + begin + fsm <= FSM_CFG_WAIT; + pllreset <= 1'd0; + pllpd <= 1'd0; + gtreset <= 1'd0; + userrdy <= 1'd0; + end + + endcase + + end + +end + + + +//---------- RXUSRCLK Reset Synchronizer --------------------------------------- +always @ (posedge RST_RXUSRCLK) +begin + + if (pllreset) + begin + rxusrclk_rst_reg1 <= 1'd1; + rxusrclk_rst_reg2 <= 1'd1; + end + else + begin + rxusrclk_rst_reg1 <= 1'd0; + rxusrclk_rst_reg2 <= rxusrclk_rst_reg1; + end + +end + +//---------- DCLK Reset Synchronizer ------------------------------------------- +always @ (posedge RST_DCLK) +begin + + if (fsm == FSM_CFG_WAIT) + begin + dclk_rst_reg1 <= 1'd1; + dclk_rst_reg2 <= dclk_rst_reg1; + end + else + begin + dclk_rst_reg1 <= 1'd0; + dclk_rst_reg2 <= dclk_rst_reg1; + end + +end + + + +//---------- PIPE Reset Output ------------------------------------------------- +assign RST_CPLLRESET = pllreset; +assign RST_CPLLPD = pllpd; +assign RST_RXUSRCLK_RESET = rxusrclk_rst_reg2; +assign RST_DCLK_RESET = dclk_rst_reg2; +assign RST_GTRESET = gtreset; +assign RST_USERRDY = userrdy; +assign RST_TXSYNC_START = (fsm == FSM_TXSYNC_START); +assign RST_IDLE = (fsm == FSM_IDLE); +assign RST_FSM = fsm; + + + +//-------------------------------------------------------------------------------------------------- +// Register Output +//-------------------------------------------------------------------------------------------------- +always @ (posedge RST_CLK) +begin + + if (!RST_RST_N) + begin + RST_DRP_START <= 1'd0; + RST_DRP_X16 <= 1'd0; + end + else + begin + RST_DRP_START <= (fsm == FSM_DRP_X16_START) || (fsm == FSM_DRP_X20_START); + RST_DRP_X16 <= (fsm == FSM_DRP_X16_START) || (fsm == FSM_DRP_X16_DONE); + end + +end + + + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gtx_cpllpd_ovrd.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gtx_cpllpd_ovrd.v new file mode 100644 index 0000000..6463ab7 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_gtx_cpllpd_ovrd.v @@ -0,0 +1,68 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_gtx_cpllpd_ovrd.v +// Version : 3.3 +`timescale 1ns / 1ps +module pcie_7x_0_gtx_cpllpd_ovrd ( + input i_ibufds_gte2, + output o_cpllpd_ovrd, + output o_cpllreset_ovrd + ); + (* equivalent_register_removal="no" *) reg [95:0] cpllpd_wait = 96'hFFFFFFFFFFFFFFFFFFFFFFFF; + (* equivalent_register_removal="no" *) reg [127:0] cpllreset_wait = 128'h000000000000000000000000000000FF; + always @(posedge i_ibufds_gte2) + begin + cpllpd_wait <= {cpllpd_wait[94:0], 1'b0}; + cpllreset_wait <= {cpllreset_wait[126:0], 1'b0}; + end + assign o_cpllpd_ovrd = cpllpd_wait[95]; + assign o_cpllreset_ovrd = cpllreset_wait[127]; +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie2_top.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie2_top.v new file mode 100644 index 0000000..95cc08f --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie2_top.v @@ -0,0 +1,1018 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_pcie2_top.v +// Version : 3.3 + +//-------------------------------------------------------------------------------- + + +`timescale 1ns/1ps +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_pcie2_top # ( +parameter c_component_name ="pcie_7x_v3_3_14", +parameter dev_port_type ="0000", +parameter c_dev_port_type ="0", +parameter c_header_type ="00", +parameter c_upstream_facing ="TRUE", +parameter max_lnk_wdt = "000100", +parameter max_lnk_spd = "1", +parameter c_gen1 = 1'b0, +parameter c_int_width = 64, +parameter pci_exp_int_freq = 2, +parameter c_pcie_fast_config = 0, +parameter bar_0 = "FFFFFF80", +parameter bar_1 = "00000000", +parameter bar_2 = "00000000", +parameter bar_3 = "00000000", +parameter bar_4 = "00000000", +parameter bar_5 = "00000000", +parameter xrom_bar = "00000000", +parameter cost_table = 1, +parameter ven_id = "10EE", +parameter dev_id = "7028", +parameter rev_id = "00", +parameter subsys_ven_id = "10EE", +parameter subsys_id = "0007", +parameter class_code = "058000", +parameter cardbus_cis_ptr = "00000000", +parameter cap_ver = "2", +parameter c_pcie_cap_slot_implemented = "FALSE", +parameter mps = "010", +parameter cmps = "2", +parameter ext_tag_fld_sup = "FALSE", +parameter c_dev_control_ext_tag_default = "FALSE", +parameter phantm_func_sup = "00", +parameter c_phantom_functions = "0", +parameter ep_l0s_accpt_lat = "000", +parameter c_ep_l0s_accpt_lat = "0", +parameter ep_l1_accpt_lat = "111", +parameter c_ep_l1_accpt_lat = "7", +parameter c_cpl_timeout_disable_sup = "FALSE", +parameter c_cpl_timeout_range = "0010", +parameter c_cpl_timeout_ranges_sup = "2", +parameter c_buf_opt_bma = "TRUE", +parameter c_perf_level_high = "TRUE", +parameter c_tx_last_tlp = "29", +parameter c_rx_ram_limit = "7FF", +parameter c_fc_ph = "32", +parameter c_fc_pd = "437", +parameter c_fc_nph = "12", +parameter c_fc_npd = "24", +parameter c_fc_cplh = "36", +parameter c_fc_cpld = "461", +parameter c_cpl_inf = "TRUE", +parameter c_cpl_infinite = "TRUE", +parameter c_surprise_dn_err_cap = "FALSE", +parameter c_dll_lnk_actv_cap = "FALSE", +parameter c_lnk_bndwdt_notif = "FALSE", +parameter c_external_clocking = "TRUE", +parameter c_trgt_lnk_spd = "0", +parameter c_hw_auton_spd_disable = "FALSE", +parameter c_de_emph = "FALSE", +parameter slot_clk = "TRUE", +parameter c_rcb = "0", +parameter c_root_cap_crs = "FALSE", +parameter c_slot_cap_attn_butn = "FALSE", +parameter c_slot_cap_attn_ind = "FALSE", +parameter c_slot_cap_pwr_ctrl = "FALSE", +parameter c_slot_cap_pwr_ind = "FALSE", +parameter c_slot_cap_hotplug_surprise = "FALSE", +parameter c_slot_cap_hotplug_cap = "FALSE", +parameter c_slot_cap_mrl = "FALSE", +parameter c_slot_cap_elec_interlock = "FALSE", +parameter c_slot_cap_no_cmd_comp_sup = "FALSE", +parameter c_slot_cap_pwr_limit_value = "0", +parameter c_slot_cap_pwr_limit_scale = "0", +parameter c_slot_cap_physical_slot_num = "0", +parameter intx = "TRUE", +parameter int_pin = "1", +parameter c_msi_cap_on = "TRUE", +parameter c_pm_cap_next_ptr = "48", +parameter c_msi_64b_addr = "TRUE", +parameter c_msi = "0", +parameter c_msi_mult_msg_extn = "0", +parameter c_msi_per_vctr_mask_cap = "FALSE", +parameter c_msix_cap_on = "FALSE", +parameter c_msix_next_ptr = "00", +parameter c_pcie_cap_next_ptr = "00", +parameter c_msix_table_size = "000", +parameter c_msix_table_offset = "0", +parameter c_msix_table_bir = "0", +parameter c_msix_pba_offset = "0", +parameter c_msix_pba_bir = "0", +parameter dsi = "0", +parameter c_dsi_bool = "FALSE", +parameter d1_sup = "0", +parameter c_d1_support = "FALSE", +parameter d2_sup = "0", +parameter c_d2_support = "FALSE", +parameter pme_sup = "0F", +parameter c_pme_support = "0F", +parameter no_soft_rst = "TRUE", +parameter pwr_con_d0_state = "00", +parameter con_scl_fctr_d0_state = "0", +parameter pwr_con_d1_state = "00", +parameter con_scl_fctr_d1_state = "0", +parameter pwr_con_d2_state = "00", +parameter con_scl_fctr_d2_state = "0", +parameter pwr_con_d3_state = "00", +parameter con_scl_fctr_d3_state = "0", +parameter pwr_dis_d0_state = "00", +parameter dis_scl_fctr_d0_state = "0", +parameter pwr_dis_d1_state = "00", +parameter dis_scl_fctr_d1_state = "0", +parameter pwr_dis_d2_state = "00", +parameter dis_scl_fctr_d2_state = "0", +parameter pwr_dis_d3_state = "00", +parameter dis_scl_fctr_d3_state = "0", +parameter c_dsn_cap_enabled = "TRUE", +parameter c_dsn_base_ptr = "100", +parameter c_vc_cap_enabled = "FALSE", +parameter c_vc_base_ptr = "000", +parameter c_vc_cap_reject_snoop = "FALSE", +parameter c_vsec_cap_enabled = "FALSE", +parameter c_vsec_base_ptr = "000", +parameter c_vsec_next_ptr = "000", +parameter c_dsn_next_ptr = "000", +parameter c_vc_next_ptr = "000", +parameter c_pci_cfg_space_addr = "3F", +parameter c_ext_pci_cfg_space_addr = "3FF", +parameter c_last_cfg_dw = "10C", +parameter c_enable_msg_route = "00000000000", +parameter bram_lat = "0", +parameter c_rx_raddr_lat = "0", +parameter c_rx_rdata_lat = "2", +parameter c_rx_write_lat = "0", +parameter c_tx_raddr_lat = "0", +parameter c_tx_rdata_lat = "2", +parameter c_tx_write_lat = "0", +parameter c_ll_ack_timeout_enable = "FALSE", +parameter c_ll_ack_timeout_function = "0", +parameter c_ll_ack_timeout = "0000", +parameter c_ll_replay_timeout_enable = "FALSE", +parameter c_ll_replay_timeout_func = "1", +parameter c_ll_replay_timeout = "0000", +parameter c_dis_lane_reverse = "TRUE", +parameter c_upconfig_capable = "TRUE", +parameter c_disable_scrambling = "FALSE", +parameter c_disable_tx_aspm_l0s = "0", +parameter c_rev_gt_order = "FALSE", +parameter c_pcie_dbg_ports = "FALSE", +parameter pci_exp_ref_freq = "0", +parameter c_xlnx_ref_board = "NONE", +parameter c_pcie_blk_locn = "0", +parameter c_ur_atomic = "FALSE", +parameter c_dev_cap2_atomicop32_completer_supported = "FALSE", +parameter c_dev_cap2_atomicop64_completer_supported = "FALSE", +parameter c_dev_cap2_cas128_completer_supported = "FALSE", +parameter c_dev_cap2_tph_completer_supported = "00", +parameter c_dev_cap2_ari_forwarding_supported = "FALSE", +parameter c_dev_cap2_atomicop_routing_supported = "FALSE", +parameter c_link_cap_aspm_optionality = "FALSE", +parameter c_aer_cap_on = "FALSE", +parameter c_aer_base_ptr = "000", +parameter c_aer_cap_nextptr = "000", +parameter c_aer_cap_ecrc_check_capable = "FALSE", +parameter c_aer_cap_multiheader = "FALSE", +parameter c_aer_cap_permit_rooterr_update = "FALSE", +parameter c_rbar_cap_on = "FALSE", +parameter c_rbar_base_ptr = "000", +parameter c_rbar_cap_nextptr = "000", +parameter c_rbar_num = "0", +parameter c_rbar_cap_sup0 = "00001", +parameter c_rbar_cap_index0 = "0", +parameter c_rbar_cap_control_encodedbar0 = "00", +parameter c_rbar_cap_sup1 = "00001", +parameter c_rbar_cap_index1 = "0", +parameter c_rbar_cap_control_encodedbar1 = "00", +parameter c_rbar_cap_sup2 = "00001", +parameter c_rbar_cap_index2 = "0", +parameter c_rbar_cap_control_encodedbar2 = "00", +parameter c_rbar_cap_sup3 = "00001", +parameter c_rbar_cap_index3 = "0", +parameter c_rbar_cap_control_encodedbar3 = "00", +parameter c_rbar_cap_sup4 = "00001", +parameter c_rbar_cap_index4 = "0", +parameter c_rbar_cap_control_encodedbar4 = "00", +parameter c_rbar_cap_sup5 = "00001", +parameter c_rbar_cap_index5 = "0", +parameter c_rbar_cap_control_encodedbar5 = "00", +parameter c_recrc_check = "0", +parameter c_recrc_check_trim = "FALSE", +parameter c_disable_rx_poisoned_resp = "FALSE", +parameter c_trn_np_fc = "TRUE", +parameter c_ur_inv_req = "TRUE", +parameter c_ur_prs_response = "TRUE", +parameter c_silicon_rev = "1", +parameter c_aer_cap_optional_err_support = "000000", +parameter PIPE_SIM = "FALSE", +parameter PCIE_EXT_CLK = "TRUE", +parameter PCIE_EXT_GT_COMMON = "FALSE", +parameter EXT_CH_GT_DRP = "TRUE", +parameter TRANSCEIVER_CTRL_STATUS_PORTS = "FALSE", +parameter SHARED_LOGIC_IN_CORE = "FALSE", +parameter PL_INTERFACE = "TRUE", +parameter CFG_MGMT_IF = "TRUE", +parameter CFG_CTL_IF = "TRUE", +parameter CFG_STATUS_IF = "TRUE", +parameter RCV_MSG_IF = "TRUE", +parameter CFG_FC_IF = "TRUE" , +parameter ERR_REPORTING_IF = "TRUE", +parameter c_aer_cap_ecrc_gen_capable = "FALSE", +parameter EXT_PIPE_INTERFACE = "FALSE", +parameter EXT_STARTUP_PRIMITIVE = "FALSE", +parameter integer LINK_CAP_MAX_LINK_WIDTH = 6'h8, +parameter integer C_DATA_WIDTH = 64, +parameter integer KEEP_WIDTH = C_DATA_WIDTH / 8, +parameter PCIE_ASYNC_EN = "FALSE", +parameter ENABLE_JTAG_DBG = "FALSE", +parameter REDUCE_OOB_FREQ = "FALSE" +) +( + + //----------------------------------------------------------------------------------------------------------------// + // 1. PCI Express (pci_exp) Interface // + //----------------------------------------------------------------------------------------------------------------// + + // Tx + output [(LINK_CAP_MAX_LINK_WIDTH - 1) : 0] pci_exp_txn, + output [(LINK_CAP_MAX_LINK_WIDTH - 1) : 0] pci_exp_txp, + + // Rx + input [(LINK_CAP_MAX_LINK_WIDTH - 1) : 0] pci_exp_rxn, + input [(LINK_CAP_MAX_LINK_WIDTH - 1) : 0] pci_exp_rxp, + + //----------------------------------------------------------------------------------------------------------------// + // 2. Clock & GT COMMON Sharing Interface // + //----------------------------------------------------------------------------------------------------------------// + // Shared Logic Internal + output int_pclk_out_slave, + output int_pipe_rxusrclk_out, + output [(LINK_CAP_MAX_LINK_WIDTH-1):0] int_rxoutclk_out, + output int_dclk_out, + output int_userclk1_out, + output int_userclk2_out, + output int_oobclk_out, + output int_mmcm_lock_out, + output [1:0] int_qplllock_out, + output [1:0] int_qplloutclk_out, + output [1:0] int_qplloutrefclk_out, + input [(LINK_CAP_MAX_LINK_WIDTH-1):0] int_pclk_sel_slave, + + // Shared Logic External - Clocks + input pipe_pclk_in, + input pipe_rxusrclk_in, + input [(LINK_CAP_MAX_LINK_WIDTH - 1) : 0] pipe_rxoutclk_in, + input pipe_dclk_in, + input pipe_userclk1_in, + input pipe_userclk2_in, + input pipe_oobclk_in, + input pipe_mmcm_lock_in, + + output pipe_txoutclk_out, + output [(LINK_CAP_MAX_LINK_WIDTH - 1) : 0] pipe_rxoutclk_out, + output [(LINK_CAP_MAX_LINK_WIDTH - 1) : 0] pipe_pclk_sel_out, + output pipe_gen3_out, + + // Shared Logic External - GT COMMON + + input [11:0] qpll_drp_crscode, + input [17:0] qpll_drp_fsm, + input [1:0] qpll_drp_done, + input [1:0] qpll_drp_reset, + input [1:0] qpll_qplllock, + input [1:0] qpll_qplloutclk, + input [1:0] qpll_qplloutrefclk, + output qpll_qplld, + output [1:0] qpll_qpllreset, + output qpll_drp_clk, + output qpll_drp_rst_n, + output qpll_drp_ovrd, + output qpll_drp_gen3, + output qpll_drp_start, + + //----------------------------------------------------------------------------------------------------------------// + // 3. AXI-S Interface // + //----------------------------------------------------------------------------------------------------------------// + + // Common + output user_clk_out, + output user_reset_out, + output user_lnk_up, + output user_app_rdy, + + // AXI TX + //----------- + output [5:0] tx_buf_av, + output tx_err_drop, + output tx_cfg_req, + input [C_DATA_WIDTH-1:0] s_axis_tx_tdata, + input s_axis_tx_tvalid, + output s_axis_tx_tready, + input [KEEP_WIDTH-1:0] s_axis_tx_tkeep, + input s_axis_tx_tlast, + input [3:0] s_axis_tx_tuser, + input tx_cfg_gnt, + + // AXI RX + //----------- + output [C_DATA_WIDTH-1:0] m_axis_rx_tdata, + output m_axis_rx_tvalid, + input m_axis_rx_tready, + output [KEEP_WIDTH-1:0] m_axis_rx_tkeep, + output m_axis_rx_tlast, + output [21:0] m_axis_rx_tuser, + input rx_np_ok, + input rx_np_req, + + // Flow Control + output [11:0] fc_cpld, + output [7:0] fc_cplh, + output [11:0] fc_npd, + output [7:0] fc_nph, + output [11:0] fc_pd, + output [7:0] fc_ph, + input [2:0] fc_sel, + + + //----------------------------------------------------------------------------------------------------------------// + // 4. Configuration (CFG) Interface // + //----------------------------------------------------------------------------------------------------------------// + + //------------------------------------------------// + // EP and RP // + //------------------------------------------------// + output [31:0] cfg_mgmt_do, + output cfg_mgmt_rd_wr_done, + + output [15:0] cfg_status, + output [15:0] cfg_command, + output [15:0] cfg_dstatus, + output [15:0] cfg_dcommand, + output [15:0] cfg_lstatus, + output [15:0] cfg_lcommand, + output [15:0] cfg_dcommand2, + output [2:0] cfg_pcie_link_state, + + output cfg_pmcsr_pme_en, + output [1:0] cfg_pmcsr_powerstate, + output cfg_pmcsr_pme_status, + output cfg_received_func_lvl_rst, + + // Management Interface + input [31:0] cfg_mgmt_di, + input [3:0] cfg_mgmt_byte_en, + input [9:0] cfg_mgmt_dwaddr, + input cfg_mgmt_wr_en, + input cfg_mgmt_rd_en, + input cfg_mgmt_wr_readonly, + + // Error Reporting Interface + input cfg_err_ecrc, + input cfg_err_ur, + input cfg_err_cpl_timeout, + input cfg_err_cpl_unexpect, + input cfg_err_cpl_abort, + input cfg_err_posted, + input cfg_err_cor, + input cfg_err_atomic_egress_blocked, + input cfg_err_internal_cor, + input cfg_err_malformed, + input cfg_err_mc_blocked, + input cfg_err_poisoned, + input cfg_err_norecovery, + input [47:0] cfg_err_tlp_cpl_header, + output cfg_err_cpl_rdy, + input cfg_err_locked, + input cfg_err_acs, + input cfg_err_internal_uncor, + + input cfg_trn_pending, + input cfg_pm_halt_aspm_l0s, + input cfg_pm_halt_aspm_l1, + input cfg_pm_force_state_en, + input [1:0] cfg_pm_force_state, + + input [63:0] cfg_dsn, + output cfg_msg_received, + output [15:0] cfg_msg_data, + + //------------------------------------------------// + // EP Only // + //------------------------------------------------// + + // Interrupt Interface Signals + input cfg_interrupt, + output cfg_interrupt_rdy, + input cfg_interrupt_assert, + input [7:0] cfg_interrupt_di, + output [7:0] cfg_interrupt_do, + output [2:0] cfg_interrupt_mmenable, + output cfg_interrupt_msienable, + output cfg_interrupt_msixenable, + output cfg_interrupt_msixfm, + input cfg_interrupt_stat, + input [4:0] cfg_pciecap_interrupt_msgnum, + + + output cfg_to_turnoff, + input cfg_turnoff_ok, + output [7:0] cfg_bus_number, + output [4:0] cfg_device_number, + output [2:0] cfg_function_number, + input cfg_pm_wake, + + output cfg_msg_received_pm_as_nak, + output cfg_msg_received_setslotpowerlimit, + + //------------------------------------------------// + // RP Only // + //------------------------------------------------// + input cfg_pm_send_pme_to, + input [7:0] cfg_ds_bus_number, + input [4:0] cfg_ds_device_number, + input [2:0] cfg_ds_function_number, + + input cfg_mgmt_wr_rw1c_as_rw, + + output cfg_bridge_serr_en, + output cfg_slot_control_electromech_il_ctl_pulse, + output cfg_root_control_syserr_corr_err_en, + output cfg_root_control_syserr_non_fatal_err_en, + output cfg_root_control_syserr_fatal_err_en, + output cfg_root_control_pme_int_en, + output cfg_aer_rooterr_corr_err_reporting_en, + output cfg_aer_rooterr_non_fatal_err_reporting_en, + output cfg_aer_rooterr_fatal_err_reporting_en, + output cfg_aer_rooterr_corr_err_received, + output cfg_aer_rooterr_non_fatal_err_received, + output cfg_aer_rooterr_fatal_err_received, + + output cfg_msg_received_err_cor, + output cfg_msg_received_err_non_fatal, + output cfg_msg_received_err_fatal, + output cfg_msg_received_pm_pme, + output cfg_msg_received_pme_to_ack, + output cfg_msg_received_assert_int_a, + output cfg_msg_received_assert_int_b, + output cfg_msg_received_assert_int_c, + output cfg_msg_received_assert_int_d, + output cfg_msg_received_deassert_int_a, + output cfg_msg_received_deassert_int_b, + output cfg_msg_received_deassert_int_c, + output cfg_msg_received_deassert_int_d, + + //----------------------------------------------------------------------------------------------------------------// + // 5. Physical Layer Control and Status (PL) Interface // + //----------------------------------------------------------------------------------------------------------------// + + //------------------------------------------------// + // EP and RP // + //------------------------------------------------// + input [1:0] pl_directed_link_change, + input [1:0] pl_directed_link_width, + input pl_directed_link_speed, + input pl_directed_link_auton, + input pl_upstream_prefer_deemph, + + output pl_sel_lnk_rate, + output [1:0] pl_sel_lnk_width, + output [5:0] pl_ltssm_state, + output [1:0] pl_lane_reversal_mode, + + output pl_phy_lnk_up, + output [2:0] pl_tx_pm_state, + output [1:0] pl_rx_pm_state, + + output pl_link_upcfg_cap, + output pl_link_gen2_cap, + output pl_link_partner_gen2_supported, + output [2:0] pl_initial_link_width, + + output pl_directed_change_done, + + //------------------------------------------------// + // EP Only // + //------------------------------------------------// + output pl_received_hot_rst, + + //------------------------------------------------// + // RP Only // + //------------------------------------------------// + input pl_transmit_hot_rst, + input pl_downstream_deemph_source, + + //----------------------------------------------------------------------------------------------------------------// + // 6. AER interface // + //----------------------------------------------------------------------------------------------------------------// + + input [127:0] cfg_err_aer_headerlog, + input [4:0] cfg_aer_interrupt_msgnum, + output cfg_err_aer_headerlog_set, + output cfg_aer_ecrc_check_en, + output cfg_aer_ecrc_gen_en, + + //----------------------------------------------------------------------------------------------------------------// + // 7. VC interface // + //----------------------------------------------------------------------------------------------------------------// + + output [6:0] cfg_vc_tcvc_map, + + //----------------------------------------------------------------------------------------------------------------// + // 8. PCIe DRP (PCIe DRP) Interface // + //----------------------------------------------------------------------------------------------------------------// + + input pcie_drp_clk, + input pcie_drp_en, + input pcie_drp_we, + input [8:0] pcie_drp_addr, + input [15:0] pcie_drp_di, + output pcie_drp_rdy, + output [15:0] pcie_drp_do, + + //----------------------------------------------------------------------------------------------------------------// + // PCIe Fast Config: STARTUP primitive Interface - only used in Tandem configurations // + //----------------------------------------------------------------------------------------------------------------// + // This input should be used when the startup block is generated exteranl to the PCI Express Core + input startup_eos_in, // 1-bit input: This signal should be driven by the EOS output of the STARTUP primitive. + // These inputs and outputs may be use when the startup block is generated internal to the PCI Express Core. + output wire startup_cfgclk, // 1-bit output: Configuration main clock output + output wire startup_cfgmclk, // 1-bit output: Configuration internal oscillator clock output + output wire startup_eos, // 1-bit output: Active high output signal indicating the End Of Startup + output wire startup_preq, // 1-bit output: PROGRAM request to fabric output + input wire startup_clk, // 1-bit input: User start-up clock input + input wire startup_gsr, // 1-bit input: Global Set/Reset input (GSR cannot be used for the port name) + input wire startup_gts, // 1-bit input: Global 3-state input (GTS cannot be used for the port name) + input wire startup_keyclearb, // 1-bit input: Clear AES Decrypter Key input from Battery-Backed RAM (BBRAM) + input wire startup_pack, // 1-bit input: PROGRAM acknowledge input + input wire startup_usrcclko, // 1-bit input: User CCLK input + input wire startup_usrcclkts, // 1-bit input: User CCLK 3-state enable input + input wire startup_usrdoneo, // 1-bit input: User DONE pin output control + input wire startup_usrdonets, // 1-bit input: User DONE 3-state enable output + + //----------------------------------------------------------------------------------------------------------------// + // PCIe Fast Config: ICAP primitive Interface - only used in Tandem PCIe configuration // + //----------------------------------------------------------------------------------------------------------------// + input wire icap_clk, + input wire icap_csib, + input wire icap_rdwrb, + input wire [31:0] icap_i, + output wire [31:0] icap_o, + + + input [ 2:0] pipe_txprbssel, + input [ 2:0] pipe_rxprbssel, + input pipe_txprbsforceerr, + input pipe_rxprbscntreset, + input [ 2:0] pipe_loopback, + + output [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_rxprbserr, + input [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_txinhibit, + + output [4:0] pipe_rst_fsm, + output [11:0] pipe_qrst_fsm, + output [(LINK_CAP_MAX_LINK_WIDTH*5)-1:0] pipe_rate_fsm, + output [(LINK_CAP_MAX_LINK_WIDTH*6)-1:0] pipe_sync_fsm_tx, + output [(LINK_CAP_MAX_LINK_WIDTH*7)-1:0] pipe_sync_fsm_rx, + output [(LINK_CAP_MAX_LINK_WIDTH*7)-1:0] pipe_drp_fsm, + + output pipe_rst_idle, + output pipe_qrst_idle, + output pipe_rate_idle, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_eyescandataerror, + output [(LINK_CAP_MAX_LINK_WIDTH*3)-1:0] pipe_rxstatus, + output [(LINK_CAP_MAX_LINK_WIDTH*15)-1:0] pipe_dmonitorout, + + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] pipe_cpll_lock, + output [(LINK_CAP_MAX_LINK_WIDTH-1)>>2:0] pipe_qpll_lock, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] pipe_rxpmaresetdone, + output [(LINK_CAP_MAX_LINK_WIDTH*3)-1:0] pipe_rxbufstatus, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] pipe_txphaligndone, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] pipe_txphinitdone, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] pipe_txdlysresetdone, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] pipe_rxphaligndone, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] pipe_rxdlysresetdone, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] pipe_rxsyncdone, + output [(LINK_CAP_MAX_LINK_WIDTH*8)-1:0] pipe_rxdisperr, + output [(LINK_CAP_MAX_LINK_WIDTH*8)-1:0] pipe_rxnotintable, + output [(LINK_CAP_MAX_LINK_WIDTH)-1:0] pipe_rxcommadet, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] gt_ch_drp_rdy, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_debug_0, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_debug_1, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_debug_2, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_debug_3, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_debug_4, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_debug_5, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_debug_6, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_debug_7, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_debug_8, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] pipe_debug_9, + output [31:0] pipe_debug, + + //--------------Channel DRP--------------------------------- + output ext_ch_gt_drpclk, + input [(LINK_CAP_MAX_LINK_WIDTH*9)-1:0] ext_ch_gt_drpaddr, + input [LINK_CAP_MAX_LINK_WIDTH-1:0] ext_ch_gt_drpen, + input [(LINK_CAP_MAX_LINK_WIDTH*16)-1:0] ext_ch_gt_drpdi, + input [LINK_CAP_MAX_LINK_WIDTH-1:0] ext_ch_gt_drpwe, + + output [(LINK_CAP_MAX_LINK_WIDTH*16)-1:0] ext_ch_gt_drpdo, + output [LINK_CAP_MAX_LINK_WIDTH-1:0] ext_ch_gt_drprdy, + + //----------------------------------------------------------------------------------------------------------------// + // PIPE PORTS to TOP Level For PIPE SIMULATION with 3rd Party IP/BFM/Xilinx BFM + //----------------------------------------------------------------------------------------------------------------// + input wire [11:0] common_commands_in, + input wire [24:0] pipe_rx_0_sigs, + input wire [24:0] pipe_rx_1_sigs, + input wire [24:0] pipe_rx_2_sigs, + input wire [24:0] pipe_rx_3_sigs, + input wire [24:0] pipe_rx_4_sigs, + input wire [24:0] pipe_rx_5_sigs, + input wire [24:0] pipe_rx_6_sigs, + input wire [24:0] pipe_rx_7_sigs, + + output wire [11:0] common_commands_out, + output wire [24:0] pipe_tx_0_sigs, + output wire [24:0] pipe_tx_1_sigs, + output wire [24:0] pipe_tx_2_sigs, + output wire [24:0] pipe_tx_3_sigs, + output wire [24:0] pipe_tx_4_sigs, + output wire [24:0] pipe_tx_5_sigs, + output wire [24:0] pipe_tx_6_sigs, + output wire [24:0] pipe_tx_7_sigs, + //----------------------------------------------------------------------------------------------------------------// + input wire pipe_mmcm_rst_n, // Async | Async + input wire sys_clk, + input wire sys_rst_n + +); + +pcie_7x_0_core_top # ( + .LINK_CAP_MAX_LINK_WIDTH (LINK_CAP_MAX_LINK_WIDTH), + .C_DATA_WIDTH (C_DATA_WIDTH), + .KEEP_WIDTH (KEEP_WIDTH) + ) inst + ( + .pci_exp_txn(pci_exp_txn), + .pci_exp_txp(pci_exp_txp), + .pci_exp_rxn(pci_exp_rxn), + .pci_exp_rxp(pci_exp_rxp), + .int_pclk_out_slave(int_pclk_out_slave), + .int_pipe_rxusrclk_out(int_pipe_rxusrclk_out), + .int_rxoutclk_out(int_rxoutclk_out), + .int_dclk_out(int_dclk_out), + .int_userclk1_out(int_userclk1_out), + .int_mmcm_lock_out(int_mmcm_lock_out), + .int_userclk2_out(int_userclk2_out), + .int_oobclk_out(int_oobclk_out), + .int_qplllock_out(int_qplllock_out), + .int_qplloutclk_out(int_qplloutclk_out), + .int_qplloutrefclk_out(int_qplloutrefclk_out), + .int_pclk_sel_slave(int_pclk_sel_slave), + .pipe_pclk_in(pipe_pclk_in), + .pipe_rxusrclk_in(pipe_rxusrclk_in), + .pipe_rxoutclk_in(pipe_rxoutclk_in), + .pipe_dclk_in(pipe_dclk_in), + .pipe_userclk1_in(pipe_userclk1_in), + .pipe_userclk2_in(pipe_userclk2_in), + .pipe_oobclk_in(pipe_oobclk_in), + .pipe_mmcm_lock_in(pipe_mmcm_lock_in), + .pipe_txoutclk_out(pipe_txoutclk_out), + .pipe_rxoutclk_out(pipe_rxoutclk_out), + .pipe_pclk_sel_out(pipe_pclk_sel_out), + .pipe_gen3_out(pipe_gen3_out), + .user_clk_out(user_clk_out), + .user_reset_out(user_reset_out), + .user_lnk_up(user_lnk_up), + .user_app_rdy(user_app_rdy), + .tx_buf_av(tx_buf_av), + .tx_err_drop(tx_err_drop), + .tx_cfg_req(tx_cfg_req), + .s_axis_tx_tready(s_axis_tx_tready), + .s_axis_tx_tdata(s_axis_tx_tdata), + .s_axis_tx_tkeep(s_axis_tx_tkeep), + .s_axis_tx_tuser(s_axis_tx_tuser), + .s_axis_tx_tlast(s_axis_tx_tlast), + .s_axis_tx_tvalid(s_axis_tx_tvalid), + .tx_cfg_gnt(tx_cfg_gnt), + .m_axis_rx_tdata(m_axis_rx_tdata), + .m_axis_rx_tkeep(m_axis_rx_tkeep), + .m_axis_rx_tlast(m_axis_rx_tlast), + .m_axis_rx_tvalid(m_axis_rx_tvalid), + .m_axis_rx_tready(m_axis_rx_tready), + .m_axis_rx_tuser(m_axis_rx_tuser), + .rx_np_ok(rx_np_ok), + .rx_np_req(rx_np_req), + .fc_cpld(fc_cpld), + .fc_cplh(fc_cplh), + .fc_npd(fc_npd), + .fc_nph(fc_nph), + .fc_pd(fc_pd), + .fc_ph(fc_ph), + .fc_sel(fc_sel), + .cfg_status(cfg_status), + .cfg_command(cfg_command), + .cfg_dstatus(cfg_dstatus), + .cfg_dcommand(cfg_dcommand), + .cfg_lstatus(cfg_lstatus), + .cfg_lcommand(cfg_lcommand), + .cfg_dcommand2(cfg_dcommand2), + .cfg_pcie_link_state(cfg_pcie_link_state), + .cfg_pmcsr_pme_en(cfg_pmcsr_pme_en), + .cfg_pmcsr_powerstate(cfg_pmcsr_powerstate), + .cfg_pmcsr_pme_status(cfg_pmcsr_pme_status), + .cfg_received_func_lvl_rst(cfg_received_func_lvl_rst), + .cfg_mgmt_do(cfg_mgmt_do), + .cfg_mgmt_rd_wr_done(cfg_mgmt_rd_wr_done), + .cfg_mgmt_di(cfg_mgmt_di), + .cfg_mgmt_byte_en(cfg_mgmt_byte_en), + .cfg_mgmt_dwaddr(cfg_mgmt_dwaddr), + .cfg_mgmt_wr_en(cfg_mgmt_wr_en), + .cfg_mgmt_rd_en(cfg_mgmt_rd_en), + .cfg_mgmt_wr_readonly(cfg_mgmt_wr_readonly), + .cfg_err_ecrc(cfg_err_ecrc), + .cfg_err_ur(cfg_err_ur), + .cfg_err_cpl_timeout(cfg_err_cpl_timeout), + .cfg_err_cpl_unexpect(cfg_err_cpl_unexpect), + .cfg_err_cpl_abort(cfg_err_cpl_abort), + .cfg_err_posted(cfg_err_posted), + .cfg_err_cor(cfg_err_cor), + .cfg_err_atomic_egress_blocked(cfg_err_atomic_egress_blocked), + .cfg_err_internal_cor(cfg_err_internal_cor), + .cfg_err_malformed(cfg_err_malformed), + .cfg_err_mc_blocked(cfg_err_mc_blocked), + .cfg_err_poisoned(cfg_err_poisoned), + .cfg_err_norecovery(cfg_err_norecovery), + .cfg_err_tlp_cpl_header(cfg_err_tlp_cpl_header), + .cfg_err_cpl_rdy(cfg_err_cpl_rdy), + .cfg_err_locked(cfg_err_locked), + .cfg_err_acs(cfg_err_acs), + .cfg_err_internal_uncor(cfg_err_internal_uncor), + .cfg_trn_pending(cfg_trn_pending), + .cfg_pm_halt_aspm_l0s(cfg_pm_halt_aspm_l0s), + .cfg_pm_halt_aspm_l1(cfg_pm_halt_aspm_l1), + .cfg_pm_force_state_en(cfg_pm_force_state_en), + .cfg_pm_force_state(cfg_pm_force_state), + .cfg_dsn(cfg_dsn), + .cfg_msg_received(cfg_msg_received), + .cfg_msg_data(cfg_msg_data), + .cfg_interrupt(cfg_interrupt), + .cfg_interrupt_rdy(cfg_interrupt_rdy), + .cfg_interrupt_assert(cfg_interrupt_assert), + .cfg_interrupt_di(cfg_interrupt_di), + .cfg_interrupt_do(cfg_interrupt_do), + .cfg_interrupt_mmenable(cfg_interrupt_mmenable), + .cfg_interrupt_msienable(cfg_interrupt_msienable), + .cfg_interrupt_msixenable(cfg_interrupt_msixenable), + .cfg_interrupt_msixfm(cfg_interrupt_msixfm), + .cfg_interrupt_stat(cfg_interrupt_stat), + .cfg_pciecap_interrupt_msgnum(cfg_pciecap_interrupt_msgnum), + .cfg_to_turnoff(cfg_to_turnoff), + .cfg_turnoff_ok(cfg_turnoff_ok), + .cfg_bus_number(cfg_bus_number), + .cfg_device_number(cfg_device_number), + .cfg_function_number(cfg_function_number), + .cfg_pm_wake(cfg_pm_wake), + .cfg_msg_received_setslotpowerlimit(cfg_msg_received_setslotpowerlimit), + .cfg_pm_send_pme_to(cfg_pm_send_pme_to), + .cfg_ds_bus_number(cfg_ds_bus_number), + .cfg_ds_device_number(cfg_ds_device_number), + .cfg_ds_function_number(cfg_ds_function_number), + .cfg_mgmt_wr_rw1c_as_rw(cfg_mgmt_wr_rw1c_as_rw), + .cfg_bridge_serr_en(cfg_bridge_serr_en), + .cfg_slot_control_electromech_il_ctl_pulse(cfg_slot_control_electromech_il_ctl_pulse), + .cfg_root_control_syserr_corr_err_en(cfg_root_control_syserr_corr_err_en), + .cfg_root_control_syserr_non_fatal_err_en(cfg_root_control_syserr_non_fatal_err_en), + .cfg_root_control_syserr_fatal_err_en(cfg_root_control_syserr_fatal_err_en), + .cfg_root_control_pme_int_en(cfg_root_control_pme_int_en), + .cfg_aer_rooterr_corr_err_reporting_en(cfg_aer_rooterr_corr_err_reporting_en), + .cfg_aer_rooterr_non_fatal_err_reporting_en(cfg_aer_rooterr_non_fatal_err_reporting_en), + .cfg_aer_rooterr_fatal_err_reporting_en(cfg_aer_rooterr_fatal_err_reporting_en), + .cfg_aer_rooterr_corr_err_received(cfg_aer_rooterr_corr_err_received), + .cfg_aer_rooterr_non_fatal_err_received(cfg_aer_rooterr_non_fatal_err_received), + .cfg_aer_rooterr_fatal_err_received(cfg_aer_rooterr_fatal_err_received), + .cfg_msg_received_err_cor(cfg_msg_received_err_cor), + .cfg_msg_received_err_non_fatal(cfg_msg_received_err_non_fatal), + .cfg_msg_received_err_fatal(cfg_msg_received_err_fatal), + .cfg_msg_received_pm_as_nak(cfg_msg_received_pm_as_nak), + .cfg_msg_received_pm_pme(cfg_msg_received_pm_pme), + .cfg_msg_received_pme_to_ack(cfg_msg_received_pme_to_ack), + .cfg_msg_received_assert_int_a(cfg_msg_received_assert_int_a), + .cfg_msg_received_assert_int_b(cfg_msg_received_assert_int_b), + .cfg_msg_received_assert_int_c(cfg_msg_received_assert_int_c), + .cfg_msg_received_assert_int_d(cfg_msg_received_assert_int_d), + .cfg_msg_received_deassert_int_a(cfg_msg_received_deassert_int_a), + .cfg_msg_received_deassert_int_b(cfg_msg_received_deassert_int_b), + .cfg_msg_received_deassert_int_c(cfg_msg_received_deassert_int_c), + .cfg_msg_received_deassert_int_d(cfg_msg_received_deassert_int_d), + .pl_directed_link_change(pl_directed_link_change), + .pl_directed_link_width(pl_directed_link_width), + .pl_directed_link_speed(pl_directed_link_speed), + .pl_directed_link_auton(pl_directed_link_auton), + .pl_upstream_prefer_deemph(pl_upstream_prefer_deemph), + .pl_sel_lnk_rate(pl_sel_lnk_rate), + .pl_sel_lnk_width(pl_sel_lnk_width), + .pl_ltssm_state(pl_ltssm_state), + .pl_lane_reversal_mode(pl_lane_reversal_mode), + .pl_phy_lnk_up(pl_phy_lnk_up), + .pl_tx_pm_state(pl_tx_pm_state), + .pl_rx_pm_state(pl_rx_pm_state), + .pl_link_upcfg_cap(pl_link_upcfg_cap), + .pl_link_gen2_cap(pl_link_gen2_cap), + .pl_link_partner_gen2_supported(pl_link_partner_gen2_supported), + .pl_initial_link_width(pl_initial_link_width), + .pl_directed_change_done(pl_directed_change_done), + .pl_received_hot_rst(pl_received_hot_rst), + .pl_transmit_hot_rst(pl_transmit_hot_rst), + .pl_downstream_deemph_source(pl_downstream_deemph_source), + .cfg_err_aer_headerlog(cfg_err_aer_headerlog), + .cfg_aer_interrupt_msgnum(cfg_aer_interrupt_msgnum), + .cfg_err_aer_headerlog_set(cfg_err_aer_headerlog_set), + .cfg_aer_ecrc_check_en(cfg_aer_ecrc_check_en), + .cfg_aer_ecrc_gen_en(cfg_aer_ecrc_gen_en), + .cfg_vc_tcvc_map(cfg_vc_tcvc_map), + .pcie_drp_clk(pcie_drp_clk), + .pcie_drp_en(pcie_drp_en), + .pcie_drp_we(pcie_drp_we), + .pcie_drp_addr(pcie_drp_addr), + .pcie_drp_di(pcie_drp_di), + .pcie_drp_rdy(pcie_drp_rdy), + .pcie_drp_do(pcie_drp_do), + + // STARTUP primitive interface - Can only be used with Tandem Configurations + // This input should be used when the startup block is generated exteranl to the PCI Express Core + .startup_eos_in(startup_eos_in), // 1-bit input: This signal should be driven by the EOS output of the STARTUP primitive. + // These inputs and outputs may be use when the startup block is generated internal to the PCI Express Core. + .startup_cfgclk(startup_cfgclk), // 1-bit output: Configuration main clock output + .startup_cfgmclk(startup_cfgmclk), // 1-bit output: Configuration internal oscillator clock output + .startup_eos(startup_eos), // 1-bit output: Active high output signal indicating the End Of Startup. + .startup_preq(startup_preq), // 1-bit output: PROGRAM request to fabric output + .startup_clk(startup_clk), // 1-bit input: User start-up clock input + .startup_gsr(startup_gsr), // 1-bit input: Global Set/Reset input (GSR cannot be used for the port name) + .startup_gts(startup_gts), // 1-bit input: Global 3-state input (GTS cannot be used for the port name) + .startup_keyclearb(startup_keyclearb), // 1-bit input: Clear AES Decrypter Key input from Battery-Backed RAM (BBRAM) + .startup_pack(startup_pack), // 1-bit input: PROGRAM acknowledge input + .startup_usrcclko(startup_usrcclko), // 1-bit input: User CCLK input + .startup_usrcclkts(startup_usrcclkts), // 1-bit input: User CCLK 3-state enable input + .startup_usrdoneo(startup_usrdoneo), // 1-bit input: User DONE pin output control + .startup_usrdonets(startup_usrdonets), // 1-bit input: User DONE 3-state enable output + + // ICAP primitive interface - Can only be used with Tandem PCIe Configuration + .icap_clk(icap_clk), + .icap_csib(icap_csib), + .icap_rdwrb(icap_rdwrb), + .icap_i(icap_i), + .icap_o(icap_o), + + //External GT COMMON Ports + + .qpll_drp_crscode ( qpll_drp_crscode ), + .qpll_drp_fsm ( qpll_drp_fsm ), + .qpll_drp_done ( qpll_drp_done ), + .qpll_drp_reset ( qpll_drp_reset ), + .qpll_qplllock ( qpll_qplllock ), + .qpll_qplloutclk ( qpll_qplloutclk ), + .qpll_qplloutrefclk ( qpll_qplloutrefclk ), + .qpll_qplld ( qpll_qplld ), + .qpll_qpllreset ( qpll_qpllreset ), + .qpll_drp_clk ( qpll_drp_clk ), + .qpll_drp_rst_n ( qpll_drp_rst_n ), + .qpll_drp_ovrd ( qpll_drp_ovrd ), + .qpll_drp_gen3 ( qpll_drp_gen3), + .qpll_drp_start ( qpll_drp_start ), + + //------------TRANSCEIVER DEBUG----------------------------------- + //Drive these inputs to 0s + .ext_ch_gt_drpclk (ext_ch_gt_drpclk), + .ext_ch_gt_drpaddr (ext_ch_gt_drpaddr), + .ext_ch_gt_drpen (ext_ch_gt_drpen), + .ext_ch_gt_drpdi (ext_ch_gt_drpdi), + .ext_ch_gt_drpwe (ext_ch_gt_drpwe), + .ext_ch_gt_drpdo (ext_ch_gt_drpdo), + .ext_ch_gt_drprdy (ext_ch_gt_drprdy ), + + .pipe_txprbssel (pipe_txprbssel), + .pipe_rxprbssel (pipe_rxprbssel), + .pipe_txprbsforceerr (pipe_txprbsforceerr), + .pipe_rxprbscntreset (pipe_rxprbscntreset), + .pipe_loopback (pipe_loopback ), + .pipe_rxprbserr (pipe_rxprbserr), + .pipe_txinhibit (pipe_txinhibit), + .pipe_rst_fsm (pipe_rst_fsm), + .pipe_qrst_fsm (pipe_qrst_fsm), + .pipe_rate_fsm (pipe_rate_fsm), + .pipe_sync_fsm_tx (pipe_sync_fsm_tx), + .pipe_sync_fsm_rx (pipe_sync_fsm_rx), + .pipe_drp_fsm (pipe_drp_fsm), + .pipe_rst_idle (pipe_rst_idle), + .pipe_qrst_idle (pipe_qrst_idle), + .pipe_rate_idle (pipe_rate_idle), + .pipe_eyescandataerror (pipe_eyescandataerror), + .pipe_rxstatus (pipe_rxstatus), + .pipe_dmonitorout (pipe_dmonitorout), + .pipe_cpll_lock ( pipe_cpll_lock ), + .pipe_qpll_lock ( pipe_qpll_lock ), + .pipe_rxpmaresetdone ( pipe_rxpmaresetdone ), + .pipe_rxbufstatus ( pipe_rxbufstatus ), + .pipe_txphaligndone ( pipe_txphaligndone ), + .pipe_txphinitdone ( pipe_txphinitdone ), + .pipe_txdlysresetdone ( pipe_txdlysresetdone ), + .pipe_rxphaligndone ( pipe_rxphaligndone ), + .pipe_rxdlysresetdone ( pipe_rxdlysresetdone ), + .pipe_rxsyncdone ( pipe_rxsyncdone ), + .pipe_rxdisperr ( pipe_rxdisperr ), + .pipe_rxnotintable ( pipe_rxnotintable ), + .pipe_rxcommadet ( pipe_rxcommadet ), + + //---------- CHANNEL DRP -------------------------------- + .gt_ch_drp_rdy (gt_ch_drp_rdy), + .pipe_debug_0 (pipe_debug_0), + .pipe_debug_1 (pipe_debug_1), + .pipe_debug_2 (pipe_debug_2), + .pipe_debug_3 (pipe_debug_3), + .pipe_debug_4 (pipe_debug_4), + .pipe_debug_5 (pipe_debug_5), + .pipe_debug_6 (pipe_debug_6), + .pipe_debug_7 (pipe_debug_7), + .pipe_debug_8 (pipe_debug_8), + .pipe_debug_9 (pipe_debug_9), + .pipe_debug (pipe_debug), + + .common_commands_in ( common_commands_in ), + .pipe_rx_0_sigs ( pipe_rx_0_sigs ), + .pipe_rx_1_sigs ( pipe_rx_1_sigs ), + .pipe_rx_2_sigs ( pipe_rx_2_sigs ), + .pipe_rx_3_sigs ( pipe_rx_3_sigs ), + .pipe_rx_4_sigs ( pipe_rx_4_sigs ), + .pipe_rx_5_sigs ( pipe_rx_5_sigs ), + .pipe_rx_6_sigs ( pipe_rx_6_sigs ), + .pipe_rx_7_sigs ( pipe_rx_7_sigs ), + + .common_commands_out ( common_commands_out ), + .pipe_tx_0_sigs ( pipe_tx_0_sigs ), + .pipe_tx_1_sigs ( pipe_tx_1_sigs ), + .pipe_tx_2_sigs ( pipe_tx_2_sigs ), + .pipe_tx_3_sigs ( pipe_tx_3_sigs ), + .pipe_tx_4_sigs ( pipe_tx_4_sigs ), + .pipe_tx_5_sigs ( pipe_tx_5_sigs ), + .pipe_tx_6_sigs ( pipe_tx_6_sigs ), + .pipe_tx_7_sigs ( pipe_tx_7_sigs ), + + .pipe_mmcm_rst_n (pipe_mmcm_rst_n), // Async | Async + .sys_clk (sys_clk), + .sys_rst_n (sys_rst_n) + ); + +endmodule + + + diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_7x.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_7x.v new file mode 100644 index 0000000..f41b1c5 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_7x.v @@ -0,0 +1,1634 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_pcie_7x.v +// Version : 3.3 +// +// Description: Solution wrapper for Virtex7 Hard Block for PCI Express +// +// +// +//-------------------------------------------------------------------------------- +`ifndef PCIE_2LM +`timescale 1ps/1ps + +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_pcie_7x # ( + // PCIE_2_1 params + parameter [11:0] AER_BASE_PTR = 12'h140, + parameter AER_CAP_ECRC_CHECK_CAPABLE = "FALSE", + parameter AER_CAP_ECRC_GEN_CAPABLE = "FALSE", + parameter [15:0] AER_CAP_ID = 16'h0001, + parameter AER_CAP_MULTIHEADER = "FALSE", + parameter [11:0] AER_CAP_NEXTPTR = 12'h178, + parameter AER_CAP_ON = "FALSE", + parameter [23:0] AER_CAP_OPTIONAL_ERR_SUPPORT = 24'h000000, + parameter AER_CAP_PERMIT_ROOTERR_UPDATE = "TRUE", + parameter [3:0] AER_CAP_VERSION = 4'h1, + parameter ALLOW_X8_GEN2 = "FALSE", + parameter [31:0] BAR0 = 32'hFFFFFF00, + parameter [31:0] BAR1 = 32'hFFFF0000, + parameter [31:0] BAR2 = 32'hFFFF000C, + parameter [31:0] BAR3 = 32'hFFFFFFFF, + parameter [31:0] BAR4 = 32'h00000000, + parameter [31:0] BAR5 = 32'h00000000, + parameter [7:0] CAPABILITIES_PTR = 8'h40, + parameter [31:0] CARDBUS_CIS_POINTER = 32'h00000000, + parameter CFG_ECRC_ERR_CPLSTAT = 0, + parameter [23:0] CLASS_CODE = 24'h000000, + parameter CMD_INTX_IMPLEMENTED = "TRUE", + parameter CPL_TIMEOUT_DISABLE_SUPPORTED = "FALSE", + parameter [3:0] CPL_TIMEOUT_RANGES_SUPPORTED = 4'h0, + parameter [6:0] CRM_MODULE_RSTS = 7'h00, + parameter C_DATA_WIDTH = 64, + parameter REM_WIDTH = (C_DATA_WIDTH == 128) ? 2 : 1, + parameter KEEP_WIDTH = C_DATA_WIDTH / 8, + parameter DEV_CAP2_ARI_FORWARDING_SUPPORTED = "FALSE", + parameter DEV_CAP2_ATOMICOP32_COMPLETER_SUPPORTED = "FALSE", + parameter DEV_CAP2_ATOMICOP64_COMPLETER_SUPPORTED = "FALSE", + parameter DEV_CAP2_ATOMICOP_ROUTING_SUPPORTED = "FALSE", + parameter DEV_CAP2_CAS128_COMPLETER_SUPPORTED = "FALSE", + parameter DEV_CAP2_ENDEND_TLP_PREFIX_SUPPORTED = "FALSE", + parameter DEV_CAP2_EXTENDED_FMT_FIELD_SUPPORTED = "FALSE", + parameter DEV_CAP2_LTR_MECHANISM_SUPPORTED = "FALSE", + parameter [1:0] DEV_CAP2_MAX_ENDEND_TLP_PREFIXES = 2'h0, + parameter DEV_CAP2_NO_RO_ENABLED_PRPR_PASSING = "FALSE", + parameter [1:0] DEV_CAP2_TPH_COMPLETER_SUPPORTED = 2'h0, + parameter DEV_CAP_ENABLE_SLOT_PWR_LIMIT_SCALE = "TRUE", + parameter DEV_CAP_ENABLE_SLOT_PWR_LIMIT_VALUE = "TRUE", + parameter integer DEV_CAP_ENDPOINT_L0S_LATENCY = 0, + parameter integer DEV_CAP_ENDPOINT_L1_LATENCY = 0, + parameter DEV_CAP_EXT_TAG_SUPPORTED = "TRUE", + parameter DEV_CAP_FUNCTION_LEVEL_RESET_CAPABLE = "FALSE", + parameter integer DEV_CAP_MAX_PAYLOAD_SUPPORTED = 2, + parameter integer DEV_CAP_PHANTOM_FUNCTIONS_SUPPORT = 0, + parameter DEV_CAP_ROLE_BASED_ERROR = "TRUE", + parameter integer DEV_CAP_RSVD_14_12 = 0, + parameter integer DEV_CAP_RSVD_17_16 = 0, + parameter integer DEV_CAP_RSVD_31_29 = 0, + parameter DEV_CONTROL_AUX_POWER_SUPPORTED = "FALSE", + parameter DEV_CONTROL_EXT_TAG_DEFAULT = "FALSE", + parameter DISABLE_ASPM_L1_TIMER = "FALSE", + parameter DISABLE_BAR_FILTERING = "FALSE", + parameter DISABLE_ERR_MSG = "FALSE", + parameter DISABLE_ID_CHECK = "FALSE", + parameter DISABLE_LANE_REVERSAL = "FALSE", + parameter DISABLE_LOCKED_FILTER = "FALSE", + parameter DISABLE_PPM_FILTER = "FALSE", + parameter DISABLE_RX_POISONED_RESP = "FALSE", + parameter DISABLE_RX_TC_FILTER = "FALSE", + parameter DISABLE_SCRAMBLING = "FALSE", + parameter [7:0] DNSTREAM_LINK_NUM = 8'h00, + parameter [11:0] DSN_BASE_PTR = 12'h100, + parameter [15:0] DSN_CAP_ID = 16'h0003, + parameter [11:0] DSN_CAP_NEXTPTR = 12'h10C, + parameter DSN_CAP_ON = "TRUE", + parameter [3:0] DSN_CAP_VERSION = 4'h1, + parameter [10:0] ENABLE_MSG_ROUTE = 11'h000, + parameter ENABLE_RX_TD_ECRC_TRIM = "FALSE", + parameter ENDEND_TLP_PREFIX_FORWARDING_SUPPORTED = "FALSE", + parameter ENTER_RVRY_EI_L0 = "TRUE", + parameter EXIT_LOOPBACK_ON_EI = "TRUE", + parameter [31:0] EXPANSION_ROM = 32'hFFFFF001, + parameter [5:0] EXT_CFG_CAP_PTR = 6'h3F, + parameter [9:0] EXT_CFG_XP_CAP_PTR = 10'h3FF, + parameter [7:0] HEADER_TYPE = 8'h00, + parameter [4:0] INFER_EI = 5'h00, + parameter [7:0] INTERRUPT_PIN = 8'h01, + parameter INTERRUPT_STAT_AUTO = "TRUE", + parameter IS_SWITCH = "FALSE", + parameter [9:0] LAST_CONFIG_DWORD = 10'h3FF, + parameter LINK_CAP_ASPM_OPTIONALITY = "TRUE", + parameter integer LINK_CAP_ASPM_SUPPORT = 1, + parameter LINK_CAP_CLOCK_POWER_MANAGEMENT = "FALSE", + parameter LINK_CAP_DLL_LINK_ACTIVE_REPORTING_CAP = "FALSE", + parameter integer LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN1 = 7, + parameter integer LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN2 = 7, + parameter integer LINK_CAP_L0S_EXIT_LATENCY_GEN1 = 7, + parameter integer LINK_CAP_L0S_EXIT_LATENCY_GEN2 = 7, + parameter integer LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN1 = 7, + parameter integer LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN2 = 7, + parameter integer LINK_CAP_L1_EXIT_LATENCY_GEN1 = 7, + parameter integer LINK_CAP_L1_EXIT_LATENCY_GEN2 = 7, + parameter LINK_CAP_LINK_BANDWIDTH_NOTIFICATION_CAP = "FALSE", + parameter [3:0] LINK_CAP_MAX_LINK_SPEED = 4'h1, + parameter [5:0] LINK_CAP_MAX_LINK_WIDTH = 6'h08, + parameter integer LINK_CAP_RSVD_23 = 0, + parameter LINK_CAP_SURPRISE_DOWN_ERROR_CAPABLE = "FALSE", + parameter integer LINK_CONTROL_RCB = 0, + parameter LINK_CTRL2_DEEMPHASIS = "FALSE", + parameter LINK_CTRL2_HW_AUTONOMOUS_SPEED_DISABLE = "FALSE", + parameter [3:0] LINK_CTRL2_TARGET_LINK_SPEED = 4'h2, + parameter LINK_STATUS_SLOT_CLOCK_CONFIG = "TRUE", + parameter [14:0] LL_ACK_TIMEOUT = 15'h0000, + parameter LL_ACK_TIMEOUT_EN = "FALSE", + parameter integer LL_ACK_TIMEOUT_FUNC = 0, + parameter [14:0] LL_REPLAY_TIMEOUT = 15'h0000, + parameter LL_REPLAY_TIMEOUT_EN = "FALSE", + parameter integer LL_REPLAY_TIMEOUT_FUNC = 0, + parameter [5:0] LTSSM_MAX_LINK_WIDTH = 6'h01, + parameter MPS_FORCE = "FALSE", + parameter [7:0] MSIX_BASE_PTR = 8'h9C, + parameter [7:0] MSIX_CAP_ID = 8'h11, + parameter [7:0] MSIX_CAP_NEXTPTR = 8'h00, + parameter MSIX_CAP_ON = "FALSE", + parameter integer MSIX_CAP_PBA_BIR = 0, + parameter [28:0] MSIX_CAP_PBA_OFFSET = 29'h00000050, + parameter integer MSIX_CAP_TABLE_BIR = 0, + parameter [28:0] MSIX_CAP_TABLE_OFFSET = 29'h00000040, + parameter [10:0] MSIX_CAP_TABLE_SIZE = 11'h000, + parameter [7:0] MSI_BASE_PTR = 8'h48, + parameter MSI_CAP_64_BIT_ADDR_CAPABLE = "TRUE", + parameter [7:0] MSI_CAP_ID = 8'h05, + parameter integer MSI_CAP_MULTIMSGCAP = 0, + parameter integer MSI_CAP_MULTIMSG_EXTENSION = 0, + parameter [7:0] MSI_CAP_NEXTPTR = 8'h60, + parameter MSI_CAP_ON = "FALSE", + parameter MSI_CAP_PER_VECTOR_MASKING_CAPABLE = "TRUE", + parameter integer N_FTS_COMCLK_GEN1 = 255, + parameter integer N_FTS_COMCLK_GEN2 = 255, + parameter integer N_FTS_GEN1 = 255, + parameter integer N_FTS_GEN2 = 255, + parameter [7:0] PCIE_BASE_PTR = 8'h60, + parameter [7:0] PCIE_CAP_CAPABILITY_ID = 8'h10, + parameter [3:0] PCIE_CAP_CAPABILITY_VERSION = 4'h2, + parameter [3:0] PCIE_CAP_DEVICE_PORT_TYPE = 4'h0, + parameter [7:0] PCIE_CAP_NEXTPTR = 8'h9C, + parameter PCIE_CAP_ON = "TRUE", + parameter integer PCIE_CAP_RSVD_15_14 = 0, + parameter PCIE_CAP_SLOT_IMPLEMENTED = "FALSE", + parameter integer PCIE_REVISION = 2, + parameter integer PL_AUTO_CONFIG = 0, + parameter PL_FAST_TRAIN = "FALSE", + parameter [14:0] PM_ASPML0S_TIMEOUT = 15'h0000, + parameter PM_ASPML0S_TIMEOUT_EN = "FALSE", + parameter integer PM_ASPML0S_TIMEOUT_FUNC = 0, + parameter PM_ASPM_FASTEXIT = "FALSE", + parameter [7:0] PM_BASE_PTR = 8'h40, + parameter integer PM_CAP_AUXCURRENT = 0, + parameter PM_CAP_D1SUPPORT = "TRUE", + parameter PM_CAP_D2SUPPORT = "TRUE", + parameter PM_CAP_DSI = "FALSE", + parameter [7:0] PM_CAP_ID = 8'h01, + parameter [7:0] PM_CAP_NEXTPTR = 8'h48, + parameter PM_CAP_ON = "TRUE", + parameter [4:0] PM_CAP_PMESUPPORT = 5'h0F, + parameter PM_CAP_PME_CLOCK = "FALSE", + parameter integer PM_CAP_RSVD_04 = 0, + parameter integer PM_CAP_VERSION = 3, + parameter PM_CSR_B2B3 = "FALSE", + parameter PM_CSR_BPCCEN = "FALSE", + parameter PM_CSR_NOSOFTRST = "TRUE", + parameter [7:0] PM_DATA0 = 8'h01, + parameter [7:0] PM_DATA1 = 8'h01, + parameter [7:0] PM_DATA2 = 8'h01, + parameter [7:0] PM_DATA3 = 8'h01, + parameter [7:0] PM_DATA4 = 8'h01, + parameter [7:0] PM_DATA5 = 8'h01, + parameter [7:0] PM_DATA6 = 8'h01, + parameter [7:0] PM_DATA7 = 8'h01, + parameter [1:0] PM_DATA_SCALE0 = 2'h1, + parameter [1:0] PM_DATA_SCALE1 = 2'h1, + parameter [1:0] PM_DATA_SCALE2 = 2'h1, + parameter [1:0] PM_DATA_SCALE3 = 2'h1, + parameter [1:0] PM_DATA_SCALE4 = 2'h1, + parameter [1:0] PM_DATA_SCALE5 = 2'h1, + parameter [1:0] PM_DATA_SCALE6 = 2'h1, + parameter [1:0] PM_DATA_SCALE7 = 2'h1, + parameter PM_MF = "FALSE", + parameter [11:0] RBAR_BASE_PTR = 12'h178, + parameter [4:0] RBAR_CAP_CONTROL_ENCODEDBAR0 = 5'h00, + parameter [4:0] RBAR_CAP_CONTROL_ENCODEDBAR1 = 5'h00, + parameter [4:0] RBAR_CAP_CONTROL_ENCODEDBAR2 = 5'h00, + parameter [4:0] RBAR_CAP_CONTROL_ENCODEDBAR3 = 5'h00, + parameter [4:0] RBAR_CAP_CONTROL_ENCODEDBAR4 = 5'h00, + parameter [4:0] RBAR_CAP_CONTROL_ENCODEDBAR5 = 5'h00, + parameter [15:0] RBAR_CAP_ID = 16'h0015, + parameter [2:0] RBAR_CAP_INDEX0 = 3'h0, + parameter [2:0] RBAR_CAP_INDEX1 = 3'h0, + parameter [2:0] RBAR_CAP_INDEX2 = 3'h0, + parameter [2:0] RBAR_CAP_INDEX3 = 3'h0, + parameter [2:0] RBAR_CAP_INDEX4 = 3'h0, + parameter [2:0] RBAR_CAP_INDEX5 = 3'h0, + parameter [11:0] RBAR_CAP_NEXTPTR = 12'h000, + parameter RBAR_CAP_ON = "FALSE", + parameter [31:0] RBAR_CAP_SUP0 = 32'h00000000, + parameter [31:0] RBAR_CAP_SUP1 = 32'h00000000, + parameter [31:0] RBAR_CAP_SUP2 = 32'h00000000, + parameter [31:0] RBAR_CAP_SUP3 = 32'h00000000, + parameter [31:0] RBAR_CAP_SUP4 = 32'h00000000, + parameter [31:0] RBAR_CAP_SUP5 = 32'h00000000, + parameter [3:0] RBAR_CAP_VERSION = 4'h1, + parameter [2:0] RBAR_NUM = 3'h1, + parameter integer RECRC_CHK = 0, + parameter RECRC_CHK_TRIM = "FALSE", + parameter ROOT_CAP_CRS_SW_VISIBILITY = "FALSE", + parameter [1:0] RP_AUTO_SPD = 2'h1, + parameter [4:0] RP_AUTO_SPD_LOOPCNT = 5'h1f, + parameter SELECT_DLL_IF = "FALSE", + parameter SIM_VERSION = "1.0", + parameter SLOT_CAP_ATT_BUTTON_PRESENT = "FALSE", + parameter SLOT_CAP_ATT_INDICATOR_PRESENT = "FALSE", + parameter SLOT_CAP_ELEC_INTERLOCK_PRESENT = "FALSE", + parameter SLOT_CAP_HOTPLUG_CAPABLE = "FALSE", + parameter SLOT_CAP_HOTPLUG_SURPRISE = "FALSE", + parameter SLOT_CAP_MRL_SENSOR_PRESENT = "FALSE", + parameter SLOT_CAP_NO_CMD_COMPLETED_SUPPORT = "FALSE", + parameter [12:0] SLOT_CAP_PHYSICAL_SLOT_NUM = 13'h0000, + parameter SLOT_CAP_POWER_CONTROLLER_PRESENT = "FALSE", + parameter SLOT_CAP_POWER_INDICATOR_PRESENT = "FALSE", + parameter integer SLOT_CAP_SLOT_POWER_LIMIT_SCALE = 0, + parameter [7:0] SLOT_CAP_SLOT_POWER_LIMIT_VALUE = 8'h00, + parameter integer SPARE_BIT0 = 0, + parameter integer SPARE_BIT1 = 0, + parameter integer SPARE_BIT2 = 0, + parameter integer SPARE_BIT3 = 0, + parameter integer SPARE_BIT4 = 0, + parameter integer SPARE_BIT5 = 0, + parameter integer SPARE_BIT6 = 0, + parameter integer SPARE_BIT7 = 0, + parameter integer SPARE_BIT8 = 0, + parameter [7:0] SPARE_BYTE0 = 8'h00, + parameter [7:0] SPARE_BYTE1 = 8'h00, + parameter [7:0] SPARE_BYTE2 = 8'h00, + parameter [7:0] SPARE_BYTE3 = 8'h00, + parameter [31:0] SPARE_WORD0 = 32'h00000000, + parameter [31:0] SPARE_WORD1 = 32'h00000000, + parameter [31:0] SPARE_WORD2 = 32'h00000000, + parameter [31:0] SPARE_WORD3 = 32'h00000000, + parameter SSL_MESSAGE_AUTO = "FALSE", + parameter TECRC_EP_INV = "FALSE", + parameter TL_RBYPASS = "FALSE", + parameter integer TL_RX_RAM_RADDR_LATENCY = 0, + parameter integer TL_RX_RAM_RDATA_LATENCY = 2, + parameter integer TL_RX_RAM_WRITE_LATENCY = 0, + parameter TL_TFC_DISABLE = "FALSE", + parameter TL_TX_CHECKS_DISABLE = "FALSE", + parameter integer TL_TX_RAM_RADDR_LATENCY = 0, + parameter integer TL_TX_RAM_RDATA_LATENCY = 2, + parameter integer TL_TX_RAM_WRITE_LATENCY = 0, + parameter TRN_DW = "FALSE", + parameter TRN_NP_FC = "FALSE", + parameter UPCONFIG_CAPABLE = "TRUE", + parameter UPSTREAM_FACING = "TRUE", + parameter UR_ATOMIC = "TRUE", + parameter UR_CFG1 = "TRUE", + parameter UR_INV_REQ = "TRUE", + parameter UR_PRS_RESPONSE = "TRUE", + parameter USER_CLK2_DIV2 = "FALSE", + parameter integer USER_CLK_FREQ = 3, + parameter USE_RID_PINS = "FALSE", + parameter VC0_CPL_INFINITE = "TRUE", + parameter [12:0] VC0_RX_RAM_LIMIT = 13'h03FF, + parameter integer VC0_TOTAL_CREDITS_CD = 127, + parameter integer VC0_TOTAL_CREDITS_CH = 31, + parameter integer VC0_TOTAL_CREDITS_NPD = 24, + parameter integer VC0_TOTAL_CREDITS_NPH = 12, + parameter integer VC0_TOTAL_CREDITS_PD = 288, + parameter integer VC0_TOTAL_CREDITS_PH = 32, + parameter integer VC0_TX_LASTPACKET = 31, + parameter [11:0] VC_BASE_PTR = 12'h10C, + parameter [15:0] VC_CAP_ID = 16'h0002, + parameter [11:0] VC_CAP_NEXTPTR = 12'h000, + parameter VC_CAP_ON = "FALSE", + parameter VC_CAP_REJECT_SNOOP_TRANSACTIONS = "FALSE", + parameter [3:0] VC_CAP_VERSION = 4'h1, + parameter [11:0] VSEC_BASE_PTR = 12'h128, + parameter [15:0] VSEC_CAP_HDR_ID = 16'h1234, + parameter [11:0] VSEC_CAP_HDR_LENGTH = 12'h018, + parameter [3:0] VSEC_CAP_HDR_REVISION = 4'h1, + parameter [15:0] VSEC_CAP_ID = 16'h000B, + parameter VSEC_CAP_IS_LINK_VISIBLE = "TRUE", + parameter [11:0] VSEC_CAP_NEXTPTR = 12'h140, + parameter VSEC_CAP_ON = "FALSE", + parameter [3:0] VSEC_CAP_VERSION = 4'h1, + parameter ENABLE_JTAG_DBG = "FALSE" +) +( + input wire [C_DATA_WIDTH-1:0] trn_td, + input wire [REM_WIDTH-1:0] trn_trem, + input wire trn_tsof, + input wire trn_teof, + input wire trn_tsrc_rdy, + input wire trn_tsrc_dsc, + input wire trn_terrfwd, + input wire trn_tecrc_gen, + input wire trn_tstr, + input wire trn_tcfg_gnt, + input wire trn_rdst_rdy, + input wire trn_rnp_req, + input wire trn_rfcp_ret, + input wire trn_rnp_ok, + input wire [2:0] trn_fc_sel, + input wire [31:0] trn_tdllp_data, + input wire trn_tdllp_src_rdy, + input wire ll2_tlp_rcv, + input wire ll2_send_enter_l1, + input wire ll2_send_enter_l23, + input wire ll2_send_as_req_l1, + input wire ll2_send_pm_ack, + input wire [4:0] pl2_directed_lstate, + input wire ll2_suspend_now, + input wire tl2_ppm_suspend_req, + input wire tl2_aspm_suspend_credit_check, + input wire [1:0] pl_directed_link_change, + input wire [1:0] pl_directed_link_width, + input wire pl_directed_link_speed, + input wire pl_directed_link_auton, + input wire pl_upstream_prefer_deemph, + input wire pl_downstream_deemph_source, + input wire pl_directed_ltssm_new_vld, + input wire [5:0] pl_directed_ltssm_new, + input wire pl_directed_ltssm_stall, + input wire [1:0] pipe_rx0_char_is_k, + input wire [1:0] pipe_rx1_char_is_k, + input wire [1:0] pipe_rx2_char_is_k, + input wire [1:0] pipe_rx3_char_is_k, + input wire [1:0] pipe_rx4_char_is_k, + input wire [1:0] pipe_rx5_char_is_k, + input wire [1:0] pipe_rx6_char_is_k, + input wire [1:0] pipe_rx7_char_is_k, + input wire pipe_rx0_valid, + input wire pipe_rx1_valid, + input wire pipe_rx2_valid, + input wire pipe_rx3_valid, + input wire pipe_rx4_valid, + input wire pipe_rx5_valid, + input wire pipe_rx6_valid, + input wire pipe_rx7_valid, + input wire [15:0] pipe_rx0_data, + input wire [15:0] pipe_rx1_data, + input wire [15:0] pipe_rx2_data, + input wire [15:0] pipe_rx3_data, + input wire [15:0] pipe_rx4_data, + input wire [15:0] pipe_rx5_data, + input wire [15:0] pipe_rx6_data, + input wire [15:0] pipe_rx7_data, + input wire pipe_rx0_chanisaligned, + input wire pipe_rx1_chanisaligned, + input wire pipe_rx2_chanisaligned, + input wire pipe_rx3_chanisaligned, + input wire pipe_rx4_chanisaligned, + input wire pipe_rx5_chanisaligned, + input wire pipe_rx6_chanisaligned, + input wire pipe_rx7_chanisaligned, + input wire [2:0] pipe_rx0_status, + input wire [2:0] pipe_rx1_status, + input wire [2:0] pipe_rx2_status, + input wire [2:0] pipe_rx3_status, + input wire [2:0] pipe_rx4_status, + input wire [2:0] pipe_rx5_status, + input wire [2:0] pipe_rx6_status, + input wire [2:0] pipe_rx7_status, + input wire pipe_rx0_phy_status, + input wire pipe_rx1_phy_status, + input wire pipe_rx2_phy_status, + input wire pipe_rx3_phy_status, + input wire pipe_rx4_phy_status, + input wire pipe_rx5_phy_status, + input wire pipe_rx6_phy_status, + input wire pipe_rx7_phy_status, + input wire pipe_rx0_elec_idle, + input wire pipe_rx1_elec_idle, + input wire pipe_rx2_elec_idle, + input wire pipe_rx3_elec_idle, + input wire pipe_rx4_elec_idle, + input wire pipe_rx5_elec_idle, + input wire pipe_rx6_elec_idle, + input wire pipe_rx7_elec_idle, + input wire pipe_clk, + input wire user_clk, + input wire user_clk2, + input wire user_clk_prebuf, + input wire user_clk_prebuf_en, +`ifdef B_TESTMODE + input wire scanmode_n, + input wire scanenable_n, + input wire edt_clk, + input wire edt_bypass, + input wire edt_update, + input wire edt_configuration, + input wire edt_single_bypass_chain, + input wire edt_channels_in1, + input wire edt_channels_in2, + input wire edt_channels_in3, + input wire edt_channels_in4, + input wire edt_channels_in5, + input wire edt_channels_in6, + input wire edt_channels_in7, + input wire edt_channels_in8, + input wire pmv_enable_n, + input wire [2:0] pmv_select, + input wire [1:0] pmv_divide, +`endif + input wire sys_rst_n, + input wire cm_rst_n, + input wire cm_sticky_rst_n, + input wire func_lvl_rst_n, + input wire tl_rst_n, + input wire dl_rst_n, + input wire pl_rst_n, + input wire pl_transmit_hot_rst, +// input wire cfg_reset, +// input wire gwe, +// input wire grestore, +// input wire ghigh, + input wire [31:0] cfg_mgmt_di, + input wire [3:0] cfg_mgmt_byte_en_n, + input wire [9:0] cfg_mgmt_dwaddr, + input wire cfg_mgmt_wr_rw1c_as_rw_n, + input wire cfg_mgmt_wr_readonly_n, + input wire cfg_mgmt_wr_en_n, + input wire cfg_mgmt_rd_en_n, + input wire cfg_err_malformed_n, + input wire cfg_err_cor_n, + input wire cfg_err_ur_n, + input wire cfg_err_ecrc_n, + input wire cfg_err_cpl_timeout_n, + input wire cfg_err_cpl_abort_n, + input wire cfg_err_cpl_unexpect_n, + input wire cfg_err_poisoned_n, + input wire cfg_err_acs_n, + input wire cfg_err_atomic_egress_blocked_n, + input wire cfg_err_mc_blocked_n, + input wire cfg_err_internal_uncor_n, + input wire cfg_err_internal_cor_n, + input wire cfg_err_posted_n, + input wire cfg_err_locked_n, + input wire cfg_err_norecovery_n, + input wire [127:0] cfg_err_aer_headerlog, + input wire [47:0] cfg_err_tlp_cpl_header, + input wire cfg_interrupt_n, + input wire [7:0] cfg_interrupt_di, + input wire cfg_interrupt_assert_n, + input wire cfg_interrupt_stat_n, + input wire [7:0] cfg_ds_bus_number, + input wire [4:0] cfg_ds_device_number, + input wire [2:0] cfg_ds_function_number, + input wire [7:0] cfg_port_number, + input wire cfg_pm_halt_aspm_l0s_n, + input wire cfg_pm_halt_aspm_l1_n, + input wire cfg_pm_force_state_en_n, + input wire [1:0] cfg_pm_force_state, + input wire cfg_pm_wake_n, + input wire cfg_pm_turnoff_ok_n, + input wire cfg_pm_send_pme_to_n, + input wire [4:0] cfg_pciecap_interrupt_msgnum, + input wire cfg_trn_pending_n, + input wire [2:0] cfg_force_mps, + input wire cfg_force_common_clock_off, + input wire cfg_force_extended_sync_on, + input wire [63:0] cfg_dsn, + input wire [4:0] cfg_aer_interrupt_msgnum, + input wire [15:0] cfg_dev_id, + input wire [15:0] cfg_vend_id, + input wire [7:0] cfg_rev_id, + input wire [15:0] cfg_subsys_id, + input wire [15:0] cfg_subsys_vend_id, + input wire drp_clk, + input wire drp_en, + input wire drp_we, + input wire [8:0] drp_addr, + input wire [15:0] drp_di, + input wire [1:0] dbg_mode, + input wire dbg_sub_mode, + input wire [2:0] pl_dbg_mode, + + output wire trn_clk, + + output wire trn_tdst_rdy, + output wire trn_terr_drop, + output wire [5:0] trn_tbuf_av, + output wire trn_tcfg_req, + + //output wire [C_DATA_WIDTH-1:0] trn_rd, + output wire [127:0] trn_rd, + + output wire [1:0] trn_rrem, + output wire trn_rsof, + output wire trn_reof, + output wire trn_rsrc_rdy, + output wire trn_rsrc_dsc, + output wire trn_recrc_err, + output wire trn_rerrfwd, + output wire [7:0] trn_rbar_hit, + output wire trn_lnk_up, + output wire [7:0] trn_fc_ph, + output wire [11:0] trn_fc_pd, + output wire [7:0] trn_fc_nph, + output wire [11:0] trn_fc_npd, + output wire [7:0] trn_fc_cplh, + output wire [11:0] trn_fc_cpld, + output wire trn_tdllp_dst_rdy, + output wire [63:0] trn_rdllp_data, + output wire [1:0] trn_rdllp_src_rdy, + output wire ll2_tfc_init1_seq, + output wire ll2_tfc_init2_seq, + output wire pl2_suspend_ok, + output wire pl2_recovery, + output wire pl2_rx_elec_idle, + output wire [1:0] pl2_rx_pm_state, + output wire pl2_l0_req, + output wire ll2_suspend_ok, + output wire ll2_tx_idle, + output wire [4:0] ll2_link_status, + output wire tl2_ppm_suspend_ok, + output wire tl2_aspm_suspend_req, + output wire tl2_aspm_suspend_credit_check_ok, + output wire pl2_link_up, + output wire pl2_receiver_err, + output wire ll2_receiver_err, + output wire ll2_protocol_err, + output wire ll2_bad_tlp_err, + output wire ll2_bad_dllp_err, + output wire ll2_replay_ro_err, + output wire ll2_replay_to_err, + output wire [63:0] tl2_err_hdr, + output wire tl2_err_malformed, + output wire tl2_err_rxoverflow, + output wire tl2_err_fcpe, + output wire pl_sel_lnk_rate, + output wire [1:0] pl_sel_lnk_width, + output wire [5:0] pl_ltssm_state, + output wire [1:0] pl_lane_reversal_mode, + output wire pl_phy_lnk_up_n, + output wire [2:0] pl_tx_pm_state, + output wire [1:0] pl_rx_pm_state, + output wire pl_link_upcfg_cap, + output wire pl_link_gen2_cap, + output wire pl_link_partner_gen2_supported, + output wire [2:0] pl_initial_link_width, + output wire pl_directed_change_done, + output wire pipe_tx_rcvr_det, + output wire pipe_tx_reset, + output wire pipe_tx_rate, + output wire pipe_tx_deemph, + output wire [2:0] pipe_tx_margin, + output wire pipe_rx0_polarity, + output wire pipe_rx1_polarity, + output wire pipe_rx2_polarity, + output wire pipe_rx3_polarity, + output wire pipe_rx4_polarity, + output wire pipe_rx5_polarity, + output wire pipe_rx6_polarity, + output wire pipe_rx7_polarity, + output wire pipe_tx0_compliance, + output wire pipe_tx1_compliance, + output wire pipe_tx2_compliance, + output wire pipe_tx3_compliance, + output wire pipe_tx4_compliance, + output wire pipe_tx5_compliance, + output wire pipe_tx6_compliance, + output wire pipe_tx7_compliance, + output wire [1:0] pipe_tx0_char_is_k, + output wire [1:0] pipe_tx1_char_is_k, + output wire [1:0] pipe_tx2_char_is_k, + output wire [1:0] pipe_tx3_char_is_k, + output wire [1:0] pipe_tx4_char_is_k, + output wire [1:0] pipe_tx5_char_is_k, + output wire [1:0] pipe_tx6_char_is_k, + output wire [1:0] pipe_tx7_char_is_k, + output wire [15:0] pipe_tx0_data, + output wire [15:0] pipe_tx1_data, + output wire [15:0] pipe_tx2_data, + output wire [15:0] pipe_tx3_data, + output wire [15:0] pipe_tx4_data, + output wire [15:0] pipe_tx5_data, + output wire [15:0] pipe_tx6_data, + output wire [15:0] pipe_tx7_data, + output wire pipe_tx0_elec_idle, + output wire pipe_tx1_elec_idle, + output wire pipe_tx2_elec_idle, + output wire pipe_tx3_elec_idle, + output wire pipe_tx4_elec_idle, + output wire pipe_tx5_elec_idle, + output wire pipe_tx6_elec_idle, + output wire pipe_tx7_elec_idle, + output wire [1:0] pipe_tx0_powerdown, + output wire [1:0] pipe_tx1_powerdown, + output wire [1:0] pipe_tx2_powerdown, + output wire [1:0] pipe_tx3_powerdown, + output wire [1:0] pipe_tx4_powerdown, + output wire [1:0] pipe_tx5_powerdown, + output wire [1:0] pipe_tx6_powerdown, + output wire [1:0] pipe_tx7_powerdown, +`ifdef B_TESTMODE + output wire pmv_out, +`endif + output wire user_rst_n, + output wire pl_received_hot_rst, + output wire received_func_lvl_rst_n, + output wire lnk_clk_en, + output wire [31:0] cfg_mgmt_do, + output wire cfg_mgmt_rd_wr_done_n, + output wire cfg_err_aer_headerlog_set_n, + output wire cfg_err_cpl_rdy_n, + output wire cfg_interrupt_rdy_n, + output wire [2:0] cfg_interrupt_mmenable, + output wire cfg_interrupt_msienable, + output wire [7:0] cfg_interrupt_do, + output wire cfg_interrupt_msixenable, + output wire cfg_interrupt_msixfm, + output wire cfg_msg_received, + output wire [15:0] cfg_msg_data, + output wire cfg_msg_received_err_cor, + output wire cfg_msg_received_err_non_fatal, + output wire cfg_msg_received_err_fatal, + output wire cfg_msg_received_assert_int_a, + output wire cfg_msg_received_deassert_int_a, + output wire cfg_msg_received_assert_int_b, + output wire cfg_msg_received_deassert_int_b, + output wire cfg_msg_received_assert_int_c, + output wire cfg_msg_received_deassert_int_c, + output wire cfg_msg_received_assert_int_d, + output wire cfg_msg_received_deassert_int_d, + output wire cfg_msg_received_pm_pme, + output wire cfg_msg_received_pme_to_ack, + output wire cfg_msg_received_pme_to, + output wire cfg_msg_received_setslotpowerlimit, + output wire cfg_msg_received_unlock, + output wire cfg_msg_received_pm_as_nak, + output wire [2:0] cfg_pcie_link_state, + output wire cfg_pm_rcv_as_req_l1_n, + output wire cfg_pm_rcv_enter_l1_n, + output wire cfg_pm_rcv_enter_l23_n, + output wire cfg_pm_rcv_req_ack_n, + output wire [1:0] cfg_pmcsr_powerstate, + output wire cfg_pmcsr_pme_en, + output wire cfg_pmcsr_pme_status, + output wire cfg_transaction, + output wire cfg_transaction_type, + output wire [6:0] cfg_transaction_addr, + output wire cfg_command_io_enable, + output wire cfg_command_mem_enable, + output wire cfg_command_bus_master_enable, + output wire cfg_command_interrupt_disable, + output wire cfg_command_serr_en, + output wire cfg_bridge_serr_en, + output wire cfg_dev_status_corr_err_detected, + output wire cfg_dev_status_non_fatal_err_detected, + output wire cfg_dev_status_fatal_err_detected, + output wire cfg_dev_status_ur_detected, + output wire cfg_dev_control_corr_err_reporting_en, + output wire cfg_dev_control_non_fatal_reporting_en, + output wire cfg_dev_control_fatal_err_reporting_en, + output wire cfg_dev_control_ur_err_reporting_en, + output wire cfg_dev_control_enable_ro, + output wire [2:0] cfg_dev_control_max_payload, + output wire cfg_dev_control_ext_tag_en, + output wire cfg_dev_control_phantom_en, + output wire cfg_dev_control_aux_power_en, + output wire cfg_dev_control_no_snoop_en, + output wire [2:0] cfg_dev_control_max_read_req, + output wire [1:0] cfg_link_status_current_speed, + output wire [3:0] cfg_link_status_negotiated_width, + output wire cfg_link_status_link_training, + output wire cfg_link_status_dll_active, + output wire cfg_link_status_bandwidth_status, + output wire cfg_link_status_auto_bandwidth_status, + output wire [1:0] cfg_link_control_aspm_control, + output wire cfg_link_control_rcb, + output wire cfg_link_control_link_disable, + output wire cfg_link_control_retrain_link, + output wire cfg_link_control_common_clock, + output wire cfg_link_control_extended_sync, + output wire cfg_link_control_clock_pm_en, + output wire cfg_link_control_hw_auto_width_dis, + output wire cfg_link_control_bandwidth_int_en, + output wire cfg_link_control_auto_bandwidth_int_en, + output wire [3:0] cfg_dev_control2_cpl_timeout_val, + output wire cfg_dev_control2_cpl_timeout_dis, + output wire cfg_dev_control2_ari_forward_en, + output wire cfg_dev_control2_atomic_requester_en, + output wire cfg_dev_control2_atomic_egress_block, + output wire cfg_dev_control2_ido_req_en, + output wire cfg_dev_control2_ido_cpl_en, + output wire cfg_dev_control2_ltr_en, + output wire cfg_dev_control2_tlp_prefix_block, + output wire cfg_slot_control_electromech_il_ctl_pulse, + output wire cfg_root_control_syserr_corr_err_en, + output wire cfg_root_control_syserr_non_fatal_err_en, + output wire cfg_root_control_syserr_fatal_err_en, + output wire cfg_root_control_pme_int_en, + output wire cfg_aer_ecrc_check_en, + output wire cfg_aer_ecrc_gen_en, + output wire cfg_aer_rooterr_corr_err_reporting_en, + output wire cfg_aer_rooterr_non_fatal_err_reporting_en, + output wire cfg_aer_rooterr_fatal_err_reporting_en, + output wire cfg_aer_rooterr_corr_err_received, + output wire cfg_aer_rooterr_non_fatal_err_received, + output wire cfg_aer_rooterr_fatal_err_received, + output wire [6:0] cfg_vc_tcvc_map, + output wire drp_rdy, + output wire [15:0] drp_do, + output wire [63:0] dbg_vec_a, + output wire [63:0] dbg_vec_b, + output wire [11:0] dbg_vec_c, + output wire dbg_sclr_a, + output wire dbg_sclr_b, + output wire dbg_sclr_c, + output wire dbg_sclr_d, + output wire dbg_sclr_e, + output wire dbg_sclr_f, + output wire dbg_sclr_g, + output wire dbg_sclr_h, + output wire dbg_sclr_i, + output wire dbg_sclr_j, + output wire dbg_sclr_k, + output wire [11:0] pl_dbg_vec +// output wire [18:0] xil_unconn_out +); + + localparam TCQ = 1; + + wire [3:0] trn_tdst_rdy_bus; + + // Assignments to outputs + assign trn_clk = user_clk2; + assign trn_tdst_rdy = trn_tdst_rdy_bus[0]; + + //----------------------------------------------------------------------// + // BRAM // + //----------------------------------------------------------------------// + + // transmit bram interface + wire mim_tx_wen; + wire [12:0] mim_tx_waddr; + wire [68:0] mim_tx_wdata; + wire mim_tx_ren; + wire mim_tx_rce; + wire [12:0] mim_tx_raddr; + wire [68:0] mim_tx_rdata; + wire [2:0] unused_mim_tx_rdata; + + // receive bram interface + wire mim_rx_wen; + wire [12:0] mim_rx_waddr; + wire [67:0] mim_rx_wdata; + wire mim_rx_ren; + wire mim_rx_rce; + wire [12:0] mim_rx_raddr; + wire [67:0] mim_rx_rdata; + wire [3:0] unused_mim_rx_rdata; + +pcie_7x_0_pcie_bram_top_7x #( + .LINK_CAP_MAX_LINK_SPEED ( LINK_CAP_MAX_LINK_SPEED ), + .LINK_CAP_MAX_LINK_WIDTH ( LINK_CAP_MAX_LINK_WIDTH ), + .DEV_CAP_MAX_PAYLOAD_SUPPORTED ( DEV_CAP_MAX_PAYLOAD_SUPPORTED ), + .VC0_TX_LASTPACKET ( VC0_TX_LASTPACKET ), + .TL_TX_RAM_RADDR_LATENCY ( TL_TX_RAM_RADDR_LATENCY ), + .TL_TX_RAM_RDATA_LATENCY ( TL_TX_RAM_RDATA_LATENCY ), + .TL_TX_RAM_WRITE_LATENCY ( TL_TX_RAM_WRITE_LATENCY ), + .VC0_RX_RAM_LIMIT ( VC0_RX_RAM_LIMIT ), + .TL_RX_RAM_RADDR_LATENCY ( TL_RX_RAM_RADDR_LATENCY ), + .TL_RX_RAM_RDATA_LATENCY ( TL_RX_RAM_RDATA_LATENCY ), + .TL_RX_RAM_WRITE_LATENCY ( TL_RX_RAM_WRITE_LATENCY ) + ) pcie_bram_top ( + .user_clk_i ( user_clk ), + .reset_i ( 1'b0 ), + + .mim_tx_waddr ( mim_tx_waddr ), + .mim_tx_wen ( mim_tx_wen ), + .mim_tx_ren ( mim_tx_ren ), + .mim_tx_rce ( 1'b1 ), + .mim_tx_wdata ( {3'b0, mim_tx_wdata} ), + .mim_tx_raddr ( mim_tx_raddr ), + .mim_tx_rdata ( {unused_mim_tx_rdata, mim_tx_rdata} ), + + .mim_rx_waddr ( mim_rx_waddr ), + .mim_rx_wen ( mim_rx_wen ), + .mim_rx_ren ( mim_rx_ren ), + .mim_rx_rce ( 1'b1 ), + .mim_rx_wdata ( {4'b0, mim_rx_wdata} ), + .mim_rx_raddr ( mim_rx_raddr ), + .mim_rx_rdata ( {unused_mim_rx_rdata, mim_rx_rdata} ) + ); + + //------------------------------------------------------- + // Virtex7 PCI Express Block Module + //------------------------------------------------------- + + PCIE_2_1 #( // Verilog-2001 + .AER_BASE_PTR ( AER_BASE_PTR ), + .AER_CAP_ECRC_CHECK_CAPABLE ( AER_CAP_ECRC_CHECK_CAPABLE ), + .AER_CAP_ECRC_GEN_CAPABLE ( AER_CAP_ECRC_GEN_CAPABLE ), + .AER_CAP_ID ( AER_CAP_ID ), + .AER_CAP_MULTIHEADER ( AER_CAP_MULTIHEADER ), + .AER_CAP_NEXTPTR ( AER_CAP_NEXTPTR ), + .AER_CAP_ON ( AER_CAP_ON ), + .AER_CAP_OPTIONAL_ERR_SUPPORT ( AER_CAP_OPTIONAL_ERR_SUPPORT ), + .AER_CAP_PERMIT_ROOTERR_UPDATE ( AER_CAP_PERMIT_ROOTERR_UPDATE ), + .AER_CAP_VERSION ( AER_CAP_VERSION ), + .ALLOW_X8_GEN2 ( ALLOW_X8_GEN2 ), + .BAR0 ( BAR0 ), + .BAR1 ( BAR1 ), + .BAR2 ( BAR2 ), + .BAR3 ( BAR3 ), + .BAR4 ( BAR4 ), + .BAR5 ( BAR5 ), + .CAPABILITIES_PTR ( CAPABILITIES_PTR ), + .CARDBUS_CIS_POINTER ( CARDBUS_CIS_POINTER ), + .CFG_ECRC_ERR_CPLSTAT ( CFG_ECRC_ERR_CPLSTAT ), + .CLASS_CODE ( CLASS_CODE ), + .CMD_INTX_IMPLEMENTED ( CMD_INTX_IMPLEMENTED ), + .CPL_TIMEOUT_DISABLE_SUPPORTED ( CPL_TIMEOUT_DISABLE_SUPPORTED ), + .CPL_TIMEOUT_RANGES_SUPPORTED ( CPL_TIMEOUT_RANGES_SUPPORTED ), + .CRM_MODULE_RSTS ( CRM_MODULE_RSTS ), + .DEV_CAP_ENABLE_SLOT_PWR_LIMIT_SCALE ( DEV_CAP_ENABLE_SLOT_PWR_LIMIT_SCALE ), + .DEV_CAP_ENABLE_SLOT_PWR_LIMIT_VALUE ( DEV_CAP_ENABLE_SLOT_PWR_LIMIT_VALUE ), + .DEV_CAP_ENDPOINT_L0S_LATENCY ( DEV_CAP_ENDPOINT_L0S_LATENCY ), + .DEV_CAP_ENDPOINT_L1_LATENCY ( DEV_CAP_ENDPOINT_L1_LATENCY ), + .DEV_CAP_EXT_TAG_SUPPORTED ( DEV_CAP_EXT_TAG_SUPPORTED ), + .DEV_CAP_FUNCTION_LEVEL_RESET_CAPABLE ( DEV_CAP_FUNCTION_LEVEL_RESET_CAPABLE ), + .DEV_CAP_MAX_PAYLOAD_SUPPORTED ( DEV_CAP_MAX_PAYLOAD_SUPPORTED ), + .DEV_CAP_PHANTOM_FUNCTIONS_SUPPORT ( DEV_CAP_PHANTOM_FUNCTIONS_SUPPORT ), + .DEV_CAP_ROLE_BASED_ERROR ( DEV_CAP_ROLE_BASED_ERROR ), + .DEV_CAP_RSVD_14_12 ( DEV_CAP_RSVD_14_12 ), + .DEV_CAP_RSVD_17_16 ( DEV_CAP_RSVD_17_16 ), + .DEV_CAP_RSVD_31_29 ( DEV_CAP_RSVD_31_29 ), + .DEV_CAP2_ARI_FORWARDING_SUPPORTED ( DEV_CAP2_ARI_FORWARDING_SUPPORTED ), + .DEV_CAP2_ATOMICOP_ROUTING_SUPPORTED ( DEV_CAP2_ATOMICOP_ROUTING_SUPPORTED ), + .DEV_CAP2_ATOMICOP32_COMPLETER_SUPPORTED ( DEV_CAP2_ATOMICOP32_COMPLETER_SUPPORTED ), + .DEV_CAP2_ATOMICOP64_COMPLETER_SUPPORTED ( DEV_CAP2_ATOMICOP64_COMPLETER_SUPPORTED ), + .DEV_CAP2_CAS128_COMPLETER_SUPPORTED ( DEV_CAP2_CAS128_COMPLETER_SUPPORTED ), + .DEV_CAP2_ENDEND_TLP_PREFIX_SUPPORTED ( DEV_CAP2_ENDEND_TLP_PREFIX_SUPPORTED ), + .DEV_CAP2_EXTENDED_FMT_FIELD_SUPPORTED ( DEV_CAP2_EXTENDED_FMT_FIELD_SUPPORTED ), + .DEV_CAP2_LTR_MECHANISM_SUPPORTED ( DEV_CAP2_LTR_MECHANISM_SUPPORTED ), + .DEV_CAP2_MAX_ENDEND_TLP_PREFIXES ( DEV_CAP2_MAX_ENDEND_TLP_PREFIXES ), + .DEV_CAP2_NO_RO_ENABLED_PRPR_PASSING ( DEV_CAP2_NO_RO_ENABLED_PRPR_PASSING ), + .DEV_CAP2_TPH_COMPLETER_SUPPORTED ( DEV_CAP2_TPH_COMPLETER_SUPPORTED ), + .DEV_CONTROL_AUX_POWER_SUPPORTED ( DEV_CONTROL_AUX_POWER_SUPPORTED ), + .DEV_CONTROL_EXT_TAG_DEFAULT ( DEV_CONTROL_EXT_TAG_DEFAULT ), + .DISABLE_ASPM_L1_TIMER ( DISABLE_ASPM_L1_TIMER ), + .DISABLE_BAR_FILTERING ( DISABLE_BAR_FILTERING ), + .DISABLE_ERR_MSG ( DISABLE_ERR_MSG ), + .DISABLE_ID_CHECK ( DISABLE_ID_CHECK ), + .DISABLE_LANE_REVERSAL ( DISABLE_LANE_REVERSAL ), + .DISABLE_LOCKED_FILTER ( DISABLE_LOCKED_FILTER ), + .DISABLE_PPM_FILTER ( DISABLE_PPM_FILTER ), + .DISABLE_RX_POISONED_RESP ( DISABLE_RX_POISONED_RESP ), + .DISABLE_RX_TC_FILTER ( DISABLE_RX_TC_FILTER ), + .DISABLE_SCRAMBLING ( DISABLE_SCRAMBLING ), + .DNSTREAM_LINK_NUM ( DNSTREAM_LINK_NUM ), + .DSN_BASE_PTR ( DSN_BASE_PTR ), + .DSN_CAP_ID ( DSN_CAP_ID ), + .DSN_CAP_NEXTPTR ( DSN_CAP_NEXTPTR ), + .DSN_CAP_ON ( DSN_CAP_ON ), + .DSN_CAP_VERSION ( DSN_CAP_VERSION ), + .ENABLE_MSG_ROUTE ( ENABLE_MSG_ROUTE ), + .ENABLE_RX_TD_ECRC_TRIM ( ENABLE_RX_TD_ECRC_TRIM ), + .ENDEND_TLP_PREFIX_FORWARDING_SUPPORTED ( ENDEND_TLP_PREFIX_FORWARDING_SUPPORTED ), + .ENTER_RVRY_EI_L0 ( ENTER_RVRY_EI_L0 ), + .EXIT_LOOPBACK_ON_EI ( EXIT_LOOPBACK_ON_EI ), + .EXPANSION_ROM ( EXPANSION_ROM ), + .EXT_CFG_CAP_PTR ( EXT_CFG_CAP_PTR ), + .EXT_CFG_XP_CAP_PTR ( EXT_CFG_XP_CAP_PTR ), + .HEADER_TYPE ( HEADER_TYPE ), + .INFER_EI ( INFER_EI ), + .INTERRUPT_PIN ( INTERRUPT_PIN ), + .INTERRUPT_STAT_AUTO ( INTERRUPT_STAT_AUTO ), + .IS_SWITCH ( IS_SWITCH ), + .LAST_CONFIG_DWORD ( LAST_CONFIG_DWORD ), + .LINK_CAP_ASPM_OPTIONALITY ( LINK_CAP_ASPM_OPTIONALITY ), + .LINK_CAP_ASPM_SUPPORT ( LINK_CAP_ASPM_SUPPORT ), + .LINK_CAP_CLOCK_POWER_MANAGEMENT ( LINK_CAP_CLOCK_POWER_MANAGEMENT ), + .LINK_CAP_DLL_LINK_ACTIVE_REPORTING_CAP ( LINK_CAP_DLL_LINK_ACTIVE_REPORTING_CAP ), + .LINK_CAP_LINK_BANDWIDTH_NOTIFICATION_CAP ( LINK_CAP_LINK_BANDWIDTH_NOTIFICATION_CAP ), + .LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN1 ( LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN1 ), + .LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN2 ( LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN2 ), + .LINK_CAP_L0S_EXIT_LATENCY_GEN1 ( LINK_CAP_L0S_EXIT_LATENCY_GEN1 ), + .LINK_CAP_L0S_EXIT_LATENCY_GEN2 ( LINK_CAP_L0S_EXIT_LATENCY_GEN2 ), + .LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN1 ( LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN1 ), + .LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN2 ( LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN2 ), + .LINK_CAP_L1_EXIT_LATENCY_GEN1 ( LINK_CAP_L1_EXIT_LATENCY_GEN1 ), + .LINK_CAP_L1_EXIT_LATENCY_GEN2 ( LINK_CAP_L1_EXIT_LATENCY_GEN2 ), + .LINK_CAP_MAX_LINK_SPEED ( LINK_CAP_MAX_LINK_SPEED ), + .LINK_CAP_MAX_LINK_WIDTH ( LINK_CAP_MAX_LINK_WIDTH ), + .LINK_CAP_RSVD_23 ( LINK_CAP_RSVD_23 ), + .LINK_CAP_SURPRISE_DOWN_ERROR_CAPABLE ( LINK_CAP_SURPRISE_DOWN_ERROR_CAPABLE ), + .LINK_CONTROL_RCB ( LINK_CONTROL_RCB ), + .LINK_CTRL2_DEEMPHASIS ( LINK_CTRL2_DEEMPHASIS ), + .LINK_CTRL2_HW_AUTONOMOUS_SPEED_DISABLE ( LINK_CTRL2_HW_AUTONOMOUS_SPEED_DISABLE ), + .LINK_CTRL2_TARGET_LINK_SPEED ( LINK_CTRL2_TARGET_LINK_SPEED ), + .LINK_STATUS_SLOT_CLOCK_CONFIG ( LINK_STATUS_SLOT_CLOCK_CONFIG ), + .LL_ACK_TIMEOUT ( LL_ACK_TIMEOUT ), + .LL_ACK_TIMEOUT_EN ( LL_ACK_TIMEOUT_EN ), + .LL_ACK_TIMEOUT_FUNC ( LL_ACK_TIMEOUT_FUNC ), + .LL_REPLAY_TIMEOUT ( LL_REPLAY_TIMEOUT ), + .LL_REPLAY_TIMEOUT_EN ( LL_REPLAY_TIMEOUT_EN ), + .LL_REPLAY_TIMEOUT_FUNC ( LL_REPLAY_TIMEOUT_FUNC ), + .LTSSM_MAX_LINK_WIDTH ( LTSSM_MAX_LINK_WIDTH ), + .MPS_FORCE ( MPS_FORCE ), + .MSI_BASE_PTR ( MSI_BASE_PTR ), + .MSI_CAP_ID ( MSI_CAP_ID ), + .MSI_CAP_MULTIMSG_EXTENSION ( MSI_CAP_MULTIMSG_EXTENSION ), + .MSI_CAP_MULTIMSGCAP ( MSI_CAP_MULTIMSGCAP ), + .MSI_CAP_NEXTPTR ( MSI_CAP_NEXTPTR ), + .MSI_CAP_ON ( MSI_CAP_ON ), + .MSI_CAP_PER_VECTOR_MASKING_CAPABLE ( MSI_CAP_PER_VECTOR_MASKING_CAPABLE ), + .MSI_CAP_64_BIT_ADDR_CAPABLE ( MSI_CAP_64_BIT_ADDR_CAPABLE ), + .MSIX_BASE_PTR ( MSIX_BASE_PTR ), + .MSIX_CAP_ID ( MSIX_CAP_ID ), + .MSIX_CAP_NEXTPTR ( MSIX_CAP_NEXTPTR ), + .MSIX_CAP_ON ( MSIX_CAP_ON ), + .MSIX_CAP_PBA_BIR ( MSIX_CAP_PBA_BIR ), + .MSIX_CAP_PBA_OFFSET ( MSIX_CAP_PBA_OFFSET ), + .MSIX_CAP_TABLE_BIR ( MSIX_CAP_TABLE_BIR ), + .MSIX_CAP_TABLE_OFFSET ( MSIX_CAP_TABLE_OFFSET ), + .MSIX_CAP_TABLE_SIZE ( MSIX_CAP_TABLE_SIZE ), + .N_FTS_COMCLK_GEN1 ( N_FTS_COMCLK_GEN1 ), + .N_FTS_COMCLK_GEN2 ( N_FTS_COMCLK_GEN2 ), + .N_FTS_GEN1 ( N_FTS_GEN1 ), + .N_FTS_GEN2 ( N_FTS_GEN2 ), + .PCIE_BASE_PTR ( PCIE_BASE_PTR ), + .PCIE_CAP_CAPABILITY_ID ( PCIE_CAP_CAPABILITY_ID ), + .PCIE_CAP_CAPABILITY_VERSION ( PCIE_CAP_CAPABILITY_VERSION ), + .PCIE_CAP_DEVICE_PORT_TYPE ( PCIE_CAP_DEVICE_PORT_TYPE ), + .PCIE_CAP_NEXTPTR ( PCIE_CAP_NEXTPTR ), + .PCIE_CAP_ON ( PCIE_CAP_ON ), + .PCIE_CAP_RSVD_15_14 ( PCIE_CAP_RSVD_15_14 ), + .PCIE_CAP_SLOT_IMPLEMENTED ( PCIE_CAP_SLOT_IMPLEMENTED ), + .PCIE_REVISION ( PCIE_REVISION ), + .PL_AUTO_CONFIG ( PL_AUTO_CONFIG ), + .PL_FAST_TRAIN ( PL_FAST_TRAIN ), + .PM_ASPML0S_TIMEOUT ( PM_ASPML0S_TIMEOUT ), + .PM_ASPML0S_TIMEOUT_EN ( PM_ASPML0S_TIMEOUT_EN ), + .PM_ASPML0S_TIMEOUT_FUNC ( PM_ASPML0S_TIMEOUT_FUNC ), + .PM_ASPM_FASTEXIT ( PM_ASPM_FASTEXIT ), + .PM_BASE_PTR ( PM_BASE_PTR ), + .PM_CAP_AUXCURRENT ( PM_CAP_AUXCURRENT ), + .PM_CAP_DSI ( PM_CAP_DSI ), + .PM_CAP_D1SUPPORT ( PM_CAP_D1SUPPORT ), + .PM_CAP_D2SUPPORT ( PM_CAP_D2SUPPORT ), + .PM_CAP_ID ( PM_CAP_ID ), + .PM_CAP_NEXTPTR ( PM_CAP_NEXTPTR ), + .PM_CAP_ON ( PM_CAP_ON ), + .PM_CAP_PME_CLOCK ( PM_CAP_PME_CLOCK ), + .PM_CAP_PMESUPPORT ( PM_CAP_PMESUPPORT ), + .PM_CAP_RSVD_04 ( PM_CAP_RSVD_04 ), + .PM_CAP_VERSION ( PM_CAP_VERSION ), + .PM_CSR_BPCCEN ( PM_CSR_BPCCEN ), + .PM_CSR_B2B3 ( PM_CSR_B2B3 ), + .PM_CSR_NOSOFTRST ( PM_CSR_NOSOFTRST ), + .PM_DATA_SCALE0 ( PM_DATA_SCALE0 ), + .PM_DATA_SCALE1 ( PM_DATA_SCALE1 ), + .PM_DATA_SCALE2 ( PM_DATA_SCALE2 ), + .PM_DATA_SCALE3 ( PM_DATA_SCALE3 ), + .PM_DATA_SCALE4 ( PM_DATA_SCALE4 ), + .PM_DATA_SCALE5 ( PM_DATA_SCALE5 ), + .PM_DATA_SCALE6 ( PM_DATA_SCALE6 ), + .PM_DATA_SCALE7 ( PM_DATA_SCALE7 ), + .PM_DATA0 ( PM_DATA0 ), + .PM_DATA1 ( PM_DATA1 ), + .PM_DATA2 ( PM_DATA2 ), + .PM_DATA3 ( PM_DATA3 ), + .PM_DATA4 ( PM_DATA4 ), + .PM_DATA5 ( PM_DATA5 ), + .PM_DATA6 ( PM_DATA6 ), + .PM_DATA7 ( PM_DATA7 ), + .PM_MF ( PM_MF ), + .RBAR_BASE_PTR ( RBAR_BASE_PTR ), + .RBAR_CAP_CONTROL_ENCODEDBAR0 ( RBAR_CAP_CONTROL_ENCODEDBAR0 ), + .RBAR_CAP_CONTROL_ENCODEDBAR1 ( RBAR_CAP_CONTROL_ENCODEDBAR1 ), + .RBAR_CAP_CONTROL_ENCODEDBAR2 ( RBAR_CAP_CONTROL_ENCODEDBAR2 ), + .RBAR_CAP_CONTROL_ENCODEDBAR3 ( RBAR_CAP_CONTROL_ENCODEDBAR3 ), + .RBAR_CAP_CONTROL_ENCODEDBAR4 ( RBAR_CAP_CONTROL_ENCODEDBAR4 ), + .RBAR_CAP_CONTROL_ENCODEDBAR5 ( RBAR_CAP_CONTROL_ENCODEDBAR5 ), + .RBAR_CAP_ID ( RBAR_CAP_ID ), + .RBAR_CAP_INDEX0 ( RBAR_CAP_INDEX0 ), + .RBAR_CAP_INDEX1 ( RBAR_CAP_INDEX1 ), + .RBAR_CAP_INDEX2 ( RBAR_CAP_INDEX2 ), + .RBAR_CAP_INDEX3 ( RBAR_CAP_INDEX3 ), + .RBAR_CAP_INDEX4 ( RBAR_CAP_INDEX4 ), + .RBAR_CAP_INDEX5 ( RBAR_CAP_INDEX5 ), + .RBAR_CAP_NEXTPTR ( RBAR_CAP_NEXTPTR ), + .RBAR_CAP_ON ( RBAR_CAP_ON ), + .RBAR_CAP_SUP0 ( RBAR_CAP_SUP0 ), + .RBAR_CAP_SUP1 ( RBAR_CAP_SUP1 ), + .RBAR_CAP_SUP2 ( RBAR_CAP_SUP2 ), + .RBAR_CAP_SUP3 ( RBAR_CAP_SUP3 ), + .RBAR_CAP_SUP4 ( RBAR_CAP_SUP4 ), + .RBAR_CAP_SUP5 ( RBAR_CAP_SUP5 ), + .RBAR_CAP_VERSION ( RBAR_CAP_VERSION ), + .RBAR_NUM ( RBAR_NUM ), + .RECRC_CHK ( RECRC_CHK ), + .RECRC_CHK_TRIM ( RECRC_CHK_TRIM ), + .ROOT_CAP_CRS_SW_VISIBILITY ( ROOT_CAP_CRS_SW_VISIBILITY ), + .RP_AUTO_SPD ( RP_AUTO_SPD ), + .RP_AUTO_SPD_LOOPCNT ( RP_AUTO_SPD_LOOPCNT ), + .SELECT_DLL_IF ( SELECT_DLL_IF ), + .SLOT_CAP_ATT_BUTTON_PRESENT ( SLOT_CAP_ATT_BUTTON_PRESENT ), + .SLOT_CAP_ATT_INDICATOR_PRESENT ( SLOT_CAP_ATT_INDICATOR_PRESENT ), + .SLOT_CAP_ELEC_INTERLOCK_PRESENT ( SLOT_CAP_ELEC_INTERLOCK_PRESENT ), + .SLOT_CAP_HOTPLUG_CAPABLE ( SLOT_CAP_HOTPLUG_CAPABLE ), + .SLOT_CAP_HOTPLUG_SURPRISE ( SLOT_CAP_HOTPLUG_SURPRISE ), + .SLOT_CAP_MRL_SENSOR_PRESENT ( SLOT_CAP_MRL_SENSOR_PRESENT ), + .SLOT_CAP_NO_CMD_COMPLETED_SUPPORT ( SLOT_CAP_NO_CMD_COMPLETED_SUPPORT ), + .SLOT_CAP_PHYSICAL_SLOT_NUM ( SLOT_CAP_PHYSICAL_SLOT_NUM ), + .SLOT_CAP_POWER_CONTROLLER_PRESENT ( SLOT_CAP_POWER_CONTROLLER_PRESENT ), + .SLOT_CAP_POWER_INDICATOR_PRESENT ( SLOT_CAP_POWER_INDICATOR_PRESENT ), + .SLOT_CAP_SLOT_POWER_LIMIT_SCALE ( SLOT_CAP_SLOT_POWER_LIMIT_SCALE ), + .SLOT_CAP_SLOT_POWER_LIMIT_VALUE ( SLOT_CAP_SLOT_POWER_LIMIT_VALUE ), + .SPARE_BIT0 ( SPARE_BIT0 ), + .SPARE_BIT1 ( SPARE_BIT1 ), + .SPARE_BIT2 ( SPARE_BIT2 ), + .SPARE_BIT3 ( SPARE_BIT3 ), + .SPARE_BIT4 ( SPARE_BIT4 ), + .SPARE_BIT5 ( SPARE_BIT5 ), + .SPARE_BIT6 ( SPARE_BIT6 ), + .SPARE_BIT7 ( SPARE_BIT7 ), + .SPARE_BIT8 ( SPARE_BIT8 ), + .SPARE_BYTE0 ( SPARE_BYTE0 ), + .SPARE_BYTE1 ( SPARE_BYTE1 ), + .SPARE_BYTE2 ( SPARE_BYTE2 ), + .SPARE_BYTE3 ( SPARE_BYTE3 ), + .SPARE_WORD0 ( SPARE_WORD0 ), + .SPARE_WORD1 ( SPARE_WORD1 ), + .SPARE_WORD2 ( SPARE_WORD2 ), + .SPARE_WORD3 ( SPARE_WORD3 ), + .SSL_MESSAGE_AUTO ( SSL_MESSAGE_AUTO ), + .TECRC_EP_INV ( TECRC_EP_INV ), + .TL_RBYPASS ( TL_RBYPASS ), + .TL_RX_RAM_RADDR_LATENCY ( TL_RX_RAM_RADDR_LATENCY ), + .TL_RX_RAM_RDATA_LATENCY ( TL_RX_RAM_RDATA_LATENCY ), + .TL_RX_RAM_WRITE_LATENCY ( TL_RX_RAM_WRITE_LATENCY ), + .TL_TFC_DISABLE ( TL_TFC_DISABLE ), + .TL_TX_CHECKS_DISABLE ( TL_TX_CHECKS_DISABLE ), + .TL_TX_RAM_RADDR_LATENCY ( TL_TX_RAM_RADDR_LATENCY ), + .TL_TX_RAM_RDATA_LATENCY ( TL_TX_RAM_RDATA_LATENCY ), + .TL_TX_RAM_WRITE_LATENCY ( TL_TX_RAM_WRITE_LATENCY ), + .TRN_DW ( TRN_DW ), + .TRN_NP_FC ( TRN_NP_FC ), + .UPCONFIG_CAPABLE ( UPCONFIG_CAPABLE ), + .UPSTREAM_FACING ( UPSTREAM_FACING ), + .UR_ATOMIC ( UR_ATOMIC ), + .UR_CFG1 ( UR_CFG1 ), + .UR_INV_REQ ( UR_INV_REQ ), + .UR_PRS_RESPONSE ( UR_PRS_RESPONSE ), + .USE_RID_PINS ( USE_RID_PINS ), + .USER_CLK_FREQ ( USER_CLK_FREQ ), + .USER_CLK2_DIV2 ( USER_CLK2_DIV2 ), + .VC_BASE_PTR ( VC_BASE_PTR ), + .VC_CAP_ID ( VC_CAP_ID ), + .VC_CAP_NEXTPTR ( VC_CAP_NEXTPTR ), + .VC_CAP_ON ( VC_CAP_ON ), + .VC_CAP_REJECT_SNOOP_TRANSACTIONS ( VC_CAP_REJECT_SNOOP_TRANSACTIONS ), + .VC_CAP_VERSION ( VC_CAP_VERSION ), + .VC0_CPL_INFINITE ( VC0_CPL_INFINITE ), + .VC0_RX_RAM_LIMIT ( VC0_RX_RAM_LIMIT ), + .VC0_TOTAL_CREDITS_CD ( VC0_TOTAL_CREDITS_CD ), + .VC0_TOTAL_CREDITS_CH ( VC0_TOTAL_CREDITS_CH ), + .VC0_TOTAL_CREDITS_NPD ( VC0_TOTAL_CREDITS_NPD ), + .VC0_TOTAL_CREDITS_NPH ( VC0_TOTAL_CREDITS_NPH ), + .VC0_TOTAL_CREDITS_PD ( VC0_TOTAL_CREDITS_PD ), + .VC0_TOTAL_CREDITS_PH ( VC0_TOTAL_CREDITS_PH ), + .VC0_TX_LASTPACKET ( VC0_TX_LASTPACKET ), + .VSEC_BASE_PTR ( VSEC_BASE_PTR ), + .VSEC_CAP_HDR_ID ( VSEC_CAP_HDR_ID ), + .VSEC_CAP_HDR_REVISION ( VSEC_CAP_HDR_REVISION ), + .VSEC_CAP_ID ( VSEC_CAP_ID ), + .VSEC_CAP_IS_LINK_VISIBLE ( VSEC_CAP_IS_LINK_VISIBLE ), + .VSEC_CAP_NEXTPTR ( VSEC_CAP_NEXTPTR ), + .VSEC_CAP_ON ( VSEC_CAP_ON ), + .VSEC_CAP_VERSION ( VSEC_CAP_VERSION ) +`ifdef B_TESTMODE + , + .TEST_MODE_PIN_CHAR ( TEST_MODE_PIN_CHAR ) +`endif + + ) + pcie_block_i ( + + .TRNTD ({{(128-C_DATA_WIDTH){1'b0}},trn_td} ), + .TRNTREM ({1'b0,trn_trem} ), + + + .TRNTSOF (trn_tsof ), + .TRNTEOF (trn_teof ), + .TRNTSRCRDY (trn_tsrc_rdy ), + .TRNTSRCDSC (trn_tsrc_dsc ), + .TRNTERRFWD (trn_terrfwd ), + .TRNTECRCGEN (trn_tecrc_gen ), + .TRNTSTR (trn_tstr ), + .TRNTCFGGNT (trn_tcfg_gnt ), + .TRNRDSTRDY (trn_rdst_rdy ), + .TRNRNPREQ (trn_rnp_req ), + .TRNRFCPRET (trn_rfcp_ret ), + .TRNRNPOK (trn_rnp_ok ), + .TRNFCSEL (trn_fc_sel ), + .MIMTXRDATA (mim_tx_rdata ), + .MIMRXRDATA (mim_rx_rdata ), + .TRNTDLLPDATA (trn_tdllp_data ), + .TRNTDLLPSRCRDY (trn_tdllp_src_rdy ), + .LL2TLPRCV (ll2_tlp_rcv ), + .LL2SENDENTERL1 (ll2_send_enter_l1 ), + .LL2SENDENTERL23 (ll2_send_enter_l23 ), + .LL2SENDASREQL1 (ll2_send_as_req_l1 ), + .LL2SENDPMACK (ll2_send_pm_ack ), + .PL2DIRECTEDLSTATE (pl2_directed_lstate ), + .LL2SUSPENDNOW (ll2_suspend_now ), + .TL2PPMSUSPENDREQ (tl2_ppm_suspend_req ), + .TL2ASPMSUSPENDCREDITCHECK (tl2_aspm_suspend_credit_check ), + .PLDIRECTEDLINKCHANGE (pl_directed_link_change ), + .PLDIRECTEDLINKWIDTH (pl_directed_link_width ), + .PLDIRECTEDLINKSPEED (pl_directed_link_speed ), + .PLDIRECTEDLINKAUTON (pl_directed_link_auton ), + .PLUPSTREAMPREFERDEEMPH (pl_upstream_prefer_deemph ), + .PLDOWNSTREAMDEEMPHSOURCE (pl_downstream_deemph_source ), + .PLDIRECTEDLTSSMNEW (pl_directed_ltssm_new ), + .PLDIRECTEDLTSSMNEWVLD (pl_directed_ltssm_new_vld ), + .PLDIRECTEDLTSSMSTALL (pl_directed_ltssm_stall ), + .PIPERX0CHARISK (pipe_rx0_char_is_k ), + .PIPERX1CHARISK (pipe_rx1_char_is_k ), + .PIPERX2CHARISK (pipe_rx2_char_is_k ), + .PIPERX3CHARISK (pipe_rx3_char_is_k ), + .PIPERX4CHARISK (pipe_rx4_char_is_k ), + .PIPERX5CHARISK (pipe_rx5_char_is_k ), + .PIPERX6CHARISK (pipe_rx6_char_is_k ), + .PIPERX7CHARISK (pipe_rx7_char_is_k ), + .PIPERX0VALID (pipe_rx0_valid ), + .PIPERX1VALID (pipe_rx1_valid ), + .PIPERX2VALID (pipe_rx2_valid ), + .PIPERX3VALID (pipe_rx3_valid ), + .PIPERX4VALID (pipe_rx4_valid ), + .PIPERX5VALID (pipe_rx5_valid ), + .PIPERX6VALID (pipe_rx6_valid ), + .PIPERX7VALID (pipe_rx7_valid ), + .PIPERX0DATA (pipe_rx0_data ), + .PIPERX1DATA (pipe_rx1_data ), + .PIPERX2DATA (pipe_rx2_data ), + .PIPERX3DATA (pipe_rx3_data ), + .PIPERX4DATA (pipe_rx4_data ), + .PIPERX5DATA (pipe_rx5_data ), + .PIPERX6DATA (pipe_rx6_data ), + .PIPERX7DATA (pipe_rx7_data ), + .PIPERX0CHANISALIGNED (pipe_rx0_chanisaligned ), + .PIPERX1CHANISALIGNED (pipe_rx1_chanisaligned ), + .PIPERX2CHANISALIGNED (pipe_rx2_chanisaligned ), + .PIPERX3CHANISALIGNED (pipe_rx3_chanisaligned ), + .PIPERX4CHANISALIGNED (pipe_rx4_chanisaligned ), + .PIPERX5CHANISALIGNED (pipe_rx5_chanisaligned ), + .PIPERX6CHANISALIGNED (pipe_rx6_chanisaligned ), + .PIPERX7CHANISALIGNED (pipe_rx7_chanisaligned ), + .PIPERX0STATUS (pipe_rx0_status ), + .PIPERX1STATUS (pipe_rx1_status ), + .PIPERX2STATUS (pipe_rx2_status ), + .PIPERX3STATUS (pipe_rx3_status ), + .PIPERX4STATUS (pipe_rx4_status ), + .PIPERX5STATUS (pipe_rx5_status ), + .PIPERX6STATUS (pipe_rx6_status ), + .PIPERX7STATUS (pipe_rx7_status ), + .PIPERX0PHYSTATUS (pipe_rx0_phy_status ), + .PIPERX1PHYSTATUS (pipe_rx1_phy_status ), + .PIPERX2PHYSTATUS (pipe_rx2_phy_status ), + .PIPERX3PHYSTATUS (pipe_rx3_phy_status ), + .PIPERX4PHYSTATUS (pipe_rx4_phy_status ), + .PIPERX5PHYSTATUS (pipe_rx5_phy_status ), + .PIPERX6PHYSTATUS (pipe_rx6_phy_status ), + .PIPERX7PHYSTATUS (pipe_rx7_phy_status ), + .PIPERX0ELECIDLE (pipe_rx0_elec_idle ), + .PIPERX1ELECIDLE (pipe_rx1_elec_idle ), + .PIPERX2ELECIDLE (pipe_rx2_elec_idle ), + .PIPERX3ELECIDLE (pipe_rx3_elec_idle ), + .PIPERX4ELECIDLE (pipe_rx4_elec_idle ), + .PIPERX5ELECIDLE (pipe_rx5_elec_idle ), + .PIPERX6ELECIDLE (pipe_rx6_elec_idle ), + .PIPERX7ELECIDLE (pipe_rx7_elec_idle ), + .PIPECLK (pipe_clk ), + .USERCLK (user_clk ), + .USERCLK2 (user_clk2 ), +`ifdef VALIDATION + .USERCLKPREBUF (user_clk_prebuf ), + .USERCLKPREBUFEN (user_clk_prebuf_en ), +`endif +`ifdef B_TESTMODE + .USERCLKPREBUF (user_clk_prebuf ), + .USERCLKPREBUFEN (user_clk_prebuf_en ), + .SCANMODEN (scanmode_n ), + .SCANENABLEN (scanenable_n ), + .EDTCLK (edt_clk ), + .EDTUPDATE (edt_update ), + .EDTBYPASS (edt_bypass ), + .EDTCONFIGURATION (edt_configuration ), + .EDTSINGLEBYPASSCHAIN (edt_single_bypass_chain ), + .EDTCHANNELSIN1 (edt_channels_in1 ), + .EDTCHANNELSIN2 (edt_channels_in2 ), + .EDTCHANNELSIN3 (edt_channels_in3 ), + .EDTCHANNELSIN4 (edt_channels_in4 ), + .EDTCHANNELSIN5 (edt_channels_in5 ), + .EDTCHANNELSIN6 (edt_channels_in6 ), + .EDTCHANNELSIN7 (edt_channels_in7 ), + .EDTCHANNELSIN8 (edt_channels_in8 ), + .PMVENABLEN (pmv_enable_n ), + .PMVSELECT (pmv_select ), + .PMVDIVIDE (pmv_divide ), +`endif +//`ifdef SECUREIP +// .GSR (gsr ), +//`endif + .SYSRSTN (sys_rst_n ), + .CMRSTN (cm_rst_n ), + .CMSTICKYRSTN (cm_sticky_rst_n ), + .FUNCLVLRSTN (func_lvl_rst_n ), + .TLRSTN (tl_rst_n ), + .DLRSTN (dl_rst_n ), + .PLRSTN (pl_rst_n ), + .PLTRANSMITHOTRST (pl_transmit_hot_rst ), + // Global pins not on Holistic model + //.CFGRESET (cfg_reset ), + //.GWE (gwe ), + //.GRESTORE (grestore ), + //.GHIGHB (ghigh_b ), + .CFGMGMTDI (cfg_mgmt_di ), + .CFGMGMTBYTEENN (cfg_mgmt_byte_en_n ), + .CFGMGMTDWADDR (cfg_mgmt_dwaddr ), + .CFGMGMTWRRW1CASRWN (cfg_mgmt_wr_rw1c_as_rw_n ), + .CFGMGMTWRREADONLYN (cfg_mgmt_wr_readonly_n ), + .CFGMGMTWRENN (cfg_mgmt_wr_en_n ), + .CFGMGMTRDENN (cfg_mgmt_rd_en_n ), + .CFGERRMALFORMEDN (cfg_err_malformed_n ), + .CFGERRCORN (cfg_err_cor_n ), + .CFGERRURN (cfg_err_ur_n ), + .CFGERRECRCN (cfg_err_ecrc_n ), + .CFGERRCPLTIMEOUTN (cfg_err_cpl_timeout_n ), + .CFGERRCPLABORTN (cfg_err_cpl_abort_n ), + .CFGERRCPLUNEXPECTN (cfg_err_cpl_unexpect_n ), + .CFGERRPOISONEDN (cfg_err_poisoned_n ), + .CFGERRACSN (cfg_err_acs_n ), + .CFGERRATOMICEGRESSBLOCKEDN (cfg_err_atomic_egress_blocked_n ), + .CFGERRMCBLOCKEDN (cfg_err_mc_blocked_n ), + .CFGERRINTERNALUNCORN (cfg_err_internal_uncor_n ), + .CFGERRINTERNALCORN (cfg_err_internal_cor_n ), + .CFGERRPOSTEDN (cfg_err_posted_n ), + .CFGERRLOCKEDN (cfg_err_locked_n ), + .CFGERRNORECOVERYN (cfg_err_norecovery_n ), + .CFGERRAERHEADERLOG (cfg_err_aer_headerlog ), + .CFGERRTLPCPLHEADER (cfg_err_tlp_cpl_header ), + .CFGINTERRUPTN (cfg_interrupt_n ), + .CFGINTERRUPTDI (cfg_interrupt_di ), + .CFGINTERRUPTASSERTN (cfg_interrupt_assert_n ), + .CFGINTERRUPTSTATN (cfg_interrupt_stat_n ), + .CFGDSBUSNUMBER (cfg_ds_bus_number ), + .CFGDSDEVICENUMBER (cfg_ds_device_number ), + .CFGDSFUNCTIONNUMBER (cfg_ds_function_number ), + .CFGPORTNUMBER (cfg_port_number ), + .CFGPMHALTASPML0SN (cfg_pm_halt_aspm_l0s_n ), + .CFGPMHALTASPML1N (cfg_pm_halt_aspm_l1_n ), + .CFGPMFORCESTATEENN (cfg_pm_force_state_en_n ), + .CFGPMFORCESTATE (cfg_pm_force_state ), + .CFGPMWAKEN (cfg_pm_wake_n ), + .CFGPMTURNOFFOKN (cfg_pm_turnoff_ok_n ), + .CFGPMSENDPMETON (cfg_pm_send_pme_to_n ), + .CFGPCIECAPINTERRUPTMSGNUM (cfg_pciecap_interrupt_msgnum ), + .CFGTRNPENDINGN (cfg_trn_pending_n ), + .CFGFORCEMPS (cfg_force_mps ), + .CFGFORCECOMMONCLOCKOFF (cfg_force_common_clock_off ), + .CFGFORCEEXTENDEDSYNCON (cfg_force_extended_sync_on ), + .CFGDSN (cfg_dsn ), + .CFGDEVID (cfg_dev_id ), + .CFGVENDID (cfg_vend_id ), + .CFGREVID (cfg_rev_id ), + .CFGSUBSYSID (cfg_subsys_id ), + .CFGSUBSYSVENDID (cfg_subsys_vend_id ), + .CFGAERINTERRUPTMSGNUM (cfg_aer_interrupt_msgnum ), + .DRPCLK (drp_clk ), + .DRPEN (drp_en ), + .DRPWE (drp_we ), + .DRPADDR (drp_addr ), + .DRPDI (drp_di ), + //.DRPREADPORT0 (drp_read_port_0 ), + //.DRPREADPORT1 (drp_read_port_1 ), + //.DRPREADPORT2 (drp_read_port_2 ), + //.DRPREADPORT3 (drp_read_port_3 ), + //.DRPREADPORT4 (drp_read_port_4 ), + //.DRPREADPORT5 (drp_read_port_5 ), + //.DRPREADPORT6 (drp_read_port_6 ), + //.DRPREADPORT7 (drp_read_port_7 ), + //.DRPREADPORT8 (drp_read_port_8 ), + //.DRPREADPORT9 (drp_read_port_9 ), + //.DRPREADPORT10 (drp_read_port_10 ), + //.DRPREADPORT11 (drp_read_port_11 ), + //.DRPREADPORT12 (drp_read_port_12 ), + .DBGMODE (dbg_mode ), + .DBGSUBMODE (dbg_sub_mode ), + .PLDBGMODE (pl_dbg_mode ), + + .TRNTDSTRDY (trn_tdst_rdy_bus ), + .TRNTERRDROP (trn_terr_drop ), + .TRNTBUFAV (trn_tbuf_av ), + .TRNTCFGREQ (trn_tcfg_req ), + .TRNRD (trn_rd ), + .TRNRREM (trn_rrem ), + .TRNRSOF (trn_rsof ), + .TRNREOF (trn_reof ), + .TRNRSRCRDY (trn_rsrc_rdy ), + .TRNRSRCDSC (trn_rsrc_dsc ), + .TRNRECRCERR (trn_recrc_err ), + .TRNRERRFWD (trn_rerrfwd ), + .TRNRBARHIT (trn_rbar_hit ), + .TRNLNKUP (trn_lnk_up ), + .TRNFCPH (trn_fc_ph ), + .TRNFCPD (trn_fc_pd ), + .TRNFCNPH (trn_fc_nph ), + .TRNFCNPD (trn_fc_npd ), + .TRNFCCPLH (trn_fc_cplh ), + .TRNFCCPLD (trn_fc_cpld ), + .MIMTXWDATA (mim_tx_wdata ), + .MIMTXWADDR (mim_tx_waddr ), + .MIMTXWEN (mim_tx_wen ), + .MIMTXRADDR (mim_tx_raddr ), + .MIMTXREN (mim_tx_ren ), + .MIMRXWDATA (mim_rx_wdata ), + .MIMRXWADDR (mim_rx_waddr ), + .MIMRXWEN (mim_rx_wen ), + .MIMRXRADDR (mim_rx_raddr ), + .MIMRXREN (mim_rx_ren ), + .TRNTDLLPDSTRDY (trn_tdllp_dst_rdy ), + .TRNRDLLPDATA (trn_rdllp_data ), + .TRNRDLLPSRCRDY (trn_rdllp_src_rdy ), + .LL2TFCINIT1SEQ (ll2_tfc_init1_seq ), + .LL2TFCINIT2SEQ (ll2_tfc_init2_seq ), + .PL2SUSPENDOK (pl2_suspend_ok ), + .PL2RECOVERY (pl2_recovery ), + .PL2RXELECIDLE (pl2_rx_elec_idle ), + .PL2RXPMSTATE (pl2_rx_pm_state ), + .PL2L0REQ (pl2_l0_req ), + .LL2SUSPENDOK (ll2_suspend_ok ), + .LL2TXIDLE (ll2_tx_idle ), + .LL2LINKSTATUS (ll2_link_status ), + .TL2PPMSUSPENDOK (tl2_ppm_suspend_ok ), + .TL2ASPMSUSPENDREQ (tl2_aspm_suspend_req ), + .TL2ASPMSUSPENDCREDITCHECKOK (tl2_aspm_suspend_credit_check_ok ), + .PL2LINKUP (pl2_link_up ), + .PL2RECEIVERERR (pl2_receiver_err ), + .LL2RECEIVERERR (ll2_receiver_err ), + .LL2PROTOCOLERR (ll2_protocol_err ), + .LL2BADTLPERR (ll2_bad_tlp_err ), + .LL2BADDLLPERR (ll2_bad_dllp_err ), + .LL2REPLAYROERR (ll2_replay_ro_err ), + .LL2REPLAYTOERR (ll2_replay_to_err ), + .TL2ERRHDR (tl2_err_hdr ), + .TL2ERRMALFORMED (tl2_err_malformed ), + .TL2ERRRXOVERFLOW (tl2_err_rxoverflow ), + .TL2ERRFCPE (tl2_err_fcpe ), + .PLSELLNKRATE (pl_sel_lnk_rate ), + .PLSELLNKWIDTH (pl_sel_lnk_width ), + .PLLTSSMSTATE (pl_ltssm_state ), + .PLLANEREVERSALMODE (pl_lane_reversal_mode ), + .PLPHYLNKUPN (pl_phy_lnk_up_n ), + .PLTXPMSTATE (pl_tx_pm_state ), + .PLRXPMSTATE (pl_rx_pm_state ), + .PLLINKUPCFGCAP (pl_link_upcfg_cap ), + .PLLINKGEN2CAP (pl_link_gen2_cap ), + .PLLINKPARTNERGEN2SUPPORTED (pl_link_partner_gen2_supported ), + .PLINITIALLINKWIDTH (pl_initial_link_width ), + .PLDIRECTEDCHANGEDONE (pl_directed_change_done ), + .PIPETXRCVRDET (pipe_tx_rcvr_det ), + .PIPETXRESET (pipe_tx_reset ), + .PIPETXRATE (pipe_tx_rate ), + .PIPETXDEEMPH (pipe_tx_deemph ), + .PIPETXMARGIN (pipe_tx_margin ), + .PIPERX0POLARITY (pipe_rx0_polarity ), + .PIPERX1POLARITY (pipe_rx1_polarity ), + .PIPERX2POLARITY (pipe_rx2_polarity ), + .PIPERX3POLARITY (pipe_rx3_polarity ), + .PIPERX4POLARITY (pipe_rx4_polarity ), + .PIPERX5POLARITY (pipe_rx5_polarity ), + .PIPERX6POLARITY (pipe_rx6_polarity ), + .PIPERX7POLARITY (pipe_rx7_polarity ), + .PIPETX0COMPLIANCE (pipe_tx0_compliance ), + .PIPETX1COMPLIANCE (pipe_tx1_compliance ), + .PIPETX2COMPLIANCE (pipe_tx2_compliance ), + .PIPETX3COMPLIANCE (pipe_tx3_compliance ), + .PIPETX4COMPLIANCE (pipe_tx4_compliance ), + .PIPETX5COMPLIANCE (pipe_tx5_compliance ), + .PIPETX6COMPLIANCE (pipe_tx6_compliance ), + .PIPETX7COMPLIANCE (pipe_tx7_compliance ), + .PIPETX0CHARISK (pipe_tx0_char_is_k ), + .PIPETX1CHARISK (pipe_tx1_char_is_k ), + .PIPETX2CHARISK (pipe_tx2_char_is_k ), + .PIPETX3CHARISK (pipe_tx3_char_is_k ), + .PIPETX4CHARISK (pipe_tx4_char_is_k ), + .PIPETX5CHARISK (pipe_tx5_char_is_k ), + .PIPETX6CHARISK (pipe_tx6_char_is_k ), + .PIPETX7CHARISK (pipe_tx7_char_is_k ), + .PIPETX0DATA (pipe_tx0_data ), + .PIPETX1DATA (pipe_tx1_data ), + .PIPETX2DATA (pipe_tx2_data ), + .PIPETX3DATA (pipe_tx3_data ), + .PIPETX4DATA (pipe_tx4_data ), + .PIPETX5DATA (pipe_tx5_data ), + .PIPETX6DATA (pipe_tx6_data ), + .PIPETX7DATA (pipe_tx7_data ), + .PIPETX0ELECIDLE (pipe_tx0_elec_idle ), + .PIPETX1ELECIDLE (pipe_tx1_elec_idle ), + .PIPETX2ELECIDLE (pipe_tx2_elec_idle ), + .PIPETX3ELECIDLE (pipe_tx3_elec_idle ), + .PIPETX4ELECIDLE (pipe_tx4_elec_idle ), + .PIPETX5ELECIDLE (pipe_tx5_elec_idle ), + .PIPETX6ELECIDLE (pipe_tx6_elec_idle ), + .PIPETX7ELECIDLE (pipe_tx7_elec_idle ), + .PIPETX0POWERDOWN (pipe_tx0_powerdown ), + .PIPETX1POWERDOWN (pipe_tx1_powerdown ), + .PIPETX2POWERDOWN (pipe_tx2_powerdown ), + .PIPETX3POWERDOWN (pipe_tx3_powerdown ), + .PIPETX4POWERDOWN (pipe_tx4_powerdown ), + .PIPETX5POWERDOWN (pipe_tx5_powerdown ), + .PIPETX6POWERDOWN (pipe_tx6_powerdown ), + .PIPETX7POWERDOWN (pipe_tx7_powerdown ), +`ifdef B_TESTMODE + .PMVOUT (pmv_out ), + .SCANOUT (scanout ), +`endif + .USERRSTN (user_rst_n ), + .PLRECEIVEDHOTRST (pl_received_hot_rst ), + .RECEIVEDFUNCLVLRSTN (received_func_lvl_rst_n ), + .LNKCLKEN (lnk_clk_en ), + .CFGMGMTDO (cfg_mgmt_do ), + .CFGMGMTRDWRDONEN (cfg_mgmt_rd_wr_done_n ), + .CFGERRAERHEADERLOGSETN (cfg_err_aer_headerlog_set_n ), + .CFGERRCPLRDYN (cfg_err_cpl_rdy_n ), + .CFGINTERRUPTRDYN (cfg_interrupt_rdy_n ), + .CFGINTERRUPTMMENABLE (cfg_interrupt_mmenable ), + .CFGINTERRUPTMSIENABLE (cfg_interrupt_msienable ), + .CFGINTERRUPTDO (cfg_interrupt_do ), + .CFGINTERRUPTMSIXENABLE (cfg_interrupt_msixenable ), + .CFGINTERRUPTMSIXFM (cfg_interrupt_msixfm ), + .CFGMSGRECEIVED (cfg_msg_received ), + .CFGMSGDATA (cfg_msg_data ), + .CFGMSGRECEIVEDERRCOR (cfg_msg_received_err_cor ), + .CFGMSGRECEIVEDERRNONFATAL (cfg_msg_received_err_non_fatal ), + .CFGMSGRECEIVEDERRFATAL (cfg_msg_received_err_fatal ), + .CFGMSGRECEIVEDASSERTINTA (cfg_msg_received_assert_int_a ), + .CFGMSGRECEIVEDDEASSERTINTA (cfg_msg_received_deassert_int_a ), + .CFGMSGRECEIVEDASSERTINTB (cfg_msg_received_assert_int_b ), + .CFGMSGRECEIVEDDEASSERTINTB (cfg_msg_received_deassert_int_b ), + .CFGMSGRECEIVEDASSERTINTC (cfg_msg_received_assert_int_c ), + .CFGMSGRECEIVEDDEASSERTINTC (cfg_msg_received_deassert_int_c ), + .CFGMSGRECEIVEDASSERTINTD (cfg_msg_received_assert_int_d ), + .CFGMSGRECEIVEDDEASSERTINTD (cfg_msg_received_deassert_int_d ), + .CFGMSGRECEIVEDPMPME (cfg_msg_received_pm_pme ), + .CFGMSGRECEIVEDPMETOACK (cfg_msg_received_pme_to_ack ), + .CFGMSGRECEIVEDPMETO (cfg_msg_received_pme_to ), + .CFGMSGRECEIVEDSETSLOTPOWERLIMIT (cfg_msg_received_setslotpowerlimit ), + .CFGMSGRECEIVEDUNLOCK (cfg_msg_received_unlock ), + .CFGMSGRECEIVEDPMASNAK (cfg_msg_received_pm_as_nak ), + .CFGPCIELINKSTATE (cfg_pcie_link_state ), + .CFGPMRCVASREQL1N (cfg_pm_rcv_as_req_l1_n ), + .CFGPMRCVREQACKN (cfg_pm_rcv_req_ack_n ), + .CFGPMRCVENTERL1N (cfg_pm_rcv_enter_l1_n ), + .CFGPMRCVENTERL23N (cfg_pm_rcv_enter_l23_n ), + .CFGPMCSRPOWERSTATE (cfg_pmcsr_powerstate ), + .CFGPMCSRPMEEN (cfg_pmcsr_pme_en ), + .CFGPMCSRPMESTATUS (cfg_pmcsr_pme_status ), + .CFGTRANSACTION (cfg_transaction ), + .CFGTRANSACTIONTYPE (cfg_transaction_type ), + .CFGTRANSACTIONADDR (cfg_transaction_addr ), + .CFGCOMMANDIOENABLE (cfg_command_io_enable ), + .CFGCOMMANDMEMENABLE (cfg_command_mem_enable ), + .CFGCOMMANDBUSMASTERENABLE (cfg_command_bus_master_enable ), + .CFGCOMMANDINTERRUPTDISABLE (cfg_command_interrupt_disable ), + .CFGCOMMANDSERREN (cfg_command_serr_en ), + .CFGBRIDGESERREN (cfg_bridge_serr_en ), + .CFGDEVSTATUSCORRERRDETECTED (cfg_dev_status_corr_err_detected ), + .CFGDEVSTATUSNONFATALERRDETECTED (cfg_dev_status_non_fatal_err_detected ), + .CFGDEVSTATUSFATALERRDETECTED (cfg_dev_status_fatal_err_detected ), + .CFGDEVSTATUSURDETECTED (cfg_dev_status_ur_detected ), + .CFGDEVCONTROLCORRERRREPORTINGEN (cfg_dev_control_corr_err_reporting_en ), + .CFGDEVCONTROLNONFATALREPORTINGEN (cfg_dev_control_non_fatal_reporting_en ), + .CFGDEVCONTROLFATALERRREPORTINGEN (cfg_dev_control_fatal_err_reporting_en ), + .CFGDEVCONTROLURERRREPORTINGEN (cfg_dev_control_ur_err_reporting_en ), + .CFGDEVCONTROLENABLERO (cfg_dev_control_enable_ro ), + .CFGDEVCONTROLMAXPAYLOAD (cfg_dev_control_max_payload ), + .CFGDEVCONTROLEXTTAGEN (cfg_dev_control_ext_tag_en ), + .CFGDEVCONTROLPHANTOMEN (cfg_dev_control_phantom_en ), + .CFGDEVCONTROLAUXPOWEREN (cfg_dev_control_aux_power_en ), + .CFGDEVCONTROLNOSNOOPEN (cfg_dev_control_no_snoop_en ), + .CFGDEVCONTROLMAXREADREQ (cfg_dev_control_max_read_req ), + .CFGLINKSTATUSCURRENTSPEED (cfg_link_status_current_speed ), + .CFGLINKSTATUSNEGOTIATEDWIDTH (cfg_link_status_negotiated_width ), + .CFGLINKSTATUSLINKTRAINING (cfg_link_status_link_training ), + .CFGLINKSTATUSDLLACTIVE (cfg_link_status_dll_active ), + .CFGLINKSTATUSBANDWIDTHSTATUS (cfg_link_status_bandwidth_status ), + .CFGLINKSTATUSAUTOBANDWIDTHSTATUS (cfg_link_status_auto_bandwidth_status ), + .CFGLINKCONTROLASPMCONTROL (cfg_link_control_aspm_control ), + .CFGLINKCONTROLRCB (cfg_link_control_rcb ), + .CFGLINKCONTROLLINKDISABLE (cfg_link_control_link_disable ), + .CFGLINKCONTROLRETRAINLINK (cfg_link_control_retrain_link ), + .CFGLINKCONTROLCOMMONCLOCK (cfg_link_control_common_clock ), + .CFGLINKCONTROLEXTENDEDSYNC (cfg_link_control_extended_sync ), + .CFGLINKCONTROLCLOCKPMEN (cfg_link_control_clock_pm_en ), + .CFGLINKCONTROLHWAUTOWIDTHDIS (cfg_link_control_hw_auto_width_dis ), + .CFGLINKCONTROLBANDWIDTHINTEN (cfg_link_control_bandwidth_int_en ), + .CFGLINKCONTROLAUTOBANDWIDTHINTEN (cfg_link_control_auto_bandwidth_int_en ), + .CFGDEVCONTROL2CPLTIMEOUTVAL (cfg_dev_control2_cpl_timeout_val ), + .CFGDEVCONTROL2CPLTIMEOUTDIS (cfg_dev_control2_cpl_timeout_dis ), + .CFGDEVCONTROL2ARIFORWARDEN (cfg_dev_control2_ari_forward_en ), + .CFGDEVCONTROL2ATOMICREQUESTEREN (cfg_dev_control2_atomic_requester_en ), + .CFGDEVCONTROL2ATOMICEGRESSBLOCK (cfg_dev_control2_atomic_egress_block ), + .CFGDEVCONTROL2IDOREQEN (cfg_dev_control2_ido_req_en ), + .CFGDEVCONTROL2IDOCPLEN (cfg_dev_control2_ido_cpl_en ), + .CFGDEVCONTROL2LTREN (cfg_dev_control2_ltr_en ), + .CFGDEVCONTROL2TLPPREFIXBLOCK (cfg_dev_control2_tlp_prefix_block ), + .CFGSLOTCONTROLELECTROMECHILCTLPULSE (cfg_slot_control_electromech_il_ctl_pulse ), + .CFGROOTCONTROLSYSERRCORRERREN (cfg_root_control_syserr_corr_err_en ), + .CFGROOTCONTROLSYSERRNONFATALERREN (cfg_root_control_syserr_non_fatal_err_en ), + .CFGROOTCONTROLSYSERRFATALERREN (cfg_root_control_syserr_fatal_err_en ), + .CFGROOTCONTROLPMEINTEN (cfg_root_control_pme_int_en ), + .CFGAERECRCCHECKEN (cfg_aer_ecrc_check_en ), + .CFGAERECRCGENEN (cfg_aer_ecrc_gen_en ), + .CFGAERROOTERRCORRERRREPORTINGEN (cfg_aer_rooterr_corr_err_reporting_en ), + .CFGAERROOTERRNONFATALERRREPORTINGEN (cfg_aer_rooterr_non_fatal_err_reporting_en ), + .CFGAERROOTERRFATALERRREPORTINGEN (cfg_aer_rooterr_fatal_err_reporting_en ), + .CFGAERROOTERRCORRERRRECEIVED (cfg_aer_rooterr_corr_err_received ), + .CFGAERROOTERRNONFATALERRRECEIVED (cfg_aer_rooterr_non_fatal_err_received ), + .CFGAERROOTERRFATALERRRECEIVED (cfg_aer_rooterr_fatal_err_received ), + .CFGVCTCVCMAP (cfg_vc_tcvc_map ), + .DRPRDY (drp_rdy ), + .DRPDO (drp_do ), + //.DRPWRITEEN (drp_write_en ), + //.DRPWRITEPORT0 (drp_write_port_0 ), + //.DRPWRITEPORT1 (drp_write_port_1 ), + //.DRPWRITEPORT2 (drp_write_port_2 ), + //.DRPWRITEPORT3 (drp_write_port_3 ), + //.DRPWRITEPORT4 (drp_write_port_4 ), + //.DRPWRITEPORT5 (drp_write_port_5 ), + //.DRPWRITEPORT6 (drp_write_port_6 ), + //.DRPWRITEPORT7 (drp_write_port_7 ), + //.DRPWRITEPORT8 (drp_write_port_8 ), + //.DRPWRITEPORT9 (drp_write_port_9 ), + //.DRPWRITEPORT10 (drp_write_port_10 ), + //.DRPWRITEPORT11 (drp_write_port_11 ), + //.DRPWRITEPORT12 (drp_write_port_12 ), + //.DRPREADADDR (drp_read_addr ), + .DBGVECA (dbg_vec_a ), + .DBGVECB (dbg_vec_b ), + .DBGVECC (dbg_vec_c ), + .DBGSCLRA (dbg_sclr_a ), + .DBGSCLRB (dbg_sclr_b ), + .DBGSCLRC (dbg_sclr_c ), + .DBGSCLRD (dbg_sclr_d ), + .DBGSCLRE (dbg_sclr_e ), + .DBGSCLRF (dbg_sclr_f ), + .DBGSCLRG (dbg_sclr_g ), + .DBGSCLRH (dbg_sclr_h ), + .DBGSCLRI (dbg_sclr_i ), + .DBGSCLRJ (dbg_sclr_j ), + .DBGSCLRK (dbg_sclr_k ), + .PLDBGVEC (pl_dbg_vec ) + //.XILUNCONNOUT (xil_unconn_out ) + ); + + + + +endmodule + +`endif // PCIE_2LM diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_bram_7x.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_bram_7x.v new file mode 100644 index 0000000..5874129 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_bram_7x.v @@ -0,0 +1,212 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_pcie_bram_7x.v +// Version : 3.3 +// Description : single bram wrapper for the mb pcie block +// The bram A port is the write port +// the B port is the read port +// +// +//-----------------------------------------------------------------------------// + +`timescale 1ps/1ps + +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_pcie_bram_7x + #( + parameter [3:0] LINK_CAP_MAX_LINK_SPEED = 4'h1, // PCIe Link Speed : 1 - 2.5 GT/s; 2 - 5.0 GT/s + parameter [5:0] LINK_CAP_MAX_LINK_WIDTH = 6'h08, // PCIe Link Width : 1 / 2 / 4 / 8 + parameter IMPL_TARGET = "HARD", // the implementation target : HARD, SOFT + parameter DOB_REG = 0, // 1 - use the output register; + // 0 - don't use the output register + parameter WIDTH = 0 // supported WIDTH's : 4, 9, 18, 36 - uses RAMB36 + // 72 - uses RAMB36SDP + ) + ( + input user_clk_i,// user clock + input reset_i, // bram reset + + input wen_i, // write enable + input [12:0] waddr_i, // write address + input [WIDTH - 1:0] wdata_i, // write data + + input ren_i, // read enable + input rce_i, // output register clock enable + input [12:0] raddr_i, // read address + + output [WIDTH - 1:0] rdata_o // read data + ); + + // map the address bits + localparam ADDR_MSB = ((WIDTH == 4) ? 12 : + (WIDTH == 9) ? 11 : + (WIDTH == 18) ? 10 : + (WIDTH == 36) ? 9 : + 8 + ); + + // set the width of the tied off low address bits + localparam ADDR_LO_BITS = ((WIDTH == 4) ? 2 : + (WIDTH == 9) ? 3 : + (WIDTH == 18) ? 4 : + (WIDTH == 36) ? 5 : + 0 // for WIDTH 72 use RAMB36SDP + ); + + // map the data bits + localparam D_MSB = ((WIDTH == 4) ? 3 : + (WIDTH == 9) ? 7 : + (WIDTH == 18) ? 15 : + (WIDTH == 36) ? 31 : + 63 + ); + + // map the data parity bits + localparam DP_LSB = D_MSB + 1; + + localparam DP_MSB = ((WIDTH == 4) ? 4 : + (WIDTH == 9) ? 8 : + (WIDTH == 18) ? 17 : + (WIDTH == 36) ? 35 : + 71 + ); + + localparam DPW = DP_MSB - DP_LSB + 1; + localparam WRITE_MODE = ((WIDTH == 72) && (!((LINK_CAP_MAX_LINK_SPEED == 4'h2) && (LINK_CAP_MAX_LINK_WIDTH == 6'h08)))) ? "WRITE_FIRST" : + ((LINK_CAP_MAX_LINK_SPEED == 4'h2) && (LINK_CAP_MAX_LINK_WIDTH == 6'h08)) ? "WRITE_FIRST" : "NO_CHANGE"; + + localparam DEVICE = (IMPL_TARGET == "HARD") ? "7SERIES" : "VIRTEX6"; + localparam BRAM_SIZE = "36Kb"; + + localparam WE_WIDTH =(DEVICE == "VIRTEX5" || DEVICE == "VIRTEX6" || DEVICE == "7SERIES") ? + ((WIDTH <= 9) ? 1 : + (WIDTH > 9 && WIDTH <= 18) ? 2 : + (WIDTH > 18 && WIDTH <= 36) ? 4 : + (WIDTH > 36 && WIDTH <= 72) ? 8 : + (BRAM_SIZE == "18Kb") ? 4 : 8 ) : 8; + + //synthesis translate_off + initial begin + //$display("[%t] %m DOB_REG %0d WIDTH %0d ADDR_MSB %0d ADDR_LO_BITS %0d DP_MSB %0d DP_LSB %0d D_MSB %0d", + // $time, DOB_REG, WIDTH, ADDR_MSB, ADDR_LO_BITS, DP_MSB, DP_LSB, D_MSB); + + case (WIDTH) + 4,9,18,36,72:; + default: + begin + $display("[%t] %m Error WIDTH %0d not supported", $time, WIDTH); + $finish; + end + endcase // case (WIDTH) + end + //synthesis translate_on + + generate + if ((LINK_CAP_MAX_LINK_WIDTH == 6'h08 && LINK_CAP_MAX_LINK_SPEED == 4'h2) || (WIDTH == 72)) begin : use_sdp + BRAM_SDP_MACRO #( + .DEVICE (DEVICE), + .BRAM_SIZE (BRAM_SIZE), + .DO_REG (DOB_REG), + .READ_WIDTH (WIDTH), + .WRITE_WIDTH (WIDTH), + .WRITE_MODE (WRITE_MODE) + ) + ramb36sdp( + .DO (rdata_o[WIDTH-1:0]), + .DI (wdata_i[WIDTH-1:0]), + .RDADDR (raddr_i[ADDR_MSB:0]), + .RDCLK (user_clk_i), + .RDEN (ren_i), + .REGCE (rce_i), + .RST (reset_i), + .WE ({WE_WIDTH{1'b1}}), + .WRADDR (waddr_i[ADDR_MSB:0]), + .WRCLK (user_clk_i), + .WREN (wen_i) + ); + + end // block: use_sdp + else if (WIDTH <= 36) begin : use_tdp + // use RAMB36's if the width is 4, 9, 18, or 36 + BRAM_TDP_MACRO #( + .DEVICE (DEVICE), + .BRAM_SIZE (BRAM_SIZE), + .DOA_REG (0), + .DOB_REG (DOB_REG), + .READ_WIDTH_A (WIDTH), + .READ_WIDTH_B (WIDTH), + .WRITE_WIDTH_A (WIDTH), + .WRITE_WIDTH_B (WIDTH), + .WRITE_MODE_A (WRITE_MODE) + ) + ramb36( + .DOA (), + .DOB (rdata_o[WIDTH-1:0]), + .ADDRA (waddr_i[ADDR_MSB:0]), + .ADDRB (raddr_i[ADDR_MSB:0]), + .CLKA (user_clk_i), + .CLKB (user_clk_i), + .DIA (wdata_i[WIDTH-1:0]), + .DIB ({WIDTH{1'b0}}), + .ENA (wen_i), + .ENB (ren_i), + .REGCEA (1'b0), + .REGCEB (rce_i), + .RSTA (reset_i), + .RSTB (reset_i), + .WEA ({WE_WIDTH{1'b1}}), + .WEB ({WE_WIDTH{1'b0}}) + ); + end // block: use_tdp + endgenerate + +endmodule // pcie_bram_7x + diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_bram_top_7x.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_bram_top_7x.v new file mode 100644 index 0000000..9d87c1e --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_bram_top_7x.v @@ -0,0 +1,184 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_pcie_bram_top_7x.v +// Version : 3.3 +// Description : bram wrapper for Tx and Rx +// given the pcie block attributes calculate the number of brams +// and pipeline stages and instantiate the brams +// +// Hierarchy: +// pcie_bram_top top level +// pcie_brams pcie_bram instantiations, +// pipeline stages (if any), +// address decode logic (if any), +// datapath muxing (if any) +// pcie_bram bram library cell wrapper +// the pcie_bram module can have a paramter that +// specifies the family (V6, V5, V4) +// +//----------------------------------------------------------------------------- + +`timescale 1ps/1ps + +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_pcie_bram_top_7x +#( + parameter IMPL_TARGET = "HARD", // the implementation target : HARD, SOFT + parameter DEV_CAP_MAX_PAYLOAD_SUPPORTED = 0, // MPS Supported : 0 - 128 B, 1 - 256 B, 2 - 512 B, 3 - 1024 B + parameter [3:0] LINK_CAP_MAX_LINK_SPEED = 4'h1, // PCIe Link Speed : 1 - 2.5 GT/s; 2 - 5.0 GT/s + parameter [5:0] LINK_CAP_MAX_LINK_WIDTH = 6'h08, // PCIe Link Width : 1 / 2 / 4 / 8 + + parameter VC0_TX_LASTPACKET = 31, // Number of Packets in Transmit + parameter TLM_TX_OVERHEAD = 24, // Overhead Bytes for Packets (Transmit) + parameter TL_TX_RAM_RADDR_LATENCY = 1, // BRAM Read Address Latency (Transmit) + parameter TL_TX_RAM_RDATA_LATENCY = 2, // BRAM Read Data Latency (Transmit) + parameter TL_TX_RAM_WRITE_LATENCY = 1, // BRAM Write Latency (Transmit) + + parameter VC0_RX_RAM_LIMIT = 'h1FFF, // RAM Size (Receive) + parameter TL_RX_RAM_RADDR_LATENCY = 1, // BRAM Read Address Latency (Receive) + parameter TL_RX_RAM_RDATA_LATENCY = 2, // BRAM Read Data Latency (Receive) + parameter TL_RX_RAM_WRITE_LATENCY = 1 // BRAM Write Latency (Receive) +) +( + input user_clk_i, // Clock input + input reset_i, // Reset input + + input mim_tx_wen, // Write Enable for Transmit path BRAM + input [12:0] mim_tx_waddr, // Write Address for Transmit path BRAM + input [71:0] mim_tx_wdata, // Write Data for Transmit path BRAM + input mim_tx_ren, // Read Enable for Transmit path BRAM + input mim_tx_rce, // Read Output Register Clock Enable for Transmit path BRAM + input [12:0] mim_tx_raddr, // Read Address for Transmit path BRAM + output [71:0] mim_tx_rdata, // Read Data for Transmit path BRAM + + input mim_rx_wen, // Write Enable for Receive path BRAM + input [12:0] mim_rx_waddr, // Write Enable for Receive path BRAM + input [71:0] mim_rx_wdata, // Write Enable for Receive path BRAM + input mim_rx_ren, // Read Enable for Receive path BRAM + input mim_rx_rce, // Read Output Register Clock Enable for Receive path BRAM + input [12:0] mim_rx_raddr, // Read Address for Receive path BRAM + output [71:0] mim_rx_rdata // Read Data for Receive path BRAM +); + + // TX calculations + localparam MPS_BYTES = ((DEV_CAP_MAX_PAYLOAD_SUPPORTED == 0) ? 128 : + (DEV_CAP_MAX_PAYLOAD_SUPPORTED == 1) ? 256 : + (DEV_CAP_MAX_PAYLOAD_SUPPORTED == 2) ? 512 : + 1024 ); + + localparam BYTES_TX = (VC0_TX_LASTPACKET + 1) * (MPS_BYTES + TLM_TX_OVERHEAD); + + localparam ROWS_TX = 1; + localparam COLS_TX = ((BYTES_TX <= 4096) ? 1 : + (BYTES_TX <= 8192) ? 2 : + (BYTES_TX <= 16384) ? 4 : + (BYTES_TX <= 32768) ? 8 : + 18 + ); + + // RX calculations + localparam ROWS_RX = 1; + + localparam COLS_RX = ((VC0_RX_RAM_LIMIT < 'h0200) ? 1 : + (VC0_RX_RAM_LIMIT < 'h0400) ? 2 : + (VC0_RX_RAM_LIMIT < 'h0800) ? 4 : + (VC0_RX_RAM_LIMIT < 'h1000) ? 8 : + 18 + ); + + initial begin + $display("[%t] %m ROWS_TX %0d COLS_TX %0d", $time, ROWS_TX, COLS_TX); + $display("[%t] %m ROWS_RX %0d COLS_RX %0d", $time, ROWS_RX, COLS_RX); + end + +pcie_7x_0_pcie_brams_7x #( + .LINK_CAP_MAX_LINK_WIDTH ( LINK_CAP_MAX_LINK_WIDTH ), + .LINK_CAP_MAX_LINK_SPEED ( LINK_CAP_MAX_LINK_SPEED ), + .IMPL_TARGET ( IMPL_TARGET ), + .NUM_BRAMS ( COLS_TX ), + .RAM_RADDR_LATENCY ( TL_TX_RAM_RADDR_LATENCY ), + .RAM_RDATA_LATENCY ( TL_TX_RAM_RDATA_LATENCY ), + .RAM_WRITE_LATENCY ( TL_TX_RAM_WRITE_LATENCY ) + ) + pcie_brams_tx ( + .user_clk_i ( user_clk_i ), + .reset_i ( reset_i ), + .waddr ( mim_tx_waddr ), + .wen ( mim_tx_wen ), + .ren ( mim_tx_ren ), + .rce ( mim_tx_rce ), + .wdata ( mim_tx_wdata ), + .raddr ( mim_tx_raddr ), + .rdata ( mim_tx_rdata ) + ); + +pcie_7x_0_pcie_brams_7x #( + .LINK_CAP_MAX_LINK_WIDTH ( LINK_CAP_MAX_LINK_WIDTH ), + .LINK_CAP_MAX_LINK_SPEED ( LINK_CAP_MAX_LINK_SPEED ), + .IMPL_TARGET ( IMPL_TARGET ), + .NUM_BRAMS ( COLS_RX ), + .RAM_RADDR_LATENCY ( TL_RX_RAM_RADDR_LATENCY ), + .RAM_RDATA_LATENCY ( TL_RX_RAM_RDATA_LATENCY ), + .RAM_WRITE_LATENCY ( TL_RX_RAM_WRITE_LATENCY ) + ) pcie_brams_rx ( + .user_clk_i ( user_clk_i ), + .reset_i ( reset_i ), + .waddr ( mim_rx_waddr ), + .wen ( mim_rx_wen ), + .ren ( mim_rx_ren ), + .rce ( mim_rx_rce ), + .wdata ( mim_rx_wdata ), + .raddr ( mim_rx_raddr ), + .rdata ( mim_rx_rdata ) + ); + +endmodule // pcie_bram_top + diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_brams_7x.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_brams_7x.v new file mode 100644 index 0000000..161b9b8 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_brams_7x.v @@ -0,0 +1,296 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_pcie_brams_7x.v +// Version : 3.3 +// Description : pcie bram wrapper +// arrange and connect brams +// implement address decoding, datapath muxing and pipeline stages +// +// banks of brams are used for 1,2,4,8,18 brams +// brams are stacked for other values of NUM_BRAMS +// +//----------------------------------------------------------------------------- + +`timescale 1ps/1ps + +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_pcie_brams_7x +#( + parameter [3:0] LINK_CAP_MAX_LINK_SPEED = 4'h1, // PCIe Link Speed : 1 - 2.5 GT/s; 2 - 5.0 GT/s + parameter [5:0] LINK_CAP_MAX_LINK_WIDTH = 6'h08, // PCIe Link Width : 1 / 2 / 4 / 8 + parameter IMPL_TARGET = "HARD", // the implementation target : HARD, SOFT + + // the number of BRAMs to use + // supported values are: + // 1,2,4,8,18 + parameter NUM_BRAMS = 0, + + // BRAM read address latency + // + // value meaning + // ==================================================== + // 0 BRAM read address port sample + // 1 BRAM read address port sample and a pipeline stage on the address port + parameter RAM_RADDR_LATENCY = 1, + + // BRAM read data latency + // + // value meaning + // ==================================================== + // 1 no BRAM OREG + // 2 use BRAM OREG + // 3 use BRAM OREG and a pipeline stage on the data port + parameter RAM_RDATA_LATENCY = 1, + + // BRAM write latency + // The BRAM write port is synchronous + // + // value meaning + // ==================================================== + // 0 BRAM write port sample + // 1 BRAM write port sample plus pipeline stage + parameter RAM_WRITE_LATENCY = 1, + parameter TCQ = 1 // synthesis warning removed: parameter declaration becomes local +) +( + input user_clk_i, + input reset_i, + + input wen, + input [12:0] waddr, + input [71:0] wdata, + input ren, + input rce, + input [12:0] raddr, + output [71:0] rdata + ); + + // turn on the bram output register + localparam DOB_REG = (RAM_RDATA_LATENCY > 1) ? 1 : 0; + + // calculate the data width of the individual brams + localparam [6:0] WIDTH = ((NUM_BRAMS == 1) ? 72 : + (NUM_BRAMS == 2) ? 36 : + (NUM_BRAMS == 4) ? 18 : + (NUM_BRAMS == 8) ? 9 : + 4 + ); + +// parameter TCQ = 1; + + wire wen_int; + wire [12:0] waddr_int; + wire [71:0] wdata_int; + + wire ren_int; + wire [12:0] raddr_int; + wire [71:0] rdata_int; + + //synthesis translate_off + initial + begin + $display("[%t] %m NUM_BRAMS %0d DOB_REG %0d WIDTH %0d RAM_WRITE_LATENCY %0d RAM_RADDR_LATENCY %0d RAM_RDATA_LATENCY %0d", + $time, NUM_BRAMS, DOB_REG, WIDTH, RAM_WRITE_LATENCY, RAM_RADDR_LATENCY, RAM_RDATA_LATENCY); + + case (NUM_BRAMS) + 1,2,4,8,18:; + default: + begin + $display("[%t] %m Error NUM_BRAMS %0d not supported", $time, NUM_BRAMS); + $finish; + end + endcase // case(NUM_BRAMS) + + case (RAM_RADDR_LATENCY) + 0,1:; + default: + begin + $display("[%t] %m Error RAM_READ_LATENCY %0d not supported", $time, RAM_RADDR_LATENCY); + $finish; + end + endcase // case (RAM_RADDR_LATENCY) + + case (RAM_RDATA_LATENCY) + 1,2,3:; + default: + begin + $display("[%t] %m Error RAM_READ_LATENCY %0d not supported", $time, RAM_RDATA_LATENCY); + $finish; + end + endcase // case (RAM_RDATA_LATENCY) + + case (RAM_WRITE_LATENCY) + 0,1:; + default: + begin + $display("[%t] %m Error RAM_WRITE_LATENCY %0d not supported", $time, RAM_WRITE_LATENCY); + $finish; + end + endcase // case(RAM_WRITE_LATENCY) + + end + //synthesis translate_on + + // model the delays for ram write latency + + generate if (RAM_WRITE_LATENCY == 1) begin : wr_lat_2 + reg wen_q; + reg [12:0] waddr_q; + reg [71:0] wdata_q; + + always @(posedge user_clk_i) begin + if (reset_i) + begin + wen_q <= #TCQ 1'b0; + waddr_q <= #TCQ 13'b0; + // Disable Reset on Data Path @ BRAM i/f as I/O come from PCIe HB. + // wdata_q <= #TCQ 72'b0; + end + else + begin + wen_q <= #TCQ wen; + waddr_q <= #TCQ waddr; + wdata_q <= #TCQ wdata; + end + end + + assign wen_int = wen_q; + assign waddr_int = waddr_q; + assign wdata_int = wdata_q; + end // if (RAM_WRITE_LATENCY == 1) + + else if (RAM_WRITE_LATENCY == 0) begin : wr_lat_1 + assign wen_int = wen; + assign waddr_int = waddr; + assign wdata_int = wdata; + end + endgenerate + + // model the delays for ram read latency + + generate if (RAM_RADDR_LATENCY == 1) begin : raddr_lat_2 + reg ren_q; + reg [12:0] raddr_q; + + always @(posedge user_clk_i) begin + if (reset_i) + begin + ren_q <= #TCQ 1'b0; + raddr_q <= #TCQ 13'b0; + end + else + begin + ren_q <= #TCQ ren; + raddr_q <= #TCQ raddr; + end // else: !if(reset_i) + end + + assign ren_int = ren_q; + assign raddr_int = raddr_q; + end // block: rd_lat_addr_2 + + else begin : raddr_lat_1 + assign ren_int = ren; + assign raddr_int = raddr; + end + endgenerate + + generate if (RAM_RDATA_LATENCY == 3) begin : rdata_lat_3 + reg [71:0] rdata_q; + + always @(posedge user_clk_i) begin + // Disable Reset on Data Path @ BRAM i/f as I/O come from PCIe HB. + //if (reset_i) + //begin + // rdata_q <= #TCQ 72'b0; + //end + //else + //begin + rdata_q <= #TCQ rdata_int; + //end // else: !if(reset_i) + end + + assign rdata = rdata_q; + + end // block: rd_lat_data_3 + + else begin : rdata_lat_1_2 + assign rdata = rdata_int; + end + endgenerate + + // instantiate the brams + generate + genvar ii; + for (ii = 0; ii < NUM_BRAMS; ii = ii + 1) begin : brams +pcie_7x_0_pcie_bram_7x #( + .LINK_CAP_MAX_LINK_WIDTH(LINK_CAP_MAX_LINK_WIDTH), + .LINK_CAP_MAX_LINK_SPEED(LINK_CAP_MAX_LINK_SPEED), + .IMPL_TARGET (IMPL_TARGET), + .DOB_REG (DOB_REG), + .WIDTH (WIDTH) + ) + ram ( + .user_clk_i(user_clk_i), + .reset_i(reset_i), + .wen_i(wen_int), + .waddr_i(waddr_int), + .wdata_i(wdata_int[(((ii + 1) * WIDTH) - 1): (ii * WIDTH)]), + .ren_i(ren_int), + .raddr_i(raddr_int), + .rdata_o(rdata_int[(((ii + 1) * WIDTH) - 1): (ii * WIDTH)]), + .rce_i(rce) + ); + end + endgenerate + +endmodule // pcie_brams_7x + diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_pipe_lane.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_pipe_lane.v new file mode 100644 index 0000000..5fb1db4 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_pipe_lane.v @@ -0,0 +1,328 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_pcie_pipe_lane.v +// Version : 3.3 +// +// Description: PIPE per lane module for 7-Series PCIe Block +// +// +// +//-------------------------------------------------------------------------------- + +`timescale 1ps/1ps + +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_pcie_pipe_lane # +( + parameter PIPE_PIPELINE_STAGES = 0, // 0 - 0 stages, 1 - 1 stage, 2 - 2 stages + parameter TCQ = 1 // synthesis warning solved : parameter declaration becomes local +) +( + output wire [ 1:0] pipe_rx_char_is_k_o , // Pipelined PIPE Rx Char Is K + output wire [15:0] pipe_rx_data_o , // Pipelined PIPE Rx Data + output wire pipe_rx_valid_o , // Pipelined PIPE Rx Data Valid + output wire pipe_rx_chanisaligned_o , // Pipelined PIPE Rx Chan Is Aligned + output wire [ 2:0] pipe_rx_status_o , // Pipelined PIPE Rx Status + output wire pipe_rx_phy_status_o , // Pipelined PIPE Rx Phy Status + output wire pipe_rx_elec_idle_o , // Pipelined PIPE Rx Electrical Idle + input wire pipe_rx_polarity_i , // PIPE Rx Polarity + input wire pipe_tx_compliance_i , // PIPE Tx Compliance + input wire [ 1:0] pipe_tx_char_is_k_i , // PIPE Tx Char Is K + input wire [15:0] pipe_tx_data_i , // PIPE Tx Data + input wire pipe_tx_elec_idle_i , // PIPE Tx Electrical Idle + input wire [ 1:0] pipe_tx_powerdown_i , // PIPE Tx Powerdown + + input wire [ 1:0] pipe_rx_char_is_k_i , // PIPE Rx Char Is K + input wire [15:0] pipe_rx_data_i , // PIPE Rx Data + input wire pipe_rx_valid_i , // PIPE Rx Data Valid + input wire pipe_rx_chanisaligned_i , // PIPE Rx Chan Is Aligned + input wire [ 2:0] pipe_rx_status_i , // PIPE Rx Status + input wire pipe_rx_phy_status_i , // PIPE Rx Phy Status + input wire pipe_rx_elec_idle_i , // PIPE Rx Electrical Idle + output wire pipe_rx_polarity_o , // Pipelined PIPE Rx Polarity + output wire pipe_tx_compliance_o , // Pipelined PIPE Tx Compliance + output wire [ 1:0] pipe_tx_char_is_k_o , // Pipelined PIPE Tx Char Is K + output wire [15:0] pipe_tx_data_o , // Pipelined PIPE Tx Data + output wire pipe_tx_elec_idle_o , // Pipelined PIPE Tx Electrical Idle + output wire [ 1:0] pipe_tx_powerdown_o , // Pipelined PIPE Tx Powerdown + + input wire pipe_clk , // PIPE Clock + input wire rst_n // Reset +); + + //******************************************************************// + // Reality check. // + //******************************************************************// + +// parameter TCQ = 1; // clock to out delay model + + generate + + if (PIPE_PIPELINE_STAGES == 0) begin : pipe_stages_0 + + assign pipe_rx_char_is_k_o = pipe_rx_char_is_k_i; + assign pipe_rx_data_o = pipe_rx_data_i; + assign pipe_rx_valid_o = pipe_rx_valid_i; + assign pipe_rx_chanisaligned_o = pipe_rx_chanisaligned_i; + assign pipe_rx_status_o = pipe_rx_status_i; + assign pipe_rx_phy_status_o = pipe_rx_phy_status_i; + assign pipe_rx_elec_idle_o = pipe_rx_elec_idle_i; + + assign pipe_rx_polarity_o = pipe_rx_polarity_i; + assign pipe_tx_compliance_o = pipe_tx_compliance_i; + assign pipe_tx_char_is_k_o = pipe_tx_char_is_k_i; + assign pipe_tx_data_o = pipe_tx_data_i; + assign pipe_tx_elec_idle_o = pipe_tx_elec_idle_i; + assign pipe_tx_powerdown_o = pipe_tx_powerdown_i; + + end // if (PIPE_PIPELINE_STAGES == 0) + else if (PIPE_PIPELINE_STAGES == 1) begin : pipe_stages_1 + + reg [ 1:0] pipe_rx_char_is_k_q ; + reg [15:0] pipe_rx_data_q ; + reg pipe_rx_valid_q ; + reg pipe_rx_chanisaligned_q ; + reg [ 2:0] pipe_rx_status_q ; + reg pipe_rx_phy_status_q ; + reg pipe_rx_elec_idle_q ; + + reg pipe_rx_polarity_q ; + reg pipe_tx_compliance_q ; + reg [ 1:0] pipe_tx_char_is_k_q ; + reg [15:0] pipe_tx_data_q ; + reg pipe_tx_elec_idle_q ; + reg [ 1:0] pipe_tx_powerdown_q ; + + always @(posedge pipe_clk) begin + + if (rst_n) + begin + + pipe_rx_char_is_k_q <= #TCQ 0; + pipe_rx_data_q <= #TCQ 0; + pipe_rx_valid_q <= #TCQ 0; + pipe_rx_chanisaligned_q <= #TCQ 0; + pipe_rx_status_q <= #TCQ 0; + pipe_rx_phy_status_q <= #TCQ 0; + pipe_rx_elec_idle_q <= #TCQ 0; + + pipe_rx_polarity_q <= #TCQ 0; + pipe_tx_compliance_q <= #TCQ 0; + pipe_tx_char_is_k_q <= #TCQ 0; + pipe_tx_data_q <= #TCQ 0; + pipe_tx_elec_idle_q <= #TCQ 1'b1; + pipe_tx_powerdown_q <= #TCQ 2'b10; + + end + else + begin + + pipe_rx_char_is_k_q <= #TCQ pipe_rx_char_is_k_i; + pipe_rx_data_q <= #TCQ pipe_rx_data_i; + pipe_rx_valid_q <= #TCQ pipe_rx_valid_i; + pipe_rx_chanisaligned_q <= #TCQ pipe_rx_chanisaligned_i; + pipe_rx_status_q <= #TCQ pipe_rx_status_i; + pipe_rx_phy_status_q <= #TCQ pipe_rx_phy_status_i; + pipe_rx_elec_idle_q <= #TCQ pipe_rx_elec_idle_i; + + pipe_rx_polarity_q <= #TCQ pipe_rx_polarity_i; + pipe_tx_compliance_q <= #TCQ pipe_tx_compliance_i; + pipe_tx_char_is_k_q <= #TCQ pipe_tx_char_is_k_i; + pipe_tx_data_q <= #TCQ pipe_tx_data_i; + pipe_tx_elec_idle_q <= #TCQ pipe_tx_elec_idle_i; + pipe_tx_powerdown_q <= #TCQ pipe_tx_powerdown_i; + + end + + end + + assign pipe_rx_char_is_k_o = pipe_rx_char_is_k_q; + assign pipe_rx_data_o = pipe_rx_data_q; + assign pipe_rx_valid_o = pipe_rx_valid_q; + assign pipe_rx_chanisaligned_o = pipe_rx_chanisaligned_q; + assign pipe_rx_status_o = pipe_rx_status_q; + assign pipe_rx_phy_status_o = pipe_rx_phy_status_q; + assign pipe_rx_elec_idle_o = pipe_rx_elec_idle_q; + + assign pipe_rx_polarity_o = pipe_rx_polarity_q; + assign pipe_tx_compliance_o = pipe_tx_compliance_q; + assign pipe_tx_char_is_k_o = pipe_tx_char_is_k_q; + assign pipe_tx_data_o = pipe_tx_data_q; + assign pipe_tx_elec_idle_o = pipe_tx_elec_idle_q; + assign pipe_tx_powerdown_o = pipe_tx_powerdown_q; + + end // if (PIPE_PIPELINE_STAGES == 1) + else if (PIPE_PIPELINE_STAGES == 2) begin : pipe_stages_2 + + reg [ 1:0] pipe_rx_char_is_k_q ; + reg [15:0] pipe_rx_data_q ; + reg pipe_rx_valid_q ; + reg pipe_rx_chanisaligned_q ; + reg [ 2:0] pipe_rx_status_q ; + reg pipe_rx_phy_status_q ; + reg pipe_rx_elec_idle_q ; + + reg pipe_rx_polarity_q ; + reg pipe_tx_compliance_q ; + reg [ 1:0] pipe_tx_char_is_k_q ; + reg [15:0] pipe_tx_data_q ; + reg pipe_tx_elec_idle_q ; + reg [ 1:0] pipe_tx_powerdown_q ; + + reg [ 1:0] pipe_rx_char_is_k_qq ; + reg [15:0] pipe_rx_data_qq ; + reg pipe_rx_valid_qq ; + reg pipe_rx_chanisaligned_qq; + reg [ 2:0] pipe_rx_status_qq ; + reg pipe_rx_phy_status_qq ; + reg pipe_rx_elec_idle_qq ; + + reg pipe_rx_polarity_qq ; + reg pipe_tx_compliance_qq ; + reg [ 1:0] pipe_tx_char_is_k_qq ; + reg [15:0] pipe_tx_data_qq ; + reg pipe_tx_elec_idle_qq ; + reg [ 1:0] pipe_tx_powerdown_qq ; + + always @(posedge pipe_clk) begin + + if (rst_n) + begin + + pipe_rx_char_is_k_q <= #TCQ 0; + pipe_rx_data_q <= #TCQ 0; + pipe_rx_valid_q <= #TCQ 0; + pipe_rx_chanisaligned_q <= #TCQ 0; + pipe_rx_status_q <= #TCQ 0; + pipe_rx_phy_status_q <= #TCQ 0; + pipe_rx_elec_idle_q <= #TCQ 0; + + pipe_rx_polarity_q <= #TCQ 0; + pipe_tx_compliance_q <= #TCQ 0; + pipe_tx_char_is_k_q <= #TCQ 0; + pipe_tx_data_q <= #TCQ 0; + pipe_tx_elec_idle_q <= #TCQ 1'b1; + pipe_tx_powerdown_q <= #TCQ 2'b10; + + pipe_rx_char_is_k_qq <= #TCQ 0; + pipe_rx_data_qq <= #TCQ 0; + pipe_rx_valid_qq <= #TCQ 0; + pipe_rx_chanisaligned_qq <= #TCQ 0; + pipe_rx_status_qq <= #TCQ 0; + pipe_rx_phy_status_qq <= #TCQ 0; + pipe_rx_elec_idle_qq <= #TCQ 0; + + pipe_rx_polarity_qq <= #TCQ 0; + pipe_tx_compliance_qq <= #TCQ 0; + pipe_tx_char_is_k_qq <= #TCQ 0; + pipe_tx_data_qq <= #TCQ 0; + pipe_tx_elec_idle_qq <= #TCQ 1'b1; + pipe_tx_powerdown_qq <= #TCQ 2'b10; + + end + else + begin + + pipe_rx_char_is_k_q <= #TCQ pipe_rx_char_is_k_i; + pipe_rx_data_q <= #TCQ pipe_rx_data_i; + pipe_rx_valid_q <= #TCQ pipe_rx_valid_i; + pipe_rx_chanisaligned_q <= #TCQ pipe_rx_chanisaligned_i; + pipe_rx_status_q <= #TCQ pipe_rx_status_i; + pipe_rx_phy_status_q <= #TCQ pipe_rx_phy_status_i; + pipe_rx_elec_idle_q <= #TCQ pipe_rx_elec_idle_i; + + pipe_rx_polarity_q <= #TCQ pipe_rx_polarity_i; + pipe_tx_compliance_q <= #TCQ pipe_tx_compliance_i; + pipe_tx_char_is_k_q <= #TCQ pipe_tx_char_is_k_i; + pipe_tx_data_q <= #TCQ pipe_tx_data_i; + pipe_tx_elec_idle_q <= #TCQ pipe_tx_elec_idle_i; + pipe_tx_powerdown_q <= #TCQ pipe_tx_powerdown_i; + + pipe_rx_char_is_k_qq <= #TCQ pipe_rx_char_is_k_q; + pipe_rx_data_qq <= #TCQ pipe_rx_data_q; + pipe_rx_valid_qq <= #TCQ pipe_rx_valid_q; + pipe_rx_chanisaligned_qq <= #TCQ pipe_rx_chanisaligned_q; + pipe_rx_status_qq <= #TCQ pipe_rx_status_q; + pipe_rx_phy_status_qq <= #TCQ pipe_rx_phy_status_q; + pipe_rx_elec_idle_qq <= #TCQ pipe_rx_elec_idle_q; + + pipe_rx_polarity_qq <= #TCQ pipe_rx_polarity_q; + pipe_tx_compliance_qq <= #TCQ pipe_tx_compliance_q; + pipe_tx_char_is_k_qq <= #TCQ pipe_tx_char_is_k_q; + pipe_tx_data_qq <= #TCQ pipe_tx_data_q; + pipe_tx_elec_idle_qq <= #TCQ pipe_tx_elec_idle_q; + pipe_tx_powerdown_qq <= #TCQ pipe_tx_powerdown_q; + + end + + end + + assign pipe_rx_char_is_k_o = pipe_rx_char_is_k_qq; + assign pipe_rx_data_o = pipe_rx_data_qq; + assign pipe_rx_valid_o = pipe_rx_valid_qq; + assign pipe_rx_chanisaligned_o = pipe_rx_chanisaligned_qq; + assign pipe_rx_status_o = pipe_rx_status_qq; + assign pipe_rx_phy_status_o = pipe_rx_phy_status_qq; + assign pipe_rx_elec_idle_o = pipe_rx_elec_idle_qq; + + assign pipe_rx_polarity_o = pipe_rx_polarity_qq; + assign pipe_tx_compliance_o = pipe_tx_compliance_qq; + assign pipe_tx_char_is_k_o = pipe_tx_char_is_k_qq; + assign pipe_tx_data_o = pipe_tx_data_qq; + assign pipe_tx_elec_idle_o = pipe_tx_elec_idle_qq; + assign pipe_tx_powerdown_o = pipe_tx_powerdown_qq; + + end // if (PIPE_PIPELINE_STAGES == 2) + + endgenerate + +endmodule + diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_pipe_misc.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_pipe_misc.v new file mode 100644 index 0000000..e48a1f0 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_pipe_misc.v @@ -0,0 +1,219 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_pcie_pipe_misc.v +// Version : 3.3 +// +// Description: Misc PIPE module for 7-Series PCIe Block +// +// +// +//-------------------------------------------------------------------------------- + +`timescale 1ps/1ps + +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_pcie_pipe_misc # +( + parameter PIPE_PIPELINE_STAGES = 0, // 0 - 0 stages, 1 - 1 stage, 2 - 2 stages + parameter TCQ = 1 // synthesis warning solved: parameter declaration becomes local +) +( + + input wire pipe_tx_rcvr_det_i , // PIPE Tx Receiver Detect + input wire pipe_tx_reset_i , // PIPE Tx Reset + input wire pipe_tx_rate_i , // PIPE Tx Rate + input wire pipe_tx_deemph_i , // PIPE Tx Deemphasis + input wire [2:0] pipe_tx_margin_i , // PIPE Tx Margin + input wire pipe_tx_swing_i , // PIPE Tx Swing + + output wire pipe_tx_rcvr_det_o , // Pipelined PIPE Tx Receiver Detect + output wire pipe_tx_reset_o , // Pipelined PIPE Tx Reset + output wire pipe_tx_rate_o , // Pipelined PIPE Tx Rate + output wire pipe_tx_deemph_o , // Pipelined PIPE Tx Deemphasis + output wire [2:0] pipe_tx_margin_o , // Pipelined PIPE Tx Margin + output wire pipe_tx_swing_o , // Pipelined PIPE Tx Swing + + input wire pipe_clk , // PIPE Clock + input wire rst_n // Reset +); + +//******************************************************************// +// Reality check. // +//******************************************************************// + +// parameter TCQ = 1; // clock to out delay model + + generate + + if (PIPE_PIPELINE_STAGES == 0) begin : pipe_stages_0 + + assign pipe_tx_rcvr_det_o = pipe_tx_rcvr_det_i; + assign pipe_tx_reset_o = pipe_tx_reset_i; + assign pipe_tx_rate_o = pipe_tx_rate_i; + assign pipe_tx_deemph_o = pipe_tx_deemph_i; + assign pipe_tx_margin_o = pipe_tx_margin_i; + assign pipe_tx_swing_o = pipe_tx_swing_i; + + end // if (PIPE_PIPELINE_STAGES == 0) + else if (PIPE_PIPELINE_STAGES == 1) begin : pipe_stages_1 + + reg pipe_tx_rcvr_det_q ; + reg pipe_tx_reset_q ; + reg pipe_tx_rate_q ; + reg pipe_tx_deemph_q ; + reg [2:0] pipe_tx_margin_q ; + reg pipe_tx_swing_q ; + + always @(posedge pipe_clk) begin + + if (rst_n) + begin + + pipe_tx_rcvr_det_q <= #TCQ 0; + pipe_tx_reset_q <= #TCQ 1'b1; + pipe_tx_rate_q <= #TCQ 0; + pipe_tx_deemph_q <= #TCQ 1'b1; + pipe_tx_margin_q <= #TCQ 0; + pipe_tx_swing_q <= #TCQ 0; + + end + else + begin + + pipe_tx_rcvr_det_q <= #TCQ pipe_tx_rcvr_det_i; + pipe_tx_reset_q <= #TCQ pipe_tx_reset_i; + pipe_tx_rate_q <= #TCQ pipe_tx_rate_i; + pipe_tx_deemph_q <= #TCQ pipe_tx_deemph_i; + pipe_tx_margin_q <= #TCQ pipe_tx_margin_i; + pipe_tx_swing_q <= #TCQ pipe_tx_swing_i; + + end + + end + + assign pipe_tx_rcvr_det_o = pipe_tx_rcvr_det_q; + assign pipe_tx_reset_o = pipe_tx_reset_q; + assign pipe_tx_rate_o = pipe_tx_rate_q; + assign pipe_tx_deemph_o = pipe_tx_deemph_q; + assign pipe_tx_margin_o = pipe_tx_margin_q; + assign pipe_tx_swing_o = pipe_tx_swing_q; + + end // if (PIPE_PIPELINE_STAGES == 1) + else if (PIPE_PIPELINE_STAGES == 2) begin : pipe_stages_2 + + reg pipe_tx_rcvr_det_q ; + reg pipe_tx_reset_q ; + reg pipe_tx_rate_q ; + reg pipe_tx_deemph_q ; + reg [2:0] pipe_tx_margin_q ; + reg pipe_tx_swing_q ; + + reg pipe_tx_rcvr_det_qq ; + reg pipe_tx_reset_qq ; + reg pipe_tx_rate_qq ; + reg pipe_tx_deemph_qq ; + reg [2:0] pipe_tx_margin_qq ; + reg pipe_tx_swing_qq ; + + always @(posedge pipe_clk) begin + + if (rst_n) + begin + + pipe_tx_rcvr_det_q <= #TCQ 0; + pipe_tx_reset_q <= #TCQ 1'b1; + pipe_tx_rate_q <= #TCQ 0; + pipe_tx_deemph_q <= #TCQ 1'b1; + pipe_tx_margin_q <= #TCQ 0; + pipe_tx_swing_q <= #TCQ 0; + + pipe_tx_rcvr_det_qq <= #TCQ 0; + pipe_tx_reset_qq <= #TCQ 1'b1; + pipe_tx_rate_qq <= #TCQ 0; + pipe_tx_deemph_qq <= #TCQ 1'b1; + pipe_tx_margin_qq <= #TCQ 0; + pipe_tx_swing_qq <= #TCQ 0; + + end + else + begin + + pipe_tx_rcvr_det_q <= #TCQ pipe_tx_rcvr_det_i; + pipe_tx_reset_q <= #TCQ pipe_tx_reset_i; + pipe_tx_rate_q <= #TCQ pipe_tx_rate_i; + pipe_tx_deemph_q <= #TCQ pipe_tx_deemph_i; + pipe_tx_margin_q <= #TCQ pipe_tx_margin_i; + pipe_tx_swing_q <= #TCQ pipe_tx_swing_i; + + pipe_tx_rcvr_det_qq <= #TCQ pipe_tx_rcvr_det_q; + pipe_tx_reset_qq <= #TCQ pipe_tx_reset_q; + pipe_tx_rate_qq <= #TCQ pipe_tx_rate_q; + pipe_tx_deemph_qq <= #TCQ pipe_tx_deemph_q; + pipe_tx_margin_qq <= #TCQ pipe_tx_margin_q; + pipe_tx_swing_qq <= #TCQ pipe_tx_swing_q; + + end + + end + + assign pipe_tx_rcvr_det_o = pipe_tx_rcvr_det_qq; + assign pipe_tx_reset_o = pipe_tx_reset_qq; + assign pipe_tx_rate_o = pipe_tx_rate_qq; + assign pipe_tx_deemph_o = pipe_tx_deemph_qq; + assign pipe_tx_margin_o = pipe_tx_margin_qq; + assign pipe_tx_swing_o = pipe_tx_swing_qq; + + end // if (PIPE_PIPELINE_STAGES == 2) + + endgenerate + +endmodule + diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_pipe_pipeline.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_pipe_pipeline.v new file mode 100644 index 0000000..2629455 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_pipe_pipeline.v @@ -0,0 +1,798 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_pcie_pipe_pipeline.v +// Version : 3.3 +// +// Description: PIPE module for Virtex7 PCIe Block +// +// +// +//-------------------------------------------------------------------------------- + +`timescale 1ps/1ps + +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_pcie_pipe_pipeline # +( + parameter LINK_CAP_MAX_LINK_WIDTH = 8, + parameter PIPE_PIPELINE_STAGES = 0 // 0 - 0 stages, 1 - 1 stage, 2 - 2 stages +) +( + // Pipe Per-Link Signals + input wire pipe_tx_rcvr_det_i , + input wire pipe_tx_reset_i , + input wire pipe_tx_rate_i , + input wire pipe_tx_deemph_i , + input wire [2:0] pipe_tx_margin_i , + input wire pipe_tx_swing_i , + + output wire pipe_tx_rcvr_det_o , + output wire pipe_tx_reset_o , + output wire pipe_tx_rate_o , + output wire pipe_tx_deemph_o , + output wire [2:0] pipe_tx_margin_o , + output wire pipe_tx_swing_o , + + // Pipe Per-Lane Signals - Lane 0 + output wire [ 1:0] pipe_rx0_char_is_k_o , + output wire [15:0] pipe_rx0_data_o , + output wire pipe_rx0_valid_o , + output wire pipe_rx0_chanisaligned_o , + output wire [ 2:0] pipe_rx0_status_o , + output wire pipe_rx0_phy_status_o , + output wire pipe_rx0_elec_idle_o , + input wire pipe_rx0_polarity_i , + input wire pipe_tx0_compliance_i , + input wire [ 1:0] pipe_tx0_char_is_k_i , + input wire [15:0] pipe_tx0_data_i , + input wire pipe_tx0_elec_idle_i , + input wire [ 1:0] pipe_tx0_powerdown_i , + + input wire [ 1:0] pipe_rx0_char_is_k_i , + input wire [15:0] pipe_rx0_data_i , + input wire pipe_rx0_valid_i , + input wire pipe_rx0_chanisaligned_i , + input wire [ 2:0] pipe_rx0_status_i , + input wire pipe_rx0_phy_status_i , + input wire pipe_rx0_elec_idle_i , + output wire pipe_rx0_polarity_o , + output wire pipe_tx0_compliance_o , + output wire [ 1:0] pipe_tx0_char_is_k_o , + output wire [15:0] pipe_tx0_data_o , + output wire pipe_tx0_elec_idle_o , + output wire [ 1:0] pipe_tx0_powerdown_o , + + // Pipe Per-Lane Signals - Lane 1 + output wire [ 1:0] pipe_rx1_char_is_k_o , + output wire [15:0] pipe_rx1_data_o , + output wire pipe_rx1_valid_o , + output wire pipe_rx1_chanisaligned_o , + output wire [ 2:0] pipe_rx1_status_o , + output wire pipe_rx1_phy_status_o , + output wire pipe_rx1_elec_idle_o , + input wire pipe_rx1_polarity_i , + input wire pipe_tx1_compliance_i , + input wire [ 1:0] pipe_tx1_char_is_k_i , + input wire [15:0] pipe_tx1_data_i , + input wire pipe_tx1_elec_idle_i , + input wire [ 1:0] pipe_tx1_powerdown_i , + + input wire [ 1:0] pipe_rx1_char_is_k_i , + input wire [15:0] pipe_rx1_data_i , + input wire pipe_rx1_valid_i , + input wire pipe_rx1_chanisaligned_i , + input wire [ 2:0] pipe_rx1_status_i , + input wire pipe_rx1_phy_status_i , + input wire pipe_rx1_elec_idle_i , + output wire pipe_rx1_polarity_o , + output wire pipe_tx1_compliance_o , + output wire [ 1:0] pipe_tx1_char_is_k_o , + output wire [15:0] pipe_tx1_data_o , + output wire pipe_tx1_elec_idle_o , + output wire [ 1:0] pipe_tx1_powerdown_o , + + // Pipe Per-Lane Signals - Lane 2 + output wire [ 1:0] pipe_rx2_char_is_k_o , + output wire [15:0] pipe_rx2_data_o , + output wire pipe_rx2_valid_o , + output wire pipe_rx2_chanisaligned_o , + output wire [ 2:0] pipe_rx2_status_o , + output wire pipe_rx2_phy_status_o , + output wire pipe_rx2_elec_idle_o , + input wire pipe_rx2_polarity_i , + input wire pipe_tx2_compliance_i , + input wire [ 1:0] pipe_tx2_char_is_k_i , + input wire [15:0] pipe_tx2_data_i , + input wire pipe_tx2_elec_idle_i , + input wire [ 1:0] pipe_tx2_powerdown_i , + + input wire [ 1:0] pipe_rx2_char_is_k_i , + input wire [15:0] pipe_rx2_data_i , + input wire pipe_rx2_valid_i , + input wire pipe_rx2_chanisaligned_i , + input wire [ 2:0] pipe_rx2_status_i , + input wire pipe_rx2_phy_status_i , + input wire pipe_rx2_elec_idle_i , + output wire pipe_rx2_polarity_o , + output wire pipe_tx2_compliance_o , + output wire [ 1:0] pipe_tx2_char_is_k_o , + output wire [15:0] pipe_tx2_data_o , + output wire pipe_tx2_elec_idle_o , + output wire [ 1:0] pipe_tx2_powerdown_o , + + // Pipe Per-Lane Signals - Lane 3 + output wire [ 1:0] pipe_rx3_char_is_k_o , + output wire [15:0] pipe_rx3_data_o , + output wire pipe_rx3_valid_o , + output wire pipe_rx3_chanisaligned_o , + output wire [ 2:0] pipe_rx3_status_o , + output wire pipe_rx3_phy_status_o , + output wire pipe_rx3_elec_idle_o , + input wire pipe_rx3_polarity_i , + input wire pipe_tx3_compliance_i , + input wire [ 1:0] pipe_tx3_char_is_k_i , + input wire [15:0] pipe_tx3_data_i , + input wire pipe_tx3_elec_idle_i , + input wire [ 1:0] pipe_tx3_powerdown_i , + + input wire [ 1:0] pipe_rx3_char_is_k_i , + input wire [15:0] pipe_rx3_data_i , + input wire pipe_rx3_valid_i , + input wire pipe_rx3_chanisaligned_i , + input wire [ 2:0] pipe_rx3_status_i , + input wire pipe_rx3_phy_status_i , + input wire pipe_rx3_elec_idle_i , + output wire pipe_rx3_polarity_o , + output wire pipe_tx3_compliance_o , + output wire [ 1:0] pipe_tx3_char_is_k_o , + output wire [15:0] pipe_tx3_data_o , + output wire pipe_tx3_elec_idle_o , + output wire [ 1:0] pipe_tx3_powerdown_o , + + // Pipe Per-Lane Signals - Lane 4 + output wire [ 1:0] pipe_rx4_char_is_k_o , + output wire [15:0] pipe_rx4_data_o , + output wire pipe_rx4_valid_o , + output wire pipe_rx4_chanisaligned_o , + output wire [ 2:0] pipe_rx4_status_o , + output wire pipe_rx4_phy_status_o , + output wire pipe_rx4_elec_idle_o , + input wire pipe_rx4_polarity_i , + input wire pipe_tx4_compliance_i , + input wire [ 1:0] pipe_tx4_char_is_k_i , + input wire [15:0] pipe_tx4_data_i , + input wire pipe_tx4_elec_idle_i , + input wire [ 1:0] pipe_tx4_powerdown_i , + + input wire [ 1:0] pipe_rx4_char_is_k_i , + input wire [15:0] pipe_rx4_data_i , + input wire pipe_rx4_valid_i , + input wire pipe_rx4_chanisaligned_i , + input wire [ 2:0] pipe_rx4_status_i , + input wire pipe_rx4_phy_status_i , + input wire pipe_rx4_elec_idle_i , + output wire pipe_rx4_polarity_o , + output wire pipe_tx4_compliance_o , + output wire [ 1:0] pipe_tx4_char_is_k_o , + output wire [15:0] pipe_tx4_data_o , + output wire pipe_tx4_elec_idle_o , + output wire [ 1:0] pipe_tx4_powerdown_o , + + // Pipe Per-Lane Signals - Lane 5 + output wire [ 1:0] pipe_rx5_char_is_k_o , + output wire [15:0] pipe_rx5_data_o , + output wire pipe_rx5_valid_o , + output wire pipe_rx5_chanisaligned_o , + output wire [ 2:0] pipe_rx5_status_o , + output wire pipe_rx5_phy_status_o , + output wire pipe_rx5_elec_idle_o , + input wire pipe_rx5_polarity_i , + input wire pipe_tx5_compliance_i , + input wire [ 1:0] pipe_tx5_char_is_k_i , + input wire [15:0] pipe_tx5_data_i , + input wire pipe_tx5_elec_idle_i , + input wire [ 1:0] pipe_tx5_powerdown_i , + + input wire [ 1:0] pipe_rx5_char_is_k_i , + input wire [15:0] pipe_rx5_data_i , + input wire pipe_rx5_valid_i , + input wire pipe_rx5_chanisaligned_i , + input wire [ 2:0] pipe_rx5_status_i , + input wire pipe_rx5_phy_status_i , + input wire pipe_rx5_elec_idle_i , + output wire pipe_rx5_polarity_o , + output wire pipe_tx5_compliance_o , + output wire [ 1:0] pipe_tx5_char_is_k_o , + output wire [15:0] pipe_tx5_data_o , + output wire pipe_tx5_elec_idle_o , + output wire [ 1:0] pipe_tx5_powerdown_o , + + // Pipe Per-Lane Signals - Lane 6 + output wire [ 1:0] pipe_rx6_char_is_k_o , + output wire [15:0] pipe_rx6_data_o , + output wire pipe_rx6_valid_o , + output wire pipe_rx6_chanisaligned_o , + output wire [ 2:0] pipe_rx6_status_o , + output wire pipe_rx6_phy_status_o , + output wire pipe_rx6_elec_idle_o , + input wire pipe_rx6_polarity_i , + input wire pipe_tx6_compliance_i , + input wire [ 1:0] pipe_tx6_char_is_k_i , + input wire [15:0] pipe_tx6_data_i , + input wire pipe_tx6_elec_idle_i , + input wire [ 1:0] pipe_tx6_powerdown_i , + + input wire [ 1:0] pipe_rx6_char_is_k_i , + input wire [15:0] pipe_rx6_data_i , + input wire pipe_rx6_valid_i , + input wire pipe_rx6_chanisaligned_i , + input wire [ 2:0] pipe_rx6_status_i , + input wire pipe_rx6_phy_status_i , + input wire pipe_rx6_elec_idle_i , + output wire pipe_rx6_polarity_o , + output wire pipe_tx6_compliance_o , + output wire [ 1:0] pipe_tx6_char_is_k_o , + output wire [15:0] pipe_tx6_data_o , + output wire pipe_tx6_elec_idle_o , + output wire [ 1:0] pipe_tx6_powerdown_o , + + // Pipe Per-Lane Signals - Lane 7 + output wire [ 1:0] pipe_rx7_char_is_k_o , + output wire [15:0] pipe_rx7_data_o , + output wire pipe_rx7_valid_o , + output wire pipe_rx7_chanisaligned_o , + output wire [ 2:0] pipe_rx7_status_o , + output wire pipe_rx7_phy_status_o , + output wire pipe_rx7_elec_idle_o , + input wire pipe_rx7_polarity_i , + input wire pipe_tx7_compliance_i , + input wire [ 1:0] pipe_tx7_char_is_k_i , + input wire [15:0] pipe_tx7_data_i , + input wire pipe_tx7_elec_idle_i , + input wire [ 1:0] pipe_tx7_powerdown_i , + + input wire [ 1:0] pipe_rx7_char_is_k_i , + input wire [15:0] pipe_rx7_data_i , + input wire pipe_rx7_valid_i , + input wire pipe_rx7_chanisaligned_i , + input wire [ 2:0] pipe_rx7_status_i , + input wire pipe_rx7_phy_status_i , + input wire pipe_rx7_elec_idle_i , + output wire pipe_rx7_polarity_o , + output wire pipe_tx7_compliance_o , + output wire [ 1:0] pipe_tx7_char_is_k_o , + output wire [15:0] pipe_tx7_data_o , + output wire pipe_tx7_elec_idle_o , + output wire [ 1:0] pipe_tx7_powerdown_o , + + // Non PIPE signals + input wire pipe_clk , + input wire rst_n +); + + //******************************************************************// + // Reality check. // + //******************************************************************// + + //synthesis translate_off + // initial begin + // $display("[%t] %m LINK_CAP_MAX_LINK_WIDTH %0d PIPE_PIPELINE_STAGES %0d", + // $time, LINK_CAP_MAX_LINK_WIDTH, PIPE_PIPELINE_STAGES); + // end + //synthesis translate_on + + generate + +pcie_7x_0_pcie_pipe_misc # ( + + .PIPE_PIPELINE_STAGES(PIPE_PIPELINE_STAGES) + + ) + pipe_misc_i ( + + .pipe_tx_rcvr_det_i(pipe_tx_rcvr_det_i), + .pipe_tx_reset_i(pipe_tx_reset_i), + .pipe_tx_rate_i(pipe_tx_rate_i), + .pipe_tx_deemph_i(pipe_tx_deemph_i), + .pipe_tx_margin_i(pipe_tx_margin_i), + .pipe_tx_swing_i(pipe_tx_swing_i), + + .pipe_tx_rcvr_det_o(pipe_tx_rcvr_det_o), + .pipe_tx_reset_o(pipe_tx_reset_o), + .pipe_tx_rate_o(pipe_tx_rate_o), + .pipe_tx_deemph_o(pipe_tx_deemph_o), + .pipe_tx_margin_o(pipe_tx_margin_o), + .pipe_tx_swing_o(pipe_tx_swing_o) , + + .pipe_clk(pipe_clk), + .rst_n(rst_n) + ); + + +pcie_7x_0_pcie_pipe_lane # ( + + .PIPE_PIPELINE_STAGES(PIPE_PIPELINE_STAGES) + + ) + pipe_lane_0_i ( + + .pipe_rx_char_is_k_o(pipe_rx0_char_is_k_o), + .pipe_rx_data_o(pipe_rx0_data_o), + .pipe_rx_valid_o(pipe_rx0_valid_o), + .pipe_rx_chanisaligned_o(pipe_rx0_chanisaligned_o), + .pipe_rx_status_o(pipe_rx0_status_o), + .pipe_rx_phy_status_o(pipe_rx0_phy_status_o), + .pipe_rx_elec_idle_o(pipe_rx0_elec_idle_o), + .pipe_rx_polarity_i(pipe_rx0_polarity_i), + .pipe_tx_compliance_i(pipe_tx0_compliance_i), + .pipe_tx_char_is_k_i(pipe_tx0_char_is_k_i), + .pipe_tx_data_i(pipe_tx0_data_i), + .pipe_tx_elec_idle_i(pipe_tx0_elec_idle_i), + .pipe_tx_powerdown_i(pipe_tx0_powerdown_i), + + .pipe_rx_char_is_k_i(pipe_rx0_char_is_k_i), + .pipe_rx_data_i(pipe_rx0_data_i), + .pipe_rx_valid_i(pipe_rx0_valid_i), + .pipe_rx_chanisaligned_i(pipe_rx0_chanisaligned_i), + .pipe_rx_status_i(pipe_rx0_status_i), + .pipe_rx_phy_status_i(pipe_rx0_phy_status_i), + .pipe_rx_elec_idle_i(pipe_rx0_elec_idle_i), + .pipe_rx_polarity_o(pipe_rx0_polarity_o), + .pipe_tx_compliance_o(pipe_tx0_compliance_o), + .pipe_tx_char_is_k_o(pipe_tx0_char_is_k_o), + .pipe_tx_data_o(pipe_tx0_data_o), + .pipe_tx_elec_idle_o(pipe_tx0_elec_idle_o), + .pipe_tx_powerdown_o(pipe_tx0_powerdown_o), + + .pipe_clk(pipe_clk), + .rst_n(rst_n) + + ); + + if (LINK_CAP_MAX_LINK_WIDTH >= 2) begin : pipe_2_lane + +pcie_7x_0_pcie_pipe_lane # ( + + .PIPE_PIPELINE_STAGES(PIPE_PIPELINE_STAGES) + + ) + pipe_lane_1_i ( + + .pipe_rx_char_is_k_o(pipe_rx1_char_is_k_o), + .pipe_rx_data_o(pipe_rx1_data_o), + .pipe_rx_valid_o(pipe_rx1_valid_o), + .pipe_rx_chanisaligned_o(pipe_rx1_chanisaligned_o), + .pipe_rx_status_o(pipe_rx1_status_o), + .pipe_rx_phy_status_o(pipe_rx1_phy_status_o), + .pipe_rx_elec_idle_o(pipe_rx1_elec_idle_o), + .pipe_rx_polarity_i(pipe_rx1_polarity_i), + .pipe_tx_compliance_i(pipe_tx1_compliance_i), + .pipe_tx_char_is_k_i(pipe_tx1_char_is_k_i), + .pipe_tx_data_i(pipe_tx1_data_i), + .pipe_tx_elec_idle_i(pipe_tx1_elec_idle_i), + .pipe_tx_powerdown_i(pipe_tx1_powerdown_i), + + .pipe_rx_char_is_k_i(pipe_rx1_char_is_k_i), + .pipe_rx_data_i(pipe_rx1_data_i), + .pipe_rx_valid_i(pipe_rx1_valid_i), + .pipe_rx_chanisaligned_i(pipe_rx1_chanisaligned_i), + .pipe_rx_status_i(pipe_rx1_status_i), + .pipe_rx_phy_status_i(pipe_rx1_phy_status_i), + .pipe_rx_elec_idle_i(pipe_rx1_elec_idle_i), + .pipe_rx_polarity_o(pipe_rx1_polarity_o), + .pipe_tx_compliance_o(pipe_tx1_compliance_o), + .pipe_tx_char_is_k_o(pipe_tx1_char_is_k_o), + .pipe_tx_data_o(pipe_tx1_data_o), + .pipe_tx_elec_idle_o(pipe_tx1_elec_idle_o), + .pipe_tx_powerdown_o(pipe_tx1_powerdown_o), + + .pipe_clk(pipe_clk), + .rst_n(rst_n) + + ); + + end // if (LINK_CAP_MAX_LINK_WIDTH >= 2) + else + begin + assign pipe_rx1_char_is_k_o = 2'b00; + assign pipe_rx1_data_o = 16'h0000; + assign pipe_rx1_valid_o = 1'b0; + assign pipe_rx1_chanisaligned_o = 1'b0; + assign pipe_rx1_status_o = 3'b000; + assign pipe_rx1_phy_status_o = 1'b0; + assign pipe_rx1_elec_idle_o = 1'b1; + assign pipe_rx1_polarity_o = 1'b0; + assign pipe_tx1_compliance_o = 1'b0; + assign pipe_tx1_char_is_k_o = 2'b00; + assign pipe_tx1_data_o = 16'h0000; + assign pipe_tx1_elec_idle_o = 1'b1; + assign pipe_tx1_powerdown_o = 2'b00; + end // if !(LINK_CAP_MAX_LINK_WIDTH >= 2) + + if (LINK_CAP_MAX_LINK_WIDTH >= 4) begin : pipe_4_lane + +pcie_7x_0_pcie_pipe_lane # ( + + .PIPE_PIPELINE_STAGES(PIPE_PIPELINE_STAGES) + ) + pipe_lane_2_i ( + + .pipe_rx_char_is_k_o(pipe_rx2_char_is_k_o), + .pipe_rx_data_o(pipe_rx2_data_o), + .pipe_rx_valid_o(pipe_rx2_valid_o), + .pipe_rx_chanisaligned_o(pipe_rx2_chanisaligned_o), + .pipe_rx_status_o(pipe_rx2_status_o), + .pipe_rx_phy_status_o(pipe_rx2_phy_status_o), + .pipe_rx_elec_idle_o(pipe_rx2_elec_idle_o), + .pipe_rx_polarity_i(pipe_rx2_polarity_i), + .pipe_tx_compliance_i(pipe_tx2_compliance_i), + .pipe_tx_char_is_k_i(pipe_tx2_char_is_k_i), + .pipe_tx_data_i(pipe_tx2_data_i), + .pipe_tx_elec_idle_i(pipe_tx2_elec_idle_i), + .pipe_tx_powerdown_i(pipe_tx2_powerdown_i), + + .pipe_rx_char_is_k_i(pipe_rx2_char_is_k_i), + .pipe_rx_data_i(pipe_rx2_data_i), + .pipe_rx_valid_i(pipe_rx2_valid_i), + .pipe_rx_chanisaligned_i(pipe_rx2_chanisaligned_i), + .pipe_rx_status_i(pipe_rx2_status_i), + .pipe_rx_phy_status_i(pipe_rx2_phy_status_i), + .pipe_rx_elec_idle_i(pipe_rx2_elec_idle_i), + .pipe_rx_polarity_o(pipe_rx2_polarity_o), + .pipe_tx_compliance_o(pipe_tx2_compliance_o), + .pipe_tx_char_is_k_o(pipe_tx2_char_is_k_o), + .pipe_tx_data_o(pipe_tx2_data_o), + .pipe_tx_elec_idle_o(pipe_tx2_elec_idle_o), + .pipe_tx_powerdown_o(pipe_tx2_powerdown_o), + + .pipe_clk(pipe_clk), + .rst_n(rst_n) + + ); + +pcie_7x_0_pcie_pipe_lane # ( + + .PIPE_PIPELINE_STAGES(PIPE_PIPELINE_STAGES) + + ) + pipe_lane_3_i ( + + .pipe_rx_char_is_k_o(pipe_rx3_char_is_k_o), + .pipe_rx_data_o(pipe_rx3_data_o), + .pipe_rx_valid_o(pipe_rx3_valid_o), + .pipe_rx_chanisaligned_o(pipe_rx3_chanisaligned_o), + .pipe_rx_status_o(pipe_rx3_status_o), + .pipe_rx_phy_status_o(pipe_rx3_phy_status_o), + .pipe_rx_elec_idle_o(pipe_rx3_elec_idle_o), + .pipe_rx_polarity_i(pipe_rx3_polarity_i), + .pipe_tx_compliance_i(pipe_tx3_compliance_i), + .pipe_tx_char_is_k_i(pipe_tx3_char_is_k_i), + .pipe_tx_data_i(pipe_tx3_data_i), + .pipe_tx_elec_idle_i(pipe_tx3_elec_idle_i), + .pipe_tx_powerdown_i(pipe_tx3_powerdown_i), + + .pipe_rx_char_is_k_i(pipe_rx3_char_is_k_i), + .pipe_rx_data_i(pipe_rx3_data_i), + .pipe_rx_valid_i(pipe_rx3_valid_i), + .pipe_rx_chanisaligned_i(pipe_rx3_chanisaligned_i), + .pipe_rx_status_i(pipe_rx3_status_i), + .pipe_rx_phy_status_i(pipe_rx3_phy_status_i), + .pipe_rx_elec_idle_i(pipe_rx3_elec_idle_i), + .pipe_rx_polarity_o(pipe_rx3_polarity_o), + .pipe_tx_compliance_o(pipe_tx3_compliance_o), + .pipe_tx_char_is_k_o(pipe_tx3_char_is_k_o), + .pipe_tx_data_o(pipe_tx3_data_o), + .pipe_tx_elec_idle_o(pipe_tx3_elec_idle_o), + .pipe_tx_powerdown_o(pipe_tx3_powerdown_o), + + .pipe_clk(pipe_clk), + .rst_n(rst_n) + + ); + + end // if (LINK_CAP_MAX_LINK_WIDTH >= 4) + else + begin + assign pipe_rx2_char_is_k_o = 2'b00; + assign pipe_rx2_data_o = 16'h0000; + assign pipe_rx2_valid_o = 1'b0; + assign pipe_rx2_chanisaligned_o = 1'b0; + assign pipe_rx2_status_o = 3'b000; + assign pipe_rx2_phy_status_o = 1'b0; + assign pipe_rx2_elec_idle_o = 1'b1; + assign pipe_rx2_polarity_o = 1'b0; + assign pipe_tx2_compliance_o = 1'b0; + assign pipe_tx2_char_is_k_o = 2'b00; + assign pipe_tx2_data_o = 16'h0000; + assign pipe_tx2_elec_idle_o = 1'b1; + assign pipe_tx2_powerdown_o = 2'b00; + + assign pipe_rx3_char_is_k_o = 2'b00; + assign pipe_rx3_data_o = 16'h0000; + assign pipe_rx3_valid_o = 1'b0; + assign pipe_rx3_chanisaligned_o = 1'b0; + assign pipe_rx3_status_o = 3'b000; + assign pipe_rx3_phy_status_o = 1'b0; + assign pipe_rx3_elec_idle_o = 1'b1; + assign pipe_rx3_polarity_o = 1'b0; + assign pipe_tx3_compliance_o = 1'b0; + assign pipe_tx3_char_is_k_o = 2'b00; + assign pipe_tx3_data_o = 16'h0000; + assign pipe_tx3_elec_idle_o = 1'b1; + assign pipe_tx3_powerdown_o = 2'b00; + end // if !(LINK_CAP_MAX_LINK_WIDTH >= 4) + + if (LINK_CAP_MAX_LINK_WIDTH >= 8) begin : pipe_8_lane + +pcie_7x_0_pcie_pipe_lane # ( + + .PIPE_PIPELINE_STAGES(PIPE_PIPELINE_STAGES) + + ) + pipe_lane_4_i ( + + .pipe_rx_char_is_k_o(pipe_rx4_char_is_k_o), + .pipe_rx_data_o(pipe_rx4_data_o), + .pipe_rx_valid_o(pipe_rx4_valid_o), + .pipe_rx_chanisaligned_o(pipe_rx4_chanisaligned_o), + .pipe_rx_status_o(pipe_rx4_status_o), + .pipe_rx_phy_status_o(pipe_rx4_phy_status_o), + .pipe_rx_elec_idle_o(pipe_rx4_elec_idle_o), + .pipe_rx_polarity_i(pipe_rx4_polarity_i), + .pipe_tx_compliance_i(pipe_tx4_compliance_i), + .pipe_tx_char_is_k_i(pipe_tx4_char_is_k_i), + .pipe_tx_data_i(pipe_tx4_data_i), + .pipe_tx_elec_idle_i(pipe_tx4_elec_idle_i), + .pipe_tx_powerdown_i(pipe_tx4_powerdown_i), + + .pipe_rx_char_is_k_i(pipe_rx4_char_is_k_i), + .pipe_rx_data_i(pipe_rx4_data_i), + .pipe_rx_valid_i(pipe_rx4_valid_i), + .pipe_rx_chanisaligned_i(pipe_rx4_chanisaligned_i), + .pipe_rx_status_i(pipe_rx4_status_i), + .pipe_rx_phy_status_i(pipe_rx4_phy_status_i), + .pipe_rx_elec_idle_i(pipe_rx4_elec_idle_i), + .pipe_rx_polarity_o(pipe_rx4_polarity_o), + .pipe_tx_compliance_o(pipe_tx4_compliance_o), + .pipe_tx_char_is_k_o(pipe_tx4_char_is_k_o), + .pipe_tx_data_o(pipe_tx4_data_o), + .pipe_tx_elec_idle_o(pipe_tx4_elec_idle_o), + .pipe_tx_powerdown_o(pipe_tx4_powerdown_o), + + .pipe_clk(pipe_clk), + .rst_n(rst_n) + + ); + +pcie_7x_0_pcie_pipe_lane # ( + + .PIPE_PIPELINE_STAGES(PIPE_PIPELINE_STAGES) + + ) + pipe_lane_5_i ( + + .pipe_rx_char_is_k_o(pipe_rx5_char_is_k_o), + .pipe_rx_data_o(pipe_rx5_data_o), + .pipe_rx_valid_o(pipe_rx5_valid_o), + .pipe_rx_chanisaligned_o(pipe_rx5_chanisaligned_o), + .pipe_rx_status_o(pipe_rx5_status_o), + .pipe_rx_phy_status_o(pipe_rx5_phy_status_o), + .pipe_rx_elec_idle_o(pipe_rx5_elec_idle_o), + .pipe_rx_polarity_i(pipe_rx5_polarity_i), + .pipe_tx_compliance_i(pipe_tx5_compliance_i), + .pipe_tx_char_is_k_i(pipe_tx5_char_is_k_i), + .pipe_tx_data_i(pipe_tx5_data_i), + .pipe_tx_elec_idle_i(pipe_tx5_elec_idle_i), + .pipe_tx_powerdown_i(pipe_tx5_powerdown_i), + + .pipe_rx_char_is_k_i(pipe_rx5_char_is_k_i), + .pipe_rx_data_i(pipe_rx5_data_i), + .pipe_rx_valid_i(pipe_rx5_valid_i), + .pipe_rx_chanisaligned_i(pipe_rx5_chanisaligned_i), + .pipe_rx_status_i(pipe_rx5_status_i), + .pipe_rx_phy_status_i(pipe_rx5_phy_status_i), + .pipe_rx_elec_idle_i(pipe_rx5_elec_idle_i), + .pipe_rx_polarity_o(pipe_rx5_polarity_o), + .pipe_tx_compliance_o(pipe_tx5_compliance_o), + .pipe_tx_char_is_k_o(pipe_tx5_char_is_k_o), + .pipe_tx_data_o(pipe_tx5_data_o), + .pipe_tx_elec_idle_o(pipe_tx5_elec_idle_o), + .pipe_tx_powerdown_o(pipe_tx5_powerdown_o), + + .pipe_clk(pipe_clk), + .rst_n(rst_n) + + ); + +pcie_7x_0_pcie_pipe_lane # ( + + .PIPE_PIPELINE_STAGES(PIPE_PIPELINE_STAGES) + + ) + pipe_lane_6_i ( + + .pipe_rx_char_is_k_o(pipe_rx6_char_is_k_o), + .pipe_rx_data_o(pipe_rx6_data_o), + .pipe_rx_valid_o(pipe_rx6_valid_o), + .pipe_rx_chanisaligned_o(pipe_rx6_chanisaligned_o), + .pipe_rx_status_o(pipe_rx6_status_o), + .pipe_rx_phy_status_o(pipe_rx6_phy_status_o), + .pipe_rx_elec_idle_o(pipe_rx6_elec_idle_o), + .pipe_rx_polarity_i(pipe_rx6_polarity_i), + .pipe_tx_compliance_i(pipe_tx6_compliance_i), + .pipe_tx_char_is_k_i(pipe_tx6_char_is_k_i), + .pipe_tx_data_i(pipe_tx6_data_i), + .pipe_tx_elec_idle_i(pipe_tx6_elec_idle_i), + .pipe_tx_powerdown_i(pipe_tx6_powerdown_i), + + .pipe_rx_char_is_k_i(pipe_rx6_char_is_k_i), + .pipe_rx_data_i(pipe_rx6_data_i), + .pipe_rx_valid_i(pipe_rx6_valid_i), + .pipe_rx_chanisaligned_i(pipe_rx6_chanisaligned_i), + .pipe_rx_status_i(pipe_rx6_status_i), + .pipe_rx_phy_status_i(pipe_rx6_phy_status_i), + .pipe_rx_elec_idle_i(pipe_rx6_elec_idle_i), + .pipe_rx_polarity_o(pipe_rx6_polarity_o), + .pipe_tx_compliance_o(pipe_tx6_compliance_o), + .pipe_tx_char_is_k_o(pipe_tx6_char_is_k_o), + .pipe_tx_data_o(pipe_tx6_data_o), + .pipe_tx_elec_idle_o(pipe_tx6_elec_idle_o), + .pipe_tx_powerdown_o(pipe_tx6_powerdown_o), + + .pipe_clk(pipe_clk), + .rst_n(rst_n) + + ); + +pcie_7x_0_pcie_pipe_lane # ( + + .PIPE_PIPELINE_STAGES(PIPE_PIPELINE_STAGES) + + ) + pipe_lane_7_i ( + + .pipe_rx_char_is_k_o(pipe_rx7_char_is_k_o), + .pipe_rx_data_o(pipe_rx7_data_o), + .pipe_rx_valid_o(pipe_rx7_valid_o), + .pipe_rx_chanisaligned_o(pipe_rx7_chanisaligned_o), + .pipe_rx_status_o(pipe_rx7_status_o), + .pipe_rx_phy_status_o(pipe_rx7_phy_status_o), + .pipe_rx_elec_idle_o(pipe_rx7_elec_idle_o), + .pipe_rx_polarity_i(pipe_rx7_polarity_i), + .pipe_tx_compliance_i(pipe_tx7_compliance_i), + .pipe_tx_char_is_k_i(pipe_tx7_char_is_k_i), + .pipe_tx_data_i(pipe_tx7_data_i), + .pipe_tx_elec_idle_i(pipe_tx7_elec_idle_i), + .pipe_tx_powerdown_i(pipe_tx7_powerdown_i), + + .pipe_rx_char_is_k_i(pipe_rx7_char_is_k_i), + .pipe_rx_data_i(pipe_rx7_data_i), + .pipe_rx_valid_i(pipe_rx7_valid_i), + .pipe_rx_chanisaligned_i(pipe_rx7_chanisaligned_i), + .pipe_rx_status_i(pipe_rx7_status_i), + .pipe_rx_phy_status_i(pipe_rx7_phy_status_i), + .pipe_rx_elec_idle_i(pipe_rx7_elec_idle_i), + .pipe_rx_polarity_o(pipe_rx7_polarity_o), + .pipe_tx_compliance_o(pipe_tx7_compliance_o), + .pipe_tx_char_is_k_o(pipe_tx7_char_is_k_o), + .pipe_tx_data_o(pipe_tx7_data_o), + .pipe_tx_elec_idle_o(pipe_tx7_elec_idle_o), + .pipe_tx_powerdown_o(pipe_tx7_powerdown_o), + + .pipe_clk(pipe_clk), + .rst_n(rst_n) + + ); + + end // if (LINK_CAP_MAX_LINK_WIDTH >= 8) + else + begin + assign pipe_rx4_char_is_k_o = 2'b00; + assign pipe_rx4_data_o = 16'h0000; + assign pipe_rx4_valid_o = 1'b0; + assign pipe_rx4_chanisaligned_o = 1'b0; + assign pipe_rx4_status_o = 3'b000; + assign pipe_rx4_phy_status_o = 1'b0; + assign pipe_rx4_elec_idle_o = 1'b1; + assign pipe_rx4_polarity_o = 1'b0; + assign pipe_tx4_compliance_o = 1'b0; + assign pipe_tx4_char_is_k_o = 2'b00; + assign pipe_tx4_data_o = 16'h0000; + assign pipe_tx4_elec_idle_o = 1'b1; + assign pipe_tx4_powerdown_o = 2'b00; + + assign pipe_rx5_char_is_k_o = 2'b00; + assign pipe_rx5_data_o = 16'h0000; + assign pipe_rx5_valid_o = 1'b0; + assign pipe_rx5_chanisaligned_o = 1'b0; + assign pipe_rx5_status_o = 3'b000; + assign pipe_rx5_phy_status_o = 1'b0; + assign pipe_rx5_elec_idle_o = 1'b1; + assign pipe_rx5_polarity_o = 1'b0; + assign pipe_tx5_compliance_o = 1'b0; + assign pipe_tx5_char_is_k_o = 2'b00; + assign pipe_tx5_data_o = 16'h0000; + assign pipe_tx5_elec_idle_o = 1'b1; + assign pipe_tx5_powerdown_o = 2'b00; + + assign pipe_rx6_char_is_k_o = 2'b00; + assign pipe_rx6_data_o = 16'h0000; + assign pipe_rx6_valid_o = 1'b0; + assign pipe_rx6_chanisaligned_o = 1'b0; + assign pipe_rx6_status_o = 3'b000; + assign pipe_rx6_phy_status_o = 1'b0; + assign pipe_rx6_elec_idle_o = 1'b1; + assign pipe_rx6_polarity_o = 1'b0; + assign pipe_tx6_compliance_o = 1'b0; + assign pipe_tx6_char_is_k_o = 2'b00; + assign pipe_tx6_data_o = 16'h0000; + assign pipe_tx6_elec_idle_o = 1'b1; + assign pipe_tx6_powerdown_o = 2'b00; + + assign pipe_rx7_char_is_k_o = 2'b00; + assign pipe_rx7_data_o = 16'h0000; + assign pipe_rx7_valid_o = 1'b0; + assign pipe_rx7_chanisaligned_o = 1'b0; + assign pipe_rx7_status_o = 3'b000; + assign pipe_rx7_phy_status_o = 1'b0; + assign pipe_rx7_elec_idle_o = 1'b1; + assign pipe_rx7_polarity_o = 1'b0; + assign pipe_tx7_compliance_o = 1'b0; + assign pipe_tx7_char_is_k_o = 2'b00; + assign pipe_tx7_data_o = 16'h0000; + assign pipe_tx7_elec_idle_o = 1'b1; + assign pipe_tx7_powerdown_o = 2'b00; + end // if !(LINK_CAP_MAX_LINK_WIDTH >= 8) + + endgenerate + +endmodule + diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_top.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_top.v new file mode 100644 index 0000000..d8f264b --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pcie_top.v @@ -0,0 +1,2080 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_pcie_top.v +// Version : 3.3 +// Description: Solution wrapper for Virtex7 Hard Block for PCI Express +// +// +// +//-------------------------------------------------------------------------------- + +`timescale 1ps/1ps + +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_pcie_top # ( + // PCIE_2_1 params + parameter PIPE_PIPELINE_STAGES = 0, // 0 - 0 stages, 1 - 1 stage, 2 - 2 stages + parameter [11:0] AER_BASE_PTR = 12'h140, + parameter AER_CAP_ECRC_CHECK_CAPABLE = "FALSE", + parameter DEV_CAP_ROLE_BASED_ERROR = "TRUE", + parameter LINK_CAP_SURPRISE_DOWN_ERROR_CAPABLE = "FALSE", + parameter AER_CAP_ECRC_GEN_CAPABLE = "FALSE", + parameter [15:0] AER_CAP_ID = 16'h0001, + parameter AER_CAP_MULTIHEADER = "FALSE", + parameter [11:0] AER_CAP_NEXTPTR = 12'h178, + parameter AER_CAP_ON = "FALSE", + parameter [23:0] AER_CAP_OPTIONAL_ERR_SUPPORT = 24'h000000, + parameter AER_CAP_PERMIT_ROOTERR_UPDATE = "TRUE", + parameter [3:0] AER_CAP_VERSION = 4'h1, + parameter ALLOW_X8_GEN2 = "FALSE", + parameter [31:0] BAR0 = 32'hFFFFFF00, + parameter [31:0] BAR1 = 32'hFFFF0000, + parameter [31:0] BAR2 = 32'hFFFF000C, + parameter [31:0] BAR3 = 32'hFFFFFFFF, + parameter [31:0] BAR4 = 32'h00000000, + parameter [31:0] BAR5 = 32'h00000000, + parameter C_DATA_WIDTH = 64, + parameter REM_WIDTH = (C_DATA_WIDTH == 128) ? 2 : 1, + parameter KEEP_WIDTH = C_DATA_WIDTH / 8, + parameter [7:0] CAPABILITIES_PTR = 8'h40, + parameter [31:0] CARDBUS_CIS_POINTER = 32'h00000000, + parameter [23:0] CLASS_CODE = 24'h000000, + parameter CFG_ECRC_ERR_CPLSTAT = 0, + parameter CMD_INTX_IMPLEMENTED = "TRUE", + parameter CPL_TIMEOUT_DISABLE_SUPPORTED = "FALSE", + parameter [3:0] CPL_TIMEOUT_RANGES_SUPPORTED = 4'h0, + parameter [6:0] CRM_MODULE_RSTS = 7'h00, + parameter DEV_CAP2_ARI_FORWARDING_SUPPORTED = "FALSE", + parameter DEV_CAP2_ATOMICOP32_COMPLETER_SUPPORTED = "FALSE", + parameter DEV_CAP2_ATOMICOP64_COMPLETER_SUPPORTED = "FALSE", + parameter DEV_CAP2_ATOMICOP_ROUTING_SUPPORTED = "FALSE", + parameter DEV_CAP2_CAS128_COMPLETER_SUPPORTED = "FALSE", + parameter DEV_CAP2_ENDEND_TLP_PREFIX_SUPPORTED = "FALSE", + parameter DEV_CAP2_EXTENDED_FMT_FIELD_SUPPORTED = "FALSE", + parameter DEV_CAP2_LTR_MECHANISM_SUPPORTED = "FALSE", + parameter [1:0] DEV_CAP2_MAX_ENDEND_TLP_PREFIXES = 2'h0, + parameter DEV_CAP2_NO_RO_ENABLED_PRPR_PASSING = "FALSE", + parameter [1:0] DEV_CAP2_TPH_COMPLETER_SUPPORTED = 2'h0, + parameter DEV_CAP_ENABLE_SLOT_PWR_LIMIT_SCALE = "TRUE", + parameter DEV_CAP_ENABLE_SLOT_PWR_LIMIT_VALUE = "TRUE", + parameter integer DEV_CAP_ENDPOINT_L0S_LATENCY = 0, + parameter integer DEV_CAP_ENDPOINT_L1_LATENCY = 0, + parameter DEV_CAP_EXT_TAG_SUPPORTED = "TRUE", + parameter DEV_CAP_FUNCTION_LEVEL_RESET_CAPABLE = "FALSE", + parameter integer DEV_CAP_MAX_PAYLOAD_SUPPORTED = 2, + parameter integer DEV_CAP_PHANTOM_FUNCTIONS_SUPPORT = 0, + parameter integer DEV_CAP_RSVD_14_12 = 0, + parameter integer DEV_CAP_RSVD_17_16 = 0, + parameter integer DEV_CAP_RSVD_31_29 = 0, + parameter DEV_CONTROL_AUX_POWER_SUPPORTED = "FALSE", + parameter DEV_CONTROL_EXT_TAG_DEFAULT = "FALSE", + parameter DISABLE_ASPM_L1_TIMER = "FALSE", + parameter DISABLE_BAR_FILTERING = "FALSE", + parameter DISABLE_ERR_MSG = "FALSE", + parameter DISABLE_ID_CHECK = "FALSE", + parameter DISABLE_LANE_REVERSAL = "FALSE", + parameter DISABLE_LOCKED_FILTER = "FALSE", + parameter DISABLE_PPM_FILTER = "FALSE", + parameter DISABLE_RX_POISONED_RESP = "FALSE", + parameter DISABLE_RX_TC_FILTER = "FALSE", + parameter DISABLE_SCRAMBLING = "FALSE", + parameter [7:0] DNSTREAM_LINK_NUM = 8'h00, + parameter [11:0] DSN_BASE_PTR = 12'h100, + parameter [15:0] DSN_CAP_ID = 16'h0003, + parameter [11:0] DSN_CAP_NEXTPTR = 12'h10C, + parameter DSN_CAP_ON = "TRUE", + parameter [3:0] DSN_CAP_VERSION = 4'h1, + parameter [10:0] ENABLE_MSG_ROUTE = 11'h000, + parameter ENABLE_RX_TD_ECRC_TRIM = "FALSE", + parameter ENDEND_TLP_PREFIX_FORWARDING_SUPPORTED = "FALSE", + parameter ENTER_RVRY_EI_L0 = "TRUE", + parameter EXIT_LOOPBACK_ON_EI = "TRUE", + parameter [31:0] EXPANSION_ROM = 32'hFFFFF001, + parameter [5:0] EXT_CFG_CAP_PTR = 6'h3F, + parameter [9:0] EXT_CFG_XP_CAP_PTR = 10'h3FF, + parameter [7:0] HEADER_TYPE = 8'h00, + parameter [4:0] INFER_EI = 5'h00, + parameter [7:0] INTERRUPT_PIN = 8'h01, + parameter INTERRUPT_STAT_AUTO = "TRUE", + parameter IS_SWITCH = "FALSE", + parameter [9:0] LAST_CONFIG_DWORD = 10'h3FF, + parameter LINK_CAP_ASPM_OPTIONALITY = "TRUE", + parameter integer LINK_CAP_ASPM_SUPPORT = 1, + parameter LINK_CAP_CLOCK_POWER_MANAGEMENT = "FALSE", + parameter LINK_CAP_DLL_LINK_ACTIVE_REPORTING_CAP = "FALSE", + parameter integer LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN1 = 7, + parameter integer LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN2 = 7, + parameter integer LINK_CAP_L0S_EXIT_LATENCY_GEN1 = 7, + parameter integer LINK_CAP_L0S_EXIT_LATENCY_GEN2 = 7, + parameter integer LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN1 = 7, + parameter integer LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN2 = 7, + parameter integer LINK_CAP_L1_EXIT_LATENCY_GEN1 = 7, + parameter integer LINK_CAP_L1_EXIT_LATENCY_GEN2 = 7, + parameter LINK_CAP_LINK_BANDWIDTH_NOTIFICATION_CAP = "FALSE", + parameter [3:0] LINK_CAP_MAX_LINK_SPEED = 4'h1, + parameter [5:0] LINK_CAP_MAX_LINK_WIDTH = 6'h08, + parameter integer LINK_CAP_RSVD_23 = 0, + parameter integer LINK_CONTROL_RCB = 0, + parameter LINK_CTRL2_DEEMPHASIS = "FALSE", + parameter LINK_CTRL2_HW_AUTONOMOUS_SPEED_DISABLE = "FALSE", + parameter [3:0] LINK_CTRL2_TARGET_LINK_SPEED = 4'h2, + parameter LINK_STATUS_SLOT_CLOCK_CONFIG = "TRUE", + parameter [14:0] LL_ACK_TIMEOUT = 15'h0000, + parameter LL_ACK_TIMEOUT_EN = "FALSE", + parameter integer LL_ACK_TIMEOUT_FUNC = 0, + parameter [14:0] LL_REPLAY_TIMEOUT = 15'h0000, + parameter LL_REPLAY_TIMEOUT_EN = "FALSE", + parameter integer LL_REPLAY_TIMEOUT_FUNC = 0, + parameter [5:0] LTSSM_MAX_LINK_WIDTH = 6'h01, + parameter MPS_FORCE = "FALSE", + parameter [7:0] MSIX_BASE_PTR = 8'h9C, + parameter [7:0] MSIX_CAP_ID = 8'h11, + parameter [7:0] MSIX_CAP_NEXTPTR = 8'h00, + parameter MSIX_CAP_ON = "FALSE", + parameter integer MSIX_CAP_PBA_BIR = 0, + parameter [28:0] MSIX_CAP_PBA_OFFSET = 29'h00000050, + parameter integer MSIX_CAP_TABLE_BIR = 0, + parameter [28:0] MSIX_CAP_TABLE_OFFSET = 29'h00000040, + parameter [10:0] MSIX_CAP_TABLE_SIZE = 11'h000, + parameter [7:0] MSI_BASE_PTR = 8'h48, + parameter MSI_CAP_64_BIT_ADDR_CAPABLE = "TRUE", + parameter [7:0] MSI_CAP_ID = 8'h05, + parameter integer MSI_CAP_MULTIMSGCAP = 0, + parameter integer MSI_CAP_MULTIMSG_EXTENSION = 0, + parameter [7:0] MSI_CAP_NEXTPTR = 8'h60, + parameter MSI_CAP_ON = "FALSE", + parameter MSI_CAP_PER_VECTOR_MASKING_CAPABLE = "TRUE", + parameter integer N_FTS_COMCLK_GEN1 = 255, + parameter integer N_FTS_COMCLK_GEN2 = 255, + parameter integer N_FTS_GEN1 = 255, + parameter integer N_FTS_GEN2 = 255, + parameter [7:0] PCIE_BASE_PTR = 8'h60, + parameter [7:0] PCIE_CAP_CAPABILITY_ID = 8'h10, + parameter [3:0] PCIE_CAP_CAPABILITY_VERSION = 4'h2, + parameter [3:0] PCIE_CAP_DEVICE_PORT_TYPE = 4'h0, + parameter [7:0] PCIE_CAP_NEXTPTR = 8'h9C, + parameter PCIE_CAP_ON = "TRUE", + parameter integer PCIE_CAP_RSVD_15_14 = 0, + parameter PCIE_CAP_SLOT_IMPLEMENTED = "FALSE", + parameter integer PCIE_REVISION = 2, + parameter integer PL_AUTO_CONFIG = 0, + parameter PL_FAST_TRAIN = "FALSE", + parameter [14:0] PM_ASPML0S_TIMEOUT = 15'h0000, + parameter PM_ASPML0S_TIMEOUT_EN = "FALSE", + parameter integer PM_ASPML0S_TIMEOUT_FUNC = 0, + parameter PM_ASPM_FASTEXIT = "FALSE", + parameter [7:0] PM_BASE_PTR = 8'h40, + parameter integer PM_CAP_AUXCURRENT = 0, + parameter PM_CAP_D1SUPPORT = "TRUE", + parameter PM_CAP_D2SUPPORT = "TRUE", + parameter PM_CAP_DSI = "FALSE", + parameter [7:0] PM_CAP_ID = 8'h01, + parameter [7:0] PM_CAP_NEXTPTR = 8'h48, + parameter PM_CAP_ON = "TRUE", + parameter [4:0] PM_CAP_PMESUPPORT = 5'h0F, + parameter PM_CAP_PME_CLOCK = "FALSE", + parameter integer PM_CAP_RSVD_04 = 0, + parameter integer PM_CAP_VERSION = 3, + parameter PM_CSR_B2B3 = "FALSE", + parameter PM_CSR_BPCCEN = "FALSE", + parameter PM_CSR_NOSOFTRST = "TRUE", + parameter [7:0] PM_DATA0 = 8'h01, + parameter [7:0] PM_DATA1 = 8'h01, + parameter [7:0] PM_DATA2 = 8'h01, + parameter [7:0] PM_DATA3 = 8'h01, + parameter [7:0] PM_DATA4 = 8'h01, + parameter [7:0] PM_DATA5 = 8'h01, + parameter [7:0] PM_DATA6 = 8'h01, + parameter [7:0] PM_DATA7 = 8'h01, + parameter [1:0] PM_DATA_SCALE0 = 2'h1, + parameter [1:0] PM_DATA_SCALE1 = 2'h1, + parameter [1:0] PM_DATA_SCALE2 = 2'h1, + parameter [1:0] PM_DATA_SCALE3 = 2'h1, + parameter [1:0] PM_DATA_SCALE4 = 2'h1, + parameter [1:0] PM_DATA_SCALE5 = 2'h1, + parameter [1:0] PM_DATA_SCALE6 = 2'h1, + parameter [1:0] PM_DATA_SCALE7 = 2'h1, + parameter PM_MF = "FALSE", + parameter [11:0] RBAR_BASE_PTR = 12'h178, + parameter [4:0] RBAR_CAP_CONTROL_ENCODEDBAR0 = 5'h00, + parameter [4:0] RBAR_CAP_CONTROL_ENCODEDBAR1 = 5'h00, + parameter [4:0] RBAR_CAP_CONTROL_ENCODEDBAR2 = 5'h00, + parameter [4:0] RBAR_CAP_CONTROL_ENCODEDBAR3 = 5'h00, + parameter [4:0] RBAR_CAP_CONTROL_ENCODEDBAR4 = 5'h00, + parameter [4:0] RBAR_CAP_CONTROL_ENCODEDBAR5 = 5'h00, + parameter [15:0] RBAR_CAP_ID = 16'h0015, + parameter [2:0] RBAR_CAP_INDEX0 = 3'h0, + parameter [2:0] RBAR_CAP_INDEX1 = 3'h0, + parameter [2:0] RBAR_CAP_INDEX2 = 3'h0, + parameter [2:0] RBAR_CAP_INDEX3 = 3'h0, + parameter [2:0] RBAR_CAP_INDEX4 = 3'h0, + parameter [2:0] RBAR_CAP_INDEX5 = 3'h0, + parameter [11:0] RBAR_CAP_NEXTPTR = 12'h000, + parameter RBAR_CAP_ON = "FALSE", + parameter [31:0] RBAR_CAP_SUP0 = 32'h00000000, + parameter [31:0] RBAR_CAP_SUP1 = 32'h00000000, + parameter [31:0] RBAR_CAP_SUP2 = 32'h00000000, + parameter [31:0] RBAR_CAP_SUP3 = 32'h00000000, + parameter [31:0] RBAR_CAP_SUP4 = 32'h00000000, + parameter [31:0] RBAR_CAP_SUP5 = 32'h00000000, + parameter [3:0] RBAR_CAP_VERSION = 4'h1, + parameter [2:0] RBAR_NUM = 3'h1, + parameter integer RECRC_CHK = 0, + parameter RECRC_CHK_TRIM = "FALSE", + parameter ROOT_CAP_CRS_SW_VISIBILITY = "FALSE", + parameter [1:0] RP_AUTO_SPD = 2'h1, + parameter [4:0] RP_AUTO_SPD_LOOPCNT = 5'h1f, + parameter SELECT_DLL_IF = "FALSE", + parameter SIM_VERSION = "1.0", + parameter SLOT_CAP_ATT_BUTTON_PRESENT = "FALSE", + parameter SLOT_CAP_ATT_INDICATOR_PRESENT = "FALSE", + parameter SLOT_CAP_ELEC_INTERLOCK_PRESENT = "FALSE", + parameter SLOT_CAP_HOTPLUG_CAPABLE = "FALSE", + parameter SLOT_CAP_HOTPLUG_SURPRISE = "FALSE", + parameter SLOT_CAP_MRL_SENSOR_PRESENT = "FALSE", + parameter SLOT_CAP_NO_CMD_COMPLETED_SUPPORT = "FALSE", + parameter [12:0] SLOT_CAP_PHYSICAL_SLOT_NUM = 13'h0000, + parameter SLOT_CAP_POWER_CONTROLLER_PRESENT = "FALSE", + parameter SLOT_CAP_POWER_INDICATOR_PRESENT = "FALSE", + parameter integer SLOT_CAP_SLOT_POWER_LIMIT_SCALE = 0, + parameter [7:0] SLOT_CAP_SLOT_POWER_LIMIT_VALUE = 8'h00, + parameter integer SPARE_BIT0 = 0, + parameter integer SPARE_BIT1 = 0, + parameter integer SPARE_BIT2 = 0, + parameter integer SPARE_BIT3 = 0, + parameter integer SPARE_BIT4 = 0, + parameter integer SPARE_BIT5 = 0, + parameter integer SPARE_BIT6 = 0, + parameter integer SPARE_BIT7 = 0, + parameter integer SPARE_BIT8 = 0, + parameter [7:0] SPARE_BYTE0 = 8'h00, + parameter [7:0] SPARE_BYTE1 = 8'h00, + parameter [7:0] SPARE_BYTE2 = 8'h00, + parameter [7:0] SPARE_BYTE3 = 8'h00, + parameter [31:0] SPARE_WORD0 = 32'h00000000, + parameter [31:0] SPARE_WORD1 = 32'h00000000, + parameter [31:0] SPARE_WORD2 = 32'h00000000, + parameter [31:0] SPARE_WORD3 = 32'h00000000, + parameter SSL_MESSAGE_AUTO = "FALSE", + parameter TECRC_EP_INV = "FALSE", + parameter TL_RBYPASS = "FALSE", + parameter integer TL_RX_RAM_RADDR_LATENCY = 0, + parameter integer TL_RX_RAM_RDATA_LATENCY = 2, + parameter integer TL_RX_RAM_WRITE_LATENCY = 0, + parameter TL_TFC_DISABLE = "FALSE", + parameter TL_TX_CHECKS_DISABLE = "FALSE", + parameter integer TL_TX_RAM_RADDR_LATENCY = 0, + parameter integer TL_TX_RAM_RDATA_LATENCY = 2, + parameter integer TL_TX_RAM_WRITE_LATENCY = 0, + parameter TRN_DW = "FALSE", + parameter TRN_NP_FC = "FALSE", + parameter UPCONFIG_CAPABLE = "TRUE", + parameter UPSTREAM_FACING = "TRUE", + parameter UR_ATOMIC = "TRUE", + parameter UR_CFG1 = "TRUE", + parameter UR_INV_REQ = "TRUE", + parameter UR_PRS_RESPONSE = "TRUE", + parameter USER_CLK2_DIV2 = "FALSE", + parameter integer USER_CLK_FREQ = 3, + parameter USE_RID_PINS = "FALSE", + parameter VC0_CPL_INFINITE = "TRUE", + parameter [12:0] VC0_RX_RAM_LIMIT = 13'h03FF, + parameter integer VC0_TOTAL_CREDITS_CD = 127, + parameter integer VC0_TOTAL_CREDITS_CH = 31, + parameter integer VC0_TOTAL_CREDITS_NPD = 24, + parameter integer VC0_TOTAL_CREDITS_NPH = 12, + parameter integer VC0_TOTAL_CREDITS_PD = 288, + parameter integer VC0_TOTAL_CREDITS_PH = 32, + parameter integer VC0_TX_LASTPACKET = 31, + parameter [11:0] VC_BASE_PTR = 12'h10C, + parameter [15:0] VC_CAP_ID = 16'h0002, + parameter [11:0] VC_CAP_NEXTPTR = 12'h000, + parameter VC_CAP_ON = "FALSE", + parameter VC_CAP_REJECT_SNOOP_TRANSACTIONS = "FALSE", + parameter [3:0] VC_CAP_VERSION = 4'h1, + parameter [11:0] VSEC_BASE_PTR = 12'h128, + parameter [15:0] VSEC_CAP_HDR_ID = 16'h1234, + parameter [11:0] VSEC_CAP_HDR_LENGTH = 12'h018, + parameter [3:0] VSEC_CAP_HDR_REVISION = 4'h1, + parameter [15:0] VSEC_CAP_ID = 16'h000B, + parameter VSEC_CAP_IS_LINK_VISIBLE = "TRUE", + parameter [11:0] VSEC_CAP_NEXTPTR = 12'h140, + parameter VSEC_CAP_ON = "FALSE", + parameter [3:0] VSEC_CAP_VERSION = 4'h1, + parameter ENABLE_JTAG_DBG = "FALSE", + parameter REDUCE_OOB_FREQ = "FALSE" +) +( + + // wrapper input + // Common + output user_clk_out, + input user_reset, + input user_lnk_up, + + output trn_lnk_up, + output user_rst_n, + + // Tx + output [5:0] tx_buf_av, + output tx_err_drop, + output tx_cfg_req, + output s_axis_tx_tready, + input [C_DATA_WIDTH-1:0] s_axis_tx_tdata, + input [KEEP_WIDTH-1:0] s_axis_tx_tkeep, + input [3:0] s_axis_tx_tuser, + input s_axis_tx_tlast, + input s_axis_tx_tvalid, + input tx_cfg_gnt, + + // Rx + output [C_DATA_WIDTH-1:0] m_axis_rx_tdata, + output [KEEP_WIDTH-1:0] m_axis_rx_tkeep, + output m_axis_rx_tlast, + output m_axis_rx_tvalid, + input m_axis_rx_tready, + output [21:0] m_axis_rx_tuser, + input rx_np_ok, + input rx_np_req, + + // Flow Control + output [11:0] fc_cpld, + output [7:0] fc_cplh, + output [11:0] fc_npd, + output [7:0] fc_nph, + output [11:0] fc_pd, + output [7:0] fc_ph, + input [2:0] fc_sel, + + input wire [1:0] pl_directed_link_change, + input wire [1:0] pl_directed_link_width, + input wire pl_directed_link_speed, + input wire pl_directed_link_auton, + input wire pl_upstream_prefer_deemph, + input wire pl_downstream_deemph_source, + input wire pl_directed_ltssm_new_vld, + input wire [5:0] pl_directed_ltssm_new, + input wire pl_directed_ltssm_stall, + + input wire cm_rst_n, + input wire func_lvl_rst_n, + input wire pl_transmit_hot_rst, + input wire [31:0] cfg_mgmt_di, + input wire [3:0] cfg_mgmt_byte_en_n, + input wire [9:0] cfg_mgmt_dwaddr, + input wire cfg_mgmt_wr_rw1c_as_rw_n, + input wire cfg_mgmt_wr_readonly_n, + input wire cfg_mgmt_wr_en_n, + input wire cfg_mgmt_rd_en_n, + input wire cfg_err_malformed_n, + input wire cfg_err_cor_n, + input wire cfg_err_ur_n, + input wire cfg_err_ecrc_n, + input wire cfg_err_cpl_timeout_n, + input wire cfg_err_cpl_abort_n, + input wire cfg_err_cpl_unexpect_n, + input wire cfg_err_poisoned_n, + input wire cfg_err_acs_n, + input wire cfg_err_atomic_egress_blocked_n, + input wire cfg_err_mc_blocked_n, + input wire cfg_err_internal_uncor_n, + input wire cfg_err_internal_cor_n, + input wire cfg_err_posted_n, + input wire cfg_err_locked_n, + input wire cfg_err_norecovery_n, + input wire [127:0] cfg_err_aer_headerlog, + input wire [47:0] cfg_err_tlp_cpl_header, + input wire cfg_interrupt_n, + input wire [7:0] cfg_interrupt_di, + input wire cfg_interrupt_assert_n, + input wire cfg_interrupt_stat_n, + input wire [7:0] cfg_ds_bus_number, + input wire [4:0] cfg_ds_device_number, + input wire [2:0] cfg_ds_function_number, + input wire [7:0] cfg_port_number, + input wire cfg_pm_halt_aspm_l0s_n, + input wire cfg_pm_halt_aspm_l1_n, + input wire cfg_pm_force_state_en_n, + input wire [1:0] cfg_pm_force_state, + input wire cfg_pm_wake_n, + input wire cfg_turnoff_ok, + input wire cfg_pm_send_pme_to_n, + input wire [4:0] cfg_pciecap_interrupt_msgnum, + input wire cfg_trn_pending, + input wire [2:0] cfg_force_mps, + input wire cfg_force_common_clock_off, + input wire cfg_force_extended_sync_on, + input wire [63:0] cfg_dsn, + input wire [4:0] cfg_aer_interrupt_msgnum, + input wire [15:0] cfg_dev_id, + input wire [15:0] cfg_vend_id, + input wire [7:0] cfg_rev_id, + input wire [15:0] cfg_subsys_id, + input wire [15:0] cfg_subsys_vend_id, + input wire drp_clk, + input wire drp_en, + input wire drp_we, + input wire [8:0] drp_addr, + input wire [15:0] drp_di, + input wire [1:0] dbg_mode, + input wire dbg_sub_mode, + input wire [2:0] pl_dbg_mode , + + output wire pl_sel_lnk_rate, + output wire [1:0] pl_sel_lnk_width, + output wire [5:0] pl_ltssm_state, + output wire [1:0] pl_lane_reversal_mode, + output wire pl_phy_lnk_up, + output wire [2:0] pl_tx_pm_state, + output wire [1:0] pl_rx_pm_state, + output wire pl_link_upcfg_cap, + output wire pl_link_gen2_cap, + output wire pl_link_partner_gen2_supported, + output wire [2:0] pl_initial_link_width, + output wire pl_directed_change_done, + output wire pl_received_hot_rst, + output wire lnk_clk_en, + output wire [31:0] cfg_mgmt_do, + output wire cfg_mgmt_rd_wr_done, + output wire cfg_err_aer_headerlog_set, + output wire cfg_err_cpl_rdy, + output wire cfg_interrupt_rdy, + output wire [2:0] cfg_interrupt_mmenable, + output wire cfg_interrupt_msienable, + output wire [7:0] cfg_interrupt_do, + output wire cfg_interrupt_msixenable, + output wire cfg_interrupt_msixfm, + output wire [7:0] cfg_bus_number, + output wire [4:0] cfg_device_number, + output wire [2:0] cfg_function_number, + output wire [15:0] cfg_status, + output wire [15:0] cfg_command, + output wire [15:0] cfg_dstatus, + output wire [15:0] cfg_dcommand, + output wire [15:0] cfg_lstatus, + output wire [15:0] cfg_lcommand, + output wire [15:0] cfg_dcommand2, + output wire cfg_received_func_lvl_rst, + output wire cfg_msg_received, + output wire [15:0] cfg_msg_data, + output wire cfg_msg_received_err_cor, + output wire cfg_msg_received_err_non_fatal, + output wire cfg_msg_received_err_fatal, + output wire cfg_msg_received_assert_int_a, + output wire cfg_msg_received_deassert_int_a, + output wire cfg_msg_received_assert_int_b, + output wire cfg_msg_received_deassert_int_b, + output wire cfg_msg_received_assert_int_c, + output wire cfg_msg_received_deassert_int_c, + output wire cfg_msg_received_assert_int_d, + output wire cfg_msg_received_deassert_int_d, + output wire cfg_msg_received_pm_pme, + output wire cfg_msg_received_pme_to_ack, + output wire cfg_msg_received_pme_to, + output wire cfg_msg_received_setslotpowerlimit, + output wire cfg_msg_received_unlock, + output wire cfg_msg_received_pm_as_nak, + output wire cfg_to_turnoff, + output wire [2:0] cfg_pcie_link_state, + output wire cfg_pm_rcv_as_req_l1_n, + output wire cfg_pm_rcv_enter_l1_n, + output wire cfg_pm_rcv_enter_l23_n, + output wire cfg_pm_rcv_req_ack_n, + output wire [1:0] cfg_pmcsr_powerstate, + output wire cfg_pmcsr_pme_en, + output wire cfg_pmcsr_pme_status, + output wire cfg_transaction, + output wire cfg_transaction_type, + output wire [6:0] cfg_transaction_addr, + output wire cfg_command_io_enable, + output wire cfg_command_mem_enable, + output wire cfg_command_bus_master_enable, + output wire cfg_command_interrupt_disable, + output wire cfg_command_serr_en, + output wire cfg_bridge_serr_en, + output wire cfg_dev_status_corr_err_detected, + output wire cfg_dev_status_non_fatal_err_detected, + output wire cfg_dev_status_fatal_err_detected, + output wire cfg_dev_status_ur_detected, + output wire cfg_dev_control_corr_err_reporting_en, + output wire cfg_dev_control_non_fatal_reporting_en, + output wire cfg_dev_control_fatal_err_reporting_en, + output wire cfg_dev_control_ur_err_reporting_en, + output wire cfg_dev_control_enable_ro, + output wire [2:0] cfg_dev_control_max_payload, + output wire cfg_dev_control_ext_tag_en, + output wire cfg_dev_control_phantom_en, + output wire cfg_dev_control_aux_power_en, + output wire cfg_dev_control_no_snoop_en, + output wire [2:0] cfg_dev_control_max_read_req, + output wire [1:0] cfg_link_status_current_speed, + output wire [3:0] cfg_link_status_negotiated_width, + output wire cfg_link_status_link_training, + output wire cfg_link_status_dll_active, + output wire cfg_link_status_bandwidth_status, + output wire cfg_link_status_auto_bandwidth_status, + output wire [1:0] cfg_link_control_aspm_control, + output wire cfg_link_control_rcb, + output wire cfg_link_control_link_disable, + output wire cfg_link_control_retrain_link, + output wire cfg_link_control_common_clock, + output wire cfg_link_control_extended_sync, + output wire cfg_link_control_clock_pm_en, + output wire cfg_link_control_hw_auto_width_dis, + output wire cfg_link_control_bandwidth_int_en, + output wire cfg_link_control_auto_bandwidth_int_en, + output wire [3:0] cfg_dev_control2_cpl_timeout_val, + output wire cfg_dev_control2_cpl_timeout_dis, + output wire cfg_dev_control2_ari_forward_en, + output wire cfg_dev_control2_atomic_requester_en, + output wire cfg_dev_control2_atomic_egress_block, + output wire cfg_dev_control2_ido_req_en, + output wire cfg_dev_control2_ido_cpl_en, + output wire cfg_dev_control2_ltr_en, + output wire cfg_dev_control2_tlp_prefix_block, + output wire cfg_slot_control_electromech_il_ctl_pulse, + output wire cfg_root_control_syserr_corr_err_en, + output wire cfg_root_control_syserr_non_fatal_err_en, + output wire cfg_root_control_syserr_fatal_err_en, + output wire cfg_root_control_pme_int_en, + output wire cfg_aer_ecrc_check_en, + output wire cfg_aer_ecrc_gen_en, + output wire cfg_aer_rooterr_corr_err_reporting_en, + output wire cfg_aer_rooterr_non_fatal_err_reporting_en, + output wire cfg_aer_rooterr_fatal_err_reporting_en, + output wire cfg_aer_rooterr_corr_err_received, + output wire cfg_aer_rooterr_non_fatal_err_received, + output wire cfg_aer_rooterr_fatal_err_received, + output wire [6:0] cfg_vc_tcvc_map, + output wire drp_rdy, + output wire [15:0] drp_do, + output wire [63:0] dbg_vec_a, + output wire [63:0] dbg_vec_b, + output wire [11:0] dbg_vec_c, + output wire dbg_sclr_a, + output wire dbg_sclr_b, + output wire dbg_sclr_c, + output wire dbg_sclr_d, + output wire dbg_sclr_e, + output wire dbg_sclr_f, + output wire dbg_sclr_g, + output wire dbg_sclr_h, + output wire dbg_sclr_i, + output wire dbg_sclr_j, + output wire dbg_sclr_k, + output wire [63:0] trn_rdllp_data, + output wire [1:0] trn_rdllp_src_rdy, + output wire [11:0] pl_dbg_vec, + + input phy_rdy_n, + input pipe_clk, + input user_clk, + input user_clk2, + output wire pipe_rx0_polarity_gt, + output wire pipe_rx1_polarity_gt, + output wire pipe_rx2_polarity_gt, + output wire pipe_rx3_polarity_gt, + output wire pipe_rx4_polarity_gt, + output wire pipe_rx5_polarity_gt, + output wire pipe_rx6_polarity_gt, + output wire pipe_rx7_polarity_gt, + output wire pipe_tx_deemph_gt, + output wire [2:0] pipe_tx_margin_gt, + output wire pipe_tx_rate_gt, + output wire pipe_tx_rcvr_det_gt, + output wire [1:0] pipe_tx0_char_is_k_gt, + output wire pipe_tx0_compliance_gt, + output wire [15:0] pipe_tx0_data_gt, + output wire pipe_tx0_elec_idle_gt, + output wire [1:0] pipe_tx0_powerdown_gt, + output wire [1:0] pipe_tx1_char_is_k_gt, + output wire pipe_tx1_compliance_gt, + output wire [15:0] pipe_tx1_data_gt, + output wire pipe_tx1_elec_idle_gt, + output wire [1:0] pipe_tx1_powerdown_gt, + output wire [1:0] pipe_tx2_char_is_k_gt, + output wire pipe_tx2_compliance_gt, + output wire [15:0] pipe_tx2_data_gt, + output wire pipe_tx2_elec_idle_gt, + output wire [1:0] pipe_tx2_powerdown_gt, + output wire [1:0] pipe_tx3_char_is_k_gt, + output wire pipe_tx3_compliance_gt, + output wire [15:0] pipe_tx3_data_gt, + output wire pipe_tx3_elec_idle_gt, + output wire [1:0] pipe_tx3_powerdown_gt, + output wire [1:0] pipe_tx4_char_is_k_gt, + output wire pipe_tx4_compliance_gt, + output wire [15:0] pipe_tx4_data_gt, + output wire pipe_tx4_elec_idle_gt, + output wire [1:0] pipe_tx4_powerdown_gt, + output wire [1:0] pipe_tx5_char_is_k_gt, + output wire pipe_tx5_compliance_gt, + output wire [15:0] pipe_tx5_data_gt, + output wire pipe_tx5_elec_idle_gt, + output wire [1:0] pipe_tx5_powerdown_gt, + output wire [1:0] pipe_tx6_char_is_k_gt, + output wire pipe_tx6_compliance_gt, + output wire [15:0] pipe_tx6_data_gt, + output wire pipe_tx6_elec_idle_gt, + output wire [1:0] pipe_tx6_powerdown_gt, + output wire [1:0] pipe_tx7_char_is_k_gt, + output wire pipe_tx7_compliance_gt, + output wire [15:0] pipe_tx7_data_gt, + output wire pipe_tx7_elec_idle_gt, + output wire [1:0] pipe_tx7_powerdown_gt, + + input wire pipe_rx0_chanisaligned_gt, + input wire [1:0] pipe_rx0_char_is_k_gt, + input wire [15:0] pipe_rx0_data_gt, + input wire pipe_rx0_elec_idle_gt, + input wire pipe_rx0_phy_status_gt, + input wire [2:0] pipe_rx0_status_gt, + input wire pipe_rx0_valid_gt, + input wire pipe_rx1_chanisaligned_gt, + input wire [1:0] pipe_rx1_char_is_k_gt, + input wire [15:0] pipe_rx1_data_gt, + input wire pipe_rx1_elec_idle_gt, + input wire pipe_rx1_phy_status_gt, + input wire [2:0] pipe_rx1_status_gt, + input wire pipe_rx1_valid_gt, + input wire pipe_rx2_chanisaligned_gt, + input wire [1:0] pipe_rx2_char_is_k_gt, + input wire [15:0] pipe_rx2_data_gt, + input wire pipe_rx2_elec_idle_gt, + input wire pipe_rx2_phy_status_gt, + input wire [2:0] pipe_rx2_status_gt, + input wire pipe_rx2_valid_gt, + input wire pipe_rx3_chanisaligned_gt, + input wire [1:0] pipe_rx3_char_is_k_gt, + input wire [15:0] pipe_rx3_data_gt, + input wire pipe_rx3_elec_idle_gt, + input wire pipe_rx3_phy_status_gt, + input wire [2:0] pipe_rx3_status_gt, + input wire pipe_rx3_valid_gt, + input wire pipe_rx4_chanisaligned_gt, + input wire [1:0] pipe_rx4_char_is_k_gt, + input wire [15:0] pipe_rx4_data_gt, + input wire pipe_rx4_elec_idle_gt, + input wire pipe_rx4_phy_status_gt, + input wire [2:0] pipe_rx4_status_gt, + input wire pipe_rx4_valid_gt, + input wire pipe_rx5_chanisaligned_gt, + input wire [1:0] pipe_rx5_char_is_k_gt, + input wire [15:0] pipe_rx5_data_gt, + input wire pipe_rx5_elec_idle_gt, + input wire pipe_rx5_phy_status_gt, + input wire [2:0] pipe_rx5_status_gt, + input wire pipe_rx5_valid_gt, + input wire pipe_rx6_chanisaligned_gt, + input wire [1:0] pipe_rx6_char_is_k_gt, + input wire [15:0] pipe_rx6_data_gt, + input wire pipe_rx6_elec_idle_gt, + input wire pipe_rx6_phy_status_gt, + input wire [2:0] pipe_rx6_status_gt, + input wire pipe_rx6_valid_gt, + input wire pipe_rx7_chanisaligned_gt, + input wire [1:0] pipe_rx7_char_is_k_gt, + input wire [15:0] pipe_rx7_data_gt, + input wire pipe_rx7_elec_idle_gt, + input wire pipe_rx7_phy_status_gt, + input wire [2:0] pipe_rx7_status_gt, + input wire pipe_rx7_valid_gt +); + + //wire declaration + + // TRN Interface + wire [C_DATA_WIDTH-1:0] trn_td; + wire [REM_WIDTH-1:0] trn_trem; + wire trn_tsof; + wire trn_teof; + wire trn_tsrc_rdy; + wire trn_tdst_rdy; + wire trn_tsrc_dsc; + wire trn_terrfwd; + wire trn_tecrc_gen; + wire trn_tstr; + wire trn_tcfg_gnt; + + + wire [127:0] trn_rd; + wire [1:0] trn_rrem; + wire trn_rdst_rdy; + wire trn_rsof; + wire trn_reof; + wire trn_rsrc_rdy; + wire trn_rsrc_dsc; + wire trn_rerrfwd; + wire trn_recrc_err; + wire [7:0] trn_rbar_hit; + + wire sys_reset_n_d; + wire [1:0] pipe_rx0_char_is_k; + wire [1:0] pipe_rx1_char_is_k; + wire [1:0] pipe_rx2_char_is_k; + wire [1:0] pipe_rx3_char_is_k; + wire [1:0] pipe_rx4_char_is_k; + wire [1:0] pipe_rx5_char_is_k; + wire [1:0] pipe_rx6_char_is_k; + wire [1:0] pipe_rx7_char_is_k; + wire pipe_rx0_valid; + wire pipe_rx1_valid; + wire pipe_rx2_valid; + wire pipe_rx3_valid; + wire pipe_rx4_valid; + wire pipe_rx5_valid; + wire pipe_rx6_valid; + wire pipe_rx7_valid; + wire [15:0] pipe_rx0_data; + wire [15:0] pipe_rx1_data; + wire [15:0] pipe_rx2_data; + wire [15:0] pipe_rx3_data; + wire [15:0] pipe_rx4_data; + wire [15:0] pipe_rx5_data; + wire [15:0] pipe_rx6_data; + wire [15:0] pipe_rx7_data; + wire pipe_rx0_chanisaligned; + wire pipe_rx1_chanisaligned; + wire pipe_rx2_chanisaligned; + wire pipe_rx3_chanisaligned; + wire pipe_rx4_chanisaligned; + wire pipe_rx5_chanisaligned; + wire pipe_rx6_chanisaligned; + wire pipe_rx7_chanisaligned; + wire [2:0] pipe_rx0_status; + wire [2:0] pipe_rx1_status; + wire [2:0] pipe_rx2_status; + wire [2:0] pipe_rx3_status; + wire [2:0] pipe_rx4_status; + wire [2:0] pipe_rx5_status; + wire [2:0] pipe_rx6_status; + wire [2:0] pipe_rx7_status; + wire pipe_rx0_phy_status; + wire pipe_rx1_phy_status; + wire pipe_rx2_phy_status; + wire pipe_rx3_phy_status; + wire pipe_rx4_phy_status; + wire pipe_rx5_phy_status; + wire pipe_rx6_phy_status; + wire pipe_rx7_phy_status; + + wire pipe_rx0_elec_idle; + wire pipe_rx1_elec_idle; + wire pipe_rx2_elec_idle; + wire pipe_rx3_elec_idle; + wire pipe_rx4_elec_idle; + wire pipe_rx5_elec_idle; + wire pipe_rx6_elec_idle; + wire pipe_rx7_elec_idle; + + + wire pipe_tx_reset; + wire pipe_tx_rcvr_det; + wire pipe_tx_rate; + wire pipe_tx_deemph; + wire [2:0] pipe_tx_margin; + wire pipe_rx0_polarity; + wire pipe_rx1_polarity; + wire pipe_rx2_polarity; + wire pipe_rx3_polarity; + wire pipe_rx4_polarity; + wire pipe_rx5_polarity; + wire pipe_rx6_polarity; + wire pipe_rx7_polarity; + wire pipe_tx0_compliance; + wire pipe_tx1_compliance; + wire pipe_tx2_compliance; + wire pipe_tx3_compliance; + wire pipe_tx4_compliance; + wire pipe_tx5_compliance; + wire pipe_tx6_compliance; + wire pipe_tx7_compliance; + wire [1:0] pipe_tx0_char_is_k; + wire [1:0] pipe_tx1_char_is_k; + wire [1:0] pipe_tx2_char_is_k; + wire [1:0] pipe_tx3_char_is_k; + wire [1:0] pipe_tx4_char_is_k; + wire [1:0] pipe_tx5_char_is_k; + wire [1:0] pipe_tx6_char_is_k; + wire [1:0] pipe_tx7_char_is_k; + wire [15:0] pipe_tx0_data; + wire [15:0] pipe_tx1_data; + wire [15:0] pipe_tx2_data; + wire [15:0] pipe_tx3_data; + wire [15:0] pipe_tx4_data; + wire [15:0] pipe_tx5_data; + wire [15:0] pipe_tx6_data; + wire [15:0] pipe_tx7_data; + wire pipe_tx0_elec_idle; + wire pipe_tx1_elec_idle; + wire pipe_tx2_elec_idle; + wire pipe_tx3_elec_idle; + wire pipe_tx4_elec_idle; + wire pipe_tx5_elec_idle; + wire pipe_tx6_elec_idle; + wire pipe_tx7_elec_idle; + wire [1:0] pipe_tx0_powerdown; + wire [1:0] pipe_tx1_powerdown; + wire [1:0] pipe_tx2_powerdown; + wire [1:0] pipe_tx3_powerdown; + wire [1:0] pipe_tx4_powerdown; + wire [1:0] pipe_tx5_powerdown; + wire [1:0] pipe_tx6_powerdown; + wire [1:0] pipe_tx7_powerdown; + + wire cfg_received_func_lvl_rst_n; + wire cfg_err_cpl_rdy_n; + wire cfg_interrupt_rdy_n; + reg [7:0] cfg_bus_number_d; + reg [4:0] cfg_device_number_d; + reg [2:0] cfg_function_number_d; + wire cfg_turnoff_ok_w; + + wire cfg_mgmt_rd_wr_done_n; + wire pl_phy_lnk_up_n; + wire cfg_err_aer_headerlog_set_n; + + assign cfg_received_func_lvl_rst = ~cfg_received_func_lvl_rst_n; + + assign cfg_err_cpl_rdy = ~cfg_err_cpl_rdy_n; + + assign cfg_interrupt_rdy = ~cfg_interrupt_rdy_n; + + assign cfg_mgmt_rd_wr_done = ~cfg_mgmt_rd_wr_done_n; + + assign pl_phy_lnk_up = ~pl_phy_lnk_up_n; + + assign cfg_err_aer_headerlog_set = ~cfg_err_aer_headerlog_set_n; + + assign cfg_to_turnoff = cfg_msg_received_pme_to; + + assign cfg_status = {16'b0}; + + assign cfg_command = {5'b0, + cfg_command_interrupt_disable, + 1'b0, + cfg_command_serr_en, + 5'b0, + cfg_command_bus_master_enable, + cfg_command_mem_enable, + cfg_command_io_enable}; + + assign cfg_dstatus = {10'h0, + cfg_trn_pending, + 1'b0, + cfg_dev_status_ur_detected, + cfg_dev_status_fatal_err_detected, + cfg_dev_status_non_fatal_err_detected, + cfg_dev_status_corr_err_detected}; + + assign cfg_dcommand = {1'b0, + cfg_dev_control_max_read_req, + cfg_dev_control_no_snoop_en, + cfg_dev_control_aux_power_en, + cfg_dev_control_phantom_en, + cfg_dev_control_ext_tag_en, + cfg_dev_control_max_payload, + cfg_dev_control_enable_ro, + cfg_dev_control_ur_err_reporting_en, + cfg_dev_control_fatal_err_reporting_en, + cfg_dev_control_non_fatal_reporting_en, + cfg_dev_control_corr_err_reporting_en }; + + assign cfg_lstatus = {cfg_link_status_auto_bandwidth_status, + cfg_link_status_bandwidth_status, + cfg_link_status_dll_active, + (LINK_STATUS_SLOT_CLOCK_CONFIG == "TRUE") ? 1'b1 : 1'b0, + cfg_link_status_link_training, + 1'b0, + {2'b00, cfg_link_status_negotiated_width}, + {2'b00, cfg_link_status_current_speed} }; + + assign cfg_lcommand = {4'b0, + cfg_link_control_auto_bandwidth_int_en, + cfg_link_control_bandwidth_int_en, + cfg_link_control_hw_auto_width_dis, + cfg_link_control_clock_pm_en, + cfg_link_control_extended_sync, + cfg_link_control_common_clock, + cfg_link_control_retrain_link, + cfg_link_control_link_disable, + cfg_link_control_rcb, + 1'b0, + cfg_link_control_aspm_control}; + + assign cfg_bus_number = cfg_bus_number_d; + + assign cfg_device_number = cfg_device_number_d; + + assign cfg_function_number = cfg_function_number_d; + + assign cfg_dcommand2 = {4'b0, + cfg_dev_control2_tlp_prefix_block, + cfg_dev_control2_ltr_en, + cfg_dev_control2_ido_cpl_en, + cfg_dev_control2_ido_req_en, + cfg_dev_control2_atomic_egress_block, + cfg_dev_control2_atomic_requester_en, + cfg_dev_control2_ari_forward_en, + cfg_dev_control2_cpl_timeout_dis, + cfg_dev_control2_cpl_timeout_val}; + + // Capture Bus/Device/Function number + + always @(posedge user_clk_out) begin + if (~user_lnk_up) + begin + cfg_bus_number_d <= 8'b0; + end // if (~user_lnk_up) + else if (~cfg_msg_received) + begin + cfg_bus_number_d <= cfg_msg_data[15:8]; + end // if (~cfg_msg_received) + end + + always @(posedge user_clk_out) begin + if (~user_lnk_up) + begin + cfg_device_number_d <= 5'b0; + end // if (~user_lnk_up) + else if (~cfg_msg_received) + begin + cfg_device_number_d <= cfg_msg_data[7:3]; + end // if (~cfg_msg_received) + end + + always @(posedge user_clk_out) begin + if (~user_lnk_up) + begin + cfg_function_number_d <= 3'b0; + end // if (~user_lnk_up) + else if (~cfg_msg_received) + begin + cfg_function_number_d <= cfg_msg_data[2:0]; + end // if (~cfg_msg_received) + end + +pcie_7x_0_axi_basic_top #( + .C_DATA_WIDTH (C_DATA_WIDTH), // RX/TX interface data width + .C_FAMILY ("X7"), // Targeted FPGA family + .C_ROOT_PORT ("FALSE"), // PCIe block is in root port mode + .C_PM_PRIORITY ("FALSE") // Disable TX packet boundary thrtl + + ) axi_basic_top ( + //---------------------------------------------// + // User Design I/O // + //---------------------------------------------// + + // AXI TX + //----------- + .s_axis_tx_tdata (s_axis_tx_tdata), // input + .s_axis_tx_tvalid (s_axis_tx_tvalid), // input + .s_axis_tx_tready (s_axis_tx_tready), // output + .s_axis_tx_tkeep (s_axis_tx_tkeep), // input + .s_axis_tx_tlast (s_axis_tx_tlast), // input + .s_axis_tx_tuser (s_axis_tx_tuser), // input + + // AXI RX + //----------- + .m_axis_rx_tdata (m_axis_rx_tdata), // output + .m_axis_rx_tvalid (m_axis_rx_tvalid), // output + .m_axis_rx_tready (m_axis_rx_tready), // input + .m_axis_rx_tkeep (m_axis_rx_tkeep), // output + .m_axis_rx_tlast (m_axis_rx_tlast), // output + .m_axis_rx_tuser (m_axis_rx_tuser), // output + + // User Misc. + //----------- + .user_turnoff_ok (cfg_turnoff_ok), // input + .user_tcfg_gnt (tx_cfg_gnt), // input + + //---------------------------------------------// + // PCIe Block I/O // + //---------------------------------------------// + + // TRN TX + //----------- + .trn_td (trn_td), // output + .trn_tsof (trn_tsof), // output + .trn_teof (trn_teof), // output + .trn_tsrc_rdy (trn_tsrc_rdy), // output + .trn_tdst_rdy (trn_tdst_rdy), // input + .trn_tsrc_dsc (trn_tsrc_dsc), // output + .trn_trem (trn_trem), // output + .trn_terrfwd (trn_terrfwd), // output + .trn_tstr (trn_tstr), // output + .trn_tbuf_av (tx_buf_av), // input + .trn_tecrc_gen (trn_tecrc_gen), // output + + // TRN RX + //----------- + .trn_rd (trn_rd), // input + .trn_rsof (trn_rsof), // input + .trn_reof (trn_reof), // input + .trn_rsrc_rdy (trn_rsrc_rdy), // input + .trn_rdst_rdy (trn_rdst_rdy), // output + .trn_rsrc_dsc (trn_rsrc_dsc), // input + .trn_rrem (trn_rrem), // input + .trn_rerrfwd (trn_rerrfwd), // input + .trn_rbar_hit (trn_rbar_hit[6:0]), // input + .trn_recrc_err (trn_recrc_err), // input + + // TRN Misc. + //----------- + .trn_tcfg_req ( tx_cfg_req ), // input + .trn_tcfg_gnt ( trn_tcfg_gnt), // output + .trn_lnk_up ( user_lnk_up), // input + + // Fuji3/Virtex6 PM + //----------- + .cfg_pcie_link_state (cfg_pcie_link_state), // input + + // Virtex6 PM + //----------- + .cfg_pm_send_pme_to (1'b0), // input NOT USED FOR EP + .cfg_pmcsr_powerstate (cfg_pmcsr_powerstate), // input + .trn_rdllp_data (32'b0), // input - Not used in 7-series + .trn_rdllp_src_rdy (1'b0), // input -- Not used in 7-series + + // Power Mgmt for S6/V6 + //----------- + .cfg_to_turnoff (cfg_to_turnoff), // input + .cfg_turnoff_ok (cfg_turnoff_ok_w), // output + + // System + //----------- + .user_clk (user_clk_out), // input + .user_rst (user_reset), // input + .np_counter () // output + + ); + + + //------------------------------------------------------- + // PCI Express Pipe Wrapper + //------------------------------------------------------- +pcie_7x_0_pcie_7x # ( + .AER_BASE_PTR ( AER_BASE_PTR ), + .AER_CAP_ECRC_CHECK_CAPABLE ( AER_CAP_ECRC_CHECK_CAPABLE ), + .AER_CAP_ECRC_GEN_CAPABLE( AER_CAP_ECRC_GEN_CAPABLE ), + .AER_CAP_ID ( AER_CAP_ID ), + .AER_CAP_MULTIHEADER ( AER_CAP_MULTIHEADER ), + .AER_CAP_NEXTPTR ( AER_CAP_NEXTPTR ), + .AER_CAP_ON ( AER_CAP_ON ), + .AER_CAP_OPTIONAL_ERR_SUPPORT ( AER_CAP_OPTIONAL_ERR_SUPPORT ), + .AER_CAP_PERMIT_ROOTERR_UPDATE ( AER_CAP_PERMIT_ROOTERR_UPDATE ), + .AER_CAP_VERSION ( AER_CAP_VERSION ), + .ALLOW_X8_GEN2 (ALLOW_X8_GEN2), + .BAR0 ( BAR0 ), + .BAR1 ( BAR1 ), + .BAR2 ( BAR2 ), + .BAR3 ( BAR3 ), + .BAR4 ( BAR4 ), + .BAR5 ( BAR5 ), + .C_DATA_WIDTH ( C_DATA_WIDTH ), + .CAPABILITIES_PTR( CAPABILITIES_PTR ), + .CFG_ECRC_ERR_CPLSTAT ( CFG_ECRC_ERR_CPLSTAT ), + .CARDBUS_CIS_POINTER ( CARDBUS_CIS_POINTER ), + .CLASS_CODE ( CLASS_CODE ), + .CMD_INTX_IMPLEMENTED ( CMD_INTX_IMPLEMENTED ), + .CPL_TIMEOUT_DISABLE_SUPPORTED ( CPL_TIMEOUT_DISABLE_SUPPORTED ), + .CPL_TIMEOUT_RANGES_SUPPORTED ( CPL_TIMEOUT_RANGES_SUPPORTED ), + .CRM_MODULE_RSTS (CRM_MODULE_RSTS), + .DEV_CAP_ENABLE_SLOT_PWR_LIMIT_SCALE ( DEV_CAP_ENABLE_SLOT_PWR_LIMIT_SCALE ), + .DEV_CAP_ENABLE_SLOT_PWR_LIMIT_VALUE ( DEV_CAP_ENABLE_SLOT_PWR_LIMIT_VALUE ), + .DEV_CAP_ENDPOINT_L0S_LATENCY ( DEV_CAP_ENDPOINT_L0S_LATENCY ), + .DEV_CAP_ENDPOINT_L1_LATENCY ( DEV_CAP_ENDPOINT_L1_LATENCY ), + .DEV_CAP_EXT_TAG_SUPPORTED ( DEV_CAP_EXT_TAG_SUPPORTED ), + .DEV_CAP_FUNCTION_LEVEL_RESET_CAPABLE ( DEV_CAP_FUNCTION_LEVEL_RESET_CAPABLE ), + .DEV_CAP_MAX_PAYLOAD_SUPPORTED ( DEV_CAP_MAX_PAYLOAD_SUPPORTED ), + .DEV_CAP_PHANTOM_FUNCTIONS_SUPPORT ( DEV_CAP_PHANTOM_FUNCTIONS_SUPPORT ), + .DEV_CAP_ROLE_BASED_ERROR( DEV_CAP_ROLE_BASED_ERROR ), + .DEV_CAP_RSVD_14_12 ( DEV_CAP_RSVD_14_12 ), + .DEV_CAP_RSVD_17_16 ( DEV_CAP_RSVD_17_16 ), + .DEV_CAP_RSVD_31_29 ( DEV_CAP_RSVD_31_29 ), + .DEV_CONTROL_AUX_POWER_SUPPORTED ( DEV_CONTROL_AUX_POWER_SUPPORTED ), + .DEV_CONTROL_EXT_TAG_DEFAULT ( DEV_CONTROL_EXT_TAG_DEFAULT ), + .DISABLE_ASPM_L1_TIMER ( DISABLE_ASPM_L1_TIMER ), + .DISABLE_BAR_FILTERING ( DISABLE_BAR_FILTERING ), + .DISABLE_ID_CHECK( DISABLE_ID_CHECK ), + .DISABLE_LANE_REVERSAL ( DISABLE_LANE_REVERSAL ), + .DISABLE_RX_POISONED_RESP (DISABLE_RX_POISONED_RESP), + .DISABLE_RX_TC_FILTER ( DISABLE_RX_TC_FILTER ), + .DISABLE_SCRAMBLING ( DISABLE_SCRAMBLING ), + .DNSTREAM_LINK_NUM ( DNSTREAM_LINK_NUM ), + .DSN_BASE_PTR ( DSN_BASE_PTR ), + .DSN_CAP_ID ( DSN_CAP_ID ), + .DSN_CAP_NEXTPTR ( DSN_CAP_NEXTPTR ), + .DSN_CAP_ON ( DSN_CAP_ON ), + .DSN_CAP_VERSION ( DSN_CAP_VERSION ), + .DEV_CAP2_ARI_FORWARDING_SUPPORTED(DEV_CAP2_ARI_FORWARDING_SUPPORTED), + .DEV_CAP2_ATOMICOP32_COMPLETER_SUPPORTED (DEV_CAP2_ATOMICOP32_COMPLETER_SUPPORTED), + .DEV_CAP2_ATOMICOP64_COMPLETER_SUPPORTED (DEV_CAP2_ATOMICOP64_COMPLETER_SUPPORTED), + .DEV_CAP2_ATOMICOP_ROUTING_SUPPORTED (DEV_CAP2_ATOMICOP_ROUTING_SUPPORTED), + .DEV_CAP2_CAS128_COMPLETER_SUPPORTED (DEV_CAP2_CAS128_COMPLETER_SUPPORTED), + .DEV_CAP2_ENDEND_TLP_PREFIX_SUPPORTED (DEV_CAP2_ENDEND_TLP_PREFIX_SUPPORTED), + .DEV_CAP2_EXTENDED_FMT_FIELD_SUPPORTED (DEV_CAP2_EXTENDED_FMT_FIELD_SUPPORTED), + .DEV_CAP2_LTR_MECHANISM_SUPPORTED (DEV_CAP2_LTR_MECHANISM_SUPPORTED), + .DEV_CAP2_MAX_ENDEND_TLP_PREFIXES (DEV_CAP2_MAX_ENDEND_TLP_PREFIXES), + .DEV_CAP2_NO_RO_ENABLED_PRPR_PASSING (DEV_CAP2_NO_RO_ENABLED_PRPR_PASSING), + .DEV_CAP2_TPH_COMPLETER_SUPPORTED (DEV_CAP2_TPH_COMPLETER_SUPPORTED), + .DISABLE_ERR_MSG (DISABLE_ERR_MSG), + .DISABLE_LOCKED_FILTER (DISABLE_LOCKED_FILTER), + .DISABLE_PPM_FILTER (DISABLE_PPM_FILTER), + .ENDEND_TLP_PREFIX_FORWARDING_SUPPORTED (ENDEND_TLP_PREFIX_FORWARDING_SUPPORTED), + .ENABLE_MSG_ROUTE( ENABLE_MSG_ROUTE ), + .ENABLE_RX_TD_ECRC_TRIM ( ENABLE_RX_TD_ECRC_TRIM ), + .ENTER_RVRY_EI_L0( ENTER_RVRY_EI_L0 ), + .EXIT_LOOPBACK_ON_EI (EXIT_LOOPBACK_ON_EI), + .EXPANSION_ROM ( EXPANSION_ROM ), + .EXT_CFG_CAP_PTR ( EXT_CFG_CAP_PTR ), + .EXT_CFG_XP_CAP_PTR ( EXT_CFG_XP_CAP_PTR ), + .HEADER_TYPE ( HEADER_TYPE ), + .INFER_EI( INFER_EI ), + .INTERRUPT_PIN ( INTERRUPT_PIN ), + .INTERRUPT_STAT_AUTO (INTERRUPT_STAT_AUTO), + .IS_SWITCH ( IS_SWITCH ), + .LAST_CONFIG_DWORD ( LAST_CONFIG_DWORD ), + .LINK_CAP_ASPM_OPTIONALITY ( LINK_CAP_ASPM_OPTIONALITY ), + .LINK_CAP_ASPM_SUPPORT ( LINK_CAP_ASPM_SUPPORT ), + .LINK_CAP_CLOCK_POWER_MANAGEMENT ( LINK_CAP_CLOCK_POWER_MANAGEMENT ), + .LINK_CAP_DLL_LINK_ACTIVE_REPORTING_CAP ( LINK_CAP_DLL_LINK_ACTIVE_REPORTING_CAP ), + .LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN1 ( LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN1 ), + .LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN2 ( LINK_CAP_L0S_EXIT_LATENCY_COMCLK_GEN2 ), + .LINK_CAP_L0S_EXIT_LATENCY_GEN1 ( LINK_CAP_L0S_EXIT_LATENCY_GEN1 ), + .LINK_CAP_L0S_EXIT_LATENCY_GEN2 ( LINK_CAP_L0S_EXIT_LATENCY_GEN2 ), + .LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN1 ( LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN1 ), + .LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN2 ( LINK_CAP_L1_EXIT_LATENCY_COMCLK_GEN2 ), + .LINK_CAP_L1_EXIT_LATENCY_GEN1 ( LINK_CAP_L1_EXIT_LATENCY_GEN1 ), + .LINK_CAP_L1_EXIT_LATENCY_GEN2 ( LINK_CAP_L1_EXIT_LATENCY_GEN2 ), + .LINK_CAP_LINK_BANDWIDTH_NOTIFICATION_CAP (LINK_CAP_LINK_BANDWIDTH_NOTIFICATION_CAP), + .LINK_CAP_MAX_LINK_SPEED ( LINK_CAP_MAX_LINK_SPEED ), + .LINK_CAP_MAX_LINK_WIDTH ( LINK_CAP_MAX_LINK_WIDTH ), + .LINK_CAP_RSVD_23( LINK_CAP_RSVD_23 ), + .LINK_CAP_SURPRISE_DOWN_ERROR_CAPABLE ( LINK_CAP_SURPRISE_DOWN_ERROR_CAPABLE ), + .LINK_CONTROL_RCB( LINK_CONTROL_RCB ), + .LINK_CTRL2_DEEMPHASIS ( LINK_CTRL2_DEEMPHASIS ), + .LINK_CTRL2_HW_AUTONOMOUS_SPEED_DISABLE ( LINK_CTRL2_HW_AUTONOMOUS_SPEED_DISABLE ), + .LINK_CTRL2_TARGET_LINK_SPEED ( LINK_CTRL2_TARGET_LINK_SPEED ), + .LINK_STATUS_SLOT_CLOCK_CONFIG ( LINK_STATUS_SLOT_CLOCK_CONFIG ), + .LL_ACK_TIMEOUT ( LL_ACK_TIMEOUT ), + .LL_ACK_TIMEOUT_EN ( LL_ACK_TIMEOUT_EN ), + .LL_ACK_TIMEOUT_FUNC ( LL_ACK_TIMEOUT_FUNC ), + .LL_REPLAY_TIMEOUT ( LL_REPLAY_TIMEOUT ), + .LL_REPLAY_TIMEOUT_EN ( LL_REPLAY_TIMEOUT_EN ), + .LL_REPLAY_TIMEOUT_FUNC ( LL_REPLAY_TIMEOUT_FUNC ), + .LTSSM_MAX_LINK_WIDTH ( LTSSM_MAX_LINK_WIDTH ), + .MPS_FORCE (MPS_FORCE), + .MSI_BASE_PTR ( MSI_BASE_PTR ), + .MSI_CAP_ID ( MSI_CAP_ID ), + .MSI_CAP_MULTIMSGCAP ( MSI_CAP_MULTIMSGCAP ), + .MSI_CAP_MULTIMSG_EXTENSION ( MSI_CAP_MULTIMSG_EXTENSION ), + .MSI_CAP_NEXTPTR ( MSI_CAP_NEXTPTR ), + .MSI_CAP_ON ( MSI_CAP_ON ), + .MSI_CAP_PER_VECTOR_MASKING_CAPABLE ( MSI_CAP_PER_VECTOR_MASKING_CAPABLE ), + .MSI_CAP_64_BIT_ADDR_CAPABLE ( MSI_CAP_64_BIT_ADDR_CAPABLE ), + .MSIX_BASE_PTR ( MSIX_BASE_PTR ), + .MSIX_CAP_ID ( MSIX_CAP_ID ), + .MSIX_CAP_NEXTPTR( MSIX_CAP_NEXTPTR ), + .MSIX_CAP_ON ( MSIX_CAP_ON ), + .MSIX_CAP_PBA_BIR( MSIX_CAP_PBA_BIR ), + .MSIX_CAP_PBA_OFFSET ( MSIX_CAP_PBA_OFFSET ), + .MSIX_CAP_TABLE_BIR ( MSIX_CAP_TABLE_BIR ), + .MSIX_CAP_TABLE_OFFSET ( MSIX_CAP_TABLE_OFFSET ), + .MSIX_CAP_TABLE_SIZE ( MSIX_CAP_TABLE_SIZE ), + .N_FTS_COMCLK_GEN1 ( N_FTS_COMCLK_GEN1 ), + .N_FTS_COMCLK_GEN2 ( N_FTS_COMCLK_GEN2 ), + .N_FTS_GEN1 ( N_FTS_GEN1 ), + .N_FTS_GEN2 ( N_FTS_GEN2 ), + .PCIE_BASE_PTR ( PCIE_BASE_PTR ), + .PCIE_CAP_CAPABILITY_ID ( PCIE_CAP_CAPABILITY_ID ), + .PCIE_CAP_CAPABILITY_VERSION ( PCIE_CAP_CAPABILITY_VERSION ), + .PCIE_CAP_DEVICE_PORT_TYPE ( PCIE_CAP_DEVICE_PORT_TYPE ), + .PCIE_CAP_NEXTPTR( PCIE_CAP_NEXTPTR ), + .PCIE_CAP_ON ( PCIE_CAP_ON ), + .PCIE_CAP_RSVD_15_14 ( PCIE_CAP_RSVD_15_14 ), + .PCIE_CAP_SLOT_IMPLEMENTED ( PCIE_CAP_SLOT_IMPLEMENTED ), + .PCIE_REVISION ( PCIE_REVISION ), + .PL_AUTO_CONFIG ( PL_AUTO_CONFIG ), + .PL_FAST_TRAIN ( PL_FAST_TRAIN ), + .PM_ASPML0S_TIMEOUT ( PM_ASPML0S_TIMEOUT ), + .PM_ASPML0S_TIMEOUT_EN ( PM_ASPML0S_TIMEOUT_EN ), + .PM_ASPML0S_TIMEOUT_FUNC ( PM_ASPML0S_TIMEOUT_FUNC ), + .PM_ASPM_FASTEXIT ( PM_ASPM_FASTEXIT ), + .PM_BASE_PTR ( PM_BASE_PTR ), + .PM_CAP_AUXCURRENT ( PM_CAP_AUXCURRENT ), + .PM_CAP_D1SUPPORT( PM_CAP_D1SUPPORT ), + .PM_CAP_D2SUPPORT( PM_CAP_D2SUPPORT ), + .PM_CAP_DSI ( PM_CAP_DSI ), + .PM_CAP_ID ( PM_CAP_ID ), + .PM_CAP_NEXTPTR ( PM_CAP_NEXTPTR ), + .PM_CAP_ON ( PM_CAP_ON ), + .PM_CAP_PME_CLOCK( PM_CAP_PME_CLOCK ), + .PM_CAP_PMESUPPORT ( PM_CAP_PMESUPPORT ), + .PM_CAP_RSVD_04 ( PM_CAP_RSVD_04 ), + .PM_CAP_VERSION ( PM_CAP_VERSION ), + .PM_CSR_B2B3 ( PM_CSR_B2B3 ), + .PM_CSR_BPCCEN ( PM_CSR_BPCCEN ), + .PM_CSR_NOSOFTRST( PM_CSR_NOSOFTRST ), + .PM_DATA0( PM_DATA0 ), + .PM_DATA1( PM_DATA1 ), + .PM_DATA2( PM_DATA2 ), + .PM_DATA3( PM_DATA3 ), + .PM_DATA4( PM_DATA4 ), + .PM_DATA5( PM_DATA5 ), + .PM_DATA6( PM_DATA6 ), + .PM_DATA7( PM_DATA7 ), + .PM_DATA_SCALE0 ( PM_DATA_SCALE0 ), + .PM_DATA_SCALE1 ( PM_DATA_SCALE1 ), + .PM_DATA_SCALE2 ( PM_DATA_SCALE2 ), + .PM_DATA_SCALE3 ( PM_DATA_SCALE3 ), + .PM_DATA_SCALE4 ( PM_DATA_SCALE4 ), + .PM_DATA_SCALE5 ( PM_DATA_SCALE5 ), + .PM_DATA_SCALE6 ( PM_DATA_SCALE6 ), + .PM_DATA_SCALE7 ( PM_DATA_SCALE7 ), + .PM_MF (PM_MF), + .RBAR_BASE_PTR (RBAR_BASE_PTR), + .RBAR_CAP_CONTROL_ENCODEDBAR0 (RBAR_CAP_CONTROL_ENCODEDBAR0), + .RBAR_CAP_CONTROL_ENCODEDBAR1 (RBAR_CAP_CONTROL_ENCODEDBAR1), + .RBAR_CAP_CONTROL_ENCODEDBAR2 (RBAR_CAP_CONTROL_ENCODEDBAR2), + .RBAR_CAP_CONTROL_ENCODEDBAR3 (RBAR_CAP_CONTROL_ENCODEDBAR3), + .RBAR_CAP_CONTROL_ENCODEDBAR4 (RBAR_CAP_CONTROL_ENCODEDBAR4), + .RBAR_CAP_CONTROL_ENCODEDBAR5 (RBAR_CAP_CONTROL_ENCODEDBAR5), + .RBAR_CAP_ID (RBAR_CAP_ID), + .RBAR_CAP_INDEX0 (RBAR_CAP_INDEX0), + .RBAR_CAP_INDEX1 (RBAR_CAP_INDEX1), + .RBAR_CAP_INDEX2 (RBAR_CAP_INDEX2), + .RBAR_CAP_INDEX3 (RBAR_CAP_INDEX3), + .RBAR_CAP_INDEX4 (RBAR_CAP_INDEX4), + .RBAR_CAP_INDEX5 (RBAR_CAP_INDEX5), + .RBAR_CAP_NEXTPTR (RBAR_CAP_NEXTPTR), + .RBAR_CAP_ON (RBAR_CAP_ON), + .RBAR_CAP_SUP0 (RBAR_CAP_SUP0), + .RBAR_CAP_SUP1 (RBAR_CAP_SUP1), + .RBAR_CAP_SUP2 (RBAR_CAP_SUP2), + .RBAR_CAP_SUP3 (RBAR_CAP_SUP3), + .RBAR_CAP_SUP4 (RBAR_CAP_SUP4), + .RBAR_CAP_SUP5 (RBAR_CAP_SUP5), + .RBAR_CAP_VERSION (RBAR_CAP_VERSION), + .RBAR_NUM (RBAR_NUM), + .RECRC_CHK (RECRC_CHK), + .RECRC_CHK_TRIM (RECRC_CHK_TRIM), + .ROOT_CAP_CRS_SW_VISIBILITY ( ROOT_CAP_CRS_SW_VISIBILITY ), + .RP_AUTO_SPD ( RP_AUTO_SPD ), + .RP_AUTO_SPD_LOOPCNT ( RP_AUTO_SPD_LOOPCNT ), + .SELECT_DLL_IF ( SELECT_DLL_IF ), + .SLOT_CAP_ATT_BUTTON_PRESENT ( SLOT_CAP_ATT_BUTTON_PRESENT ), + .SLOT_CAP_ATT_INDICATOR_PRESENT ( SLOT_CAP_ATT_INDICATOR_PRESENT ), + .SLOT_CAP_ELEC_INTERLOCK_PRESENT ( SLOT_CAP_ELEC_INTERLOCK_PRESENT ), + .SLOT_CAP_HOTPLUG_CAPABLE( SLOT_CAP_HOTPLUG_CAPABLE ), + .SLOT_CAP_HOTPLUG_SURPRISE ( SLOT_CAP_HOTPLUG_SURPRISE ), + .SLOT_CAP_MRL_SENSOR_PRESENT ( SLOT_CAP_MRL_SENSOR_PRESENT ), + .SLOT_CAP_NO_CMD_COMPLETED_SUPPORT ( SLOT_CAP_NO_CMD_COMPLETED_SUPPORT ), + .SLOT_CAP_PHYSICAL_SLOT_NUM ( SLOT_CAP_PHYSICAL_SLOT_NUM ), + .SLOT_CAP_POWER_CONTROLLER_PRESENT ( SLOT_CAP_POWER_CONTROLLER_PRESENT ), + .SLOT_CAP_POWER_INDICATOR_PRESENT( SLOT_CAP_POWER_INDICATOR_PRESENT ), + .SLOT_CAP_SLOT_POWER_LIMIT_SCALE ( SLOT_CAP_SLOT_POWER_LIMIT_SCALE ), + .SLOT_CAP_SLOT_POWER_LIMIT_VALUE ( SLOT_CAP_SLOT_POWER_LIMIT_VALUE ), + .SPARE_BIT0 ( SPARE_BIT0 ), + .SPARE_BIT1 ( SPARE_BIT1 ), + .SPARE_BIT2 ( SPARE_BIT2 ), + .SPARE_BIT3 ( SPARE_BIT3 ), + .SPARE_BIT4 ( SPARE_BIT4 ), + .SPARE_BIT5 ( SPARE_BIT5 ), + .SPARE_BIT6 ( SPARE_BIT6 ), + .SPARE_BIT7 ( SPARE_BIT7 ), + .SPARE_BIT8 ( SPARE_BIT8 ), + .SPARE_BYTE0 ( SPARE_BYTE0 ), + .SPARE_BYTE1 ( SPARE_BYTE1 ), + .SPARE_BYTE2 ( SPARE_BYTE2 ), + .SPARE_BYTE3 ( SPARE_BYTE3 ), + .SPARE_WORD0 ( SPARE_WORD0 ), + .SPARE_WORD1 ( SPARE_WORD1 ), + .SPARE_WORD2 ( SPARE_WORD2 ), + .SPARE_WORD3 ( SPARE_WORD3 ), + .SSL_MESSAGE_AUTO (SSL_MESSAGE_AUTO), + .TECRC_EP_INV ( TECRC_EP_INV ), + .TL_RBYPASS(TL_RBYPASS), + .TL_RX_RAM_RADDR_LATENCY ( TL_RX_RAM_RADDR_LATENCY ), + .TL_RX_RAM_RDATA_LATENCY ( TL_RX_RAM_RDATA_LATENCY ), + .TL_RX_RAM_WRITE_LATENCY ( TL_RX_RAM_WRITE_LATENCY ), + .TL_TFC_DISABLE ( TL_TFC_DISABLE ), + .TL_TX_CHECKS_DISABLE ( TL_TX_CHECKS_DISABLE ), + .TL_TX_RAM_RADDR_LATENCY ( TL_TX_RAM_RADDR_LATENCY ), + .TL_TX_RAM_RDATA_LATENCY ( TL_TX_RAM_RDATA_LATENCY ), + .TL_TX_RAM_WRITE_LATENCY ( TL_TX_RAM_WRITE_LATENCY ), + .TRN_DW (TRN_DW), + .TRN_NP_FC (TRN_NP_FC), + .UPCONFIG_CAPABLE( UPCONFIG_CAPABLE ), + .UPSTREAM_FACING ( UPSTREAM_FACING ), + .UR_ATOMIC (UR_ATOMIC), + .UR_CFG1 (UR_CFG1), + .UR_INV_REQ(UR_INV_REQ), + .UR_PRS_RESPONSE (UR_PRS_RESPONSE), + .USER_CLK2_DIV2 (USER_CLK2_DIV2), + .USER_CLK_FREQ ( USER_CLK_FREQ ), + .USE_RID_PINS (USE_RID_PINS), + .VC0_CPL_INFINITE( VC0_CPL_INFINITE ), + .VC0_RX_RAM_LIMIT( VC0_RX_RAM_LIMIT ), + .VC0_TOTAL_CREDITS_CD ( VC0_TOTAL_CREDITS_CD ), + .VC0_TOTAL_CREDITS_CH ( VC0_TOTAL_CREDITS_CH ), + .VC0_TOTAL_CREDITS_NPD (VC0_TOTAL_CREDITS_NPD), + .VC0_TOTAL_CREDITS_NPH ( VC0_TOTAL_CREDITS_NPH ), + .VC0_TOTAL_CREDITS_PD ( VC0_TOTAL_CREDITS_PD ), + .VC0_TOTAL_CREDITS_PH ( VC0_TOTAL_CREDITS_PH ), + .VC0_TX_LASTPACKET ( VC0_TX_LASTPACKET ), + .VC_BASE_PTR ( VC_BASE_PTR ), + .VC_CAP_ID ( VC_CAP_ID ), + .VC_CAP_NEXTPTR ( VC_CAP_NEXTPTR ), + .VC_CAP_ON ( VC_CAP_ON ), + .VC_CAP_REJECT_SNOOP_TRANSACTIONS( VC_CAP_REJECT_SNOOP_TRANSACTIONS ), + .VC_CAP_VERSION ( VC_CAP_VERSION ), + .VSEC_BASE_PTR ( VSEC_BASE_PTR ), + .VSEC_CAP_HDR_ID ( VSEC_CAP_HDR_ID ), + .VSEC_CAP_HDR_LENGTH ( VSEC_CAP_HDR_LENGTH ), + .VSEC_CAP_HDR_REVISION ( VSEC_CAP_HDR_REVISION ), + .VSEC_CAP_ID ( VSEC_CAP_ID ), + .VSEC_CAP_IS_LINK_VISIBLE( VSEC_CAP_IS_LINK_VISIBLE ), + .VSEC_CAP_NEXTPTR( VSEC_CAP_NEXTPTR ), + .VSEC_CAP_ON ( VSEC_CAP_ON ), + .VSEC_CAP_VERSION( VSEC_CAP_VERSION ), + .ENABLE_JTAG_DBG ( ENABLE_JTAG_DBG ) + ) pcie_7x_i ( + .trn_lnk_up ( trn_lnk_up ), + .trn_clk ( user_clk_out ), + .lnk_clk_en ( lnk_clk_en), + .user_rst_n ( user_rst_n ), + .received_func_lvl_rst_n ( cfg_received_func_lvl_rst_n ), + .sys_rst_n (~phy_rdy_n), + .pl_rst_n ( 1'b1 ), + .dl_rst_n ( 1'b1 ), + .tl_rst_n ( 1'b1 ), + .cm_sticky_rst_n ( 1'b1 ), + + .func_lvl_rst_n ( func_lvl_rst_n ), + .cm_rst_n ( cm_rst_n ), + .trn_rbar_hit ( trn_rbar_hit ), + .trn_rd ( trn_rd ), + .trn_recrc_err ( trn_recrc_err ), + .trn_reof ( trn_reof ), + .trn_rerrfwd ( trn_rerrfwd ), + .trn_rrem ( trn_rrem ), + .trn_rsof ( trn_rsof ), + .trn_rsrc_dsc ( trn_rsrc_dsc ), + .trn_rsrc_rdy ( trn_rsrc_rdy ), + .trn_rdst_rdy ( trn_rdst_rdy ), + .trn_rnp_ok ( rx_np_ok ), + .trn_rnp_req ( rx_np_req ), + .trn_rfcp_ret ( 1'b1 ), + .trn_tbuf_av ( tx_buf_av ), + .trn_tcfg_req ( tx_cfg_req ), + .trn_tdllp_dst_rdy ( ), + .trn_tdst_rdy ( trn_tdst_rdy ), + .trn_terr_drop ( tx_err_drop ), + .trn_tcfg_gnt ( trn_tcfg_gnt ), + .trn_td ( trn_td ), + .trn_tdllp_data ( 32'b0 ), + .trn_tdllp_src_rdy ( 1'b0 ), + .trn_tecrc_gen ( trn_tecrc_gen ), + .trn_teof ( trn_teof ), + .trn_terrfwd ( trn_terrfwd ), + .trn_trem ( trn_trem), + .trn_tsof ( trn_tsof ), + .trn_tsrc_dsc ( trn_tsrc_dsc ), + .trn_tsrc_rdy ( trn_tsrc_rdy ), + .trn_tstr ( trn_tstr ), + + .trn_fc_cpld ( fc_cpld ), + .trn_fc_cplh ( fc_cplh ), + .trn_fc_npd ( fc_npd ), + .trn_fc_nph ( fc_nph ), + .trn_fc_pd ( fc_pd ), + .trn_fc_ph ( fc_ph ), + .trn_fc_sel ( fc_sel ), + + .cfg_dev_id (cfg_dev_id), + .cfg_vend_id (cfg_vend_id), + .cfg_rev_id (cfg_rev_id), + .cfg_subsys_id (cfg_subsys_id), + .cfg_subsys_vend_id (cfg_subsys_vend_id), + .cfg_pciecap_interrupt_msgnum (cfg_pciecap_interrupt_msgnum), + + .cfg_bridge_serr_en (cfg_bridge_serr_en), + + .cfg_command_bus_master_enable ( cfg_command_bus_master_enable ), + .cfg_command_interrupt_disable ( cfg_command_interrupt_disable ), + .cfg_command_io_enable ( cfg_command_io_enable ), + .cfg_command_mem_enable ( cfg_command_mem_enable ), + .cfg_command_serr_en ( cfg_command_serr_en ), + .cfg_dev_control_aux_power_en ( cfg_dev_control_aux_power_en ), + .cfg_dev_control_corr_err_reporting_en ( cfg_dev_control_corr_err_reporting_en ), + .cfg_dev_control_enable_ro ( cfg_dev_control_enable_ro ), + .cfg_dev_control_ext_tag_en ( cfg_dev_control_ext_tag_en ), + .cfg_dev_control_fatal_err_reporting_en ( cfg_dev_control_fatal_err_reporting_en ), + .cfg_dev_control_max_payload ( cfg_dev_control_max_payload ), + .cfg_dev_control_max_read_req ( cfg_dev_control_max_read_req ), + .cfg_dev_control_non_fatal_reporting_en ( cfg_dev_control_non_fatal_reporting_en ), + .cfg_dev_control_no_snoop_en ( cfg_dev_control_no_snoop_en ), + .cfg_dev_control_phantom_en ( cfg_dev_control_phantom_en ), + .cfg_dev_control_ur_err_reporting_en ( cfg_dev_control_ur_err_reporting_en ), + .cfg_dev_control2_cpl_timeout_dis ( cfg_dev_control2_cpl_timeout_dis ), + .cfg_dev_control2_cpl_timeout_val ( cfg_dev_control2_cpl_timeout_val ), + .cfg_dev_control2_ari_forward_en ( cfg_dev_control2_ari_forward_en), + .cfg_dev_control2_atomic_requester_en ( cfg_dev_control2_atomic_requester_en), + .cfg_dev_control2_atomic_egress_block ( cfg_dev_control2_atomic_egress_block), + .cfg_dev_control2_ido_req_en ( cfg_dev_control2_ido_req_en), + .cfg_dev_control2_ido_cpl_en ( cfg_dev_control2_ido_cpl_en), + .cfg_dev_control2_ltr_en ( cfg_dev_control2_ltr_en), + .cfg_dev_control2_tlp_prefix_block ( cfg_dev_control2_tlp_prefix_block), + .cfg_dev_status_corr_err_detected ( cfg_dev_status_corr_err_detected ), + .cfg_dev_status_fatal_err_detected ( cfg_dev_status_fatal_err_detected ), + .cfg_dev_status_non_fatal_err_detected ( cfg_dev_status_non_fatal_err_detected ), + .cfg_dev_status_ur_detected ( cfg_dev_status_ur_detected ), + + .cfg_mgmt_do ( cfg_mgmt_do ), + .cfg_err_aer_headerlog_set_n ( cfg_err_aer_headerlog_set_n), + .cfg_err_aer_headerlog ( cfg_err_aer_headerlog), + .cfg_err_cpl_rdy_n ( cfg_err_cpl_rdy_n ), + .cfg_interrupt_do ( cfg_interrupt_do ), + .cfg_interrupt_mmenable ( cfg_interrupt_mmenable ), + .cfg_interrupt_msienable ( cfg_interrupt_msienable ), + .cfg_interrupt_msixenable ( cfg_interrupt_msixenable ), + .cfg_interrupt_msixfm ( cfg_interrupt_msixfm ), + .cfg_interrupt_rdy_n ( cfg_interrupt_rdy_n ), + .cfg_link_control_rcb ( cfg_link_control_rcb ), + .cfg_link_control_aspm_control ( cfg_link_control_aspm_control ), + .cfg_link_control_auto_bandwidth_int_en ( cfg_link_control_auto_bandwidth_int_en ), + .cfg_link_control_bandwidth_int_en ( cfg_link_control_bandwidth_int_en ), + .cfg_link_control_clock_pm_en ( cfg_link_control_clock_pm_en ), + .cfg_link_control_common_clock ( cfg_link_control_common_clock ), + .cfg_link_control_extended_sync ( cfg_link_control_extended_sync ), + .cfg_link_control_hw_auto_width_dis ( cfg_link_control_hw_auto_width_dis ), + .cfg_link_control_link_disable ( cfg_link_control_link_disable ), + .cfg_link_control_retrain_link ( cfg_link_control_retrain_link ), + .cfg_link_status_auto_bandwidth_status ( cfg_link_status_auto_bandwidth_status ), + .cfg_link_status_bandwidth_status ( cfg_link_status_bandwidth_status ), + .cfg_link_status_current_speed ( cfg_link_status_current_speed ), + .cfg_link_status_dll_active ( cfg_link_status_dll_active ), + .cfg_link_status_link_training ( cfg_link_status_link_training ), + .cfg_link_status_negotiated_width ( cfg_link_status_negotiated_width), + .cfg_msg_data ( cfg_msg_data ), + .cfg_msg_received ( cfg_msg_received ), + .cfg_msg_received_assert_int_a ( cfg_msg_received_assert_int_a), + .cfg_msg_received_assert_int_b ( cfg_msg_received_assert_int_b), + .cfg_msg_received_assert_int_c ( cfg_msg_received_assert_int_c), + .cfg_msg_received_assert_int_d ( cfg_msg_received_assert_int_d), + .cfg_msg_received_deassert_int_a ( cfg_msg_received_deassert_int_a), + .cfg_msg_received_deassert_int_b ( cfg_msg_received_deassert_int_b), + .cfg_msg_received_deassert_int_c ( cfg_msg_received_deassert_int_c), + .cfg_msg_received_deassert_int_d ( cfg_msg_received_deassert_int_d), + .cfg_msg_received_err_cor ( cfg_msg_received_err_cor), + .cfg_msg_received_err_fatal ( cfg_msg_received_err_fatal), + .cfg_msg_received_err_non_fatal ( cfg_msg_received_err_non_fatal), + .cfg_msg_received_pm_as_nak ( cfg_msg_received_pm_as_nak), + .cfg_msg_received_pme_to ( cfg_msg_received_pme_to ), + .cfg_msg_received_pme_to_ack ( cfg_msg_received_pme_to_ack), + .cfg_msg_received_pm_pme ( cfg_msg_received_pm_pme), + .cfg_msg_received_setslotpowerlimit ( cfg_msg_received_setslotpowerlimit), + .cfg_msg_received_unlock ( cfg_msg_received_unlock), + .cfg_pcie_link_state ( cfg_pcie_link_state ), + .cfg_pmcsr_pme_en ( cfg_pmcsr_pme_en), + .cfg_pmcsr_powerstate ( cfg_pmcsr_powerstate), + .cfg_pmcsr_pme_status ( cfg_pmcsr_pme_status), + .cfg_pm_rcv_as_req_l1_n ( cfg_pm_rcv_as_req_l1_n), + .cfg_pm_rcv_enter_l1_n ( cfg_pm_rcv_enter_l1_n), + .cfg_pm_rcv_enter_l23_n ( cfg_pm_rcv_enter_l23_n), + + .cfg_pm_rcv_req_ack_n ( cfg_pm_rcv_req_ack_n), + .cfg_mgmt_rd_wr_done_n ( cfg_mgmt_rd_wr_done_n ), + .cfg_slot_control_electromech_il_ctl_pulse (cfg_slot_control_electromech_il_ctl_pulse), + .cfg_root_control_syserr_corr_err_en ( cfg_root_control_syserr_corr_err_en), + .cfg_root_control_syserr_non_fatal_err_en ( cfg_root_control_syserr_non_fatal_err_en), + .cfg_root_control_syserr_fatal_err_en ( cfg_root_control_syserr_fatal_err_en), + .cfg_root_control_pme_int_en ( cfg_root_control_pme_int_en ), + .cfg_aer_ecrc_check_en ( cfg_aer_ecrc_check_en ), + .cfg_aer_ecrc_gen_en ( cfg_aer_ecrc_gen_en ), + .cfg_aer_rooterr_corr_err_reporting_en ( cfg_aer_rooterr_corr_err_reporting_en), + .cfg_aer_rooterr_non_fatal_err_reporting_en( cfg_aer_rooterr_non_fatal_err_reporting_en), + .cfg_aer_rooterr_fatal_err_reporting_en ( cfg_aer_rooterr_fatal_err_reporting_en), + .cfg_aer_rooterr_corr_err_received ( cfg_aer_rooterr_corr_err_received), + .cfg_aer_rooterr_non_fatal_err_received ( cfg_aer_rooterr_non_fatal_err_received), + .cfg_aer_rooterr_fatal_err_received ( cfg_aer_rooterr_fatal_err_received), + .cfg_aer_interrupt_msgnum ( cfg_aer_interrupt_msgnum ), + .cfg_transaction ( cfg_transaction), + .cfg_transaction_addr ( cfg_transaction_addr), + .cfg_transaction_type ( cfg_transaction_type), + .cfg_vc_tcvc_map ( cfg_vc_tcvc_map), + .cfg_mgmt_byte_en_n ( cfg_mgmt_byte_en_n ), + .cfg_mgmt_di ( cfg_mgmt_di ), + .cfg_ds_bus_number ( cfg_ds_bus_number ), + .cfg_ds_device_number ( cfg_ds_device_number ), + .cfg_ds_function_number ( cfg_ds_function_number ), + .cfg_dsn ( cfg_dsn ), + .cfg_mgmt_dwaddr ( cfg_mgmt_dwaddr ), + .cfg_err_acs_n ( 1'b1 ), + .cfg_err_cor_n ( cfg_err_cor_n ), + .cfg_err_cpl_abort_n ( cfg_err_cpl_abort_n ), + .cfg_err_cpl_timeout_n ( cfg_err_cpl_timeout_n ), + .cfg_err_cpl_unexpect_n ( cfg_err_cpl_unexpect_n ), + .cfg_err_ecrc_n ( cfg_err_ecrc_n ), + .cfg_err_locked_n ( cfg_err_locked_n ), + .cfg_err_posted_n ( cfg_err_posted_n ), + .cfg_err_tlp_cpl_header ( cfg_err_tlp_cpl_header ), + .cfg_err_ur_n ( cfg_err_ur_n ), + .cfg_err_malformed_n ( cfg_err_malformed_n ), + .cfg_err_poisoned_n ( cfg_err_poisoned_n), + .cfg_err_atomic_egress_blocked_n ( cfg_err_atomic_egress_blocked_n ), + .cfg_err_mc_blocked_n ( cfg_err_mc_blocked_n ), + .cfg_err_internal_uncor_n ( cfg_err_internal_uncor_n ), + .cfg_err_internal_cor_n ( cfg_err_internal_cor_n ), + .cfg_err_norecovery_n ( cfg_err_norecovery_n ), + + .cfg_interrupt_assert_n ( cfg_interrupt_assert_n ), + .cfg_interrupt_di ( cfg_interrupt_di ), + .cfg_interrupt_n ( cfg_interrupt_n ), + .cfg_interrupt_stat_n ( cfg_interrupt_stat_n), + .cfg_pm_send_pme_to_n ( cfg_pm_send_pme_to_n ), + .cfg_pm_turnoff_ok_n ( cfg_turnoff_ok_w ), + .cfg_pm_wake_n ( cfg_pm_wake_n ), + .cfg_pm_halt_aspm_l0s_n ( cfg_pm_halt_aspm_l0s_n ), + .cfg_pm_halt_aspm_l1_n ( cfg_pm_halt_aspm_l1_n ), + .cfg_pm_force_state_en_n ( cfg_pm_force_state_en_n ), + .cfg_pm_force_state ( cfg_pm_force_state ), + .cfg_force_mps ( cfg_force_mps ), + .cfg_force_common_clock_off ( cfg_force_common_clock_off ), + .cfg_force_extended_sync_on ( cfg_force_extended_sync_on ), + .cfg_port_number ( cfg_port_number ), + .cfg_mgmt_rd_en_n ( cfg_mgmt_rd_en_n ), + .cfg_trn_pending_n ( ~cfg_trn_pending ), + .cfg_mgmt_wr_en_n ( cfg_mgmt_wr_en_n ), + .cfg_mgmt_wr_readonly_n ( cfg_mgmt_wr_readonly_n ), + .cfg_mgmt_wr_rw1c_as_rw_n ( cfg_mgmt_wr_rw1c_as_rw_n ), + + .pl_initial_link_width ( pl_initial_link_width ), + .pl_lane_reversal_mode ( pl_lane_reversal_mode ), + .pl_link_gen2_cap ( pl_link_gen2_cap ), + .pl_link_partner_gen2_supported ( pl_link_partner_gen2_supported ), + .pl_link_upcfg_cap ( pl_link_upcfg_cap ), + .pl_ltssm_state ( pl_ltssm_state ), + .pl_phy_lnk_up_n ( pl_phy_lnk_up_n ), + .pl_received_hot_rst ( pl_received_hot_rst ), + .pl_rx_pm_state ( pl_rx_pm_state ), + .pl_sel_lnk_rate ( pl_sel_lnk_rate), + .pl_sel_lnk_width ( pl_sel_lnk_width ), + .pl_tx_pm_state ( pl_tx_pm_state ), + .pl_directed_link_auton ( pl_directed_link_auton ), + .pl_directed_link_change ( pl_directed_link_change ), + .pl_directed_link_speed ( pl_directed_link_speed ), + .pl_directed_link_width ( pl_directed_link_width ), + .pl_downstream_deemph_source ( pl_downstream_deemph_source ), + .pl_upstream_prefer_deemph ( pl_upstream_prefer_deemph ), + .pl_transmit_hot_rst ( pl_transmit_hot_rst ), + .pl_directed_ltssm_new_vld ( pl_directed_ltssm_new_vld ), + .pl_directed_ltssm_new ( pl_directed_ltssm_new ), + .pl_directed_ltssm_stall ( pl_directed_ltssm_stall ), + .pl_directed_change_done ( pl_directed_change_done ), + + .dbg_sclr_a ( dbg_sclr_a ), + .dbg_sclr_b ( dbg_sclr_b ), + .dbg_sclr_c ( dbg_sclr_c ), + .dbg_sclr_d ( dbg_sclr_d ), + .dbg_sclr_e ( dbg_sclr_e ), + .dbg_sclr_f ( dbg_sclr_f ), + .dbg_sclr_g ( dbg_sclr_g ), + .dbg_sclr_h ( dbg_sclr_h ), + .dbg_sclr_i ( dbg_sclr_i ), + .dbg_sclr_j ( dbg_sclr_j ), + .dbg_sclr_k ( dbg_sclr_k ), + + .dbg_vec_a ( dbg_vec_a ), + .dbg_vec_b ( dbg_vec_b ), + .dbg_vec_c ( dbg_vec_c ), + .pl_dbg_vec ( pl_dbg_vec ), + .dbg_mode ( dbg_mode ), + .dbg_sub_mode ( dbg_sub_mode ), + .pl_dbg_mode ( pl_dbg_mode ), + + .drp_do ( drp_do ), + .drp_rdy ( drp_rdy ), + .drp_clk ( drp_clk ), + .drp_addr ( drp_addr ), + .drp_en ( drp_en ), + .drp_di ( drp_di ), + .drp_we ( drp_we ), + + .ll2_tlp_rcv ( 1'b0 ), + .ll2_send_enter_l1 ( 1'b0 ), + .ll2_send_enter_l23 ( 1'b0 ), + .ll2_send_as_req_l1 ( 1'b0 ), + .ll2_send_pm_ack ( 1'b0 ), + .ll2_suspend_now ( 1'b0 ), + .ll2_tfc_init1_seq ( ), + .ll2_tfc_init2_seq ( ), + .ll2_suspend_ok ( ), + .ll2_tx_idle ( ), + .ll2_link_status ( ), + .ll2_receiver_err ( ), + .ll2_protocol_err ( ), + .ll2_bad_tlp_err ( ), + .ll2_bad_dllp_err ( ), + .ll2_replay_ro_err ( ), + .ll2_replay_to_err ( ), + .tl2_ppm_suspend_req ( 1'b0 ), + .tl2_aspm_suspend_credit_check ( 1'b0 ), + .tl2_ppm_suspend_ok ( ), + .tl2_aspm_suspend_req ( ), + .tl2_aspm_suspend_credit_check_ok ( ), + .tl2_err_hdr ( ), + .tl2_err_malformed ( ), + .tl2_err_rxoverflow ( ), + .tl2_err_fcpe ( ), + .pl2_directed_lstate ( 5'b0 ), + .pl2_suspend_ok ( ), + .pl2_recovery ( ), + .pl2_rx_elec_idle ( ), + .pl2_rx_pm_state ( ), + .pl2_l0_req ( ), + .pl2_link_up ( ), + .pl2_receiver_err ( ), + + .trn_rdllp_data (trn_rdllp_data ), + .trn_rdllp_src_rdy (trn_rdllp_src_rdy ), + + .pipe_clk ( pipe_clk ), + .user_clk2 ( user_clk2 ), + .user_clk ( user_clk ), + .user_clk_prebuf ( 1'b0 ), + .user_clk_prebuf_en ( 1'b0 ), + + .pipe_rx0_polarity ( pipe_rx0_polarity ), + .pipe_rx1_polarity ( pipe_rx1_polarity ), + .pipe_rx2_polarity ( pipe_rx2_polarity ), + .pipe_rx3_polarity ( pipe_rx3_polarity ), + .pipe_rx4_polarity ( pipe_rx4_polarity ), + .pipe_rx5_polarity ( pipe_rx5_polarity ), + .pipe_rx6_polarity ( pipe_rx6_polarity ), + .pipe_rx7_polarity ( pipe_rx7_polarity ), + .pipe_tx0_compliance ( pipe_tx0_compliance ), + .pipe_tx1_compliance ( pipe_tx1_compliance ), + .pipe_tx2_compliance ( pipe_tx2_compliance ), + .pipe_tx3_compliance ( pipe_tx3_compliance ), + .pipe_tx4_compliance ( pipe_tx4_compliance ), + .pipe_tx5_compliance ( pipe_tx5_compliance ), + .pipe_tx6_compliance ( pipe_tx6_compliance ), + .pipe_tx7_compliance ( pipe_tx7_compliance ), + .pipe_tx0_char_is_k ( pipe_tx0_char_is_k ), + .pipe_tx1_char_is_k ( pipe_tx1_char_is_k ), + .pipe_tx2_char_is_k ( pipe_tx2_char_is_k ), + .pipe_tx3_char_is_k ( pipe_tx3_char_is_k ), + .pipe_tx4_char_is_k ( pipe_tx4_char_is_k ), + .pipe_tx5_char_is_k ( pipe_tx5_char_is_k ), + .pipe_tx6_char_is_k ( pipe_tx6_char_is_k ), + .pipe_tx7_char_is_k ( pipe_tx7_char_is_k ), + .pipe_tx0_data ( pipe_tx0_data ), + .pipe_tx1_data ( pipe_tx1_data ), + .pipe_tx2_data ( pipe_tx2_data ), + .pipe_tx3_data ( pipe_tx3_data ), + .pipe_tx4_data ( pipe_tx4_data ), + .pipe_tx5_data ( pipe_tx5_data ), + .pipe_tx6_data ( pipe_tx6_data ), + .pipe_tx7_data ( pipe_tx7_data ), + .pipe_tx0_elec_idle ( pipe_tx0_elec_idle ), + .pipe_tx1_elec_idle ( pipe_tx1_elec_idle ), + .pipe_tx2_elec_idle ( pipe_tx2_elec_idle ), + .pipe_tx3_elec_idle ( pipe_tx3_elec_idle ), + .pipe_tx4_elec_idle ( pipe_tx4_elec_idle ), + .pipe_tx5_elec_idle ( pipe_tx5_elec_idle ), + .pipe_tx6_elec_idle ( pipe_tx6_elec_idle ), + .pipe_tx7_elec_idle ( pipe_tx7_elec_idle ), + .pipe_tx0_powerdown ( pipe_tx0_powerdown ), + .pipe_tx1_powerdown ( pipe_tx1_powerdown ), + .pipe_tx2_powerdown ( pipe_tx2_powerdown ), + .pipe_tx3_powerdown ( pipe_tx3_powerdown ), + .pipe_tx4_powerdown ( pipe_tx4_powerdown ), + .pipe_tx5_powerdown ( pipe_tx5_powerdown ), + .pipe_tx6_powerdown ( pipe_tx6_powerdown ), + .pipe_tx7_powerdown ( pipe_tx7_powerdown ), + + .pipe_rx0_char_is_k ( pipe_rx0_char_is_k ), + .pipe_rx1_char_is_k ( pipe_rx1_char_is_k ), + .pipe_rx2_char_is_k ( pipe_rx2_char_is_k ), + .pipe_rx3_char_is_k ( pipe_rx3_char_is_k ), + .pipe_rx4_char_is_k ( pipe_rx4_char_is_k ), + .pipe_rx5_char_is_k ( pipe_rx5_char_is_k ), + .pipe_rx6_char_is_k ( pipe_rx6_char_is_k ), + .pipe_rx7_char_is_k ( pipe_rx7_char_is_k ), + .pipe_rx0_valid ( pipe_rx0_valid ), + .pipe_rx1_valid ( pipe_rx1_valid ), + .pipe_rx2_valid ( pipe_rx2_valid ), + .pipe_rx3_valid ( pipe_rx3_valid ), + .pipe_rx4_valid ( pipe_rx4_valid ), + .pipe_rx5_valid ( pipe_rx5_valid ), + .pipe_rx6_valid ( pipe_rx6_valid ), + .pipe_rx7_valid ( pipe_rx7_valid ), + .pipe_rx0_data ( pipe_rx0_data ), + .pipe_rx1_data ( pipe_rx1_data ), + .pipe_rx2_data ( pipe_rx2_data ), + .pipe_rx3_data ( pipe_rx3_data ), + .pipe_rx4_data ( pipe_rx4_data ), + .pipe_rx5_data ( pipe_rx5_data ), + .pipe_rx6_data ( pipe_rx6_data ), + .pipe_rx7_data ( pipe_rx7_data ), + .pipe_rx0_chanisaligned ( pipe_rx0_chanisaligned ), + .pipe_rx1_chanisaligned ( pipe_rx1_chanisaligned ), + .pipe_rx2_chanisaligned ( pipe_rx2_chanisaligned ), + .pipe_rx3_chanisaligned ( pipe_rx3_chanisaligned ), + .pipe_rx4_chanisaligned ( pipe_rx4_chanisaligned ), + .pipe_rx5_chanisaligned ( pipe_rx5_chanisaligned ), + .pipe_rx6_chanisaligned ( pipe_rx6_chanisaligned ), + .pipe_rx7_chanisaligned ( pipe_rx7_chanisaligned ), + .pipe_rx0_status ( pipe_rx0_status ), + .pipe_rx1_status ( pipe_rx1_status ), + .pipe_rx2_status ( pipe_rx2_status ), + .pipe_rx3_status ( pipe_rx3_status ), + .pipe_rx4_status ( pipe_rx4_status ), + .pipe_rx5_status ( pipe_rx5_status ), + .pipe_rx6_status ( pipe_rx6_status ), + .pipe_rx7_status ( pipe_rx7_status ), + .pipe_rx0_phy_status ( pipe_rx0_phy_status ), + .pipe_rx1_phy_status ( pipe_rx1_phy_status ), + .pipe_rx2_phy_status ( pipe_rx2_phy_status ), + .pipe_rx3_phy_status ( pipe_rx3_phy_status ), + .pipe_rx4_phy_status ( pipe_rx4_phy_status ), + .pipe_rx5_phy_status ( pipe_rx5_phy_status ), + .pipe_rx6_phy_status ( pipe_rx6_phy_status ), + .pipe_rx7_phy_status ( pipe_rx7_phy_status ), + .pipe_tx_deemph ( pipe_tx_deemph ), + .pipe_tx_margin ( pipe_tx_margin ), + .pipe_tx_reset ( pipe_tx_reset ), + .pipe_tx_rcvr_det ( pipe_tx_rcvr_det ), + .pipe_tx_rate ( pipe_tx_rate ), + + .pipe_rx0_elec_idle ( pipe_rx0_elec_idle ), + .pipe_rx1_elec_idle ( pipe_rx1_elec_idle ), + .pipe_rx2_elec_idle ( pipe_rx2_elec_idle ), + .pipe_rx3_elec_idle ( pipe_rx3_elec_idle ), + .pipe_rx4_elec_idle ( pipe_rx4_elec_idle ), + .pipe_rx5_elec_idle ( pipe_rx5_elec_idle ), + .pipe_rx6_elec_idle ( pipe_rx6_elec_idle ), + .pipe_rx7_elec_idle ( pipe_rx7_elec_idle ) + ); + + //------------------------------------------------------------------------------------------------------------------// + // PIPE Interface PIPELINE Module // + //------------------------------------------------------------------------------------------------------------------// +pcie_7x_0_pcie_pipe_pipeline # ( + + .LINK_CAP_MAX_LINK_WIDTH ( LINK_CAP_MAX_LINK_WIDTH ), + .PIPE_PIPELINE_STAGES ( PIPE_PIPELINE_STAGES ) + + ) + pcie_pipe_pipeline_i ( + + // Pipe Per-Link Signals + .pipe_tx_rcvr_det_i (pipe_tx_rcvr_det), + .pipe_tx_reset_i (1'b0), //MV? + .pipe_tx_rate_i (pipe_tx_rate), + .pipe_tx_deemph_i (pipe_tx_deemph), + .pipe_tx_margin_i (pipe_tx_margin), + .pipe_tx_swing_i (1'b0), + + .pipe_tx_rcvr_det_o (pipe_tx_rcvr_det_gt), + .pipe_tx_reset_o ( ), + .pipe_tx_rate_o (pipe_tx_rate_gt), + .pipe_tx_deemph_o (pipe_tx_deemph_gt), + .pipe_tx_margin_o (pipe_tx_margin_gt), + .pipe_tx_swing_o ( ), + + // Pipe Per-Lane Signals - Lane 0 + + .pipe_rx0_char_is_k_o (pipe_rx0_char_is_k ), + .pipe_rx0_data_o (pipe_rx0_data ), + .pipe_rx0_valid_o (pipe_rx0_valid ), + .pipe_rx0_chanisaligned_o (pipe_rx0_chanisaligned ), + .pipe_rx0_status_o (pipe_rx0_status ), + .pipe_rx0_phy_status_o (pipe_rx0_phy_status ), + .pipe_rx0_elec_idle_i (pipe_rx0_elec_idle_gt ), + .pipe_rx0_polarity_i (pipe_rx0_polarity ), + .pipe_tx0_compliance_i (pipe_tx0_compliance ), + .pipe_tx0_char_is_k_i (pipe_tx0_char_is_k ), + .pipe_tx0_data_i (pipe_tx0_data ), + .pipe_tx0_elec_idle_i (pipe_tx0_elec_idle ), + .pipe_tx0_powerdown_i (pipe_tx0_powerdown ), + + .pipe_rx0_char_is_k_i (pipe_rx0_char_is_k_gt ), + .pipe_rx0_data_i (pipe_rx0_data_gt ), + .pipe_rx0_valid_i (pipe_rx0_valid_gt ), + .pipe_rx0_chanisaligned_i (pipe_rx0_chanisaligned_gt), + .pipe_rx0_status_i (pipe_rx0_status_gt ), + .pipe_rx0_phy_status_i (pipe_rx0_phy_status_gt ), + .pipe_rx0_elec_idle_o (pipe_rx0_elec_idle ), + .pipe_rx0_polarity_o (pipe_rx0_polarity_gt ), + .pipe_tx0_compliance_o (pipe_tx0_compliance_gt ), + .pipe_tx0_char_is_k_o (pipe_tx0_char_is_k_gt ), + .pipe_tx0_data_o (pipe_tx0_data_gt ), + .pipe_tx0_elec_idle_o (pipe_tx0_elec_idle_gt ), + .pipe_tx0_powerdown_o (pipe_tx0_powerdown_gt ), + + // Pipe Per-Lane Signals - Lane 1 + + .pipe_rx1_char_is_k_o (pipe_rx1_char_is_k ), + .pipe_rx1_data_o (pipe_rx1_data ), + .pipe_rx1_valid_o (pipe_rx1_valid ), + .pipe_rx1_chanisaligned_o (pipe_rx1_chanisaligned ), + .pipe_rx1_status_o (pipe_rx1_status ), + .pipe_rx1_phy_status_o (pipe_rx1_phy_status ), + .pipe_rx1_elec_idle_i (pipe_rx1_elec_idle_gt ), + .pipe_rx1_polarity_i (pipe_rx1_polarity ), + .pipe_tx1_compliance_i (pipe_tx1_compliance ), + .pipe_tx1_char_is_k_i (pipe_tx1_char_is_k ), + .pipe_tx1_data_i (pipe_tx1_data ), + .pipe_tx1_elec_idle_i (pipe_tx1_elec_idle ), + .pipe_tx1_powerdown_i (pipe_tx1_powerdown ), + + .pipe_rx1_char_is_k_i (pipe_rx1_char_is_k_gt ), + .pipe_rx1_data_i (pipe_rx1_data_gt ), + .pipe_rx1_valid_i (pipe_rx1_valid_gt ), + .pipe_rx1_chanisaligned_i (pipe_rx1_chanisaligned_gt), + .pipe_rx1_status_i (pipe_rx1_status_gt ), + .pipe_rx1_phy_status_i (pipe_rx1_phy_status_gt ), + .pipe_rx1_elec_idle_o (pipe_rx1_elec_idle ), + .pipe_rx1_polarity_o (pipe_rx1_polarity_gt ), + .pipe_tx1_compliance_o (pipe_tx1_compliance_gt ), + .pipe_tx1_char_is_k_o (pipe_tx1_char_is_k_gt ), + .pipe_tx1_data_o (pipe_tx1_data_gt ), + .pipe_tx1_elec_idle_o (pipe_tx1_elec_idle_gt ), + .pipe_tx1_powerdown_o (pipe_tx1_powerdown_gt ), + + // Pipe Per-Lane Signals - Lane 2 + + .pipe_rx2_char_is_k_o (pipe_rx2_char_is_k ), + .pipe_rx2_data_o (pipe_rx2_data ), + .pipe_rx2_valid_o (pipe_rx2_valid ), + .pipe_rx2_chanisaligned_o (pipe_rx2_chanisaligned ), + .pipe_rx2_status_o (pipe_rx2_status ), + .pipe_rx2_phy_status_o (pipe_rx2_phy_status ), + .pipe_rx2_elec_idle_i (pipe_rx2_elec_idle_gt ), + .pipe_rx2_polarity_i (pipe_rx2_polarity ), + .pipe_tx2_compliance_i (pipe_tx2_compliance ), + .pipe_tx2_char_is_k_i (pipe_tx2_char_is_k ), + .pipe_tx2_data_i (pipe_tx2_data ), + .pipe_tx2_elec_idle_i (pipe_tx2_elec_idle ), + .pipe_tx2_powerdown_i (pipe_tx2_powerdown ), + + .pipe_rx2_char_is_k_i (pipe_rx2_char_is_k_gt ), + .pipe_rx2_data_i (pipe_rx2_data_gt ), + .pipe_rx2_valid_i (pipe_rx2_valid_gt ), + .pipe_rx2_chanisaligned_i (pipe_rx2_chanisaligned_gt), + .pipe_rx2_status_i (pipe_rx2_status_gt ), + .pipe_rx2_phy_status_i (pipe_rx2_phy_status_gt ), + .pipe_rx2_elec_idle_o (pipe_rx2_elec_idle ), + .pipe_rx2_polarity_o (pipe_rx2_polarity_gt ), + .pipe_tx2_compliance_o (pipe_tx2_compliance_gt ), + .pipe_tx2_char_is_k_o (pipe_tx2_char_is_k_gt ), + .pipe_tx2_data_o (pipe_tx2_data_gt ), + .pipe_tx2_elec_idle_o (pipe_tx2_elec_idle_gt ), + .pipe_tx2_powerdown_o (pipe_tx2_powerdown_gt ), + + // Pipe Per-Lane Signals - Lane 3 + + .pipe_rx3_char_is_k_o (pipe_rx3_char_is_k ), + .pipe_rx3_data_o (pipe_rx3_data ), + .pipe_rx3_valid_o (pipe_rx3_valid ), + .pipe_rx3_chanisaligned_o (pipe_rx3_chanisaligned ), + .pipe_rx3_status_o (pipe_rx3_status ), + .pipe_rx3_phy_status_o (pipe_rx3_phy_status ), + .pipe_rx3_elec_idle_i (pipe_rx3_elec_idle_gt ), + .pipe_rx3_polarity_i (pipe_rx3_polarity ), + .pipe_tx3_compliance_i (pipe_tx3_compliance ), + .pipe_tx3_char_is_k_i (pipe_tx3_char_is_k ), + .pipe_tx3_data_i (pipe_tx3_data ), + .pipe_tx3_elec_idle_i (pipe_tx3_elec_idle ), + .pipe_tx3_powerdown_i (pipe_tx3_powerdown ), + + .pipe_rx3_char_is_k_i (pipe_rx3_char_is_k_gt ), + .pipe_rx3_data_i (pipe_rx3_data_gt ), + .pipe_rx3_valid_i (pipe_rx3_valid_gt ), + .pipe_rx3_chanisaligned_i (pipe_rx3_chanisaligned_gt), + .pipe_rx3_status_i (pipe_rx3_status_gt ), + .pipe_rx3_phy_status_i (pipe_rx3_phy_status_gt ), + .pipe_rx3_elec_idle_o (pipe_rx3_elec_idle ), + .pipe_rx3_polarity_o (pipe_rx3_polarity_gt ), + .pipe_tx3_compliance_o (pipe_tx3_compliance_gt ), + .pipe_tx3_char_is_k_o (pipe_tx3_char_is_k_gt ), + .pipe_tx3_data_o (pipe_tx3_data_gt ), + .pipe_tx3_elec_idle_o (pipe_tx3_elec_idle_gt ), + .pipe_tx3_powerdown_o (pipe_tx3_powerdown_gt ), + + // Pipe Per-Lane Signals - Lane 4 + + .pipe_rx4_char_is_k_o (pipe_rx4_char_is_k ), + .pipe_rx4_data_o (pipe_rx4_data ), + .pipe_rx4_valid_o (pipe_rx4_valid ), + .pipe_rx4_chanisaligned_o (pipe_rx4_chanisaligned ), + .pipe_rx4_status_o (pipe_rx4_status ), + .pipe_rx4_phy_status_o (pipe_rx4_phy_status ), + .pipe_rx4_elec_idle_i (pipe_rx4_elec_idle_gt ), + .pipe_rx4_polarity_i (pipe_rx4_polarity ), + .pipe_tx4_compliance_i (pipe_tx4_compliance ), + .pipe_tx4_char_is_k_i (pipe_tx4_char_is_k ), + .pipe_tx4_data_i (pipe_tx4_data ), + .pipe_tx4_elec_idle_i (pipe_tx4_elec_idle ), + .pipe_tx4_powerdown_i (pipe_tx4_powerdown ), + .pipe_rx4_char_is_k_i (pipe_rx4_char_is_k_gt ), + .pipe_rx4_data_i (pipe_rx4_data_gt ), + .pipe_rx4_valid_i (pipe_rx4_valid_gt ), + .pipe_rx4_chanisaligned_i (pipe_rx4_chanisaligned_gt), + .pipe_rx4_status_i (pipe_rx4_status_gt ), + .pipe_rx4_phy_status_i (pipe_rx4_phy_status_gt ), + .pipe_rx4_elec_idle_o (pipe_rx4_elec_idle ), + .pipe_rx4_polarity_o (pipe_rx4_polarity_gt ), + .pipe_tx4_compliance_o (pipe_tx4_compliance_gt ), + .pipe_tx4_char_is_k_o (pipe_tx4_char_is_k_gt ), + .pipe_tx4_data_o (pipe_tx4_data_gt ), + .pipe_tx4_elec_idle_o (pipe_tx4_elec_idle_gt ), + .pipe_tx4_powerdown_o (pipe_tx4_powerdown_gt ), + + // Pipe Per-Lane Signals - Lane 5 + + .pipe_rx5_char_is_k_o (pipe_rx5_char_is_k ), + .pipe_rx5_data_o (pipe_rx5_data ), + .pipe_rx5_valid_o (pipe_rx5_valid ), + .pipe_rx5_chanisaligned_o (pipe_rx5_chanisaligned ), + .pipe_rx5_status_o (pipe_rx5_status ), + .pipe_rx5_phy_status_o (pipe_rx5_phy_status ), + .pipe_rx5_elec_idle_i (pipe_rx5_elec_idle_gt ), + .pipe_rx5_polarity_i (pipe_rx5_polarity ), + .pipe_tx5_compliance_i (pipe_tx5_compliance ), + .pipe_tx5_char_is_k_i (pipe_tx5_char_is_k ), + .pipe_tx5_data_i (pipe_tx5_data ), + .pipe_tx5_elec_idle_i (pipe_tx5_elec_idle ), + .pipe_tx5_powerdown_i (pipe_tx5_powerdown ), + .pipe_rx5_char_is_k_i (pipe_rx5_char_is_k_gt ), + .pipe_rx5_data_i (pipe_rx5_data_gt ), + .pipe_rx5_valid_i (pipe_rx5_valid_gt ), + .pipe_rx5_chanisaligned_i (pipe_rx5_chanisaligned_gt), + .pipe_rx5_status_i (pipe_rx5_status_gt ), + .pipe_rx5_phy_status_i (pipe_rx5_phy_status_gt ), + .pipe_rx5_elec_idle_o (pipe_rx5_elec_idle ), + .pipe_rx5_polarity_o (pipe_rx5_polarity_gt ), + .pipe_tx5_compliance_o (pipe_tx5_compliance_gt ), + .pipe_tx5_char_is_k_o (pipe_tx5_char_is_k_gt ), + .pipe_tx5_data_o (pipe_tx5_data_gt ), + .pipe_tx5_elec_idle_o (pipe_tx5_elec_idle_gt ), + .pipe_tx5_powerdown_o (pipe_tx5_powerdown_gt ), + + // Pipe Per-Lane Signals - Lane 6 + + .pipe_rx6_char_is_k_o (pipe_rx6_char_is_k ), + .pipe_rx6_data_o (pipe_rx6_data ), + .pipe_rx6_valid_o (pipe_rx6_valid ), + .pipe_rx6_chanisaligned_o (pipe_rx6_chanisaligned ), + .pipe_rx6_status_o (pipe_rx6_status ), + .pipe_rx6_phy_status_o (pipe_rx6_phy_status ), + .pipe_rx6_elec_idle_i (pipe_rx6_elec_idle_gt ), + .pipe_rx6_polarity_i (pipe_rx6_polarity ), + .pipe_tx6_compliance_i (pipe_tx6_compliance ), + .pipe_tx6_char_is_k_i (pipe_tx6_char_is_k ), + .pipe_tx6_data_i (pipe_tx6_data ), + .pipe_tx6_elec_idle_i (pipe_tx6_elec_idle ), + .pipe_tx6_powerdown_i (pipe_tx6_powerdown ), + .pipe_rx6_char_is_k_i (pipe_rx6_char_is_k_gt ), + .pipe_rx6_data_i (pipe_rx6_data_gt ), + .pipe_rx6_valid_i (pipe_rx6_valid_gt ), + .pipe_rx6_chanisaligned_i (pipe_rx6_chanisaligned_gt), + .pipe_rx6_status_i (pipe_rx6_status_gt ), + .pipe_rx6_phy_status_i (pipe_rx6_phy_status_gt ), + .pipe_rx6_elec_idle_o (pipe_rx6_elec_idle ), + .pipe_rx6_polarity_o (pipe_rx6_polarity_gt ), + .pipe_tx6_compliance_o (pipe_tx6_compliance_gt ), + .pipe_tx6_char_is_k_o (pipe_tx6_char_is_k_gt ), + .pipe_tx6_data_o (pipe_tx6_data_gt ), + .pipe_tx6_elec_idle_o (pipe_tx6_elec_idle_gt ), + .pipe_tx6_powerdown_o (pipe_tx6_powerdown_gt ), + + // Pipe Per-Lane Signals - Lane 7 + + .pipe_rx7_char_is_k_o (pipe_rx7_char_is_k ), + .pipe_rx7_data_o (pipe_rx7_data ), + .pipe_rx7_valid_o (pipe_rx7_valid ), + .pipe_rx7_chanisaligned_o (pipe_rx7_chanisaligned ), + .pipe_rx7_status_o (pipe_rx7_status ), + .pipe_rx7_phy_status_o (pipe_rx7_phy_status ), + .pipe_rx7_elec_idle_i (pipe_rx7_elec_idle_gt ), + .pipe_rx7_polarity_i (pipe_rx7_polarity ), + .pipe_tx7_compliance_i (pipe_tx7_compliance ), + .pipe_tx7_char_is_k_i (pipe_tx7_char_is_k ), + .pipe_tx7_data_i (pipe_tx7_data ), + .pipe_tx7_elec_idle_i (pipe_tx7_elec_idle ), + .pipe_tx7_powerdown_i (pipe_tx7_powerdown ), + .pipe_rx7_char_is_k_i (pipe_rx7_char_is_k_gt ), + .pipe_rx7_data_i (pipe_rx7_data_gt ), + .pipe_rx7_valid_i (pipe_rx7_valid_gt ), + .pipe_rx7_chanisaligned_i (pipe_rx7_chanisaligned_gt), + .pipe_rx7_status_i (pipe_rx7_status_gt ), + .pipe_rx7_phy_status_i (pipe_rx7_phy_status_gt ), + .pipe_rx7_elec_idle_o (pipe_rx7_elec_idle ), + .pipe_rx7_polarity_o (pipe_rx7_polarity_gt ), + .pipe_tx7_compliance_o (pipe_tx7_compliance_gt ), + .pipe_tx7_char_is_k_o (pipe_tx7_char_is_k_gt ), + .pipe_tx7_data_o (pipe_tx7_data_gt ), + .pipe_tx7_elec_idle_o (pipe_tx7_elec_idle_gt ), + .pipe_tx7_powerdown_o (pipe_tx7_powerdown_gt ), + + // Non PIPE signals + .pipe_clk (pipe_clk ), + .rst_n (phy_rdy_n ) + ); + + + +endmodule + diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_drp.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_drp.v new file mode 100644 index 0000000..d81e272 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_drp.v @@ -0,0 +1,782 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_pipe_drp.v +// Version : 3.3 +//------------------------------------------------------------------------------ +// Filename : pipe_drp.v +// Description : PIPE DRP Module for 7 Series Transceiver +// Version : 20.0 +//------------------------------------------------------------------------------ + + + +`timescale 1ns / 1ps + + + +//---------- PIPE DRP Module --------------------------------------------------- +module pcie_7x_0_pipe_drp # +( + + parameter PCIE_GT_DEVICE = "GTX", // PCIe GT device + parameter PCIE_USE_MODE = "3.0", // PCIe use mode + parameter PCIE_ASYNC_EN = "FALSE", // PCIe async mode + parameter PCIE_PLL_SEL = "CPLL", // PCIe PLL select for Gen1/Gen2 only + parameter PCIE_AUX_CDR_GEN3_EN = "TRUE", // PCIe AUX CDR Gen3 enable + parameter PCIE_TXBUF_EN = "FALSE", // PCIe TX buffer enable for Gen1/Gen2 only + parameter PCIE_RXBUF_EN = "TRUE", // PCIe RX buffer enable for Gen3 only + parameter PCIE_TXSYNC_MODE = 0, // PCIe TX sync mode + parameter PCIE_RXSYNC_MODE = 0, // PCIe RX sync mode + parameter LOAD_CNT_MAX = 2'd1, // Load max count + parameter INDEX_MAX = 5'd21 // Index max count + +) + +( + + //---------- Input ------------------------------------- + input DRP_CLK, + input DRP_RST_N, + input DRP_GTXRESET, + input [ 1:0] DRP_RATE, + input DRP_X16X20_MODE, + input DRP_X16, + input DRP_START, + input [15:0] DRP_DO, + input DRP_RDY, + + //---------- Output ------------------------------------ + output [ 8:0] DRP_ADDR, + output DRP_EN, + output [15:0] DRP_DI, + output DRP_WE, + output DRP_DONE, + output [ 2:0] DRP_FSM + +); + + //---------- Input Registers --------------------------- +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg gtxreset_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 1:0] rate_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg x16x20_mode_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg x16_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg start_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [15:0] do_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rdy_reg1; + +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg gtxreset_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 1:0] rate_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg x16x20_mode_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg x16_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg start_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [15:0] do_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rdy_reg2; + + //---------- Internal Signals -------------------------- + reg [ 1:0] load_cnt = 2'd0; + reg [ 4:0] index = 5'd0; + reg mode = 1'd0; + reg [ 8:0] addr_reg = 9'd0; + reg [15:0] di_reg = 16'd0; + + //---------- Output Registers -------------------------- + reg done = 1'd0; + reg [ 2:0] fsm = 0; + + //---------- DRP Address ------------------------------- + // DRP access for *RXCDR_EIDLE includes + // - [11] RXCDR_HOLD_DURING_EIDLE + // - [12] RXCDR_FR_RESET_ON_EIDLE + // - [13] RXCDR_PH_RESET_ON_EIDLE + //------------------------------------------------------ + localparam ADDR_PCS_RSVD_ATTR = 9'h06F; + localparam ADDR_TXOUT_DIV = 9'h088; + localparam ADDR_RXOUT_DIV = 9'h088; + localparam ADDR_TX_DATA_WIDTH = 9'h06B; + localparam ADDR_TX_INT_DATAWIDTH = 9'h06B; + localparam ADDR_RX_DATA_WIDTH = 9'h011; + localparam ADDR_RX_INT_DATAWIDTH = 9'h011; + localparam ADDR_TXBUF_EN = 9'h01C; + localparam ADDR_RXBUF_EN = 9'h09D; + localparam ADDR_TX_XCLK_SEL = 9'h059; + localparam ADDR_RX_XCLK_SEL = 9'h059; + localparam ADDR_CLK_CORRECT_USE = 9'h044; + localparam ADDR_TX_DRIVE_MODE = 9'h019; + localparam ADDR_RXCDR_EIDLE = 9'h0A7; + localparam ADDR_RX_DFE_LPM_EIDLE = 9'h01E; + localparam ADDR_PMA_RSV_A = 9'h099; + localparam ADDR_PMA_RSV_B = 9'h09A; + localparam ADDR_RXCDR_CFG_A = 9'h0A8; + localparam ADDR_RXCDR_CFG_B = 9'h0A9; + localparam ADDR_RXCDR_CFG_C = 9'h0AA; + localparam ADDR_RXCDR_CFG_D = 9'h0AB; + localparam ADDR_RXCDR_CFG_E = 9'h0AC; + localparam ADDR_RXCDR_CFG_F = 9'h0AD; // GTH only + + //---------- DRP Mask ---------------------------------- + localparam MASK_PCS_RSVD_ATTR = 16'b1111111111111001; // Unmask bit [ 2: 1] + localparam MASK_TXOUT_DIV = 16'b1111111110001111; // Unmask bit [ 6: 4] + localparam MASK_RXOUT_DIV = 16'b1111111111111000; // Unmask bit [ 2: 0] + localparam MASK_TX_DATA_WIDTH = 16'b1111111111111000; // Unmask bit [ 2: 0] + localparam MASK_TX_INT_DATAWIDTH = 16'b1111111111101111; // Unmask bit [ 4] + localparam MASK_RX_DATA_WIDTH = 16'b1100011111111111; // Unmask bit [13:11] + localparam MASK_X16X20_RX_DATA_WIDTH = 16'b1111011111111111; // Unmask bit [ 11] // for x16 or x20 mode only + localparam MASK_RX_INT_DATAWIDTH = 16'b1011111111111111; // Unmask bit [ 14] + localparam MASK_TXBUF_EN = 16'b1011111111111111; // Unmask bit [ 14] + localparam MASK_RXBUF_EN = 16'b1111111111111101; // Unmask bit [ 1] + localparam MASK_TX_XCLK_SEL = 16'b1111111101111111; // Unmask bit [ 7] + localparam MASK_RX_XCLK_SEL = 16'b1111111110111111; // Unmask bit [ 6] + localparam MASK_CLK_CORRECT_USE = 16'b1011111111111111; // Unmask bit [ 14] + localparam MASK_TX_DRIVE_MODE = 16'b1111111111100000; // Unmask bit [ 4:0] + localparam MASK_RXCDR_EIDLE = 16'b1111011111111111; // Unmask bit [ 11] + localparam MASK_RX_DFE_LPM_EIDLE = 16'b1011111111111111; // Unmask bit [ 14] + localparam MASK_PMA_RSV_A = 16'b0000000000000000; // Unmask bit [15: 0] + localparam MASK_PMA_RSV_B = 16'b0000000000000000; // Unmask bit [15: 0] + localparam MASK_RXCDR_CFG_A = 16'b0000000000000000; // Unmask bit [15: 0] + localparam MASK_RXCDR_CFG_B = 16'b0000000000000000; // Unmask bit [15: 0] + localparam MASK_RXCDR_CFG_C = 16'b0000000000000000; // Unmask bit [15: 0] + localparam MASK_RXCDR_CFG_D = 16'b0000000000000000; // Unmask bit [15: 0] + localparam MASK_RXCDR_CFG_E_GTX = 16'b1111111100000000; // Unmask bit [ 7: 0] + localparam MASK_RXCDR_CFG_E_GTH = 16'b0000000000000000; // Unmask bit [15: 0] + localparam MASK_RXCDR_CFG_F_GTX = 16'b1111111111111111; // Unmask bit [ ] + localparam MASK_RXCDR_CFG_F_GTH = 16'b1111111111111000; // Unmask bit [ 2: 0] + + //---------- DRP Data for PCIe Gen1 and Gen2 ----------- + localparam GEN12_TXOUT_DIV = (PCIE_PLL_SEL == "QPLL") ? 16'b0000000000100000 : 16'b0000000000010000; // Divide by 4 or 2 + localparam GEN12_RXOUT_DIV = (PCIE_PLL_SEL == "QPLL") ? 16'b0000000000000010 : 16'b0000000000000001; // Divide by 4 or 2 + localparam GEN12_TX_DATA_WIDTH = 16'b0000000000000011; // 2-byte (16-bit) external data width + localparam GEN12_TX_INT_DATAWIDTH = 16'b0000000000000000; // 2-byte (20-bit) internal data width + localparam GEN12_RX_DATA_WIDTH = 16'b0001100000000000; // 2-byte (16-bit) external data width + localparam GEN12_RX_INT_DATAWIDTH = 16'b0000000000000000; // 2-byte (20-bit) internal data width + localparam GEN12_TXBUF_EN = 16'b0100000000000000; // Use TX buffer if PCIE_TXBUF_EN == "TRUE" + localparam GEN12_RXBUF_EN = 16'b0000000000000010; // Use RX buffer + localparam GEN12_TX_XCLK_SEL = 16'b0000000000000000; // Use TXOUT if PCIE_TXBUF_EN == "TRUE" + localparam GEN12_RX_XCLK_SEL = 16'b0000000000000000; // Use RXREC + localparam GEN12_CLK_CORRECT_USE = 16'b0100000000000000; // Use clock correction + localparam GEN12_TX_DRIVE_MODE = 16'b0000000000000001; // Use PIPE Gen1 and Gen2 mode + localparam GEN12_RXCDR_EIDLE = 16'b0000100000000000; // Hold RXCDR during electrical idle + localparam GEN12_RX_DFE_LPM_EIDLE = 16'b0100000000000000; // Hold RX DFE or LPM during electrical idle + localparam GEN12_PMA_RSV_A_GTX = 16'b1000010010000000; // 16'h8480 + localparam GEN12_PMA_RSV_B_GTX = 16'b0000000000000001; // 16'h0001 + localparam GEN12_PMA_RSV_A_GTH = 16'b0000000000001000; // 16'h0008 + localparam GEN12_PMA_RSV_B_GTH = 16'b0000000000000000; // 16'h0000 + //---------- + localparam GEN12_RXCDR_CFG_A_GTX = 16'h0020; // 16'h0020 + localparam GEN12_RXCDR_CFG_B_GTX = 16'h1020; // 16'h1020 + localparam GEN12_RXCDR_CFG_C_GTX = 16'h23FF; // 16'h23FF + localparam GEN12_RXCDR_CFG_D_GTX_S = 16'h0000; // 16'h0000 Sync + localparam GEN12_RXCDR_CFG_D_GTX_A = 16'h8000; // 16'h8000 Async + localparam GEN12_RXCDR_CFG_E_GTX = 16'h0003; // 16'h0003 + localparam GEN12_RXCDR_CFG_F_GTX = 16'h0000; // 16'h0000 + //---------- + localparam GEN12_RXCDR_CFG_A_GTH_S = 16'h0018; // 16'h0018 Sync + localparam GEN12_RXCDR_CFG_A_GTH_A = 16'h8018; // 16'h8018 Async + localparam GEN12_RXCDR_CFG_B_GTH = 16'hC208; // 16'hC208 + localparam GEN12_RXCDR_CFG_C_GTH = 16'h2000; // 16'h2000 + localparam GEN12_RXCDR_CFG_D_GTH = 16'h07FE; // 16'h07FE + localparam GEN12_RXCDR_CFG_E_GTH = 16'h0020; // 16'h0020 + localparam GEN12_RXCDR_CFG_F_GTH = 16'h0000; // 16'h0000 + + //---------- DRP Data for PCIe Gen3 -------------------- + localparam GEN3_TXOUT_DIV = 16'b0000000000000000; // Divide by 1 + localparam GEN3_RXOUT_DIV = 16'b0000000000000000; // Divide by 1 + localparam GEN3_TX_DATA_WIDTH = 16'b0000000000000100; // 4-byte (32-bit) external data width + localparam GEN3_TX_INT_DATAWIDTH = 16'b0000000000010000; // 4-byte (32-bit) internal data width + localparam GEN3_RX_DATA_WIDTH = 16'b0010000000000000; // 4-byte (32-bit) external data width + localparam GEN3_RX_INT_DATAWIDTH = 16'b0100000000000000; // 4-byte (32-bit) internal data width + localparam GEN3_TXBUF_EN = 16'b0000000000000000; // Bypass TX buffer + localparam GEN3_RXBUF_EN = 16'b0000000000000000; // Bypass RX buffer + localparam GEN3_TX_XCLK_SEL = 16'b0000000010000000; // Use TXUSR + localparam GEN3_RX_XCLK_SEL = 16'b0000000001000000; // Use RXUSR + localparam GEN3_CLK_CORRECT_USE = 16'b0000000000000000; // Bypass clock correction + localparam GEN3_TX_DRIVE_MODE = 16'b0000000000000010; // Use PIPE Gen3 mode + localparam GEN3_RXCDR_EIDLE = 16'b0000000000000000; // Disable Hold RXCDR during electrical idle + localparam GEN3_RX_DFE_LPM_EIDLE = 16'b0000000000000000; // Disable RX DFE or LPM during electrical idle + localparam GEN3_PMA_RSV_A_GTX = 16'b0111000010000000; // 16'h7080 + localparam GEN3_PMA_RSV_B_GTX = 16'b0000000000011110; // 16'h001E + localparam GEN3_PMA_RSV_A_GTH = 16'b0000000000001000; // 16'h0008 + localparam GEN3_PMA_RSV_B_GTH = 16'b0000000000000000; // 16'h0000 + //---------- + localparam GEN3_RXCDR_CFG_A_GTX = 16'h0080; // 16'h0080 + localparam GEN3_RXCDR_CFG_B_GTX = 16'h1010; // 16'h1010 + localparam GEN3_RXCDR_CFG_C_GTX = 16'h0BFF; // 16'h0BFF + localparam GEN3_RXCDR_CFG_D_GTX_S = 16'h0000; // 16'h0000 Sync + localparam GEN3_RXCDR_CFG_D_GTX_A = 16'h8000; // 16'h8000 Async + localparam GEN3_RXCDR_CFG_E_GTX = 16'h000B; // 16'h000B + localparam GEN3_RXCDR_CFG_F_GTX = 16'h0000; // 16'h0000 + //---------- + //localparam GEN3_RXCDR_CFG_A_GTH_S = 16'h0018; // 16'h0018 Sync + //localparam GEN3_RXCDR_CFG_A_GTH_A = 16'h8018; // 16'h8018 Async + //localparam GEN3_RXCDR_CFG_B_GTH = 16'hC208; // 16'hC848 + //localparam GEN3_RXCDR_CFG_C_GTH = 16'h2000; // 16'h1000 + //localparam GEN3_RXCDR_CFG_D_GTH = 16'h07FE; // 16'h07FE v1.0 silicon + //localparam GEN3_RXCDR_CFG_D_GTH_AUX = 16'h0FFE; // 16'h07FE v2.0 silicon, [62:59] AUX CDR configuration + //localparam GEN3_RXCDR_CFG_E_GTH = 16'h0020; // 16'h0010 + //localparam GEN3_RXCDR_CFG_F_GTH = 16'h0000; // 16'h0000 v1.0 silicon + //localparam GEN3_RXCDR_CFG_F_GTH_AUX = 16'h0002; // 16'h0000 v2.0 silicon, [81] AUX CDR enable + //---------- + localparam GEN3_RXCDR_CFG_A_GTH_S = 16'h0018; // 16'h0018 Sync + localparam GEN3_RXCDR_CFG_A_GTH_A = 16'h8018; // 16'h8018 Async + localparam GEN3_RXCDR_CFG_B_GTH = 16'hC848; // 16'hC848 + localparam GEN3_RXCDR_CFG_C_GTH = 16'h1000; // 16'h1000 + localparam GEN3_RXCDR_CFG_D_GTH = 16'h07FE; // 16'h07FE v1.0 silicon + localparam GEN3_RXCDR_CFG_D_GTH_AUX = 16'h0FFE; // 16'h07FE v2.0 silicon, [62:59] AUX CDR configuration + localparam GEN3_RXCDR_CFG_E_GTH = 16'h0010; // 16'h0010 + localparam GEN3_RXCDR_CFG_F_GTH = 16'h0000; // 16'h0000 v1.0 silicon + localparam GEN3_RXCDR_CFG_F_GTH_AUX = 16'h0002; // 16'h0000 v2.0 silicon, [81] AUX CDR enable + + //---------- DRP Data for PCIe Gen1, Gen2 and Gen3 ----- + localparam GEN123_PCS_RSVD_ATTR_A = 16'b0000000000000000; // Auto TX and RX sync mode + localparam GEN123_PCS_RSVD_ATTR_M_TX = 16'b0000000000000010; // Manual TX sync mode + localparam GEN123_PCS_RSVD_ATTR_M_RX = 16'b0000000000000100; // Manual RX sync mode + + //---------- DRP Data for x16 -------------------------- + localparam X16_RX_DATAWIDTH = 16'b0000000000000000; // 2-byte (16-bit) internal data width + + //---------- DRP Data for x20 -------------------------- + localparam X20_RX_DATAWIDTH = 16'b0000100000000000; // 2-byte (20-bit) internal data width + + //---------- DRP Data ---------------------------------- + wire [15:0] data_txout_div; + wire [15:0] data_rxout_div; + wire [15:0] data_tx_data_width; + wire [15:0] data_tx_int_datawidth; + wire [15:0] data_rx_data_width; + wire [15:0] data_rx_int_datawidth; + wire [15:0] data_txbuf_en; + wire [15:0] data_rxbuf_en; + wire [15:0] data_tx_xclk_sel; + wire [15:0] data_rx_xclk_sel; + wire [15:0] data_clk_correction_use; + wire [15:0] data_tx_drive_mode; + wire [15:0] data_rxcdr_eidle; + wire [15:0] data_rx_dfe_lpm_eidle; + wire [15:0] data_pma_rsv_a; + wire [15:0] data_pma_rsv_b; + + wire [15:0] data_rxcdr_cfg_a; + wire [15:0] data_rxcdr_cfg_b; + wire [15:0] data_rxcdr_cfg_c; + wire [15:0] data_rxcdr_cfg_d; + wire [15:0] data_rxcdr_cfg_e; + wire [15:0] data_rxcdr_cfg_f; + + wire [15:0] data_pcs_rsvd_attr_a; + wire [15:0] data_pcs_rsvd_attr_m_tx; + wire [15:0] data_pcs_rsvd_attr_m_rx; + wire [15:0] data_pcs_rsvd_attr_m; + + wire [15:0] data_x16x20_rx_datawidth; + + //---------- FSM --------------------------------------- + localparam FSM_IDLE = 0; + localparam FSM_LOAD = 1; + localparam FSM_READ = 2; + localparam FSM_RRDY = 3; + localparam FSM_WRITE = 4; + localparam FSM_WRDY = 5; + localparam FSM_DONE = 6; + + + +//---------- Input FF ---------------------------------------------------------- +always @ (posedge DRP_CLK) +begin + + if (!DRP_RST_N) + begin + //---------- 1st Stage FF -------------------------- + gtxreset_reg1 <= 1'd0; + rate_reg1 <= 2'd0; + x16x20_mode_reg1 <= 1'd0; + x16_reg1 <= 1'd0; + do_reg1 <= 16'd0; + rdy_reg1 <= 1'd0; + start_reg1 <= 1'd0; + //---------- 2nd Stage FF -------------------------- + gtxreset_reg2 <= 1'd0; + rate_reg2 <= 2'd0; + x16x20_mode_reg2 <= 1'd0; + x16_reg2 <= 1'd0; + do_reg2 <= 16'd0; + rdy_reg2 <= 1'd0; + start_reg2 <= 1'd0; + end + + else + begin + //---------- 1st Stage FF -------------------------- + gtxreset_reg1 <= DRP_GTXRESET; + rate_reg1 <= DRP_RATE; + x16x20_mode_reg1 <= DRP_X16X20_MODE; + x16_reg1 <= DRP_X16; + do_reg1 <= DRP_DO; + rdy_reg1 <= DRP_RDY; + start_reg1 <= DRP_START; + //---------- 2nd Stage FF -------------------------- + gtxreset_reg2 <= gtxreset_reg1; + rate_reg2 <= rate_reg1; + x16x20_mode_reg2 <= x16x20_mode_reg1; + x16_reg2 <= x16_reg1; + do_reg2 <= do_reg1; + rdy_reg2 <= rdy_reg1; + start_reg2 <= start_reg1; + end + +end + + + +//---------- Select DRP Data --------------------------------------------------- +assign data_txout_div = (rate_reg2 == 2'd2) ? GEN3_TXOUT_DIV : GEN12_TXOUT_DIV; +assign data_rxout_div = (rate_reg2 == 2'd2) ? GEN3_RXOUT_DIV : GEN12_RXOUT_DIV; +assign data_tx_data_width = (rate_reg2 == 2'd2) ? GEN3_TX_DATA_WIDTH : GEN12_TX_DATA_WIDTH; +assign data_tx_int_datawidth = (rate_reg2 == 2'd2) ? GEN3_TX_INT_DATAWIDTH : GEN12_TX_INT_DATAWIDTH; +assign data_rx_data_width = (rate_reg2 == 2'd2) ? GEN3_RX_DATA_WIDTH : GEN12_RX_DATA_WIDTH; + +assign data_rx_int_datawidth = (rate_reg2 == 2'd2) ? GEN3_RX_INT_DATAWIDTH : GEN12_RX_INT_DATAWIDTH; + +assign data_txbuf_en = ((rate_reg2 == 2'd2) || (PCIE_TXBUF_EN == "FALSE")) ? GEN3_TXBUF_EN : GEN12_TXBUF_EN; +assign data_rxbuf_en = ((rate_reg2 == 2'd2) && (PCIE_RXBUF_EN == "FALSE")) ? GEN3_RXBUF_EN : GEN12_RXBUF_EN; +assign data_tx_xclk_sel = ((rate_reg2 == 2'd2) || (PCIE_TXBUF_EN == "FALSE")) ? GEN3_TX_XCLK_SEL : GEN12_TX_XCLK_SEL; +assign data_rx_xclk_sel = ((rate_reg2 == 2'd2) && (PCIE_RXBUF_EN == "FALSE")) ? GEN3_RX_XCLK_SEL : GEN12_RX_XCLK_SEL; +assign data_clk_correction_use = (rate_reg2 == 2'd2) ? GEN3_CLK_CORRECT_USE : GEN12_CLK_CORRECT_USE; +assign data_tx_drive_mode = (rate_reg2 == 2'd2) ? GEN3_TX_DRIVE_MODE : GEN12_TX_DRIVE_MODE; +assign data_rxcdr_eidle = (rate_reg2 == 2'd2) ? GEN3_RXCDR_EIDLE : GEN12_RXCDR_EIDLE; +assign data_rx_dfe_lpm_eidle = (rate_reg2 == 2'd2) ? GEN3_RX_DFE_LPM_EIDLE : GEN12_RX_DFE_LPM_EIDLE; +assign data_pma_rsv_a = (rate_reg2 == 2'd2) ? ((PCIE_GT_DEVICE == "GTH") ? GEN3_PMA_RSV_A_GTH : GEN3_PMA_RSV_A_GTX) : + ((PCIE_GT_DEVICE == "GTH") ? GEN12_PMA_RSV_A_GTH : GEN12_PMA_RSV_A_GTX); +assign data_pma_rsv_b = (rate_reg2 == 2'd2) ? ((PCIE_GT_DEVICE == "GTH") ? GEN3_PMA_RSV_B_GTH : GEN3_PMA_RSV_B_GTX) : + ((PCIE_GT_DEVICE == "GTH") ? GEN12_PMA_RSV_B_GTH : GEN12_PMA_RSV_B_GTX); + +assign data_rxcdr_cfg_a = (rate_reg2 == 2'd2) ? ((PCIE_GT_DEVICE == "GTH") ? ((PCIE_ASYNC_EN == "TRUE") ? GEN3_RXCDR_CFG_A_GTH_A : GEN3_RXCDR_CFG_A_GTH_S) : GEN3_RXCDR_CFG_A_GTX) : + ((PCIE_GT_DEVICE == "GTH") ? ((PCIE_ASYNC_EN == "TRUE") ? GEN12_RXCDR_CFG_A_GTH_A : GEN12_RXCDR_CFG_A_GTH_S) : GEN12_RXCDR_CFG_A_GTX); + +assign data_rxcdr_cfg_b = (rate_reg2 == 2'd2) ? ((PCIE_GT_DEVICE == "GTH") ? GEN3_RXCDR_CFG_B_GTH : GEN3_RXCDR_CFG_B_GTX) : + ((PCIE_GT_DEVICE == "GTH") ? GEN12_RXCDR_CFG_B_GTH : GEN12_RXCDR_CFG_B_GTX); + +assign data_rxcdr_cfg_c = (rate_reg2 == 2'd2) ? ((PCIE_GT_DEVICE == "GTH") ? GEN3_RXCDR_CFG_C_GTH : GEN3_RXCDR_CFG_C_GTX) : + ((PCIE_GT_DEVICE == "GTH") ? GEN12_RXCDR_CFG_C_GTH : GEN12_RXCDR_CFG_C_GTX); + +assign data_rxcdr_cfg_d = (rate_reg2 == 2'd2) ? ((PCIE_GT_DEVICE == "GTH") ? ((PCIE_AUX_CDR_GEN3_EN == "TRUE") ? GEN3_RXCDR_CFG_D_GTH_AUX : GEN3_RXCDR_CFG_D_GTH) : ((PCIE_ASYNC_EN == "TRUE") ? GEN3_RXCDR_CFG_D_GTX_A : GEN3_RXCDR_CFG_D_GTX_S)) : + ((PCIE_GT_DEVICE == "GTH") ? GEN12_RXCDR_CFG_D_GTH : ((PCIE_ASYNC_EN == "TRUE") ? GEN3_RXCDR_CFG_D_GTX_A : GEN3_RXCDR_CFG_D_GTX_S)); + +assign data_rxcdr_cfg_e = (rate_reg2 == 2'd2) ? ((PCIE_GT_DEVICE == "GTH") ? GEN3_RXCDR_CFG_E_GTH : GEN3_RXCDR_CFG_E_GTX) : + ((PCIE_GT_DEVICE == "GTH") ? GEN12_RXCDR_CFG_E_GTH : GEN12_RXCDR_CFG_E_GTX); + +assign data_rxcdr_cfg_f = (rate_reg2 == 2'd2) ? ((PCIE_GT_DEVICE == "GTH") ? ((PCIE_AUX_CDR_GEN3_EN == "TRUE") ? GEN3_RXCDR_CFG_F_GTH_AUX : GEN3_RXCDR_CFG_F_GTH) : GEN3_RXCDR_CFG_F_GTX) : + ((PCIE_GT_DEVICE == "GTH") ? GEN12_RXCDR_CFG_F_GTH : GEN12_RXCDR_CFG_F_GTX); + +assign data_pcs_rsvd_attr_a = GEN123_PCS_RSVD_ATTR_A; +assign data_pcs_rsvd_attr_m_tx = PCIE_TXSYNC_MODE ? GEN123_PCS_RSVD_ATTR_A : GEN123_PCS_RSVD_ATTR_M_TX; +assign data_pcs_rsvd_attr_m_rx = PCIE_RXSYNC_MODE ? GEN123_PCS_RSVD_ATTR_A : GEN123_PCS_RSVD_ATTR_M_RX; +assign data_pcs_rsvd_attr_m = data_pcs_rsvd_attr_m_tx | data_pcs_rsvd_attr_m_rx; + +assign data_x16x20_rx_datawidth = x16_reg2 ? X16_RX_DATAWIDTH : X20_RX_DATAWIDTH; + + +//---------- Load Counter ------------------------------------------------------ +always @ (posedge DRP_CLK) +begin + + if (!DRP_RST_N) + load_cnt <= 2'd0; + else + + //---------- Increment Load Counter ---------------- + if ((fsm == FSM_LOAD) && (load_cnt < LOAD_CNT_MAX)) + load_cnt <= load_cnt + 2'd1; + + //---------- Hold Load Counter --------------------- + else if ((fsm == FSM_LOAD) && (load_cnt == LOAD_CNT_MAX)) + load_cnt <= load_cnt; + + //---------- Reset Load Counter -------------------- + else + load_cnt <= 2'd0; + +end + + + +//---------- Update DRP Address and Data --------------------------------------- +always @ (posedge DRP_CLK) +begin + + if (!DRP_RST_N) + begin + addr_reg <= 9'd0; + di_reg <= 16'd0; + end + else + begin + + case (index) + + //-------------------------------------------------- + 5'd0: + begin + addr_reg <= mode ? ADDR_PCS_RSVD_ATTR : + x16x20_mode_reg2 ? ADDR_RX_DATA_WIDTH : ADDR_TXOUT_DIV; + di_reg <= mode ? ((do_reg2 & MASK_PCS_RSVD_ATTR) | data_pcs_rsvd_attr_a) : + x16x20_mode_reg2 ? ((do_reg2 & MASK_X16X20_RX_DATA_WIDTH) | data_x16x20_rx_datawidth) : + ((do_reg2 & MASK_TXOUT_DIV) | data_txout_div); + end + + //-------------------------------------------------- + 5'd1: + begin + addr_reg <= mode ? ADDR_PCS_RSVD_ATTR : ADDR_RXOUT_DIV; + di_reg <= mode ? ((do_reg2 & MASK_PCS_RSVD_ATTR) | data_pcs_rsvd_attr_m) : + ((do_reg2 & MASK_RXOUT_DIV) | data_rxout_div); + end + + //-------------------------------------------------- + 5'd2 : + begin + addr_reg <= ADDR_TX_DATA_WIDTH; + di_reg <= (do_reg2 & MASK_TX_DATA_WIDTH) | data_tx_data_width; + end + + //-------------------------------------------------- + 5'd3 : + begin + addr_reg <= ADDR_TX_INT_DATAWIDTH; + di_reg <= (do_reg2 & MASK_TX_INT_DATAWIDTH) | data_tx_int_datawidth; + end + + //-------------------------------------------------- + 5'd4 : + begin + addr_reg <= ADDR_RX_DATA_WIDTH; + di_reg <= (do_reg2 & MASK_RX_DATA_WIDTH) | data_rx_data_width; + end + + //-------------------------------------------------- + 5'd5 : + begin + addr_reg <= ADDR_RX_INT_DATAWIDTH; + di_reg <= (do_reg2 & MASK_RX_INT_DATAWIDTH) | data_rx_int_datawidth; + end + + //-------------------------------------------------- + 5'd6 : + begin + addr_reg <= ADDR_TXBUF_EN; + di_reg <= (do_reg2 & MASK_TXBUF_EN) | data_txbuf_en; + end + + //-------------------------------------------------- + 5'd7 : + begin + addr_reg <= ADDR_RXBUF_EN; + di_reg <= (do_reg2 & MASK_RXBUF_EN) | data_rxbuf_en; + end + + //-------------------------------------------------- + 5'd8 : + begin + addr_reg <= ADDR_TX_XCLK_SEL; + di_reg <= (do_reg2 & MASK_TX_XCLK_SEL) | data_tx_xclk_sel; + end + + //-------------------------------------------------- + 5'd9 : + begin + addr_reg <= ADDR_RX_XCLK_SEL; + di_reg <= (do_reg2 & MASK_RX_XCLK_SEL) | data_rx_xclk_sel; + end + + //-------------------------------------------------- + 5'd10 : + begin + addr_reg <= ADDR_CLK_CORRECT_USE; + di_reg <= (do_reg2 & MASK_CLK_CORRECT_USE) | data_clk_correction_use; + end + + //-------------------------------------------------- + 5'd11 : + begin + addr_reg <= ADDR_TX_DRIVE_MODE; + di_reg <= (do_reg2 & MASK_TX_DRIVE_MODE) | data_tx_drive_mode; + end + + //-------------------------------------------------- + 5'd12 : + begin + addr_reg <= ADDR_RXCDR_EIDLE; + di_reg <= (do_reg2 & MASK_RXCDR_EIDLE) | data_rxcdr_eidle; + end + + //-------------------------------------------------- + 5'd13 : + begin + addr_reg <= ADDR_RX_DFE_LPM_EIDLE; + di_reg <= (do_reg2 & MASK_RX_DFE_LPM_EIDLE) | data_rx_dfe_lpm_eidle; + end + + //-------------------------------------------------- + 5'd14 : + begin + addr_reg <= ADDR_PMA_RSV_A; + di_reg <= (do_reg2 & MASK_PMA_RSV_A) | data_pma_rsv_a; + end + + //-------------------------------------------------- + 5'd15 : + begin + addr_reg <= ADDR_PMA_RSV_B; + di_reg <= (do_reg2 & MASK_PMA_RSV_B) | data_pma_rsv_b; + end + + //-------------------------------------------------- + 5'd16 : + begin + addr_reg <= ADDR_RXCDR_CFG_A; + di_reg <= (do_reg2 & MASK_RXCDR_CFG_A) | data_rxcdr_cfg_a; + end + + //-------------------------------------------------- + 5'd17 : + begin + addr_reg <= ADDR_RXCDR_CFG_B; + di_reg <= (do_reg2 & MASK_RXCDR_CFG_B) | data_rxcdr_cfg_b; + end + + //-------------------------------------------------- + 5'd18 : + begin + addr_reg <= ADDR_RXCDR_CFG_C; + di_reg <= (do_reg2 & MASK_RXCDR_CFG_C) | data_rxcdr_cfg_c; + end + + //-------------------------------------------------- + 5'd19 : + begin + addr_reg <= ADDR_RXCDR_CFG_D; + di_reg <= (do_reg2 & MASK_RXCDR_CFG_D) | data_rxcdr_cfg_d; + end + + //-------------------------------------------------- + 5'd20 : + begin + addr_reg <= ADDR_RXCDR_CFG_E; + di_reg <= (do_reg2 & ((PCIE_GT_DEVICE == "GTH") ? MASK_RXCDR_CFG_E_GTH : MASK_RXCDR_CFG_E_GTX)) | data_rxcdr_cfg_e; + end + + //-------------------------------------------------- + 5'd21 : + begin + addr_reg <= ADDR_RXCDR_CFG_F; + di_reg <= (do_reg2 & ((PCIE_GT_DEVICE == "GTH") ? MASK_RXCDR_CFG_F_GTH : MASK_RXCDR_CFG_F_GTX)) | data_rxcdr_cfg_f; + end + + //-------------------------------------------------- + default : + begin + addr_reg <= 9'd0; + di_reg <= 16'd0; + end + + endcase + + end + +end + + + +//---------- PIPE DRP FSM ------------------------------------------------------ +always @ (posedge DRP_CLK) +begin + + if (!DRP_RST_N) + begin + fsm <= FSM_IDLE; + index <= 5'd0; + mode <= 1'd0; + done <= 1'd0; + end + else + begin + + case (fsm) + + //---------- Idle State ---------------------------- + FSM_IDLE : + + begin + //---------- Reset or Rate Change -------------- + if (start_reg2) + begin + fsm <= FSM_LOAD; + index <= 5'd0; + mode <= 1'd0; + done <= 1'd0; + end + //---------- GTXRESET -------------------------- + else if ((gtxreset_reg2 && !gtxreset_reg1) && ((PCIE_TXSYNC_MODE == 0) || (PCIE_RXSYNC_MODE == 0)) && (PCIE_USE_MODE == "1.0")) + begin + fsm <= FSM_LOAD; + index <= 5'd0; + mode <= 1'd1; + done <= 1'd0; + end + //---------- Idle ------------------------------ + else + begin + fsm <= FSM_IDLE; + index <= 5'd0; + mode <= 1'd0; + done <= 1'd1; + end + end + + //---------- Load DRP Address --------------------- + FSM_LOAD : + + begin + fsm <= (load_cnt == LOAD_CNT_MAX) ? FSM_READ : FSM_LOAD; + index <= index; + mode <= mode; + done <= 1'd0; + end + + //---------- Read DRP ------------------------------ + FSM_READ : + + begin + fsm <= FSM_RRDY; + index <= index; + mode <= mode; + done <= 1'd0; + end + + //---------- Read DRP Ready ------------------------ + FSM_RRDY : + + begin + fsm <= rdy_reg2 ? FSM_WRITE : FSM_RRDY; + index <= index; + mode <= mode; + done <= 1'd0; + end + + + //---------- Write DRP ----------------------------- + FSM_WRITE : + + begin + fsm <= FSM_WRDY; + index <= index; + mode <= mode; + done <= 1'd0; + end + + //---------- Write DRP Ready ----------------------- + FSM_WRDY : + + begin + fsm <= rdy_reg2 ? FSM_DONE : FSM_WRDY; + index <= index; + mode <= mode; + done <= 1'd0; + end + + //---------- DRP Done ------------------------------ + FSM_DONE : + + begin + if ((index == INDEX_MAX) || (mode && (index == 5'd1)) || (x16x20_mode_reg2 && (index == 5'd0))) + begin + fsm <= FSM_IDLE; + index <= 5'd0; + mode <= 1'd0; + done <= 1'd0; + end + else + begin + fsm <= FSM_LOAD; + index <= index + 5'd1; + mode <= mode; + done <= 1'd0; + end + end + + //---------- Default State ------------------------- + default : + + begin + fsm <= FSM_IDLE; + index <= 5'd0; + mode <= 1'd0; + done <= 1'd0; + end + + endcase + + end + +end + + + +//---------- PIPE DRP Output --------------------------------------------------- +assign DRP_ADDR = addr_reg; +assign DRP_EN = (fsm == FSM_READ) || (fsm == FSM_WRITE); +assign DRP_DI = di_reg; +assign DRP_WE = (fsm == FSM_WRITE); +assign DRP_DONE = done; +assign DRP_FSM = fsm; + + + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_eq.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_eq.v new file mode 100644 index 0000000..aa8b996 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_eq.v @@ -0,0 +1,830 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_pipe_eq.v +// Version : 3.3 +//------------------------------------------------------------------------------ +// Filename : pipe_eq.v +// Description : PIPE Equalization Module for 7 Series Transceiver +// Version : 20.1 +//------------------------------------------------------------------------------ + + + +`timescale 1ns / 1ps + + + +//---------- PIPE Equalization Module ------------------------------------------ +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_pipe_eq # +( + parameter PCIE_SIM_MODE = "FALSE", + parameter PCIE_GT_DEVICE = "GTX", + parameter PCIE_RXEQ_MODE_GEN3 = 1 +) + +( + + //---------- Input ------------------------------------- + input EQ_CLK, + input EQ_RST_N, + input EQ_GEN3, + + input [ 1:0] EQ_TXEQ_CONTROL, + input [ 3:0] EQ_TXEQ_PRESET, + input [ 3:0] EQ_TXEQ_PRESET_DEFAULT, + input [ 5:0] EQ_TXEQ_DEEMPH_IN, + + input [ 1:0] EQ_RXEQ_CONTROL, + input [ 2:0] EQ_RXEQ_PRESET, + input [ 5:0] EQ_RXEQ_LFFS, + input [ 3:0] EQ_RXEQ_TXPRESET, + input EQ_RXEQ_USER_EN, + input [17:0] EQ_RXEQ_USER_TXCOEFF, + input EQ_RXEQ_USER_MODE, + + + //---------- Output ------------------------------------ + output EQ_TXEQ_DEEMPH, + output [ 4:0] EQ_TXEQ_PRECURSOR, + output [ 6:0] EQ_TXEQ_MAINCURSOR, + output [ 4:0] EQ_TXEQ_POSTCURSOR, + output [17:0] EQ_TXEQ_DEEMPH_OUT, + output EQ_TXEQ_DONE, + output [ 5:0] EQ_TXEQ_FSM, + + output [17:0] EQ_RXEQ_NEW_TXCOEFF, + output EQ_RXEQ_LFFS_SEL, + output EQ_RXEQ_ADAPT_DONE, + output EQ_RXEQ_DONE, + output [ 5:0] EQ_RXEQ_FSM + +); + + //---------- Input Registers --------------------------- +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg gen3_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg gen3_reg2; + +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 1:0] txeq_control_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 3:0] txeq_preset_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 5:0] txeq_deemph_reg1; + +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 1:0] txeq_control_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 3:0] txeq_preset_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 5:0] txeq_deemph_reg2; + +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 1:0] rxeq_control_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 2:0] rxeq_preset_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 5:0] rxeq_lffs_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 3:0] rxeq_txpreset_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxeq_user_en_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [17:0] rxeq_user_txcoeff_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxeq_user_mode_reg1; + +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 1:0] rxeq_control_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 2:0] rxeq_preset_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 5:0] rxeq_lffs_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 3:0] rxeq_txpreset_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxeq_user_en_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [17:0] rxeq_user_txcoeff_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxeq_user_mode_reg2; + + //---------- Internal Signals -------------------------- + reg [18:0] txeq_preset = 19'd0; + reg txeq_preset_done = 1'd0; + reg [ 1:0] txeq_txcoeff_cnt = 2'd0; + + reg [ 2:0] rxeq_preset = 3'd0; + reg rxeq_preset_valid = 1'd0; + reg [ 3:0] rxeq_txpreset = 4'd0; + reg [17:0] rxeq_txcoeff = 18'd0; + reg [ 2:0] rxeq_cnt = 3'd0; + reg [ 5:0] rxeq_fs = 6'd0; + reg [ 5:0] rxeq_lf = 6'd0; + reg rxeq_new_txcoeff_req = 1'd0; + + //---------- Output Registers -------------------------- + reg [18:0] txeq_txcoeff = 19'd0; + reg txeq_done = 1'd0; + reg [ 5:0] fsm_tx = 6'd0; + + reg [17:0] rxeq_new_txcoeff = 18'd0; + reg rxeq_lffs_sel = 1'd0; + reg rxeq_adapt_done_reg = 1'd0; + reg rxeq_adapt_done = 1'd0; + reg rxeq_done = 1'd0; + reg [ 5:0] fsm_rx = 6'd0; + + //---------- RXEQ Eye Scan Module Output --------------- + wire rxeqscan_lffs_sel; + wire rxeqscan_preset_done; + wire [17:0] rxeqscan_new_txcoeff; + wire rxeqscan_new_txcoeff_done; + wire rxeqscan_adapt_done; + + //---------- FSM --------------------------------------- + localparam FSM_TXEQ_IDLE = 6'b000001; + localparam FSM_TXEQ_PRESET = 6'b000010; + localparam FSM_TXEQ_TXCOEFF = 6'b000100; + localparam FSM_TXEQ_REMAP = 6'b001000; + localparam FSM_TXEQ_QUERY = 6'b010000; + localparam FSM_TXEQ_DONE = 6'b100000; + + localparam FSM_RXEQ_IDLE = 6'b000001; + localparam FSM_RXEQ_PRESET = 6'b000010; + localparam FSM_RXEQ_TXCOEFF = 6'b000100; + localparam FSM_RXEQ_LF = 6'b001000; + localparam FSM_RXEQ_NEW_TXCOEFF_REQ = 6'b010000; + localparam FSM_RXEQ_DONE = 6'b100000; + + //---------- TXEQ Presets Look-up Table ---------------- + // TXPRECURSOR = Coefficient range between 0 and 20 units + // TXMAINCURSOR = Coefficient range between 29 and 80 units + // TXPOSTCURSOR = Coefficient range between 0 and 31 units + //------------------------------------------------------ + // Actual Full Swing (FS) = 80 + // Actual Low Frequency (LF) = 29 + // Advertise Full Swing (FS) = 40 + // Advertise Low Frequency (LF) = 15 + //------------------------------------------------------ + // Pre-emphasis = 20 log [80 - (2 * TXPRECURSOR)] / 80], assuming no de-emphasis + // Main-emphasis = 80 - (TXPRECURSOR + TXPOSTCURSOR) + // De-emphasis = 20 log [80 - (2 * TXPOSTCURSOR)] / 80], assuming no pre-emphasis + //------------------------------------------------------ + // Note: TXMAINCURSOR calculated internally in GT + //------------------------------------------------------ + localparam TXPRECURSOR_00 = 6'd0; // 0.0 dB + localparam TXMAINCURSOR_00 = 7'd60; + localparam TXPOSTCURSOR_00 = 6'd20; // -6.0 +/- 1 dB + + localparam TXPRECURSOR_01 = 6'd0; // 0.0 dB + localparam TXMAINCURSOR_01 = 7'd68; // added 1 to compensate decimal + localparam TXPOSTCURSOR_01 = 6'd13; // -3.5 +/- 1 dB + + localparam TXPRECURSOR_02 = 6'd0; // 0.0 dB + localparam TXMAINCURSOR_02 = 7'd64; + localparam TXPOSTCURSOR_02 = 6'd16; // -4.4 +/- 1.5 dB + + localparam TXPRECURSOR_03 = 6'd0; // 0.0 dB + localparam TXMAINCURSOR_03 = 7'd70; + localparam TXPOSTCURSOR_03 = 6'd10; // -2.5 +/- 1 dB + + localparam TXPRECURSOR_04 = 6'd0; // 0.0 dB + localparam TXMAINCURSOR_04 = 7'd80; + localparam TXPOSTCURSOR_04 = 6'd0; // 0.0 dB + + localparam TXPRECURSOR_05 = 6'd8; // -1.9 +/- 1 dB + localparam TXMAINCURSOR_05 = 7'd72; + localparam TXPOSTCURSOR_05 = 6'd0; // 0.0 dB + + localparam TXPRECURSOR_06 = 6'd10; // -2.5 +/- 1 dB + localparam TXMAINCURSOR_06 = 7'd70; + localparam TXPOSTCURSOR_06 = 6'd0; // 0.0 dB + + localparam TXPRECURSOR_07 = 6'd8; // -3.5 +/- 1 dB + localparam TXMAINCURSOR_07 = 7'd56; + localparam TXPOSTCURSOR_07 = 6'd16; // -6.0 +/- 1 dB + + localparam TXPRECURSOR_08 = 6'd10; // -3.5 +/- 1 dB + localparam TXMAINCURSOR_08 = 7'd60; + localparam TXPOSTCURSOR_08 = 6'd10; // -3.5 +/- 1 dB + + localparam TXPRECURSOR_09 = 6'd13; // -3.5 +/- 1 dB + localparam TXMAINCURSOR_09 = 7'd68; // added 1 to compensate decimal + localparam TXPOSTCURSOR_09 = 6'd0; // 0.0 dB + + localparam TXPRECURSOR_10 = 6'd0; // 0.0 dB + localparam TXMAINCURSOR_10 = 7'd56; // added 1 to compensate decimal + localparam TXPOSTCURSOR_10 = 6'd25; // 9.5 +/- 1 dB, updated for coefficient rules + + + +//---------- Input FF ---------------------------------------------------------- +always @ (posedge EQ_CLK) +begin + + if (!EQ_RST_N) + begin + //---------- 1st Stage FF -------------------------- + gen3_reg1 <= 1'd0; + + txeq_control_reg1 <= 2'd0; + txeq_preset_reg1 <= 4'd0; + txeq_deemph_reg1 <= 6'd1; + + rxeq_control_reg1 <= 2'd0; + rxeq_preset_reg1 <= 3'd0; + rxeq_lffs_reg1 <= 6'd0; + rxeq_txpreset_reg1 <= 4'd0; + rxeq_user_en_reg1 <= 1'd0; + rxeq_user_txcoeff_reg1 <= 18'd0; + rxeq_user_mode_reg1 <= 1'd0; + //---------- 2nd Stage FF -------------------------- + gen3_reg2 <= 1'd0; + + txeq_control_reg2 <= 2'd0; + txeq_preset_reg2 <= 4'd0; + txeq_deemph_reg2 <= 6'd1; + + rxeq_control_reg2 <= 2'd0; + rxeq_preset_reg2 <= 3'd0; + rxeq_lffs_reg2 <= 6'd0; + rxeq_txpreset_reg2 <= 4'd0; + rxeq_user_en_reg2 <= 1'd0; + rxeq_user_txcoeff_reg2 <= 18'd0; + rxeq_user_mode_reg2 <= 1'd0; + end + else + begin + //---------- 1st Stage FF -------------------------- + gen3_reg1 <= EQ_GEN3; + + txeq_control_reg1 <= EQ_TXEQ_CONTROL; + txeq_preset_reg1 <= EQ_TXEQ_PRESET; + txeq_deemph_reg1 <= EQ_TXEQ_DEEMPH_IN; + + rxeq_control_reg1 <= EQ_RXEQ_CONTROL; + rxeq_preset_reg1 <= EQ_RXEQ_PRESET; + rxeq_lffs_reg1 <= EQ_RXEQ_LFFS; + rxeq_txpreset_reg1 <= EQ_RXEQ_TXPRESET; + rxeq_user_en_reg1 <= EQ_RXEQ_USER_EN; + rxeq_user_txcoeff_reg1 <= EQ_RXEQ_USER_TXCOEFF; + rxeq_user_mode_reg1 <= EQ_RXEQ_USER_MODE; + //---------- 2nd Stage FF -------------------------- + gen3_reg2 <= gen3_reg1; + + txeq_control_reg2 <= txeq_control_reg1; + txeq_preset_reg2 <= txeq_preset_reg1; + txeq_deemph_reg2 <= txeq_deemph_reg1; + + rxeq_control_reg2 <= rxeq_control_reg1; + rxeq_preset_reg2 <= rxeq_preset_reg1; + rxeq_lffs_reg2 <= rxeq_lffs_reg1; + rxeq_txpreset_reg2 <= rxeq_txpreset_reg1; + rxeq_user_en_reg2 <= rxeq_user_en_reg1; + rxeq_user_txcoeff_reg2 <= rxeq_user_txcoeff_reg1; + rxeq_user_mode_reg2 <= rxeq_user_mode_reg1; + end + +end + + + +//---------- TXEQ Preset ------------------------------------------------------- +always @ (posedge EQ_CLK) +begin + + if (!EQ_RST_N) + begin + + //---------- Select TXEQ Preset ---------------- + case (EQ_TXEQ_PRESET_DEFAULT) + 4'd0 : txeq_preset <= {TXPOSTCURSOR_00, TXMAINCURSOR_00, TXPRECURSOR_00}; + 4'd1 : txeq_preset <= {TXPOSTCURSOR_01, TXMAINCURSOR_01, TXPRECURSOR_01}; + 4'd2 : txeq_preset <= {TXPOSTCURSOR_02, TXMAINCURSOR_02, TXPRECURSOR_02}; + 4'd3 : txeq_preset <= {TXPOSTCURSOR_03, TXMAINCURSOR_03, TXPRECURSOR_03}; + 4'd4 : txeq_preset <= {TXPOSTCURSOR_04, TXMAINCURSOR_04, TXPRECURSOR_04}; + 4'd5 : txeq_preset <= {TXPOSTCURSOR_05, TXMAINCURSOR_05, TXPRECURSOR_05}; + 4'd6 : txeq_preset <= {TXPOSTCURSOR_06, TXMAINCURSOR_06, TXPRECURSOR_06}; + 4'd7 : txeq_preset <= {TXPOSTCURSOR_07, TXMAINCURSOR_07, TXPRECURSOR_07}; + 4'd8 : txeq_preset <= {TXPOSTCURSOR_08, TXMAINCURSOR_08, TXPRECURSOR_08}; + 4'd9 : txeq_preset <= {TXPOSTCURSOR_09, TXMAINCURSOR_09, TXPRECURSOR_09}; + 4'd10 : txeq_preset <= {TXPOSTCURSOR_10, TXMAINCURSOR_10, TXPRECURSOR_10}; + default : txeq_preset <= 19'd4; + endcase + + txeq_preset_done <= 1'd0; + end + else + begin + if (fsm_tx == FSM_TXEQ_PRESET) + begin + + //---------- Select TXEQ Preset ---------------- + case (txeq_preset_reg2) + 4'd0 : txeq_preset <= {TXPOSTCURSOR_00, TXMAINCURSOR_00, TXPRECURSOR_00}; + 4'd1 : txeq_preset <= {TXPOSTCURSOR_01, TXMAINCURSOR_01, TXPRECURSOR_01}; + 4'd2 : txeq_preset <= {TXPOSTCURSOR_02, TXMAINCURSOR_02, TXPRECURSOR_02}; + 4'd3 : txeq_preset <= {TXPOSTCURSOR_03, TXMAINCURSOR_03, TXPRECURSOR_03}; + 4'd4 : txeq_preset <= {TXPOSTCURSOR_04, TXMAINCURSOR_04, TXPRECURSOR_04}; + 4'd5 : txeq_preset <= {TXPOSTCURSOR_05, TXMAINCURSOR_05, TXPRECURSOR_05}; + 4'd6 : txeq_preset <= {TXPOSTCURSOR_06, TXMAINCURSOR_06, TXPRECURSOR_06}; + 4'd7 : txeq_preset <= {TXPOSTCURSOR_07, TXMAINCURSOR_07, TXPRECURSOR_07}; + 4'd8 : txeq_preset <= {TXPOSTCURSOR_08, TXMAINCURSOR_08, TXPRECURSOR_08}; + 4'd9 : txeq_preset <= {TXPOSTCURSOR_09, TXMAINCURSOR_09, TXPRECURSOR_09}; + 4'd10 : txeq_preset <= {TXPOSTCURSOR_10, TXMAINCURSOR_10, TXPRECURSOR_10}; + default : txeq_preset <= 19'd4; + endcase + + txeq_preset_done <= 1'd1; + end + else + begin + txeq_preset <= txeq_preset; + txeq_preset_done <= 1'd0; + end + end + +end + + + +//---------- TXEQ FSM ---------------------------------------------------------- +always @ (posedge EQ_CLK) +begin + + if (!EQ_RST_N) + begin + fsm_tx <= FSM_TXEQ_IDLE; + txeq_txcoeff <= 19'd0; + txeq_txcoeff_cnt <= 2'd0; + txeq_done <= 1'd0; + end + else + begin + + case (fsm_tx) + + //---------- Idle State ---------------------------- + FSM_TXEQ_IDLE : + + begin + + case (txeq_control_reg2) + + //---------- Idle ------------------------------ + 2'd0 : + begin + fsm_tx <= FSM_TXEQ_IDLE; + txeq_txcoeff <= txeq_txcoeff; + txeq_txcoeff_cnt <= 2'd0; + txeq_done <= 1'd0; + end + + //---------- Process TXEQ Preset --------------- + 2'd1 : + begin + fsm_tx <= FSM_TXEQ_PRESET; + txeq_txcoeff <= txeq_txcoeff; + txeq_txcoeff_cnt <= 2'd0; + txeq_done <= 1'd0; + end + + //---------- Coefficient ----------------------- + 2'd2 : + begin + fsm_tx <= FSM_TXEQ_TXCOEFF; + txeq_txcoeff <= {txeq_deemph_reg2, txeq_txcoeff[18:6]}; + txeq_txcoeff_cnt <= 2'd1; + txeq_done <= 1'd0; + end + + //---------- Query ----------------------------- + 2'd3 : + begin + fsm_tx <= FSM_TXEQ_QUERY; + txeq_txcoeff <= txeq_txcoeff; + txeq_txcoeff_cnt <= 2'd0; + txeq_done <= 1'd0; + end + + //---------- Default --------------------------- + default : + begin + fsm_tx <= FSM_TXEQ_IDLE; + txeq_txcoeff <= txeq_txcoeff; + txeq_txcoeff_cnt <= 2'd0; + txeq_done <= 1'd0; + end + + endcase + + end + + //---------- Process TXEQ Preset ------------------- + FSM_TXEQ_PRESET : + + begin + fsm_tx <= (txeq_preset_done ? FSM_TXEQ_DONE : FSM_TXEQ_PRESET); + txeq_txcoeff <= txeq_preset; + txeq_txcoeff_cnt <= 2'd0; + txeq_done <= 1'd0; + end + + //---------- Latch Link Partner TX Coefficient ----- + FSM_TXEQ_TXCOEFF : + + begin + fsm_tx <= ((txeq_txcoeff_cnt == 2'd2) ? FSM_TXEQ_REMAP : FSM_TXEQ_TXCOEFF); + + //---------- Shift in extra bit for TXMAINCURSOR + if (txeq_txcoeff_cnt == 2'd1) + txeq_txcoeff <= {1'd0, txeq_deemph_reg2, txeq_txcoeff[18:7]}; + else + txeq_txcoeff <= {txeq_deemph_reg2, txeq_txcoeff[18:6]}; + + txeq_txcoeff_cnt <= txeq_txcoeff_cnt + 2'd1; + txeq_done <= 1'd0; + end + + //---------- Remap to GT TX Coefficient ------------ + FSM_TXEQ_REMAP : + + begin + fsm_tx <= FSM_TXEQ_DONE; + txeq_txcoeff <= txeq_txcoeff << 1; // Multiply by 2x + txeq_txcoeff_cnt <= 2'd0; + txeq_done <= 1'd0; + end + + //---------- Query TXEQ Coefficient ---------------- + FSM_TXEQ_QUERY: + + begin + fsm_tx <= FSM_TXEQ_DONE; + txeq_txcoeff <= txeq_txcoeff; + txeq_txcoeff_cnt <= 2'd0; + txeq_done <= 1'd0; + end + + //---------- Done ---------------------------------- + FSM_TXEQ_DONE : + + begin + fsm_tx <= ((txeq_control_reg2 == 2'd0) ? FSM_TXEQ_IDLE : FSM_TXEQ_DONE); + txeq_txcoeff <= txeq_txcoeff; + txeq_txcoeff_cnt <= 2'd0; + txeq_done <= 1'd1; + end + + //---------- Default State ------------------------- + default : + begin + fsm_tx <= FSM_TXEQ_IDLE; + txeq_txcoeff <= 19'd0; + txeq_txcoeff_cnt <= 2'd0; + txeq_done <= 1'd0; + end + + endcase + + end + +end + + + +//---------- RXEQ FSM ---------------------------------------------------------- +always @ (posedge EQ_CLK) +begin + + if (!EQ_RST_N) + begin + fsm_rx <= FSM_RXEQ_IDLE; + rxeq_preset <= 3'd0; + rxeq_preset_valid <= 1'd0; + rxeq_txpreset <= 4'd0; + rxeq_txcoeff <= 18'd0; + rxeq_cnt <= 3'd0; + rxeq_fs <= 6'd0; + rxeq_lf <= 6'd0; + rxeq_new_txcoeff_req <= 1'd0; + rxeq_new_txcoeff <= 18'd0; + rxeq_lffs_sel <= 1'd0; + rxeq_adapt_done_reg <= 1'd0; + rxeq_adapt_done <= 1'd0; + rxeq_done <= 1'd0; + end + else + begin + + case (fsm_rx) + + //---------- Idle State ---------------------------- + FSM_RXEQ_IDLE : + + begin + + case (rxeq_control_reg2) + + //---------- Process RXEQ Preset --------------- + 2'd1 : + begin + fsm_rx <= FSM_RXEQ_PRESET; + rxeq_preset <= rxeq_preset_reg2; + rxeq_preset_valid <= 1'd0; + rxeq_txpreset <= rxeq_txpreset; + rxeq_txcoeff <= rxeq_txcoeff; + rxeq_cnt <= 3'd0; + rxeq_fs <= rxeq_fs; + rxeq_lf <= rxeq_lf; + rxeq_new_txcoeff_req <= 1'd0; + rxeq_new_txcoeff <= rxeq_new_txcoeff; + rxeq_lffs_sel <= 1'd0; + rxeq_adapt_done_reg <= 1'd0; + rxeq_adapt_done <= 1'd0; + rxeq_done <= 1'd0; + end + + //---------- Request New TX Coefficient -------- + 2'd2 : + begin + fsm_rx <= FSM_RXEQ_TXCOEFF; + rxeq_preset <= rxeq_preset; + rxeq_preset_valid <= 1'd0; + rxeq_txpreset <= rxeq_txpreset_reg2; + rxeq_txcoeff <= {txeq_deemph_reg2, rxeq_txcoeff[17:6]}; + rxeq_cnt <= 3'd1; + rxeq_fs <= rxeq_lffs_reg2; + rxeq_lf <= rxeq_lf; + rxeq_new_txcoeff_req <= 1'd0; + rxeq_new_txcoeff <= rxeq_new_txcoeff; + rxeq_lffs_sel <= 1'd0; + rxeq_adapt_done_reg <= rxeq_adapt_done_reg; + rxeq_adapt_done <= 1'd0; + rxeq_done <= 1'd0; + end + + //---------- Phase2/3 Bypass (reuse logic from rxeq_control = 2 ---- + 2'd3 : + begin + fsm_rx <= FSM_RXEQ_TXCOEFF; + rxeq_preset <= rxeq_preset; + rxeq_preset_valid <= 1'd0; + rxeq_txpreset <= rxeq_txpreset_reg2; + rxeq_txcoeff <= {txeq_deemph_reg2, rxeq_txcoeff[17:6]}; + rxeq_cnt <= 3'd1; + rxeq_fs <= rxeq_lffs_reg2; + rxeq_lf <= rxeq_lf; + rxeq_new_txcoeff_req <= 1'd0; + rxeq_new_txcoeff <= rxeq_new_txcoeff; + rxeq_lffs_sel <= 1'd0; + rxeq_adapt_done_reg <= rxeq_adapt_done_reg; + rxeq_adapt_done <= 1'd0; + rxeq_done <= 1'd0; + end + + //---------- Default --------------------------- + default : + begin + fsm_rx <= FSM_RXEQ_IDLE; + rxeq_preset <= rxeq_preset; + rxeq_preset_valid <= 1'd0; + rxeq_txpreset <= rxeq_txpreset; + rxeq_txcoeff <= rxeq_txcoeff; + rxeq_cnt <= 3'd0; + rxeq_fs <= rxeq_fs; + rxeq_lf <= rxeq_lf; + rxeq_new_txcoeff_req <= 1'd0; + rxeq_new_txcoeff <= rxeq_new_txcoeff; + rxeq_lffs_sel <= 1'd0; + rxeq_adapt_done_reg <= rxeq_adapt_done_reg; + rxeq_adapt_done <= 1'd0; + rxeq_done <= 1'd0; + end + + endcase + + end + + //---------- Process RXEQ Preset ------------------- + FSM_RXEQ_PRESET : + + begin + fsm_rx <= (rxeqscan_preset_done ? FSM_RXEQ_DONE : FSM_RXEQ_PRESET); + rxeq_preset <= rxeq_preset_reg2; + rxeq_preset_valid <= 1'd1; + rxeq_txpreset <= rxeq_txpreset; + rxeq_txcoeff <= rxeq_txcoeff; + rxeq_cnt <= 3'd0; + rxeq_fs <= rxeq_fs; + rxeq_lf <= rxeq_lf; + rxeq_new_txcoeff_req <= 1'd0; + rxeq_new_txcoeff <= rxeq_new_txcoeff; + rxeq_lffs_sel <= 1'd0; + rxeq_adapt_done_reg <= rxeq_adapt_done_reg; + rxeq_adapt_done <= 1'd0; + rxeq_done <= 1'd0; + end + + //---------- Shift-in Link Partner TX Coefficient and Preset + FSM_RXEQ_TXCOEFF : + + begin + fsm_rx <= ((rxeq_cnt == 3'd2) ? FSM_RXEQ_LF : FSM_RXEQ_TXCOEFF); + rxeq_preset <= rxeq_preset; + rxeq_preset_valid <= 1'd0; + rxeq_txpreset <= rxeq_txpreset_reg2; + rxeq_txcoeff <= {txeq_deemph_reg2, rxeq_txcoeff[17:6]}; + rxeq_cnt <= rxeq_cnt + 2'd1; + rxeq_fs <= rxeq_fs; + rxeq_lf <= rxeq_lf; + rxeq_new_txcoeff_req <= 1'd0; + rxeq_new_txcoeff <= rxeq_new_txcoeff; + rxeq_lffs_sel <= 1'd1; + rxeq_adapt_done_reg <= rxeq_adapt_done_reg; + rxeq_adapt_done <= 1'd0; + rxeq_done <= 1'd0; + end + + //---------- Read Low Frequency (LF) Value --------- + FSM_RXEQ_LF : + begin + fsm_rx <= ((rxeq_cnt == 3'd7) ? FSM_RXEQ_NEW_TXCOEFF_REQ : FSM_RXEQ_LF); + rxeq_preset <= rxeq_preset; + rxeq_preset_valid <= 1'd0; + rxeq_txpreset <= rxeq_txpreset; + rxeq_txcoeff <= rxeq_txcoeff; + rxeq_cnt <= rxeq_cnt + 2'd1; + rxeq_fs <= rxeq_fs; + rxeq_lf <= ((rxeq_cnt == 3'd7) ? rxeq_lffs_reg2 : rxeq_lf); + rxeq_new_txcoeff_req <= 1'd0; + rxeq_new_txcoeff <= rxeq_new_txcoeff; + rxeq_lffs_sel <= 1'd1; + rxeq_adapt_done_reg <= rxeq_adapt_done_reg; + rxeq_adapt_done <= 1'd0; + rxeq_done <= 1'd0; + end + + //---------- Request New TX Coefficient ------------ + FSM_RXEQ_NEW_TXCOEFF_REQ : + + begin + rxeq_preset <= rxeq_preset; + rxeq_preset_valid <= 1'd0; + rxeq_txpreset <= rxeq_txpreset; + rxeq_txcoeff <= rxeq_txcoeff; + rxeq_cnt <= 3'd0; + rxeq_fs <= rxeq_fs; + rxeq_lf <= rxeq_lf; + + if (rxeqscan_new_txcoeff_done) + begin + fsm_rx <= FSM_RXEQ_DONE; + rxeq_new_txcoeff_req <= 1'd0; + rxeq_new_txcoeff <= rxeqscan_lffs_sel ? {14'd0, rxeqscan_new_txcoeff[3:0]} : rxeqscan_new_txcoeff; + rxeq_lffs_sel <= rxeqscan_lffs_sel; + rxeq_adapt_done_reg <= rxeqscan_adapt_done || rxeq_adapt_done_reg; + rxeq_adapt_done <= rxeqscan_adapt_done || rxeq_adapt_done_reg; + rxeq_done <= 1'd1; + end + else + begin + fsm_rx <= FSM_RXEQ_NEW_TXCOEFF_REQ; + rxeq_new_txcoeff_req <= 1'd1; + rxeq_new_txcoeff <= rxeq_new_txcoeff; + rxeq_lffs_sel <= 1'd0; + rxeq_adapt_done_reg <= rxeq_adapt_done_reg; + rxeq_adapt_done <= 1'd0; + rxeq_done <= 1'd0; + end + + end + + //---------- RXEQ Done ----------------------------- + FSM_RXEQ_DONE : + + begin + fsm_rx <= ((rxeq_control_reg2 == 2'd0) ? FSM_RXEQ_IDLE : FSM_RXEQ_DONE); + rxeq_preset <= rxeq_preset; + rxeq_preset_valid <= 1'd0; + rxeq_txpreset <= rxeq_txpreset; + rxeq_txcoeff <= rxeq_txcoeff; + rxeq_cnt <= 3'd0; + rxeq_fs <= rxeq_fs; + rxeq_lf <= rxeq_lf; + rxeq_new_txcoeff_req <= 1'd0; + rxeq_new_txcoeff <= rxeq_new_txcoeff; + rxeq_lffs_sel <= rxeq_lffs_sel; + rxeq_adapt_done_reg <= rxeq_adapt_done_reg; + rxeq_adapt_done <= rxeq_adapt_done; + rxeq_done <= 1'd1; + end + + //---------- Default State ------------------------- + default : + begin + fsm_rx <= FSM_RXEQ_IDLE; + rxeq_preset <= 3'd0; + rxeq_preset_valid <= 1'd0; + rxeq_txpreset <= 4'd0; + rxeq_txcoeff <= 18'd0; + rxeq_cnt <= 3'd0; + rxeq_fs <= 6'd0; + rxeq_lf <= 6'd0; + rxeq_new_txcoeff_req <= 1'd0; + rxeq_new_txcoeff <= 18'd0; + rxeq_lffs_sel <= 1'd0; + rxeq_adapt_done_reg <= 1'd0; + rxeq_adapt_done <= 1'd0; + rxeq_done <= 1'd0; + end + + endcase + + end + +end + + + +//---------- RXEQ Eye Scan Module ---------------------------------------------- +pcie_7x_0_rxeq_scan # +( + .PCIE_SIM_MODE (PCIE_SIM_MODE), + .PCIE_GT_DEVICE (PCIE_GT_DEVICE), + .PCIE_RXEQ_MODE_GEN3 (PCIE_RXEQ_MODE_GEN3) +) + +rxeq_scan_i +( + + //---------- Input ------------------------------------- + .RXEQSCAN_CLK (EQ_CLK), + .RXEQSCAN_RST_N (EQ_RST_N), + .RXEQSCAN_CONTROL (rxeq_control_reg2), + .RXEQSCAN_FS (rxeq_fs), + .RXEQSCAN_LF (rxeq_lf), + .RXEQSCAN_PRESET (rxeq_preset), + .RXEQSCAN_PRESET_VALID (rxeq_preset_valid), + .RXEQSCAN_TXPRESET (rxeq_txpreset), + .RXEQSCAN_TXCOEFF (rxeq_txcoeff), + .RXEQSCAN_NEW_TXCOEFF_REQ (rxeq_new_txcoeff_req), + + //---------- Output ------------------------------------ + .RXEQSCAN_PRESET_DONE (rxeqscan_preset_done), + .RXEQSCAN_NEW_TXCOEFF (rxeqscan_new_txcoeff), + .RXEQSCAN_NEW_TXCOEFF_DONE (rxeqscan_new_txcoeff_done), + .RXEQSCAN_LFFS_SEL (rxeqscan_lffs_sel), + .RXEQSCAN_ADAPT_DONE (rxeqscan_adapt_done) + +); + + + +//---------- PIPE EQ Output ---------------------------------------------------- +assign EQ_TXEQ_DEEMPH = txeq_txcoeff[0]; +assign EQ_TXEQ_PRECURSOR = gen3_reg2 ? txeq_txcoeff[ 4: 0] : 5'h00; +assign EQ_TXEQ_MAINCURSOR = gen3_reg2 ? txeq_txcoeff[12: 6] : 7'h00; +assign EQ_TXEQ_POSTCURSOR = gen3_reg2 ? txeq_txcoeff[17:13] : 5'h00; +assign EQ_TXEQ_DEEMPH_OUT = {1'd0, txeq_txcoeff[18:14], txeq_txcoeff[12:7], 1'd0, txeq_txcoeff[5:1]}; // Divide by 2x +assign EQ_TXEQ_DONE = txeq_done; +assign EQ_TXEQ_FSM = fsm_tx; + +assign EQ_RXEQ_NEW_TXCOEFF = rxeq_user_en_reg2 ? rxeq_user_txcoeff_reg2 : rxeq_new_txcoeff; +assign EQ_RXEQ_LFFS_SEL = rxeq_user_en_reg2 ? rxeq_user_mode_reg2 : rxeq_lffs_sel; +assign EQ_RXEQ_ADAPT_DONE = rxeq_adapt_done; +assign EQ_RXEQ_DONE = rxeq_done; +assign EQ_RXEQ_FSM = fsm_rx; + + + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_rate.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_rate.v new file mode 100644 index 0000000..8c27418 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_rate.v @@ -0,0 +1,1185 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_pipe_rate.v +// Version : 3.3 +//------------------------------------------------------------------------------ +// Filename : pipe_rate.v +// Description : PIPE Rate Module for 7 Series Transceiver +// Version : 20.1 +//------------------------------------------------------------------------------ + + + +`timescale 1ns / 1ps + + + +//---------- PIPE Rate Module -------------------------------------------------- +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_pipe_rate # +( + + parameter PCIE_SIM_SPEEDUP = "FALSE", // PCIe sim speedup + parameter PCIE_GT_DEVICE = "GTX", // PCIe GT device + parameter PCIE_USE_MODE = "3.0", // PCIe use mode + parameter PCIE_PLL_SEL = "CPLL", // PCIe PLL select for Gen1/Gen2 only + parameter PCIE_POWER_SAVING = "TRUE", // PCIe power saving + parameter PCIE_ASYNC_EN = "FALSE", // PCIe async enable + parameter PCIE_TXBUF_EN = "FALSE", // PCIe TX buffer enable for Gen1/Gen2 only + parameter PCIE_RXBUF_EN = "TRUE", // PCIe RX buffer enable for Gen3 only + parameter TXDATA_WAIT_MAX = 4'd15 // TXDATA wait max + +) + +( + + //---------- Input ------------------------------------- + input RATE_CLK, + input RATE_RST_N, + input RATE_RST_IDLE, + input RATE_ACTIVE_LANE, + input [ 1:0] RATE_RATE_IN, + input RATE_CPLLLOCK, + input RATE_QPLLLOCK, + input RATE_MMCM_LOCK, + input RATE_DRP_DONE, + input RATE_RXPMARESETDONE, + input RATE_TXRESETDONE, + input RATE_RXRESETDONE, + input RATE_TXRATEDONE, + input RATE_RXRATEDONE, + input RATE_PHYSTATUS, + input RATE_RESETOVRD_DONE, + input RATE_TXSYNC_DONE, + input RATE_RXSYNC_DONE, + + //---------- Output ------------------------------------ + output RATE_CPLLPD, + output RATE_QPLLPD, + output RATE_CPLLRESET, + output RATE_QPLLRESET, + output RATE_TXPMARESET, + output RATE_RXPMARESET, + output RATE_DRP_START, + output [ 1:0] RATE_SYSCLKSEL, + output RATE_PCLK_SEL, + output RATE_GEN3, + output RATE_DRP_X16X20_MODE, + output RATE_DRP_X16, + output [ 2:0] RATE_RATE_OUT, + output RATE_RESETOVRD_START, + output RATE_TXSYNC_START, + output RATE_DONE, + output RATE_RXSYNC_START, + output RATE_RXSYNC, + output RATE_IDLE, + output [ 4:0] RATE_FSM + +); + + //---------- Input FF or Buffer ------------------------ +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rst_idle_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 1:0] rate_in_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg cplllock_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg qplllock_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg mmcm_lock_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg drp_done_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxpmaresetdone_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txresetdone_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxresetdone_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txratedone_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxratedone_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg phystatus_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg resetovrd_done_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txsync_done_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxsync_done_reg1; + +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rst_idle_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 1:0] rate_in_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg cplllock_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg qplllock_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg mmcm_lock_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg drp_done_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxpmaresetdone_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txresetdone_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxresetdone_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txratedone_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxratedone_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg phystatus_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg resetovrd_done_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txsync_done_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxsync_done_reg2; + + //---------- Internal Signals -------------------------- + wire pll_lock; + wire [ 2:0] rate; + reg [ 3:0] txdata_wait_cnt = 4'd0; + reg txratedone = 1'd0; + reg rxratedone = 1'd0; + reg phystatus = 1'd0; + reg ratedone = 1'd0; + reg gen3_exit = 1'd0; + + //---------- Output FF or Buffer ----------------------- + reg cpllpd = 1'd0; + reg qpllpd = 1'd0; + reg cpllreset = 1'd0; + reg qpllreset = 1'd0; + reg txpmareset = 1'd0; + reg rxpmareset = 1'd0; + reg [ 1:0] sysclksel = (PCIE_PLL_SEL == "QPLL") ? 2'd1 : 2'd0; + reg gen3 = 1'd0; + reg pclk_sel = 1'd0; + reg [ 2:0] rate_out = 3'd0; + reg drp_start = 1'd0; + reg drp_x16x20_mode = 1'd0; + reg drp_x16 = 1'd0; + reg [4:0] fsm = 0; + + //---------- FSM --------------------------------------- + localparam FSM_IDLE = 0; + localparam FSM_PLL_PU = 1; // Gen 3 only + localparam FSM_PLL_PURESET = 2; // Gen 3 only + localparam FSM_PLL_LOCK = 3; // Gen 3 or reset only + localparam FSM_DRP_X16_GEN3_START = 4; + localparam FSM_DRP_X16_GEN3_DONE = 5; + localparam FSM_PMARESET_HOLD = 6; // Gen 3 or reset only + localparam FSM_PLL_SEL = 7; // Gen 3 or reset only + localparam FSM_MMCM_LOCK = 8; // Gen 3 or reset only + localparam FSM_DRP_START = 9; // Gen 3 or reset only + localparam FSM_DRP_DONE = 10; // Gen 3 or reset only + localparam FSM_PMARESET_RELEASE = 11; // Gen 3 only + localparam FSM_PMARESET_DONE = 12; // Gen 3 only + localparam FSM_TXDATA_WAIT = 13; + localparam FSM_PCLK_SEL = 14; + localparam FSM_DRP_X16_START = 15; + localparam FSM_DRP_X16_DONE = 16; + localparam FSM_RATE_SEL = 17; + localparam FSM_RXPMARESETDONE = 18; + localparam FSM_DRP_X20_START = 19; + localparam FSM_DRP_X20_DONE = 20; + localparam FSM_RATE_DONE = 21; + localparam FSM_RESETOVRD_START = 22; // PCIe use mode 1.0 only + localparam FSM_RESETOVRD_DONE = 23; // PCIe use mode 1.0 only + localparam FSM_PLL_PDRESET = 24; + localparam FSM_PLL_PD = 25; + localparam FSM_TXSYNC_START = 26; + localparam FSM_TXSYNC_DONE = 27; + localparam FSM_DONE = 28; // Must sync value to pipe_user.v + localparam FSM_RXSYNC_START = 29; // Gen 3 only + localparam FSM_RXSYNC_DONE = 30; // Gen 3 only + + + +//---------- Input FF ---------------------------------------------------------- +always @ (posedge RATE_CLK) +begin + + if (!RATE_RST_N) + begin + //---------- 1st Stage FF -------------------------- + rst_idle_reg1 <= 1'd0; + rate_in_reg1 <= 2'd0; + cplllock_reg1 <= 1'd0; + qplllock_reg1 <= 1'd0; + mmcm_lock_reg1 <= 1'd0; + drp_done_reg1 <= 1'd0; + rxpmaresetdone_reg1 <= 1'd0; + txresetdone_reg1 <= 1'd0; + rxresetdone_reg1 <= 1'd0; + txratedone_reg1 <= 1'd0; + rxratedone_reg1 <= 1'd0; + phystatus_reg1 <= 1'd0; + resetovrd_done_reg1 <= 1'd0; + txsync_done_reg1 <= 1'd0; + rxsync_done_reg1 <= 1'd0; + //---------- 2nd Stage FF -------------------------- + rst_idle_reg2 <= 1'd0; + rate_in_reg2 <= 2'd0; + cplllock_reg2 <= 1'd0; + qplllock_reg2 <= 1'd0; + mmcm_lock_reg2 <= 1'd0; + drp_done_reg2 <= 1'd0; + rxpmaresetdone_reg2 <= 1'd0; + txresetdone_reg2 <= 1'd0; + rxresetdone_reg2 <= 1'd0; + txratedone_reg2 <= 1'd0; + rxratedone_reg2 <= 1'd0; + phystatus_reg2 <= 1'd0; + resetovrd_done_reg2 <= 1'd0; + txsync_done_reg2 <= 1'd0; + rxsync_done_reg2 <= 1'd0; + end + else + begin + //---------- 1st Stage FF -------------------------- + rst_idle_reg1 <= RATE_RST_IDLE; + rate_in_reg1 <= RATE_RATE_IN; + cplllock_reg1 <= RATE_CPLLLOCK; + qplllock_reg1 <= RATE_QPLLLOCK; + mmcm_lock_reg1 <= RATE_MMCM_LOCK; + drp_done_reg1 <= RATE_DRP_DONE; + rxpmaresetdone_reg1 <= RATE_RXPMARESETDONE; + txresetdone_reg1 <= RATE_TXRESETDONE; + rxresetdone_reg1 <= RATE_RXRESETDONE; + txratedone_reg1 <= RATE_TXRATEDONE; + rxratedone_reg1 <= RATE_RXRATEDONE; + phystatus_reg1 <= RATE_PHYSTATUS; + resetovrd_done_reg1 <= RATE_RESETOVRD_DONE; + txsync_done_reg1 <= RATE_TXSYNC_DONE; + rxsync_done_reg1 <= RATE_RXSYNC_DONE; + //---------- 2nd Stage FF -------------------------- + rst_idle_reg2 <= rst_idle_reg1; + rate_in_reg2 <= rate_in_reg1; + cplllock_reg2 <= cplllock_reg1; + qplllock_reg2 <= qplllock_reg1; + mmcm_lock_reg2 <= mmcm_lock_reg1; + drp_done_reg2 <= drp_done_reg1; + rxpmaresetdone_reg2 <= rxpmaresetdone_reg1; + txresetdone_reg2 <= txresetdone_reg1; + rxresetdone_reg2 <= rxresetdone_reg1; + txratedone_reg2 <= txratedone_reg1; + rxratedone_reg2 <= rxratedone_reg1; + phystatus_reg2 <= phystatus_reg1; + resetovrd_done_reg2 <= resetovrd_done_reg1; + txsync_done_reg2 <= txsync_done_reg1; + rxsync_done_reg2 <= rxsync_done_reg1; + end + +end + + + +//---------- Select CPLL or QPLL Lock ------------------------------------------ +// Gen1 : Wait for QPLL lock if QPLL is used for Gen1/Gen2, else wait for CPLL lock +// Gen2 : Wait for QPLL lock if QPLL is used for Gen1/Gen2, else wait for CPLL lock +// Gen3 : Wait for QPLL lock +//------------------------------------------------------------------------------ +assign pll_lock = (rate_in_reg2 == 2'd2) || (PCIE_PLL_SEL == "QPLL") ? qplllock_reg2 : cplllock_reg2; + + + +//---------- Select Rate ------------------------------------------------------- +// Gen1 : Div 4 using [TX/RX]OUT_DIV = 4 if QPLL is used for Gen1/Gen2, else div 2 using [TX/RX]OUT_DIV = 2 +// Gen2 : Div 2 using [TX/RX]RATE = 3'd2 if QPLL is used for Gen1/Gen2, else div 1 using [TX/RX]RATE = 3'd1 +// Gen3 : Div 1 using [TX/RX]OUT_DIV = 1 +//------------------------------------------------------------------------------ +assign rate = (rate_in_reg2 == 2'd1) && (PCIE_PLL_SEL == "QPLL") ? 3'd2 : + (rate_in_reg2 == 2'd1) && (PCIE_PLL_SEL == "CPLL") ? 3'd1 : 3'd0; + + + +//---------- TXDATA Wait Counter ----------------------------------------------- +always @ (posedge RATE_CLK) +begin + + if (!RATE_RST_N) + txdata_wait_cnt <= 4'd0; + else + + //---------- Increment Wait Counter ---------------- + if ((fsm == FSM_TXDATA_WAIT) && (txdata_wait_cnt < TXDATA_WAIT_MAX)) + txdata_wait_cnt <= txdata_wait_cnt + 4'd1; + + //---------- Hold Wait Counter --------------------- + else if ((fsm == FSM_TXDATA_WAIT) && (txdata_wait_cnt == TXDATA_WAIT_MAX)) + txdata_wait_cnt <= txdata_wait_cnt; + + //---------- Reset Wait Counter -------------------- + else + txdata_wait_cnt <= 4'd0; + +end + + + +//---------- Latch TXRATEDONE, RXRATEDONE, and PHYSTATUS ----------------------- +always @ (posedge RATE_CLK) +begin + + if (!RATE_RST_N) + begin + txratedone <= 1'd0; + rxratedone <= 1'd0; + phystatus <= 1'd0; + ratedone <= 1'd0; + end + else + begin + + if (fsm == FSM_RATE_DONE) + + begin + + //---------- Latch TXRATEDONE ------------------ + if (txratedone_reg2) + txratedone <= 1'd1; + else + txratedone <= txratedone; + + //---------- Latch RXRATEDONE ------------------ + if (rxratedone_reg2) + rxratedone <= 1'd1; + else + rxratedone <= rxratedone; + + //---------- Latch PHYSTATUS ------------------- + if (phystatus_reg2) + phystatus <= 1'd1; + else + phystatus <= phystatus; + + //---------- Latch Rate Done ------------------- + if (rxratedone && txratedone && phystatus) + ratedone <= 1'd1; + else + ratedone <= ratedone; + + end + + else + + begin + txratedone <= 1'd0; + rxratedone <= 1'd0; + phystatus <= 1'd0; + ratedone <= 1'd0; + end + + end + +end + + + +//---------- PIPE Rate FSM ----------------------------------------------------- +always @ (posedge RATE_CLK) +begin + + if (!RATE_RST_N) + begin + fsm <= FSM_PLL_LOCK; + gen3_exit <= 1'd0; + cpllpd <= 1'd0; + qpllpd <= 1'd0; + cpllreset <= 1'd0; + qpllreset <= 1'd0; + txpmareset <= 1'd0; + rxpmareset <= 1'd0; + sysclksel <= (PCIE_PLL_SEL == "QPLL") ? 2'd1 : 2'd0; + pclk_sel <= 1'd0; + gen3 <= 1'd0; + rate_out <= 3'd0; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + else + begin + + case (fsm) + + //---------- Idle State ---------------------------- + FSM_IDLE : + + begin + //---------- Detect Rate Change ---------------- + if (rate_in_reg2 != rate_in_reg1) + begin + fsm <= ((rate_in_reg2 == 2'd2) || (rate_in_reg1 == 2'd2)) ? FSM_PLL_PU : FSM_TXDATA_WAIT; + gen3_exit <= (rate_in_reg2 == 2'd2); + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + else + begin + fsm <= FSM_IDLE; + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + end + + //---------- Power-up PLL -------------------------- + FSM_PLL_PU : + + begin + fsm <= FSM_PLL_PURESET; + gen3_exit <= gen3_exit; + cpllpd <= (PCIE_PLL_SEL == "QPLL"); + qpllpd <= 1'd0; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + //---------- Release PLL Resets -------------------- + FSM_PLL_PURESET : + + begin + fsm <= FSM_PLL_LOCK; + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= (PCIE_PLL_SEL == "QPLL"); + qpllreset <= 1'd0; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + //---------- Wait for PLL Lock --------------------- + FSM_PLL_LOCK : + + begin + fsm <= (pll_lock ? ((!rst_idle_reg2 || (rate_in_reg2 == 2'd1)) ? FSM_PMARESET_HOLD : FSM_DRP_X16_GEN3_START) : FSM_PLL_LOCK); + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + //---------- Start DRP x16 ------------------------- + FSM_DRP_X16_GEN3_START : + + begin + fsm <= (!drp_done_reg2) ? FSM_DRP_X16_GEN3_DONE : FSM_DRP_X16_GEN3_START; + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd1; + drp_x16x20_mode <= 1'd1; + drp_x16 <= 1'd1; + end + + //---------- Wait for DRP x16 Done ----------------- + FSM_DRP_X16_GEN3_DONE : + + begin + fsm <= drp_done_reg2 ? FSM_PMARESET_HOLD : FSM_DRP_X16_GEN3_DONE; + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd1; + drp_x16 <= 1'd1; + end + + //---------- Hold both PMA in Reset ---------------- + // Gen1 : Release PMA Reset + // Gen2 : Release PMA Reset + // Gen3 : Hold PMA Reset + //-------------------------------------------------- + FSM_PMARESET_HOLD : + + begin + fsm <= FSM_PLL_SEL; + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= ((rate_in_reg2 == 2'd2) || gen3_exit); + rxpmareset <= ((rate_in_reg2 == 2'd2) || gen3_exit); + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + //---------- Select PLL ---------------------------- + // Gen1 : QPLL if PCIE_PLL_SEL = QPLL, else CPLL + // Gen2 : QPLL if PCIE_PLL_SEL = QPLL, else CPLL + // Gen3 : QPLL + //-------------------------------------------------- + FSM_PLL_SEL : + + begin + fsm <= FSM_MMCM_LOCK; + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= ((rate_in_reg2 == 2'd2) || (PCIE_PLL_SEL == "QPLL")) ? 2'd1 : 2'd0; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + //---------- Check for MMCM Lock ------------------- + FSM_MMCM_LOCK : + + begin + fsm <= (mmcm_lock_reg2 && !rxpmaresetdone_reg2 ? FSM_DRP_START : FSM_MMCM_LOCK); + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + //---------- Start DRP ----------------------------- + FSM_DRP_START: + + begin + fsm <= (!drp_done_reg2 ? FSM_DRP_DONE : FSM_DRP_START); + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= ((rate_in_reg2 == 2'd1) || (rate_in_reg2 == 2'd2)); + gen3 <= (rate_in_reg2 == 2'd2); + rate_out <= (((rate_in_reg2 == 2'd2) || gen3_exit) ? rate : rate_out); + drp_start <= 1'd1; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + //---------- Wait for DRP Done --------------------- + FSM_DRP_DONE : + + begin + fsm <= ((drp_done_reg2 && pll_lock) ? (rst_idle_reg2 ? FSM_PMARESET_RELEASE : FSM_IDLE): FSM_DRP_DONE); + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + //---------- Release PMA Resets -------------------- + FSM_PMARESET_RELEASE : + + begin + fsm <= FSM_PMARESET_DONE; + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= 1'd0; + rxpmareset <= 1'd0; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + //---------- Wait for both TX/RX PMA Reset Dones and PHYSTATUS Deassertion + FSM_PMARESET_DONE : + + begin + fsm <= (((rxresetdone_reg2 && txresetdone_reg2 && !phystatus_reg2) || !RATE_ACTIVE_LANE) ? FSM_TXDATA_WAIT : FSM_PMARESET_DONE); + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + //---------- Wait for TXDATA to TX[P/N] Latency ---- + FSM_TXDATA_WAIT : + + begin + fsm <= (txdata_wait_cnt == TXDATA_WAIT_MAX) ? FSM_PCLK_SEL : FSM_TXDATA_WAIT; + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + //---------- Select PCLK Frequency ----------------- + // Gen1 : PCLK = 125 MHz + // Gen2 : PCLK = 250 MHz + // Gen3 : PCLK = 250 MHz + //-------------------------------------------------- + FSM_PCLK_SEL : + + begin + fsm <= ((PCIE_GT_DEVICE == "GTH") && ((rate_in_reg2 == 2'd1) || ((!gen3_exit) && (rate_in_reg2 == 2'd0)))) ? FSM_DRP_X16_START : FSM_RATE_SEL; + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= ((rate_in_reg2 == 2'd1) || (rate_in_reg2 == 2'd2)); + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + //---------- Start DRP x16 ------------------------- + FSM_DRP_X16_START : + + begin + fsm <= (!drp_done_reg2) ? FSM_DRP_X16_DONE : FSM_DRP_X16_START; + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd1; + drp_x16x20_mode <= 1'd1; + drp_x16 <= 1'd1; + end + + //---------- Wait for DRP x16 Done ----------------- + FSM_DRP_X16_DONE : + + begin + fsm <= drp_done_reg2 ? FSM_RATE_SEL : FSM_DRP_X16_DONE; + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd1; + drp_x16 <= 1'd1; + end + + //---------- Select Rate --------------------------- + FSM_RATE_SEL : + + begin + fsm <= ((PCIE_GT_DEVICE == "GTH") && ((rate_in_reg2 == 2'd1) || ((!gen3_exit) && (rate_in_reg2 == 2'd0)))) ? FSM_RXPMARESETDONE : FSM_RATE_DONE; + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate; // Update [TX/RX]RATE + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + //---------- Wait for RXPMARESETDONE De-assertion -- + FSM_RXPMARESETDONE : + + begin + fsm <= (!rxpmaresetdone_reg2) ? FSM_DRP_X20_START : FSM_RXPMARESETDONE; + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + //---------- Start DRP x20 ------------------------- + FSM_DRP_X20_START : + + begin + fsm <= (!drp_done_reg2) ? FSM_DRP_X20_DONE : FSM_DRP_X20_START; + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd1; + drp_x16x20_mode <= 1'd1; + drp_x16 <= 1'd0; + end + + //---------- Wait for DRP x20 Done ----------------- + FSM_DRP_X20_DONE : + + begin + fsm <= drp_done_reg2 ? FSM_RATE_DONE : FSM_DRP_X20_DONE; + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd1; + drp_x16 <= 1'd0; + end + + //---------- Wait for Rate Change Done ------------- + FSM_RATE_DONE : + + begin + if (ratedone || (rate_in_reg2 == 2'd2) || (gen3_exit) || !RATE_ACTIVE_LANE) + if ((PCIE_USE_MODE == "1.0") && (rate_in_reg2 != 2'd2) && (!gen3_exit)) + fsm <= FSM_RESETOVRD_START; + else + fsm <= FSM_PLL_PDRESET; + else + fsm <= FSM_RATE_DONE; + + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + //---------- Reset Override Start ------------------ + FSM_RESETOVRD_START: + + begin + fsm <= (!resetovrd_done_reg2 ? FSM_RESETOVRD_DONE : FSM_RESETOVRD_START); + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + //---------- Reset Override Done ------------------- + FSM_RESETOVRD_DONE : + + begin + fsm <= (resetovrd_done_reg2 ? FSM_PLL_PDRESET : FSM_RESETOVRD_DONE); + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + //---------- Hold PLL Not Used in Reset ------------ + FSM_PLL_PDRESET : + + begin + fsm <= FSM_PLL_PD; + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= (PCIE_PLL_SEL == "QPLL") ? 1'd1 : (rate_in_reg2 == 2'd2); + qpllreset <= (PCIE_PLL_SEL == "QPLL") ? 1'd0 : (rate_in_reg2 != 2'd2); + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + //---------- Power-Down PLL Not Used --------------- + FSM_PLL_PD : + + begin + fsm <= (((rate_in_reg2 == 2'd2) || (PCIE_TXBUF_EN == "FALSE")) ? FSM_TXSYNC_START : FSM_DONE); + gen3_exit <= gen3_exit; + cpllpd <= (PCIE_PLL_SEL == "QPLL") ? 1'd1 : (rate_in_reg2 == 2'd2); + qpllpd <= (PCIE_PLL_SEL == "QPLL") ? 1'd0 : (rate_in_reg2 != 2'd2); + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + //---------- Start TX Sync ------------------------- + FSM_TXSYNC_START: + + begin + fsm <= (!txsync_done_reg2 ? FSM_TXSYNC_DONE : FSM_TXSYNC_START); + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + //---------- Wait for TX Sync Done ----------------- + FSM_TXSYNC_DONE: + + begin + fsm <= (txsync_done_reg2 ? FSM_DONE : FSM_TXSYNC_DONE); + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + //---------- Rate Change Done ---------------------- + FSM_DONE : + + begin + fsm <= (((rate_in_reg2 == 2'd2) && (PCIE_RXBUF_EN == "FALSE") && (PCIE_ASYNC_EN == "TRUE")) ? FSM_RXSYNC_START : FSM_IDLE); + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + //---------- Start RX Sync ------------------------- + FSM_RXSYNC_START: + + begin + fsm <= (!rxsync_done_reg2 ? FSM_RXSYNC_DONE : FSM_RXSYNC_START); + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + //---------- Wait for RX Sync Done ----------------- + FSM_RXSYNC_DONE: + + begin + fsm <= (rxsync_done_reg2 ? FSM_IDLE : FSM_RXSYNC_DONE); + gen3_exit <= gen3_exit; + cpllpd <= cpllpd; + qpllpd <= qpllpd; + cpllreset <= cpllreset; + qpllreset <= qpllreset; + txpmareset <= txpmareset; + rxpmareset <= rxpmareset; + sysclksel <= sysclksel; + pclk_sel <= pclk_sel; + gen3 <= gen3; + rate_out <= rate_out; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + //---------- Default State ------------------------- + default : + + begin + fsm <= FSM_IDLE; + gen3_exit <= 1'd0; + cpllpd <= 1'd0; + qpllpd <= 1'd0; + cpllreset <= 1'd0; + qpllreset <= 1'd0; + txpmareset <= 1'd0; + rxpmareset <= 1'd0; + sysclksel <= (PCIE_PLL_SEL == "QPLL") ? 2'd1 : 2'd0; + pclk_sel <= 1'd0; + gen3 <= 1'd0; + rate_out <= 3'd0; + drp_start <= 1'd0; + drp_x16x20_mode <= 1'd0; + drp_x16 <= 1'd0; + end + + endcase + + end + +end + + + +//---------- PIPE Rate Output -------------------------------------------------- +assign RATE_CPLLPD = ((PCIE_POWER_SAVING == "FALSE") ? 1'd0 : cpllpd); +assign RATE_QPLLPD = ((PCIE_POWER_SAVING == "FALSE") ? 1'd0 : qpllpd); +assign RATE_CPLLRESET = ((PCIE_POWER_SAVING == "FALSE") ? 1'd0 : cpllreset); +assign RATE_QPLLRESET = ((PCIE_POWER_SAVING == "FALSE") ? 1'd0 : qpllreset); +assign RATE_TXPMARESET = txpmareset; +assign RATE_RXPMARESET = rxpmareset; +assign RATE_SYSCLKSEL = sysclksel; + +//assign RATE_DRP_START = (fsm == FSM_DRP_START) || (fsm == FSM_DRP_X16_GEN3_START) || (fsm == FSM_DRP_X16_START) || (fsm == FSM_DRP_X20_START); + assign RATE_DRP_START = drp_start; + +//assign RATE_DRP_X16X20_MODE = (fsm == FSM_DRP_X16_GEN3_START) || (fsm == FSM_DRP_X16_GEN3_DONE) || +// (fsm == FSM_DRP_X16_START) || (fsm == FSM_DRP_X16_DONE) || +// (fsm == FSM_DRP_X20_START) || (fsm == FSM_DRP_X20_DONE); + assign RATE_DRP_X16X20_MODE = drp_x16x20_mode; + +//assign RATE_DRP_X16 = (fsm == FSM_DRP_X16_GEN3_START) || (fsm == FSM_DRP_X16_GEN3_DONE) || +// (fsm == FSM_DRP_X16_START) || (fsm == FSM_DRP_X16_DONE); + assign RATE_DRP_X16 = drp_x16; + +assign RATE_PCLK_SEL = pclk_sel; +assign RATE_GEN3 = gen3; +assign RATE_RATE_OUT = rate_out; +assign RATE_RESETOVRD_START = (fsm == FSM_RESETOVRD_START); +assign RATE_TXSYNC_START = (fsm == FSM_TXSYNC_START); +assign RATE_DONE = (fsm == FSM_DONE); +assign RATE_RXSYNC_START = (fsm == FSM_RXSYNC_START); +assign RATE_RXSYNC = ((fsm == FSM_RXSYNC_START) || (fsm == FSM_RXSYNC_DONE)); +assign RATE_IDLE = (fsm == FSM_IDLE); +assign RATE_FSM = fsm; + + + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_reset.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_reset.v new file mode 100644 index 0000000..4373c33 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_reset.v @@ -0,0 +1,576 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_pipe_reset.v +// Version : 3.3 +//------------------------------------------------------------------------------ +// Filename : pipe_reset.v +// Description : PIPE Reset Module for 7 Series Transceiver +// Version : 20.2 +//------------------------------------------------------------------------------ + + + +`timescale 1ns / 1ps + + + +//---------- PIPE Reset Module ------------------------------------------------- +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_pipe_reset # +( + + //---------- Global ------------------------------------ + parameter PCIE_SIM_SPEEDUP = "FALSE", // PCIe sim speedup + parameter PCIE_GT_DEVICE = "GTX", + parameter PCIE_PLL_SEL = "CPLL", // PCIe PLL select for Gen1/Gen2 only + parameter PCIE_POWER_SAVING = "TRUE", // PCIe power saving + parameter PCIE_TXBUF_EN = "FALSE", // PCIe TX buffer enable + parameter PCIE_LANE = 1, // PCIe number of lanes + //---------- Local ------------------------------------- + parameter CFG_WAIT_MAX = 6'd63, // Configuration wait max + parameter BYPASS_RXCDRLOCK = 1 // Bypass RXCDRLOCK + +) + +( + + //---------- Input ------------------------------------- + input RST_CLK, + input RST_RXUSRCLK, + input RST_DCLK, + input RST_RST_N, + input [PCIE_LANE-1:0] RST_DRP_DONE, + input [PCIE_LANE-1:0] RST_RXPMARESETDONE, + input [PCIE_LANE-1:0] RST_CPLLLOCK, + input RST_QPLL_IDLE, + input [PCIE_LANE-1:0] RST_RATE_IDLE, + input [PCIE_LANE-1:0] RST_RXCDRLOCK, + input RST_MMCM_LOCK, + input [PCIE_LANE-1:0] RST_RESETDONE, + input [PCIE_LANE-1:0] RST_PHYSTATUS, + input [PCIE_LANE-1:0] RST_TXSYNC_DONE, + + //---------- Output ------------------------------------ + output RST_CPLLRESET, + output RST_CPLLPD, + output reg RST_DRP_START, + output reg RST_DRP_X16X20_MODE, + output reg RST_DRP_X16, + output RST_RXUSRCLK_RESET, + output RST_DCLK_RESET, + output RST_GTRESET, + output RST_USERRDY, + output RST_TXSYNC_START, + output RST_IDLE, + output [4:0] RST_FSM + +); + + //---------- Input Register ---------------------------- +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] drp_done_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] rxpmaresetdone_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] cplllock_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg qpll_idle_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] rate_idle_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] rxcdrlock_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg mmcm_lock_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] resetdone_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] phystatus_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] txsync_done_reg1; + +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] drp_done_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] rxpmaresetdone_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] cplllock_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg qpll_idle_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] rate_idle_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] rxcdrlock_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg mmcm_lock_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] resetdone_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] phystatus_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] txsync_done_reg2; + + //---------- Internal Signal --------------------------- + reg [ 5:0] cfg_wait_cnt = 6'd0; + + //---------- Output Register --------------------------- + reg cpllreset = 1'd0; + reg cpllpd = 1'd0; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxusrclk_rst_reg1 = 1'd0; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxusrclk_rst_reg2 = 1'd0; + reg dclk_rst = 1'd0; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg dclk_rst_reg1 = 1'd0; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg dclk_rst_reg2 = 1'd0; + reg gtreset = 1'd0; + reg userrdy = 1'd0; + reg [4:0] fsm = 5'h2; + + //---------- FSM --------------------------------------- + localparam FSM_IDLE = 5'h0; + localparam FSM_CFG_WAIT = 5'h1; + localparam FSM_CPLLRESET = 5'h2; + localparam FSM_DRP_X16_START = 5'h3; + localparam FSM_DRP_X16_DONE = 5'h4; + localparam FSM_CPLLLOCK = 5'h5; + localparam FSM_DRP = 5'h6; + localparam FSM_GTRESET = 5'h7; + localparam FSM_RXPMARESETDONE_1 = 5'h8; + localparam FSM_RXPMARESETDONE_2 = 5'h9; + localparam FSM_DRP_X20_START = 5'hA; + localparam FSM_DRP_X20_DONE = 5'hB; + localparam FSM_MMCM_LOCK = 5'hC; + localparam FSM_RESETDONE = 5'hD; + localparam FSM_CPLL_PD = 5'hE; + localparam FSM_TXSYNC_START = 5'hF; + localparam FSM_TXSYNC_DONE = 5'h10; + + + +//---------- Input FF ---------------------------------------------------------- +always @ (posedge RST_CLK) +begin + + if (!RST_RST_N) + begin + //---------- 1st Stage FF -------------------------- + drp_done_reg1 <= {PCIE_LANE{1'd0}}; + rxpmaresetdone_reg1 <= {PCIE_LANE{1'd0}}; + cplllock_reg1 <= {PCIE_LANE{1'd0}}; + qpll_idle_reg1 <= 1'd0; + rate_idle_reg1 <= {PCIE_LANE{1'd0}}; + rxcdrlock_reg1 <= {PCIE_LANE{1'd0}}; + mmcm_lock_reg1 <= 1'd0; + resetdone_reg1 <= {PCIE_LANE{1'd0}}; + phystatus_reg1 <= {PCIE_LANE{1'd0}}; + txsync_done_reg1 <= {PCIE_LANE{1'd0}}; + //---------- 2nd Stage FF -------------------------- + drp_done_reg2 <= {PCIE_LANE{1'd0}}; + rxpmaresetdone_reg2 <= {PCIE_LANE{1'd0}}; + cplllock_reg2 <= {PCIE_LANE{1'd0}}; + qpll_idle_reg2 <= 1'd0; + rate_idle_reg2 <= {PCIE_LANE{1'd0}}; + rxcdrlock_reg2 <= {PCIE_LANE{1'd0}}; + mmcm_lock_reg2 <= 1'd0; + resetdone_reg2 <= {PCIE_LANE{1'd0}}; + phystatus_reg2 <= {PCIE_LANE{1'd0}}; + txsync_done_reg2 <= {PCIE_LANE{1'd0}}; + end + else + begin + //---------- 1st Stage FF -------------------------- + drp_done_reg1 <= RST_DRP_DONE; + rxpmaresetdone_reg1 <= RST_RXPMARESETDONE; + cplllock_reg1 <= RST_CPLLLOCK; + qpll_idle_reg1 <= RST_QPLL_IDLE; + rate_idle_reg1 <= RST_RATE_IDLE; + rxcdrlock_reg1 <= RST_RXCDRLOCK; + mmcm_lock_reg1 <= RST_MMCM_LOCK; + resetdone_reg1 <= RST_RESETDONE; + phystatus_reg1 <= RST_PHYSTATUS; + txsync_done_reg1 <= RST_TXSYNC_DONE; + //---------- 2nd Stage FF -------------------------- + drp_done_reg2 <= drp_done_reg1; + rxpmaresetdone_reg2 <= rxpmaresetdone_reg1; + cplllock_reg2 <= cplllock_reg1; + qpll_idle_reg2 <= qpll_idle_reg1; + rate_idle_reg2 <= rate_idle_reg1; + rxcdrlock_reg2 <= rxcdrlock_reg1; + mmcm_lock_reg2 <= mmcm_lock_reg1; + resetdone_reg2 <= resetdone_reg1; + phystatus_reg2 <= phystatus_reg1; + txsync_done_reg2 <= txsync_done_reg1; + end + +end + + + +//---------- Configuration Reset Wait Counter ---------------------------------- +always @ (posedge RST_CLK) +begin + + if (!RST_RST_N) + cfg_wait_cnt <= 6'd0; + else + + //---------- Increment Configuration Reset Wait Counter + if ((fsm == FSM_CFG_WAIT) && (cfg_wait_cnt < CFG_WAIT_MAX)) + cfg_wait_cnt <= cfg_wait_cnt + 6'd1; + + //---------- Hold Configuration Reset Wait Counter - + else if ((fsm == FSM_CFG_WAIT) && (cfg_wait_cnt == CFG_WAIT_MAX)) + cfg_wait_cnt <= cfg_wait_cnt; + + //---------- Reset Configuration Reset Wait Counter + else + cfg_wait_cnt <= 6'd0; + +end + + + +//---------- PIPE Reset FSM ---------------------------------------------------- +always @ (posedge RST_CLK) +begin + + if (!RST_RST_N) + begin + fsm <= FSM_CFG_WAIT; + cpllreset <= 1'd0; + cpllpd <= 1'd0; + gtreset <= 1'd0; + userrdy <= 1'd0; + end + else + begin + + case (fsm) + + //---------- Idle State ---------------------------- + FSM_IDLE : + + begin + if (!RST_RST_N) + begin + fsm <= FSM_CFG_WAIT; + cpllreset <= 1'd0; + cpllpd <= 1'd0; + gtreset <= 1'd0; + userrdy <= 1'd0; + end + else + begin + fsm <= FSM_IDLE; + cpllreset <= cpllreset; + cpllpd <= cpllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + end + + //---------- Wait for Configuration Reset Delay --- + FSM_CFG_WAIT : + + begin + fsm <= ((cfg_wait_cnt == CFG_WAIT_MAX) ? FSM_CPLLRESET : FSM_CFG_WAIT); + cpllreset <= cpllreset; + cpllpd <= cpllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + + //---------- Hold CPLL and GTX Channel in Reset ---- + FSM_CPLLRESET : + + begin + fsm <= ((&(~cplllock_reg2) && (&(~resetdone_reg2))) ? FSM_CPLLLOCK : FSM_CPLLRESET); + cpllreset <= 1'd1; + cpllpd <= cpllpd; + gtreset <= 1'd1; + userrdy <= userrdy; + end + + //---------- Wait for CPLL Lock -------------------- + FSM_CPLLLOCK : + + begin + fsm <= (&cplllock_reg2 ? FSM_DRP : FSM_CPLLLOCK); + cpllreset <= 1'd0; + cpllpd <= cpllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + + //---------- Wait for DRP Done to Setup Gen1 ------- + FSM_DRP : + + begin + fsm <= (&rate_idle_reg2 ? ((PCIE_GT_DEVICE == "GTX") ? FSM_GTRESET : FSM_DRP_X16_START) : FSM_DRP); + cpllreset <= cpllreset; + cpllpd <= cpllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + + //---------- Start DRP x16 ------------------------- + FSM_DRP_X16_START : + + begin + fsm <= &(~drp_done_reg2) ? FSM_DRP_X16_DONE : FSM_DRP_X16_START; + cpllreset <= cpllreset; + cpllpd <= cpllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + + //---------- Wait for DRP x16 Done ----------------- + FSM_DRP_X16_DONE : + + begin + fsm <= (&drp_done_reg2) ? FSM_GTRESET : FSM_DRP_X16_DONE; + cpllreset <= cpllreset; + cpllpd <= cpllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + + //---------- Release GTX Channel Reset ------------- + FSM_GTRESET : + + begin + fsm <= (PCIE_GT_DEVICE == "GTX") ? FSM_MMCM_LOCK : FSM_RXPMARESETDONE_1; + cpllreset <= cpllreset; + cpllpd <= cpllpd; + gtreset <= 1'b0; + userrdy <= userrdy; + end + + //---------- Wait for RXPMARESETDONE Assertion ----- + FSM_RXPMARESETDONE_1 : + + begin + fsm <= (&rxpmaresetdone_reg2 || (PCIE_SIM_SPEEDUP == "TRUE")) ? FSM_RXPMARESETDONE_2 : FSM_RXPMARESETDONE_1; + cpllreset <= cpllreset; + cpllpd <= cpllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + + //---------- Wait for RXPMARESETDONE De-assertion -- + FSM_RXPMARESETDONE_2 : + + begin + fsm <= (&(~rxpmaresetdone_reg2) || (PCIE_SIM_SPEEDUP == "TRUE")) ? FSM_DRP_X20_START : FSM_RXPMARESETDONE_2; + cpllreset <= cpllreset; + cpllpd <= cpllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + + //---------- Start DRP x20 ------------------------- + FSM_DRP_X20_START : + + begin + fsm <= &(~drp_done_reg2) ? FSM_DRP_X20_DONE : FSM_DRP_X20_START; + cpllreset <= cpllreset; + cpllpd <= cpllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + + //---------- Wait for DRP x20 Done ----------------- + FSM_DRP_X20_DONE : + + begin + fsm <= (&drp_done_reg2) ? FSM_MMCM_LOCK : FSM_DRP_X20_DONE; + cpllreset <= cpllreset; + cpllpd <= cpllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + + //---------- Wait for MMCM and RX CDR Lock --------- + FSM_MMCM_LOCK : + + begin + if (mmcm_lock_reg2 && (&rxcdrlock_reg2 || (BYPASS_RXCDRLOCK == 1)) && (qpll_idle_reg2 || (PCIE_PLL_SEL == "CPLL"))) + begin + fsm <= FSM_RESETDONE; + cpllreset <= cpllreset; + cpllpd <= cpllpd; + gtreset <= gtreset; + userrdy <= 1'd1; + end + else + begin + fsm <= FSM_MMCM_LOCK; + cpllreset <= cpllreset; + cpllpd <= cpllpd; + gtreset <= gtreset; + userrdy <= 1'd0; + end + end + + //---------- Wait for [TX/RX]RESETDONE and PHYSTATUS + FSM_RESETDONE : + + begin + fsm <= (&resetdone_reg2 && (&(~phystatus_reg2)) ? FSM_CPLL_PD : FSM_RESETDONE); + cpllreset <= cpllreset; + cpllpd <= cpllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + + //---------- Power-Down CPLL if QPLL is Used for Gen1/Gen2 + FSM_CPLL_PD : + + begin + fsm <= ((PCIE_TXBUF_EN == "TRUE") ? FSM_IDLE : FSM_TXSYNC_START); + cpllreset <= cpllreset; + cpllpd <= (PCIE_PLL_SEL == "QPLL"); + gtreset <= gtreset; + userrdy <= userrdy; + end + + //---------- Start TX Sync ------------------------- + FSM_TXSYNC_START : + + begin + fsm <= (&(~txsync_done_reg2) ? FSM_TXSYNC_DONE : FSM_TXSYNC_START); + cpllreset <= cpllreset; + cpllpd <= cpllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + + //---------- Wait for TX Sync Done ----------------- + FSM_TXSYNC_DONE : + + begin + fsm <= (&txsync_done_reg2 ? FSM_IDLE : FSM_TXSYNC_DONE); + cpllreset <= cpllreset; + cpllpd <= cpllpd; + gtreset <= gtreset; + userrdy <= userrdy; + end + + //---------- Default State ------------------------- + default : + + begin + fsm <= FSM_CFG_WAIT; + cpllreset <= 1'd0; + cpllpd <= 1'd0; + gtreset <= 1'd0; + userrdy <= 1'd0; + end + + endcase + + end + +end + + + +//---------- RXUSRCLK Reset Synchronizer --------------------------------------- +always @ (posedge RST_RXUSRCLK) +begin + + rxusrclk_rst_reg1 <= cpllreset; + rxusrclk_rst_reg2 <= rxusrclk_rst_reg1; + +end + + + +//---------- DCLK Reset Synchronizer ------------------------------------------- +always @ (posedge RST_CLK) +begin + + if (fsm == FSM_CFG_WAIT) + begin + dclk_rst <= 1'd1; + end + else + begin + dclk_rst <= 1'd0; + end +end + +always @ (posedge RST_DCLK) +begin + + dclk_rst_reg1 <= dclk_rst; + dclk_rst_reg2 <= dclk_rst_reg1; + +end + + + +//---------- PIPE Reset Output ------------------------------------------------- +assign RST_CPLLRESET = cpllreset; +assign RST_CPLLPD = ((PCIE_POWER_SAVING == "FALSE") ? 1'd0 : cpllpd); +assign RST_RXUSRCLK_RESET = rxusrclk_rst_reg2; +assign RST_DCLK_RESET = dclk_rst_reg2; +assign RST_GTRESET = gtreset; +assign RST_USERRDY = userrdy; +assign RST_TXSYNC_START = (fsm == FSM_TXSYNC_START); +assign RST_IDLE = (fsm == FSM_IDLE); +assign RST_FSM = fsm; + + + + +//-------------------------------------------------------------------------------------------------- +// Register Output +//-------------------------------------------------------------------------------------------------- +always @ (posedge RST_CLK) +begin + + if (!RST_RST_N) + begin + RST_DRP_START <= 1'd0; + RST_DRP_X16X20_MODE <= 1'd0; + RST_DRP_X16 <= 1'd0; + end + else + begin + RST_DRP_START <= (fsm == FSM_DRP_X16_START) || (fsm == FSM_DRP_X20_START); + RST_DRP_X16X20_MODE <= (fsm == FSM_DRP_X16_START) || (fsm == FSM_DRP_X16_DONE) || (fsm == FSM_DRP_X20_START) || (fsm == FSM_DRP_X20_DONE); + RST_DRP_X16 <= (fsm == FSM_DRP_X16_START) || (fsm == FSM_DRP_X16_DONE); + end + +end + + + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_sync.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_sync.v new file mode 100644 index 0000000..3f29364 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_sync.v @@ -0,0 +1,645 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_pipe_sync.v +// Version : 3.3 +//------------------------------------------------------------------------------ +// Filename : pipe_sync.v +// Description : PIPE Sync Module for 7 Series Transceiver +// Version : 20.1 +//------------------------------------------------------------------------------ +// PCIE_TXSYNC_MODE : 0 = Manual TX sync (default). +// : 1 = Auto TX sync. +// PCIE_RXSYNC_MODE : 0 = Manual RX sync (default). +// : 1 = Auto RX sync. +//------------------------------------------------------------------------------ + + + +`timescale 1ns / 1ps + + + +//---------- PIPE Sync Module -------------------------------------------------- +module pcie_7x_0_pipe_sync # +( + + parameter PCIE_GT_DEVICE = "GTX", // PCIe GT device + parameter PCIE_TXBUF_EN = "FALSE", // PCIe TX buffer enable for Gen1/Gen2 only + parameter PCIE_RXBUF_EN = "TRUE", // PCIe TX buffer enable for Gen3 only + parameter PCIE_TXSYNC_MODE = 0, // PCIe TX sync mode + parameter PCIE_RXSYNC_MODE = 0, // PCIe RX sync mode + parameter PCIE_LANE = 1, // PCIe lane + parameter PCIE_LINK_SPEED = 3, // PCIe link speed + parameter BYPASS_TXDELAY_ALIGN = 0, // Bypass TX delay align + parameter BYPASS_RXDELAY_ALIGN = 0 // Bypass RX delay align + +) + +( + + //---------- Input ------------------------------------- + input SYNC_CLK, + input SYNC_RST_N, + input SYNC_SLAVE, + input SYNC_GEN3, + input SYNC_RATE_IDLE, + input SYNC_MMCM_LOCK, + input SYNC_RXELECIDLE, + input SYNC_RXCDRLOCK, + input SYNC_ACTIVE_LANE, + + input SYNC_TXSYNC_START, + input SYNC_TXPHINITDONE, + input SYNC_TXDLYSRESETDONE, + input SYNC_TXPHALIGNDONE, + input SYNC_TXSYNCDONE, + + input SYNC_RXSYNC_START, + input SYNC_RXDLYSRESETDONE, + input SYNC_RXPHALIGNDONE_M, + input SYNC_RXPHALIGNDONE_S, + input SYNC_RXSYNC_DONEM_IN, + input SYNC_RXSYNCDONE, + + //---------- Output ------------------------------------ + output SYNC_TXPHDLYRESET, + output SYNC_TXPHALIGN, + output SYNC_TXPHALIGNEN, + output SYNC_TXPHINIT, + output SYNC_TXDLYBYPASS, + output SYNC_TXDLYSRESET, + output SYNC_TXDLYEN, + output SYNC_TXSYNC_DONE, + output [ 5:0] SYNC_FSM_TX, + + output SYNC_RXPHALIGN, + output SYNC_RXPHALIGNEN, + output SYNC_RXDLYBYPASS, + output SYNC_RXDLYSRESET, + output SYNC_RXDLYEN, + output SYNC_RXDDIEN, + output SYNC_RXSYNC_DONEM_OUT, + output SYNC_RXSYNC_DONE, + output [ 6:0] SYNC_FSM_RX + +); + + //---------- Input Register ---------------------------- +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg gen3_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rate_idle_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg mmcm_lock_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxelecidle_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxcdrlock_reg1; + +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg gen3_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rate_idle_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg mmcm_lock_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxelecidle_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxcdrlock_reg2; + +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txsync_start_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txphinitdone_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txdlysresetdone_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txphaligndone_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txsyncdone_reg1; + +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txsync_start_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txphinitdone_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txdlysresetdone_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txphaligndone_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txsyncdone_reg2; + +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txsync_start_reg3; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txphinitdone_reg3; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txdlysresetdone_reg3; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txphaligndone_reg3; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txsyncdone_reg3; + +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxsync_start_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxdlysresetdone_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxphaligndone_m_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxphaligndone_s_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxsync_donem_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxsyncdone_reg1; + +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxsync_start_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxdlysresetdone_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxphaligndone_m_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxphaligndone_s_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxsync_donem_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxsyncdone_reg2; + + //---------- Output Register --------------------------- + reg txdlyen = 1'd0; + reg txsync_done = 1'd0; + reg [ 5:0] fsm_tx = 6'd0; + + reg rxdlyen = 1'd0; + reg rxsync_done = 1'd0; + reg [ 6:0] fsm_rx = 7'd0; + + //---------- FSM --------------------------------------- + localparam FSM_TXSYNC_IDLE = 6'b000001; + localparam FSM_MMCM_LOCK = 6'b000010; + localparam FSM_TXSYNC_START = 6'b000100; + localparam FSM_TXPHINITDONE = 6'b001000; // Manual TX sync only + localparam FSM_TXSYNC_DONE1 = 6'b010000; + localparam FSM_TXSYNC_DONE2 = 6'b100000; + + localparam FSM_RXSYNC_IDLE = 7'b0000001; + localparam FSM_RXCDRLOCK = 7'b0000010; + localparam FSM_RXSYNC_START = 7'b0000100; + localparam FSM_RXSYNC_DONE1 = 7'b0001000; + localparam FSM_RXSYNC_DONE2 = 7'b0010000; + localparam FSM_RXSYNC_DONES = 7'b0100000; + localparam FSM_RXSYNC_DONEM = 7'b1000000; + + + +//---------- Input FF ---------------------------------------------------------- +always @ (posedge SYNC_CLK) +begin + + if (!SYNC_RST_N) + begin + //---------- 1st Stage FF -------------------------- + gen3_reg1 <= 1'd0; + rate_idle_reg1 <= 1'd0; + mmcm_lock_reg1 <= 1'd0; + rxelecidle_reg1 <= 1'd0; + rxcdrlock_reg1 <= 1'd0; + + txsync_start_reg1 <= 1'd0; + txphinitdone_reg1 <= 1'd0; + txdlysresetdone_reg1 <= 1'd0; + txphaligndone_reg1 <= 1'd0; + txsyncdone_reg1 <= 1'd0; + + rxsync_start_reg1 <= 1'd0; + rxdlysresetdone_reg1 <= 1'd0; + rxphaligndone_m_reg1 <= 1'd0; + rxphaligndone_s_reg1 <= 1'd0; + rxsync_donem_reg1 <= 1'd0; + rxsyncdone_reg1 <= 1'd0; + //---------- 2nd Stage FF -------------------------- + gen3_reg2 <= 1'd0; + rate_idle_reg2 <= 1'd0; + mmcm_lock_reg2 <= 1'd0; + rxelecidle_reg2 <= 1'd0; + rxcdrlock_reg2 <= 1'd0; + + txsync_start_reg2 <= 1'd0; + txphinitdone_reg2 <= 1'd0; + txdlysresetdone_reg2 <= 1'd0; + txphaligndone_reg2 <= 1'd0; + txsyncdone_reg2 <= 1'd0; + + rxsync_start_reg2 <= 1'd0; + rxdlysresetdone_reg2 <= 1'd0; + rxphaligndone_m_reg2 <= 1'd0; + rxphaligndone_s_reg2 <= 1'd0; + rxsync_donem_reg2 <= 1'd0; + rxsyncdone_reg2 <= 1'd0; + //---------- 3rd Stage FF -------------------------- + txsync_start_reg3 <= 1'd0; + txphinitdone_reg3 <= 1'd0; + txdlysresetdone_reg3 <= 1'd0; + txphaligndone_reg3 <= 1'd0; + txsyncdone_reg3 <= 1'd0; + + end + else + begin + //---------- 1st Stage FF -------------------------- + gen3_reg1 <= SYNC_GEN3; + rate_idle_reg1 <= SYNC_RATE_IDLE; + mmcm_lock_reg1 <= SYNC_MMCM_LOCK; + rxelecidle_reg1 <= SYNC_RXELECIDLE; + rxcdrlock_reg1 <= SYNC_RXCDRLOCK; + + txsync_start_reg1 <= SYNC_TXSYNC_START; + txphinitdone_reg1 <= SYNC_TXPHINITDONE; + txdlysresetdone_reg1 <= SYNC_TXDLYSRESETDONE; + txphaligndone_reg1 <= SYNC_TXPHALIGNDONE; + txsyncdone_reg1 <= SYNC_TXSYNCDONE; + + rxsync_start_reg1 <= SYNC_RXSYNC_START; + rxdlysresetdone_reg1 <= SYNC_RXDLYSRESETDONE; + rxphaligndone_m_reg1 <= SYNC_RXPHALIGNDONE_M; + rxphaligndone_s_reg1 <= SYNC_RXPHALIGNDONE_S; + rxsync_donem_reg1 <= SYNC_RXSYNC_DONEM_IN; + rxsyncdone_reg1 <= SYNC_RXSYNCDONE; + //---------- 2nd Stage FF -------------------------- + gen3_reg2 <= gen3_reg1; + rate_idle_reg2 <= rate_idle_reg1; + mmcm_lock_reg2 <= mmcm_lock_reg1; + rxelecidle_reg2 <= rxelecidle_reg1; + rxcdrlock_reg2 <= rxcdrlock_reg1; + + txsync_start_reg2 <= txsync_start_reg1; + txphinitdone_reg2 <= txphinitdone_reg1; + txdlysresetdone_reg2 <= txdlysresetdone_reg1; + txphaligndone_reg2 <= txphaligndone_reg1; + txsyncdone_reg2 <= txsyncdone_reg1; + + rxsync_start_reg2 <= rxsync_start_reg1; + rxdlysresetdone_reg2 <= rxdlysresetdone_reg1; + rxphaligndone_m_reg2 <= rxphaligndone_m_reg1; + rxphaligndone_s_reg2 <= rxphaligndone_s_reg1; + rxsync_donem_reg2 <= rxsync_donem_reg1; + rxsyncdone_reg2 <= rxsyncdone_reg1; + //---------- 3rd Stage FF -------------------------- + txsync_start_reg3 <= txsync_start_reg2; + txphinitdone_reg3 <= txphinitdone_reg2; + txdlysresetdone_reg3 <= txdlysresetdone_reg2; + txphaligndone_reg3 <= txphaligndone_reg2; + txsyncdone_reg3 <= txsyncdone_reg2; + end + +end + + + +//---------- Generate TX Sync FSM ---------------------------------------------- +generate if ((PCIE_LINK_SPEED == 3) || (PCIE_TXBUF_EN == "FALSE")) + + begin : txsync_fsm + + //---------- PIPE TX Sync FSM ---------------------------------------------- + always @ (posedge SYNC_CLK) + begin + + if (!SYNC_RST_N) + begin + fsm_tx <= FSM_TXSYNC_IDLE; + txdlyen <= 1'd0; + txsync_done <= 1'd0; + end + else + begin + + case (fsm_tx) + + //---------- Idle State ------------------------ + FSM_TXSYNC_IDLE : + + begin + //---------- Exiting Reset or Rate Change -- + if (txsync_start_reg2) + begin + fsm_tx <= FSM_MMCM_LOCK; + txdlyen <= 1'd0; + txsync_done <= 1'd0; + end + else + begin + fsm_tx <= FSM_TXSYNC_IDLE; + txdlyen <= txdlyen; + txsync_done <= txsync_done; + end + end + + //---------- Check MMCM Lock ------------------- + FSM_MMCM_LOCK : + + begin + fsm_tx <= (mmcm_lock_reg2 ? FSM_TXSYNC_START : FSM_MMCM_LOCK); + txdlyen <= 1'd0; + txsync_done <= 1'd0; + end + + //---------- TX Delay Soft Reset --------------- + FSM_TXSYNC_START : + + begin + fsm_tx <= (((!txdlysresetdone_reg3 && txdlysresetdone_reg2) || (((PCIE_GT_DEVICE == "GTH") || (PCIE_GT_DEVICE == "GTP")) && (PCIE_TXSYNC_MODE == 1) && SYNC_SLAVE)) ? FSM_TXPHINITDONE : FSM_TXSYNC_START); + txdlyen <= 1'd0; + txsync_done <= 1'd0; + end + + //---------- Wait for TX Phase Init Done (Manual Mode Only) + FSM_TXPHINITDONE : + + begin + fsm_tx <= (((!txphinitdone_reg3 && txphinitdone_reg2) || (PCIE_TXSYNC_MODE == 1) || (!SYNC_ACTIVE_LANE)) ? FSM_TXSYNC_DONE1 : FSM_TXPHINITDONE); + txdlyen <= 1'd0; + txsync_done <= 1'd0; + end + + //---------- Wait for TX Phase Alignment Done -- + FSM_TXSYNC_DONE1 : + + begin + if (((PCIE_GT_DEVICE == "GTH") || (PCIE_GT_DEVICE == "GTP")) && (PCIE_TXSYNC_MODE == 1) && !SYNC_SLAVE) + fsm_tx <= ((!txsyncdone_reg3 && txsyncdone_reg2) || (!SYNC_ACTIVE_LANE) ? FSM_TXSYNC_DONE2 : FSM_TXSYNC_DONE1); + else + fsm_tx <= ((!txphaligndone_reg3 && txphaligndone_reg2) || (!SYNC_ACTIVE_LANE) ? FSM_TXSYNC_DONE2 : FSM_TXSYNC_DONE1); + + txdlyen <= 1'd0; + txsync_done <= 1'd0; + end + + //---------- Wait for Master TX Delay Alignment Done + FSM_TXSYNC_DONE2 : + + begin + if ((!txphaligndone_reg3 && txphaligndone_reg2) || (!SYNC_ACTIVE_LANE) || SYNC_SLAVE || (((PCIE_GT_DEVICE == "GTH") || (PCIE_GT_DEVICE == "GTP")) && (PCIE_TXSYNC_MODE == 1)) || (BYPASS_TXDELAY_ALIGN == 1)) + begin + fsm_tx <= FSM_TXSYNC_IDLE; + txdlyen <= !SYNC_SLAVE; + txsync_done <= 1'd1; + end + else + begin + fsm_tx <= FSM_TXSYNC_DONE2; + txdlyen <= !SYNC_SLAVE; + txsync_done <= 1'd0; + end + end + + //---------- Default State --------------------- + default : + begin + fsm_tx <= FSM_TXSYNC_IDLE; + txdlyen <= 1'd0; + txsync_done <= 1'd0; + end + + endcase + + end + + end + + end + +//---------- TX Sync FSM Default------------------------------------------------ +else + + begin : txsync_fsm_disable + + //---------- Default ------------------------------------------------------- + always @ (posedge SYNC_CLK) + begin + fsm_tx <= FSM_TXSYNC_IDLE; + txdlyen <= 1'd0; + txsync_done <= 1'd0; + end + + end + +endgenerate + + + +//---------- Generate RX Sync FSM ---------------------------------------------- +generate if ((PCIE_LINK_SPEED == 3) && (PCIE_RXBUF_EN == "FALSE")) + + begin : rxsync_fsm + + //---------- PIPE RX Sync FSM ---------------------------------------------- + always @ (posedge SYNC_CLK) + begin + + if (!SYNC_RST_N) + begin + fsm_rx <= FSM_RXSYNC_IDLE; + rxdlyen <= 1'd0; + rxsync_done <= 1'd0; + end + else + begin + + case (fsm_rx) + + //---------- Idle State ------------------------ + FSM_RXSYNC_IDLE : + + begin + //---------- Exiting Rate Change ----------- + if (rxsync_start_reg2) + begin + fsm_rx <= FSM_RXCDRLOCK; + rxdlyen <= 1'd0; + rxsync_done <= 1'd0; + end + //---------- Exiting Electrical Idle without Rate Change + else if (gen3_reg2 && rate_idle_reg2 && ((rxelecidle_reg2 == 1'd1) && (rxelecidle_reg1 == 1'd0))) + begin + fsm_rx <= FSM_RXCDRLOCK; + rxdlyen <= 1'd0; + rxsync_done <= 1'd0; + end + //---------- Idle -------------------------- + else + begin + fsm_rx <= FSM_RXSYNC_IDLE; + rxdlyen <= rxelecidle_reg2 ? 1'd0 : rxdlyen; + rxsync_done <= rxelecidle_reg2 ? 1'd0 : rxsync_done; + end + end + + //---------- Wait for RX Electrical Idle Exit and RX CDR Lock + FSM_RXCDRLOCK : + + begin + fsm_rx <= ((!rxelecidle_reg2 && rxcdrlock_reg2) ? FSM_RXSYNC_START : FSM_RXCDRLOCK); + rxdlyen <= 1'd0; + rxsync_done <= 1'd0; + end + + //---------- Start RX Sync with RX Delay Soft Reset + FSM_RXSYNC_START : + + begin + fsm_rx <= ((!rxdlysresetdone_reg2 && rxdlysresetdone_reg1) ? FSM_RXSYNC_DONE1 : FSM_RXSYNC_START); + rxdlyen <= 1'd0; + rxsync_done <= 1'd0; + end + + //---------- Wait for RX Phase Alignment Done -- + FSM_RXSYNC_DONE1 : + + begin + if (SYNC_SLAVE) + begin + fsm_rx <= ((!rxphaligndone_s_reg2 && rxphaligndone_s_reg1) ? FSM_RXSYNC_DONE2 : FSM_RXSYNC_DONE1); + rxdlyen <= 1'd0; + rxsync_done <= 1'd0; + end + else + begin + fsm_rx <= ((!rxphaligndone_m_reg2 && rxphaligndone_m_reg1) ? FSM_RXSYNC_DONE2 : FSM_RXSYNC_DONE1); + rxdlyen <= 1'd0; + rxsync_done <= 1'd0; + end + end + + //---------- Wait for Master RX Delay Alignment Done + FSM_RXSYNC_DONE2 : + + begin + if (SYNC_SLAVE) + begin + fsm_rx <= FSM_RXSYNC_IDLE; + rxdlyen <= 1'd0; + rxsync_done <= 1'd1; + end + else if ((!rxphaligndone_m_reg2 && rxphaligndone_m_reg1) || (BYPASS_RXDELAY_ALIGN == 1)) + begin + fsm_rx <= ((PCIE_LANE == 1) ? FSM_RXSYNC_IDLE : FSM_RXSYNC_DONES); + rxdlyen <= (PCIE_LANE == 1); + rxsync_done <= (PCIE_LANE == 1); + end + else + begin + fsm_rx <= FSM_RXSYNC_DONE2; + rxdlyen <= 1'd1; + rxsync_done <= 1'd0; + end + end + + //---------- Wait for Slave RX Phase Alignment Done + FSM_RXSYNC_DONES : + + begin + if (!rxphaligndone_s_reg2 && rxphaligndone_s_reg1) + begin + fsm_rx <= FSM_RXSYNC_DONEM; + rxdlyen <= 1'd1; + rxsync_done <= 1'd0; + end + else + begin + fsm_rx <= FSM_RXSYNC_DONES; + rxdlyen <= 1'd0; + rxsync_done <= 1'd0; + end + end + + //---------- Wait for Master RX Delay Alignment Done + FSM_RXSYNC_DONEM : + + begin + if ((!rxphaligndone_m_reg2 && rxphaligndone_m_reg1) || (BYPASS_RXDELAY_ALIGN == 1)) + begin + fsm_rx <= FSM_RXSYNC_IDLE; + rxdlyen <= 1'd1; + rxsync_done <= 1'd1; + end + else + begin + fsm_rx <= FSM_RXSYNC_DONEM; + rxdlyen <= 1'd1; + rxsync_done <= 1'd0; + end + end + + //---------- Default State --------------------- + default : + begin + fsm_rx <= FSM_RXSYNC_IDLE; + rxdlyen <= 1'd0; + rxsync_done <= 1'd0; + end + + endcase + + end + + end + + end + +//---------- RX Sync FSM Default ----------------------------------------------- +else + + begin : rxsync_fsm_disable + + //---------- Default ------------------------------------------------------- + always @ (posedge SYNC_CLK) + begin + fsm_rx <= FSM_RXSYNC_IDLE; + rxdlyen <= 1'd0; + rxsync_done <= 1'd0; + end + + end + +endgenerate + + + +//---------- PIPE Sync Output -------------------------------------------------- +assign SYNC_TXPHALIGNEN = ((PCIE_TXSYNC_MODE == 1) || (!gen3_reg2 && (PCIE_TXBUF_EN == "TRUE"))) ? 1'd0 : 1'd1; +assign SYNC_TXDLYBYPASS = 1'd0; +//assign SYNC_TXDLYSRESET = !(((PCIE_GT_DEVICE == "GTH") || (PCIE_GT_DEVICE == "GTP")) && (PCIE_TXSYNC_MODE == 1) && SYNC_SLAVE) ? (fsm_tx == FSM_TXSYNC_START) : 1'd0; +assign SYNC_TXDLYSRESET = (fsm_tx == FSM_TXSYNC_START); +assign SYNC_TXPHDLYRESET = (((PCIE_GT_DEVICE == "GTH") || (PCIE_GT_DEVICE == "GTP")) && (PCIE_TXSYNC_MODE == 1) && SYNC_SLAVE) ? (fsm_tx == FSM_TXSYNC_START) : 1'd0; +assign SYNC_TXPHINIT = PCIE_TXSYNC_MODE ? 1'd0 : (fsm_tx == FSM_TXPHINITDONE); +assign SYNC_TXPHALIGN = PCIE_TXSYNC_MODE ? 1'd0 : (fsm_tx == FSM_TXSYNC_DONE1); +assign SYNC_TXDLYEN = PCIE_TXSYNC_MODE ? 1'd0 : txdlyen; +assign SYNC_TXSYNC_DONE = txsync_done; +assign SYNC_FSM_TX = fsm_tx; + +assign SYNC_RXPHALIGNEN = ((PCIE_RXSYNC_MODE == 1) || (!gen3_reg2) || (PCIE_RXBUF_EN == "TRUE")) ? 1'd0 : 1'd1; +assign SYNC_RXDLYBYPASS = !gen3_reg2 || (PCIE_RXBUF_EN == "TRUE"); +assign SYNC_RXDLYSRESET = (fsm_rx == FSM_RXSYNC_START); +assign SYNC_RXPHALIGN = PCIE_RXSYNC_MODE ? 1'd0 : (!SYNC_SLAVE ? (fsm_rx == FSM_RXSYNC_DONE1) : (rxsync_donem_reg2 && (fsm_rx == FSM_RXSYNC_DONE1))); +assign SYNC_RXDLYEN = PCIE_RXSYNC_MODE ? 1'd0 : rxdlyen; +assign SYNC_RXDDIEN = gen3_reg2 && (PCIE_RXBUF_EN == "FALSE"); +assign SYNC_RXSYNC_DONE = rxsync_done; +assign SYNC_RXSYNC_DONEM_OUT = (fsm_rx == FSM_RXSYNC_DONES); +assign SYNC_FSM_RX = fsm_rx; + + + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_user.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_user.v new file mode 100644 index 0000000..17dd2b2 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_user.v @@ -0,0 +1,605 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_pipe_user.v +// Version : 3.3 +//------------------------------------------------------------------------------ +// Filename : pipe_user.v +// Description : PIPE User Module for 7 Series Transceiver +// Version : 15.3.3 +//------------------------------------------------------------------------------ + + + +`timescale 1ns / 1ps + + + +//---------- PIPE User Module -------------------------------------------------- +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_pipe_user # +( + + parameter PCIE_SIM_MODE = "FALSE", // PCIe sim mode + parameter PCIE_USE_MODE = "3.0", // PCIe sim version + parameter PCIE_OOBCLK_MODE = 1, // PCIe OOB clock mode + parameter RXCDRLOCK_MAX = 4'd15, // RXCDRLOCK max count + parameter RXVALID_MAX = 4'd15, // RXVALID max count + parameter CONVERGE_MAX = 22'd3125000 // Convergence max count + +) + +( + + //---------- Input ------------------------------------- + input USER_TXUSRCLK, + input USER_RXUSRCLK, + input USER_OOBCLK_IN, + input USER_RST_N, + input USER_RXUSRCLK_RST_N, + input USER_PCLK_SEL, + input USER_RESETOVRD_START, + input USER_TXRESETDONE, + input USER_RXRESETDONE, + input USER_TXELECIDLE, + input USER_TXCOMPLIANCE, + input USER_RXCDRLOCK_IN, + input USER_RXVALID_IN, + input USER_RXSTATUS_IN, + input USER_PHYSTATUS_IN, + input USER_RATE_DONE, + input USER_RST_IDLE, + input USER_RATE_RXSYNC, + input USER_RATE_IDLE, + input USER_RATE_GEN3, + input USER_RXEQ_ADAPT_DONE, + + //---------- Output ------------------------------------ + output USER_OOBCLK, + output USER_RESETOVRD, + output USER_TXPMARESET, + output USER_RXPMARESET, + output USER_RXCDRRESET, + output USER_RXCDRFREQRESET, + output USER_RXDFELPMRESET, + output USER_EYESCANRESET, + output USER_TXPCSRESET, + output USER_RXPCSRESET, + output USER_RXBUFRESET, + output USER_RESETOVRD_DONE, + output USER_RESETDONE, + output USER_ACTIVE_LANE, + output USER_RXCDRLOCK_OUT, + output USER_RXVALID_OUT, + output USER_PHYSTATUS_OUT, + output USER_PHYSTATUS_RST, + output USER_GEN3_RDY, + output USER_RX_CONVERGE + +); + + //---------- Input Registers --------------------------- +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg pclk_sel_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg resetovrd_start_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txresetdone_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxresetdone_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txelecidle_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txcompliance_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxcdrlock_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxvalid_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxstatus_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rate_done_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rst_idle_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rate_rxsync_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rate_idle_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rate_gen3_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxeq_adapt_done_reg1; + +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg pclk_sel_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg resetovrd_start_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txresetdone_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxresetdone_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txelecidle_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg txcompliance_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxcdrlock_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxvalid_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxstatus_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rate_done_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rst_idle_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rate_rxsync_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rate_idle_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rate_gen3_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rxeq_adapt_done_reg2; + + //---------- Internal Signal --------------------------- + reg [ 7:0] reset_cnt = 8'd127; + reg [ 3:0] rxcdrlock_cnt = 4'd0; + reg [ 3:0] rxvalid_cnt = 4'd0; + reg [21:0] converge_cnt = 22'd0; + reg converge_gen3 = 1'd0; + + //---------- Output Registers -------------------------- + reg oobclk = 1'd0; + reg [ 7:0] reset = 8'h00; + reg gen3_rdy = 1'd0; + reg [ 1:0] fsm = 2'd0; + + //---------- FSM --------------------------------------- + localparam FSM_IDLE = 2'd0; + localparam FSM_RESETOVRD = 2'd1; + localparam FSM_RESET_INIT = 2'd2; + localparam FSM_RESET = 2'd3; + + //---------- Simulation Speedup ------------------------ + localparam converge_max_cnt = (PCIE_SIM_MODE == "TRUE") ? 22'd100 : CONVERGE_MAX; + + + +//---------- Input FF ---------------------------------------------------------- +always @ (posedge USER_TXUSRCLK) +begin + + if (!USER_RST_N) + begin + //---------- 1st Stage FF -------------------------- + pclk_sel_reg1 <= 1'd0; + resetovrd_start_reg1 <= 1'd0; + txresetdone_reg1 <= 1'd0; + rxresetdone_reg1 <= 1'd0; + txelecidle_reg1 <= 1'd0; + txcompliance_reg1 <= 1'd0; + rxcdrlock_reg1 <= 1'd0; + rxeq_adapt_done_reg1 <= 1'd0; + //---------- 2nd Stage FF -------------------------- + pclk_sel_reg2 <= 1'd0; + resetovrd_start_reg2 <= 1'd0; + txresetdone_reg2 <= 1'd0; + rxresetdone_reg2 <= 1'd0; + txelecidle_reg2 <= 1'd0; + txcompliance_reg2 <= 1'd0; + rxcdrlock_reg2 <= 1'd0; + rxeq_adapt_done_reg2 <= 1'd0; + end + else + begin + //---------- 1st Stage FF -------------------------- + pclk_sel_reg1 <= USER_PCLK_SEL; + resetovrd_start_reg1 <= USER_RESETOVRD_START; + txresetdone_reg1 <= USER_TXRESETDONE; + rxresetdone_reg1 <= USER_RXRESETDONE; + txelecidle_reg1 <= USER_TXELECIDLE; + txcompliance_reg1 <= USER_TXCOMPLIANCE; + rxcdrlock_reg1 <= USER_RXCDRLOCK_IN; + rxeq_adapt_done_reg1 <= USER_RXEQ_ADAPT_DONE; + //---------- 2nd Stage FF -------------------------- + pclk_sel_reg2 <= pclk_sel_reg1; + resetovrd_start_reg2 <= resetovrd_start_reg1; + txresetdone_reg2 <= txresetdone_reg1; + rxresetdone_reg2 <= rxresetdone_reg1; + txelecidle_reg2 <= txelecidle_reg1; + txcompliance_reg2 <= txcompliance_reg1; + rxcdrlock_reg2 <= rxcdrlock_reg1; + rxeq_adapt_done_reg2 <= rxeq_adapt_done_reg1; + end + +end + + + +//---------- Input FF ---------------------------------------------------------- +always @ (posedge USER_RXUSRCLK) +begin + + if (!USER_RXUSRCLK_RST_N) + begin + //---------- 1st Stage FF -------------------------- + rxvalid_reg1 <= 1'd0; + rxstatus_reg1 <= 1'd0; + rst_idle_reg1 <= 1'd0; + rate_done_reg1 <= 1'd0; + rate_rxsync_reg1 <= 1'd0; + rate_idle_reg1 <= 1'd0; + rate_gen3_reg1 <= 1'd0; + //---------- 2nd Stage FF -------------------------- + rxvalid_reg2 <= 1'd0; + rxstatus_reg2 <= 1'd0; + rst_idle_reg2 <= 1'd0; + rate_done_reg2 <= 1'd0; + rate_rxsync_reg2 <= 1'd0; + rate_idle_reg2 <= 1'd0; + rate_gen3_reg2 <= 1'd0; + end + else + begin + //---------- 1st Stage FF -------------------------- + rxvalid_reg1 <= USER_RXVALID_IN; + rxstatus_reg1 <= USER_RXSTATUS_IN; + rst_idle_reg1 <= USER_RST_IDLE; + rate_done_reg1 <= USER_RATE_DONE; + rate_rxsync_reg1 <= USER_RATE_RXSYNC; + rate_idle_reg1 <= USER_RATE_IDLE; + rate_gen3_reg1 <= USER_RATE_GEN3; + //---------- 2nd Stage FF -------------------------- + rxvalid_reg2 <= rxvalid_reg1; + rxstatus_reg2 <= rxstatus_reg1; + rst_idle_reg2 <= rst_idle_reg1; + rate_done_reg2 <= rate_done_reg1; + rate_rxsync_reg2 <= rate_rxsync_reg1; + rate_idle_reg2 <= rate_idle_reg1; + rate_gen3_reg2 <= rate_gen3_reg1; + end + +end + + + +//---------- Generate Reset Override ------------------------------------------- +generate if (PCIE_USE_MODE == "1.0") + + begin : resetovrd + + //---------- Reset Counter ------------------------------------------------- + always @ (posedge USER_TXUSRCLK) + begin + + if (!USER_RST_N) + reset_cnt <= 8'd127; + else + + //---------- Decrement Counter --------------------- + if (((fsm == FSM_RESETOVRD) || (fsm == FSM_RESET)) && (reset_cnt != 8'd0)) + reset_cnt <= reset_cnt - 8'd1; + + //---------- Reset Counter ------------------------- + else + + case (reset) + 8'b00000000 : reset_cnt <= 8'd127; // Programmable PMARESET time + 8'b11111111 : reset_cnt <= 8'd127; // Programmable RXCDRRESET time + 8'b11111110 : reset_cnt <= 8'd127; // Programmable RXCDRFREQRESET time + 8'b11111100 : reset_cnt <= 8'd127; // Programmable RXDFELPMRESET time + 8'b11111000 : reset_cnt <= 8'd127; // Programmable EYESCANRESET time + 8'b11110000 : reset_cnt <= 8'd127; // Programmable PCSRESET time + 8'b11100000 : reset_cnt <= 8'd127; // Programmable RXBUFRESET time + 8'b11000000 : reset_cnt <= 8'd127; // Programmable RESETOVRD deassertion time + 8'b10000000 : reset_cnt <= 8'd127; + default : reset_cnt <= 8'd127; + endcase + + end + + + + //---------- Reset Shift Register ------------------------------------------ + always @ (posedge USER_TXUSRCLK) + begin + + if (!USER_RST_N) + reset <= 8'h00; + else + + //---------- Initialize Reset Register --------- + if (fsm == FSM_RESET_INIT) + reset <= 8'hFF; + //---------- Shift Reset Register -------------- + else if ((fsm == FSM_RESET) && (reset_cnt == 8'd0)) + reset <= {reset[6:0], 1'd0}; + //---------- Hold Reset Register --------------- + else + reset <= reset; + + end + + + + //---------- Reset Override FSM -------------------------------------------- + always @ (posedge USER_TXUSRCLK) + begin + + if (!USER_RST_N) + fsm <= FSM_IDLE; + + else + + begin + + case (fsm) + //---------- Idle State ------------------------ + FSM_IDLE : fsm <= resetovrd_start_reg2 ? FSM_RESETOVRD : FSM_IDLE; + //---------- Assert RESETOVRD ------------------ + FSM_RESETOVRD : fsm <= (reset_cnt == 8'd0) ? FSM_RESET_INIT : FSM_RESETOVRD; + //---------- Initialize Reset ------------------ + FSM_RESET_INIT : fsm <= FSM_RESET; + //---------- Shift Reset ----------------------- + FSM_RESET : fsm <= ((reset == 8'd0) && rxresetdone_reg2) ? FSM_IDLE : FSM_RESET; + //---------- Default State --------------------- + default : fsm <= FSM_IDLE; + endcase + + end + + end + + end + +//---------- Disable Reset Override -------------------------------------------- +else + + begin : resetovrd_disble + + //---------- Generate Default Signals -------------------------------------- + always @ (posedge USER_TXUSRCLK) + begin + + if (!USER_RST_N) + begin + reset_cnt <= 8'hFF; + reset <= 8'd0; + fsm <= 2'd0; + end + else + begin + reset_cnt <= 8'hFF; + reset <= 8'd0; + fsm <= 2'd0; + end + + end + + end + +endgenerate + + + +reg [ 1:0] oobclk_cnt = 2'd0; +//---------- Generate OOB Clock Divider ------------------------ +generate if (PCIE_OOBCLK_MODE == 1) + + begin : oobclk_div + + //---------- OOB Clock Divider ----------------------------- + always @ (posedge USER_OOBCLK_IN) + begin + + if (!USER_RST_N) + begin + oobclk_cnt <= 2'd0; + oobclk <= 1'd0; + end + else + begin + oobclk_cnt <= oobclk_cnt + 2'd1; + oobclk <= pclk_sel_reg2 ? oobclk_cnt[1] : oobclk_cnt[0]; + end + + end + + end + +else + + begin : oobclk_div_disable + + //---------- OOB Clock Default ------------------------- + always @ (posedge USER_OOBCLK_IN) + begin + + if (!USER_RST_N) + begin + oobclk_cnt <= 2'd0; + oobclk <= 1'd0; + end + else + begin + oobclk_cnt <= 2'd0; + oobclk <= 1'd0; + end + + end + + end + +endgenerate + +//---------- RXCDRLOCK Filter -------------------------------------------------- +always @ (posedge USER_TXUSRCLK) +begin + + if (!USER_RST_N) + rxcdrlock_cnt <= 4'd0; + else + + //---------- Increment RXCDRLOCK Counter ----------- + if (rxcdrlock_reg2 && (rxcdrlock_cnt != RXCDRLOCK_MAX)) + rxcdrlock_cnt <= rxcdrlock_cnt + 4'd1; + + //---------- Hold RXCDRLOCK Counter ---------------- + else if (rxcdrlock_reg2 && (rxcdrlock_cnt == RXCDRLOCK_MAX)) + rxcdrlock_cnt <= rxcdrlock_cnt; + + //---------- Reset RXCDRLOCK Counter --------------- + else + rxcdrlock_cnt <= 4'd0; + +end + + + +//---------- RXVALID Filter ---------------------------------------------------- +always @ (posedge USER_RXUSRCLK) +begin + + if (!USER_RXUSRCLK_RST_N) + rxvalid_cnt <= 4'd0; + else + + //---------- Increment RXVALID Counter ------------- + if (rxvalid_reg2 && (rxvalid_cnt != RXVALID_MAX) && (!rxstatus_reg2)) + rxvalid_cnt <= rxvalid_cnt + 4'd1; + + //---------- Hold RXVALID Counter ------------------ + else if (rxvalid_reg2 && (rxvalid_cnt == RXVALID_MAX)) + rxvalid_cnt <= rxvalid_cnt; + + //---------- Reset RXVALID Counter ----------------- + else + rxvalid_cnt <= 4'd0; + +end + + + +//---------- Converge Counter -------------------------------------------------- +always @ (posedge USER_TXUSRCLK) +begin + + if (!USER_RST_N) + converge_cnt <= 22'd0; + else + + //---------- Enter Gen1/Gen2 ----------------------- + if (rst_idle_reg2 && rate_idle_reg2 && !rate_gen3_reg2) + begin + + //---------- Increment Converge Counter -------- + if (converge_cnt < converge_max_cnt) + converge_cnt <= converge_cnt + 22'd1; + //---------- Hold Converge Counter ------------- + else + converge_cnt <= converge_cnt; + + end + + //---------- Reset Converge Counter ---------------- + else + converge_cnt <= 22'd0; + +end + + + +//---------- Converge ---------------------------------------------------------- +always @ (posedge USER_TXUSRCLK) +begin + + if (!USER_RST_N) + converge_gen3 <= 1'd0; + else + + //---------- Enter Gen3 ---------------------------- + if (rate_gen3_reg2) + + //---------- Wait for RX equalization adapt done + if (rxeq_adapt_done_reg2) + converge_gen3 <= 1'd1; + else + converge_gen3 <= converge_gen3; + + //-------- Exit Gen3 ------------------------------- + else + + converge_gen3 <= 1'd0; + + +end + + + +//---------- GEN3_RDY Generator ------------------------------------------------ +always @ (posedge USER_RXUSRCLK) +begin + + if (!USER_RXUSRCLK_RST_N) + gen3_rdy <= 1'd0; + else + gen3_rdy <= rate_idle_reg2 && rate_gen3_reg2; + +end + + + +//---------- PIPE User Override Reset Output ----------------------------------- +assign USER_RESETOVRD = (fsm != FSM_IDLE); +assign USER_TXPMARESET = 1'd0; +assign USER_RXPMARESET = reset[0]; +assign USER_RXCDRRESET = reset[1]; +assign USER_RXCDRFREQRESET = reset[2]; +assign USER_RXDFELPMRESET = reset[3]; +assign USER_EYESCANRESET = reset[4]; +assign USER_TXPCSRESET = 1'd0; +assign USER_RXPCSRESET = reset[5]; +assign USER_RXBUFRESET = reset[6]; +assign USER_RESETOVRD_DONE = (fsm == FSM_IDLE); + +//---------- PIPE User Output -------------------------------------------------- +assign USER_OOBCLK = oobclk; +assign USER_RESETDONE = (txresetdone_reg2 && rxresetdone_reg2); +assign USER_ACTIVE_LANE = !(txelecidle_reg2 && txcompliance_reg2); +//---------------------------------------------------------- +assign USER_RXCDRLOCK_OUT = (USER_RXCDRLOCK_IN && (rxcdrlock_cnt == RXCDRLOCK_MAX)); // Filtered RXCDRLOCK +//---------------------------------------------------------- +assign USER_RXVALID_OUT = ((USER_RXVALID_IN && (rxvalid_cnt == RXVALID_MAX)) && // Filtered RXVALID + rst_idle_reg2 && // Force RXVALID = 0 during reset + rate_idle_reg2); // Force RXVALID = 0 during rate change +//---------------------------------------------------------- +assign USER_PHYSTATUS_OUT = (!rst_idle_reg2 || // Force PHYSTATUS = 1 during reset + ((rate_idle_reg2 || rate_rxsync_reg2) && USER_PHYSTATUS_IN) || // Raw PHYSTATUS + rate_done_reg2); // Gated PHYSTATUS for rate change +//---------------------------------------------------------- +assign USER_PHYSTATUS_RST = !rst_idle_reg2; // Filtered PHYSTATUS for reset +//---------------------------------------------------------- +assign USER_GEN3_RDY = 0;//gen3_rdy; +//---------------------------------------------------------- +assign USER_RX_CONVERGE = (converge_cnt == converge_max_cnt) || converge_gen3; + + + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_wrapper.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_wrapper.v new file mode 100644 index 0000000..910feb1 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_pipe_wrapper.v @@ -0,0 +1,1803 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_pipe_wrapper.v +// Version : 3.3 +//------------------------------------------------------------------------------ +// Filename : pipe_wrapper.v +// Description : PIPE Wrapper for 7 Series Transceiver +// Version : 20.2 +//------------------------------------------------------------------------------ + +//---------- PIPE Wrapper Hierarchy -------------------------------------------- +// pipe_wrapper.v +// pipe_clock.v +// pipe_reset.v or gtp_pipe_reset.v +// qpll_reset.v +// * Generate GTXE2_CHANNEL for every lane. +// pipe_user.v +// pipe_rate.v or gtp_pipe_rate.v +// pipe_sync.v +// pipe_drp.v or gtp_pipe_drp.v +// pipe_eq.v +// rxeq_scan.v +// gt_wrapper.v +// GTXE2_CHANNEL or GTHE2_CHANNEL or GTPE2_CHANNEL +// GTXE2_COMMON or GTHE2_COMMON or GTPE2_CHANNEL +// * Generate GTXE2_COMMON for every quad. +// qpll_drp.v +// qpll_wrapper.v +//------------------------------------------------------------------------------ + +//---------- PIPE Wrapper Parameter Encoding ----------------------------------- +// PCIE_SIM_MODE : "FALSE" = Normal mode (default) +// : "TRUE" = Simulation only +// PCIE_SIM_TX_EIDLE_DRIVE_LEVEL : "0", "1" (default), "X" simulation TX electrical idle drive level +// PCIE_GT_DEVICE : "GTX" (default) +// : "GTH" +// : "GTP" +// PCIE_USE_MODE : "1.0" = GTX IES 325T or GTP IES/GES use mode. +// : "1.1" = GTX IES 485T use mode. +// : "2.0" = GTH IES 690T use mode for 1.0 silicon. +// : "2.1" = GTH GES 690T use mode for 1.2 and 2.0 silicon. SW model use "2.0" +// : "3.0" = GTX GES 325T or 485T use mode (default). +// PCIE_PLL_SEL : "CPLL" (default) +// : "QPLL" +// PCIE_AUX_CDR_GEN3_EN : "FALSE" Use Primary CDR for Gen3 only (GTH 2.0) +// : "TRUE" Use AUX CDR for Gen3 only (default) (GTH 2.0) +// PCIE_LPM_DFE : "DFE" for Gen1/Gen2 only (GTX, GTH) +// : "LPM" for Gen1/Gen2 only (default) (GTX, GTH) +// PCIE_LPM_DFE_GEN3 : "DFE" for Gen3 only (GTX, GTH) +// : "LPM" for Gen3 only (default) (GTX, GTH) +// PCIE_EXT_CLK : "FALSE" = Use internal clock module(default) +// : "TRUE" = Use external clock module +// PCIE_POWER_SAVING : "FALSE" = Disable PLL power saving +// : "TRUE" = Enable PLL power saving (default) +// PCIE_ASYNC_EN : "FALSE" = Synchronous mode (default) +// : "TRUE" = Asynchronous mode. +// PCIE_TXBUF_EN : "FALSE" = TX buffer bypass for Gen1/Gen2 only (default) +// : "TRUE" = TX buffer use for Gen1/Gen2 only (for debug only) +// PCIE_RXBUF_EN : "FALSE" = RX buffer bypass for Gen3 only (not supported) +// : "TRUE" = RX buffer use for Gen3 only (default) +// PCIE_TXSYNC_MODE : 0 = Manual TX sync (default) (GTX, GTH) +// : 1 = Auto TX sync (GTH) +// PCIE_RXSYNC_MODE : 0 = Manual RX sync (default) (GTX, GTH) +// : 1 = Auto RX sync (GTH) +// PCIE_CHAN_BOND : 0 = One-Hop (default) +// : 1 = Daisy-Chain +// : 2 = Binary-Tree +// PCIE_CHAN_BOND_EN : "FALSE" = Channel bonding disable for Gen1/Gen2 only +// : "TRUE" = Channel bonding enable for Gen1/Gen2 only +// PCIE_LANE : 1 (default), 2, 4, or 8 +// PCIE_LINK_SPEED : 1 = PCIe Gen1 Mode +// : 2 = PCIe Gen1/Gen2 Mode (default) +// : 3 = PCIe Gen1/Gen2/Gen3 Mode +// PCIE_REFCLK_FREQ : 0 = 100 MHz (default) +// : 1 = 125 MHz +// : 2 = 250 MHz +// PCIE_USERCLK[1/2]_FREQ : 0 = Disable user clock +// : 1 = 31.25 MHz +// : 2 = 62.50 MHz (default) +// : 3 = 125.00 MHz +// : 4 = 250.00 MHz +// : 5 = 500.00 MHz +// PCIE_TX_EIDLE_ASSERT_DELAY : 3'd0 to 3'd7 (default = 3'd4) +// PCIE_RXEQ_MODE_GEN3 : 0 = Return same TX coefficients +// : 1 = Return TX preset #5 +// PCIE_OOBCLK_MODE : 0 = Reference clock +// : 1 = 62.50 MHz (default) +// : 2 = 50.00 MHz (requires 1 BUFG) +// PCIE_JTAG_MODE : 0 = Normal operation (default) +// : 1 = JTAG mode (for debug only) +// PCIE_DEBUG_MODE : 0 = Normal operation (default) +// : 1 = Debug mode (for debug only) +//------------------------------------------------------------------------------ + +//---------- Notes ------------------------------------------------------------- +// Notes within the PIPE Wrapper RTL files are for internal use only. +// Data Width : This PIPE Wrapper supports a 32-bit [TX/RX]DATA interface. +// In Gen1/Gen2 modes, only 16-bits [15:0] are used. +// In Gen3 mode, all 32-bits are used. +//------------------------------------------------------------------------------ + + +`timescale 1ns / 1ps + + +//---------- PIPE Wrapper ------------------------------------------------------ +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_pipe_wrapper # +( + + parameter PCIE_SIM_MODE = "FALSE", // PCIe sim mode + parameter PCIE_SIM_SPEEDUP = "FALSE", // PCIe sim speedup + parameter PCIE_SIM_TX_EIDLE_DRIVE_LEVEL = "1", // PCIe sim TX electrical idle drive level + parameter PCIE_GT_DEVICE = "GTX", // PCIe GT device + parameter PCIE_USE_MODE = "3.0", // PCIe use mode + parameter PCIE_PLL_SEL = "CPLL", // PCIe PLL select for Gen1/Gen2 (GTX/GTH) only + parameter PCIE_AUX_CDR_GEN3_EN = "TRUE", // PCIe AUX CDR for Gen3 (GTH 2.0) only + parameter PCIE_LPM_DFE = "LPM", // PCIe LPM or DFE mode for Gen1/Gen2 only + parameter PCIE_LPM_DFE_GEN3 = "DFE", // PCIe LPM or DFE mode for Gen3 only + parameter PCIE_EXT_CLK = "TRUE", // PCIe external clock + parameter PCIE_EXT_GT_COMMON = "FALSE", // PCIe external GT COMMON + parameter EXT_CH_GT_DRP = "FALSE", // PCIe external CH DRP + + parameter TX_MARGIN_FULL_0 = 7'b1001111, // 1000 mV + parameter TX_MARGIN_FULL_1 = 7'b1001110, // 950 mV + parameter TX_MARGIN_FULL_2 = 7'b1001101, // 900 mV + parameter TX_MARGIN_FULL_3 = 7'b1001100, // 850 mV + parameter TX_MARGIN_FULL_4 = 7'b1000011, // 400 mV + parameter TX_MARGIN_LOW_0 = 7'b1000101, // 500 mV + parameter TX_MARGIN_LOW_1 = 7'b1000110 , // 450 mV + parameter TX_MARGIN_LOW_2 = 7'b1000011, // 400 mV + parameter TX_MARGIN_LOW_3 = 7'b1000010 , // 350 mV + parameter TX_MARGIN_LOW_4 = 7'b1000000 , + + parameter PCIE_POWER_SAVING = "TRUE", // PCIe power saving + parameter PCIE_ASYNC_EN = "FALSE", // PCIe async enable + parameter PCIE_TXBUF_EN = "FALSE", // PCIe TX buffer enable for Gen1/Gen2 only + parameter PCIE_RXBUF_EN = "TRUE", // PCIe RX buffer enable for Gen3 only + parameter PCIE_TXSYNC_MODE = 0, // PCIe TX sync mode + parameter PCIE_RXSYNC_MODE = 0, // PCIe RX sync mode + parameter PCIE_CHAN_BOND = 0, // PCIe channel bonding mode + parameter PCIE_CHAN_BOND_EN = "TRUE", // PCIe channel bonding enable for Gen1/Gen2 only + parameter PCIE_LANE = 4, // PCIe number of lanes + parameter PCIE_LINK_SPEED = 2, // PCIe link speed + parameter PCIE_REFCLK_FREQ = 0, // PCIe reference clock frequency + parameter PCIE_USERCLK1_FREQ = 4, // PCIe user clock 1 frequency + parameter PCIE_USERCLK2_FREQ = 4, // PCIe user clock 2 frequency + parameter PCIE_TX_EIDLE_ASSERT_DELAY = 3'd2, // PCIe TX electrical idle assert delay + parameter PCIE_RXEQ_MODE_GEN3 = 1, // PCIe RX equalization mode + parameter PCIE_OOBCLK_MODE = 1, // PCIe OOB clock mode + parameter PCIE_JTAG_MODE = 0, // PCIe JTAG mode + parameter PCIE_DEBUG_MODE = 0 // PCIe debug mode + +) + //-------------------------------------- +( // Gen1/Gen2 | Gen3 + //-------------------------------------- + //---------- PIPE Clock & Reset Ports ------------------ + input PIPE_CLK, // Reference clock that drives MMCM + input PIPE_RESET_N, // PCLK | PCLK + + output PIPE_PCLK, // Drives [TX/RX]USRCLK in Gen1/Gen2 + // Drives TXUSRCLK in Gen3 + // Drives RXUSRCLK in Gen3 async mode only + //---------- PIPE TX Data Ports ------------------------ + input [(PCIE_LANE*32)-1:0]PIPE_TXDATA, // PCLK | PCLK + input [(PCIE_LANE*4)-1:0] PIPE_TXDATAK, // PCLK | PCLK + + output [PCIE_LANE-1:0] PIPE_TXP, // Serial data + output [PCIE_LANE-1:0] PIPE_TXN, // Serial data + + //---------- PIPE RX Data Ports ------------------------ + input [PCIE_LANE-1:0] PIPE_RXP, // Serial data + input [PCIE_LANE-1:0] PIPE_RXN, // Serial data + + output [(PCIE_LANE*32)-1:0]PIPE_RXDATA, // PCLK | RXUSRCLK + output [(PCIE_LANE*4)-1:0] PIPE_RXDATAK, // PCLK | RXUSRCLK + + //---------- PIPE Command Ports ------------------------ + input PIPE_TXDETECTRX, // PCLK | PCLK + input [PCIE_LANE-1:0] PIPE_TXELECIDLE, // PCLK | PCLK + input [PCIE_LANE-1:0] PIPE_TXCOMPLIANCE, // PCLK | PCLK + input [PCIE_LANE-1:0] PIPE_RXPOLARITY, // PCLK | RXUSRCLK + input [(PCIE_LANE*2)-1:0] PIPE_POWERDOWN, // PCLK | PCLK + input [ 1:0] PIPE_RATE, // PCLK | PCLK + + //---------- PIPE Electrical Command Ports ------------- + input [ 2:0] PIPE_TXMARGIN, // Async | Async + input PIPE_TXSWING, // Async | Async + input [PCIE_LANE-1:0] PIPE_TXDEEMPH, // Async/PCLK | Async/PCLK + input [(PCIE_LANE*2)-1:0] PIPE_TXEQ_CONTROL, // PCLK | PCLK + input [(PCIE_LANE*4)-1:0] PIPE_TXEQ_PRESET, // PCLK | PCLK + input [(PCIE_LANE*4)-1:0] PIPE_TXEQ_PRESET_DEFAULT,// PCLK | PCLK + input [(PCIE_LANE*6)-1:0] PIPE_TXEQ_DEEMPH, // PCLK | PCLK + + input [(PCIE_LANE*2)-1:0] PIPE_RXEQ_CONTROL, // PCLK | PCLK + input [(PCIE_LANE*3)-1:0] PIPE_RXEQ_PRESET, // PCLK | PCLK + input [(PCIE_LANE*6)-1:0] PIPE_RXEQ_LFFS, // PCLK | PCLK + input [(PCIE_LANE*4)-1:0] PIPE_RXEQ_TXPRESET, // PCLK | PCLK + input [PCIE_LANE-1:0] PIPE_RXEQ_USER_EN, // PCLK | PCLK + input [(PCIE_LANE*18)-1:0]PIPE_RXEQ_USER_TXCOEFF, // PCLK | PCLK + input [PCIE_LANE-1:0] PIPE_RXEQ_USER_MODE, // PCLK | PCLK + + output [ 5:0] PIPE_TXEQ_FS, // Async | Async + output [ 5:0] PIPE_TXEQ_LF, // Async | Async + output [(PCIE_LANE*18)-1:0]PIPE_TXEQ_COEFF, // PCLK | PCLK + output [PCIE_LANE-1:0] PIPE_TXEQ_DONE, // PCLK | PCLK + + output [(PCIE_LANE*18)-1:0]PIPE_RXEQ_NEW_TXCOEFF, // PCLK | PCLK + output [PCIE_LANE-1:0] PIPE_RXEQ_LFFS_SEL, // PCLK | PCLK + output [PCIE_LANE-1:0] PIPE_RXEQ_ADAPT_DONE, // PCLK | PCLK + output [PCIE_LANE-1:0] PIPE_RXEQ_DONE, // PCLK | PCLK + + //---------- PIPE Status Ports ------------------------- + output [PCIE_LANE-1:0] PIPE_RXVALID, // PCLK | RXUSRCLK + output [PCIE_LANE-1:0] PIPE_PHYSTATUS, // PCLK | RXUSRCLK + output [PCIE_LANE-1:0] PIPE_PHYSTATUS_RST, // PCLK | RXUSRCLK + output [PCIE_LANE-1:0] PIPE_RXELECIDLE, // Async | Async + output [PCIE_LANE-1:0] PIPE_EYESCANDATAERROR, // Async | Async + output [(PCIE_LANE*3)-1:0] PIPE_RXSTATUS, // PCLK | RXUSRCLK + output [PCIE_LANE-1:0] PIPE_RXPMARESETDONE, // Async | Async + output [(PCIE_LANE*3)-1:0] PIPE_RXBUFSTATUS, // PCLK | RXUSRCLK + output [PCIE_LANE-1:0] PIPE_TXPHALIGNDONE, // Async | Async + output [PCIE_LANE-1:0] PIPE_TXPHINITDONE, // Async | Async + output [PCIE_LANE-1:0] PIPE_TXDLYSRESETDONE, // Async | Async + output [PCIE_LANE-1:0] PIPE_RXPHALIGNDONE, // Async | Async + output [PCIE_LANE-1:0] PIPE_RXDLYSRESETDONE, // Async | Async + output [PCIE_LANE-1:0] PIPE_RXSYNCDONE, // PCLK | RXUSRCLK + output [(PCIE_LANE*8)-1:0] PIPE_RXDISPERR, // PCLK | RXUSRCLK + output [(PCIE_LANE*8)-1:0] PIPE_RXNOTINTABLE, // PCLK | RXUSRCLK + output [PCIE_LANE-1:0] PIPE_RXCOMMADET, // PCLK | RXUSRCLK + + //---------- PIPE User Ports --------------------------- + input PIPE_MMCM_RST_N, // Async | Async + input [PCIE_LANE-1:0] PIPE_RXSLIDE, // PCLK | RXUSRCLK + + output [PCIE_LANE-1:0] PIPE_CPLL_LOCK, // Async | Async + output [(PCIE_LANE-1)>>2:0]PIPE_QPLL_LOCK, // Async | Async + output PIPE_PCLK_LOCK, // Async | Async + output [PCIE_LANE-1:0] PIPE_RXCDRLOCK, // Async | Async + output PIPE_USERCLK1, // Optional user clock + output PIPE_USERCLK2, // Optional user clock + output PIPE_RXUSRCLK, // RXUSRCLK + // Equivalent to PCLK in Gen1/Gen2 + // Equivalent to RXOUTCLK[0] in Gen3 + output [PCIE_LANE-1:0] PIPE_RXOUTCLK, // RX recovered clock (for debug only) + output [PCIE_LANE-1:0] PIPE_TXSYNC_DONE, // PCLK | PCLK + output [PCIE_LANE-1:0] PIPE_RXSYNC_DONE, // PCLK | PCLK + output [PCIE_LANE-1:0] PIPE_GEN3_RDY, // PCLK | RXUSRCLK + output [PCIE_LANE-1:0] PIPE_RXCHANISALIGNED, + output [PCIE_LANE-1:0] PIPE_ACTIVE_LANE, + +// Shared Logic Internal + output INT_PCLK_OUT_SLAVE, // PCLK | PCLK + output INT_RXUSRCLK_OUT, // RXUSERCLK + output [PCIE_LANE-1:0 ] INT_RXOUTCLK_OUT, // RX recovered clock + output INT_DCLK_OUT, // DCLK | DCLK + output INT_USERCLK1_OUT, // Optional user clock + output INT_USERCLK2_OUT, // Optional user clock + output INT_OOBCLK_OUT, // OOB | OOB + output INT_MMCM_LOCK_OUT, // Async | Async + output [1:0] INT_QPLLLOCK_OUT, + output [1:0] INT_QPLLOUTCLK_OUT, + output [1:0] INT_QPLLOUTREFCLK_OUT, + input [PCIE_LANE-1:0] INT_PCLK_SEL_SLAVE, + + + // Shared Logic External + + //---------- External Clock Ports ---------------------- + input PIPE_PCLK_IN, // PCLK | PCLK + input PIPE_RXUSRCLK_IN, // RXUSERCLK + // Equivalent to PCLK in Gen1/Gen2 + // Equivalent to RXOUTCLK[0] in Gen3 + input [PCIE_LANE-1:0] PIPE_RXOUTCLK_IN, // RX recovered clock + input PIPE_DCLK_IN, // DCLK | DCLK + input PIPE_USERCLK1_IN, // Optional user clock + input PIPE_USERCLK2_IN, // Optional user clock + input PIPE_OOBCLK_IN, // OOB | OOB + input PIPE_MMCM_LOCK_IN, // Async | Async + + output PIPE_TXOUTCLK_OUT, // PCLK | PCLK + output [PCIE_LANE-1:0] PIPE_RXOUTCLK_OUT, // RX recovered clock (for debug only) + output [PCIE_LANE-1:0] PIPE_PCLK_SEL_OUT, // PCLK | PCLK + output PIPE_GEN3_OUT, // PCLK | PCLK + //---------- External GT COMMON Ports ---------------------- + input [11:0] QPLL_DRP_CRSCODE, + input [17:0] QPLL_DRP_FSM, + input [1:0] QPLL_DRP_DONE, + input [1:0] QPLL_DRP_RESET, + input [1:0] QPLL_QPLLLOCK, + input [1:0] QPLL_QPLLOUTCLK, + input [1:0] QPLL_QPLLOUTREFCLK, + output QPLL_QPLLPD, + output [1:0] QPLL_QPLLRESET, + output QPLL_DRP_CLK, + output QPLL_DRP_RST_N, + output QPLL_DRP_OVRD, + output QPLL_DRP_GEN3, + output QPLL_DRP_START, + + //---------- TRANSCEIVER DEBUG ----------------------- + input [ 2:0] PIPE_TXPRBSSEL, // PCLK | PCLK + input [ 2:0] PIPE_RXPRBSSEL, // PCLK | PCLK + input PIPE_TXPRBSFORCEERR, // PCLK | PCLK + input PIPE_RXPRBSCNTRESET, // PCLK | PCLK + input [ 2:0] PIPE_LOOPBACK, // PCLK | PCLK + + output [PCIE_LANE-1:0] PIPE_RXPRBSERR, // PCLK | PCLK + input [PCIE_LANE-1:0] PIPE_TXINHIBIT, // PCLK | PCLK + + //---------- FSM Ports --------------------------------- + output [4:0] PIPE_RST_FSM, // PCLK | PCLK + output [11:0] PIPE_QRST_FSM, // PCLK | PCLK + output [(PCIE_LANE*5)-1:0] PIPE_RATE_FSM, // PCLK | PCLK + output [(PCIE_LANE*6)-1:0] PIPE_SYNC_FSM_TX, // PCLK | PCLK + output [(PCIE_LANE*7)-1:0] PIPE_SYNC_FSM_RX, // PCLK | PCLK + output [(PCIE_LANE*7)-1:0] PIPE_DRP_FSM, // DCLK | DCLK + output [(PCIE_LANE*6)-1:0] PIPE_TXEQ_FSM, // PCLK | PCLK + output [(PCIE_LANE*6)-1:0] PIPE_RXEQ_FSM, // PCLK | PCLK + output [((((PCIE_LANE-1)>>2)+1)*9)-1:0]PIPE_QDRP_FSM, // DCLK | DCLK + + output PIPE_RST_IDLE, // PCLK | PCLK + output PIPE_QRST_IDLE, // PCLK | PCLK + output PIPE_RATE_IDLE, // PCLK | PCLK + + //----------- Channel DRP---------------------------- + output EXT_CH_GT_DRPCLK, + input [(PCIE_LANE*9)-1:0] EXT_CH_GT_DRPADDR, + input [PCIE_LANE-1:0] EXT_CH_GT_DRPEN, + input [(PCIE_LANE*16)-1:0]EXT_CH_GT_DRPDI, + input [PCIE_LANE-1:0] EXT_CH_GT_DRPWE, + + output [(PCIE_LANE*16)-1:0]EXT_CH_GT_DRPDO, + output [PCIE_LANE-1:0] EXT_CH_GT_DRPRDY, + + //---------- JTAG Ports -------------------------------- + input PIPE_JTAG_EN, // DCLK | DCLK + output [PCIE_LANE-1:0] PIPE_JTAG_RDY, // DCLK | DCLK + + //---------- Debug Ports ------------------------------- + output [PCIE_LANE-1:0] PIPE_DEBUG_0, // Async | Async + output [PCIE_LANE-1:0] PIPE_DEBUG_1, // Async | Async + output [PCIE_LANE-1:0] PIPE_DEBUG_2, // Async | Async + output [PCIE_LANE-1:0] PIPE_DEBUG_3, // Async | Async + output [PCIE_LANE-1:0] PIPE_DEBUG_4, // Async | Async + output [PCIE_LANE-1:0] PIPE_DEBUG_5, // Async | Async + output [PCIE_LANE-1:0] PIPE_DEBUG_6, // Async | Async + output [PCIE_LANE-1:0] PIPE_DEBUG_7, // Async | Async + output [PCIE_LANE-1:0] PIPE_DEBUG_8, // Async | Async + output [PCIE_LANE-1:0] PIPE_DEBUG_9, // Async | Async + output [31:0] PIPE_DEBUG, // Async | Async + + output [(PCIE_LANE*15)-1:0] PIPE_DMONITOROUT // DMONITORCLK + +); + + //---------- Input Registers --------------------------- +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg reset_n_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg reset_n_reg2; + + //---------- PIPE Clock Module Output ------------------ + wire clk_pclk; + wire clk_rxusrclk; + wire [PCIE_LANE-1:0] clk_rxoutclk; + wire clk_dclk; + wire clk_oobclk; + wire clk_mmcm_lock; + + //---------- PIPE Reset Module Output ------------------ + wire rst_cpllreset; + wire rst_cpllpd; + wire rst_rxusrclk_reset; + wire rst_dclk_reset; + wire rst_gtreset; + wire rst_drp_start; + wire rst_drp_x16x20_mode; + wire rst_drp_x16; + wire rst_userrdy; + wire rst_txsync_start; + wire rst_idle; + wire [4:0] rst_fsm; + + //------------------------------------------------------ + wire gtp_rst_qpllreset; // GTP + wire gtp_rst_qpllpd; // GTP + + //------------------------------------------------------ + wire [(PCIE_LANE-1)>>2:0]qpllreset; + wire qpllpd; + + //---------- QPLL Reset Module Output ------------------ + wire qrst_ovrd; + wire qrst_drp_start; + wire qrst_qpllreset; + wire qrst_qpllpd; + wire qrst_idle; + wire [3:0] qrst_fsm; + + //---------- PIPE_JTAG Master Module Output ------------ + wire [(PCIE_LANE*37)-1:0] jtag_sl_iport; + wire [(PCIE_LANE*17)-1:0] jtag_sl_oport; + + //---------- PIPE User Module Output ------------------- + wire [PCIE_LANE-1:0] gt_txpmareset_i; + wire [PCIE_LANE-1:0] gt_rxpmareset_i; + + wire [PCIE_LANE-1:0] user_oobclk; + wire [PCIE_LANE-1:0] user_resetovrd; + wire [PCIE_LANE-1:0] user_txpmareset; + wire [PCIE_LANE-1:0] user_rxpmareset; + wire [PCIE_LANE-1:0] user_rxcdrreset; + wire [PCIE_LANE-1:0] user_rxcdrfreqreset; + wire [PCIE_LANE-1:0] user_rxdfelpmreset; + wire [PCIE_LANE-1:0] user_eyescanreset; + wire [PCIE_LANE-1:0] user_txpcsreset; + wire [PCIE_LANE-1:0] user_rxpcsreset; + wire [PCIE_LANE-1:0] user_rxbufreset; + wire [PCIE_LANE-1:0] user_resetovrd_done; + wire [PCIE_LANE-1:0] user_active_lane; + wire [PCIE_LANE-1:0] user_resetdone /* synthesis syn_keep=1 */; + wire [PCIE_LANE-1:0] user_rxcdrlock; + wire [PCIE_LANE-1:0] user_rx_converge; + wire [PCIE_LANE-1:0] PIPE_RXEQ_CONVERGE; + + //---------- PIPE Rate Module Output ------------------- + wire [PCIE_LANE-1:0] rate_cpllpd; + wire [PCIE_LANE-1:0] rate_qpllpd; + wire [PCIE_LANE-1:0] rate_cpllreset; + wire [PCIE_LANE-1:0] rate_qpllreset; + wire [PCIE_LANE-1:0] rate_txpmareset; + wire [PCIE_LANE-1:0] rate_rxpmareset; + wire [(PCIE_LANE*2)-1:0] rate_sysclksel; + wire [PCIE_LANE-1:0] rate_pclk_sel; + wire [PCIE_LANE-1:0] rate_drp_start; + wire [PCIE_LANE-1:0] rate_drp_x16x20_mode; + wire [PCIE_LANE-1:0] rate_drp_x16; + wire [PCIE_LANE-1:0] rate_gen3; + wire [(PCIE_LANE*3)-1:0] rate_rate; + wire [PCIE_LANE-1:0] rate_resetovrd_start; + wire [PCIE_LANE-1:0] rate_txsync_start; + wire [PCIE_LANE-1:0] rate_done; + wire [PCIE_LANE-1:0] rate_rxsync_start; + wire [PCIE_LANE-1:0] rate_rxsync; + wire [PCIE_LANE-1:0] rate_idle; + wire [(PCIE_LANE*5)-1:0] rate_fsm; + + //---------- PIPE Sync Module Output ------------------- + wire [PCIE_LANE-1:0] sync_txphdlyreset; + wire [PCIE_LANE-1:0] sync_txphalign; + wire [PCIE_LANE-1:0] sync_txphalignen; + wire [PCIE_LANE-1:0] sync_txphinit; + wire [PCIE_LANE-1:0] sync_txdlybypass; + wire [PCIE_LANE-1:0] sync_txdlysreset; + wire [PCIE_LANE-1:0] sync_txdlyen; + wire [PCIE_LANE-1:0] sync_txsync_done; + wire [(PCIE_LANE*6)-1:0] sync_fsm_tx; + + wire [PCIE_LANE-1:0] sync_rxphalign; + wire [PCIE_LANE-1:0] sync_rxphalignen; + wire [PCIE_LANE-1:0] sync_rxdlybypass; + wire [PCIE_LANE-1:0] sync_rxdlysreset; + wire [PCIE_LANE-1:0] sync_rxdlyen; + wire [PCIE_LANE-1:0] sync_rxddien; + wire [PCIE_LANE-1:0] sync_rxsync_done; + wire [PCIE_LANE-1:0] sync_rxsync_donem; + wire [(PCIE_LANE*7)-1:0] sync_fsm_rx; + + wire [PCIE_LANE-1:0] txdlysresetdone; + wire [PCIE_LANE-1:0] txphaligndone; + wire [PCIE_LANE-1:0] rxdlysresetdone; + wire [PCIE_LANE-1:0] rxphaligndone_s; + + wire txsyncallin; // GTH + wire rxsyncallin; // GTH + + //---------- PIPE DRP Module Output -------------------- + wire [(PCIE_LANE*9)-1:0] drp_addr; + wire [PCIE_LANE-1:0] drp_en; + wire [(PCIE_LANE*16)-1:0]drp_di; + wire [PCIE_LANE-1:0] drp_we; + wire [PCIE_LANE-1:0] drp_done; + wire [(PCIE_LANE*3)-1:0] drp_fsm; + + //---------- PIPE JTAG Slave Module Output-------------- + wire [(PCIE_LANE*17)-1:0]jtag_sl_addr; + wire [PCIE_LANE-1:0] jtag_sl_den; + wire [PCIE_LANE-1:0] jtag_sl_en; + wire [(PCIE_LANE*16)-1:0]jtag_sl_di; + wire [PCIE_LANE-1:0] jtag_sl_we; + + //---------- PIPE DRP MUX Output ----------------------- + wire [(PCIE_LANE*9)-1:0] drp_mux_addr; + wire [PCIE_LANE-1:0] drp_mux_en; + wire [(PCIE_LANE*16)-1:0]drp_mux_di; + wire [PCIE_LANE-1:0] drp_mux_we; + + //---------- PIPE EQ Module Output --------------------- + wire [PCIE_LANE-1:0] eq_txeq_deemph; + wire [(PCIE_LANE*5)-1:0] eq_txeq_precursor; + wire [(PCIE_LANE*7)-1:0] eq_txeq_maincursor; + wire [(PCIE_LANE*5)-1:0] eq_txeq_postcursor; + + wire [PCIE_LANE-1:0] eq_rxeq_adapt_done; + + //---------- PIPE DRP Module Output -------------------- + wire [((((PCIE_LANE-1)>>2)+1)*8)-1:0] qdrp_addr; + wire [(PCIE_LANE-1)>>2:0] qdrp_en; + wire [((((PCIE_LANE-1)>>2)+1)*16)-1:0] qdrp_di; + wire [(PCIE_LANE-1)>>2:0] qdrp_we; + wire [(PCIE_LANE-1)>>2:0] qdrp_done; + wire [(PCIE_LANE-1)>>2:0] qdrp_qpllreset; + wire [((((PCIE_LANE-1)>>2)+1)*6)-1:0] qdrp_crscode; + wire [((((PCIE_LANE-1)>>2)+1)*9)-1:0] qdrp_fsm; + + //---------- QPLL Wrapper Output ----------------------- + wire [(PCIE_LANE-1)>>2:0] qpll_qplloutclk; + wire [(PCIE_LANE-1)>>2:0] qpll_qplloutrefclk; + wire [(PCIE_LANE-1)>>2:0] qpll_qplllock; + wire [((((PCIE_LANE-1)>>2)+1)*16)-1:0] qpll_do; + wire [(PCIE_LANE-1)>>2:0] qpll_rdy; + + //---------- GTX Wrapper Output ------------------------ + wire [PCIE_LANE-1:0] gt_txoutclk; + wire [PCIE_LANE-1:0] gt_rxoutclk; + wire [PCIE_LANE-1:0] gt_cplllock; + wire [PCIE_LANE-1:0] gt_rxcdrlock; + wire [PCIE_LANE-1:0] gt_txresetdone; + wire [PCIE_LANE-1:0] gt_rxresetdone; + wire [PCIE_LANE-1:0] gt_eyescandataerror; + wire [PCIE_LANE-1:0] gt_rxpmaresetdone; + wire [(PCIE_LANE*8)-1:0] gt_rxdisperr; + wire [(PCIE_LANE*8)-1:0] gt_rxnotintable; + wire [PCIE_LANE-1:0] gt_rxvalid; + wire [PCIE_LANE-1:0] gt_phystatus; + wire [(PCIE_LANE*3)-1:0] gt_rxstatus; + wire [(PCIE_LANE*3)-1:0] gt_rxbufstatus; + wire [PCIE_LANE-1:0] gt_rxelecidle; + wire [PCIE_LANE-1:0] gt_txratedone; + wire [PCIE_LANE-1:0] gt_rxratedone; + wire [(PCIE_LANE*16)-1:0]gt_do; + wire [PCIE_LANE-1:0] gt_rdy; + wire [PCIE_LANE-1:0] gt_txphinitdone; + wire [PCIE_LANE-1:0] gt_txdlysresetdone; + wire [PCIE_LANE-1:0] gt_txphaligndone; + wire [PCIE_LANE-1:0] gt_rxdlysresetdone; + wire [PCIE_LANE:0] gt_rxphaligndone; // Custom width for calculation + wire [PCIE_LANE-1:0] gt_txsyncout; // GTH + wire [PCIE_LANE-1:0] gt_txsyncdone; // GTH + wire [PCIE_LANE-1:0] gt_rxsyncout; // GTH + wire [PCIE_LANE-1:0] gt_rxsyncdone; // GTH + wire [PCIE_LANE-1:0] gt_rxcommadet; + wire [(PCIE_LANE*4)-1:0] gt_rxchariscomma; + wire [PCIE_LANE-1:0] gt_rxbyteisaligned; + wire [PCIE_LANE-1:0] gt_rxbyterealign; + wire [ 4:0] gt_rxchbondi [PCIE_LANE:0]; + wire [(PCIE_LANE*3)-1:0] gt_rxchbondlevel; + wire [ 4:0] gt_rxchbondo [PCIE_LANE:0]; + + wire [PCIE_LANE-1:0] rxchbonden; + wire [PCIE_LANE-1:0] rxchbondmaster; + wire [PCIE_LANE-1:0] rxchbondslave; + wire [PCIE_LANE-1:0] oobclk; + + //---------- TX EQ ------------------------------------- + localparam TXEQ_FS = 6'd40; // TX equalization full swing + localparam TXEQ_LF = 6'd15; // TX equalization low frequency + + //---------- Select JTAG Slave Type ---------------------------------------- + localparam GC_XSDB_SLAVE_TYPE = (PCIE_GT_DEVICE == "GTP") ? 16'h0400 : (PCIE_GT_DEVICE == "GTH") ? 16'h004A : 16'h0046; + + //---------- Generate Per-Lane Signals ----------------- + genvar i; // Index for per-lane signals + + + +//---------- Assignments ------------------------------------------------------- +assign gt_rxchbondo[0] = 5'd0; // Initialize rxchbond for lane 0 +assign gt_rxphaligndone[PCIE_LANE] = 1'd1; // Mot used +assign txsyncallin = &(gt_txphaligndone | (~user_active_lane)); +assign rxsyncallin = &(gt_rxphaligndone | (~user_active_lane)); + +//---------- Reset Synchronizer ------------------------------------------------ +always @ (posedge clk_pclk or negedge PIPE_RESET_N) +begin + + if (!PIPE_RESET_N) + begin + reset_n_reg1 <= 1'd0; + reset_n_reg2 <= 1'd0; + end + else + begin + reset_n_reg1 <= 1'd1; + reset_n_reg2 <= reset_n_reg1; + end +end + + + + //---------- PIPE Clock External --------------------------------------- + assign clk_pclk = PIPE_PCLK_IN; + assign clk_rxusrclk = PIPE_RXUSRCLK_IN; + assign clk_rxoutclk = PIPE_RXOUTCLK_IN; + assign clk_dclk = PIPE_DCLK_IN; + assign PIPE_USERCLK1 = PIPE_USERCLK1_IN; + assign PIPE_USERCLK2 = PIPE_USERCLK2_IN; + assign clk_oobclk = PIPE_OOBCLK_IN; + assign clk_mmcm_lock = PIPE_MMCM_LOCK_IN; + + + assign INT_PCLK_OUT_SLAVE= 1'b0; + assign INT_RXUSRCLK_OUT = 1'b0; + assign INT_RXOUTCLK_OUT = {PCIE_LANE{1'b0}}; + assign INT_DCLK_OUT = 1'b0; + assign INT_USERCLK1_OUT = 1'b0; + assign INT_USERCLK2_OUT = 1'b0; + assign INT_OOBCLK_OUT = 1'b0; + assign INT_MMCM_LOCK_OUT = 1'b0; + + + + +//---------- PIPE Reset Module ------------------------------------------------- +generate + + if (PCIE_GT_DEVICE == "GTP") + + begin : gtp_pipe_reset + + //---------- GTP PIPE Reset Module ------------------------------------- +pcie_7x_0_gtp_pipe_reset # + ( + + .PCIE_SIM_SPEEDUP (PCIE_SIM_SPEEDUP), // PCIe sim mode + //.PCIE_PLL_SEL (PCIE_PLL_SEL), // removed for GTP + //.PCIE_POWER_SAVING (PCIE_POWER_SAVING), // removed for GTP + //.PCIE_TXBUF_EN (PCIE_TXBUF_EN), // PCIe TX buffer enable for Gen1/Gen2 only + .PCIE_LANE (PCIE_LANE) // PCIe number of lanes + + ) + gtp_pipe_reset_i + ( + + //---------- Input ----------------------------- + .RST_CLK (clk_pclk), + .RST_RXUSRCLK (clk_rxusrclk), + .RST_DCLK (clk_dclk), + .RST_RST_N (reset_n_reg2), + .RST_DRP_DONE (drp_done), + .RST_RXPMARESETDONE (gt_rxpmaresetdone), + .RST_PLLLOCK (&qpll_qplllock), + //.RST_QPLL_IDLE (qrst_idle), // removed for GTP + .RST_RATE_IDLE (rate_idle), + .RST_RXCDRLOCK (user_rxcdrlock), + .RST_MMCM_LOCK (clk_mmcm_lock), + .RST_RESETDONE (user_resetdone), + .RST_PHYSTATUS (gt_phystatus), + .RST_TXSYNC_DONE (sync_txsync_done), + + //---------- Output ---------------------------- + .RST_CPLLRESET (rst_cpllreset), + .RST_CPLLPD (rst_cpllpd), + .RST_RXUSRCLK_RESET (rst_rxusrclk_reset), + .RST_DCLK_RESET (rst_dclk_reset), + .RST_GTRESET (rst_gtreset), + .RST_DRP_START (rst_drp_start), + .RST_DRP_X16 (rst_drp_x16), + .RST_USERRDY (rst_userrdy), + .RST_TXSYNC_START (rst_txsync_start), + .RST_IDLE (rst_idle), + .RST_FSM (rst_fsm) + + ); + + //---------- Default --------------------------------------------------- + assign gtp_rst_qpllreset = rst_cpllreset; + assign gtp_rst_qpllpd = rst_cpllpd; + + end + + else + + begin : pipe_reset + + //---------- PIPE Reset Module ----------------------------------------- +pcie_7x_0_pipe_reset # + ( + + .PCIE_SIM_SPEEDUP (PCIE_SIM_SPEEDUP), // PCIe sim mode + .PCIE_GT_DEVICE (PCIE_GT_DEVICE), // PCIe GT Device + .PCIE_PLL_SEL (PCIE_PLL_SEL), // PCIe PLL select for Gen1/Gen2 only + .PCIE_POWER_SAVING (PCIE_POWER_SAVING), // PCIe power saving + .PCIE_TXBUF_EN (PCIE_TXBUF_EN), // PCIe TX buffer enable for Gen1/Gen2 only + .PCIE_LANE (PCIE_LANE) // PCIe number of lanes + + ) + pipe_reset_i + ( + + //---------- Input ----------------------------- + .RST_CLK (clk_pclk), + .RST_RXUSRCLK (clk_rxusrclk), + .RST_DCLK (clk_dclk), + .RST_RST_N (reset_n_reg2), + .RST_DRP_DONE (drp_done), + .RST_RXPMARESETDONE (gt_rxpmaresetdone), + .RST_CPLLLOCK (gt_cplllock), + .RST_QPLL_IDLE (qrst_idle), + .RST_RATE_IDLE (rate_idle), + .RST_RXCDRLOCK (user_rxcdrlock), + .RST_MMCM_LOCK (clk_mmcm_lock), + .RST_RESETDONE (user_resetdone), + .RST_PHYSTATUS (gt_phystatus), + .RST_TXSYNC_DONE (sync_txsync_done), + + //---------- Output ---------------------------- + .RST_CPLLRESET (rst_cpllreset), + .RST_CPLLPD (rst_cpllpd), + .RST_RXUSRCLK_RESET (rst_rxusrclk_reset), + .RST_DCLK_RESET (rst_dclk_reset), + .RST_GTRESET (rst_gtreset), + .RST_DRP_START (rst_drp_start), + .RST_DRP_X16X20_MODE (rst_drp_x16x20_mode), + .RST_DRP_X16 (rst_drp_x16), + .RST_USERRDY (rst_userrdy), + .RST_TXSYNC_START (rst_txsync_start), + .RST_IDLE (rst_idle), + .RST_FSM (rst_fsm[4:0]) + + ); + + //---------- Default --------------------------------------------------- + assign gtp_rst_qpllreset = 1'd0; + assign gtp_rst_qpllpd = 1'd0; + + end + +endgenerate + + + +//---------- QPLL Reset Module ------------------------------------------------- +generate + + if ((PCIE_LINK_SPEED == 3) || (PCIE_PLL_SEL == "QPLL")) + + begin : qpll_reset + +pcie_7x_0_qpll_reset # + ( + + .PCIE_PLL_SEL (PCIE_PLL_SEL), // PCIe PLL select for Gen1/Gen2 only + .PCIE_POWER_SAVING (PCIE_POWER_SAVING),// PCIe power saving + .PCIE_LANE (PCIE_LANE) // PCIe number of lanes + + ) + qpll_reset_i + ( + + //---------- Input --------------------------------- + .QRST_CLK (clk_pclk), + .QRST_RST_N (reset_n_reg2), + .QRST_MMCM_LOCK (clk_mmcm_lock), + .QRST_CPLLLOCK (gt_cplllock), + .QRST_DRP_DONE (qdrp_done), + .QRST_QPLLLOCK (qpll_qplllock), + .QRST_RATE (PIPE_RATE), + .QRST_QPLLRESET_IN (rate_qpllreset), + .QRST_QPLLPD_IN (rate_qpllpd), + + //---------- Output -------------------------------- + .QRST_OVRD (qrst_ovrd), + .QRST_DRP_START (qrst_drp_start), + .QRST_QPLLRESET_OUT (qrst_qpllreset), + .QRST_QPLLPD_OUT (qrst_qpllpd), + .QRST_IDLE (qrst_idle), + .QRST_FSM (qrst_fsm) + + ); + + end + + else + + //---------- QPLL Reset Defaults --------------------------------------- + begin : qpll_reset_disable + assign qrst_ovrd = 1'd0; + assign qrst_drp_start = 1'd0; + assign qrst_qpllreset = 1'd0; + assign qrst_qpllpd = 1'd0; + assign qrst_idle = 1'd0; + assign qrst_fsm = 1; + end + +endgenerate + +assign jtag_sl_iport = {PCIE_LANE{37'd0}}; + +//Reference Clock for CPLLPD Fix + +wire gt_cpllpdrefclk; + +BUFG cpllpd_refclk_inst (.I (PIPE_CLK), .O (gt_cpllpdrefclk)); + +//---------- Generate PIPE Lane ------------------------------------------------ +generate for (i=0; i>2]) // removed for GTP + //.RATE_MMCM_LOCK (clk_mmcm_lock), // removed for GTP + .RATE_DRP_DONE (drp_done[i]), + .RATE_RXPMARESETDONE (gt_rxpmaresetdone[i]), + //.RATE_TXRESETDONE (gt_txresetdone[i]), // removed for GTP + //.RATE_RXRESETDONE (gt_rxresetdone[i]), // removed for GTP + .RATE_TXRATEDONE (gt_txratedone[i]), + .RATE_RXRATEDONE (gt_rxratedone[i]), + .RATE_PHYSTATUS (gt_phystatus[i]), + //.RATE_RESETOVRD_DONE (user_resetovrd_done[i]), // removed for GTP + .RATE_TXSYNC_DONE (sync_txsync_done[i]), + //.RATE_RXSYNC_DONE (sync_rxsync_done[i]), // removed for GTP + + //---------- Output ---------------------------- + //.RATE_CPLLPD (rate_cpllpd[i]), // removed for GTP + //.RATE_QPLLPD (rate_qpllpd[i]), // removed for GTP + //.RATE_CPLLRESET (rate_cpllreset[i]), // removed for GTP + //.RATE_QPLLRESET (rate_qpllreset[i]), // removed for GTP + //.RATE_TXPMARESET (rate_txpmareset[i]), // removed for GTP + //.RATE_RXPMARESET (rate_rxpmareset[i]), // removed for GTP + //.RATE_SYSCLKSEL (rate_sysclksel[(2*i)+1:(2*i)]), // removed for GTP + .RATE_DRP_START (rate_drp_start[i]), + .RATE_DRP_X16 (rate_drp_x16[i]), + .RATE_PCLK_SEL (rate_pclk_sel[i]), + //.RATE_GEN3 (rate_gen3[i]), // removed for GTP + .RATE_RATE_OUT (rate_rate[(3*i)+2:(3*i)]), + //.RATE_RESETOVRD_START (rate_resetovrd_start[i]), // removed for GTP + .RATE_TXSYNC_START (rate_txsync_start[i]), + .RATE_DONE (rate_done[i]), + //.RATE_RXSYNC_START (rate_rxsync_start[i]), // removed for GTP + //.RATE_RXSYNC (rate_rxsync[i]), // removed for GTP + .RATE_IDLE (rate_idle[i]), + .RATE_FSM (rate_fsm[(5*i)+4:(5*i)]) + ); + + //---------- Default for GTP ----------------------- + assign rate_cpllpd[i] = 1'd0; + assign rate_qpllpd[i] = 1'd0; + assign rate_cpllreset[i] = 1'd0; + assign rate_qpllreset[i] = 1'd0; + assign rate_txpmareset[i] = 1'd0; + assign rate_rxpmareset[i] = 1'd0; + assign rate_sysclksel[(2*i)+1:(2*i)] = 2'b0; + assign rate_gen3[i] = 1'd0; + assign rate_resetovrd_start[i] = 1'd0; + assign rate_rxsync_start[i] = 1'd0; + assign rate_rxsync[i] = 1'd0; + + end + + else + + begin : pipe_rate + + //---------- PIPE Rate Module ---------------------------------------------- +pcie_7x_0_pipe_rate # + ( + + .PCIE_SIM_SPEEDUP (PCIE_SIM_SPEEDUP), // PCIe sim speedup + .PCIE_GT_DEVICE (PCIE_GT_DEVICE), // PCIe GT device + .PCIE_USE_MODE (PCIE_USE_MODE), // PCIe use mode + .PCIE_PLL_SEL (PCIE_PLL_SEL), // PCIe PLL select for Gen1/Gen2 only + .PCIE_POWER_SAVING (PCIE_POWER_SAVING),// PCIe power saving + .PCIE_ASYNC_EN (PCIE_ASYNC_EN), // PCIe async enable + .PCIE_TXBUF_EN (PCIE_TXBUF_EN), // PCIe TX buffer enable for Gen1/Gen2 only + .PCIE_RXBUF_EN (PCIE_RXBUF_EN) // PCIe RX buffer enable for Gen3 only + + ) + pipe_rate_i + ( + + //---------- Input --------------------------------- + .RATE_CLK (clk_pclk), + .RATE_RST_N (!rst_cpllreset), + .RATE_RST_IDLE (rst_idle), + .RATE_ACTIVE_LANE (user_active_lane[i]), + .RATE_RATE_IN (PIPE_RATE), + .RATE_CPLLLOCK (gt_cplllock[i]), + .RATE_QPLLLOCK (qpll_qplllock[i>>2]), + .RATE_MMCM_LOCK (clk_mmcm_lock), + .RATE_DRP_DONE (drp_done[i]), + .RATE_RXPMARESETDONE (gt_rxpmaresetdone[i]), + .RATE_TXRESETDONE (gt_txresetdone[i]), + .RATE_RXRESETDONE (gt_rxresetdone[i]), + .RATE_TXRATEDONE (gt_txratedone[i]), + .RATE_RXRATEDONE (gt_rxratedone[i]), + .RATE_PHYSTATUS (gt_phystatus[i]), + .RATE_RESETOVRD_DONE (user_resetovrd_done[i]), + .RATE_TXSYNC_DONE (sync_txsync_done[i]), + .RATE_RXSYNC_DONE (sync_rxsync_done[i]), + + //---------- Output -------------------------------- + .RATE_CPLLPD (rate_cpllpd[i]), + .RATE_QPLLPD (rate_qpllpd[i]), + .RATE_CPLLRESET (rate_cpllreset[i]), + .RATE_QPLLRESET (rate_qpllreset[i]), + .RATE_TXPMARESET (rate_txpmareset[i]), + .RATE_RXPMARESET (rate_rxpmareset[i]), + .RATE_SYSCLKSEL (rate_sysclksel[(2*i)+1:(2*i)]), + .RATE_DRP_START (rate_drp_start[i]), + .RATE_DRP_X16X20_MODE (rate_drp_x16x20_mode[i]), + .RATE_DRP_X16 (rate_drp_x16[i]), + .RATE_PCLK_SEL (rate_pclk_sel[i]), + .RATE_GEN3 (rate_gen3[i]), + .RATE_RATE_OUT (rate_rate[(3*i)+2:(3*i)]), + .RATE_RESETOVRD_START (rate_resetovrd_start[i]), + .RATE_TXSYNC_START (rate_txsync_start[i]), + .RATE_DONE (rate_done[i]), + .RATE_RXSYNC_START (rate_rxsync_start[i]), + .RATE_RXSYNC (rate_rxsync[i]), + .RATE_IDLE (rate_idle[i]), + .RATE_FSM (rate_fsm[(5*i)+4:(5*i)]) + + ); + + end + + + + //---------- PIPE Sync Module ---------------------------------------------- +pcie_7x_0_pipe_sync # + ( + + .PCIE_GT_DEVICE (PCIE_GT_DEVICE), // PCIe GT Device + .PCIE_TXBUF_EN (PCIE_TXBUF_EN), // PCIe TX buffer enable for Gen1/Gen2 only + .PCIE_RXBUF_EN (PCIE_RXBUF_EN), // PCIe RX buffer enable for Gen3 only + .PCIE_TXSYNC_MODE (PCIE_TXSYNC_MODE), // PCIe TX sync mode + .PCIE_RXSYNC_MODE (PCIE_RXSYNC_MODE), // PCIe RX sync mode + .PCIE_LANE (PCIE_LANE), // PCIe lane + .PCIE_LINK_SPEED (PCIE_LINK_SPEED) // PCIe link speed + + ) + pipe_sync_i + ( + + //---------- Input --------------------------------- + .SYNC_CLK (clk_pclk), + .SYNC_RST_N (!rst_cpllreset), + .SYNC_SLAVE (i > 0), + .SYNC_GEN3 (rate_gen3[i]), + .SYNC_RATE_IDLE (rate_idle[i]), + .SYNC_MMCM_LOCK (clk_mmcm_lock), + .SYNC_RXELECIDLE (gt_rxelecidle[i]), + .SYNC_RXCDRLOCK (user_rxcdrlock[i]), + .SYNC_ACTIVE_LANE (user_active_lane[i]), + + .SYNC_TXSYNC_START (rate_txsync_start[i] || rst_txsync_start), + .SYNC_TXPHINITDONE (&(gt_txphinitdone | (~user_active_lane))), + .SYNC_TXDLYSRESETDONE (txdlysresetdone[i]), + .SYNC_TXPHALIGNDONE (txphaligndone[i]), + .SYNC_TXSYNCDONE (gt_txsyncdone[i]), // GTH + + .SYNC_RXSYNC_START (rate_rxsync_start[i]), + .SYNC_RXDLYSRESETDONE (rxdlysresetdone[i]), + .SYNC_RXPHALIGNDONE_M (gt_rxphaligndone[0]), + .SYNC_RXPHALIGNDONE_S (rxphaligndone_s[i]), + .SYNC_RXSYNC_DONEM_IN (sync_rxsync_donem[0]), + .SYNC_RXSYNCDONE (gt_rxsyncdone[i]), // GTH + + //---------- Output -------------------------------- + .SYNC_TXPHDLYRESET (sync_txphdlyreset[i]), + .SYNC_TXPHALIGN (sync_txphalign[i]), + .SYNC_TXPHALIGNEN (sync_txphalignen[i]), + .SYNC_TXPHINIT (sync_txphinit[i]), + .SYNC_TXDLYBYPASS (sync_txdlybypass[i]), + .SYNC_TXDLYSRESET (sync_txdlysreset[i]), + .SYNC_TXDLYEN (sync_txdlyen[i]), + .SYNC_TXSYNC_DONE (sync_txsync_done[i]), + .SYNC_FSM_TX (sync_fsm_tx[(6*i)+5:(6*i)]), + + .SYNC_RXPHALIGN (sync_rxphalign[i]), + .SYNC_RXPHALIGNEN (sync_rxphalignen[i]), + .SYNC_RXDLYBYPASS (sync_rxdlybypass[i]), + .SYNC_RXDLYSRESET (sync_rxdlysreset[i]), + .SYNC_RXDLYEN (sync_rxdlyen[i]), + .SYNC_RXDDIEN (sync_rxddien[i]), + .SYNC_RXSYNC_DONEM_OUT (sync_rxsync_donem[i]), + .SYNC_RXSYNC_DONE (sync_rxsync_done[i]), + .SYNC_FSM_RX (sync_fsm_rx[(7*i)+6:(7*i)]) + + ); + + //---------- PIPE Sync Assignments ----------------------------------------- + assign txdlysresetdone[i] = (PCIE_TXSYNC_MODE == 1) ? gt_txdlysresetdone[i] : >_txdlysresetdone; + assign txphaligndone[i] = (PCIE_TXSYNC_MODE == 1) ? gt_txphaligndone[i] : &(gt_txphaligndone | (~user_active_lane)); + assign rxdlysresetdone[i] = (PCIE_RXSYNC_MODE == 1) ? gt_rxdlysresetdone[i] : >_rxdlysresetdone; + assign rxphaligndone_s[i] = (PCIE_LANE == 1) ? 1'd0 : >_rxphaligndone[PCIE_LANE:1]; + + + //---------- GTP PIPE DRP Module ------------------------------------------- + if (PCIE_GT_DEVICE == "GTP") + + begin : gtp_pipe_drp + + //---------- GTP PIPE DRP Module --------------------------------------- +pcie_7x_0_gtp_pipe_drp + gtp_pipe_drp_i + ( + + //---------- Input --------------------------------- + .DRP_CLK (clk_dclk), + .DRP_RST_N (!rst_dclk_reset), + .DRP_X16 (rst_drp_x16 || rate_drp_x16[i]), + .DRP_START (rst_drp_start || rate_drp_start[i]), + .DRP_DO (gt_do[(16*i)+15:(16*i)]), + .DRP_RDY (gt_rdy[i]), + + //---------- Output -------------------------------- + .DRP_ADDR (drp_addr[(9*i)+8:(9*i)]), + .DRP_EN (drp_en[i]), + .DRP_DI (drp_di[(16*i)+15:(16*i)]), + .DRP_WE (drp_we[i]), + .DRP_DONE (drp_done[i]), + .DRP_FSM (drp_fsm[(3*i)+2:(3*i)]) + + ); + + end + + else + + begin : pipe_drp + + //---------- PIPE DRP Module ------------------------------------------- +pcie_7x_0_pipe_drp # + ( + + .PCIE_GT_DEVICE (PCIE_GT_DEVICE), // PCIe GT device + .PCIE_USE_MODE (PCIE_USE_MODE), // PCIe use mode + .PCIE_PLL_SEL (PCIE_PLL_SEL), // PCIe PLL select for Gen1/Gen2 only + .PCIE_AUX_CDR_GEN3_EN (PCIE_AUX_CDR_GEN3_EN), // PCIe AUX CDR Gen3 enable + .PCIE_ASYNC_EN (PCIE_ASYNC_EN), // PCIe async enable + .PCIE_TXBUF_EN (PCIE_TXBUF_EN), // PCIe TX buffer enable for Gen1/Gen2 only + .PCIE_RXBUF_EN (PCIE_RXBUF_EN), // PCIe RX buffer enable for Gen3 only + .PCIE_TXSYNC_MODE (PCIE_TXSYNC_MODE), // PCIe TX sync mode + .PCIE_RXSYNC_MODE (PCIE_RXSYNC_MODE) // PCIe RX sync mode + + ) + pipe_drp_i + ( + + //---------- Input --------------------------------- + .DRP_CLK (clk_dclk), + .DRP_RST_N (!rst_dclk_reset), + .DRP_GTXRESET (rst_gtreset), + .DRP_RATE (PIPE_RATE), + .DRP_X16X20_MODE (rst_drp_x16x20_mode || rate_drp_x16x20_mode[i]), + .DRP_X16 (rst_drp_x16 || rate_drp_x16[i]), + .DRP_START (rst_drp_start || rate_drp_start[i]), + .DRP_DO (gt_do[(16*i)+15:(16*i)]), + .DRP_RDY (gt_rdy[i]), + + //---------- Output -------------------------------- + .DRP_ADDR (drp_addr[(9*i)+8:(9*i)]), + .DRP_EN (drp_en[i]), + .DRP_DI (drp_di[(16*i)+15:(16*i)]), + .DRP_WE (drp_we[i]), + .DRP_DONE (drp_done[i]), + .DRP_FSM (drp_fsm[(3*i)+2:(3*i)]) + + ); + + end + + + assign jtag_sl_oport[((i+1)*17)-1 : (i*17)] = 17'd0; + assign jtag_sl_addr[(17*i)+16:(17*i)] = 17'd0; + assign jtag_sl_den[i] = 1'd0; + assign jtag_sl_di[(16*i)+15:(16*i)] = 16'd0; + assign jtag_sl_we[i] = 1'd0; + + //---------- Generate DRP MUX ---------------------------------------------- + assign PIPE_JTAG_RDY[i] = (drp_fsm[(3*i)+2:(3*i)] == 3'b000); + assign jtag_sl_en[i] = (jtag_sl_addr[(17*i)+16:(17*i)+9] == 8'd0) ? jtag_sl_den[i] : 1'd0; + + // Channel DRP + assign drp_mux_en[i] = (PIPE_JTAG_RDY[i] && EXT_CH_GT_DRP) ? EXT_CH_GT_DRPEN[i] : drp_en[i]; + assign drp_mux_di[(16*i)+15:(16*i)] = (PIPE_JTAG_RDY[i] && EXT_CH_GT_DRP) ? EXT_CH_GT_DRPDI[(16*i)+15:(16*i)] : drp_di[(16*i)+15:(16*i)]; + assign drp_mux_addr[(9*i)+8:(9*i)] = (PIPE_JTAG_RDY[i] && EXT_CH_GT_DRP) ? EXT_CH_GT_DRPADDR[(9*i)+8:(9*i)] : drp_addr[(9*i)+8:(9*i)]; + assign drp_mux_we[i] = (PIPE_JTAG_RDY[i] && EXT_CH_GT_DRP) ? EXT_CH_GT_DRPWE[i] : drp_we[i]; + + //---------- Generate PIPE EQ ---------------------------------------------- + if (PCIE_LINK_SPEED == 3) + + begin : pipe_eq + + //---------- PIPE EQ Module -------------------------------------------- +pcie_7x_0_pipe_eq # + ( + .PCIE_SIM_MODE (PCIE_SIM_MODE), // PCIe sim mode + .PCIE_GT_DEVICE (PCIE_GT_DEVICE), + .PCIE_RXEQ_MODE_GEN3 (PCIE_RXEQ_MODE_GEN3) // PCIe RX equalization mode + ) + pipe_eq_i + ( + + //---------- Input ----------------------------- + .EQ_CLK (clk_pclk), + .EQ_RST_N (!rst_cpllreset), + .EQ_GEN3 (rate_gen3[i]), + + .EQ_TXEQ_CONTROL (PIPE_TXEQ_CONTROL[(2*i)+1:(2*i)]), + .EQ_TXEQ_PRESET (PIPE_TXEQ_PRESET[(4*i)+3:(4*i)]), + .EQ_TXEQ_PRESET_DEFAULT (PIPE_TXEQ_PRESET_DEFAULT[(4*i)+3:(4*i)]), + .EQ_TXEQ_DEEMPH_IN (PIPE_TXEQ_DEEMPH[(6*i)+5:(6*i)]), // renamed + + .EQ_RXEQ_CONTROL (PIPE_RXEQ_CONTROL[(2*i)+1:(2*i)]), + .EQ_RXEQ_PRESET (PIPE_RXEQ_PRESET[(3*i)+2:(3*i)]), + .EQ_RXEQ_LFFS (PIPE_RXEQ_LFFS[(6*i)+5:(6*i)]), + .EQ_RXEQ_TXPRESET (PIPE_RXEQ_TXPRESET[(4*i)+3:(4*i)]), + .EQ_RXEQ_USER_EN (PIPE_RXEQ_USER_EN[i]), + .EQ_RXEQ_USER_TXCOEFF (PIPE_RXEQ_USER_TXCOEFF[(18*i)+17:(18*i)]), + .EQ_RXEQ_USER_MODE (PIPE_RXEQ_USER_MODE[i]), + + //---------- Output ---------------------------- + .EQ_TXEQ_DEEMPH (eq_txeq_deemph[i]), + .EQ_TXEQ_PRECURSOR (eq_txeq_precursor[(5*i)+4:(5*i)]), + .EQ_TXEQ_MAINCURSOR (eq_txeq_maincursor[(7*i)+6:(7*i)]), + .EQ_TXEQ_POSTCURSOR (eq_txeq_postcursor[(5*i)+4:(5*i)]), + .EQ_TXEQ_DEEMPH_OUT (PIPE_TXEQ_COEFF[(18*i)+17:(18*i)]),// renamed + .EQ_TXEQ_DONE (PIPE_TXEQ_DONE[i]), + .EQ_TXEQ_FSM (PIPE_TXEQ_FSM[(6*i)+5:(6*i)]), + + .EQ_RXEQ_NEW_TXCOEFF (PIPE_RXEQ_NEW_TXCOEFF[(18*i)+17:(18*i)]), + .EQ_RXEQ_LFFS_SEL (PIPE_RXEQ_LFFS_SEL[i]), + .EQ_RXEQ_ADAPT_DONE (eq_rxeq_adapt_done[i]), + .EQ_RXEQ_DONE (PIPE_RXEQ_DONE[i]), + .EQ_RXEQ_FSM (PIPE_RXEQ_FSM[(6*i)+5:(6*i)]) + + ); + + end + + else + + //---------- PIPE EQ Defaults ------------------------------------------ + begin : pipe_eq_disable + assign eq_txeq_deemph[i] = 1'd0; + assign eq_txeq_precursor[(5*i)+4:(5*i)] = 5'h00; + assign eq_txeq_maincursor[(7*i)+6:(7*i)] = 7'h00; + assign eq_txeq_postcursor[(5*i)+4:(5*i)] = 5'h00; + assign eq_rxeq_adapt_done[i] = 1'd0; + assign PIPE_TXEQ_COEFF[(18*i)+17:(18*i)] = 18'd0; + assign PIPE_TXEQ_DONE[i] = 1'd0; + assign PIPE_TXEQ_FSM[(6*i)+5:(6*i)] = 6'd0; + + assign PIPE_RXEQ_NEW_TXCOEFF[(18*i)+17:(18*i)] = 18'd0; + assign PIPE_RXEQ_LFFS_SEL[i] = 1'd0; + assign PIPE_RXEQ_ADAPT_DONE[i] = 1'd0; + assign PIPE_RXEQ_DONE[i] = 1'd0; + assign PIPE_RXEQ_FSM[(6*i)+5:(6*i)] = 6'd0; + end + + //---------- Generate PIPE Common Per Quad for Gen3 ------------------------ + if ((i%4)==0) + + begin : pipe_quad + + //---------- Generate QPLL Powerdown and Reset ------------------------- + assign qpllpd = (PCIE_GT_DEVICE == "GTP") ? gtp_rst_qpllpd : qrst_qpllpd; + assign qpllreset[i>>2] = (PCIE_GT_DEVICE == "GTP") ? gtp_rst_qpllreset : (qrst_qpllreset || qdrp_qpllreset[i>>2]); + + if ((PCIE_LINK_SPEED == 3) || (PCIE_PLL_SEL == "QPLL") || (PCIE_GT_DEVICE == "GTP")) + + begin : gt_common_enabled + + if (PCIE_EXT_GT_COMMON == "FALSE") + + begin : gt_common_int + + //---------- GT COMMON INTERNAL Module --------------------------------------- +pcie_7x_0_gt_common # + ( + + .PCIE_SIM_MODE (PCIE_SIM_MODE), // PCIe sim mode + .PCIE_GT_DEVICE (PCIE_GT_DEVICE), // PCIe GT device + .PCIE_USE_MODE (PCIE_USE_MODE), // PCIe use mode + .PCIE_PLL_SEL (PCIE_PLL_SEL), // PCIe PLL select for Gen1/Gen2 only + .PCIE_REFCLK_FREQ (PCIE_REFCLK_FREQ) // PCIe reference clock frequency + + ) + gt_common_i + ( + + //---------- Input ------------------------- + .CPLLPDREFCLK (gt_cpllpdrefclk), + .PIPE_CLK (PIPE_CLK), + .QPLL_QPLLPD (qpllpd), + .QPLL_QPLLRESET (qpllreset[i>>2]), + .QPLL_DRP_CLK (clk_dclk), + .QPLL_DRP_RST_N (rst_dclk_reset), + .QPLL_DRP_OVRD (qrst_ovrd), + .QPLL_DRP_GEN3 (&rate_gen3), + .QPLL_DRP_START (qrst_drp_start), + + .QPLL_DRP_CRSCODE (qdrp_crscode[(6*(i>>2))+5:(6*(i>>2))]), + .QPLL_DRP_FSM (qdrp_fsm[(9*(i>>2))+8:(9*(i>>2))]), + .QPLL_DRP_DONE (qdrp_done[i>>2]), + .QPLL_DRP_RESET (qdrp_qpllreset[i>>2]), + .QPLL_QPLLOUTCLK (qpll_qplloutclk[i>>2]), + .QPLL_QPLLOUTREFCLK (qpll_qplloutrefclk[i>>2]), + .QPLL_QPLLLOCK (qpll_qplllock[i>>2]) + ); + assign QPLL_QPLLPD = 1'b0; + assign QPLL_QPLLRESET[i>>2] = 1'b0; + assign QPLL_DRP_CLK = 1'b0; + assign QPLL_DRP_RST_N = 1'b0; + assign QPLL_DRP_OVRD = 1'b0; + assign QPLL_DRP_GEN3 = 1'b0; + assign QPLL_DRP_START = 1'b0; + assign INT_QPLLLOCK_OUT[i>>2] = qpll_qplllock[i>>2] ; + assign INT_QPLLOUTREFCLK_OUT[i>>2] = qpll_qplloutrefclk[i>>2]; + assign INT_QPLLOUTCLK_OUT[i>>2] = qpll_qplloutclk[i>>2]; + end + else + begin : gt_common_ext + assign qdrp_done[i>>2] = QPLL_DRP_DONE[i>>2]; + assign qdrp_qpllreset[i>>2] = QPLL_DRP_RESET[i>>2]; + assign qdrp_crscode[(6*(i>>2))+5:(6*(i>>2))] = QPLL_DRP_CRSCODE[(6*(i>>2))+5:(6*(i>>2))]; + assign qdrp_fsm[(9*(i>>2))+8:(9*(i>>2))] = QPLL_DRP_FSM[(9*(i>>2))+8:(9*(i>>2))]; + assign qpll_qplloutclk[i>>2] = QPLL_QPLLOUTCLK[i>>2]; + assign qpll_qplloutrefclk[i>>2] = QPLL_QPLLOUTREFCLK[i>>2]; + assign qpll_qplllock[i>>2] = QPLL_QPLLLOCK[i>>2]; + assign QPLL_QPLLPD = qpllpd; + assign QPLL_QPLLRESET[i>>2] = qpllreset[i>>2]; + assign QPLL_DRP_CLK = clk_dclk; + assign QPLL_DRP_RST_N = rst_dclk_reset; + assign QPLL_DRP_OVRD = qrst_ovrd; + assign QPLL_DRP_GEN3 = &rate_gen3; + assign QPLL_DRP_START = qrst_drp_start; + assign INT_QPLLLOCK_OUT[i>>2] = 1'b0; + assign INT_QPLLOUTCLK_OUT[i>>2] = 1'b0; + assign INT_QPLLOUTREFCLK_OUT[i>>2] = 1'b0; + end + end + else + + //---------- PIPE Common Defaults ---------------------------------- + begin : gt_common_disabled + assign qdrp_done[i>>2] = 1'd0; + assign qdrp_crscode[(6*(i>>2))+5:(6*(i>>2))] = 6'd0; + assign qdrp_fsm[(9*(i>>2))+8:(9*(i>>2))] = 9'd0; + assign qpll_qplloutclk[i>>2] = 1'd0; + assign qpll_qplloutrefclk[i>>2] = 1'd0; + assign qpll_qplllock[i>>2] = 1'd0; + assign QPLL_QPLLPD = 1'b0; + assign QPLL_QPLLRESET[i>>2] = 1'b0; + assign QPLL_DRP_CLK = 1'b0; + assign QPLL_DRP_RST_N = 1'b0; + assign QPLL_DRP_OVRD = 1'b0; + assign QPLL_DRP_GEN3 = 1'b0; + assign QPLL_DRP_START = 1'b0; + assign INT_QPLLLOCK_OUT[i>>2] = 1'b0; + assign INT_QPLLOUTCLK_OUT[i>>2] = 1'b0; + assign INT_QPLLOUTREFCLK_OUT[i>>2] = 1'b0; + end + end + + //---------- GT Wrapper ---------------------------------------------------- + assign gt_txpmareset_i[i] = (user_txpmareset[i] || rate_txpmareset[i]); + assign gt_rxpmareset_i[i] = (user_rxpmareset[i] || rate_rxpmareset[i]); + +pcie_7x_0_gt_wrapper # + ( + + .PCIE_SIM_MODE (PCIE_SIM_MODE), // PCIe sim mode + .PCIE_SIM_SPEEDUP (PCIE_SIM_SPEEDUP), // PCIe sim speedup + .PCIE_SIM_TX_EIDLE_DRIVE_LEVEL (PCIE_SIM_TX_EIDLE_DRIVE_LEVEL), // PCIe sim TX electrical idle drive level + .PCIE_GT_DEVICE (PCIE_GT_DEVICE), // PCIe GT device + .PCIE_USE_MODE (PCIE_USE_MODE), // PCIe use mode + .PCIE_PLL_SEL (PCIE_PLL_SEL), // PCIe PLL select for Gen1/Gen2 only + .PCIE_LPM_DFE (PCIE_LPM_DFE), // PCIe LPM or DFE mode for Gen1/Gen2 only + .PCIE_LPM_DFE_GEN3 (PCIE_LPM_DFE_GEN3), // PCIe LPM or DFE mode for Gen3 only + .PCIE_ASYNC_EN (PCIE_ASYNC_EN), // PCIe async enable + .PCIE_TXBUF_EN (PCIE_TXBUF_EN), // PCIe TX buffer enable for Gen1/Gen2 only + .PCIE_TXSYNC_MODE (PCIE_TXSYNC_MODE), // PCIe TX sync mode + .PCIE_RXSYNC_MODE (PCIE_RXSYNC_MODE), // PCIe RX sync mode + .PCIE_CHAN_BOND (PCIE_CHAN_BOND), // PCIe Channel bonding mode + .PCIE_CHAN_BOND_EN (PCIE_CHAN_BOND_EN), // PCIe Channel bonding enable for Gen1/Gen2 only + .PCIE_LANE (PCIE_LANE), // PCIe number of lane + .PCIE_REFCLK_FREQ (PCIE_REFCLK_FREQ), // PCIe reference clock frequency + .PCIE_TX_EIDLE_ASSERT_DELAY (PCIE_TX_EIDLE_ASSERT_DELAY), // PCIe TX electrical idle assert delay + .PCIE_OOBCLK_MODE (PCIE_OOBCLK_MODE), // PCIe OOB clock mode + .TX_MARGIN_FULL_0 (TX_MARGIN_FULL_0), + .TX_MARGIN_FULL_1 (TX_MARGIN_FULL_1), + .TX_MARGIN_FULL_2 (TX_MARGIN_FULL_2), + .TX_MARGIN_FULL_3 (TX_MARGIN_FULL_3), + .TX_MARGIN_FULL_4 (TX_MARGIN_FULL_4), + .TX_MARGIN_LOW_0 (TX_MARGIN_LOW_0), + .TX_MARGIN_LOW_1 (TX_MARGIN_LOW_1), + .TX_MARGIN_LOW_2 (TX_MARGIN_LOW_2), + .TX_MARGIN_LOW_3 (TX_MARGIN_LOW_3), + .TX_MARGIN_LOW_4 (TX_MARGIN_LOW_4), + + .PCIE_DEBUG_MODE (PCIE_DEBUG_MODE) // PCIe debug mode + ) + gt_wrapper_i + ( + + //---------- GT User Ports ------------------------- + .GT_MASTER (i == 0), + .GT_GEN3 (rate_gen3[i]), + .GT_RX_CONVERGE (&user_rx_converge), + + //---------- GT Clock Ports ------------------------ + .GT_GTREFCLK0 (PIPE_CLK), + .GT_QPLLCLK (qpll_qplloutclk[i>>2]), + .GT_QPLLREFCLK (qpll_qplloutrefclk[i>>2]), + .GT_TXUSRCLK (clk_pclk), + .GT_RXUSRCLK (clk_rxusrclk), + .GT_TXUSRCLK2 (clk_pclk), + .GT_RXUSRCLK2 (clk_rxusrclk), + .GT_OOBCLK (oobclk[i]), + .GT_TXSYSCLKSEL (rate_sysclksel[(2*i)+1:(2*i)]), + .GT_RXSYSCLKSEL (rate_sysclksel[(2*i)+1:(2*i)]), + .GT_CPLLPDREFCLK (gt_cpllpdrefclk), + + .GT_TXOUTCLK (gt_txoutclk[i]), + .GT_RXOUTCLK (gt_rxoutclk[i]), + .GT_CPLLLOCK (gt_cplllock[i]), + .GT_RXCDRLOCK (gt_rxcdrlock[i]), + + //---------- GT Reset Ports ------------------------ + .GT_CPLLPD (rst_cpllpd || rate_cpllpd[i]), + .GT_CPLLRESET (rst_cpllreset || rate_cpllreset[i]), + .GT_TXUSERRDY (rst_userrdy), + .GT_RXUSERRDY (rst_userrdy), + .GT_RESETOVRD (user_resetovrd[i]), + .GT_GTTXRESET (rst_gtreset), + .GT_GTRXRESET (rst_gtreset), + .GT_TXPMARESET (gt_txpmareset_i[i]), // (user_txpmareset[i] || rate_txpmareset[i]), + .GT_RXPMARESET (gt_rxpmareset_i[i]), // (user_rxpmareset[i] || rate_rxpmareset[i]), + .GT_RXCDRRESET (user_rxcdrreset[i]), + .GT_RXCDRFREQRESET (user_rxcdrfreqreset[i]), + .GT_RXDFELPMRESET (user_rxdfelpmreset[i]), + .GT_EYESCANRESET (user_eyescanreset[i]), + .GT_TXPCSRESET (user_txpcsreset[i]), + .GT_RXPCSRESET (user_rxpcsreset[i]), + .GT_RXBUFRESET (user_rxbufreset[i]), + + .GT_EYESCANDATAERROR (gt_eyescandataerror[i]), + .GT_TXRESETDONE (gt_txresetdone[i]), + .GT_RXRESETDONE (gt_rxresetdone[i]), + .GT_RXPMARESETDONE (gt_rxpmaresetdone[i]), + + //---------- GT TX Data Ports ---------------------- + .GT_TXDATA (PIPE_TXDATA[(32*i)+31:(32*i)]), + .GT_TXDATAK (PIPE_TXDATAK[(4*i)+3:(4*i)]), + + .GT_TXP (PIPE_TXP[i]), + .GT_TXN (PIPE_TXN[i]), + + //---------- GT RX Data Ports ---------------------- + .GT_RXP (PIPE_RXP[i]), + .GT_RXN (PIPE_RXN[i]), + + .GT_RXDATA (PIPE_RXDATA[(32*i)+31:(32*i)]), + .GT_RXDATAK (PIPE_RXDATAK[(4*i)+3:(4*i)]), + + //---------- GT Command Ports ---------------------- + .GT_TXDETECTRX (PIPE_TXDETECTRX), + .GT_TXELECIDLE (PIPE_TXELECIDLE[i]), + .GT_TXCOMPLIANCE (PIPE_TXCOMPLIANCE[i]), + .GT_RXPOLARITY (PIPE_RXPOLARITY[i]), + .GT_TXPOWERDOWN (PIPE_POWERDOWN[(2*i)+1:(2*i)]), + .GT_RXPOWERDOWN (PIPE_POWERDOWN[(2*i)+1:(2*i)]), + .GT_TXRATE (rate_rate[(3*i)+2:(3*i)]), + .GT_RXRATE (rate_rate[(3*i)+2:(3*i)]), + + //---------- GT Electrical Command Ports ----------- + .GT_TXMARGIN (PIPE_TXMARGIN), + .GT_TXSWING (PIPE_TXSWING), + .GT_TXDEEMPH (PIPE_TXDEEMPH[i]), + .GT_TXINHIBIT (PIPE_TXINHIBIT[i]), + .GT_TXPRECURSOR (eq_txeq_precursor[(5*i)+4:(5*i)]), + .GT_TXMAINCURSOR (eq_txeq_maincursor[(7*i)+6:(7*i)]), + .GT_TXPOSTCURSOR (eq_txeq_postcursor[(5*i)+4:(5*i)]), + + //---------- GT Status Ports ----------------------- + .GT_RXVALID (gt_rxvalid[i]), + .GT_PHYSTATUS (gt_phystatus[i]), + .GT_RXELECIDLE (gt_rxelecidle[i]), + .GT_RXSTATUS (gt_rxstatus[(3*i)+2:(3*i)]), + .GT_RXBUFSTATUS (gt_rxbufstatus[(3*i)+2:(3*i)]), + .GT_TXRATEDONE (gt_txratedone[i]), + .GT_RXRATEDONE (gt_rxratedone[i]), + .GT_RXDISPERR (gt_rxdisperr[(8*i)+7:(8*i)]), + .GT_RXNOTINTABLE (gt_rxnotintable[(8*i)+7:(8*i)]), + + //---------- GT DRP Ports -------------------------- + .GT_DRPCLK (clk_dclk), + .GT_DRPADDR (drp_mux_addr[(9*i)+8:(9*i)]), + .GT_DRPEN (drp_mux_en[i]), + .GT_DRPDI (drp_mux_di[(16*i)+15:(16*i)]), + .GT_DRPWE (drp_mux_we[i]), + + .GT_DRPDO (gt_do[(16*i)+15:(16*i)]), + .GT_DRPRDY (gt_rdy[i]), + + //---------- GT TX Sync Ports ---------------------- + .GT_TXPHALIGN (sync_txphalign[i]), + .GT_TXPHALIGNEN (sync_txphalignen[i]), + .GT_TXPHINIT (sync_txphinit[i]), + .GT_TXDLYBYPASS (sync_txdlybypass[i]), + .GT_TXDLYSRESET (sync_txdlysreset[i]), + .GT_TXDLYEN (sync_txdlyen[i]), + + .GT_TXDLYSRESETDONE (gt_txdlysresetdone[i]), + .GT_TXPHINITDONE (gt_txphinitdone[i]), + .GT_TXPHALIGNDONE (gt_txphaligndone[i]), + + .GT_TXPHDLYRESET (sync_txphdlyreset[i]), + .GT_TXSYNCMODE (i == 0), // GTH, GTP + .GT_TXSYNCIN (gt_txsyncout[0]), // GTH, GTP + .GT_TXSYNCALLIN (txsyncallin), // GTH, GTP + + .GT_TXSYNCOUT (gt_txsyncout[i]), // GTH, GTP + .GT_TXSYNCDONE (gt_txsyncdone[i]), // GTH, GTP + + //---------- GT RX Sync Ports ---------------------- + .GT_RXPHALIGN (sync_rxphalign[i]), + .GT_RXPHALIGNEN (sync_rxphalignen[i]), + .GT_RXDLYBYPASS (sync_rxdlybypass[i]), + .GT_RXDLYSRESET (sync_rxdlysreset[i]), + .GT_RXDLYEN (sync_rxdlyen[i]), + .GT_RXDDIEN (sync_rxddien[i]), + + .GT_RXDLYSRESETDONE (gt_rxdlysresetdone[i]), + .GT_RXPHALIGNDONE (gt_rxphaligndone[i]), + + .GT_RXSYNCMODE (i == 0), // GTH + .GT_RXSYNCIN (gt_rxsyncout[0]), // GTH + .GT_RXSYNCALLIN (rxsyncallin), // GTH + + .GT_RXSYNCOUT (gt_rxsyncout[i]), // GTH + .GT_RXSYNCDONE (gt_rxsyncdone[i]), // GTH + + //---------- GT Comma Alignment Ports -------------- + .GT_RXSLIDE (PIPE_RXSLIDE[i]), + + .GT_RXCOMMADET (gt_rxcommadet[i]), + .GT_RXCHARISCOMMA (gt_rxchariscomma[(4*i)+3:(4*i)]), + .GT_RXBYTEISALIGNED (gt_rxbyteisaligned[i]), + .GT_RXBYTEREALIGN (gt_rxbyterealign[i]), + + //---------- GT Channel Bonding Ports -------------- + .GT_RXCHANISALIGNED (PIPE_RXCHANISALIGNED[i]), + .GT_RXCHBONDEN (rxchbonden[i]), + .GT_RXCHBONDI (gt_rxchbondi[i]), + .GT_RXCHBONDLEVEL (gt_rxchbondlevel[(3*i)+2:(3*i)]), + .GT_RXCHBONDMASTER (rxchbondmaster[i]), + .GT_RXCHBONDSLAVE (rxchbondslave[i]), + .GT_RXCHBONDO (gt_rxchbondo[i+1]), + + //---------- GT PRBS/Loopback Ports ---------------- + .GT_TXPRBSSEL (PIPE_TXPRBSSEL), + .GT_RXPRBSSEL (PIPE_RXPRBSSEL), + .GT_TXPRBSFORCEERR (PIPE_TXPRBSFORCEERR), + .GT_RXPRBSCNTRESET (PIPE_RXPRBSCNTRESET), + .GT_LOOPBACK (PIPE_LOOPBACK), + + .GT_RXPRBSERR (PIPE_RXPRBSERR[i]), + + //---------- GT Debug Port ------------------------- + .GT_DMONITOROUT (PIPE_DMONITOROUT[(15*i)+14:(15*i)]) + ); + + + + //---------- GT Wrapper Assignments ---------------------------------------- + assign oobclk[i] = (PCIE_OOBCLK_MODE == 1) ? user_oobclk[i] : clk_oobclk; + + //---------- Channel Bonding Master Slave Enable --------------------------- + if (PCIE_CHAN_BOND_EN == "FALSE") + begin : channel_bonding_ms_disable + assign rxchbonden[i] = 1'd0; + assign rxchbondmaster[i] = 1'd0; + assign rxchbondslave[i] = 1'd0; + end + else + begin : channel_bonding_ms_enable + assign rxchbonden[i] = (PCIE_LANE > 1) && (PCIE_CHAN_BOND_EN == "TRUE") ? !rate_gen3[i] : 1'd0; + assign rxchbondmaster[i] = rate_gen3[i] ? 1'd0 : (i == 0); + assign rxchbondslave[i] = rate_gen3[i] ? 1'd0 : (i > 0); + end + + //---------- Channel Bonding Input Connection ------------------------------ + if (PCIE_CHAN_BOND_EN == "FALSE") + begin : channel_bonding_in_disable + assign gt_rxchbondi[i] = 5'd0; + assign gt_rxchbondlevel[(3*i)+2:(3*i)] = 3'd0; + end + else + begin : channel_bonding_in_enable + + //---------- Channel Bonding (2: Binary-Tree) -------------------------- + if (PCIE_CHAN_BOND == 2) + + begin : channel_bonding_a + + case (i) + + //---------- Lane 0 -------------------------------- + 0 : + begin + assign gt_rxchbondi[0] = gt_rxchbondo[0]; + assign gt_rxchbondlevel[2:0] = (PCIE_LANE == 4'd8) ? 3'd4 : + (PCIE_LANE > 4'd5) ? 3'd3 : + (PCIE_LANE > 4'd3) ? 3'd2 : + (PCIE_LANE > 4'd1) ? 3'd1 : 3'd0; + end + //---------- Lane 1 -------------------------------- + 1 : + begin + assign gt_rxchbondi[1] = gt_rxchbondo[1]; + assign gt_rxchbondlevel[5:3] = (PCIE_LANE == 4'd8) ? 3'd3 : + (PCIE_LANE > 4'd5) ? 3'd2 : + (PCIE_LANE > 4'd3) ? 3'd1 : 3'd0; + end + //---------- Lane 2 -------------------------------- + 2 : + begin + assign gt_rxchbondi[2] = gt_rxchbondo[1]; + assign gt_rxchbondlevel[8:6] = (PCIE_LANE == 4'd8) ? 3'd3 : + (PCIE_LANE > 4'd5) ? 3'd2 : + (PCIE_LANE > 4'd3) ? 3'd1 : 3'd0; + end + //---------- Lane 3 -------------------------------- + 3 : + begin + assign gt_rxchbondi[3] = gt_rxchbondo[3]; + assign gt_rxchbondlevel[11:9] = (PCIE_LANE == 4'd8) ? 3'd2 : + (PCIE_LANE > 4'd5) ? 3'd1 : 3'd0; + end + //---------- Lane 4 -------------------------------- + 4 : + begin + assign gt_rxchbondi[4] = gt_rxchbondo[3]; + assign gt_rxchbondlevel[14:12] = (PCIE_LANE == 4'd8) ? 3'd2 : + (PCIE_LANE > 4'd5) ? 3'd1 : 3'd0; + end + //---------- Lane 5 -------------------------------- + 5 : + begin + assign gt_rxchbondi[5] = gt_rxchbondo[5]; + assign gt_rxchbondlevel[17:15] = (PCIE_LANE == 4'd8) ? 3'd1 : 3'd0; + end + //---------- Lane 6 -------------------------------- + 6 : + begin + assign gt_rxchbondi[6] = gt_rxchbondo[5]; + assign gt_rxchbondlevel[20:18] = (PCIE_LANE == 4'd8) ? 3'd1 : 3'd0; + end + //---------- Lane 7 -------------------------------- + 7 : + begin + assign gt_rxchbondi[7] = gt_rxchbondo[7]; + assign gt_rxchbondlevel[23:21] = 3'd0; + end + //---------- Default ------------------------------- + default : + begin + assign gt_rxchbondi[i] = gt_rxchbondo[7]; + assign gt_rxchbondlevel[(3*i)+2:(3*i)] = 3'd0; + end + + endcase + + end + + //---------- Channel Bonding (0: One-Hop, 1: Daisy Chain) -------------- + else + + begin : channel_bonding_b + assign gt_rxchbondi[i] = (PCIE_CHAN_BOND == 1) ? gt_rxchbondo[i] : ((i == 0) ? gt_rxchbondo[0] : gt_rxchbondo[1]); + assign gt_rxchbondlevel[(3*i)+2:(3*i)] = (PCIE_CHAN_BOND == 1) ? (PCIE_LANE-1)-i : ((PCIE_LANE > 1) && (i == 0)); + end + + end + + end + +endgenerate + + + +//---------- PIPE Wrapper Output ----------------------------------------------- +assign PIPE_TXEQ_FS = 0;//TXEQ_FS; +assign PIPE_TXEQ_LF = 0;//TXEQ_LF; +assign PIPE_RXELECIDLE = gt_rxelecidle; +assign PIPE_RXSTATUS = gt_rxstatus; + +assign PIPE_RXDISPERR = gt_rxdisperr; +assign PIPE_RXNOTINTABLE = gt_rxnotintable; +assign PIPE_RXPMARESETDONE = gt_rxpmaresetdone; +assign PIPE_RXBUFSTATUS = gt_rxbufstatus; +assign PIPE_TXPHALIGNDONE = gt_txphaligndone; +assign PIPE_TXPHINITDONE = gt_txphinitdone; +assign PIPE_TXDLYSRESETDONE = gt_txdlysresetdone; +assign PIPE_RXPHALIGNDONE = gt_rxphaligndone; +assign PIPE_RXDLYSRESETDONE = gt_rxdlysresetdone; +assign PIPE_RXSYNCDONE = gt_rxsyncdone; +assign PIPE_RXCOMMADET = gt_rxcommadet; +assign PIPE_QPLL_LOCK = qpll_qplllock; +assign PIPE_CPLL_LOCK = gt_cplllock; + +assign PIPE_PCLK = clk_pclk; +assign PIPE_PCLK_LOCK = clk_mmcm_lock; +assign PIPE_RXCDRLOCK = 0;//user_rxcdrlock; +assign PIPE_RXUSRCLK = 0;//clk_rxusrclk; +assign PIPE_RXOUTCLK = 0;//clk_rxoutclk; +assign PIPE_TXSYNC_DONE = 0;//sync_txsync_done; +assign PIPE_RXSYNC_DONE = 0;//sync_rxsync_done; +assign PIPE_ACTIVE_LANE = 0;//user_active_lane; + +assign PIPE_TXOUTCLK_OUT = gt_txoutclk[0]; +assign PIPE_RXOUTCLK_OUT = gt_rxoutclk; +assign PIPE_PCLK_SEL_OUT = rate_pclk_sel; +assign PIPE_GEN3_OUT = rate_gen3[0]; + +assign PIPE_RXEQ_CONVERGE = user_rx_converge; +assign PIPE_RXEQ_ADAPT_DONE = (PCIE_GT_DEVICE == "GTP") ? {PCIE_LANE{1'd0}} : eq_rxeq_adapt_done; + +assign PIPE_EYESCANDATAERROR = gt_eyescandataerror; +assign PIPE_RST_FSM = rst_fsm; +assign PIPE_QRST_FSM = qrst_fsm; +assign PIPE_RATE_FSM = rate_fsm; +assign PIPE_SYNC_FSM_TX = sync_fsm_tx; +assign PIPE_SYNC_FSM_RX = sync_fsm_rx; +assign PIPE_DRP_FSM = drp_fsm; +assign PIPE_QDRP_FSM = 0;//qdrp_fsm; + +assign PIPE_RST_IDLE = &rst_idle; +assign PIPE_QRST_IDLE = &qrst_idle; +assign PIPE_RATE_IDLE = &rate_idle; + +assign EXT_CH_GT_DRPDO = gt_do[(PCIE_LANE*16)-1:0]; +assign EXT_CH_GT_DRPRDY = gt_rdy[(PCIE_LANE-1):0]; +assign EXT_CH_GT_DRPCLK = clk_dclk; + +assign PIPE_DEBUG_0 = (PCIE_DEBUG_MODE == 1) ? gt_txresetdone : {PCIE_LANE{1'b0}}; +assign PIPE_DEBUG_1 = (PCIE_DEBUG_MODE == 1) ? gt_rxresetdone : {PCIE_LANE{1'b0}}; +assign PIPE_DEBUG_2 = (PCIE_DEBUG_MODE == 1) ? gt_phystatus : {PCIE_LANE{1'b0}}; +assign PIPE_DEBUG_3 = (PCIE_DEBUG_MODE == 1) ? gt_rxvalid : {PCIE_LANE{1'b0}}; +assign PIPE_DEBUG_4 = (PCIE_DEBUG_MODE == 1) ? clk_dclk : {PCIE_LANE{1'b0}}; +assign PIPE_DEBUG_5 = (PCIE_DEBUG_MODE == 1) ? drp_mux_en : {PCIE_LANE{1'b0}}; +assign PIPE_DEBUG_6 = (PCIE_DEBUG_MODE == 1) ? drp_mux_we : {PCIE_LANE{1'b0}}; +assign PIPE_DEBUG_7 = (PCIE_DEBUG_MODE == 1) ? gt_rdy : {PCIE_LANE{1'b0}}; +assign PIPE_DEBUG_8 = (PCIE_DEBUG_MODE == 1) ? user_rx_converge : {PCIE_LANE{1'b0}}; +assign PIPE_DEBUG_9 = (PCIE_DEBUG_MODE == 1) ? PIPE_TXELECIDLE : {PCIE_LANE{1'b0}}; + +assign PIPE_DEBUG[ 1:0] = (PCIE_DEBUG_MODE == 1) ? PIPE_TXEQ_CONTROL[1:0] : 2'd0; +assign PIPE_DEBUG[ 5:2] = (PCIE_DEBUG_MODE == 1) ? PIPE_TXEQ_PRESET[3:0] : 4'd0; +assign PIPE_DEBUG[31:6] = 26'd0; + + + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_qpll_drp.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_qpll_drp.v new file mode 100644 index 0000000..c5bc9c9 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_qpll_drp.v @@ -0,0 +1,550 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_qpll_drp.v +// Version : 3.3 +//------------------------------------------------------------------------------ +// Filename : qpll_drp.v +// Description : QPLL DRP Module for 7 Series Transceiver +// Version : 18.2 +//------------------------------------------------------------------------------ + + + +`timescale 1ns / 1ps + + + +//---------- QPLL DRP Module --------------------------------------------------- +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_qpll_drp # +( + + parameter PCIE_GT_DEVICE = "GTX", // PCIe GT device + parameter PCIE_USE_MODE = "3.0", // PCIe use mode + parameter PCIE_PLL_SEL = "CPLL", // PCIe PLL select for Gen1/Gen2 only + parameter PCIE_REFCLK_FREQ = 0, // PCIe reference clock frequency + parameter LOAD_CNT_MAX = 2'd3, // Load max count + parameter INDEX_MAX = 3'd6 // Index max count + +) + +( + + //---------- Input ------------------------------------- + input DRP_CLK, + input DRP_RST_N, + input DRP_OVRD, + input DRP_GEN3, + input DRP_QPLLLOCK, + input DRP_START, + input [15:0] DRP_DO, + input DRP_RDY, + + //---------- Output ------------------------------------ + output [ 7:0] DRP_ADDR, + output DRP_EN, + output [15:0] DRP_DI, + output DRP_WE, + output DRP_DONE, + output DRP_QPLLRESET, + output [ 5:0] DRP_CRSCODE, + output [ 8:0] DRP_FSM + +); + + //---------- Input Registers --------------------------- +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg ovrd_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg gen3_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg qplllock_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg start_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [15:0] do_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rdy_reg1; + +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg ovrd_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg gen3_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg qplllock_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg start_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [15:0] do_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg rdy_reg2; + + //---------- Internal Signals -------------------------- + reg [ 1:0] load_cnt = 2'd0; + reg [ 2:0] index = 3'd0; + reg mode = 1'd0; + reg [ 5:0] crscode = 6'd0; + + //---------- Output Registers -------------------------- + reg [ 7:0] addr = 8'd0; + reg [15:0] di = 16'd0; + reg done = 1'd0; + reg [ 8:0] fsm = 7'd1; + + //---------- DRP Address ------------------------------- + localparam ADDR_QPLL_FBDIV = 8'h36; + localparam ADDR_QPLL_CFG = 8'h32; + localparam ADDR_QPLL_LPF = 8'h31; + localparam ADDR_CRSCODE = 8'h88; + localparam ADDR_QPLL_COARSE_FREQ_OVRD = 8'h35; + localparam ADDR_QPLL_COARSE_FREQ_OVRD_EN = 8'h36; + localparam ADDR_QPLL_LOCK_CFG = 8'h34; + + //---------- DRP Mask ---------------------------------- + localparam MASK_QPLL_FBDIV = 16'b1111110000000000; // Unmask bit [ 9: 0] + localparam MASK_QPLL_CFG = 16'b1111111110111111; // Unmask bit [ 6] + localparam MASK_QPLL_LPF = 16'b1000011111111111; // Unmask bit [14:11] + localparam MASK_QPLL_COARSE_FREQ_OVRD = 16'b0000001111111111; // Unmask bit [15:10] + localparam MASK_QPLL_COARSE_FREQ_OVRD_EN = 16'b1111011111111111; // Unmask bit [ 11] + localparam MASK_QPLL_LOCK_CFG = 16'b1110011111111111; // Unmask bit [12:11] + + //---------- DRP Data for Normal QPLLLOCK Mode --------- + localparam NORM_QPLL_COARSE_FREQ_OVRD = 16'b0000000000000000; // Coarse freq value + localparam NORM_QPLL_COARSE_FREQ_OVRD_EN = 16'b0000000000000000; // Normal QPLL lock + localparam NORM_QPLL_LOCK_CFG = 16'b0000000000000000; // Normal QPLL lock config + + //---------- DRP Data for Optimize QPLLLOCK Mode ------- + localparam OVRD_QPLL_COARSE_FREQ_OVRD = 16'b0000000000000000; // Coarse freq value + localparam OVRD_QPLL_COARSE_FREQ_OVRD_EN = 16'b0000100000000000; // Override QPLL lock + localparam OVRD_QPLL_LOCK_CFG = 16'b0000000000000000; // Override QPLL lock config + + //---------- Select QPLL Feedback Divider -------------- + // N = 100 for 100 MHz ref clk and 10Gb/s line rate + // N = 80 for 125 MHz ref clk and 10Gb/s line rate + // N = 40 for 250 MHz ref clk and 10Gb/s line rate + //------------------------------------------------------ + // N = 80 for 100 MHz ref clk and 8Gb/s line rate + // N = 64 for 125 MHz ref clk and 8Gb/s line rate + // N = 32 for 250 MHz ref clk and 8Gb/s line rate + //------------------------------------------------------ + localparam QPLL_FBDIV = (PCIE_REFCLK_FREQ == 2) && (PCIE_PLL_SEL == "QPLL") ? 16'b0000000010000000 : + (PCIE_REFCLK_FREQ == 1) && (PCIE_PLL_SEL == "QPLL") ? 16'b0000000100100000 : + (PCIE_REFCLK_FREQ == 0) && (PCIE_PLL_SEL == "QPLL") ? 16'b0000000101110000 : + (PCIE_REFCLK_FREQ == 2) && (PCIE_PLL_SEL == "CPLL") ? 16'b0000000001100000 : + (PCIE_REFCLK_FREQ == 1) && (PCIE_PLL_SEL == "CPLL") ? 16'b0000000011100000 : 16'b0000000100100000; + + localparam GEN12_QPLL_FBDIV = (PCIE_REFCLK_FREQ == 2) ? 16'b0000000010000000 : + (PCIE_REFCLK_FREQ == 1) ? 16'b0000000100100000 : 16'b0000000101110000; + + localparam GEN3_QPLL_FBDIV = (PCIE_REFCLK_FREQ == 2) ? 16'b0000000001100000 : + (PCIE_REFCLK_FREQ == 1) ? 16'b0000000011100000 : 16'b0000000100100000; + + //---------- Select QPLL Configuration --------------------------- + // QPLL_CFG[6] = 0 for upper band + // = 1 for lower band + //---------------------------------------------------------------- + localparam GEN12_QPLL_CFG = (PCIE_PLL_SEL == "QPLL") ? 16'b0000000000000000 : 16'b0000000001000000; + localparam GEN3_QPLL_CFG = 16'b0000000001000000; + + //---------- Select QPLL LPF ------------------------------------- + localparam GEN12_QPLL_LPF = (PCIE_PLL_SEL == "QPLL") ? 16'b0_0100_00000000000 : 16'b0_1101_00000000000; + localparam GEN3_QPLL_LPF = 16'b0_1101_00000000000; + + + + //---------- DRP Data ---------------------------------- + wire [15:0] data_qpll_fbdiv; + wire [15:0] data_qpll_cfg; + wire [15:0] data_qpll_lpf; + wire [15:0] data_qpll_coarse_freq_ovrd; + wire [15:0] data_qpll_coarse_freq_ovrd_en; + wire [15:0] data_qpll_lock_cfg; + + //---------- FSM --------------------------------------- + localparam FSM_IDLE = 9'b000000001; + localparam FSM_LOAD = 9'b000000010; + localparam FSM_READ = 9'b000000100; + localparam FSM_RRDY = 9'b000001000; + localparam FSM_WRITE = 9'b000010000; + localparam FSM_WRDY = 9'b000100000; + localparam FSM_DONE = 9'b001000000; + localparam FSM_QPLLRESET = 9'b010000000; + localparam FSM_QPLLLOCK = 9'b100000000; + + + +//---------- Input FF ---------------------------------------------------------- +always @ (posedge DRP_CLK) +begin + + if (!DRP_RST_N) + begin + //---------- 1st Stage FF -------------------------- + ovrd_reg1 <= 1'd0; + gen3_reg1 <= 1'd0; + qplllock_reg1 <= 1'd0; + start_reg1 <= 1'd0; + do_reg1 <= 16'd0; + rdy_reg1 <= 1'd0; + //---------- 2nd Stage FF -------------------------- + ovrd_reg2 <= 1'd0; + gen3_reg2 <= 1'd0; + qplllock_reg2 <= 1'd0; + start_reg2 <= 1'd0; + do_reg2 <= 16'd0; + rdy_reg2 <= 1'd0; + end + + else + begin + //---------- 1st Stage FF -------------------------- + ovrd_reg1 <= DRP_OVRD; + gen3_reg1 <= DRP_GEN3; + qplllock_reg1 <= DRP_QPLLLOCK; + start_reg1 <= DRP_START; + do_reg1 <= DRP_DO; + rdy_reg1 <= DRP_RDY; + //---------- 2nd Stage FF -------------------------- + ovrd_reg2 <= ovrd_reg1; + gen3_reg2 <= gen3_reg1; + qplllock_reg2 <= qplllock_reg1; + start_reg2 <= start_reg1; + do_reg2 <= do_reg1; + rdy_reg2 <= rdy_reg1; + end + +end + + + +//---------- Select DRP Data --------------------------------------------------- +assign data_qpll_fbdiv = (gen3_reg2) ? GEN3_QPLL_FBDIV : GEN12_QPLL_FBDIV; +assign data_qpll_cfg = (gen3_reg2) ? GEN3_QPLL_CFG : GEN12_QPLL_CFG; +assign data_qpll_lpf = (gen3_reg2) ? GEN3_QPLL_LPF : GEN12_QPLL_LPF; +assign data_qpll_coarse_freq_ovrd = NORM_QPLL_COARSE_FREQ_OVRD; +assign data_qpll_coarse_freq_ovrd_en = (ovrd_reg2) ? OVRD_QPLL_COARSE_FREQ_OVRD_EN : NORM_QPLL_COARSE_FREQ_OVRD_EN; +assign data_qpll_lock_cfg = (ovrd_reg2) ? OVRD_QPLL_LOCK_CFG : NORM_QPLL_LOCK_CFG; + + +//---------- Load Counter ------------------------------------------------------ +always @ (posedge DRP_CLK) +begin + + if (!DRP_RST_N) + load_cnt <= 2'd0; + else + + //---------- Increment Load Counter ---------------- + if ((fsm == FSM_LOAD) && (load_cnt < LOAD_CNT_MAX)) + load_cnt <= load_cnt + 2'd1; + + //---------- Hold Load Counter --------------------- + else if ((fsm == FSM_LOAD) && (load_cnt == LOAD_CNT_MAX)) + load_cnt <= load_cnt; + + //---------- Reset Load Counter -------------------- + else + load_cnt <= 2'd0; + +end + + + +//---------- Update DRP Address and Data --------------------------------------- +always @ (posedge DRP_CLK) +begin + + if (!DRP_RST_N) + begin + addr <= 8'd0; + di <= 16'd0; + crscode <= 6'd0; + end + else + begin + + case (index) + + //-------------------------------------------------- + 3'd0 : + begin + addr <= ADDR_QPLL_FBDIV; + di <= (do_reg2 & MASK_QPLL_FBDIV) | (mode ? data_qpll_fbdiv : QPLL_FBDIV); + crscode <= crscode; + end + + //-------------------------------------------------- + 3'd1 : + begin + addr <= ADDR_QPLL_CFG; + if (PCIE_GT_DEVICE == "GTX") + di <= (do_reg2 & MASK_QPLL_CFG) | data_qpll_cfg; + else + di <= (do_reg2 & 16'hFFFF) | data_qpll_cfg; + crscode <= crscode; + end + + //-------------------------------------------------- + 3'd2 : + begin + addr <= ADDR_QPLL_LPF; + if (PCIE_GT_DEVICE == "GTX") + di <= (do_reg2 & MASK_QPLL_LPF) | data_qpll_lpf; + else + di <= (do_reg2 & 16'hFFFF) | data_qpll_lpf; + crscode <= crscode; + end + + //-------------------------------------------------- + 3'd3 : + begin + addr <= ADDR_CRSCODE; + di <= do_reg2; + + //---------- Latch CRS Code -------------------- + if (ovrd_reg2) + crscode <= do_reg2[6:1]; + else + crscode <= crscode; + end + + //-------------------------------------------------- + 3'd4 : + begin + addr <= ADDR_QPLL_COARSE_FREQ_OVRD; + di <= (do_reg2 & MASK_QPLL_COARSE_FREQ_OVRD) | {(crscode - 6'd1), data_qpll_coarse_freq_ovrd[9:0]}; + crscode <= crscode; + end + + //-------------------------------------------------- + 3'd5 : + begin + addr <= ADDR_QPLL_COARSE_FREQ_OVRD_EN; + di <= (do_reg2 & MASK_QPLL_COARSE_FREQ_OVRD_EN) | data_qpll_coarse_freq_ovrd_en; + crscode <= crscode; + end + + //-------------------------------------------------- + 3'd6 : + begin + addr <= ADDR_QPLL_LOCK_CFG; + di <= (do_reg2 & MASK_QPLL_LOCK_CFG) | data_qpll_lock_cfg; + crscode <= crscode; + end + + //-------------------------------------------------- + default : + begin + addr <= 8'd0; + di <= 16'd0; + crscode <= 6'd0; + end + + endcase + + end + +end + + + +//---------- QPLL DRP FSM ------------------------------------------------------ +always @ (posedge DRP_CLK) +begin + + if (!DRP_RST_N) + begin + fsm <= FSM_IDLE; + index <= 3'd0; + mode <= 1'd0; + done <= 1'd0; + end + else + begin + + case (fsm) + + //---------- Idle State ---------------------------- + FSM_IDLE : + + begin + if (start_reg2) + begin + fsm <= FSM_LOAD; + index <= 3'd0; + mode <= 1'd0; + done <= 1'd0; + end + else if ((gen3_reg2 != gen3_reg1) && (PCIE_PLL_SEL == "QPLL")) + begin + fsm <= FSM_LOAD; + index <= 3'd0; + mode <= 1'd1; + done <= 1'd0; + end + else + begin + fsm <= FSM_IDLE; + index <= 3'd0; + mode <= 1'd0; + done <= 1'd1; + end + end + + //---------- Load DRP Address --------------------- + FSM_LOAD : + + begin + fsm <= (load_cnt == LOAD_CNT_MAX) ? FSM_READ : FSM_LOAD; + index <= index; + mode <= mode; + done <= 1'd0; + end + + //---------- Read DRP ------------------------------ + FSM_READ : + + begin + fsm <= FSM_RRDY; + index <= index; + mode <= mode; + done <= 1'd0; + end + + //---------- Read DRP Ready ------------------------ + FSM_RRDY : + + begin + fsm <= (rdy_reg2 ? FSM_WRITE : FSM_RRDY); + index <= index; + mode <= mode; + done <= 1'd0; + end + + //---------- Write DRP ----------------------------- + FSM_WRITE : + + begin + fsm <= FSM_WRDY; + index <= index; + mode <= mode; + done <= 1'd0; + end + + //---------- Write DRP Ready ----------------------- + FSM_WRDY : + + begin + fsm <= (rdy_reg2 ? FSM_DONE : FSM_WRDY); + index <= index; + mode <= mode; + done <= 1'd0; + end + + //---------- DRP Done ------------------------------ + FSM_DONE : + + begin + if ((index == INDEX_MAX) || (mode && (index == 3'd2))) + begin + fsm <= mode ? FSM_QPLLRESET : FSM_IDLE; + index <= 3'd0; + mode <= mode; + done <= 1'd0; + end + else + begin + fsm <= FSM_LOAD; + index <= index + 3'd1; + mode <= mode; + done <= 1'd0; + end + end + + //---------- QPLL Reset ---------------------------- + FSM_QPLLRESET : + + begin + fsm <= !qplllock_reg2 ? FSM_QPLLLOCK : FSM_QPLLRESET; + index <= 3'd0; + mode <= mode; + done <= 1'd0; + end + + //---------- QPLL Reset ---------------------------- + FSM_QPLLLOCK : + + begin + fsm <= qplllock_reg2 ? FSM_IDLE : FSM_QPLLLOCK; + index <= 3'd0; + mode <= mode; + done <= 1'd0; + end + + //---------- Default State ------------------------- + default : + + begin + fsm <= FSM_IDLE; + index <= 3'd0; + mode <= 1'd0; + done <= 1'd0; + end + + endcase + + end + +end + + + +//---------- QPLL DRP Output --------------------------------------------------- +assign DRP_ADDR = addr; +assign DRP_EN = (fsm == FSM_READ) || (fsm == FSM_WRITE); +assign DRP_DI = di; +assign DRP_WE = (fsm == FSM_WRITE); // || (fsm == FSM_WRDY); +assign DRP_DONE = done; +assign DRP_QPLLRESET = (fsm == FSM_QPLLRESET); +assign DRP_CRSCODE = crscode; +assign DRP_FSM = fsm; + + + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_qpll_reset.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_qpll_reset.v new file mode 100644 index 0000000..329f953 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_qpll_reset.v @@ -0,0 +1,370 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_qpll_reset.v +// Version : 3.3 +//------------------------------------------------------------------------------ +// Filename : qpll_reset.v +// Description : QPLL Reset Module for 7 Series Transceiver +// Version : 11.4 +//------------------------------------------------------------------------------ + + +`timescale 1ns / 1ps + + + +//---------- QPLL Reset Module -------------------------------------------------- +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_qpll_reset # +( + + //---------- Global ------------------------------------ + parameter PCIE_PLL_SEL = "CPLL", // PCIe PLL select for Gen1/Gen2 only + parameter PCIE_POWER_SAVING = "TRUE", // PCIe power saving + parameter PCIE_LANE = 1, // PCIe number of lanes + parameter BYPASS_COARSE_OVRD = 1 // Bypass coarse frequency override + +) + +( + + //---------- Input ------------------------------------- + input QRST_CLK, + input QRST_RST_N, + input QRST_MMCM_LOCK, + input [PCIE_LANE-1:0] QRST_CPLLLOCK, + input [(PCIE_LANE-1)>>2:0]QRST_DRP_DONE, + input [(PCIE_LANE-1)>>2:0]QRST_QPLLLOCK, + input [ 1:0] QRST_RATE, + input [PCIE_LANE-1:0] QRST_QPLLRESET_IN, + input [PCIE_LANE-1:0] QRST_QPLLPD_IN, + + //---------- Output ------------------------------------ + output QRST_OVRD, + output QRST_DRP_START, + output QRST_QPLLRESET_OUT, + output QRST_QPLLPD_OUT, + output QRST_IDLE, + output [3:0] QRST_FSM + +); + + //---------- Input Register ---------------------------- +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg mmcm_lock_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] cplllock_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [(PCIE_LANE-1)>>2:0]drp_done_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [(PCIE_LANE-1)>>2:0]qplllock_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 1:0] rate_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] qpllreset_in_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] qpllpd_in_reg1; + +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg mmcm_lock_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] cplllock_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [(PCIE_LANE-1)>>2:0]drp_done_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [(PCIE_LANE-1)>>2:0]qplllock_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 1:0] rate_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] qpllreset_in_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] qpllpd_in_reg2; + + //---------- Output Register -------------------------- + reg ovrd = 1'd0; + reg qpllreset = 1'd1; + reg qpllpd = 1'd0; + reg [3:0] fsm = 2; + + //---------- FSM --------------------------------------- + localparam FSM_IDLE = 1;//12'b000000000001; + localparam FSM_WAIT_LOCK = 2;//12'b000000000010; + localparam FSM_MMCM_LOCK = 3;//12'b000000000100; + localparam FSM_DRP_START_NOM = 4;//12'b000000001000; + localparam FSM_DRP_DONE_NOM = 5;//12'b000000010000; + localparam FSM_QPLLLOCK = 6;//12'b000000100000; + localparam FSM_DRP_START_OPT = 7;//12'b000001000000; + localparam FSM_DRP_DONE_OPT = 8;//12'b000010000000; + localparam FSM_QPLL_RESET = 9;//12'b000100000000; + localparam FSM_QPLLLOCK2 = 10;//12'b001000000000; + localparam FSM_QPLL_PDRESET = 11;//12'b010000000000; + localparam FSM_QPLL_PD = 12;//12'b100000000000; + + + +//---------- Input FF ---------------------------------------------------------- +always @ (posedge QRST_CLK) +begin + + if (!QRST_RST_N) + begin + //---------- 1st Stage FF -------------------------- + mmcm_lock_reg1 <= 1'd0; + cplllock_reg1 <= {PCIE_LANE{1'd1}}; + drp_done_reg1 <= {(((PCIE_LANE-1)>>2)+1){1'd0}}; + qplllock_reg1 <= {(((PCIE_LANE-1)>>2)+1){1'd0}}; + rate_reg1 <= 2'd0; + qpllreset_in_reg1 <= {PCIE_LANE{1'd1}}; + qpllpd_in_reg1 <= {PCIE_LANE{1'd0}}; + //---------- 2nd Stage FF -------------------------- + mmcm_lock_reg2 <= 1'd0; + cplllock_reg2 <= {PCIE_LANE{1'd1}}; + drp_done_reg2 <= {(((PCIE_LANE-1)>>2)+1){1'd0}}; + qplllock_reg2 <= {(((PCIE_LANE-1)>>2)+1){1'd0}}; + rate_reg2 <= 2'd0; + qpllreset_in_reg2 <= {PCIE_LANE{1'd1}}; + qpllpd_in_reg2 <= {PCIE_LANE{1'd0}}; + end + else + begin + //---------- 1st Stage FF -------------------------- + mmcm_lock_reg1 <= QRST_MMCM_LOCK; + cplllock_reg1 <= QRST_CPLLLOCK; + drp_done_reg1 <= QRST_DRP_DONE; + qplllock_reg1 <= QRST_QPLLLOCK; + rate_reg1 <= QRST_RATE; + qpllreset_in_reg1 <= QRST_QPLLRESET_IN; + qpllpd_in_reg1 <= QRST_QPLLPD_IN; + //---------- 2nd Stage FF -------------------------- + mmcm_lock_reg2 <= mmcm_lock_reg1; + cplllock_reg2 <= cplllock_reg1; + drp_done_reg2 <= drp_done_reg1; + qplllock_reg2 <= qplllock_reg1; + rate_reg2 <= rate_reg1; + qpllreset_in_reg2 <= qpllreset_in_reg1; + qpllpd_in_reg2 <= qpllpd_in_reg1; + end + +end + + + +//---------- QPLL Reset FSM ---------------------------------------------------- +always @ (posedge QRST_CLK) +begin + + if (!QRST_RST_N) + begin + fsm <= FSM_WAIT_LOCK; + ovrd <= 1'd0; + qpllreset <= 1'd1; + qpllpd <= 1'd0; + end + else + begin + + case (fsm) + + //---------- Idle State ---------------------------- + FSM_IDLE : + + begin + if (!QRST_RST_N) + begin + fsm <= FSM_WAIT_LOCK; + ovrd <= 1'd0; + qpllreset <= 1'd1; + qpllpd <= 1'd0; + end + else + begin + fsm <= FSM_IDLE; + ovrd <= ovrd; + qpllreset <= &qpllreset_in_reg2; + qpllpd <= &qpllpd_in_reg2; + end + end + + //---------- Wait for CPLL and QPLL to Lose Lock --- + FSM_WAIT_LOCK : + + begin + fsm <= ((&(~cplllock_reg2)) && (&(~qplllock_reg2)) ? FSM_MMCM_LOCK : FSM_WAIT_LOCK); + ovrd <= ovrd; + qpllreset <= qpllreset; + qpllpd <= qpllpd; + end + + //---------- Wait for MMCM and CPLL Lock ----------- + FSM_MMCM_LOCK : + + begin + fsm <= ((mmcm_lock_reg2 && (&cplllock_reg2)) ? FSM_DRP_START_NOM : FSM_MMCM_LOCK); + ovrd <= ovrd; + qpllreset <= qpllreset; + qpllpd <= qpllpd; + end + + //---------- Start QPLL DRP for Normal QPLL Lock Mode + FSM_DRP_START_NOM: + + begin + fsm <= (&(~drp_done_reg2) ? FSM_DRP_DONE_NOM : FSM_DRP_START_NOM); + ovrd <= ovrd; + qpllreset <= qpllreset; + qpllpd <= qpllpd; + end + + //---------- Wait for QPLL DRP Done ---------------- + FSM_DRP_DONE_NOM : + + begin + fsm <= (&drp_done_reg2 ? FSM_QPLLLOCK : FSM_DRP_DONE_NOM); + ovrd <= ovrd; + qpllreset <= qpllreset; + qpllpd <= qpllpd; + end + + //---------- Wait for QPLL Lock -------------------- + FSM_QPLLLOCK : + + begin + fsm <= (&qplllock_reg2 ? ((BYPASS_COARSE_OVRD == 1) ? FSM_QPLL_PDRESET : FSM_DRP_START_OPT) : FSM_QPLLLOCK); + ovrd <= ovrd; + qpllreset <= 1'd0; + qpllpd <= qpllpd; + end + + //---------- Start QPLL DRP for Optimized QPLL Lock Mode + FSM_DRP_START_OPT: + + begin + fsm <= (&(~drp_done_reg2) ? FSM_DRP_DONE_OPT : FSM_DRP_START_OPT); + ovrd <= 1'd1; + qpllreset <= qpllreset; + qpllpd <= qpllpd; + end + + //---------- Wait for QPLL DRP Done ---------------- + FSM_DRP_DONE_OPT : + + begin + if (&drp_done_reg2) + begin + fsm <= ((PCIE_PLL_SEL == "QPLL") ? FSM_QPLL_RESET : FSM_QPLL_PDRESET); + ovrd <= ovrd; + qpllreset <= (PCIE_PLL_SEL == "QPLL"); + qpllpd <= qpllpd; + end + else + begin + fsm <= FSM_DRP_DONE_OPT; + ovrd <= ovrd; + qpllreset <= qpllreset; + qpllpd <= qpllpd; + end + end + + //---------- Reset QPLL ---------------------------- + FSM_QPLL_RESET : + + begin + fsm <= (&(~qplllock_reg2) ? FSM_QPLLLOCK2 : FSM_QPLL_RESET); + ovrd <= ovrd; + qpllreset <= 1'd1; + qpllpd <= 1'd0; + end + + //---------- Wait for QPLL Lock -------------------- + FSM_QPLLLOCK2 : + + begin + fsm <= (&qplllock_reg2 ? FSM_IDLE : FSM_QPLLLOCK2); + ovrd <= ovrd; + qpllreset <= 1'd0; + qpllpd <= 1'd0; + end + + //---------- Hold QPLL in Reset -------------------- + FSM_QPLL_PDRESET : + + begin + fsm <= FSM_QPLL_PD; + ovrd <= ovrd; + qpllreset <= (PCIE_PLL_SEL == "CPLL") ? (rate_reg2 != 2'd2) : 1'd0; + qpllpd <= qpllpd; + end + + //---------- Power-down QPLL ----------------------- + FSM_QPLL_PD : + + begin + fsm <= FSM_IDLE; + ovrd <= ovrd; + qpllreset <= qpllreset; + qpllpd <= (PCIE_PLL_SEL == "CPLL") ? (rate_reg2 != 2'd2) : 1'd0; + end + + //---------- Default State ------------------------- + default : + + begin + fsm <= FSM_WAIT_LOCK; + ovrd <= 1'd0; + qpllreset <= 1'd0; + qpllpd <= 1'd0; + end + + endcase + + end + +end + + + +//---------- QPLL Lock Output -------------------------------------------------- +assign QRST_OVRD = ovrd; +assign QRST_DRP_START = (fsm == FSM_DRP_START_NOM) || (fsm == FSM_DRP_START_OPT); +assign QRST_QPLLRESET_OUT = qpllreset; +assign QRST_QPLLPD_OUT = ((PCIE_POWER_SAVING == "FALSE") ? 1'd0 : qpllpd); +assign QRST_IDLE = (fsm == FSM_IDLE); +assign QRST_FSM = fsm; + + + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_qpll_wrapper.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_qpll_wrapper.v new file mode 100644 index 0000000..ef5649d --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_qpll_wrapper.v @@ -0,0 +1,439 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_qpll_wrapper.v +// Version : 3.3 +//------------------------------------------------------------------------------ +// Filename : qpll_wrapper.v +// Description : QPLL Wrapper Module for 7 Series Transceiver +// Version : 18.1 +//------------------------------------------------------------------------------ + + + +`timescale 1ns / 1ps + + + +//---------- QPLL Wrapper ---------------------------------------------------- +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_qpll_wrapper # +( + + parameter PCIE_SIM_MODE = "FALSE", // PCIe sim mode + parameter PCIE_GT_DEVICE = "GTX", // PCIe GT device + parameter PCIE_USE_MODE = "3.0", // PCIe use mode + parameter PCIE_PLL_SEL = "CPLL", // PCIe PLL select for Gen1/Gen2 only + parameter PCIE_REFCLK_FREQ = 0 // PCIe reference clock frequency + +) + +( + + //---------- QPLL Clock Ports -------------------------- + input QPLL_CPLLPDREFCLK, + input QPLL_GTGREFCLK, + input QPLL_QPLLLOCKDETCLK, + + output QPLL_QPLLOUTCLK, + output QPLL_QPLLOUTREFCLK, + output QPLL_QPLLLOCK, + + //---------- QPLL Reset Ports -------------------------- + input QPLL_QPLLPD, + input QPLL_QPLLRESET, + + //---------- QPLL DRP Ports ---------------------------- + input QPLL_DRPCLK, + input [ 7:0] QPLL_DRPADDR, + input QPLL_DRPEN, + input [15:0] QPLL_DRPDI, + input QPLL_DRPWE, + + output [15:0] QPLL_DRPDO, + output QPLL_DRPRDY + +); + + + + //---------- Select QPLL Feedback Divider -------------- + // N = 100 for 100 MHz ref clk and 10Gb/s line rate + // N = 80 for 125 MHz ref clk and 10Gb/s line rate + // N = 40 for 250 MHz ref clk and 10Gb/s line rate + //------------------------------------------------------ + // N = 80 for 100 MHz ref clk and 8Gb/s line rate + // N = 64 for 125 MHz ref clk and 8Gb/s line rate + // N = 32 for 250 MHz ref clk and 8Gb/s line rate + //------------------------------------------------------ + localparam QPLL_FBDIV = (PCIE_REFCLK_FREQ == 2) && (PCIE_PLL_SEL == "QPLL") ? 10'b0010000000 : + (PCIE_REFCLK_FREQ == 1) && (PCIE_PLL_SEL == "QPLL") ? 10'b0100100000 : + (PCIE_REFCLK_FREQ == 0) && (PCIE_PLL_SEL == "QPLL") ? 10'b0101110000 : + (PCIE_REFCLK_FREQ == 2) && (PCIE_PLL_SEL == "CPLL") ? 10'b0001100000 : + (PCIE_REFCLK_FREQ == 1) && (PCIE_PLL_SEL == "CPLL") ? 10'b0011100000 : 10'b0100100000; + + //---------- Select GTP QPLL Feedback Divider ---------- + localparam GTP_QPLL_FBDIV = (PCIE_REFCLK_FREQ == 2) ? 3'd2 : + (PCIE_REFCLK_FREQ == 1) ? 3'd4 : 3'd5; + + //---------- Select BIAS_CFG --------------------------- + localparam BIAS_CFG = ((PCIE_USE_MODE == "1.0") && (PCIE_PLL_SEL == "CPLL")) ? 64'h0000042000001000 : 64'h0000040000001000; + + + wire cpllpd; + wire cpllrst; + +//---------- Select GTX or GTH or GTP ------------------------------------------ +// Notes : Attributes that are commented out uses the GT default settings +//------------------------------------------------------------------------------ +generate if (PCIE_GT_DEVICE == "GTP") + + //---------- GTP Common ---------------------------------------------------- + begin : gtp_common + + //---------- GTP Common Module --------------------------------------------- + GTPE2_COMMON # + ( + + //---------- Simulation Attributes ------------------------------------- + .SIM_PLL0REFCLK_SEL (3'b001), // + .SIM_PLL1REFCLK_SEL (3'b001), // + .SIM_RESET_SPEEDUP (PCIE_SIM_MODE), // + .SIM_VERSION (PCIE_USE_MODE), // + + //---------- Clock Attributes ------------------------------------------ + .PLL0_CFG (27'h01F024C), // Optimized for IES + .PLL1_CFG (27'h01F024C), // Optimized for IES + .PLL_CLKOUT_CFG (8'd0), // Optimized for IES + .PLL0_DMON_CFG (1'b0), // Optimized for IES + .PLL1_DMON_CFG (1'b0), // Optimized for IES + .PLL0_FBDIV (GTP_QPLL_FBDIV), // Optimized for IES + .PLL1_FBDIV (GTP_QPLL_FBDIV), // Optimized for IES + .PLL0_FBDIV_45 (5), // Optimized for IES + .PLL1_FBDIV_45 (5), // Optimized for IES + .PLL0_INIT_CFG (24'h00001E), // Optimized for IES + .PLL1_INIT_CFG (24'h00001E), // Optimized for IES + .PLL0_LOCK_CFG ( 9'h1E8), // Optimized for IES + .PLL1_LOCK_CFG ( 9'h1E8), // Optimized for IES + .PLL0_REFCLK_DIV (1), // Optimized for IES + .PLL1_REFCLK_DIV (1), // Optimized for IES + + //---------- MISC ------------------------------------------------------ + .BIAS_CFG (64'h0000000000050001), // Optimized for GES + //.COMMON_CFG (32'd0), // + .RSVD_ATTR0 (16'd0), // + .RSVD_ATTR1 (16'd0) // + + ) + gtpe2_common_i + ( + + //---------- Clock ----------------------------------------------------- + .GTGREFCLK0 ( 1'd0), // + .GTGREFCLK1 ( 1'd0), // + .GTREFCLK0 (QPLL_GTGREFCLK), // + .GTREFCLK1 ( 1'd0), // + .GTEASTREFCLK0 ( 1'd0), // + .GTEASTREFCLK1 ( 1'd0), // + .GTWESTREFCLK0 ( 1'd0), // + .GTWESTREFCLK1 ( 1'd0), // + .PLL0LOCKDETCLK (QPLL_QPLLLOCKDETCLK), // + .PLL1LOCKDETCLK (QPLL_QPLLLOCKDETCLK), // + .PLL0LOCKEN ( 1'd1), // + .PLL1LOCKEN ( 1'd1), // + .PLL0REFCLKSEL ( 3'd1), // Optimized for IES + .PLL1REFCLKSEL ( 3'd1), // Optimized for IES + .PLLRSVD1 (16'd0), // Optimized for IES + .PLLRSVD2 ( 5'd0), // Optimized for IES + + .PLL0OUTCLK (QPLL_QPLLOUTCLK), // + .PLL1OUTCLK (), // + .PLL0OUTREFCLK (QPLL_QPLLOUTREFCLK), // + .PLL1OUTREFCLK (), // + .PLL0LOCK (QPLL_QPLLLOCK), // + .PLL1LOCK (), // + .PLL0FBCLKLOST (), // + .PLL1FBCLKLOST (), // + .PLL0REFCLKLOST (), // + .PLL1REFCLKLOST (), // + .DMONITOROUT (), // + + //---------- Reset ----------------------------------------------------- + .PLL0PD (cpllpd | QPLL_QPLLPD), // + .PLL1PD ( 1'd1), // + .PLL0RESET (cpllrst | QPLL_QPLLRESET), // + .PLL1RESET ( 1'd1), // + + //---------- DRP ------------------------------------------------------- + .DRPCLK (QPLL_DRPCLK), // + .DRPADDR (QPLL_DRPADDR), // + .DRPEN (QPLL_DRPEN), // + .DRPDI (QPLL_DRPDI), // + .DRPWE (QPLL_DRPWE), // + + .DRPDO (QPLL_DRPDO), // + .DRPRDY (QPLL_DRPRDY), // + + //---------- Band Gap -------------------------------------------------- + .BGBYPASSB ( 1'd1), // Optimized for IES + .BGMONITORENB ( 1'd1), // Optimized for IES + .BGPDB ( 1'd1), // Optimized for IES + .BGRCALOVRD ( 5'd31), // Optimized for IES + .BGRCALOVRDENB ( 1'd1), // Optimized for IES + + //---------- MISC ------------------------------------------------------ + .PMARSVD ( 8'd0), // + .RCALENB ( 1'd1), // Optimized for IES + + .REFCLKOUTMONITOR0 (), // + .REFCLKOUTMONITOR1 (), // + .PMARSVDOUT () // + + ); + + end + +else if (PCIE_GT_DEVICE == "GTH") + + //---------- GTH Common ---------------------------------------------------- + begin : gth_common + + //---------- GTX Common Module --------------------------------------------- + GTHE2_COMMON # + ( + + //---------- Simulation Attributes ------------------------------------- + .SIM_QPLLREFCLK_SEL (3'b001), // + .SIM_RESET_SPEEDUP (PCIE_SIM_MODE), // + .SIM_VERSION ("2.0"), // + + //---------- Clock Attributes ------------------------------------------ + .QPLL_CFG (27'h04801C7), // QPLL for Gen3, optimized for GES + .QPLL_CLKOUT_CFG ( 4'b1111), // Optimized for GES + .QPLL_COARSE_FREQ_OVRD ( 6'b010000), // + .QPLL_COARSE_FREQ_OVRD_EN ( 1'd0), // + .QPLL_CP (10'h0FF), // * Optimized for IES and PCIe PLL BW + .QPLL_CP_MONITOR_EN ( 1'd0), // + .QPLL_DMONITOR_SEL ( 1'd0), // + .QPLL_FBDIV (QPLL_FBDIV), // + .QPLL_FBDIV_MONITOR_EN ( 1'd0), // + .QPLL_FBDIV_RATIO ( 1'd1), // Optimized + .QPLL_INIT_CFG (24'h000006), // + .QPLL_LOCK_CFG (16'h05E8), // Optimized for IES + .QPLL_LPF ( 4'hD), // Optimized for IES, [1:0] = 2'b00 (13.3 KOhm), [1:0] = 2'b01 (57.0 KOhm) + .QPLL_REFCLK_DIV ( 1), // + .QPLL_RP_COMP ( 1'd0), // GTH new + .QPLL_VTRL_RESET ( 2'd0), // GTH new + + //---------- MISC ------------------------------------------------------ + .BIAS_CFG (64'h0000040000001050), // Optimized for GES + .COMMON_CFG (32'd0), // + .RCAL_CFG ( 2'b00), // GTH new + .RSVD_ATTR0 (16'd0), // GTH + .RSVD_ATTR1 (16'd0) // GTH + ) + gthe2_common_i + ( + + //---------- Clock ----------------------------------------------------- + .GTGREFCLK ( 1'd0), // + .GTREFCLK0 (QPLL_GTGREFCLK), // + .GTREFCLK1 ( 1'd0), // + .GTNORTHREFCLK0 ( 1'd0), // + .GTNORTHREFCLK1 ( 1'd0), // + .GTSOUTHREFCLK0 ( 1'd0), // + .GTSOUTHREFCLK1 ( 1'd0), // + .QPLLLOCKDETCLK (QPLL_QPLLLOCKDETCLK), // + .QPLLLOCKEN ( 1'd1), // + .QPLLREFCLKSEL ( 3'd1), // + .QPLLRSVD1 (16'd0), // + .QPLLRSVD2 ( 5'b11111), // + + .QPLLOUTCLK (QPLL_QPLLOUTCLK), // + .QPLLOUTREFCLK (QPLL_QPLLOUTREFCLK), // + .QPLLLOCK (QPLL_QPLLLOCK), // + .QPLLFBCLKLOST (), // + .QPLLREFCLKLOST (), // + .QPLLDMONITOR (), // + + //---------- Reset ----------------------------------------------------- + .QPLLPD (QPLL_QPLLPD), // + .QPLLRESET (QPLL_QPLLRESET), // + .QPLLOUTRESET ( 1'd0), // + + //---------- DRP ------------------------------------------------------- + .DRPCLK (QPLL_DRPCLK), // + .DRPADDR (QPLL_DRPADDR), // + .DRPEN (QPLL_DRPEN), // + .DRPDI (QPLL_DRPDI), // + .DRPWE (QPLL_DRPWE), // + + .DRPDO (QPLL_DRPDO), // + .DRPRDY (QPLL_DRPRDY), // + + //---------- Band Gap -------------------------------------------------- + .BGBYPASSB ( 1'd1), // Optimized for IES + .BGMONITORENB ( 1'd1), // Optimized for IES + .BGPDB ( 1'd1), // Optimized for IES + .BGRCALOVRD ( 5'd31), // Optimized for IES + .BGRCALOVRDENB ( 1'd1), // GTH, Optimized for IES + + //---------- MISC ------------------------------------------------------ + .PMARSVD ( 8'd0), // + .RCALENB ( 1'd1), // Optimized for IES + + .REFCLKOUTMONITOR (), // + .PMARSVDOUT () // GTH + + ); + + end + +else + + //---------- GTX Common ---------------------------------------------------- + begin : gtx_common + + //---------- GTX Common Module --------------------------------------------- + GTXE2_COMMON # + ( + + //---------- Simulation Attributes ------------------------------------- + .SIM_QPLLREFCLK_SEL ( 3'b001), // + .SIM_RESET_SPEEDUP (PCIE_SIM_MODE), // + .SIM_VERSION (PCIE_USE_MODE), // + + //---------- Clock Attributes ------------------------------------------ + .QPLL_CFG (27'h06801C1), // QPLL for Gen3, Optimized for silicon, + //.QPLL_CLKOUT_CFG ( 4'd0), // + .QPLL_COARSE_FREQ_OVRD ( 6'b010000), // + .QPLL_COARSE_FREQ_OVRD_EN ( 1'd0), // + .QPLL_CP (10'h01F), // Optimized for Gen3 compliance (Gen1/Gen2 = 10'h1FF) + .QPLL_CP_MONITOR_EN ( 1'd0), // + .QPLL_DMONITOR_SEL ( 1'd0), // + .QPLL_FBDIV (QPLL_FBDIV), // + .QPLL_FBDIV_MONITOR_EN ( 1'd0), // + .QPLL_FBDIV_RATIO ( 1'd1), // Optimized for silicon + //.QPLL_INIT_CFG (24'h000006), // + .QPLL_LOCK_CFG (16'h21E8), // Optimized for silicon, IES = 16'h01D0, GES 16'h21D0 + .QPLL_LPF ( 4'hD), // Optimized for silicon, [1:0] = 2'b00 (13.3 KOhm), [1:0] = 2'b01 (57.0 KOhm) + .QPLL_REFCLK_DIV (1), // + + //---------- MISC ------------------------------------------------------ + .BIAS_CFG (BIAS_CFG) // Optimized for silicon + //.COMMON_CFG (32'd0) // + + ) + gtxe2_common_i + ( + + //---------- Clock ----------------------------------------------------- + .GTGREFCLK ( 1'd0), // + .GTREFCLK0 (QPLL_GTGREFCLK), // + .GTREFCLK1 ( 1'd0), // + .GTNORTHREFCLK0 ( 1'd0), // + .GTNORTHREFCLK1 ( 1'd0), // + .GTSOUTHREFCLK0 ( 1'd0), // + .GTSOUTHREFCLK1 ( 1'd0), // + .QPLLLOCKDETCLK (QPLL_QPLLLOCKDETCLK), // + .QPLLLOCKEN ( 1'd1), // + .QPLLREFCLKSEL ( 3'd1), // + .QPLLRSVD1 (16'd0), // + .QPLLRSVD2 ( 5'b11111), // + + .QPLLOUTCLK (QPLL_QPLLOUTCLK), // + .QPLLOUTREFCLK (QPLL_QPLLOUTREFCLK), // + .QPLLLOCK (QPLL_QPLLLOCK), // + .QPLLFBCLKLOST (), // + .QPLLREFCLKLOST (), // + .QPLLDMONITOR (), // + + //---------- Reset ----------------------------------------------------- + .QPLLPD (QPLL_QPLLPD), // + .QPLLRESET (QPLL_QPLLRESET), // + .QPLLOUTRESET ( 1'd0), // + + //---------- DRP ------------------------------------------------------- + .DRPCLK (QPLL_DRPCLK), // + .DRPADDR (QPLL_DRPADDR), // + .DRPEN (QPLL_DRPEN), // + .DRPDI (QPLL_DRPDI), // + .DRPWE (QPLL_DRPWE), // + + .DRPDO (QPLL_DRPDO), // + .DRPRDY (QPLL_DRPRDY), // + + //---------- Band Gap -------------------------------------------------- + .BGBYPASSB ( 1'd1), // + .BGMONITORENB ( 1'd1), // + .BGPDB ( 1'd1), // + .BGRCALOVRD ( 5'd31), // + + //---------- MISC ------------------------------------------------------ + .PMARSVD ( 8'd0), // + .RCALENB ( 1'd1), // Optimized for GES + + .REFCLKOUTMONITOR () // + + ); + + end + +endgenerate + +pcie_7x_0_gtp_cpllpd_ovrd cpllPDInst ( + .i_ibufds_gte2(QPLL_CPLLPDREFCLK), + .o_cpllpd_ovrd(cpllpd), + .o_cpllreset_ovrd(cpllrst)); + + +endmodule + + diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_rxeq_scan.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_rxeq_scan.v new file mode 100644 index 0000000..bb355a4 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/source/pcie_7x_0_rxeq_scan.v @@ -0,0 +1,366 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : pcie_7x_0_rxeq_scan.v +// Version : 3.3 +//------------------------------------------------------------------------------ +// Filename : rxeq_scan.v +// Description : PIPE RX Equalization Eye Scan Module for 7 Series Transceiver +// Version : 18.0 +//------------------------------------------------------------------------------ + + +`timescale 1ns / 1ps + + + +//---------- RXEQ Eye Scan Module ---------------------------------------------- +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0_rxeq_scan # +( + + parameter PCIE_SIM_MODE = "FALSE", // PCIe sim mode + parameter PCIE_GT_DEVICE = "GTX", // PCIe GT device + parameter PCIE_RXEQ_MODE_GEN3 = 1, // PCIe RX equalization mode + parameter CONVERGE_MAX = 22'd3125000, // Convergence max count (12ms) + parameter CONVERGE_MAX_BYPASS = 22'd2083333 // Convergence max count for phase2/3 bypass mode (8ms) +) + +( + + //---------- Input ------------------------------------- + input RXEQSCAN_CLK, + input RXEQSCAN_RST_N, + + input [ 1:0] RXEQSCAN_CONTROL, + input [ 2:0] RXEQSCAN_PRESET, + input RXEQSCAN_PRESET_VALID, + input [ 3:0] RXEQSCAN_TXPRESET, + input [17:0] RXEQSCAN_TXCOEFF, + input RXEQSCAN_NEW_TXCOEFF_REQ, + input [ 5:0] RXEQSCAN_FS, + input [ 5:0] RXEQSCAN_LF, + + + //---------- Output ------------------------------------ + output RXEQSCAN_PRESET_DONE, + output [17:0] RXEQSCAN_NEW_TXCOEFF, + output RXEQSCAN_NEW_TXCOEFF_DONE, + output RXEQSCAN_LFFS_SEL, + output RXEQSCAN_ADAPT_DONE + +); + + //---------- Input Register ---------------------------- +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 2:0] preset_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg preset_valid_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 3:0] txpreset_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [17:0] txcoeff_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg new_txcoeff_req_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 5:0] fs_reg1; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 5:0] lf_reg1; + +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 2:0] preset_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg preset_valid_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 3:0] txpreset_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [17:0] txcoeff_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg new_txcoeff_req_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 5:0] fs_reg2; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [ 5:0] lf_reg2; + + //---------- Internal Signals -------------------------- + reg adapt_done_cnt = 1'd0; + + //---------- Output Register --------------------------- + reg preset_done = 1'd0; + reg [21:0] converge_cnt = 22'd0; + reg [17:0] new_txcoeff = 18'd0; + reg new_txcoeff_done = 1'd0; + reg lffs_sel = 1'd0; + reg adapt_done = 1'd0; + reg [ 3:0] fsm = 4'd0; + + //---------- FSM --------------------------------------- + localparam FSM_IDLE = 4'b0001; + localparam FSM_PRESET = 4'b0010; + localparam FSM_CONVERGE = 4'b0100; + localparam FSM_NEW_TXCOEFF_REQ = 4'b1000; + + //---------- Simulation Speedup ------------------------ + // Gen3: 32 bits / PCLK : 1 million bits / X PCLK + // X = + //------------------------------------------------------ + localparam converge_max_cnt = (PCIE_SIM_MODE == "TRUE") ? 22'd1000 : CONVERGE_MAX; + localparam converge_max_bypass_cnt = (PCIE_SIM_MODE == "TRUE") ? 22'd1000 : CONVERGE_MAX_BYPASS; + + + +//---------- Input FF ---------------------------------------------------------- +always @ (posedge RXEQSCAN_CLK) +begin + + if (!RXEQSCAN_RST_N) + begin + //---------- 1st Stage FF -------------------------- + preset_reg1 <= 3'd0; + preset_valid_reg1 <= 1'd0; + txpreset_reg1 <= 4'd0; + txcoeff_reg1 <= 18'd0; + new_txcoeff_req_reg1 <= 1'd0; + fs_reg1 <= 6'd0; + lf_reg1 <= 6'd0; + //---------- 2nd Stage FF -------------------------- + preset_reg2 <= 3'd0; + preset_valid_reg2 <= 1'd0; + txpreset_reg2 <= 4'd0; + txcoeff_reg2 <= 18'd0; + new_txcoeff_req_reg2 <= 1'd0; + fs_reg2 <= 6'd0; + lf_reg2 <= 6'd0; + end + else + begin + //---------- 1st Stage FF -------------------------- + preset_reg1 <= RXEQSCAN_PRESET; + preset_valid_reg1 <= RXEQSCAN_PRESET_VALID; + txpreset_reg1 <= RXEQSCAN_TXPRESET; + txcoeff_reg1 <= RXEQSCAN_TXCOEFF; + new_txcoeff_req_reg1 <= RXEQSCAN_NEW_TXCOEFF_REQ; + fs_reg1 <= RXEQSCAN_FS; + lf_reg1 <= RXEQSCAN_LF; + //---------- 2nd Stage FF -------------------------- + preset_reg2 <= preset_reg1; + preset_valid_reg2 <= preset_valid_reg1; + txpreset_reg2 <= txpreset_reg1; + txcoeff_reg2 <= txcoeff_reg1; + new_txcoeff_req_reg2 <= new_txcoeff_req_reg1; + fs_reg2 <= fs_reg1; + lf_reg2 <= lf_reg1; + end + +end + + + +//---------- Eye Scan ---------------------------------------------------------- +always @ (posedge RXEQSCAN_CLK) +begin + + if (!RXEQSCAN_RST_N) + begin + fsm <= FSM_IDLE; + preset_done <= 1'd0; + converge_cnt <= 22'd0; + new_txcoeff <= 18'd0; + new_txcoeff_done <= 1'd0; + lffs_sel <= 1'd0; + adapt_done <= 1'd0; + adapt_done_cnt <= 1'd0; + end + else + + begin + + case (fsm) + + //---------- Idle State ---------------------------- + FSM_IDLE : + + begin + + //---------- Process RXEQ Preset --------------- + if (preset_valid_reg2) + begin + fsm <= FSM_PRESET; + preset_done <= 1'd1; + converge_cnt <= 22'd0; + new_txcoeff <= new_txcoeff; + new_txcoeff_done <= 1'd0; + lffs_sel <= 1'd0; + adapt_done <= 1'd0; + adapt_done_cnt <= adapt_done_cnt; + end + //---------- Request New TX Coefficient -------- + else if (new_txcoeff_req_reg2) + begin + fsm <= FSM_CONVERGE; + preset_done <= 1'd0; + converge_cnt <= 22'd0; + //new_txcoeff <= (PCIE_RXEQ_MODE_GEN3 == 0) ? txcoeff_reg2 : 18'd4; // Default + new_txcoeff <= (PCIE_RXEQ_MODE_GEN3 == 0) ? txcoeff_reg2 : (PCIE_GT_DEVICE == "GTX") ? 18'd5 : 18'd4; // Optimized for Gen3 RX JTOL + new_txcoeff_done <= 1'd0; + lffs_sel <= (PCIE_RXEQ_MODE_GEN3 == 0) ? 1'd0 : 1'd1; + adapt_done <= 1'd0; + adapt_done_cnt <= adapt_done_cnt; + end + //---------- Default --------------------------- + else + begin + fsm <= FSM_IDLE; + preset_done <= 1'd0; + converge_cnt <= 22'd0; + new_txcoeff <= new_txcoeff; + new_txcoeff_done <= 1'd0; + lffs_sel <= 1'd0; + adapt_done <= 1'd0; + adapt_done_cnt <= adapt_done_cnt; + end + + end + + //---------- Process RXEQ Preset ------------------- + FSM_PRESET : + + begin + fsm <= (!preset_valid_reg2) ? FSM_IDLE : FSM_PRESET; + preset_done <= 1'd1; + converge_cnt <= 22'd0; + new_txcoeff <= new_txcoeff; + new_txcoeff_done <= 1'd0; + lffs_sel <= 1'd0; + adapt_done <= 1'd0; + adapt_done_cnt <= adapt_done_cnt; + end + + //---------- Wait for Convergence ------------------ + FSM_CONVERGE : + + begin + if ((adapt_done_cnt == 1'd0) && (RXEQSCAN_CONTROL == 2'd2)) + begin + fsm <= FSM_NEW_TXCOEFF_REQ; + preset_done <= 1'd0; + converge_cnt <= 22'd0; + new_txcoeff <= new_txcoeff; + new_txcoeff_done <= 1'd0; + lffs_sel <= lffs_sel; + adapt_done <= 1'd0; + adapt_done_cnt <= adapt_done_cnt; + end + else + begin + + //---------- Phase2/3 ---------------------- + if (RXEQSCAN_CONTROL == 2'd2) + fsm <= (converge_cnt == converge_max_cnt) ? FSM_NEW_TXCOEFF_REQ : FSM_CONVERGE; + //---------- Phase2/3 Bypass --------------- + else + fsm <= (converge_cnt == converge_max_bypass_cnt) ? FSM_NEW_TXCOEFF_REQ : FSM_CONVERGE; + + preset_done <= 1'd0; + converge_cnt <= converge_cnt + 1'd1; + new_txcoeff <= new_txcoeff; + new_txcoeff_done <= 1'd0; + lffs_sel <= lffs_sel; + adapt_done <= 1'd0; + adapt_done_cnt <= adapt_done_cnt; + end + end + + //---------- Request New TX Coefficient ------------ + FSM_NEW_TXCOEFF_REQ : + + begin + if (!new_txcoeff_req_reg2) + begin + fsm <= FSM_IDLE; + preset_done <= 1'd0; + converge_cnt <= 22'd0; + new_txcoeff <= new_txcoeff; + new_txcoeff_done <= 1'd0; + lffs_sel <= lffs_sel; + adapt_done <= 1'd0; + adapt_done_cnt <= (RXEQSCAN_CONTROL == 2'd3) ? 1'd0 : adapt_done_cnt + 1'd1; + end + else + begin + fsm <= FSM_NEW_TXCOEFF_REQ; + preset_done <= 1'd0; + converge_cnt <= 22'd0; + new_txcoeff <= new_txcoeff; + new_txcoeff_done <= 1'd1; + lffs_sel <= lffs_sel; + adapt_done <= (adapt_done_cnt == 1'd1) || (RXEQSCAN_CONTROL == 2'd3); + adapt_done_cnt <= adapt_done_cnt; + end + end + + //---------- Default State ------------------------- + default : + + begin + fsm <= FSM_IDLE; + preset_done <= 1'd0; + converge_cnt <= 22'd0; + new_txcoeff <= 18'd0; + new_txcoeff_done <= 1'd0; + lffs_sel <= 1'd0; + adapt_done <= 1'd0; + adapt_done_cnt <= 1'd0; + end + + endcase + + end + +end + + + +//---------- RXEQ Eye Scan Output ---------------------------------------------- +assign RXEQSCAN_PRESET_DONE = preset_done; +assign RXEQSCAN_NEW_TXCOEFF = new_txcoeff; +assign RXEQSCAN_NEW_TXCOEFF_DONE = new_txcoeff_done; +assign RXEQSCAN_LFFS_SEL = lffs_sel; +assign RXEQSCAN_ADAPT_DONE = adapt_done; + + + +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/synth/pcie_7x_0.v b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/synth/pcie_7x_0.v new file mode 100644 index 0000000..7f24f08 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/synth/pcie_7x_0.v @@ -0,0 +1,1106 @@ +// (c) Copyright 1995-2022 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:pcie_7x:3.3 +// IP Revision: 14 + +(* X_CORE_INFO = "pcie_7x_0_pcie2_top,Vivado 2020.2" *) +(* CHECK_LICENSE_TYPE = "pcie_7x_0,pcie_7x_0_pcie2_top,{}" *) +(* CORE_GENERATION_INFO = "pcie_7x_0,pcie_7x_0_pcie2_top,{x_ipProduct=Vivado 2020.2,x_ipVendor=xilinx.com,x_ipLibrary=ip,x_ipName=pcie_7x,x_ipVersion=3.3,x_ipCoreRevision=14,x_ipLanguage=VERILOG,x_ipSimLanguage=MIXED,c_component_name=pcie_7x_0,dev_port_type=0000,c_dev_port_type=0,c_header_type=00,c_upstream_facing=TRUE,max_lnk_wdt=000100,max_lnk_spd=2,c_gen1=true,pci_exp_int_freq=3,c_pcie_fast_config=0,bar_0=FFFF0000,bar_1=00000000,bar_2=00000000,bar_3=00000000,bar_4=00000000,bar_5=00000000,xrom_bar=00000000,cost_table=1,\ +ven_id=10EE,dev_id=7024,rev_id=00,subsys_ven_id=10EE,subsys_id=0007,class_code=050000,cardbus_cis_ptr=00000000,cap_ver=2,c_pcie_cap_slot_implemented=FALSE,mps=011,cmps=3,ext_tag_fld_sup=FALSE,c_dev_control_ext_tag_default=FALSE,phantm_func_sup=00,c_phantom_functions=0,ep_l0s_accpt_lat=000,c_ep_l0s_accpt_lat=0,ep_l1_accpt_lat=111,c_ep_l1_accpt_lat=7,c_cpl_timeout_disable_sup=FALSE,c_cpl_timeout_range=0010,c_cpl_timeout_ranges_sup=2,c_buf_opt_bma=TRUE,c_perf_level_high=TRUE,c_tx_last_tlp=30,c_rx_r\ +am_limit=FFF,c_fc_ph=32,c_fc_pd=949,c_fc_nph=12,c_fc_npd=24,c_fc_cplh=36,c_fc_cpld=973,c_cpl_inf=TRUE,c_cpl_infinite=TRUE,c_dll_lnk_actv_cap=FALSE,c_trgt_lnk_spd=2,c_hw_auton_spd_disable=FALSE,c_de_emph=FALSE,slot_clk=TRUE,c_rcb=0,c_root_cap_crs=FALSE,c_slot_cap_attn_butn=FALSE,c_slot_cap_attn_ind=FALSE,c_slot_cap_pwr_ctrl=FALSE,c_slot_cap_pwr_ind=FALSE,c_slot_cap_hotplug_surprise=FALSE,c_slot_cap_hotplug_cap=FALSE,c_slot_cap_mrl=FALSE,c_slot_cap_elec_interlock=FALSE,c_slot_cap_no_cmd_comp_sup=F\ +ALSE,c_slot_cap_pwr_limit_value=0,c_slot_cap_pwr_limit_scale=0,c_slot_cap_physical_slot_num=0,intx=TRUE,int_pin=1,c_msi_cap_on=FALSE,c_pm_cap_next_ptr=60,c_msi_64b_addr=TRUE,c_msi=0,c_msi_mult_msg_extn=0,c_msi_per_vctr_mask_cap=FALSE,c_msix_cap_on=FALSE,c_msix_next_ptr=00,c_pcie_cap_next_ptr=00,c_msix_table_size=000,c_msix_table_offset=0,c_msix_table_bir=0,c_msix_pba_offset=0,c_msix_pba_bir=0,dsi=0,c_dsi_bool=FALSE,d1_sup=0,c_d1_support=FALSE,d2_sup=0,c_d2_support=FALSE,pme_sup=0F,c_pme_support=\ +0F,no_soft_rst=TRUE,pwr_con_d0_state=00,con_scl_fctr_d0_state=0,pwr_con_d1_state=00,con_scl_fctr_d1_state=0,pwr_con_d2_state=00,con_scl_fctr_d2_state=0,pwr_con_d3_state=00,con_scl_fctr_d3_state=0,pwr_dis_d0_state=00,dis_scl_fctr_d0_state=0,pwr_dis_d1_state=00,dis_scl_fctr_d1_state=0,pwr_dis_d2_state=00,dis_scl_fctr_d2_state=0,pwr_dis_d3_state=00,dis_scl_fctr_d3_state=0,c_dsn_cap_enabled=TRUE,c_dsn_base_ptr=100,c_vc_cap_enabled=FALSE,c_vc_base_ptr=000,c_vc_cap_reject_snoop=FALSE,c_vsec_cap_enable\ +d=FALSE,c_vsec_base_ptr=000,c_vsec_next_ptr=000,c_dsn_next_ptr=000,c_vc_next_ptr=000,c_pci_cfg_space_addr=3F,c_ext_pci_cfg_space_addr=3FF,c_last_cfg_dw=10C,c_enable_msg_route=00000000000,bram_lat=0,c_rx_raddr_lat=0,c_rx_rdata_lat=2,c_rx_write_lat=0,c_tx_raddr_lat=0,c_tx_rdata_lat=2,c_tx_write_lat=0,c_ll_ack_timeout_enable=FALSE,c_ll_ack_timeout_function=0,c_ll_ack_timeout=0000,c_ll_replay_timeout_enable=FALSE,c_ll_replay_timeout_func=1,c_ll_replay_timeout=0000,c_dis_lane_reverse=TRUE,c_upconfig_\ +capable=TRUE,c_disable_scrambling=FALSE,c_disable_tx_aspm_l0s=FALSE,c_pcie_dbg_ports=TRUE,pci_exp_ref_freq=0,c_xlnx_ref_board=ZC706,c_pcie_blk_locn=0,c_ur_atomic=FALSE,c_dev_cap2_atomicop32_completer_supported=FALSE,c_dev_cap2_atomicop64_completer_supported=FALSE,c_dev_cap2_cas128_completer_supported=FALSE,c_dev_cap2_tph_completer_supported=00,c_dev_cap2_ari_forwarding_supported=FALSE,c_dev_cap2_atomicop_routing_supported=FALSE,c_link_cap_aspm_optionality=FALSE,c_aer_cap_on=FALSE,c_aer_base_ptr=\ +000,c_aer_cap_nextptr=000,c_aer_cap_ecrc_check_capable=FALSE,c_aer_cap_ecrc_gen_capable=FALSE,c_aer_cap_multiheader=FALSE,c_aer_cap_permit_rooterr_update=FALSE,c_rbar_cap_on=FALSE,c_rbar_base_ptr=000,c_rbar_cap_nextptr=000,c_rbar_num=0,c_rbar_cap_sup0=00001,c_rbar_cap_index0=0,c_rbar_cap_control_encodedbar0=00,c_rbar_cap_sup1=00001,c_rbar_cap_index1=0,c_rbar_cap_control_encodedbar1=00,c_rbar_cap_sup2=00001,c_rbar_cap_index2=0,c_rbar_cap_control_encodedbar2=00,c_rbar_cap_sup3=00001,c_rbar_cap_ind\ +ex3=0,c_rbar_cap_control_encodedbar3=00,c_rbar_cap_sup4=00001,c_rbar_cap_index4=0,c_rbar_cap_control_encodedbar4=00,c_rbar_cap_sup5=00001,c_rbar_cap_index5=0,c_rbar_cap_control_encodedbar5=00,c_recrc_check=0,c_recrc_check_trim=FALSE,c_disable_rx_poisoned_resp=FALSE,c_trn_np_fc=TRUE,c_ur_inv_req=TRUE,c_ur_prs_response=TRUE,c_silicon_rev=2,c_aer_cap_optional_err_support=000000,LINK_CAP_MAX_LINK_WIDTH=4,C_DATA_WIDTH=64,PIPE_SIM=FALSE,PCIE_EXT_CLK=TRUE,PCIE_EXT_GT_COMMON=FALSE,EXT_CH_GT_DRP=FALSE,TR\ +ANSCEIVER_CTRL_STATUS_PORTS=FALSE,SHARED_LOGIC_IN_CORE=FALSE,ERR_REPORTING_IF=TRUE,PL_INTERFACE=TRUE,CFG_MGMT_IF=TRUE,CFG_CTL_IF=TRUE,CFG_STATUS_IF=TRUE,RCV_MSG_IF=TRUE,CFG_FC_IF=TRUE,EXT_PIPE_INTERFACE=FALSE,EXT_STARTUP_PRIMITIVE=FALSE,KEEP_WIDTH=8,PCIE_ASYNC_EN=FALSE,ENABLE_JTAG_DBG=FALSE,REDUCE_OOB_FREQ=FALSE}" *) +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_7x_0 ( + pci_exp_txp, + pci_exp_txn, + pci_exp_rxp, + pci_exp_rxn, + pipe_pclk_in, + pipe_rxusrclk_in, + pipe_rxoutclk_in, + pipe_dclk_in, + pipe_userclk1_in, + pipe_userclk2_in, + pipe_oobclk_in, + pipe_mmcm_lock_in, + pipe_txoutclk_out, + pipe_rxoutclk_out, + pipe_pclk_sel_out, + pipe_gen3_out, + user_clk_out, + user_reset_out, + user_lnk_up, + user_app_rdy, + tx_buf_av, + tx_cfg_req, + tx_err_drop, + s_axis_tx_tready, + s_axis_tx_tdata, + s_axis_tx_tkeep, + s_axis_tx_tlast, + s_axis_tx_tvalid, + s_axis_tx_tuser, + tx_cfg_gnt, + m_axis_rx_tdata, + m_axis_rx_tkeep, + m_axis_rx_tlast, + m_axis_rx_tvalid, + m_axis_rx_tready, + m_axis_rx_tuser, + rx_np_ok, + rx_np_req, + fc_cpld, + fc_cplh, + fc_npd, + fc_nph, + fc_pd, + fc_ph, + fc_sel, + cfg_mgmt_do, + cfg_mgmt_rd_wr_done, + cfg_status, + cfg_command, + cfg_dstatus, + cfg_dcommand, + cfg_lstatus, + cfg_lcommand, + cfg_dcommand2, + cfg_pcie_link_state, + cfg_pmcsr_pme_en, + cfg_pmcsr_powerstate, + cfg_pmcsr_pme_status, + cfg_received_func_lvl_rst, + cfg_mgmt_di, + cfg_mgmt_byte_en, + cfg_mgmt_dwaddr, + cfg_mgmt_wr_en, + cfg_mgmt_rd_en, + cfg_mgmt_wr_readonly, + cfg_err_ecrc, + cfg_err_ur, + cfg_err_cpl_timeout, + cfg_err_cpl_unexpect, + cfg_err_cpl_abort, + cfg_err_posted, + cfg_err_cor, + cfg_err_atomic_egress_blocked, + cfg_err_internal_cor, + cfg_err_malformed, + cfg_err_mc_blocked, + cfg_err_poisoned, + cfg_err_norecovery, + cfg_err_tlp_cpl_header, + cfg_err_cpl_rdy, + cfg_err_locked, + cfg_err_acs, + cfg_err_internal_uncor, + cfg_trn_pending, + cfg_pm_halt_aspm_l0s, + cfg_pm_halt_aspm_l1, + cfg_pm_force_state_en, + cfg_pm_force_state, + cfg_dsn, + cfg_interrupt, + cfg_interrupt_rdy, + cfg_interrupt_assert, + cfg_interrupt_di, + cfg_interrupt_do, + cfg_interrupt_mmenable, + cfg_interrupt_msienable, + cfg_interrupt_msixenable, + cfg_interrupt_msixfm, + cfg_interrupt_stat, + cfg_pciecap_interrupt_msgnum, + cfg_to_turnoff, + cfg_turnoff_ok, + cfg_bus_number, + cfg_device_number, + cfg_function_number, + cfg_pm_wake, + cfg_pm_send_pme_to, + cfg_ds_bus_number, + cfg_ds_device_number, + cfg_ds_function_number, + cfg_mgmt_wr_rw1c_as_rw, + cfg_msg_received, + cfg_msg_data, + cfg_bridge_serr_en, + cfg_slot_control_electromech_il_ctl_pulse, + cfg_root_control_syserr_corr_err_en, + cfg_root_control_syserr_non_fatal_err_en, + cfg_root_control_syserr_fatal_err_en, + cfg_root_control_pme_int_en, + cfg_aer_rooterr_corr_err_reporting_en, + cfg_aer_rooterr_non_fatal_err_reporting_en, + cfg_aer_rooterr_fatal_err_reporting_en, + cfg_aer_rooterr_corr_err_received, + cfg_aer_rooterr_non_fatal_err_received, + cfg_aer_rooterr_fatal_err_received, + cfg_msg_received_err_cor, + cfg_msg_received_err_non_fatal, + cfg_msg_received_err_fatal, + cfg_msg_received_pm_as_nak, + cfg_msg_received_pm_pme, + cfg_msg_received_pme_to_ack, + cfg_msg_received_assert_int_a, + cfg_msg_received_assert_int_b, + cfg_msg_received_assert_int_c, + cfg_msg_received_assert_int_d, + cfg_msg_received_deassert_int_a, + cfg_msg_received_deassert_int_b, + cfg_msg_received_deassert_int_c, + cfg_msg_received_deassert_int_d, + cfg_msg_received_setslotpowerlimit, + pl_directed_link_change, + pl_directed_link_width, + pl_directed_link_speed, + pl_directed_link_auton, + pl_upstream_prefer_deemph, + pl_sel_lnk_rate, + pl_sel_lnk_width, + pl_ltssm_state, + pl_lane_reversal_mode, + pl_phy_lnk_up, + pl_tx_pm_state, + pl_rx_pm_state, + pl_link_upcfg_cap, + pl_link_gen2_cap, + pl_link_partner_gen2_supported, + pl_initial_link_width, + pl_directed_change_done, + pl_received_hot_rst, + pl_transmit_hot_rst, + pl_downstream_deemph_source, + cfg_err_aer_headerlog, + cfg_aer_interrupt_msgnum, + cfg_err_aer_headerlog_set, + cfg_aer_ecrc_check_en, + cfg_aer_ecrc_gen_en, + cfg_vc_tcvc_map, + sys_clk, + sys_rst_n, + pipe_mmcm_rst_n, + pcie_drp_clk, + pcie_drp_en, + pcie_drp_we, + pcie_drp_addr, + pcie_drp_di, + pcie_drp_do, + pcie_drp_rdy +); + +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_7x_mgt:1.0 pcie_7x_mgt txp" *) +output wire [3 : 0] pci_exp_txp; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_7x_mgt:1.0 pcie_7x_mgt txn" *) +output wire [3 : 0] pci_exp_txn; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_7x_mgt:1.0 pcie_7x_mgt rxp" *) +input wire [3 : 0] pci_exp_rxp; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_7x_mgt:1.0 pcie_7x_mgt rxn" *) +input wire [3 : 0] pci_exp_rxn; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock pclk_in" *) +input wire pipe_pclk_in; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock rxusrclk_in" *) +input wire pipe_rxusrclk_in; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock rxoutclk_in" *) +input wire [3 : 0] pipe_rxoutclk_in; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock dclk_in" *) +input wire pipe_dclk_in; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock userclk1_in" *) +input wire pipe_userclk1_in; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock userclk2_in" *) +input wire pipe_userclk2_in; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock oobclk_in" *) +input wire pipe_oobclk_in; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock mmcm_lock_in" *) +input wire pipe_mmcm_lock_in; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock txoutclk_out" *) +output wire pipe_txoutclk_out; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock rxoutclk_out" *) +output wire [3 : 0] pipe_rxoutclk_out; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock pclk_sel_out" *) +output wire [3 : 0] pipe_pclk_sel_out; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock gen3_out" *) +output wire pipe_gen3_out; +(* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME CLK.user_clk_out, ASSOCIATED_BUSIF m_axis_rx:s_axis_tx, FREQ_HZ 125000000, ASSOCIATED_RESET user_reset_out, FREQ_TOLERANCE_HZ 0, PHASE 0.000, INSERT_VIP 0" *) +(* X_INTERFACE_INFO = "xilinx.com:signal:clock:1.0 CLK.user_clk_out CLK" *) +output wire user_clk_out; +(* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME RST.user_reset_out, POLARITY ACTIVE_HIGH, INSERT_VIP 0" *) +(* X_INTERFACE_INFO = "xilinx.com:signal:reset:1.0 RST.user_reset_out RST" *) +output wire user_reset_out; +output wire user_lnk_up; +output wire user_app_rdy; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status tx_buf_av" *) +output wire [5 : 0] tx_buf_av; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status tx_cfg_req" *) +output wire tx_cfg_req; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status tx_err_drop" *) +output wire tx_err_drop; +(* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 s_axis_tx TREADY" *) +output wire s_axis_tx_tready; +(* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 s_axis_tx TDATA" *) +input wire [63 : 0] s_axis_tx_tdata; +(* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 s_axis_tx TKEEP" *) +input wire [7 : 0] s_axis_tx_tkeep; +(* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 s_axis_tx TLAST" *) +input wire s_axis_tx_tlast; +(* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 s_axis_tx TVALID" *) +input wire s_axis_tx_tvalid; +(* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME s_axis_tx, TDATA_NUM_BYTES 8, TDEST_WIDTH 0, TID_WIDTH 0, TUSER_WIDTH 4, HAS_TREADY 1, HAS_TSTRB 0, HAS_TKEEP 1, HAS_TLAST 1, FREQ_HZ 100000000, PHASE 0.000, LAYERED_METADATA undef, INSERT_VIP 0" *) +(* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 s_axis_tx TUSER" *) +input wire [3 : 0] s_axis_tx_tuser; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control tx_cfg_gnt" *) +input wire tx_cfg_gnt; +(* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 m_axis_rx TDATA" *) +output wire [63 : 0] m_axis_rx_tdata; +(* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 m_axis_rx TKEEP" *) +output wire [7 : 0] m_axis_rx_tkeep; +(* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 m_axis_rx TLAST" *) +output wire m_axis_rx_tlast; +(* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 m_axis_rx TVALID" *) +output wire m_axis_rx_tvalid; +(* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 m_axis_rx TREADY" *) +input wire m_axis_rx_tready; +(* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME m_axis_rx, TDATA_NUM_BYTES 8, TDEST_WIDTH 0, TID_WIDTH 0, TUSER_WIDTH 22, HAS_TREADY 1, HAS_TSTRB 0, HAS_TKEEP 1, HAS_TLAST 1, FREQ_HZ 100000000, PHASE 0.000, LAYERED_METADATA undef, INSERT_VIP 0" *) +(* X_INTERFACE_INFO = "xilinx.com:interface:axis:1.0 m_axis_rx TUSER" *) +output wire [21 : 0] m_axis_rx_tuser; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control rx_np_ok" *) +input wire rx_np_ok; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control rx_np_req" *) +input wire rx_np_req; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc CPLD" *) +output wire [11 : 0] fc_cpld; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc CPLH" *) +output wire [7 : 0] fc_cplh; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc NPD" *) +output wire [11 : 0] fc_npd; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc NPH" *) +output wire [7 : 0] fc_nph; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc PD" *) +output wire [11 : 0] fc_pd; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc PH" *) +output wire [7 : 0] fc_ph; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_fc:1.0 pcie_cfg_fc SEL" *) +input wire [2 : 0] fc_sel; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt READ_DATA" *) +output wire [31 : 0] cfg_mgmt_do; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt READ_WRITE_DONE" *) +output wire cfg_mgmt_rd_wr_done; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status status" *) +output wire [15 : 0] cfg_status; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status command" *) +output wire [15 : 0] cfg_command; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status dstatus" *) +output wire [15 : 0] cfg_dstatus; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status dcommand" *) +output wire [15 : 0] cfg_dcommand; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status lstatus" *) +output wire [15 : 0] cfg_lstatus; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status lcommand" *) +output wire [15 : 0] cfg_lcommand; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status dcommand2" *) +output wire [15 : 0] cfg_dcommand2; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status pcie_link_state" *) +output wire [2 : 0] cfg_pcie_link_state; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status pmcsr_pme_en" *) +output wire cfg_pmcsr_pme_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status pmcsr_powerstate" *) +output wire [1 : 0] cfg_pmcsr_powerstate; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status pmcsr_pme_status" *) +output wire cfg_pmcsr_pme_status; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status received_func_lvl_rst" *) +output wire cfg_received_func_lvl_rst; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt WRITE_DATA" *) +input wire [31 : 0] cfg_mgmt_di; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt BYTE_EN" *) +input wire [3 : 0] cfg_mgmt_byte_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt ADDR" *) +input wire [9 : 0] cfg_mgmt_dwaddr; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt WRITE_EN" *) +input wire cfg_mgmt_wr_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt READ_EN" *) +input wire cfg_mgmt_rd_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt READONLY" *) +input wire cfg_mgmt_wr_readonly; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err ecrc" *) +input wire cfg_err_ecrc; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err ur" *) +input wire cfg_err_ur; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err cpl_timeout" *) +input wire cfg_err_cpl_timeout; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err cpl_unexpect" *) +input wire cfg_err_cpl_unexpect; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err cpl_abort" *) +input wire cfg_err_cpl_abort; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err posted" *) +input wire cfg_err_posted; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err cor" *) +input wire cfg_err_cor; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err atomic_egress_blocked" *) +input wire cfg_err_atomic_egress_blocked; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err internal_cor" *) +input wire cfg_err_internal_cor; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err malformed" *) +input wire cfg_err_malformed; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err mc_blocked" *) +input wire cfg_err_mc_blocked; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err poisoned" *) +input wire cfg_err_poisoned; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err norecovery" *) +input wire cfg_err_norecovery; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err tlp_cpl_header" *) +input wire [47 : 0] cfg_err_tlp_cpl_header; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err cpl_rdy" *) +output wire cfg_err_cpl_rdy; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err locked" *) +input wire cfg_err_locked; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err acs" *) +input wire cfg_err_acs; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err internal_uncor" *) +input wire cfg_err_internal_uncor; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control trn_pending" *) +input wire cfg_trn_pending; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control pm_halt_aspm_l0s" *) +input wire cfg_pm_halt_aspm_l0s; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control pm_halt_aspm_l1" *) +input wire cfg_pm_halt_aspm_l1; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control pm_force_state_en" *) +input wire cfg_pm_force_state_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control pm_force_state" *) +input wire [1 : 0] cfg_pm_force_state; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control dsn" *) +input wire [63 : 0] cfg_dsn; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt interrupt" *) +input wire cfg_interrupt; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt rdy" *) +output wire cfg_interrupt_rdy; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt assert" *) +input wire cfg_interrupt_assert; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt write_data" *) +input wire [7 : 0] cfg_interrupt_di; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt read_data" *) +output wire [7 : 0] cfg_interrupt_do; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt mmenable" *) +output wire [2 : 0] cfg_interrupt_mmenable; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt msienable" *) +output wire cfg_interrupt_msienable; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt msixenable" *) +output wire cfg_interrupt_msixenable; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt msixfm" *) +output wire cfg_interrupt_msixfm; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt stat" *) +input wire cfg_interrupt_stat; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_interrupt:1.0 pcie2_cfg_interrupt pciecap_interrupt_msgnum" *) +input wire [4 : 0] cfg_pciecap_interrupt_msgnum; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status turnoff" *) +output wire cfg_to_turnoff; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control turnoff_ok" *) +input wire cfg_turnoff_ok; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status bus_number" *) +output wire [7 : 0] cfg_bus_number; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status device_number" *) +output wire [4 : 0] cfg_device_number; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status function_number" *) +output wire [2 : 0] cfg_function_number; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control pm_wake" *) +input wire cfg_pm_wake; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control pm_send_pme_to" *) +input wire cfg_pm_send_pme_to; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control ds_bus_number" *) +input wire [7 : 0] cfg_ds_bus_number; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control ds_device_number" *) +input wire [4 : 0] cfg_ds_device_number; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_control:1.0 pcie2_cfg_control ds_function_number" *) +input wire [2 : 0] cfg_ds_function_number; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie_cfg_mgmt:1.0 pcie_cfg_mgmt TYPE1_CFG_REG_ACCESS" *) +input wire cfg_mgmt_wr_rw1c_as_rw; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd received" *) +output wire cfg_msg_received; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd data" *) +output wire [15 : 0] cfg_msg_data; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status bridge_serr_en" *) +output wire cfg_bridge_serr_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status slot_control_electromech_il_ctl_pulse" *) +output wire cfg_slot_control_electromech_il_ctl_pulse; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status root_control_syserr_corr_err_en" *) +output wire cfg_root_control_syserr_corr_err_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status root_control_syserr_non_fatal_err_en" *) +output wire cfg_root_control_syserr_non_fatal_err_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status root_control_syserr_fatal_err_en" *) +output wire cfg_root_control_syserr_fatal_err_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status root_control_pme_int_en" *) +output wire cfg_root_control_pme_int_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status aer_rooterr_corr_err_reporting_en" *) +output wire cfg_aer_rooterr_corr_err_reporting_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status aer_rooterr_non_fatal_err_reporting_en" *) +output wire cfg_aer_rooterr_non_fatal_err_reporting_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status aer_rooterr_fatal_err_reporting_en" *) +output wire cfg_aer_rooterr_fatal_err_reporting_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status aer_rooterr_corr_err_received" *) +output wire cfg_aer_rooterr_corr_err_received; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status aer_rooterr_non_fatal_err_received" *) +output wire cfg_aer_rooterr_non_fatal_err_received; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status aer_rooterr_fatal_err_received" *) +output wire cfg_aer_rooterr_fatal_err_received; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd err_cor" *) +output wire cfg_msg_received_err_cor; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd err_non_fatal" *) +output wire cfg_msg_received_err_non_fatal; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd err_fatal" *) +output wire cfg_msg_received_err_fatal; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd received_pm_as_nak" *) +output wire cfg_msg_received_pm_as_nak; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd pm_pme" *) +output wire cfg_msg_received_pm_pme; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd pme_to_ack" *) +output wire cfg_msg_received_pme_to_ack; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd assert_int_a" *) +output wire cfg_msg_received_assert_int_a; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd assert_int_b" *) +output wire cfg_msg_received_assert_int_b; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd assert_int_c" *) +output wire cfg_msg_received_assert_int_c; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd assert_int_d" *) +output wire cfg_msg_received_assert_int_d; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd deassert_int_a" *) +output wire cfg_msg_received_deassert_int_a; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd deassert_int_b" *) +output wire cfg_msg_received_deassert_int_b; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd deassert_int_c" *) +output wire cfg_msg_received_deassert_int_c; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd deassert_int_d" *) +output wire cfg_msg_received_deassert_int_d; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_msg_rcvd:1.0 pcie2_cfg_msg_rcvd received_setslotpowerlimit" *) +output wire cfg_msg_received_setslotpowerlimit; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl directed_link_change" *) +input wire [1 : 0] pl_directed_link_change; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl directed_link_width" *) +input wire [1 : 0] pl_directed_link_width; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl directed_link_speed" *) +input wire pl_directed_link_speed; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl directed_link_auton" *) +input wire pl_directed_link_auton; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl upstream_prefer_deemph" *) +input wire pl_upstream_prefer_deemph; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl sel_lnk_rate" *) +output wire pl_sel_lnk_rate; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl sel_lnk_width" *) +output wire [1 : 0] pl_sel_lnk_width; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl ltssm_state" *) +output wire [5 : 0] pl_ltssm_state; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl lane_reversal_mode" *) +output wire [1 : 0] pl_lane_reversal_mode; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl phy_lnk_up" *) +output wire pl_phy_lnk_up; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl tx_pm_state" *) +output wire [2 : 0] pl_tx_pm_state; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl rx_pm_state" *) +output wire [1 : 0] pl_rx_pm_state; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl link_upcfg_cap" *) +output wire pl_link_upcfg_cap; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl link_gen2_cap" *) +output wire pl_link_gen2_cap; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl link_partner_gen2_supported" *) +output wire pl_link_partner_gen2_supported; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl initial_link_width" *) +output wire [2 : 0] pl_initial_link_width; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl directed_change_done" *) +output wire pl_directed_change_done; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl received_hot_rst" *) +output wire pl_received_hot_rst; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl transmit_hot_rst" *) +input wire pl_transmit_hot_rst; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_pl:1.0 pcie2_pl downstream_deemph_source" *) +input wire pl_downstream_deemph_source; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err err_aer_headerlog" *) +input wire [127 : 0] cfg_err_aer_headerlog; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err aer_interrupt_msgnum" *) +input wire [4 : 0] cfg_aer_interrupt_msgnum; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err err_aer_headerlog_set" *) +output wire cfg_err_aer_headerlog_set; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err aer_ecrc_check_en" *) +output wire cfg_aer_ecrc_check_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_err:1.0 pcie2_cfg_err aer_ecrc_gen_en" *) +output wire cfg_aer_ecrc_gen_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:pcie2_cfg_status:1.0 pcie2_cfg_status vc_tcvc_map" *) +output wire [6 : 0] cfg_vc_tcvc_map; +(* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME CLK.sys_clk, FREQ_HZ 100000000, FREQ_TOLERANCE_HZ 0, PHASE 0.000, INSERT_VIP 0" *) +(* X_INTERFACE_INFO = "xilinx.com:signal:clock:1.0 CLK.sys_clk CLK" *) +input wire sys_clk; +(* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME RST.sys_rst_n, POLARITY ACTIVE_LOW, INSERT_VIP 0" *) +(* X_INTERFACE_INFO = "xilinx.com:signal:reset:1.0 RST.sys_rst_n RST" *) +input wire sys_rst_n; +(* X_INTERFACE_INFO = "xilinx.com:interface:pipe_clock:1.0 pipe_clock mmcm_rst_n" *) +input wire pipe_mmcm_rst_n; +input wire pcie_drp_clk; +(* X_INTERFACE_INFO = "xilinx.com:interface:drp:1.0 drp DEN" *) +input wire pcie_drp_en; +(* X_INTERFACE_INFO = "xilinx.com:interface:drp:1.0 drp DWE" *) +input wire pcie_drp_we; +(* X_INTERFACE_INFO = "xilinx.com:interface:drp:1.0 drp DADDR" *) +input wire [8 : 0] pcie_drp_addr; +(* X_INTERFACE_INFO = "xilinx.com:interface:drp:1.0 drp DI" *) +input wire [15 : 0] pcie_drp_di; +(* X_INTERFACE_INFO = "xilinx.com:interface:drp:1.0 drp DO" *) +output wire [15 : 0] pcie_drp_do; +(* X_INTERFACE_INFO = "xilinx.com:interface:drp:1.0 drp DRDY" *) +output wire pcie_drp_rdy; + + pcie_7x_0_pcie2_top #( + .c_component_name("pcie_7x_0"), + .dev_port_type("0000"), + .c_dev_port_type("0"), + .c_header_type("00"), + .c_upstream_facing("TRUE"), + .max_lnk_wdt("000100"), + .max_lnk_spd("2"), + .c_gen1(1'B1), + .pci_exp_int_freq(3), + .c_pcie_fast_config(0), + .bar_0("FFFF0000"), + .bar_1("00000000"), + .bar_2("00000000"), + .bar_3("00000000"), + .bar_4("00000000"), + .bar_5("00000000"), + .xrom_bar("00000000"), + .cost_table(1), + .ven_id("10EE"), + .dev_id("7024"), + .rev_id("00"), + .subsys_ven_id("10EE"), + .subsys_id("0007"), + .class_code("050000"), + .cardbus_cis_ptr("00000000"), + .cap_ver("2"), + .c_pcie_cap_slot_implemented("FALSE"), + .mps("011"), + .cmps("3"), + .ext_tag_fld_sup("FALSE"), + .c_dev_control_ext_tag_default("FALSE"), + .phantm_func_sup("00"), + .c_phantom_functions("0"), + .ep_l0s_accpt_lat("000"), + .c_ep_l0s_accpt_lat("0"), + .ep_l1_accpt_lat("111"), + .c_ep_l1_accpt_lat("7"), + .c_cpl_timeout_disable_sup("FALSE"), + .c_cpl_timeout_range("0010"), + .c_cpl_timeout_ranges_sup("2"), + .c_buf_opt_bma("TRUE"), + .c_perf_level_high("TRUE"), + .c_tx_last_tlp("30"), + .c_rx_ram_limit("FFF"), + .c_fc_ph("32"), + .c_fc_pd("949"), + .c_fc_nph("12"), + .c_fc_npd("24"), + .c_fc_cplh("36"), + .c_fc_cpld("973"), + .c_cpl_inf("TRUE"), + .c_cpl_infinite("TRUE"), + .c_dll_lnk_actv_cap("FALSE"), + .c_trgt_lnk_spd("2"), + .c_hw_auton_spd_disable("FALSE"), + .c_de_emph("FALSE"), + .slot_clk("TRUE"), + .c_rcb("0"), + .c_root_cap_crs("FALSE"), + .c_slot_cap_attn_butn("FALSE"), + .c_slot_cap_attn_ind("FALSE"), + .c_slot_cap_pwr_ctrl("FALSE"), + .c_slot_cap_pwr_ind("FALSE"), + .c_slot_cap_hotplug_surprise("FALSE"), + .c_slot_cap_hotplug_cap("FALSE"), + .c_slot_cap_mrl("FALSE"), + .c_slot_cap_elec_interlock("FALSE"), + .c_slot_cap_no_cmd_comp_sup("FALSE"), + .c_slot_cap_pwr_limit_value("0"), + .c_slot_cap_pwr_limit_scale("0"), + .c_slot_cap_physical_slot_num("0"), + .intx("TRUE"), + .int_pin("1"), + .c_msi_cap_on("FALSE"), + .c_pm_cap_next_ptr("60"), + .c_msi_64b_addr("TRUE"), + .c_msi("0"), + .c_msi_mult_msg_extn("0"), + .c_msi_per_vctr_mask_cap("FALSE"), + .c_msix_cap_on("FALSE"), + .c_msix_next_ptr("00"), + .c_pcie_cap_next_ptr("00"), + .c_msix_table_size("000"), + .c_msix_table_offset("0"), + .c_msix_table_bir("0"), + .c_msix_pba_offset("0"), + .c_msix_pba_bir("0"), + .dsi("0"), + .c_dsi_bool("FALSE"), + .d1_sup("0"), + .c_d1_support("FALSE"), + .d2_sup("0"), + .c_d2_support("FALSE"), + .pme_sup("0F"), + .c_pme_support("0F"), + .no_soft_rst("TRUE"), + .pwr_con_d0_state("00"), + .con_scl_fctr_d0_state("0"), + .pwr_con_d1_state("00"), + .con_scl_fctr_d1_state("0"), + .pwr_con_d2_state("00"), + .con_scl_fctr_d2_state("0"), + .pwr_con_d3_state("00"), + .con_scl_fctr_d3_state("0"), + .pwr_dis_d0_state("00"), + .dis_scl_fctr_d0_state("0"), + .pwr_dis_d1_state("00"), + .dis_scl_fctr_d1_state("0"), + .pwr_dis_d2_state("00"), + .dis_scl_fctr_d2_state("0"), + .pwr_dis_d3_state("00"), + .dis_scl_fctr_d3_state("0"), + .c_dsn_cap_enabled("TRUE"), + .c_dsn_base_ptr("100"), + .c_vc_cap_enabled("FALSE"), + .c_vc_base_ptr("000"), + .c_vc_cap_reject_snoop("FALSE"), + .c_vsec_cap_enabled("FALSE"), + .c_vsec_base_ptr("000"), + .c_vsec_next_ptr("000"), + .c_dsn_next_ptr("000"), + .c_vc_next_ptr("000"), + .c_pci_cfg_space_addr("3F"), + .c_ext_pci_cfg_space_addr("3FF"), + .c_last_cfg_dw("10C"), + .c_enable_msg_route("00000000000"), + .bram_lat("0"), + .c_rx_raddr_lat("0"), + .c_rx_rdata_lat("2"), + .c_rx_write_lat("0"), + .c_tx_raddr_lat("0"), + .c_tx_rdata_lat("2"), + .c_tx_write_lat("0"), + .c_ll_ack_timeout_enable("FALSE"), + .c_ll_ack_timeout_function("0"), + .c_ll_ack_timeout("0000"), + .c_ll_replay_timeout_enable("FALSE"), + .c_ll_replay_timeout_func("1"), + .c_ll_replay_timeout("0000"), + .c_dis_lane_reverse("TRUE"), + .c_upconfig_capable("TRUE"), + .c_disable_scrambling("FALSE"), + .c_disable_tx_aspm_l0s("FALSE"), + .c_pcie_dbg_ports("TRUE"), + .pci_exp_ref_freq("0"), + .c_xlnx_ref_board("ZC706"), + .c_pcie_blk_locn("0"), + .c_ur_atomic("FALSE"), + .c_dev_cap2_atomicop32_completer_supported("FALSE"), + .c_dev_cap2_atomicop64_completer_supported("FALSE"), + .c_dev_cap2_cas128_completer_supported("FALSE"), + .c_dev_cap2_tph_completer_supported("00"), + .c_dev_cap2_ari_forwarding_supported("FALSE"), + .c_dev_cap2_atomicop_routing_supported("FALSE"), + .c_link_cap_aspm_optionality("FALSE"), + .c_aer_cap_on("FALSE"), + .c_aer_base_ptr("000"), + .c_aer_cap_nextptr("000"), + .c_aer_cap_ecrc_check_capable("FALSE"), + .c_aer_cap_ecrc_gen_capable("FALSE"), + .c_aer_cap_multiheader("FALSE"), + .c_aer_cap_permit_rooterr_update("FALSE"), + .c_rbar_cap_on("FALSE"), + .c_rbar_base_ptr("000"), + .c_rbar_cap_nextptr("000"), + .c_rbar_num("0"), + .c_rbar_cap_sup0("00001"), + .c_rbar_cap_index0("0"), + .c_rbar_cap_control_encodedbar0("00"), + .c_rbar_cap_sup1("00001"), + .c_rbar_cap_index1("0"), + .c_rbar_cap_control_encodedbar1("00"), + .c_rbar_cap_sup2("00001"), + .c_rbar_cap_index2("0"), + .c_rbar_cap_control_encodedbar2("00"), + .c_rbar_cap_sup3("00001"), + .c_rbar_cap_index3("0"), + .c_rbar_cap_control_encodedbar3("00"), + .c_rbar_cap_sup4("00001"), + .c_rbar_cap_index4("0"), + .c_rbar_cap_control_encodedbar4("00"), + .c_rbar_cap_sup5("00001"), + .c_rbar_cap_index5("0"), + .c_rbar_cap_control_encodedbar5("00"), + .c_recrc_check("0"), + .c_recrc_check_trim("FALSE"), + .c_disable_rx_poisoned_resp("FALSE"), + .c_trn_np_fc("TRUE"), + .c_ur_inv_req("TRUE"), + .c_ur_prs_response("TRUE"), + .c_silicon_rev("2"), + .c_aer_cap_optional_err_support("000000"), + .LINK_CAP_MAX_LINK_WIDTH(4), + .C_DATA_WIDTH(64), + .PIPE_SIM("FALSE"), + .PCIE_EXT_CLK("TRUE"), + .PCIE_EXT_GT_COMMON("FALSE"), + .EXT_CH_GT_DRP("FALSE"), + .TRANSCEIVER_CTRL_STATUS_PORTS("FALSE"), + .SHARED_LOGIC_IN_CORE("FALSE"), + .ERR_REPORTING_IF("TRUE"), + .PL_INTERFACE("TRUE"), + .CFG_MGMT_IF("TRUE"), + .CFG_CTL_IF("TRUE"), + .CFG_STATUS_IF("TRUE"), + .RCV_MSG_IF("TRUE"), + .CFG_FC_IF("TRUE"), + .EXT_PIPE_INTERFACE("FALSE"), + .EXT_STARTUP_PRIMITIVE("FALSE"), + .KEEP_WIDTH(8), + .PCIE_ASYNC_EN("FALSE"), + .ENABLE_JTAG_DBG("FALSE"), + .REDUCE_OOB_FREQ("FALSE") + ) inst ( + .pci_exp_txp(pci_exp_txp), + .pci_exp_txn(pci_exp_txn), + .pci_exp_rxp(pci_exp_rxp), + .pci_exp_rxn(pci_exp_rxn), + .int_pclk_out_slave(), + .int_pipe_rxusrclk_out(), + .int_rxoutclk_out(), + .int_dclk_out(), + .int_mmcm_lock_out(), + .int_userclk1_out(), + .int_userclk2_out(), + .int_oobclk_out(), + .int_qplllock_out(), + .int_qplloutclk_out(), + .int_qplloutrefclk_out(), + .int_pclk_sel_slave(4'B0), + .pipe_pclk_in(pipe_pclk_in), + .pipe_rxusrclk_in(pipe_rxusrclk_in), + .pipe_rxoutclk_in(pipe_rxoutclk_in), + .pipe_dclk_in(pipe_dclk_in), + .pipe_userclk1_in(pipe_userclk1_in), + .pipe_userclk2_in(pipe_userclk2_in), + .pipe_oobclk_in(pipe_oobclk_in), + .pipe_mmcm_lock_in(pipe_mmcm_lock_in), + .pipe_txoutclk_out(pipe_txoutclk_out), + .pipe_rxoutclk_out(pipe_rxoutclk_out), + .pipe_pclk_sel_out(pipe_pclk_sel_out), + .pipe_gen3_out(pipe_gen3_out), + .user_clk_out(user_clk_out), + .user_reset_out(user_reset_out), + .user_lnk_up(user_lnk_up), + .user_app_rdy(user_app_rdy), + .tx_buf_av(tx_buf_av), + .tx_cfg_req(tx_cfg_req), + .tx_err_drop(tx_err_drop), + .s_axis_tx_tready(s_axis_tx_tready), + .s_axis_tx_tdata(s_axis_tx_tdata), + .s_axis_tx_tkeep(s_axis_tx_tkeep), + .s_axis_tx_tlast(s_axis_tx_tlast), + .s_axis_tx_tvalid(s_axis_tx_tvalid), + .s_axis_tx_tuser(s_axis_tx_tuser), + .tx_cfg_gnt(tx_cfg_gnt), + .m_axis_rx_tdata(m_axis_rx_tdata), + .m_axis_rx_tkeep(m_axis_rx_tkeep), + .m_axis_rx_tlast(m_axis_rx_tlast), + .m_axis_rx_tvalid(m_axis_rx_tvalid), + .m_axis_rx_tready(m_axis_rx_tready), + .m_axis_rx_tuser(m_axis_rx_tuser), + .rx_np_ok(rx_np_ok), + .rx_np_req(rx_np_req), + .fc_cpld(fc_cpld), + .fc_cplh(fc_cplh), + .fc_npd(fc_npd), + .fc_nph(fc_nph), + .fc_pd(fc_pd), + .fc_ph(fc_ph), + .fc_sel(fc_sel), + .cfg_mgmt_do(cfg_mgmt_do), + .cfg_mgmt_rd_wr_done(cfg_mgmt_rd_wr_done), + .cfg_status(cfg_status), + .cfg_command(cfg_command), + .cfg_dstatus(cfg_dstatus), + .cfg_dcommand(cfg_dcommand), + .cfg_lstatus(cfg_lstatus), + .cfg_lcommand(cfg_lcommand), + .cfg_dcommand2(cfg_dcommand2), + .cfg_pcie_link_state(cfg_pcie_link_state), + .cfg_pmcsr_pme_en(cfg_pmcsr_pme_en), + .cfg_pmcsr_powerstate(cfg_pmcsr_powerstate), + .cfg_pmcsr_pme_status(cfg_pmcsr_pme_status), + .cfg_received_func_lvl_rst(cfg_received_func_lvl_rst), + .cfg_mgmt_di(cfg_mgmt_di), + .cfg_mgmt_byte_en(cfg_mgmt_byte_en), + .cfg_mgmt_dwaddr(cfg_mgmt_dwaddr), + .cfg_mgmt_wr_en(cfg_mgmt_wr_en), + .cfg_mgmt_rd_en(cfg_mgmt_rd_en), + .cfg_mgmt_wr_readonly(cfg_mgmt_wr_readonly), + .cfg_err_ecrc(cfg_err_ecrc), + .cfg_err_ur(cfg_err_ur), + .cfg_err_cpl_timeout(cfg_err_cpl_timeout), + .cfg_err_cpl_unexpect(cfg_err_cpl_unexpect), + .cfg_err_cpl_abort(cfg_err_cpl_abort), + .cfg_err_posted(cfg_err_posted), + .cfg_err_cor(cfg_err_cor), + .cfg_err_atomic_egress_blocked(cfg_err_atomic_egress_blocked), + .cfg_err_internal_cor(cfg_err_internal_cor), + .cfg_err_malformed(cfg_err_malformed), + .cfg_err_mc_blocked(cfg_err_mc_blocked), + .cfg_err_poisoned(cfg_err_poisoned), + .cfg_err_norecovery(cfg_err_norecovery), + .cfg_err_tlp_cpl_header(cfg_err_tlp_cpl_header), + .cfg_err_cpl_rdy(cfg_err_cpl_rdy), + .cfg_err_locked(cfg_err_locked), + .cfg_err_acs(cfg_err_acs), + .cfg_err_internal_uncor(cfg_err_internal_uncor), + .cfg_trn_pending(cfg_trn_pending), + .cfg_pm_halt_aspm_l0s(cfg_pm_halt_aspm_l0s), + .cfg_pm_halt_aspm_l1(cfg_pm_halt_aspm_l1), + .cfg_pm_force_state_en(cfg_pm_force_state_en), + .cfg_pm_force_state(cfg_pm_force_state), + .cfg_dsn(cfg_dsn), + .cfg_interrupt(cfg_interrupt), + .cfg_interrupt_rdy(cfg_interrupt_rdy), + .cfg_interrupt_assert(cfg_interrupt_assert), + .cfg_interrupt_di(cfg_interrupt_di), + .cfg_interrupt_do(cfg_interrupt_do), + .cfg_interrupt_mmenable(cfg_interrupt_mmenable), + .cfg_interrupt_msienable(cfg_interrupt_msienable), + .cfg_interrupt_msixenable(cfg_interrupt_msixenable), + .cfg_interrupt_msixfm(cfg_interrupt_msixfm), + .cfg_interrupt_stat(cfg_interrupt_stat), + .cfg_pciecap_interrupt_msgnum(cfg_pciecap_interrupt_msgnum), + .cfg_to_turnoff(cfg_to_turnoff), + .cfg_turnoff_ok(cfg_turnoff_ok), + .cfg_bus_number(cfg_bus_number), + .cfg_device_number(cfg_device_number), + .cfg_function_number(cfg_function_number), + .cfg_pm_wake(cfg_pm_wake), + .cfg_pm_send_pme_to(cfg_pm_send_pme_to), + .cfg_ds_bus_number(cfg_ds_bus_number), + .cfg_ds_device_number(cfg_ds_device_number), + .cfg_ds_function_number(cfg_ds_function_number), + .cfg_mgmt_wr_rw1c_as_rw(cfg_mgmt_wr_rw1c_as_rw), + .cfg_msg_received(cfg_msg_received), + .cfg_msg_data(cfg_msg_data), + .cfg_bridge_serr_en(cfg_bridge_serr_en), + .cfg_slot_control_electromech_il_ctl_pulse(cfg_slot_control_electromech_il_ctl_pulse), + .cfg_root_control_syserr_corr_err_en(cfg_root_control_syserr_corr_err_en), + .cfg_root_control_syserr_non_fatal_err_en(cfg_root_control_syserr_non_fatal_err_en), + .cfg_root_control_syserr_fatal_err_en(cfg_root_control_syserr_fatal_err_en), + .cfg_root_control_pme_int_en(cfg_root_control_pme_int_en), + .cfg_aer_rooterr_corr_err_reporting_en(cfg_aer_rooterr_corr_err_reporting_en), + .cfg_aer_rooterr_non_fatal_err_reporting_en(cfg_aer_rooterr_non_fatal_err_reporting_en), + .cfg_aer_rooterr_fatal_err_reporting_en(cfg_aer_rooterr_fatal_err_reporting_en), + .cfg_aer_rooterr_corr_err_received(cfg_aer_rooterr_corr_err_received), + .cfg_aer_rooterr_non_fatal_err_received(cfg_aer_rooterr_non_fatal_err_received), + .cfg_aer_rooterr_fatal_err_received(cfg_aer_rooterr_fatal_err_received), + .cfg_msg_received_err_cor(cfg_msg_received_err_cor), + .cfg_msg_received_err_non_fatal(cfg_msg_received_err_non_fatal), + .cfg_msg_received_err_fatal(cfg_msg_received_err_fatal), + .cfg_msg_received_pm_as_nak(cfg_msg_received_pm_as_nak), + .cfg_msg_received_pm_pme(cfg_msg_received_pm_pme), + .cfg_msg_received_pme_to_ack(cfg_msg_received_pme_to_ack), + .cfg_msg_received_assert_int_a(cfg_msg_received_assert_int_a), + .cfg_msg_received_assert_int_b(cfg_msg_received_assert_int_b), + .cfg_msg_received_assert_int_c(cfg_msg_received_assert_int_c), + .cfg_msg_received_assert_int_d(cfg_msg_received_assert_int_d), + .cfg_msg_received_deassert_int_a(cfg_msg_received_deassert_int_a), + .cfg_msg_received_deassert_int_b(cfg_msg_received_deassert_int_b), + .cfg_msg_received_deassert_int_c(cfg_msg_received_deassert_int_c), + .cfg_msg_received_deassert_int_d(cfg_msg_received_deassert_int_d), + .cfg_msg_received_setslotpowerlimit(cfg_msg_received_setslotpowerlimit), + .pl_directed_link_change(pl_directed_link_change), + .pl_directed_link_width(pl_directed_link_width), + .pl_directed_link_speed(pl_directed_link_speed), + .pl_directed_link_auton(pl_directed_link_auton), + .pl_upstream_prefer_deemph(pl_upstream_prefer_deemph), + .pl_sel_lnk_rate(pl_sel_lnk_rate), + .pl_sel_lnk_width(pl_sel_lnk_width), + .pl_ltssm_state(pl_ltssm_state), + .pl_lane_reversal_mode(pl_lane_reversal_mode), + .pl_phy_lnk_up(pl_phy_lnk_up), + .pl_tx_pm_state(pl_tx_pm_state), + .pl_rx_pm_state(pl_rx_pm_state), + .pl_link_upcfg_cap(pl_link_upcfg_cap), + .pl_link_gen2_cap(pl_link_gen2_cap), + .pl_link_partner_gen2_supported(pl_link_partner_gen2_supported), + .pl_initial_link_width(pl_initial_link_width), + .pl_directed_change_done(pl_directed_change_done), + .pl_received_hot_rst(pl_received_hot_rst), + .pl_transmit_hot_rst(pl_transmit_hot_rst), + .pl_downstream_deemph_source(pl_downstream_deemph_source), + .cfg_err_aer_headerlog(cfg_err_aer_headerlog), + .cfg_aer_interrupt_msgnum(cfg_aer_interrupt_msgnum), + .cfg_err_aer_headerlog_set(cfg_err_aer_headerlog_set), + .cfg_aer_ecrc_check_en(cfg_aer_ecrc_check_en), + .cfg_aer_ecrc_gen_en(cfg_aer_ecrc_gen_en), + .cfg_vc_tcvc_map(cfg_vc_tcvc_map), + .sys_clk(sys_clk), + .sys_rst_n(sys_rst_n), + .pipe_mmcm_rst_n(pipe_mmcm_rst_n), + .startup_eos_in(1'B0), + .startup_cfgclk(), + .startup_cfgmclk(), + .startup_eos(), + .startup_preq(), + .startup_clk(1'B0), + .startup_gsr(1'B0), + .startup_gts(1'B0), + .startup_keyclearb(1'B1), + .startup_pack(1'B0), + .startup_usrcclko(1'B1), + .startup_usrcclkts(1'B0), + .startup_usrdoneo(1'B0), + .startup_usrdonets(1'B1), + .icap_clk(1'B0), + .icap_csib(1'B0), + .icap_rdwrb(1'B0), + .icap_i(32'B0), + .icap_o(), + .qpll_drp_crscode(12'B0), + .qpll_drp_fsm(18'B0), + .qpll_drp_done(2'B0), + .qpll_drp_reset(2'B0), + .qpll_qplllock(2'B0), + .qpll_qplloutclk(2'B0), + .qpll_qplloutrefclk(2'B0), + .qpll_qplld(), + .qpll_qpllreset(), + .qpll_drp_clk(), + .qpll_drp_rst_n(), + .qpll_drp_ovrd(), + .qpll_drp_gen3(), + .qpll_drp_start(), + .pipe_txprbssel(3'B0), + .pipe_rxprbssel(3'B0), + .pipe_txprbsforceerr(1'B0), + .pipe_rxprbscntreset(1'B0), + .pipe_loopback(3'B0), + .pipe_rxprbserr(), + .pipe_txinhibit(4'B0), + .pipe_rst_fsm(), + .pipe_qrst_fsm(), + .pipe_rate_fsm(), + .pipe_sync_fsm_tx(), + .pipe_sync_fsm_rx(), + .pipe_drp_fsm(), + .pipe_rst_idle(), + .pipe_qrst_idle(), + .pipe_rate_idle(), + .pipe_eyescandataerror(), + .pipe_rxstatus(), + .pipe_dmonitorout(), + .pipe_cpll_lock(), + .pipe_qpll_lock(), + .pipe_rxpmaresetdone(), + .pipe_rxbufstatus(), + .pipe_txphaligndone(), + .pipe_txphinitdone(), + .pipe_txdlysresetdone(), + .pipe_rxphaligndone(), + .pipe_rxdlysresetdone(), + .pipe_rxsyncdone(), + .pipe_rxdisperr(), + .pipe_rxnotintable(), + .pipe_rxcommadet(), + .gt_ch_drp_rdy(), + .pipe_debug_1(), + .pipe_debug_2(), + .pipe_debug_3(), + .pipe_debug_4(), + .pipe_debug_5(), + .pipe_debug_6(), + .pipe_debug_7(), + .pipe_debug_8(), + .pipe_debug_9(), + .pipe_debug(), + .ext_ch_gt_drpclk(), + .ext_ch_gt_drpaddr(36'B0), + .ext_ch_gt_drpen(4'B0), + .ext_ch_gt_drpdi(64'B0), + .ext_ch_gt_drpwe(4'B0), + .ext_ch_gt_drpdo(), + .ext_ch_gt_drprdy(), + .pcie_drp_clk(pcie_drp_clk), + .pcie_drp_en(pcie_drp_en), + .pcie_drp_we(pcie_drp_we), + .pcie_drp_addr(pcie_drp_addr), + .pcie_drp_di(pcie_drp_di), + .pcie_drp_do(pcie_drp_do), + .pcie_drp_rdy(pcie_drp_rdy), + .common_commands_in(12'B0), + .pipe_rx_0_sigs(25'B0), + .pipe_rx_1_sigs(25'B0), + .pipe_rx_2_sigs(25'B0), + .pipe_rx_3_sigs(25'B0), + .pipe_rx_4_sigs(25'B0), + .pipe_rx_5_sigs(25'B0), + .pipe_rx_6_sigs(25'B0), + .pipe_rx_7_sigs(25'B0), + .common_commands_out(), + .pipe_tx_0_sigs(), + .pipe_tx_1_sigs(), + .pipe_tx_2_sigs(), + .pipe_tx_3_sigs(), + .pipe_tx_4_sigs(), + .pipe_tx_5_sigs(), + .pipe_tx_6_sigs(), + .pipe_tx_7_sigs() + ); +endmodule diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/synth/pcie_7x_0_ooc.xdc b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/synth/pcie_7x_0_ooc.xdc new file mode 100644 index 0000000..a8b7737 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/synth/pcie_7x_0_ooc.xdc @@ -0,0 +1,76 @@ +##----------------------------------------------------------------------------- +## +## (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. +## +##----------------------------------------------------------------------------- +## Project : Series-7 Integrated Block for PCI Express +## File : pcie_7x_0_ooc.xdc +## Version : 3.3 +# +# This constraints file contains default clock frequencies to be used during out-of-context flows such as +# OOC Synthesis and Hierarchical Designs. For best results the frequencies should be modified +# to match the target frequencies. +# This constraints file is not used in normal top-down synthesis (the default flow of Vivado) + +# +create_clock -name pcie_7x_0_sys_clk -period 10 [get_ports sys_clk] +# 100/125/250 MHz + +create_clock -name pcie_7x_0_pclk -period 4 [get_ports pipe_pclk_in] +# 125/250 MHz + +create_clock -name pcie_7x_0_rxusrclk -period 4 [get_ports pipe_rxusrclk_in] +# 125/250 MHz + +create_clock -name pcie_7x_0_dclk -period 8 [get_ports pipe_dclk_in] +# 125 MHz + +create_clock -name pcie_7x_0_usrclk1 -period 4 [get_ports pipe_userclk1_in] +create_clock -name pcie_7x_0_usrclk2 -period 4 [get_ports pipe_userclk2_in] + +create_clock -name pcie_7x_0_oobclk -period 4 [get_ports pipe_oobclk_in] +# 50 MHz , 125/250 MHz diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/sys_clk_gen_ps_v.txt b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/sys_clk_gen_ps_v.txt new file mode 100644 index 0000000..98b9d08 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pcie_7x_0/sys_clk_gen_ps_v.txt @@ -0,0 +1 @@ +//-------------------------------------------------------------------------------- diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pr_read_mem/pr_read_mem.xci b/projects/ZC706/ZC706.srcs/sources_1/ip/pr_read_mem/pr_read_mem.xci new file mode 100644 index 0000000..f5010b4 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pr_read_mem/pr_read_mem.xci @@ -0,0 +1,318 @@ + + + xilinx.com + xci + unknown + 1.0 + + + pr_read_mem + + + 4096 + 1 + 0 + 0 + 0 + + 1 + 100000000 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0.000 + AXI4LITE + READ_WRITE + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + 1 + 100000000 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0.000 + AXI4LITE + READ_WRITE + 0 + 0 + 0 + 0 + 0 + OTHER + NONE + 8192 + 32 + 1 + + OTHER + NONE + 8192 + 32 + 1 + + + 100000000 + 0 + 0 + 0.000 + 0 + 4 + 4 + 1 + 4 + 0 + 1 + 9 + 0 + 0 + 1 + NONE + 0 + 0 + 0 + ./ + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + Estimated Power for IP : 6.700549 mW + zynq + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + pr_read_mem.mem + pr_read_mem.mif + 0 + 1 + 0 + 0 + 1 + 16 + 16 + 1 + 1 + 64 + 64 + 0 + 0 + CE + CE + ALL + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + 1 + 16 + 16 + WRITE_FIRST + WRITE_FIRST + 64 + 64 + zynq + 4 + Memory_Slave + AXI4_Full + false + Minimum_Area + false + 9 + NONE + ../../../../coe/pr_read.coe + ALL + pr_read_mem + false + false + false + false + false + false + false + false + false + Use_ENA_Pin + Always_Enabled + Single_Bit_Error_Injection + true + Native + true + no_mem_loaded + Single_Port_RAM + WRITE_FIRST + WRITE_FIRST + 0 + 0 + BRAM + 0 + 100 + 100 + 50 + 0 + 0 + 0 + 8kx2 + false + false + 1 + 1 + 64 + 64 + false + false + false + false + 0 + false + false + CE + CE + SYNC + false + false + false + false + false + false + false + 16 + 64 + 64 + No_ECC + false + false + false + Stand_Alone + zynq + xilinx.com:zc706:part0:1.4 + + xc7z045 + ffg900 + VERILOG + + MIXED + -2 + + + TRUE + TRUE + IP_Flow + 4 + TRUE + ../../../../ZC706.gen/sources_1/ip/pr_read_mem + + . + 2020.2 + OUT_OF_CONTEXT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/pr_ref_mem/pr_ref_mem.xci b/projects/ZC706/ZC706.srcs/sources_1/ip/pr_ref_mem/pr_ref_mem.xci new file mode 100644 index 0000000..dc67ed9 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/pr_ref_mem/pr_ref_mem.xci @@ -0,0 +1,319 @@ + + + xilinx.com + xci + unknown + 1.0 + + + pr_ref_mem + + + 4096 + 1 + 0 + 0 + 0 + + 1 + 100000000 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0.000 + AXI4LITE + READ_WRITE + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + 1 + 100000000 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0.000 + AXI4LITE + READ_WRITE + 0 + 0 + 0 + 0 + 0 + OTHER + NONE + 8192 + 32 + 1 + + OTHER + NONE + 8192 + 32 + 1 + + + 100000000 + 0 + 0 + 0.000 + 0 + 6 + 6 + 1 + 4 + 0 + 1 + 9 + 0 + 0 + 1 + NONE + 0 + 0 + 0 + ./ + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + Estimated Power for IP : 6.700549 mW + zynq + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + pr_ref_mem.mem + pr_ref_mem.mif + 0 + 1 + 0 + 0 + 1 + 64 + 64 + 1 + 1 + 64 + 64 + 0 + 0 + CE + CE + ALL + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + 1 + 64 + 64 + WRITE_FIRST + WRITE_FIRST + 64 + 64 + zynq + 4 + Memory_Slave + AXI4_Full + false + Minimum_Area + false + 9 + NONE + ../../../../coe/pr_ref.coe + ALL + pr_ref_mem + false + false + false + false + false + false + false + false + false + Use_ENA_Pin + Always_Enabled + Single_Bit_Error_Injection + true + Native + true + no_mem_loaded + Single_Port_RAM + WRITE_FIRST + WRITE_FIRST + 0 + 0 + BRAM + 0 + 100 + 100 + 50 + 0 + 0 + 0 + 8kx2 + false + false + 1 + 1 + 64 + 64 + false + false + false + false + 0 + false + false + CE + CE + SYNC + false + false + false + false + false + false + false + 64 + 64 + 64 + No_ECC + false + false + false + Stand_Alone + zynq + xilinx.com:zc706:part0:1.4 + + xc7z045 + ffg900 + VERILOG + + MIXED + -2 + + + TRUE + TRUE + IP_Flow + 4 + TRUE + ../../../../ZC706.gen/sources_1/ip/pr_ref_mem + + . + 2020.2 + OUT_OF_CONTEXT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/rdback_fifo/rdback_fifo.xci b/projects/ZC706/ZC706.srcs/sources_1/ip/rdback_fifo/rdback_fifo.xci new file mode 100644 index 0000000..3bb41a3 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/rdback_fifo/rdback_fifo.xci @@ -0,0 +1,585 @@ + + + xilinx.com + xci + unknown + 1.0 + + + rdback_fifo + + + + + + 100000000 + 0 + 0 + 0.000 + + + 100000000 + 0 + 0 + 0.000 + 1 + 0 + 0 + 0 + + 1 + 100000000 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0.000 + AXI4LITE + READ_WRITE + 0 + 0 + 0 + 0 + 0 + + 100000000 + 0 + 0 + 0 + 0 + 0 + undef + 0.000 + 0 + 0 + 0 + 0 + + + + 100000000 + 0 + 0 + 0.000 + + 100000000 + 0 + 0 + 0.000 + 0 + 1 + 0 + 0 + 0 + + 1 + 100000000 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0.000 + AXI4LITE + READ_WRITE + 0 + 0 + 0 + 0 + 0 + + 100000000 + 0 + 0 + 0 + 0 + 0 + undef + 0.000 + 0 + 0 + 0 + 0 + + + + 100000000 + 0 + 0 + 0.000 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 1 + 1 + 1 + 4 + 0 + 32 + 1 + 1 + 1 + 64 + 1 + 8 + 1 + 1 + 1 + 1 + 1 + 0 + 11 + BlankString + 512 + 1 + 32 + 64 + 1 + 64 + 2 + 0 + 256 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + zynq + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + BlankString + 1 + 0 + 0 + 0 + 0 + 1 + 1kx36 + 1kx18 + 512x36 + 1kx36 + 512x36 + 1kx36 + 512x36 + 4 + 1022 + 1022 + 1022 + 1022 + 1022 + 1022 + 5 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 895 + 1023 + 1023 + 1023 + 1023 + 1023 + 1023 + 894 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 12 + 2048 + 1 + 11 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 11 + 1024 + 1024 + 16 + 1024 + 16 + 1024 + 16 + 1 + 10 + 10 + 4 + 10 + 4 + 10 + 4 + 1 + 32 + 0 + 0 + false + false + false + 0 + 0 + Slave_Interface_Clock_Enable + Common_Clock + rdback_fifo + 64 + false + 11 + false + false + 0 + 4 + 1022 + 1022 + 1022 + 1022 + 1022 + 1022 + 5 + false + false + false + false + false + false + false + false + false + Hard_ECC + false + false + false + false + false + false + true + false + false + true + Data_FIFO + Data_FIFO + Data_FIFO + Data_FIFO + Data_FIFO + Data_FIFO + Common_Clock_Block_RAM + Common_Clock_Block_RAM + Common_Clock_Block_RAM + Common_Clock_Block_RAM + Common_Clock_Block_RAM + Common_Clock_Block_RAM + Common_Clock_Block_RAM + 0 + 895 + 1023 + 1023 + 1023 + 1023 + 1023 + 1023 + 894 + false + false + false + 0 + Native + false + false + false + false + false + false + false + false + false + false + false + false + false + false + 512 + 1024 + 1024 + 16 + 1024 + 16 + 1024 + 16 + false + 256 + 2048 + Embedded_Reg + false + false + Active_High + Active_High + AXI4 + First_Word_Fall_Through + Single_Programmable_Empty_Threshold_Constant + No_Programmable_Empty_Threshold + No_Programmable_Empty_Threshold + No_Programmable_Empty_Threshold + No_Programmable_Empty_Threshold + No_Programmable_Empty_Threshold + No_Programmable_Empty_Threshold + Single_Programmable_Full_Threshold_Constant + No_Programmable_Full_Threshold + No_Programmable_Full_Threshold + No_Programmable_Full_Threshold + No_Programmable_Full_Threshold + No_Programmable_Full_Threshold + No_Programmable_Full_Threshold + READ_WRITE + 0 + 1 + false + 12 + Fully_Registered + Fully_Registered + Fully_Registered + Fully_Registered + Fully_Registered + Fully_Registered + true + Synchronous_Reset + false + 1 + 0 + 0 + 1 + 1 + 4 + false + false + Active_High + Active_High + true + true + false + true + true + Active_High + 0 + false + Active_High + 1 + false + 11 + false + FIFO + false + false + false + false + FIFO + FIFO + 2 + 2 + false + FIFO + FIFO + FIFO + zynq + xilinx.com:zc706:part0:1.4 + + xc7z045 + ffg900 + VERILOG + + MIXED + -2 + + + TRUE + TRUE + IP_Flow + 5 + TRUE + ../../../../ZC706.gen/sources_1/ip/rdback_fifo + + . + 2020.2 + OUT_OF_CONTEXT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/scratchpad/scratchpad.xci b/projects/ZC706/ZC706.srcs/sources_1/ip/scratchpad/scratchpad.xci new file mode 100644 index 0000000..368811c --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/scratchpad/scratchpad.xci @@ -0,0 +1,316 @@ + + + xilinx.com + xci + unknown + 1.0 + + + scratchpad + + + 4096 + 1 + 0 + 0 + 0 + + 1 + 100000000 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0.000 + AXI4LITE + READ_WRITE + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + 1 + 100000000 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0.000 + AXI4LITE + READ_WRITE + 0 + 0 + 0 + 0 + 0 + OTHER + NONE + 8192 + 32 + 1 + + OTHER + NONE + 8192 + 32 + 1 + + + 100000000 + 0 + 0 + 0.000 + 0 + 10 + 10 + 1 + 4 + 0 + 1 + 9 + 0 + 0 + 1 + NONE + 0 + 0 + 0 + ./ + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + Estimated Power for IP : 2.95215 mW + zynq + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + scratchpad.mem + no_coe_file_loaded + 0 + 0 + 0 + 0 + 1 + 1024 + 1024 + 1 + 1 + 32 + 32 + 0 + 0 + CE + CE + ALL + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1024 + 1024 + WRITE_FIRST + WRITE_FIRST + 32 + 32 + zynq + 4 + Memory_Slave + AXI4_Full + false + Minimum_Area + false + 9 + NONE + no_coe_file_loaded + ALL + scratchpad + false + false + false + false + false + false + false + false + false + Use_ENA_Pin + Always_Enabled + Single_Bit_Error_Injection + false + Native + false + no_mem_loaded + Single_Port_RAM + WRITE_FIRST + WRITE_FIRST + 0 + 0 + BRAM + 0 + 100 + 100 + 50 + 0 + 0 + 0 + 8kx2 + false + false + 1 + 1 + 32 + 32 + false + false + false + false + 0 + false + false + CE + CE + SYNC + false + false + false + false + false + false + false + 1024 + 32 + 32 + No_ECC + false + false + false + Stand_Alone + zynq + xilinx.com:zc706:part0:1.4 + + xc7z045 + ffg900 + VERILOG + + MIXED + -2 + + + TRUE + TRUE + IP_Flow + 4 + TRUE + ../../../../ZC706.gen/sources_1/ip/scratchpad + + . + 2020.2 + OUT_OF_CONTEXT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/ZC706/ZC706.srcs/sources_1/ip/zq_calib_mem/zq_calib_mem.xci b/projects/ZC706/ZC706.srcs/sources_1/ip/zq_calib_mem/zq_calib_mem.xci new file mode 100644 index 0000000..c5bcca5 --- /dev/null +++ b/projects/ZC706/ZC706.srcs/sources_1/ip/zq_calib_mem/zq_calib_mem.xci @@ -0,0 +1,319 @@ + + + xilinx.com + xci + unknown + 1.0 + + + zq_calib_mem + + + 4096 + 1 + 0 + 0 + 0 + + 1 + 100000000 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0.000 + AXI4LITE + READ_WRITE + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + 1 + 100000000 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0.000 + AXI4LITE + READ_WRITE + 0 + 0 + 0 + 0 + 0 + OTHER + NONE + 8192 + 32 + 1 + + OTHER + NONE + 8192 + 32 + 1 + + + 100000000 + 0 + 0 + 0.000 + 0 + 6 + 6 + 1 + 4 + 0 + 1 + 9 + 0 + 0 + 1 + NONE + 0 + 0 + 0 + ./ + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + Estimated Power for IP : 6.700549 mW + zynq + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + zq_calib_mem.mem + zq_calib_mem.mif + 0 + 1 + 0 + 0 + 1 + 64 + 64 + 1 + 1 + 64 + 64 + 0 + 0 + CE + CE + ALL + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + 1 + 64 + 64 + WRITE_FIRST + WRITE_FIRST + 64 + 64 + zynq + 4 + Memory_Slave + AXI4_Full + false + Minimum_Area + false + 9 + NONE + ../../../../coe/pr_zq.coe + ALL + zq_calib_mem + false + false + false + false + false + false + false + false + false + Use_ENA_Pin + Always_Enabled + Single_Bit_Error_Injection + true + Native + true + no_mem_loaded + Single_Port_RAM + WRITE_FIRST + WRITE_FIRST + 0 + 0 + BRAM + 0 + 100 + 100 + 50 + 0 + 0 + 0 + 8kx2 + false + false + 1 + 1 + 64 + 64 + false + false + false + false + 0 + false + false + CE + CE + SYNC + false + false + false + false + false + false + false + 64 + 64 + 64 + No_ECC + false + false + false + Stand_Alone + zynq + xilinx.com:zc706:part0:1.4 + + xc7z045 + ffg900 + VERILOG + + MIXED + -2 + + + TRUE + TRUE + IP_Flow + 4 + TRUE + ../../../../ZC706.gen/sources_1/ip/zq_calib_mem + + . + 2020.2 + OUT_OF_CONTEXT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/ZC706/ZC706.xpr b/projects/ZC706/ZC706.xpr new file mode 100644 index 0000000..2ea1269 --- /dev/null +++ b/projects/ZC706/ZC706.xpr @@ -0,0 +1,1194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default_dashboard + + + diff --git a/projects/ZC706/coe/pr_read.coe b/projects/ZC706/coe/pr_read.coe new file mode 100644 index 0000000..b9ccb93 --- /dev/null +++ b/projects/ZC706/coe/pr_read.coe @@ -0,0 +1,15 @@ +memory_initialization_radix=2; +memory_initialization_vector= +0001100000000000000000000000000000000000010000000000000000000000, +0001100000000000000000000000000000000000010100000000000000000000, +0001100000000000000000000000000000000000011000000000000000000000, +1111000000000000111100000000000011110000000000001010000000000101, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001011000001100101, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001000001000101, +1111000000000000111100000000000011110000000000001111000000000000; diff --git a/projects/ZC706/coe/pr_ref.coe b/projects/ZC706/coe/pr_ref.coe new file mode 100644 index 0000000..8b0a9e1 --- /dev/null +++ b/projects/ZC706/coe/pr_ref.coe @@ -0,0 +1,51 @@ +memory_initialization_radix=2; +memory_initialization_vector= +0001100000000000000000000000000000000000010000000000000000000000, +0001100000000000000000000000000000000000010100000000000000000000, +0001100000000000000000000000000000000000011000000000000000000000, +1111000000000000111100000000000011110000000000001010100000000101, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001101000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000; diff --git a/projects/ZC706/coe/pr_zq.coe b/projects/ZC706/coe/pr_zq.coe new file mode 100644 index 0000000..16d563c --- /dev/null +++ b/projects/ZC706/coe/pr_zq.coe @@ -0,0 +1,42 @@ +memory_initialization_radix=2; +memory_initialization_vector= +0001100000000000000000000000000000000000010000000000000000000000, +0001100000000000000000000000000000000000010100000000000000000000, +0001100000000000000000000000000000000000011000000000000000000000, +1111000000000000111100000000000011110000000000001010100000000101, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001100000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000; diff --git a/projects/ZC706/coe/simmem.coe b/projects/ZC706/coe/simmem.coe new file mode 100644 index 0000000..90d215f --- /dev/null +++ b/projects/ZC706/coe/simmem.coe @@ -0,0 +1,398 @@ +memory_initialization_radix=2; +memory_initialization_vector= +0000000000000110000000000000000000000000100010000000000000000000, +0000000000000110000000000000000000000000101100000000000100000000, +0000000000000110000000000000000000000000000000000000000010000000, +0000000000000110000000000000000000000000000100000000000000010000, +0000000000000110000000000000000000000000001000000000000000010000, +0001000000000000000000000000000000000000101000000000000000110000, +0100000000000011000000000000000000000000000000000000000000000011, +0001000000000001000000000000000000000000000100000000000000110000, +0100000000000011000000000000000000000000000000000000000000000011, +0000000000000110000000000100111011101110110000010100001010100000, +0000000000000111000000000000000000000000000000000000000000001100, +0000000000000111000000000000000000000000000100000000000000001100, +0000000000000111000000000000000000000000001000000000000000001100, +0000000000000111000000000000000000000000001100000000000000001100, +0000000000000111000000000000000000000000010000000000000000001100, +0000000000000111000000000000000000000000010100000000000000001100, +0000000000000111000000000000000000000000011000000000000000001100, +0000000000000111000000000000000000000000011100000000000000001100, +0000000000000111000000000000000000000000100000000000000000001100, +0000000000000111000000000000000000000000100100000000000000001100, +0000000000000111000000000000000000000000101000000000000000001100, +0000000000000111000000000000000000000000101100000000000000001100, +0000000000000111000000000000000000000000110000000000000000001100, +0000000000000111000000000000000000000000110100000000000000001100, +0000000000000111000000000000000000000000111000000000000000001100, +0000000000000111000000000000000000000000111100000000000000001100, +0000000000000110000000000000000000000000011100000000000000000000, +0000000000000110000000000000000000000000011000000000000000000000, +0000000000000110000000000000000000000000010000000000000000000000, +1111000000000000111100000000000011110000000000001010000000000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001011000001100111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +0000000000000110000000000000000000000000111000000000100000000000, +0000000000000110000000000000000000000000110100000000000000000000, +1111000000000000111100000000000011110000000000001000100001000111, +0000000000000101000000000000000000000000110000000000000000001100, +0000000000000111000000000000000000000000000000000000000000001100, +0000000000000111000000000000000000000000000100000000000000001100, +0000000000000111000000000000000000000000001000000000000000001100, +0000000000000111000000000000000000000000001100000000000000001100, +0000000000000111000000000000000000000000010000000000000000001100, +0000000000000111000000000000000000000000010100000000000000001100, +0000000000000111000000000000000000000000011000000000000000001100, +0000000000000111000000000000000000000000011100000000000000001100, +0000000000000111000000000000000000000000100000000000000000001100, +0000000000000111000000000000000000000000100100000000000000001100, +0000000000000111000000000000000000000000101000000000000000001100, +0000000000000111000000000000000000000000101100000000000000001100, +0000000000000111000000000000000000000000110000000000000000001100, +0000000000000111000000000000000000000000110100000000000000001100, +0000000000000111000000000000000000000000111000000000000000001100, +0000000000000111000000000000000000000000111100000000000000001100, +0000000000000001000000000000000000000000110100000000000000011101, +0100000000000000000000000000000000000000000000000010010111101101, +0000000000000100000000000000000000000000111100000000000000001100, +0000000000000000000000000000000000000000110000000000000011111100, +0000000000000000000000000000000000000000110000000000000011111100, +0000000000000111000000000000000000000000000000000000000000001100, +0000000000000111000000000000000000000000000100000000000000001100, +0000000000000111000000000000000000000000001000000000000000001100, +0000000000000111000000000000000000000000001100000000000000001100, +0000000000000111000000000000000000000000010000000000000000001100, +0000000000000111000000000000000000000000010100000000000000001100, +0000000000000111000000000000000000000000011000000000000000001100, +0000000000000111000000000000000000000000011100000000000000001100, +0000000000000111000000000000000000000000100000000000000000001100, +0000000000000111000000000000000000000000100100000000000000001100, +0000000000000111000000000000000000000000101000000000000000001100, +0000000000000111000000000000000000000000101100000000000000001100, +0000000000000111000000000000000000000000110000000000000000001100, +0000000000000111000000000000000000000000110100000000000000001100, +0000000000000111000000000000000000000000111000000000000000001100, +0000000000000111000000000000000000000000111100000000000000001100, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001010000000000111, +0000000000000110000000000000000000000000010000000000000000000000, +0000000000000000000000000000000000000000000000000000000010000000, +1111000000000000111100000000000011110000000000001010000000000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001011000001100111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001100001000111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001010000000000111, +0000000000000001000000000000000000000000011000000000000000010110, +0100000000000000000000000000000000000000000000000001110010000110, +0000000000000001000000000000000000000000011100000000000000010111, +0100000000000000000000000000000000000000000000000001101110110111, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +0000000000000110000000000000000000000000110100000000000011110000, +0000000000000110000000000000000000000000111000000000000000000000, +0000000000000110000000000000000000000000111100000000000000000000, +0000000000000000000000000000000000000000000000000000000000000001, +1111000000000000111100000000000011110000000000001010100000001101, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001011000011101101, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001000000011111101, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001000011111101, +0000000000000111000000000000000000000000000000000000000000000000, +0000000000000111000000000000000000000000000100000000000000000001, +0000000000000111000000000000000000000000001000000000000000000010, +0000000000000111000000000000000000000000001100000000000000000011, +0000000000000111000000000000000000000000010000000000000000000100, +0000000000000111000000000000000000000000010100000000000000000101, +0000000000000111000000000000000000000000011000000000000000000110, +0000000000000111000000000000000000000000011100000000000000000111, +0000000000000111000000000000000000000000100000000000000000001000, +0000000000000111000000000000000000000000100100000000000000001001, +0000000000000111000000000000000000000000101000000000000000001010, +0000000000000111000000000000000000000000101100000000000000001011, +0000000000000111000000000000000000000000110000000000000000001100, +0000000000000111000000000000000000000000110100000000000000001101, +0000000000000111000000000000000000000000111000000000000000001110, +0000000000000111000000000000000000000000111100000000000000001111, +0000000000000000000000000000000000000000000000000000000000000001, +1111000000000000111100000000000011110000000000001000000011111101, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001001000011111101, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001111000000000000, +1111000000000000111100000000000011110000000000001010100000001101, +0000000000000000000000000000000000000000000000000000000000000000; \ No newline at end of file diff --git a/projects/ZC706/constraints/SODIMM.xdc b/projects/ZC706/constraints/SODIMM.xdc new file mode 100644 index 0000000..d9137ec --- /dev/null +++ b/projects/ZC706/constraints/SODIMM.xdc @@ -0,0 +1,819 @@ +create_clock -period 5.000 [get_ports c0_sys_clk_p] +set_clock_groups -asynchronous -group [get_clocks c0_sys_clk_p -include_generated_clocks] + +# Set DCI_CASCADE +set_property DCI_CASCADE {34} [get_iobanks 33] +############## NET - IOSTANDARD ################## +# Bank: 34 - PL_CPU_RESET +set_property VCCAUX_IO DONTCARE [get_ports sys_rst] +set_property IOSTANDARD LVCMOS15 [get_ports sys_rst] +set_property PACKAGE_PIN A8 [get_ports sys_rst] + +# Bank: 11 - GPIO_LED_RIGHT +#set_property DRIVE 12 [get_ports init_calib_complete] +#set_property SLEW SLOW [get_ports init_calib_complete] +#set_property IOSTANDARD LVCMOS25 [get_ports init_calib_complete] +#set_property PACKAGE_PIN W21 [get_ports init_calib_complete] + +# PadFunction: IO_L2P_T0_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[0]}] +set_property SLEW FAST [get_ports {ddr3_dq[0]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[0]}] +set_property PACKAGE_PIN L1 [get_ports {ddr3_dq[0]}] + +# PadFunction: IO_L4N_T0_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[1]}] +set_property SLEW FAST [get_ports {ddr3_dq[1]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[1]}] +set_property PACKAGE_PIN L2 [get_ports {ddr3_dq[1]}] + +# PadFunction: IO_L5P_T0_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[2]}] +set_property SLEW FAST [get_ports {ddr3_dq[2]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[2]}] +set_property PACKAGE_PIN K5 [get_ports {ddr3_dq[2]}] + +# PadFunction: IO_L1P_T0_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[3]}] +set_property SLEW FAST [get_ports {ddr3_dq[3]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[3]}] +set_property PACKAGE_PIN J4 [get_ports {ddr3_dq[3]}] + +# PadFunction: IO_L2N_T0_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[4]}] +set_property SLEW FAST [get_ports {ddr3_dq[4]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[4]}] +set_property PACKAGE_PIN K1 [get_ports {ddr3_dq[4]}] + +# PadFunction: IO_L4P_T0_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[5]}] +set_property SLEW FAST [get_ports {ddr3_dq[5]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[5]}] +set_property PACKAGE_PIN L3 [get_ports {ddr3_dq[5]}] + +# PadFunction: IO_L5N_T0_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[6]}] +set_property SLEW FAST [get_ports {ddr3_dq[6]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[6]}] +set_property PACKAGE_PIN J5 [get_ports {ddr3_dq[6]}] + +# PadFunction: IO_L6P_T0_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[7]}] +set_property SLEW FAST [get_ports {ddr3_dq[7]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[7]}] +set_property PACKAGE_PIN K6 [get_ports {ddr3_dq[7]}] + +# PadFunction: IO_L8N_T1_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[8]}] +set_property SLEW FAST [get_ports {ddr3_dq[8]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[8]}] +set_property PACKAGE_PIN G6 [get_ports {ddr3_dq[8]}] + +# PadFunction: IO_L11P_T1_SRCC_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[9]}] +set_property SLEW FAST [get_ports {ddr3_dq[9]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[9]}] +set_property PACKAGE_PIN H4 [get_ports {ddr3_dq[9]}] + +# PadFunction: IO_L8P_T1_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[10]}] +set_property SLEW FAST [get_ports {ddr3_dq[10]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[10]}] +set_property PACKAGE_PIN H6 [get_ports {ddr3_dq[10]}] + +# PadFunction: IO_L11N_T1_SRCC_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[11]}] +set_property SLEW FAST [get_ports {ddr3_dq[11]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[11]}] +set_property PACKAGE_PIN H3 [get_ports {ddr3_dq[11]}] + +# PadFunction: IO_L10N_T1_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[12]}] +set_property SLEW FAST [get_ports {ddr3_dq[12]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[12]}] +set_property PACKAGE_PIN G1 [get_ports {ddr3_dq[12]}] + +# PadFunction: IO_L10P_T1_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[13]}] +set_property SLEW FAST [get_ports {ddr3_dq[13]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[13]}] +set_property PACKAGE_PIN H2 [get_ports {ddr3_dq[13]}] + +# PadFunction: IO_L12P_T1_MRCC_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[14]}] +set_property SLEW FAST [get_ports {ddr3_dq[14]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[14]}] +set_property PACKAGE_PIN G5 [get_ports {ddr3_dq[14]}] + +# PadFunction: IO_L12N_T1_MRCC_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[15]}] +set_property SLEW FAST [get_ports {ddr3_dq[15]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[15]}] +set_property PACKAGE_PIN G4 [get_ports {ddr3_dq[15]}] + +# PadFunction: IO_L17N_T2_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[16]}] +set_property SLEW FAST [get_ports {ddr3_dq[16]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[16]}] +set_property PACKAGE_PIN E2 [get_ports {ddr3_dq[16]}] + +# PadFunction: IO_L17P_T2_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[17]}] +set_property SLEW FAST [get_ports {ddr3_dq[17]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[17]}] +set_property PACKAGE_PIN E3 [get_ports {ddr3_dq[17]}] + +# PadFunction: IO_L16P_T2_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[18]}] +set_property SLEW FAST [get_ports {ddr3_dq[18]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[18]}] +set_property PACKAGE_PIN D4 [get_ports {ddr3_dq[18]}] + +# PadFunction: IO_L13N_T2_MRCC_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[19]}] +set_property SLEW FAST [get_ports {ddr3_dq[19]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[19]}] +set_property PACKAGE_PIN E5 [get_ports {ddr3_dq[19]}] + +# PadFunction: IO_L14P_T2_SRCC_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[20]}] +set_property SLEW FAST [get_ports {ddr3_dq[20]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[20]}] +set_property PACKAGE_PIN F4 [get_ports {ddr3_dq[20]}] + +# PadFunction: IO_L14N_T2_SRCC_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[21]}] +set_property SLEW FAST [get_ports {ddr3_dq[21]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[21]}] +set_property PACKAGE_PIN F3 [get_ports {ddr3_dq[21]}] + +# PadFunction: IO_L18N_T2_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[22]}] +set_property SLEW FAST [get_ports {ddr3_dq[22]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[22]}] +set_property PACKAGE_PIN D1 [get_ports {ddr3_dq[22]}] + +# PadFunction: IO_L16N_T2_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[23]}] +set_property SLEW FAST [get_ports {ddr3_dq[23]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[23]}] +set_property PACKAGE_PIN D3 [get_ports {ddr3_dq[23]}] + +# PadFunction: IO_L24N_T3_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[24]}] +set_property SLEW FAST [get_ports {ddr3_dq[24]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[24]}] +set_property PACKAGE_PIN A2 [get_ports {ddr3_dq[24]}] + +# PadFunction: IO_L23P_T3_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[25]}] +set_property SLEW FAST [get_ports {ddr3_dq[25]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[25]}] +set_property PACKAGE_PIN B2 [get_ports {ddr3_dq[25]}] + +# PadFunction: IO_L20N_T3_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[26]}] +set_property SLEW FAST [get_ports {ddr3_dq[26]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[26]}] +set_property PACKAGE_PIN B4 [get_ports {ddr3_dq[26]}] + +# PadFunction: IO_L20P_T3_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[27]}] +set_property SLEW FAST [get_ports {ddr3_dq[27]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[27]}] +set_property PACKAGE_PIN B5 [get_ports {ddr3_dq[27]}] + +# PadFunction: IO_L24P_T3_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[28]}] +set_property SLEW FAST [get_ports {ddr3_dq[28]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[28]}] +set_property PACKAGE_PIN A3 [get_ports {ddr3_dq[28]}] + +# PadFunction: IO_L23N_T3_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[29]}] +set_property SLEW FAST [get_ports {ddr3_dq[29]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[29]}] +set_property PACKAGE_PIN B1 [get_ports {ddr3_dq[29]}] + +# PadFunction: IO_L22N_T3_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[30]}] +set_property SLEW FAST [get_ports {ddr3_dq[30]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[30]}] +set_property PACKAGE_PIN C1 [get_ports {ddr3_dq[30]}] + +# PadFunction: IO_L19P_T3_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[31]}] +set_property SLEW FAST [get_ports {ddr3_dq[31]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[31]}] +set_property PACKAGE_PIN C4 [get_ports {ddr3_dq[31]}] + +# PadFunction: IO_L22N_T3_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[32]}] +set_property SLEW FAST [get_ports {ddr3_dq[32]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[32]}] +set_property PACKAGE_PIN K10 [get_ports {ddr3_dq[32]}] + +# PadFunction: IO_L23N_T3_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[33]}] +set_property SLEW FAST [get_ports {ddr3_dq[33]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[33]}] +set_property PACKAGE_PIN L9 [get_ports {ddr3_dq[33]}] + +# PadFunction: IO_L24N_T3_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[34]}] +set_property SLEW FAST [get_ports {ddr3_dq[34]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[34]}] +set_property PACKAGE_PIN K12 [get_ports {ddr3_dq[34]}] + +# PadFunction: IO_L20N_T3_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[35]}] +set_property SLEW FAST [get_ports {ddr3_dq[35]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[35]}] +set_property PACKAGE_PIN J9 [get_ports {ddr3_dq[35]}] + +# PadFunction: IO_L22P_T3_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[36]}] +set_property SLEW FAST [get_ports {ddr3_dq[36]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[36]}] +set_property PACKAGE_PIN K11 [get_ports {ddr3_dq[36]}] + +# PadFunction: IO_L23P_T3_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[37]}] +set_property SLEW FAST [get_ports {ddr3_dq[37]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[37]}] +set_property PACKAGE_PIN L10 [get_ports {ddr3_dq[37]}] + +# PadFunction: IO_L20P_T3_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[38]}] +set_property SLEW FAST [get_ports {ddr3_dq[38]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[38]}] +set_property PACKAGE_PIN J10 [get_ports {ddr3_dq[38]}] + +# PadFunction: IO_L19P_T3_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[39]}] +set_property SLEW FAST [get_ports {ddr3_dq[39]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[39]}] +set_property PACKAGE_PIN L7 [get_ports {ddr3_dq[39]}] + +# PadFunction: IO_L12N_T1_MRCC_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[40]}] +set_property SLEW FAST [get_ports {ddr3_dq[40]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[40]}] +set_property PACKAGE_PIN F14 [get_ports {ddr3_dq[40]}] + +# PadFunction: IO_L12P_T1_MRCC_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[41]}] +set_property SLEW FAST [get_ports {ddr3_dq[41]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[41]}] +set_property PACKAGE_PIN F15 [get_ports {ddr3_dq[41]}] + +# PadFunction: IO_L10P_T1_AD11P_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[42]}] +set_property SLEW FAST [get_ports {ddr3_dq[42]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[42]}] +set_property PACKAGE_PIN F13 [get_ports {ddr3_dq[42]}] + +# PadFunction: IO_L7N_T1_AD2N_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[43]}] +set_property SLEW FAST [get_ports {ddr3_dq[43]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[43]}] +set_property PACKAGE_PIN G16 [get_ports {ddr3_dq[43]}] + +# PadFunction: IO_L8P_T1_AD10P_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[44]}] +set_property SLEW FAST [get_ports {ddr3_dq[44]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[44]}] +set_property PACKAGE_PIN G15 [get_ports {ddr3_dq[44]}] + +# PadFunction: IO_L10N_T1_AD11N_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[45]}] +set_property SLEW FAST [get_ports {ddr3_dq[45]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[45]}] +set_property PACKAGE_PIN E12 [get_ports {ddr3_dq[45]}] + +# PadFunction: IO_L11N_T1_SRCC_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[46]}] +set_property SLEW FAST [get_ports {ddr3_dq[46]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[46]}] +set_property PACKAGE_PIN D13 [get_ports {ddr3_dq[46]}] + +# PadFunction: IO_L11P_T1_SRCC_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[47]}] +set_property SLEW FAST [get_ports {ddr3_dq[47]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[47]}] +set_property PACKAGE_PIN E13 [get_ports {ddr3_dq[47]}] + +# PadFunction: IO_L14P_T2_AD4P_SRCC_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[48]}] +set_property SLEW FAST [get_ports {ddr3_dq[48]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[48]}] +set_property PACKAGE_PIN D15 [get_ports {ddr3_dq[48]}] + +# PadFunction: IO_L13N_T2_MRCC_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[49]}] +set_property SLEW FAST [get_ports {ddr3_dq[49]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[49]}] +set_property PACKAGE_PIN E15 [get_ports {ddr3_dq[49]}] + +# PadFunction: IO_L16P_T2_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[50]}] +set_property SLEW FAST [get_ports {ddr3_dq[50]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[50]}] +set_property PACKAGE_PIN D16 [get_ports {ddr3_dq[50]}] + +# PadFunction: IO_L13P_T2_MRCC_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[51]}] +set_property SLEW FAST [get_ports {ddr3_dq[51]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[51]}] +set_property PACKAGE_PIN E16 [get_ports {ddr3_dq[51]}] + +# PadFunction: IO_L17P_T2_AD5P_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[52]}] +set_property SLEW FAST [get_ports {ddr3_dq[52]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[52]}] +set_property PACKAGE_PIN C17 [get_ports {ddr3_dq[52]}] + +# PadFunction: IO_L17N_T2_AD5N_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[53]}] +set_property SLEW FAST [get_ports {ddr3_dq[53]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[53]}] +set_property PACKAGE_PIN B16 [get_ports {ddr3_dq[53]}] + +# PadFunction: IO_L14N_T2_AD4N_SRCC_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[54]}] +set_property SLEW FAST [get_ports {ddr3_dq[54]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[54]}] +set_property PACKAGE_PIN D14 [get_ports {ddr3_dq[54]}] + +# PadFunction: IO_L18P_T2_AD13P_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[55]}] +set_property SLEW FAST [get_ports {ddr3_dq[55]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[55]}] +set_property PACKAGE_PIN B17 [get_ports {ddr3_dq[55]}] + +# PadFunction: IO_L20N_T3_AD6N_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[56]}] +set_property SLEW FAST [get_ports {ddr3_dq[56]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[56]}] +set_property PACKAGE_PIN B12 [get_ports {ddr3_dq[56]}] + +# PadFunction: IO_L20P_T3_AD6P_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[57]}] +set_property SLEW FAST [get_ports {ddr3_dq[57]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[57]}] +set_property PACKAGE_PIN C12 [get_ports {ddr3_dq[57]}] + +# PadFunction: IO_L24N_T3_AD15N_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[58]}] +set_property SLEW FAST [get_ports {ddr3_dq[58]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[58]}] +set_property PACKAGE_PIN A12 [get_ports {ddr3_dq[58]}] + +# PadFunction: IO_L23N_T3_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[59]}] +set_property SLEW FAST [get_ports {ddr3_dq[59]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[59]}] +set_property PACKAGE_PIN A14 [get_ports {ddr3_dq[59]}] + +# PadFunction: IO_L24P_T3_AD15P_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[60]}] +set_property SLEW FAST [get_ports {ddr3_dq[60]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[60]}] +set_property PACKAGE_PIN A13 [get_ports {ddr3_dq[60]}] + +# PadFunction: IO_L22N_T3_AD7N_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[61]}] +set_property SLEW FAST [get_ports {ddr3_dq[61]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[61]}] +set_property PACKAGE_PIN B11 [get_ports {ddr3_dq[61]}] + +# PadFunction: IO_L19P_T3_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[62]}] +set_property SLEW FAST [get_ports {ddr3_dq[62]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[62]}] +set_property PACKAGE_PIN C14 [get_ports {ddr3_dq[62]}] + +# PadFunction: IO_L23P_T3_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dq[63]}] +set_property SLEW FAST [get_ports {ddr3_dq[63]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dq[63]}] +set_property PACKAGE_PIN B14 [get_ports {ddr3_dq[63]}] + +# PadFunction: IO_L1N_T0_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_addr[13]}] +set_property SLEW FAST [get_ports {ddr3_addr[13]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[13]}] +set_property PACKAGE_PIN A10 [get_ports {ddr3_addr[13]}] + +# PadFunction: IO_L9P_T1_DQS_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_addr[12]}] +set_property SLEW FAST [get_ports {ddr3_addr[12]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[12]}] +set_property PACKAGE_PIN H12 [get_ports {ddr3_addr[12]}] + +# PadFunction: IO_L4N_T0_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_addr[11]}] +set_property SLEW FAST [get_ports {ddr3_addr[11]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[11]}] +set_property PACKAGE_PIN B7 [get_ports {ddr3_addr[11]}] + +# PadFunction: IO_L17N_T2_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_addr[10]}] +set_property SLEW FAST [get_ports {ddr3_addr[10]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[10]}] +set_property PACKAGE_PIN D6 [get_ports {ddr3_addr[10]}] + +# PadFunction: IO_L15P_T2_DQS_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_addr[9]}] +set_property SLEW FAST [get_ports {ddr3_addr[9]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[9]}] +set_property PACKAGE_PIN J8 [get_ports {ddr3_addr[9]}] + +# PadFunction: IO_L1P_T0_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_addr[8]}] +set_property SLEW FAST [get_ports {ddr3_addr[8]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[8]}] +set_property PACKAGE_PIN B10 [get_ports {ddr3_addr[8]}] + +# PadFunction: IO_L14N_T2_SRCC_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_addr[7]}] +set_property SLEW FAST [get_ports {ddr3_addr[7]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[7]}] +set_property PACKAGE_PIN E8 [get_ports {ddr3_addr[7]}] + +# PadFunction: IO_L14P_T2_SRCC_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_addr[6]}] +set_property SLEW FAST [get_ports {ddr3_addr[6]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[6]}] +set_property PACKAGE_PIN F9 [get_ports {ddr3_addr[6]}] + +# PadFunction: IO_L5N_T0_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_addr[5]}] +set_property SLEW FAST [get_ports {ddr3_addr[5]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[5]}] +set_property PACKAGE_PIN B6 [get_ports {ddr3_addr[5]}] + +# PadFunction: IO_L8N_T1_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_addr[4]}] +set_property SLEW FAST [get_ports {ddr3_addr[4]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[4]}] +set_property PACKAGE_PIN D11 [get_ports {ddr3_addr[4]}] + +# PadFunction: IO_L2N_T0_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_addr[3]}] +set_property SLEW FAST [get_ports {ddr3_addr[3]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[3]}] +set_property PACKAGE_PIN A9 [get_ports {ddr3_addr[3]}] + +# PadFunction: IO_L8P_T1_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_addr[2]}] +set_property SLEW FAST [get_ports {ddr3_addr[2]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[2]}] +set_property PACKAGE_PIN E11 [get_ports {ddr3_addr[2]}] + +# PadFunction: IO_L2P_T0_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_addr[1]}] +set_property SLEW FAST [get_ports {ddr3_addr[1]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[1]}] +set_property PACKAGE_PIN B9 [get_ports {ddr3_addr[1]}] + +# PadFunction: IO_L10P_T1_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_addr[0]}] +set_property SLEW FAST [get_ports {ddr3_addr[0]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_addr[0]}] +set_property PACKAGE_PIN E10 [get_ports {ddr3_addr[0]}] + +# PadFunction: IO_L3N_T0_DQS_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_ba[2]}] +set_property SLEW FAST [get_ports {ddr3_ba[2]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_ba[2]}] +set_property PACKAGE_PIN A7 [get_ports {ddr3_ba[2]}] + +# PadFunction: IO_L18P_T2_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_ba[1]}] +set_property SLEW FAST [get_ports {ddr3_ba[1]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_ba[1]}] +set_property PACKAGE_PIN H7 [get_ports {ddr3_ba[1]}] + +# PadFunction: IO_L16P_T2_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_ba[0]}] +set_property SLEW FAST [get_ports {ddr3_ba[0]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_ba[0]}] +set_property PACKAGE_PIN F8 [get_ports {ddr3_ba[0]}] + +# PadFunction: IO_L7N_T1_34 +set_property VCCAUX_IO HIGH [get_ports ddr3_ras_n] +set_property SLEW FAST [get_ports ddr3_ras_n] +set_property IOSTANDARD SSTL15 [get_ports ddr3_ras_n] +set_property PACKAGE_PIN H11 [get_ports ddr3_ras_n] + +# PadFunction: IO_L17P_T2_34 +set_property VCCAUX_IO HIGH [get_ports ddr3_cas_n] +set_property SLEW FAST [get_ports ddr3_cas_n] +set_property IOSTANDARD SSTL15 [get_ports ddr3_cas_n] +set_property PACKAGE_PIN E7 [get_ports ddr3_cas_n] + +# PadFunction: IO_L16N_T2_34 +set_property VCCAUX_IO HIGH [get_ports ddr3_we_n] +set_property SLEW FAST [get_ports ddr3_we_n] +set_property IOSTANDARD SSTL15 [get_ports ddr3_we_n] +set_property PACKAGE_PIN F7 [get_ports ddr3_we_n] + +# PadFunction: IO_L7P_T1_AD2P_35 +set_property VCCAUX_IO HIGH [get_ports ddr3_reset_n] +set_property SLEW FAST [get_ports ddr3_reset_n] +set_property IOSTANDARD LVCMOS15 [get_ports ddr3_reset_n] +set_property PACKAGE_PIN G17 [get_ports ddr3_reset_n] + +# PadFunction: IO_L10N_T1_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_cke[0]}] +set_property SLEW FAST [get_ports {ddr3_cke[0]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_cke[0]}] +set_property PACKAGE_PIN D10 [get_ports {ddr3_cke[0]}] + +# PadFunction: IO_L18N_T2_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_odt[0]}] +set_property SLEW FAST [get_ports {ddr3_odt[0]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_odt[0]}] +set_property PACKAGE_PIN G7 [get_ports {ddr3_odt[0]}] + +# PadFunction: IO_L7P_T1_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_cs_n[0]}] +set_property SLEW FAST [get_ports {ddr3_cs_n[0]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_cs_n[0]}] +set_property PACKAGE_PIN J11 [get_ports {ddr3_cs_n[0]}] + +# PadFunction: IO_L1N_T0_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dm[0]}] +set_property SLEW FAST [get_ports {ddr3_dm[0]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[0]}] +set_property PACKAGE_PIN J3 [get_ports {ddr3_dm[0]}] + +# PadFunction: IO_L7N_T1_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dm[1]}] +set_property SLEW FAST [get_ports {ddr3_dm[1]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[1]}] +set_property PACKAGE_PIN F2 [get_ports {ddr3_dm[1]}] + +# PadFunction: IO_L18P_T2_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dm[2]}] +set_property SLEW FAST [get_ports {ddr3_dm[2]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[2]}] +set_property PACKAGE_PIN E1 [get_ports {ddr3_dm[2]}] + +# PadFunction: IO_L22P_T3_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dm[3]}] +set_property SLEW FAST [get_ports {ddr3_dm[3]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[3]}] +set_property PACKAGE_PIN C2 [get_ports {ddr3_dm[3]}] + +# PadFunction: IO_L24P_T3_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dm[4]}] +set_property SLEW FAST [get_ports {ddr3_dm[4]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[4]}] +set_property PACKAGE_PIN L12 [get_ports {ddr3_dm[4]}] + +# PadFunction: IO_L8N_T1_AD10N_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dm[5]}] +set_property SLEW FAST [get_ports {ddr3_dm[5]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[5]}] +set_property PACKAGE_PIN G14 [get_ports {ddr3_dm[5]}] + +# PadFunction: IO_L16N_T2_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dm[6]}] +set_property SLEW FAST [get_ports {ddr3_dm[6]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[6]}] +set_property PACKAGE_PIN C16 [get_ports {ddr3_dm[6]}] + +# PadFunction: IO_L22P_T3_AD7P_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dm[7]}] +set_property SLEW FAST [get_ports {ddr3_dm[7]}] +set_property IOSTANDARD SSTL15 [get_ports {ddr3_dm[7]}] +set_property PACKAGE_PIN C11 [get_ports {ddr3_dm[7]}] + +set_property VCCAUX_IO DONTCARE [get_ports c0_sys_clk_p] +set_property IOSTANDARD DIFF_SSTL15 [get_ports c0_sys_clk_p] +set_property PACKAGE_PIN H9 [get_ports c0_sys_clk_p] + +set_property IOSTANDARD DIFF_SSTL15 [get_ports c0_sys_clk_n] +set_property PACKAGE_PIN G9 [get_ports c0_sys_clk_n] + +# set_property SLEW SLOW [get_ports clk_200mhz] +# set_property IOSTANDARD LVCMOS15 [get_ports clk_200mhz] +# set_property PACKAGE_PIN AJ21 [get_ports clk_200mhz] + +# PadFunction: IO_L3P_T0_DQS_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dqs_p[0]}] +set_property SLEW FAST [get_ports {ddr3_dqs_p[0]}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_dqs_p[0]}] + +# PadFunction: IO_L3N_T0_DQS_33 +set_property SLEW FAST [get_ports {ddr3_dqs_n[0]}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_dqs_n[0]}] +set_property PACKAGE_PIN K3 [get_ports {ddr3_dqs_p[0]}] +set_property PACKAGE_PIN K2 [get_ports {ddr3_dqs_n[0]}] + +# PadFunction: IO_L9P_T1_DQS_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dqs_p[1]}] +set_property SLEW FAST [get_ports {ddr3_dqs_p[1]}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_dqs_p[1]}] + +# PadFunction: IO_L9N_T1_DQS_33 +set_property SLEW FAST [get_ports {ddr3_dqs_n[1]}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_dqs_n[1]}] +set_property PACKAGE_PIN J1 [get_ports {ddr3_dqs_p[1]}] +set_property PACKAGE_PIN H1 [get_ports {ddr3_dqs_n[1]}] + +# PadFunction: IO_L15P_T2_DQS_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dqs_p[2]}] +set_property SLEW FAST [get_ports {ddr3_dqs_p[2]}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_dqs_p[2]}] + +# PadFunction: IO_L15N_T2_DQS_33 +set_property SLEW FAST [get_ports {ddr3_dqs_n[2]}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_dqs_n[2]}] +set_property PACKAGE_PIN E6 [get_ports {ddr3_dqs_p[2]}] +set_property PACKAGE_PIN D5 [get_ports {ddr3_dqs_n[2]}] + +# PadFunction: IO_L21P_T3_DQS_33 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dqs_p[3]}] +set_property SLEW FAST [get_ports {ddr3_dqs_p[3]}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_dqs_p[3]}] + +# PadFunction: IO_L21N_T3_DQS_33 +set_property SLEW FAST [get_ports {ddr3_dqs_n[3]}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_dqs_n[3]}] +set_property PACKAGE_PIN A5 [get_ports {ddr3_dqs_p[3]}] +set_property PACKAGE_PIN A4 [get_ports {ddr3_dqs_n[3]}] + +# PadFunction: IO_L21P_T3_DQS_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dqs_p[4]}] +set_property SLEW FAST [get_ports {ddr3_dqs_p[4]}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_dqs_p[4]}] + +# PadFunction: IO_L21N_T3_DQS_34 +set_property SLEW FAST [get_ports {ddr3_dqs_n[4]}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_dqs_n[4]}] +set_property PACKAGE_PIN L8 [get_ports {ddr3_dqs_p[4]}] +set_property PACKAGE_PIN K8 [get_ports {ddr3_dqs_n[4]}] + +# PadFunction: IO_L9P_T1_DQS_AD3P_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dqs_p[5]}] +set_property SLEW FAST [get_ports {ddr3_dqs_p[5]}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_dqs_p[5]}] + +# PadFunction: IO_L9N_T1_DQS_AD3N_35 +set_property SLEW FAST [get_ports {ddr3_dqs_n[5]}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_dqs_n[5]}] +set_property PACKAGE_PIN G12 [get_ports {ddr3_dqs_p[5]}] +set_property PACKAGE_PIN F12 [get_ports {ddr3_dqs_n[5]}] + +# PadFunction: IO_L15P_T2_DQS_AD12P_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dqs_p[6]}] +set_property SLEW FAST [get_ports {ddr3_dqs_p[6]}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_dqs_p[6]}] + +# PadFunction: IO_L15N_T2_DQS_AD12N_35 +set_property SLEW FAST [get_ports {ddr3_dqs_n[6]}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_dqs_n[6]}] +set_property PACKAGE_PIN F17 [get_ports {ddr3_dqs_p[6]}] +set_property PACKAGE_PIN E17 [get_ports {ddr3_dqs_n[6]}] + +# PadFunction: IO_L21P_T3_DQS_AD14P_35 +set_property VCCAUX_IO HIGH [get_ports {ddr3_dqs_p[7]}] +set_property SLEW FAST [get_ports {ddr3_dqs_p[7]}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_dqs_p[7]}] + +# PadFunction: IO_L21N_T3_DQS_AD14N_35 +set_property SLEW FAST [get_ports {ddr3_dqs_n[7]}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_dqs_n[7]}] +set_property PACKAGE_PIN B15 [get_ports {ddr3_dqs_p[7]}] +set_property PACKAGE_PIN A15 [get_ports {ddr3_dqs_n[7]}] + +# PadFunction: IO_L11P_T1_SRCC_34 +set_property VCCAUX_IO HIGH [get_ports {ddr3_ck_p[0]}] +set_property SLEW FAST [get_ports {ddr3_ck_p[0]}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_ck_p[0]}] + +# PadFunction: IO_L11N_T1_SRCC_34 +set_property SLEW FAST [get_ports {ddr3_ck_n[0]}] +set_property IOSTANDARD DIFF_SSTL15 [get_ports {ddr3_ck_n[0]}] +set_property PACKAGE_PIN G10 [get_ports {ddr3_ck_p[0]}] +set_property PACKAGE_PIN F10 [get_ports {ddr3_ck_n[0]}] + +set_property IODELAY_GROUP MEMCTL_IODELAY_MIG0 [get_cells -hier -filter {NAME =~ *.idelaye2}] + +set_property LOC PHASER_OUT_PHY_X1Y19 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_2.u_ddr_phy_4lanes/ddr_byte_lane_D.ddr_byte_lane_D/phaser_out}] +set_property LOC PHASER_OUT_PHY_X1Y18 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_2.u_ddr_phy_4lanes/ddr_byte_lane_C.ddr_byte_lane_C/phaser_out}] +set_property LOC PHASER_OUT_PHY_X1Y17 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_2.u_ddr_phy_4lanes/ddr_byte_lane_B.ddr_byte_lane_B/phaser_out}] +set_property LOC PHASER_OUT_PHY_X1Y16 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_2.u_ddr_phy_4lanes/ddr_byte_lane_A.ddr_byte_lane_A/phaser_out}] +set_property LOC PHASER_OUT_PHY_X1Y23 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_1.u_ddr_phy_4lanes/ddr_byte_lane_D.ddr_byte_lane_D/phaser_out}] +set_property LOC PHASER_OUT_PHY_X1Y22 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_1.u_ddr_phy_4lanes/ddr_byte_lane_C.ddr_byte_lane_C/phaser_out}] +set_property LOC PHASER_OUT_PHY_X1Y21 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_1.u_ddr_phy_4lanes/ddr_byte_lane_B.ddr_byte_lane_B/phaser_out}] +set_property LOC PHASER_OUT_PHY_X1Y20 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_1.u_ddr_phy_4lanes/ddr_byte_lane_A.ddr_byte_lane_A/phaser_out}] +set_property LOC PHASER_OUT_PHY_X1Y26 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_C.ddr_byte_lane_C/phaser_out}] +set_property LOC PHASER_OUT_PHY_X1Y25 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_B.ddr_byte_lane_B/phaser_out}] +set_property LOC PHASER_OUT_PHY_X1Y24 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_A.ddr_byte_lane_A/phaser_out}] + +set_property LOC PHASER_IN_PHY_X1Y19 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_2.u_ddr_phy_4lanes/ddr_byte_lane_D.ddr_byte_lane_D/phaser_in_gen.phaser_in}] +set_property LOC PHASER_IN_PHY_X1Y18 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_2.u_ddr_phy_4lanes/ddr_byte_lane_C.ddr_byte_lane_C/phaser_in_gen.phaser_in}] +set_property LOC PHASER_IN_PHY_X1Y17 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_2.u_ddr_phy_4lanes/ddr_byte_lane_B.ddr_byte_lane_B/phaser_in_gen.phaser_in}] +set_property LOC PHASER_IN_PHY_X1Y16 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_2.u_ddr_phy_4lanes/ddr_byte_lane_A.ddr_byte_lane_A/phaser_in_gen.phaser_in}] +set_property LOC PHASER_IN_PHY_X1Y20 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_1.u_ddr_phy_4lanes/ddr_byte_lane_A.ddr_byte_lane_A/phaser_in_gen.phaser_in}] +set_property LOC PHASER_IN_PHY_X1Y26 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_C.ddr_byte_lane_C/phaser_in_gen.phaser_in}] +set_property LOC PHASER_IN_PHY_X1Y25 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_B.ddr_byte_lane_B/phaser_in_gen.phaser_in}] +set_property LOC PHASER_IN_PHY_X1Y24 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_A.ddr_byte_lane_A/phaser_in_gen.phaser_in}] + +set_property LOC OUT_FIFO_X1Y19 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_2.u_ddr_phy_4lanes/ddr_byte_lane_D.ddr_byte_lane_D/out_fifo}] +set_property LOC OUT_FIFO_X1Y18 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_2.u_ddr_phy_4lanes/ddr_byte_lane_C.ddr_byte_lane_C/out_fifo}] +set_property LOC OUT_FIFO_X1Y17 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_2.u_ddr_phy_4lanes/ddr_byte_lane_B.ddr_byte_lane_B/out_fifo}] +set_property LOC OUT_FIFO_X1Y16 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_2.u_ddr_phy_4lanes/ddr_byte_lane_A.ddr_byte_lane_A/out_fifo}] +set_property LOC OUT_FIFO_X1Y23 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_1.u_ddr_phy_4lanes/ddr_byte_lane_D.ddr_byte_lane_D/out_fifo}] +set_property LOC OUT_FIFO_X1Y22 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_1.u_ddr_phy_4lanes/ddr_byte_lane_C.ddr_byte_lane_C/out_fifo}] +set_property LOC OUT_FIFO_X1Y21 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_1.u_ddr_phy_4lanes/ddr_byte_lane_B.ddr_byte_lane_B/out_fifo}] +set_property LOC OUT_FIFO_X1Y20 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_1.u_ddr_phy_4lanes/ddr_byte_lane_A.ddr_byte_lane_A/out_fifo}] +set_property LOC OUT_FIFO_X1Y26 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_C.ddr_byte_lane_C/out_fifo}] +set_property LOC OUT_FIFO_X1Y25 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_B.ddr_byte_lane_B/out_fifo}] +set_property LOC OUT_FIFO_X1Y24 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_A.ddr_byte_lane_A/out_fifo}] + +set_property LOC IN_FIFO_X1Y19 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_2.u_ddr_phy_4lanes/ddr_byte_lane_D.ddr_byte_lane_D/in_fifo_gen.in_fifo}] +set_property LOC IN_FIFO_X1Y18 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_2.u_ddr_phy_4lanes/ddr_byte_lane_C.ddr_byte_lane_C/in_fifo_gen.in_fifo}] +set_property LOC IN_FIFO_X1Y17 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_2.u_ddr_phy_4lanes/ddr_byte_lane_B.ddr_byte_lane_B/in_fifo_gen.in_fifo}] +set_property LOC IN_FIFO_X1Y16 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_2.u_ddr_phy_4lanes/ddr_byte_lane_A.ddr_byte_lane_A/in_fifo_gen.in_fifo}] +set_property LOC IN_FIFO_X1Y20 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_1.u_ddr_phy_4lanes/ddr_byte_lane_A.ddr_byte_lane_A/in_fifo_gen.in_fifo}] +set_property LOC IN_FIFO_X1Y26 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_C.ddr_byte_lane_C/in_fifo_gen.in_fifo}] +set_property LOC IN_FIFO_X1Y25 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_B.ddr_byte_lane_B/in_fifo_gen.in_fifo}] +set_property LOC IN_FIFO_X1Y24 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_A.ddr_byte_lane_A/in_fifo_gen.in_fifo}] + +set_property LOC PHY_CONTROL_X1Y4 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_2.u_ddr_phy_4lanes/phy_control_i}] +set_property LOC PHY_CONTROL_X1Y5 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_1.u_ddr_phy_4lanes/phy_control_i}] +set_property LOC PHY_CONTROL_X1Y6 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_0.u_ddr_phy_4lanes/phy_control_i}] + +set_property LOC PHASER_REF_X1Y4 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_2.u_ddr_phy_4lanes/phaser_ref_i}] +set_property LOC PHASER_REF_X1Y5 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_1.u_ddr_phy_4lanes/phaser_ref_i}] +set_property LOC PHASER_REF_X1Y6 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_0.u_ddr_phy_4lanes/phaser_ref_i}] + +set_property LOC OLOGIC_X1Y243 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_2.u_ddr_phy_4lanes/ddr_byte_lane_D.ddr_byte_lane_D/ddr_byte_group_io/*slave_ts}] +set_property LOC OLOGIC_X1Y231 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_2.u_ddr_phy_4lanes/ddr_byte_lane_C.ddr_byte_lane_C/ddr_byte_group_io/*slave_ts}] +set_property LOC OLOGIC_X1Y219 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_2.u_ddr_phy_4lanes/ddr_byte_lane_B.ddr_byte_lane_B/ddr_byte_group_io/*slave_ts}] +set_property LOC OLOGIC_X1Y207 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_2.u_ddr_phy_4lanes/ddr_byte_lane_A.ddr_byte_lane_A/ddr_byte_group_io/*slave_ts}] +set_property LOC OLOGIC_X1Y257 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_1.u_ddr_phy_4lanes/ddr_byte_lane_A.ddr_byte_lane_A/ddr_byte_group_io/*slave_ts}] +set_property LOC OLOGIC_X1Y331 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_C.ddr_byte_lane_C/ddr_byte_group_io/*slave_ts}] +set_property LOC OLOGIC_X1Y319 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_B.ddr_byte_lane_B/ddr_byte_group_io/*slave_ts}] +set_property LOC OLOGIC_X1Y307 [get_cells -hier -filter {NAME =~ */ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_A.ddr_byte_lane_A/ddr_byte_group_io/*slave_ts}] + +set_property LOC PLLE2_ADV_X1Y5 [get_cells -hier -filter {NAME =~ */u_ddr3_infrastructure/plle2_i}] +set_property LOC MMCME2_ADV_X1Y5 [get_cells -hier -filter {NAME =~ */u_ddr3_infrastructure/gen_mmcm.mmcm_i}] + +set_false_path -through [get_pins -filter {NAME =~ */DQSFOUND} -of [get_cells -hier -filter {REF_NAME == PHASER_IN_PHY}]] + +set_multicycle_path -setup -start -through [get_pins -filter {NAME =~ */OSERDESRST} -of [get_cells -hier -filter {REF_NAME == PHASER_OUT_PHY}]] 2 +set_multicycle_path -hold -start -through [get_pins -filter {NAME =~ */OSERDESRST} -of [get_cells -hier -filter {REF_NAME == PHASER_OUT_PHY}]] 1 + +set_max_delay -datapath_only -from [get_cells -hier -filter {NAME =~ *temp_mon_enabled.u_tempmon/* && IS_SEQUENTIAL}] -to [get_cells -hier -filter {NAME =~ *temp_mon_enabled.u_tempmon/device_temp_sync_r1*}] 20.000 +set_max_delay -datapath_only -from [get_cells -hier *rstdiv0_sync_r1_reg*] -to [get_pins -filter {NAME =~ */RESET} -of [get_cells -hier -filter {REF_NAME == PHY_CONTROL}]] 5.000 + +set_max_delay -datapath_only -from [get_cells -hier -filter {NAME =~ *ddr3_infrastructure/rstdiv0_sync_r1_reg*}] -to [get_cells -hier -filter {NAME =~ *temp_mon_enabled.u_tempmon/xadc_supplied_temperature.rst_r1*}] 20.000 + +# PCIE +set_property LOC GTXE2_CHANNEL_X0Y15 [get_cells {zc706_pcie/zc706_pcie_x4_gen2_support_i/zc706_pcie_x4_gen2_i/inst/inst/gt_top_i/pipe_wrapper_i/pipe_lane[0].gt_wrapper_i/gtx_channel.gtxe2_channel_i}] +set_property PACKAGE_PIN P5 [get_ports {pci_exp_rxn[0]}] +set_property PACKAGE_PIN P6 [get_ports {pci_exp_rxp[0]}] +set_property PACKAGE_PIN N3 [get_ports {pci_exp_txn[0]}] +set_property PACKAGE_PIN N4 [get_ports {pci_exp_txp[0]}] + +set_property LOC GTXE2_CHANNEL_X0Y14 [get_cells {zc706_pcie/zc706_pcie_x4_gen2_support_i/zc706_pcie_x4_gen2_i/inst/inst/gt_top_i/pipe_wrapper_i/pipe_lane[1].gt_wrapper_i/gtx_channel.gtxe2_channel_i}] +set_property PACKAGE_PIN T5 [get_ports {pci_exp_rxn[1]}] +set_property PACKAGE_PIN T6 [get_ports {pci_exp_rxp[1]}] +set_property PACKAGE_PIN P1 [get_ports {pci_exp_txn[1]}] +set_property PACKAGE_PIN P2 [get_ports {pci_exp_txp[1]}] + +set_property LOC GTXE2_CHANNEL_X0Y13 [get_cells {zc706_pcie/zc706_pcie_x4_gen2_support_i/zc706_pcie_x4_gen2_i/inst/inst/gt_top_i/pipe_wrapper_i/pipe_lane[2].gt_wrapper_i/gtx_channel.gtxe2_channel_i}] +set_property PACKAGE_PIN U3 [get_ports {pci_exp_rxn[2]}] +set_property PACKAGE_PIN U4 [get_ports {pci_exp_rxp[2]}] +set_property PACKAGE_PIN R3 [get_ports {pci_exp_txn[2]}] +set_property PACKAGE_PIN R4 [get_ports {pci_exp_txp[2]}] + +set_property LOC GTXE2_CHANNEL_X0Y12 [get_cells {zc706_pcie/zc706_pcie_x4_gen2_support_i/zc706_pcie_x4_gen2_i/inst/inst/gt_top_i/pipe_wrapper_i/pipe_lane[3].gt_wrapper_i/gtx_channel.gtxe2_channel_i}] +set_property PACKAGE_PIN V5 [get_ports {pci_exp_rxn[3]}] +set_property PACKAGE_PIN V6 [get_ports {pci_exp_rxp[3]}] +set_property PACKAGE_PIN T1 [get_ports {pci_exp_txn[3]}] +set_property PACKAGE_PIN T2 [get_ports {pci_exp_txp[3]}] + +set_property IOSTANDARD LVCMOS15 [get_ports pcie_rst_n] +set_property PULLUP true [get_ports pcie_rst_n] +set_property PACKAGE_PIN AK23 [get_ports pcie_rst_n] + +create_clock -period 10.000 -name sys_clk -waveform {0.000 5.000} [get_ports clk_ref_p] +set_clock_groups -asynchronous -group [get_clocks sys_clk -include_generated_clocks] +set_false_path -to [get_pins zc706_pcie/zc706_pcie_x4_gen2_support_i/pipe_clock_i/pclk_i1_bufgctrl.pclk_i1/S0] +set_false_path -to [get_pins zc706_pcie/zc706_pcie_x4_gen2_support_i/pipe_clock_i/pclk_i1_bufgctrl.pclk_i1/S1] +create_generated_clock -name clk_125mhz_x0y0 [get_pins zc706_pcie/zc706_pcie_x4_gen2_support_i/pipe_clock_i/mmcm_i/CLKOUT0] +create_generated_clock -name clk_250mhz_x0y0 [get_pins zc706_pcie/zc706_pcie_x4_gen2_support_i/pipe_clock_i/mmcm_i/CLKOUT1] +create_generated_clock -name clk_125mhz_mux_x0y0 -source [get_pins zc706_pcie/zc706_pcie_x4_gen2_support_i/pipe_clock_i/pclk_i1_bufgctrl.pclk_i1/I0] -divide_by 1 [get_pins zc706_pcie/zc706_pcie_x4_gen2_support_i/pipe_clock_i/pclk_i1_bufgctrl.pclk_i1/O] +create_generated_clock -name clk_250mhz_mux_x0y0 -source [get_pins zc706_pcie/zc706_pcie_x4_gen2_support_i/pipe_clock_i/pclk_i1_bufgctrl.pclk_i1/I1] -divide_by 1 -add -master_clock [get_clocks -of [get_pins zc706_pcie/zc706_pcie_x4_gen2_support_i/pipe_clock_i/pclk_i1_bufgctrl.pclk_i1/I1]] [get_pins zc706_pcie/zc706_pcie_x4_gen2_support_i/pipe_clock_i/pclk_i1_bufgctrl.pclk_i1/O] +set_clock_groups -name pcieclkmux -physically_exclusive -group clk_125mhz_mux_x0y0 -group clk_250mhz_mux_x0y0 + +set_property LOC IBUFDS_GTE2_X0Y6 [get_cells zc706_pcie/refclk_ibuf] + +set_false_path -from [get_ports pcie_rst_n] diff --git a/projects/ZC706/verilog/ddr3_adapter.v b/projects/ZC706/verilog/ddr3_adapter.v new file mode 100644 index 0000000..d3305f1 --- /dev/null +++ b/projects/ZC706/verilog/ddr3_adapter.v @@ -0,0 +1,161 @@ +`timescale 1ns / 1ps +`include "parameters.vh" +`include "project.vh" + +module ddr3_adapter + ( + input clk, + input rst, + + input init_calib_complete, + + // ddr_pipeline <-> outer module if + input [3:0] ddr_write, + input [3:0] ddr_read, + input [3:0] ddr_pre, + input [3:0] ddr_act, + input [3:0] ddr_ref, + input [3:0] ddr_zq, + input [3:0] ddr_nop, + input [3:0] ddr_ap, + input [3:0] ddr_half_bl, + input [3:0] ddr_pall, + input [4*`BG_WIDTH-1:0] ddr_bg, + input [4*`BANK_WIDTH-1:0] ddr_bank, + input [4*`COL_WIDTH-1:0] ddr_col, + input [4*`ROW_WIDTH-1:0] ddr_row, + input [511:0] ddr_wdata, + + // periodic maintenance signals + input ddr_maint_read, // next read will be a maintenance read + + // Adapter <-> PHY Interface + output [3:0] mc_ras_n, // DDR Row access strobe + output [3:0] mc_cas_n, // DDR Column access strobe + output [3:0] mc_we_n, // DDR Write enable + output [4*14-1:0] mc_address, // row address for activates / column address for read&writes + output [11:0] mc_bank, // bank address + output [3:0] mc_cs_n, // chip select, probably used to deselect in NOP cycles + output mc_reset_n, // Have no idea, probably need to keep HIGH + output reg [1:0] mc_odt, // Need some logic to drive this + output [3:0] mc_cke, // This should be HIGH all the time + // AUX - For ODT and CKE assertion during reads and writes + output [3:0] mc_aux_out0, + output [3:0] mc_aux_out1, + output mc_cmd_wren, // Enqueue new command + output mc_ctl_wren, // Enqueue new control singal + output [2:0] mc_cmd, // The command to enqueue + output [1:0] mc_cas_slot, // Which CAS slot we issued this command from 0-2 + output reg [5:0] mc_data_offset, + output reg [5:0] mc_data_offset_1, + output reg [5:0] mc_data_offset_2, + output [1:0] mc_rank_cnt, + // Write + output mc_wrdata_en, // Asserted for DDR-WRITEs + output [511:0] mc_wrdata, + output [63:0] mc_wrdata_mask, + output idle, + input phy_mc_ctl_full, // CTL interface is full + input phy_mc_cmd_full, // CMD interface is full + input phy_mc_data_full, // ????????? + input [5:0] calib_rd_data_offset_0, + input [5:0] calib_rd_data_offset_1, + input [5:0] calib_rd_data_offset_2, + // Misc + output wd_fifo_rden + ); + + // TODO: Fix WRDATA - drive wrdata and mask at wrdata_stage 2 + // TODO2: is mask enabled when it is set to one or zero? + + localparam CWL = 5; + + reg [511:0] wrdata_s1, wrdata_s2; + reg mc_wrdata_en_ns; + reg wrdata_en_s1, wrdata_en_s2; + // Pipe these signals + reg [1:0] mc_odt_r, mc_odt_ns; // Needs to be HI for two consecutive cycles after each WRITE + reg [2:0] mc_cmd_int; + assign mc_cmd = mc_cmd_int; + assign mc_wrdata_mask = {64{1'b1}}; + + assign mc_wrdata = wrdata_s2; + + always @(posedge clk) begin + wrdata_en_s1 <= mc_wrdata_en_ns; + wrdata_s1 <= ddr_wdata; + wrdata_en_s2 <= wrdata_en_s1; + wrdata_s2 <= wrdata_s1; + mc_odt_r <= mc_odt_ns; + end + + // TODO: can only issue CAS commands from odd slots for now + wire [1:0] cas_offset = ddr_read[1] | ddr_write[1] ? 2'b01 : 2'b11; + + assign wd_fifo_rden = wrdata_en_s1; + assign mc_wrdata_en = wrdata_en_s2; + assign mc_reset_n = 1'b1; + assign mc_cke = {4{1'b1}}; + assign mc_aux_out0 = 3'b0; + assign mc_aux_out1 = 3'b0; + assign idle = 1'b0; + assign mc_cmd_wren = init_calib_complete; + assign mc_ctl_wren = init_calib_complete; + assign mc_cas_slot = cas_offset; + assign mc_rank_cnt = 2'b0; + + genvar cmd_off; + generate + for(cmd_off = 0 ; cmd_off < 4 ; cmd_off = cmd_off + 1) begin: for_conv + assign mc_cs_n[cmd_off] = ddr_nop[cmd_off]; // NOP + assign mc_ras_n[cmd_off] = ddr_read[cmd_off] | // READ + ddr_write[cmd_off] | // WRITE + ddr_zq[cmd_off]; // ZQS + assign mc_cas_n[cmd_off] = ddr_act[cmd_off] | // ACT + ddr_pre[cmd_off] | // PRE + ddr_pall[cmd_off] | // PRE-ALL + ddr_zq[cmd_off]; // ZQS + assign mc_we_n[cmd_off] = ddr_act[cmd_off] | // ACT + ddr_read[cmd_off] | // READ + ddr_ref[cmd_off]; // REF + assign mc_bank = ddr_bank; // TODO is this correct?? + assign mc_address[cmd_off*14 +: 14] = + (ddr_read[cmd_off] | // READ or WRITE + ddr_write[cmd_off]) ? + ddr_col[cmd_off*`COL_WIDTH+:`COL_WIDTH]: // column address if read&write + ddr_act[cmd_off] ? + ddr_row[cmd_off*`ROW_WIDTH+:`ROW_WIDTH] :// row address + ddr_pall[cmd_off] ? + 14'b00_0100_0000_0000 : 14'b0; // all zeros if PRE - 10th bit will precharge all banks + end + endgenerate + + always @* begin + mc_odt = mc_odt_r; + mc_odt_ns = 2'b0; + mc_wrdata_en_ns = 1'b0; + mc_cmd_int = 0; + if(|ddr_write) begin// WRITE + mc_cmd_int = 3'b001; + mc_data_offset = CWL + 2'b10 + 1'b1; + mc_data_offset_1 = CWL + 2'b10 + 1'b1; + mc_data_offset_2 = CWL + 2'b10 + 1'b1; + mc_odt_ns = 2'b01; + mc_odt = 2'b01; + mc_wrdata_en_ns = 1'b1; + end + else if(|ddr_read) begin// READ + mc_cmd_int = 3'b011; + mc_data_offset = calib_rd_data_offset_0[5:0]; + mc_data_offset_1 = calib_rd_data_offset_1[5:0]; + mc_data_offset_2 = calib_rd_data_offset_2[5:0]; + end + else begin + mc_cmd_int = 3'b100; + mc_data_offset = 6'b0; + mc_data_offset_1 = 6'b0; + mc_data_offset_2 = 6'b0; + end + end + +endmodule \ No newline at end of file diff --git a/projects/ZC706/verilog/instruction_buffer.v b/projects/ZC706/verilog/instruction_buffer.v new file mode 100644 index 0000000..07a81f7 --- /dev/null +++ b/projects/ZC706/verilog/instruction_buffer.v @@ -0,0 +1,164 @@ +`timescale 1ns / 1ps + +module instruction_buffer #( + parameter C_DATA_WIDTH = 64, + parameter FIFO_WIDTH = 256, + localparam KEEP_WIDTH = C_DATA_WIDTH/8 +)( + input clk, + input reset, + + input [C_DATA_WIDTH-1:0] s_axis_tdata, + input s_axis_tvalid, + input [KEEP_WIDTH-1:0] s_axis_tkeep, + output s_axis_tready, + input s_axis_tlast, + + output [FIFO_WIDTH-1:0] m_axis_tdata, + output m_axis_tvalid, + input m_axis_tready, + output m_axis_tlast +); + +localparam FIFO_SCALE = FIFO_WIDTH / C_DATA_WIDTH; +localparam FIFO_BYTES = FIFO_WIDTH / 8; +localparam DATA_BYTES = C_DATA_WIDTH / 8; + +wire wr_rst_busy; +wire rd_rst_busy; + +reg [FIFO_WIDTH-1:0] fifo_tdata_r; +reg fifo_tvalid_r; +reg fifo_tlast_r; +reg [$clog2(FIFO_BYTES):0] byte_counter_r; +reg [(C_DATA_WIDTH/2)-1:0] overflow_buffer_r; +reg overflow_flag_r; +reg s_axis_tready_r; + +reg [FIFO_WIDTH-1:0] fifo_tdata_ns; +reg fifo_tvalid_ns; +reg fifo_tlast_ns; +reg [$clog2(FIFO_BYTES):0] byte_counter_ns; +reg [(C_DATA_WIDTH/2)-1:0] overflow_buffer_ns; +reg overflow_flag_ns; +reg s_axis_tready_ns; + +wire fifo_tready; + +initial begin + fifo_tdata_r <= 0; + fifo_tvalid_r <= 0; + fifo_tlast_r <= 0; + byte_counter_r <= 0; + s_axis_tready_r <= 0; + overflow_buffer_r <= 0; + overflow_flag_r <= 0; +end + +integer i; +always @(*) begin + fifo_tdata_ns = fifo_tdata_r; + fifo_tvalid_ns = fifo_tvalid_r; + byte_counter_ns = byte_counter_r; + fifo_tlast_ns = fifo_tlast_r || s_axis_tlast; + s_axis_tready_ns = !(fifo_tvalid_r && !fifo_tready); + overflow_buffer_ns = overflow_buffer_r; + overflow_flag_ns = overflow_flag_r; + if (fifo_tvalid_r && fifo_tready) begin + fifo_tvalid_ns = 0; + fifo_tlast_ns = 0; + end + if (s_axis_tvalid && s_axis_tready_r && !(fifo_tvalid_r && !fifo_tready)) begin + if (overflow_flag_r) begin + fifo_tdata_ns[(FIFO_BYTES - 4) * 8 +: 32] = overflow_buffer_r; + overflow_flag_ns = 0; + end + case(s_axis_tkeep) + 'h0F: begin + fifo_tdata_ns[(FIFO_BYTES - byte_counter_r - 4) * 8 +: 32] = s_axis_tdata[31:0]; + byte_counter_ns = byte_counter_r + 'd4; + if (byte_counter_r == FIFO_BYTES - 'd4) begin + fifo_tvalid_ns = 1; + byte_counter_ns = 0; + s_axis_tready_ns = fifo_tready; + end + end + 'hF0: begin + fifo_tdata_ns[(FIFO_BYTES - byte_counter_r - 4) * 8 +: 32] = s_axis_tdata[63:32]; + byte_counter_ns = byte_counter_r + 'd4; + if (byte_counter_r == FIFO_BYTES - 'd4) begin + fifo_tvalid_ns = 1; + byte_counter_ns = 0; + s_axis_tready_ns = fifo_tready; + end + end + 'hFF: begin + if (byte_counter_r == FIFO_BYTES - 'd4) begin + fifo_tdata_ns[(FIFO_BYTES - byte_counter_r - 4) * 8 +: 32] = s_axis_tdata[63:32]; + overflow_buffer_ns = s_axis_tdata[31:0]; + fifo_tvalid_ns = 1; + overflow_flag_ns = 1; + byte_counter_ns = 'd4; + s_axis_tready_ns = fifo_tready; + end + else if (byte_counter_r == FIFO_BYTES - 'd8) begin + fifo_tdata_ns[(FIFO_BYTES - byte_counter_r - 8) * 8 +: 64] = s_axis_tdata; + fifo_tvalid_ns = 1; + byte_counter_ns = 'd0; + s_axis_tready_ns = fifo_tready; + end + else begin + fifo_tdata_ns[(FIFO_BYTES - byte_counter_r - 8) * 8 +: 64] = s_axis_tdata; + byte_counter_ns = byte_counter_r + 'd8; + fifo_tvalid_ns = 0; + end + end + default: begin + fifo_tdata_ns = fifo_tdata_r; + byte_counter_ns = byte_counter_r; + end + endcase + end +end + +always @(posedge clk) begin + if (reset) begin + fifo_tdata_r <= 0; + fifo_tvalid_r <= 0; + fifo_tlast_r <= 0; + byte_counter_r <= 0; + overflow_buffer_r <= 0; + overflow_flag_r <= 0; + s_axis_tready_r <= 0; + end + else begin + fifo_tdata_r <= fifo_tdata_ns; + fifo_tvalid_r <= fifo_tvalid_ns; + fifo_tlast_r <= fifo_tlast_ns; + byte_counter_r <= byte_counter_ns; + overflow_buffer_r <= overflow_buffer_ns; + overflow_flag_r <= overflow_flag_ns; + s_axis_tready_r <= s_axis_tready_ns; + end +end + +instr_fifo instr_fifo_i ( + .s_aclk(clk), // input wire s_aclk + .s_aresetn(~reset), // input wire s_aresetn + .wr_rst_busy(wr_rst_busy), // output wire wr_rst_busy + .rd_rst_busy(rd_rst_busy), // output wire rd_rst_busy + .s_axis_tvalid(fifo_tvalid_r), // input wire s_axis_tvalid + .s_axis_tready(fifo_tready), // output wire s_axis_tready + .s_axis_tdata(fifo_tdata_r), // input wire [255 : 0] s_axis_tdata + .s_axis_tlast(fifo_tlast_r), // input wire s_axis_tlast + .m_axis_tvalid(m_axis_tvalid), // output wire m_axis_tvalid + .m_axis_tready(m_axis_tready), // input wire m_axis_tready + .m_axis_tdata(m_axis_tdata), // output wire [255 : 0] m_axis_tdata + .m_axis_tlast(m_axis_tlast) // output wire m_axis_tlast +); + +assign s_axis_tready = s_axis_tready_r; + +wire unused = wr_rst_busy & rd_rst_busy; + +endmodule \ No newline at end of file diff --git a/projects/ZC706/verilog/pcie_app_7x.v b/projects/ZC706/verilog/pcie_app_7x.v new file mode 100644 index 0000000..33c2b24 --- /dev/null +++ b/projects/ZC706/verilog/pcie_app_7x.v @@ -0,0 +1,207 @@ +`timescale 1ps / 1ps + +`include "project.vh" +`define PCI_EXP_EP_OUI 24'h000A35 +`define PCI_EXP_EP_DSN_1 {{8'h1},`PCI_EXP_EP_OUI} +`define PCI_EXP_EP_DSN_2 32'h00000001 + +module pcie_app_7x #( + parameter C_DATA_WIDTH = 64, // RX/TX interface data width + parameter KEEP_WIDTH = C_DATA_WIDTH / 8 // TSTRB width +)( + input user_clk, + input user_reset, + input user_lnk_up, + + // softmc <- host + output [`SOFTMC_STREAM_WIDTH-1:0] softmc_h2c_tdata, + output [`SOFTMC_STREAM_KEEP-1:0] softmc_h2c_tkeep, + output softmc_h2c_tvalid, + input softmc_h2c_tready, + output softmc_h2c_tlast, + + // softmc -> host + input [`SOFTMC_STREAM_WIDTH-1:0] softmc_c2h_tdata, + input [`SOFTMC_STREAM_KEEP-1:0] softmc_c2h_tkeep, + input softmc_c2h_tvalid, + output softmc_c2h_tready, + input softmc_c2h_tlast, + + // Tx + input s_axis_tx_tready, + output [C_DATA_WIDTH-1:0] s_axis_tx_tdata, + output [KEEP_WIDTH-1:0] s_axis_tx_tkeep, + output [3:0] s_axis_tx_tuser, + output s_axis_tx_tlast, + output s_axis_tx_tvalid, + + // Rx + input [C_DATA_WIDTH-1:0] m_axis_rx_tdata, + input [KEEP_WIDTH-1:0] m_axis_rx_tkeep, + input m_axis_rx_tlast, + input m_axis_rx_tvalid, + output m_axis_rx_tready, + input [21:0] m_axis_rx_tuser, + + input cfg_to_turnoff, + input [7:0] cfg_bus_number, + input [4:0] cfg_device_number, + input [2:0] cfg_function_number, + input [15:0] cfg_dcommand, + input [15:0] cfg_command, + + output tx_cfg_gnt, + output cfg_pm_halt_aspm_l0s, + output cfg_pm_halt_aspm_l1, + output cfg_pm_force_state_en, + output [1:0] cfg_pm_force_state, + output rx_np_ok, + output rx_np_req, + output cfg_turnoff_ok, + output cfg_trn_pending, + output cfg_pm_wake, + output [63:0] cfg_dsn, + // Flow Control + output [2:0] fc_sel, + // CFG + output cfg_err_cor, + output cfg_err_ur, + output cfg_err_ecrc, + output cfg_err_cpl_timeout, + output cfg_err_cpl_unexpect, + output cfg_err_cpl_abort, + output cfg_err_atomic_egress_blocked, + output cfg_err_internal_cor, + output cfg_err_malformed, + output cfg_err_mc_blocked, + output cfg_err_poisoned, + output cfg_err_norecovery, + output cfg_err_acs, + output cfg_err_internal_uncor, + output cfg_err_posted, + output cfg_err_locked, + output [47:0] cfg_err_tlp_cpl_header, + output [127:0] cfg_err_aer_headerlog, + output [4:0] cfg_aer_interrupt_msgnum, + output [1:0] pl_directed_link_change, + output [1:0] pl_directed_link_width, + output pl_directed_link_speed, + output pl_directed_link_auton, + output pl_upstream_prefer_deemph, + input cfg_mgmt_rd_wr_done, + input [31:0] cfg_mgmt_do, + output [31:0] cfg_mgmt_di, + output [3:0] cfg_mgmt_byte_en, + output [9:0] cfg_mgmt_dwaddr, + output cfg_mgmt_wr_en, + output cfg_mgmt_rd_en, + output cfg_mgmt_wr_readonly, + input cfg_interrupt_rdy, + output cfg_interrupt, + output cfg_interrupt_assert, + output [7:0] cfg_interrupt_di, + output cfg_interrupt_stat, + input cfg_interrupt_msienable, + output [4:0] cfg_pciecap_interrupt_msgnum +); + +wire [15:0] cfg_completer_id; + +assign fc_sel = 3'b0; +assign tx_cfg_gnt = 1'b1; // Always allow transmission of Config traffic within block +assign rx_np_ok = 1'b1; // Allow Reception of Non-posted Traffic +assign rx_np_req = 1'b1; // Always request Non-posted Traffic if available +assign cfg_pm_wake = 1'b0; // Never direct the core to send a PM_PME Message +assign cfg_trn_pending = 1'b0; // Never set the transaction pending bit in the Device Status Register +assign cfg_pm_halt_aspm_l0s = 1'b0; // Allow entry into L0s +assign cfg_pm_halt_aspm_l1 = 1'b0; // Allow entry into L1 +assign cfg_pm_force_state_en = 1'b0; // Do not qualify cfg_pm_force_state +assign cfg_pm_force_state = 2'b00; // Do not move force core into specific PM state +assign cfg_dsn = {`PCI_EXP_EP_DSN_2, `PCI_EXP_EP_DSN_1}; // Assign the input DSN +assign s_axis_tx_tuser[0] = 1'b0; // Unused for V6 +assign s_axis_tx_tuser[1] = 1'b0; // Error forward packet +assign s_axis_tx_tuser[2] = 1'b0; // Stream packet +assign cfg_err_cor = 1'b0; // Never report Correctable Error +assign cfg_err_ur = 1'b0; // Never report UR +assign cfg_err_ecrc = 1'b0; // Never report ECRC Error +assign cfg_err_cpl_timeout = 1'b0; // Never report Completion Timeout +assign cfg_err_cpl_abort = 1'b0; // Never report Completion Abort +assign cfg_err_cpl_unexpect = 1'b0; // Never report unexpected completion +assign cfg_err_posted = 1'b0; // Never qualify cfg_err_* inputs +assign cfg_err_locked = 1'b0; // Never qualify cfg_err_ur or cfg_err_cpl_abort +assign cfg_err_atomic_egress_blocked = 1'b0; // Never report Atomic TLP blocked +assign cfg_err_internal_cor = 1'b0; // Never report internal error occurred +assign cfg_err_malformed = 1'b0; // Never report malformed error +assign cfg_err_mc_blocked = 1'b0; // Never report multi-cast TLP blocked +assign cfg_err_poisoned = 1'b0; // Never report poisoned TLP received +assign cfg_err_norecovery = 1'b0; // Never qualify cfg_err_poisoned or cfg_err_cpl_timeout +assign cfg_err_acs = 1'b0; // Never report an ACS violation +assign cfg_err_internal_uncor = 1'b0; // Never report internal uncorrectable error +assign cfg_err_aer_headerlog = 128'h0; // Zero out the AER Header Log +assign cfg_aer_interrupt_msgnum = 5'b00000; // Zero out the AER Root Error Status Register +assign cfg_err_tlp_cpl_header = 48'h0; // Zero out the header information + +assign cfg_interrupt_stat = 1'b0; // Never set the Interrupt Status bit +assign cfg_pciecap_interrupt_msgnum = 5'b00000; // Zero out Interrupt Message Number + +assign pl_directed_link_change = 2'b00; // Never initiate link change +assign pl_directed_link_width = 2'b00; // Zero out directed link width +assign pl_directed_link_speed = 1'b0; // Zero out directed link speed +assign pl_directed_link_auton = 1'b0; // Zero out link autonomous input +assign pl_upstream_prefer_deemph = 1'b1; // Zero out preferred de-emphasis of upstream port + +assign cfg_mgmt_di = 32'h0; // Zero out CFG MGMT input data bus +assign cfg_mgmt_byte_en = 4'h0; // Zero out CFG MGMT byte enables +assign cfg_mgmt_wr_en = 1'b0; // Do not write CFG space +assign cfg_mgmt_wr_readonly = 1'b0; // Never treat RO bit as RW + +assign cfg_completer_id = {cfg_bus_number, cfg_device_number, cfg_function_number}; +assign softmc_h2c_tkeep = {`SOFTMC_STREAM_KEEP{1'b1}}; + +pcie_app_softmc #( + .C_DATA_WIDTH( C_DATA_WIDTH ), + .KEEP_WIDTH( KEEP_WIDTH ) +) softmc_app ( + .user_clk ( user_clk ), // I + .user_reset ( user_reset ), // I + .user_lnk_up ( user_lnk_up ), // I + .softmc_h2c_tdata ( softmc_h2c_tdata ), // O + .softmc_h2c_tvalid ( softmc_h2c_tvalid ), // O + .softmc_h2c_tready ( softmc_h2c_tready ), // I + .softmc_h2c_tlast ( softmc_h2c_tlast ), // O + .softmc_c2h_tdata ( softmc_c2h_tdata ), // I + .softmc_c2h_tvalid ( softmc_c2h_tvalid ), // I + .softmc_c2h_tready ( softmc_c2h_tready ), // O + .softmc_c2h_tlast ( softmc_c2h_tlast ), // I + .cfg_bus_number ( cfg_bus_number ), // I + .cfg_device_number ( cfg_device_number ), // I + .cfg_function_number ( cfg_function_number ), // I + .cfg_to_turnoff ( cfg_to_turnoff ), // I + .cfg_completer_id ( cfg_completer_id ), // I + .cfg_turnoff_ok ( cfg_turnoff_ok ), // O + .cfg_dcommand ( cfg_dcommand ), // I + .cfg_command ( cfg_command ), // I + .cfg_interrupt ( cfg_interrupt ), // O + .cfg_interrupt_assert ( cfg_interrupt_assert ), // O + .cfg_interrupt_rdy ( cfg_interrupt_rdy ), // I + .cfg_interrupt_di ( cfg_interrupt_di ), // O + .cfg_interrupt_msienable ( cfg_interrupt_msienable ), // I + .pci_cfg_dwaddr ( cfg_mgmt_dwaddr ), // O + .pci_cfg_rd_en ( cfg_mgmt_rd_en ), // O + .pci_cfg_dout ( cfg_mgmt_do ), // I + .pci_cfg_rd_wr_done ( cfg_mgmt_rd_wr_done ), // I + .s_axis_tx_tready ( s_axis_tx_tready ), // I + .s_axis_tx_tdata ( s_axis_tx_tdata ), // O + .s_axis_tx_tkeep ( s_axis_tx_tkeep ), // O + .s_axis_tx_tlast ( s_axis_tx_tlast ), // O + .s_axis_tx_tvalid ( s_axis_tx_tvalid ), // O + .tx_src_dsc ( s_axis_tx_tuser[3] ), // O + .m_axis_rx_tdata ( m_axis_rx_tdata ), // I + .m_axis_rx_tkeep ( m_axis_rx_tkeep ), // I + .m_axis_rx_tlast ( m_axis_rx_tlast ), // I + .m_axis_rx_tvalid ( m_axis_rx_tvalid ), // I + .m_axis_rx_tready ( m_axis_rx_tready ), // O + .m_axis_rx_tuser ( m_axis_rx_tuser ) // I +); + +endmodule diff --git a/projects/ZC706/verilog/pcie_softmc_app.v b/projects/ZC706/verilog/pcie_softmc_app.v new file mode 100644 index 0000000..7389078 --- /dev/null +++ b/projects/ZC706/verilog/pcie_softmc_app.v @@ -0,0 +1,957 @@ +`timescale 1ps/1ps + +`include "project.vh" + +module pcie_app_softmc #( + parameter C_DATA_WIDTH = 64, + parameter KEEP_WIDTH = C_DATA_WIDTH / 8, + + // TLP Field Constants + parameter DW_WIDTH = 32, + parameter MAX_ADDR_WIDTH = 64, + parameter DW_COUNT = 2, + parameter PKT_REQUESTER_ID_WIDTH = 16, + parameter PKT_LENGTH_WIDTH = 10, + parameter PKT_TAG_WIDTH = 8, + parameter PKT_TYPE_WIDTH = 5, + parameter PKT_FORMAT_WIDTH = 3, + parameter PKT_FIRST_WD_WIDTH = 4, + parameter PKT_LAST_WD_WIDTH = 4, + + // Internal Memory Parameters + parameter INTERNAL_MEM_DEPTH = 1024, + parameter BAR_BITS = 20 // MAX number of bits required for BAR adress space + // might seem unnecessary but saves us a subtraction + // which reduces latency (needs to be pipelined at 250+ MHz) +)( + input user_clk, + input user_reset, + input user_lnk_up, + + output [`SOFTMC_STREAM_WIDTH-1:0] softmc_h2c_tdata, + output softmc_h2c_tvalid, + input softmc_h2c_tready, + output softmc_h2c_tlast, + + input [`SOFTMC_STREAM_WIDTH-1:0] softmc_c2h_tdata, + input softmc_c2h_tvalid, + output softmc_c2h_tready, + input softmc_c2h_tlast, + + input [7:0] cfg_bus_number, + input [4:0] cfg_device_number, + input [2:0] cfg_function_number, + input [15:0] cfg_dcommand, + input [15:0] cfg_command, + output cfg_interrupt, + output cfg_interrupt_assert, + input cfg_interrupt_rdy, + output [7:0] cfg_interrupt_di, + input cfg_interrupt_msienable, + + output [9:0] pci_cfg_dwaddr, + output pci_cfg_rd_en, + input [31:0] pci_cfg_dout, + input pci_cfg_rd_wr_done, + + input s_axis_tx_tready, + output [C_DATA_WIDTH-1:0] s_axis_tx_tdata, + output [KEEP_WIDTH-1:0] s_axis_tx_tkeep, + output s_axis_tx_tlast, + output s_axis_tx_tvalid, + output tx_src_dsc, + + input [C_DATA_WIDTH-1:0] m_axis_rx_tdata, + input [KEEP_WIDTH-1:0] m_axis_rx_tkeep, + input m_axis_rx_tlast, + input m_axis_rx_tvalid, + output m_axis_rx_tready, + input [21:0] m_axis_rx_tuser, + + input cfg_to_turnoff, + output cfg_turnoff_ok, + input [15:0] cfg_completer_id +); + +wire app_reset; + +// RX FSM Declarations +localparam RECV_IDLE = 'd0; +localparam RECV_HEAD1 = 'd1; +localparam RECV_HEAD2 = 'd2; +localparam RECV_DATA = 'd3; +localparam UNDEFINED_STATE = 'bz; + +reg [2:0] fsm_recv_state_r; +reg m_axis_rx_tready_r; +wire [7:0] rx_bar_hit; + +// TLP Declarations +localparam DW3_NODATA = 'b000; +localparam DW4_NODATA = 'b001; +localparam DW3_DATA = 'b010; +localparam DW4_DATA = 'b011; + +wire [15:0] dma_requester_id = {cfg_bus_number, cfg_device_number, cfg_function_number}; + +wire [PKT_LENGTH_WIDTH-1:0] pkt_len; +wire [PKT_REQUESTER_ID_WIDTH-1:0] pkt_requester_id; +wire [PKT_TAG_WIDTH-1:0] pkt_tag; +wire [PKT_TYPE_WIDTH-1:0] pkt_type; +wire [PKT_FORMAT_WIDTH-1:0] pkt_fmt; +wire [PKT_FIRST_WD_WIDTH-1:0] pkt_first_wd_be; +wire [PKT_LAST_WD_WIDTH-1:0] pkt_last_wd_be; +wire [3:0] pkt_valid_bytes; +wire pkt_is_MRd; +wire pkt_is_MWr; +wire pkt_is_IORd; +wire pkt_is_IOWr; + +reg [MAX_ADDR_WIDTH-1:0] pkt_local_addr; +reg pkt_bar_id; +wire [DW_WIDTH-1:0] tlp_dw[0:DW_COUNT-1]; + +reg pkt_bar_id_r; +reg [PKT_LENGTH_WIDTH-1:0] pkt_len_r; +reg [PKT_REQUESTER_ID_WIDTH-1:0] pkt_requester_id_r; +reg [PKT_TAG_WIDTH-1:0] pkt_tag_r; +reg [PKT_TYPE_WIDTH-1:0] pkt_type_r; +reg [PKT_FORMAT_WIDTH-1:0] pkt_fmt_r; +reg [PKT_FIRST_WD_WIDTH-1:0] pkt_first_wd_be_r; +reg [PKT_LAST_WD_WIDTH-1:0] pkt_last_wd_be_r; +reg [MAX_ADDR_WIDTH-1:0] pkt_addr_r; +reg [C_DATA_WIDTH-1:0] pkt_data_r; +reg [KEEP_WIDTH-1:0] pkt_data_valid_r; +reg [11:0] pkt_data_byte_ctr_r; + +// Internal Packet Data Routing Decalarations +reg [(C_DATA_WIDTH/2)-1:0] pkt_a_din; +reg [MAX_ADDR_WIDTH-1:0] pkt_a_addr; +reg pkt_a_wr_en; + +reg [(C_DATA_WIDTH/2)-1:0] pkt_b_din; +reg [MAX_ADDR_WIDTH-1:0] pkt_b_addr; +reg pkt_b_wr_en; + + +// Internal Memory Declarations +reg [(C_DATA_WIDTH/2)-1:0] mem_a_din; +reg [MAX_ADDR_WIDTH-1:0] mem_a_addr; +reg mem_a_dout; +reg mem_a_wr_en; + +reg [(C_DATA_WIDTH/2)-1:0] mem_b_din; +reg [MAX_ADDR_WIDTH-1:0] mem_b_addr; +reg mem_b_dout; +reg mem_b_wr_en; + +// TxN Buffer Declarations +wire [C_DATA_WIDTH-1:0] send_buff_tdata; +wire [C_DATA_WIDTH/2-1:0] send_buff_upper_half_data; +wire [KEEP_WIDTH-1:0] send_buff_tkeep; +wire [KEEP_WIDTH/2-1:0] send_buff_upper_half_keep; +wire send_buff_tvalid; +wire send_buff_upper_half_valid; +wire send_buff_tready; +wire send_buff_upper_half_ready; + +wire [11:0] send_buff_full_data_count; +wire [12:0] send_buff_half_data_count; +wire send_buff_programmed_stop; + +reg send_buff_tready_r; +reg send_buff_upper_half_ready_r; + + + +// Application Control Declarations +localparam COMMAND_RD = 'b01; +localparam COMMAND_WR = 'b11; +localparam COMMAND_NOP = 'b00; +localparam COMMAND_LAST_BIT = 'd3; +localparam INTR_RD_DONE = 8'd0; +localparam INTR_WR_DONE = 8'd0; + +localparam ABANDON_COUNT = 50_000_000; + +localparam SEND_IDLE = 'd0; +localparam SEND_WRITE0 = 'd1; // Starts from 0, checks buffers and timers before initiating txn. +localparam SEND_WRITE1 = 'd2; +localparam SEND_WRITE2 = 'd3; +localparam SEND_READ1 = 'd4; +localparam SEND_READ2 = 'd5; +localparam SEND_READ3 = 'd6; +localparam SEND_DATA1 = 'd7; +localparam SEND_DATA2 = 'd8; +localparam SEND_ISSUE = 'd9; +localparam SEND_INTR1 = 'd10; +localparam SEND_INTR_LEGACY1 = 'd11; +localparam SEND_INTR_LEGACY2 = 'd12; +localparam SEND_INTR_LEGACY3 = 'd13; +localparam SEND_INTR_MSI1 = 'd14; +localparam SEND_INTR_MSI2 = 'd15; +localparam SEND_STALL_READ = 'd16; +localparam SEND_TXN_REG1 = 'd17; +localparam SEND_TXN_REG2 = 'd18; +localparam SEND_TXN_REG3 = 'd19; + +reg cfg_interrupt_r; +reg [7:0] cfg_interrupt_di_r; +reg cfg_interrupt_assert_r; + +wire [10:0] cfg_max_rd_size; +wire [10:0] cfg_max_wr_size; + +reg [4:0] fsm_send_state_r; +reg [PKT_TAG_WIDTH-1:0] cmd_tag_r; +reg cmd_tag_completed_r; +reg [15:0] cmd_tag_req_len_r; +reg [15:0] tag_dw_count_r; +reg cmd_rd_is_last_r; +reg tag_tlast_r; + +reg [15:0] cmd_sent_r; +reg [15:0] cmd_remaining_r; +reg [PKT_TAG_WIDTH-1:0] cmd_remaining_tag_r; +reg [1:0] cmd_remaining_type_r; +reg [63:0] cmd_remaining_addr_r; + + +reg cmd_stat_update_r; +reg [3:0] cmd_stat_idx_r; +reg [31:0] cmd_stat_data_r; +wire cmd_bar_hit; + +wire bus_master_enabled; +wire intr_enabled; + +/* + command_controls_r: + // Temporary Regs (cleared after each command) + 0 -> command initiator + 1 -> high 32 bit address, only used for 64 bit addressing mode + 2 -> low 32 bit address + 3 -> reserved for later + // Permanent Regs (never cleared by device, must be overwritten by host) + 0 -> high 32 bit address for status writes, only used for 64 bit addressing mode + 1 -> low 32 bit address for status writes (i.e. number of bytes written, errors etc) + 2 -> 32 bit status register {16 bits->bytes written by last command, 16 bits->reserved} +*/ + +localparam NUM_TEMP_REGS = 'd4; +localparam NUM_PERM_REGS = 'd3; +localparam CMD_EXEC_REG = 'd0; +localparam CMD_HI_ADDR = 'd1; +localparam CMD_LO_ADDR = 'd2; +localparam CMD_RESERVED0 = 'd3; +localparam TXN_STATUS_HI_ADDR = NUM_TEMP_REGS + 'd0; +localparam TXN_STATUS_LO_ADDR = NUM_TEMP_REGS + 'd1; +localparam TXN_STATUS_REG = NUM_TEMP_REGS + 'd2; + +reg [31:0] command_controls_r[0:NUM_TEMP_REGS + NUM_PERM_REGS - 1]; +reg command_clear_r; + +reg [15:0] cmd_len_r; +wire [1:0] cmd_type; +wire [15:0] cmd_len; +wire cmd_tlast; +wire [15:0] cmd_wr_pkt_len; +wire [15:0] cmd_rd_pkt_len; + +reg [15:0] cmd_wr_pkt_len_r; +reg [15:0] cmd_rd_pkt_len_r; + +// Master AXIS Port Declarations +reg [C_DATA_WIDTH-1:0] s_axis_tx_tdata_r; +reg [KEEP_WIDTH-1:0] s_axis_tx_tkeep_r; +reg s_axis_tx_tlast_r; +reg s_axis_tx_tvalid_r; + +// Instruction Memory Declarations +wire [C_DATA_WIDTH-1:0] s_axis_instr_mem_tdata; +wire s_axis_instr_mem_tvalid; +wire s_axis_instr_mem_tready; +wire [KEEP_WIDTH-1:0] s_axis_instr_mem_tkeep; +wire s_axis_instr_mem_tlast; +wire [`SOFTMC_STREAM_WIDTH-1:0] m_axis_instr_mem_tdata; +wire m_axis_instr_mem_tvalid; +wire m_axis_instr_mem_tready; +wire m_axis_instr_mem_tlast; + +// Loop and Generation Declarations +integer i; +genvar j; + +// Relabelling Packet Double Words To Increase Readability +generate + for (j = 0; j < DW_COUNT; j = j + 1) begin : tlp_dw_assg + assign tlp_dw[j] = m_axis_rx_tdata[j*DW_WIDTH +: DW_WIDTH]; + end +endgenerate + +initial begin + for (i = 0; i < NUM_PERM_REGS + NUM_TEMP_REGS; i = i + 1) begin + command_controls_r[i] <= 0; + end + fsm_recv_state_r <= RECV_IDLE; + fsm_send_state_r <= SEND_IDLE; + m_axis_rx_tready_r <= 0; + pkt_data_byte_ctr_r <= 0; + pkt_a_din <= 0; + pkt_a_addr <= 0; + pkt_a_wr_en <= 0; + pkt_b_din <= 0; + pkt_b_addr <= 0; + pkt_b_wr_en <= 0; + cmd_rd_is_last_r <= 0; + command_clear_r <= 0; + s_axis_tx_tdata_r <= 0; + s_axis_tx_tkeep_r <= 0; + s_axis_tx_tlast_r <= 0; + s_axis_tx_tvalid_r <= 0; + cmd_sent_r <= 0; + cmd_remaining_r <= 0; + cmd_remaining_type_r <= 0; + cfg_interrupt_r <= 0; + cfg_interrupt_assert_r <= 0; + cfg_interrupt_di_r <= 0; + cmd_stat_update_r <= 0; + cmd_stat_idx_r <= 0; + cmd_stat_data_r <= 0; + tag_tlast_r <= 0; +end + +// Local address Conversion And Bus ID Assignment +always @(*) begin + pkt_local_addr = {64'd0, pkt_addr_r[BAR_BITS-1:0]}; + pkt_bar_id = rx_bar_hit[0] ? 'd0 : 'hFF; +end + +always @(posedge user_clk) begin + cmd_wr_pkt_len_r <= cmd_wr_pkt_len; + cmd_rd_pkt_len_r <= cmd_rd_pkt_len; +end + +// Packet Decode FSM +always @(posedge user_clk) begin + if (command_clear_r) begin + tag_dw_count_r <= 0; + end + if (app_reset) begin + fsm_recv_state_r <= RECV_IDLE; + m_axis_rx_tready_r <= 0; + pkt_data_byte_ctr_r <= 0; + tag_dw_count_r <= 0; + end + else begin + case (fsm_recv_state_r) + RECV_IDLE: begin + if (m_axis_rx_tready_r && m_axis_rx_tvalid) begin + fsm_recv_state_r <= (pkt_fmt == 'b001 || pkt_fmt == 'b011) ? RECV_HEAD1 : + (pkt_fmt == 'b000 || pkt_fmt == 'b010) ? RECV_HEAD2 : RECV_IDLE; + pkt_len_r <= pkt_len; + pkt_requester_id_r <= pkt_requester_id; + pkt_tag_r <= pkt_tag; + pkt_type_r <= pkt_type; + pkt_fmt_r <= pkt_fmt; + pkt_first_wd_be_r <= pkt_first_wd_be; + pkt_last_wd_be_r <= pkt_last_wd_be; + pkt_bar_id_r <= pkt_bar_id; + pkt_data_byte_ctr_r <= 0; + end + else begin + m_axis_rx_tready_r <= 1; + pkt_bar_id_r <= 'hFF; + end + pkt_data_valid_r <= 0; + tag_tlast_r <= 0; + end + RECV_HEAD1: begin + if (m_axis_rx_tready_r && m_axis_rx_tvalid) begin + pkt_addr_r[63:2] <= {tlp_dw[1], tlp_dw[0][31:2]}; + pkt_addr_r[1:0] <= pkt_first_wd_be_r[0] ? 'b00 : + pkt_first_wd_be_r[1] ? 'b01 : + pkt_first_wd_be_r[2] ? 'b10 : + pkt_first_wd_be_r[3] ? 'b11 : 'b00; + fsm_recv_state_r <= (pkt_fmt_r == 'b010 || pkt_fmt_r == 'b011) && (pkt_len_r != 'b1) ? RECV_DATA : RECV_IDLE; + end + else begin + m_axis_rx_tready_r <= 1; + end + pkt_data_valid_r <= 0; + end + RECV_HEAD2: begin + if (m_axis_rx_tready_r && m_axis_rx_tvalid) begin + if (pkt_type_r == 5'h0a) begin // Read Completion, update tag + pkt_tag_r <= tlp_dw[0][15:8]; + tag_tlast_r <= cmd_rd_is_last_r && (pkt_tag_r == cmd_tag_r) && (tag_dw_count_r == (cmd_tag_req_len_r - (pkt_valid_bytes / 4))); + tag_dw_count_r <= m_axis_rx_tkeep[7:4] == 'hF ? tag_dw_count_r + 1 : tag_dw_count_r; + end + pkt_addr_r[63:2] <= {32'd0, tlp_dw[0][31:2]}; + pkt_addr_r[1:0] <= pkt_first_wd_be_r[0] ? 'b00 : + pkt_first_wd_be_r[1] ? 'b01 : + pkt_first_wd_be_r[2] ? 'b10 : + pkt_first_wd_be_r[3] ? 'b11 : 'b00; + pkt_data_r[63:32] <= 32'd0; + pkt_data_r[31:0] <= tlp_dw[1]; + pkt_data_valid_r <= {4'b0, m_axis_rx_tkeep[7:4]}; + pkt_data_byte_ctr_r <= m_axis_rx_tkeep[7:4] == 'hF ? pkt_data_byte_ctr_r + 'd4 : pkt_data_byte_ctr_r; + fsm_recv_state_r <= (pkt_fmt_r == 'b010 || pkt_fmt_r == 'b011) && (pkt_len_r != 'b1) ? RECV_DATA : RECV_IDLE; + end + else begin + m_axis_rx_tready_r <= 1; + pkt_data_valid_r <= 0; + end + end + RECV_DATA: begin + if (m_axis_rx_tready_r && m_axis_rx_tvalid) begin + pkt_data_r[63:32] <= tlp_dw[1]; + pkt_data_r[31:0] <= tlp_dw[0]; + pkt_data_valid_r <= m_axis_rx_tkeep; + tag_tlast_r <= cmd_rd_is_last_r && (pkt_tag_r == cmd_tag_r) && (tag_dw_count_r == (cmd_tag_req_len_r - (pkt_valid_bytes / 4))); + tag_dw_count_r <= pkt_tag_r == cmd_tag_r ? tag_dw_count_r + (pkt_valid_bytes / 4) : tag_dw_count_r; + pkt_data_byte_ctr_r <= pkt_data_byte_ctr_r + pkt_valid_bytes; + fsm_recv_state_r <= m_axis_rx_tlast || + pkt_data_byte_ctr_r + pkt_valid_bytes >= pkt_len_r << 2 || + pkt_data_byte_ctr_r == 'd4096 ? RECV_IDLE : RECV_DATA; + end + else begin + m_axis_rx_tready_r <= 1; + pkt_data_valid_r <= 0; + tag_tlast_r <= 0; + end + end + endcase + end +end + +// Write Request Routing +// Left Port B Empty So Read Requests can be paralellized in the future +always @(*) begin + pkt_a_din = 0; + pkt_a_addr = 0; + pkt_a_wr_en = 0; + pkt_b_din = 0; + pkt_b_addr = 0; + pkt_b_wr_en = 0; + case (pkt_data_valid_r) + 'h0F: begin + pkt_a_addr = pkt_local_addr / 4; + pkt_a_din = pkt_data_r[31:0]; + pkt_a_wr_en = 1; + end + 'hF0: begin + pkt_a_addr = pkt_local_addr / 4; + pkt_a_din = pkt_data_r[63:32]; + pkt_a_wr_en = 1; + end + 'hFF: begin + pkt_a_addr = pkt_local_addr / 4; + pkt_a_din = pkt_data_r[31:0]; + pkt_a_wr_en = 1; + pkt_b_addr = pkt_local_addr / 4 + 1; + pkt_b_din = pkt_data_r[63:32]; + pkt_b_wr_en = 1; + end + default: begin + pkt_a_addr = pkt_local_addr / 4; + pkt_a_wr_en = 0; + pkt_b_addr = pkt_local_addr / 4 + 1; + pkt_b_wr_en = 0; + end + endcase +end + +// Handling Writes to command registers +always @(posedge user_clk) begin + if (app_reset) begin + for (i = 0; i < NUM_TEMP_REGS + NUM_PERM_REGS; i = i + 1) begin + command_controls_r[i] <= 0; + end + end + else begin + if (command_clear_r) begin + for (i = 0; i < NUM_TEMP_REGS; i = i + 1) begin + command_controls_r[i] <= 0; + end + end + if (cmd_bar_hit && !(command_clear_r && pkt_a_addr < NUM_TEMP_REGS)) begin + if (pkt_a_wr_en) begin + command_controls_r[pkt_a_addr] <= {<<8{pkt_a_din}}; // Big Endian -> Little Endian + end + if (pkt_b_wr_en) begin + command_controls_r[pkt_b_addr] <= {<<8{pkt_b_din}}; // Big Endian -> Little Endian + end + end + if (cmd_stat_update_r) begin + command_controls_r[cmd_stat_idx_r] <= cmd_stat_data_r; + end + end +end + +reg [14:0] available_bytes_r; +reg [14:0] available_bytes_ns; + +reg [31:0] abandon_ctr_r; +reg [31:0] abandon_ctr_ns; + +// Implement these if your module should be able to flush buffers +// One implementation could be to connect timers and apply these +// Flush just sends a single packet early, abandon drops remaining requests as well +// MUST be held high until fsm_send_state_r : SEND_WRITE0 -> SEND_WRITE1 happens +reg flush_early_r; +reg flush_early_ns; +reg abandon_cmd_r; +reg abandon_cmd_ns; + +always @(posedge user_clk) begin + if (app_reset) begin + available_bytes_r <= 0; + flush_early_r <= 0; + abandon_cmd_r <= 0; + abandon_ctr_r <= 0; + end + else begin + available_bytes_r <= available_bytes_ns; + flush_early_r <= flush_early_ns; + abandon_cmd_r <= abandon_cmd_ns; + abandon_ctr_r <= abandon_ctr_ns; + end +end + +// Combinational Application Control +always @(*) begin + flush_early_ns = fsm_send_state_r == SEND_WRITE0 ? 0 : flush_early_r; + abandon_cmd_ns = fsm_send_state_r == SEND_WRITE0 ? 0 : abandon_cmd_r; + abandon_ctr_ns = (softmc_c2h_tvalid || fsm_send_state_r != SEND_WRITE0) ? 0 : abandon_ctr_r + 1; + available_bytes_ns = send_buff_full_data_count * C_DATA_WIDTH / 8; + if (app_reset) begin + send_buff_tready_r = 0; + send_buff_upper_half_ready_r = 0; + end + else begin + if (abandon_ctr_r == ABANDON_COUNT) begin + flush_early_ns = 1; + abandon_cmd_ns = 1; + abandon_ctr_ns = 1; + end + send_buff_tready_r = 0; + send_buff_upper_half_ready_r = 0; + case (fsm_send_state_r) + SEND_WRITE2: begin + send_buff_upper_half_ready_r = s_axis_tx_tvalid_r && s_axis_tx_tready; + end + SEND_DATA1: begin + send_buff_upper_half_ready_r = s_axis_tx_tvalid_r && s_axis_tx_tready && cmd_len_r == 1; + send_buff_tready_r = s_axis_tx_tvalid_r && s_axis_tx_tready && cmd_len_r != 1; + end + endcase + end +end + +// Sequential Application Control +always @(posedge user_clk) begin + if (app_reset) begin + fsm_send_state_r <= SEND_IDLE; + command_clear_r <= 0; + cmd_sent_r <= 0; + cmd_remaining_r <= 0; + cmd_remaining_type_r <= COMMAND_NOP; + cmd_tag_r <= 0; + cmd_tag_completed_r <= 1; + end + else begin + case (fsm_send_state_r) + SEND_IDLE: begin + if (cmd_type == COMMAND_WR) begin + fsm_send_state_r <= SEND_ISSUE; + cmd_sent_r <= 0; + cmd_remaining_r <= cmd_len; + cmd_remaining_type_r <= COMMAND_WR; + cmd_rd_is_last_r <= 0; + cmd_remaining_addr_r <= {command_controls_r[CMD_HI_ADDR][31:0], command_controls_r[CMD_LO_ADDR][31:2], 2'b00}; + command_clear_r <= 1; + end + else if (cmd_type == COMMAND_RD) begin + fsm_send_state_r <= SEND_ISSUE; + cmd_tag_req_len_r <= cmd_len; + cmd_remaining_r <= cmd_len; + cmd_remaining_tag_r <= cmd_tag_r + 1; + cmd_remaining_type_r <= COMMAND_RD; + cmd_rd_is_last_r <= cmd_tlast; + cmd_remaining_addr_r <= {command_controls_r[CMD_HI_ADDR][31:0], command_controls_r[CMD_LO_ADDR][31:2], 2'b00}; + command_clear_r <= 1; + end + else begin + cmd_remaining_type_r <= COMMAND_NOP; + command_clear_r <= 0; + cmd_rd_is_last_r <= 0; + end + s_axis_tx_tvalid_r <= 0; + s_axis_tx_tlast_r <= 0; + cfg_interrupt_r <= 0; + cmd_stat_update_r <= 0; + end + SEND_ISSUE: begin + if (!bus_master_enabled) begin + cmd_remaining_type_r <= COMMAND_NOP; + fsm_send_state_r <= SEND_ISSUE; + end + else if (cmd_remaining_type_r == COMMAND_WR) begin + fsm_send_state_r <= SEND_WRITE0; + end + else if (cmd_remaining_type_r == COMMAND_RD) begin + if (cmd_tag_r == cmd_remaining_tag_r) begin + fsm_send_state_r <= SEND_READ1; + cmd_len_r <= cmd_rd_pkt_len_r; + cmd_remaining_r <= cmd_remaining_r - cmd_rd_pkt_len_r; + cmd_tag_completed_r <= 0; + end + if (cmd_tag_completed_r) begin + cmd_tag_r <= cmd_remaining_tag_r; + end + end + else begin + cmd_remaining_type_r <= COMMAND_NOP; + fsm_send_state_r <= SEND_IDLE; + end + s_axis_tx_tvalid_r <= 0; + s_axis_tx_tlast_r <= 0; + end + SEND_INTR1: begin + if (intr_enabled) begin + fsm_send_state_r <= cfg_interrupt_msienable ? SEND_INTR_MSI1 : SEND_INTR_LEGACY1; + end + else begin + fsm_send_state_r <= SEND_INTR1; + end + end + SEND_INTR_MSI1: begin + if (cfg_interrupt_r && cfg_interrupt_rdy) begin + fsm_send_state_r <= SEND_IDLE; + cmd_remaining_type_r <= COMMAND_NOP; + cfg_interrupt_r <= 0; + end + else begin + cfg_interrupt_r <= 1; + cfg_interrupt_assert_r <= 1; + cfg_interrupt_di_r <= cmd_remaining_r == COMMAND_WR ? INTR_WR_DONE : + cmd_remaining_r == COMMAND_RD ? INTR_RD_DONE : 0; + end + end + SEND_INTR_LEGACY1: begin + if (cfg_interrupt_r && cfg_interrupt_rdy) begin + fsm_send_state_r <= SEND_INTR_LEGACY2; + cfg_interrupt_r <= 0; + cfg_interrupt_assert_r <= 1; + end + else begin + cfg_interrupt_r <= 1; + cfg_interrupt_assert_r <= 1; + end + end + SEND_INTR_LEGACY2: begin + if (!intr_enabled) begin + fsm_send_state_r <= SEND_INTR_LEGACY3; + cfg_interrupt_r <= 1; + cfg_interrupt_assert_r <= 0; + end + else begin + cfg_interrupt_r <= 0; + cfg_interrupt_assert_r <= 1; + end + end + SEND_INTR_LEGACY3: begin + if (cfg_interrupt_r && cfg_interrupt_rdy) begin + fsm_send_state_r <= SEND_IDLE; + cmd_remaining_type_r <= COMMAND_NOP; + cfg_interrupt_r <= 0; + cfg_interrupt_assert_r <= 0; + end + else begin + cfg_interrupt_r <= 1; + cfg_interrupt_assert_r <= 0; + end + end + SEND_READ1: begin + fsm_send_state_r <= SEND_READ2; + s_axis_tx_tdata_r[9:0] <= cmd_len_r; + s_axis_tx_tdata_r[23:10] <= 'd0; + s_axis_tx_tdata_r[28:24] <= 'b0_0000; + s_axis_tx_tdata_r[31:29] <= DW3_NODATA; + s_axis_tx_tdata_r[35:32] <= 'hF; + s_axis_tx_tdata_r[39:36] <= cmd_len_r == 1 ? 'h0 : 'hF; + s_axis_tx_tdata_r[47:40] <= cmd_remaining_tag_r; + s_axis_tx_tdata_r[63:48] <= dma_requester_id; + s_axis_tx_tkeep_r <= 'hFF; + s_axis_tx_tvalid_r <= 1; + command_clear_r <= 0; + cmd_stat_update_r <= 0; + end + SEND_READ2: begin + if (s_axis_tx_tvalid_r && s_axis_tx_tready) begin + fsm_send_state_r <= SEND_READ3; + s_axis_tx_tdata_r[1:0] <= 'd0; + s_axis_tx_tdata_r[63:2] <= cmd_remaining_addr_r[63:2]; + cmd_remaining_addr_r <= cmd_remaining_addr_r + (cmd_len_r * 4); + s_axis_tx_tkeep_r <= 'h0F; + s_axis_tx_tlast_r <= 1; + end + s_axis_tx_tvalid_r <= 1; + command_clear_r <= 0; + cmd_stat_update_r <= 0; + end + SEND_READ3: begin + if (s_axis_tx_tvalid_r && s_axis_tx_tready) begin + fsm_send_state_r <= cmd_remaining_r == 0 ? SEND_STALL_READ : SEND_ISSUE; + s_axis_tx_tvalid_r <= 0; + s_axis_tx_tlast_r <= 0; + end + else begin + s_axis_tx_tvalid_r <= 1; + end + command_clear_r <= 0; + cmd_stat_update_r <= 0; + end + SEND_STALL_READ: begin + if (tag_dw_count_r == cmd_tag_req_len_r) begin + fsm_send_state_r <= SEND_INTR1; + cmd_tag_completed_r <= 1; + end + end + SEND_WRITE0: begin + if ((available_bytes_r / 4) >= cmd_wr_pkt_len_r) begin + fsm_send_state_r <= SEND_WRITE1; + cmd_len_r <= cmd_wr_pkt_len_r; + cmd_sent_r <= cmd_sent_r + cmd_wr_pkt_len_r * 4; + cmd_remaining_r <= cmd_remaining_r - cmd_wr_pkt_len_r; + end + else if (send_buff_programmed_stop) begin + fsm_send_state_r <= SEND_WRITE1; + cmd_len_r <= available_bytes_r >= 4 ? available_bytes_r / 4 : 1; + cmd_sent_r <= cmd_sent_r + available_bytes_r; + cmd_remaining_r <= 0; + end + else if (flush_early_r) begin + fsm_send_state_r <= SEND_WRITE1; + cmd_len_r <= available_bytes_r > 4 ? available_bytes_r / 4 : 1; + cmd_sent_r <= cmd_sent_r + available_bytes_r; + cmd_remaining_r <= abandon_cmd_r ? 0 : cmd_remaining_r - (available_bytes_r / 4); + end + else begin + fsm_send_state_r <= SEND_WRITE0; + end + end + SEND_WRITE1: begin + fsm_send_state_r <= SEND_WRITE2; + s_axis_tx_tdata_r[9:0] <= cmd_len_r; + s_axis_tx_tdata_r[23:10] <= 'd0; + s_axis_tx_tdata_r[28:24] <= 'b0_0000; + s_axis_tx_tdata_r[31:29] <= DW3_DATA; + s_axis_tx_tdata_r[35:32] <= 'hF; + s_axis_tx_tdata_r[39:36] <= cmd_len_r == 1 ? 'h0 : 'hF; + s_axis_tx_tdata_r[47:40] <= 'd0; + s_axis_tx_tdata_r[63:48] <= dma_requester_id; + s_axis_tx_tkeep_r <= 'hFF; + s_axis_tx_tvalid_r <= 1; + command_clear_r <= 0; + cmd_stat_update_r <= 0; + end + SEND_WRITE2: begin + if (s_axis_tx_tvalid_r && s_axis_tx_tready) begin + fsm_send_state_r <= cmd_len_r == 1 ? SEND_DATA2 : SEND_DATA1; + s_axis_tx_tdata_r[1:0] <= 'd0; + s_axis_tx_tdata_r[31:2] <= cmd_remaining_addr_r[31:2]; + cmd_remaining_addr_r <= cmd_remaining_addr_r + (cmd_len_r * 4); + s_axis_tx_tdata_r[63:32] <= send_buff_upper_half_data; + s_axis_tx_tkeep_r <= 'hFF; + s_axis_tx_tlast_r <= cmd_len_r == 1 ? 1 : 0; + cmd_len_r <= cmd_len_r - 1; + end + s_axis_tx_tvalid_r <= 1; + command_clear_r <= 0; + cmd_stat_update_r <= 0; + end + SEND_DATA1: begin + if (s_axis_tx_tvalid_r && s_axis_tx_tready) begin + fsm_send_state_r <= (cmd_len_r != 2 && cmd_len_r != 1) ? SEND_DATA1 : + (cmd_remaining_r == 0) ? SEND_DATA2 : SEND_ISSUE; + s_axis_tx_tdata_r[31:0] <= cmd_len_r != 1 ? send_buff_tdata[63:32] : send_buff_upper_half_data; + s_axis_tx_tdata_r[63:32] <= send_buff_tdata[31:0]; + s_axis_tx_tkeep_r <= cmd_len_r != 1 ? 'hFF : 'h0F; + s_axis_tx_tlast_r <= (cmd_len_r != 2 && cmd_len_r != 1) ? 0 : 1; + cmd_len_r <= cmd_len_r - 2; + end + s_axis_tx_tvalid_r <= 1; + command_clear_r <= 0; + cmd_stat_update_r <= 0; + end + SEND_DATA2: begin + if (s_axis_tx_tvalid_r && s_axis_tx_tready) begin + fsm_send_state_r <= SEND_TXN_REG1; + s_axis_tx_tvalid_r <= 0; + s_axis_tx_tlast_r <= 0; + cmd_stat_update_r <= 1; + cmd_stat_idx_r <= TXN_STATUS_REG; + cmd_stat_data_r <= {<<8{16'b0, cmd_sent_r}}; + end + command_clear_r <= 0; + end + SEND_TXN_REG1: begin + fsm_send_state_r <= SEND_TXN_REG2; + s_axis_tx_tdata_r[9:0] <= 'd1; + s_axis_tx_tdata_r[23:10] <= 'd0; + s_axis_tx_tdata_r[28:24] <= 'b0_0000; + s_axis_tx_tdata_r[31:29] <= DW3_DATA; + s_axis_tx_tdata_r[35:32] <= 'hF; + s_axis_tx_tdata_r[39:36] <= 'h0; + s_axis_tx_tdata_r[47:40] <= 'd0; + s_axis_tx_tdata_r[63:48] <= dma_requester_id; + s_axis_tx_tkeep_r <= 'hFF; + s_axis_tx_tvalid_r <= 1; + command_clear_r <= 0; + cmd_stat_update_r <= 0; + end + SEND_TXN_REG2: begin + if (s_axis_tx_tvalid_r && s_axis_tx_tready) begin + fsm_send_state_r <= SEND_TXN_REG3; + s_axis_tx_tdata_r[1:0] <= 'd0; + s_axis_tx_tdata_r[31:2] <= command_controls_r[TXN_STATUS_LO_ADDR][31:2]; + s_axis_tx_tdata_r[63:32] <= command_controls_r[TXN_STATUS_REG]; + s_axis_tx_tkeep_r <= 'hFF; + s_axis_tx_tlast_r <= 'd1; + end + s_axis_tx_tvalid_r <= 1; + command_clear_r <= 0; + cmd_stat_update_r <= 0; + end + SEND_TXN_REG3: begin + if (s_axis_tx_tvalid_r && s_axis_tx_tready) begin + fsm_send_state_r <= SEND_INTR1; + s_axis_tx_tvalid_r <= 0; + s_axis_tx_tlast_r <= 0; + end + end + endcase + end +end + +assign app_reset = user_reset || !user_lnk_up; +assign m_axis_rx_tready = m_axis_rx_tready_r; +assign pkt_len = tlp_dw[0][9:0]; +assign pkt_type = tlp_dw[0][28:24]; +assign pkt_fmt = tlp_dw[0][31:29]; +assign pkt_requester_id = tlp_dw[1][31:16]; +assign pkt_tag = tlp_dw[1][15:8]; +assign pkt_first_wd_be = tlp_dw[1][3:0]; +assign pkt_last_wd_be = tlp_dw[1][7:4]; +assign pkt_is_MRd = (pkt_fmt == DW3_NODATA || pkt_fmt == DW3_NODATA) && pkt_type == 'b0_0000; +assign pkt_is_MWr = (pkt_fmt == DW3_DATA || pkt_fmt == DW3_DATA) && pkt_type == 'b0_0000; +assign pkt_is_IORd = pkt_fmt == DW3_NODATA && pkt_type == 'b0_0010; +assign pkt_is_IOWr = pkt_fmt == DW4_NODATA && pkt_type == 'b0_0010; +assign pkt_valid_bytes = m_axis_rx_tkeep == 'hF0 ? 'd4 : + m_axis_rx_tkeep == 'h0F ? 'd4 : + m_axis_rx_tkeep == 'hFF ? 'd8 : 'd0; +assign cmd_tlast = command_controls_r[CMD_EXEC_REG][COMMAND_LAST_BIT]; +assign cmd_type = command_controls_r[CMD_EXEC_REG][1:0]; +assign cmd_len = command_controls_r[CMD_EXEC_REG][31:16] / 4; +assign cmd_bar_hit = pkt_bar_id_r == 'd0; +assign s_axis_tx_tdata = s_axis_tx_tdata_r; +assign s_axis_tx_tkeep = s_axis_tx_tkeep_r; +assign s_axis_tx_tlast = s_axis_tx_tlast_r; +assign s_axis_tx_tvalid = s_axis_tx_tvalid_r; +assign tx_src_dsc = 'b0; +assign cfg_turnoff_ok = 'b1; +assign rx_bar_hit = m_axis_rx_tuser[9:2]; +assign cfg_max_rd_size = (1 << (cfg_dcommand[14:12] + 'd5)); +assign cfg_max_wr_size = (1 << (cfg_dcommand[7:5] + 'd5)); +assign cfg_interrupt = cfg_interrupt_r; +assign cfg_interrupt_assert = cfg_interrupt_assert_r; +assign cfg_interrupt_di = cfg_interrupt_di_r; +assign s_axis_instr_mem_tdata = {pkt_a_din, pkt_b_din}; +assign s_axis_instr_mem_tvalid = (pkt_a_wr_en || pkt_b_wr_en) && (!cmd_bar_hit); +assign s_axis_instr_mem_tkeep = {{4{pkt_a_wr_en}}, {4{pkt_b_wr_en}}}; +assign s_axis_instr_mem_tlast = tag_tlast_r; +assign softmc_h2c_tdata = m_axis_instr_mem_tdata; +assign softmc_h2c_tvalid = m_axis_instr_mem_tvalid; +assign softmc_h2c_tlast = m_axis_instr_mem_tlast; +assign m_axis_instr_mem_tready = softmc_h2c_tready; +assign cmd_wr_pkt_len = cmd_remaining_r > cfg_max_wr_size ? cfg_max_wr_size : cmd_remaining_r; +assign cmd_rd_pkt_len = cmd_remaining_r > cfg_max_rd_size ? cfg_max_rd_size : cmd_remaining_r; +assign send_buff_full_data_count = send_buff_half_data_count / 2; +assign send_buff_tready = send_buff_tready_r; +assign send_buff_upper_half_ready = send_buff_upper_half_ready_r; +assign bus_master_enabled = cfg_command[2]; +assign intr_enabled = ~cfg_command[10]; +assign pci_cfg_dwaddr = 0; +assign pci_cfg_rd_en = 0; + +pcie_txn_buffer #( + .C_IN_DATA_WIDTH(`SOFTMC_STREAM_WIDTH), + .C_OUT_DATA_WIDTH(C_DATA_WIDTH) +) send_buff ( + .clk(user_clk), + .reset(app_reset), + .s_axis_tdata(softmc_c2h_tdata), + .s_axis_tkeep('hFFFFFFFFFFFFFFFF), + .s_axis_tvalid(softmc_c2h_tvalid), + .s_axis_tready(softmc_c2h_tready), + .s_axis_tlast(softmc_c2h_tlast), + .m_axis_tdata(send_buff_tdata), + .m_axis_tkeep(send_buff_tkeep), + .m_axis_tvalid(send_buff_tvalid), + .m_axis_tready(send_buff_tready), + .m_axis_upper_half_data(send_buff_upper_half_data), + .m_axis_upper_half_keep(send_buff_upper_half_keep), + .m_axis_upper_half_valid(send_buff_upper_half_valid), + .m_axis_upper_half_ready(send_buff_upper_half_ready), + .data_count(send_buff_half_data_count), + .programmed_stop(send_buff_programmed_stop) +); + +instruction_buffer #( + .C_DATA_WIDTH(C_DATA_WIDTH), + .FIFO_WIDTH(`SOFTMC_STREAM_WIDTH) +) instr_buff ( + .clk(user_clk), + .reset(app_reset), + .s_axis_tdata(s_axis_instr_mem_tdata), + .s_axis_tvalid(s_axis_instr_mem_tvalid), + .s_axis_tready(s_axis_instr_mem_tready), + .s_axis_tkeep(s_axis_instr_mem_tkeep), + .s_axis_tlast(s_axis_instr_mem_tlast), + .m_axis_tdata(m_axis_instr_mem_tdata), + .m_axis_tvalid(m_axis_instr_mem_tvalid), + .m_axis_tready(m_axis_instr_mem_tready), + .m_axis_tlast(m_axis_instr_mem_tlast) +); + +// ila_app debug_app ( +// .clk(user_clk), +// .probe0(cmd_rd_is_last_r), +// .probe1(app_reset), +// .probe2(cfg_interrupt_rdy), +// .probe3(intr_enabled), +// .probe4(fsm_recv_state_r), +// .probe5(fsm_send_state_r), +// .probe6(command_controls_r[CMD_EXEC_REG]), +// .probe7(tag_tlast_r), +// .probe8(cmd_sent_r), +// .probe9(command_controls_r[TXN_STATUS_REG]), +// .probe10(available_bytes_r) +// ); + +// ila_instr_fifo debug_instr_fifo ( +// .clk(user_clk), // input wire clk +// .probe0(s_axis_instr_mem_tlast), // input wire [0:0] probe0 +// .probe1(s_axis_instr_mem_tdata), // input wire [63:0] probe1 +// .probe2(s_axis_instr_mem_tvalid), // input wire [0:0] probe2 +// .probe3(s_axis_instr_mem_tready), // input wire [0:0] probe3 +// .probe4(s_axis_instr_mem_tkeep), // input wire [7:0] probe4 +// .probe5(m_axis_instr_mem_tdata), // input wire [255:0] probe5 +// .probe6(m_axis_instr_mem_tvalid), // input wire [0:0] probe6 +// .probe7(m_axis_instr_mem_tready), // input wire [0:0] probe7 +// .probe8(m_axis_instr_mem_tlast) // input wire [0:0] probe8 +// ); + +endmodule \ No newline at end of file diff --git a/projects/ZC706/verilog/pcie_top.v b/projects/ZC706/verilog/pcie_top.v new file mode 100644 index 0000000..2e5d55a --- /dev/null +++ b/projects/ZC706/verilog/pcie_top.v @@ -0,0 +1,706 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : xilinx_pcie_2_1_ep_7x.v +// Version : 3.2 +//-- +//-- Description: PCI Express Endpoint example FPGA design +//-- +//------------------------------------------------------------------------------ + +`include "project.vh" +// `define DEBUG + +`timescale 1ns / 1ps +(* DowngradeIPIdentifiedWarnings = "yes" *) +module pcie_top # ( + parameter PL_FAST_TRAIN = "FALSE", // Simulation Speedup + parameter EXT_PIPE_SIM = "FALSE", // This Parameter has effect on selecting Enable External PIPE Interface in GUI. + parameter PCIE_EXT_CLK = "TRUE", // Use External Clocking Module + parameter PCIE_EXT_GT_COMMON = "FALSE", + parameter REF_CLK_FREQ = 0, // 0 - 100 MHz, 1 - 125 MHz, 2 - 250 MHz + parameter C_DATA_WIDTH = 64, // RX/TX interface data width + parameter KEEP_WIDTH = C_DATA_WIDTH / 8 // TSTRB width +) ( + output [3:0] pci_exp_txp, + output [3:0] pci_exp_txn, + input [3:0] pci_exp_rxp, + input [3:0] pci_exp_rxn, + + output led_0, + output led_2, + output led_3, + +`ifndef DEBUG + output [`SOFTMC_STREAM_WIDTH-1:0] softmc_h2c_tdata, + output [`SOFTMC_STREAM_KEEP-1:0] softmc_h2c_tkeep, + output softmc_h2c_tvalid, + input softmc_h2c_tready, + output softmc_h2c_tlast, + + input [`SOFTMC_STREAM_WIDTH-1:0] softmc_c2h_tdata, + input [`SOFTMC_STREAM_KEEP-1:0] softmc_c2h_tkeep, + input softmc_c2h_tvalid, + output softmc_c2h_tready, + input softmc_c2h_tlast, + + output user_clk_o, + output user_reset_o, +`endif + + input sys_clk_p, + input sys_clk_n, + input sys_rst_n +); + +// Wire Declarations + wire pipe_mmcm_rst_n; + + wire user_clk; + wire user_reset; + wire user_lnk_up; + + assign user_clk_o = user_clk; + assign user_reset_o = user_reset; + + // Tx + wire s_axis_tx_tready; + wire [3:0] s_axis_tx_tuser; + wire [C_DATA_WIDTH-1:0] s_axis_tx_tdata; + wire [KEEP_WIDTH-1:0] s_axis_tx_tkeep; + wire s_axis_tx_tlast; + wire s_axis_tx_tvalid; + + // Rx + wire [C_DATA_WIDTH-1:0] m_axis_rx_tdata; + wire [KEEP_WIDTH-1:0] m_axis_rx_tkeep; + wire m_axis_rx_tlast; + wire m_axis_rx_tvalid; + wire m_axis_rx_tready; + wire [21:0] m_axis_rx_tuser; + + wire tx_cfg_gnt; + wire rx_np_ok; + wire rx_np_req; + wire cfg_turnoff_ok; + wire cfg_trn_pending; + wire cfg_pm_halt_aspm_l0s; + wire cfg_pm_halt_aspm_l1; + wire cfg_pm_force_state_en; + wire [1:0] cfg_pm_force_state; + wire cfg_pm_wake; + wire [63:0] cfg_dsn; + + // Flow Control + wire [2:0] fc_sel; + + //------------------------------------------------------- + // Configuration (CFG) Interface + //------------------------------------------------------- + wire cfg_err_ecrc; + wire cfg_err_cor; + wire cfg_err_ur; + wire cfg_err_cpl_timeout; + wire cfg_err_cpl_abort; + wire cfg_err_cpl_unexpect; + wire cfg_err_posted; + wire cfg_err_locked; + wire [47:0] cfg_err_tlp_cpl_header; + wire [127:0] cfg_err_aer_headerlog; + wire [4:0] cfg_aer_interrupt_msgnum; + + wire cfg_interrupt; + wire cfg_interrupt_rdy; + wire cfg_interrupt_assert; + wire [7:0] cfg_interrupt_di; + wire cfg_interrupt_stat; + wire [4:0] cfg_pciecap_interrupt_msgnum; + wire cfg_interrupt_msienable; + + wire cfg_to_turnoff; + wire [7:0] cfg_bus_number; + wire [4:0] cfg_device_number; + wire [2:0] cfg_function_number; + + wire [31:0] cfg_mgmt_di; + wire [31:0] cfg_mgmt_do; + wire [3:0] cfg_mgmt_byte_en; + wire [9:0] cfg_mgmt_dwaddr; + wire cfg_mgmt_wr_en; + wire cfg_mgmt_rd_en; + wire cfg_mgmt_rd_wr_done; + wire cfg_mgmt_wr_readonly; + + wire [15:0] cfg_dcommand; + wire [15:0] cfg_command; + + //------------------------------------------------------- + // Physical Layer Control and Status (PL) Interface + //------------------------------------------------------- + wire pl_directed_link_auton; + wire [1:0] pl_directed_link_change; + wire pl_directed_link_speed; + wire [1:0] pl_directed_link_width; + wire pl_upstream_prefer_deemph; + + wire sys_rst_n_c; + + +// Register Declaration + reg user_reset_q; + reg user_lnk_up_q; + reg [25:0] user_clk_heartbeat = 'h0; + +// Local Parameters + localparam TCQ = 1; + localparam USER_CLK_FREQ = 3; + localparam USER_CLK2_DIV2 = "FALSE"; + localparam USERCLK2_FREQ = (USER_CLK2_DIV2 == "TRUE") ? (USER_CLK_FREQ == 4) ? 3 : (USER_CLK_FREQ == 3) ? 2 : USER_CLK_FREQ: USER_CLK_FREQ; + + + //-----------------------------I/O BUFFERS------------------------// + + IBUF sys_reset_n_ibuf (.O(sys_rst_n_c), .I(sys_rst_n)); + + IBUFDS_GTE2 refclk_ibuf (.O(sys_clk), .ODIV2(), .I(sys_clk_p), .CEB(1'b0), .IB(sys_clk_n)); + + OBUF led_0_obuf (.O(led_0), .I(!user_reset)); + OBUF led_2_obuf (.O(led_2), .I(user_lnk_up)); + OBUF led_3_obuf (.O(led_3), .I(user_clk_heartbeat[25])); + + always @(posedge user_clk) begin + user_reset_q <= user_reset; + user_lnk_up_q <= user_lnk_up; + end + + // Create a Clock Heartbeat on LED #3 + always @(posedge user_clk) begin + user_clk_heartbeat <= #TCQ user_clk_heartbeat + 1'b1; + end + + assign pipe_mmcm_rst_n = 1'b1; + +`ifdef DEBUG + localparam DATA_LIMIT = 'd1024; + wire [`SOFTMC_STREAM_WIDTH-1:0] softmc_h2c_tdata; + wire [`SOFTMC_STREAM_KEEP-1:0] softmc_h2c_tkeep; + wire softmc_h2c_tvalid; + reg softmc_h2c_tready; + wire softmc_h2c_tlast; + + reg [`SOFTMC_STREAM_WIDTH-1:0] softmc_c2h_tdata; + reg [`SOFTMC_STREAM_KEEP-1:0] softmc_c2h_tkeep; + reg softmc_c2h_tvalid; + wire softmc_c2h_tready; + reg softmc_c2h_tlast; + + reg [15:0] data_count; + reg [7:0] data_base; + + integer data_loop_i; + always @(posedge user_clk) begin + if (user_reset_q) begin + softmc_c2h_tdata <= 0; + softmc_c2h_tkeep <= 0; + softmc_c2h_tvalid <= 0; + softmc_c2h_tlast <= 0; + softmc_h2c_tready <= 0; + data_count <= 0; + data_base <= 0; + end + else begin + softmc_c2h_tkeep <= {`SOFTMC_STREAM_KEEP{1'b1}}; + softmc_c2h_tlast <= data_count == (DATA_LIMIT - 1); + softmc_h2c_tready <= 1; + if (softmc_c2h_tready && softmc_c2h_tvalid) begin + for (data_loop_i = 0; data_loop_i < `SOFTMC_STREAM_KEEP; data_loop_i = data_loop_i + 1) begin + softmc_c2h_tdata[(`SOFTMC_STREAM_KEEP - data_loop_i - 1) * 8 +: 8] <= (data_base + `SOFTMC_STREAM_KEEP) + data_loop_i; + end + softmc_c2h_tvalid <= data_count < (DATA_LIMIT - 1); + data_count <= data_count + (`SOFTMC_STREAM_WIDTH / 32); // each data is 32 bits long + data_base <= data_base + `SOFTMC_STREAM_KEEP; + end + else begin + for (data_loop_i = 0; data_loop_i < `SOFTMC_STREAM_KEEP; data_loop_i = data_loop_i + 1) begin + softmc_c2h_tdata[(`SOFTMC_STREAM_KEEP - data_loop_i - 1) * 8 +: 8] <= data_base + data_loop_i; + end + softmc_c2h_tvalid <= data_count < DATA_LIMIT; + end + end + end +`endif + +zc706_pcie_x4_gen2_support # + ( + .LINK_CAP_MAX_LINK_WIDTH ( 4 ), // PCIe Lane Width + .C_DATA_WIDTH ( C_DATA_WIDTH ), // RX/TX interface data width + .KEEP_WIDTH ( KEEP_WIDTH ), // TSTRB width + .PCIE_REFCLK_FREQ ( REF_CLK_FREQ ), // PCIe reference clock frequency + .PCIE_USERCLK1_FREQ ( USER_CLK_FREQ +1 ), // PCIe user clock 1 frequency + .PCIE_USERCLK2_FREQ ( USERCLK2_FREQ +1 ), // PCIe user clock 2 frequency + .PCIE_USE_MODE ("3.0"), // PCIe use mode + .PCIE_GT_DEVICE ("GTX") // PCIe GT device + ) +zc706_pcie_x4_gen2_support_i + ( + + //----------------------------------------------------------------------------------------------------------------// + // PCI Express (pci_exp) Interface // + //----------------------------------------------------------------------------------------------------------------// + // Tx + .pci_exp_txn ( pci_exp_txn ), + .pci_exp_txp ( pci_exp_txp ), + + // Rx + .pci_exp_rxn ( pci_exp_rxn ), + .pci_exp_rxp ( pci_exp_rxp ), + + //----------------------------------------------------------------------------------------------------------------// + // Clocking Sharing Interface // + //----------------------------------------------------------------------------------------------------------------// + .pipe_pclk_out_slave ( ), + .pipe_rxusrclk_out ( ), + .pipe_rxoutclk_out ( ), + .pipe_dclk_out ( ), + .pipe_userclk1_out ( ), + .pipe_oobclk_out ( ), + .pipe_userclk2_out ( ), + .pipe_mmcm_lock_out ( ), + .pipe_pclk_sel_slave ( 4'b0), + .pipe_mmcm_rst_n ( pipe_mmcm_rst_n ), // Async | Async + + + //----------------------------------------------------------------------------------------------------------------// + // AXI-S Interface // + //----------------------------------------------------------------------------------------------------------------// + + // Common + .user_clk_out ( user_clk ), + .user_reset_out ( user_reset ), + .user_lnk_up ( user_lnk_up ), + .user_app_rdy ( ), + + // TX + .s_axis_tx_tready ( s_axis_tx_tready ), + .s_axis_tx_tdata ( s_axis_tx_tdata ), + .s_axis_tx_tkeep ( s_axis_tx_tkeep ), + .s_axis_tx_tuser ( s_axis_tx_tuser ), + .s_axis_tx_tlast ( s_axis_tx_tlast ), + .s_axis_tx_tvalid ( s_axis_tx_tvalid ), + + // Rx + .m_axis_rx_tdata ( m_axis_rx_tdata ), + .m_axis_rx_tkeep ( m_axis_rx_tkeep ), + .m_axis_rx_tlast ( m_axis_rx_tlast ), + .m_axis_rx_tvalid ( m_axis_rx_tvalid ), + .m_axis_rx_tready ( m_axis_rx_tready ), + .m_axis_rx_tuser ( m_axis_rx_tuser ), + + // Flow Control + .fc_cpld ( ), + .fc_cplh ( ), + .fc_npd ( ), + .fc_nph ( ), + .fc_pd ( ), + .fc_ph ( ), + .fc_sel ( fc_sel ), + + // Management Interface + .cfg_mgmt_di ( cfg_mgmt_di ), + .cfg_mgmt_byte_en ( cfg_mgmt_byte_en ), + .cfg_mgmt_dwaddr ( cfg_mgmt_dwaddr ), + .cfg_mgmt_wr_en ( cfg_mgmt_wr_en ), + .cfg_mgmt_rd_en ( cfg_mgmt_rd_en ), + .cfg_mgmt_wr_readonly ( cfg_mgmt_wr_readonly ), + + //------------------------------------------------// + // EP and RP // + //------------------------------------------------// + .cfg_mgmt_do ( cfg_mgmt_do ), + .cfg_mgmt_rd_wr_done ( cfg_mgmt_rd_wr_done ), + .cfg_mgmt_wr_rw1c_as_rw ( 1'b0 ), + + // Error Reporting Interface + .cfg_err_ecrc ( cfg_err_ecrc ), + .cfg_err_ur ( cfg_err_ur ), + .cfg_err_cpl_timeout ( cfg_err_cpl_timeout ), + .cfg_err_cpl_unexpect ( cfg_err_cpl_unexpect ), + .cfg_err_cpl_abort ( cfg_err_cpl_abort ), + .cfg_err_posted ( cfg_err_posted ), + .cfg_err_cor ( cfg_err_cor ), + .cfg_err_atomic_egress_blocked ( cfg_err_atomic_egress_blocked ), + .cfg_err_internal_cor ( cfg_err_internal_cor ), + .cfg_err_malformed ( cfg_err_malformed ), + .cfg_err_mc_blocked ( cfg_err_mc_blocked ), + .cfg_err_poisoned ( cfg_err_poisoned ), + .cfg_err_norecovery ( cfg_err_norecovery ), + .cfg_err_tlp_cpl_header ( cfg_err_tlp_cpl_header ), + .cfg_err_cpl_rdy ( ), + .cfg_err_locked ( cfg_err_locked ), + .cfg_err_acs ( cfg_err_acs ), + .cfg_err_internal_uncor ( cfg_err_internal_uncor ), + + //----------------------------------------------------------------------------------------------------------------// + // AER Interface // + //----------------------------------------------------------------------------------------------------------------// + .cfg_err_aer_headerlog ( cfg_err_aer_headerlog ), + .cfg_err_aer_headerlog_set ( ), + .cfg_aer_ecrc_check_en ( ), + .cfg_aer_ecrc_gen_en ( ), + .cfg_aer_interrupt_msgnum ( cfg_aer_interrupt_msgnum ), + + .tx_cfg_gnt ( tx_cfg_gnt ), + .rx_np_ok ( rx_np_ok ), + .rx_np_req ( rx_np_req ), + .cfg_trn_pending ( cfg_trn_pending ), + .cfg_pm_halt_aspm_l0s ( cfg_pm_halt_aspm_l0s ), + .cfg_pm_halt_aspm_l1 ( cfg_pm_halt_aspm_l1 ), + .cfg_pm_force_state_en ( cfg_pm_force_state_en ), + .cfg_pm_force_state ( cfg_pm_force_state ), + .cfg_dsn ( cfg_dsn ), + .cfg_turnoff_ok ( cfg_turnoff_ok ), + .cfg_pm_wake ( cfg_pm_wake ), + //------------------------------------------------// + // RP Only // + //------------------------------------------------// + .cfg_pm_send_pme_to ( 1'b0 ), + .cfg_ds_bus_number ( 8'b0 ), + .cfg_ds_device_number ( 5'b0 ), + .cfg_ds_function_number ( 3'b0 ), + + //------------------------------------------------// + // EP Only // + //------------------------------------------------// + .cfg_interrupt ( cfg_interrupt ), + .cfg_interrupt_rdy ( cfg_interrupt_rdy ), + .cfg_interrupt_assert ( cfg_interrupt_assert ), + .cfg_interrupt_di ( cfg_interrupt_di ), + .cfg_interrupt_do ( ), + .cfg_interrupt_mmenable ( ), + .cfg_interrupt_msienable ( cfg_interrupt_msienable ), + .cfg_interrupt_msixenable ( ), + .cfg_interrupt_msixfm ( ), + .cfg_interrupt_stat ( cfg_interrupt_stat ), + .cfg_pciecap_interrupt_msgnum ( cfg_pciecap_interrupt_msgnum ), + + //----------------------------------------------------------------------------------------------------------------// + // Configuration (CFG) Interface // + //----------------------------------------------------------------------------------------------------------------// + .cfg_status ( ), + .cfg_command ( cfg_command ), + .cfg_dstatus ( ), + .cfg_lstatus ( ), + .cfg_pcie_link_state ( ), + .cfg_dcommand ( cfg_dcommand ), + .cfg_lcommand ( ), + .cfg_dcommand2 ( ), + + .cfg_pmcsr_pme_en ( ), + .cfg_pmcsr_powerstate ( ), + .cfg_pmcsr_pme_status ( ), + .cfg_received_func_lvl_rst ( ), + .tx_buf_av ( ), + .tx_err_drop ( ), + .tx_cfg_req ( ), + .cfg_to_turnoff ( cfg_to_turnoff ), + .cfg_bus_number ( cfg_bus_number ), + .cfg_device_number ( cfg_device_number ), + .cfg_function_number ( cfg_function_number ), + .cfg_bridge_serr_en ( ), + .cfg_slot_control_electromech_il_ctl_pulse ( ), + .cfg_root_control_syserr_corr_err_en ( ), + .cfg_root_control_syserr_non_fatal_err_en ( ), + .cfg_root_control_syserr_fatal_err_en ( ), + .cfg_root_control_pme_int_en ( ), + .cfg_aer_rooterr_corr_err_reporting_en ( ), + .cfg_aer_rooterr_non_fatal_err_reporting_en( ), + .cfg_aer_rooterr_fatal_err_reporting_en ( ), + .cfg_aer_rooterr_corr_err_received ( ), + .cfg_aer_rooterr_non_fatal_err_received ( ), + .cfg_aer_rooterr_fatal_err_received ( ), + //----------------------------------------------------------------------------------------------------------------// + // VC interface // + //---------------------------------------------------------------------------------------------------------------// + .cfg_vc_tcvc_map ( ), + + .cfg_msg_received ( ), + .cfg_msg_data ( ), + .cfg_msg_received_err_cor ( ), + .cfg_msg_received_err_non_fatal ( ), + .cfg_msg_received_err_fatal ( ), + .cfg_msg_received_pm_as_nak ( ), + .cfg_msg_received_pme_to_ack ( ), + .cfg_msg_received_assert_int_a ( ), + .cfg_msg_received_assert_int_b ( ), + .cfg_msg_received_assert_int_c ( ), + .cfg_msg_received_assert_int_d ( ), + .cfg_msg_received_deassert_int_a ( ), + .cfg_msg_received_deassert_int_b ( ), + .cfg_msg_received_deassert_int_c ( ), + .cfg_msg_received_deassert_int_d ( ), + .cfg_msg_received_pm_pme ( ), + .cfg_msg_received_setslotpowerlimit ( ), + + //----------------------------------------------------------------------------------------------------------------// + // Physical Layer Control and Status (PL) Interface // + //----------------------------------------------------------------------------------------------------------------// + .pl_directed_link_change ( pl_directed_link_change ), + .pl_directed_link_width ( pl_directed_link_width ), + .pl_directed_link_speed ( pl_directed_link_speed ), + .pl_directed_link_auton ( pl_directed_link_auton ), + .pl_upstream_prefer_deemph ( pl_upstream_prefer_deemph ), + + .pl_sel_lnk_rate ( ), + .pl_sel_lnk_width ( ), + .pl_ltssm_state ( ), + .pl_lane_reversal_mode ( ), + + .pl_phy_lnk_up ( ), + .pl_tx_pm_state ( ), + .pl_rx_pm_state ( ), + + .pl_link_upcfg_cap ( ), + .pl_link_gen2_cap ( ), + .pl_link_partner_gen2_supported ( ), + .pl_initial_link_width ( ), + + .pl_directed_change_done ( ), + + //------------------------------------------------// + // EP Only // + //------------------------------------------------// + .pl_received_hot_rst ( ), + + //------------------------------------------------// + // RP Only // + //------------------------------------------------// + .pl_transmit_hot_rst ( 1'b0 ), + .pl_downstream_deemph_source ( 1'b0 ), + + //----------------------------------------------------------------------------------------------------------------// + // PCIe DRP (PCIe DRP) Interface // + //----------------------------------------------------------------------------------------------------------------// + .pcie_drp_clk ( 1'b1 ), + .pcie_drp_en ( 1'b0 ), + .pcie_drp_we ( 1'b0 ), + .pcie_drp_addr ( 9'h0 ), + .pcie_drp_di ( 16'h0 ), + .pcie_drp_rdy ( ), + .pcie_drp_do ( ), + + + + //----------------------------------------------------------------------------------------------------------------// + // System (SYS) Interface // + //----------------------------------------------------------------------------------------------------------------// + .sys_clk ( sys_clk ), + .sys_rst_n ( sys_rst_n_c ) + +); + +pcie_app_7x #( + .C_DATA_WIDTH( C_DATA_WIDTH ) +) app ( + + //----------------------------------------------------------------------------------------------------------------// + // AXI-S Interface // + //----------------------------------------------------------------------------------------------------------------// + + // Common + .user_clk ( user_clk ), + .user_reset ( user_reset_q ), + .user_lnk_up ( user_lnk_up_q ), + + // Tx + .s_axis_tx_tready ( s_axis_tx_tready ), + .s_axis_tx_tdata ( s_axis_tx_tdata ), + .s_axis_tx_tkeep ( s_axis_tx_tkeep ), + .s_axis_tx_tuser ( s_axis_tx_tuser ), + .s_axis_tx_tlast ( s_axis_tx_tlast ), + .s_axis_tx_tvalid ( s_axis_tx_tvalid ), + + // Rx + .m_axis_rx_tdata ( m_axis_rx_tdata ), + .m_axis_rx_tkeep ( m_axis_rx_tkeep ), + .m_axis_rx_tlast ( m_axis_rx_tlast ), + .m_axis_rx_tvalid ( m_axis_rx_tvalid ), + .m_axis_rx_tready ( m_axis_rx_tready ), + .m_axis_rx_tuser ( m_axis_rx_tuser ), + + .tx_cfg_gnt ( tx_cfg_gnt ), + .rx_np_ok ( rx_np_ok ), + .rx_np_req ( rx_np_req ), + .cfg_turnoff_ok ( cfg_turnoff_ok ), + .cfg_trn_pending ( cfg_trn_pending ), + .cfg_pm_halt_aspm_l0s ( cfg_pm_halt_aspm_l0s ), + .cfg_pm_halt_aspm_l1 ( cfg_pm_halt_aspm_l1 ), + .cfg_pm_force_state_en ( cfg_pm_force_state_en ), + .cfg_pm_force_state ( cfg_pm_force_state ), + .cfg_pm_wake ( cfg_pm_wake ), + .cfg_dsn ( cfg_dsn ), + .cfg_dcommand ( cfg_dcommand ), + .cfg_command ( cfg_command ), + + // Flow Control + .fc_sel ( fc_sel ), + + //----------------------------------------------------------------------------------------------------------------// + // Configuration (CFG) Interface // + //----------------------------------------------------------------------------------------------------------------// + .cfg_err_cor ( cfg_err_cor ), + .cfg_err_atomic_egress_blocked ( cfg_err_atomic_egress_blocked ), + .cfg_err_internal_cor ( cfg_err_internal_cor ), + .cfg_err_malformed ( cfg_err_malformed ), + .cfg_err_mc_blocked ( cfg_err_mc_blocked ), + .cfg_err_poisoned ( cfg_err_poisoned ), + .cfg_err_norecovery ( cfg_err_norecovery ), + .cfg_err_ur ( cfg_err_ur ), + .cfg_err_ecrc ( cfg_err_ecrc ), + .cfg_err_cpl_timeout ( cfg_err_cpl_timeout ), + .cfg_err_cpl_abort ( cfg_err_cpl_abort ), + .cfg_err_cpl_unexpect ( cfg_err_cpl_unexpect ), + .cfg_err_posted ( cfg_err_posted ), + .cfg_err_locked ( cfg_err_locked ), + .cfg_err_acs ( cfg_err_acs ), //1'b0 ), + .cfg_err_internal_uncor ( cfg_err_internal_uncor ), //1'b0 ), + .cfg_err_tlp_cpl_header ( cfg_err_tlp_cpl_header ), + //----------------------------------------------------------------------------------------------------------------// + // Advanced Error Reporting (AER) Interface // + //----------------------------------------------------------------------------------------------------------------// + .cfg_err_aer_headerlog ( cfg_err_aer_headerlog ), + .cfg_aer_interrupt_msgnum ( cfg_aer_interrupt_msgnum ), + + .cfg_to_turnoff ( cfg_to_turnoff ), + .cfg_bus_number ( cfg_bus_number ), + .cfg_device_number ( cfg_device_number ), + .cfg_function_number ( cfg_function_number ), + + //----------------------------------------------------------------------------------------------------------------// + // Management (MGMT) Interface // + //----------------------------------------------------------------------------------------------------------------// + .cfg_mgmt_di ( cfg_mgmt_di ), + .cfg_mgmt_do ( cfg_mgmt_do ), + .cfg_mgmt_byte_en ( cfg_mgmt_byte_en ), + .cfg_mgmt_dwaddr ( cfg_mgmt_dwaddr ), + .cfg_mgmt_wr_en ( cfg_mgmt_wr_en ), + .cfg_mgmt_rd_en ( cfg_mgmt_rd_en ), + .cfg_mgmt_wr_readonly ( cfg_mgmt_wr_readonly ), + .cfg_mgmt_rd_wr_done ( cfg_mgmt_rd_wr_done ), + + //----------------------------------------------------------------------------------------------------------------// + // Physical Layer Control and Status (PL) Interface // + //----------------------------------------------------------------------------------------------------------------// + .pl_directed_link_auton ( pl_directed_link_auton ), + .pl_directed_link_change ( pl_directed_link_change ), + .pl_directed_link_speed ( pl_directed_link_speed ), + .pl_directed_link_width ( pl_directed_link_width ), + .pl_upstream_prefer_deemph ( pl_upstream_prefer_deemph ), + + .cfg_interrupt ( cfg_interrupt ), + .cfg_interrupt_rdy ( cfg_interrupt_rdy ), + .cfg_interrupt_assert ( cfg_interrupt_assert ), + .cfg_interrupt_di ( cfg_interrupt_di ), + .cfg_interrupt_stat ( cfg_interrupt_stat ), + .cfg_pciecap_interrupt_msgnum ( cfg_pciecap_interrupt_msgnum ), + .cfg_interrupt_msienable ( cfg_interrupt_msienable ), + + //--------------------------------------------------------------------------------------------------------------// + // Streaming Data Transfer Interface // + //--------------------------------------------------------------------------------------------------------------// + .softmc_h2c_tdata ( softmc_h2c_tdata ), + .softmc_h2c_tkeep ( softmc_h2c_tkeep ), + .softmc_h2c_tvalid ( softmc_h2c_tvalid ), + .softmc_h2c_tready ( softmc_h2c_tready ), + .softmc_h2c_tlast ( softmc_h2c_tlast ), + + .softmc_c2h_tdata ( softmc_c2h_tdata ), + .softmc_c2h_tkeep ( softmc_c2h_tkeep ), + .softmc_c2h_tvalid ( softmc_c2h_tvalid ), + .softmc_c2h_tready ( softmc_c2h_tready ), + .softmc_c2h_tlast ( softmc_c2h_tlast ) +); + +// ila_ms debug_maxis ( +// .clk ( user_clk ), +// .probe0 ( m_axis_rx_tdata ), +// .probe1 ( m_axis_rx_tkeep ), +// .probe2 ( m_axis_rx_tvalid ), +// .probe3 ( m_axis_rx_tready ), +// .probe4 ( m_axis_rx_tlast ) +// ); + +// ila_ms debug_saxis ( +// .clk ( user_clk ), +// .probe0 ( s_axis_tx_tdata ), +// .probe1 ( s_axis_tx_tkeep ), +// .probe2 ( s_axis_tx_tvalid ), +// .probe3 ( s_axis_tx_tready ), +// .probe4 ( s_axis_tx_tlast ) +// ); + +// ila_hc debug_c2h ( +// .clk ( user_clk ), +// .probe0 ( softmc_c2h_tdata ), +// .probe1 ( softmc_c2h_tkeep ), +// .probe2 ( softmc_c2h_tvalid ), +// .probe3 ( softmc_c2h_tready ), +// .probe4 ( softmc_c2h_tlast ) +// ); + +// ila_hc debug_h2c ( +// .clk ( user_clk ), +// .probe0 ( softmc_h2c_tdata ), +// .probe1 ( softmc_h2c_tkeep ), +// .probe2 ( softmc_h2c_tvalid ), +// .probe3 ( softmc_h2c_tready ), +// .probe4 ( softmc_h2c_tlast ) +// ); + +endmodule \ No newline at end of file diff --git a/projects/ZC706/verilog/pcie_txn_buffer.v b/projects/ZC706/verilog/pcie_txn_buffer.v new file mode 100644 index 0000000..ad9ebb0 --- /dev/null +++ b/projects/ZC706/verilog/pcie_txn_buffer.v @@ -0,0 +1,249 @@ +`timescale 1ns / 1ps + +module pcie_txn_buffer #( + parameter C_IN_DATA_WIDTH = 256, + parameter C_OUT_DATA_WIDTH = 64, + + localparam C_IN_KEEP = C_IN_DATA_WIDTH / 8, + localparam C_OUT_KEEP = C_OUT_DATA_WIDTH / 8, + localparam FIFO_DEPTH = 1024, + localparam C_IO_WIDTH_RATIO = C_IN_DATA_WIDTH / C_OUT_DATA_WIDTH, + localparam DATA_COUNT_WIDTH = $clog2(FIFO_DEPTH * C_IO_WIDTH_RATIO) + 1, + localparam C_RATIO_WIDTH = C_IO_WIDTH_RATIO, + localparam C_HALF_RATIO_WIDTH = 2 * C_IO_WIDTH_RATIO +)( + input clk, + input reset, + + input [C_IN_DATA_WIDTH-1:0] s_axis_tdata, + input [C_IN_KEEP-1:0] s_axis_tkeep, + input s_axis_tvalid, + output s_axis_tready, + input s_axis_tlast, + + output [C_OUT_DATA_WIDTH-1:0] m_axis_tdata, + output [C_OUT_DATA_WIDTH/2-1:0] m_axis_upper_half_data, + output [C_OUT_KEEP-1:0] m_axis_tkeep, + output [C_OUT_KEEP/2-1:0] m_axis_upper_half_keep, + output m_axis_tvalid, + output m_axis_upper_half_valid, + input m_axis_tready, + input m_axis_upper_half_ready, + + output [DATA_COUNT_WIDTH-1:0] data_count, + output programmed_stop +); + +// Combinational Outputs +reg [C_OUT_DATA_WIDTH-1:0] m_axis_tdata_r; +reg [C_OUT_KEEP-1:0] m_axis_tkeep_r; +reg m_axis_tvalid_r; +reg m_axis_upper_half_valid_r; + +reg user_stop_flag_r; +reg user_stop_flag_ns; + +// Fall Through Registers +reg [C_IN_DATA_WIDTH-1:0] ft_data_r; +reg [C_IN_KEEP-1:0] ft_keep_r; +reg [C_HALF_RATIO_WIDTH-1:0] ft_valid_r; +reg [DATA_COUNT_WIDTH-1:0] ft_half_data_count_r; + +reg [C_IN_DATA_WIDTH-1:0] ft_data_ns; +reg [C_IN_KEEP-1:0] ft_keep_ns; +reg [C_HALF_RATIO_WIDTH-1:0] ft_valid_ns; +reg [DATA_COUNT_WIDTH-1:0] ft_half_data_count_ns; + +wire [C_IN_DATA_WIDTH-1:0] fifo_tdata; +wire [C_IN_KEEP-1:0] fifo_tkeep; +wire fifo_tvalid; +reg fifo_tready_r; +wire [9:0] fifo_data_count; + +generate + if (C_IN_DATA_WIDTH == C_OUT_DATA_WIDTH) begin + always @(*) begin + ft_half_data_count_ns = ft_half_data_count_r; + fifo_tready_r = 0; + user_stop_flag_ns = (user_stop_flag_r || s_axis_tlast) && !s_axis_tvalid; + ft_data_ns = ft_data_r; + ft_keep_ns = ft_keep_r; + ft_valid_ns = ft_valid_r; + m_axis_tdata_r = ft_data_r[C_IN_DATA_WIDTH-1 -: C_OUT_DATA_WIDTH]; + m_axis_tkeep_r = ft_keep_r[C_IN_KEEP-1 -: C_OUT_KEEP]; + m_axis_tvalid_r = (ft_valid_r[C_HALF_RATIO_WIDTH-2] || fifo_tvalid) && ft_valid_r[C_HALF_RATIO_WIDTH-1]; + m_axis_upper_half_valid_r = ft_valid_r[C_HALF_RATIO_WIDTH-1]; + if (!ft_valid_r[C_HALF_RATIO_WIDTH-1] && fifo_tvalid) begin + fifo_tready_r = 1; + m_axis_tdata_r = fifo_tdata; + m_axis_tkeep_r = fifo_tkeep; + m_axis_tvalid_r = 1; + m_axis_upper_half_valid_r = 1; + if (m_axis_tready) begin + ft_data_ns = fifo_tdata << C_OUT_DATA_WIDTH; + ft_keep_ns = fifo_tkeep << C_OUT_KEEP; + ft_valid_ns = {C_HALF_RATIO_WIDTH{1'b1}} << 2; + ft_half_data_count_ns = C_HALF_RATIO_WIDTH - 2; + end + else if (m_axis_upper_half_ready) begin + ft_data_ns = fifo_tdata << (C_OUT_DATA_WIDTH / 2); + ft_keep_ns = fifo_tkeep << (C_OUT_KEEP / 2); + ft_valid_ns = {C_HALF_RATIO_WIDTH{1'b1}} << 1; + ft_half_data_count_ns = C_HALF_RATIO_WIDTH - 1; + end + else begin + ft_data_ns = fifo_tdata; + ft_keep_ns = fifo_tkeep; + ft_valid_ns = {C_HALF_RATIO_WIDTH{1'b1}}; + ft_half_data_count_ns = C_HALF_RATIO_WIDTH; + end + end + else if (!ft_valid_r[C_HALF_RATIO_WIDTH-2] && fifo_tvalid) begin + m_axis_tdata_r = {ft_data_r[C_IN_DATA_WIDTH-1 -: C_OUT_DATA_WIDTH/2], fifo_tdata[C_IN_DATA_WIDTH-1 -: C_OUT_DATA_WIDTH/2]}; + m_axis_tkeep_r = {ft_keep_r[C_IN_KEEP-1 -: C_OUT_KEEP/2], fifo_tkeep[C_IN_KEEP-1 -: C_OUT_KEEP/2]}; + if (m_axis_tready) begin + fifo_tready_r = 1; + ft_data_ns = fifo_tdata << (C_OUT_DATA_WIDTH / 2); + ft_keep_ns = fifo_tkeep << (C_OUT_KEEP / 2); + ft_valid_ns = {C_HALF_RATIO_WIDTH{1'b1}} << 1; + ft_half_data_count_ns = C_HALF_RATIO_WIDTH - 1; + end + else if (m_axis_upper_half_ready) begin + fifo_tready_r = 1; + ft_data_ns = fifo_tdata; + ft_keep_ns = fifo_tkeep; + ft_valid_ns = {C_HALF_RATIO_WIDTH{1'b1}}; + ft_half_data_count_ns = C_HALF_RATIO_WIDTH; + end + end + else if (m_axis_tready) begin + fifo_tready_r = 1; + ft_data_ns = fifo_tdata; + ft_keep_ns = fifo_tkeep; + ft_valid_ns = {C_HALF_RATIO_WIDTH{1'b1}}; + ft_half_data_count_ns = C_HALF_RATIO_WIDTH; + end + else if (m_axis_upper_half_ready) begin + ft_data_ns = ft_data_r << (C_OUT_DATA_WIDTH / 2); + ft_keep_ns = ft_keep_r << (C_OUT_KEEP / 2); + ft_valid_ns = ft_valid_r << 1; + ft_half_data_count_ns = C_HALF_RATIO_WIDTH - 1; + end + end + end + else begin + always @(*) begin + ft_half_data_count_ns = ft_half_data_count_r; + fifo_tready_r = 0; + user_stop_flag_ns = (user_stop_flag_r || s_axis_tlast) && !s_axis_tvalid; + ft_data_ns = ft_data_r; + ft_keep_ns = ft_keep_r; + ft_valid_ns = ft_valid_r; + m_axis_tdata_r = ft_data_r[C_IN_DATA_WIDTH-1 -: C_OUT_DATA_WIDTH]; + m_axis_tkeep_r = ft_keep_r[C_IN_KEEP-1 -: C_OUT_KEEP]; + m_axis_tvalid_r = (ft_valid_r[C_HALF_RATIO_WIDTH-2] || fifo_tvalid) && ft_valid_r[C_HALF_RATIO_WIDTH-1]; + m_axis_upper_half_valid_r = ft_valid_r[C_HALF_RATIO_WIDTH-1]; + if (!ft_valid_r[C_HALF_RATIO_WIDTH-1] && fifo_tvalid) begin + fifo_tready_r = 1; + m_axis_tdata_r = fifo_tdata; + m_axis_tkeep_r = fifo_tkeep; + m_axis_tvalid_r = 1; + m_axis_upper_half_valid_r = 1; + if (m_axis_tready) begin + ft_data_ns = fifo_tdata << C_OUT_DATA_WIDTH; + ft_keep_ns = fifo_tkeep << C_OUT_KEEP; + ft_valid_ns = {C_HALF_RATIO_WIDTH{1'b1}} << 2; + ft_half_data_count_ns = C_HALF_RATIO_WIDTH - 2; + end + else if (m_axis_upper_half_ready) begin + ft_data_ns = fifo_tdata << (C_OUT_DATA_WIDTH / 2); + ft_keep_ns = fifo_tkeep << (C_OUT_KEEP / 2); + ft_valid_ns = {C_HALF_RATIO_WIDTH{1'b1}} << 1; + ft_half_data_count_ns = C_HALF_RATIO_WIDTH - 1; + end + else begin + ft_data_ns = fifo_tdata; + ft_keep_ns = fifo_tkeep; + ft_valid_ns = {C_HALF_RATIO_WIDTH{1'b1}}; + ft_half_data_count_ns = C_HALF_RATIO_WIDTH; + end + end + else if (!ft_valid_r[C_HALF_RATIO_WIDTH-2] && fifo_tvalid) begin + m_axis_tdata_r = {ft_data_r[C_IN_DATA_WIDTH-1 -: C_OUT_DATA_WIDTH/2], fifo_tdata[C_IN_DATA_WIDTH-1 -: C_OUT_DATA_WIDTH/2]}; + m_axis_tkeep_r = {ft_keep_r[C_IN_KEEP-1 -: C_OUT_KEEP/2], fifo_tkeep[C_IN_KEEP-1 -: C_OUT_KEEP/2]}; + if (m_axis_tready) begin + fifo_tready_r = 1; + ft_data_ns = fifo_tdata << (C_OUT_DATA_WIDTH / 2); + ft_keep_ns = fifo_tkeep << (C_OUT_KEEP / 2); + ft_valid_ns = {C_HALF_RATIO_WIDTH{1'b1}} << 1; + ft_half_data_count_ns = C_HALF_RATIO_WIDTH - 1; + end + else if (m_axis_upper_half_ready) begin + fifo_tready_r = 1; + ft_data_ns = fifo_tdata; + ft_keep_ns = fifo_tkeep; + ft_valid_ns = {C_HALF_RATIO_WIDTH{1'b1}}; + ft_half_data_count_ns = C_HALF_RATIO_WIDTH; + end + end + else if (m_axis_tready && m_axis_tvalid_r) begin + ft_data_ns = ft_data_r << C_OUT_DATA_WIDTH; + ft_keep_ns = ft_keep_r << C_OUT_KEEP; + ft_valid_ns = ft_valid_r << 2; + ft_half_data_count_ns = ft_half_data_count_r - 2; + end + else if (m_axis_upper_half_ready && m_axis_upper_half_valid_r) begin + ft_data_ns = ft_data_r << (C_OUT_DATA_WIDTH / 2); + ft_keep_ns = ft_keep_r << (C_OUT_KEEP / 2); + ft_valid_ns = ft_valid_r << 1; + ft_half_data_count_ns = ft_half_data_count_r - 1; + end + end + end +endgenerate + +always @(posedge clk) begin + if (reset) begin + ft_data_r <= 0; + ft_keep_r <= 0; + ft_valid_r <= 0; + user_stop_flag_r <= 0; + ft_half_data_count_r <= 0; + end + else begin + ft_data_r <= ft_data_ns; + ft_keep_r <= ft_keep_ns; + ft_valid_r <= ft_valid_ns; + user_stop_flag_r <= user_stop_flag_ns; + ft_half_data_count_r <= ft_half_data_count_ns; + end +end + +assign data_count = (fifo_data_count > 0 ? fifo_data_count * C_IO_WIDTH_RATIO * 2 : + fifo_tvalid ? FIFO_DEPTH * C_IO_WIDTH_RATIO * 2 : 0) + ft_half_data_count_r; + +assign programmed_stop = user_stop_flag_r && fifo_data_count == 0; +assign m_axis_tdata = m_axis_tdata_r; +assign m_axis_tkeep = m_axis_tkeep_r; +assign m_axis_tvalid = m_axis_tvalid_r; +assign m_axis_upper_half_data = m_axis_tdata_r[C_OUT_DATA_WIDTH/2 +: C_OUT_DATA_WIDTH/2]; +assign m_axis_upper_half_keep = m_axis_tkeep_r[C_OUT_KEEP/2 +: C_OUT_KEEP/2]; +assign m_axis_upper_half_valid = m_axis_upper_half_valid_r; + +data_fifo pcie_buffer ( + .wr_rst_busy( ), // output wire wr_rst_busy + .rd_rst_busy( ), // output wire rd_rst_busy + .s_aclk(clk), // input wire s_aclk + .s_aresetn(~reset), // input wire s_aresetn + .s_axis_tvalid(s_axis_tvalid), // input wire s_axis_tvalid + .s_axis_tready(s_axis_tready), // output wire s_axis_tready + .s_axis_tdata(s_axis_tdata), // input wire [127 : 0] s_axis_tdata + .s_axis_tkeep(s_axis_tkeep), // input wire [15 : 0] s_axis_tkeep + .m_axis_tvalid(fifo_tvalid), // output wire m_axis_tvalid + .m_axis_tready(fifo_tready_r), // input wire m_axis_tready + .m_axis_tdata(fifo_tdata), // output wire [127 : 0] m_axis_tdata + .m_axis_tkeep(fifo_tkeep), // output wire [15 : 0] m_axis_tkeep + .axis_data_count(fifo_data_count) +); + +endmodule \ No newline at end of file diff --git a/projects/ZC706/verilog/phy/memctl_mig.v b/projects/ZC706/verilog/phy/memctl_mig.v new file mode 100644 index 0000000..7c199a3 --- /dev/null +++ b/projects/ZC706/verilog/phy/memctl_mig.v @@ -0,0 +1,1015 @@ +//***************************************************************************** +// (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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor : Xilinx +// \ \ \/ Version : 4.0 +// \ \ Application : MIG +// / / Filename : memctl_mig.v +// /___/ /\ Date Last Modified : $Date: 2011/06/02 08:35:03 $ +// \ \ / \ Date Created : Tue Sept 21 2010 +// \___\/\___\ +// +// Device : 7 Series +// Design Name : DDR3 SDRAM +// Purpose : +// Top-level module. This module can be instantiated in the +// system and interconnect as shown in user design wrapper file (user top module). +// In addition to the memory controller, the module instantiates: +// 1. Clock generation/distribution, reset logic +// 2. IDELAY control block +// 3. Debug logic +// Reference : +// Revision History : +//***************************************************************************** + +//`define SKIP_CALIB +`timescale 1ps/1ps + +module memctl_mig # + ( + + //*************************************************************************** + // The following parameters refer to width of various ports + //*************************************************************************** + parameter BANK_WIDTH = 3, + // # of memory Bank Address bits. + parameter CK_WIDTH = 1, + // # of CK/CK# outputs to memory. + parameter COL_WIDTH = 10, + // # of memory Column Address bits. + parameter CS_WIDTH = 1, + // # of unique CS outputs to memory. + parameter nCS_PER_RANK = 1, + // # of unique CS outputs per rank for phy + parameter CKE_WIDTH = 1, + // # of CKE outputs to memory. + parameter DATA_BUF_ADDR_WIDTH = 5, + parameter DQ_CNT_WIDTH = 6, + // = ceil(log2(DQ_WIDTH)) + parameter DQ_PER_DM = 8, + parameter DM_WIDTH = 8, + // # of DM (data mask) + parameter DQ_WIDTH = 64, + // # of DQ (data) + parameter DQS_WIDTH = 8, + parameter DQS_CNT_WIDTH = 3, + // = ceil(log2(DQS_WIDTH)) + parameter DRAM_WIDTH = 8, + // # of DQ per DQS + parameter ECC = "OFF", + parameter DATA_WIDTH = 64, + parameter ECC_TEST = "OFF", + parameter PAYLOAD_WIDTH = (ECC_TEST == "OFF") ? DATA_WIDTH : DQ_WIDTH, + parameter MEM_ADDR_ORDER = "BANK_ROW_COLUMN", + //Possible Parameters + //1.BANK_ROW_COLUMN : Address mapping is + // in form of Bank Row Column. + //2.ROW_BANK_COLUMN : Address mapping is + // in the form of Row Bank Column. + //3.TG_TEST : Scrambles Address bits + // for distributed Addressing. + + parameter nBANK_MACHS = 4, + parameter RANKS = 1, + // # of Ranks. + parameter ODT_WIDTH = 1, + // # of ODT outputs to memory. + parameter ROW_WIDTH = 14, + // # of memory Row Address bits. + parameter ADDR_WIDTH = 28, + // # = RANK_WIDTH + BANK_WIDTH + // + ROW_WIDTH + COL_WIDTH; + // Chip Select is always tied to low for + // single rank devices + parameter USE_CS_PORT = 1, + // # = 1, When Chip Select (CS#) output is enabled + // = 0, When Chip Select (CS#) output is disabled + // If CS_N disabled, user must connect + // DRAM CS_N input(s) to ground + parameter USE_DM_PORT = 1, + // # = 1, When Data Mask option is enabled + // = 0, When Data Mask option is disbaled + // When Data Mask option is disabled in + // MIG Controller Options page, the logic + // related to Data Mask should not get + // synthesized + parameter USE_ODT_PORT = 1, + // # = 1, When ODT output is enabled + // = 0, When ODT output is disabled + // Parameter configuration for Dynamic ODT support: + // USE_ODT_PORT = 0, RTT_NOM = "DISABLED", RTT_WR = "60/120". + // This configuration allows to save ODT pin mapping from FPGA. + // The user can tie the ODT input of DRAM to HIGH. + parameter IS_CLK_SHARED = "FALSE", + // # = "true" when clock is shared + // = "false" when clock is not shared + + parameter PHY_CONTROL_MASTER_BANK = 1, + // The bank index where master PHY_CONTROL resides, + // equal to the PLL residing bank + parameter MEM_DENSITY = "1Gb", + // Indicates the density of the Memory part + // Added for the sake of Vivado simulations + parameter MEM_SPEEDGRADE = "125", + // Indicates the Speed grade of Memory Part + // Added for the sake of Vivado simulations + parameter MEM_DEVICE_WIDTH = 8, + // Indicates the device width of the Memory Part + // Added for the sake of Vivado simulations + + //*************************************************************************** + // The following parameters are mode register settings + //*************************************************************************** + parameter AL = "0", + // DDR3 SDRAM: + // Additive Latency (Mode Register 1). + // # = "0", "CL-1", "CL-2". + // DDR2 SDRAM: + // Additive Latency (Extended Mode Register). + parameter nAL = 0, + // # Additive Latency in number of clock + // cycles. + parameter BURST_MODE = "8", + // DDR3 SDRAM: + // Burst Length (Mode Register 0). + // # = "8", "4", "OTF". + // DDR2 SDRAM: + // Burst Length (Mode Register). + // # = "8", "4". + parameter BURST_TYPE = "SEQ", + // DDR3 SDRAM: Burst Type (Mode Register 0). + // DDR2 SDRAM: Burst Type (Mode Register). + // # = "SEQ" - (Sequential), + // = "INT" - (Interleaved). + parameter CL = 6, + // in number of clock cycles + // DDR3 SDRAM: CAS Latency (Mode Register 0). + // DDR2 SDRAM: CAS Latency (Mode Register). + parameter CWL = 5, + // in number of clock cycles + // DDR3 SDRAM: CAS Write Latency (Mode Register 2). + // DDR2 SDRAM: Can be ignored + parameter OUTPUT_DRV = "HIGH", + // Output Driver Impedance Control (Mode Register 1). + // # = "HIGH" - RZQ/7, + // = "LOW" - RZQ/6. + parameter RTT_NOM = "60", + // RTT_NOM (ODT) (Mode Register 1). + // = "120" - RZQ/2, + // = "60" - RZQ/4, + // = "40" - RZQ/6. + parameter RTT_WR = "OFF", + // RTT_WR (ODT) (Mode Register 2). + // # = "OFF" - Dynamic ODT off, + // = "120" - RZQ/2, + // = "60" - RZQ/4, + parameter ADDR_CMD_MODE = "1T" , + // # = "1T", "2T". + parameter REG_CTRL = "OFF", + // # = "ON" - RDIMMs, + // = "OFF" - Components, SODIMMs, UDIMMs. + parameter CA_MIRROR = "OFF", + // C/A mirror opt for DDR3 dual rank + + parameter VDD_OP_VOLT = "150", + // # = "150" - 1.5V Vdd Memory part + // = "135" - 1.35V Vdd Memory part + + + //*************************************************************************** + // The following parameters are multiplier and divisor factors for PLLE2. + // Based on the selected design frequency these parameters vary. + //*************************************************************************** + parameter CLKIN_PERIOD = 5000, + // Input Clock Period + parameter CLKFBOUT_MULT = 4, + // write PLL VCO multiplier + parameter DIVCLK_DIVIDE = 1, + // write PLL VCO divisor + parameter CLKOUT0_PHASE = 337.5, + // Phase for PLL output clock (CLKOUT0) + parameter CLKOUT0_DIVIDE = 2, + // VCO output divisor for PLL output clock (CLKOUT0) + parameter CLKOUT1_DIVIDE = 2, + // VCO output divisor for PLL output clock (CLKOUT1) + parameter CLKOUT2_DIVIDE = 32, + // VCO output divisor for PLL output clock (CLKOUT2) + parameter CLKOUT3_DIVIDE = 8, + // VCO output divisor for PLL output clock (CLKOUT3) + parameter MMCM_VCO = 800, + // Max Freq (MHz) of MMCM VCO + parameter MMCM_MULT_F = 8, + // write MMCM VCO multiplier + parameter MMCM_DIVCLK_DIVIDE = 1, + // write MMCM VCO divisor + + //*************************************************************************** + // Memory Timing Parameters. These parameters varies based on the selected + // memory part. + //*************************************************************************** + parameter tCKE = 5000, + // memory tCKE paramter in pS + parameter tFAW = 30000, + // memory tRAW paramter in pS. + parameter tPRDI = 1_000_000, + // memory tPRDI paramter in pS. + parameter tRAS = 35000, + // memory tRAS paramter in pS. + parameter tRCD = 13750, + // memory tRCD paramter in pS. + parameter tREFI = 7800000, + // memory tREFI paramter in pS. + parameter tRFC = 110000, + // memory tRFC paramter in pS. + parameter tRP = 13750, + // memory tRP paramter in pS. + parameter tRRD = 6000, + // memory tRRD paramter in pS. + parameter tRTP = 7500, + // memory tRTP paramter in pS. + parameter tWTR = 7500, + // memory tWTR paramter in pS. + parameter tZQI = 128_000_000, + // memory tZQI paramter in nS. + parameter tZQCS = 64,//64, + // memory tZQCS paramter in clock cycles. + + //*************************************************************************** + // Simulation parameters + //*************************************************************************** + parameter SIM_BYPASS_INIT_CAL = "OFF", + // # = "OFF" - Complete memory init & + // calibration sequence + // # = "SKIP" - Not supported + // # = "FAST" - Complete memory init & use + // abbreviated calib sequence + + parameter SIMULATION = "FALSE", + // Should be TRUE during design simulations and + // FALSE during implementations + + //*************************************************************************** + // The following parameters varies based on the pin out entered in MIG GUI. + // Do not change any of these parameters directly by editing the RTL. + // Any changes required should be done through GUI and the design regenerated. + //*************************************************************************** + parameter BYTE_LANES_B0 = 4'b0111, + // Byte lanes used in an IO column. + parameter BYTE_LANES_B1 = 4'b1111, + // Byte lanes used in an IO column. + parameter BYTE_LANES_B2 = 4'b1111, + // Byte lanes used in an IO column. + parameter BYTE_LANES_B3 = 4'b0000, + // Byte lanes used in an IO column. + parameter BYTE_LANES_B4 = 4'b0000, + // Byte lanes used in an IO column. + parameter DATA_CTL_B0 = 4'b0111, + // Indicates Byte lane is data byte lane + // or control Byte lane. '1' in a bit + // position indicates a data byte lane and + // a '0' indicates a control byte lane + parameter DATA_CTL_B1 = 4'b0001, + // Indicates Byte lane is data byte lane + // or control Byte lane. '1' in a bit + // position indicates a data byte lane and + // a '0' indicates a control byte lane + parameter DATA_CTL_B2 = 4'b1111, + // Indicates Byte lane is data byte lane + // or control Byte lane. '1' in a bit + // position indicates a data byte lane and + // a '0' indicates a control byte lane + parameter DATA_CTL_B3 = 4'b0000, + // Indicates Byte lane is data byte lane + // or control Byte lane. '1' in a bit + // position indicates a data byte lane and + // a '0' indicates a control byte lane + parameter DATA_CTL_B4 = 4'b0000, + // Indicates Byte lane is data byte lane + // or control Byte lane. '1' in a bit + // position indicates a data byte lane and + // a '0' indicates a control byte lane + parameter PHY_0_BITLANES = 48'h000_1FF_3FE_2FF, + parameter PHY_1_BITLANES = 48'h7D4_BF0_8FF_2FF, + parameter PHY_2_BITLANES = 48'h3FE_1FF_1FF_2FF, + + // control/address/data pin mapping parameters + parameter CK_BYTE_MAP + = 144'h00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_12, + parameter ADDR_MAP + = 192'h000_000_138_12B_134_112_11B_139_116_117_132_126_136_127_137_125, + parameter BANK_MAP = 36'h13A_111_115, + parameter CAS_MAP = 12'h113, + parameter CKE_ODT_BYTE_MAP = 8'h00, + parameter CKE_MAP = 96'h000_000_000_000_000_000_000_124, + parameter ODT_MAP = 96'h000_000_000_000_000_000_000_110, + parameter CS_MAP = 120'h000_000_000_000_000_000_000_000_000_129, + parameter PARITY_MAP = 12'h000, + parameter RAS_MAP = 12'h128, + parameter WE_MAP = 12'h114, + parameter DQS_BYTE_MAP + = 144'h00_00_00_00_00_00_00_00_00_00_00_01_02_10_20_21_22_23, + parameter DATA0_MAP = 96'h231_232_235_236_239_233_234_237, + parameter DATA1_MAP = 96'h220_221_225_224_222_227_223_226, + parameter DATA2_MAP = 96'h214_210_216_217_218_215_213_212, + parameter DATA3_MAP = 96'h209_204_202_201_207_206_203_200, + parameter DATA4_MAP = 96'h109_107_103_105_106_100_102_104, + parameter DATA5_MAP = 96'h023_022_024_027_028_025_021_020, + parameter DATA6_MAP = 96'h011_016_012_013_019_015_018_017, + parameter DATA7_MAP = 96'h003_009_004_001_002_000_007_006, + parameter DATA8_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA9_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA10_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA11_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA12_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA13_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA14_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA15_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA16_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA17_MAP = 96'h000_000_000_000_000_000_000_000, + parameter MASK0_MAP = 108'h000_005_014_026_101_205_211_228_238, + parameter MASK1_MAP = 108'h000_000_000_000_000_000_000_000_000, + + parameter SLOT_0_CONFIG = 8'b0000_0001, + // Mapping of Ranks. + parameter SLOT_1_CONFIG = 8'b0000_0000, + // Mapping of Ranks. + + //*************************************************************************** + // IODELAY and PHY related parameters + //*************************************************************************** + parameter IBUF_LPWR_MODE = "OFF", + // to phy_top + parameter DATA_IO_IDLE_PWRDWN = "ON", + // # = "ON", "OFF" + parameter BANK_TYPE = "HP_IO", + // # = "HP_IO", "HPL_IO", "HR_IO", "HRL_IO" + parameter DATA_IO_PRIM_TYPE = "HP_LP", + // # = "HP_LP", "HR_LP", "DEFAULT" + parameter CKE_ODT_AUX = "FALSE", + parameter USER_REFRESH = "OFF", + parameter WRLVL = "ON", + // # = "ON" - DDR3 SDRAM + // = "OFF" - DDR2 SDRAM. + parameter ORDERING = "NORM", + // # = "NORM", "STRICT", "RELAXED". + parameter CALIB_ROW_ADD = 16'h0000, + // Calibration row address will be used for + // calibration read and write operations + parameter CALIB_COL_ADD = 12'h000, + // Calibration column address will be used for + // calibration read and write operations + parameter CALIB_BA_ADD = 3'h0, + // Calibration bank address will be used for + // calibration read and write operations + parameter TCQ = 100, + parameter IDELAY_ADJ = "OFF", + parameter FINE_PER_BIT = "OFF", + parameter CENTER_COMP_MODE = "OFF", + parameter PI_VAL_ADJ = "OFF", + parameter IODELAY_GRP0 = "MEMCTL_IODELAY_MIG0", + // It is associated to a set of IODELAYs with + // an IDELAYCTRL that have same IODELAY CONTROLLER + // clock frequency (200MHz). + parameter IODELAY_GRP1 = "MEMCTL_IODELAY_MIG1", + // It is associated to a set of IODELAYs with + // an IDELAYCTRL that have same IODELAY CONTROLLER + // clock frequency (300MHz/400MHz). + parameter SYSCLK_TYPE = "DIFFERENTIAL", + // System clock type DIFFERENTIAL, SINGLE_ENDED, + // NO_BUFFER + parameter REFCLK_TYPE = "USE_SYSTEM_CLOCK", + // Reference clock type DIFFERENTIAL, SINGLE_ENDED, + // NO_BUFFER, USE_SYSTEM_CLOCK + parameter SYS_RST_PORT = "TRUE", + // "TRUE" - if pin is selected for sys_rst + // and IBUF will be instantiated. + // "FALSE" - if pin is not selected for sys_rst + parameter FPGA_SPEED_GRADE = 2, + // FPGA speed grade + + parameter CMD_PIPE_PLUS1 = "ON", + // add pipeline stage between MC and PHY + parameter DRAM_TYPE = "DDR3", + parameter CAL_WIDTH = "HALF", + parameter STARVE_LIMIT = 2, + // # = 2,3,4. + parameter REF_CLK_MMCM_IODELAY_CTRL = "FALSE", + + + //*************************************************************************** + // Referece clock frequency parameters + //*************************************************************************** + parameter REFCLK_FREQ = 200.0, + // IODELAYCTRL reference clock frequency + parameter DIFF_TERM_REFCLK = "TRUE", + // Differential Termination for idelay + // reference clock input pins + //*************************************************************************** + // System clock frequency parameters + //*************************************************************************** + parameter tCK = 2500, + // memory tCK paramter. + // # = Clock Period in pS. + parameter nCK_PER_CLK = 4, + // # of memory CKs per fabric CLK + + parameter DIFF_TERM_SYSCLK = "FALSE", + // Differential Termination for System + // clock input pins + + + + + //*************************************************************************** + // Debug parameters + //*************************************************************************** + parameter DEBUG_PORT = "OFF", + // # = "ON" Enable debug signals/controls. + // = "OFF" Disable debug signals/controls. + + //*************************************************************************** + // Temparature monitor parameter + //*************************************************************************** + parameter TEMP_MON_CONTROL = "INTERNAL", + // # = "INTERNAL", "EXTERNAL" + //*************************************************************************** + // FPGA Voltage Type parameter + //*************************************************************************** + parameter FPGA_VOLT_TYPE = "N", + // # = "L", "N". When FPGA VccINT is 0.9v, + // the value is "L", else it is "N" + + parameter RST_ACT_LOW = 0 + // =1 for active low reset, + // =0 for active high. + ) + ( + // DDR Interface + inout [DQ_WIDTH-1:0] ddr3_dq, + inout [DQS_WIDTH-1:0] ddr3_dqs_n, + inout [DQS_WIDTH-1:0] ddr3_dqs_p, + output [ROW_WIDTH-1:0] ddr3_addr, + output [BANK_WIDTH-1:0] ddr3_ba, + output ddr3_ras_n, + output ddr3_cas_n, + output ddr3_we_n, + output ddr3_reset_n, + output [CK_WIDTH-1:0] ddr3_ck_p, + output [CK_WIDTH-1:0] ddr3_ck_n, + output [CKE_WIDTH-1:0] ddr3_cke, + output [(CS_WIDTH*nCS_PER_RANK)-1:0] ddr3_cs_n, + output [DM_WIDTH-1:0] ddr3_dm, + output [ODT_WIDTH-1:0] ddr3_odt, + + // MC <-> PHY Interface + input [nCK_PER_CLK-1:0] mc_ras_n, + input [nCK_PER_CLK-1:0] mc_cas_n, + input [nCK_PER_CLK-1:0] mc_we_n, + input [nCK_PER_CLK*ROW_WIDTH-1:0] mc_address, + input [nCK_PER_CLK*BANK_WIDTH-1:0] mc_bank, + input [CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK-1:0] mc_cs_n, + input mc_reset_n, + input [1:0] mc_odt, + input [nCK_PER_CLK-1:0] mc_cke, + // AUX - For ODT and CKE assertion during reads and writes + input [3:0] mc_aux_out0, + input [3:0] mc_aux_out1, + input mc_cmd_wren, + input mc_ctl_wren, + input [2:0] mc_cmd, + input [1:0] mc_cas_slot, + input [5:0] mc_data_offset, + input [5:0] mc_data_offset_1, + input [5:0] mc_data_offset_2, + input [1:0] mc_rank_cnt, + // Write + input mc_wrdata_en, + input [2*nCK_PER_CLK*DQ_WIDTH-1:0] mc_wrdata, + input [2*nCK_PER_CLK*(DQ_WIDTH/8)-1:0] mc_wrdata_mask, + input idle, + output phy_mc_ctl_full, + output phy_mc_cmd_full, + output phy_mc_data_full, + output [6*RANKS-1:0] calib_rd_data_offset_0, + output [6*RANKS-1:0] calib_rd_data_offset_1, + output [6*RANKS-1:0] calib_rd_data_offset_2, + output phy_rddata_valid, + output [2*nCK_PER_CLK*DQ_WIDTH-1:0] phy_rd_data, + + // Differential system clocks + input sys_clk_p, + input sys_clk_n, + + output ui_clk, + output ui_clk_sync_rst, + + output init_calib_complete, + + // System reset - Default polarity of sys_rst pin is Active Low. + // System reset polarity will change based on the option + // selected in GUI. + input sys_rst + ); + + function integer clogb2 (input integer size); + begin + size = size - 1; + for (clogb2=1; size>1; clogb2=clogb2+1) + size = size >> 1; + end + endfunction // clogb2 + + + localparam BM_CNT_WIDTH = clogb2(nBANK_MACHS); + localparam RANK_WIDTH = clogb2(RANKS); + + localparam ECC_WIDTH = (ECC == "OFF")? + 0 : (DATA_WIDTH <= 4)? + 4 : (DATA_WIDTH <= 10)? + 5 : (DATA_WIDTH <= 26)? + 6 : (DATA_WIDTH <= 57)? + 7 : (DATA_WIDTH <= 120)? + 8 : (DATA_WIDTH <= 247)? + 9 : 10; + localparam DATA_BUF_OFFSET_WIDTH = 1; + localparam MC_ERR_ADDR_WIDTH = ((CS_WIDTH == 1) ? 0 : RANK_WIDTH) + + BANK_WIDTH + ROW_WIDTH + COL_WIDTH + + DATA_BUF_OFFSET_WIDTH; + + localparam TEMP_MON_EN = (SIMULATION == "FALSE") ? "ON" : "OFF"; + // Enable or disable the temp monitor module + localparam tTEMPSAMPLE = 10000000; // sample every 10 us + localparam XADC_CLK_PERIOD = 5000; // Use 200 MHz IODELAYCTRL clock + `ifdef SKIP_CALIB + localparam SKIP_CALIB = "TRUE"; + `else + localparam SKIP_CALIB = "FALSE"; + `endif + + + localparam TAPSPERKCLK = (56*MMCM_MULT_F)/nCK_PER_CLK; + + + // Wire declarations + + wire [BM_CNT_WIDTH-1:0] bank_mach_next; + wire clk; + wire [1:0] clk_ref; + wire [1:0] iodelay_ctrl_rdy; + wire clk_ref_in; + wire sys_rst_o; + wire clk_div2; + wire rst_div2; + wire freq_refclk ; + wire mem_refclk ; + wire pll_lock ; + wire sync_pulse; + wire mmcm_ps_clk; + wire poc_sample_pd; + wire psen; + wire psincdec; + wire psdone; + wire iddr_rst; + wire ref_dll_lock; + wire rst_phaser_ref; + wire pll_locked; + + wire rst; + + wire [(2*nCK_PER_CLK)-1:0] app_ecc_multiple_err; + wire [(2*nCK_PER_CLK)-1:0] app_ecc_single_err; + wire ddr3_parity; + + + wire sys_clk_i; + wire mmcm_clk; + wire clk_ref_p; + wire clk_ref_n; + wire clk_ref_i; + wire [11:0] device_temp_i; + wire [11:0] device_temp; + + + +//*************************************************************************** + + assign ui_clk = clk; + assign ui_clk_sync_rst = rst; + + assign sys_clk_i = 1'b0; + assign clk_ref_i = 1'b0; + + + generate + if (REFCLK_TYPE == "USE_SYSTEM_CLOCK") + assign clk_ref_in = mmcm_clk; + else + assign clk_ref_in = clk_ref_i; + endgenerate + + mig_7series_v4_0_iodelay_ctrl # + ( + .TCQ (TCQ), + .IODELAY_GRP0 (IODELAY_GRP0), + .IODELAY_GRP1 (IODELAY_GRP1), + .REFCLK_TYPE (REFCLK_TYPE), + .SYSCLK_TYPE (SYSCLK_TYPE), + .SYS_RST_PORT (SYS_RST_PORT), + .RST_ACT_LOW (RST_ACT_LOW), + .DIFF_TERM_REFCLK (DIFF_TERM_REFCLK), + .FPGA_SPEED_GRADE (FPGA_SPEED_GRADE), + .REF_CLK_MMCM_IODELAY_CTRL (REF_CLK_MMCM_IODELAY_CTRL) + ) + u_iodelay_ctrl + ( + // Outputs + .iodelay_ctrl_rdy (iodelay_ctrl_rdy), + .sys_rst_o (sys_rst_o), + .clk_ref (clk_ref), + // Inputs + .clk_ref_p (clk_ref_p), + .clk_ref_n (clk_ref_n), + .clk_ref_i (clk_ref_in), + .sys_rst (sys_rst) + ); + mig_7series_v4_0_clk_ibuf # + ( + .SYSCLK_TYPE (SYSCLK_TYPE), + .DIFF_TERM_SYSCLK (DIFF_TERM_SYSCLK) + ) + u_ddr3_clk_ibuf + ( + .sys_clk_p (sys_clk_p), + .sys_clk_n (sys_clk_n), + .sys_clk_i (sys_clk_i), + .mmcm_clk (mmcm_clk) + ); + // Temperature monitoring logic + + generate + if (TEMP_MON_EN == "ON") begin: temp_mon_enabled + + mig_7series_v4_0_tempmon # + ( + .TCQ (TCQ), + .TEMP_MON_CONTROL (TEMP_MON_CONTROL), + .XADC_CLK_PERIOD (XADC_CLK_PERIOD), + .tTEMPSAMPLE (tTEMPSAMPLE) + ) + u_tempmon + ( + .clk (clk), + .xadc_clk (clk_ref[0]), + .rst (rst), + .device_temp_i (device_temp_i), + .device_temp (device_temp) + ); + end else begin: temp_mon_disabled + + assign device_temp = 'b0; + + end + endgenerate + + mig_7series_v4_0_infrastructure # + ( + //.SIMULATION (SIMULATION), + .TCQ (TCQ), + .nCK_PER_CLK (nCK_PER_CLK), + .CLKIN_PERIOD (CLKIN_PERIOD), + .SYSCLK_TYPE (SYSCLK_TYPE), + .CLKFBOUT_MULT (CLKFBOUT_MULT), + .DIVCLK_DIVIDE (DIVCLK_DIVIDE), + .CLKOUT0_PHASE (CLKOUT0_PHASE), + .CLKOUT0_DIVIDE (CLKOUT0_DIVIDE), + .CLKOUT1_DIVIDE (CLKOUT1_DIVIDE), + .CLKOUT2_DIVIDE (CLKOUT2_DIVIDE), + .CLKOUT3_DIVIDE (CLKOUT3_DIVIDE), + .MMCM_VCO (MMCM_VCO), + .MMCM_MULT_F (MMCM_MULT_F), + .MMCM_DIVCLK_DIVIDE (MMCM_DIVCLK_DIVIDE), + .RST_ACT_LOW (RST_ACT_LOW), + .tCK (tCK), + .MEM_TYPE (DRAM_TYPE) + ) + u_ddr3_infrastructure + ( + // Outputs + .rstdiv0 (rst), + .clk (clk), + .clk_div2 (clk_div2), + .rst_div2 (rst_div2), + .mem_refclk (mem_refclk), + .freq_refclk (freq_refclk), + .sync_pulse (sync_pulse), + .mmcm_ps_clk (mmcm_ps_clk), + .poc_sample_pd (poc_sample_pd), + .psdone (psdone), + .iddr_rst (iddr_rst), +// .auxout_clk (), + .ui_addn_clk_0 (), + .ui_addn_clk_1 (), + .ui_addn_clk_2 (), + .ui_addn_clk_3 (), + .ui_addn_clk_4 (), + .pll_locked (pll_locked), + .mmcm_locked (), + .rst_phaser_ref (rst_phaser_ref), + // Inputs + .psen (psen), + .psincdec (psincdec), + .mmcm_clk (mmcm_clk), + .sys_rst (sys_rst_o), + .iodelay_ctrl_rdy (iodelay_ctrl_rdy), + .ref_dll_lock (ref_dll_lock) + ); + + + //=================== INIT PHY WITH WRAPPER CODE ======================= + localparam nSLOTS = 1 + (|SLOT_1_CONFIG ? 1 : 0); + localparam SLOT_0_CONFIG_MC = (nSLOTS == 2)? 8'b0000_0101 : 8'b0000_1111; + localparam SLOT_1_CONFIG_MC = (nSLOTS == 2)? 8'b0000_1010 : 8'b0000_0000; + + // 8*tREFI in ps is divided by fabric clock period also in ps. 270 is the number + // of fabric clock cycles that accounts for the Writes, read, and PRECHARGE time + localparam REFRESH_TIMER = (8*tREFI/(tCK*nCK_PER_CLK)) - 270; + + reg [7:0] slot_0_present_mc; + reg [7:0] slot_1_present_mc; + + reg user_periodic_rd_req = 1'b0; + reg user_ref_req = 1'b0; + reg user_zq_req = 1'b0; + + // MC/PHY interface + wire mc_ref_zq_wip; + wire tempmon_sample_en; + + wire init_calib_complete_w; + wire init_wrcal_complete_w; + wire mux_calib_complete; + wire reset = rst; + // assigning CWL = CL -1 for DDR2. DDR2 customers will not know anything + // about CWL. There is also nCWL parameter. Need to clean it up. + localparam CWL_T = (DRAM_TYPE == "DDR3") ? CWL : CL-1; + localparam PRE_REV3ES = "OFF"; + localparam DDR2_DQSN_ENABLE = "YES"; + localparam PHYCTL_CMD_FIFO = "FALSE"; + localparam IODELAY_GRP = "IODELAY_MIG"; + localparam MASTER_PHY_CTL = 0; + // following calculations should be moved inside PHY + // odt bus should be added to PHY. + localparam CLK_PERIOD = tCK * nCK_PER_CLK; + localparam nCL = CL; + localparam nCWL = CWL_T; + + assign init_wrcal_complete = init_wrcal_complete_w; + assign mux_calib_complete = (PRE_REV3ES == "OFF") ? init_calib_complete_w : + (init_calib_complete_w | init_wrcal_complete_w); + + assign init_calib_complete = mux_calib_complete; + + // Enable / disable temperature monitoring + assign tempmon_sample_en = TEMP_MON_EN == "OFF" ? 1'b0 : mc_ref_zq_wip; + + mig_7series_v4_0_ddr_phy_top # + ( + .TCQ (TCQ), + .DDR3_VDD_OP_VOLT (VDD_OP_VOLT), + .REFCLK_FREQ (REFCLK_FREQ), + .BYTE_LANES_B0 (BYTE_LANES_B0), + .BYTE_LANES_B1 (BYTE_LANES_B1), + .BYTE_LANES_B2 (BYTE_LANES_B2), + .BYTE_LANES_B3 (BYTE_LANES_B3), + .BYTE_LANES_B4 (BYTE_LANES_B4), + .PHY_0_BITLANES (PHY_0_BITLANES), + .PHY_1_BITLANES (PHY_1_BITLANES), + .PHY_2_BITLANES (PHY_2_BITLANES), + .CA_MIRROR (CA_MIRROR), + .CK_BYTE_MAP (CK_BYTE_MAP), + .ADDR_MAP (ADDR_MAP), + .BANK_MAP (BANK_MAP), + .CAS_MAP (CAS_MAP), + .CKE_ODT_BYTE_MAP (CKE_ODT_BYTE_MAP), + .CKE_MAP (CKE_MAP), + .ODT_MAP (ODT_MAP), + .CKE_ODT_AUX (CKE_ODT_AUX), + .CS_MAP (CS_MAP), + .PARITY_MAP (PARITY_MAP), + .RAS_MAP (RAS_MAP), + .WE_MAP (WE_MAP), + .DQS_BYTE_MAP (DQS_BYTE_MAP), + .DATA0_MAP (DATA0_MAP), + .DATA1_MAP (DATA1_MAP), + .DATA2_MAP (DATA2_MAP), + .DATA3_MAP (DATA3_MAP), + .DATA4_MAP (DATA4_MAP), + .DATA5_MAP (DATA5_MAP), + .DATA6_MAP (DATA6_MAP), + .DATA7_MAP (DATA7_MAP), + .DATA8_MAP (DATA8_MAP), + .DATA9_MAP (DATA9_MAP), + .DATA10_MAP (DATA10_MAP), + .DATA11_MAP (DATA11_MAP), + .DATA12_MAP (DATA12_MAP), + .DATA13_MAP (DATA13_MAP), + .DATA14_MAP (DATA14_MAP), + .DATA15_MAP (DATA15_MAP), + .DATA16_MAP (DATA16_MAP), + .DATA17_MAP (DATA17_MAP), + .MASK0_MAP (MASK0_MAP), + .MASK1_MAP (MASK1_MAP), + .CALIB_ROW_ADD (CALIB_ROW_ADD), + .CALIB_COL_ADD (CALIB_COL_ADD), + .CALIB_BA_ADD (CALIB_BA_ADD), + .nCS_PER_RANK (nCS_PER_RANK), + .CS_WIDTH (CS_WIDTH), + .nCK_PER_CLK (nCK_PER_CLK), + .PRE_REV3ES (PRE_REV3ES), + .CKE_WIDTH (CKE_WIDTH), + .DATA_CTL_B0 (DATA_CTL_B0), + .DATA_CTL_B1 (DATA_CTL_B1), + .DATA_CTL_B2 (DATA_CTL_B2), + .DATA_CTL_B3 (DATA_CTL_B3), + .DATA_CTL_B4 (DATA_CTL_B4), + .DDR2_DQSN_ENABLE (DDR2_DQSN_ENABLE), + .DRAM_TYPE (DRAM_TYPE), + .BANK_WIDTH (BANK_WIDTH), + .CK_WIDTH (CK_WIDTH), + .COL_WIDTH (COL_WIDTH), + .DM_WIDTH (DM_WIDTH), + .DQ_WIDTH (DQ_WIDTH), + .DQS_CNT_WIDTH (DQS_CNT_WIDTH), + .DQS_WIDTH (DQS_WIDTH), + .DRAM_WIDTH (DRAM_WIDTH), + .PHYCTL_CMD_FIFO (PHYCTL_CMD_FIFO), + .ROW_WIDTH (ROW_WIDTH), + .AL (AL), + .ADDR_CMD_MODE (ADDR_CMD_MODE), + .BURST_MODE (BURST_MODE), + .BURST_TYPE (BURST_TYPE), + .CL (nCL), + .CWL (nCWL), + .tRFC (tRFC), + .tREFI (tREFI), + .tCK (tCK), + .OUTPUT_DRV (OUTPUT_DRV), + .RANKS (RANKS), + .ODT_WIDTH (ODT_WIDTH), + .REG_CTRL (REG_CTRL), + .RTT_NOM (RTT_NOM), + .RTT_WR (RTT_WR), + .SLOT_1_CONFIG (SLOT_1_CONFIG), + .WRLVL (WRLVL), + .BANK_TYPE (BANK_TYPE), + .DATA_IO_PRIM_TYPE (DATA_IO_PRIM_TYPE), + .DATA_IO_IDLE_PWRDWN(DATA_IO_IDLE_PWRDWN), + .IODELAY_GRP (IODELAY_GRP), + .FPGA_SPEED_GRADE (FPGA_SPEED_GRADE), + // Prevent the following simulation-related parameters from + // being overridden for synthesis - for synthesis only the + // default values of these parameters should be used + // synthesis translate_off + .SIM_BYPASS_INIT_CAL (SIM_BYPASS_INIT_CAL), + // synthesis translate_on + .USE_CS_PORT (USE_CS_PORT), + .USE_DM_PORT (USE_DM_PORT), + .USE_ODT_PORT (USE_ODT_PORT), + .MASTER_PHY_CTL (MASTER_PHY_CTL), + .DEBUG_PORT (DEBUG_PORT), + .IDELAY_ADJ (IDELAY_ADJ), + .FINE_PER_BIT (FINE_PER_BIT), + .CENTER_COMP_MODE (CENTER_COMP_MODE), + .PI_VAL_ADJ (PI_VAL_ADJ), + .TAPSPERKCLK (TAPSPERKCLK), + .SKIP_CALIB (SKIP_CALIB), + .FPGA_VOLT_TYPE (FPGA_VOLT_TYPE) + ) + ddr_phy_top0 + ( + // Outputs + .calib_rd_data_offset_0 (calib_rd_data_offset_0), + .calib_rd_data_offset_1 (calib_rd_data_offset_1), + .calib_rd_data_offset_2 (calib_rd_data_offset_2), + .ddr_ck (ddr3_ck_p), + .ddr_ck_n (ddr3_ck_n), + .ddr_addr (ddr3_addr), + .ddr_ba (ddr3_ba), + .ddr_ras_n (ddr3_ras_n), + .ddr_cas_n (ddr3_cas_n), + .ddr_we_n (ddr3_we_n), + .ddr_cs_n (ddr3_cs_n), + .ddr_cke (ddr3_cke), + .ddr_odt (ddr3_odt), + .ddr_reset_n (ddr3_reset_n), + .ddr_parity (ddr3_parity), + .ddr_dm (ddr3_dm), + .init_calib_complete (init_calib_complete_w), + .init_wrcal_complete (init_wrcal_complete_w), + .mc_address (mc_address), + .mc_aux_out0 (mc_aux_out0), + .mc_aux_out1 (mc_aux_out1), + .mc_bank (mc_bank), + .mc_cke (mc_cke), + .mc_odt (mc_odt), + .mc_cas_n (mc_cas_n), + .mc_cmd (mc_cmd), + .mc_cmd_wren (mc_cmd_wren), + .mc_cas_slot (mc_cas_slot), + .mc_cs_n (mc_cs_n), + .mc_ctl_wren (mc_ctl_wren), + .mc_data_offset (mc_data_offset), + .mc_data_offset_1 (mc_data_offset_1), + .mc_data_offset_2 (mc_data_offset_2), + .mc_rank_cnt (mc_rank_cnt), + .mc_ras_n (mc_ras_n), + .mc_reset_n (mc_reset_n), + .mc_we_n (mc_we_n), + .mc_wrdata (mc_wrdata), + .mc_wrdata_en (mc_wrdata_en), + .mc_wrdata_mask (mc_wrdata_mask), + .idle (idle), + .mem_refclk (mem_refclk), + .phy_mc_ctl_full (phy_mc_ctl_full), + .phy_mc_cmd_full (phy_mc_cmd_full), + .phy_mc_data_full (phy_mc_data_full), + .phy_rd_data (phy_rd_data), + .phy_rddata_valid (phy_rddata_valid), + .pll_lock (pll_locked), + .sync_pulse (sync_pulse), + // Inouts + .ddr_dqs (ddr3_dqs_p), + .ddr_dqs_n (ddr3_dqs_n), + .ddr_dq (ddr3_dq), + // Inputs + .clk_ref (tCK <= 1500 ? clk_ref[1] : clk_ref[0]), + .freq_refclk (freq_refclk), + .clk (clk), + .clk_div2 (clk_div2), + .rst_div2 (rst_div2), + .mmcm_ps_clk (mmcm_ps_clk), + .poc_sample_pd (poc_sample_pd), + .rst (rst), + + .slot_0_present (SLOT_0_CONFIG), + .slot_1_present (SLOT_1_CONFIG) + + ,.device_temp (device_temp) + ,.tempmon_sample_en (tempmon_sample_en) + ,.psen (psen) + ,.psincdec (psincdec) + ,.psdone (psdone) + + ,.ref_dll_lock (ref_dll_lock) + ,.rst_phaser_ref (rst_phaser_ref) + ,.iddr_rst (iddr_rst) + ); + +endmodule diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_clk_ibuf.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_clk_ibuf.v new file mode 100644 index 0000000..4a27897 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_clk_ibuf.v @@ -0,0 +1,130 @@ +//***************************************************************************** +// (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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version:%version +// \ \ Application: MIG +// / / Filename: clk_ibuf.v +// /___/ /\ Date Last Modified: $Date: 2011/06/02 08:34:56 $ +// \ \ / \ Date Created:Mon Aug 3 2009 +// \___\/\___\ +// +//Device: Virtex-6 +//Design Name: DDR3 SDRAM +//Purpose: +// Clock generation/distribution and reset synchronization +//Reference: +//Revision History: +//***************************************************************************** +`timescale 1ns/1ps + +module mig_7series_v4_0_clk_ibuf # + ( + parameter SYSCLK_TYPE = "DIFFERENTIAL", + // input clock type + parameter DIFF_TERM_SYSCLK = "TRUE" + // Differential Termination + ) + ( + // Clock inputs + input sys_clk_p, // System clock diff input + input sys_clk_n, + input sys_clk_i, + output mmcm_clk + ); + + (* KEEP = "TRUE" *) wire sys_clk_ibufg /* synthesis syn_keep = 1 */; + + generate + if (SYSCLK_TYPE == "DIFFERENTIAL") begin: diff_input_clk + + //*********************************************************************** + // Differential input clock input buffers + //*********************************************************************** + + IBUFGDS # + ( + .DIFF_TERM (DIFF_TERM_SYSCLK), + .IBUF_LOW_PWR ("FALSE") + ) + u_ibufg_sys_clk + ( + .I (sys_clk_p), + .IB (sys_clk_n), + .O (sys_clk_ibufg) + ); + + end else if (SYSCLK_TYPE == "SINGLE_ENDED") begin: se_input_clk + + //*********************************************************************** + // SINGLE_ENDED input clock input buffers + //*********************************************************************** + + IBUFG # + ( + .IBUF_LOW_PWR ("FALSE") + ) + u_ibufg_sys_clk + ( + .I (sys_clk_i), + .O (sys_clk_ibufg) + ); + end else if (SYSCLK_TYPE == "NO_BUFFER") begin: internal_clk + + //*********************************************************************** + // System clock is driven from FPGA internal clock (clock from fabric) + //*********************************************************************** + assign sys_clk_ibufg = sys_clk_i; + end + endgenerate + + assign mmcm_clk = sys_clk_ibufg; + +endmodule diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_byte_group_io.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_byte_group_io.v new file mode 100644 index 0000000..595fb98 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_byte_group_io.v @@ -0,0 +1,534 @@ +/***************************************************************** +-- (c) Copyright 2011 - 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"). A 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. + +// +// +// Owner: Gary Martin +// Revision: $Id: //depot/icm/proj/common/head/rtl/v32_cmt/rtl/phy/byte_group_io.v#4 $ +// $Author: $ +// $DateTime: $ +// $Change: $ +// Description: +// This verilog file is a paramertizable I/O termination for +// the single byte lane. +// to create a N byte-lane wide phy. +// +// History: +// Date Engineer Description +// 04/01/2010 G. Martin Initial Checkin. +// +////////////////////////////////////////////////////////////////// +*****************************************************************/ + +`timescale 1ps/1ps + +module mig_7series_v4_0_ddr_byte_group_io #( +// bit lane existance + parameter BITLANES = 12'b1111_1111_1111, + parameter BITLANES_OUTONLY = 12'b0000_0000_0000, + parameter PO_DATA_CTL = "FALSE", + parameter OSERDES_DATA_RATE = "DDR", + parameter OSERDES_DATA_WIDTH = 4, + parameter IDELAYE2_IDELAY_TYPE = "VARIABLE", + parameter IDELAYE2_IDELAY_VALUE = 00, + parameter IODELAY_GRP = "IODELAY_MIG", + parameter FPGA_SPEED_GRADE = 1, + parameter real TCK = 2500.0, +// local usage only, don't pass down + parameter BUS_WIDTH = 12, + parameter SYNTHESIS = "FALSE" + ) + ( + input [9:0] mem_dq_in, + output [BUS_WIDTH-1:0] mem_dq_out, + output [BUS_WIDTH-1:0] mem_dq_ts, + input mem_dqs_in, + output mem_dqs_out, + output mem_dqs_ts, + output [(4*10)-1:0] iserdes_dout, // 2 extra 12-bit lanes not used + output dqs_to_phaser, + input iserdes_clk, + input iserdes_clkb, + input iserdes_clkdiv, + input phy_clk, + input rst, + input oserdes_rst, + input iserdes_rst, + input [1:0] oserdes_dqs, + input [1:0] oserdes_dqsts, + input [(4*BUS_WIDTH)-1:0] oserdes_dq, + input [1:0] oserdes_dqts, + input oserdes_clk, + input oserdes_clk_delayed, + input oserdes_clkdiv, + input idelay_inc, + input idelay_ce, + input idelay_ld, + input idelayctrl_refclk, + input [29:0] fine_delay , + input fine_delay_sel + ); + + + +/// INSTANCES + + +localparam ISERDES_DQ_DATA_RATE = "DDR"; +localparam ISERDES_DQ_DATA_WIDTH = 4; +localparam ISERDES_DQ_DYN_CLKDIV_INV_EN = "FALSE"; +localparam ISERDES_DQ_DYN_CLK_INV_EN = "FALSE"; +localparam ISERDES_DQ_INIT_Q1 = 1'b0; +localparam ISERDES_DQ_INIT_Q2 = 1'b0; +localparam ISERDES_DQ_INIT_Q3 = 1'b0; +localparam ISERDES_DQ_INIT_Q4 = 1'b0; +localparam ISERDES_DQ_INTERFACE_TYPE = "MEMORY_DDR3"; +localparam ISERDES_NUM_CE = 2; +localparam ISERDES_DQ_IOBDELAY = "IFD"; +localparam ISERDES_DQ_OFB_USED = "FALSE"; +localparam ISERDES_DQ_SERDES_MODE = "MASTER"; +localparam ISERDES_DQ_SRVAL_Q1 = 1'b0; +localparam ISERDES_DQ_SRVAL_Q2 = 1'b0; +localparam ISERDES_DQ_SRVAL_Q3 = 1'b0; +localparam ISERDES_DQ_SRVAL_Q4 = 1'b0; + +localparam IDELAY_FINEDELAY_USE = (TCK > 1500) ? "FALSE" : "TRUE"; + +wire [BUS_WIDTH-1:0] data_in_dly; +wire [BUS_WIDTH-1:0] oserdes_dq_buf; +wire [BUS_WIDTH-1:0] oserdes_dqts_buf; +wire oserdes_dqs_buf; +wire oserdes_dqsts_buf; +wire [9:0] data_in; +wire tbyte_out; +reg [29:0] fine_delay_r; + +assign mem_dq_out = oserdes_dq_buf; +assign mem_dq_ts = oserdes_dqts_buf; +assign data_in = mem_dq_in; + +assign mem_dqs_out = oserdes_dqs_buf; +assign mem_dqs_ts = oserdes_dqsts_buf; +assign dqs_to_phaser = mem_dqs_in; + +reg iserdes_clk_d; + +always @(*) + iserdes_clk_d = iserdes_clk; + +reg idelay_ld_rst; +reg rst_r1; +reg rst_r2; +reg rst_r3; +reg rst_r4; + +always @(posedge phy_clk) begin + rst_r1 <= #1 rst; + rst_r2 <= #1 rst_r1; + rst_r3 <= #1 rst_r2; + rst_r4 <= #1 rst_r3; +end + +always @(posedge phy_clk) begin + if (rst) + idelay_ld_rst <= #1 1'b1; + else if (rst_r4) + idelay_ld_rst <= #1 1'b0; +end + +always @ (posedge phy_clk) begin + if(rst) + fine_delay_r <= #1 1'b0; + else if(fine_delay_sel) + fine_delay_r <= #1 fine_delay; +end + + +genvar i; + +generate + +for ( i = 0; i != 10 && PO_DATA_CTL == "TRUE" ; i=i+1) begin : input_ + if ( BITLANES[i] && !BITLANES_OUTONLY[i]) begin : iserdes_dq_ + + ISERDESE2 #( + .DATA_RATE ( ISERDES_DQ_DATA_RATE), + .DATA_WIDTH ( ISERDES_DQ_DATA_WIDTH), + .DYN_CLKDIV_INV_EN ( ISERDES_DQ_DYN_CLKDIV_INV_EN), + .DYN_CLK_INV_EN ( ISERDES_DQ_DYN_CLK_INV_EN), + .INIT_Q1 ( ISERDES_DQ_INIT_Q1), + .INIT_Q2 ( ISERDES_DQ_INIT_Q2), + .INIT_Q3 ( ISERDES_DQ_INIT_Q3), + .INIT_Q4 ( ISERDES_DQ_INIT_Q4), + .INTERFACE_TYPE ( ISERDES_DQ_INTERFACE_TYPE), + .NUM_CE ( ISERDES_NUM_CE), + .IOBDELAY ( ISERDES_DQ_IOBDELAY), + .OFB_USED ( ISERDES_DQ_OFB_USED), + .SERDES_MODE ( ISERDES_DQ_SERDES_MODE), + .SRVAL_Q1 ( ISERDES_DQ_SRVAL_Q1), + .SRVAL_Q2 ( ISERDES_DQ_SRVAL_Q2), + .SRVAL_Q3 ( ISERDES_DQ_SRVAL_Q3), + .SRVAL_Q4 ( ISERDES_DQ_SRVAL_Q4) + ) + iserdesdq + ( + .O (), + .Q1 (iserdes_dout[4*i + 3]), + .Q2 (iserdes_dout[4*i + 2]), + .Q3 (iserdes_dout[4*i + 1]), + .Q4 (iserdes_dout[4*i + 0]), + .Q5 (), + .Q6 (), + .Q7 (), + .Q8 (), + .SHIFTOUT1 (), + .SHIFTOUT2 (), + + .BITSLIP (1'b0), + .CE1 (1'b1), + .CE2 (1'b1), + .CLK (iserdes_clk_d), + .CLKB (!iserdes_clk_d), + .CLKDIVP (iserdes_clkdiv), + .CLKDIV (), + .DDLY (data_in_dly[i]), + .D (data_in[i]), // dedicated route to iob for debugging + // or as needed, select with IOBDELAY + .DYNCLKDIVSEL (1'b0), + .DYNCLKSEL (1'b0), +// NOTE: OCLK is not used in this design, but is required to meet +// a design rule check in map and bitgen. Do not disconnect it. + .OCLK (oserdes_clk), + .OCLKB (), + .OFB (), + .RST (1'b0), +// .RST (iserdes_rst), + .SHIFTIN1 (1'b0), + .SHIFTIN2 (1'b0) + ); + +localparam IDELAYE2_CINVCTRL_SEL = "FALSE"; +localparam IDELAYE2_DELAY_SRC = "IDATAIN"; +localparam IDELAYE2_HIGH_PERFORMANCE_MODE = "TRUE"; +localparam IDELAYE2_PIPE_SEL = "FALSE"; +localparam IDELAYE2_ODELAY_TYPE = "FIXED"; +localparam IDELAYE2_REFCLK_FREQUENCY = ((FPGA_SPEED_GRADE == 2 || FPGA_SPEED_GRADE == 3) && TCK <= 1500) ? 400.0 : + (FPGA_SPEED_GRADE == 1 && TCK <= 1500) ? 300.0 : 200.0; +localparam IDELAYE2_SIGNAL_PATTERN = "DATA"; +localparam IDELAYE2_FINEDELAY_IN = "ADD_DLY"; + + if(IDELAY_FINEDELAY_USE == "TRUE") begin: idelay_finedelay_dq + (* IODELAY_GROUP = IODELAY_GRP *) + IDELAYE2_FINEDELAY #( + .CINVCTRL_SEL ( IDELAYE2_CINVCTRL_SEL), + .DELAY_SRC ( IDELAYE2_DELAY_SRC), + .HIGH_PERFORMANCE_MODE ( IDELAYE2_HIGH_PERFORMANCE_MODE), + .IDELAY_TYPE ( IDELAYE2_IDELAY_TYPE), + .IDELAY_VALUE ( IDELAYE2_IDELAY_VALUE), + .PIPE_SEL ( IDELAYE2_PIPE_SEL), + .FINEDELAY ( IDELAYE2_FINEDELAY_IN), + .REFCLK_FREQUENCY ( IDELAYE2_REFCLK_FREQUENCY ), + .SIGNAL_PATTERN ( IDELAYE2_SIGNAL_PATTERN) + ) + idelaye2 + ( + .CNTVALUEOUT (), + .DATAOUT (data_in_dly[i]), + .C (phy_clk), // automatically wired by ISE + .CE (idelay_ce), + .CINVCTRL (), + .CNTVALUEIN (5'b00000), + .DATAIN (1'b0), + .IDATAIN (data_in[i]), + .IFDLY (fine_delay_r[i*3+:3]), + .INC (idelay_inc), + .LD (idelay_ld | idelay_ld_rst), + .LDPIPEEN (1'b0), + .REGRST (rst) + ); + end else begin : idelay_dq + (* IODELAY_GROUP = IODELAY_GRP *) + IDELAYE2 #( + .CINVCTRL_SEL ( IDELAYE2_CINVCTRL_SEL), + .DELAY_SRC ( IDELAYE2_DELAY_SRC), + .HIGH_PERFORMANCE_MODE ( IDELAYE2_HIGH_PERFORMANCE_MODE), + .IDELAY_TYPE ( IDELAYE2_IDELAY_TYPE), + .IDELAY_VALUE ( IDELAYE2_IDELAY_VALUE), + .PIPE_SEL ( IDELAYE2_PIPE_SEL), + .REFCLK_FREQUENCY ( IDELAYE2_REFCLK_FREQUENCY ), + .SIGNAL_PATTERN ( IDELAYE2_SIGNAL_PATTERN) + ) + idelaye2 + ( + .CNTVALUEOUT (), + .DATAOUT (data_in_dly[i]), + .C (phy_clk), // automatically wired by ISE + .CE (idelay_ce), + .CINVCTRL (), + .CNTVALUEIN (5'b00000), + .DATAIN (1'b0), + .IDATAIN (data_in[i]), + .INC (idelay_inc), + .LD (idelay_ld | idelay_ld_rst), + .LDPIPEEN (1'b0), + .REGRST (rst) + ); + + end + end // iserdes_dq + else begin + assign iserdes_dout[4*i + 3] = 0; + assign iserdes_dout[4*i + 2] = 0; + assign iserdes_dout[4*i + 1] = 0; + assign iserdes_dout[4*i + 0] = 0; + end +end // input_ +endgenerate // iserdes_dq_ + +localparam OSERDES_DQ_DATA_RATE_OQ = OSERDES_DATA_RATE; +localparam OSERDES_DQ_DATA_RATE_TQ = OSERDES_DQ_DATA_RATE_OQ; +localparam OSERDES_DQ_DATA_WIDTH = OSERDES_DATA_WIDTH; +localparam OSERDES_DQ_INIT_OQ = 1'b1; +localparam OSERDES_DQ_INIT_TQ = 1'b1; +localparam OSERDES_DQ_INTERFACE_TYPE = "DEFAULT"; +localparam OSERDES_DQ_ODELAY_USED = 0; +localparam OSERDES_DQ_SERDES_MODE = "MASTER"; +localparam OSERDES_DQ_SRVAL_OQ = 1'b1; +localparam OSERDES_DQ_SRVAL_TQ = 1'b1; +// note: obuf used in control path case, no ts input so width irrelevant +localparam OSERDES_DQ_TRISTATE_WIDTH = (OSERDES_DQ_DATA_RATE_OQ == "DDR") ? 4 : 1; + +localparam OSERDES_DQS_DATA_RATE_OQ = "DDR"; +localparam OSERDES_DQS_DATA_RATE_TQ = "DDR"; +localparam OSERDES_DQS_TRISTATE_WIDTH = 4; // this is always ddr +localparam OSERDES_DQS_DATA_WIDTH = 4; +localparam ODDR_CLK_EDGE = "SAME_EDGE"; +localparam OSERDES_TBYTE_CTL = "TRUE"; + + +generate + +localparam NUM_BITLANES = PO_DATA_CTL == "TRUE" ? 10 : BUS_WIDTH; + + if ( PO_DATA_CTL == "TRUE" ) begin : slave_ts + OSERDESE2 #( + .DATA_RATE_OQ (OSERDES_DQ_DATA_RATE_OQ), + .DATA_RATE_TQ (OSERDES_DQ_DATA_RATE_TQ), + .DATA_WIDTH (OSERDES_DQ_DATA_WIDTH), + .INIT_OQ (OSERDES_DQ_INIT_OQ), + .INIT_TQ (OSERDES_DQ_INIT_TQ), + .SERDES_MODE (OSERDES_DQ_SERDES_MODE), + .SRVAL_OQ (OSERDES_DQ_SRVAL_OQ), + .SRVAL_TQ (OSERDES_DQ_SRVAL_TQ), + .TRISTATE_WIDTH (OSERDES_DQ_TRISTATE_WIDTH), + .TBYTE_CTL ("TRUE"), + .TBYTE_SRC ("TRUE") + ) + oserdes_slave_ts + ( + .OFB (), + .OQ (), + .SHIFTOUT1 (), // not extended + .SHIFTOUT2 (), // not extended + .TFB (), + .TQ (), + .CLK (oserdes_clk), + .CLKDIV (oserdes_clkdiv), + .D1 (), + .D2 (), + .D3 (), + .D4 (), + .D5 (), + .D6 (), + .D7 (), + .D8 (), + .OCE (1'b1), + .RST (oserdes_rst), + .SHIFTIN1 (), // not extended + .SHIFTIN2 (), // not extended + .T1 (oserdes_dqts[0]), + .T2 (oserdes_dqts[0]), + .T3 (oserdes_dqts[1]), + .T4 (oserdes_dqts[1]), + .TCE (1'b1), + .TBYTEOUT (tbyte_out), + .TBYTEIN (tbyte_out) + ); + end // slave_ts + + for (i = 0; i != NUM_BITLANES; i=i+1) begin : output_ + if ( BITLANES[i]) begin : oserdes_dq_ + + if ( PO_DATA_CTL == "TRUE" ) begin : ddr + + OSERDESE2 #( + .DATA_RATE_OQ (OSERDES_DQ_DATA_RATE_OQ), + .DATA_RATE_TQ (OSERDES_DQ_DATA_RATE_TQ), + .DATA_WIDTH (OSERDES_DQ_DATA_WIDTH), + .INIT_OQ (OSERDES_DQ_INIT_OQ), + .INIT_TQ (OSERDES_DQ_INIT_TQ), + .SERDES_MODE (OSERDES_DQ_SERDES_MODE), + .SRVAL_OQ (OSERDES_DQ_SRVAL_OQ), + .SRVAL_TQ (OSERDES_DQ_SRVAL_TQ), + .TRISTATE_WIDTH (OSERDES_DQ_TRISTATE_WIDTH), + .TBYTE_CTL (OSERDES_TBYTE_CTL), + .TBYTE_SRC ("FALSE") + ) + oserdes_dq_i + ( + .OFB (), + .OQ (oserdes_dq_buf[i]), + .SHIFTOUT1 (), // not extended + .SHIFTOUT2 (), // not extended + .TBYTEOUT (), + .TFB (), + .TQ (oserdes_dqts_buf[i]), + .CLK (oserdes_clk), + .CLKDIV (oserdes_clkdiv), + .D1 (oserdes_dq[4 * i + 0]), + .D2 (oserdes_dq[4 * i + 1]), + .D3 (oserdes_dq[4 * i + 2]), + .D4 (oserdes_dq[4 * i + 3]), + .D5 (), + .D6 (), + .D7 (), + .D8 (), + .OCE (1'b1), + .RST (oserdes_rst), + .SHIFTIN1 (), // not extended + .SHIFTIN2 (), // not extended + .T1 (/*oserdes_dqts[0]*/), + .T2 (/*oserdes_dqts[0]*/), + .T3 (/*oserdes_dqts[1]*/), + .T4 (/*oserdes_dqts[1]*/), + .TCE (1'b1), + .TBYTEIN (tbyte_out) + ); + end + else begin : sdr + OSERDESE2 #( + .DATA_RATE_OQ (OSERDES_DQ_DATA_RATE_OQ), + .DATA_RATE_TQ (OSERDES_DQ_DATA_RATE_TQ), + .DATA_WIDTH (OSERDES_DQ_DATA_WIDTH), + .INIT_OQ (1'b0 /*OSERDES_DQ_INIT_OQ*/), + .INIT_TQ (OSERDES_DQ_INIT_TQ), + .SERDES_MODE (OSERDES_DQ_SERDES_MODE), + .SRVAL_OQ (1'b0 /*OSERDES_DQ_SRVAL_OQ*/), + .SRVAL_TQ (OSERDES_DQ_SRVAL_TQ), + .TRISTATE_WIDTH (OSERDES_DQ_TRISTATE_WIDTH) + ) + oserdes_dq_i + ( + .OFB (), + .OQ (oserdes_dq_buf[i]), + .SHIFTOUT1 (), // not extended + .SHIFTOUT2 (), // not extended + .TBYTEOUT (), + .TFB (), + .TQ (), + .CLK (oserdes_clk), + .CLKDIV (oserdes_clkdiv), + .D1 (oserdes_dq[4 * i + 0]), + .D2 (oserdes_dq[4 * i + 1]), + .D3 (oserdes_dq[4 * i + 2]), + .D4 (oserdes_dq[4 * i + 3]), + .D5 (), + .D6 (), + .D7 (), + .D8 (), + .OCE (1'b1), + .RST (oserdes_rst), + .SHIFTIN1 (), // not extended + .SHIFTIN2 (), // not extended + .T1 (), + .T2 (), + .T3 (), + .T4 (), + .TCE (1'b1), + .TBYTEIN () + ); + end // ddr + end // oserdes_dq_ + end // output_ + +endgenerate + +generate + + if ( PO_DATA_CTL == "TRUE" ) begin : dqs_gen + + ODDR + #(.DDR_CLK_EDGE (ODDR_CLK_EDGE)) + oddr_dqs + ( + .Q (oserdes_dqs_buf), + .D1 (oserdes_dqs[0]), + .D2 (oserdes_dqs[1]), + .C (oserdes_clk_delayed), + .R (1'b0), + .S (), + .CE (1'b1) + ); + + ODDR + #(.DDR_CLK_EDGE (ODDR_CLK_EDGE)) + oddr_dqsts + ( .Q (oserdes_dqsts_buf), + .D1 (oserdes_dqsts[0]), + .D2 (oserdes_dqsts[0]), + .C (oserdes_clk_delayed), + .R (), + .S (1'b0), + .CE (1'b1) + ); + + end // sdr rate + else begin:null_dqs + end +endgenerate + +endmodule // byte_group_io diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_byte_lane.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_byte_lane.v new file mode 100644 index 0000000..4891a93 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_byte_lane.v @@ -0,0 +1,800 @@ +/*********************************************************** +-- (c) Copyright 2010 - 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"). A 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. + +// +// +// Owner: Gary Martin +// Revision: $Id: //depot/icm/proj/common/head/rtl/v32_cmt/rtl/phy/byte_lane.v#4 $ +// $Author: gary $ +// $DateTime: 2010/05/11 18:05:17 $ +// $Change: 490882 $ +// Description: +// This verilog file is a parameterizable single 10 or 12 bit byte lane. +// +// History: +// Date Engineer Description +// 04/01/2010 G. Martin Initial Checkin. +// +//////////////////////////////////////////////////////////// +***********************************************************/ + + +`timescale 1ps/1ps + +//`include "phy.vh" + +module mig_7series_v4_0_ddr_byte_lane #( +// these are used to scale the index into phaser,calib,scan,mc vectors +// to access fields used in this instance + parameter ABCD = "A", // A,B,C, or D + parameter PO_DATA_CTL = "FALSE", + parameter BITLANES = 12'b1111_1111_1111, + parameter BITLANES_OUTONLY = 12'b1111_1111_1111, + parameter BYTELANES_DDR_CK = 24'b0010_0010_0010_0010_0010_0010, + parameter RCLK_SELECT_LANE = "B", + parameter PC_CLK_RATIO = 4, + parameter USE_PRE_POST_FIFO = "FALSE", +//OUT_FIFO + parameter OF_ALMOST_EMPTY_VALUE = 1, + parameter OF_ALMOST_FULL_VALUE = 1, + parameter OF_ARRAY_MODE = "UNDECLARED", + parameter OF_OUTPUT_DISABLE = "FALSE", + parameter OF_SYNCHRONOUS_MODE = "TRUE", +//IN_FIFO + parameter IF_ALMOST_EMPTY_VALUE = 1, + parameter IF_ALMOST_FULL_VALUE = 1, + parameter IF_ARRAY_MODE = "UNDECLARED", + parameter IF_SYNCHRONOUS_MODE = "TRUE", +//PHASER_IN + parameter PI_BURST_MODE = "TRUE", + parameter PI_CLKOUT_DIV = 2, + parameter PI_FREQ_REF_DIV = "NONE", + parameter PI_FINE_DELAY = 1, + parameter PI_OUTPUT_CLK_SRC = "DELAYED_REF" , //"DELAYED_REF", + parameter PI_SEL_CLK_OFFSET = 0, + + parameter PI_SYNC_IN_DIV_RST = "FALSE", +//PHASER_OUT + parameter PO_CLKOUT_DIV = (PO_DATA_CTL == "FALSE") ? 4 : 2, + parameter PO_FINE_DELAY = 0, + parameter PO_COARSE_BYPASS = "FALSE", + parameter PO_COARSE_DELAY = 0, + parameter PO_OCLK_DELAY = 0, + parameter PO_OCLKDELAY_INV = "TRUE", + parameter PO_OUTPUT_CLK_SRC = "DELAYED_REF", + parameter PO_SYNC_IN_DIV_RST = "FALSE", +// OSERDES + parameter OSERDES_DATA_RATE = "DDR", + parameter OSERDES_DATA_WIDTH = 4, + +//IDELAY + parameter IDELAYE2_IDELAY_TYPE = "VARIABLE", + parameter IDELAYE2_IDELAY_VALUE = 00, + parameter IODELAY_GRP = "IODELAY_MIG", + parameter FPGA_SPEED_GRADE = 1, + parameter BANK_TYPE = "HP_IO", // # = "HP_IO", "HPL_IO", "HR_IO", "HRL_IO" + parameter real TCK = 0.00, + parameter SYNTHESIS = "FALSE", + +// local constants, do not pass in from above + parameter BUS_WIDTH = 12, + parameter MSB_BURST_PEND_PO = 3, + parameter MSB_BURST_PEND_PI = 7, + parameter MSB_RANK_SEL_I = MSB_BURST_PEND_PI + 8, + parameter PHASER_CTL_BUS_WIDTH = MSB_RANK_SEL_I + 1 + ,parameter CKE_ODT_AUX = "FALSE" + ,parameter PI_DIV2_INCDEC = "FALSE" + )( + input rst, + input phy_clk, + input rst_pi_div2, + input clk_div2, + input freq_refclk, + input mem_refclk, + input idelayctrl_refclk, + input sync_pulse, + output [BUS_WIDTH-1:0] mem_dq_out, + output [BUS_WIDTH-1:0] mem_dq_ts, + input [9:0] mem_dq_in, + output mem_dqs_out, + output mem_dqs_ts, + input mem_dqs_in, + output [11:0] ddr_ck_out, + output rclk, + input if_empty_def, + output if_a_empty, + output if_empty, + output if_a_full, + output if_full, + output of_a_empty, + output of_empty, + output of_a_full, + output of_full, + output pre_fifo_a_full, + output [79:0] phy_din, + input [79:0] phy_dout, + input phy_cmd_wr_en, + input phy_data_wr_en, + input phy_rd_en, + input [PHASER_CTL_BUS_WIDTH-1:0] phaser_ctl_bus, + input idelay_inc, + input idelay_ce, + input idelay_ld, + input if_rst, + input [2:0] byte_rd_en_oth_lanes, + input [1:0] byte_rd_en_oth_banks, + output byte_rd_en, + + output po_coarse_overflow, + output po_fine_overflow, + output [8:0] po_counter_read_val, + input po_fine_enable, + input po_coarse_enable, + input [1:0] po_en_calib, + input po_fine_inc, + input po_coarse_inc, + input po_counter_load_en, + input po_counter_read_en, + input po_sel_fine_oclk_delay, + input [8:0] po_counter_load_val, + + input [1:0] pi_en_calib, + input pi_rst_dqs_find, + input pi_fine_enable, + input pi_fine_inc, + input pi_counter_load_en, + input pi_counter_read_en, + input [5:0] pi_counter_load_val, + + output wire pi_iserdes_rst, + output pi_phase_locked, + output pi_fine_overflow, + output [5:0] pi_counter_read_val, + output wire pi_dqs_found, + output dqs_out_of_range, + input [29:0] fine_delay, + input fine_delay_sel +); + +localparam PHASER_INDEX = + (ABCD=="B" ? 1 : (ABCD == "C") ? 2 : (ABCD == "D" ? 3 : 0)); +localparam L_OF_ARRAY_MODE = + (OF_ARRAY_MODE != "UNDECLARED") ? OF_ARRAY_MODE : + (PO_DATA_CTL == "FALSE" || PC_CLK_RATIO == 2) ? "ARRAY_MODE_4_X_4" : "ARRAY_MODE_8_X_4"; +localparam L_IF_ARRAY_MODE = (IF_ARRAY_MODE != "UNDECLARED") ? IF_ARRAY_MODE : + (PC_CLK_RATIO == 2) ? "ARRAY_MODE_4_X_4" : "ARRAY_MODE_4_X_8"; + +localparam L_OSERDES_DATA_RATE = (OSERDES_DATA_RATE != "UNDECLARED") ? OSERDES_DATA_RATE : ((PO_DATA_CTL == "FALSE" && PC_CLK_RATIO == 4) ? "SDR" : "DDR") ; +localparam L_OSERDES_DATA_WIDTH = (OSERDES_DATA_WIDTH != "UNDECLARED") ? OSERDES_DATA_WIDTH : 4; +localparam real L_FREQ_REF_PERIOD_NS = TCK > 2500.0 ? (TCK/(PI_FREQ_REF_DIV == "DIV2" ? 2 : 1)/1000.0) : TCK/1000.0; +localparam real L_MEM_REF_PERIOD_NS = TCK/1000.0; +localparam real L_PHASE_REF_PERIOD_NS = TCK/1000.0; +localparam ODDR_CLK_EDGE = "SAME_EDGE"; +localparam PO_DCD_CORRECTION = "ON"; +localparam [2:0] PO_DCD_SETTING = (PO_DCD_CORRECTION == "ON") ? 3'b111 : 3'b000; + +localparam DQS_AUTO_RECAL = (BANK_TYPE == "HR_IO" || BANK_TYPE == "HRL_IO" || (BANK_TYPE == "HPL_IO" && TCK > 2500)) ? 1 : 0; +localparam DQS_FIND_PATTERN = (BANK_TYPE == "HR_IO" || BANK_TYPE == "HRL_IO" || (BANK_TYPE == "HPL_IO" && TCK > 2500)) ? "001" : "000"; + +wire [1:0] oserdes_dqs; +wire [1:0] oserdes_dqs_ts; +wire [1:0] oserdes_dq_ts; + +wire [3:0] of_q9; +wire [3:0] of_q8; +wire [3:0] of_q7; +wire [7:0] of_q6; +wire [7:0] of_q5; +wire [3:0] of_q4; +wire [3:0] of_q3; +wire [3:0] of_q2; +wire [3:0] of_q1; +wire [3:0] of_q0; +wire [7:0] of_d9; +wire [7:0] of_d8; +wire [7:0] of_d7; +wire [7:0] of_d6; +wire [7:0] of_d5; +wire [7:0] of_d4; +wire [7:0] of_d3; +wire [7:0] of_d2; +wire [7:0] of_d1; +wire [7:0] of_d0; + +wire [7:0] if_q9; +wire [7:0] if_q8; +wire [7:0] if_q7; +wire [7:0] if_q6; +wire [7:0] if_q5; +wire [7:0] if_q4; +wire [7:0] if_q3; +wire [7:0] if_q2; +wire [7:0] if_q1; +wire [7:0] if_q0; +wire [3:0] if_d9; +wire [3:0] if_d8; +wire [3:0] if_d7; +wire [3:0] if_d6; +wire [3:0] if_d5; +wire [3:0] if_d4; +wire [3:0] if_d3; +wire [3:0] if_d2; +wire [3:0] if_d1; +wire [3:0] if_d0; + +wire [3:0] dummy_i5; +wire [3:0] dummy_i6; + +wire [48-1:0] of_dqbus; +wire [10*4-1:0] iserdes_dout; + +wire iserdes_clk; +wire iserdes_clkdiv; +wire ififo_wr_enable; +wire phy_rd_en_; + + +wire dqs_to_phaser; +wire phy_wr_en = ( PO_DATA_CTL == "FALSE" ) ? phy_cmd_wr_en : phy_data_wr_en; +wire if_empty_; +wire if_a_empty_; +wire if_full_; +wire if_a_full_; +wire po_oserdes_rst; +wire empty_post_fifo; +reg [3:0] if_empty_r /* synthesis syn_maxfan = 3 */; +wire [79:0] rd_data; +reg [79:0] rd_data_r; + +reg ififo_rst = 1'b1; +reg ofifo_rst = 1'b1; + +wire of_wren_pre; +wire [79:0] pre_fifo_dout; +wire pre_fifo_full; +wire pre_fifo_rden; +wire [5:0] ddr_ck_out_q; +wire ififo_rd_en_in /* synthesis syn_maxfan = 10 */; +wire oserdes_clkdiv; +wire oserdes_clk_delayed; +wire po_rd_enable; + +always @(posedge phy_clk) begin + ififo_rst <= #1 pi_rst_dqs_find | if_rst ; +// reset only data o-fifos on reset of dqs_found + ofifo_rst <= #1 (pi_rst_dqs_find & PO_DATA_CTL == "TRUE") | rst; +end + +// IN_FIFO EMPTY->RDEN TIMING FIX: +// Always read from IN_FIFO - it doesn't hurt to read from an empty FIFO +// since the IN_FIFO read pointers are not incr'ed when the FIFO is empty +assign #(25) phy_rd_en_ = 1'b1; +//assign #(25) phy_rd_en_ = phy_rd_en; + +generate +if ( PO_DATA_CTL == "FALSE" ) begin : if_empty_null + assign if_empty = 0; + assign if_a_empty = 0; + assign if_full = 0; + assign if_a_full = 0; +end +else begin : if_empty_gen + assign if_empty = empty_post_fifo; + assign if_a_empty = if_a_empty_; + assign if_full = if_full_; + assign if_a_full = if_a_full_; +end +endgenerate + +generate +if ( PO_DATA_CTL == "FALSE" ) begin : dq_gen_48 + assign of_dqbus[48-1:0] = {of_q6[7:4], of_q5[7:4], of_q9, of_q8, of_q7, of_q6[3:0], of_q5[3:0], of_q4, of_q3, of_q2, of_q1, of_q0}; + assign phy_din = 80'h0; + assign byte_rd_en = 1'b1; +end +else begin : dq_gen_40 + + assign of_dqbus[40-1:0] = {of_q9, of_q8, of_q7, of_q6[3:0], of_q5[3:0], of_q4, of_q3, of_q2, of_q1, of_q0}; + assign ififo_rd_en_in = !if_empty_def ? ((&byte_rd_en_oth_banks) && (&byte_rd_en_oth_lanes) && byte_rd_en) : + ((|byte_rd_en_oth_banks) || (|byte_rd_en_oth_lanes) || byte_rd_en); + + if (USE_PRE_POST_FIFO == "TRUE") begin : if_post_fifo_gen + + // IN_FIFO EMPTY->RDEN TIMING FIX: + assign rd_data = {if_q9, if_q8, if_q7, if_q6, if_q5, if_q4, if_q3, if_q2, if_q1, if_q0}; + + always @(posedge phy_clk) begin + rd_data_r <= #(025) rd_data; + if_empty_r[0] <= #(025) if_empty_; + if_empty_r[1] <= #(025) if_empty_; + if_empty_r[2] <= #(025) if_empty_; + if_empty_r[3] <= #(025) if_empty_; + end + + + mig_7series_v4_0_ddr_if_post_fifo # + ( + .TCQ (25), // simulation CK->Q delay + .DEPTH (4), //2 // depth - account for up to 2 cycles of skew + .WIDTH (80) // width + ) + u_ddr_if_post_fifo + ( + .clk (phy_clk), + .rst (ififo_rst), + .empty_in (if_empty_r), + .rd_en_in (ififo_rd_en_in), + .d_in (rd_data_r), + .empty_out (empty_post_fifo), + .byte_rd_en (byte_rd_en), + .d_out (phy_din) + ); + + end + else begin : phy_din_gen + assign phy_din = {if_q9, if_q8, if_q7, if_q6, if_q5, if_q4, if_q3, if_q2, if_q1, if_q0}; + assign empty_post_fifo = if_empty_; + end + +end +endgenerate + + +assign { if_d9, if_d8, if_d7, if_d6, if_d5, if_d4, if_d3, if_d2, if_d1, if_d0} = iserdes_dout; + + +wire [1:0] rank_sel_i = ((phaser_ctl_bus[MSB_RANK_SEL_I :MSB_RANK_SEL_I -7] >> (PHASER_INDEX << 1)) & 2'b11); + + + + +generate + +if ( USE_PRE_POST_FIFO == "TRUE" ) begin : of_pre_fifo_gen + assign {of_d9, of_d8, of_d7, of_d6, of_d5, of_d4, of_d3, of_d2, of_d1, of_d0} = pre_fifo_dout; + mig_7series_v4_0_ddr_of_pre_fifo # + ( + .TCQ (25), // simulation CK->Q delay + .DEPTH (9), // depth - set to 9 to accommodate flow control + .WIDTH (80) // width + ) + u_ddr_of_pre_fifo + ( + .clk (phy_clk), + .rst (ofifo_rst), + .full_in (of_full), + .wr_en_in (phy_wr_en), + .d_in (phy_dout), + .wr_en_out (of_wren_pre), + .d_out (pre_fifo_dout), + .afull (pre_fifo_a_full) + ); +end +else begin +// wire direct to ofifo + assign {of_d9, of_d8, of_d7, of_d6, of_d5, of_d4, of_d3, of_d2, of_d1, of_d0} = phy_dout; + assign of_wren_pre = phy_wr_en; +end + + +endgenerate + +/////////////////////////////////////////////////////////////////////////////// +// Synchronize pi_phase_locked to phy_clk domain +/////////////////////////////////////////////////////////////////////////////// +wire pi_phase_locked_w; +wire pi_dqs_found_w; +wire [5:0] pi_counter_read_val_w; +generate + if (PI_DIV2_INCDEC == "TRUE") begin: phaser_in_div2_clk + (* ASYNC_REG = "TRUE" *) reg pi_phase_locked_r1; + (* ASYNC_REG = "TRUE" *) reg pi_phase_locked_r2; + (* ASYNC_REG = "TRUE" *) reg pi_phase_locked_r3; + reg pi_phase_locked_r4; + + (* ASYNC_REG = "TRUE" *) reg pi_dqs_found_r1; + (* ASYNC_REG = "TRUE" *) reg pi_dqs_found_r2; + (* ASYNC_REG = "TRUE" *) reg pi_dqs_found_r3; + reg pi_dqs_found_r4; + + (* ASYNC_REG = "TRUE" *) reg [5:0] pi_counter_read_val_r1; + (* ASYNC_REG = "TRUE" *) reg [5:0] pi_counter_read_val_r2; + (* ASYNC_REG = "TRUE" *) reg [5:0] pi_counter_read_val_r3; + reg [5:0] pi_counter_read_val_r4; + + always @ (posedge phy_clk) begin + pi_phase_locked_r1 <= pi_phase_locked_w; + pi_phase_locked_r2 <= pi_phase_locked_r1; + pi_phase_locked_r3 <= pi_phase_locked_r2; + pi_dqs_found_r1 <= pi_dqs_found_w; + pi_dqs_found_r2 <= pi_dqs_found_r1; + pi_dqs_found_r3 <= pi_dqs_found_r2; + pi_counter_read_val_r1 <= pi_counter_read_val_w; + pi_counter_read_val_r2 <= pi_counter_read_val_r1; + pi_counter_read_val_r3 <= pi_counter_read_val_r2; + end + + always @ (posedge phy_clk) begin + if (rst) + pi_phase_locked_r4 <= 1'b0; + else if (pi_phase_locked_r2 == pi_phase_locked_r3) + pi_phase_locked_r4 <= pi_phase_locked_r3; + end + + always @ (posedge phy_clk) begin + if (rst) + pi_dqs_found_r4 <= 1'b0; + else if (pi_dqs_found_r2 == pi_dqs_found_r3) + pi_dqs_found_r4 <= pi_dqs_found_r3; + end + + always @ (posedge phy_clk) begin + if (rst) + pi_counter_read_val_r4 <= 1'b0; + else if (pi_counter_read_val_r2 == pi_counter_read_val_r3) + pi_counter_read_val_r4 <= pi_counter_read_val_r3; + end + + assign pi_phase_locked = pi_phase_locked_r4; + assign pi_dqs_found = pi_dqs_found_r4; + assign pi_counter_read_val = pi_counter_read_val_r4; + + end else begin: pahser_in_div4_clk + assign pi_phase_locked = pi_phase_locked_w; + assign pi_dqs_found = pi_dqs_found_w; + assign pi_counter_read_val = pi_counter_read_val_w; + end +endgenerate + + +generate + +if ( PO_DATA_CTL == "TRUE" || ((RCLK_SELECT_LANE==ABCD) && (CKE_ODT_AUX =="TRUE"))) begin : phaser_in_gen + +//if (PI_DIV2_INCDEC == "TRUE") begin: phaser_in_div2_sys_clk +if (PI_DIV2_INCDEC == "TRUE") begin + +PHASER_IN_PHY #( + .BURST_MODE ( PI_BURST_MODE), + .CLKOUT_DIV ( PI_CLKOUT_DIV), + .DQS_AUTO_RECAL ( DQS_AUTO_RECAL), + .DQS_FIND_PATTERN ( DQS_FIND_PATTERN), + .SEL_CLK_OFFSET ( PI_SEL_CLK_OFFSET), + .FINE_DELAY ( PI_FINE_DELAY), + .FREQ_REF_DIV ( PI_FREQ_REF_DIV), + .OUTPUT_CLK_SRC ( PI_OUTPUT_CLK_SRC), + .SYNC_IN_DIV_RST ( PI_SYNC_IN_DIV_RST), + .REFCLK_PERIOD ( L_FREQ_REF_PERIOD_NS), + .MEMREFCLK_PERIOD ( L_MEM_REF_PERIOD_NS), + .PHASEREFCLK_PERIOD ( L_PHASE_REF_PERIOD_NS) +) phaser_in ( + .DQSFOUND (pi_dqs_found_w), + .DQSOUTOFRANGE (dqs_out_of_range), + .FINEOVERFLOW (pi_fine_overflow), + .PHASELOCKED (pi_phase_locked_w), + .ISERDESRST (pi_iserdes_rst), + .ICLKDIV (iserdes_clkdiv), + .ICLK (iserdes_clk), + .COUNTERREADVAL (pi_counter_read_val_w), + .RCLK (rclk), + .WRENABLE (ififo_wr_enable), + .BURSTPENDINGPHY (phaser_ctl_bus[MSB_BURST_PEND_PI - 3 + PHASER_INDEX]), + .ENCALIBPHY (pi_en_calib), + .FINEENABLE (pi_fine_enable), + .FREQREFCLK (freq_refclk), + .MEMREFCLK (mem_refclk), + .RANKSELPHY (rank_sel_i), + .PHASEREFCLK (dqs_to_phaser), + .RSTDQSFIND (pi_rst_dqs_find), + .RST (rst_pi_div2), + .FINEINC (pi_fine_inc), + .COUNTERLOADEN (pi_counter_load_en), + .COUNTERREADEN (pi_counter_read_en), + .COUNTERLOADVAL (pi_counter_load_val), + .SYNCIN (sync_pulse), + .SYSCLK (clk_div2) +); +end + +else begin + +PHASER_IN_PHY #( + .BURST_MODE ( PI_BURST_MODE), + .CLKOUT_DIV ( PI_CLKOUT_DIV), + .DQS_AUTO_RECAL ( DQS_AUTO_RECAL), + .DQS_FIND_PATTERN ( DQS_FIND_PATTERN), + .SEL_CLK_OFFSET ( PI_SEL_CLK_OFFSET), + .FINE_DELAY ( PI_FINE_DELAY), + .FREQ_REF_DIV ( PI_FREQ_REF_DIV), + .OUTPUT_CLK_SRC ( PI_OUTPUT_CLK_SRC), + .SYNC_IN_DIV_RST ( PI_SYNC_IN_DIV_RST), + .REFCLK_PERIOD ( L_FREQ_REF_PERIOD_NS), + .MEMREFCLK_PERIOD ( L_MEM_REF_PERIOD_NS), + .PHASEREFCLK_PERIOD ( L_PHASE_REF_PERIOD_NS) +) phaser_in ( + .DQSFOUND (pi_dqs_found_w), + .DQSOUTOFRANGE (dqs_out_of_range), + .FINEOVERFLOW (pi_fine_overflow), + .PHASELOCKED (pi_phase_locked_w), + .ISERDESRST (pi_iserdes_rst), + .ICLKDIV (iserdes_clkdiv), + .ICLK (iserdes_clk), + .COUNTERREADVAL (pi_counter_read_val_w), + .RCLK (rclk), + .WRENABLE (ififo_wr_enable), + .BURSTPENDINGPHY (phaser_ctl_bus[MSB_BURST_PEND_PI - 3 + PHASER_INDEX]), + .ENCALIBPHY (pi_en_calib), + .FINEENABLE (pi_fine_enable), + .FREQREFCLK (freq_refclk), + .MEMREFCLK (mem_refclk), + .RANKSELPHY (rank_sel_i), + .PHASEREFCLK (dqs_to_phaser), + .RSTDQSFIND (pi_rst_dqs_find), + .RST (rst), + .FINEINC (pi_fine_inc), + .COUNTERLOADEN (pi_counter_load_en), + .COUNTERREADEN (pi_counter_read_en), + .COUNTERLOADVAL (pi_counter_load_val), + .SYNCIN (sync_pulse), + .SYSCLK (phy_clk) +); + +end +end +else begin + assign pi_dqs_found_w = 1'b1; +// assign pi_dqs_out_of_range = 1'b0; + assign pi_phase_locked_w = 1'b1; +end + +endgenerate + +wire #0 phase_ref = freq_refclk; + +wire oserdes_clk; + + +PHASER_OUT_PHY #( + .CLKOUT_DIV ( PO_CLKOUT_DIV), + .DATA_CTL_N ( PO_DATA_CTL ), + .FINE_DELAY ( PO_FINE_DELAY), + .COARSE_BYPASS ( PO_COARSE_BYPASS ), + .COARSE_DELAY ( PO_COARSE_DELAY), + .OCLK_DELAY ( PO_OCLK_DELAY), + .OCLKDELAY_INV ( PO_OCLKDELAY_INV), + .OUTPUT_CLK_SRC ( PO_OUTPUT_CLK_SRC), + .SYNC_IN_DIV_RST ( PO_SYNC_IN_DIV_RST), + .REFCLK_PERIOD ( L_FREQ_REF_PERIOD_NS), + .PHASEREFCLK_PERIOD ( 1), // dummy, not used + .PO ( PO_DCD_SETTING ), + .MEMREFCLK_PERIOD ( L_MEM_REF_PERIOD_NS) +) phaser_out ( + .COARSEOVERFLOW (po_coarse_overflow), + .CTSBUS (oserdes_dqs_ts), + .DQSBUS (oserdes_dqs), + .DTSBUS (oserdes_dq_ts), + .FINEOVERFLOW (po_fine_overflow), + .OCLKDIV (oserdes_clkdiv), + .OCLK (oserdes_clk), + .OCLKDELAYED (oserdes_clk_delayed), + .COUNTERREADVAL (po_counter_read_val), + .BURSTPENDINGPHY (phaser_ctl_bus[MSB_BURST_PEND_PO -3 + PHASER_INDEX]), + .ENCALIBPHY (po_en_calib), + .RDENABLE (po_rd_enable), + .FREQREFCLK (freq_refclk), + .MEMREFCLK (mem_refclk), + .PHASEREFCLK (/*phase_ref*/), + .RST (rst), + .OSERDESRST (po_oserdes_rst), + .COARSEENABLE (po_coarse_enable), + .FINEENABLE (po_fine_enable), + .COARSEINC (po_coarse_inc), + .FINEINC (po_fine_inc), + .SELFINEOCLKDELAY (po_sel_fine_oclk_delay), + .COUNTERLOADEN (po_counter_load_en), + .COUNTERREADEN (po_counter_read_en), + .COUNTERLOADVAL (po_counter_load_val), + .SYNCIN (sync_pulse), + .SYSCLK (phy_clk) +); + + +generate + +if (PO_DATA_CTL == "TRUE") begin : in_fifo_gen + +IN_FIFO #( + .ALMOST_EMPTY_VALUE ( IF_ALMOST_EMPTY_VALUE ), + .ALMOST_FULL_VALUE ( IF_ALMOST_FULL_VALUE ), + .ARRAY_MODE ( L_IF_ARRAY_MODE), + .SYNCHRONOUS_MODE ( IF_SYNCHRONOUS_MODE) +) in_fifo ( + .ALMOSTEMPTY (if_a_empty_), + .ALMOSTFULL (if_a_full_), + .EMPTY (if_empty_), + .FULL (if_full_), + .Q0 (if_q0), + .Q1 (if_q1), + .Q2 (if_q2), + .Q3 (if_q3), + .Q4 (if_q4), + .Q5 (if_q5), + .Q6 (if_q6), + .Q7 (if_q7), + .Q8 (if_q8), + .Q9 (if_q9), +//=== + .D0 (if_d0), + .D1 (if_d1), + .D2 (if_d2), + .D3 (if_d3), + .D4 (if_d4), + .D5 ({dummy_i5,if_d5}), + .D6 ({dummy_i6,if_d6}), + .D7 (if_d7), + .D8 (if_d8), + .D9 (if_d9), + .RDCLK (phy_clk), + .RDEN (phy_rd_en_), + .RESET (ififo_rst), + .WRCLK (iserdes_clkdiv), + .WREN (ififo_wr_enable) +); +end + +endgenerate + + + +OUT_FIFO #( + .ALMOST_EMPTY_VALUE (OF_ALMOST_EMPTY_VALUE), + .ALMOST_FULL_VALUE (OF_ALMOST_FULL_VALUE), + .ARRAY_MODE (L_OF_ARRAY_MODE), + .OUTPUT_DISABLE (OF_OUTPUT_DISABLE), + .SYNCHRONOUS_MODE (OF_SYNCHRONOUS_MODE) +) out_fifo ( + .ALMOSTEMPTY (of_a_empty), + .ALMOSTFULL (of_a_full), + .EMPTY (of_empty), + .FULL (of_full), + .Q0 (of_q0), + .Q1 (of_q1), + .Q2 (of_q2), + .Q3 (of_q3), + .Q4 (of_q4), + .Q5 (of_q5), + .Q6 (of_q6), + .Q7 (of_q7), + .Q8 (of_q8), + .Q9 (of_q9), + .D0 (of_d0), + .D1 (of_d1), + .D2 (of_d2), + .D3 (of_d3), + .D4 (of_d4), + .D5 (of_d5), + .D6 (of_d6), + .D7 (of_d7), + .D8 (of_d8), + .D9 (of_d9), + .RDCLK (oserdes_clkdiv), + .RDEN (po_rd_enable), + .RESET (ofifo_rst), + .WRCLK (phy_clk), + .WREN (of_wren_pre) +); + + +mig_7series_v4_0_ddr_byte_group_io # + ( + .PO_DATA_CTL (PO_DATA_CTL), + .BITLANES (BITLANES), + .BITLANES_OUTONLY (BITLANES_OUTONLY), + .OSERDES_DATA_RATE (L_OSERDES_DATA_RATE), + .OSERDES_DATA_WIDTH (L_OSERDES_DATA_WIDTH), + .IODELAY_GRP (IODELAY_GRP), + .FPGA_SPEED_GRADE (FPGA_SPEED_GRADE), + .IDELAYE2_IDELAY_TYPE (IDELAYE2_IDELAY_TYPE), + .IDELAYE2_IDELAY_VALUE (IDELAYE2_IDELAY_VALUE), + .TCK (TCK), + .SYNTHESIS (SYNTHESIS) + ) + ddr_byte_group_io + ( + .mem_dq_out (mem_dq_out), + .mem_dq_ts (mem_dq_ts), + .mem_dq_in (mem_dq_in), + .mem_dqs_in (mem_dqs_in), + .mem_dqs_out (mem_dqs_out), + .mem_dqs_ts (mem_dqs_ts), + .rst (rst), + .oserdes_rst (po_oserdes_rst), + .iserdes_rst (pi_iserdes_rst ), + .iserdes_dout (iserdes_dout), + .dqs_to_phaser (dqs_to_phaser), + .phy_clk (phy_clk), + .iserdes_clk (iserdes_clk), + .iserdes_clkb (!iserdes_clk), + .iserdes_clkdiv (iserdes_clkdiv), + .idelay_inc (idelay_inc), + .idelay_ce (idelay_ce), + .idelay_ld (idelay_ld), + .idelayctrl_refclk (idelayctrl_refclk), + .oserdes_clk (oserdes_clk), + .oserdes_clk_delayed (oserdes_clk_delayed), + .oserdes_clkdiv (oserdes_clkdiv), + .oserdes_dqs ({oserdes_dqs[1], oserdes_dqs[0]}), + .oserdes_dqsts ({oserdes_dqs_ts[1], oserdes_dqs_ts[0]}), + .oserdes_dq (of_dqbus), + .oserdes_dqts ({oserdes_dq_ts[1], oserdes_dq_ts[0]}), + .fine_delay (fine_delay), + .fine_delay_sel (fine_delay_sel) + ); + +genvar i; +generate + for (i = 0; i <= 5; i = i+1) begin : ddr_ck_gen_loop + if (PO_DATA_CTL== "FALSE" && (BYTELANES_DDR_CK[i*4+PHASER_INDEX])) begin : ddr_ck_gen + ODDR #(.DDR_CLK_EDGE (ODDR_CLK_EDGE)) + ddr_ck ( + .C (oserdes_clk), + .R (1'b0), + .S (), + .D1 (1'b0), + .D2 (1'b1), + .CE (1'b1), + .Q (ddr_ck_out_q[i]) + ); + OBUFDS ddr_ck_obuf (.I(ddr_ck_out_q[i]), .O(ddr_ck_out[i*2]), .OB(ddr_ck_out[i*2+1])); + end // ddr_ck_gen + else begin : ddr_ck_null + assign ddr_ck_out[i*2+1:i*2] = 2'b0; + end + end // ddr_ck_gen_loop +endgenerate + +endmodule // byte_lane diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_calib_top.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_calib_top.v new file mode 100644 index 0000000..8ce8845 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_calib_top.v @@ -0,0 +1,2291 @@ +//***************************************************************************** +// (c) Copyright 2009 - 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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version: %version +// \ \ Application: MIG +// / / Filename: ddr_calib_top.v +// /___/ /\ Date Last Modified: $Date: 2011/06/02 08:35:06 $ +// \ \ / \ Date Created: Aug 03 2009 +// \___\/\___\ +// +//Device: 7 Series +//Design Name: DDR3 SDRAM +//Purpose: +//Purpose: +// Top-level for memory physical layer (PHY) interface +// NOTES: +// 1. Need to support multiple copies of CS outputs +// 2. DFI_DRAM_CKE_DISABLE not supported +// +//Reference: +//Revision History: +//***************************************************************************** + +/****************************************************************************** +**$Id: ddr_calib_top.v,v 1.1 2011/06/02 08:35:06 mishra Exp $ +**$Date: 2011/06/02 08:35:06 $ +**$Author: mishra $ +**$Revision: 1.1 $ +**$Source: /devl/xcs/repo/env/Databases/ip/src2/O/mig_7series_v1_3/data/dlib/7series/ddr3_sdram/verilog/rtl/phy/ddr_calib_top.v,v $ +******************************************************************************/ + +`timescale 1ps/1ps + +module mig_7series_v4_0_ddr_calib_top # + ( + parameter TCQ = 100, + parameter nCK_PER_CLK = 2, // # of memory clocks per CLK + parameter tCK = 2500, // DDR3 SDRAM clock period + parameter DDR3_VDD_OP_VOLT = "135", // Voltage mode used for DDR3 + parameter CLK_PERIOD = 3333, // Internal clock period (in ps) + parameter N_CTL_LANES = 3, // # of control byte lanes in the PHY + parameter DRAM_TYPE = "DDR3", // Memory I/F type: "DDR3", "DDR2" + parameter PRBS_WIDTH = 8, // The PRBS sequence is 2^PRBS_WIDTH + parameter HIGHEST_LANE = 4, + parameter HIGHEST_BANK = 3, + parameter BANK_TYPE = "HP_IO", // # = "HP_IO", "HPL_IO", "HR_IO", "HRL_IO" + // five fields, one per possible I/O bank, 4 bits in each field, + // 1 per lane data=1/ctl=0 + parameter DATA_CTL_B0 = 4'hc, + parameter DATA_CTL_B1 = 4'hf, + parameter DATA_CTL_B2 = 4'hf, + parameter DATA_CTL_B3 = 4'hf, + parameter DATA_CTL_B4 = 4'hf, + // defines the byte lanes in I/O banks being used in the interface + // 1- Used, 0- Unused + parameter BYTE_LANES_B0 = 4'b1111, + parameter BYTE_LANES_B1 = 4'b0000, + parameter BYTE_LANES_B2 = 4'b0000, + parameter BYTE_LANES_B3 = 4'b0000, + parameter BYTE_LANES_B4 = 4'b0000, + parameter DQS_BYTE_MAP + = 144'h00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00, + parameter CTL_BYTE_LANE = 8'hE4, // Control byte lane map + parameter CTL_BANK = 3'b000, // Bank used for control byte lanes + // Slot Conifg parameters + parameter [7:0] SLOT_1_CONFIG = 8'b0000_0000, + // DRAM bus widths + parameter BANK_WIDTH = 2, // # of bank bits + parameter CA_MIRROR = "OFF", // C/A mirror opt for DDR3 dual rank + parameter COL_WIDTH = 10, // column address width + parameter nCS_PER_RANK = 1, // # of unique CS outputs per rank + parameter DQ_WIDTH = 64, // # of DQ (data) + parameter DQS_CNT_WIDTH = 3, // = ceil(log2(DQS_WIDTH)) + parameter DQS_WIDTH = 8, // # of DQS (strobe) + parameter DRAM_WIDTH = 8, // # of DQ per DQS + parameter ROW_WIDTH = 14, // DRAM address bus width + parameter RANKS = 1, // # of memory ranks in the interface + parameter CS_WIDTH = 1, // # of CS# signals in the interface + parameter CKE_WIDTH = 1, // # of cke outputs + parameter DDR2_DQSN_ENABLE = "YES", // Enable differential DQS for DDR2 + parameter PER_BIT_DESKEW = "ON", + // calibration Address. The address given below will be used for calibration + // read and write operations. + parameter NUM_DQSFOUND_CAL = 1020, // # of iteration of DQSFOUND calib + parameter CALIB_ROW_ADD = 16'h0000,// Calibration row address + parameter CALIB_COL_ADD = 12'h000, // Calibration column address + parameter CALIB_BA_ADD = 3'h0, // Calibration bank address + // DRAM mode settings + parameter AL = "0", // Additive Latency option + parameter TEST_AL = "0", // Additive Latency for internal use + parameter ADDR_CMD_MODE = "1T", // ADDR/CTRL timing: "2T", "1T" + parameter BURST_MODE = "8", // Burst length + parameter BURST_TYPE = "SEQ", // Burst type + parameter nCL = 5, // Read CAS latency (in clk cyc) + parameter nCWL = 5, // Write CAS latency (in clk cyc) + parameter tRFC = 110000, // Refresh-to-command delay + parameter tREFI = 7800000, // pS Refresh-to-Refresh delay + parameter OUTPUT_DRV = "HIGH", // DRAM reduced output drive option + parameter REG_CTRL = "ON", // "ON" for registered DIMM + parameter RTT_NOM = "60", // ODT Nominal termination value + parameter RTT_WR = "60", // ODT Write termination value + parameter USE_ODT_PORT = 0, // 0 - No ODT output from FPGA + // 1 - ODT output from FPGA + parameter WRLVL = "OFF", // Enable write leveling + parameter PRE_REV3ES = "OFF", // Delay O/Ps using Phaser_Out fine dly + parameter POC_USE_METASTABLE_SAMP = "FALSE", + + // Simulation /debug options + parameter SIM_INIT_OPTION = "NONE", // Performs all initialization steps + parameter SIM_CAL_OPTION = "NONE", // Performs all calibration steps + parameter CKE_ODT_AUX = "FALSE", + parameter IDELAY_ADJ = "ON", + parameter FINE_PER_BIT = "ON", + parameter CENTER_COMP_MODE = "ON", + parameter PI_VAL_ADJ = "ON", + parameter TAPSPERKCLK = 56, + parameter DEBUG_PORT = "OFF", // Enable debug port + parameter SKIP_CALIB = "FALSE", + parameter PI_DIV2_INCDEC = "TRUE" + ) + ( + input clk, // Internal (logic) clock + input rst, // Reset sync'ed to CLK + // Slot present inputs + input [7:0] slot_0_present, + input [7:0] slot_1_present, + // Hard PHY signals + // From PHY Ctrl Block + input phy_ctl_ready, + input phy_ctl_full, + input phy_cmd_full, + input phy_data_full, + // To PHY Ctrl Block + output write_calib, + output read_calib, + output calib_ctl_wren, + output calib_cmd_wren, + output [1:0] calib_seq, + output [3:0] calib_aux_out, + output [nCK_PER_CLK -1:0] calib_cke, + output [1:0] calib_odt, + output [2:0] calib_cmd, + output calib_wrdata_en, + output [1:0] calib_rank_cnt, + output [1:0] calib_cas_slot, + output [5:0] calib_data_offset_0, + output [5:0] calib_data_offset_1, + output [5:0] calib_data_offset_2, + output [nCK_PER_CLK*ROW_WIDTH-1:0] phy_address, + output [nCK_PER_CLK*BANK_WIDTH-1:0]phy_bank, + output [CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK-1:0] phy_cs_n, + output [nCK_PER_CLK-1:0] phy_ras_n, + output [nCK_PER_CLK-1:0] phy_cas_n, + output [nCK_PER_CLK-1:0] phy_we_n, + output phy_reset_n, + // To hard PHY wrapper + output reg [5:0] calib_sel/* synthesis syn_maxfan = 10 */, + output reg calib_in_common/* synthesis syn_maxfan = 10 */, + output reg [HIGHEST_BANK-1:0] calib_zero_inputs/* synthesis syn_maxfan = 10 */, + output reg [HIGHEST_BANK-1:0] calib_zero_ctrl, + output phy_if_empty_def, + output reg phy_if_reset, +// output reg ck_addr_ctl_delay_done, + // From DQS Phaser_In + input pi_phaselocked, + input pi_phase_locked_all, + input pi_found_dqs, + input pi_dqs_found_all, + input [HIGHEST_LANE-1:0] pi_dqs_found_lanes, + input [5:0] pi_counter_read_val, + // To DQS Phaser_In + output [HIGHEST_BANK-1:0] pi_rst_stg1_cal, + output pi_en_stg2_f, + output pi_stg2_f_incdec, + output pi_stg2_load, + output [5:0] pi_stg2_reg_l, + // To DQ IDELAY + output idelay_ce, + output idelay_inc, + output idelay_ld, + // To DQS Phaser_Out + output [2:0] po_sel_stg2stg3 /* synthesis syn_maxfan = 3 */, + output [2:0] po_stg2_c_incdec /* synthesis syn_maxfan = 3 */, + output [2:0] po_en_stg2_c /* synthesis syn_maxfan = 3 */, + output [2:0] po_stg2_f_incdec /* synthesis syn_maxfan = 3 */, + output [2:0] po_en_stg2_f /* synthesis syn_maxfan = 3 */, + output po_counter_load_en, + input [8:0] po_counter_read_val, + // To command Phaser_Out + input phy_if_empty, + input [4:0] idelaye2_init_val, + input [5:0] oclkdelay_init_val, + + input tg_err, + output rst_tg_mc, + // Write data to OUT_FIFO + output [2*nCK_PER_CLK*DQ_WIDTH-1:0]phy_wrdata, + // To CNTVALUEIN input of DQ IDELAYs for perbit de-skew + output [5*RANKS*DQ_WIDTH-1:0] dlyval_dq, + // IN_FIFO read enable during write leveling, write calibration, + // and read leveling + // Read data from hard PHY fans out to mc and calib logic + input[2*nCK_PER_CLK*DQ_WIDTH-1:0] phy_rddata, + // To MC + output [6*RANKS-1:0] calib_rd_data_offset_0, + output [6*RANKS-1:0] calib_rd_data_offset_1, + output [6*RANKS-1:0] calib_rd_data_offset_2, + output phy_rddata_valid, + output calib_writes, + (* max_fanout = 50 *) output reg init_calib_complete/* synthesis syn_maxfan = 10 */, + output init_wrcal_complete, + output pi_phase_locked_err, + output pi_dqsfound_err, + output wrcal_err, + input pd_out, + // input mmcm_ps_clk, //phase shift clock + // input oclkdelay_fb_clk, //Write DQS feedback clk + //phase shift clock control + output psen, + output psincdec, + input psdone, + input poc_sample_pd, + + // Ports to be used when SKIP_CALIB="TRUE" + output reg calib_tap_req, + input [6:0] calib_tap_addr, + input calib_tap_load, + input [7:0] calib_tap_val, + input calib_tap_load_done, + + // Debug Port + output dbg_pi_phaselock_start, + output dbg_pi_dqsfound_start, + output dbg_pi_dqsfound_done, + output dbg_wrcal_start, + output dbg_wrcal_done, + output dbg_wrlvl_start, + output dbg_wrlvl_done, + output dbg_wrlvl_err, + output [6*DQS_WIDTH-1:0] dbg_wrlvl_fine_tap_cnt, + output [3*DQS_WIDTH-1:0] dbg_wrlvl_coarse_tap_cnt, + output [255:0] dbg_phy_wrlvl, + output [5:0] dbg_tap_cnt_during_wrlvl, + output dbg_wl_edge_detect_valid, + output [DQS_WIDTH-1:0] dbg_rd_data_edge_detect, + + // Write Calibration Logic + output [6*DQS_WIDTH-1:0] dbg_final_po_fine_tap_cnt, + output [3*DQS_WIDTH-1:0] dbg_final_po_coarse_tap_cnt, + output [99:0] dbg_phy_wrcal, + + // Read leveling logic + output [1:0] dbg_rdlvl_start, + output [1:0] dbg_rdlvl_done, + output [1:0] dbg_rdlvl_err, + output [6*DQS_WIDTH*RANKS-1:0] dbg_cpt_first_edge_cnt, + output [6*DQS_WIDTH*RANKS-1:0] dbg_cpt_second_edge_cnt, + output [6*DQS_WIDTH*RANKS-1:0] dbg_cpt_tap_cnt, + output [5*DQS_WIDTH*RANKS-1:0] dbg_dq_idelay_tap_cnt, + + // Delay control + input [11:0] device_temp, + input tempmon_sample_en, + input dbg_sel_pi_incdec, + input dbg_sel_po_incdec, + input [DQS_CNT_WIDTH:0] dbg_byte_sel, + input dbg_pi_f_inc, + input dbg_pi_f_dec, + input dbg_po_f_inc, + input dbg_po_f_stg23_sel, + input dbg_po_f_dec, + input dbg_idel_up_all, + input dbg_idel_down_all, + input dbg_idel_up_cpt, + input dbg_idel_down_cpt, + input [DQS_CNT_WIDTH-1:0] dbg_sel_idel_cpt, + input dbg_sel_all_idel_cpt, + output [255:0] dbg_phy_rdlvl, // Read leveling calibration + output [255:0] dbg_calib_top, // General PHY debug + output dbg_oclkdelay_calib_start, + output dbg_oclkdelay_calib_done, + output [255:0] dbg_phy_oclkdelay_cal, + output [DRAM_WIDTH*16 -1:0] dbg_oclkdelay_rd_data, + output [255:0] dbg_phy_init, + output [255:0] dbg_prbs_rdlvl, + output [255:0] dbg_dqs_found_cal, + output [1023:0] dbg_poc, + + output [6*DQS_WIDTH*RANKS-1:0] prbs_final_dqs_tap_cnt_r, + output [6*DQS_WIDTH*RANKS-1:0] dbg_prbs_first_edge_taps, + output [6*DQS_WIDTH*RANKS-1:0] dbg_prbs_second_edge_taps, + output reg [DQS_CNT_WIDTH:0] byte_sel_cnt, + output [DRAM_WIDTH-1:0] fine_delay_incdec_pb, //fine_delay decreament per bit + output fine_delay_sel + ); + + function integer clogb2 (input integer size); + begin + size = size - 1; + for (clogb2=1; size>1; clogb2=clogb2+1) + size = size >> 1; + end + endfunction + +// Advance ODELAY of DQ by extra 0.25*tCK (quarter clock cycle) to center +// align DQ and DQS on writes. Round (up or down) value to nearest integer +// localparam integer SHIFT_TBY4_TAP +// = (CLK_PERIOD + (nCK_PER_CLK*(1000000/(REFCLK_FREQ*64))*2)-1) / +// (nCK_PER_CLK*(1000000/(REFCLK_FREQ*64))*4); + +// Calculate number of slots in the system + localparam nSLOTS = 1 + (|SLOT_1_CONFIG ? 1 : 0); + + localparam OCAL_EN = ((SIM_CAL_OPTION == "FAST_CAL") || (tCK > 2500) || (SKIP_CALIB == "TRUE")) ? "OFF" : "ON"; + + // Different CTL_LANES value for DDR2. In DDR2 during DQS found all + // the add,ctl & data phaser out fine delays will be adjusted. + // In DDR3 only the add/ctrl lane delays will be adjusted + localparam DQS_FOUND_N_CTL_LANES = (DRAM_TYPE == "DDR3") ? N_CTL_LANES : 1; + + localparam DQSFOUND_CAL = (BANK_TYPE == "HR_IO" || BANK_TYPE == "HRL_IO" || (BANK_TYPE == "HPL_IO" && tCK > 2500)) ? "LEFT" : "RIGHT"; // IO Bank used for Memory I/F: "LEFT", "RIGHT" + + localparam FIXED_VICTIM = (SIM_CAL_OPTION == "NONE") ? "FALSE" : "TRUE"; + localparam VCCO_PAT_EN = 1; // Enable VCCO pattern during calibration + localparam VCCAUX_PAT_EN = 1; // Enable VCCAUX pattern during calibration + localparam ISI_PAT_EN = 1; // Enable VCCO pattern during calibration + + //Per-bit deskew for higher freqency (>800Mhz) + //localparam FINE_DELAY = (tCK < 1250) ? "ON" : "OFF"; + + //BYPASS + localparam BYPASS_COMPLEX_RDLVL = ((tCK > 2500) || (SKIP_CALIB == "TRUE")) ? "TRUE": "FALSE"; //"TRUE"; + localparam BYPASS_COMPLEX_OCAL = "TRUE"; + //localparam BYPASS_COMPLEX_OCAL = ((DRAM_TYPE == "DDR2") || (nCK_PER_CLK == 2) || (OCAL_EN == "OFF")) ? "TRUE" : "FALSE"; + + // 8*tREFI in ps is divided by the fabric clock period in ps + // 270 fabric clock cycles is subtracted to account for PRECHARGE, WR, RD times + localparam REFRESH_TIMER = (8*tREFI/(tCK*nCK_PER_CLK)) - 270; + + localparam REFRESH_TIMER_WIDTH = clogb2(REFRESH_TIMER); + + wire [2*8*nCK_PER_CLK-1:0] prbs_seed; + //wire [2*8*nCK_PER_CLK-1:0] prbs_out; + wire [8*DQ_WIDTH-1:0] prbs_out; + wire [7:0] prbs_rise0; + wire [7:0] prbs_fall0; + wire [7:0] prbs_rise1; + wire [7:0] prbs_fall1; + wire [7:0] prbs_rise2; + wire [7:0] prbs_fall2; + wire [7:0] prbs_rise3; + wire [7:0] prbs_fall3; + //wire [2*8*nCK_PER_CLK-1:0] prbs_o; + wire [2*nCK_PER_CLK*DQ_WIDTH-1:0] prbs_o; + wire dqsfound_retry; + wire dqsfound_retry_done; + wire phy_rddata_en; + wire prech_done; + wire rdlvl_stg1_done; + reg rdlvl_stg1_done_r1; + wire pi_dqs_found_done; + wire rdlvl_stg1_err; + wire pi_dqs_found_err; + wire wrcal_pat_resume; + wire wrcal_resume_w; + wire rdlvl_prech_req; + wire rdlvl_last_byte_done; + wire rdlvl_stg1_start; + wire rdlvl_stg1_rank_done; + wire rdlvl_assrt_common; + wire pi_dqs_found_start; + wire pi_dqs_found_rank_done; + wire wl_sm_start; + wire wrcal_start; + wire wrcal_rd_wait; + wire wrcal_prech_req; + wire wrcal_pat_err; + wire wrcal_done; + wire wrlvl_done; + wire wrlvl_err; + wire wrlvl_start; + wire ck_addr_cmd_delay_done; + wire po_ck_addr_cmd_delay_done; + wire pi_calib_done; + wire detect_pi_found_dqs; + wire [5:0] rd_data_offset_0; + wire [5:0] rd_data_offset_1; + wire [5:0] rd_data_offset_2; + wire [6*RANKS-1:0] rd_data_offset_ranks_0; + wire [6*RANKS-1:0] rd_data_offset_ranks_1; + wire [6*RANKS-1:0] rd_data_offset_ranks_2; + wire [6*RANKS-1:0] rd_data_offset_ranks_mc_0; + wire [6*RANKS-1:0] rd_data_offset_ranks_mc_1; + wire [6*RANKS-1:0] rd_data_offset_ranks_mc_2; + wire cmd_po_stg2_f_incdec; + wire cmd_po_stg2_incdec_ddr2_c; + wire cmd_po_en_stg2_f; + wire cmd_po_en_stg2_ddr2_c; + wire cmd_po_stg2_c_incdec; + wire cmd_po_en_stg2_c; + wire po_stg2_ddr2_incdec; + wire po_en_stg2_ddr2; + wire dqs_po_stg2_f_incdec; + wire dqs_po_en_stg2_f; + wire dqs_wl_po_stg2_c_incdec; + wire wrcal_po_stg2_c_incdec; + wire dqs_wl_po_en_stg2_c; + wire wrcal_po_en_stg2_c; + wire [N_CTL_LANES-1:0] ctl_lane_cnt; + reg [N_CTL_LANES-1:0] ctl_lane_sel; + wire [DQS_CNT_WIDTH:0] po_stg2_wrcal_cnt; + wire [DQS_CNT_WIDTH:0] po_stg2_wl_cnt; + wire [DQS_CNT_WIDTH:0] po_stg2_ddr2_cnt; + wire [8:0] dqs_wl_po_stg2_reg_l; + wire dqs_wl_po_stg2_load; + wire [8:0] dqs_po_stg2_reg_l; + wire dqs_po_stg2_load; + wire dqs_po_dec_done; + wire pi_fine_dly_dec_done; + wire rdlvl_pi_stg2_f_incdec; + wire rdlvl_pi_stg2_f_en; + wire [DQS_CNT_WIDTH:0] pi_stg2_rdlvl_cnt; + //reg [DQS_CNT_WIDTH:0] byte_sel_cnt; + wire [3*DQS_WIDTH-1:0] wl_po_coarse_cnt; + wire [6*DQS_WIDTH-1:0] wl_po_fine_cnt; + wire phase_locked_err; + wire phy_ctl_rdy_dly; + wire idelay_ce_int; + wire idelay_inc_int; + reg idelay_ce_r1; + reg idelay_ce_r2; + reg idelay_inc_r1; + reg idelay_inc_r2 /* synthesis syn_maxfan = 30 */; + reg po_dly_req_r; + wire wrcal_read_req; + wire wrcal_act_req; + wire temp_wrcal_done; + wire tg_timer_done; + wire no_rst_tg_mc; + wire calib_complete; + reg reset_if_r1; + reg reset_if_r2; + reg reset_if_r3; + reg reset_if_r4; + reg reset_if_r5; + reg reset_if_r6; + reg reset_if_r7; + reg reset_if_r8; + reg reset_if_r9; + reg reset_if; + wire phy_if_reset_w; + wire pi_phaselock_start; + + reg dbg_pi_f_inc_r; + reg dbg_pi_f_en_r; + reg dbg_sel_pi_incdec_r; + + reg dbg_po_f_inc_r; + reg dbg_po_f_stg23_sel_r; + reg dbg_po_f_en_r; + reg dbg_sel_po_incdec_r; + + reg tempmon_pi_f_inc_r; + reg tempmon_pi_f_en_r; + reg tempmon_sel_pi_incdec_r; + + reg ck_addr_cmd_delay_done_r1; + reg ck_addr_cmd_delay_done_r2; + reg ck_addr_cmd_delay_done_r3; + reg ck_addr_cmd_delay_done_r4; + reg ck_addr_cmd_delay_done_r5; + reg ck_addr_cmd_delay_done_r6; +// wire oclk_init_delay_start; + wire oclk_prech_req; + wire oclk_calib_resume; + wire [DQS_CNT_WIDTH:0] oclkdelay_calib_cnt; + wire [DQS_CNT_WIDTH:0] complex_oclkdelay_calib_cnt; + wire oclkdelay_calib_start; + wire oclkdelay_calib_done; + wire complex_oclk_prech_req; + wire complex_oclk_calib_resume; + wire complex_oclkdelay_calib_start; + wire complex_oclkdelay_calib_done; + wire complex_ocal_num_samples_inc; + wire complex_ocal_num_samples_done_r; + wire [2:0] complex_ocal_rd_victim_sel; + wire complex_ocal_ref_req; + wire complex_ocal_ref_done; + wire [6*DQS_WIDTH-1:0] oclkdelay_left_edge_val; + wire [6*DQS_WIDTH-1:0] oclkdelay_right_edge_val; + + wire wrlvl_final; + wire complex_wrlvl_final; + reg wrlvl_final_mux; + wire wrlvl_final_if_rst; + wire wrlvl_byte_redo; + wire wrlvl_byte_done; + wire early1_data; + wire early2_data; + wire po_stg23_sel; + wire po_stg23_incdec; + wire po_en_stg23; + wire complex_po_stg23_sel; + wire complex_po_stg23_incdec; + wire complex_po_en_stg23; + wire mpr_rdlvl_done; + wire mpr_rdlvl_start; + wire mpr_last_byte_done; + wire mpr_rnk_done; + wire mpr_end_if_reset; + wire mpr_rdlvl_err; + wire rdlvl_err; + wire prbs_rdlvl_start; + wire prbs_rdlvl_done; + wire prbs_rdlvl_done_complex; + reg prbs_rdlvl_done_r1; + wire prbs_last_byte_done; + wire prbs_rdlvl_prech_req; + wire prbs_pi_stg2_f_incdec; + wire prbs_pi_stg2_f_en; + wire complex_sample_cnt_inc; + wire complex_sample_cnt_inc_ocal; + wire [DQS_CNT_WIDTH:0] pi_stg2_prbs_rdlvl_cnt; + wire prbs_gen_clk_en; + wire prbs_gen_oclk_clk_en; + wire rd_data_offset_cal_done; + wire fine_adjust_done; + wire [N_CTL_LANES-1:0] fine_adjust_lane_cnt; + wire ck_po_stg2_f_indec; + wire ck_po_stg2_f_en; + wire dqs_found_prech_req; + wire tempmon_pi_f_inc; + wire tempmon_pi_f_dec; + wire tempmon_sel_pi_incdec; + wire wrcal_sanity_chk; + wire wrcal_sanity_chk_done; + wire wrlvl_done_w; + wire wrlvl_rank_done; + wire done_dqs_tap_inc; + wire [2:0] rd_victim_sel; + wire [2:0] victim_sel; + wire [DQS_CNT_WIDTH:0] victim_byte_cnt; + wire complex_wr_done; + wire complex_victim_inc; + + wire reset_rd_addr; + wire complex_ocal_reset_rd_addr; + + wire oclkdelay_center_calib_start; + wire poc_error; + + wire prbs_ignore_first_byte; + wire prbs_ignore_last_bytes; + + //stg3 tap values + // wire [6*DQS_WIDTH-1:0] oclkdelay_center_val; + + //byte selection + // wire [DQS_CNT_WIDTH:0] oclkdelay_center_cnt; + + //INC/DEC for stg3 taps + // wire ocal_ctr_po_stg23_sel; + // wire ocal_ctr_po_stg23_incdec; + // wire ocal_ctr_po_en_stg23; + + //Write resume for DQS toggling + wire oclk_center_write_resume; + wire oclkdelay_center_calib_done; + + //Write request to toggle DQS for limit module + wire lim2init_write_request; + wire lim_done; + + // Bypass complex ocal + wire complex_oclkdelay_calib_start_w; + wire complex_oclkdelay_calib_done_w; + wire [2:0] complex_ocal_rd_victim_sel_w; + wire complex_wrlvl_final_w; + + wire [255:0] dbg_ocd_lim; + + //with MMCM phase detect logic + //wire mmcm_edge_detect_rdy; // ready for MMCM detect + //wire ktap_at_rightedge; // stg3 tap at right edge + //wire ktap_at_leftedge; // stg3 tap at left edge + //wire mmcm_tap_at_center; // indicate stg3 tap at center + //wire mmcm_ps_clkphase_ok; // ps clkphase is OK + //wire mmcm_edge_detect_done; // mmcm edge detect is done + //wire mmcm_lbclk_edges_aligned; // mmcm edge detect is done + //wire reset_mmcm; //mmcm detect logic reset per byte + + // wire [255:0] dbg_phy_oclkdelay_center_cal; + + //PI inc/dec prevention during READ + wire rdlvl_pi_incdec; + wire complex_act_start; + wire complex_pi_incdec_done; + wire num_samples_done_r; + wire complex_init_pi_dec_done; + + wire calib_tap_inc_start; + wire calib_tap_inc_done; + wire calib_tap_end_if_reset; + wire [5:0] calib_tap_inc_byte_cnt; + wire calib_po_f_en; + wire calib_po_f_incdec; + wire calib_po_sel_stg2stg3; + wire calib_po_c_en; + wire calib_po_c_inc; + wire calib_pi_f_en; + wire calib_pi_f_incdec; + wire calib_idelay_ce; + wire calib_idelay_inc; + wire coarse_dec_err; + reg skip_cal_tempmon_samp_en; + wire tempmon_done_skip; + + wire skip_cal_po_pi_dec_done; + reg [6*DQS_WIDTH-1:0] calib_po_stage2_tap_cnt; + reg [6*DQS_WIDTH-1:0] calib_po_stage3_tap_cnt; + reg [3*DQS_WIDTH-1:0] calib_po_coarse_tap_cnt; + reg [6*DQS_WIDTH-1:0] calib_pi_stage2_tap_cnt; + reg [5*DQS_WIDTH-1:0] calib_idelay_tap_cnt; + reg [11:0] calib_device_temp; + wire [127:0] dbg_skip_cal; + + //***************************************************************************** + // Assertions to check correctness of parameter values + //***************************************************************************** + // synthesis translate_off + initial + begin + if (RANKS == 0) begin + $display ("Error: Invalid RANKS parameter. Must be 1 or greater"); + $finish; + end + if (phy_ctl_full == 1'b1) begin + $display ("Error: Incorrect phy_ctl_full input value in 2:1 or 4:1 mode"); + $finish; + end + end + // synthesis translate_on + + //*************************************************************************** + // Debug + //*************************************************************************** + reg if_empty_reg; + reg pi_stg2_en_reg; + + assign prbs_rdlvl_done = (SIM_CAL_OPTION == "FAST_CAL")? rdlvl_stg1_done : prbs_rdlvl_done_complex; + + assign dbg_pi_phaselock_start = pi_phaselock_start; + assign dbg_pi_dqsfound_start = pi_dqs_found_start; + assign dbg_pi_dqsfound_done = pi_dqs_found_done; + assign dbg_wrcal_start = wrcal_start; + assign dbg_wrcal_done = wrcal_done; + + // Unused for now - use these as needed to bring up lower level signals + //assign dbg_calib_top = dbg_ocd_lim; + assign dbg_calib_top[0] = pi_stg2_en_reg ; + assign dbg_calib_top[1] = if_empty_reg ; + assign dbg_calib_top[3] = coarse_dec_err; + assign dbg_calib_top[4] = calib_tap_inc_start; + assign dbg_calib_top[5] = calib_tap_inc_done; + assign dbg_calib_top[6+:63] = dbg_skip_cal; + + always @ (posedge clk) begin + if_empty_reg <= #TCQ phy_if_empty; + pi_stg2_en_reg <= #TCQ pi_en_stg2_f; + end + + // Write Level and write calibration debug observation ports + assign dbg_wrlvl_start = wrlvl_start; + assign dbg_wrlvl_done = wrlvl_done; + assign dbg_wrlvl_err = wrlvl_err; + + // Read Level debug observation ports + assign dbg_rdlvl_start = {mpr_rdlvl_start, rdlvl_stg1_start}; + assign dbg_rdlvl_done = {mpr_rdlvl_done, rdlvl_stg1_done}; + assign dbg_rdlvl_err = {mpr_rdlvl_err, rdlvl_err}; + + assign dbg_oclkdelay_calib_done = oclkdelay_calib_done; + assign dbg_oclkdelay_calib_start = oclkdelay_calib_start; + + //*************************************************************************** + // Write leveling dependent signals + //*************************************************************************** + + assign wrcal_resume_w = (WRLVL == "ON") ? wrcal_pat_resume : 1'b0; + assign wrlvl_done_w = (WRLVL == "ON") ? wrlvl_done : 1'b1; + assign ck_addr_cmd_delay_done = (WRLVL == "ON") ? po_ck_addr_cmd_delay_done : + (po_ck_addr_cmd_delay_done + && pi_fine_dly_dec_done) ; + +generate + if((WRLVL == "ON") && (BYPASS_COMPLEX_OCAL=="FALSE")) begin: complex_oclk_calib + assign complex_oclkdelay_calib_start_w = complex_oclkdelay_calib_start; + assign complex_oclkdelay_calib_done_w = complex_oclkdelay_calib_done; + assign complex_ocal_rd_victim_sel_w = complex_ocal_rd_victim_sel; + assign complex_wrlvl_final_w = complex_wrlvl_final; + end else begin: bypass_complex_ocal + assign complex_oclkdelay_calib_start_w = 1'b0; + assign complex_oclkdelay_calib_done_w = prbs_rdlvl_done; + assign complex_ocal_rd_victim_sel_w = 'd0; + assign complex_wrlvl_final_w = 1'b0; + end +endgenerate + + + generate + genvar i; + for (i = 0; i <= 2; i = i+1) begin : bankwise_signal + + assign po_sel_stg2stg3[i] = ((ck_addr_cmd_delay_done && ~oclkdelay_calib_done && mpr_rdlvl_done) ? po_stg23_sel : + (complex_oclkdelay_calib_start_w&&~complex_oclkdelay_calib_done_w? po_stg23_sel : 1'b0 ) + // (~oclkdelay_center_calib_done? ocal_ctr_po_stg23_sel:1'b0)) + ) || calib_po_sel_stg2stg3 || dbg_po_f_stg23_sel_r; + + assign po_stg2_c_incdec[i] = cmd_po_stg2_c_incdec || + cmd_po_stg2_incdec_ddr2_c || + calib_po_c_inc || + dqs_wl_po_stg2_c_incdec; + + assign po_en_stg2_c[i] = cmd_po_en_stg2_c || + cmd_po_en_stg2_ddr2_c || + calib_po_c_en || + dqs_wl_po_en_stg2_c; + + assign po_stg2_f_incdec[i] = dqs_po_stg2_f_incdec || + cmd_po_stg2_f_incdec || + ck_po_stg2_f_indec || + po_stg23_incdec || + calib_po_f_incdec || + // complex_po_stg23_incdec || + // ocal_ctr_po_stg23_incdec || + dbg_po_f_inc_r; + + assign po_en_stg2_f[i] = dqs_po_en_stg2_f || + cmd_po_en_stg2_f || + ck_po_stg2_f_en || + po_en_stg23 || + calib_po_f_en || + // complex_po_en_stg23 || + // ocal_ctr_po_en_stg23 || + dbg_po_f_en_r; + + end + endgenerate + + assign pi_stg2_f_incdec = (calib_pi_f_incdec | dbg_pi_f_inc_r | rdlvl_pi_stg2_f_incdec | prbs_pi_stg2_f_incdec | tempmon_pi_f_inc_r); + assign pi_en_stg2_f = (calib_pi_f_en | dbg_pi_f_en_r | rdlvl_pi_stg2_f_en | prbs_pi_stg2_f_en | tempmon_pi_f_en_r); + + assign idelay_ce = (idelay_ce_r2 | calib_idelay_ce); + assign idelay_inc = (idelay_inc_r2 | calib_idelay_inc); + + assign po_counter_load_en = 1'b0; + + assign complex_oclkdelay_calib_cnt = oclkdelay_calib_cnt; + assign complex_oclk_calib_resume = oclk_calib_resume; + assign complex_ocal_ref_req = oclk_prech_req; + + +// Added single stage flop to meet timing + always @(posedge clk) begin + if (SKIP_CALIB == "FALSE") + init_calib_complete <= calib_complete; + else + init_calib_complete <= tempmon_done_skip; + end + + assign calib_rd_data_offset_0 = rd_data_offset_ranks_mc_0; + assign calib_rd_data_offset_1 = rd_data_offset_ranks_mc_1; + assign calib_rd_data_offset_2 = rd_data_offset_ranks_mc_2; + + //*************************************************************************** + // Hard PHY signals + //*************************************************************************** + + assign pi_phase_locked_err = phase_locked_err; + assign pi_dqsfound_err = pi_dqs_found_err; + assign wrcal_err = wrcal_pat_err; + assign rst_tg_mc = 1'b0; + +//Restart WRLVL after oclkdealy cal + always @ (posedge clk) + wrlvl_final_mux <= #TCQ complex_oclkdelay_calib_start_w? complex_wrlvl_final_w: wrlvl_final; + + + always @(posedge clk) + phy_if_reset <= #TCQ (phy_if_reset_w | mpr_end_if_reset | + reset_if | wrlvl_final_if_rst | calib_tap_end_if_reset); + + //*************************************************************************** + // Phaser_IN inc dec control for debug + //*************************************************************************** + + always @(posedge clk) begin + if (rst) begin + dbg_pi_f_inc_r <= #TCQ 1'b0; + dbg_pi_f_en_r <= #TCQ 1'b0; + dbg_sel_pi_incdec_r <= #TCQ 1'b0; + end else begin + dbg_pi_f_inc_r <= #TCQ dbg_pi_f_inc; + dbg_pi_f_en_r <= #TCQ (dbg_pi_f_inc | dbg_pi_f_dec); + dbg_sel_pi_incdec_r <= #TCQ dbg_sel_pi_incdec; + end + end + + //*************************************************************************** + // Phaser_OUT inc dec control for debug + //*************************************************************************** + + always @(posedge clk) begin + if (rst) begin + dbg_po_f_inc_r <= #TCQ 1'b0; + dbg_po_f_stg23_sel_r<= #TCQ 1'b0; + dbg_po_f_en_r <= #TCQ 1'b0; + dbg_sel_po_incdec_r <= #TCQ 1'b0; + end else begin + dbg_po_f_inc_r <= #TCQ dbg_po_f_inc; + dbg_po_f_stg23_sel_r<= #TCQ dbg_po_f_stg23_sel; + dbg_po_f_en_r <= #TCQ (dbg_po_f_inc | dbg_po_f_dec); + dbg_sel_po_incdec_r <= #TCQ dbg_sel_po_incdec; + end + end + + //*************************************************************************** + // Phaser_IN inc dec control for temperature tracking + //*************************************************************************** + + always @(posedge clk) begin + if (rst) begin + tempmon_pi_f_inc_r <= #TCQ 1'b0; + tempmon_pi_f_en_r <= #TCQ 1'b0; + tempmon_sel_pi_incdec_r <= #TCQ 1'b0; + end else begin + tempmon_pi_f_inc_r <= #TCQ tempmon_pi_f_inc; + tempmon_pi_f_en_r <= #TCQ (tempmon_pi_f_inc | tempmon_pi_f_dec); + tempmon_sel_pi_incdec_r <= #TCQ tempmon_sel_pi_incdec; + end + end + + //*************************************************************************** + // OCLKDELAY calibration signals + //*************************************************************************** + + // Minimum of 5 'clk' cycles required between assertion of po_sel_stg2stg3 + // and increment/decrement of Phaser_Out stage 3 delay + always @(posedge clk) begin + ck_addr_cmd_delay_done_r1 <= #TCQ ck_addr_cmd_delay_done; + ck_addr_cmd_delay_done_r2 <= #TCQ ck_addr_cmd_delay_done_r1; + ck_addr_cmd_delay_done_r3 <= #TCQ ck_addr_cmd_delay_done_r2; + ck_addr_cmd_delay_done_r4 <= #TCQ ck_addr_cmd_delay_done_r3; + ck_addr_cmd_delay_done_r5 <= #TCQ ck_addr_cmd_delay_done_r4; + ck_addr_cmd_delay_done_r6 <= #TCQ ck_addr_cmd_delay_done_r5; + end + + + + + //*************************************************************************** + // MUX select logic to select current byte undergoing calibration + // Use DQS_CAL_MAP to determine the correlation between the physical + // byte numbering, and the byte numbering within the hard PHY + //*************************************************************************** +generate + if (SKIP_CALIB == "TRUE") begin: gen_byte_sel_skip_calib + always @(posedge clk) begin + if (rst) begin + byte_sel_cnt <= #TCQ 'd0; + ctl_lane_sel <= #TCQ 'd0; + calib_in_common <= #TCQ 1'b0; + end else if (~skip_cal_po_pi_dec_done) begin + byte_sel_cnt <= #TCQ 'd0; + calib_in_common <= #TCQ 1'b1; + end else if (~ck_addr_cmd_delay_done && (WRLVL !="ON")) begin + byte_sel_cnt <= #TCQ 'd0; + ctl_lane_sel <= #TCQ 'd0; + calib_in_common <= #TCQ 1'b1; + end else if (~ck_addr_cmd_delay_done) begin + ctl_lane_sel <= #TCQ ctl_lane_cnt; + calib_in_common <= #TCQ 1'b0; + end else if (~fine_adjust_done && rd_data_offset_cal_done) begin + if ((|pi_rst_stg1_cal) || (DRAM_TYPE == "DDR2")) begin + byte_sel_cnt <= #TCQ 'd0; + ctl_lane_sel <= #TCQ 'd0; + calib_in_common <= #TCQ 1'b1; + end else begin + byte_sel_cnt <= #TCQ 'd0; + ctl_lane_sel <= #TCQ fine_adjust_lane_cnt; + calib_in_common <= #TCQ 1'b0; + end + end else if (~pi_calib_done) begin + byte_sel_cnt <= #TCQ 'd0; + calib_in_common <= #TCQ 1'b1; + end else if (~pi_dqs_found_done) begin + byte_sel_cnt <= #TCQ 'd0; + calib_in_common <= #TCQ 1'b1; + end else if (~calib_tap_inc_done) begin + byte_sel_cnt <= #TCQ calib_tap_inc_byte_cnt; + calib_in_common <= #TCQ 1'b0; + end else if (dbg_sel_pi_incdec_r | dbg_sel_po_incdec_r) begin + byte_sel_cnt <= #TCQ dbg_byte_sel; + calib_in_common <= #TCQ 1'b0; + end else if (tempmon_sel_pi_incdec) begin + byte_sel_cnt <= #TCQ 'd0; + calib_in_common <= #TCQ 1'b1; + end + end + end else if (tCK > 2500) begin: gen_byte_sel_div2 + + always @(posedge clk) begin + if (rst) begin + byte_sel_cnt <= #TCQ 'd0; + ctl_lane_sel <= #TCQ 'd0; + calib_in_common <= #TCQ 1'b0; + end else if (~(dqs_po_dec_done && pi_fine_dly_dec_done)) begin + byte_sel_cnt <= #TCQ 'd0; + calib_in_common <= #TCQ 1'b1; + end else if (~ck_addr_cmd_delay_done && (WRLVL !="ON")) begin + byte_sel_cnt <= #TCQ 'd0; + ctl_lane_sel <= #TCQ 'd0; + calib_in_common <= #TCQ 1'b1; + end else if (~ck_addr_cmd_delay_done) begin + ctl_lane_sel <= #TCQ ctl_lane_cnt; + calib_in_common <= #TCQ 1'b0; + end else if (~fine_adjust_done && rd_data_offset_cal_done) begin + if ((|pi_rst_stg1_cal) || (DRAM_TYPE == "DDR2")) begin + byte_sel_cnt <= #TCQ 'd0; + ctl_lane_sel <= #TCQ 'd0; + calib_in_common <= #TCQ 1'b1; + end else begin + byte_sel_cnt <= #TCQ 'd0; + ctl_lane_sel <= #TCQ fine_adjust_lane_cnt; + calib_in_common <= #TCQ 1'b0; + end + end else if (~pi_calib_done) begin + byte_sel_cnt <= #TCQ 'd0; + calib_in_common <= #TCQ 1'b1; + end else if (~pi_dqs_found_done) begin + byte_sel_cnt <= #TCQ 'd0; + calib_in_common <= #TCQ 1'b1; + end else if (~wrlvl_done_w) begin + if (SIM_CAL_OPTION != "FAST_CAL") begin + byte_sel_cnt <= #TCQ po_stg2_wl_cnt; + calib_in_common <= #TCQ 1'b0; + end else begin + // Special case for FAST_CAL simulation only to ensure that + // calib_in_common isn't asserted too soon + if (!phy_ctl_rdy_dly) begin + byte_sel_cnt <= #TCQ 'd0; + calib_in_common <= #TCQ 1'b0; + end else begin + byte_sel_cnt <= #TCQ po_stg2_wl_cnt; + calib_in_common <= #TCQ 1'b1; + end + end + end else if (~mpr_rdlvl_done) begin + byte_sel_cnt <= #TCQ pi_stg2_rdlvl_cnt; + calib_in_common <= #TCQ 1'b0; + end else if (~oclkdelay_calib_done) begin + byte_sel_cnt <= #TCQ oclkdelay_calib_cnt; + calib_in_common <= #TCQ 1'b0; + end else if (~rdlvl_stg1_done && pi_calib_done) begin + if ((SIM_CAL_OPTION == "FAST_CAL") && rdlvl_assrt_common) begin + byte_sel_cnt <= #TCQ pi_stg2_rdlvl_cnt; + calib_in_common <= #TCQ 1'b1; + end else begin + byte_sel_cnt <= #TCQ pi_stg2_rdlvl_cnt; + calib_in_common <= #TCQ 1'b0; + end + end else if (~prbs_rdlvl_done && rdlvl_stg1_done) begin + byte_sel_cnt <= #TCQ pi_stg2_prbs_rdlvl_cnt; + calib_in_common <= #TCQ 1'b0; + end else if (~complex_oclkdelay_calib_done_w && prbs_rdlvl_done) begin + byte_sel_cnt <= #TCQ complex_oclkdelay_calib_cnt; + calib_in_common <= #TCQ 1'b0; + end else if ((~wrcal_done) && (DRAM_TYPE == "DDR3")) begin + byte_sel_cnt <= #TCQ po_stg2_wrcal_cnt; + calib_in_common <= #TCQ 1'b0; + end else if (dbg_sel_pi_incdec_r | dbg_sel_po_incdec_r) begin + byte_sel_cnt <= #TCQ dbg_byte_sel; + calib_in_common <= #TCQ 1'b0; + end else if (tempmon_sel_pi_incdec) begin + byte_sel_cnt <= #TCQ 'd0; + calib_in_common <= #TCQ 1'b1; + end + end + end else begin: gen_byte_sel_div1 + + always @(posedge clk) begin + if (rst) begin + byte_sel_cnt <= #TCQ 'd0; + ctl_lane_sel <= #TCQ 'd0; + calib_in_common <= #TCQ 1'b0; + end else if (~(dqs_po_dec_done && pi_fine_dly_dec_done)) begin + byte_sel_cnt <= #TCQ 'd0; + calib_in_common <= #TCQ 1'b1; + end else if (~ck_addr_cmd_delay_done && (WRLVL !="ON")) begin + byte_sel_cnt <= #TCQ 'd0; + ctl_lane_sel <= #TCQ 'd0; + calib_in_common <= #TCQ 1'b1; + end else if (~ck_addr_cmd_delay_done) begin + ctl_lane_sel <= #TCQ ctl_lane_cnt; + calib_in_common <= #TCQ 1'b0; + end else if (~fine_adjust_done && rd_data_offset_cal_done) begin + if ((|pi_rst_stg1_cal) || (DRAM_TYPE == "DDR2")) begin + byte_sel_cnt <= #TCQ 'd0; + ctl_lane_sel <= #TCQ 'd0; + calib_in_common <= #TCQ 1'b1; + end else begin + byte_sel_cnt <= #TCQ 'd0; + ctl_lane_sel <= #TCQ fine_adjust_lane_cnt; + calib_in_common <= #TCQ 1'b0; + end + end else if (~pi_calib_done) begin + byte_sel_cnt <= #TCQ 'd0; + calib_in_common <= #TCQ 1'b1; + end else if (~pi_dqs_found_done) begin + byte_sel_cnt <= #TCQ 'd0; + calib_in_common <= #TCQ 1'b1; + end else if (~wrlvl_done_w) begin + if (SIM_CAL_OPTION != "FAST_CAL") begin + byte_sel_cnt <= #TCQ po_stg2_wl_cnt; + calib_in_common <= #TCQ 1'b0; + end else begin + // Special case for FAST_CAL simulation only to ensure that + // calib_in_common isn't asserted too soon + if (!phy_ctl_rdy_dly) begin + byte_sel_cnt <= #TCQ 'd0; + calib_in_common <= #TCQ 1'b0; + end else begin + byte_sel_cnt <= #TCQ po_stg2_wl_cnt; + calib_in_common <= #TCQ 1'b1; + end + end + end else if (~mpr_rdlvl_done) begin + byte_sel_cnt <= #TCQ pi_stg2_rdlvl_cnt; + calib_in_common <= #TCQ 1'b0; + end else if (~oclkdelay_calib_done) begin + byte_sel_cnt <= #TCQ oclkdelay_calib_cnt; + calib_in_common <= #TCQ 1'b0; + end else if ((~wrcal_done)&& (DRAM_TYPE == "DDR3")) begin + byte_sel_cnt <= #TCQ po_stg2_wrcal_cnt; + calib_in_common <= #TCQ 1'b0; + end else if (~rdlvl_stg1_done && pi_calib_done) begin + if ((SIM_CAL_OPTION == "FAST_CAL") && rdlvl_assrt_common) begin + byte_sel_cnt <= #TCQ pi_stg2_rdlvl_cnt; + calib_in_common <= #TCQ 1'b1; + end else begin + byte_sel_cnt <= #TCQ pi_stg2_rdlvl_cnt; + calib_in_common <= #TCQ 1'b0; + end + end else if (~prbs_rdlvl_done && rdlvl_stg1_done) begin + byte_sel_cnt <= #TCQ pi_stg2_prbs_rdlvl_cnt; + calib_in_common <= #TCQ 1'b0; + end else if (~complex_oclkdelay_calib_done_w && prbs_rdlvl_done) begin + byte_sel_cnt <= #TCQ complex_oclkdelay_calib_cnt; + calib_in_common <= #TCQ 1'b0; + end else if (dbg_sel_pi_incdec_r | dbg_sel_po_incdec_r) begin + byte_sel_cnt <= #TCQ dbg_byte_sel; + calib_in_common <= #TCQ 1'b0; + end else if (tempmon_sel_pi_incdec) begin + byte_sel_cnt <= #TCQ 'd0; + calib_in_common <= #TCQ 1'b1; + end + end + + end +endgenerate + + // verilint STARC-2.2.3.3 off + always @(posedge clk) begin + if (rst || (calib_complete && ~ (dbg_sel_pi_incdec_r|dbg_sel_po_incdec_r|tempmon_sel_pi_incdec) )) begin + calib_sel <= #TCQ 6'b000100; + calib_zero_inputs <= #TCQ {HIGHEST_BANK{1'b1}}; + calib_zero_ctrl <= #TCQ {HIGHEST_BANK{1'b1}}; + end else if (~(dqs_po_dec_done && pi_fine_dly_dec_done) || ~skip_cal_po_pi_dec_done) begin + calib_sel[2] <= #TCQ 1'b0; + calib_sel[1:0] <= #TCQ DQS_BYTE_MAP[(byte_sel_cnt*8)+:2]; + calib_sel[5:3] <= #TCQ DQS_BYTE_MAP[((byte_sel_cnt*8)+4)+:3]; + calib_zero_inputs <= #TCQ {HIGHEST_BANK{1'b0}}; + if (~dqs_po_dec_done && (WRLVL != "ON")) + //if (~dqs_po_dec_done && ((SIM_CAL_OPTION == "FAST_CAL") ||(WRLVL != "ON"))) + calib_zero_ctrl <= #TCQ {HIGHEST_BANK{1'b0}}; + else + calib_zero_ctrl <= #TCQ {HIGHEST_BANK{1'b1}}; + end else if (~ck_addr_cmd_delay_done || (~fine_adjust_done && rd_data_offset_cal_done)) begin + if(WRLVL =="ON") begin + calib_sel[2] <= #TCQ 1'b0; + calib_sel[1:0] <= #TCQ CTL_BYTE_LANE[(ctl_lane_sel*2)+:2]; + calib_sel[5:3] <= #TCQ CTL_BANK; + if (|pi_rst_stg1_cal) begin + calib_zero_inputs <= #TCQ {HIGHEST_BANK{1'b0}}; + end else begin + calib_zero_inputs <= #TCQ {HIGHEST_BANK{1'b1}}; + calib_zero_inputs[1*CTL_BANK] <= #TCQ 1'b0; + end + calib_zero_ctrl <= #TCQ {HIGHEST_BANK{1'b1}}; + end else begin // if (WRLVL =="ON") + calib_sel[2] <= #TCQ 1'b0; + calib_sel[1:0] <= #TCQ DQS_BYTE_MAP[(byte_sel_cnt*8)+:2]; + calib_sel[5:3] <= #TCQ DQS_BYTE_MAP[((byte_sel_cnt*8)+4)+:3]; + calib_zero_inputs <= #TCQ {HIGHEST_BANK{1'b0}}; + if(~ck_addr_cmd_delay_done) + calib_zero_ctrl <= #TCQ {HIGHEST_BANK{1'b1}}; + else + calib_zero_ctrl <= #TCQ {HIGHEST_BANK{1'b0}}; + end // else: !if(WRLVL =="ON") + end else if ((~wrlvl_done_w) && (SIM_CAL_OPTION == "FAST_CAL")) begin + calib_sel[2] <= #TCQ 1'b0; + calib_sel[1:0] <= #TCQ DQS_BYTE_MAP[(byte_sel_cnt*8)+:2]; + calib_sel[5:3] <= #TCQ DQS_BYTE_MAP[((byte_sel_cnt*8)+4)+:3]; + calib_zero_inputs <= #TCQ {HIGHEST_BANK{1'b0}}; + calib_zero_ctrl <= #TCQ {HIGHEST_BANK{1'b1}}; + end else if (~rdlvl_stg1_done && (SIM_CAL_OPTION == "FAST_CAL") && + rdlvl_assrt_common) begin + calib_sel[2] <= #TCQ 1'b0; + calib_sel[1:0] <= #TCQ DQS_BYTE_MAP[(byte_sel_cnt*8)+:2]; + calib_sel[5:3] <= #TCQ DQS_BYTE_MAP[((byte_sel_cnt*8)+4)+:3]; + calib_zero_inputs <= #TCQ {HIGHEST_BANK{1'b0}}; + calib_zero_ctrl <= #TCQ {HIGHEST_BANK{1'b1}}; + end else if (tempmon_sel_pi_incdec) begin + calib_sel[2] <= #TCQ 1'b0; + calib_sel[1:0] <= #TCQ DQS_BYTE_MAP[(byte_sel_cnt*8)+:2]; + calib_sel[5:3] <= #TCQ DQS_BYTE_MAP[((byte_sel_cnt*8)+4)+:3]; + calib_zero_inputs <= #TCQ {HIGHEST_BANK{1'b0}}; + calib_zero_ctrl <= #TCQ {HIGHEST_BANK{1'b1}}; + end else begin + calib_sel[2] <= #TCQ 1'b0; + calib_sel[1:0] <= #TCQ DQS_BYTE_MAP[(byte_sel_cnt*8)+:2]; + calib_sel[5:3] <= #TCQ DQS_BYTE_MAP[((byte_sel_cnt*8)+4)+:3]; + calib_zero_ctrl <= #TCQ {HIGHEST_BANK{1'b1}}; + if (~calib_in_common) begin + calib_zero_inputs <= #TCQ {HIGHEST_BANK{1'b1}}; + calib_zero_inputs[(1*DQS_BYTE_MAP[((byte_sel_cnt*8)+4)+:3])] <= #TCQ 1'b0; + end else + calib_zero_inputs <= #TCQ {HIGHEST_BANK{1'b0}}; + end + end + // verilint STARC-2.2.3.3 on + // Logic to reset IN_FIFO flags to account for the possibility that + // one or more PHASER_IN's have not correctly found the DQS preamble + // If this happens, we can still complete read leveling, but the # of + // words written into the IN_FIFO's may be an odd #, so that if the + // IN_FIFO is used in 2:1 mode ("8:4 mode"), there may be a "half" word + // of data left that can only be flushed out by reseting the IN_FIFO + always @(posedge clk) begin + rdlvl_stg1_done_r1 <= #TCQ rdlvl_stg1_done; + prbs_rdlvl_done_r1 <= #TCQ prbs_rdlvl_done; + reset_if_r1 <= #TCQ reset_if; + reset_if_r2 <= #TCQ reset_if_r1; + reset_if_r3 <= #TCQ reset_if_r2; + reset_if_r4 <= #TCQ reset_if_r3; + reset_if_r5 <= #TCQ reset_if_r4; + reset_if_r6 <= #TCQ reset_if_r5; + reset_if_r7 <= #TCQ reset_if_r6; + reset_if_r8 <= #TCQ reset_if_r7; + reset_if_r9 <= #TCQ reset_if_r8; + end + + always @(posedge clk) begin + if (rst || reset_if_r9) + reset_if <= #TCQ 1'b0; + else if ((rdlvl_stg1_done && ~rdlvl_stg1_done_r1) || + (prbs_rdlvl_done && ~prbs_rdlvl_done_r1)) + reset_if <= #TCQ 1'b1; + end + + assign phy_if_empty_def = 1'b0; + + // DQ IDELAY tap inc and ce signals registered to control calib_in_common + // signal during read leveling in FAST_CAL mode. The calib_in_common signal + // is only asserted for IDELAY tap increments not Phaser_IN tap increments + // in FAST_CAL mode. For Phaser_IN tap increments the Phaser_IN counter load + // inputs are used. + always @(posedge clk) begin + if (rst) begin + idelay_ce_r1 <= #TCQ 1'b0; + idelay_ce_r2 <= #TCQ 1'b0; + idelay_inc_r1 <= #TCQ 1'b0; + idelay_inc_r2 <= #TCQ 1'b0; + end else begin + idelay_ce_r1 <= #TCQ idelay_ce_int; + idelay_ce_r2 <= #TCQ idelay_ce_r1; + idelay_inc_r1 <= #TCQ idelay_inc_int; + idelay_inc_r2 <= #TCQ idelay_inc_r1; + end + end + + //*************************************************************************** + // Delay all Outputs using Phaser_Out fine taps + //*************************************************************************** + + assign init_wrcal_complete = 1'b0; + + //*************************************************************************** + // PRBS Generator for Read Leveling Stage 1 - read window detection and + // DQS Centering + //*************************************************************************** + + // Assign initial seed (used for 1st data word in 8-burst sequence); use alternating 1/0 pat + assign prbs_seed = 64'h9966aa559966aa55; + + // A single PRBS generator + // writes 64-bits every 4to1 fabric clock cycle and + // write 32-bits every 2to1 fabric clock cycle + // used for complex read leveling and complex oclkdealy calib + mig_7series_v4_0_ddr_prbs_gen # + ( + .TCQ (TCQ), + .PRBS_WIDTH (2*8*nCK_PER_CLK), + .DQS_CNT_WIDTH (DQS_CNT_WIDTH), + .DQ_WIDTH (DQ_WIDTH), + .VCCO_PAT_EN (VCCO_PAT_EN), + .VCCAUX_PAT_EN (VCCAUX_PAT_EN), + .ISI_PAT_EN (ISI_PAT_EN), + .FIXED_VICTIM (FIXED_VICTIM) + ) + u_ddr_prbs_gen + (.prbs_ignore_first_byte (prbs_ignore_first_byte), + .prbs_ignore_last_bytes (prbs_ignore_last_bytes), + .clk_i (clk), + .clk_en_i (prbs_gen_clk_en | prbs_gen_oclk_clk_en), + .rst_i (rst), + .prbs_o (prbs_out), + .prbs_seed_i (prbs_seed), + .phy_if_empty (phy_if_empty), + .prbs_rdlvl_start (prbs_rdlvl_start), + .prbs_rdlvl_done (prbs_rdlvl_done), + .complex_wr_done (complex_wr_done), + .victim_sel (victim_sel), + .byte_cnt (victim_byte_cnt), + .dbg_prbs_gen (), + .reset_rd_addr (reset_rd_addr | complex_ocal_reset_rd_addr) + ); + + +// PRBS data slice that decides the Rise0, Fall0, Rise1, Fall1, +// Rise2, Fall2, Rise3, Fall3 data + generate + if (nCK_PER_CLK == 4) begin: gen_ck_per_clk4 + assign prbs_o = prbs_out; + /*assign prbs_rise0 = prbs_out[7:0]; + assign prbs_fall0 = prbs_out[15:8]; + assign prbs_rise1 = prbs_out[23:16]; + assign prbs_fall1 = prbs_out[31:24]; + assign prbs_rise2 = prbs_out[39:32]; + assign prbs_fall2 = prbs_out[47:40]; + assign prbs_rise3 = prbs_out[55:48]; + assign prbs_fall3 = prbs_out[63:56]; + assign prbs_o = {prbs_fall3, prbs_rise3, prbs_fall2, prbs_rise2, + prbs_fall1, prbs_rise1, prbs_fall0, prbs_rise0};*/ + end else begin :gen_ck_per_clk2 + assign prbs_o = prbs_out[4*DQ_WIDTH-1:0]; + /*assign prbs_rise0 = prbs_out[7:0]; + assign prbs_fall0 = prbs_out[15:8]; + assign prbs_rise1 = prbs_out[23:16]; + assign prbs_fall1 = prbs_out[31:24]; + assign prbs_o = {prbs_fall1, prbs_rise1, prbs_fall0, prbs_rise0};*/ + end + endgenerate + + + //*************************************************************************** + // Initialization / Master PHY state logic (overall control during memory + // init, timing leveling) + //*************************************************************************** + + mig_7series_v4_0_ddr_phy_init # + ( + .tCK (tCK), + .DDR3_VDD_OP_VOLT (DDR3_VDD_OP_VOLT), + .TCQ (TCQ), + .nCK_PER_CLK (nCK_PER_CLK), + .CLK_PERIOD (CLK_PERIOD), + .DRAM_TYPE (DRAM_TYPE), + .PRBS_WIDTH (PRBS_WIDTH), + .BANK_WIDTH (BANK_WIDTH), + .CA_MIRROR (CA_MIRROR), + .COL_WIDTH (COL_WIDTH), + .nCS_PER_RANK (nCS_PER_RANK), + .DQ_WIDTH (DQ_WIDTH), + .DQS_WIDTH (DQS_WIDTH), + .DQS_CNT_WIDTH (DQS_CNT_WIDTH), + .ROW_WIDTH (ROW_WIDTH), + .CS_WIDTH (CS_WIDTH), + .RANKS (RANKS), + .CKE_WIDTH (CKE_WIDTH), + .CALIB_ROW_ADD (CALIB_ROW_ADD), + .CALIB_COL_ADD (CALIB_COL_ADD), + .CALIB_BA_ADD (CALIB_BA_ADD), + .AL (AL), + .BURST_MODE (BURST_MODE), + .BURST_TYPE (BURST_TYPE), + .nCL (nCL), + .nCWL (nCWL), + .tRFC (tRFC), + .REFRESH_TIMER (REFRESH_TIMER), + .REFRESH_TIMER_WIDTH (REFRESH_TIMER_WIDTH), + .OUTPUT_DRV (OUTPUT_DRV), + .REG_CTRL (REG_CTRL), + .ADDR_CMD_MODE (ADDR_CMD_MODE), + .RTT_NOM (RTT_NOM), + .RTT_WR (RTT_WR), + .WRLVL (WRLVL), + .USE_ODT_PORT (USE_ODT_PORT), + .DDR2_DQSN_ENABLE(DDR2_DQSN_ENABLE), + .nSLOTS (nSLOTS), + .SIM_INIT_OPTION (SIM_INIT_OPTION), + .SIM_CAL_OPTION (SIM_CAL_OPTION), + .CKE_ODT_AUX (CKE_ODT_AUX), + .PRE_REV3ES (PRE_REV3ES), + .TEST_AL (TEST_AL), + .FIXED_VICTIM (FIXED_VICTIM), + .BYPASS_COMPLEX_OCAL(BYPASS_COMPLEX_OCAL), + .SKIP_CALIB (SKIP_CALIB) + ) + u_ddr_phy_init + ( + .clk (clk), + .rst (rst), + .prbs_o (prbs_o), + .ck_addr_cmd_delay_done(ck_addr_cmd_delay_done), + .delay_incdec_done (ck_addr_cmd_delay_done), + .pi_phase_locked_all (pi_phase_locked_all), + .pi_phaselock_start (pi_phaselock_start), + .pi_phase_locked_err (phase_locked_err), + .pi_calib_done (pi_calib_done), + .phy_if_empty (phy_if_empty), + .phy_ctl_ready (phy_ctl_ready), + .phy_ctl_full (phy_ctl_full), + .phy_cmd_full (phy_cmd_full), + .phy_data_full (phy_data_full), + .calib_ctl_wren (calib_ctl_wren), + .calib_cmd_wren (calib_cmd_wren), + .calib_wrdata_en (calib_wrdata_en), + .calib_seq (calib_seq), + .calib_aux_out (calib_aux_out), + .calib_rank_cnt (calib_rank_cnt), + .calib_cas_slot (calib_cas_slot), + .calib_data_offset_0 (calib_data_offset_0), + .calib_data_offset_1 (calib_data_offset_1), + .calib_data_offset_2 (calib_data_offset_2), + .calib_cmd (calib_cmd), + .calib_cke (calib_cke), + .calib_odt (calib_odt), + .write_calib (write_calib), + .read_calib (read_calib), + .wrlvl_done (wrlvl_done), + .wrlvl_rank_done (wrlvl_rank_done), + .wrlvl_byte_done (wrlvl_byte_done), + .wrlvl_byte_redo (wrlvl_byte_redo), + .wrlvl_final (wrlvl_final_mux), + .wrlvl_final_if_rst (wrlvl_final_if_rst), + .oclkdelay_calib_start (oclkdelay_calib_start), + .oclkdelay_calib_done (oclkdelay_calib_done), + .oclk_prech_req (oclk_prech_req), + .oclk_calib_resume (oclk_calib_resume), + .lim_wr_req (lim2init_write_request), + .lim_done (lim_done), + .complex_oclkdelay_calib_start (complex_oclkdelay_calib_start), + .complex_oclkdelay_calib_done (complex_oclkdelay_calib_done_w), + .complex_oclk_calib_resume (complex_oclk_calib_resume), + .complex_oclkdelay_calib_cnt (complex_oclkdelay_calib_cnt), + .complex_sample_cnt_inc_ocal (complex_sample_cnt_inc_ocal), + .complex_ocal_num_samples_inc (complex_ocal_num_samples_inc), + .complex_ocal_num_samples_done_r (complex_ocal_num_samples_done_r), + .complex_ocal_reset_rd_addr (complex_ocal_reset_rd_addr), + .complex_ocal_ref_req (complex_ocal_ref_req), + .complex_ocal_ref_done (complex_ocal_ref_done), + .done_dqs_tap_inc (done_dqs_tap_inc), + .wl_sm_start (wl_sm_start), + .wr_lvl_start (wrlvl_start), + .slot_0_present (slot_0_present), + .slot_1_present (slot_1_present), + .mpr_rdlvl_done (mpr_rdlvl_done), + .mpr_rdlvl_start (mpr_rdlvl_start), + .mpr_last_byte_done (mpr_last_byte_done), + .mpr_rnk_done (mpr_rnk_done), + .mpr_end_if_reset (mpr_end_if_reset), + .rdlvl_stg1_done (rdlvl_stg1_done), + .rdlvl_stg1_rank_done (rdlvl_stg1_rank_done), + .rdlvl_stg1_start (rdlvl_stg1_start), + .rdlvl_prech_req (rdlvl_prech_req), + .rdlvl_last_byte_done (rdlvl_last_byte_done), + .prbs_rdlvl_start (prbs_rdlvl_start), + .complex_wr_done (complex_wr_done), + .prbs_rdlvl_done (prbs_rdlvl_done), + .prbs_last_byte_done (prbs_last_byte_done), + .prbs_rdlvl_prech_req (prbs_rdlvl_prech_req), + .complex_victim_inc (complex_victim_inc), + .rd_victim_sel (rd_victim_sel), + .complex_ocal_rd_victim_sel (complex_ocal_rd_victim_sel), + .pi_stg2_prbs_rdlvl_cnt(pi_stg2_prbs_rdlvl_cnt), + .victim_sel (victim_sel), + .victim_byte_cnt (victim_byte_cnt), + .prbs_gen_clk_en (prbs_gen_clk_en), + .prbs_gen_oclk_clk_en (prbs_gen_oclk_clk_en), + .complex_sample_cnt_inc(complex_sample_cnt_inc), + .pi_dqs_found_start (pi_dqs_found_start), + .dqsfound_retry (dqsfound_retry), + .dqs_found_prech_req (dqs_found_prech_req), + .pi_dqs_found_rank_done(pi_dqs_found_rank_done), + .pi_dqs_found_done (pi_dqs_found_done), + .detect_pi_found_dqs (detect_pi_found_dqs), + .rd_data_offset_0 (rd_data_offset_0), + .rd_data_offset_1 (rd_data_offset_1), + .rd_data_offset_2 (rd_data_offset_2), + .rd_data_offset_ranks_0(rd_data_offset_ranks_0), + .rd_data_offset_ranks_1(rd_data_offset_ranks_1), + .rd_data_offset_ranks_2(rd_data_offset_ranks_2), + .wrcal_start (wrcal_start), + .wrcal_rd_wait (wrcal_rd_wait), + .wrcal_prech_req (wrcal_prech_req), + .wrcal_resume (wrcal_resume_w), + .wrcal_read_req (wrcal_read_req), + .wrcal_act_req (wrcal_act_req), + .wrcal_sanity_chk (wrcal_sanity_chk), + .temp_wrcal_done (temp_wrcal_done), + .wrcal_sanity_chk_done (wrcal_sanity_chk_done), + .tg_timer_done (tg_timer_done), + .no_rst_tg_mc (no_rst_tg_mc), + .wrcal_done (wrcal_done), + .prech_done (prech_done), + .calib_writes (calib_writes), + .init_calib_complete (calib_complete), + .phy_address (phy_address), + .phy_bank (phy_bank), + .phy_cas_n (phy_cas_n), + .phy_cs_n (phy_cs_n), + .phy_ras_n (phy_ras_n), + .phy_reset_n (phy_reset_n), + .phy_we_n (phy_we_n), + .phy_wrdata (phy_wrdata), + .phy_rddata_en (phy_rddata_en), + .phy_rddata_valid (phy_rddata_valid), + .dbg_phy_init (dbg_phy_init), + .reset_rd_addr (reset_rd_addr | complex_ocal_reset_rd_addr), + .oclkdelay_center_calib_start (oclkdelay_center_calib_start), + .oclk_center_write_resume (oclk_center_write_resume), + .oclkdelay_center_calib_done (oclkdelay_center_calib_done), + .rdlvl_pi_incdec (rdlvl_pi_incdec), + .complex_act_start (complex_act_start), + .complex_pi_incdec_done (complex_pi_incdec_done), + .complex_init_pi_dec_done (complex_init_pi_dec_done), + .num_samples_done_r (num_samples_done_r), + .calib_tap_inc_start (calib_tap_inc_start), + .calib_tap_end_if_reset (calib_tap_end_if_reset), + .calib_tap_inc_done (calib_tap_inc_done) + ); + + + //***************************************************************** + // Write Calibration + //***************************************************************** + + mig_7series_v4_0_ddr_phy_wrcal # + ( + .TCQ (TCQ), + .nCK_PER_CLK (nCK_PER_CLK), + .CLK_PERIOD (CLK_PERIOD), + .DQ_WIDTH (DQ_WIDTH), + .DQS_CNT_WIDTH (DQS_CNT_WIDTH), + .DQS_WIDTH (DQS_WIDTH), + .DRAM_WIDTH (DRAM_WIDTH), + .SIM_CAL_OPTION (SIM_CAL_OPTION) + ) + u_ddr_phy_wrcal + ( + .clk (clk), + .rst (rst), + .wrcal_start (wrcal_start), + .wrcal_rd_wait (wrcal_rd_wait), + .wrcal_sanity_chk (wrcal_sanity_chk), + .dqsfound_retry_done (pi_dqs_found_done), + .dqsfound_retry (dqsfound_retry), + .wrcal_read_req (wrcal_read_req), + .wrcal_act_req (wrcal_act_req), + .phy_rddata_en (phy_rddata_en), + .wrcal_done (wrcal_done), + .wrcal_pat_err (wrcal_pat_err), + .wrcal_prech_req (wrcal_prech_req), + .temp_wrcal_done (temp_wrcal_done), + .wrcal_sanity_chk_done (wrcal_sanity_chk_done), + .prech_done (prech_done), + .rd_data (phy_rddata), + .wrcal_pat_resume (wrcal_pat_resume), + .po_stg2_wrcal_cnt (po_stg2_wrcal_cnt), + .phy_if_reset (phy_if_reset_w), + .wl_po_coarse_cnt (wl_po_coarse_cnt), + .wl_po_fine_cnt (wl_po_fine_cnt), + .wrlvl_byte_redo (wrlvl_byte_redo), + .wrlvl_byte_done (wrlvl_byte_done), + .early1_data (early1_data), + .early2_data (early2_data), + .idelay_ld (idelay_ld), + .dbg_phy_wrcal (dbg_phy_wrcal), + .dbg_final_po_fine_tap_cnt (dbg_final_po_fine_tap_cnt), + .dbg_final_po_coarse_tap_cnt (dbg_final_po_coarse_tap_cnt) + ); + + + + //*************************************************************************** + // Write-leveling calibration logic + //*************************************************************************** + + generate + if ((WRLVL == "ON") && (SKIP_CALIB == "FALSE")) begin: mb_wrlvl_inst + + mig_7series_v4_0_ddr_phy_wrlvl # + ( + .TCQ (TCQ), + .DQS_CNT_WIDTH (DQS_CNT_WIDTH), + .DQ_WIDTH (DQ_WIDTH), + .DQS_WIDTH (DQS_WIDTH), + .DRAM_WIDTH (DRAM_WIDTH), + .RANKS (1), + .CLK_PERIOD (CLK_PERIOD), + .nCK_PER_CLK (nCK_PER_CLK), + .SIM_CAL_OPTION (SIM_CAL_OPTION) + ) + u_ddr_phy_wrlvl + ( + .clk (clk), + .rst (rst), + .phy_ctl_ready (phy_ctl_ready), + .wr_level_start (wrlvl_start), + .wl_sm_start (wl_sm_start), + .wrlvl_byte_redo (wrlvl_byte_redo), + .wrcal_cnt (po_stg2_wrcal_cnt), + .early1_data (early1_data), + .early2_data (early2_data), + .wrlvl_final (wrlvl_final_mux), + .oclkdelay_calib_cnt (oclkdelay_calib_cnt), + .wrlvl_byte_done (wrlvl_byte_done), + .oclkdelay_calib_done (oclkdelay_calib_done), + .rd_data_rise0 (phy_rddata[DQ_WIDTH-1:0]), + .dqs_po_dec_done (dqs_po_dec_done), + .phy_ctl_rdy_dly (phy_ctl_rdy_dly), + .wr_level_done (wrlvl_done), + .wrlvl_rank_done (wrlvl_rank_done), + .done_dqs_tap_inc (done_dqs_tap_inc), + .dqs_po_stg2_f_incdec (dqs_po_stg2_f_incdec), + .dqs_po_en_stg2_f (dqs_po_en_stg2_f), + .dqs_wl_po_stg2_c_incdec (dqs_wl_po_stg2_c_incdec), + .dqs_wl_po_en_stg2_c (dqs_wl_po_en_stg2_c), + .po_counter_read_val (po_counter_read_val), + .po_stg2_wl_cnt (po_stg2_wl_cnt), + .wrlvl_err (wrlvl_err), + .wl_po_coarse_cnt (wl_po_coarse_cnt), + .wl_po_fine_cnt (wl_po_fine_cnt), + .dbg_wl_tap_cnt (dbg_tap_cnt_during_wrlvl), + .dbg_wl_edge_detect_valid (dbg_wl_edge_detect_valid), + .dbg_rd_data_edge_detect (dbg_rd_data_edge_detect), + .dbg_dqs_count (), + .dbg_wl_state (), + .dbg_wrlvl_fine_tap_cnt (dbg_wrlvl_fine_tap_cnt), + .dbg_wrlvl_coarse_tap_cnt (dbg_wrlvl_coarse_tap_cnt), + .dbg_phy_wrlvl (dbg_phy_wrlvl) + ); + + + mig_7series_v4_0_ddr_phy_ck_addr_cmd_delay # + ( + .TCQ (TCQ), + .tCK (tCK), + .DQS_CNT_WIDTH (DQS_CNT_WIDTH), + .N_CTL_LANES (N_CTL_LANES), + .SIM_CAL_OPTION(SIM_CAL_OPTION) + ) + u_ddr_phy_ck_addr_cmd_delay + ( + .clk (clk), + .rst (rst), + .cmd_delay_start (dqs_po_dec_done & pi_fine_dly_dec_done), + .ctl_lane_cnt (ctl_lane_cnt), + .po_stg2_f_incdec (cmd_po_stg2_f_incdec), + .po_en_stg2_f (cmd_po_en_stg2_f), + .po_stg2_c_incdec (cmd_po_stg2_c_incdec), + .po_en_stg2_c (cmd_po_en_stg2_c), + .po_ck_addr_cmd_delay_done (po_ck_addr_cmd_delay_done) + ); + + assign cmd_po_stg2_incdec_ddr2_c = 1'b0; + assign cmd_po_en_stg2_ddr2_c = 1'b0; + + end else if ((WRLVL == "ON") && (SKIP_CALIB == "TRUE")) begin: wrlvl_on_skip_calib + + mig_7series_v4_0_ddr_phy_ck_addr_cmd_delay # + ( + .TCQ (TCQ), + .tCK (tCK), + .DQS_CNT_WIDTH (DQS_CNT_WIDTH), + .N_CTL_LANES (N_CTL_LANES), + .SIM_CAL_OPTION(SIM_CAL_OPTION) + ) + u_ddr_phy_ck_addr_cmd_delay + ( + .clk (clk), + .rst (rst), + .cmd_delay_start (skip_cal_po_pi_dec_done), + .ctl_lane_cnt (ctl_lane_cnt), + .po_stg2_f_incdec (cmd_po_stg2_f_incdec), + .po_en_stg2_f (cmd_po_en_stg2_f), + .po_stg2_c_incdec (cmd_po_stg2_c_incdec), + .po_en_stg2_c (cmd_po_en_stg2_c), + .po_ck_addr_cmd_delay_done (po_ck_addr_cmd_delay_done) + ); + + assign dqs_po_dec_done = 1'b1; + assign wrlvl_byte_done = 1'b1; + assign wrlvl_rank_done = 1'b1; + assign phy_ctl_rdy_dly = 1'b1; + assign done_dqs_tap_inc = 1'b1; + assign po_stg2_wl_cnt = 'h0; + assign wl_po_coarse_cnt = 'h0; + assign wl_po_fine_cnt = 'h0; + assign dbg_tap_cnt_during_wrlvl = 'h0; + assign dbg_wl_edge_detect_valid = 'h0; + assign dbg_rd_data_edge_detect = 'h0; + assign dbg_wrlvl_fine_tap_cnt = 'h0; + assign dbg_wrlvl_coarse_tap_cnt = 'h0; + assign dbg_phy_wrlvl = 'h0; + + assign wrlvl_done = 1'b1; + assign wrlvl_err = 1'b0; + assign dqs_po_stg2_f_incdec = 1'b0; + assign dqs_po_en_stg2_f = 1'b0; + assign dqs_wl_po_en_stg2_c = 1'b0; + assign dqs_wl_po_stg2_c_incdec = 1'b0; + + assign cmd_po_stg2_incdec_ddr2_c = 1'b0; + assign cmd_po_en_stg2_ddr2_c = 1'b0; + + end else begin: mb_wrlvl_off + + mig_7series_v4_0_ddr_phy_wrlvl_off_delay # + ( + .TCQ (TCQ), + .tCK (tCK), + .nCK_PER_CLK (nCK_PER_CLK), + .CLK_PERIOD (CLK_PERIOD), + .PO_INITIAL_DLY(60), + .DQS_CNT_WIDTH (DQS_CNT_WIDTH), + .DQS_WIDTH (DQS_WIDTH), + .N_CTL_LANES (N_CTL_LANES) + ) + u_phy_wrlvl_off_delay + ( + .clk (clk), + .rst (rst), + .pi_fine_dly_dec_done (pi_fine_dly_dec_done), + .cmd_delay_start (phy_ctl_ready), + .ctl_lane_cnt (ctl_lane_cnt), + .po_s2_incdec_f (cmd_po_stg2_f_incdec), + .po_en_s2_f (cmd_po_en_stg2_f), + .po_s2_incdec_c (cmd_po_stg2_incdec_ddr2_c), + .po_en_s2_c (cmd_po_en_stg2_ddr2_c), + .po_ck_addr_cmd_delay_done (po_ck_addr_cmd_delay_done), + .po_dec_done (dqs_po_dec_done), + .phy_ctl_rdy_dly (phy_ctl_rdy_dly) + ); + + assign wrlvl_byte_done = 1'b1; + assign wrlvl_rank_done = 1'b1; + assign po_stg2_wl_cnt = 'h0; + assign wl_po_coarse_cnt = 'h0; + assign wl_po_fine_cnt = 'h0; + assign dbg_tap_cnt_during_wrlvl = 'h0; + assign dbg_wl_edge_detect_valid = 'h0; + assign dbg_rd_data_edge_detect = 'h0; + assign dbg_wrlvl_fine_tap_cnt = 'h0; + assign dbg_wrlvl_coarse_tap_cnt = 'h0; + assign dbg_phy_wrlvl = 'h0; + + assign wrlvl_done = 1'b1; + assign wrlvl_err = 1'b0; + assign dqs_po_stg2_f_incdec = 1'b0; + assign dqs_po_en_stg2_f = 1'b0; + assign dqs_wl_po_en_stg2_c = 1'b0; + assign cmd_po_stg2_c_incdec = 1'b0; + assign dqs_wl_po_stg2_c_incdec = 1'b0; + assign cmd_po_en_stg2_c = 1'b0; + + end + endgenerate + + generate + if((WRLVL == "ON") && (OCAL_EN == "ON")) begin: oclk_calib + + localparam SAMPCNTRWIDTH = 17; + localparam SAMPLES = (SIM_CAL_OPTION=="NONE") ? 512 : 4; //MG from 2048 + localparam TAPCNTRWIDTH = clogb2(TAPSPERKCLK); + localparam MMCM_SAMP_WAIT = (SIM_CAL_OPTION=="NONE") ? 256 : 10; + localparam OCAL_SIMPLE_SCAN_SAMPS = (SIM_CAL_OPTION=="NONE") ? 512 : 1; //MG from 2048 + localparam POC_PCT_SAMPS_SOLID = 80; + localparam SCAN_PCT_SAMPS_SOLID = 95; + + mig_7series_v4_0_ddr_phy_oclkdelay_cal # + (/*AUTOINSTPARAM*/ + // Parameters + .DQS_CNT_WIDTH (DQS_CNT_WIDTH), + .DQS_WIDTH (DQS_WIDTH), + .DQ_WIDTH (DQ_WIDTH), + //.DRAM_TYPE (DRAM_TYPE), + .DRAM_WIDTH (DRAM_WIDTH), + //.OCAL_EN (OCAL_EN), + .OCAL_SIMPLE_SCAN_SAMPS (OCAL_SIMPLE_SCAN_SAMPS), + .PCT_SAMPS_SOLID (POC_PCT_SAMPS_SOLID), + .POC_USE_METASTABLE_SAMP (POC_USE_METASTABLE_SAMP), + .SCAN_PCT_SAMPS_SOLID (SCAN_PCT_SAMPS_SOLID), + .SAMPCNTRWIDTH (SAMPCNTRWIDTH), + .SAMPLES (SAMPLES), + .MMCM_SAMP_WAIT (MMCM_SAMP_WAIT), + .SIM_CAL_OPTION (SIM_CAL_OPTION), + .TAPCNTRWIDTH (TAPCNTRWIDTH), + .TAPSPERKCLK (TAPSPERKCLK), + .TCQ (TCQ), + .nCK_PER_CLK (nCK_PER_CLK), + .BYPASS_COMPLEX_OCAL (BYPASS_COMPLEX_OCAL) + //.tCK (tCK) + ) + u_ddr_phy_oclkdelay_cal + (/*AUTOINST*/ + // Outputs + .prbs_ignore_first_byte (prbs_ignore_first_byte), + .prbs_ignore_last_bytes (prbs_ignore_last_bytes), + .complex_oclkdelay_calib_done (complex_oclkdelay_calib_done), + .dbg_oclkdelay_rd_data (dbg_oclkdelay_rd_data[16*DRAM_WIDTH-1:0]), + .dbg_phy_oclkdelay_cal (dbg_phy_oclkdelay_cal[255:0]), + .lim2init_write_request (lim2init_write_request), + .lim_done (lim_done), + .oclk_calib_resume (oclk_calib_resume), + .oclk_prech_req (oclk_prech_req), + .oclkdelay_calib_cnt (oclkdelay_calib_cnt[DQS_CNT_WIDTH:0]), + .oclkdelay_calib_done (oclkdelay_calib_done), + .po_en_stg23 (po_en_stg23), + .po_stg23_incdec (po_stg23_incdec), + .po_stg23_sel (po_stg23_sel), + .psen (psen), + .psincdec (psincdec), + .wrlvl_final (wrlvl_final), + .rd_victim_sel (complex_ocal_rd_victim_sel), + .ocal_num_samples_done_r (complex_ocal_num_samples_done_r), + .complex_wrlvl_final (complex_wrlvl_final), + .poc_error (poc_error), + // Inputs + .clk (clk), + .complex_oclkdelay_calib_start (complex_oclkdelay_calib_start_w), + .metaQ (pd_out), + //.oclk_init_delay_start (oclk_init_delay_start), + .po_counter_read_val (po_counter_read_val), + .oclkdelay_calib_start (oclkdelay_calib_start), + .oclkdelay_init_val (oclkdelay_init_val[5:0]), + .poc_sample_pd (poc_sample_pd), + .phy_rddata (phy_rddata[2*nCK_PER_CLK*DQ_WIDTH-1:0]), + .phy_rddata_en (phy_rddata_en), + .prbs_o (prbs_o[2*nCK_PER_CLK*DQ_WIDTH-1:0]), + .prech_done (prech_done), + .psdone (psdone), + .rst (rst), + .wl_po_fine_cnt (wl_po_fine_cnt[6*DQS_WIDTH-1:0]), + .ocal_num_samples_inc (complex_ocal_num_samples_inc), + .oclkdelay_center_calib_start (oclkdelay_center_calib_start), + .oclk_center_write_resume (oclk_center_write_resume), + .oclkdelay_center_calib_done (oclkdelay_center_calib_done), + .dbg_ocd_lim (dbg_ocd_lim), + .dbg_poc (dbg_poc[1023:0]) ); + + end else begin : oclk_calib_disabled + + assign wrlvl_final = 'b0; + assign psen = 'b0; + assign psincdec = 'b0; + assign po_stg23_sel = 'b0; + assign po_stg23_incdec = 'b0; + assign po_en_stg23 = 'b0; + assign oclkdelay_calib_cnt = 'b0; + assign oclk_prech_req = 'b0; + assign oclk_calib_resume = 'b0; + assign oclkdelay_calib_done = 1'b1; + assign dbg_phy_oclkdelay_cal = 'h0; + assign dbg_oclkdelay_rd_data = 'h0; + + end + endgenerate + //*************************************************************************** + // Read data-offset calibration required for Phaser_In + //*************************************************************************** + + generate + if(DQSFOUND_CAL == "RIGHT") begin: dqsfind_calib_right + mig_7series_v4_0_ddr_phy_dqs_found_cal # + ( + .TCQ (TCQ), + .nCK_PER_CLK (nCK_PER_CLK), + .nCL (nCL), + .AL (AL), + .nCWL (nCWL), + //.RANKS (RANKS), + .RANKS (1), + .DQS_CNT_WIDTH (DQS_CNT_WIDTH), + .DQS_WIDTH (DQS_WIDTH), + .DRAM_WIDTH (DRAM_WIDTH), + .REG_CTRL (REG_CTRL), + .SIM_CAL_OPTION (SIM_CAL_OPTION), + .DRAM_TYPE (DRAM_TYPE), + .NUM_DQSFOUND_CAL (NUM_DQSFOUND_CAL), + .N_CTL_LANES (DQS_FOUND_N_CTL_LANES), + .HIGHEST_LANE (HIGHEST_LANE), + .HIGHEST_BANK (HIGHEST_BANK), + .BYTE_LANES_B0 (BYTE_LANES_B0), + .BYTE_LANES_B1 (BYTE_LANES_B1), + .BYTE_LANES_B2 (BYTE_LANES_B2), + .BYTE_LANES_B3 (BYTE_LANES_B3), + .BYTE_LANES_B4 (BYTE_LANES_B4), + .DATA_CTL_B0 (DATA_CTL_B0), + .DATA_CTL_B1 (DATA_CTL_B1), + .DATA_CTL_B2 (DATA_CTL_B2), + .DATA_CTL_B3 (DATA_CTL_B3), + .DATA_CTL_B4 (DATA_CTL_B4) + ) + u_ddr_phy_dqs_found_cal + ( + .clk (clk), + .rst (rst), + .pi_dqs_found_start (pi_dqs_found_start), + .dqsfound_retry (dqsfound_retry), + .detect_pi_found_dqs (detect_pi_found_dqs), + .prech_done (prech_done), + .pi_dqs_found_lanes (pi_dqs_found_lanes), + .pi_rst_stg1_cal (pi_rst_stg1_cal), + .rd_data_offset_0 (rd_data_offset_0), + .rd_data_offset_1 (rd_data_offset_1), + .rd_data_offset_2 (rd_data_offset_2), + .pi_dqs_found_rank_done (pi_dqs_found_rank_done), + .pi_dqs_found_done (pi_dqs_found_done), + .dqsfound_retry_done (dqsfound_retry_done), + .dqs_found_prech_req (dqs_found_prech_req), + .pi_dqs_found_err (pi_dqs_found_err), + .rd_data_offset_ranks_0 (rd_data_offset_ranks_0), + .rd_data_offset_ranks_1 (rd_data_offset_ranks_1), + .rd_data_offset_ranks_2 (rd_data_offset_ranks_2), + .rd_data_offset_ranks_mc_0 (rd_data_offset_ranks_mc_0), + .rd_data_offset_ranks_mc_1 (rd_data_offset_ranks_mc_1), + .rd_data_offset_ranks_mc_2 (rd_data_offset_ranks_mc_2), + .po_counter_read_val (po_counter_read_val), + .rd_data_offset_cal_done (rd_data_offset_cal_done), + .fine_adjust_done (fine_adjust_done), + .fine_adjust_lane_cnt (fine_adjust_lane_cnt), + .ck_po_stg2_f_indec (ck_po_stg2_f_indec), + .ck_po_stg2_f_en (ck_po_stg2_f_en), + .dbg_dqs_found_cal (dbg_dqs_found_cal) + ); + end else begin: dqsfind_calib_left + mig_7series_v4_0_ddr_phy_dqs_found_cal_hr # + ( + .TCQ (TCQ), + .nCK_PER_CLK (nCK_PER_CLK), + .nCL (nCL), + .AL (AL), + .nCWL (nCWL), + //.RANKS (RANKS), + .RANKS (1), + .DQS_CNT_WIDTH (DQS_CNT_WIDTH), + .DQS_WIDTH (DQS_WIDTH), + .DRAM_WIDTH (DRAM_WIDTH), + .REG_CTRL (REG_CTRL), + .SIM_CAL_OPTION (SIM_CAL_OPTION), + .DRAM_TYPE (DRAM_TYPE), + .NUM_DQSFOUND_CAL (NUM_DQSFOUND_CAL), + .N_CTL_LANES (DQS_FOUND_N_CTL_LANES), + .HIGHEST_LANE (HIGHEST_LANE), + .HIGHEST_BANK (HIGHEST_BANK), + .BYTE_LANES_B0 (BYTE_LANES_B0), + .BYTE_LANES_B1 (BYTE_LANES_B1), + .BYTE_LANES_B2 (BYTE_LANES_B2), + .BYTE_LANES_B3 (BYTE_LANES_B3), + .BYTE_LANES_B4 (BYTE_LANES_B4), + .DATA_CTL_B0 (DATA_CTL_B0), + .DATA_CTL_B1 (DATA_CTL_B1), + .DATA_CTL_B2 (DATA_CTL_B2), + .DATA_CTL_B3 (DATA_CTL_B3), + .DATA_CTL_B4 (DATA_CTL_B4) + ) + u_ddr_phy_dqs_found_cal_hr + ( + .clk (clk), + .rst (rst), + .pi_dqs_found_start (pi_dqs_found_start), + .dqsfound_retry (dqsfound_retry), + .detect_pi_found_dqs (detect_pi_found_dqs), + .prech_done (prech_done), + .pi_dqs_found_lanes (pi_dqs_found_lanes), + .pi_rst_stg1_cal (pi_rst_stg1_cal), + .rd_data_offset_0 (rd_data_offset_0), + .rd_data_offset_1 (rd_data_offset_1), + .rd_data_offset_2 (rd_data_offset_2), + .pi_dqs_found_rank_done (pi_dqs_found_rank_done), + .pi_dqs_found_done (pi_dqs_found_done), + .dqsfound_retry_done (dqsfound_retry_done), + .dqs_found_prech_req (dqs_found_prech_req), + .pi_dqs_found_err (pi_dqs_found_err), + .rd_data_offset_ranks_0 (rd_data_offset_ranks_0), + .rd_data_offset_ranks_1 (rd_data_offset_ranks_1), + .rd_data_offset_ranks_2 (rd_data_offset_ranks_2), + .rd_data_offset_ranks_mc_0 (rd_data_offset_ranks_mc_0), + .rd_data_offset_ranks_mc_1 (rd_data_offset_ranks_mc_1), + .rd_data_offset_ranks_mc_2 (rd_data_offset_ranks_mc_2), + .po_counter_read_val (po_counter_read_val), + .rd_data_offset_cal_done (rd_data_offset_cal_done), + .fine_adjust_done (fine_adjust_done), + .fine_adjust_lane_cnt (fine_adjust_lane_cnt), + .ck_po_stg2_f_indec (ck_po_stg2_f_indec), + .ck_po_stg2_f_en (ck_po_stg2_f_en), + .dbg_dqs_found_cal (dbg_dqs_found_cal) + ); + end + endgenerate + + //*************************************************************************** + // Read-leveling calibration logic + //*************************************************************************** +generate +if (SKIP_CALIB == "FALSE") begin:ddr_phy_rdlvl_gen + mig_7series_v4_0_ddr_phy_rdlvl # + ( + .TCQ (TCQ), + .nCK_PER_CLK (nCK_PER_CLK), + .CLK_PERIOD (CLK_PERIOD), + .DQ_WIDTH (DQ_WIDTH), + .DQS_CNT_WIDTH (DQS_CNT_WIDTH), + .DQS_WIDTH (DQS_WIDTH), + .DRAM_WIDTH (DRAM_WIDTH), + .RANKS (1), + .PER_BIT_DESKEW (PER_BIT_DESKEW), + .SIM_CAL_OPTION (SIM_CAL_OPTION), + .DEBUG_PORT (DEBUG_PORT), + .DRAM_TYPE (DRAM_TYPE), + .OCAL_EN (OCAL_EN), + .IDELAY_ADJ (IDELAY_ADJ), + .PI_DIV2_INCDEC (PI_DIV2_INCDEC) + ) + u_ddr_phy_rdlvl + ( + .clk (clk), + .rst (rst), + .mpr_rdlvl_done (mpr_rdlvl_done), + .mpr_rdlvl_start (mpr_rdlvl_start), + .mpr_last_byte_done (mpr_last_byte_done), + .mpr_rnk_done (mpr_rnk_done), + .rdlvl_stg1_start (rdlvl_stg1_start), + .rdlvl_stg1_done (rdlvl_stg1_done), + .rdlvl_stg1_rnk_done (rdlvl_stg1_rank_done), + .rdlvl_stg1_err (rdlvl_stg1_err), + .mpr_rdlvl_err (mpr_rdlvl_err), + .rdlvl_err (rdlvl_err), + .rdlvl_prech_req (rdlvl_prech_req), + .rdlvl_last_byte_done (rdlvl_last_byte_done), + .rdlvl_assrt_common (rdlvl_assrt_common), + .prech_done (prech_done), + .phy_if_empty (phy_if_empty), + .idelaye2_init_val (idelaye2_init_val), + .rd_data (phy_rddata), + .pi_en_stg2_f (rdlvl_pi_stg2_f_en), + .pi_stg2_f_incdec (rdlvl_pi_stg2_f_incdec), + .pi_stg2_load (pi_stg2_load), + .pi_stg2_reg_l (pi_stg2_reg_l), + .dqs_po_dec_done (dqs_po_dec_done), + .pi_counter_read_val (pi_counter_read_val), + .pi_fine_dly_dec_done (pi_fine_dly_dec_done), + .idelay_ce (idelay_ce_int), + .idelay_inc (idelay_inc_int), + .idelay_ld (idelay_ld), + .wrcal_cnt (po_stg2_wrcal_cnt), + .pi_stg2_rdlvl_cnt (pi_stg2_rdlvl_cnt), + .dlyval_dq (dlyval_dq), + .rdlvl_pi_incdec (rdlvl_pi_incdec), + .dbg_cpt_first_edge_cnt (dbg_cpt_first_edge_cnt), + .dbg_cpt_second_edge_cnt (dbg_cpt_second_edge_cnt), + .dbg_cpt_tap_cnt (dbg_cpt_tap_cnt), + .dbg_dq_idelay_tap_cnt (dbg_dq_idelay_tap_cnt), + .dbg_idel_up_all (dbg_idel_up_all), + .dbg_idel_down_all (dbg_idel_down_all), + .dbg_idel_up_cpt (dbg_idel_up_cpt), + .dbg_idel_down_cpt (dbg_idel_down_cpt), + .dbg_sel_idel_cpt (dbg_sel_idel_cpt), + .dbg_sel_all_idel_cpt (dbg_sel_all_idel_cpt), + .dbg_phy_rdlvl (dbg_phy_rdlvl) + ); +end else begin:ddr_phy_rdlvl_off + + assign mpr_rdlvl_done = 1'b1; + assign mpr_last_byte_done = 1'b1; + assign mpr_rnk_done = 1'b1; + assign rdlvl_stg1_done = 1'b1; + assign rdlvl_stg1_rank_done = 1'b1; + assign rdlvl_last_byte_done = 1'b1; + assign pi_fine_dly_dec_done = 1'b1; + assign rdlvl_prech_req = 1'b0; + assign rdlvl_stg1_err = 1'b0; + assign mpr_rdlvl_err = 1'b0; + assign rdlvl_err = 1'b0; + assign rdlvl_assrt_common = 1'b0; + assign rdlvl_pi_stg2_f_en = 1'b0; + assign rdlvl_pi_stg2_f_incdec = 1'b0; + assign pi_stg2_rdlvl_cnt = 'h0; + assign idelay_ce_int = 1'b0; + assign idelay_inc_int = 1'b0; + assign rdlvl_pi_incdec = 1'b0; + assign dbg_phy_rdlvl = 'h0; + assign dbg_cpt_first_edge_cnt = 'h0; + assign dbg_cpt_second_edge_cnt = 'h0; + assign dbg_cpt_tap_cnt = 'h0; + assign dbg_dq_idelay_tap_cnt = 'h0; + +end +endgenerate + +generate +if((DRAM_TYPE == "DDR3") && (nCK_PER_CLK == 4) && (BYPASS_COMPLEX_RDLVL=="FALSE")) begin:ddr_phy_prbs_rdlvl_gen + mig_7series_v4_0_ddr_phy_prbs_rdlvl # + ( + .TCQ (TCQ), + .nCK_PER_CLK (nCK_PER_CLK), + .DQ_WIDTH (DQ_WIDTH), + .DQS_CNT_WIDTH (DQS_CNT_WIDTH), + .DQS_WIDTH (DQS_WIDTH), + .DRAM_WIDTH (DRAM_WIDTH), + .RANKS (1), + .SIM_CAL_OPTION (SIM_CAL_OPTION), + .PRBS_WIDTH (PRBS_WIDTH), + .FIXED_VICTIM (FIXED_VICTIM), + .FINE_PER_BIT (FINE_PER_BIT), + .CENTER_COMP_MODE (CENTER_COMP_MODE), + .PI_VAL_ADJ (PI_VAL_ADJ) + ) + u_ddr_phy_prbs_rdlvl + ( + .clk (clk), + .rst (rst), + .prbs_rdlvl_start (prbs_rdlvl_start), + .prbs_rdlvl_done (prbs_rdlvl_done_complex), + .prbs_last_byte_done (prbs_last_byte_done), + .prbs_rdlvl_prech_req (prbs_rdlvl_prech_req), + .complex_sample_cnt_inc (complex_sample_cnt_inc), + .prech_done (prech_done), + .phy_if_empty (phy_if_empty), + .rd_data (phy_rddata), + .compare_data (prbs_o), + .pi_counter_read_val (pi_counter_read_val), + .pi_en_stg2_f (prbs_pi_stg2_f_en), + .pi_stg2_f_incdec (prbs_pi_stg2_f_incdec), + .dbg_prbs_rdlvl (dbg_prbs_rdlvl), + .pi_stg2_prbs_rdlvl_cnt (pi_stg2_prbs_rdlvl_cnt), + .prbs_final_dqs_tap_cnt_r (prbs_final_dqs_tap_cnt_r), + .dbg_prbs_first_edge_taps (dbg_prbs_first_edge_taps), + .dbg_prbs_second_edge_taps (dbg_prbs_second_edge_taps), + .rd_victim_sel (rd_victim_sel), + .complex_victim_inc (complex_victim_inc), + .reset_rd_addr (reset_rd_addr), + .fine_delay_incdec_pb (fine_delay_incdec_pb), + .fine_delay_sel (fine_delay_sel), + .complex_act_start (complex_act_start), + .num_samples_done_r (num_samples_done_r), + .complex_pi_incdec_done (complex_pi_incdec_done), + .complex_init_pi_dec_done (complex_init_pi_dec_done) + ); +end else begin:ddr_phy_prbs_rdlvl_off + + assign prbs_rdlvl_done_complex = rdlvl_stg1_done ; + //assign prbs_last_byte_done = rdlvl_stg1_rank_done ; + assign prbs_last_byte_done = rdlvl_stg1_done; + assign reset_rd_addr = 1'b0; + assign prbs_rdlvl_prech_req = 1'b0 ; + assign prbs_pi_stg2_f_en = 1'b0 ; + assign prbs_pi_stg2_f_incdec = 1'b0 ; + assign pi_stg2_prbs_rdlvl_cnt = 'b0 ; + assign dbg_prbs_rdlvl = 'h0 ; + assign prbs_final_dqs_tap_cnt_r = {(6*DQS_WIDTH*RANKS){1'b0}}; + assign dbg_prbs_first_edge_taps = {(6*DQS_WIDTH*RANKS){1'b0}}; + assign dbg_prbs_second_edge_taps = {(6*DQS_WIDTH*RANKS){1'b0}}; + assign complex_pi_incdec_done = 'b0; + assign complex_init_pi_dec_done = 'b1; + assign num_samples_done_r = 'b0; +end +endgenerate + + //*************************************************************************** + // Inc/Dec Phaser_Out, Phaser_In, and IDELAY taps to match calibration values + //*************************************************************************** + + generate + if (SKIP_CALIB == "TRUE") begin: gen_skip_calib_tap + + // Generate request to get calibration tap values per byte + always @(posedge clk) begin + if (rst) + calib_tap_req <= #TCQ 1'b0; + else if (phy_ctl_ready) + calib_tap_req <= #TCQ 1'b1; + end + + + // Store calibration values to registers + always @(posedge clk) begin + if (rst) begin + calib_po_coarse_tap_cnt <= #TCQ 'd0; + calib_po_stage3_tap_cnt <= #TCQ 'd0; + calib_po_stage2_tap_cnt <= #TCQ 'd0; + calib_pi_stage2_tap_cnt <= #TCQ 'd0; + calib_idelay_tap_cnt <= #TCQ 'd0; + calib_device_temp <= #TCQ 'd0; + end else if (calib_tap_load) begin + case (calib_tap_addr[2:0]) + 3'b000: + calib_po_coarse_tap_cnt[3*calib_tap_addr[6:3]+:3] <= #TCQ calib_tap_val[2:0]; + 3'b001: + calib_po_stage3_tap_cnt[6*calib_tap_addr[6:3]+:6] <= #TCQ calib_tap_val[5:0]; + 3'b010: + calib_po_stage2_tap_cnt[6*calib_tap_addr[6:3]+:6] <= #TCQ calib_tap_val[5:0]; + 3'b011: + calib_pi_stage2_tap_cnt[6*calib_tap_addr[6:3]+:6] <= #TCQ calib_tap_val[5:0]; + 3'b100: + calib_idelay_tap_cnt[5*calib_tap_addr[6:3]+:5] <= #TCQ calib_tap_val[4:0]; + 3'b110: + if (&calib_tap_addr[6:3]) + calib_device_temp[7:0] <= #TCQ calib_tap_val[7:0]; + 3'b111: + if (&calib_tap_addr[6:3]) + calib_device_temp[11:8] <= #TCQ calib_tap_val[3:0]; + default: + calib_po_coarse_tap_cnt[3*calib_tap_addr[6:3]+:3] <= #TCQ calib_tap_val[2:0]; + endcase + end + end + + + mig_7series_v4_0_ddr_skip_calib_tap # + ( + .TCQ (TCQ), + .DQS_WIDTH (DQS_WIDTH) + ) + u_ddr_skip_calib_tap + ( + .rst (rst), + .clk (clk), + .phy_ctl_ready (phy_ctl_ready), + .load_done (calib_tap_load_done), + .calib_tap_inc_start (calib_tap_inc_start), + .calib_tap_inc_done (calib_tap_inc_done), + .calib_tap_inc_byte_cnt (calib_tap_inc_byte_cnt), + .calib_po_stage2_tap_cnt (calib_po_stage2_tap_cnt), + .calib_po_stage3_tap_cnt (calib_po_stage3_tap_cnt), + .calib_po_coarse_tap_cnt (calib_po_coarse_tap_cnt), + .calib_pi_stage2_tap_cnt (calib_pi_stage2_tap_cnt), + .calib_idelay_tap_cnt (calib_idelay_tap_cnt), + .po_counter_read_val (po_counter_read_val), + .pi_counter_read_val (pi_counter_read_val), + .calib_po_f_en (calib_po_f_en), + .calib_po_f_incdec (calib_po_f_incdec), + .calib_po_sel_stg2stg3 (calib_po_sel_stg2stg3), + .calib_po_c_en (calib_po_c_en), + .calib_po_c_inc (calib_po_c_inc), + .calib_pi_f_en (calib_pi_f_en), + .calib_pi_f_incdec (calib_pi_f_incdec), + .calib_idelay_ce (calib_idelay_ce), + .calib_idelay_inc (calib_idelay_inc), + .skip_cal_po_pi_dec_done (skip_cal_po_pi_dec_done), + .coarse_dec_err (coarse_dec_err), + .dbg_skip_cal (dbg_skip_cal) + ); + + // Generate tempmon_sample_en pulses for temperature adjustment + reg [8:0] samp_en_cnt; + + always @ (posedge clk) begin + if (rst || tempmon_done_skip || (samp_en_cnt == 'd0)) + samp_en_cnt <= #TCQ 'd267; + else if (calib_complete && (samp_en_cnt > 'd0)) + samp_en_cnt <= #TCQ samp_en_cnt - 1; + end + + always @ (posedge clk) begin + if (rst || tempmon_done_skip) + skip_cal_tempmon_samp_en <= #TCQ 1'b0; + else if (samp_en_cnt == 'd260) + skip_cal_tempmon_samp_en <= #TCQ 1'b1; + else + skip_cal_tempmon_samp_en <= #TCQ 1'b0; + end + + + + end else begin: skip_calib_tap_off + assign calib_po_f_en = 1'b0; + assign calib_po_f_incdec = 1'b0; + assign calib_po_sel_stg2stg3 = 1'b0; + assign calib_po_c_en = 1'b0; + assign calib_po_c_inc = 1'b0; + assign calib_pi_f_en = 1'b0; + assign calib_pi_f_incdec = 1'b0; + assign calib_idelay_ce = 1'b0; + assign calib_idelay_inc = 1'b0; + assign calib_tap_inc_done = 1'b0; + assign calib_tap_inc_byte_cnt = 'd0; + assign skip_cal_po_pi_dec_done = 1'b1; + + always @(posedge clk) begin + calib_tap_req <= #TCQ 1'b0; + calib_device_temp <= #TCQ 'd0; + skip_cal_tempmon_samp_en <= #TCQ 1'b0; + end + +end +endgenerate + + //*************************************************************************** + // Temperature induced PI tap adjustment logic + //*************************************************************************** + + mig_7series_v4_0_ddr_phy_tempmon # + ( + .SKIP_CALIB (SKIP_CALIB), + .TCQ (TCQ) + ) + ddr_phy_tempmon_0 + ( + .rst (rst), + .clk (clk), + .calib_complete (calib_complete), + .tempmon_pi_f_inc (tempmon_pi_f_inc), + .tempmon_pi_f_dec (tempmon_pi_f_dec), + .tempmon_sel_pi_incdec (tempmon_sel_pi_incdec), + .device_temp (device_temp), + .calib_device_temp (calib_device_temp), + .tempmon_sample_en (tempmon_sample_en | skip_cal_tempmon_samp_en), + .tempmon_done_skip (tempmon_done_skip) + ); + +endmodule diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_if_post_fifo.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_if_post_fifo.v new file mode 100644 index 0000000..28ae0a7 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_if_post_fifo.v @@ -0,0 +1,212 @@ +//***************************************************************************** +// (c) Copyright 2008 - 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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor : Xilinx +// \ \ \/ Version : %version +// \ \ Application : MIG +// / / Filename : mig_7series_v1_x_ddr_if_post_fifo.v +// /___/ /\ Date Last Modified : $date$ +// \ \ / \ Date Created : Feb 08 2011 +// \___\/\___\ +// +//Device : 7 Series +//Design Name : DDR3 SDRAM +//Purpose : Extends the depth of a PHASER IN_FIFO up to 4 entries +//Reference : +//Revision History : +//***************************************************************************** + +`timescale 1 ps / 1 ps + +module mig_7series_v4_0_ddr_if_post_fifo # + ( + parameter TCQ = 100, // clk->out delay (sim only) + parameter DEPTH = 4, // # of entries + parameter WIDTH = 32 // data bus width + ) + ( + input clk, // clock + input rst, // synchronous reset + input [3:0] empty_in, + input rd_en_in, + input [WIDTH-1:0] d_in, // write data from controller + output empty_out, + output byte_rd_en, + output [WIDTH-1:0] d_out // write data to OUT_FIFO + ); + + // # of bits used to represent read/write pointers + localparam PTR_BITS + = (DEPTH == 2) ? 1 : + (((DEPTH == 3) || (DEPTH == 4)) ? 2 : 'bx); + + integer i; + + reg [WIDTH-1:0] mem[0:DEPTH-1]; + (* max_fanout = 40 *) reg [4:0] my_empty /* synthesis syn_maxfan = 3 */; + (* max_fanout = 40 *) reg [1:0] my_full /* synthesis syn_maxfan = 3 */; + reg [PTR_BITS-1:0] rd_ptr /* synthesis syn_maxfan = 10 */; + // Register duplication to reduce the fan out + (* KEEP = "TRUE" *) reg [PTR_BITS-1:0] rd_ptr_timing /* synthesis syn_maxfan = 10 */; + reg [PTR_BITS-1:0] wr_ptr /* synthesis syn_maxfan = 10 */; + wire [WIDTH-1:0] mem_out; + (* max_fanout = 40 *) wire wr_en /* synthesis syn_maxfan = 10 */; + + task updt_ptrs; + input rd; + input wr; + reg [1:0] next_rd_ptr; + reg [1:0] next_wr_ptr; + begin + next_rd_ptr = (rd_ptr + 1'b1)%DEPTH; + next_wr_ptr = (wr_ptr + 1'b1)%DEPTH; + casez ({rd, wr, my_empty[1], my_full[1]}) + 4'b00zz: ; // No access, do nothing + 4'b0100: begin + // Write when neither empty, nor full; check for full + wr_ptr <= #TCQ next_wr_ptr; + my_full[0] <= #TCQ (next_wr_ptr == rd_ptr); + my_full[1] <= #TCQ (next_wr_ptr == rd_ptr); + //mem[wr_ptr] <= #TCQ d_in; + end + 4'b0110: begin + // Write when empty; no need to check for full + wr_ptr <= #TCQ next_wr_ptr; + my_empty <= #TCQ 5'b00000; + //mem[wr_ptr] <= #TCQ d_in; + end + 4'b1000: begin + // Read when neither empty, nor full; check for empty + rd_ptr <= #TCQ next_rd_ptr; + rd_ptr_timing <= #TCQ next_rd_ptr; + my_empty[0] <= #TCQ (next_rd_ptr == wr_ptr); + my_empty[1] <= #TCQ (next_rd_ptr == wr_ptr); + my_empty[2] <= #TCQ (next_rd_ptr == wr_ptr); + my_empty[3] <= #TCQ (next_rd_ptr == wr_ptr); + my_empty[4] <= #TCQ (next_rd_ptr == wr_ptr); + end + 4'b1001: begin + // Read when full; no need to check for empty + rd_ptr <= #TCQ next_rd_ptr; + rd_ptr_timing <= #TCQ next_rd_ptr; + my_full[0] <= #TCQ 1'b0; + my_full[1] <= #TCQ 1'b0; + end + 4'b1100, 4'b1101, 4'b1110: begin + // Read and write when empty, full, or neither empty/full; no need + // to check for empty or full conditions + rd_ptr <= #TCQ next_rd_ptr; + rd_ptr_timing <= #TCQ next_rd_ptr; + wr_ptr <= #TCQ next_wr_ptr; + //mem[wr_ptr] <= #TCQ d_in; + end + 4'b0101, 4'b1010: ; + // Read when empty, Write when full; Keep all pointers the same + // and don't change any of the flags (i.e. ignore the read/write). + // This might happen because a faulty DQS_FOUND calibration could + // result in excessive skew between when the various IN_FIFO's + // first become not empty. In this case, the data going to each + // post-FIFO/IN_FIFO should be read out and discarded + // synthesis translate_off + default: begin + // Covers any other cases, in particular for simulation if + // any signals are X's + $display("ERR %m @%t: Bad access: rd:%b,wr:%b,empty:%b,full:%b", + $time, rd, wr, my_empty[1], my_full[1]); + rd_ptr <= #TCQ 2'bxx; + rd_ptr_timing <= #TCQ 2'bxx; + wr_ptr <= #TCQ 2'bxx; + end + // synthesis translate_on + endcase + end + endtask + + + assign d_out = my_empty[4] ? d_in : mem_out;//mem[rd_ptr]; + // The combined IN_FIFO + post FIFO is only "empty" when both are empty + assign empty_out = empty_in[0] & my_empty[0]; + assign byte_rd_en = !empty_in[3] || !my_empty[3]; + + always @(posedge clk) + if (rst) begin + my_empty <= #TCQ 5'b11111; + my_full <= #TCQ 2'b00; + rd_ptr <= #TCQ 'b0; + rd_ptr_timing <= #TCQ 'b0; + wr_ptr <= #TCQ 'b0; + end else begin + // Special mode: If IN_FIFO has data, and controller is reading at + // the same time, then operate post-FIFO in "passthrough" mode (i.e. + // don't update any of the read/write pointers, and route IN_FIFO + // data to post-FIFO data) + if (my_empty[1] && !my_full[1] && rd_en_in && !empty_in[1]) ; + else + // Otherwise, we're writing to FIFO when IN_FIFO is not empty, + // and reading from the FIFO based on the rd_en_in signal (read + // enable from controller). The functino updt_ptrs should catch + // an illegal conditions. + updt_ptrs(rd_en_in, !empty_in[1]); + end + + + assign wr_en = (!empty_in[2] & ((!rd_en_in & !my_full[0]) | + (rd_en_in & !my_empty[2]))); + + + always @ (posedge clk) + begin + if (wr_en) + mem[wr_ptr] <= #TCQ d_in; + end + + assign mem_out = mem[rd_ptr_timing]; + +endmodule diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_mc_phy.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_mc_phy.v new file mode 100644 index 0000000..14b0f11 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_mc_phy.v @@ -0,0 +1,1804 @@ +/*********************************************************** +-- (c) Copyright 2010 - 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"). A 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. + +// +// +// Owner: Gary Martin +// Revision: $Id: //depot/icm/proj/common/head/rtl/v32_cmt/rtl/phy/mc_phy.v#5 $ +// $Author: gary $ +// $DateTime: 2010/05/11 18:05:17 $ +// $Change: 490882 $ +// Description: +// This verilog file is a parameterizable wrapper instantiating +// up to 5 memory banks of 4-lane phy primitives. There +// There are always 2 control banks leaving 18 lanes for data. +// +// History: +// Date Engineer Description +// 04/01/2010 G. Martin Initial Checkin. +// +//////////////////////////////////////////////////////////// +***********************************************************/ + + +`timescale 1ps/1ps + +module mig_7series_v4_0_ddr_mc_phy + #( +// five fields, one per possible I/O bank, 4 bits in each field, 1 per lane data=1/ctl=0 + parameter BYTE_LANES_B0 = 4'b1111, + parameter BYTE_LANES_B1 = 4'b0000, + parameter BYTE_LANES_B2 = 4'b0000, + parameter BYTE_LANES_B3 = 4'b0000, + parameter BYTE_LANES_B4 = 4'b0000, + parameter DATA_CTL_B0 = 4'hc, + parameter DATA_CTL_B1 = 4'hf, + parameter DATA_CTL_B2 = 4'hf, + parameter DATA_CTL_B3 = 4'hf, + parameter DATA_CTL_B4 = 4'hf, + parameter RCLK_SELECT_BANK = 0, + parameter RCLK_SELECT_LANE = "B", + parameter RCLK_SELECT_EDGE = 4'b1111, + parameter GENERATE_DDR_CK_MAP = "0B", + parameter BYTELANES_DDR_CK = 72'h00_0000_0000_0000_0002, + parameter USE_PRE_POST_FIFO = "TRUE", + parameter SYNTHESIS = "FALSE", + parameter PO_CTL_COARSE_BYPASS = "FALSE", + parameter PI_SEL_CLK_OFFSET = 6, + + parameter PHYCTL_CMD_FIFO = "FALSE", + parameter PHY_CLK_RATIO = 4, // phy to controller divide ratio + +// common to all i/o banks + parameter PHY_FOUR_WINDOW_CLOCKS = 63, + parameter PHY_EVENTS_DELAY = 18, + parameter PHY_COUNT_EN = "TRUE", + parameter PHY_SYNC_MODE = "TRUE", + parameter PHY_DISABLE_SEQ_MATCH = "FALSE", + parameter MASTER_PHY_CTL = 0, +// common to instance 0 + parameter PHY_0_BITLANES = 48'hdffd_fffe_dfff, + parameter PHY_0_BITLANES_OUTONLY = 48'h0000_0000_0000, + parameter PHY_0_LANE_REMAP = 16'h3210, + parameter PHY_0_GENERATE_IDELAYCTRL = "FALSE", + parameter PHY_0_IODELAY_GRP = "IODELAY_MIG", + parameter FPGA_SPEED_GRADE = 1, + parameter BANK_TYPE = "HP_IO", // # = "HP_IO", "HPL_IO", "HR_IO", "HRL_IO" + parameter NUM_DDR_CK = 1, + parameter PHY_0_DATA_CTL = DATA_CTL_B0, + parameter PHY_0_CMD_OFFSET = 0, + parameter PHY_0_RD_CMD_OFFSET_0 = 0, + parameter PHY_0_RD_CMD_OFFSET_1 = 0, + parameter PHY_0_RD_CMD_OFFSET_2 = 0, + parameter PHY_0_RD_CMD_OFFSET_3 = 0, + parameter PHY_0_RD_DURATION_0 = 0, + parameter PHY_0_RD_DURATION_1 = 0, + parameter PHY_0_RD_DURATION_2 = 0, + parameter PHY_0_RD_DURATION_3 = 0, + parameter PHY_0_WR_CMD_OFFSET_0 = 0, + parameter PHY_0_WR_CMD_OFFSET_1 = 0, + parameter PHY_0_WR_CMD_OFFSET_2 = 0, + parameter PHY_0_WR_CMD_OFFSET_3 = 0, + parameter PHY_0_WR_DURATION_0 = 0, + parameter PHY_0_WR_DURATION_1 = 0, + parameter PHY_0_WR_DURATION_2 = 0, + parameter PHY_0_WR_DURATION_3 = 0, + parameter PHY_0_AO_WRLVL_EN = 0, + parameter PHY_0_AO_TOGGLE = 4'b0101, // odd bits are toggle (CKE) + parameter PHY_0_OF_ALMOST_FULL_VALUE = 1, + parameter PHY_0_IF_ALMOST_EMPTY_VALUE = 1, +// per lane parameters + parameter PHY_0_A_PI_FREQ_REF_DIV = "NONE", + parameter PHY_0_A_PI_CLKOUT_DIV = 2, + parameter PHY_0_A_PO_CLKOUT_DIV = 2, + parameter PHY_0_A_BURST_MODE = "TRUE", + parameter PHY_0_A_PI_OUTPUT_CLK_SRC = "DELAYED_REF", + parameter PHY_0_A_PO_OUTPUT_CLK_SRC = "DELAYED_REF", + parameter PHY_0_A_PO_OCLK_DELAY = 25, + parameter PHY_0_B_PO_OCLK_DELAY = PHY_0_A_PO_OCLK_DELAY, + parameter PHY_0_C_PO_OCLK_DELAY = PHY_0_A_PO_OCLK_DELAY, + parameter PHY_0_D_PO_OCLK_DELAY = PHY_0_A_PO_OCLK_DELAY, + parameter PHY_0_A_PO_OCLKDELAY_INV = "FALSE", + parameter PHY_0_A_OF_ARRAY_MODE = "ARRAY_MODE_8_X_4", + parameter PHY_0_B_OF_ARRAY_MODE = PHY_0_A_OF_ARRAY_MODE, + parameter PHY_0_C_OF_ARRAY_MODE = PHY_0_A_OF_ARRAY_MODE, + parameter PHY_0_D_OF_ARRAY_MODE = PHY_0_A_OF_ARRAY_MODE, + parameter PHY_0_A_IF_ARRAY_MODE = "ARRAY_MODE_8_X_4", + parameter PHY_0_B_IF_ARRAY_MODE = PHY_0_A_OF_ARRAY_MODE, + parameter PHY_0_C_IF_ARRAY_MODE = PHY_0_A_OF_ARRAY_MODE, + parameter PHY_0_D_IF_ARRAY_MODE = PHY_0_A_OF_ARRAY_MODE, + parameter PHY_0_A_OSERDES_DATA_RATE = "UNDECLARED", + parameter PHY_0_A_OSERDES_DATA_WIDTH = "UNDECLARED", + parameter PHY_0_B_OSERDES_DATA_RATE = PHY_0_A_OSERDES_DATA_RATE, + parameter PHY_0_B_OSERDES_DATA_WIDTH = PHY_0_A_OSERDES_DATA_WIDTH, + parameter PHY_0_C_OSERDES_DATA_RATE = PHY_0_A_OSERDES_DATA_RATE, + parameter PHY_0_C_OSERDES_DATA_WIDTH = PHY_0_A_OSERDES_DATA_WIDTH, + parameter PHY_0_D_OSERDES_DATA_RATE = PHY_0_A_OSERDES_DATA_RATE, + parameter PHY_0_D_OSERDES_DATA_WIDTH = PHY_0_A_OSERDES_DATA_WIDTH, + parameter PHY_0_A_IDELAYE2_IDELAY_TYPE = "VARIABLE", + parameter PHY_0_A_IDELAYE2_IDELAY_VALUE = 00, + parameter PHY_0_B_IDELAYE2_IDELAY_TYPE = PHY_0_A_IDELAYE2_IDELAY_TYPE, + parameter PHY_0_B_IDELAYE2_IDELAY_VALUE = PHY_0_A_IDELAYE2_IDELAY_VALUE, + parameter PHY_0_C_IDELAYE2_IDELAY_TYPE = PHY_0_A_IDELAYE2_IDELAY_TYPE, + parameter PHY_0_C_IDELAYE2_IDELAY_VALUE = PHY_0_A_IDELAYE2_IDELAY_VALUE, + parameter PHY_0_D_IDELAYE2_IDELAY_TYPE = PHY_0_A_IDELAYE2_IDELAY_TYPE, + parameter PHY_0_D_IDELAYE2_IDELAY_VALUE = PHY_0_A_IDELAYE2_IDELAY_VALUE, + +// common to instance 1 + parameter PHY_1_BITLANES = PHY_0_BITLANES, + parameter PHY_1_BITLANES_OUTONLY = 48'h0000_0000_0000, + parameter PHY_1_LANE_REMAP = 16'h3210, + parameter PHY_1_GENERATE_IDELAYCTRL = "FALSE", + parameter PHY_1_IODELAY_GRP = PHY_0_IODELAY_GRP, + parameter PHY_1_DATA_CTL = DATA_CTL_B1, + parameter PHY_1_CMD_OFFSET = PHY_0_CMD_OFFSET, + parameter PHY_1_RD_CMD_OFFSET_0 = PHY_0_RD_CMD_OFFSET_0, + parameter PHY_1_RD_CMD_OFFSET_1 = PHY_0_RD_CMD_OFFSET_1, + parameter PHY_1_RD_CMD_OFFSET_2 = PHY_0_RD_CMD_OFFSET_2, + parameter PHY_1_RD_CMD_OFFSET_3 = PHY_0_RD_CMD_OFFSET_3, + parameter PHY_1_RD_DURATION_0 = PHY_0_RD_DURATION_0, + parameter PHY_1_RD_DURATION_1 = PHY_0_RD_DURATION_1, + parameter PHY_1_RD_DURATION_2 = PHY_0_RD_DURATION_2, + parameter PHY_1_RD_DURATION_3 = PHY_0_RD_DURATION_3, + parameter PHY_1_WR_CMD_OFFSET_0 = PHY_0_WR_CMD_OFFSET_0, + parameter PHY_1_WR_CMD_OFFSET_1 = PHY_0_WR_CMD_OFFSET_1, + parameter PHY_1_WR_CMD_OFFSET_2 = PHY_0_WR_CMD_OFFSET_2, + parameter PHY_1_WR_CMD_OFFSET_3 = PHY_0_WR_CMD_OFFSET_3, + parameter PHY_1_WR_DURATION_0 = PHY_0_WR_DURATION_0, + parameter PHY_1_WR_DURATION_1 = PHY_0_WR_DURATION_1, + parameter PHY_1_WR_DURATION_2 = PHY_0_WR_DURATION_2, + parameter PHY_1_WR_DURATION_3 = PHY_0_WR_DURATION_3, + parameter PHY_1_AO_WRLVL_EN = PHY_0_AO_WRLVL_EN, + parameter PHY_1_AO_TOGGLE = PHY_0_AO_TOGGLE, // odd bits are toggle (CKE) + parameter PHY_1_OF_ALMOST_FULL_VALUE = 1, + parameter PHY_1_IF_ALMOST_EMPTY_VALUE = 1, +// per lane parameters + parameter PHY_1_A_PI_FREQ_REF_DIV = PHY_0_A_PI_FREQ_REF_DIV, + parameter PHY_1_A_PI_CLKOUT_DIV = PHY_0_A_PI_CLKOUT_DIV, + parameter PHY_1_A_PO_CLKOUT_DIV = PHY_0_A_PO_CLKOUT_DIV, + parameter PHY_1_A_BURST_MODE = PHY_0_A_BURST_MODE, + parameter PHY_1_A_PI_OUTPUT_CLK_SRC = PHY_0_A_PI_OUTPUT_CLK_SRC, + parameter PHY_1_A_PO_OUTPUT_CLK_SRC = PHY_0_A_PO_OUTPUT_CLK_SRC , + parameter PHY_1_A_PO_OCLK_DELAY = PHY_0_A_PO_OCLK_DELAY, + parameter PHY_1_B_PO_OCLK_DELAY = PHY_1_A_PO_OCLK_DELAY, + parameter PHY_1_C_PO_OCLK_DELAY = PHY_1_A_PO_OCLK_DELAY, + parameter PHY_1_D_PO_OCLK_DELAY = PHY_1_A_PO_OCLK_DELAY, + parameter PHY_1_A_PO_OCLKDELAY_INV = PHY_0_A_PO_OCLKDELAY_INV, + parameter PHY_1_A_IDELAYE2_IDELAY_TYPE = PHY_0_A_IDELAYE2_IDELAY_TYPE, + parameter PHY_1_A_IDELAYE2_IDELAY_VALUE = PHY_0_A_IDELAYE2_IDELAY_VALUE, + parameter PHY_1_B_IDELAYE2_IDELAY_TYPE = PHY_1_A_IDELAYE2_IDELAY_TYPE, + parameter PHY_1_B_IDELAYE2_IDELAY_VALUE = PHY_1_A_IDELAYE2_IDELAY_VALUE, + parameter PHY_1_C_IDELAYE2_IDELAY_TYPE = PHY_1_A_IDELAYE2_IDELAY_TYPE, + parameter PHY_1_C_IDELAYE2_IDELAY_VALUE = PHY_1_A_IDELAYE2_IDELAY_VALUE, + parameter PHY_1_D_IDELAYE2_IDELAY_TYPE = PHY_1_A_IDELAYE2_IDELAY_TYPE, + parameter PHY_1_D_IDELAYE2_IDELAY_VALUE = PHY_1_A_IDELAYE2_IDELAY_VALUE, + parameter PHY_1_A_OF_ARRAY_MODE = PHY_0_A_OF_ARRAY_MODE, + parameter PHY_1_B_OF_ARRAY_MODE = PHY_0_A_OF_ARRAY_MODE, + parameter PHY_1_C_OF_ARRAY_MODE = PHY_0_A_OF_ARRAY_MODE, + parameter PHY_1_D_OF_ARRAY_MODE = PHY_0_A_OF_ARRAY_MODE, + parameter PHY_1_A_IF_ARRAY_MODE = PHY_0_A_IF_ARRAY_MODE, + parameter PHY_1_B_IF_ARRAY_MODE = PHY_0_A_OF_ARRAY_MODE, + parameter PHY_1_C_IF_ARRAY_MODE = PHY_0_A_OF_ARRAY_MODE, + parameter PHY_1_D_IF_ARRAY_MODE = PHY_0_A_OF_ARRAY_MODE, + parameter PHY_1_A_OSERDES_DATA_RATE = PHY_0_A_OSERDES_DATA_RATE, + parameter PHY_1_A_OSERDES_DATA_WIDTH = PHY_0_A_OSERDES_DATA_WIDTH, + parameter PHY_1_B_OSERDES_DATA_RATE = PHY_0_A_OSERDES_DATA_RATE, + parameter PHY_1_B_OSERDES_DATA_WIDTH = PHY_0_A_OSERDES_DATA_WIDTH, + parameter PHY_1_C_OSERDES_DATA_RATE = PHY_0_A_OSERDES_DATA_RATE, + parameter PHY_1_C_OSERDES_DATA_WIDTH = PHY_0_A_OSERDES_DATA_WIDTH, + parameter PHY_1_D_OSERDES_DATA_RATE = PHY_0_A_OSERDES_DATA_RATE, + parameter PHY_1_D_OSERDES_DATA_WIDTH = PHY_0_A_OSERDES_DATA_WIDTH, + +// common to instance 2 + parameter PHY_2_BITLANES = PHY_0_BITLANES, + parameter PHY_2_BITLANES_OUTONLY = 48'h0000_0000_0000, + parameter PHY_2_LANE_REMAP = 16'h3210, + parameter PHY_2_GENERATE_IDELAYCTRL = "FALSE", + parameter PHY_2_IODELAY_GRP = PHY_0_IODELAY_GRP, + parameter PHY_2_DATA_CTL = DATA_CTL_B2, + parameter PHY_2_CMD_OFFSET = PHY_0_CMD_OFFSET, + parameter PHY_2_RD_CMD_OFFSET_0 = PHY_0_RD_CMD_OFFSET_0, + parameter PHY_2_RD_CMD_OFFSET_1 = PHY_0_RD_CMD_OFFSET_1, + parameter PHY_2_RD_CMD_OFFSET_2 = PHY_0_RD_CMD_OFFSET_2, + parameter PHY_2_RD_CMD_OFFSET_3 = PHY_0_RD_CMD_OFFSET_3, + parameter PHY_2_RD_DURATION_0 = PHY_0_RD_DURATION_0, + parameter PHY_2_RD_DURATION_1 = PHY_0_RD_DURATION_1, + parameter PHY_2_RD_DURATION_2 = PHY_0_RD_DURATION_2, + parameter PHY_2_RD_DURATION_3 = PHY_0_RD_DURATION_3, + parameter PHY_2_WR_CMD_OFFSET_0 = PHY_0_WR_CMD_OFFSET_0, + parameter PHY_2_WR_CMD_OFFSET_1 = PHY_0_WR_CMD_OFFSET_1, + parameter PHY_2_WR_CMD_OFFSET_2 = PHY_0_WR_CMD_OFFSET_2, + parameter PHY_2_WR_CMD_OFFSET_3 = PHY_0_WR_CMD_OFFSET_3, + parameter PHY_2_WR_DURATION_0 = PHY_0_WR_DURATION_0, + parameter PHY_2_WR_DURATION_1 = PHY_0_WR_DURATION_1, + parameter PHY_2_WR_DURATION_2 = PHY_0_WR_DURATION_2, + parameter PHY_2_WR_DURATION_3 = PHY_0_WR_DURATION_3, + parameter PHY_2_AO_WRLVL_EN = PHY_0_AO_WRLVL_EN, + parameter PHY_2_AO_TOGGLE = PHY_0_AO_TOGGLE, // odd bits are toggle (CKE) + parameter PHY_2_OF_ALMOST_FULL_VALUE = 1, + parameter PHY_2_IF_ALMOST_EMPTY_VALUE = 1, +// per lane parameters + parameter PHY_2_A_PI_FREQ_REF_DIV = PHY_0_A_PI_FREQ_REF_DIV, + parameter PHY_2_A_PI_CLKOUT_DIV = PHY_0_A_PI_CLKOUT_DIV , + parameter PHY_2_A_PO_CLKOUT_DIV = PHY_0_A_PO_CLKOUT_DIV, + parameter PHY_2_A_BURST_MODE = PHY_0_A_BURST_MODE , + parameter PHY_2_A_PI_OUTPUT_CLK_SRC = PHY_0_A_PI_OUTPUT_CLK_SRC, + parameter PHY_2_A_PO_OUTPUT_CLK_SRC = PHY_0_A_PO_OUTPUT_CLK_SRC, + parameter PHY_2_A_OF_ARRAY_MODE = PHY_0_A_OF_ARRAY_MODE, + parameter PHY_2_B_OF_ARRAY_MODE = PHY_0_A_OF_ARRAY_MODE, + parameter PHY_2_C_OF_ARRAY_MODE = PHY_0_A_OF_ARRAY_MODE, + parameter PHY_2_D_OF_ARRAY_MODE = PHY_0_A_OF_ARRAY_MODE, + parameter PHY_2_A_IF_ARRAY_MODE = PHY_0_A_IF_ARRAY_MODE, + parameter PHY_2_B_IF_ARRAY_MODE = PHY_0_A_OF_ARRAY_MODE, + parameter PHY_2_C_IF_ARRAY_MODE = PHY_0_A_OF_ARRAY_MODE, + parameter PHY_2_D_IF_ARRAY_MODE = PHY_0_A_OF_ARRAY_MODE, + parameter PHY_2_A_PO_OCLK_DELAY = PHY_0_A_PO_OCLK_DELAY, + parameter PHY_2_B_PO_OCLK_DELAY = PHY_2_A_PO_OCLK_DELAY, + parameter PHY_2_C_PO_OCLK_DELAY = PHY_2_A_PO_OCLK_DELAY, + parameter PHY_2_D_PO_OCLK_DELAY = PHY_2_A_PO_OCLK_DELAY, + parameter PHY_2_A_PO_OCLKDELAY_INV = PHY_0_A_PO_OCLKDELAY_INV, + parameter PHY_2_A_OSERDES_DATA_RATE = PHY_0_A_OSERDES_DATA_RATE, + parameter PHY_2_A_OSERDES_DATA_WIDTH = PHY_0_A_OSERDES_DATA_WIDTH, + parameter PHY_2_B_OSERDES_DATA_RATE = PHY_0_A_OSERDES_DATA_RATE, + parameter PHY_2_B_OSERDES_DATA_WIDTH = PHY_0_A_OSERDES_DATA_WIDTH, + parameter PHY_2_C_OSERDES_DATA_RATE = PHY_0_A_OSERDES_DATA_RATE, + parameter PHY_2_C_OSERDES_DATA_WIDTH = PHY_0_A_OSERDES_DATA_WIDTH, + parameter PHY_2_D_OSERDES_DATA_RATE = PHY_0_A_OSERDES_DATA_RATE, + parameter PHY_2_D_OSERDES_DATA_WIDTH = PHY_0_A_OSERDES_DATA_WIDTH, + parameter PHY_2_A_IDELAYE2_IDELAY_TYPE = PHY_0_A_IDELAYE2_IDELAY_TYPE, + parameter PHY_2_A_IDELAYE2_IDELAY_VALUE = PHY_0_A_IDELAYE2_IDELAY_VALUE, + parameter PHY_2_B_IDELAYE2_IDELAY_TYPE = PHY_2_A_IDELAYE2_IDELAY_TYPE, + parameter PHY_2_B_IDELAYE2_IDELAY_VALUE = PHY_2_A_IDELAYE2_IDELAY_VALUE, + parameter PHY_2_C_IDELAYE2_IDELAY_TYPE = PHY_2_A_IDELAYE2_IDELAY_TYPE, + parameter PHY_2_C_IDELAYE2_IDELAY_VALUE = PHY_2_A_IDELAYE2_IDELAY_VALUE, + parameter PHY_2_D_IDELAYE2_IDELAY_TYPE = PHY_2_A_IDELAYE2_IDELAY_TYPE, + parameter PHY_2_D_IDELAYE2_IDELAY_VALUE = PHY_2_A_IDELAYE2_IDELAY_VALUE, + parameter PHY_0_IS_LAST_BANK = ((BYTE_LANES_B1 != 0) || (BYTE_LANES_B2 != 0) || (BYTE_LANES_B3 != 0) || (BYTE_LANES_B4 != 0)) ? "FALSE" : "TRUE", + parameter PHY_1_IS_LAST_BANK = ((BYTE_LANES_B1 != 0) && ((BYTE_LANES_B2 != 0) || (BYTE_LANES_B3 != 0) || (BYTE_LANES_B4 != 0))) ? "FALSE" : ((PHY_0_IS_LAST_BANK) ? "FALSE" : "TRUE"), + parameter PHY_2_IS_LAST_BANK = (BYTE_LANES_B2 != 0) && ((BYTE_LANES_B3 != 0) || (BYTE_LANES_B4 != 0)) ? "FALSE" : ((PHY_0_IS_LAST_BANK || PHY_1_IS_LAST_BANK) ? "FALSE" : "TRUE"), + parameter TCK = 2500, + +// local computational use, do not pass down + parameter N_LANES = (0+BYTE_LANES_B0[0]) + (0+BYTE_LANES_B0[1]) + (0+BYTE_LANES_B0[2]) + (0+BYTE_LANES_B0[3]) + + (0+BYTE_LANES_B1[0]) + (0+BYTE_LANES_B1[1]) + (0+BYTE_LANES_B1[2]) + (0+BYTE_LANES_B1[3]) + (0+BYTE_LANES_B2[0]) + (0+BYTE_LANES_B2[1]) + (0+BYTE_LANES_B2[2]) + (0+BYTE_LANES_B2[3]) + , // must not delete comma for syntax + parameter HIGHEST_BANK = (BYTE_LANES_B4 != 0 ? 5 : (BYTE_LANES_B3 != 0 ? 4 : (BYTE_LANES_B2 != 0 ? 3 : (BYTE_LANES_B1 != 0 ? 2 : 1)))), + parameter HIGHEST_LANE_B0 = ((PHY_0_IS_LAST_BANK == "FALSE") ? 4 : BYTE_LANES_B0[3] ? 4 : BYTE_LANES_B0[2] ? 3 : BYTE_LANES_B0[1] ? 2 : BYTE_LANES_B0[0] ? 1 : 0) , + parameter HIGHEST_LANE_B1 = (HIGHEST_BANK > 2) ? 4 : ( BYTE_LANES_B1[3] ? 4 : BYTE_LANES_B1[2] ? 3 : BYTE_LANES_B1[1] ? 2 : BYTE_LANES_B1[0] ? 1 : 0) , + parameter HIGHEST_LANE_B2 = (HIGHEST_BANK > 3) ? 4 : ( BYTE_LANES_B2[3] ? 4 : BYTE_LANES_B2[2] ? 3 : BYTE_LANES_B2[1] ? 2 : BYTE_LANES_B2[0] ? 1 : 0) , + parameter HIGHEST_LANE_B3 = 0, + parameter HIGHEST_LANE_B4 = 0, + + parameter HIGHEST_LANE = (HIGHEST_LANE_B4 != 0) ? (HIGHEST_LANE_B4+16) : ((HIGHEST_LANE_B3 != 0) ? (HIGHEST_LANE_B3 + 12) : ((HIGHEST_LANE_B2 != 0) ? (HIGHEST_LANE_B2 + 8) : ((HIGHEST_LANE_B1 != 0) ? (HIGHEST_LANE_B1 + 4) : HIGHEST_LANE_B0))), + parameter LP_DDR_CK_WIDTH = 2, + parameter GENERATE_SIGNAL_SPLIT = "FALSE" + ,parameter CKE_ODT_AUX = "FALSE" + ,parameter PI_DIV2_INCDEC = "FALSE" + ) + ( + input rst, + input ddr_rst_in_n , + input phy_clk, + input clk_div2, + input freq_refclk, + input mem_refclk, + input mem_refclk_div4, + input pll_lock, + input sync_pulse, + input auxout_clk, + input idelayctrl_refclk, + input [HIGHEST_LANE*80-1:0] phy_dout, + input phy_cmd_wr_en, + input phy_data_wr_en, + input phy_rd_en, + input [31:0] phy_ctl_wd, + input [3:0] aux_in_1, + input [3:0] aux_in_2, + input [5:0] data_offset_1, + input [5:0] data_offset_2, + input phy_ctl_wr, + input if_rst, + input if_empty_def, + input cke_in, + input idelay_ce, + input idelay_ld, + input idelay_inc, + input phyGo, + input input_sink, + output if_a_empty, + output if_empty /* synthesis syn_maxfan = 3 */, + output if_empty_or, + output if_empty_and, + output of_ctl_a_full, + output of_data_a_full, + output of_ctl_full, + output of_data_full, + output pre_data_a_full, + output [HIGHEST_LANE*80-1:0] phy_din, + output phy_ctl_a_full, + output wire [3:0] phy_ctl_full, + output [HIGHEST_LANE*12-1:0] mem_dq_out, + output [HIGHEST_LANE*12-1:0] mem_dq_ts, + input [HIGHEST_LANE*10-1:0] mem_dq_in, + output [HIGHEST_LANE-1:0] mem_dqs_out, + output [HIGHEST_LANE-1:0] mem_dqs_ts, + input [HIGHEST_LANE-1:0] mem_dqs_in, + +(* IOB = "FORCE" *) output reg [(((HIGHEST_LANE+3)/4)*4)-1:0] aux_out, // to memory, odt , 4 per phy controller + output phy_ctl_ready, // to fabric + output reg rst_out, // to memory + output [(NUM_DDR_CK * LP_DDR_CK_WIDTH)-1:0] ddr_clk, +// output rclk, + output mcGo, + output ref_dll_lock, +// calibration signals + input phy_write_calib, + input phy_read_calib, + input [5:0] calib_sel, + input [HIGHEST_BANK-1:0]calib_zero_inputs, // bit calib_sel[2], one per bank + input [HIGHEST_BANK-1:0]calib_zero_ctrl, // one bit per bank, zero's only control lane calibration inputs + input [HIGHEST_LANE-1:0] calib_zero_lanes, // one bit per lane + input calib_in_common, + input [2:0] po_fine_enable, + input [2:0] po_coarse_enable, + input [2:0] po_fine_inc, + input [2:0] po_coarse_inc, + input po_counter_load_en, + input [2:0] po_sel_fine_oclk_delay, + input [8:0] po_counter_load_val, + input po_counter_read_en, + output reg po_coarse_overflow, + output reg po_fine_overflow, + output reg [8:0] po_counter_read_val, + + + input [HIGHEST_BANK-1:0] pi_rst_dqs_find, + input pi_fine_enable, + input pi_fine_inc, + input pi_counter_load_en, + input pi_counter_read_en, + input [5:0] pi_counter_load_val, + output reg pi_fine_overflow, + output reg [5:0] pi_counter_read_val, + + output reg pi_phase_locked, + output pi_phase_locked_all, + output reg pi_dqs_found, + output pi_dqs_found_all, + output pi_dqs_found_any, + output [HIGHEST_LANE-1:0] pi_phase_locked_lanes, + output [HIGHEST_LANE-1:0] pi_dqs_found_lanes, + output reg pi_dqs_out_of_range, + input [29:0] fine_delay, + input fine_delay_sel + ); + + +wire [7:0] calib_zero_inputs_int ; +wire [HIGHEST_BANK*4-1:0] calib_zero_lanes_int ; + +//Added the temporary variable for concadination operation +wire [2:0] calib_sel_byte0 ; +wire [2:0] calib_sel_byte1 ; +wire [2:0] calib_sel_byte2 ; + +wire [4:0] po_coarse_overflow_w; +wire [4:0] po_fine_overflow_w; +wire [8:0] po_counter_read_val_w[4:0]; +wire [4:0] pi_fine_overflow_w; +wire [5:0] pi_counter_read_val_w[4:0]; +wire [4:0] pi_dqs_found_w; +wire [4:0] pi_dqs_found_all_w; +wire [4:0] pi_dqs_found_any_w; +wire [4:0] pi_dqs_out_of_range_w; +wire [4:0] pi_phase_locked_w; +wire [4:0] pi_phase_locked_all_w; +wire [4:0] rclk_w; +wire [HIGHEST_BANK-1:0] phy_ctl_ready_w; +wire [(LP_DDR_CK_WIDTH*24)-1:0] ddr_clk_w [HIGHEST_BANK-1:0]; +wire [(((HIGHEST_LANE+3)/4)*4)-1:0] aux_out_; + + +wire [3:0] if_q0; +wire [3:0] if_q1; +wire [3:0] if_q2; +wire [3:0] if_q3; +wire [3:0] if_q4; +wire [7:0] if_q5; +wire [7:0] if_q6; +wire [3:0] if_q7; +wire [3:0] if_q8; +wire [3:0] if_q9; + +wire [31:0] _phy_ctl_wd; +wire [3:0] aux_in_[4:1]; +wire [3:0] rst_out_w; + +wire freq_refclk_split; +wire mem_refclk_split; +wire mem_refclk_div4_split; +wire sync_pulse_split; +wire phy_clk_split0; +wire phy_ctl_clk_split0; +wire [31:0] phy_ctl_wd_split0; +wire phy_ctl_wr_split0; +wire phy_ctl_clk_split1; +wire phy_clk_split1; +wire [31:0] phy_ctl_wd_split1; +wire phy_ctl_wr_split1; +wire [5:0] phy_data_offset_1_split1; +wire phy_ctl_clk_split2; +wire phy_clk_split2; +wire [31:0] phy_ctl_wd_split2; +wire phy_ctl_wr_split2; +wire [5:0] phy_data_offset_2_split2; +wire [HIGHEST_LANE*80-1:0] phy_dout_split0; +wire phy_cmd_wr_en_split0; +wire phy_data_wr_en_split0; +wire phy_rd_en_split0; +wire [HIGHEST_LANE*80-1:0] phy_dout_split1; +wire phy_cmd_wr_en_split1; +wire phy_data_wr_en_split1; +wire phy_rd_en_split1; +wire [HIGHEST_LANE*80-1:0] phy_dout_split2; +wire phy_cmd_wr_en_split2; +wire phy_data_wr_en_split2; +wire phy_rd_en_split2; + +wire phy_ctl_mstr_empty; +wire [HIGHEST_BANK-1:0] phy_ctl_empty; + +wire _phy_ctl_a_full_f; +wire _phy_ctl_a_empty_f; +wire _phy_ctl_full_f; +wire _phy_ctl_empty_f; +wire [HIGHEST_BANK-1:0] _phy_ctl_a_full_p; +wire [HIGHEST_BANK-1:0] _phy_ctl_full_p; +wire [HIGHEST_BANK-1:0] of_ctl_a_full_v; +wire [HIGHEST_BANK-1:0] of_ctl_full_v; +wire [HIGHEST_BANK-1:0] of_data_a_full_v; +wire [HIGHEST_BANK-1:0] of_data_full_v; +wire [HIGHEST_BANK-1:0] pre_data_a_full_v; +wire [HIGHEST_BANK-1:0] if_empty_v; +wire [HIGHEST_BANK-1:0] byte_rd_en_v; +wire [HIGHEST_BANK*2-1:0] byte_rd_en_oth_banks; +wire [HIGHEST_BANK-1:0] if_empty_or_v; +wire [HIGHEST_BANK-1:0] if_empty_and_v; +wire [HIGHEST_BANK-1:0] if_a_empty_v; + +localparam IF_ARRAY_MODE = "ARRAY_MODE_4_X_4"; +localparam IF_SYNCHRONOUS_MODE = "FALSE"; +localparam IF_SLOW_WR_CLK = "FALSE"; +localparam IF_SLOW_RD_CLK = "FALSE"; + +localparam PHY_MULTI_REGION = (HIGHEST_BANK > 1) ? "TRUE" : "FALSE"; +localparam RCLK_NEG_EDGE = 3'b000; +localparam RCLK_POS_EDGE = 3'b111; + +localparam LP_PHY_0_BYTELANES_DDR_CK = BYTELANES_DDR_CK & 24'hFF_FFFF; +localparam LP_PHY_1_BYTELANES_DDR_CK = (BYTELANES_DDR_CK >> 24) & 24'hFF_FFFF; +localparam LP_PHY_2_BYTELANES_DDR_CK = (BYTELANES_DDR_CK >> 48) & 24'hFF_FFFF; + +// hi, lo positions for data offset field, MIG doesn't allow defines +localparam PC_DATA_OFFSET_RANGE_HI = 22; +localparam PC_DATA_OFFSET_RANGE_LO = 17; + +/* Phaser_In Output source coding table + "PHASE_REF" : 4'b0000; + "DELAYED_MEM_REF" : 4'b0101; + "DELAYED_PHASE_REF" : 4'b0011; + "DELAYED_REF" : 4'b0001; + "FREQ_REF" : 4'b1000; + "MEM_REF" : 4'b0010; +*/ + +localparam RCLK_PI_OUTPUT_CLK_SRC = "DELAYED_MEM_REF"; + + +localparam DDR_TCK = TCK; + +localparam real FREQ_REF_PERIOD = DDR_TCK / (PHY_0_A_PI_FREQ_REF_DIV == "DIV2" ? 2 : 1); +localparam real L_FREQ_REF_PERIOD_NS = FREQ_REF_PERIOD /1000.0; +localparam PO_S3_TAPS = 64 ; // Number of taps per clock cycle in OCLK_DELAYED delay line +localparam PI_S2_TAPS = 128 ; // Number of taps per clock cycle in stage 2 delay line +localparam PO_S2_TAPS = 128 ; // Number of taps per clock cycle in sta + +/* +Intrinsic delay of Phaser In Stage 1 +@3300ps - 1.939ns - 58.8% +@2500ps - 1.657ns - 66.3% +@1875ps - 1.263ns - 67.4% +@1500ps - 1.021ns - 68.1% +@1250ps - 0.868ns - 69.4% +@1072ps - 0.752ns - 70.1% +@938ps - 0.667ns - 71.1% +*/ + +// If we use the Delayed Mem_Ref_Clk in the RCLK Phaser_In, then the Stage 1 intrinsic delay is 0.0 +// Fraction of a full DDR_TCK period +localparam real PI_STG1_INTRINSIC_DELAY = (RCLK_PI_OUTPUT_CLK_SRC == "DELAYED_MEM_REF") ? 0.0 : + ((DDR_TCK < 1005) ? 0.667 : + (DDR_TCK < 1160) ? 0.752 : + (DDR_TCK < 1375) ? 0.868 : + (DDR_TCK < 1685) ? 1.021 : + (DDR_TCK < 2185) ? 1.263 : + (DDR_TCK < 2900) ? 1.657 : + (DDR_TCK < 3100) ? 1.771 : 1.939)*1000; +/* +Intrinsic delay of Phaser In Stage 2 +@3300ps - 0.912ns - 27.6% - single tap - 13ps +@3000ps - 0.848ns - 28.3% - single tap - 11ps +@2500ps - 1.264ns - 50.6% - single tap - 19ps +@1875ps - 1.000ns - 53.3% - single tap - 15ps +@1500ps - 0.848ns - 56.5% - single tap - 11ps +@1250ps - 0.736ns - 58.9% - single tap - 9ps +@1072ps - 0.664ns - 61.9% - single tap - 8ps +@938ps - 0.608ns - 64.8% - single tap - 7ps +*/ +// Intrinsic delay = (.4218 + .0002freq(MHz))period(ps) +localparam real PI_STG2_INTRINSIC_DELAY = (0.4218*FREQ_REF_PERIOD + 200) + 16.75; // 12ps fudge factor +/* +Intrinsic delay of Phaser Out Stage 2 - coarse bypass = 1 +@3300ps - 1.294ns - 39.2% +@2500ps - 1.294ns - 51.8% +@1875ps - 1.030ns - 54.9% +@1500ps - 0.878ns - 58.5% +@1250ps - 0.766ns - 61.3% +@1072ps - 0.694ns - 64.7% +@938ps - 0.638ns - 68.0% + +Intrinsic delay of Phaser Out Stage 2 - coarse bypass = 0 +@3300ps - 2.084ns - 63.2% - single tap - 20ps +@2500ps - 2.084ns - 81.9% - single tap - 19ps +@1875ps - 1.676ns - 89.4% - single tap - 15ps +@1500ps - 1.444ns - 96.3% - single tap - 11ps +@1250ps - 1.276ns - 102.1% - single tap - 9ps +@1072ps - 1.164ns - 108.6% - single tap - 8ps +@938ps - 1.076ns - 114.7% - single tap - 7ps +*/ +// Fraction of a full DDR_TCK period +localparam real PO_STG1_INTRINSIC_DELAY = 0; +localparam real PO_STG2_FINE_INTRINSIC_DELAY = 0.4218*FREQ_REF_PERIOD + 200 + 42; // 42ps fudge factor +localparam real PO_STG2_COARSE_INTRINSIC_DELAY = 0.2256*FREQ_REF_PERIOD + 200 + 29; // 29ps fudge factor +localparam real PO_STG2_INTRINSIC_DELAY = PO_STG2_FINE_INTRINSIC_DELAY + + (PO_CTL_COARSE_BYPASS == "TRUE" ? 30 : PO_STG2_COARSE_INTRINSIC_DELAY); + +// When the PO_STG2_INTRINSIC_DELAY is approximately equal to tCK, then the Phaser Out's circular buffer can +// go metastable. The circular buffer must be prevented from getting into a metastable state. To accomplish this, +// a default programmed value must be programmed into the stage 2 delay. This delay is only needed at reset, adjustments +// to the stage 2 delay can be made after reset is removed. + +localparam real PO_S2_TAPS_SIZE = 1.0*FREQ_REF_PERIOD / PO_S2_TAPS ; // average delay of taps in stage 2 fine delay line +localparam real PO_CIRC_BUF_META_ZONE = 200.0; +localparam PO_CIRC_BUF_EARLY = (PO_STG2_INTRINSIC_DELAY < DDR_TCK) ? 1'b1 : 1'b0; +localparam real PO_CIRC_BUF_OFFSET = (PO_STG2_INTRINSIC_DELAY < DDR_TCK) ? DDR_TCK - PO_STG2_INTRINSIC_DELAY : PO_STG2_INTRINSIC_DELAY - DDR_TCK; +// If the stage 2 intrinsic delay is less than the clock period, then see if it is less than the threshold +// If it is not more than the threshold than we must push the delay after the clock period plus a guardband. + +//A change in PO_CIRC_BUF_DELAY value will affect the localparam TAP_DEC value(=PO_CIRC_BUF_DELAY - 31) in ddr_phy_ck_addr_cmd_delay.v. Update TAP_DEC value when PO_CIRC_BUF_DELAY is updated. +localparam integer PO_CIRC_BUF_DELAY = 60; + +//localparam integer PO_CIRC_BUF_DELAY = PO_CIRC_BUF_EARLY ? (PO_CIRC_BUF_OFFSET > PO_CIRC_BUF_META_ZONE) ? 0 : +// (PO_CIRC_BUF_META_ZONE + PO_CIRC_BUF_OFFSET) / PO_S2_TAPS_SIZE : +// (PO_CIRC_BUF_META_ZONE - PO_CIRC_BUF_OFFSET) / PO_S2_TAPS_SIZE; + +localparam real PI_S2_TAPS_SIZE = 1.0*FREQ_REF_PERIOD / PI_S2_TAPS ; // average delay of taps in stage 2 fine delay line +localparam real PI_MAX_STG2_DELAY = (PI_S2_TAPS/2 - 1) * PI_S2_TAPS_SIZE; +localparam real PI_INTRINSIC_DELAY = PI_STG1_INTRINSIC_DELAY + PI_STG2_INTRINSIC_DELAY; +localparam real PO_INTRINSIC_DELAY = PO_STG1_INTRINSIC_DELAY + PO_STG2_INTRINSIC_DELAY; +localparam real PO_DELAY = PO_INTRINSIC_DELAY + (PO_CIRC_BUF_DELAY*PO_S2_TAPS_SIZE); +localparam RCLK_BUFIO_DELAY = 1200; // estimate of clock insertion delay of rclk through BUFIO to ioi +// The PI_OFFSET is the difference between the Phaser Out delay path and the intrinsic delay path +// of the Phaser_In that drives the rclk. The objective is to align either the rising edges of the +// oserdes_oclk and the rclk or to align the rising to falling edges depending on which adjustment +// is within the range of the stage 2 delay line in the Phaser_In. +localparam integer RCLK_DELAY_INT= (PI_INTRINSIC_DELAY + RCLK_BUFIO_DELAY); +localparam integer PO_DELAY_INT = PO_DELAY; +localparam PI_OFFSET = (PO_DELAY_INT % DDR_TCK) - (RCLK_DELAY_INT % DDR_TCK); + +// if pi_offset >= 0 align to oclk posedge by delaying pi path to where oclk is +// if pi_offset < 0 align to oclk negedge by delaying pi path the additional distance to next oclk edge. +// note that in this case PI_OFFSET is negative so invert before subtracting. +localparam real PI_STG2_DELAY_CAND = PI_OFFSET >= 0 + ? PI_OFFSET + : ((-PI_OFFSET) < DDR_TCK/2) ? + (DDR_TCK/2 - (- PI_OFFSET)) : + (DDR_TCK - (- PI_OFFSET)) ; + +localparam real PI_STG2_DELAY = + (PI_STG2_DELAY_CAND > PI_MAX_STG2_DELAY ? + PI_MAX_STG2_DELAY : PI_STG2_DELAY_CAND); +localparam integer DEFAULT_RCLK_DELAY = PI_STG2_DELAY / PI_S2_TAPS_SIZE; + +localparam LP_RCLK_SELECT_EDGE = (RCLK_SELECT_EDGE != 4'b1111 ) ? RCLK_SELECT_EDGE : (PI_OFFSET >= 0 ? RCLK_POS_EDGE : (PI_OFFSET <= TCK/2 ? RCLK_NEG_EDGE : RCLK_POS_EDGE)); + +localparam integer L_PHY_0_PO_FINE_DELAY = PO_CIRC_BUF_DELAY ; +localparam integer L_PHY_1_PO_FINE_DELAY = PO_CIRC_BUF_DELAY ; +localparam integer L_PHY_2_PO_FINE_DELAY = PO_CIRC_BUF_DELAY ; + +localparam L_PHY_0_A_PI_FINE_DELAY = (RCLK_SELECT_BANK == 0 && ! DATA_CTL_B0[0]) ? DEFAULT_RCLK_DELAY : 33 ; +localparam L_PHY_0_B_PI_FINE_DELAY = (RCLK_SELECT_BANK == 0 && ! DATA_CTL_B0[1]) ? DEFAULT_RCLK_DELAY : 33 ; +localparam L_PHY_0_C_PI_FINE_DELAY = (RCLK_SELECT_BANK == 0 && ! DATA_CTL_B0[2]) ? DEFAULT_RCLK_DELAY : 33 ; +localparam L_PHY_0_D_PI_FINE_DELAY = (RCLK_SELECT_BANK == 0 && ! DATA_CTL_B0[3]) ? DEFAULT_RCLK_DELAY : 33 ; + +localparam L_PHY_1_A_PI_FINE_DELAY = (RCLK_SELECT_BANK == 1 && ! DATA_CTL_B1[0]) ? DEFAULT_RCLK_DELAY : 33 ; +localparam L_PHY_1_B_PI_FINE_DELAY = (RCLK_SELECT_BANK == 1 && ! DATA_CTL_B1[1]) ? DEFAULT_RCLK_DELAY : 33 ; +localparam L_PHY_1_C_PI_FINE_DELAY = (RCLK_SELECT_BANK == 1 && ! DATA_CTL_B1[2]) ? DEFAULT_RCLK_DELAY : 33 ; +localparam L_PHY_1_D_PI_FINE_DELAY = (RCLK_SELECT_BANK == 1 && ! DATA_CTL_B1[3]) ? DEFAULT_RCLK_DELAY : 33 ; + +localparam L_PHY_2_A_PI_FINE_DELAY = (RCLK_SELECT_BANK == 2 && ! DATA_CTL_B2[0]) ? DEFAULT_RCLK_DELAY : 33 ; +localparam L_PHY_2_B_PI_FINE_DELAY = (RCLK_SELECT_BANK == 2 && ! DATA_CTL_B2[1]) ? DEFAULT_RCLK_DELAY : 33 ; +localparam L_PHY_2_C_PI_FINE_DELAY = (RCLK_SELECT_BANK == 2 && ! DATA_CTL_B2[2]) ? DEFAULT_RCLK_DELAY : 33 ; +localparam L_PHY_2_D_PI_FINE_DELAY = (RCLK_SELECT_BANK == 2 && ! DATA_CTL_B2[3]) ? DEFAULT_RCLK_DELAY : 33 ; + + +localparam L_PHY_0_A_PI_OUTPUT_CLK_SRC = (RCLK_SELECT_BANK == 0) ? (RCLK_SELECT_LANE == "A") ? RCLK_PI_OUTPUT_CLK_SRC : PHY_0_A_PI_OUTPUT_CLK_SRC : PHY_0_A_PI_OUTPUT_CLK_SRC; +localparam L_PHY_0_B_PI_OUTPUT_CLK_SRC = (RCLK_SELECT_BANK == 0) ? (RCLK_SELECT_LANE == "B") ? RCLK_PI_OUTPUT_CLK_SRC : PHY_0_A_PI_OUTPUT_CLK_SRC : PHY_0_A_PI_OUTPUT_CLK_SRC; +localparam L_PHY_0_C_PI_OUTPUT_CLK_SRC = (RCLK_SELECT_BANK == 0) ? (RCLK_SELECT_LANE == "C") ? RCLK_PI_OUTPUT_CLK_SRC : PHY_0_A_PI_OUTPUT_CLK_SRC : PHY_0_A_PI_OUTPUT_CLK_SRC; +localparam L_PHY_0_D_PI_OUTPUT_CLK_SRC = (RCLK_SELECT_BANK == 0) ? (RCLK_SELECT_LANE == "D") ? RCLK_PI_OUTPUT_CLK_SRC : PHY_0_A_PI_OUTPUT_CLK_SRC : PHY_0_A_PI_OUTPUT_CLK_SRC; + +localparam L_PHY_1_A_PI_OUTPUT_CLK_SRC = (RCLK_SELECT_BANK == 1) ? (RCLK_SELECT_LANE == "A") ? RCLK_PI_OUTPUT_CLK_SRC : PHY_1_A_PI_OUTPUT_CLK_SRC : PHY_1_A_PI_OUTPUT_CLK_SRC; +localparam L_PHY_1_B_PI_OUTPUT_CLK_SRC = (RCLK_SELECT_BANK == 1) ? (RCLK_SELECT_LANE == "B") ? RCLK_PI_OUTPUT_CLK_SRC : PHY_1_A_PI_OUTPUT_CLK_SRC : PHY_1_A_PI_OUTPUT_CLK_SRC; +localparam L_PHY_1_C_PI_OUTPUT_CLK_SRC = (RCLK_SELECT_BANK == 1) ? (RCLK_SELECT_LANE == "C") ? RCLK_PI_OUTPUT_CLK_SRC : PHY_1_A_PI_OUTPUT_CLK_SRC : PHY_1_A_PI_OUTPUT_CLK_SRC; +localparam L_PHY_1_D_PI_OUTPUT_CLK_SRC = (RCLK_SELECT_BANK == 1) ? (RCLK_SELECT_LANE == "D") ? RCLK_PI_OUTPUT_CLK_SRC : PHY_1_A_PI_OUTPUT_CLK_SRC : PHY_1_A_PI_OUTPUT_CLK_SRC; + +localparam L_PHY_2_A_PI_OUTPUT_CLK_SRC = (RCLK_SELECT_BANK == 2) ? (RCLK_SELECT_LANE == "A") ? RCLK_PI_OUTPUT_CLK_SRC : PHY_2_A_PI_OUTPUT_CLK_SRC : PHY_2_A_PI_OUTPUT_CLK_SRC; +localparam L_PHY_2_B_PI_OUTPUT_CLK_SRC = (RCLK_SELECT_BANK == 2) ? (RCLK_SELECT_LANE == "B") ? RCLK_PI_OUTPUT_CLK_SRC : PHY_2_A_PI_OUTPUT_CLK_SRC : PHY_2_A_PI_OUTPUT_CLK_SRC; +localparam L_PHY_2_C_PI_OUTPUT_CLK_SRC = (RCLK_SELECT_BANK == 2) ? (RCLK_SELECT_LANE == "C") ? RCLK_PI_OUTPUT_CLK_SRC : PHY_2_A_PI_OUTPUT_CLK_SRC : PHY_2_A_PI_OUTPUT_CLK_SRC; +localparam L_PHY_2_D_PI_OUTPUT_CLK_SRC = (RCLK_SELECT_BANK == 2) ? (RCLK_SELECT_LANE == "D") ? RCLK_PI_OUTPUT_CLK_SRC : PHY_2_A_PI_OUTPUT_CLK_SRC : PHY_2_A_PI_OUTPUT_CLK_SRC; + +wire _phy_clk; + +wire [2:0] mcGo_w; +wire [HIGHEST_BANK-1:0] ref_dll_lock_w; +reg [15:0] mcGo_r; + + +assign ref_dll_lock = & ref_dll_lock_w; + +initial begin + if ( SYNTHESIS == "FALSE" ) begin + $display("%m : BYTE_LANES_B0 = %x BYTE_LANES_B1 = %x DATA_CTL_B0 = %x DATA_CTL_B1 = %x", BYTE_LANES_B0, BYTE_LANES_B1, DATA_CTL_B0, DATA_CTL_B1); + $display("%m : HIGHEST_LANE = %d HIGHEST_LANE_B0 = %d HIGHEST_LANE_B1 = %d", HIGHEST_LANE, HIGHEST_LANE_B0, HIGHEST_LANE_B1); + $display("%m : HIGHEST_BANK = %d", HIGHEST_BANK); + + $display("%m : FREQ_REF_PERIOD = %0.2f ", FREQ_REF_PERIOD); + $display("%m : DDR_TCK = %0d ", DDR_TCK); + $display("%m : PO_S2_TAPS_SIZE = %0.2f ", PO_S2_TAPS_SIZE); + $display("%m : PO_CIRC_BUF_EARLY = %0d ", PO_CIRC_BUF_EARLY); + $display("%m : PO_CIRC_BUF_OFFSET = %0.2f ", PO_CIRC_BUF_OFFSET); + $display("%m : PO_CIRC_BUF_META_ZONE = %0.2f ", PO_CIRC_BUF_META_ZONE); + $display("%m : PO_STG2_FINE_INTR_DLY = %0.2f ", PO_STG2_FINE_INTRINSIC_DELAY); + $display("%m : PO_STG2_COARSE_INTR_DLY = %0.2f ", PO_STG2_COARSE_INTRINSIC_DELAY); + $display("%m : PO_STG2_INTRINSIC_DELAY = %0.2f ", PO_STG2_INTRINSIC_DELAY); + $display("%m : PO_CIRC_BUF_DELAY = %0d ", PO_CIRC_BUF_DELAY); + $display("%m : PO_INTRINSIC_DELAY = %0.2f ", PO_INTRINSIC_DELAY); + $display("%m : PO_DELAY = %0.2f ", PO_DELAY); + $display("%m : PO_OCLK_DELAY = %0d ", PHY_0_A_PO_OCLK_DELAY); + $display("%m : L_PHY_0_PO_FINE_DELAY = %0d ", L_PHY_0_PO_FINE_DELAY); + + $display("%m : PI_STG1_INTRINSIC_DELAY = %0.2f ", PI_STG1_INTRINSIC_DELAY); + $display("%m : PI_STG2_INTRINSIC_DELAY = %0.2f ", PI_STG2_INTRINSIC_DELAY); + $display("%m : PI_INTRINSIC_DELAY = %0.2f ", PI_INTRINSIC_DELAY); + $display("%m : PI_MAX_STG2_DELAY = %0.2f ", PI_MAX_STG2_DELAY); + $display("%m : PI_OFFSET = %0.2f ", PI_OFFSET); + if ( PI_OFFSET < 0) $display("%m : a negative PI_OFFSET means that rclk path is longer than oclk path so rclk will be delayed to next oclk edge and the negedge of rclk may be used."); + $display("%m : PI_STG2_DELAY = %0.2f ", PI_STG2_DELAY); + $display("%m :PI_STG2_DELAY_CAND = %0.2f ",PI_STG2_DELAY_CAND); + $display("%m : DEFAULT_RCLK_DELAY = %0d ", DEFAULT_RCLK_DELAY); + $display("%m : RCLK_SELECT_EDGE = %0b ", LP_RCLK_SELECT_EDGE); + end // SYNTHESIS + if ( PI_STG2_DELAY_CAND > PI_MAX_STG2_DELAY) $display("WARNING: %m: The required delay though the phaser_in to internally match the aux_out clock to ddr clock exceeds the maximum allowable delay. The clock edge will occur at the output registers of aux_out %0.2f ps before the ddr clock edge. If aux_out is used for memory inputs, this may violate setup or hold time.", PI_STG2_DELAY_CAND - PI_MAX_STG2_DELAY); +end + + assign sync_pulse_split = sync_pulse; + assign mem_refclk_split = mem_refclk; + assign freq_refclk_split = freq_refclk; + assign mem_refclk_div4_split = mem_refclk_div4; + assign phy_ctl_clk_split0 = _phy_clk; + assign phy_ctl_wd_split0 = phy_ctl_wd; + assign phy_ctl_wr_split0 = phy_ctl_wr; + assign phy_clk_split0 = phy_clk; + assign phy_cmd_wr_en_split0 = phy_cmd_wr_en; + assign phy_data_wr_en_split0 = phy_data_wr_en; + assign phy_rd_en_split0 = phy_rd_en; + assign phy_dout_split0 = phy_dout; + assign phy_ctl_clk_split1 = phy_clk; + assign phy_ctl_wd_split1 = phy_ctl_wd; + assign phy_data_offset_1_split1 = data_offset_1; + assign phy_ctl_wr_split1 = phy_ctl_wr; + assign phy_clk_split1 = phy_clk; + assign phy_cmd_wr_en_split1 = phy_cmd_wr_en; + assign phy_data_wr_en_split1 = phy_data_wr_en; + assign phy_rd_en_split1 = phy_rd_en; + assign phy_dout_split1 = phy_dout; + assign phy_ctl_clk_split2 = phy_clk; + assign phy_ctl_wd_split2 = phy_ctl_wd; + assign phy_data_offset_2_split2 = data_offset_2; + assign phy_ctl_wr_split2 = phy_ctl_wr; + assign phy_clk_split2 = phy_clk; + assign phy_cmd_wr_en_split2 = phy_cmd_wr_en; + assign phy_data_wr_en_split2 = phy_data_wr_en; + assign phy_rd_en_split2 = phy_rd_en; + assign phy_dout_split2 = phy_dout; + +// these wires are needed to coerce correct synthesis +// the synthesizer did not always see the widths of the +// parameters as 4 bits. + +wire [3:0] blb0 = BYTE_LANES_B0; +wire [3:0] blb1 = BYTE_LANES_B1; +wire [3:0] blb2 = BYTE_LANES_B2; + +wire [3:0] dcb0 = DATA_CTL_B0; +wire [3:0] dcb1 = DATA_CTL_B1; +wire [3:0] dcb2 = DATA_CTL_B2; + +assign pi_dqs_found_all = & (pi_dqs_found_lanes | ~ {blb2, blb1, blb0} | ~ {dcb2, dcb1, dcb0}); +assign pi_dqs_found_any = | (pi_dqs_found_lanes & {blb2, blb1, blb0} & {dcb2, dcb1, dcb0}); +assign pi_phase_locked_all = & pi_phase_locked_all_w[HIGHEST_BANK-1:0]; +assign calib_zero_inputs_int = {3'bxxx, calib_zero_inputs}; +//Added to remove concadination in the instantiation +assign calib_sel_byte0 = {calib_zero_inputs_int[0], calib_sel[1:0]} ; +assign calib_sel_byte1 = {calib_zero_inputs_int[1], calib_sel[1:0]} ; +assign calib_sel_byte2 = {calib_zero_inputs_int[2], calib_sel[1:0]} ; + +assign calib_zero_lanes_int = calib_zero_lanes; + +assign phy_ctl_ready = &phy_ctl_ready_w[HIGHEST_BANK-1:0]; + +assign phy_ctl_mstr_empty = phy_ctl_empty[MASTER_PHY_CTL]; + +assign of_ctl_a_full = |of_ctl_a_full_v; +assign of_ctl_full = |of_ctl_full_v; +assign of_data_a_full = |of_data_a_full_v; +assign of_data_full = |of_data_full_v; +assign pre_data_a_full= |pre_data_a_full_v; +// if if_empty_def == 1, empty is asserted only if all are empty; +// this allows the user to detect a skewed fifo depth and self-clear +// if desired. It avoids a reset to clear the flags. +assign if_empty = !if_empty_def ? |if_empty_v : &if_empty_v; +assign if_empty_or = |if_empty_or_v; +assign if_empty_and = &if_empty_and_v; +assign if_a_empty = |if_a_empty_v; + + +generate +genvar i; +for (i = 0; i != NUM_DDR_CK; i = i + 1) begin : ddr_clk_gen + case ((GENERATE_DDR_CK_MAP >> (16*i)) & 16'hffff) + 16'h3041: assign ddr_clk[(i+1)*LP_DDR_CK_WIDTH-1:(i*LP_DDR_CK_WIDTH)] = (ddr_clk_w[0] >> (LP_DDR_CK_WIDTH*i)) & 2'b11; + 16'h3042: assign ddr_clk[(i+1)*LP_DDR_CK_WIDTH-1:(i*LP_DDR_CK_WIDTH)] = (ddr_clk_w[0] >> (LP_DDR_CK_WIDTH*i+12)) & 2'b11; + 16'h3043: assign ddr_clk[(i+1)*LP_DDR_CK_WIDTH-1:(i*LP_DDR_CK_WIDTH)] = (ddr_clk_w[0] >> (LP_DDR_CK_WIDTH*i+24)) & 2'b11; + 16'h3044: assign ddr_clk[(i+1)*LP_DDR_CK_WIDTH-1:(i*LP_DDR_CK_WIDTH)] = (ddr_clk_w[0] >> (LP_DDR_CK_WIDTH*i+36)) & 2'b11; + 16'h3141: assign ddr_clk[(i+1)*LP_DDR_CK_WIDTH-1:(i*LP_DDR_CK_WIDTH)] = (ddr_clk_w[1] >> (LP_DDR_CK_WIDTH*i)) & 2'b11; + 16'h3142: assign ddr_clk[(i+1)*LP_DDR_CK_WIDTH-1:(i*LP_DDR_CK_WIDTH)] = (ddr_clk_w[1] >> (LP_DDR_CK_WIDTH*i+12)) & 2'b11; + 16'h3143: assign ddr_clk[(i+1)*LP_DDR_CK_WIDTH-1:(i*LP_DDR_CK_WIDTH)] = (ddr_clk_w[1] >> (LP_DDR_CK_WIDTH*i+24)) & 2'b11; + 16'h3144: assign ddr_clk[(i+1)*LP_DDR_CK_WIDTH-1:(i*LP_DDR_CK_WIDTH)] = (ddr_clk_w[1] >> (LP_DDR_CK_WIDTH*i+36)) & 2'b11; + 16'h3241: assign ddr_clk[(i+1)*LP_DDR_CK_WIDTH-1:(i*LP_DDR_CK_WIDTH)] = (ddr_clk_w[2] >> (LP_DDR_CK_WIDTH*i)) & 2'b11; + 16'h3242: assign ddr_clk[(i+1)*LP_DDR_CK_WIDTH-1:(i*LP_DDR_CK_WIDTH)] = (ddr_clk_w[2] >> (LP_DDR_CK_WIDTH*i+12)) & 2'b11; + 16'h3243: assign ddr_clk[(i+1)*LP_DDR_CK_WIDTH-1:(i*LP_DDR_CK_WIDTH)] = (ddr_clk_w[2] >> (LP_DDR_CK_WIDTH*i+24)) & 2'b11; + 16'h3244: assign ddr_clk[(i+1)*LP_DDR_CK_WIDTH-1:(i*LP_DDR_CK_WIDTH)] = (ddr_clk_w[2] >> (LP_DDR_CK_WIDTH*i+36)) & 2'b11; + default : initial $display("ERROR: mc_phy ddr_clk_gen : invalid specification for parameter GENERATE_DDR_CK_MAP , clock index = %d, spec= %x (hex) ", i, (( GENERATE_DDR_CK_MAP >> (16 * i )) & 16'hffff )); + endcase +end +endgenerate + +//assign rclk = rclk_w[RCLK_SELECT_BANK]; + +reg rst_auxout; +reg rst_auxout_r; +reg rst_auxout_rr; + +always @(posedge auxout_clk or posedge rst) begin + if ( rst) begin + rst_auxout_r <= #(1) 1'b1; + rst_auxout_rr <= #(1) 1'b1; + end + else begin + rst_auxout_r <= #(1) rst; + rst_auxout_rr <= #(1) rst_auxout_r; + end +end +if ( LP_RCLK_SELECT_EDGE[0]) begin + always @(posedge auxout_clk or posedge rst) begin + if ( rst) begin + rst_auxout <= #(1) 1'b1; + end + else begin + rst_auxout <= #(1) rst_auxout_rr; + end + end +end +else begin + always @(negedge auxout_clk or posedge rst) begin + if ( rst) begin + rst_auxout <= #(1) 1'b1; + end + else begin + rst_auxout <= #(1) rst_auxout_rr; + end + end +end + +localparam L_RESET_SELECT_BANK = + (BYTE_LANES_B1 == 0 && BYTE_LANES_B2 == 0 && RCLK_SELECT_BANK) ? 0 : RCLK_SELECT_BANK; + +always @(*) begin + rst_out = rst_out_w[L_RESET_SELECT_BANK] & ddr_rst_in_n; +end + +always @(posedge phy_clk) begin + if ( rst) + mcGo_r <= #(1) 0; + else + mcGo_r <= #(1) (mcGo_r << 1) | &mcGo_w; +end + +assign mcGo = mcGo_r[15]; + + +generate + + +// this is an optional 1 clock delay to add latency to the phy_control programming path + +if (PHYCTL_CMD_FIFO == "TRUE") begin : cmd_fifo_soft + reg [31:0] phy_wd_reg = 0; + reg [3:0] aux_in1_reg = 0; + reg [3:0] aux_in2_reg = 0; + reg sfifo_ready = 0; + assign _phy_ctl_wd = phy_wd_reg; + assign aux_in_[1] = aux_in1_reg; + assign aux_in_[2] = aux_in2_reg; + assign phy_ctl_a_full = |_phy_ctl_a_full_p; + assign phy_ctl_full[0] = |_phy_ctl_full_p; + assign phy_ctl_full[1] = |_phy_ctl_full_p; + assign phy_ctl_full[2] = |_phy_ctl_full_p; + assign phy_ctl_full[3] = |_phy_ctl_full_p; + assign _phy_clk = phy_clk; + + always @(posedge phy_clk) begin + phy_wd_reg <= #1 phy_ctl_wd; + aux_in1_reg <= #1 aux_in_1; + aux_in2_reg <= #1 aux_in_2; + sfifo_ready <= #1 phy_ctl_wr; + end + +end + +else if (PHYCTL_CMD_FIFO == "FALSE") begin + assign _phy_ctl_wd = phy_ctl_wd; + assign aux_in_[1] = aux_in_1; + assign aux_in_[2] = aux_in_2; + assign phy_ctl_a_full = |_phy_ctl_a_full_p; + assign phy_ctl_full[0] = |_phy_ctl_full_p; + assign phy_ctl_full[3:1] = 3'b000; + assign _phy_clk = phy_clk; + +end +endgenerate + + +// instance of four-lane phy + +generate + +if (HIGHEST_BANK == 3) begin : banks_3 + assign byte_rd_en_oth_banks[1:0] = {byte_rd_en_v[1],byte_rd_en_v[2]}; + assign byte_rd_en_oth_banks[3:2] = {byte_rd_en_v[0],byte_rd_en_v[2]}; + assign byte_rd_en_oth_banks[5:4] = {byte_rd_en_v[0],byte_rd_en_v[1]}; +end +else if (HIGHEST_BANK == 2) begin : banks_2 + assign byte_rd_en_oth_banks[1:0] = {byte_rd_en_v[1],1'b1}; + assign byte_rd_en_oth_banks[3:2] = {byte_rd_en_v[0],1'b1}; +end +else begin : banks_1 + assign byte_rd_en_oth_banks[1:0] = {1'b1,1'b1}; +end + +if ( BYTE_LANES_B0 != 0) begin : ddr_phy_4lanes_0 +mig_7series_v4_0_ddr_phy_4lanes # + ( + .BYTE_LANES (BYTE_LANES_B0), /* four bits, one per lanes */ + .DATA_CTL_N (PHY_0_DATA_CTL), /* four bits, one per lane */ + .PO_CTL_COARSE_BYPASS (PO_CTL_COARSE_BYPASS), + .PO_FINE_DELAY (L_PHY_0_PO_FINE_DELAY), + .BITLANES (PHY_0_BITLANES), + .BITLANES_OUTONLY (PHY_0_BITLANES_OUTONLY), + .BYTELANES_DDR_CK (LP_PHY_0_BYTELANES_DDR_CK), + .LAST_BANK (PHY_0_IS_LAST_BANK), + .LANE_REMAP (PHY_0_LANE_REMAP), + .OF_ALMOST_FULL_VALUE (PHY_0_OF_ALMOST_FULL_VALUE), + .IF_ALMOST_EMPTY_VALUE (PHY_0_IF_ALMOST_EMPTY_VALUE), + .GENERATE_IDELAYCTRL (PHY_0_GENERATE_IDELAYCTRL), + .IODELAY_GRP (PHY_0_IODELAY_GRP), + .FPGA_SPEED_GRADE (FPGA_SPEED_GRADE), + .BANK_TYPE (BANK_TYPE), + .NUM_DDR_CK (NUM_DDR_CK), + .TCK (TCK), + .RCLK_SELECT_LANE (RCLK_SELECT_LANE), + .USE_PRE_POST_FIFO (USE_PRE_POST_FIFO), + .SYNTHESIS (SYNTHESIS), + .PC_CLK_RATIO (PHY_CLK_RATIO), + .PC_EVENTS_DELAY (PHY_EVENTS_DELAY), + .PC_FOUR_WINDOW_CLOCKS (PHY_FOUR_WINDOW_CLOCKS), + .PC_BURST_MODE (PHY_0_A_BURST_MODE), + .PC_SYNC_MODE (PHY_SYNC_MODE), + .PC_MULTI_REGION (PHY_MULTI_REGION), + .PC_PHY_COUNT_EN (PHY_COUNT_EN), + .PC_DISABLE_SEQ_MATCH (PHY_DISABLE_SEQ_MATCH), + .PC_CMD_OFFSET (PHY_0_CMD_OFFSET), + .PC_RD_CMD_OFFSET_0 (PHY_0_RD_CMD_OFFSET_0), + .PC_RD_CMD_OFFSET_1 (PHY_0_RD_CMD_OFFSET_1), + .PC_RD_CMD_OFFSET_2 (PHY_0_RD_CMD_OFFSET_2), + .PC_RD_CMD_OFFSET_3 (PHY_0_RD_CMD_OFFSET_3), + .PC_RD_DURATION_0 (PHY_0_RD_DURATION_0), + .PC_RD_DURATION_1 (PHY_0_RD_DURATION_1), + .PC_RD_DURATION_2 (PHY_0_RD_DURATION_2), + .PC_RD_DURATION_3 (PHY_0_RD_DURATION_3), + .PC_WR_CMD_OFFSET_0 (PHY_0_WR_CMD_OFFSET_0), + .PC_WR_CMD_OFFSET_1 (PHY_0_WR_CMD_OFFSET_1), + .PC_WR_CMD_OFFSET_2 (PHY_0_WR_CMD_OFFSET_2), + .PC_WR_CMD_OFFSET_3 (PHY_0_WR_CMD_OFFSET_3), + .PC_WR_DURATION_0 (PHY_0_WR_DURATION_0), + .PC_WR_DURATION_1 (PHY_0_WR_DURATION_1), + .PC_WR_DURATION_2 (PHY_0_WR_DURATION_2), + .PC_WR_DURATION_3 (PHY_0_WR_DURATION_3), + .PC_AO_WRLVL_EN (PHY_0_AO_WRLVL_EN), + .PC_AO_TOGGLE (PHY_0_AO_TOGGLE), + + .PI_SEL_CLK_OFFSET (PI_SEL_CLK_OFFSET), + + .A_PI_FINE_DELAY (L_PHY_0_A_PI_FINE_DELAY), + .B_PI_FINE_DELAY (L_PHY_0_B_PI_FINE_DELAY), + .C_PI_FINE_DELAY (L_PHY_0_C_PI_FINE_DELAY), + .D_PI_FINE_DELAY (L_PHY_0_D_PI_FINE_DELAY), + + .A_PI_FREQ_REF_DIV (PHY_0_A_PI_FREQ_REF_DIV), + .A_PI_BURST_MODE (PHY_0_A_BURST_MODE), + .A_PI_OUTPUT_CLK_SRC (L_PHY_0_A_PI_OUTPUT_CLK_SRC), + .B_PI_OUTPUT_CLK_SRC (L_PHY_0_B_PI_OUTPUT_CLK_SRC), + .C_PI_OUTPUT_CLK_SRC (L_PHY_0_C_PI_OUTPUT_CLK_SRC), + .D_PI_OUTPUT_CLK_SRC (L_PHY_0_D_PI_OUTPUT_CLK_SRC), + .A_PO_OUTPUT_CLK_SRC (PHY_0_A_PO_OUTPUT_CLK_SRC), + .A_PO_OCLK_DELAY (PHY_0_A_PO_OCLK_DELAY), + .A_PO_OCLKDELAY_INV (PHY_0_A_PO_OCLKDELAY_INV), + .A_OF_ARRAY_MODE (PHY_0_A_OF_ARRAY_MODE), + .B_OF_ARRAY_MODE (PHY_0_B_OF_ARRAY_MODE), + .C_OF_ARRAY_MODE (PHY_0_C_OF_ARRAY_MODE), + .D_OF_ARRAY_MODE (PHY_0_D_OF_ARRAY_MODE), + .A_IF_ARRAY_MODE (PHY_0_A_IF_ARRAY_MODE), + .B_IF_ARRAY_MODE (PHY_0_B_IF_ARRAY_MODE), + .C_IF_ARRAY_MODE (PHY_0_C_IF_ARRAY_MODE), + .D_IF_ARRAY_MODE (PHY_0_D_IF_ARRAY_MODE), + .A_OS_DATA_RATE (PHY_0_A_OSERDES_DATA_RATE), + .A_OS_DATA_WIDTH (PHY_0_A_OSERDES_DATA_WIDTH), + .B_OS_DATA_RATE (PHY_0_B_OSERDES_DATA_RATE), + .B_OS_DATA_WIDTH (PHY_0_B_OSERDES_DATA_WIDTH), + .C_OS_DATA_RATE (PHY_0_C_OSERDES_DATA_RATE), + .C_OS_DATA_WIDTH (PHY_0_C_OSERDES_DATA_WIDTH), + .D_OS_DATA_RATE (PHY_0_D_OSERDES_DATA_RATE), + .D_OS_DATA_WIDTH (PHY_0_D_OSERDES_DATA_WIDTH), + .A_IDELAYE2_IDELAY_TYPE (PHY_0_A_IDELAYE2_IDELAY_TYPE), + .A_IDELAYE2_IDELAY_VALUE (PHY_0_A_IDELAYE2_IDELAY_VALUE) + ,.CKE_ODT_AUX (CKE_ODT_AUX) + ,.PI_DIV2_INCDEC (PI_DIV2_INCDEC) +) + u_ddr_phy_4lanes +( + .rst (rst), + .phy_clk (phy_clk_split0), + .clk_div2 (clk_div2), + .phy_ctl_clk (phy_ctl_clk_split0), + .phy_ctl_wd (phy_ctl_wd_split0), + .data_offset (phy_ctl_wd_split0[PC_DATA_OFFSET_RANGE_HI : PC_DATA_OFFSET_RANGE_LO]), + .phy_ctl_wr (phy_ctl_wr_split0), + .mem_refclk (mem_refclk_split), + .freq_refclk (freq_refclk_split), + .mem_refclk_div4 (mem_refclk_div4_split), + .sync_pulse (sync_pulse_split), + .phy_dout (phy_dout_split0[HIGHEST_LANE_B0*80-1:0]), + .phy_cmd_wr_en (phy_cmd_wr_en_split0), + .phy_data_wr_en (phy_data_wr_en_split0), + .phy_rd_en (phy_rd_en_split0), + .pll_lock (pll_lock), + .ddr_clk (ddr_clk_w[0]), + .rclk (), + .rst_out (rst_out_w[0]), + .mcGo (mcGo_w[0]), + .ref_dll_lock (ref_dll_lock_w[0]), + .idelayctrl_refclk (idelayctrl_refclk), + .idelay_inc (idelay_inc), + .idelay_ce (idelay_ce), + .idelay_ld (idelay_ld), + .phy_ctl_mstr_empty (phy_ctl_mstr_empty), + .if_rst (if_rst), + .if_empty_def (if_empty_def), + .byte_rd_en_oth_banks (byte_rd_en_oth_banks[1:0]), + .if_a_empty (if_a_empty_v[0]), + .if_empty (if_empty_v[0]), + .byte_rd_en (byte_rd_en_v[0]), + .if_empty_or (if_empty_or_v[0]), + .if_empty_and (if_empty_and_v[0]), + .of_ctl_a_full (of_ctl_a_full_v[0]), + .of_data_a_full (of_data_a_full_v[0]), + .of_ctl_full (of_ctl_full_v[0]), + .of_data_full (of_data_full_v[0]), + .pre_data_a_full (pre_data_a_full_v[0]), + .phy_din (phy_din[HIGHEST_LANE_B0*80-1:0]), + .phy_ctl_a_full (_phy_ctl_a_full_p[0]), + .phy_ctl_full (_phy_ctl_full_p[0]), + .phy_ctl_empty (phy_ctl_empty[0]), + .mem_dq_out (mem_dq_out[HIGHEST_LANE_B0*12-1:0]), + .mem_dq_ts (mem_dq_ts[HIGHEST_LANE_B0*12-1:0]), + .mem_dq_in (mem_dq_in[HIGHEST_LANE_B0*10-1:0]), + .mem_dqs_out (mem_dqs_out[HIGHEST_LANE_B0-1:0]), + .mem_dqs_ts (mem_dqs_ts[HIGHEST_LANE_B0-1:0]), + .mem_dqs_in (mem_dqs_in[HIGHEST_LANE_B0-1:0]), + .aux_out (aux_out_[3:0]), + .phy_ctl_ready (phy_ctl_ready_w[0]), + .phy_write_calib (phy_write_calib), + .phy_read_calib (phy_read_calib), +// .scan_test_bus_A (scan_test_bus_A), +// .scan_test_bus_B (), +// .scan_test_bus_C (), +// .scan_test_bus_D (), + .phyGo (phyGo), + .input_sink (input_sink), + + .calib_sel (calib_sel_byte0), + .calib_zero_ctrl (calib_zero_ctrl[0]), + .calib_zero_lanes (calib_zero_lanes_int[3:0]), + .calib_in_common (calib_in_common), + .po_coarse_enable (po_coarse_enable[0]), + .po_fine_enable (po_fine_enable[0]), + .po_fine_inc (po_fine_inc[0]), + .po_coarse_inc (po_coarse_inc[0]), + .po_counter_load_en (po_counter_load_en), + .po_sel_fine_oclk_delay (po_sel_fine_oclk_delay[0]), + .po_counter_load_val (po_counter_load_val), + .po_counter_read_en (po_counter_read_en), + .po_coarse_overflow (po_coarse_overflow_w[0]), + .po_fine_overflow (po_fine_overflow_w[0]), + .po_counter_read_val (po_counter_read_val_w[0]), + + .pi_rst_dqs_find (pi_rst_dqs_find[0]), + .pi_fine_enable (pi_fine_enable), + .pi_fine_inc (pi_fine_inc), + .pi_counter_load_en (pi_counter_load_en), + .pi_counter_read_en (pi_counter_read_en), + .pi_counter_load_val (pi_counter_load_val), + .pi_fine_overflow (pi_fine_overflow_w[0]), + .pi_counter_read_val (pi_counter_read_val_w[0]), + .pi_dqs_found (pi_dqs_found_w[0]), + .pi_dqs_found_all (pi_dqs_found_all_w[0]), + .pi_dqs_found_any (pi_dqs_found_any_w[0]), + .pi_phase_locked_lanes (pi_phase_locked_lanes[HIGHEST_LANE_B0-1:0]), + .pi_dqs_found_lanes (pi_dqs_found_lanes[HIGHEST_LANE_B0-1:0]), + .pi_dqs_out_of_range (pi_dqs_out_of_range_w[0]), + .pi_phase_locked (pi_phase_locked_w[0]), + .pi_phase_locked_all (pi_phase_locked_all_w[0]), + .fine_delay (fine_delay), + .fine_delay_sel (fine_delay_sel) +); + + always @(posedge auxout_clk or posedge rst_auxout) begin + if (rst_auxout) begin + aux_out[0] <= #100 0; + aux_out[2] <= #100 0; + end + else begin + aux_out[0] <= #100 aux_out_[0]; + aux_out[2] <= #100 aux_out_[2]; + end + end + if ( LP_RCLK_SELECT_EDGE[0]) begin + always @(posedge auxout_clk or posedge rst_auxout) begin + if (rst_auxout) begin + aux_out[1] <= #100 0; + aux_out[3] <= #100 0; + end + else begin + aux_out[1] <= #100 aux_out_[1]; + aux_out[3] <= #100 aux_out_[3]; + end + end + end + else begin + always @(negedge auxout_clk or posedge rst_auxout) begin + if (rst_auxout) begin + aux_out[1] <= #100 0; + aux_out[3] <= #100 0; + end + else begin + aux_out[1] <= #100 aux_out_[1]; + aux_out[3] <= #100 aux_out_[3]; + end + end + end +end +else begin + if ( HIGHEST_BANK > 0) begin + assign phy_din[HIGHEST_LANE_B0*80-1:0] = 0; + assign _phy_ctl_a_full_p[0] = 0; + assign of_ctl_a_full_v[0] = 0; + assign of_ctl_full_v[0] = 0; + assign of_data_a_full_v[0] = 0; + assign of_data_full_v[0] = 0; + assign pre_data_a_full_v[0] = 0; + assign if_empty_v[0] = 0; + assign byte_rd_en_v[0] = 1; + always @(*) + aux_out[3:0] = 0; + end + assign pi_dqs_found_w[0] = 1; + assign pi_dqs_found_all_w[0] = 1; + assign pi_dqs_found_any_w[0] = 0; + assign pi_phase_locked_lanes[HIGHEST_LANE_B0-1:0] = 4'b1111; + assign pi_dqs_found_lanes[HIGHEST_LANE_B0-1:0] = 4'b1111; + assign pi_dqs_out_of_range_w[0] = 0; + assign pi_phase_locked_w[0] = 1; + assign po_fine_overflow_w[0] = 0; + assign po_coarse_overflow_w[0] = 0; + assign po_fine_overflow_w[0] = 0; + assign pi_fine_overflow_w[0] = 0; + assign po_counter_read_val_w[0] = 0; + assign pi_counter_read_val_w[0] = 0; + assign mcGo_w[0] = 1; + if ( RCLK_SELECT_BANK == 0) + always @(*) + aux_out[3:0] = 0; +end + +if ( BYTE_LANES_B1 != 0) begin : ddr_phy_4lanes_1 + +mig_7series_v4_0_ddr_phy_4lanes # + ( + .BYTE_LANES (BYTE_LANES_B1), /* four bits, one per lanes */ + .DATA_CTL_N (PHY_1_DATA_CTL), /* four bits, one per lane */ + .PO_CTL_COARSE_BYPASS (PO_CTL_COARSE_BYPASS), + .PO_FINE_DELAY (L_PHY_1_PO_FINE_DELAY), + .BITLANES (PHY_1_BITLANES), + .BITLANES_OUTONLY (PHY_1_BITLANES_OUTONLY), + .BYTELANES_DDR_CK (LP_PHY_1_BYTELANES_DDR_CK), + .LAST_BANK (PHY_1_IS_LAST_BANK ), + .LANE_REMAP (PHY_1_LANE_REMAP), + .OF_ALMOST_FULL_VALUE (PHY_1_OF_ALMOST_FULL_VALUE), + .IF_ALMOST_EMPTY_VALUE (PHY_1_IF_ALMOST_EMPTY_VALUE), + .GENERATE_IDELAYCTRL (PHY_1_GENERATE_IDELAYCTRL), + .IODELAY_GRP (PHY_1_IODELAY_GRP), + .FPGA_SPEED_GRADE (FPGA_SPEED_GRADE), + .BANK_TYPE (BANK_TYPE), + .NUM_DDR_CK (NUM_DDR_CK), + .TCK (TCK), + .RCLK_SELECT_LANE (RCLK_SELECT_LANE), + .USE_PRE_POST_FIFO (USE_PRE_POST_FIFO), + .SYNTHESIS (SYNTHESIS), + .PC_CLK_RATIO (PHY_CLK_RATIO), + .PC_EVENTS_DELAY (PHY_EVENTS_DELAY), + .PC_FOUR_WINDOW_CLOCKS (PHY_FOUR_WINDOW_CLOCKS), + .PC_BURST_MODE (PHY_1_A_BURST_MODE), + .PC_SYNC_MODE (PHY_SYNC_MODE), + .PC_MULTI_REGION (PHY_MULTI_REGION), + .PC_PHY_COUNT_EN (PHY_COUNT_EN), + .PC_DISABLE_SEQ_MATCH (PHY_DISABLE_SEQ_MATCH), + .PC_CMD_OFFSET (PHY_1_CMD_OFFSET), + .PC_RD_CMD_OFFSET_0 (PHY_1_RD_CMD_OFFSET_0), + .PC_RD_CMD_OFFSET_1 (PHY_1_RD_CMD_OFFSET_1), + .PC_RD_CMD_OFFSET_2 (PHY_1_RD_CMD_OFFSET_2), + .PC_RD_CMD_OFFSET_3 (PHY_1_RD_CMD_OFFSET_3), + .PC_RD_DURATION_0 (PHY_1_RD_DURATION_0), + .PC_RD_DURATION_1 (PHY_1_RD_DURATION_1), + .PC_RD_DURATION_2 (PHY_1_RD_DURATION_2), + .PC_RD_DURATION_3 (PHY_1_RD_DURATION_3), + .PC_WR_CMD_OFFSET_0 (PHY_1_WR_CMD_OFFSET_0), + .PC_WR_CMD_OFFSET_1 (PHY_1_WR_CMD_OFFSET_1), + .PC_WR_CMD_OFFSET_2 (PHY_1_WR_CMD_OFFSET_2), + .PC_WR_CMD_OFFSET_3 (PHY_1_WR_CMD_OFFSET_3), + .PC_WR_DURATION_0 (PHY_1_WR_DURATION_0), + .PC_WR_DURATION_1 (PHY_1_WR_DURATION_1), + .PC_WR_DURATION_2 (PHY_1_WR_DURATION_2), + .PC_WR_DURATION_3 (PHY_1_WR_DURATION_3), + .PC_AO_WRLVL_EN (PHY_1_AO_WRLVL_EN), + .PC_AO_TOGGLE (PHY_1_AO_TOGGLE), + + .PI_SEL_CLK_OFFSET (PI_SEL_CLK_OFFSET), + + .A_PI_FINE_DELAY (L_PHY_1_A_PI_FINE_DELAY), + .B_PI_FINE_DELAY (L_PHY_1_B_PI_FINE_DELAY), + .C_PI_FINE_DELAY (L_PHY_1_C_PI_FINE_DELAY), + .D_PI_FINE_DELAY (L_PHY_1_D_PI_FINE_DELAY), + + .A_PI_FREQ_REF_DIV (PHY_1_A_PI_FREQ_REF_DIV), + .A_PI_BURST_MODE (PHY_1_A_BURST_MODE), + .A_PI_OUTPUT_CLK_SRC (L_PHY_1_A_PI_OUTPUT_CLK_SRC), + .B_PI_OUTPUT_CLK_SRC (L_PHY_1_B_PI_OUTPUT_CLK_SRC), + .C_PI_OUTPUT_CLK_SRC (L_PHY_1_C_PI_OUTPUT_CLK_SRC), + .D_PI_OUTPUT_CLK_SRC (L_PHY_1_D_PI_OUTPUT_CLK_SRC), + .A_PO_OUTPUT_CLK_SRC (PHY_1_A_PO_OUTPUT_CLK_SRC), + .A_PO_OCLK_DELAY (PHY_1_A_PO_OCLK_DELAY), + .A_PO_OCLKDELAY_INV (PHY_1_A_PO_OCLKDELAY_INV), + .A_OF_ARRAY_MODE (PHY_1_A_OF_ARRAY_MODE), + .B_OF_ARRAY_MODE (PHY_1_B_OF_ARRAY_MODE), + .C_OF_ARRAY_MODE (PHY_1_C_OF_ARRAY_MODE), + .D_OF_ARRAY_MODE (PHY_1_D_OF_ARRAY_MODE), + .A_IF_ARRAY_MODE (PHY_1_A_IF_ARRAY_MODE), + .B_IF_ARRAY_MODE (PHY_1_B_IF_ARRAY_MODE), + .C_IF_ARRAY_MODE (PHY_1_C_IF_ARRAY_MODE), + .D_IF_ARRAY_MODE (PHY_1_D_IF_ARRAY_MODE), + .A_OS_DATA_RATE (PHY_1_A_OSERDES_DATA_RATE), + .A_OS_DATA_WIDTH (PHY_1_A_OSERDES_DATA_WIDTH), + .B_OS_DATA_RATE (PHY_1_B_OSERDES_DATA_RATE), + .B_OS_DATA_WIDTH (PHY_1_B_OSERDES_DATA_WIDTH), + .C_OS_DATA_RATE (PHY_1_C_OSERDES_DATA_RATE), + .C_OS_DATA_WIDTH (PHY_1_C_OSERDES_DATA_WIDTH), + .D_OS_DATA_RATE (PHY_1_D_OSERDES_DATA_RATE), + .D_OS_DATA_WIDTH (PHY_1_D_OSERDES_DATA_WIDTH), + .A_IDELAYE2_IDELAY_TYPE (PHY_1_A_IDELAYE2_IDELAY_TYPE), + .A_IDELAYE2_IDELAY_VALUE (PHY_1_A_IDELAYE2_IDELAY_VALUE) + ,.CKE_ODT_AUX (CKE_ODT_AUX) + ,.PI_DIV2_INCDEC (PI_DIV2_INCDEC) +) + u_ddr_phy_4lanes +( + .rst (rst), + .phy_clk (phy_clk_split1), + .clk_div2 (clk_div2), + .phy_ctl_clk (phy_ctl_clk_split1), + .phy_ctl_wd (phy_ctl_wd_split1), + .data_offset (phy_data_offset_1_split1), + .phy_ctl_wr (phy_ctl_wr_split1), + .mem_refclk (mem_refclk_split), + .freq_refclk (freq_refclk_split), + .mem_refclk_div4 (mem_refclk_div4_split), + .sync_pulse (sync_pulse_split), + .phy_dout (phy_dout_split1[HIGHEST_LANE_B1*80+320-1:320]), + .phy_cmd_wr_en (phy_cmd_wr_en_split1), + .phy_data_wr_en (phy_data_wr_en_split1), + .phy_rd_en (phy_rd_en_split1), + .pll_lock (pll_lock), + .ddr_clk (ddr_clk_w[1]), + .rclk (), + .rst_out (rst_out_w[1]), + .mcGo (mcGo_w[1]), + .ref_dll_lock (ref_dll_lock_w[1]), + .idelayctrl_refclk (idelayctrl_refclk), + .idelay_inc (idelay_inc), + .idelay_ce (idelay_ce), + .idelay_ld (idelay_ld), + .phy_ctl_mstr_empty (phy_ctl_mstr_empty), + .if_rst (if_rst), + .if_empty_def (if_empty_def), + .byte_rd_en_oth_banks (byte_rd_en_oth_banks[3:2]), + .if_a_empty (if_a_empty_v[1]), + .if_empty (if_empty_v[1]), + .byte_rd_en (byte_rd_en_v[1]), + .if_empty_or (if_empty_or_v[1]), + .if_empty_and (if_empty_and_v[1]), + .of_ctl_a_full (of_ctl_a_full_v[1]), + .of_data_a_full (of_data_a_full_v[1]), + .of_ctl_full (of_ctl_full_v[1]), + .of_data_full (of_data_full_v[1]), + .pre_data_a_full (pre_data_a_full_v[1]), + .phy_din (phy_din[HIGHEST_LANE_B1*80+320-1:320]), + .phy_ctl_a_full (_phy_ctl_a_full_p[1]), + .phy_ctl_full (_phy_ctl_full_p[1]), + .phy_ctl_empty (phy_ctl_empty[1]), + .mem_dq_out (mem_dq_out[HIGHEST_LANE_B1*12+48-1:48]), + .mem_dq_ts (mem_dq_ts[HIGHEST_LANE_B1*12+48-1:48]), + .mem_dq_in (mem_dq_in[HIGHEST_LANE_B1*10+40-1:40]), + .mem_dqs_out (mem_dqs_out[HIGHEST_LANE_B1+4-1:4]), + .mem_dqs_ts (mem_dqs_ts[HIGHEST_LANE_B1+4-1:4]), + .mem_dqs_in (mem_dqs_in[HIGHEST_LANE_B1+4-1:4]), + .aux_out (aux_out_[7:4]), + .phy_ctl_ready (phy_ctl_ready_w[1]), + .phy_write_calib (phy_write_calib), + .phy_read_calib (phy_read_calib), +// .scan_test_bus_A (scan_test_bus_A), +// .scan_test_bus_B (), +// .scan_test_bus_C (), +// .scan_test_bus_D (), + .phyGo (phyGo), + .input_sink (input_sink), + + .calib_sel (calib_sel_byte1), + .calib_zero_ctrl (calib_zero_ctrl[1]), + .calib_zero_lanes (calib_zero_lanes_int[7:4]), + .calib_in_common (calib_in_common), + .po_coarse_enable (po_coarse_enable[1]), + .po_fine_enable (po_fine_enable[1]), + .po_fine_inc (po_fine_inc[1]), + .po_coarse_inc (po_coarse_inc[1]), + .po_counter_load_en (po_counter_load_en), + .po_sel_fine_oclk_delay (po_sel_fine_oclk_delay[1]), + .po_counter_load_val (po_counter_load_val), + .po_counter_read_en (po_counter_read_en), + .po_coarse_overflow (po_coarse_overflow_w[1]), + .po_fine_overflow (po_fine_overflow_w[1]), + .po_counter_read_val (po_counter_read_val_w[1]), + + .pi_rst_dqs_find (pi_rst_dqs_find[1]), + .pi_fine_enable (pi_fine_enable), + .pi_fine_inc (pi_fine_inc), + .pi_counter_load_en (pi_counter_load_en), + .pi_counter_read_en (pi_counter_read_en), + .pi_counter_load_val (pi_counter_load_val), + .pi_fine_overflow (pi_fine_overflow_w[1]), + .pi_counter_read_val (pi_counter_read_val_w[1]), + .pi_dqs_found (pi_dqs_found_w[1]), + .pi_dqs_found_all (pi_dqs_found_all_w[1]), + .pi_dqs_found_any (pi_dqs_found_any_w[1]), + .pi_phase_locked_lanes (pi_phase_locked_lanes[HIGHEST_LANE_B1+4-1:4]), + .pi_dqs_found_lanes (pi_dqs_found_lanes[HIGHEST_LANE_B1+4-1:4]), + .pi_dqs_out_of_range (pi_dqs_out_of_range_w[1]), + .pi_phase_locked (pi_phase_locked_w[1]), + .pi_phase_locked_all (pi_phase_locked_all_w[1]), + .fine_delay (fine_delay), + .fine_delay_sel (fine_delay_sel) +); + + always @(posedge auxout_clk or posedge rst_auxout) begin + if (rst_auxout) begin + aux_out[4] <= #100 0; + aux_out[6] <= #100 0; + end + else begin + aux_out[4] <= #100 aux_out_[4]; + aux_out[6] <= #100 aux_out_[6]; + end + end + if ( LP_RCLK_SELECT_EDGE[1]) begin + always @(posedge auxout_clk or posedge rst_auxout) begin + if (rst_auxout) begin + aux_out[5] <= #100 0; + aux_out[7] <= #100 0; + end + else begin + aux_out[5] <= #100 aux_out_[5]; + aux_out[7] <= #100 aux_out_[7]; + end + end + end + else begin + always @(negedge auxout_clk or posedge rst_auxout) begin + if (rst_auxout) begin + aux_out[5] <= #100 0; + aux_out[7] <= #100 0; + end + else begin + aux_out[5] <= #100 aux_out_[5]; + aux_out[7] <= #100 aux_out_[7]; + end + end + end +end +else begin + if ( HIGHEST_BANK > 1) begin + assign phy_din[HIGHEST_LANE_B1*80+320-1:320] = 0; + assign _phy_ctl_a_full_p[1] = 0; + assign of_ctl_a_full_v[1] = 0; + assign of_ctl_full_v[1] = 0; + assign of_data_a_full_v[1] = 0; + assign of_data_full_v[1] = 0; + assign pre_data_a_full_v[1] = 0; + assign if_empty_v[1] = 0; + assign byte_rd_en_v[1] = 1; + assign pi_phase_locked_lanes[HIGHEST_LANE_B1+4-1:4] = 4'b1111; + assign pi_dqs_found_lanes[HIGHEST_LANE_B1+4-1:4] = 4'b1111; + always @(*) + aux_out[7:4] = 0; + end + assign pi_dqs_found_w[1] = 1; + assign pi_dqs_found_all_w[1] = 1; + assign pi_dqs_found_any_w[1] = 0; + assign pi_dqs_out_of_range_w[1] = 0; + assign pi_phase_locked_w[1] = 1; + assign po_coarse_overflow_w[1] = 0; + assign po_fine_overflow_w[1] = 0; + assign pi_fine_overflow_w[1] = 0; + assign po_counter_read_val_w[1] = 0; + assign pi_counter_read_val_w[1] = 0; + assign mcGo_w[1] = 1; +end + +if ( BYTE_LANES_B2 != 0) begin : ddr_phy_4lanes_2 + +mig_7series_v4_0_ddr_phy_4lanes # + ( + .BYTE_LANES (BYTE_LANES_B2), /* four bits, one per lanes */ + .DATA_CTL_N (PHY_2_DATA_CTL), /* four bits, one per lane */ + .PO_CTL_COARSE_BYPASS (PO_CTL_COARSE_BYPASS), + .PO_FINE_DELAY (L_PHY_2_PO_FINE_DELAY), + .BITLANES (PHY_2_BITLANES), + .BITLANES_OUTONLY (PHY_2_BITLANES_OUTONLY), + .BYTELANES_DDR_CK (LP_PHY_2_BYTELANES_DDR_CK), + .LAST_BANK (PHY_2_IS_LAST_BANK ), + .LANE_REMAP (PHY_2_LANE_REMAP), + .OF_ALMOST_FULL_VALUE (PHY_2_OF_ALMOST_FULL_VALUE), + .IF_ALMOST_EMPTY_VALUE (PHY_2_IF_ALMOST_EMPTY_VALUE), + .GENERATE_IDELAYCTRL (PHY_2_GENERATE_IDELAYCTRL), + .IODELAY_GRP (PHY_2_IODELAY_GRP), + .FPGA_SPEED_GRADE (FPGA_SPEED_GRADE), + .BANK_TYPE (BANK_TYPE), + .NUM_DDR_CK (NUM_DDR_CK), + .TCK (TCK), + .RCLK_SELECT_LANE (RCLK_SELECT_LANE), + .USE_PRE_POST_FIFO (USE_PRE_POST_FIFO), + .SYNTHESIS (SYNTHESIS), + .PC_CLK_RATIO (PHY_CLK_RATIO), + .PC_EVENTS_DELAY (PHY_EVENTS_DELAY), + .PC_FOUR_WINDOW_CLOCKS (PHY_FOUR_WINDOW_CLOCKS), + .PC_BURST_MODE (PHY_2_A_BURST_MODE), + .PC_SYNC_MODE (PHY_SYNC_MODE), + .PC_MULTI_REGION (PHY_MULTI_REGION), + .PC_PHY_COUNT_EN (PHY_COUNT_EN), + .PC_DISABLE_SEQ_MATCH (PHY_DISABLE_SEQ_MATCH), + .PC_CMD_OFFSET (PHY_2_CMD_OFFSET), + .PC_RD_CMD_OFFSET_0 (PHY_2_RD_CMD_OFFSET_0), + .PC_RD_CMD_OFFSET_1 (PHY_2_RD_CMD_OFFSET_1), + .PC_RD_CMD_OFFSET_2 (PHY_2_RD_CMD_OFFSET_2), + .PC_RD_CMD_OFFSET_3 (PHY_2_RD_CMD_OFFSET_3), + .PC_RD_DURATION_0 (PHY_2_RD_DURATION_0), + .PC_RD_DURATION_1 (PHY_2_RD_DURATION_1), + .PC_RD_DURATION_2 (PHY_2_RD_DURATION_2), + .PC_RD_DURATION_3 (PHY_2_RD_DURATION_3), + .PC_WR_CMD_OFFSET_0 (PHY_2_WR_CMD_OFFSET_0), + .PC_WR_CMD_OFFSET_1 (PHY_2_WR_CMD_OFFSET_1), + .PC_WR_CMD_OFFSET_2 (PHY_2_WR_CMD_OFFSET_2), + .PC_WR_CMD_OFFSET_3 (PHY_2_WR_CMD_OFFSET_3), + .PC_WR_DURATION_0 (PHY_2_WR_DURATION_0), + .PC_WR_DURATION_1 (PHY_2_WR_DURATION_1), + .PC_WR_DURATION_2 (PHY_2_WR_DURATION_2), + .PC_WR_DURATION_3 (PHY_2_WR_DURATION_3), + .PC_AO_WRLVL_EN (PHY_2_AO_WRLVL_EN), + .PC_AO_TOGGLE (PHY_2_AO_TOGGLE), + + .PI_SEL_CLK_OFFSET (PI_SEL_CLK_OFFSET), + + .A_PI_FINE_DELAY (L_PHY_2_A_PI_FINE_DELAY), + .B_PI_FINE_DELAY (L_PHY_2_B_PI_FINE_DELAY), + .C_PI_FINE_DELAY (L_PHY_2_C_PI_FINE_DELAY), + .D_PI_FINE_DELAY (L_PHY_2_D_PI_FINE_DELAY), + .A_PI_FREQ_REF_DIV (PHY_2_A_PI_FREQ_REF_DIV), + .A_PI_BURST_MODE (PHY_2_A_BURST_MODE), + .A_PI_OUTPUT_CLK_SRC (L_PHY_2_A_PI_OUTPUT_CLK_SRC), + .B_PI_OUTPUT_CLK_SRC (L_PHY_2_B_PI_OUTPUT_CLK_SRC), + .C_PI_OUTPUT_CLK_SRC (L_PHY_2_C_PI_OUTPUT_CLK_SRC), + .D_PI_OUTPUT_CLK_SRC (L_PHY_2_D_PI_OUTPUT_CLK_SRC), + .A_PO_OUTPUT_CLK_SRC (PHY_2_A_PO_OUTPUT_CLK_SRC), + .A_PO_OCLK_DELAY (PHY_2_A_PO_OCLK_DELAY), + .A_PO_OCLKDELAY_INV (PHY_2_A_PO_OCLKDELAY_INV), + .A_OF_ARRAY_MODE (PHY_2_A_OF_ARRAY_MODE), + .B_OF_ARRAY_MODE (PHY_2_B_OF_ARRAY_MODE), + .C_OF_ARRAY_MODE (PHY_2_C_OF_ARRAY_MODE), + .D_OF_ARRAY_MODE (PHY_2_D_OF_ARRAY_MODE), + .A_IF_ARRAY_MODE (PHY_2_A_IF_ARRAY_MODE), + .B_IF_ARRAY_MODE (PHY_2_B_IF_ARRAY_MODE), + .C_IF_ARRAY_MODE (PHY_2_C_IF_ARRAY_MODE), + .D_IF_ARRAY_MODE (PHY_2_D_IF_ARRAY_MODE), + .A_OS_DATA_RATE (PHY_2_A_OSERDES_DATA_RATE), + .A_OS_DATA_WIDTH (PHY_2_A_OSERDES_DATA_WIDTH), + .B_OS_DATA_RATE (PHY_2_B_OSERDES_DATA_RATE), + .B_OS_DATA_WIDTH (PHY_2_B_OSERDES_DATA_WIDTH), + .C_OS_DATA_RATE (PHY_2_C_OSERDES_DATA_RATE), + .C_OS_DATA_WIDTH (PHY_2_C_OSERDES_DATA_WIDTH), + .D_OS_DATA_RATE (PHY_2_D_OSERDES_DATA_RATE), + .D_OS_DATA_WIDTH (PHY_2_D_OSERDES_DATA_WIDTH), + .A_IDELAYE2_IDELAY_TYPE (PHY_2_A_IDELAYE2_IDELAY_TYPE), + .A_IDELAYE2_IDELAY_VALUE (PHY_2_A_IDELAYE2_IDELAY_VALUE) + ,.CKE_ODT_AUX (CKE_ODT_AUX) + ,.PI_DIV2_INCDEC (PI_DIV2_INCDEC) +) + u_ddr_phy_4lanes +( + .rst (rst), + .phy_clk (phy_clk_split2), + .clk_div2 (clk_div2), + .phy_ctl_clk (phy_ctl_clk_split2), + .phy_ctl_wd (phy_ctl_wd_split2), + .data_offset (phy_data_offset_2_split2), + .phy_ctl_wr (phy_ctl_wr_split2), + .mem_refclk (mem_refclk_split), + .freq_refclk (freq_refclk_split), + .mem_refclk_div4 (mem_refclk_div4_split), + .sync_pulse (sync_pulse_split), + .phy_dout (phy_dout_split2[HIGHEST_LANE_B2*80+640-1:640]), + .phy_cmd_wr_en (phy_cmd_wr_en_split2), + .phy_data_wr_en (phy_data_wr_en_split2), + .phy_rd_en (phy_rd_en_split2), + .pll_lock (pll_lock), + .ddr_clk (ddr_clk_w[2]), + .rclk (), + .rst_out (rst_out_w[2]), + .mcGo (mcGo_w[2]), + .ref_dll_lock (ref_dll_lock_w[2]), + .idelayctrl_refclk (idelayctrl_refclk), + .idelay_inc (idelay_inc), + .idelay_ce (idelay_ce), + .idelay_ld (idelay_ld), + .phy_ctl_mstr_empty (phy_ctl_mstr_empty), + .if_rst (if_rst), + .if_empty_def (if_empty_def), + .byte_rd_en_oth_banks (byte_rd_en_oth_banks[5:4]), + .if_a_empty (if_a_empty_v[2]), + .if_empty (if_empty_v[2]), + .byte_rd_en (byte_rd_en_v[2]), + .if_empty_or (if_empty_or_v[2]), + .if_empty_and (if_empty_and_v[2]), + .of_ctl_a_full (of_ctl_a_full_v[2]), + .of_data_a_full (of_data_a_full_v[2]), + .of_ctl_full (of_ctl_full_v[2]), + .of_data_full (of_data_full_v[2]), + .pre_data_a_full (pre_data_a_full_v[2]), + .phy_din (phy_din[HIGHEST_LANE_B2*80+640-1:640]), + .phy_ctl_a_full (_phy_ctl_a_full_p[2]), + .phy_ctl_full (_phy_ctl_full_p[2]), + .phy_ctl_empty (phy_ctl_empty[2]), + .mem_dq_out (mem_dq_out[HIGHEST_LANE_B2*12+96-1:96]), + .mem_dq_ts (mem_dq_ts[HIGHEST_LANE_B2*12+96-1:96]), + .mem_dq_in (mem_dq_in[HIGHEST_LANE_B2*10+80-1:80]), + .mem_dqs_out (mem_dqs_out[HIGHEST_LANE_B2-1+8:8]), + .mem_dqs_ts (mem_dqs_ts[HIGHEST_LANE_B2-1+8:8]), + .mem_dqs_in (mem_dqs_in[HIGHEST_LANE_B2-1+8:8]), + .aux_out (aux_out_[11:8]), + .phy_ctl_ready (phy_ctl_ready_w[2]), + .phy_write_calib (phy_write_calib), + .phy_read_calib (phy_read_calib), +// .scan_test_bus_A (scan_test_bus_A), +// .scan_test_bus_B (), +// .scan_test_bus_C (), +// .scan_test_bus_D (), + .phyGo (phyGo), + .input_sink (input_sink), + + .calib_sel (calib_sel_byte2), + .calib_zero_ctrl (calib_zero_ctrl[2]), + .calib_zero_lanes (calib_zero_lanes_int[11:8]), + .calib_in_common (calib_in_common), + .po_coarse_enable (po_coarse_enable[2]), + .po_fine_enable (po_fine_enable[2]), + .po_fine_inc (po_fine_inc[2]), + .po_coarse_inc (po_coarse_inc[2]), + .po_counter_load_en (po_counter_load_en), + .po_sel_fine_oclk_delay (po_sel_fine_oclk_delay[2]), + .po_counter_load_val (po_counter_load_val), + .po_counter_read_en (po_counter_read_en), + .po_coarse_overflow (po_coarse_overflow_w[2]), + .po_fine_overflow (po_fine_overflow_w[2]), + .po_counter_read_val (po_counter_read_val_w[2]), + + .pi_rst_dqs_find (pi_rst_dqs_find[2]), + .pi_fine_enable (pi_fine_enable), + .pi_fine_inc (pi_fine_inc), + .pi_counter_load_en (pi_counter_load_en), + .pi_counter_read_en (pi_counter_read_en), + .pi_counter_load_val (pi_counter_load_val), + .pi_fine_overflow (pi_fine_overflow_w[2]), + .pi_counter_read_val (pi_counter_read_val_w[2]), + .pi_dqs_found (pi_dqs_found_w[2]), + .pi_dqs_found_all (pi_dqs_found_all_w[2]), + .pi_dqs_found_any (pi_dqs_found_any_w[2]), + .pi_phase_locked_lanes (pi_phase_locked_lanes[HIGHEST_LANE_B2+8-1:8]), + .pi_dqs_found_lanes (pi_dqs_found_lanes[HIGHEST_LANE_B2+8-1:8]), + .pi_dqs_out_of_range (pi_dqs_out_of_range_w[2]), + .pi_phase_locked (pi_phase_locked_w[2]), + .pi_phase_locked_all (pi_phase_locked_all_w[2]), + .fine_delay (fine_delay), + .fine_delay_sel (fine_delay_sel) +); + always @(posedge auxout_clk or posedge rst_auxout) begin + if (rst_auxout) begin + aux_out[8] <= #100 0; + aux_out[10] <= #100 0; + end + else begin + aux_out[8] <= #100 aux_out_[8]; + aux_out[10] <= #100 aux_out_[10]; + end + end + if ( LP_RCLK_SELECT_EDGE[1]) begin + always @(posedge auxout_clk or posedge rst_auxout) begin + if (rst_auxout) begin + aux_out[9] <= #100 0; + aux_out[11] <= #100 0; + end + else begin + aux_out[9] <= #100 aux_out_[9]; + aux_out[11] <= #100 aux_out_[11]; + end + end + end + else begin + always @(negedge auxout_clk or posedge rst_auxout) begin + if (rst_auxout) begin + aux_out[9] <= #100 0; + aux_out[11] <= #100 0; + end + else begin + aux_out[9] <= #100 aux_out_[9]; + aux_out[11] <= #100 aux_out_[11]; + end + end + end +end +else begin + if ( HIGHEST_BANK > 2) begin + assign phy_din[HIGHEST_LANE_B2*80+640-1:640] = 0; + assign _phy_ctl_a_full_p[2] = 0; + assign of_ctl_a_full_v[2] = 0; + assign of_ctl_full_v[2] = 0; + assign of_data_a_full_v[2] = 0; + assign of_data_full_v[2] = 0; + assign pre_data_a_full_v[2] = 0; + assign if_empty_v[2] = 0; + assign byte_rd_en_v[2] = 1; + assign pi_phase_locked_lanes[HIGHEST_LANE_B2+8-1:8] = 4'b1111; + assign pi_dqs_found_lanes[HIGHEST_LANE_B2+8-1:8] = 4'b1111; + always @(*) + aux_out[11:8] = 0; + end + assign pi_dqs_found_w[2] = 1; + assign pi_dqs_found_all_w[2] = 1; + assign pi_dqs_found_any_w[2] = 0; + assign pi_dqs_out_of_range_w[2] = 0; + assign pi_phase_locked_w[2] = 1; + assign po_coarse_overflow_w[2] = 0; + assign po_fine_overflow_w[2] = 0; + assign po_counter_read_val_w[2] = 0; + assign pi_counter_read_val_w[2] = 0; + assign mcGo_w[2] = 1; +end +endgenerate + +generate + +// for single bank , emit an extra phaser_in to generate rclk +// so that auxout can be placed in another region +// if desired + +if ( BYTE_LANES_B1 == 0 && BYTE_LANES_B2 == 0 && RCLK_SELECT_BANK>0) +begin : phaser_in_rclk + +localparam L_EXTRA_PI_FINE_DELAY = DEFAULT_RCLK_DELAY; + +PHASER_IN_PHY #( + .BURST_MODE ( PHY_0_A_BURST_MODE), + .CLKOUT_DIV ( PHY_0_A_PI_CLKOUT_DIV), + .FREQ_REF_DIV ( PHY_0_A_PI_FREQ_REF_DIV), + .REFCLK_PERIOD ( L_FREQ_REF_PERIOD_NS), + .FINE_DELAY ( L_EXTRA_PI_FINE_DELAY), + .OUTPUT_CLK_SRC ( RCLK_PI_OUTPUT_CLK_SRC) +) phaser_in_rclk ( + .DQSFOUND (), + .DQSOUTOFRANGE (), + .FINEOVERFLOW (), + .PHASELOCKED (), + .ISERDESRST (), + .ICLKDIV (), + .ICLK (), + .COUNTERREADVAL (), + .RCLK (), + .WRENABLE (), + .BURSTPENDINGPHY (), + .ENCALIBPHY (), + .FINEENABLE (0), + .FREQREFCLK (freq_refclk), + .MEMREFCLK (mem_refclk), + .RANKSELPHY (0), + .PHASEREFCLK (), + .RSTDQSFIND (0), + .RST (rst), + .FINEINC (), + .COUNTERLOADEN (), + .COUNTERREADEN (), + .COUNTERLOADVAL (), + .SYNCIN (sync_pulse), + .SYSCLK (phy_clk) +); + +end + +endgenerate + + + +always @(*) begin + case (calib_sel[5:3]) + 3'b000: begin + po_coarse_overflow = po_coarse_overflow_w[0]; + po_fine_overflow = po_fine_overflow_w[0]; + po_counter_read_val = po_counter_read_val_w[0]; + pi_fine_overflow = pi_fine_overflow_w[0]; + pi_counter_read_val = pi_counter_read_val_w[0]; + pi_phase_locked = pi_phase_locked_w[0]; + if ( calib_in_common) + pi_dqs_found = pi_dqs_found_any; + else + pi_dqs_found = pi_dqs_found_w[0]; + pi_dqs_out_of_range = pi_dqs_out_of_range_w[0]; + end + 3'b001: begin + po_coarse_overflow = po_coarse_overflow_w[1]; + po_fine_overflow = po_fine_overflow_w[1]; + po_counter_read_val = po_counter_read_val_w[1]; + pi_fine_overflow = pi_fine_overflow_w[1]; + pi_counter_read_val = pi_counter_read_val_w[1]; + pi_phase_locked = pi_phase_locked_w[1]; + if ( calib_in_common) + pi_dqs_found = pi_dqs_found_any; + else + pi_dqs_found = pi_dqs_found_w[1]; + pi_dqs_out_of_range = pi_dqs_out_of_range_w[1]; + end + 3'b010: begin + po_coarse_overflow = po_coarse_overflow_w[2]; + po_fine_overflow = po_fine_overflow_w[2]; + po_counter_read_val = po_counter_read_val_w[2]; + pi_fine_overflow = pi_fine_overflow_w[2]; + pi_counter_read_val = pi_counter_read_val_w[2]; + pi_phase_locked = pi_phase_locked_w[2]; + if ( calib_in_common) + pi_dqs_found = pi_dqs_found_any; + else + pi_dqs_found = pi_dqs_found_w[2]; + pi_dqs_out_of_range = pi_dqs_out_of_range_w[2]; + end + default: begin + po_coarse_overflow = 0; + po_fine_overflow = 0; + po_counter_read_val = 0; + pi_fine_overflow = 0; + pi_counter_read_val = 0; + pi_phase_locked = 0; + pi_dqs_found = 0; + pi_dqs_out_of_range = 0; + end + endcase +end + +endmodule // mc_phy diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_mc_phy_wrapper.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_mc_phy_wrapper.v new file mode 100644 index 0000000..c80e0ab --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_mc_phy_wrapper.v @@ -0,0 +1,1684 @@ +//***************************************************************************** +// (c) Copyright 2008 - 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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor : Xilinx +// \ \ \/ Version : %version +// \ \ Application : MIG +// / / Filename : ddr_mc_phy_wrapper.v +// /___/ /\ Date Last Modified : $date$ +// \ \ / \ Date Created : Oct 10 2010 +// \___\/\___\ +// +//Device : 7 Series +//Design Name : DDR3 SDRAM +//Purpose : Wrapper file that encompasses the MC_PHY module +// instantiation and handles the vector remapping between +// the MC_PHY ports and the user's DDR3 ports. Vector +// remapping affects DDR3 control, address, and DQ/DQS/DM. +//Reference : +//Revision History : +//***************************************************************************** + +`timescale 1 ps / 1 ps + +module mig_7series_v4_0_ddr_mc_phy_wrapper # + ( + parameter TCQ = 100, // Register delay (simulation only) + parameter tCK = 2500, // ps + parameter BANK_TYPE = "HP_IO", // # = "HP_IO", "HPL_IO", "HR_IO", "HRL_IO" + parameter DATA_IO_PRIM_TYPE = "DEFAULT", // # = "HP_LP", "HR_LP", "DEFAULT" + parameter DATA_IO_IDLE_PWRDWN = "ON", // "ON" or "OFF" + parameter IODELAY_GRP = "IODELAY_MIG", + parameter FPGA_SPEED_GRADE = 1, + parameter nCK_PER_CLK = 4, // Memory:Logic clock ratio + parameter nCS_PER_RANK = 1, // # of unique CS outputs per rank + parameter BANK_WIDTH = 3, // # of bank address + parameter CKE_WIDTH = 1, // # of clock enable outputs + parameter CS_WIDTH = 1, // # of chip select + parameter CK_WIDTH = 1, // # of CK + parameter CWL = 5, // CAS Write latency + parameter DDR2_DQSN_ENABLE = "YES", // Enable differential DQS for DDR2 + parameter DM_WIDTH = 8, // # of data mask + parameter DQ_WIDTH = 16, // # of data bits + parameter DQS_CNT_WIDTH = 3, // ceil(log2(DQS_WIDTH)) + parameter DQS_WIDTH = 8, // # of strobe pairs + parameter DRAM_TYPE = "DDR3", // DRAM type (DDR2, DDR3) + parameter RANKS = 4, // # of ranks + parameter ODT_WIDTH = 1, // # of ODT outputs + parameter POC_USE_METASTABLE_SAMP = "FALSE", + parameter REG_CTRL = "OFF", // "ON" for registered DIMM + parameter ROW_WIDTH = 16, // # of row/column address + parameter USE_CS_PORT = 1, // Support chip select output + parameter USE_DM_PORT = 1, // Support data mask output + parameter USE_ODT_PORT = 1, // Support ODT output + parameter IBUF_LPWR_MODE = "OFF", // input buffer low power option + parameter LP_DDR_CK_WIDTH = 2, + + // Hard PHY parameters + parameter PHYCTL_CMD_FIFO = "FALSE", + parameter DATA_CTL_B0 = 4'hc, + parameter DATA_CTL_B1 = 4'hf, + parameter DATA_CTL_B2 = 4'hf, + parameter DATA_CTL_B3 = 4'hf, + parameter DATA_CTL_B4 = 4'hf, + parameter BYTE_LANES_B0 = 4'b1111, + parameter BYTE_LANES_B1 = 4'b0000, + parameter BYTE_LANES_B2 = 4'b0000, + parameter BYTE_LANES_B3 = 4'b0000, + parameter BYTE_LANES_B4 = 4'b0000, + parameter PHY_0_BITLANES = 48'h0000_0000_0000, + parameter PHY_1_BITLANES = 48'h0000_0000_0000, + parameter PHY_2_BITLANES = 48'h0000_0000_0000, + // Parameters calculated outside of this block + parameter HIGHEST_BANK = 3, // Highest I/O bank index + parameter HIGHEST_LANE = 12, // Highest byte lane index + // ** Pin mapping parameters + // Parameters for mapping between hard PHY and physical DDR3 signals + // There are 2 classes of parameters: + // - DQS_BYTE_MAP, CK_BYTE_MAP, CKE_ODT_BYTE_MAP: These consist of + // 8-bit elements. Each element indicates the bank and byte lane + // location of that particular signal. The bit lane in this case + // doesn't need to be specified, either because there's only one + // pin pair in each byte lane that the DQS or CK pair can be + // located at, or in the case of CKE_ODT_BYTE_MAP, only the byte + // lane needs to be specified in order to determine which byte + // lane generates the RCLK (Note that CKE, and ODT must be located + // in the same bank, thus only one element in CKE_ODT_BYTE_MAP) + // [7:4] = bank # (0-4) + // [3:0] = byte lane # (0-3) + // - All other MAP parameters: These consist of 12-bit elements. Each + // element indicates the bank, byte lane, and bit lane location of + // that particular signal: + // [11:8] = bank # (0-4) + // [7:4] = byte lane # (0-3) + // [3:0] = bit lane # (0-11) + // Note that not all elements in all parameters will be used - it + // depends on the actual widths of the DDR3 buses. The parameters are + // structured to support a maximum of: + // - DQS groups: 18 + // - data mask bits: 18 + // In addition, the default parameter size of some of the parameters will + // support a certain number of bits, however, this can be expanded at + // compile time by expanding the width of the vector passed into this + // parameter + // - chip selects: 10 + // - bank bits: 3 + // - address bits: 16 + parameter CK_BYTE_MAP + = 144'h00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00, + parameter ADDR_MAP + = 192'h000_000_000_000_000_000_000_000_000_000_000_000_000_000_000_000, + parameter BANK_MAP = 36'h000_000_000, + parameter CAS_MAP = 12'h000, + parameter CKE_ODT_BYTE_MAP = 8'h00, + parameter CKE_MAP = 96'h000_000_000_000_000_000_000_000, + parameter ODT_MAP = 96'h000_000_000_000_000_000_000_000, + parameter CKE_ODT_AUX = "FALSE", + parameter CS_MAP = 120'h000_000_000_000_000_000_000_000_000_000, + parameter PARITY_MAP = 12'h000, + parameter RAS_MAP = 12'h000, + parameter WE_MAP = 12'h000, + parameter DQS_BYTE_MAP + = 144'h00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00, + // DATAx_MAP parameter is used for byte lane X in the design + parameter DATA0_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA1_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA2_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA3_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA4_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA5_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA6_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA7_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA8_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA9_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA10_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA11_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA12_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA13_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA14_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA15_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA16_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA17_MAP = 96'h000_000_000_000_000_000_000_000, + // MASK0_MAP used for bytes [8:0], MASK1_MAP for bytes [17:9] + parameter MASK0_MAP = 108'h000_000_000_000_000_000_000_000_000, + parameter MASK1_MAP = 108'h000_000_000_000_000_000_000_000_000, + // Simulation options + parameter SIM_CAL_OPTION = "NONE", + + // The PHY_CONTROL primitive in the bank where PLL exists is declared + // as the Master PHY_CONTROL. + parameter MASTER_PHY_CTL = 1, + parameter DRAM_WIDTH = 8, + parameter PI_DIV2_INCDEC = "FALSE" + ) + ( + input rst, + input iddr_rst, + input clk, + input clk_div2, + input freq_refclk, + input mem_refclk, + input pll_lock, + input sync_pulse, + input mmcm_ps_clk, + input idelayctrl_refclk, + input phy_cmd_wr_en, + input phy_data_wr_en, + input [31:0] phy_ctl_wd, + input phy_ctl_wr, + input phy_if_empty_def, + input phy_if_reset, + input [5:0] data_offset_1, + input [5:0] data_offset_2, + input [3:0] aux_in_1, + input [3:0] aux_in_2, + output [4:0] idelaye2_init_val, + output [5:0] oclkdelay_init_val, + output if_empty, + output phy_ctl_full, + output phy_cmd_full, + output phy_data_full, + output phy_pre_data_a_full, + output [(CK_WIDTH * LP_DDR_CK_WIDTH)-1:0] ddr_clk, + output phy_mc_go, + input phy_write_calib, + input phy_read_calib, + input calib_in_common, + input [5:0] calib_sel, + input [DQS_CNT_WIDTH:0] byte_sel_cnt, + input [DRAM_WIDTH-1:0] fine_delay_incdec_pb, + input fine_delay_sel, + input [HIGHEST_BANK-1:0] calib_zero_inputs, + input [HIGHEST_BANK-1:0] calib_zero_ctrl, + input [2:0] po_fine_enable, + input [2:0] po_coarse_enable, + input [2:0] po_fine_inc, + input [2:0] po_coarse_inc, + input po_counter_load_en, + input po_counter_read_en, + input [2:0] po_sel_fine_oclk_delay, + input [8:0] po_counter_load_val, + output [8:0] po_counter_read_val, + output [5:0] pi_counter_read_val, + input [HIGHEST_BANK-1:0] pi_rst_dqs_find, + input pi_fine_enable, + input pi_fine_inc, + input pi_counter_load_en, + input [5:0] pi_counter_load_val, + input idelay_ce, + input idelay_inc, + input idelay_ld, + input idle, + output pi_phase_locked, + output pi_phase_locked_all, + output pi_dqs_found, + output pi_dqs_found_all, + output pi_dqs_out_of_range, + // From/to calibration logic/soft PHY + input phy_init_data_sel, + input [nCK_PER_CLK*ROW_WIDTH-1:0] mux_address, + input [nCK_PER_CLK*BANK_WIDTH-1:0] mux_bank, + input [nCK_PER_CLK-1:0] mux_cas_n, + input [CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK-1:0] mux_cs_n, + input [nCK_PER_CLK-1:0] mux_ras_n, + input [1:0] mux_odt, + input [nCK_PER_CLK-1:0] mux_cke, + input [nCK_PER_CLK-1:0] mux_we_n, + input [nCK_PER_CLK-1:0] parity_in, + input [2*nCK_PER_CLK*DQ_WIDTH-1:0] mux_wrdata, + input [2*nCK_PER_CLK*(DQ_WIDTH/8)-1:0] mux_wrdata_mask, + input mux_reset_n, + output [2*nCK_PER_CLK*DQ_WIDTH-1:0] rd_data, + // Memory I/F + output [ROW_WIDTH-1:0] ddr_addr, + output [BANK_WIDTH-1:0] ddr_ba, + output ddr_cas_n, + output [CKE_WIDTH-1:0] ddr_cke, + output [CS_WIDTH*nCS_PER_RANK-1:0] ddr_cs_n, + output [DM_WIDTH-1:0] ddr_dm, + output [ODT_WIDTH-1:0] ddr_odt, + output ddr_parity, + output ddr_ras_n, + output ddr_we_n, + output ddr_reset_n, + inout [DQ_WIDTH-1:0] ddr_dq, + inout [DQS_WIDTH-1:0] ddr_dqs, + inout [DQS_WIDTH-1:0] ddr_dqs_n, + //output iodelay_ctrl_rdy, + output pd_out + + ,input dbg_pi_counter_read_en + ,output ref_dll_lock + ,input rst_phaser_ref + ,output [11:0] dbg_pi_phase_locked_phy4lanes + ,output [11:0] dbg_pi_dqs_found_lanes_phy4lanes + ); + + function [71:0] generate_bytelanes_ddr_ck; + input [143:0] ck_byte_map; + integer v ; + begin + generate_bytelanes_ddr_ck = 'b0 ; + for (v = 0; v < CK_WIDTH; v = v + 1) begin + if ((CK_BYTE_MAP[((v*8)+4)+:4]) == 2) + generate_bytelanes_ddr_ck[48+(4*v)+1*(CK_BYTE_MAP[(v*8)+:4])] = 1'b1; + else if ((CK_BYTE_MAP[((v*8)+4)+:4]) == 1) + generate_bytelanes_ddr_ck[24+(4*v)+1*(CK_BYTE_MAP[(v*8)+:4])] = 1'b1; + else + generate_bytelanes_ddr_ck[4*v+1*(CK_BYTE_MAP[(v*8)+:4])] = 1'b1; + end + end + endfunction + + function [(2*CK_WIDTH*8)-1:0] generate_ddr_ck_map; + input [143:0] ck_byte_map; + integer g; + begin + generate_ddr_ck_map = 'b0 ; + for(g = 0 ; g < CK_WIDTH ; g= g + 1) begin + generate_ddr_ck_map[(g*2*8)+:8] = (ck_byte_map[(g*8)+:4] == 4'd0) ? "A" : + (ck_byte_map[(g*8)+:4] == 4'd1) ? "B" : + (ck_byte_map[(g*8)+:4] == 4'd2) ? "C" : "D" ; + generate_ddr_ck_map[(((g*2)+1)*8)+:8] = (ck_byte_map[((g*8)+4)+:4] == 4'd0) ? "0" : + (ck_byte_map[((g*8)+4)+:4] == 4'd1) ? "1" : "2" ; //each STRING charater takes 0 location + end + end + endfunction + + + + // Enable low power mode for input buffer + localparam IBUF_LOW_PWR + = (IBUF_LPWR_MODE == "OFF") ? "FALSE" : + ((IBUF_LPWR_MODE == "ON") ? "TRUE" : "ILLEGAL"); + + // Ratio of data to strobe + localparam DQ_PER_DQS = DQ_WIDTH / DQS_WIDTH; + // number of data phases per internal clock + localparam PHASE_PER_CLK = 2*nCK_PER_CLK; + // used to determine routing to OUT_FIFO for control/address for 2:1 + // vs. 4:1 memory:internal clock ratio modes + localparam PHASE_DIV = 4 / nCK_PER_CLK; + + localparam CLK_PERIOD = tCK * nCK_PER_CLK; + + // Create an aggregate parameters for data mapping to reduce # of generate + // statements required in remapping code. Need to account for the case + // when the DQ:DQS ratio is not 8:1 - in this case, each DATAx_MAP + // parameter will have fewer than 8 elements used + localparam FULL_DATA_MAP = {DATA17_MAP[12*DQ_PER_DQS-1:0], + DATA16_MAP[12*DQ_PER_DQS-1:0], + DATA15_MAP[12*DQ_PER_DQS-1:0], + DATA14_MAP[12*DQ_PER_DQS-1:0], + DATA13_MAP[12*DQ_PER_DQS-1:0], + DATA12_MAP[12*DQ_PER_DQS-1:0], + DATA11_MAP[12*DQ_PER_DQS-1:0], + DATA10_MAP[12*DQ_PER_DQS-1:0], + DATA9_MAP[12*DQ_PER_DQS-1:0], + DATA8_MAP[12*DQ_PER_DQS-1:0], + DATA7_MAP[12*DQ_PER_DQS-1:0], + DATA6_MAP[12*DQ_PER_DQS-1:0], + DATA5_MAP[12*DQ_PER_DQS-1:0], + DATA4_MAP[12*DQ_PER_DQS-1:0], + DATA3_MAP[12*DQ_PER_DQS-1:0], + DATA2_MAP[12*DQ_PER_DQS-1:0], + DATA1_MAP[12*DQ_PER_DQS-1:0], + DATA0_MAP[12*DQ_PER_DQS-1:0]}; + // Same deal, but for data mask mapping + localparam FULL_MASK_MAP = {MASK1_MAP, MASK0_MAP}; + localparam TMP_BYTELANES_DDR_CK = generate_bytelanes_ddr_ck(CK_BYTE_MAP) ; + localparam TMP_GENERATE_DDR_CK_MAP = generate_ddr_ck_map(CK_BYTE_MAP) ; + + // Temporary parameters to determine which bank is outputting the CK/CK# + // Eventually there will be support for multiple CK/CK# output + //localparam TMP_DDR_CLK_SELECT_BANK = (CK_BYTE_MAP[7:4]); + //// Temporary method to force MC_PHY to generate ODDR associated with + //// CK/CK# output only for a single byte lane in the design. All banks + //// that won't be generating the CK/CK# will have "UNUSED" as their + //// PHY_GENERATE_DDR_CK parameter + //localparam TMP_PHY_0_GENERATE_DDR_CK + // = (TMP_DDR_CLK_SELECT_BANK != 0) ? "UNUSED" : + // ((CK_BYTE_MAP[1:0] == 2'b00) ? "A" : + // ((CK_BYTE_MAP[1:0] == 2'b01) ? "B" : + // ((CK_BYTE_MAP[1:0] == 2'b10) ? "C" : "D"))); + //localparam TMP_PHY_1_GENERATE_DDR_CK + // = (TMP_DDR_CLK_SELECT_BANK != 1) ? "UNUSED" : + // ((CK_BYTE_MAP[1:0] == 2'b00) ? "A" : + // ((CK_BYTE_MAP[1:0] == 2'b01) ? "B" : + // ((CK_BYTE_MAP[1:0] == 2'b10) ? "C" : "D"))); + //localparam TMP_PHY_2_GENERATE_DDR_CK + // = (TMP_DDR_CLK_SELECT_BANK != 2) ? "UNUSED" : + // ((CK_BYTE_MAP[1:0] == 2'b00) ? "A" : + // ((CK_BYTE_MAP[1:0] == 2'b01) ? "B" : + // ((CK_BYTE_MAP[1:0] == 2'b10) ? "C" : "D"))); + + // Function to generate MC_PHY parameters PHY_BITLANES_OUTONLYx + // which indicates which bit lanes in data byte lanes are + // output-only bitlanes (e.g. used specifically for data mask outputs) + function [143:0] calc_phy_bitlanes_outonly; + input [215:0] data_mask_in; + integer z; + begin + calc_phy_bitlanes_outonly = 'b0; + // Only enable BITLANES parameters for data masks if, well, if + // the data masks are actually enabled + if (USE_DM_PORT == 1) + for (z = 0; z < DM_WIDTH; z = z + 1) + calc_phy_bitlanes_outonly[48*data_mask_in[(12*z+8)+:3] + + 12*data_mask_in[(12*z+4)+:2] + + data_mask_in[12*z+:4]] = 1'b1; + end + endfunction + + localparam PHY_BITLANES_OUTONLY = calc_phy_bitlanes_outonly(FULL_MASK_MAP); + localparam PHY_0_BITLANES_OUTONLY = PHY_BITLANES_OUTONLY[47:0]; + localparam PHY_1_BITLANES_OUTONLY = PHY_BITLANES_OUTONLY[95:48]; + localparam PHY_2_BITLANES_OUTONLY = PHY_BITLANES_OUTONLY[143:96]; + + // Determine which bank and byte lane generates the RCLK used to clock + // out the auxilliary (ODT, CKE) outputs + localparam CKE_ODT_RCLK_SELECT_BANK_AUX_ON + = (CKE_ODT_BYTE_MAP[7:4] == 4'h0) ? 0 : + ((CKE_ODT_BYTE_MAP[7:4] == 4'h1) ? 1 : + ((CKE_ODT_BYTE_MAP[7:4] == 4'h2) ? 2 : + ((CKE_ODT_BYTE_MAP[7:4] == 4'h3) ? 3 : + ((CKE_ODT_BYTE_MAP[7:4] == 4'h4) ? 4 : -1)))); + localparam CKE_ODT_RCLK_SELECT_LANE_AUX_ON + = (CKE_ODT_BYTE_MAP[3:0] == 4'h0) ? "A" : + ((CKE_ODT_BYTE_MAP[3:0] == 4'h1) ? "B" : + ((CKE_ODT_BYTE_MAP[3:0] == 4'h2) ? "C" : + ((CKE_ODT_BYTE_MAP[3:0] == 4'h3) ? "D" : "ILLEGAL"))); + + localparam CKE_ODT_RCLK_SELECT_BANK_AUX_OFF + = (CKE_MAP[11:8] == 4'h0) ? 0 : + ((CKE_MAP[11:8] == 4'h1) ? 1 : + ((CKE_MAP[11:8] == 4'h2) ? 2 : + ((CKE_MAP[11:8] == 4'h3) ? 3 : + ((CKE_MAP[11:8] == 4'h4) ? 4 : -1)))); + localparam CKE_ODT_RCLK_SELECT_LANE_AUX_OFF + = (CKE_MAP[7:4] == 4'h0) ? "A" : + ((CKE_MAP[7:4] == 4'h1) ? "B" : + ((CKE_MAP[7:4] == 4'h2) ? "C" : + ((CKE_MAP[7:4] == 4'h3) ? "D" : "ILLEGAL"))); + + + localparam CKE_ODT_RCLK_SELECT_BANK = (CKE_ODT_AUX == "TRUE") ? CKE_ODT_RCLK_SELECT_BANK_AUX_ON : CKE_ODT_RCLK_SELECT_BANK_AUX_OFF ; + localparam CKE_ODT_RCLK_SELECT_LANE = (CKE_ODT_AUX == "TRUE") ? CKE_ODT_RCLK_SELECT_LANE_AUX_ON : CKE_ODT_RCLK_SELECT_LANE_AUX_OFF ; + + + //*************************************************************************** + // OCLKDELAYED tap setting calculation: + // Parameters for calculating amount of phase shifting output clock to + // achieve 90 degree offset between DQS and DQ on writes + //*************************************************************************** + + //90 deg equivalent to 0.25 for MEM_RefClk <= 300 MHz + // and 1.25 for Mem_RefClk > 300 MHz + localparam PO_OCLKDELAY_INV = (((SIM_CAL_OPTION == "NONE") && (tCK > 2500)) || (tCK >= 3333)) ? "FALSE" : "TRUE"; + + //DIV1: MemRefClk >= 400 MHz, DIV2: 200 <= MemRefClk < 400, + //DIV4: MemRefClk < 200 MHz + localparam PHY_0_A_PI_FREQ_REF_DIV = tCK > 5000 ? "DIV4" : + tCK > 2500 ? "DIV2": "NONE"; + + localparam FREQ_REF_DIV = (PHY_0_A_PI_FREQ_REF_DIV == "DIV4" ? 4 : + PHY_0_A_PI_FREQ_REF_DIV == "DIV2" ? 2 : 1); + + // Intrinsic delay between OCLK and OCLK_DELAYED Phaser Output + localparam real INT_DELAY = 0.4392/FREQ_REF_DIV + 100.0/tCK; + + // Whether OCLK_DELAY output comes inverted or not + localparam real HALF_CYCLE_DELAY = 0.5*(PO_OCLKDELAY_INV == "TRUE" ? 1 : 0); + + // Phaser-Out Stage3 Tap delay for 90 deg shift. + // Maximum tap delay is FreqRefClk period distributed over 64 taps + // localparam real TAP_DELAY = MC_OCLK_DELAY/64/FREQ_REF_DIV; + localparam real MC_OCLK_DELAY = ((PO_OCLKDELAY_INV == "TRUE" ? 1.25 : 0.25) - + (INT_DELAY + HALF_CYCLE_DELAY)) + * 63 * FREQ_REF_DIV; + //localparam integer PHY_0_A_PO_OCLK_DELAY = MC_OCLK_DELAY; + + localparam integer PHY_0_A_PO_OCLK_DELAY_HW + = (tCK > 2273) ? 34 : + (tCK > 2000) ? 33 : + (tCK > 1724) ? 32 : + (tCK > 1515) ? 31 : + (tCK > 1315) ? 30 : + (tCK > 1136) ? 29 : + (tCK > 1021) ? 28 : 27; + + // Note that simulation requires a different value than in H/W because of the + // difference in the way delays are modeled + localparam integer PHY_0_A_PO_OCLK_DELAY = (SIM_CAL_OPTION == "NONE") ? + ((tCK > 2500) ? 8 : + (DRAM_TYPE == "DDR3") ? PHY_0_A_PO_OCLK_DELAY_HW : 30) : + MC_OCLK_DELAY; + + // Initial DQ IDELAY value + localparam PHY_0_A_IDELAYE2_IDELAY_VALUE = (SIM_CAL_OPTION != "FAST_CAL") ? 0 : + (tCK < 1000) ? 0 : + (tCK < 1330) ? 0 : + (tCK < 2300) ? 0 : + (tCK < 2500) ? 2 : 0; + //localparam PHY_0_A_IDELAYE2_IDELAY_VALUE = 0; + + // Aux_out parameters RD_CMD_OFFSET = CL+2? and WR_CMD_OFFSET = CWL+3? + localparam PHY_0_RD_CMD_OFFSET_0 = 10; + localparam PHY_0_RD_CMD_OFFSET_1 = 10; + localparam PHY_0_RD_CMD_OFFSET_2 = 10; + localparam PHY_0_RD_CMD_OFFSET_3 = 10; + // 4:1 and 2:1 have WR_CMD_OFFSET values for ODT timing + localparam PHY_0_WR_CMD_OFFSET_0 = (nCK_PER_CLK == 4) ? 8 : 4; + localparam PHY_0_WR_CMD_OFFSET_1 = (nCK_PER_CLK == 4) ? 8 : 4; + localparam PHY_0_WR_CMD_OFFSET_2 = (nCK_PER_CLK == 4) ? 8 : 4; + localparam PHY_0_WR_CMD_OFFSET_3 = (nCK_PER_CLK == 4) ? 8 : 4; + // 4:1 and 2:1 have different values + localparam PHY_0_WR_DURATION_0 = 7; + localparam PHY_0_WR_DURATION_1 = 7; + localparam PHY_0_WR_DURATION_2 = 7; + localparam PHY_0_WR_DURATION_3 = 7; + // Aux_out parameters for toggle mode (CKE) + localparam CWL_M = (REG_CTRL == "ON") ? CWL + 1 : CWL; + localparam PHY_0_CMD_OFFSET = (nCK_PER_CLK == 4) ? (CWL_M % 2) ? 8 : 9 : + (CWL < 7) ? + 4 + ((CWL_M % 2) ? 0 : 1) : + 5 + ((CWL_M % 2) ? 0 : 1); + + // temporary parameter to enable/disable PHY PC counters. In both 4:1 and + // 2:1 cases, this should be disabled. For now, enable for 4:1 mode to + // avoid making too many changes at once. + localparam PHY_COUNT_EN = (nCK_PER_CLK == 4) ? "TRUE" : "FALSE"; + + + wire [((HIGHEST_LANE+3)/4)*4-1:0] aux_out; + wire [HIGHEST_LANE-1:0] mem_dqs_in; + wire [HIGHEST_LANE-1:0] mem_dqs_out; + wire [HIGHEST_LANE-1:0] mem_dqs_ts; + wire [HIGHEST_LANE*10-1:0] mem_dq_in; + wire [HIGHEST_LANE*12-1:0] mem_dq_out; + wire [HIGHEST_LANE*12-1:0] mem_dq_ts; + wire [DQ_WIDTH-1:0] in_dq; + wire [DQS_WIDTH-1:0] in_dqs; + wire [ROW_WIDTH-1:0] out_addr; + wire [BANK_WIDTH-1:0] out_ba; + wire out_cas_n; + wire [CS_WIDTH*nCS_PER_RANK-1:0] out_cs_n; + wire [DM_WIDTH-1:0] out_dm; + wire [ODT_WIDTH -1:0] out_odt; + wire [CKE_WIDTH -1 :0] out_cke ; + wire [DQ_WIDTH-1:0] out_dq; + wire [DQS_WIDTH-1:0] out_dqs; + wire out_parity; + wire out_ras_n; + wire out_we_n; + wire [HIGHEST_LANE*80-1:0] phy_din; + wire [HIGHEST_LANE*80-1:0] phy_dout; + wire phy_rd_en; + wire [DM_WIDTH-1:0] ts_dm; + wire [DQ_WIDTH-1:0] ts_dq; + wire [DQS_WIDTH-1:0] ts_dqs; + wire [DQS_WIDTH-1:0] in_dqs_lpbk_to_iddr; + wire [DQS_WIDTH-1:0] pd_out_pre; + //wire metaQ; + + reg [31:0] phy_ctl_wd_i1; + reg [31:0] phy_ctl_wd_i2; + reg phy_ctl_wr_i1; + reg phy_ctl_wr_i2; + reg [5:0] data_offset_1_i1; + reg [5:0] data_offset_1_i2; + reg [5:0] data_offset_2_i1; + reg [5:0] data_offset_2_i2; + wire [31:0] phy_ctl_wd_temp; + wire phy_ctl_wr_temp; + wire [5:0] data_offset_1_temp; + wire [5:0] data_offset_2_temp; + wire [5:0] data_offset_1_of; + wire [5:0] data_offset_2_of; + wire [31:0] phy_ctl_wd_of; + wire phy_ctl_wr_of /* synthesis syn_maxfan = 1 */; + wire [3:0] phy_ctl_full_temp; + + wire data_io_idle_pwrdwn; + reg [29:0] fine_delay_mod; //3 bit per DQ + reg fine_delay_sel_r; //timing adj with fine_delay_incdec_pb + + wire iddr_rst_i; + + (* use_dsp48 = "no" *) wire [DQS_CNT_WIDTH:0] byte_sel_cnt_w1; + + // Always read from input data FIFOs when not empty + assign phy_rd_en = !if_empty; + + // IDELAYE2 initial value + assign idelaye2_init_val = PHY_0_A_IDELAYE2_IDELAY_VALUE; + assign oclkdelay_init_val = PHY_0_A_PO_OCLK_DELAY; + + // Idle powerdown when there are no pending reads in the MC + assign data_io_idle_pwrdwn = DATA_IO_IDLE_PWRDWN == "ON" ? idle : 1'b0; + assign iddr_rst_i = iddr_rst; + //*************************************************************************** + // Auxiliary output steering + //*************************************************************************** + + // For a 4 rank I/F the aux_out[3:0] from the addr/ctl bank will be + // mapped to ddr_odt and the aux_out[7:4] from one of the data banks + // will map to ddr_cke. For I/Fs less than 4 the aux_out[3:0] from the + // addr/ctl bank would bank would map to both ddr_odt and ddr_cke. + generate + if(CKE_ODT_AUX == "TRUE")begin:cke_thru_auxpins + if (CKE_WIDTH == 1) begin : gen_cke + // Explicitly instantiate OBUF to ensure that these are present + // in the netlist. Typically this is not required since NGDBUILD + // at the top-level knows to infer an I/O/IOBUF and therefore a + // top-level LOC constraint can be attached to that pin. This does + // not work when a hierarchical flow is used and the LOC is applied + // at the individual core-level UCF + OBUF u_cke_obuf + ( + .I (aux_out[4*CKE_ODT_RCLK_SELECT_BANK]), + .O (ddr_cke) + ); + end else begin: gen_2rank_cke + OBUF u_cke0_obuf + ( + .I (aux_out[4*CKE_ODT_RCLK_SELECT_BANK]), + .O (ddr_cke[0]) + ); + OBUF u_cke1_obuf + ( + .I (aux_out[4*CKE_ODT_RCLK_SELECT_BANK+2]), + .O (ddr_cke[1]) + ); + end + end + endgenerate + + generate + if(CKE_ODT_AUX == "TRUE")begin:odt_thru_auxpins + if (USE_ODT_PORT == 1) begin : gen_use_odt + // Explicitly instantiate OBUF to ensure that these are present + // in the netlist. Typically this is not required since NGDBUILD + // at the top-level knows to infer an I/O/IOBUF and therefore a + // top-level LOC constraint can be attached to that pin. This does + // not work when a hierarchical flow is used and the LOC is applied + // at the individual core-level UCF + OBUF u_odt_obuf + ( + .I (aux_out[4*CKE_ODT_RCLK_SELECT_BANK+1]), + .O (ddr_odt[0]) + ); + if (ODT_WIDTH == 2 && RANKS == 1) begin: gen_2port_odt + OBUF u_odt1_obuf + ( + .I (aux_out[4*CKE_ODT_RCLK_SELECT_BANK+2]), + .O (ddr_odt[1]) + ); + end else if (ODT_WIDTH == 2 && RANKS == 2) begin: gen_2rank_odt + OBUF u_odt1_obuf + ( + .I (aux_out[4*CKE_ODT_RCLK_SELECT_BANK+3]), + .O (ddr_odt[1]) + ); + end else if (ODT_WIDTH == 3 && RANKS == 1) begin: gen_3port_odt + OBUF u_odt1_obuf + ( + .I (aux_out[4*CKE_ODT_RCLK_SELECT_BANK+2]), + .O (ddr_odt[1]) + ); + OBUF u_odt2_obuf + ( + .I (aux_out[4*CKE_ODT_RCLK_SELECT_BANK+3]), + .O (ddr_odt[2]) + ); + end + end else begin + assign ddr_odt = 'b0; + end + end + endgenerate + + //*************************************************************************** + // Read data bit steering + //*************************************************************************** + + // Transpose elements of rd_data_map to form final read data output: + // phy_din elements are grouped according to "physical bit" - e.g. + // for nCK_PER_CLK = 4, there are 8 data phases transfered per physical + // bit per clock cycle: + // = {dq0_fall3, dq0_rise3, dq0_fall2, dq0_rise2, + // dq0_fall1, dq0_rise1, dq0_fall0, dq0_rise0} + // whereas rd_data is are grouped according to "phase" - e.g. + // = {dq7_rise0, dq6_rise0, dq5_rise0, dq4_rise0, + // dq3_rise0, dq2_rise0, dq1_rise0, dq0_rise0} + // therefore rd_data is formed by transposing phy_din - e.g. + // for nCK_PER_CLK = 4, and DQ_WIDTH = 16, and assuming MC_PHY + // bit_lane[0] maps to DQ[0], and bit_lane[1] maps to DQ[1], then + // the assignments for bits of rd_data corresponding to DQ[1:0] + // would be: + // {rd_data[112], rd_data[96], rd_data[80], rd_data[64], + // rd_data[48], rd_data[32], rd_data[16], rd_data[0]} = phy_din[7:0] + // {rd_data[113], rd_data[97], rd_data[81], rd_data[65], + // rd_data[49], rd_data[33], rd_data[17], rd_data[1]} = phy_din[15:8] + generate + genvar i, j; + for (i = 0; i < DQ_WIDTH; i = i + 1) begin: gen_loop_rd_data_1 + for (j = 0; j < PHASE_PER_CLK; j = j + 1) begin: gen_loop_rd_data_2 + assign rd_data[DQ_WIDTH*j + i] + = phy_din[(320*FULL_DATA_MAP[(12*i+8)+:3]+ + 80*FULL_DATA_MAP[(12*i+4)+:2] + + 8*FULL_DATA_MAP[12*i+:4]) + j]; + end + end + endgenerate + + //generage idelay_inc per bits + + reg [11:0] cal_tmp; + reg [95:0] byte_sel_data_map; + + assign byte_sel_cnt_w1 = byte_sel_cnt; + + always @ (posedge clk) begin + byte_sel_data_map <= #TCQ FULL_DATA_MAP[12*DQ_PER_DQS*byte_sel_cnt_w1+:96]; + end + + always @ (posedge clk) begin + fine_delay_mod[((byte_sel_data_map[3:0])*3)+:3] <= #TCQ {fine_delay_incdec_pb[0],2'b00}; + fine_delay_mod[((byte_sel_data_map[12+3:12])*3)+:3] <= #TCQ {fine_delay_incdec_pb[1],2'b00}; + fine_delay_mod[((byte_sel_data_map[24+3:24])*3)+:3] <= #TCQ {fine_delay_incdec_pb[2],2'b00}; + fine_delay_mod[((byte_sel_data_map[36+3:36])*3)+:3] <= #TCQ {fine_delay_incdec_pb[3],2'b00}; + fine_delay_mod[((byte_sel_data_map[48+3:48])*3)+:3] <= #TCQ {fine_delay_incdec_pb[4],2'b00}; + fine_delay_mod[((byte_sel_data_map[60+3:60])*3)+:3] <= #TCQ {fine_delay_incdec_pb[5],2'b00}; + fine_delay_mod[((byte_sel_data_map[72+3:72])*3)+:3] <= #TCQ {fine_delay_incdec_pb[6],2'b00}; + fine_delay_mod[((byte_sel_data_map[84+3:84])*3)+:3] <= #TCQ {fine_delay_incdec_pb[7],2'b00}; + fine_delay_sel_r <= #TCQ fine_delay_sel; + end + + //*************************************************************************** + // Control/address + //*************************************************************************** + + assign out_cas_n + = mem_dq_out[48*CAS_MAP[10:8] + 12*CAS_MAP[5:4] + CAS_MAP[3:0]]; + + generate + // if signal placed on bit lanes [0-9] + if (CAS_MAP[3:0] < 4'hA) begin: gen_cas_lt10 + // Determine routing based on clock ratio mode. If running in 4:1 + // mode, then all four bits from logic are used. If 2:1 mode, only + // 2-bits are provided by logic, and each bit is repeated 2x to form + // 4-bit input to IN_FIFO, e.g. + // 4:1 mode: phy_dout[] = {in[3], in[2], in[1], in[0]} + // 2:1 mode: phy_dout[] = {in[1], in[1], in[0], in[0]} + assign phy_dout[(320*CAS_MAP[10:8] + 80*CAS_MAP[5:4] + + 8*CAS_MAP[3:0])+:4] + = {mux_cas_n[3/PHASE_DIV], mux_cas_n[2/PHASE_DIV], + mux_cas_n[1/PHASE_DIV], mux_cas_n[0]}; + end else begin: gen_cas_ge10 + // If signal is placed in bit lane [10] or [11], route to upper + // nibble of phy_dout lane [5] or [6] respectively (in this case + // phy_dout lane [5, 6] are multiplexed to take input for two + // different SDR signals - this is how bits[10,11] need to be + // provided to the OUT_FIFO + assign phy_dout[(320*CAS_MAP[10:8] + 80*CAS_MAP[5:4] + + 8*(CAS_MAP[3:0]-5) + 4)+:4] + = {mux_cas_n[3/PHASE_DIV], mux_cas_n[2/PHASE_DIV], + mux_cas_n[1/PHASE_DIV], mux_cas_n[0]}; + end + endgenerate + + assign out_ras_n + = mem_dq_out[48*RAS_MAP[10:8] + 12*RAS_MAP[5:4] + RAS_MAP[3:0]]; + + generate + if (RAS_MAP[3:0] < 4'hA) begin: gen_ras_lt10 + assign phy_dout[(320*RAS_MAP[10:8] + 80*RAS_MAP[5:4] + + 8*RAS_MAP[3:0])+:4] + = {mux_ras_n[3/PHASE_DIV], mux_ras_n[2/PHASE_DIV], + mux_ras_n[1/PHASE_DIV], mux_ras_n[0]}; + end else begin: gen_ras_ge10 + assign phy_dout[(320*RAS_MAP[10:8] + 80*RAS_MAP[5:4] + + 8*(RAS_MAP[3:0]-5) + 4)+:4] + = {mux_ras_n[3/PHASE_DIV], mux_ras_n[2/PHASE_DIV], + mux_ras_n[1/PHASE_DIV], mux_ras_n[0]}; + end + endgenerate + + assign out_we_n + = mem_dq_out[48*WE_MAP[10:8] + 12*WE_MAP[5:4] + WE_MAP[3:0]]; + + generate + if (WE_MAP[3:0] < 4'hA) begin: gen_we_lt10 + assign phy_dout[(320*WE_MAP[10:8] + 80*WE_MAP[5:4] + + 8*WE_MAP[3:0])+:4] + = {mux_we_n[3/PHASE_DIV], mux_we_n[2/PHASE_DIV], + mux_we_n[1/PHASE_DIV], mux_we_n[0]}; + end else begin: gen_we_ge10 + assign phy_dout[(320*WE_MAP[10:8] + 80*WE_MAP[5:4] + + 8*(WE_MAP[3:0]-5) + 4)+:4] + = {mux_we_n[3/PHASE_DIV], mux_we_n[2/PHASE_DIV], + mux_we_n[1/PHASE_DIV], mux_we_n[0]}; + end + endgenerate + + generate + if (REG_CTRL == "ON") begin: gen_parity_out + // Generate addr/ctrl parity output only for DDR3 and DDR2 registered DIMMs + assign out_parity + = mem_dq_out[48*PARITY_MAP[10:8] + 12*PARITY_MAP[5:4] + + PARITY_MAP[3:0]]; + if (PARITY_MAP[3:0] < 4'hA) begin: gen_lt10 + assign phy_dout[(320*PARITY_MAP[10:8] + 80*PARITY_MAP[5:4] + + 8*PARITY_MAP[3:0])+:4] + = {parity_in[3/PHASE_DIV], parity_in[2/PHASE_DIV], + parity_in[1/PHASE_DIV], parity_in[0]}; + end else begin: gen_ge10 + assign phy_dout[(320*PARITY_MAP[10:8] + 80*PARITY_MAP[5:4] + + 8*(PARITY_MAP[3:0]-5) + 4)+:4] + = {parity_in[3/PHASE_DIV], parity_in[2/PHASE_DIV], + parity_in[1/PHASE_DIV], parity_in[0]}; + end + end + endgenerate + + //***************************************************************** + + generate + genvar m, n,x; + + //***************************************************************** + // Control/address (multi-bit) buses + //***************************************************************** + + // Row/Column address + for (m = 0; m < ROW_WIDTH; m = m + 1) begin: gen_addr_out + assign out_addr[m] + = mem_dq_out[48*ADDR_MAP[(12*m+8)+:3] + + 12*ADDR_MAP[(12*m+4)+:2] + + ADDR_MAP[12*m+:4]]; + + if (ADDR_MAP[12*m+:4] < 4'hA) begin: gen_lt10 + // For multi-bit buses, we also have to deal with transposition + // when going from the logic-side control bus to phy_dout + for (n = 0; n < 4; n = n + 1) begin: loop_xpose + assign phy_dout[320*ADDR_MAP[(12*m+8)+:3] + + 80*ADDR_MAP[(12*m+4)+:2] + + 8*ADDR_MAP[12*m+:4] + n] + = mux_address[ROW_WIDTH*(n/PHASE_DIV) + m]; + end + end else begin: gen_ge10 + for (n = 0; n < 4; n = n + 1) begin: loop_xpose + assign phy_dout[320*ADDR_MAP[(12*m+8)+:3] + + 80*ADDR_MAP[(12*m+4)+:2] + + 8*(ADDR_MAP[12*m+:4]-5) + 4 + n] + = mux_address[ROW_WIDTH*(n/PHASE_DIV) + m]; + end + end + end + + // Bank address + for (m = 0; m < BANK_WIDTH; m = m + 1) begin: gen_ba_out + assign out_ba[m] + = mem_dq_out[48*BANK_MAP[(12*m+8)+:3] + + 12*BANK_MAP[(12*m+4)+:2] + + BANK_MAP[12*m+:4]]; + + if (BANK_MAP[12*m+:4] < 4'hA) begin: gen_lt10 + for (n = 0; n < 4; n = n + 1) begin: loop_xpose + assign phy_dout[320*BANK_MAP[(12*m+8)+:3] + + 80*BANK_MAP[(12*m+4)+:2] + + 8*BANK_MAP[12*m+:4] + n] + = mux_bank[BANK_WIDTH*(n/PHASE_DIV) + m]; + end + end else begin: gen_ge10 + for (n = 0; n < 4; n = n + 1) begin: loop_xpose + assign phy_dout[320*BANK_MAP[(12*m+8)+:3] + + 80*BANK_MAP[(12*m+4)+:2] + + 8*(BANK_MAP[12*m+:4]-5) + 4 + n] + = mux_bank[BANK_WIDTH*(n/PHASE_DIV) + m]; + end + end + end + + // Chip select + if (USE_CS_PORT == 1) begin: gen_cs_n_out + for (m = 0; m < CS_WIDTH*nCS_PER_RANK; m = m + 1) begin: gen_cs_out + assign out_cs_n[m] + = mem_dq_out[48*CS_MAP[(12*m+8)+:3] + + 12*CS_MAP[(12*m+4)+:2] + + CS_MAP[12*m+:4]]; + if (CS_MAP[12*m+:4] < 4'hA) begin: gen_lt10 + for (n = 0; n < 4; n = n + 1) begin: loop_xpose + assign phy_dout[320*CS_MAP[(12*m+8)+:3] + + 80*CS_MAP[(12*m+4)+:2] + + 8*CS_MAP[12*m+:4] + n] + = mux_cs_n[CS_WIDTH*nCS_PER_RANK*(n/PHASE_DIV) + m]; + end + end else begin: gen_ge10 + for (n = 0; n < 4; n = n + 1) begin: loop_xpose + assign phy_dout[320*CS_MAP[(12*m+8)+:3] + + 80*CS_MAP[(12*m+4)+:2] + + 8*(CS_MAP[12*m+:4]-5) + 4 + n] + = mux_cs_n[CS_WIDTH*nCS_PER_RANK*(n/PHASE_DIV) + m]; + end + end + end + end + + + if(CKE_ODT_AUX == "FALSE") begin + // ODT_ports + wire [ODT_WIDTH*nCK_PER_CLK -1 :0] mux_odt_remap ; + + if(RANKS == 1) begin + for(x =0 ; x < nCK_PER_CLK ; x = x+1) begin + assign mux_odt_remap[(x*ODT_WIDTH)+:ODT_WIDTH] = {ODT_WIDTH{mux_odt[0]}} ; + end + end else begin + for(x =0 ; x < 2*nCK_PER_CLK ; x = x+2) begin + assign mux_odt_remap[(x*ODT_WIDTH/RANKS)+:ODT_WIDTH/RANKS] = {ODT_WIDTH/RANKS{mux_odt[0]}} ; + assign mux_odt_remap[((x*ODT_WIDTH/RANKS)+(ODT_WIDTH/RANKS))+:ODT_WIDTH/RANKS] = {ODT_WIDTH/RANKS{mux_odt[1]}} ; + end + end + + if (USE_ODT_PORT == 1) begin: gen_odt_out + for (m = 0; m < ODT_WIDTH; m = m + 1) begin: gen_odt_out_1 + assign out_odt[m] + = mem_dq_out[48*ODT_MAP[(12*m+8)+:3] + + 12*ODT_MAP[(12*m+4)+:2] + + ODT_MAP[12*m+:4]]; + if (ODT_MAP[12*m+:4] < 4'hA) begin: gen_lt10 + for (n = 0; n < 4; n = n + 1) begin: loop_xpose + assign phy_dout[320*ODT_MAP[(12*m+8)+:3] + + 80*ODT_MAP[(12*m+4)+:2] + + 8*ODT_MAP[12*m+:4] + n] + = mux_odt_remap[ODT_WIDTH*(n/PHASE_DIV) + m]; + end + end else begin: gen_ge10 + for (n = 0; n < 4; n = n + 1) begin: loop_xpose + assign phy_dout[320*ODT_MAP[(12*m+8)+:3] + + 80*ODT_MAP[(12*m+4)+:2] + + 8*(ODT_MAP[12*m+:4]-5) + 4 + n] + = mux_odt_remap[ODT_WIDTH*(n/PHASE_DIV) + m]; + end + end + end + end + + + wire [CKE_WIDTH*nCK_PER_CLK -1:0] mux_cke_remap ; + + for(x = 0 ; x < nCK_PER_CLK ; x = x +1) begin + assign mux_cke_remap[(x*CKE_WIDTH)+:CKE_WIDTH] = {CKE_WIDTH{mux_cke[x]}} ; + end + + + + for (m = 0; m < CKE_WIDTH; m = m + 1) begin: gen_cke_out + assign out_cke[m] + = mem_dq_out[48*CKE_MAP[(12*m+8)+:3] + + 12*CKE_MAP[(12*m+4)+:2] + + CKE_MAP[12*m+:4]]; + if (CKE_MAP[12*m+:4] < 4'hA) begin: gen_lt10 + for (n = 0; n < 4; n = n + 1) begin: loop_xpose + assign phy_dout[320*CKE_MAP[(12*m+8)+:3] + + 80*CKE_MAP[(12*m+4)+:2] + + 8*CKE_MAP[12*m+:4] + n] + = mux_cke_remap[CKE_WIDTH*(n/PHASE_DIV) + m]; + end + end else begin: gen_ge10 + for (n = 0; n < 4; n = n + 1) begin: loop_xpose + assign phy_dout[320*CKE_MAP[(12*m+8)+:3] + + 80*CKE_MAP[(12*m+4)+:2] + + 8*(CKE_MAP[12*m+:4]-5) + 4 + n] + = mux_cke_remap[CKE_WIDTH*(n/PHASE_DIV) + m]; + end + end + end + end + + //***************************************************************** + // Data mask + //***************************************************************** + + if (USE_DM_PORT == 1) begin: gen_dm_out + for (m = 0; m < DM_WIDTH; m = m + 1) begin: gen_dm_out + assign out_dm[m] + = mem_dq_out[48*FULL_MASK_MAP[(12*m+8)+:3] + + 12*FULL_MASK_MAP[(12*m+4)+:2] + + FULL_MASK_MAP[12*m+:4]]; + assign ts_dm[m] + = mem_dq_ts[48*FULL_MASK_MAP[(12*m+8)+:3] + + 12*FULL_MASK_MAP[(12*m+4)+:2] + + FULL_MASK_MAP[12*m+:4]]; + for (n = 0; n < PHASE_PER_CLK; n = n + 1) begin: loop_xpose + assign phy_dout[320*FULL_MASK_MAP[(12*m+8)+:3] + + 80*FULL_MASK_MAP[(12*m+4)+:2] + + 8*FULL_MASK_MAP[12*m+:4] + n] + = mux_wrdata_mask[DM_WIDTH*n + m]; + end + end + end + + //***************************************************************** + // Input and output DQ + //***************************************************************** + + for (m = 0; m < DQ_WIDTH; m = m + 1) begin: gen_dq_inout + // to MC_PHY + assign mem_dq_in[40*FULL_DATA_MAP[(12*m+8)+:3] + + 10*FULL_DATA_MAP[(12*m+4)+:2] + + FULL_DATA_MAP[12*m+:4]] + = in_dq[m]; + // to I/O buffers + assign out_dq[m] + = mem_dq_out[48*FULL_DATA_MAP[(12*m+8)+:3] + + 12*FULL_DATA_MAP[(12*m+4)+:2] + + FULL_DATA_MAP[12*m+:4]]; + assign ts_dq[m] + = mem_dq_ts[48*FULL_DATA_MAP[(12*m+8)+:3] + + 12*FULL_DATA_MAP[(12*m+4)+:2] + + FULL_DATA_MAP[12*m+:4]]; + for (n = 0; n < PHASE_PER_CLK; n = n + 1) begin: loop_xpose + assign phy_dout[320*FULL_DATA_MAP[(12*m+8)+:3] + + 80*FULL_DATA_MAP[(12*m+4)+:2] + + 8*FULL_DATA_MAP[12*m+:4] + n] + = mux_wrdata[DQ_WIDTH*n + m]; + end + end + + //***************************************************************** + // Input and output DQS + //***************************************************************** + + for (m = 0; m < DQS_WIDTH; m = m + 1) begin: gen_dqs_inout + // to MC_PHY + assign mem_dqs_in[4*DQS_BYTE_MAP[(8*m+4)+:3] + DQS_BYTE_MAP[(8*m)+:2]] + = in_dqs[m]; + // to I/O buffers + assign out_dqs[m] + = mem_dqs_out[4*DQS_BYTE_MAP[(8*m+4)+:3] + DQS_BYTE_MAP[(8*m)+:2]]; + assign ts_dqs[m] + = mem_dqs_ts[4*DQS_BYTE_MAP[(8*m+4)+:3] + DQS_BYTE_MAP[(8*m)+:2]]; + end + endgenerate + + assign pd_out = pd_out_pre[byte_sel_cnt_w1]; + + + //*************************************************************************** + // Memory I/F output and I/O buffer instantiation + //*************************************************************************** + + // Note on instantiation - generally at the minimum, it's not required to + // instantiate the output buffers - they can be inferred by the synthesis + // tool, and there aren't any attributes that need to be associated with + // them. Consider as a future option to take out the OBUF instantiations + + OBUF u_cas_n_obuf + ( + .I (out_cas_n), + .O (ddr_cas_n) + ); + + OBUF u_ras_n_obuf + ( + .I (out_ras_n), + .O (ddr_ras_n) + ); + + OBUF u_we_n_obuf + ( + .I (out_we_n), + .O (ddr_we_n) + ); + + generate + genvar p; + + for (p = 0; p < ROW_WIDTH; p = p + 1) begin: gen_addr_obuf + OBUF u_addr_obuf + ( + .I (out_addr[p]), + .O (ddr_addr[p]) + ); + end + + for (p = 0; p < BANK_WIDTH; p = p + 1) begin: gen_bank_obuf + OBUF u_bank_obuf + ( + .I (out_ba[p]), + .O (ddr_ba[p]) + ); + end + + if (USE_CS_PORT == 1) begin: gen_cs_n_obuf + for (p = 0; p < CS_WIDTH*nCS_PER_RANK; p = p + 1) begin: gen_cs_obuf + OBUF u_cs_n_obuf + ( + .I (out_cs_n[p]), + .O (ddr_cs_n[p]) + ); + end + end + if(CKE_ODT_AUX == "FALSE")begin:cke_odt_thru_outfifo + if (USE_ODT_PORT== 1) begin: gen_odt_obuf + for (p = 0; p < ODT_WIDTH; p = p + 1) begin: gen_odt_obuf + OBUF u_cs_n_obuf + ( + .I (out_odt[p]), + .O (ddr_odt[p]) + ); + end + end + for (p = 0; p < CKE_WIDTH; p = p + 1) begin: gen_cke_obuf + OBUF u_cs_n_obuf + ( + .I (out_cke[p]), + .O (ddr_cke[p]) + ); + end + end + + if (REG_CTRL == "ON") begin: gen_parity_obuf + // Generate addr/ctrl parity output only for DDR3 registered DIMMs + OBUF u_parity_obuf + ( + .I (out_parity), + .O (ddr_parity) + ); + end else begin: gen_parity_tieoff + assign ddr_parity = 1'b0; + end + + if ((DRAM_TYPE == "DDR3") || (REG_CTRL == "ON")) begin: gen_reset_obuf + // Generate reset output only for DDR3 and DDR2 RDIMMs + OBUF u_reset_obuf + ( + .I (mux_reset_n), + .O (ddr_reset_n) + ); + end else begin: gen_reset_tieoff + assign ddr_reset_n = 1'b1; + end + + if (USE_DM_PORT == 1) begin: gen_dm_obuf + for (p = 0; p < DM_WIDTH; p = p + 1) begin: loop_dm + OBUFT u_dm_obuf + ( + .I (out_dm[p]), + .T (ts_dm[p]), + .O (ddr_dm[p]) + ); + end + end else begin: gen_dm_tieoff + assign ddr_dm = 'b0; + end + + if (DATA_IO_PRIM_TYPE == "HP_LP") begin: gen_dq_iobuf_HP + for (p = 0; p < DQ_WIDTH; p = p + 1) begin: gen_dq_iobuf + IOBUF_DCIEN # + ( + .IBUF_LOW_PWR (IBUF_LOW_PWR) + ) + u_iobuf_dq + ( + .DCITERMDISABLE (data_io_idle_pwrdwn), + .IBUFDISABLE (data_io_idle_pwrdwn), + .I (out_dq[p]), + .T (ts_dq[p]), + .O (in_dq[p]), + .IO (ddr_dq[p]) + ); + end + end else if (DATA_IO_PRIM_TYPE == "HR_LP") begin: gen_dq_iobuf_HR + for (p = 0; p < DQ_WIDTH; p = p + 1) begin: gen_dq_iobuf + IOBUF_INTERMDISABLE # + ( + .IBUF_LOW_PWR (IBUF_LOW_PWR) + ) + u_iobuf_dq + ( + .INTERMDISABLE (data_io_idle_pwrdwn), + .IBUFDISABLE (data_io_idle_pwrdwn), + .I (out_dq[p]), + .T (ts_dq[p]), + .O (in_dq[p]), + .IO (ddr_dq[p]) + ); + end + end else begin: gen_dq_iobuf_default + for (p = 0; p < DQ_WIDTH; p = p + 1) begin: gen_dq_iobuf + IOBUF # + ( + .IBUF_LOW_PWR (IBUF_LOW_PWR) + ) + u_iobuf_dq + ( + .I (out_dq[p]), + .T (ts_dq[p]), + .O (in_dq[p]), + .IO (ddr_dq[p]) + ); + end + end + + //if (DATA_IO_PRIM_TYPE == "HP_LP") begin: gen_dqs_iobuf_HP + if ((BANK_TYPE == "HP_IO") || (BANK_TYPE == "HPL_IO")) begin: gen_dqs_iobuf_HP + for (p = 0; p < DQS_WIDTH; p = p + 1) begin: gen_dqs_iobuf + if ((DRAM_TYPE == "DDR2") && + (DDR2_DQSN_ENABLE != "YES")) begin: gen_ddr2_dqs_se + IOBUF_DCIEN # + ( + .IBUF_LOW_PWR (IBUF_LOW_PWR) + ) + u_iobuf_dqs + ( + .DCITERMDISABLE (data_io_idle_pwrdwn), + .IBUFDISABLE (data_io_idle_pwrdwn), + .I (out_dqs[p]), + .T (ts_dqs[p]), + .O (in_dqs[p]), + .IO (ddr_dqs[p]) + ); + assign ddr_dqs_n[p] = 1'b0; + assign pd_out_pre[p] = 1'b0; + end else if ((DRAM_TYPE == "DDR2") || + (tCK > 2500)) begin : gen_ddr2_or_low_dqs_diff + IOBUFDS_DCIEN # + ( + .IBUF_LOW_PWR (IBUF_LOW_PWR), + .DQS_BIAS ("TRUE") + ) + u_iobuf_dqs + ( + .DCITERMDISABLE (data_io_idle_pwrdwn), + .IBUFDISABLE (data_io_idle_pwrdwn), + .I (out_dqs[p]), + .T (ts_dqs[p]), + .O (in_dqs[p]), + .IO (ddr_dqs[p]), + .IOB (ddr_dqs_n[p]) + ); + assign pd_out_pre[p] = 1'b0; + end else begin: gen_dqs_diff + IOBUFDS_DIFF_OUT_DCIEN # + ( + .IBUF_LOW_PWR (IBUF_LOW_PWR), + .DQS_BIAS ("TRUE"), + .SIM_DEVICE ("7SERIES"), + .USE_IBUFDISABLE ("FALSE") + ) + u_iobuf_dqs + ( + .DCITERMDISABLE (data_io_idle_pwrdwn), + .I (out_dqs[p]), + .TM (ts_dqs[p]), + .TS (ts_dqs[p]), + .OB (in_dqs_lpbk_to_iddr[p]), + .O (in_dqs[p]), + .IO (ddr_dqs[p]), + .IOB (ddr_dqs_n[p]) + ); + + mig_7series_v4_0_poc_pd # + ( + .TCQ (TCQ), + .POC_USE_METASTABLE_SAMP (POC_USE_METASTABLE_SAMP) + ) + u_iddr_edge_det + ( + .clk (clk), + .iddr_rst (iddr_rst_i), + .kclk (in_dqs_lpbk_to_iddr[p]), + .mmcm_ps_clk (mmcm_ps_clk), + .pd_out (pd_out_pre[p]) + ); + end + end + //end else if (DATA_IO_PRIM_TYPE == "HR_LP") begin: gen_dqs_iobuf_HR + end else if ((BANK_TYPE == "HR_IO") || (BANK_TYPE == "HRL_IO")) begin: gen_dqs_iobuf_HR + for (p = 0; p < DQS_WIDTH; p = p + 1) begin: gen_dqs_iobuf + if ((DRAM_TYPE == "DDR2") && + (DDR2_DQSN_ENABLE != "YES")) begin: gen_ddr2_dqs_se + IOBUF_INTERMDISABLE # + ( + .IBUF_LOW_PWR (IBUF_LOW_PWR) + ) + u_iobuf_dqs + ( + .INTERMDISABLE (data_io_idle_pwrdwn), + .IBUFDISABLE (data_io_idle_pwrdwn), + .I (out_dqs[p]), + .T (ts_dqs[p]), + .O (in_dqs[p]), + .IO (ddr_dqs[p]) + ); + assign ddr_dqs_n[p] = 1'b0; + assign pd_out_pre[p] = 1'b0; + end else if ((DRAM_TYPE == "DDR2") || + (tCK > 2500)) begin: gen_ddr2_or_low_dqs_diff + IOBUFDS_INTERMDISABLE # + ( + .IBUF_LOW_PWR (IBUF_LOW_PWR), + .DQS_BIAS ("TRUE") + ) + u_iobuf_dqs + ( + .INTERMDISABLE (data_io_idle_pwrdwn), + .IBUFDISABLE (data_io_idle_pwrdwn), + .I (out_dqs[p]), + .T (ts_dqs[p]), + .O (in_dqs[p]), + .IO (ddr_dqs[p]), + .IOB (ddr_dqs_n[p]) + ); + assign pd_out_pre[p] = 1'b0; + end else begin: gen_dqs_diff + IOBUFDS_DIFF_OUT_INTERMDISABLE # + ( + .IBUF_LOW_PWR (IBUF_LOW_PWR), + .DQS_BIAS ("TRUE"), + .SIM_DEVICE ("7SERIES"), + .USE_IBUFDISABLE ("FALSE") + ) + u_iobuf_dqs + ( + .INTERMDISABLE (data_io_idle_pwrdwn), + //.IBUFDISABLE (data_io_idle_pwrdwn), + .I (out_dqs[p]), + .TM (ts_dqs[p]), + .TS (ts_dqs[p]), + .OB (in_dqs_lpbk_to_iddr[p]), + .O (in_dqs[p]), + .IO (ddr_dqs[p]), + .IOB (ddr_dqs_n[p]) + ); + + mig_7series_v4_0_poc_pd # + ( + .TCQ (TCQ), + .POC_USE_METASTABLE_SAMP (POC_USE_METASTABLE_SAMP) + ) + u_iddr_edge_det + ( + .clk (clk), + .iddr_rst (iddr_rst_i), + .kclk (in_dqs_lpbk_to_iddr[p]), + .mmcm_ps_clk (mmcm_ps_clk), + .pd_out (pd_out_pre[p]) + ); + end + end + end else begin: gen_dqs_iobuf_default + for (p = 0; p < DQS_WIDTH; p = p + 1) begin: gen_dqs_iobuf + if ((DRAM_TYPE == "DDR2") && + (DDR2_DQSN_ENABLE != "YES")) begin: gen_ddr2_dqs_se + IOBUF # + ( + .IBUF_LOW_PWR (IBUF_LOW_PWR) + ) + u_iobuf_dqs + ( + .I (out_dqs[p]), + .T (ts_dqs[p]), + .O (in_dqs[p]), + .IO (ddr_dqs[p]) + ); + assign ddr_dqs_n[p] = 1'b0; + assign pd_out_pre[p] = 1'b0; + end else begin: gen_dqs_diff + IOBUFDS # + ( + .IBUF_LOW_PWR (IBUF_LOW_PWR), + .DQS_BIAS ("TRUE") + ) + u_iobuf_dqs + ( + .I (out_dqs[p]), + .T (ts_dqs[p]), + .O (in_dqs[p]), + .IO (ddr_dqs[p]), + .IOB (ddr_dqs_n[p]) + ); + assign pd_out_pre[p] = 1'b0; + end + end + end + + endgenerate + + always @(posedge clk) begin + phy_ctl_wd_i1 <= #TCQ phy_ctl_wd; + phy_ctl_wr_i1 <= #TCQ phy_ctl_wr; + phy_ctl_wd_i2 <= #TCQ phy_ctl_wd_i1; + phy_ctl_wr_i2 <= #TCQ phy_ctl_wr_i1; + data_offset_1_i1 <= #TCQ data_offset_1; + data_offset_1_i2 <= #TCQ data_offset_1_i1; + data_offset_2_i1 <= #TCQ data_offset_2; + data_offset_2_i2 <= #TCQ data_offset_2_i1; + end + + + // 2 cycles of command delay needed for 4;1 mode. 2:1 mode does not need it. + // 2:1 mode the command goes through pre fifo + assign phy_ctl_wd_temp = (nCK_PER_CLK == 4) ? phy_ctl_wd_i2 : phy_ctl_wd_of; + assign phy_ctl_wr_temp = (nCK_PER_CLK == 4) ? phy_ctl_wr_i2 : phy_ctl_wr_of; + assign data_offset_1_temp = (nCK_PER_CLK == 4) ? data_offset_1_i2 : data_offset_1_of; + assign data_offset_2_temp = (nCK_PER_CLK == 4) ? data_offset_2_i2 : data_offset_2_of; + + generate + begin + + mig_7series_v4_0_ddr_of_pre_fifo # + ( + .TCQ (25), + .DEPTH (8), + .WIDTH (32) + ) + phy_ctl_pre_fifo_0 + ( + .clk (clk), + .rst (rst), + .full_in (phy_ctl_full_temp[1]), + .wr_en_in (phy_ctl_wr), + .d_in (phy_ctl_wd), + .wr_en_out (phy_ctl_wr_of), + .d_out (phy_ctl_wd_of) + ); + + mig_7series_v4_0_ddr_of_pre_fifo # + ( + .TCQ (25), + .DEPTH (8), + .WIDTH (6) + ) + phy_ctl_pre_fifo_1 + ( + .clk (clk), + .rst (rst), + .full_in (phy_ctl_full_temp[2]), + .wr_en_in (phy_ctl_wr), + .d_in (data_offset_1), + .wr_en_out (), + .d_out (data_offset_1_of) + ); + + mig_7series_v4_0_ddr_of_pre_fifo # + ( + .TCQ (25), + .DEPTH (8), + .WIDTH (6) + ) + phy_ctl_pre_fifo_2 + ( + .clk (clk), + .rst (rst), + .full_in (phy_ctl_full_temp[3]), + .wr_en_in (phy_ctl_wr), + .d_in (data_offset_2), + .wr_en_out (), + .d_out (data_offset_2_of) + ); + + end + endgenerate + + + + //*************************************************************************** + // Hard PHY instantiation + //*************************************************************************** + + assign phy_ctl_full = phy_ctl_full_temp[0]; + + mig_7series_v4_0_ddr_mc_phy # + ( + .BYTE_LANES_B0 (BYTE_LANES_B0), + .BYTE_LANES_B1 (BYTE_LANES_B1), + .BYTE_LANES_B2 (BYTE_LANES_B2), + .BYTE_LANES_B3 (BYTE_LANES_B3), + .BYTE_LANES_B4 (BYTE_LANES_B4), + .DATA_CTL_B0 (DATA_CTL_B0), + .DATA_CTL_B1 (DATA_CTL_B1), + .DATA_CTL_B2 (DATA_CTL_B2), + .DATA_CTL_B3 (DATA_CTL_B3), + .DATA_CTL_B4 (DATA_CTL_B4), + .PHY_0_BITLANES (PHY_0_BITLANES), + .PHY_1_BITLANES (PHY_1_BITLANES), + .PHY_2_BITLANES (PHY_2_BITLANES), + .PHY_0_BITLANES_OUTONLY (PHY_0_BITLANES_OUTONLY), + .PHY_1_BITLANES_OUTONLY (PHY_1_BITLANES_OUTONLY), + .PHY_2_BITLANES_OUTONLY (PHY_2_BITLANES_OUTONLY), + .RCLK_SELECT_BANK (CKE_ODT_RCLK_SELECT_BANK), + .RCLK_SELECT_LANE (CKE_ODT_RCLK_SELECT_LANE), + //.CKE_ODT_AUX (CKE_ODT_AUX), + .GENERATE_DDR_CK_MAP (TMP_GENERATE_DDR_CK_MAP), + .BYTELANES_DDR_CK (TMP_BYTELANES_DDR_CK), + .NUM_DDR_CK (CK_WIDTH), + .LP_DDR_CK_WIDTH (LP_DDR_CK_WIDTH), + .PO_CTL_COARSE_BYPASS ("FALSE"), + .PHYCTL_CMD_FIFO ("FALSE"), + .PHY_CLK_RATIO (nCK_PER_CLK), + .MASTER_PHY_CTL (MASTER_PHY_CTL), + .PHY_FOUR_WINDOW_CLOCKS (63), + .PHY_EVENTS_DELAY (18), + .PHY_COUNT_EN ("FALSE"), //PHY_COUNT_EN + .PHY_SYNC_MODE ("FALSE"), + .SYNTHESIS ((SIM_CAL_OPTION == "NONE") ? "TRUE" : "FALSE"), + .PHY_DISABLE_SEQ_MATCH ("TRUE"), //"TRUE" + .PHY_0_GENERATE_IDELAYCTRL ("FALSE"), + .PHY_0_A_PI_FREQ_REF_DIV (PHY_0_A_PI_FREQ_REF_DIV), + .PHY_0_CMD_OFFSET (PHY_0_CMD_OFFSET), //for CKE + .PHY_0_RD_CMD_OFFSET_0 (PHY_0_RD_CMD_OFFSET_0), + .PHY_0_RD_CMD_OFFSET_1 (PHY_0_RD_CMD_OFFSET_1), + .PHY_0_RD_CMD_OFFSET_2 (PHY_0_RD_CMD_OFFSET_2), + .PHY_0_RD_CMD_OFFSET_3 (PHY_0_RD_CMD_OFFSET_3), + .PHY_0_RD_DURATION_0 (6), + .PHY_0_RD_DURATION_1 (6), + .PHY_0_RD_DURATION_2 (6), + .PHY_0_RD_DURATION_3 (6), + .PHY_0_WR_CMD_OFFSET_0 (PHY_0_WR_CMD_OFFSET_0), + .PHY_0_WR_CMD_OFFSET_1 (PHY_0_WR_CMD_OFFSET_1), + .PHY_0_WR_CMD_OFFSET_2 (PHY_0_WR_CMD_OFFSET_2), + .PHY_0_WR_CMD_OFFSET_3 (PHY_0_WR_CMD_OFFSET_3), + .PHY_0_WR_DURATION_0 (PHY_0_WR_DURATION_0), + .PHY_0_WR_DURATION_1 (PHY_0_WR_DURATION_1), + .PHY_0_WR_DURATION_2 (PHY_0_WR_DURATION_2), + .PHY_0_WR_DURATION_3 (PHY_0_WR_DURATION_3), + .PHY_0_AO_TOGGLE ((RANKS == 1) ? 1 : 5), + .PHY_0_A_PO_OCLK_DELAY (PHY_0_A_PO_OCLK_DELAY), + .PHY_0_B_PO_OCLK_DELAY (PHY_0_A_PO_OCLK_DELAY), + .PHY_0_C_PO_OCLK_DELAY (PHY_0_A_PO_OCLK_DELAY), + .PHY_0_D_PO_OCLK_DELAY (PHY_0_A_PO_OCLK_DELAY), + .PHY_0_A_PO_OCLKDELAY_INV (PO_OCLKDELAY_INV), + .PHY_0_A_IDELAYE2_IDELAY_VALUE (PHY_0_A_IDELAYE2_IDELAY_VALUE), + .PHY_0_B_IDELAYE2_IDELAY_VALUE (PHY_0_A_IDELAYE2_IDELAY_VALUE), + .PHY_0_C_IDELAYE2_IDELAY_VALUE (PHY_0_A_IDELAYE2_IDELAY_VALUE), + .PHY_0_D_IDELAYE2_IDELAY_VALUE (PHY_0_A_IDELAYE2_IDELAY_VALUE), + .PHY_1_GENERATE_IDELAYCTRL ("FALSE"), + //.PHY_1_GENERATE_DDR_CK (TMP_PHY_1_GENERATE_DDR_CK), + //.PHY_1_NUM_DDR_CK (1), + .PHY_1_A_PO_OCLK_DELAY (PHY_0_A_PO_OCLK_DELAY), + .PHY_1_B_PO_OCLK_DELAY (PHY_0_A_PO_OCLK_DELAY), + .PHY_1_C_PO_OCLK_DELAY (PHY_0_A_PO_OCLK_DELAY), + .PHY_1_D_PO_OCLK_DELAY (PHY_0_A_PO_OCLK_DELAY), + .PHY_1_A_IDELAYE2_IDELAY_VALUE (PHY_0_A_IDELAYE2_IDELAY_VALUE), + .PHY_1_B_IDELAYE2_IDELAY_VALUE (PHY_0_A_IDELAYE2_IDELAY_VALUE), + .PHY_1_C_IDELAYE2_IDELAY_VALUE (PHY_0_A_IDELAYE2_IDELAY_VALUE), + .PHY_1_D_IDELAYE2_IDELAY_VALUE (PHY_0_A_IDELAYE2_IDELAY_VALUE), + .PHY_2_GENERATE_IDELAYCTRL ("FALSE"), + //.PHY_2_GENERATE_DDR_CK (TMP_PHY_2_GENERATE_DDR_CK), + //.PHY_2_NUM_DDR_CK (1), + .PHY_2_A_PO_OCLK_DELAY (PHY_0_A_PO_OCLK_DELAY), + .PHY_2_B_PO_OCLK_DELAY (PHY_0_A_PO_OCLK_DELAY), + .PHY_2_C_PO_OCLK_DELAY (PHY_0_A_PO_OCLK_DELAY), + .PHY_2_D_PO_OCLK_DELAY (PHY_0_A_PO_OCLK_DELAY), + .PHY_2_A_IDELAYE2_IDELAY_VALUE (PHY_0_A_IDELAYE2_IDELAY_VALUE), + .PHY_2_B_IDELAYE2_IDELAY_VALUE (PHY_0_A_IDELAYE2_IDELAY_VALUE), + .PHY_2_C_IDELAYE2_IDELAY_VALUE (PHY_0_A_IDELAYE2_IDELAY_VALUE), + .PHY_2_D_IDELAYE2_IDELAY_VALUE (PHY_0_A_IDELAYE2_IDELAY_VALUE), + .TCK (tCK), + .PHY_0_IODELAY_GRP (IODELAY_GRP), + .PHY_1_IODELAY_GRP (IODELAY_GRP), + .PHY_2_IODELAY_GRP (IODELAY_GRP), + .FPGA_SPEED_GRADE (FPGA_SPEED_GRADE), + .BANK_TYPE (BANK_TYPE), + .CKE_ODT_AUX (CKE_ODT_AUX), + .PI_DIV2_INCDEC (PI_DIV2_INCDEC) + ) + u_ddr_mc_phy + ( + .rst (rst), + // Don't use MC_PHY to generate DDR_RESET_N output. Instead + // generate this output outside of MC_PHY (and synchronous to CLK) + .ddr_rst_in_n (1'b1), + .phy_clk (clk), + .clk_div2 (clk_div2), + .freq_refclk (freq_refclk), + .mem_refclk (mem_refclk), + // Remove later - always same connection as phy_clk port + .mem_refclk_div4 (clk), + .pll_lock (pll_lock), + .auxout_clk (), + .sync_pulse (sync_pulse), + // IDELAYCTRL instantiated outside of mc_phy module + .idelayctrl_refclk (), + .phy_dout (phy_dout), + .phy_cmd_wr_en (phy_cmd_wr_en), + .phy_data_wr_en (phy_data_wr_en), + .phy_rd_en (phy_rd_en), + .phy_ctl_wd (phy_ctl_wd_temp), + .phy_ctl_wr (phy_ctl_wr_temp), + .if_empty_def (phy_if_empty_def), + .if_rst (phy_if_reset), + .phyGo ('b1), + .aux_in_1 (aux_in_1), + .aux_in_2 (aux_in_2), + // No support yet for different data offsets for different I/O banks + // (possible use in supporting wider range of skew among bytes) + .data_offset_1 (data_offset_1_temp), + .data_offset_2 (data_offset_2_temp), + .cke_in (), + .if_a_empty (), + .if_empty (if_empty), + .if_empty_or (), + .if_empty_and (), + .of_ctl_a_full (), + // .of_data_a_full (phy_data_full), + .of_ctl_full (phy_cmd_full), + .of_data_full (), + .pre_data_a_full (phy_pre_data_a_full), + .idelay_ld (idelay_ld), + .idelay_ce (idelay_ce), + .idelay_inc (idelay_inc), + .input_sink (), + .phy_din (phy_din), + .phy_ctl_a_full (), + .phy_ctl_full (phy_ctl_full_temp), + .mem_dq_out (mem_dq_out), + .mem_dq_ts (mem_dq_ts), + .mem_dq_in (mem_dq_in), + .mem_dqs_out (mem_dqs_out), + .mem_dqs_ts (mem_dqs_ts), + .mem_dqs_in (mem_dqs_in), + .aux_out (aux_out), + .phy_ctl_ready (), + .rst_out (), + .ddr_clk (ddr_clk), + //.rclk (), + .mcGo (phy_mc_go), + .phy_write_calib (phy_write_calib), + .phy_read_calib (phy_read_calib), + .calib_sel (calib_sel), + .calib_in_common (calib_in_common), + .calib_zero_inputs (calib_zero_inputs), + .calib_zero_ctrl (calib_zero_ctrl), + .calib_zero_lanes ('b0), + .po_fine_enable (po_fine_enable), + .po_coarse_enable (po_coarse_enable), + .po_fine_inc (po_fine_inc), + .po_coarse_inc (po_coarse_inc), + .po_counter_load_en (po_counter_load_en), + .po_sel_fine_oclk_delay (po_sel_fine_oclk_delay), + .po_counter_load_val (po_counter_load_val), + .po_counter_read_en (po_counter_read_en), + .po_coarse_overflow (), + .po_fine_overflow (), + .po_counter_read_val (po_counter_read_val), + .pi_rst_dqs_find (pi_rst_dqs_find), + .pi_fine_enable (pi_fine_enable), + .pi_fine_inc (pi_fine_inc), + .pi_counter_load_en (pi_counter_load_en), + .pi_counter_read_en (dbg_pi_counter_read_en), + .pi_counter_load_val (pi_counter_load_val), + .pi_fine_overflow (), + .pi_counter_read_val (pi_counter_read_val), + .pi_phase_locked (pi_phase_locked), + .pi_phase_locked_all (pi_phase_locked_all), + .pi_dqs_found (), + .pi_dqs_found_any (pi_dqs_found), + .pi_dqs_found_all (pi_dqs_found_all), + .pi_dqs_found_lanes (dbg_pi_dqs_found_lanes_phy4lanes), + // Currently not being used. May be used in future if periodic + // reads become a requirement. This output could be used to signal + // a catastrophic failure in read capture and the need for + // re-calibration. + .pi_dqs_out_of_range (pi_dqs_out_of_range) + + ,.ref_dll_lock (ref_dll_lock) + ,.pi_phase_locked_lanes (dbg_pi_phase_locked_phy4lanes) + ,.fine_delay (fine_delay_mod) + ,.fine_delay_sel (fine_delay_sel_r) +// ,.rst_phaser_ref (rst_phaser_ref) + ); + +endmodule diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_of_pre_fifo.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_of_pre_fifo.v new file mode 100644 index 0000000..e496c23 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_of_pre_fifo.v @@ -0,0 +1,210 @@ +//***************************************************************************** +// (c) Copyright 2008 - 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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor : Xilinx +// \ \ \/ Version : %version +// \ \ Application : MIG +// / / Filename : ddr_of_pre_fifo.v +// /___/ /\ Date Last Modified : $date$ +// \ \ / \ Date Created : Feb 08 2011 +// \___\/\___\ +// +//Device : 7 Series +//Design Name : DDR3 SDRAM +//Purpose : Extends the depth of a PHASER OUT_FIFO up to 4 entries +//Reference : +//Revision History : +//***************************************************************************** + +/****************************************************************************** +**$Id: ddr_of_pre_fifo.v,v 1.1 2011/06/02 08:35:07 mishra Exp $ +**$Date: 2011/06/02 08:35:07 $ +**$Author: mishra $ +**$Revision: 1.1 $ +**$Source: /devl/xcs/repo/env/Databases/ip/src2/O/mig_7series_v1_3/data/dlib/7series/ddr3_sdram/verilog/rtl/phy/ddr_of_pre_fifo.v,v $ +******************************************************************************/ + +`timescale 1 ps / 1 ps + +module mig_7series_v4_0_ddr_of_pre_fifo # + ( + parameter TCQ = 100, // clk->out delay (sim only) + parameter DEPTH = 4, // # of entries + parameter WIDTH = 32 // data bus width + ) + ( + input clk, // clock + input rst, // synchronous reset + input full_in, // FULL flag from OUT_FIFO + input wr_en_in, // write enable from controller + input [WIDTH-1:0] d_in, // write data from controller + output wr_en_out, // write enable to OUT_FIFO + output [WIDTH-1:0] d_out, // write data to OUT_FIFO + output afull // almost full signal to controller + ); + + // # of bits used to represent read/write pointers + localparam PTR_BITS + = (DEPTH == 2) ? 1 : + ((DEPTH == 3) || (DEPTH == 4)) ? 2 : + (((DEPTH == 5) || (DEPTH == 6) || + (DEPTH == 7) || (DEPTH == 8)) ? 3 : + DEPTH == 9 ? 4 : 'bx); + + // Set watermark. Always give the MC 5 cycles to engage flow control. + localparam ALMOST_FULL_VALUE = DEPTH - 5; + + integer i; + + reg [WIDTH-1:0] mem[0:DEPTH-1] ; + reg [8:0] my_empty /* synthesis syn_maxfan = 3 */; + reg [5:0] my_full /* synthesis syn_maxfan = 3 */; + reg [PTR_BITS-1:0] rd_ptr /* synthesis syn_maxfan = 10 */; + reg [PTR_BITS-1:0] wr_ptr /* synthesis syn_maxfan = 10 */; + (* KEEP = "TRUE", max_fanout = 50 *) reg [PTR_BITS-1:0] rd_ptr_timing /* synthesis syn_maxfan = 10 */; + (* KEEP = "TRUE", max_fanout = 50 *) reg [PTR_BITS-1:0] wr_ptr_timing /* synthesis syn_maxfan = 10 */; + reg [PTR_BITS:0] entry_cnt; + wire [PTR_BITS-1:0] nxt_rd_ptr; + wire [PTR_BITS-1:0] nxt_wr_ptr; + wire [WIDTH-1:0] mem_out; + (* max_fanout = 50 *) wire wr_en; + + assign d_out = my_empty[0] ? d_in : mem_out; + assign wr_en_out = !full_in && (!my_empty[1] || wr_en_in); + assign wr_en = wr_en_in & ((!my_empty[3] & !full_in)|(!my_full[2] & full_in)); + + always @ (posedge clk) + if (wr_en) + mem[wr_ptr] <= #TCQ d_in; + + assign mem_out = mem[rd_ptr]; + + assign nxt_rd_ptr = (rd_ptr + 1'b1)%DEPTH; + + always @ (posedge clk) + begin + if (rst) begin + rd_ptr <= 'b0; + rd_ptr_timing <= 'b0; + end + else if ((!my_empty[4]) & (!full_in)) begin + rd_ptr <= nxt_rd_ptr; + rd_ptr_timing <= nxt_rd_ptr; + end + end + + always @ (posedge clk) + begin + if (rst) + my_empty <= 9'h1ff; + else begin + if (my_empty[2] & !my_full[3] & full_in & wr_en_in) + my_empty[3:0] <= 4'b0000; + else if (!my_empty[2] & !my_full[3] & !full_in & !wr_en_in) begin + my_empty[0] <= (nxt_rd_ptr == wr_ptr_timing); + my_empty[1] <= (nxt_rd_ptr == wr_ptr_timing); + my_empty[2] <= (nxt_rd_ptr == wr_ptr_timing); + my_empty[3] <= (nxt_rd_ptr == wr_ptr_timing); + end + if (my_empty[8] & !my_full[5] & full_in & wr_en_in) + my_empty[8:4] <= 5'b00000; + else if (!my_empty[8] & !my_full[5] & !full_in & !wr_en_in) begin + my_empty[4] <= (nxt_rd_ptr == wr_ptr_timing); + my_empty[5] <= (nxt_rd_ptr == wr_ptr_timing); + my_empty[6] <= (nxt_rd_ptr == wr_ptr_timing); + my_empty[7] <= (nxt_rd_ptr == wr_ptr_timing); + my_empty[8] <= (nxt_rd_ptr == wr_ptr_timing); + end + end + end + + assign nxt_wr_ptr = (wr_ptr + 1'b1)%DEPTH; + + always @ (posedge clk) + begin + if (rst) begin + wr_ptr <= 'b0; + wr_ptr_timing <= 'b0; + end + else if ((wr_en_in) & ((!my_empty[5] & !full_in) | (!my_full[1] & full_in))) begin + wr_ptr <= nxt_wr_ptr; + wr_ptr_timing <= nxt_wr_ptr; + end + end + + always @ (posedge clk) + begin + if (rst) + my_full <= 6'b000000; + else if (!my_empty[6] & my_full[0] & !full_in & !wr_en_in) + my_full <= 6'b000000; + else if (!my_empty[6] & !my_full[0] & full_in & wr_en_in) begin + my_full[0] <= (nxt_wr_ptr == rd_ptr_timing); + my_full[1] <= (nxt_wr_ptr == rd_ptr_timing); + my_full[2] <= (nxt_wr_ptr == rd_ptr_timing); + my_full[3] <= (nxt_wr_ptr == rd_ptr_timing); + my_full[4] <= (nxt_wr_ptr == rd_ptr_timing); + my_full[5] <= (nxt_wr_ptr == rd_ptr_timing); + end + end + + always @ (posedge clk) + begin + if (rst) + entry_cnt <= 'b0; + else if (wr_en_in & full_in & !my_full[4]) + entry_cnt <= entry_cnt + 1'b1; + else if (!wr_en_in & !full_in & !my_empty[7]) + entry_cnt <= entry_cnt - 1'b1; + end + + assign afull = (entry_cnt >= ALMOST_FULL_VALUE); + +endmodule diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_4lanes.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_4lanes.v new file mode 100644 index 0000000..847fcd4 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_4lanes.v @@ -0,0 +1,2056 @@ +/********************************************************** +-- (c) Copyright 2011 - 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"). A 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. + +// +// THIS NOTICE MUST BE RETAINED AS PART OF THIS FILE AT ALL TIMES. +// +// +// Owner: Gary Martin +// Revision: $Id: //depot/icm/proj/common/head/rtl/v32_cmt/rtl/phy/phy_4lanes.v#6 $ +// $Author: gary $ +// $DateTime: 2010/05/11 18:05:17 $ +// $Change: 490882 $ +// Description: +// This verilog file is the parameterizable 4-byte lane phy primitive top +// This module may be ganged to create an N-lane phy. +// +// History: +// Date Engineer Description +// 04/01/2010 G. Martin Initial Checkin. +// +/////////////////////////////////////////////////////////// +**********************************************************/ + +`timescale 1ps/1ps + +`define PC_DATA_OFFSET_RANGE 22:17 + +module mig_7series_v4_0_ddr_phy_4lanes #( +parameter GENERATE_IDELAYCTRL = "TRUE", +parameter IODELAY_GRP = "IODELAY_MIG", +parameter FPGA_SPEED_GRADE = 1, +parameter BANK_TYPE = "HP_IO", // # = "HP_IO", "HPL_IO", "HR_IO", "HRL_IO" +parameter BYTELANES_DDR_CK = 24'b0010_0010_0010_0010_0010_0010, +parameter NUM_DDR_CK = 1, +// next three parameter fields correspond to byte lanes for lane order DCBA +parameter BYTE_LANES = 4'b1111, // lane existence, one per lane +parameter DATA_CTL_N = 4'b1111, // data or control, per lane +parameter BITLANES = 48'hffff_ffff_ffff, +parameter BITLANES_OUTONLY = 48'h0000_0000_0000, +parameter LANE_REMAP = 16'h3210,// 4-bit index + // used to rewire to one of four + // input/output buss lanes + // example: 0321 remaps lanes as: + // D->A + // C->D + // B->C + // A->B +parameter LAST_BANK = "FALSE", +parameter USE_PRE_POST_FIFO = "FALSE", +parameter RCLK_SELECT_LANE = "B", +parameter real TCK = 0.00, +parameter SYNTHESIS = "FALSE", +parameter PO_CTL_COARSE_BYPASS = "FALSE", +parameter PO_FINE_DELAY = 0, +parameter PI_SEL_CLK_OFFSET = 0, + +// phy_control paramter used in other paramsters +parameter PC_CLK_RATIO = 4, + +//phaser_in parameters +parameter A_PI_FREQ_REF_DIV = "NONE", +parameter A_PI_CLKOUT_DIV = 2, +parameter A_PI_BURST_MODE = "TRUE", +parameter A_PI_OUTPUT_CLK_SRC = "DELAYED_REF" , //"DELAYED_REF", +parameter A_PI_FINE_DELAY = 60, +parameter A_PI_SYNC_IN_DIV_RST = "TRUE", + +parameter B_PI_FREQ_REF_DIV = A_PI_FREQ_REF_DIV, +parameter B_PI_CLKOUT_DIV = A_PI_CLKOUT_DIV, +parameter B_PI_BURST_MODE = A_PI_BURST_MODE, +parameter B_PI_OUTPUT_CLK_SRC = A_PI_OUTPUT_CLK_SRC, +parameter B_PI_FINE_DELAY = A_PI_FINE_DELAY, +parameter B_PI_SYNC_IN_DIV_RST = A_PI_SYNC_IN_DIV_RST, + +parameter C_PI_FREQ_REF_DIV = A_PI_FREQ_REF_DIV, +parameter C_PI_CLKOUT_DIV = A_PI_CLKOUT_DIV, +parameter C_PI_BURST_MODE = A_PI_BURST_MODE, +parameter C_PI_OUTPUT_CLK_SRC = A_PI_OUTPUT_CLK_SRC, +parameter C_PI_FINE_DELAY = 0, +parameter C_PI_SYNC_IN_DIV_RST = A_PI_SYNC_IN_DIV_RST, + +parameter D_PI_FREQ_REF_DIV = A_PI_FREQ_REF_DIV, +parameter D_PI_CLKOUT_DIV = A_PI_CLKOUT_DIV, +parameter D_PI_BURST_MODE = A_PI_BURST_MODE, +parameter D_PI_OUTPUT_CLK_SRC = A_PI_OUTPUT_CLK_SRC, +parameter D_PI_FINE_DELAY = 0, +parameter D_PI_SYNC_IN_DIV_RST = A_PI_SYNC_IN_DIV_RST, + +//phaser_out parameters +parameter A_PO_CLKOUT_DIV = (DATA_CTL_N[0] == 0) ? PC_CLK_RATIO : 2, +parameter A_PO_FINE_DELAY = PO_FINE_DELAY, +parameter A_PO_COARSE_DELAY = 0, +parameter A_PO_OCLK_DELAY = 0, +parameter A_PO_OCLKDELAY_INV = "FALSE", +parameter A_PO_OUTPUT_CLK_SRC = "DELAYED_REF", +parameter A_PO_SYNC_IN_DIV_RST = "TRUE", +//parameter A_PO_SYNC_IN_DIV_RST = "FALSE", + +parameter B_PO_CLKOUT_DIV = (DATA_CTL_N[1] == 0) ? PC_CLK_RATIO : 2, +parameter B_PO_FINE_DELAY = PO_FINE_DELAY, +parameter B_PO_COARSE_DELAY = A_PO_COARSE_DELAY, +parameter B_PO_OCLK_DELAY = A_PO_OCLK_DELAY, +parameter B_PO_OCLKDELAY_INV = A_PO_OCLKDELAY_INV, +parameter B_PO_OUTPUT_CLK_SRC = A_PO_OUTPUT_CLK_SRC, +parameter B_PO_SYNC_IN_DIV_RST = A_PO_SYNC_IN_DIV_RST, + +parameter C_PO_CLKOUT_DIV = (DATA_CTL_N[2] == 0) ? PC_CLK_RATIO : 2, +parameter C_PO_FINE_DELAY = PO_FINE_DELAY, +parameter C_PO_COARSE_DELAY = A_PO_COARSE_DELAY, +parameter C_PO_OCLK_DELAY = A_PO_OCLK_DELAY, +parameter C_PO_OCLKDELAY_INV = A_PO_OCLKDELAY_INV, +parameter C_PO_OUTPUT_CLK_SRC = A_PO_OUTPUT_CLK_SRC, +parameter C_PO_SYNC_IN_DIV_RST = A_PO_SYNC_IN_DIV_RST, + +parameter D_PO_CLKOUT_DIV = (DATA_CTL_N[3] == 0) ? PC_CLK_RATIO : 2, +parameter D_PO_FINE_DELAY = PO_FINE_DELAY, +parameter D_PO_COARSE_DELAY = A_PO_COARSE_DELAY, +parameter D_PO_OCLK_DELAY = A_PO_OCLK_DELAY, +parameter D_PO_OCLKDELAY_INV = A_PO_OCLKDELAY_INV, +parameter D_PO_OUTPUT_CLK_SRC = A_PO_OUTPUT_CLK_SRC, +parameter D_PO_SYNC_IN_DIV_RST = A_PO_SYNC_IN_DIV_RST, + +parameter A_IDELAYE2_IDELAY_TYPE = "VARIABLE", +parameter A_IDELAYE2_IDELAY_VALUE = 00, +parameter B_IDELAYE2_IDELAY_TYPE = A_IDELAYE2_IDELAY_TYPE, +parameter B_IDELAYE2_IDELAY_VALUE = A_IDELAYE2_IDELAY_VALUE, +parameter C_IDELAYE2_IDELAY_TYPE = A_IDELAYE2_IDELAY_TYPE, +parameter C_IDELAYE2_IDELAY_VALUE = A_IDELAYE2_IDELAY_VALUE, +parameter D_IDELAYE2_IDELAY_TYPE = A_IDELAYE2_IDELAY_TYPE, +parameter D_IDELAYE2_IDELAY_VALUE = A_IDELAYE2_IDELAY_VALUE, + + +// phy_control parameters + +parameter PC_BURST_MODE = "TRUE", +parameter PC_DATA_CTL_N = DATA_CTL_N, +parameter PC_CMD_OFFSET = 0, +parameter PC_RD_CMD_OFFSET_0 = 0, +parameter PC_RD_CMD_OFFSET_1 = 0, +parameter PC_RD_CMD_OFFSET_2 = 0, +parameter PC_RD_CMD_OFFSET_3 = 0, +parameter PC_CO_DURATION = 1, +parameter PC_DI_DURATION = 1, +parameter PC_DO_DURATION = 1, +parameter PC_RD_DURATION_0 = 0, +parameter PC_RD_DURATION_1 = 0, +parameter PC_RD_DURATION_2 = 0, +parameter PC_RD_DURATION_3 = 0, +parameter PC_WR_CMD_OFFSET_0 = 5, +parameter PC_WR_CMD_OFFSET_1 = 5, +parameter PC_WR_CMD_OFFSET_2 = 5, +parameter PC_WR_CMD_OFFSET_3 = 5, +parameter PC_WR_DURATION_0 = 6, +parameter PC_WR_DURATION_1 = 6, +parameter PC_WR_DURATION_2 = 6, +parameter PC_WR_DURATION_3 = 6, +parameter PC_AO_WRLVL_EN = 0, +parameter PC_AO_TOGGLE = 4'b0101, // odd bits are toggle (CKE) +parameter PC_FOUR_WINDOW_CLOCKS = 63, +parameter PC_EVENTS_DELAY = 18, +parameter PC_PHY_COUNT_EN = "TRUE", +parameter PC_SYNC_MODE = "TRUE", +parameter PC_DISABLE_SEQ_MATCH = "TRUE", +parameter PC_MULTI_REGION = "FALSE", + +// io fifo parameters + +parameter A_OF_ARRAY_MODE = (DATA_CTL_N[0] == 1) ? "ARRAY_MODE_8_X_4" : "ARRAY_MODE_4_X_4", +parameter B_OF_ARRAY_MODE = (DATA_CTL_N[1] == 1) ? "ARRAY_MODE_8_X_4" : "ARRAY_MODE_4_X_4", +parameter C_OF_ARRAY_MODE = (DATA_CTL_N[2] == 1) ? "ARRAY_MODE_8_X_4" : "ARRAY_MODE_4_X_4", +parameter D_OF_ARRAY_MODE = (DATA_CTL_N[3] == 1) ? "ARRAY_MODE_8_X_4" : "ARRAY_MODE_4_X_4", +parameter OF_ALMOST_EMPTY_VALUE = 1, +parameter OF_ALMOST_FULL_VALUE = 1, +parameter OF_OUTPUT_DISABLE = "TRUE", +parameter OF_SYNCHRONOUS_MODE = PC_SYNC_MODE, + +parameter A_OS_DATA_RATE = "DDR", +parameter A_OS_DATA_WIDTH = 4, +parameter B_OS_DATA_RATE = A_OS_DATA_RATE, +parameter B_OS_DATA_WIDTH = A_OS_DATA_WIDTH, +parameter C_OS_DATA_RATE = A_OS_DATA_RATE, +parameter C_OS_DATA_WIDTH = A_OS_DATA_WIDTH, +parameter D_OS_DATA_RATE = A_OS_DATA_RATE, +parameter D_OS_DATA_WIDTH = A_OS_DATA_WIDTH, + + +parameter A_IF_ARRAY_MODE = "ARRAY_MODE_4_X_8", +parameter B_IF_ARRAY_MODE = A_IF_ARRAY_MODE, +parameter C_IF_ARRAY_MODE = A_IF_ARRAY_MODE, +parameter D_IF_ARRAY_MODE = A_IF_ARRAY_MODE, +parameter IF_ALMOST_EMPTY_VALUE = 1, +parameter IF_ALMOST_FULL_VALUE = 1, +parameter IF_SYNCHRONOUS_MODE = PC_SYNC_MODE, + + +// this is used locally, not for external pushdown +// NOTE: the 0+ is needed in each to coerce to integer for addition. +// otherwise 4x 1'b values are added producing a 1'b value. +parameter HIGHEST_LANE = LAST_BANK == "FALSE" ? 4 : (BYTE_LANES[3] ? 4 : BYTE_LANES[2] ? 3 : BYTE_LANES[1] ? 2 : 1), +parameter N_CTL_LANES = ((0+(!DATA_CTL_N[0]) & BYTE_LANES[0]) + (0+(!DATA_CTL_N[1]) & BYTE_LANES[1]) + (0+(!DATA_CTL_N[2]) & BYTE_LANES[2]) + (0+(!DATA_CTL_N[3]) & BYTE_LANES[3])), + +parameter N_BYTE_LANES = (0+BYTE_LANES[0]) + (0+BYTE_LANES[1]) + (0+BYTE_LANES[2]) + (0+BYTE_LANES[3]), + +parameter N_DATA_LANES = N_BYTE_LANES - N_CTL_LANES, +// assume odt per rank + any declared cke's +parameter AUXOUT_WIDTH = 4, +parameter LP_DDR_CK_WIDTH = 2 +,parameter CKE_ODT_AUX = "FALSE" +,parameter PI_DIV2_INCDEC = "FALSE" +) +( + +//`include "phy.vh" + + input rst, + input phy_clk, + input clk_div2, + input phy_ctl_clk, + input freq_refclk, + input mem_refclk, + input mem_refclk_div4, + input pll_lock, + input sync_pulse, + input idelayctrl_refclk, + input [HIGHEST_LANE*80-1:0] phy_dout, + input phy_cmd_wr_en, + input phy_data_wr_en, + input phy_rd_en, + input phy_ctl_mstr_empty, + input [31:0] phy_ctl_wd, + input [`PC_DATA_OFFSET_RANGE] data_offset, + input phy_ctl_wr, + input if_empty_def, + input phyGo, + input input_sink, + + output [(LP_DDR_CK_WIDTH*24)-1:0] ddr_clk, // to memory + output rclk, + output if_a_empty, + output if_empty, + output byte_rd_en, + output if_empty_or, + output if_empty_and, + output of_ctl_a_full, + output of_data_a_full, + output of_ctl_full, + output of_data_full, + output pre_data_a_full, + output [HIGHEST_LANE*80-1:0]phy_din, // assume input bus same size as output bus + output phy_ctl_empty, + output phy_ctl_a_full, + output phy_ctl_full, + output [HIGHEST_LANE*12-1:0]mem_dq_out, + output [HIGHEST_LANE*12-1:0]mem_dq_ts, + input [HIGHEST_LANE*10-1:0]mem_dq_in, + output [HIGHEST_LANE-1:0] mem_dqs_out, + output [HIGHEST_LANE-1:0] mem_dqs_ts, + input [HIGHEST_LANE-1:0] mem_dqs_in, + input [1:0] byte_rd_en_oth_banks, + + output [AUXOUT_WIDTH-1:0] aux_out, + output reg rst_out = 0, + output reg mcGo=0, + output phy_ctl_ready, + output ref_dll_lock, + input if_rst, + input phy_read_calib, + input phy_write_calib, + input idelay_inc, + input idelay_ce, + input idelay_ld, + input [2:0] calib_sel, + input calib_zero_ctrl, + input [HIGHEST_LANE-1:0] calib_zero_lanes, + input calib_in_common, + input po_fine_enable, + input po_coarse_enable, + input po_fine_inc, + input po_coarse_inc, + input po_counter_load_en, + input po_counter_read_en, + input [8:0] po_counter_load_val, + input po_sel_fine_oclk_delay, + output reg po_coarse_overflow, + output reg po_fine_overflow, + output reg [8:0] po_counter_read_val, + + + + input pi_rst_dqs_find, + input pi_fine_enable, + input pi_fine_inc, + input pi_counter_load_en, + input pi_counter_read_en, + input [5:0] pi_counter_load_val, + output reg pi_fine_overflow, + output reg [5:0] pi_counter_read_val, + + output reg pi_dqs_found, + output pi_dqs_found_all, + output pi_dqs_found_any, + output [HIGHEST_LANE-1:0] pi_phase_locked_lanes, + output [HIGHEST_LANE-1:0] pi_dqs_found_lanes, + output reg pi_dqs_out_of_range, + output reg pi_phase_locked, + output pi_phase_locked_all, + input [29:0] fine_delay, + input fine_delay_sel +); + +localparam DATA_CTL_A = (~DATA_CTL_N[0]); +localparam DATA_CTL_B = (~DATA_CTL_N[1]); +localparam DATA_CTL_C = (~DATA_CTL_N[2]); +localparam DATA_CTL_D = (~DATA_CTL_N[3]); +localparam PRESENT_CTL_A = BYTE_LANES[0] && ! DATA_CTL_N[0]; +localparam PRESENT_CTL_B = BYTE_LANES[1] && ! DATA_CTL_N[1]; +localparam PRESENT_CTL_C = BYTE_LANES[2] && ! DATA_CTL_N[2]; +localparam PRESENT_CTL_D = BYTE_LANES[3] && ! DATA_CTL_N[3]; +localparam PRESENT_DATA_A = BYTE_LANES[0] && DATA_CTL_N[0]; +localparam PRESENT_DATA_B = BYTE_LANES[1] && DATA_CTL_N[1]; +localparam PRESENT_DATA_C = BYTE_LANES[2] && DATA_CTL_N[2]; +localparam PRESENT_DATA_D = BYTE_LANES[3] && DATA_CTL_N[3]; +localparam PC_DATA_CTL_A = (DATA_CTL_A) ? "FALSE" : "TRUE"; +localparam PC_DATA_CTL_B = (DATA_CTL_B) ? "FALSE" : "TRUE"; +localparam PC_DATA_CTL_C = (DATA_CTL_C) ? "FALSE" : "TRUE"; +localparam PC_DATA_CTL_D = (DATA_CTL_D) ? "FALSE" : "TRUE"; +localparam A_PO_COARSE_BYPASS = (DATA_CTL_A) ? PO_CTL_COARSE_BYPASS : "FALSE"; +localparam B_PO_COARSE_BYPASS = (DATA_CTL_B) ? PO_CTL_COARSE_BYPASS : "FALSE"; +localparam C_PO_COARSE_BYPASS = (DATA_CTL_C) ? PO_CTL_COARSE_BYPASS : "FALSE"; +localparam D_PO_COARSE_BYPASS = (DATA_CTL_D) ? PO_CTL_COARSE_BYPASS : "FALSE"; + +localparam IO_A_START = 41; +localparam IO_A_END = 40; +localparam IO_B_START = 43; +localparam IO_B_END = 42; +localparam IO_C_START = 45; +localparam IO_C_END = 44; +localparam IO_D_START = 47; +localparam IO_D_END = 46; +localparam IO_A_X_START = (HIGHEST_LANE * 10) + 1; +localparam IO_A_X_END = (IO_A_X_START-1); +localparam IO_B_X_START = (IO_A_X_START + 2); +localparam IO_B_X_END = (IO_B_X_START -1); +localparam IO_C_X_START = (IO_B_X_START + 2); +localparam IO_C_X_END = (IO_C_X_START -1); +localparam IO_D_X_START = (IO_C_X_START + 2); +localparam IO_D_X_END = (IO_D_X_START -1); + +localparam MSB_BURST_PEND_PO = 3; +localparam MSB_BURST_PEND_PI = 7; +localparam MSB_RANK_SEL_I = MSB_BURST_PEND_PI + 8; +localparam PHASER_CTL_BUS_WIDTH = MSB_RANK_SEL_I + 1; + +wire [1:0] oserdes_dqs; +wire [1:0] oserdes_dqs_ts; +wire [1:0] oserdes_dq_ts; + + +wire [PHASER_CTL_BUS_WIDTH-1:0] phaser_ctl_bus; +wire [7:0] in_rank; +wire [11:0] IO_A; +wire [11:0] IO_B; +wire [11:0] IO_C; +wire [11:0] IO_D; + +wire [319:0] phy_din_remap; + +reg A_po_counter_read_en; +wire [8:0] A_po_counter_read_val; +reg A_pi_counter_read_en; +wire [5:0] A_pi_counter_read_val; +wire A_pi_fine_overflow; +wire A_po_coarse_overflow; +wire A_po_fine_overflow; +wire A_pi_dqs_found; +wire A_pi_dqs_out_of_range; +wire A_pi_phase_locked; +wire A_pi_iserdes_rst; +reg A_pi_fine_enable; +reg A_pi_fine_inc; +reg A_pi_counter_load_en; +reg [5:0] A_pi_counter_load_val; +reg A_pi_rst_dqs_find; + + +reg A_po_fine_enable; +reg A_po_coarse_enable; + reg A_po_fine_inc /* synthesis syn_maxfan = 3 */; +reg A_po_sel_fine_oclk_delay; +reg A_po_coarse_inc; +reg A_po_counter_load_en; +reg [8:0] A_po_counter_load_val; +wire A_rclk; +reg A_idelay_ce; +reg A_idelay_ld; +reg [29:0] A_fine_delay; +reg A_fine_delay_sel; + +reg B_po_counter_read_en; +wire [8:0] B_po_counter_read_val; +reg B_pi_counter_read_en; +wire [5:0] B_pi_counter_read_val; +wire B_pi_fine_overflow; +wire B_po_coarse_overflow; +wire B_po_fine_overflow; +wire B_pi_phase_locked; +wire B_pi_iserdes_rst; +wire B_pi_dqs_found; +wire B_pi_dqs_out_of_range; +reg B_pi_fine_enable; +reg B_pi_fine_inc; +reg B_pi_counter_load_en; +reg [5:0] B_pi_counter_load_val; +reg B_pi_rst_dqs_find; + + +reg B_po_fine_enable; +reg B_po_coarse_enable; + reg B_po_fine_inc /* synthesis syn_maxfan = 3 */; +reg B_po_coarse_inc; +reg B_po_sel_fine_oclk_delay; +reg B_po_counter_load_en; +reg [8:0] B_po_counter_load_val; +wire B_rclk; +reg B_idelay_ce; +reg B_idelay_ld; +reg [29:0] B_fine_delay; +reg B_fine_delay_sel; + + +reg C_pi_fine_inc; +reg D_pi_fine_inc; +reg C_pi_fine_enable; +reg D_pi_fine_enable; +reg C_po_counter_load_en; +reg D_po_counter_load_en; +reg C_po_coarse_inc; +reg D_po_coarse_inc; + reg C_po_fine_inc /* synthesis syn_maxfan = 3 */; + reg D_po_fine_inc /* synthesis syn_maxfan = 3 */; +reg C_po_sel_fine_oclk_delay; +reg D_po_sel_fine_oclk_delay; +reg [5:0] C_pi_counter_load_val; +reg [5:0] D_pi_counter_load_val; +reg [8:0] C_po_counter_load_val; +reg [8:0] D_po_counter_load_val; +reg C_po_coarse_enable; +reg D_po_coarse_enable; +reg C_po_fine_enable; +reg D_po_fine_enable; +wire C_po_coarse_overflow; +wire D_po_coarse_overflow; +wire C_po_fine_overflow; +wire D_po_fine_overflow; +wire [8:0] C_po_counter_read_val; +wire [8:0] D_po_counter_read_val; +reg C_po_counter_read_en; +reg D_po_counter_read_en; +wire C_pi_dqs_found; +wire D_pi_dqs_found; +wire C_pi_fine_overflow; +wire D_pi_fine_overflow; +reg C_pi_counter_read_en; +reg D_pi_counter_read_en; +reg C_pi_counter_load_en; +reg D_pi_counter_load_en; +wire C_pi_phase_locked; +wire C_pi_iserdes_rst; +wire D_pi_phase_locked; +wire D_pi_iserdes_rst; +wire C_pi_dqs_out_of_range; +wire D_pi_dqs_out_of_range; +wire [5:0] C_pi_counter_read_val; +wire [5:0] D_pi_counter_read_val; +wire C_rclk; +wire D_rclk; +reg C_idelay_ce; +reg D_idelay_ce; +reg C_idelay_ld; +reg D_idelay_ld; +reg C_pi_rst_dqs_find; +reg D_pi_rst_dqs_find; +reg [29:0] C_fine_delay; +reg [29:0] D_fine_delay; +reg C_fine_delay_sel; +reg D_fine_delay_sel; + +wire pi_iserdes_rst; + +wire A_if_empty; +wire B_if_empty; +wire C_if_empty; +wire D_if_empty; +wire A_byte_rd_en; +wire B_byte_rd_en; +wire C_byte_rd_en; +wire D_byte_rd_en; +wire A_if_a_empty; +wire B_if_a_empty; +wire C_if_a_empty; +wire D_if_a_empty; +//wire A_if_full; +//wire B_if_full; +//wire C_if_full; +//wire D_if_full; +//wire A_of_empty; +//wire B_of_empty; +//wire C_of_empty; +//wire D_of_empty; +wire A_of_full; +wire B_of_full; +wire C_of_full; +wire D_of_full; +wire A_of_ctl_full; +wire B_of_ctl_full; +wire C_of_ctl_full; +wire D_of_ctl_full; +wire A_of_data_full; +wire B_of_data_full; +wire C_of_data_full; +wire D_of_data_full; +wire A_of_a_full; +wire B_of_a_full; +wire C_of_a_full; +wire D_of_a_full; +wire A_pre_fifo_a_full; +wire B_pre_fifo_a_full; +wire C_pre_fifo_a_full; +wire D_pre_fifo_a_full; +wire A_of_ctl_a_full; +wire B_of_ctl_a_full; +wire C_of_ctl_a_full; +wire D_of_ctl_a_full; +wire A_of_data_a_full; +wire B_of_data_a_full; +wire C_of_data_a_full; +wire D_of_data_a_full; +wire A_pre_data_a_full; +wire B_pre_data_a_full; +wire C_pre_data_a_full; +wire D_pre_data_a_full; +wire [LP_DDR_CK_WIDTH*6-1:0] A_ddr_clk; // for generation +wire [LP_DDR_CK_WIDTH*6-1:0] B_ddr_clk; // +wire [LP_DDR_CK_WIDTH*6-1:0] C_ddr_clk; // +wire [LP_DDR_CK_WIDTH*6-1:0] D_ddr_clk; // + +wire [3:0] dummy_data; + +wire [31:0] _phy_ctl_wd; + +wire [1:0] phy_encalib; + +assign pi_dqs_found_all = + (! PRESENT_DATA_A | A_pi_dqs_found) & + (! PRESENT_DATA_B | B_pi_dqs_found) & + (! PRESENT_DATA_C | C_pi_dqs_found) & + (! PRESENT_DATA_D | D_pi_dqs_found) ; + +assign pi_dqs_found_any = + ( PRESENT_DATA_A & A_pi_dqs_found) | + ( PRESENT_DATA_B & B_pi_dqs_found) | + ( PRESENT_DATA_C & C_pi_dqs_found) | + ( PRESENT_DATA_D & D_pi_dqs_found) ; + +assign pi_phase_locked_all = + (! PRESENT_DATA_A | A_pi_phase_locked) & + (! PRESENT_DATA_B | B_pi_phase_locked) & + (! PRESENT_DATA_C | C_pi_phase_locked) & + (! PRESENT_DATA_D | D_pi_phase_locked); + +wire dangling_inputs = (& dummy_data) & input_sink & 1'b0; // this reduces all constant 0 values to 1 signal + // which is combined into another signals such that + // the other signal isn't changed. The purpose + // is to fake the tools into ignoring dangling inputs. + // Because it is anded with 1'b0, the contributing signals + // are folded as constants or trimmed. + + +assign if_empty = !if_empty_def ? (A_if_empty | B_if_empty | C_if_empty | D_if_empty) : (A_if_empty & B_if_empty & C_if_empty & D_if_empty); +assign byte_rd_en = !if_empty_def ? (A_byte_rd_en & B_byte_rd_en & C_byte_rd_en & D_byte_rd_en) : + (A_byte_rd_en | B_byte_rd_en | C_byte_rd_en | D_byte_rd_en); +assign if_empty_or = (A_if_empty | B_if_empty | C_if_empty | D_if_empty); +assign if_empty_and = (A_if_empty & B_if_empty & C_if_empty & D_if_empty); +assign if_a_empty = A_if_a_empty | B_if_a_empty | C_if_a_empty | D_if_a_empty; +//assign if_full = A_if_full | B_if_full | C_if_full | D_if_full ; +//assign of_empty = A_of_empty & B_of_empty & C_of_empty & D_of_empty; +assign of_ctl_full = A_of_ctl_full | B_of_ctl_full | C_of_ctl_full | D_of_ctl_full ; +assign of_data_full = A_of_data_full | B_of_data_full | C_of_data_full | D_of_data_full ; +assign of_ctl_a_full = A_of_ctl_a_full | B_of_ctl_a_full | C_of_ctl_a_full | D_of_ctl_a_full ; +assign of_data_a_full = A_of_data_a_full | B_of_data_a_full | C_of_data_a_full | D_of_data_a_full | dangling_inputs ; +assign pre_data_a_full = A_pre_data_a_full | B_pre_data_a_full | C_pre_data_a_full | D_pre_data_a_full; + + +function [79:0] part_select_80; +input [319:0] vector; +input [1:0] select; +begin + case (select) + 2'b00 : part_select_80[79:0] = vector[1*80-1:0*80]; + 2'b01 : part_select_80[79:0] = vector[2*80-1:1*80]; + 2'b10 : part_select_80[79:0] = vector[3*80-1:2*80]; + 2'b11 : part_select_80[79:0] = vector[4*80-1:3*80]; + endcase +end +endfunction + +wire [319:0] phy_dout_remap; + +reg rst_out_trig = 1'b0; +reg [31:0] rclk_delay; +reg rst_edge1 = 1'b0; +reg rst_edge2 = 1'b0; +reg rst_edge3 = 1'b0; +reg rst_edge_detect = 1'b0; +wire rclk_; +reg rst_out_start = 1'b0 ; +reg rst_primitives=0; +reg A_rst_primitives=0; +reg B_rst_primitives=0; +reg C_rst_primitives=0; +reg D_rst_primitives=0; + +`ifdef USE_PHY_CONTROL_TEST + wire [15:0] test_output; + wire [15:0] test_input; + wire [2:0] test_select=0; + wire scan_enable = 0; +`endif + +generate + +genvar i; + +if (RCLK_SELECT_LANE == "A") begin + assign rclk_ = A_rclk; + assign pi_iserdes_rst = A_pi_iserdes_rst; + end +else if (RCLK_SELECT_LANE == "B") begin + assign rclk_ = B_rclk; + assign pi_iserdes_rst = B_pi_iserdes_rst; + end +else if (RCLK_SELECT_LANE == "C") begin + assign rclk_ = C_rclk; + assign pi_iserdes_rst = C_pi_iserdes_rst; + end +else if (RCLK_SELECT_LANE == "D") begin + assign rclk_ = D_rclk; + assign pi_iserdes_rst = D_pi_iserdes_rst; + end +else begin + assign rclk_ = B_rclk; // default + end + +endgenerate + +assign ddr_clk[LP_DDR_CK_WIDTH*6-1:0] = A_ddr_clk; +assign ddr_clk[LP_DDR_CK_WIDTH*12-1:LP_DDR_CK_WIDTH*6] = B_ddr_clk; +assign ddr_clk[LP_DDR_CK_WIDTH*18-1:LP_DDR_CK_WIDTH*12] = C_ddr_clk; +assign ddr_clk[LP_DDR_CK_WIDTH*24-1:LP_DDR_CK_WIDTH*18] = D_ddr_clk; + +assign pi_phase_locked_lanes = + {(! PRESENT_DATA_D[0] | D_pi_phase_locked), + (! PRESENT_DATA_C[0] | C_pi_phase_locked) , + (! PRESENT_DATA_B[0] | B_pi_phase_locked) , + (! PRESENT_DATA_A[0] | A_pi_phase_locked)}; + +assign pi_dqs_found_lanes = {D_pi_dqs_found, C_pi_dqs_found, B_pi_dqs_found, A_pi_dqs_found}; + +// this block scrubs X from rclk_delay[11] +reg rclk_delay_11; +always @(rclk_delay[11]) begin : rclk_delay_11_blk + if ( rclk_delay[11]) + rclk_delay_11 = 1; + else + rclk_delay_11 = 0; +end + +always @(posedge phy_clk or posedge rst ) begin +// scrub 4-state values from rclk_delay[11] + if ( rst) begin + rst_out <= #1 0; + end + else begin + if ( rclk_delay_11) + rst_out <= #1 1; + end +end + +always @(posedge phy_clk ) begin + // phy_ctl_ready drives reset of the system + rst_primitives <= !phy_ctl_ready ; + A_rst_primitives <= rst_primitives ; + B_rst_primitives <= rst_primitives ; + C_rst_primitives <= rst_primitives ; + D_rst_primitives <= rst_primitives ; + + rclk_delay <= #1 (rclk_delay << 1) | (!rst_primitives && phyGo); + mcGo <= #1 rst_out ; + +end + +//reset synchronized to clk_div2 + (* ASYNC_REG = "TRUE" *) reg A_pi_rst_div2; + (* ASYNC_REG = "TRUE" *) reg B_pi_rst_div2; + (* ASYNC_REG = "TRUE" *) reg C_pi_rst_div2; + (* ASYNC_REG = "TRUE" *) reg D_pi_rst_div2; +generate + if (PI_DIV2_INCDEC == "TRUE") begin: phaser_in_div2 + (* ASYNC_REG = "TRUE" *) reg pi_rst_div2r1; + (* ASYNC_REG = "TRUE" *) reg pi_rst_div2r2; + + always @(posedge clk_div2) begin + pi_rst_div2r1 <= rst_primitives; + pi_rst_div2r2 <= pi_rst_div2r1; + A_pi_rst_div2 <= pi_rst_div2r2; + B_pi_rst_div2 <= pi_rst_div2r2; + C_pi_rst_div2 <= pi_rst_div2r2; + D_pi_rst_div2 <= pi_rst_div2r2; + end + end else begin: phaser_in_div4 + always @ (*) begin + A_pi_rst_div2 <= 1'b0; + B_pi_rst_div2 <= 1'b0; + C_pi_rst_div2 <= 1'b0; + D_pi_rst_div2 <= 1'b0; + end + end +endgenerate + +generate + + if (BYTE_LANES[0]) begin + assign dummy_data[0] = 0; + end + else begin + assign dummy_data[0] = &phy_dout_remap[1*80-1:0*80]; + end + if (BYTE_LANES[1]) begin + assign dummy_data[1] = 0; + end + else begin + assign dummy_data[1] = &phy_dout_remap[2*80-1:1*80]; + end + if (BYTE_LANES[2]) begin + assign dummy_data[2] = 0; + end + else begin + assign dummy_data[2] = &phy_dout_remap[3*80-1:2*80]; + end + if (BYTE_LANES[3]) begin + assign dummy_data[3] = 0; + end + else begin + assign dummy_data[3] = &phy_dout_remap[4*80-1:3*80]; + end + + if (PRESENT_DATA_A) begin + assign A_of_data_full = A_of_full; + assign A_of_ctl_full = 0; + assign A_of_data_a_full = A_of_a_full; + assign A_of_ctl_a_full = 0; + assign A_pre_data_a_full = A_pre_fifo_a_full; + end + else begin + assign A_of_ctl_full = A_of_full; + assign A_of_data_full = 0; + assign A_of_ctl_a_full = A_of_a_full; + assign A_of_data_a_full = 0; + assign A_pre_data_a_full = 0; + end + if (PRESENT_DATA_B) begin + assign B_of_data_full = B_of_full; + assign B_of_ctl_full = 0; + assign B_of_data_a_full = B_of_a_full; + assign B_of_ctl_a_full = 0; + assign B_pre_data_a_full = B_pre_fifo_a_full; + end + else begin + assign B_of_ctl_full = B_of_full; + assign B_of_data_full = 0; + assign B_of_ctl_a_full = B_of_a_full; + assign B_of_data_a_full = 0; + assign B_pre_data_a_full = 0; + end + if (PRESENT_DATA_C) begin + assign C_of_data_full = C_of_full; + assign C_of_ctl_full = 0; + assign C_of_data_a_full = C_of_a_full; + assign C_of_ctl_a_full = 0; + assign C_pre_data_a_full = C_pre_fifo_a_full; + end + else begin + assign C_of_ctl_full = C_of_full; + assign C_of_data_full = 0; + assign C_of_ctl_a_full = C_of_a_full; + assign C_of_data_a_full = 0; + assign C_pre_data_a_full = 0; + end + if (PRESENT_DATA_D) begin + assign D_of_data_full = D_of_full; + assign D_of_ctl_full = 0; + assign D_of_data_a_full = D_of_a_full; + assign D_of_ctl_a_full = 0; + assign D_pre_data_a_full = D_pre_fifo_a_full; + end + else begin + assign D_of_ctl_full = D_of_full; + assign D_of_data_full = 0; + assign D_of_ctl_a_full = D_of_a_full; + assign D_of_data_a_full = 0; + assign D_pre_data_a_full = 0; + end +// byte lane must exist and be data lane. + if (PRESENT_DATA_A ) + case ( LANE_REMAP[1:0] ) + 2'b00 : assign phy_din[1*80-1:0] = phy_din_remap[79:0]; + 2'b01 : assign phy_din[2*80-1:80] = phy_din_remap[79:0]; + 2'b10 : assign phy_din[3*80-1:160] = phy_din_remap[79:0]; + 2'b11 : assign phy_din[4*80-1:240] = phy_din_remap[79:0]; + endcase + else + case ( LANE_REMAP[1:0] ) + 2'b00 : assign phy_din[1*80-1:0] = 80'h0; + 2'b01 : assign phy_din[2*80-1:80] = 80'h0; + 2'b10 : assign phy_din[3*80-1:160] = 80'h0; + 2'b11 : assign phy_din[4*80-1:240] = 80'h0; + endcase + + if (PRESENT_DATA_B ) + case ( LANE_REMAP[5:4] ) + 2'b00 : assign phy_din[1*80-1:0] = phy_din_remap[159:80]; + 2'b01 : assign phy_din[2*80-1:80] = phy_din_remap[159:80]; + 2'b10 : assign phy_din[3*80-1:160] = phy_din_remap[159:80]; + 2'b11 : assign phy_din[4*80-1:240] = phy_din_remap[159:80]; + endcase + else + if (HIGHEST_LANE > 1) + case ( LANE_REMAP[5:4] ) + 2'b00 : assign phy_din[1*80-1:0] = 80'h0; + 2'b01 : assign phy_din[2*80-1:80] = 80'h0; + 2'b10 : assign phy_din[3*80-1:160] = 80'h0; + 2'b11 : assign phy_din[4*80-1:240] = 80'h0; + endcase + + if (PRESENT_DATA_C) + case ( LANE_REMAP[9:8] ) + 2'b00 : assign phy_din[1*80-1:0] = phy_din_remap[239:160]; + 2'b01 : assign phy_din[2*80-1:80] = phy_din_remap[239:160]; + 2'b10 : assign phy_din[3*80-1:160] = phy_din_remap[239:160]; + 2'b11 : assign phy_din[4*80-1:240] = phy_din_remap[239:160]; + endcase + else + if (HIGHEST_LANE > 2) + case ( LANE_REMAP[9:8] ) + 2'b00 : assign phy_din[1*80-1:0] = 80'h0; + 2'b01 : assign phy_din[2*80-1:80] = 80'h0; + 2'b10 : assign phy_din[3*80-1:160] = 80'h0; + 2'b11 : assign phy_din[4*80-1:240] = 80'h0; + endcase + + if (PRESENT_DATA_D ) + case ( LANE_REMAP[13:12] ) + 2'b00 : assign phy_din[1*80-1:0] = phy_din_remap[319:240]; + 2'b01 : assign phy_din[2*80-1:80] = phy_din_remap[319:240]; + 2'b10 : assign phy_din[3*80-1:160] = phy_din_remap[319:240]; + 2'b11 : assign phy_din[4*80-1:240] = phy_din_remap[319:240]; + endcase + else + if (HIGHEST_LANE > 3) + case ( LANE_REMAP[13:12] ) + 2'b00 : assign phy_din[1*80-1:0] = 80'h0; + 2'b01 : assign phy_din[2*80-1:80] = 80'h0; + 2'b10 : assign phy_din[3*80-1:160] = 80'h0; + 2'b11 : assign phy_din[4*80-1:240] = 80'h0; + endcase + +if (HIGHEST_LANE > 1) + assign _phy_ctl_wd = {phy_ctl_wd[31:23], data_offset, phy_ctl_wd[16:0]}; +if (HIGHEST_LANE == 1) + assign _phy_ctl_wd = phy_ctl_wd; + + +//BUFR #(.BUFR_DIVIDE ("1")) rclk_buf(.I(rclk_), .O(rclk), .CE (1'b1), .CLR (pi_iserdes_rst)); +BUFIO rclk_buf(.I(rclk_), .O(rclk) ); + +if ( BYTE_LANES[0] ) begin : ddr_byte_lane_A + + assign phy_dout_remap[79:0] = part_select_80(phy_dout, (LANE_REMAP[1:0])); + + mig_7series_v4_0_ddr_byte_lane # + ( + .ABCD ("A"), + .PO_DATA_CTL (PC_DATA_CTL_N[0] ? "TRUE" : "FALSE"), + .BITLANES (BITLANES[11:0]), + .BITLANES_OUTONLY (BITLANES_OUTONLY[11:0]), + .OF_ALMOST_EMPTY_VALUE (OF_ALMOST_EMPTY_VALUE), + .OF_ALMOST_FULL_VALUE (OF_ALMOST_FULL_VALUE), + .OF_SYNCHRONOUS_MODE (OF_SYNCHRONOUS_MODE), + //.OF_OUTPUT_DISABLE (OF_OUTPUT_DISABLE), + //.OF_ARRAY_MODE (A_OF_ARRAY_MODE), + //.IF_ARRAY_MODE (IF_ARRAY_MODE), + .IF_ALMOST_EMPTY_VALUE (IF_ALMOST_EMPTY_VALUE), + .IF_ALMOST_FULL_VALUE (IF_ALMOST_FULL_VALUE), + .IF_SYNCHRONOUS_MODE (IF_SYNCHRONOUS_MODE), + .IODELAY_GRP (IODELAY_GRP), + .FPGA_SPEED_GRADE (FPGA_SPEED_GRADE), + .BANK_TYPE (BANK_TYPE), + .BYTELANES_DDR_CK (BYTELANES_DDR_CK), + .RCLK_SELECT_LANE (RCLK_SELECT_LANE), + .USE_PRE_POST_FIFO (USE_PRE_POST_FIFO), + .SYNTHESIS (SYNTHESIS), + .TCK (TCK), + .PC_CLK_RATIO (PC_CLK_RATIO), + .PI_BURST_MODE (A_PI_BURST_MODE), + .PI_CLKOUT_DIV (A_PI_CLKOUT_DIV), + .PI_FREQ_REF_DIV (A_PI_FREQ_REF_DIV), + .PI_FINE_DELAY (A_PI_FINE_DELAY), + .PI_OUTPUT_CLK_SRC (A_PI_OUTPUT_CLK_SRC), + .PI_SYNC_IN_DIV_RST (A_PI_SYNC_IN_DIV_RST), + .PI_SEL_CLK_OFFSET (PI_SEL_CLK_OFFSET), + .PO_CLKOUT_DIV (A_PO_CLKOUT_DIV), + .PO_FINE_DELAY (A_PO_FINE_DELAY), + .PO_COARSE_BYPASS (A_PO_COARSE_BYPASS), + .PO_COARSE_DELAY (A_PO_COARSE_DELAY), + .PO_OCLK_DELAY (A_PO_OCLK_DELAY), + .PO_OCLKDELAY_INV (A_PO_OCLKDELAY_INV), + .PO_OUTPUT_CLK_SRC (A_PO_OUTPUT_CLK_SRC), + .PO_SYNC_IN_DIV_RST (A_PO_SYNC_IN_DIV_RST), + .OSERDES_DATA_RATE (A_OS_DATA_RATE), + .OSERDES_DATA_WIDTH (A_OS_DATA_WIDTH), + .IDELAYE2_IDELAY_TYPE (A_IDELAYE2_IDELAY_TYPE), + .IDELAYE2_IDELAY_VALUE (A_IDELAYE2_IDELAY_VALUE) + ,.CKE_ODT_AUX (CKE_ODT_AUX) + ,.PI_DIV2_INCDEC (PI_DIV2_INCDEC) + ) + ddr_byte_lane_A( + .mem_dq_out (mem_dq_out[11:0]), + .mem_dq_ts (mem_dq_ts[11:0]), + .mem_dq_in (mem_dq_in[9:0]), + .mem_dqs_out (mem_dqs_out[0]), + .mem_dqs_ts (mem_dqs_ts[0]), + .mem_dqs_in (mem_dqs_in[0]), + .rst (A_rst_primitives), + .rst_pi_div2 (A_pi_rst_div2), + .phy_clk (phy_clk), + .clk_div2 (clk_div2), + .freq_refclk (freq_refclk), + .mem_refclk (mem_refclk), + .idelayctrl_refclk (idelayctrl_refclk), + .sync_pulse (sync_pulse), + .ddr_ck_out (A_ddr_clk), + .rclk (A_rclk), + .pi_dqs_found (A_pi_dqs_found), + .dqs_out_of_range (A_pi_dqs_out_of_range), + .if_empty_def (if_empty_def), + .if_a_empty (A_if_a_empty), + .if_empty (A_if_empty), + .if_a_full (/*if_a_full*/), + .if_full (/*A_if_full*/), + .of_a_empty (/*of_a_empty*/), + .of_empty (/*A_of_empty*/), + .of_a_full (A_of_a_full), + .of_full (A_of_full), + .pre_fifo_a_full (A_pre_fifo_a_full), + .phy_din (phy_din_remap[79:0]), + .phy_dout (phy_dout_remap[79:0]), + .phy_cmd_wr_en (phy_cmd_wr_en), + .phy_data_wr_en (phy_data_wr_en), + .phy_rd_en (phy_rd_en), + .phaser_ctl_bus (phaser_ctl_bus), + .if_rst (if_rst), + .byte_rd_en_oth_lanes ({B_byte_rd_en,C_byte_rd_en,D_byte_rd_en}), + .byte_rd_en_oth_banks (byte_rd_en_oth_banks), + .byte_rd_en (A_byte_rd_en), +// calibration signals + .idelay_inc (idelay_inc), + .idelay_ce (A_idelay_ce), + .idelay_ld (A_idelay_ld), + .pi_rst_dqs_find (A_pi_rst_dqs_find), + .po_en_calib (phy_encalib), + .po_fine_enable (A_po_fine_enable), + .po_coarse_enable (A_po_coarse_enable), + .po_fine_inc (A_po_fine_inc), + .po_coarse_inc (A_po_coarse_inc), + .po_counter_load_en (A_po_counter_load_en), + .po_counter_read_en (A_po_counter_read_en), + .po_counter_load_val (A_po_counter_load_val), + .po_coarse_overflow (A_po_coarse_overflow), + .po_fine_overflow (A_po_fine_overflow), + .po_counter_read_val (A_po_counter_read_val), + .po_sel_fine_oclk_delay(A_po_sel_fine_oclk_delay), + .pi_en_calib (phy_encalib), + .pi_fine_enable (A_pi_fine_enable), + .pi_fine_inc (A_pi_fine_inc), + .pi_counter_load_en (A_pi_counter_load_en), + .pi_counter_read_en (A_pi_counter_read_en), + .pi_counter_load_val (A_pi_counter_load_val), + .pi_fine_overflow (A_pi_fine_overflow), + .pi_counter_read_val (A_pi_counter_read_val), + .pi_iserdes_rst (A_pi_iserdes_rst), + .pi_phase_locked (A_pi_phase_locked), + .fine_delay (A_fine_delay), + .fine_delay_sel (A_fine_delay_sel) +); + +end +else begin : no_ddr_byte_lane_A + assign A_of_a_full = 1'b0; + assign A_of_full = 1'b0; + assign A_pre_fifo_a_full = 1'b0; + assign A_if_empty = 1'b0; + assign A_byte_rd_en = 1'b1; + assign A_if_a_empty = 1'b0; + assign A_pi_phase_locked = 1; + assign A_pi_dqs_found = 1; + assign A_rclk = 0; + assign A_ddr_clk = {LP_DDR_CK_WIDTH*6{1'b0}}; + assign A_pi_counter_read_val = 0; + assign A_po_counter_read_val = 0; + assign A_pi_fine_overflow = 0; + assign A_po_coarse_overflow = 0; + assign A_po_fine_overflow = 0; +end + +if ( BYTE_LANES[1] ) begin : ddr_byte_lane_B + + assign phy_dout_remap[159:80] = part_select_80(phy_dout, (LANE_REMAP[5:4])); + mig_7series_v4_0_ddr_byte_lane # + ( + .ABCD ("B"), + .PO_DATA_CTL (PC_DATA_CTL_N[1] ? "TRUE" : "FALSE"), + .BITLANES (BITLANES[23:12]), + .BITLANES_OUTONLY (BITLANES_OUTONLY[23:12]), + .OF_ALMOST_EMPTY_VALUE (OF_ALMOST_EMPTY_VALUE), + .OF_ALMOST_FULL_VALUE (OF_ALMOST_FULL_VALUE), + .OF_SYNCHRONOUS_MODE (OF_SYNCHRONOUS_MODE), + //.OF_OUTPUT_DISABLE (OF_OUTPUT_DISABLE), + //.OF_ARRAY_MODE (B_OF_ARRAY_MODE), + //.IF_ARRAY_MODE (IF_ARRAY_MODE), + .IF_ALMOST_EMPTY_VALUE (IF_ALMOST_EMPTY_VALUE), + .IF_ALMOST_FULL_VALUE (IF_ALMOST_FULL_VALUE), + .IF_SYNCHRONOUS_MODE (IF_SYNCHRONOUS_MODE), + .IODELAY_GRP (IODELAY_GRP), + .FPGA_SPEED_GRADE (FPGA_SPEED_GRADE), + .BANK_TYPE (BANK_TYPE), + .BYTELANES_DDR_CK (BYTELANES_DDR_CK), + .RCLK_SELECT_LANE (RCLK_SELECT_LANE), + .USE_PRE_POST_FIFO (USE_PRE_POST_FIFO), + .SYNTHESIS (SYNTHESIS), + .TCK (TCK), + .PC_CLK_RATIO (PC_CLK_RATIO), + .PI_BURST_MODE (B_PI_BURST_MODE), + .PI_CLKOUT_DIV (B_PI_CLKOUT_DIV), + .PI_FREQ_REF_DIV (B_PI_FREQ_REF_DIV), + .PI_FINE_DELAY (B_PI_FINE_DELAY), + .PI_OUTPUT_CLK_SRC (B_PI_OUTPUT_CLK_SRC), + .PI_SYNC_IN_DIV_RST (B_PI_SYNC_IN_DIV_RST), + .PI_SEL_CLK_OFFSET (PI_SEL_CLK_OFFSET), + .PO_CLKOUT_DIV (B_PO_CLKOUT_DIV), + .PO_FINE_DELAY (B_PO_FINE_DELAY), + .PO_COARSE_BYPASS (B_PO_COARSE_BYPASS), + .PO_COARSE_DELAY (B_PO_COARSE_DELAY), + .PO_OCLK_DELAY (B_PO_OCLK_DELAY), + .PO_OCLKDELAY_INV (B_PO_OCLKDELAY_INV), + .PO_OUTPUT_CLK_SRC (B_PO_OUTPUT_CLK_SRC), + .PO_SYNC_IN_DIV_RST (B_PO_SYNC_IN_DIV_RST), + .OSERDES_DATA_RATE (B_OS_DATA_RATE), + .OSERDES_DATA_WIDTH (B_OS_DATA_WIDTH), + .IDELAYE2_IDELAY_TYPE (B_IDELAYE2_IDELAY_TYPE), + .IDELAYE2_IDELAY_VALUE (B_IDELAYE2_IDELAY_VALUE) + ,.CKE_ODT_AUX (CKE_ODT_AUX) + ,.PI_DIV2_INCDEC (PI_DIV2_INCDEC) + ) + ddr_byte_lane_B( + .mem_dq_out (mem_dq_out[23:12]), + .mem_dq_ts (mem_dq_ts[23:12]), + .mem_dq_in (mem_dq_in[19:10]), + .mem_dqs_out (mem_dqs_out[1]), + .mem_dqs_ts (mem_dqs_ts[1]), + .mem_dqs_in (mem_dqs_in[1]), + .rst (B_rst_primitives), + .rst_pi_div2 (B_pi_rst_div2), + .phy_clk (phy_clk), + .clk_div2 (clk_div2), + .freq_refclk (freq_refclk), + .mem_refclk (mem_refclk), + .idelayctrl_refclk (idelayctrl_refclk), + .sync_pulse (sync_pulse), + .ddr_ck_out (B_ddr_clk), + .rclk (B_rclk), + .pi_dqs_found (B_pi_dqs_found), + .dqs_out_of_range (B_pi_dqs_out_of_range), + .if_empty_def (if_empty_def), + .if_a_empty (B_if_a_empty), + .if_empty (B_if_empty), + .if_a_full (/*if_a_full*/), + .if_full (/*B_if_full*/), + .of_a_empty (/*of_a_empty*/), + .of_empty (/*B_of_empty*/), + .of_a_full (B_of_a_full), + .of_full (B_of_full), + .pre_fifo_a_full (B_pre_fifo_a_full), + .phy_din (phy_din_remap[159:80]), + .phy_dout (phy_dout_remap[159:80]), + .phy_cmd_wr_en (phy_cmd_wr_en), + .phy_data_wr_en (phy_data_wr_en), + .phy_rd_en (phy_rd_en), + .phaser_ctl_bus (phaser_ctl_bus), + .if_rst (if_rst), + .byte_rd_en_oth_lanes ({A_byte_rd_en,C_byte_rd_en,D_byte_rd_en}), + .byte_rd_en_oth_banks (byte_rd_en_oth_banks), + .byte_rd_en (B_byte_rd_en), +// calibration signals + .idelay_inc (idelay_inc), + .idelay_ce (B_idelay_ce), + .idelay_ld (B_idelay_ld), + .pi_rst_dqs_find (B_pi_rst_dqs_find), + .po_en_calib (phy_encalib), + .po_fine_enable (B_po_fine_enable), + .po_coarse_enable (B_po_coarse_enable), + .po_fine_inc (B_po_fine_inc), + .po_coarse_inc (B_po_coarse_inc), + .po_counter_load_en (B_po_counter_load_en), + .po_counter_read_en (B_po_counter_read_en), + .po_counter_load_val (B_po_counter_load_val), + .po_coarse_overflow (B_po_coarse_overflow), + .po_fine_overflow (B_po_fine_overflow), + .po_counter_read_val (B_po_counter_read_val), + .po_sel_fine_oclk_delay(B_po_sel_fine_oclk_delay), + .pi_en_calib (phy_encalib), + .pi_fine_enable (B_pi_fine_enable), + .pi_fine_inc (B_pi_fine_inc), + .pi_counter_load_en (B_pi_counter_load_en), + .pi_counter_read_en (B_pi_counter_read_en), + .pi_counter_load_val (B_pi_counter_load_val), + .pi_fine_overflow (B_pi_fine_overflow), + .pi_counter_read_val (B_pi_counter_read_val), + .pi_iserdes_rst (B_pi_iserdes_rst), + .pi_phase_locked (B_pi_phase_locked), + .fine_delay (B_fine_delay), + .fine_delay_sel (B_fine_delay_sel) +); +end +else begin : no_ddr_byte_lane_B + assign B_of_a_full = 1'b0; + assign B_of_full = 1'b0; + assign B_pre_fifo_a_full = 1'b0; + assign B_if_empty = 1'b0; + assign B_if_a_empty = 1'b0; + assign B_byte_rd_en = 1'b1; + assign B_pi_phase_locked = 1; + assign B_pi_dqs_found = 1; + assign B_rclk = 0; + assign B_ddr_clk = {LP_DDR_CK_WIDTH*6{1'b0}}; + assign B_pi_counter_read_val = 0; + assign B_po_counter_read_val = 0; + assign B_pi_fine_overflow = 0; + assign B_po_coarse_overflow = 0; + assign B_po_fine_overflow = 0; +end + +if ( BYTE_LANES[2] ) begin : ddr_byte_lane_C + + assign phy_dout_remap[239:160] = part_select_80(phy_dout, (LANE_REMAP[9:8])); + mig_7series_v4_0_ddr_byte_lane # + ( + .ABCD ("C"), + .PO_DATA_CTL (PC_DATA_CTL_N[2] ? "TRUE" : "FALSE"), + .BITLANES (BITLANES[35:24]), + .BITLANES_OUTONLY (BITLANES_OUTONLY[35:24]), + .OF_ALMOST_EMPTY_VALUE (OF_ALMOST_EMPTY_VALUE), + .OF_ALMOST_FULL_VALUE (OF_ALMOST_FULL_VALUE), + .OF_SYNCHRONOUS_MODE (OF_SYNCHRONOUS_MODE), + //.OF_OUTPUT_DISABLE (OF_OUTPUT_DISABLE), + //.OF_ARRAY_MODE (C_OF_ARRAY_MODE), + //.IF_ARRAY_MODE (IF_ARRAY_MODE), + .IF_ALMOST_EMPTY_VALUE (IF_ALMOST_EMPTY_VALUE), + .IF_ALMOST_FULL_VALUE (IF_ALMOST_FULL_VALUE), + .IF_SYNCHRONOUS_MODE (IF_SYNCHRONOUS_MODE), + .IODELAY_GRP (IODELAY_GRP), + .FPGA_SPEED_GRADE (FPGA_SPEED_GRADE), + .BANK_TYPE (BANK_TYPE), + .BYTELANES_DDR_CK (BYTELANES_DDR_CK), + .RCLK_SELECT_LANE (RCLK_SELECT_LANE), + .USE_PRE_POST_FIFO (USE_PRE_POST_FIFO), + .SYNTHESIS (SYNTHESIS), + .TCK (TCK), + .PC_CLK_RATIO (PC_CLK_RATIO), + .PI_BURST_MODE (C_PI_BURST_MODE), + .PI_CLKOUT_DIV (C_PI_CLKOUT_DIV), + .PI_FREQ_REF_DIV (C_PI_FREQ_REF_DIV), + .PI_FINE_DELAY (C_PI_FINE_DELAY), + .PI_OUTPUT_CLK_SRC (C_PI_OUTPUT_CLK_SRC), + .PI_SYNC_IN_DIV_RST (C_PI_SYNC_IN_DIV_RST), + .PI_SEL_CLK_OFFSET (PI_SEL_CLK_OFFSET), + .PO_CLKOUT_DIV (C_PO_CLKOUT_DIV), + .PO_FINE_DELAY (C_PO_FINE_DELAY), + .PO_COARSE_BYPASS (C_PO_COARSE_BYPASS), + .PO_COARSE_DELAY (C_PO_COARSE_DELAY), + .PO_OCLK_DELAY (C_PO_OCLK_DELAY), + .PO_OCLKDELAY_INV (C_PO_OCLKDELAY_INV), + .PO_OUTPUT_CLK_SRC (C_PO_OUTPUT_CLK_SRC), + .PO_SYNC_IN_DIV_RST (C_PO_SYNC_IN_DIV_RST), + .OSERDES_DATA_RATE (C_OS_DATA_RATE), + .OSERDES_DATA_WIDTH (C_OS_DATA_WIDTH), + .IDELAYE2_IDELAY_TYPE (C_IDELAYE2_IDELAY_TYPE), + .IDELAYE2_IDELAY_VALUE (C_IDELAYE2_IDELAY_VALUE) + ,.CKE_ODT_AUX (CKE_ODT_AUX) + ,.PI_DIV2_INCDEC (PI_DIV2_INCDEC) + ) + ddr_byte_lane_C( + .mem_dq_out (mem_dq_out[35:24]), + .mem_dq_ts (mem_dq_ts[35:24]), + .mem_dq_in (mem_dq_in[29:20]), + .mem_dqs_out (mem_dqs_out[2]), + .mem_dqs_ts (mem_dqs_ts[2]), + .mem_dqs_in (mem_dqs_in[2]), + .rst (C_rst_primitives), + .rst_pi_div2 (C_pi_rst_div2), + .phy_clk (phy_clk), + .clk_div2 (clk_div2), + .freq_refclk (freq_refclk), + .mem_refclk (mem_refclk), + .idelayctrl_refclk (idelayctrl_refclk), + .sync_pulse (sync_pulse), + .ddr_ck_out (C_ddr_clk), + .rclk (C_rclk), + .pi_dqs_found (C_pi_dqs_found), + .dqs_out_of_range (C_pi_dqs_out_of_range), + .if_empty_def (if_empty_def), + .if_a_empty (C_if_a_empty), + .if_empty (C_if_empty), + .if_a_full (/*if_a_full*/), + .if_full (/*C_if_full*/), + .of_a_empty (/*of_a_empty*/), + .of_empty (/*C_of_empty*/), + .of_a_full (C_of_a_full), + .of_full (C_of_full), + .pre_fifo_a_full (C_pre_fifo_a_full), + .phy_din (phy_din_remap[239:160]), + .phy_dout (phy_dout_remap[239:160]), + .phy_cmd_wr_en (phy_cmd_wr_en), + .phy_data_wr_en (phy_data_wr_en), + .phy_rd_en (phy_rd_en), + .phaser_ctl_bus (phaser_ctl_bus), + .if_rst (if_rst), + .byte_rd_en_oth_lanes ({A_byte_rd_en,B_byte_rd_en,D_byte_rd_en}), + .byte_rd_en_oth_banks (byte_rd_en_oth_banks), + .byte_rd_en (C_byte_rd_en), +// calibration signals + .idelay_inc (idelay_inc), + .idelay_ce (C_idelay_ce), + .idelay_ld (C_idelay_ld), + .pi_rst_dqs_find (C_pi_rst_dqs_find), + .po_en_calib (phy_encalib), + .po_fine_enable (C_po_fine_enable), + .po_coarse_enable (C_po_coarse_enable), + .po_fine_inc (C_po_fine_inc), + .po_coarse_inc (C_po_coarse_inc), + .po_counter_load_en (C_po_counter_load_en), + .po_counter_read_en (C_po_counter_read_en), + .po_counter_load_val (C_po_counter_load_val), + .po_coarse_overflow (C_po_coarse_overflow), + .po_fine_overflow (C_po_fine_overflow), + .po_counter_read_val (C_po_counter_read_val), + .po_sel_fine_oclk_delay(C_po_sel_fine_oclk_delay), + .pi_en_calib (phy_encalib), + .pi_fine_enable (C_pi_fine_enable), + .pi_fine_inc (C_pi_fine_inc), + .pi_counter_load_en (C_pi_counter_load_en), + .pi_counter_read_en (C_pi_counter_read_en), + .pi_counter_load_val (C_pi_counter_load_val), + .pi_fine_overflow (C_pi_fine_overflow), + .pi_counter_read_val (C_pi_counter_read_val), + .pi_iserdes_rst (C_pi_iserdes_rst), + .pi_phase_locked (C_pi_phase_locked), + .fine_delay (C_fine_delay), + .fine_delay_sel (C_fine_delay_sel) +); + +end +else begin : no_ddr_byte_lane_C + assign C_of_a_full = 1'b0; + assign C_of_full = 1'b0; + assign C_pre_fifo_a_full = 1'b0; + assign C_if_empty = 1'b0; + assign C_byte_rd_en = 1'b1; + assign C_if_a_empty = 1'b0; + assign C_pi_phase_locked = 1; + assign C_pi_dqs_found = 1; + assign C_rclk = 0; + assign C_ddr_clk = {LP_DDR_CK_WIDTH*6{1'b0}}; + assign C_pi_counter_read_val = 0; + assign C_po_counter_read_val = 0; + assign C_pi_fine_overflow = 0; + assign C_po_coarse_overflow = 0; + assign C_po_fine_overflow = 0; +end + +if ( BYTE_LANES[3] ) begin : ddr_byte_lane_D + assign phy_dout_remap[319:240] = part_select_80(phy_dout, (LANE_REMAP[13:12])); + + mig_7series_v4_0_ddr_byte_lane # + ( + .ABCD ("D"), + .PO_DATA_CTL (PC_DATA_CTL_N[3] ? "TRUE" : "FALSE"), + .BITLANES (BITLANES[47:36]), + .BITLANES_OUTONLY (BITLANES_OUTONLY[47:36]), + .OF_ALMOST_EMPTY_VALUE (OF_ALMOST_EMPTY_VALUE), + .OF_ALMOST_FULL_VALUE (OF_ALMOST_FULL_VALUE), + .OF_SYNCHRONOUS_MODE (OF_SYNCHRONOUS_MODE), + //.OF_OUTPUT_DISABLE (OF_OUTPUT_DISABLE), + //.OF_ARRAY_MODE (D_OF_ARRAY_MODE), + //.IF_ARRAY_MODE (IF_ARRAY_MODE), + .IF_ALMOST_EMPTY_VALUE (IF_ALMOST_EMPTY_VALUE), + .IF_ALMOST_FULL_VALUE (IF_ALMOST_FULL_VALUE), + .IF_SYNCHRONOUS_MODE (IF_SYNCHRONOUS_MODE), + .IODELAY_GRP (IODELAY_GRP), + .FPGA_SPEED_GRADE (FPGA_SPEED_GRADE), + .BANK_TYPE (BANK_TYPE), + .BYTELANES_DDR_CK (BYTELANES_DDR_CK), + .RCLK_SELECT_LANE (RCLK_SELECT_LANE), + .USE_PRE_POST_FIFO (USE_PRE_POST_FIFO), + .SYNTHESIS (SYNTHESIS), + .TCK (TCK), + .PC_CLK_RATIO (PC_CLK_RATIO), + .PI_BURST_MODE (D_PI_BURST_MODE), + .PI_CLKOUT_DIV (D_PI_CLKOUT_DIV), + .PI_FREQ_REF_DIV (D_PI_FREQ_REF_DIV), + .PI_FINE_DELAY (D_PI_FINE_DELAY), + .PI_OUTPUT_CLK_SRC (D_PI_OUTPUT_CLK_SRC), + .PI_SYNC_IN_DIV_RST (D_PI_SYNC_IN_DIV_RST), + .PI_SEL_CLK_OFFSET (PI_SEL_CLK_OFFSET), + .PO_CLKOUT_DIV (D_PO_CLKOUT_DIV), + .PO_FINE_DELAY (D_PO_FINE_DELAY), + .PO_COARSE_BYPASS (D_PO_COARSE_BYPASS), + .PO_COARSE_DELAY (D_PO_COARSE_DELAY), + .PO_OCLK_DELAY (D_PO_OCLK_DELAY), + .PO_OCLKDELAY_INV (D_PO_OCLKDELAY_INV), + .PO_OUTPUT_CLK_SRC (D_PO_OUTPUT_CLK_SRC), + .PO_SYNC_IN_DIV_RST (D_PO_SYNC_IN_DIV_RST), + .OSERDES_DATA_RATE (D_OS_DATA_RATE), + .OSERDES_DATA_WIDTH (D_OS_DATA_WIDTH), + .IDELAYE2_IDELAY_TYPE (D_IDELAYE2_IDELAY_TYPE), + .IDELAYE2_IDELAY_VALUE (D_IDELAYE2_IDELAY_VALUE) + ,.CKE_ODT_AUX (CKE_ODT_AUX) + ,.PI_DIV2_INCDEC (PI_DIV2_INCDEC) + ) + ddr_byte_lane_D( + .mem_dq_out (mem_dq_out[47:36]), + .mem_dq_ts (mem_dq_ts[47:36]), + .mem_dq_in (mem_dq_in[39:30]), + .mem_dqs_out (mem_dqs_out[3]), + .mem_dqs_ts (mem_dqs_ts[3]), + .mem_dqs_in (mem_dqs_in[3]), + .rst (D_rst_primitives), + .rst_pi_div2 (D_pi_rst_div2), + .phy_clk (phy_clk), + .clk_div2 (clk_div2), + .freq_refclk (freq_refclk), + .mem_refclk (mem_refclk), + .idelayctrl_refclk (idelayctrl_refclk), + .sync_pulse (sync_pulse), + .ddr_ck_out (D_ddr_clk), + .rclk (D_rclk), + .pi_dqs_found (D_pi_dqs_found), + .dqs_out_of_range (D_pi_dqs_out_of_range), + .if_empty_def (if_empty_def), + .if_a_empty (D_if_a_empty), + .if_empty (D_if_empty), + .if_a_full (/*if_a_full*/), + .if_full (/*D_if_full*/), + .of_a_empty (/*of_a_empty*/), + .of_empty (/*D_of_empty*/), + .of_a_full (D_of_a_full), + .of_full (D_of_full), + .pre_fifo_a_full (D_pre_fifo_a_full), + .phy_din (phy_din_remap[319:240]), + .phy_dout (phy_dout_remap[319:240]), + .phy_cmd_wr_en (phy_cmd_wr_en), + .phy_data_wr_en (phy_data_wr_en), + .phy_rd_en (phy_rd_en), + .phaser_ctl_bus (phaser_ctl_bus), + .idelay_inc (idelay_inc), + .idelay_ce (D_idelay_ce), + .idelay_ld (D_idelay_ld), + .if_rst (if_rst), + .byte_rd_en_oth_lanes ({A_byte_rd_en,B_byte_rd_en,C_byte_rd_en}), + .byte_rd_en_oth_banks (byte_rd_en_oth_banks), + .byte_rd_en (D_byte_rd_en), +// calibration signals + .pi_rst_dqs_find (D_pi_rst_dqs_find), + .po_en_calib (phy_encalib), + .po_fine_enable (D_po_fine_enable), + .po_coarse_enable (D_po_coarse_enable), + .po_fine_inc (D_po_fine_inc), + .po_coarse_inc (D_po_coarse_inc), + .po_counter_load_en (D_po_counter_load_en), + .po_counter_read_en (D_po_counter_read_en), + .po_counter_load_val (D_po_counter_load_val), + .po_coarse_overflow (D_po_coarse_overflow), + .po_fine_overflow (D_po_fine_overflow), + .po_counter_read_val (D_po_counter_read_val), + .po_sel_fine_oclk_delay(D_po_sel_fine_oclk_delay), + .pi_en_calib (phy_encalib), + .pi_fine_enable (D_pi_fine_enable), + .pi_fine_inc (D_pi_fine_inc), + .pi_counter_load_en (D_pi_counter_load_en), + .pi_counter_read_en (D_pi_counter_read_en), + .pi_counter_load_val (D_pi_counter_load_val), + .pi_fine_overflow (D_pi_fine_overflow), + .pi_counter_read_val (D_pi_counter_read_val), + .pi_iserdes_rst (D_pi_iserdes_rst), + .pi_phase_locked (D_pi_phase_locked), + .fine_delay (D_fine_delay), + .fine_delay_sel (D_fine_delay_sel) +); +end +else begin : no_ddr_byte_lane_D + assign D_of_a_full = 1'b0; + assign D_of_full = 1'b0; + assign D_pre_fifo_a_full = 1'b0; + assign D_if_empty = 1'b0; + assign D_byte_rd_en = 1'b1; + assign D_if_a_empty = 1'b0; + assign D_rclk = 0; + assign D_ddr_clk = {LP_DDR_CK_WIDTH*6{1'b0}}; + assign D_pi_dqs_found = 1; + assign D_pi_phase_locked = 1; + assign D_pi_counter_read_val = 0; + assign D_po_counter_read_val = 0; + assign D_pi_fine_overflow = 0; + assign D_po_coarse_overflow = 0; + assign D_po_fine_overflow = 0; +end +endgenerate + + +assign phaser_ctl_bus[MSB_RANK_SEL_I : MSB_RANK_SEL_I - 7] = in_rank; + +PHY_CONTROL #( + .AO_WRLVL_EN ( PC_AO_WRLVL_EN), + .AO_TOGGLE ( PC_AO_TOGGLE), + .BURST_MODE ( PC_BURST_MODE), + .CO_DURATION ( PC_CO_DURATION ), + .CLK_RATIO ( PC_CLK_RATIO), + .DATA_CTL_A_N ( PC_DATA_CTL_A), + .DATA_CTL_B_N ( PC_DATA_CTL_B), + .DATA_CTL_C_N ( PC_DATA_CTL_C), + .DATA_CTL_D_N ( PC_DATA_CTL_D), + .DI_DURATION ( PC_DI_DURATION ), + .DO_DURATION ( PC_DO_DURATION ), + .EVENTS_DELAY ( PC_EVENTS_DELAY), + .FOUR_WINDOW_CLOCKS ( PC_FOUR_WINDOW_CLOCKS), + .MULTI_REGION ( PC_MULTI_REGION ), + .PHY_COUNT_ENABLE ( PC_PHY_COUNT_EN), + .DISABLE_SEQ_MATCH ( PC_DISABLE_SEQ_MATCH), + .SYNC_MODE ( PC_SYNC_MODE), + .CMD_OFFSET ( PC_CMD_OFFSET), + + .RD_CMD_OFFSET_0 ( PC_RD_CMD_OFFSET_0), + .RD_CMD_OFFSET_1 ( PC_RD_CMD_OFFSET_1), + .RD_CMD_OFFSET_2 ( PC_RD_CMD_OFFSET_2), + .RD_CMD_OFFSET_3 ( PC_RD_CMD_OFFSET_3), + .RD_DURATION_0 ( PC_RD_DURATION_0), + .RD_DURATION_1 ( PC_RD_DURATION_1), + .RD_DURATION_2 ( PC_RD_DURATION_2), + .RD_DURATION_3 ( PC_RD_DURATION_3), + .WR_CMD_OFFSET_0 ( PC_WR_CMD_OFFSET_0), + .WR_CMD_OFFSET_1 ( PC_WR_CMD_OFFSET_1), + .WR_CMD_OFFSET_2 ( PC_WR_CMD_OFFSET_2), + .WR_CMD_OFFSET_3 ( PC_WR_CMD_OFFSET_3), + .WR_DURATION_0 ( PC_WR_DURATION_0), + .WR_DURATION_1 ( PC_WR_DURATION_1), + .WR_DURATION_2 ( PC_WR_DURATION_2), + .WR_DURATION_3 ( PC_WR_DURATION_3) +) phy_control_i ( + .AUXOUTPUT (aux_out), + .INBURSTPENDING (phaser_ctl_bus[MSB_BURST_PEND_PI:MSB_BURST_PEND_PI-3]), + .INRANKA (in_rank[1:0]), + .INRANKB (in_rank[3:2]), + .INRANKC (in_rank[5:4]), + .INRANKD (in_rank[7:6]), + .OUTBURSTPENDING (phaser_ctl_bus[MSB_BURST_PEND_PO:MSB_BURST_PEND_PO-3]), + .PCENABLECALIB (phy_encalib), + .PHYCTLALMOSTFULL (phy_ctl_a_full), + .PHYCTLEMPTY (phy_ctl_empty), + .PHYCTLFULL (phy_ctl_full), + .PHYCTLREADY (phy_ctl_ready), + .MEMREFCLK (mem_refclk), + .PHYCLK (phy_ctl_clk), + .PHYCTLMSTREMPTY (phy_ctl_mstr_empty), + .PHYCTLWD (_phy_ctl_wd), + .PHYCTLWRENABLE (phy_ctl_wr), + .PLLLOCK (pll_lock), + .REFDLLLOCK (ref_dll_lock), // is reset while !locked + .RESET (rst), + .SYNCIN (sync_pulse), + .READCALIBENABLE (phy_read_calib), + .WRITECALIBENABLE (phy_write_calib) +`ifdef USE_PHY_CONTROL_TEST + , .TESTINPUT (16'b0), + .TESTOUTPUT (test_output), + .TESTSELECT (test_select), + .SCANENABLEN (scan_enable) +`endif +); + + + +// register outputs to give extra slack in timing +always @(posedge phy_clk ) begin + case (calib_sel[1:0]) + 2'h0: begin + po_coarse_overflow <= #1 A_po_coarse_overflow; + po_fine_overflow <= #1 A_po_fine_overflow; + po_counter_read_val <= #1 A_po_counter_read_val; + + pi_fine_overflow <= #1 A_pi_fine_overflow; + pi_counter_read_val<= #1 A_pi_counter_read_val; + + pi_phase_locked <= #1 A_pi_phase_locked; + if ( calib_in_common) + pi_dqs_found <= #1 pi_dqs_found_any; + else + pi_dqs_found <= #1 A_pi_dqs_found; + pi_dqs_out_of_range <= #1 A_pi_dqs_out_of_range; + end + + 2'h1: begin + po_coarse_overflow <= #1 B_po_coarse_overflow; + po_fine_overflow <= #1 B_po_fine_overflow; + po_counter_read_val <= #1 B_po_counter_read_val; + + pi_fine_overflow <= #1 B_pi_fine_overflow; + pi_counter_read_val <= #1 B_pi_counter_read_val; + + pi_phase_locked <= #1 B_pi_phase_locked; + if ( calib_in_common) + pi_dqs_found <= #1 pi_dqs_found_any; + else + pi_dqs_found <= #1 B_pi_dqs_found; + pi_dqs_out_of_range <= #1 B_pi_dqs_out_of_range; + end + + 2'h2: begin + po_coarse_overflow <= #1 C_po_coarse_overflow; + po_fine_overflow <= #1 C_po_fine_overflow; + po_counter_read_val <= #1 C_po_counter_read_val; + + pi_fine_overflow <= #1 C_pi_fine_overflow; + pi_counter_read_val <= #1 C_pi_counter_read_val; + + pi_phase_locked <= #1 C_pi_phase_locked; + if ( calib_in_common) + pi_dqs_found <= #1 pi_dqs_found_any; + else + pi_dqs_found <= #1 C_pi_dqs_found; + pi_dqs_out_of_range <= #1 C_pi_dqs_out_of_range; + end + + 2'h3: begin + po_coarse_overflow <= #1 D_po_coarse_overflow; + po_fine_overflow <= #1 D_po_fine_overflow; + po_counter_read_val <= #1 D_po_counter_read_val; + + pi_fine_overflow <= #1 D_pi_fine_overflow; + pi_counter_read_val <= #1 D_pi_counter_read_val; + + pi_phase_locked <= #1 D_pi_phase_locked; + if ( calib_in_common) + pi_dqs_found <= #1 pi_dqs_found_any; + else + pi_dqs_found <= #1 D_pi_dqs_found; + pi_dqs_out_of_range <= #1 D_pi_dqs_out_of_range; + + end + default: begin + po_coarse_overflow <= po_coarse_overflow; + end + endcase +end + +wire B_mux_ctrl; +wire C_mux_ctrl; +wire D_mux_ctrl; +generate + if (HIGHEST_LANE > 1) + assign B_mux_ctrl = ( !calib_zero_lanes[1] && ( ! calib_zero_ctrl || DATA_CTL_N[1])); + else + assign B_mux_ctrl = 0; + if (HIGHEST_LANE > 2) + assign C_mux_ctrl = ( !calib_zero_lanes[2] && (! calib_zero_ctrl || DATA_CTL_N[2])); + else + assign C_mux_ctrl = 0; + if (HIGHEST_LANE > 3) + assign D_mux_ctrl = ( !calib_zero_lanes[3] && ( ! calib_zero_ctrl || DATA_CTL_N[3])); + else + assign D_mux_ctrl = 0; +endgenerate + +always @(*) begin + A_pi_fine_enable = 0; + A_pi_fine_inc = 0; + A_pi_counter_load_en = 0; + A_pi_counter_read_en = 0; + A_pi_counter_load_val = 0; + A_pi_rst_dqs_find = 0; + + + A_po_fine_enable = 0; + A_po_coarse_enable = 0; + A_po_fine_inc = 0; + A_po_coarse_inc = 0; + A_po_counter_load_en = 0; + A_po_counter_read_en = 0; + A_po_counter_load_val = 0; + A_po_sel_fine_oclk_delay = 0; + + A_idelay_ce = 0; + A_idelay_ld = 0; + A_fine_delay = 0; + A_fine_delay_sel = 0; + + B_pi_fine_enable = 0; + B_pi_fine_inc = 0; + B_pi_counter_load_en = 0; + B_pi_counter_read_en = 0; + B_pi_counter_load_val = 0; + B_pi_rst_dqs_find = 0; + + + B_po_fine_enable = 0; + B_po_coarse_enable = 0; + B_po_fine_inc = 0; + B_po_coarse_inc = 0; + B_po_counter_load_en = 0; + B_po_counter_read_en = 0; + B_po_counter_load_val = 0; + B_po_sel_fine_oclk_delay = 0; + + B_idelay_ce = 0; + B_idelay_ld = 0; + B_fine_delay = 0; + B_fine_delay_sel = 0; + + C_pi_fine_enable = 0; + C_pi_fine_inc = 0; + C_pi_counter_load_en = 0; + C_pi_counter_read_en = 0; + C_pi_counter_load_val = 0; + C_pi_rst_dqs_find = 0; + + + C_po_fine_enable = 0; + C_po_coarse_enable = 0; + C_po_fine_inc = 0; + C_po_coarse_inc = 0; + C_po_counter_load_en = 0; + C_po_counter_read_en = 0; + C_po_counter_load_val = 0; + C_po_sel_fine_oclk_delay = 0; + + C_idelay_ce = 0; + C_idelay_ld = 0; + C_fine_delay = 0; + C_fine_delay_sel = 0; + + D_pi_fine_enable = 0; + D_pi_fine_inc = 0; + D_pi_counter_load_en = 0; + D_pi_counter_read_en = 0; + D_pi_counter_load_val = 0; + D_pi_rst_dqs_find = 0; + + + D_po_fine_enable = 0; + D_po_coarse_enable = 0; + D_po_fine_inc = 0; + D_po_coarse_inc = 0; + D_po_counter_load_en = 0; + D_po_counter_read_en = 0; + D_po_counter_load_val = 0; + D_po_sel_fine_oclk_delay = 0; + + D_idelay_ce = 0; + D_idelay_ld = 0; + D_fine_delay = 0; + D_fine_delay_sel = 0; + + if ( calib_sel[2]) begin + // if this is asserted, all calib signals are deasserted + A_pi_fine_enable = 0; + A_pi_fine_inc = 0; + A_pi_counter_load_en = 0; + A_pi_counter_read_en = 0; + A_pi_counter_load_val = 0; + A_pi_rst_dqs_find = 0; + + + A_po_fine_enable = 0; + A_po_coarse_enable = 0; + A_po_fine_inc = 0; + A_po_coarse_inc = 0; + A_po_counter_load_en = 0; + A_po_counter_read_en = 0; + A_po_counter_load_val = 0; + A_po_sel_fine_oclk_delay = 0; + + A_idelay_ce = 0; + A_idelay_ld = 0; + A_fine_delay = 0; + A_fine_delay_sel = 0; + + B_pi_fine_enable = 0; + B_pi_fine_inc = 0; + B_pi_counter_load_en = 0; + B_pi_counter_read_en = 0; + B_pi_counter_load_val = 0; + B_pi_rst_dqs_find = 0; + + + B_po_fine_enable = 0; + B_po_coarse_enable = 0; + B_po_fine_inc = 0; + B_po_coarse_inc = 0; + B_po_counter_load_en = 0; + B_po_counter_read_en = 0; + B_po_counter_load_val = 0; + B_po_sel_fine_oclk_delay = 0; + + B_idelay_ce = 0; + B_idelay_ld = 0; + B_fine_delay = 0; + B_fine_delay_sel = 0; + + + C_pi_fine_enable = 0; + C_pi_fine_inc = 0; + C_pi_counter_load_en = 0; + C_pi_counter_read_en = 0; + C_pi_counter_load_val = 0; + C_pi_rst_dqs_find = 0; + + + C_po_fine_enable = 0; + C_po_coarse_enable = 0; + C_po_fine_inc = 0; + C_po_coarse_inc = 0; + C_po_counter_load_en = 0; + C_po_counter_read_en = 0; + C_po_counter_load_val = 0; + C_po_sel_fine_oclk_delay = 0; + + C_idelay_ce = 0; + C_idelay_ld = 0; + C_fine_delay = 0; + C_fine_delay_sel = 0; + + + D_pi_fine_enable = 0; + D_pi_fine_inc = 0; + D_pi_counter_load_en = 0; + D_pi_counter_read_en = 0; + D_pi_counter_load_val = 0; + D_pi_rst_dqs_find = 0; + + + D_po_fine_enable = 0; + D_po_coarse_enable = 0; + D_po_fine_inc = 0; + D_po_coarse_inc = 0; + D_po_counter_load_en = 0; + D_po_counter_read_en = 0; + D_po_counter_load_val = 0; + D_po_sel_fine_oclk_delay = 0; + + D_idelay_ce = 0; + D_idelay_ld = 0; + D_fine_delay = 0; + D_fine_delay_sel = 0; + + end else + if (calib_in_common) begin + // if this is asserted, each signal is broadcast to all phasers + // in common + if ( !calib_zero_lanes[0] && (! calib_zero_ctrl || DATA_CTL_N[0])) begin + A_pi_fine_enable = pi_fine_enable; + A_pi_fine_inc = pi_fine_inc; + A_pi_counter_load_en = pi_counter_load_en; + A_pi_counter_read_en = pi_counter_read_en; + A_pi_counter_load_val = pi_counter_load_val; + A_pi_rst_dqs_find = pi_rst_dqs_find; + + + A_po_fine_enable = po_fine_enable; + A_po_coarse_enable = po_coarse_enable; + A_po_fine_inc = po_fine_inc; + A_po_coarse_inc = po_coarse_inc; + A_po_counter_load_en = po_counter_load_en; + A_po_counter_read_en = po_counter_read_en; + A_po_counter_load_val = po_counter_load_val; + A_po_sel_fine_oclk_delay = po_sel_fine_oclk_delay; + + A_idelay_ce = idelay_ce; + A_idelay_ld = idelay_ld; + A_fine_delay = fine_delay ; + A_fine_delay_sel = fine_delay_sel; + end + + if ( B_mux_ctrl) begin + B_pi_fine_enable = pi_fine_enable; + B_pi_fine_inc = pi_fine_inc; + B_pi_counter_load_en = pi_counter_load_en; + B_pi_counter_read_en = pi_counter_read_en; + B_pi_counter_load_val = pi_counter_load_val; + B_pi_rst_dqs_find = pi_rst_dqs_find; + + + B_po_fine_enable = po_fine_enable; + B_po_coarse_enable = po_coarse_enable; + B_po_fine_inc = po_fine_inc; + B_po_coarse_inc = po_coarse_inc; + B_po_counter_load_en = po_counter_load_en; + B_po_counter_read_en = po_counter_read_en; + B_po_counter_load_val = po_counter_load_val; + B_po_sel_fine_oclk_delay = po_sel_fine_oclk_delay; + + B_idelay_ce = idelay_ce; + B_idelay_ld = idelay_ld; + B_fine_delay = fine_delay ; + B_fine_delay_sel = fine_delay_sel; + end + + if ( C_mux_ctrl) begin + C_pi_fine_enable = pi_fine_enable; + C_pi_fine_inc = pi_fine_inc; + C_pi_counter_load_en = pi_counter_load_en; + C_pi_counter_read_en = pi_counter_read_en; + C_pi_counter_load_val = pi_counter_load_val; + C_pi_rst_dqs_find = pi_rst_dqs_find; + + + C_po_fine_enable = po_fine_enable; + C_po_coarse_enable = po_coarse_enable; + C_po_fine_inc = po_fine_inc; + C_po_coarse_inc = po_coarse_inc; + C_po_counter_load_en = po_counter_load_en; + C_po_counter_read_en = po_counter_read_en; + C_po_counter_load_val = po_counter_load_val; + C_po_sel_fine_oclk_delay = po_sel_fine_oclk_delay; + + C_idelay_ce = idelay_ce; + C_idelay_ld = idelay_ld; + C_fine_delay = fine_delay ; + C_fine_delay_sel = fine_delay_sel; + end + + if ( D_mux_ctrl) begin + D_pi_fine_enable = pi_fine_enable; + D_pi_fine_inc = pi_fine_inc; + D_pi_counter_load_en = pi_counter_load_en; + D_pi_counter_read_en = pi_counter_read_en; + D_pi_counter_load_val = pi_counter_load_val; + D_pi_rst_dqs_find = pi_rst_dqs_find; + + + D_po_fine_enable = po_fine_enable; + D_po_coarse_enable = po_coarse_enable; + D_po_fine_inc = po_fine_inc; + D_po_coarse_inc = po_coarse_inc; + D_po_counter_load_en = po_counter_load_en; + D_po_counter_read_en = po_counter_read_en; + D_po_counter_load_val = po_counter_load_val; + D_po_sel_fine_oclk_delay = po_sel_fine_oclk_delay; + + D_idelay_ce = idelay_ce; + D_idelay_ld = idelay_ld; + D_fine_delay = fine_delay ; + D_fine_delay_sel = fine_delay_sel; + end + end + else begin + // otherwise, only a single phaser is selected + + + case (calib_sel[1:0]) + 0: begin + A_pi_fine_enable = pi_fine_enable; + A_pi_fine_inc = pi_fine_inc; + A_pi_counter_load_en = pi_counter_load_en; + A_pi_counter_read_en = pi_counter_read_en; + A_pi_counter_load_val = pi_counter_load_val; + A_pi_rst_dqs_find = pi_rst_dqs_find; + + + A_po_fine_enable = po_fine_enable; + A_po_coarse_enable = po_coarse_enable; + A_po_fine_inc = po_fine_inc; + A_po_coarse_inc = po_coarse_inc; + A_po_counter_load_en = po_counter_load_en; + A_po_counter_read_en = po_counter_read_en; + A_po_counter_load_val = po_counter_load_val; + A_po_sel_fine_oclk_delay = po_sel_fine_oclk_delay; + + A_idelay_ce = idelay_ce; + A_idelay_ld = idelay_ld; + A_fine_delay = fine_delay ; + A_fine_delay_sel = fine_delay_sel; + + end + 1: begin + B_pi_fine_enable = pi_fine_enable; + B_pi_fine_inc = pi_fine_inc; + B_pi_counter_load_en = pi_counter_load_en; + B_pi_counter_read_en = pi_counter_read_en; + B_pi_counter_load_val = pi_counter_load_val; + B_pi_rst_dqs_find = pi_rst_dqs_find; + + + B_po_fine_enable = po_fine_enable; + B_po_coarse_enable = po_coarse_enable; + B_po_fine_inc = po_fine_inc; + B_po_coarse_inc = po_coarse_inc; + B_po_counter_load_en = po_counter_load_en; + B_po_counter_read_en = po_counter_read_en; + B_po_counter_load_val = po_counter_load_val; + B_po_sel_fine_oclk_delay = po_sel_fine_oclk_delay; + + B_idelay_ce = idelay_ce; + B_idelay_ld = idelay_ld; + B_fine_delay = fine_delay ; + B_fine_delay_sel = fine_delay_sel; + + end + + 2: begin + C_pi_fine_enable = pi_fine_enable; + C_pi_fine_inc = pi_fine_inc; + C_pi_counter_load_en = pi_counter_load_en; + C_pi_counter_read_en = pi_counter_read_en; + C_pi_counter_load_val = pi_counter_load_val; + C_pi_rst_dqs_find = pi_rst_dqs_find; + + + C_po_fine_enable = po_fine_enable; + C_po_coarse_enable = po_coarse_enable; + C_po_fine_inc = po_fine_inc; + C_po_coarse_inc = po_coarse_inc; + C_po_counter_load_en = po_counter_load_en; + C_po_counter_read_en = po_counter_read_en; + C_po_counter_load_val = po_counter_load_val; + C_po_sel_fine_oclk_delay = po_sel_fine_oclk_delay; + + C_idelay_ce = idelay_ce; + C_idelay_ld = idelay_ld; + C_fine_delay = fine_delay ; + C_fine_delay_sel = fine_delay_sel; + + end + + 3: begin + D_pi_fine_enable = pi_fine_enable; + D_pi_fine_inc = pi_fine_inc; + D_pi_counter_load_en = pi_counter_load_en; + D_pi_counter_read_en = pi_counter_read_en; + D_pi_counter_load_val = pi_counter_load_val; + D_pi_rst_dqs_find = pi_rst_dqs_find; + + + D_po_fine_enable = po_fine_enable; + D_po_coarse_enable = po_coarse_enable; + D_po_fine_inc = po_fine_inc; + D_po_coarse_inc = po_coarse_inc; + D_po_counter_load_en = po_counter_load_en; + D_po_counter_load_val = po_counter_load_val; + D_po_counter_read_en = po_counter_read_en; + D_po_sel_fine_oclk_delay = po_sel_fine_oclk_delay; + + D_idelay_ce = idelay_ce; + D_idelay_ld = idelay_ld; + D_fine_delay = fine_delay ; + D_fine_delay_sel = fine_delay_sel; + + end + endcase + end +end + +//obligatory phaser-ref +PHASER_REF phaser_ref_i( + + .LOCKED (ref_dll_lock), + .CLKIN (freq_refclk), + .PWRDWN (1'b0), + .RST ( ! pll_lock) + +); + + +// optional idelay_ctrl +generate +if ( GENERATE_IDELAYCTRL == "TRUE") +IDELAYCTRL idelayctrl ( + .RDY (/*idelayctrl_rdy*/), + .REFCLK (idelayctrl_refclk), + .RST (rst) +); +endgenerate + + +endmodule diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ck_addr_cmd_delay.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ck_addr_cmd_delay.v new file mode 100644 index 0000000..f00b202 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ck_addr_cmd_delay.v @@ -0,0 +1,233 @@ +//***************************************************************************** +// (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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version: %version +// \ \ Application: MIG +// / / Filename: ddr_phy_ck_addr_cmd_delay.v +// /___/ /\ Date Last Modified: $Date: 2011/02/25 02:07:40 $ +// \ \ / \ Date Created: Aug 03 2009 +// \___\/\___\ +// +//Device: 7 Series +//Design Name: DDR3 SDRAM +//Purpose: Shift CK/Address/Commands/Controls +//Reference: +//Revision History: +//***************************************************************************** + +`timescale 1ps/1ps + +module mig_7series_v4_0_ddr_phy_ck_addr_cmd_delay # + ( + parameter TCQ = 100, + parameter tCK = 3636, + parameter DQS_CNT_WIDTH = 3, + parameter N_CTL_LANES = 3, + parameter SIM_CAL_OPTION = "NONE" + ) + ( + input clk, + input rst, + // Start only after PO_CIRC_BUF_DELAY decremented + input cmd_delay_start, + // Control lane being shifted using Phaser_Out fine delay taps + output reg [N_CTL_LANES-1:0] ctl_lane_cnt, + // Inc/dec Phaser_Out fine delay line + output reg po_stg2_f_incdec, + output reg po_en_stg2_f, + output reg po_stg2_c_incdec, + output reg po_en_stg2_c, + // Completed delaying CK/Address/Commands/Controls + output po_ck_addr_cmd_delay_done + ); + + localparam TAP_CNT_LIMIT = 63; + + //Calculate the tap resolution of the PHASER based on the clock period + localparam FREQ_REF_DIV = (tCK > 5000 ? 4 : + tCK > 2500 ? 2 : 1); + + localparam integer PHASER_TAP_RES = ((tCK/2)/64); + + // Determine whether 300 ps or 350 ps delay required + localparam CALC_TAP_CNT = (tCK >= 1250) ? 350 : 300; + + // Determine the number of Phaser_Out taps required to delay by 300 ps + // 300 ps is the PCB trace uncertainty between CK and DQS byte groups + + + // Increment control byte lanes + localparam TAP_CNT = 0; + //localparam TAP_CNT = (CALC_TAP_CNT + PHASER_TAP_RES - 1)/PHASER_TAP_RES; + //Decrement control byte lanes + localparam TAP_DEC = (SIM_CAL_OPTION == "FAST_CAL") ? 0 : 29; + + + + + reg delay_dec_done; + reg delay_done_r1; + reg delay_done_r2; + reg delay_done_r3; + reg delay_done_r4 /* synthesis syn_maxfan = 10 */; + reg [5:0] delay_cnt_r; + reg [5:0] delaydec_cnt_r; + reg po_cnt_inc; + reg po_cnt_dec; + reg [3:0] wait_cnt_r; + + assign po_ck_addr_cmd_delay_done = ((TAP_CNT == 0) && (TAP_DEC == 0)) ? 1'b1 : delay_done_r4; + + always @(posedge clk) begin + if (rst || po_cnt_dec || po_cnt_inc) + wait_cnt_r <= #TCQ 'd8; + else if (cmd_delay_start && (wait_cnt_r > 'd0)) + wait_cnt_r <= #TCQ wait_cnt_r - 1; + end + + always @(posedge clk) begin + if (rst || (delaydec_cnt_r > 6'd0) || (delay_cnt_r == 'd0) || (TAP_DEC == 0)) + po_cnt_inc <= #TCQ 1'b0; + else if ((delay_cnt_r > 'd0) && (wait_cnt_r == 'd1)) + po_cnt_inc <= #TCQ 1'b1; + else + po_cnt_inc <= #TCQ 1'b0; + end + + //Tap decrement + always @(posedge clk) begin + if (rst || (delaydec_cnt_r == 'd0)) + po_cnt_dec <= #TCQ 1'b0; + else if (cmd_delay_start && (delaydec_cnt_r > 'd0) && (wait_cnt_r == 'd1)) + po_cnt_dec <= #TCQ 1'b1; + else + po_cnt_dec <= #TCQ 1'b0; + end + + //po_stg2_f_incdec and po_en_stg2_f stay asserted HIGH for TAP_COUNT cycles for every control byte lane + //the alignment is started once the + always @(posedge clk) begin + if (rst) begin + po_stg2_f_incdec <= #TCQ 1'b0; + po_en_stg2_f <= #TCQ 1'b0; + po_stg2_c_incdec <= #TCQ 1'b0; + po_en_stg2_c <= #TCQ 1'b0; + end else begin + if (po_cnt_dec) begin + po_stg2_f_incdec <= #TCQ 1'b0; + po_en_stg2_f <= #TCQ 1'b1; + end else begin + po_stg2_f_incdec <= #TCQ 1'b0; + po_en_stg2_f <= #TCQ 1'b0; + end + if (po_cnt_inc) begin + po_stg2_c_incdec <= #TCQ 1'b1; + po_en_stg2_c <= #TCQ 1'b1; + end else begin + po_stg2_c_incdec <= #TCQ 1'b0; + po_en_stg2_c <= #TCQ 1'b0; + end + end + end + + // delay counter to count 2 cycles + // Increment coarse taps by 2 for all control byte lanes + // to mitigate late writes + always @(posedge clk) begin + // load delay counter with init value + if (rst || (tCK > 2500) || (SIM_CAL_OPTION == "FAST_CAL")) + delay_cnt_r <= #TCQ 'd0; + else if ((delaydec_cnt_r > 6'd0) ||((delay_cnt_r == 6'd0) && (ctl_lane_cnt != N_CTL_LANES-1))) + delay_cnt_r <= #TCQ 'd1; + else if (po_cnt_inc && (delay_cnt_r > 6'd0)) + delay_cnt_r <= #TCQ delay_cnt_r - 1; + end + + // delay counter to count TAP_DEC cycles + always @(posedge clk) begin + // load delay counter with init value of TAP_DEC + if (rst || ~cmd_delay_start ||((delaydec_cnt_r == 6'd0) && (delay_cnt_r == 6'd0) && (ctl_lane_cnt != N_CTL_LANES-1))) + delaydec_cnt_r <= #TCQ TAP_DEC; + else if (po_cnt_dec && (delaydec_cnt_r > 6'd0)) + delaydec_cnt_r <= #TCQ delaydec_cnt_r - 1; + end + + //ctl_lane_cnt is used to count the number of CTL_LANES or byte lanes that have the address/command phase shifted by 1/4 mem. cycle + //This ensures all ctrl byte lanes have had their output phase shifted. + always @(posedge clk) begin + if (rst || ~cmd_delay_start ) + ctl_lane_cnt <= #TCQ 6'b0; + else if (~delay_dec_done && (ctl_lane_cnt == N_CTL_LANES-1) && (delaydec_cnt_r == 6'd1)) + ctl_lane_cnt <= #TCQ ctl_lane_cnt; + else if ((ctl_lane_cnt != N_CTL_LANES-1) && (delaydec_cnt_r == 6'd0) && (delay_cnt_r == 'd0)) + ctl_lane_cnt <= #TCQ ctl_lane_cnt + 1; + end + + // All control lanes have decremented to 31 fine taps from 46 + always @(posedge clk) begin + if (rst || ~cmd_delay_start) begin + delay_dec_done <= #TCQ 1'b0; + end else if (((TAP_CNT == 0) && (TAP_DEC == 0)) || + ((delaydec_cnt_r == 6'd0) && (delay_cnt_r == 'd0) && (ctl_lane_cnt == N_CTL_LANES-1))) begin + delay_dec_done <= #TCQ 1'b1; + end + end + + + + always @(posedge clk) begin + delay_done_r1 <= #TCQ delay_dec_done; + delay_done_r2 <= #TCQ delay_done_r1; + delay_done_r3 <= #TCQ delay_done_r2; + delay_done_r4 <= #TCQ delay_done_r3; + end + +endmodule diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_dqs_found_cal.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_dqs_found_cal.v new file mode 100644 index 0000000..3949ed6 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_dqs_found_cal.v @@ -0,0 +1,1198 @@ +//***************************************************************************** +// (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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version: +// \ \ Application: MIG +// / / Filename: ddr_phy_dqs_found_cal.v +// /___/ /\ Date Last Modified: $Date: 2011/06/02 08:35:08 $ +// \ \ / \ Date Created: +// \___\/\___\ +// +//Device: 7 Series +//Design Name: DDR3 SDRAM +//Purpose: +// Read leveling calibration logic +// NOTES: +// 1. Phaser_In DQSFOUND calibration +//Reference: +//Revision History: +//***************************************************************************** + +/****************************************************************************** +**$Id: ddr_phy_dqs_found_cal.v,v 1.1 2011/06/02 08:35:08 mishra Exp $ +**$Date: 2011/06/02 08:35:08 $ +**$Author: +**$Revision: +**$Source: +******************************************************************************/ + +`timescale 1ps/1ps + +module mig_7series_v4_0_ddr_phy_dqs_found_cal # + ( + parameter TCQ = 100, // clk->out delay (sim only) + parameter nCK_PER_CLK = 2, // # of memory clocks per CLK + parameter nCL = 5, // Read CAS latency + parameter AL = "0", + parameter nCWL = 5, // Write CAS latency + parameter DRAM_TYPE = "DDR3", // Memory I/F type: "DDR3", "DDR2" + parameter RANKS = 1, // # of memory ranks in the system + parameter DQS_CNT_WIDTH = 3, // = ceil(log2(DQS_WIDTH)) + parameter DQS_WIDTH = 8, // # of DQS (strobe) + parameter DRAM_WIDTH = 8, // # of DQ per DQS + parameter REG_CTRL = "ON", // "ON" for registered DIMM + parameter SIM_CAL_OPTION = "NONE", // Performs all calibration steps + parameter NUM_DQSFOUND_CAL = 3, // Number of times to iterate + parameter N_CTL_LANES = 3, // Number of control byte lanes + parameter HIGHEST_LANE = 12, // Sum of byte lanes (Data + Ctrl) + parameter HIGHEST_BANK = 3, // Sum of I/O Banks + parameter BYTE_LANES_B0 = 4'b1111, + parameter BYTE_LANES_B1 = 4'b0000, + parameter BYTE_LANES_B2 = 4'b0000, + parameter BYTE_LANES_B3 = 4'b0000, + parameter BYTE_LANES_B4 = 4'b0000, + parameter DATA_CTL_B0 = 4'hc, + parameter DATA_CTL_B1 = 4'hf, + parameter DATA_CTL_B2 = 4'hf, + parameter DATA_CTL_B3 = 4'hf, + parameter DATA_CTL_B4 = 4'hf + ) + ( + input clk, + input rst, + input dqsfound_retry, + // From phy_init + input pi_dqs_found_start, + input detect_pi_found_dqs, + input prech_done, + // DQSFOUND per Phaser_IN + input [HIGHEST_LANE-1:0] pi_dqs_found_lanes, + + output reg [HIGHEST_BANK-1:0] pi_rst_stg1_cal, + + // To phy_init + output [5:0] rd_data_offset_0, + output [5:0] rd_data_offset_1, + output [5:0] rd_data_offset_2, + output pi_dqs_found_rank_done, + output pi_dqs_found_done, + output reg pi_dqs_found_err, + output [6*RANKS-1:0] rd_data_offset_ranks_0, + output [6*RANKS-1:0] rd_data_offset_ranks_1, + output [6*RANKS-1:0] rd_data_offset_ranks_2, + output reg dqsfound_retry_done, + output reg dqs_found_prech_req, + //To MC + output [6*RANKS-1:0] rd_data_offset_ranks_mc_0, + output [6*RANKS-1:0] rd_data_offset_ranks_mc_1, + output [6*RANKS-1:0] rd_data_offset_ranks_mc_2, + + input [8:0] po_counter_read_val, + output rd_data_offset_cal_done, + output fine_adjust_done, + output [N_CTL_LANES-1:0] fine_adjust_lane_cnt, + output reg ck_po_stg2_f_indec, + output reg ck_po_stg2_f_en, + output [255:0] dbg_dqs_found_cal + ); + + + // For non-zero AL values + localparam nAL = (AL == "CL-1") ? nCL - 1 : 0; + + // Adding the register dimm latency to write latency + localparam CWL_M = (REG_CTRL == "ON") ? nCWL + nAL + 1 : nCWL + nAL; + + // Added to reduce simulation time + localparam LATENCY_FACTOR = 13; + + localparam NUM_READS = (SIM_CAL_OPTION == "NONE") ? 7 : 1; + + localparam [19:0] DATA_PRESENT = {(DATA_CTL_B4[3] & BYTE_LANES_B4[3]), + (DATA_CTL_B4[2] & BYTE_LANES_B4[2]), + (DATA_CTL_B4[1] & BYTE_LANES_B4[1]), + (DATA_CTL_B4[0] & BYTE_LANES_B4[0]), + (DATA_CTL_B3[3] & BYTE_LANES_B3[3]), + (DATA_CTL_B3[2] & BYTE_LANES_B3[2]), + (DATA_CTL_B3[1] & BYTE_LANES_B3[1]), + (DATA_CTL_B3[0] & BYTE_LANES_B3[0]), + (DATA_CTL_B2[3] & BYTE_LANES_B2[3]), + (DATA_CTL_B2[2] & BYTE_LANES_B2[2]), + (DATA_CTL_B2[1] & BYTE_LANES_B2[1]), + (DATA_CTL_B2[0] & BYTE_LANES_B2[0]), + (DATA_CTL_B1[3] & BYTE_LANES_B1[3]), + (DATA_CTL_B1[2] & BYTE_LANES_B1[2]), + (DATA_CTL_B1[1] & BYTE_LANES_B1[1]), + (DATA_CTL_B1[0] & BYTE_LANES_B1[0]), + (DATA_CTL_B0[3] & BYTE_LANES_B0[3]), + (DATA_CTL_B0[2] & BYTE_LANES_B0[2]), + (DATA_CTL_B0[1] & BYTE_LANES_B0[1]), + (DATA_CTL_B0[0] & BYTE_LANES_B0[0])}; + + localparam FINE_ADJ_IDLE = 4'h0; + localparam RST_POSTWAIT = 4'h1; + localparam RST_POSTWAIT1 = 4'h2; + localparam RST_WAIT = 4'h3; + localparam FINE_ADJ_INIT = 4'h4; + localparam FINE_INC = 4'h5; + localparam FINE_INC_WAIT = 4'h6; + localparam FINE_INC_PREWAIT = 4'h7; + localparam DETECT_PREWAIT = 4'h8; + localparam DETECT_DQSFOUND = 4'h9; + localparam PRECH_WAIT = 4'hA; + localparam FINE_DEC = 4'hB; + localparam FINE_DEC_WAIT = 4'hC; + localparam FINE_DEC_PREWAIT = 4'hD; + localparam FINAL_WAIT = 4'hE; + localparam FINE_ADJ_DONE = 4'hF; + + + integer k,l,m,n,p,q,r,s; + + reg dqs_found_start_r; + reg [6*HIGHEST_BANK-1:0] rd_byte_data_offset[0:RANKS-1]; + reg rank_done_r; + reg rank_done_r1; + reg dqs_found_done_r; + (* ASYNC_REG = "TRUE" *) reg [HIGHEST_LANE-1:0] pi_dqs_found_lanes_r1; + (* ASYNC_REG = "TRUE" *) reg [HIGHEST_LANE-1:0] pi_dqs_found_lanes_r2; + (* ASYNC_REG = "TRUE" *) reg [HIGHEST_LANE-1:0] pi_dqs_found_lanes_r3; + reg init_dqsfound_done_r; + reg init_dqsfound_done_r1; + reg init_dqsfound_done_r2; + reg init_dqsfound_done_r3; + reg init_dqsfound_done_r4; + reg init_dqsfound_done_r5; + reg [1:0] rnk_cnt_r; + reg [2:0 ] final_do_index[0:RANKS-1]; + reg [5:0 ] final_do_max[0:RANKS-1]; + reg [6*HIGHEST_BANK-1:0] final_data_offset[0:RANKS-1]; + reg [6*HIGHEST_BANK-1:0] final_data_offset_mc[0:RANKS-1]; + reg [HIGHEST_BANK-1:0] pi_rst_stg1_cal_r; + reg [HIGHEST_BANK-1:0] pi_rst_stg1_cal_r1; + reg [10*HIGHEST_BANK-1:0] retry_cnt; + reg dqsfound_retry_r1; + wire [4*HIGHEST_BANK-1:0] pi_dqs_found_lanes_int; + reg [HIGHEST_BANK-1:0] pi_dqs_found_all_bank; + reg [HIGHEST_BANK-1:0] pi_dqs_found_all_bank_r; + reg [HIGHEST_BANK-1:0] pi_dqs_found_any_bank; + reg [HIGHEST_BANK-1:0] pi_dqs_found_any_bank_r; + reg [HIGHEST_BANK-1:0] pi_dqs_found_err_r; + + // CK/Control byte lanes fine adjust stage + reg fine_adjust; + reg [N_CTL_LANES-1:0] ctl_lane_cnt; + reg [3:0] fine_adj_state_r; + reg fine_adjust_done_r; + reg rst_dqs_find; + reg rst_dqs_find_r1; + reg rst_dqs_find_r2; + reg [5:0] init_dec_cnt; + reg [5:0] dec_cnt; + reg [5:0] inc_cnt; + reg final_dec_done; + reg init_dec_done; + reg first_fail_detect; + reg second_fail_detect; + reg [5:0] first_fail_taps; + reg [5:0] second_fail_taps; + reg [5:0] stable_pass_cnt; + reg [3:0] detect_rd_cnt; + + + + + //*************************************************************************** + // Debug signals + // + //*************************************************************************** + assign dbg_dqs_found_cal[5:0] = first_fail_taps; + assign dbg_dqs_found_cal[11:6] = second_fail_taps; + assign dbg_dqs_found_cal[12] = first_fail_detect; + assign dbg_dqs_found_cal[13] = second_fail_detect; + assign dbg_dqs_found_cal[14] = fine_adjust_done_r; + + + assign pi_dqs_found_rank_done = rank_done_r; + assign pi_dqs_found_done = dqs_found_done_r; + + generate + genvar rnk_cnt; + if (HIGHEST_BANK == 3) begin // Three Bank Interface + for (rnk_cnt = 0; rnk_cnt < RANKS; rnk_cnt = rnk_cnt + 1) begin: rnk_loop + assign rd_data_offset_ranks_0[6*rnk_cnt+:6] = final_data_offset[rnk_cnt][5:0]; + assign rd_data_offset_ranks_1[6*rnk_cnt+:6] = final_data_offset[rnk_cnt][11:6]; + assign rd_data_offset_ranks_2[6*rnk_cnt+:6] = final_data_offset[rnk_cnt][17:12]; + assign rd_data_offset_ranks_mc_0[6*rnk_cnt+:6] = final_data_offset_mc[rnk_cnt][5:0]; + assign rd_data_offset_ranks_mc_1[6*rnk_cnt+:6] = final_data_offset_mc[rnk_cnt][11:6]; + assign rd_data_offset_ranks_mc_2[6*rnk_cnt+:6] = final_data_offset_mc[rnk_cnt][17:12]; + end + end else if (HIGHEST_BANK == 2) begin // Two Bank Interface + for (rnk_cnt = 0; rnk_cnt < RANKS; rnk_cnt = rnk_cnt + 1) begin: rnk_loop + assign rd_data_offset_ranks_0[6*rnk_cnt+:6] = final_data_offset[rnk_cnt][5:0]; + assign rd_data_offset_ranks_1[6*rnk_cnt+:6] = final_data_offset[rnk_cnt][11:6]; + assign rd_data_offset_ranks_2[6*rnk_cnt+:6] = 'd0; + assign rd_data_offset_ranks_mc_0[6*rnk_cnt+:6] = final_data_offset_mc[rnk_cnt][5:0]; + assign rd_data_offset_ranks_mc_1[6*rnk_cnt+:6] = final_data_offset_mc[rnk_cnt][11:6]; + assign rd_data_offset_ranks_mc_2[6*rnk_cnt+:6] = 'd0; + end + end else begin // Single Bank Interface + for (rnk_cnt = 0; rnk_cnt < RANKS; rnk_cnt = rnk_cnt + 1) begin: rnk_loop + assign rd_data_offset_ranks_0[6*rnk_cnt+:6] = final_data_offset[rnk_cnt][5:0]; + assign rd_data_offset_ranks_1[6*rnk_cnt+:6] = 'd0; + assign rd_data_offset_ranks_2[6*rnk_cnt+:6] = 'd0; + assign rd_data_offset_ranks_mc_0[6*rnk_cnt+:6] = final_data_offset_mc[rnk_cnt][5:0]; + assign rd_data_offset_ranks_mc_1[6*rnk_cnt+:6] = 'd0; + assign rd_data_offset_ranks_mc_2[6*rnk_cnt+:6] = 'd0; + end + end + endgenerate + + // final_data_offset is used during write calibration and during + // normal operation. One rd_data_offset value per rank for entire + // interface + generate + if (HIGHEST_BANK == 3) begin // Three I/O Bank interface + assign rd_data_offset_0 = (~init_dqsfound_done_r2) ? rd_byte_data_offset[rnk_cnt_r][0+:6] : + final_data_offset[rnk_cnt_r][0+:6]; + assign rd_data_offset_1 = (~init_dqsfound_done_r2) ? rd_byte_data_offset[rnk_cnt_r][6+:6] : + final_data_offset[rnk_cnt_r][6+:6]; + assign rd_data_offset_2 = (~init_dqsfound_done_r2) ? rd_byte_data_offset[rnk_cnt_r][12+:6] : + final_data_offset[rnk_cnt_r][12+:6]; + end else if (HIGHEST_BANK == 2) begin // Two I/O Bank interface + assign rd_data_offset_0 = (~init_dqsfound_done_r2) ? rd_byte_data_offset[rnk_cnt_r][0+:6] : + final_data_offset[rnk_cnt_r][0+:6]; + assign rd_data_offset_1 = (~init_dqsfound_done_r2) ? rd_byte_data_offset[rnk_cnt_r][6+:6] : + final_data_offset[rnk_cnt_r][6+:6]; + assign rd_data_offset_2 = 'd0; + end else begin + assign rd_data_offset_0 = (~init_dqsfound_done_r2) ? rd_byte_data_offset[rnk_cnt_r][0+:6] : + final_data_offset[rnk_cnt_r][0+:6]; + assign rd_data_offset_1 = 'd0; + assign rd_data_offset_2 = 'd0; + end + endgenerate + + assign rd_data_offset_cal_done = init_dqsfound_done_r; + assign fine_adjust_lane_cnt = ctl_lane_cnt; + + //************************************************************************** + // DQSFOUND all and any generation + // pi_dqs_found_all_bank[x] asserted when all Phaser_INs in Bankx are + // asserted + // pi_dqs_found_any_bank[x] asserted when at least one Phaser_IN in Bankx + // is asserted + //************************************************************************** + + generate + if ((HIGHEST_LANE == 4) || (HIGHEST_LANE == 8) || (HIGHEST_LANE == 12)) + assign pi_dqs_found_lanes_int = pi_dqs_found_lanes_r3; + else if ((HIGHEST_LANE == 3) || (HIGHEST_LANE == 7) || (HIGHEST_LANE == 11)) + assign pi_dqs_found_lanes_int = {1'b0, pi_dqs_found_lanes_r3}; + else if ((HIGHEST_LANE == 6) || (HIGHEST_LANE == 10)) + assign pi_dqs_found_lanes_int = {2'b00, pi_dqs_found_lanes_r3}; + else if ((HIGHEST_LANE == 5) || (HIGHEST_LANE == 9)) + assign pi_dqs_found_lanes_int = {3'b000, pi_dqs_found_lanes_r3}; + endgenerate + + always @(posedge clk) begin + if (rst) begin + for (k = 0; k < HIGHEST_BANK; k = k + 1) begin: rst_pi_dqs_found + pi_dqs_found_all_bank[k] <= #TCQ 'b0; + pi_dqs_found_any_bank[k] <= #TCQ 'b0; + end + end else if (pi_dqs_found_start) begin + for (p = 0; p < HIGHEST_BANK; p = p +1) begin: assign_pi_dqs_found + pi_dqs_found_all_bank[p] <= #TCQ (!DATA_PRESENT[4*p+0] | pi_dqs_found_lanes_int[4*p+0]) & + (!DATA_PRESENT[4*p+1] | pi_dqs_found_lanes_int[4*p+1]) & + (!DATA_PRESENT[4*p+2] | pi_dqs_found_lanes_int[4*p+2]) & + (!DATA_PRESENT[4*p+3] | pi_dqs_found_lanes_int[4*p+3]); + pi_dqs_found_any_bank[p] <= #TCQ (DATA_PRESENT[4*p+0] & pi_dqs_found_lanes_int[4*p+0]) | + (DATA_PRESENT[4*p+1] & pi_dqs_found_lanes_int[4*p+1]) | + (DATA_PRESENT[4*p+2] & pi_dqs_found_lanes_int[4*p+2]) | + (DATA_PRESENT[4*p+3] & pi_dqs_found_lanes_int[4*p+3]); + end + end + end + + + always @(posedge clk) begin + pi_dqs_found_all_bank_r <= #TCQ pi_dqs_found_all_bank; + pi_dqs_found_any_bank_r <= #TCQ pi_dqs_found_any_bank; + end + +//***************************************************************************** +// Counter to increase number of 4 back-to-back reads per rd_data_offset and +// per CK/A/C tap value +//***************************************************************************** + + always @(posedge clk) begin + if (rst || (detect_rd_cnt == 'd0)) + detect_rd_cnt <= #TCQ NUM_READS; + else if (detect_pi_found_dqs && (detect_rd_cnt > 'd0)) + detect_rd_cnt <= #TCQ detect_rd_cnt - 1; + end + + + //************************************************************************** + // Adjust Phaser_Out stage 2 taps on CK/Address/Command/Controls + // + //************************************************************************** + + assign fine_adjust_done = fine_adjust_done_r; + + always @(posedge clk) begin + rst_dqs_find_r1 <= #TCQ rst_dqs_find; + rst_dqs_find_r2 <= #TCQ rst_dqs_find_r1; + end + + always @(posedge clk) begin + if(rst)begin + fine_adjust <= #TCQ 1'b0; + ctl_lane_cnt <= #TCQ 'd0; + fine_adj_state_r <= #TCQ FINE_ADJ_IDLE; + fine_adjust_done_r <= #TCQ 1'b0; + ck_po_stg2_f_indec <= #TCQ 1'b0; + ck_po_stg2_f_en <= #TCQ 1'b0; + rst_dqs_find <= #TCQ 1'b0; + init_dec_cnt <= #TCQ 'd31; + dec_cnt <= #TCQ 'd0; + inc_cnt <= #TCQ 'd0; + init_dec_done <= #TCQ 1'b0; + final_dec_done <= #TCQ 1'b0; + first_fail_detect <= #TCQ 1'b0; + second_fail_detect <= #TCQ 1'b0; + first_fail_taps <= #TCQ 'd0; + second_fail_taps <= #TCQ 'd0; + stable_pass_cnt <= #TCQ 'd0; + dqs_found_prech_req<= #TCQ 1'b0; + end else begin + case (fine_adj_state_r) + + FINE_ADJ_IDLE: begin + if (init_dqsfound_done_r5) begin + if (SIM_CAL_OPTION == "FAST_CAL") begin + fine_adjust <= #TCQ 1'b1; + fine_adj_state_r <= #TCQ FINE_ADJ_DONE; + rst_dqs_find <= #TCQ 1'b0; + end else begin + fine_adjust <= #TCQ 1'b1; + fine_adj_state_r <= #TCQ RST_WAIT; + rst_dqs_find <= #TCQ 1'b1; + end + end + end + + RST_WAIT: begin + if (~(|pi_dqs_found_any_bank) && rst_dqs_find_r2) begin + rst_dqs_find <= #TCQ 1'b0; + if (|init_dec_cnt) + fine_adj_state_r <= #TCQ FINE_DEC_PREWAIT; + else if (final_dec_done) + fine_adj_state_r <= #TCQ FINE_ADJ_DONE; + else + fine_adj_state_r <= #TCQ RST_POSTWAIT; + end + end + + RST_POSTWAIT: begin + fine_adj_state_r <= #TCQ RST_POSTWAIT1; + end + + RST_POSTWAIT1: begin + fine_adj_state_r <= #TCQ FINE_ADJ_INIT; + end + + FINE_ADJ_INIT: begin + //if (detect_pi_found_dqs && (inc_cnt < 'd63)) + fine_adj_state_r <= #TCQ FINE_INC; + end + + FINE_INC: begin + fine_adj_state_r <= #TCQ FINE_INC_WAIT; + ck_po_stg2_f_indec <= #TCQ 1'b1; + ck_po_stg2_f_en <= #TCQ 1'b1; + if (ctl_lane_cnt == N_CTL_LANES-1) + inc_cnt <= #TCQ inc_cnt + 1; + end + + FINE_INC_WAIT: begin + ck_po_stg2_f_indec <= #TCQ 1'b0; + ck_po_stg2_f_en <= #TCQ 1'b0; + if (ctl_lane_cnt != N_CTL_LANES-1) begin + ctl_lane_cnt <= #TCQ ctl_lane_cnt + 1; + fine_adj_state_r <= #TCQ FINE_INC_PREWAIT; + end else if (ctl_lane_cnt == N_CTL_LANES-1) begin + ctl_lane_cnt <= #TCQ 'd0; + fine_adj_state_r <= #TCQ DETECT_PREWAIT; + end + end + + FINE_INC_PREWAIT: begin + fine_adj_state_r <= #TCQ FINE_INC; + end + + DETECT_PREWAIT: begin + if (detect_pi_found_dqs && (detect_rd_cnt == 'd1)) + fine_adj_state_r <= #TCQ DETECT_DQSFOUND; + else + fine_adj_state_r <= #TCQ DETECT_PREWAIT; + end + + DETECT_DQSFOUND: begin + if (detect_pi_found_dqs && ~(&pi_dqs_found_all_bank)) begin + stable_pass_cnt <= #TCQ 'd0; + if (~first_fail_detect && (inc_cnt == 'd63)) begin + // First failing tap detected at 63 taps + // then decrement to 31 + first_fail_detect <= #TCQ 1'b1; + first_fail_taps <= #TCQ inc_cnt; + fine_adj_state_r <= #TCQ FINE_DEC; + dec_cnt <= #TCQ 'd32; + end else if (~first_fail_detect && (inc_cnt > 'd30) && (stable_pass_cnt > 'd29)) begin + // First failing tap detected at greater than 30 taps + // then stop looking for second edge and decrement + first_fail_detect <= #TCQ 1'b1; + first_fail_taps <= #TCQ inc_cnt; + fine_adj_state_r <= #TCQ FINE_DEC; + dec_cnt <= #TCQ (inc_cnt>>1) + 1; + end else if (~first_fail_detect || (first_fail_detect && (stable_pass_cnt < 'd30) && (inc_cnt <= 'd32))) begin + // First failing tap detected, continue incrementing + // until either second failing tap detected or 63 + first_fail_detect <= #TCQ 1'b1; + first_fail_taps <= #TCQ inc_cnt; + rst_dqs_find <= #TCQ 1'b1; + if ((inc_cnt == 'd12) || (inc_cnt == 'd24)) begin + dqs_found_prech_req <= #TCQ 1'b1; + fine_adj_state_r <= #TCQ PRECH_WAIT; + end else + fine_adj_state_r <= #TCQ RST_WAIT; + end else if (first_fail_detect && (inc_cnt > 'd32) && (inc_cnt < 'd63) && (stable_pass_cnt < 'd30)) begin + // Consecutive 30 taps of passing region was not found + // continue incrementing + first_fail_detect <= #TCQ 1'b1; + first_fail_taps <= #TCQ inc_cnt; + rst_dqs_find <= #TCQ 1'b1; + if ((inc_cnt == 'd36) || (inc_cnt == 'd48) || (inc_cnt == 'd60)) begin + dqs_found_prech_req <= #TCQ 1'b1; + fine_adj_state_r <= #TCQ PRECH_WAIT; + end else + fine_adj_state_r <= #TCQ RST_WAIT; + end else if (first_fail_detect && (inc_cnt == 'd63)) begin + if (stable_pass_cnt < 'd30) begin + // Consecutive 30 taps of passing region was not found + // from tap 0 to 63 so decrement back to 31 + first_fail_detect <= #TCQ 1'b1; + first_fail_taps <= #TCQ inc_cnt; + fine_adj_state_r <= #TCQ FINE_DEC; + dec_cnt <= #TCQ 'd32; + end else begin + // Consecutive 30 taps of passing region was found + // between first_fail_taps and 63 + fine_adj_state_r <= #TCQ FINE_DEC; + dec_cnt <= #TCQ ((inc_cnt - first_fail_taps)>>1); + end + end else begin + // Second failing tap detected, decrement to center of + // failing taps + second_fail_detect <= #TCQ 1'b1; + second_fail_taps <= #TCQ inc_cnt; + dec_cnt <= #TCQ ((inc_cnt - first_fail_taps)>>1); + fine_adj_state_r <= #TCQ FINE_DEC; + end + end else if (detect_pi_found_dqs && (&pi_dqs_found_all_bank)) begin + stable_pass_cnt <= #TCQ stable_pass_cnt + 1; + if ((inc_cnt == 'd12) || (inc_cnt == 'd24) || (inc_cnt == 'd36) || + (inc_cnt == 'd48) || (inc_cnt == 'd60)) begin + dqs_found_prech_req <= #TCQ 1'b1; + fine_adj_state_r <= #TCQ PRECH_WAIT; + end else if (inc_cnt < 'd63) begin + rst_dqs_find <= #TCQ 1'b1; + fine_adj_state_r <= #TCQ RST_WAIT; + end else begin + fine_adj_state_r <= #TCQ FINE_DEC; + if (~first_fail_detect || (first_fail_taps > 'd33)) + // No failing taps detected, decrement by 31 + dec_cnt <= #TCQ 'd32; + //else if (first_fail_detect && (stable_pass_cnt > 'd28)) + // // First failing tap detected between 0 and 34 + // // decrement midpoint between 63 and failing tap + // dec_cnt <= #TCQ ((inc_cnt - first_fail_taps)>>1); + else + // First failing tap detected + // decrement to midpoint between 63 and failing tap + dec_cnt <= #TCQ ((inc_cnt - first_fail_taps)>>1); + end + end + end + + PRECH_WAIT: begin + if (prech_done) begin + dqs_found_prech_req <= #TCQ 1'b0; + rst_dqs_find <= #TCQ 1'b1; + fine_adj_state_r <= #TCQ RST_WAIT; + end + end + + + FINE_DEC: begin + fine_adj_state_r <= #TCQ FINE_DEC_WAIT; + ck_po_stg2_f_indec <= #TCQ 1'b0; + ck_po_stg2_f_en <= #TCQ 1'b1; + if ((ctl_lane_cnt == N_CTL_LANES-1) && (init_dec_cnt > 'd0)) + init_dec_cnt <= #TCQ init_dec_cnt - 1; + else if ((ctl_lane_cnt == N_CTL_LANES-1) && (dec_cnt > 'd0)) + dec_cnt <= #TCQ dec_cnt - 1; + end + + FINE_DEC_WAIT: begin + ck_po_stg2_f_indec <= #TCQ 1'b0; + ck_po_stg2_f_en <= #TCQ 1'b0; + if (ctl_lane_cnt != N_CTL_LANES-1) begin + ctl_lane_cnt <= #TCQ ctl_lane_cnt + 1; + fine_adj_state_r <= #TCQ FINE_DEC_PREWAIT; + end else if (ctl_lane_cnt == N_CTL_LANES-1) begin + ctl_lane_cnt <= #TCQ 'd0; + if ((dec_cnt > 'd0) || (init_dec_cnt > 'd0)) + fine_adj_state_r <= #TCQ FINE_DEC_PREWAIT; + else begin + fine_adj_state_r <= #TCQ FINAL_WAIT; + if ((init_dec_cnt == 'd0) && ~init_dec_done) + init_dec_done <= #TCQ 1'b1; + else + final_dec_done <= #TCQ 1'b1; + end + end + end + + FINE_DEC_PREWAIT: begin + fine_adj_state_r <= #TCQ FINE_DEC; + end + + FINAL_WAIT: begin + rst_dqs_find <= #TCQ 1'b1; + fine_adj_state_r <= #TCQ RST_WAIT; + end + + FINE_ADJ_DONE: begin + if (&pi_dqs_found_all_bank) begin + fine_adjust_done_r <= #TCQ 1'b1; + rst_dqs_find <= #TCQ 1'b0; + fine_adj_state_r <= #TCQ FINE_ADJ_DONE; + end + end + + endcase + end + end + + + + +//***************************************************************************** + + + always@(posedge clk) + dqs_found_start_r <= #TCQ pi_dqs_found_start; + + + always @(posedge clk) begin + if (rst) + rnk_cnt_r <= #TCQ 2'b00; + else if (init_dqsfound_done_r) + rnk_cnt_r <= #TCQ rnk_cnt_r; + else if (rank_done_r) + rnk_cnt_r <= #TCQ rnk_cnt_r + 1; + end + + //***************************************************************** + // Read data_offset calibration done signal + //***************************************************************** + + always @(posedge clk) begin + if (rst || (|pi_rst_stg1_cal_r)) + init_dqsfound_done_r <= #TCQ 1'b0; + else if (&pi_dqs_found_all_bank) begin + if (rnk_cnt_r == RANKS-1) + init_dqsfound_done_r <= #TCQ 1'b1; + else + init_dqsfound_done_r <= #TCQ 1'b0; + end + end + + always @(posedge clk) begin + if (rst || + (init_dqsfound_done_r && (rnk_cnt_r == RANKS-1))) + rank_done_r <= #TCQ 1'b0; + else if (&pi_dqs_found_all_bank && ~(&pi_dqs_found_all_bank_r)) + rank_done_r <= #TCQ 1'b1; + else + rank_done_r <= #TCQ 1'b0; + end + + always @(posedge clk) begin + pi_dqs_found_lanes_r1 <= #TCQ pi_dqs_found_lanes; + pi_dqs_found_lanes_r2 <= #TCQ pi_dqs_found_lanes_r1; + pi_dqs_found_lanes_r3 <= #TCQ pi_dqs_found_lanes_r2; + init_dqsfound_done_r1 <= #TCQ init_dqsfound_done_r; + init_dqsfound_done_r2 <= #TCQ init_dqsfound_done_r1; + init_dqsfound_done_r3 <= #TCQ init_dqsfound_done_r2; + init_dqsfound_done_r4 <= #TCQ init_dqsfound_done_r3; + init_dqsfound_done_r5 <= #TCQ init_dqsfound_done_r4; + rank_done_r1 <= #TCQ rank_done_r; + dqsfound_retry_r1 <= #TCQ dqsfound_retry; + end + + + always @(posedge clk) begin + if (rst) + dqs_found_done_r <= #TCQ 1'b0; + else if (&pi_dqs_found_all_bank && (rnk_cnt_r == RANKS-1) && init_dqsfound_done_r1 && + (fine_adj_state_r == FINE_ADJ_DONE)) + dqs_found_done_r <= #TCQ 1'b1; + else + dqs_found_done_r <= #TCQ 1'b0; + end + + + generate + if (HIGHEST_BANK == 3) begin // Three I/O Bank interface + + // Reset read data offset calibration in all DQS Phaser_INs + // in a Bank after the read data offset value for a rank is determined + // or if within a Bank DQSFOUND is not asserted for all DQSs + always @(posedge clk) begin + if (rst || pi_rst_stg1_cal_r1[0] || fine_adjust) + pi_rst_stg1_cal_r[0] <= #TCQ 1'b0; + else if ((pi_dqs_found_start && ~dqs_found_start_r) || + //(dqsfound_retry[0]) || + (pi_dqs_found_any_bank_r[0] && ~pi_dqs_found_all_bank[0]) || + (rd_byte_data_offset[rnk_cnt_r][0+:6] < (nCL + nAL - 1))) + pi_rst_stg1_cal_r[0] <= #TCQ 1'b1; + end + + always @(posedge clk) begin + if (rst || pi_rst_stg1_cal_r1[1] || fine_adjust) + pi_rst_stg1_cal_r[1] <= #TCQ 1'b0; + else if ((pi_dqs_found_start && ~dqs_found_start_r) || + //(dqsfound_retry[1]) || + (pi_dqs_found_any_bank_r[1] && ~pi_dqs_found_all_bank[1]) || + (rd_byte_data_offset[rnk_cnt_r][6+:6] < (nCL + nAL - 1))) + pi_rst_stg1_cal_r[1] <= #TCQ 1'b1; + end + + always @(posedge clk) begin + if (rst || pi_rst_stg1_cal_r1[2] || fine_adjust) + pi_rst_stg1_cal_r[2] <= #TCQ 1'b0; + else if ((pi_dqs_found_start && ~dqs_found_start_r) || + //(dqsfound_retry[2]) || + (pi_dqs_found_any_bank_r[2] && ~pi_dqs_found_all_bank[2]) || + (rd_byte_data_offset[rnk_cnt_r][12+:6] < (nCL + nAL - 1))) + pi_rst_stg1_cal_r[2] <= #TCQ 1'b1; + end + + always @(posedge clk) begin + if (rst || fine_adjust) + pi_rst_stg1_cal_r1[0] <= #TCQ 1'b0; + else if (pi_rst_stg1_cal_r[0]) + pi_rst_stg1_cal_r1[0] <= #TCQ 1'b1; + else if (~pi_dqs_found_any_bank_r[0] && ~pi_dqs_found_all_bank[0]) + pi_rst_stg1_cal_r1[0] <= #TCQ 1'b0; + end + + always @(posedge clk) begin + if (rst || fine_adjust) + pi_rst_stg1_cal_r1[1] <= #TCQ 1'b0; + else if (pi_rst_stg1_cal_r[1]) + pi_rst_stg1_cal_r1[1] <= #TCQ 1'b1; + else if (~pi_dqs_found_any_bank_r[1] && ~pi_dqs_found_all_bank[1]) + pi_rst_stg1_cal_r1[1] <= #TCQ 1'b0; + end + + always @(posedge clk) begin + if (rst || fine_adjust) + pi_rst_stg1_cal_r1[2] <= #TCQ 1'b0; + else if (pi_rst_stg1_cal_r[2]) + pi_rst_stg1_cal_r1[2] <= #TCQ 1'b1; + else if (~pi_dqs_found_any_bank_r[2] && ~pi_dqs_found_all_bank[2]) + pi_rst_stg1_cal_r1[2] <= #TCQ 1'b0; + end + + //***************************************************************************** + // Retry counter to track number of DQSFOUND retries + //***************************************************************************** + + always @(posedge clk) begin + if (rst || rank_done_r) + retry_cnt[0+:10] <= #TCQ 'b0; + else if ((rd_byte_data_offset[rnk_cnt_r][0+:6] < (nCL + nAL - 1)) && + ~pi_dqs_found_all_bank[0]) + retry_cnt[0+:10] <= #TCQ retry_cnt[0+:10] + 1; + else + retry_cnt[0+:10] <= #TCQ retry_cnt[0+:10]; + end + + always @(posedge clk) begin + if (rst || rank_done_r) + retry_cnt[10+:10] <= #TCQ 'b0; + else if ((rd_byte_data_offset[rnk_cnt_r][6+:6] < (nCL + nAL - 1)) && + ~pi_dqs_found_all_bank[1]) + retry_cnt[10+:10] <= #TCQ retry_cnt[10+:10] + 1; + else + retry_cnt[10+:10] <= #TCQ retry_cnt[10+:10]; + end + + always @(posedge clk) begin + if (rst || rank_done_r) + retry_cnt[20+:10] <= #TCQ 'b0; + else if ((rd_byte_data_offset[rnk_cnt_r][12+:6] < (nCL + nAL - 1)) && + ~pi_dqs_found_all_bank[2]) + retry_cnt[20+:10] <= #TCQ retry_cnt[20+:10] + 1; + else + retry_cnt[20+:10] <= #TCQ retry_cnt[20+:10]; + end + + // Error generation in case pi_dqs_found_all_bank + // is not asserted + always @(posedge clk) begin + if (rst) + pi_dqs_found_err_r[0] <= #TCQ 1'b0; + else if (~pi_dqs_found_all_bank[0] && (retry_cnt[0+:10] == NUM_DQSFOUND_CAL) && + (rd_byte_data_offset[rnk_cnt_r][0+:6] < (nCL + nAL - 1))) + pi_dqs_found_err_r[0] <= #TCQ 1'b1; + end + + always @(posedge clk) begin + if (rst) + pi_dqs_found_err_r[1] <= #TCQ 1'b0; + else if (~pi_dqs_found_all_bank[1] && (retry_cnt[10+:10] == NUM_DQSFOUND_CAL) && + (rd_byte_data_offset[rnk_cnt_r][6+:6] < (nCL + nAL - 1))) + pi_dqs_found_err_r[1] <= #TCQ 1'b1; + end + + always @(posedge clk) begin + if (rst) + pi_dqs_found_err_r[2] <= #TCQ 1'b0; + else if (~pi_dqs_found_all_bank[2] && (retry_cnt[20+:10] == NUM_DQSFOUND_CAL) && + (rd_byte_data_offset[rnk_cnt_r][12+:6] < (nCL + nAL - 1))) + pi_dqs_found_err_r[2] <= #TCQ 1'b1; + end + + // Read data offset value for all DQS in a Bank + always @(posedge clk) begin + if (rst) begin + for (q = 0; q < RANKS; q = q + 1) begin: three_bank0_rst_loop + rd_byte_data_offset[q][0+:6] <= #TCQ nCL + nAL + LATENCY_FACTOR; + end + end else if ((rank_done_r1 && ~init_dqsfound_done_r) || + (rd_byte_data_offset[rnk_cnt_r][0+:6] < (nCL + nAL - 1))) + rd_byte_data_offset[rnk_cnt_r][0+:6] <= #TCQ nCL + nAL + LATENCY_FACTOR; + else if (dqs_found_start_r && ~pi_dqs_found_all_bank[0] && + //(rd_byte_data_offset[rnk_cnt_r][0+:6] > (nCL + nAL -1)) && + (detect_pi_found_dqs && (detect_rd_cnt == 'd1)) && ~init_dqsfound_done_r && ~fine_adjust) + rd_byte_data_offset[rnk_cnt_r][0+:6] + <= #TCQ rd_byte_data_offset[rnk_cnt_r][0+:6] - 1; + end + + always @(posedge clk) begin + if (rst) begin + for (r = 0; r < RANKS; r = r + 1) begin: three_bank1_rst_loop + rd_byte_data_offset[r][6+:6] <= #TCQ nCL + nAL + LATENCY_FACTOR; + end + end else if ((rank_done_r1 && ~init_dqsfound_done_r) || + (rd_byte_data_offset[rnk_cnt_r][6+:6] < (nCL + nAL - 1))) + rd_byte_data_offset[rnk_cnt_r][6+:6] <= #TCQ nCL + nAL + LATENCY_FACTOR; + else if (dqs_found_start_r && ~pi_dqs_found_all_bank[1] && + //(rd_byte_data_offset[rnk_cnt_r][6+:6] > (nCL + nAL -1)) && + (detect_pi_found_dqs && (detect_rd_cnt == 'd1)) && ~init_dqsfound_done_r && ~fine_adjust) + rd_byte_data_offset[rnk_cnt_r][6+:6] + <= #TCQ rd_byte_data_offset[rnk_cnt_r][6+:6] - 1; + end + + always @(posedge clk) begin + if (rst) begin + for (s = 0; s < RANKS; s = s + 1) begin: three_bank2_rst_loop + rd_byte_data_offset[s][12+:6] <= #TCQ nCL + nAL + LATENCY_FACTOR; + end + end else if ((rank_done_r1 && ~init_dqsfound_done_r) || + (rd_byte_data_offset[rnk_cnt_r][12+:6] < (nCL + nAL - 1))) + rd_byte_data_offset[rnk_cnt_r][12+:6] <= #TCQ nCL + nAL + LATENCY_FACTOR; + else if (dqs_found_start_r && ~pi_dqs_found_all_bank[2] && + //(rd_byte_data_offset[rnk_cnt_r][12+:6] > (nCL + nAL -1)) && + (detect_pi_found_dqs && (detect_rd_cnt == 'd1)) && ~init_dqsfound_done_r && ~fine_adjust) + rd_byte_data_offset[rnk_cnt_r][12+:6] + <= #TCQ rd_byte_data_offset[rnk_cnt_r][12+:6] - 1; + end + +//***************************************************************************** +// Two I/O Bank Interface +//***************************************************************************** + end else if (HIGHEST_BANK == 2) begin // Two I/O Bank interface + + // Reset read data offset calibration in all DQS Phaser_INs + // in a Bank after the read data offset value for a rank is determined + // or if within a Bank DQSFOUND is not asserted for all DQSs + always @(posedge clk) begin + if (rst || pi_rst_stg1_cal_r1[0] || fine_adjust) + pi_rst_stg1_cal_r[0] <= #TCQ 1'b0; + else if ((pi_dqs_found_start && ~dqs_found_start_r) || + //(dqsfound_retry[0]) || + (pi_dqs_found_any_bank_r[0] && ~pi_dqs_found_all_bank[0]) || + (rd_byte_data_offset[rnk_cnt_r][0+:6] < (nCL + nAL - 1))) + pi_rst_stg1_cal_r[0] <= #TCQ 1'b1; + end + + always @(posedge clk) begin + if (rst || pi_rst_stg1_cal_r1[1] || fine_adjust) + pi_rst_stg1_cal_r[1] <= #TCQ 1'b0; + else if ((pi_dqs_found_start && ~dqs_found_start_r) || + //(dqsfound_retry[1]) || + (pi_dqs_found_any_bank_r[1] && ~pi_dqs_found_all_bank[1]) || + (rd_byte_data_offset[rnk_cnt_r][6+:6] < (nCL + nAL - 1))) + pi_rst_stg1_cal_r[1] <= #TCQ 1'b1; + end + + always @(posedge clk) begin + if (rst || fine_adjust) + pi_rst_stg1_cal_r1[0] <= #TCQ 1'b0; + else if (pi_rst_stg1_cal_r[0]) + pi_rst_stg1_cal_r1[0] <= #TCQ 1'b1; + else if (~pi_dqs_found_any_bank_r[0] && ~pi_dqs_found_all_bank[0]) + pi_rst_stg1_cal_r1[0] <= #TCQ 1'b0; + end + + always @(posedge clk) begin + if (rst || fine_adjust) + pi_rst_stg1_cal_r1[1] <= #TCQ 1'b0; + else if (pi_rst_stg1_cal_r[1]) + pi_rst_stg1_cal_r1[1] <= #TCQ 1'b1; + else if (~pi_dqs_found_any_bank_r[1] && ~pi_dqs_found_all_bank[1]) + pi_rst_stg1_cal_r1[1] <= #TCQ 1'b0; + end + + //***************************************************************************** + // Retry counter to track number of DQSFOUND retries + //***************************************************************************** + + always @(posedge clk) begin + if (rst || rank_done_r) + retry_cnt[0+:10] <= #TCQ 'b0; + else if ((rd_byte_data_offset[rnk_cnt_r][0+:6] < (nCL + nAL - 1)) && + ~pi_dqs_found_all_bank[0]) + retry_cnt[0+:10] <= #TCQ retry_cnt[0+:10] + 1; + else + retry_cnt[0+:10] <= #TCQ retry_cnt[0+:10]; + end + + always @(posedge clk) begin + if (rst || rank_done_r) + retry_cnt[10+:10] <= #TCQ 'b0; + else if ((rd_byte_data_offset[rnk_cnt_r][6+:6] < (nCL + nAL - 1)) && + ~pi_dqs_found_all_bank[1]) + retry_cnt[10+:10] <= #TCQ retry_cnt[10+:10] + 1; + else + retry_cnt[10+:10] <= #TCQ retry_cnt[10+:10]; + end + + // Error generation in case pi_dqs_found_all_bank + // is not asserted + always @(posedge clk) begin + if (rst) + pi_dqs_found_err_r[0] <= #TCQ 1'b0; + else if (~pi_dqs_found_all_bank[0] && (retry_cnt[0+:10] == NUM_DQSFOUND_CAL) && + (rd_byte_data_offset[rnk_cnt_r][0+:6] < (nCL + nAL - 1))) + pi_dqs_found_err_r[0] <= #TCQ 1'b1; + end + + always @(posedge clk) begin + if (rst) + pi_dqs_found_err_r[1] <= #TCQ 1'b0; + else if (~pi_dqs_found_all_bank[1] && (retry_cnt[10+:10] == NUM_DQSFOUND_CAL) && + (rd_byte_data_offset[rnk_cnt_r][6+:6] < (nCL + nAL - 1))) + pi_dqs_found_err_r[1] <= #TCQ 1'b1; + end + + + // Read data offset value for all DQS in a Bank + always @(posedge clk) begin + if (rst) begin + for (q = 0; q < RANKS; q = q + 1) begin: two_bank0_rst_loop + rd_byte_data_offset[q][0+:6] <= #TCQ nCL + nAL + LATENCY_FACTOR; + end + end else if ((rank_done_r1 && ~init_dqsfound_done_r) || + (rd_byte_data_offset[rnk_cnt_r][0+:6] < (nCL + nAL - 1))) + rd_byte_data_offset[rnk_cnt_r][0+:6] <= #TCQ nCL + nAL + LATENCY_FACTOR; + else if (dqs_found_start_r && ~pi_dqs_found_all_bank[0] && + //(rd_byte_data_offset[rnk_cnt_r][0+:6] > (nCL + nAL -1)) && + (detect_pi_found_dqs && (detect_rd_cnt == 'd1)) && ~init_dqsfound_done_r && ~fine_adjust) + rd_byte_data_offset[rnk_cnt_r][0+:6] + <= #TCQ rd_byte_data_offset[rnk_cnt_r][0+:6] - 1; + end + + always @(posedge clk) begin + if (rst) begin + for (r = 0; r < RANKS; r = r + 1) begin: two_bank1_rst_loop + rd_byte_data_offset[r][6+:6] <= #TCQ nCL + nAL + LATENCY_FACTOR; + end + end else if ((rank_done_r1 && ~init_dqsfound_done_r) || + (rd_byte_data_offset[rnk_cnt_r][6+:6] < (nCL + nAL - 1))) + rd_byte_data_offset[rnk_cnt_r][6+:6] <= #TCQ nCL + nAL + LATENCY_FACTOR; + else if (dqs_found_start_r && ~pi_dqs_found_all_bank[1] && + //(rd_byte_data_offset[rnk_cnt_r][6+:6] > (nCL + nAL -1)) && + (detect_pi_found_dqs && (detect_rd_cnt == 'd1)) && ~init_dqsfound_done_r && ~fine_adjust) + rd_byte_data_offset[rnk_cnt_r][6+:6] + <= #TCQ rd_byte_data_offset[rnk_cnt_r][6+:6] - 1; + end +//***************************************************************************** +// One I/O Bank Interface +//***************************************************************************** + end else begin // One I/O Bank Interface + + // Read data offset value for all DQS in Bank0 + always @(posedge clk) begin + if (rst) begin + for (l = 0; l < RANKS; l = l + 1) begin: bank_rst_loop + rd_byte_data_offset[l] <= #TCQ nCL + nAL + LATENCY_FACTOR; + end + end else if ((rank_done_r1 && ~init_dqsfound_done_r) || + (rd_byte_data_offset[rnk_cnt_r] < (nCL + nAL - 1))) + rd_byte_data_offset[rnk_cnt_r] <= #TCQ nCL + nAL + LATENCY_FACTOR; + else if (dqs_found_start_r && ~pi_dqs_found_all_bank[0] && + //(rd_byte_data_offset[rnk_cnt_r] > (nCL + nAL -1)) && + (detect_pi_found_dqs && (detect_rd_cnt == 'd1)) && ~init_dqsfound_done_r && ~fine_adjust) + rd_byte_data_offset[rnk_cnt_r] + <= #TCQ rd_byte_data_offset[rnk_cnt_r] - 1; + end + + // Reset read data offset calibration in all DQS Phaser_INs + // in a Bank after the read data offset value for a rank is determined + // or if within a Bank DQSFOUND is not asserted for all DQSs + always @(posedge clk) begin + if (rst || pi_rst_stg1_cal_r1[0] || fine_adjust) + pi_rst_stg1_cal_r[0] <= #TCQ 1'b0; + else if ((pi_dqs_found_start && ~dqs_found_start_r) || + //(dqsfound_retry[0]) || + (pi_dqs_found_any_bank_r[0] && ~pi_dqs_found_all_bank[0]) || + (rd_byte_data_offset[rnk_cnt_r][0+:6] < (nCL + nAL - 1))) + pi_rst_stg1_cal_r[0] <= #TCQ 1'b1; + end + + always @(posedge clk) begin + if (rst || fine_adjust) + pi_rst_stg1_cal_r1[0] <= #TCQ 1'b0; + else if (pi_rst_stg1_cal_r[0]) + pi_rst_stg1_cal_r1[0] <= #TCQ 1'b1; + else if (~pi_dqs_found_any_bank_r[0] && ~pi_dqs_found_all_bank[0]) + pi_rst_stg1_cal_r1[0] <= #TCQ 1'b0; + end + + //***************************************************************************** + // Retry counter to track number of DQSFOUND retries + //***************************************************************************** + + always @(posedge clk) begin + if (rst || rank_done_r) + retry_cnt[0+:10] <= #TCQ 'b0; + else if ((rd_byte_data_offset[rnk_cnt_r][0+:6] < (nCL + nAL - 1)) && + ~pi_dqs_found_all_bank[0]) + retry_cnt[0+:10] <= #TCQ retry_cnt[0+:10] + 1; + else + retry_cnt[0+:10] <= #TCQ retry_cnt[0+:10]; + end + + // Error generation in case pi_dqs_found_all_bank + // is not asserted even with 3 dqfound retries + always @(posedge clk) begin + if (rst) + pi_dqs_found_err_r[0] <= #TCQ 1'b0; + else if (~pi_dqs_found_all_bank[0] && (retry_cnt[0+:10] == NUM_DQSFOUND_CAL) && + (rd_byte_data_offset[rnk_cnt_r][0+:6] < (nCL + nAL - 1))) + pi_dqs_found_err_r[0] <= #TCQ 1'b1; + end + + end + endgenerate + + always @(posedge clk) begin + if (rst) + pi_rst_stg1_cal <= #TCQ {HIGHEST_BANK{1'b0}}; + else if (rst_dqs_find) + pi_rst_stg1_cal <= #TCQ {HIGHEST_BANK{1'b1}}; + else + pi_rst_stg1_cal <= #TCQ pi_rst_stg1_cal_r; + end + + + + // Final read data offset value to be used during write calibration and + // normal operation + generate + genvar i; + genvar j; + for (i = 0; i < RANKS; i = i + 1) begin: rank_final_loop + reg [5:0] final_do_cand [RANKS-1:0]; + // combinatorially select the candidate offset for the bank + // indexed by final_do_index + if (HIGHEST_BANK == 3) begin + always @(*) begin + case (final_do_index[i]) + 3'b000: final_do_cand[i] = final_data_offset[i][5:0]; + 3'b001: final_do_cand[i] = final_data_offset[i][11:6]; + 3'b010: final_do_cand[i] = final_data_offset[i][17:12]; + default: final_do_cand[i] = 'd0; + endcase + end + end else if (HIGHEST_BANK == 2) begin + always @(*) begin + case (final_do_index[i]) + 3'b000: final_do_cand[i] = final_data_offset[i][5:0]; + 3'b001: final_do_cand[i] = final_data_offset[i][11:6]; + 3'b010: final_do_cand[i] = 'd0; + default: final_do_cand[i] = 'd0; + endcase + end + end else begin + always @(*) begin + case (final_do_index[i]) + 3'b000: final_do_cand[i] = final_data_offset[i][5:0]; + 3'b001: final_do_cand[i] = 'd0; + 3'b010: final_do_cand[i] = 'd0; + default: final_do_cand[i] = 'd0; + endcase + end + end + + always @(posedge clk) begin + if (rst) + final_do_max[i] <= #TCQ 0; + else begin + final_do_max[i] <= #TCQ final_do_max[i]; // default + case (final_do_index[i]) + 3'b000: if ( | DATA_PRESENT[3:0]) + if (final_do_max[i] < final_do_cand[i]) + if (CWL_M % 2) // odd latency CAS slot 1 + final_do_max[i] <= #TCQ final_do_cand[i] - 1; + else + final_do_max[i] <= #TCQ final_do_cand[i]; + 3'b001: if ( | DATA_PRESENT[7:4]) + if (final_do_max[i] < final_do_cand[i]) + if (CWL_M % 2) // odd latency CAS slot 1 + final_do_max[i] <= #TCQ final_do_cand[i] - 1; + else + final_do_max[i] <= #TCQ final_do_cand[i]; + 3'b010: if ( | DATA_PRESENT[11:8]) + if (final_do_max[i] < final_do_cand[i]) + if (CWL_M % 2) // odd latency CAS slot 1 + final_do_max[i] <= #TCQ final_do_cand[i] - 1; + else + final_do_max[i] <= #TCQ final_do_cand[i]; + default: + final_do_max[i] <= #TCQ final_do_max[i]; + endcase + end + end + + always @(posedge clk) + if (rst) begin + final_do_index[i] <= #TCQ 0; + end + else begin + final_do_index[i] <= #TCQ final_do_index[i] + 1; + end + + for (j = 0; j < HIGHEST_BANK; j = j + 1) begin: bank_final_loop + + always @(posedge clk) begin + if (rst) begin + final_data_offset[i][6*j+:6] <= #TCQ 'b0; + end + else begin + //if (dqsfound_retry[j]) + // final_data_offset[i][6*j+:6] <= #TCQ rd_byte_data_offset[i][6*j+:6]; + //else + if (init_dqsfound_done_r && ~init_dqsfound_done_r1) begin + if ( DATA_PRESENT [ j*4+:4] != 0) begin // has a data lane + final_data_offset[i][6*j+:6] <= #TCQ rd_byte_data_offset[i][6*j+:6]; + if (CWL_M % 2) // odd latency CAS slot 1 + final_data_offset_mc[i][6*j+:6] <= #TCQ rd_byte_data_offset[i][6*j+:6] - 1; + else // even latency CAS slot 0 + final_data_offset_mc[i][6*j+:6] <= #TCQ rd_byte_data_offset[i][6*j+:6]; + end + end + else if (init_dqsfound_done_r5 ) begin + if ( DATA_PRESENT [ j*4+:4] == 0) begin // all control lanes + final_data_offset[i][6*j+:6] <= #TCQ final_do_max[i]; + final_data_offset_mc[i][6*j+:6] <= #TCQ final_do_max[i]; + end + end + end + end + end + end + endgenerate + + + // Error generation in case pi_found_dqs signal from Phaser_IN + // is not asserted when a common rddata_offset value is used + + always @(posedge clk) begin + pi_dqs_found_err <= #TCQ |pi_dqs_found_err_r; + end + + + +endmodule + + + + + + diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_dqs_found_cal_hr.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_dqs_found_cal_hr.v new file mode 100644 index 0000000..fff16b6 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_dqs_found_cal_hr.v @@ -0,0 +1,1199 @@ +//***************************************************************************** +// (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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version: +// \ \ Application: MIG +// / / Filename: ddr_phy_dqs_found_cal.v +// /___/ /\ Date Last Modified: $Date: 2011/06/02 08:35:08 $ +// \ \ / \ Date Created: +// \___\/\___\ +// +//Device: 7 Series +//Design Name: DDR3 SDRAM +//Purpose: +// Read leveling calibration logic +// NOTES: +// 1. Phaser_In DQSFOUND calibration +//Reference: +//Revision History: +//***************************************************************************** + +/****************************************************************************** +**$Id: ddr_phy_dqs_found_cal.v,v 1.1 2011/06/02 08:35:08 mishra Exp $ +**$Date: 2011/06/02 08:35:08 $ +**$Author: +**$Revision: +**$Source: +******************************************************************************/ + +`timescale 1ps/1ps + +module mig_7series_v4_0_ddr_phy_dqs_found_cal_hr # + ( + parameter TCQ = 100, // clk->out delay (sim only) + parameter nCK_PER_CLK = 2, // # of memory clocks per CLK + parameter nCL = 5, // Read CAS latency + parameter AL = "0", + parameter nCWL = 5, // Write CAS latency + parameter DRAM_TYPE = "DDR3", // Memory I/F type: "DDR3", "DDR2" + parameter RANKS = 1, // # of memory ranks in the system + parameter DQS_CNT_WIDTH = 3, // = ceil(log2(DQS_WIDTH)) + parameter DQS_WIDTH = 8, // # of DQS (strobe) + parameter DRAM_WIDTH = 8, // # of DQ per DQS + parameter REG_CTRL = "ON", // "ON" for registered DIMM + parameter SIM_CAL_OPTION = "NONE", // Performs all calibration steps + parameter NUM_DQSFOUND_CAL = 3, // Number of times to iterate + parameter N_CTL_LANES = 3, // Number of control byte lanes + parameter HIGHEST_LANE = 12, // Sum of byte lanes (Data + Ctrl) + parameter HIGHEST_BANK = 3, // Sum of I/O Banks + parameter BYTE_LANES_B0 = 4'b1111, + parameter BYTE_LANES_B1 = 4'b0000, + parameter BYTE_LANES_B2 = 4'b0000, + parameter BYTE_LANES_B3 = 4'b0000, + parameter BYTE_LANES_B4 = 4'b0000, + parameter DATA_CTL_B0 = 4'hc, + parameter DATA_CTL_B1 = 4'hf, + parameter DATA_CTL_B2 = 4'hf, + parameter DATA_CTL_B3 = 4'hf, + parameter DATA_CTL_B4 = 4'hf + ) + ( + input clk, + input rst, + input dqsfound_retry, + // From phy_init + input pi_dqs_found_start, + input detect_pi_found_dqs, + input prech_done, + // DQSFOUND per Phaser_IN + input [HIGHEST_LANE-1:0] pi_dqs_found_lanes, + + output reg [HIGHEST_BANK-1:0] pi_rst_stg1_cal, + + // To phy_init + output [5:0] rd_data_offset_0, + output [5:0] rd_data_offset_1, + output [5:0] rd_data_offset_2, + output pi_dqs_found_rank_done, + output pi_dqs_found_done, + output reg pi_dqs_found_err, + output [6*RANKS-1:0] rd_data_offset_ranks_0, + output [6*RANKS-1:0] rd_data_offset_ranks_1, + output [6*RANKS-1:0] rd_data_offset_ranks_2, + output reg dqsfound_retry_done, + output reg dqs_found_prech_req, + //To MC + output [6*RANKS-1:0] rd_data_offset_ranks_mc_0, + output [6*RANKS-1:0] rd_data_offset_ranks_mc_1, + output [6*RANKS-1:0] rd_data_offset_ranks_mc_2, + + input [8:0] po_counter_read_val, + output rd_data_offset_cal_done, + output fine_adjust_done, + output [N_CTL_LANES-1:0] fine_adjust_lane_cnt, + output reg ck_po_stg2_f_indec, + output reg ck_po_stg2_f_en, + output [255:0] dbg_dqs_found_cal + ); + + + // For non-zero AL values + localparam nAL = (AL == "CL-1") ? nCL - 1 : 0; + + // Adding the register dimm latency to write latency + localparam CWL_M = (REG_CTRL == "ON") ? nCWL + nAL + 1 : nCWL + nAL; + + // Added to reduce simulation time + localparam LATENCY_FACTOR = 13; + + localparam NUM_READS = (SIM_CAL_OPTION == "NONE") ? 7 : 1; + + localparam [19:0] DATA_PRESENT = {(DATA_CTL_B4[3] & BYTE_LANES_B4[3]), + (DATA_CTL_B4[2] & BYTE_LANES_B4[2]), + (DATA_CTL_B4[1] & BYTE_LANES_B4[1]), + (DATA_CTL_B4[0] & BYTE_LANES_B4[0]), + (DATA_CTL_B3[3] & BYTE_LANES_B3[3]), + (DATA_CTL_B3[2] & BYTE_LANES_B3[2]), + (DATA_CTL_B3[1] & BYTE_LANES_B3[1]), + (DATA_CTL_B3[0] & BYTE_LANES_B3[0]), + (DATA_CTL_B2[3] & BYTE_LANES_B2[3]), + (DATA_CTL_B2[2] & BYTE_LANES_B2[2]), + (DATA_CTL_B2[1] & BYTE_LANES_B2[1]), + (DATA_CTL_B2[0] & BYTE_LANES_B2[0]), + (DATA_CTL_B1[3] & BYTE_LANES_B1[3]), + (DATA_CTL_B1[2] & BYTE_LANES_B1[2]), + (DATA_CTL_B1[1] & BYTE_LANES_B1[1]), + (DATA_CTL_B1[0] & BYTE_LANES_B1[0]), + (DATA_CTL_B0[3] & BYTE_LANES_B0[3]), + (DATA_CTL_B0[2] & BYTE_LANES_B0[2]), + (DATA_CTL_B0[1] & BYTE_LANES_B0[1]), + (DATA_CTL_B0[0] & BYTE_LANES_B0[0])}; + + localparam FINE_ADJ_IDLE = 4'h0; + localparam RST_POSTWAIT = 4'h1; + localparam RST_POSTWAIT1 = 4'h2; + localparam RST_WAIT = 4'h3; + localparam FINE_ADJ_INIT = 4'h4; + localparam FINE_INC = 4'h5; + localparam FINE_INC_WAIT = 4'h6; + localparam FINE_INC_PREWAIT = 4'h7; + localparam DETECT_PREWAIT = 4'h8; + localparam DETECT_DQSFOUND = 4'h9; + localparam PRECH_WAIT = 4'hA; + localparam FINE_DEC = 4'hB; + localparam FINE_DEC_WAIT = 4'hC; + localparam FINE_DEC_PREWAIT = 4'hD; + localparam FINAL_WAIT = 4'hE; + localparam FINE_ADJ_DONE = 4'hF; + + + integer k,l,m,n,p,q,r,s; + + reg dqs_found_start_r; + reg [6*HIGHEST_BANK-1:0] rd_byte_data_offset[0:RANKS-1]; + reg rank_done_r; + reg rank_done_r1; + reg dqs_found_done_r; + (* ASYNC_REG = "TRUE" *) reg [HIGHEST_LANE-1:0] pi_dqs_found_lanes_r1; + (* ASYNC_REG = "TRUE" *) reg [HIGHEST_LANE-1:0] pi_dqs_found_lanes_r2; + (* ASYNC_REG = "TRUE" *) reg [HIGHEST_LANE-1:0] pi_dqs_found_lanes_r3; + reg init_dqsfound_done_r; + reg init_dqsfound_done_r1; + reg init_dqsfound_done_r2; + reg init_dqsfound_done_r3; + reg init_dqsfound_done_r4; + reg init_dqsfound_done_r5; + reg [1:0] rnk_cnt_r; + reg [2:0 ] final_do_index[0:RANKS-1]; + reg [5:0 ] final_do_max[0:RANKS-1]; + reg [6*HIGHEST_BANK-1:0] final_data_offset[0:RANKS-1]; + reg [6*HIGHEST_BANK-1:0] final_data_offset_mc[0:RANKS-1]; + reg [HIGHEST_BANK-1:0] pi_rst_stg1_cal_r; + reg [HIGHEST_BANK-1:0] pi_rst_stg1_cal_r1; + reg [10*HIGHEST_BANK-1:0] retry_cnt; + reg dqsfound_retry_r1; + wire [4*HIGHEST_BANK-1:0] pi_dqs_found_lanes_int; + reg [HIGHEST_BANK-1:0] pi_dqs_found_all_bank; + reg [HIGHEST_BANK-1:0] pi_dqs_found_all_bank_r; + reg [HIGHEST_BANK-1:0] pi_dqs_found_any_bank; + reg [HIGHEST_BANK-1:0] pi_dqs_found_any_bank_r; + reg [HIGHEST_BANK-1:0] pi_dqs_found_err_r; + + // CK/Control byte lanes fine adjust stage + reg fine_adjust; + reg [N_CTL_LANES-1:0] ctl_lane_cnt; + reg [3:0] fine_adj_state_r; + reg fine_adjust_done_r; + reg rst_dqs_find; + reg rst_dqs_find_r1; + reg rst_dqs_find_r2; + reg [5:0] init_dec_cnt; + reg [5:0] dec_cnt; + reg [5:0] inc_cnt; + reg final_dec_done; + reg init_dec_done; + reg first_fail_detect; + reg second_fail_detect; + reg [5:0] first_fail_taps; + reg [5:0] second_fail_taps; + reg [5:0] stable_pass_cnt; + reg [3:0] detect_rd_cnt; + + + + + //*************************************************************************** + // Debug signals + // + //*************************************************************************** + assign dbg_dqs_found_cal[5:0] = first_fail_taps; + assign dbg_dqs_found_cal[11:6] = second_fail_taps; + assign dbg_dqs_found_cal[12] = first_fail_detect; + assign dbg_dqs_found_cal[13] = second_fail_detect; + assign dbg_dqs_found_cal[14] = fine_adjust_done_r; + + + assign pi_dqs_found_rank_done = rank_done_r; + assign pi_dqs_found_done = dqs_found_done_r; + + generate + genvar rnk_cnt; + if (HIGHEST_BANK == 3) begin // Three Bank Interface + for (rnk_cnt = 0; rnk_cnt < RANKS; rnk_cnt = rnk_cnt + 1) begin: rnk_loop + assign rd_data_offset_ranks_0[6*rnk_cnt+:6] = final_data_offset[rnk_cnt][5:0]; + assign rd_data_offset_ranks_1[6*rnk_cnt+:6] = final_data_offset[rnk_cnt][11:6]; + assign rd_data_offset_ranks_2[6*rnk_cnt+:6] = final_data_offset[rnk_cnt][17:12]; + assign rd_data_offset_ranks_mc_0[6*rnk_cnt+:6] = final_data_offset_mc[rnk_cnt][5:0]; + assign rd_data_offset_ranks_mc_1[6*rnk_cnt+:6] = final_data_offset_mc[rnk_cnt][11:6]; + assign rd_data_offset_ranks_mc_2[6*rnk_cnt+:6] = final_data_offset_mc[rnk_cnt][17:12]; + end + end else if (HIGHEST_BANK == 2) begin // Two Bank Interface + for (rnk_cnt = 0; rnk_cnt < RANKS; rnk_cnt = rnk_cnt + 1) begin: rnk_loop + assign rd_data_offset_ranks_0[6*rnk_cnt+:6] = final_data_offset[rnk_cnt][5:0]; + assign rd_data_offset_ranks_1[6*rnk_cnt+:6] = final_data_offset[rnk_cnt][11:6]; + assign rd_data_offset_ranks_2[6*rnk_cnt+:6] = 'd0; + assign rd_data_offset_ranks_mc_0[6*rnk_cnt+:6] = final_data_offset_mc[rnk_cnt][5:0]; + assign rd_data_offset_ranks_mc_1[6*rnk_cnt+:6] = final_data_offset_mc[rnk_cnt][11:6]; + assign rd_data_offset_ranks_mc_2[6*rnk_cnt+:6] = 'd0; + end + end else begin // Single Bank Interface + for (rnk_cnt = 0; rnk_cnt < RANKS; rnk_cnt = rnk_cnt + 1) begin: rnk_loop + assign rd_data_offset_ranks_0[6*rnk_cnt+:6] = final_data_offset[rnk_cnt][5:0]; + assign rd_data_offset_ranks_1[6*rnk_cnt+:6] = 'd0; + assign rd_data_offset_ranks_2[6*rnk_cnt+:6] = 'd0; + assign rd_data_offset_ranks_mc_0[6*rnk_cnt+:6] = final_data_offset_mc[rnk_cnt][5:0]; + assign rd_data_offset_ranks_mc_1[6*rnk_cnt+:6] = 'd0; + assign rd_data_offset_ranks_mc_2[6*rnk_cnt+:6] = 'd0; + end + end + endgenerate + + // final_data_offset is used during write calibration and during + // normal operation. One rd_data_offset value per rank for entire + // interface + generate + if (HIGHEST_BANK == 3) begin // Three I/O Bank interface + assign rd_data_offset_0 = (~init_dqsfound_done_r2) ? rd_byte_data_offset[rnk_cnt_r][0+:6] : + final_data_offset[rnk_cnt_r][0+:6]; + assign rd_data_offset_1 = (~init_dqsfound_done_r2) ? rd_byte_data_offset[rnk_cnt_r][6+:6] : + final_data_offset[rnk_cnt_r][6+:6]; + assign rd_data_offset_2 = (~init_dqsfound_done_r2) ? rd_byte_data_offset[rnk_cnt_r][12+:6] : + final_data_offset[rnk_cnt_r][12+:6]; + end else if (HIGHEST_BANK == 2) begin // Two I/O Bank interface + assign rd_data_offset_0 = (~init_dqsfound_done_r2) ? rd_byte_data_offset[rnk_cnt_r][0+:6] : + final_data_offset[rnk_cnt_r][0+:6]; + assign rd_data_offset_1 = (~init_dqsfound_done_r2) ? rd_byte_data_offset[rnk_cnt_r][6+:6] : + final_data_offset[rnk_cnt_r][6+:6]; + assign rd_data_offset_2 = 'd0; + end else begin + assign rd_data_offset_0 = (~init_dqsfound_done_r2) ? rd_byte_data_offset[rnk_cnt_r][0+:6] : + final_data_offset[rnk_cnt_r][0+:6]; + assign rd_data_offset_1 = 'd0; + assign rd_data_offset_2 = 'd0; + end + endgenerate + + assign rd_data_offset_cal_done = init_dqsfound_done_r; + assign fine_adjust_lane_cnt = ctl_lane_cnt; + + //************************************************************************** + // DQSFOUND all and any generation + // pi_dqs_found_all_bank[x] asserted when all Phaser_INs in Bankx are + // asserted + // pi_dqs_found_any_bank[x] asserted when at least one Phaser_IN in Bankx + // is asserted + //************************************************************************** + + generate + if ((HIGHEST_LANE == 4) || (HIGHEST_LANE == 8) || (HIGHEST_LANE == 12)) + assign pi_dqs_found_lanes_int = pi_dqs_found_lanes_r3; + else if ((HIGHEST_LANE == 3) || (HIGHEST_LANE == 7) || (HIGHEST_LANE == 11)) + assign pi_dqs_found_lanes_int = {1'b0, pi_dqs_found_lanes_r3}; + else if ((HIGHEST_LANE == 6) || (HIGHEST_LANE == 10)) + assign pi_dqs_found_lanes_int = {2'b00, pi_dqs_found_lanes_r3}; + else if ((HIGHEST_LANE == 5) || (HIGHEST_LANE == 9)) + assign pi_dqs_found_lanes_int = {3'b000, pi_dqs_found_lanes_r3}; + endgenerate + + always @(posedge clk) begin + if (rst) begin + for (k = 0; k < HIGHEST_BANK; k = k + 1) begin: rst_pi_dqs_found + pi_dqs_found_all_bank[k] <= #TCQ 'b0; + pi_dqs_found_any_bank[k] <= #TCQ 'b0; + end + end else if (pi_dqs_found_start) begin + for (p = 0; p < HIGHEST_BANK; p = p +1) begin: assign_pi_dqs_found + pi_dqs_found_all_bank[p] <= #TCQ (!DATA_PRESENT[4*p+0] | pi_dqs_found_lanes_int[4*p+0]) & + (!DATA_PRESENT[4*p+1] | pi_dqs_found_lanes_int[4*p+1]) & + (!DATA_PRESENT[4*p+2] | pi_dqs_found_lanes_int[4*p+2]) & + (!DATA_PRESENT[4*p+3] | pi_dqs_found_lanes_int[4*p+3]); + pi_dqs_found_any_bank[p] <= #TCQ (DATA_PRESENT[4*p+0] & pi_dqs_found_lanes_int[4*p+0]) | + (DATA_PRESENT[4*p+1] & pi_dqs_found_lanes_int[4*p+1]) | + (DATA_PRESENT[4*p+2] & pi_dqs_found_lanes_int[4*p+2]) | + (DATA_PRESENT[4*p+3] & pi_dqs_found_lanes_int[4*p+3]); + end + end + end + + + always @(posedge clk) begin + pi_dqs_found_all_bank_r <= #TCQ pi_dqs_found_all_bank; + pi_dqs_found_any_bank_r <= #TCQ pi_dqs_found_any_bank; + end + +//***************************************************************************** +// Counter to increase number of 4 back-to-back reads per rd_data_offset and +// per CK/A/C tap value +//***************************************************************************** + + always @(posedge clk) begin + if (rst || (detect_rd_cnt == 'd0)) + detect_rd_cnt <= #TCQ NUM_READS; + else if (detect_pi_found_dqs && (detect_rd_cnt > 'd0)) + detect_rd_cnt <= #TCQ detect_rd_cnt - 1; + end + + //************************************************************************** + // Adjust Phaser_Out stage 2 taps on CK/Address/Command/Controls + // + //************************************************************************** + + assign fine_adjust_done = fine_adjust_done_r; + + always @(posedge clk) begin + rst_dqs_find_r1 <= #TCQ rst_dqs_find; + rst_dqs_find_r2 <= #TCQ rst_dqs_find_r1; + end + + always @(posedge clk) begin + if(rst)begin + fine_adjust <= #TCQ 1'b0; + ctl_lane_cnt <= #TCQ 'd0; + fine_adj_state_r <= #TCQ FINE_ADJ_IDLE; + fine_adjust_done_r <= #TCQ 1'b0; + ck_po_stg2_f_indec <= #TCQ 1'b0; + ck_po_stg2_f_en <= #TCQ 1'b0; + rst_dqs_find <= #TCQ 1'b0; + init_dec_cnt <= #TCQ 'd31; + dec_cnt <= #TCQ 'd0; + inc_cnt <= #TCQ 'd0; + init_dec_done <= #TCQ 1'b0; + final_dec_done <= #TCQ 1'b0; + first_fail_detect <= #TCQ 1'b0; + second_fail_detect <= #TCQ 1'b0; + first_fail_taps <= #TCQ 'd0; + second_fail_taps <= #TCQ 'd0; + stable_pass_cnt <= #TCQ 'd0; + dqs_found_prech_req<= #TCQ 1'b0; + end else begin + case (fine_adj_state_r) + + FINE_ADJ_IDLE: begin + if (init_dqsfound_done_r5) begin + if (SIM_CAL_OPTION == "FAST_CAL") begin + fine_adjust <= #TCQ 1'b1; + fine_adj_state_r <= #TCQ FINE_ADJ_DONE; + rst_dqs_find <= #TCQ 1'b0; + end else begin + fine_adjust <= #TCQ 1'b1; + fine_adj_state_r <= #TCQ RST_WAIT; + rst_dqs_find <= #TCQ 1'b1; + end + end + end + + RST_WAIT: begin + if (~(|pi_dqs_found_any_bank) && rst_dqs_find_r2) begin + rst_dqs_find <= #TCQ 1'b0; + if (|init_dec_cnt) + fine_adj_state_r <= #TCQ FINE_DEC_PREWAIT; + else if (final_dec_done) + fine_adj_state_r <= #TCQ FINE_ADJ_DONE; + else + fine_adj_state_r <= #TCQ RST_POSTWAIT; + end + end + + RST_POSTWAIT: begin + fine_adj_state_r <= #TCQ RST_POSTWAIT1; + end + + RST_POSTWAIT1: begin + fine_adj_state_r <= #TCQ FINE_ADJ_INIT; + end + + FINE_ADJ_INIT: begin + //if (detect_pi_found_dqs && (inc_cnt < 'd63)) + fine_adj_state_r <= #TCQ FINE_INC; + end + + FINE_INC: begin + fine_adj_state_r <= #TCQ FINE_INC_WAIT; + ck_po_stg2_f_indec <= #TCQ 1'b1; + ck_po_stg2_f_en <= #TCQ 1'b1; + if (ctl_lane_cnt == N_CTL_LANES-1) + inc_cnt <= #TCQ inc_cnt + 1; + end + + FINE_INC_WAIT: begin + ck_po_stg2_f_indec <= #TCQ 1'b0; + ck_po_stg2_f_en <= #TCQ 1'b0; + if (ctl_lane_cnt != N_CTL_LANES-1) begin + ctl_lane_cnt <= #TCQ ctl_lane_cnt + 1; + fine_adj_state_r <= #TCQ FINE_INC_PREWAIT; + end else if (ctl_lane_cnt == N_CTL_LANES-1) begin + ctl_lane_cnt <= #TCQ 'd0; + fine_adj_state_r <= #TCQ DETECT_PREWAIT; + end + end + + FINE_INC_PREWAIT: begin + fine_adj_state_r <= #TCQ FINE_INC; + end + + DETECT_PREWAIT: begin + if (detect_pi_found_dqs && (detect_rd_cnt == 'd1)) + fine_adj_state_r <= #TCQ DETECT_DQSFOUND; + else + fine_adj_state_r <= #TCQ DETECT_PREWAIT; + end + + DETECT_DQSFOUND: begin + if (detect_pi_found_dqs && ~(&pi_dqs_found_all_bank)) begin + stable_pass_cnt <= #TCQ 'd0; + if (~first_fail_detect && (inc_cnt == 'd63)) begin + // First failing tap detected at 63 taps + // then decrement to 31 + first_fail_detect <= #TCQ 1'b1; + first_fail_taps <= #TCQ inc_cnt; + fine_adj_state_r <= #TCQ FINE_DEC; + dec_cnt <= #TCQ 'd32; + end else if (~first_fail_detect && (inc_cnt > 'd30) && (stable_pass_cnt > 'd29)) begin + // First failing tap detected at greater than 30 taps + // then stop looking for second edge and decrement + first_fail_detect <= #TCQ 1'b1; + first_fail_taps <= #TCQ inc_cnt; + fine_adj_state_r <= #TCQ FINE_DEC; + dec_cnt <= #TCQ (inc_cnt>>1) + 1; + end else if (~first_fail_detect || (first_fail_detect && (stable_pass_cnt < 'd30) && (inc_cnt <= 'd32))) begin + // First failing tap detected, continue incrementing + // until either second failing tap detected or 63 + first_fail_detect <= #TCQ 1'b1; + first_fail_taps <= #TCQ inc_cnt; + rst_dqs_find <= #TCQ 1'b1; + if ((inc_cnt == 'd12) || (inc_cnt == 'd24)) begin + dqs_found_prech_req <= #TCQ 1'b1; + fine_adj_state_r <= #TCQ PRECH_WAIT; + end else + fine_adj_state_r <= #TCQ RST_WAIT; + end else if (first_fail_detect && (inc_cnt > 'd32) && (inc_cnt < 'd63) && (stable_pass_cnt < 'd30)) begin + // Consecutive 30 taps of passing region was not found + // continue incrementing + first_fail_detect <= #TCQ 1'b1; + first_fail_taps <= #TCQ inc_cnt; + rst_dqs_find <= #TCQ 1'b1; + if ((inc_cnt == 'd36) || (inc_cnt == 'd48) || (inc_cnt == 'd60)) begin + dqs_found_prech_req <= #TCQ 1'b1; + fine_adj_state_r <= #TCQ PRECH_WAIT; + end else + fine_adj_state_r <= #TCQ RST_WAIT; + end else if (first_fail_detect && (inc_cnt == 'd63)) begin + if (stable_pass_cnt < 'd30) begin + // Consecutive 30 taps of passing region was not found + // from tap 0 to 63 so decrement back to 31 + first_fail_detect <= #TCQ 1'b1; + first_fail_taps <= #TCQ inc_cnt; + fine_adj_state_r <= #TCQ FINE_DEC; + dec_cnt <= #TCQ 'd32; + end else begin + // Consecutive 30 taps of passing region was found + // between first_fail_taps and 63 + fine_adj_state_r <= #TCQ FINE_DEC; + dec_cnt <= #TCQ ((inc_cnt - first_fail_taps)>>1); + end + end else begin + // Second failing tap detected, decrement to center of + // failing taps + second_fail_detect <= #TCQ 1'b1; + second_fail_taps <= #TCQ inc_cnt; + dec_cnt <= #TCQ ((inc_cnt - first_fail_taps)>>1); + fine_adj_state_r <= #TCQ FINE_DEC; + end + end else if (detect_pi_found_dqs && (&pi_dqs_found_all_bank)) begin + stable_pass_cnt <= #TCQ stable_pass_cnt + 1; + if ((inc_cnt == 'd12) || (inc_cnt == 'd24) || (inc_cnt == 'd36) || + (inc_cnt == 'd48) || (inc_cnt == 'd60)) begin + dqs_found_prech_req <= #TCQ 1'b1; + fine_adj_state_r <= #TCQ PRECH_WAIT; + end else if (inc_cnt < 'd63) begin + rst_dqs_find <= #TCQ 1'b1; + fine_adj_state_r <= #TCQ RST_WAIT; + end else begin + fine_adj_state_r <= #TCQ FINE_DEC; + if (~first_fail_detect || (first_fail_taps > 'd33)) + // No failing taps detected, decrement by 31 + dec_cnt <= #TCQ 'd32; + //else if (first_fail_detect && (stable_pass_cnt > 'd28)) + // // First failing tap detected between 0 and 34 + // // decrement midpoint between 63 and failing tap + // dec_cnt <= #TCQ ((inc_cnt - first_fail_taps)>>1); + else + // First failing tap detected + // decrement to midpoint between 63 and failing tap + dec_cnt <= #TCQ ((inc_cnt - first_fail_taps)>>1); + end + end + end + + PRECH_WAIT: begin + if (prech_done) begin + dqs_found_prech_req <= #TCQ 1'b0; + rst_dqs_find <= #TCQ 1'b1; + fine_adj_state_r <= #TCQ RST_WAIT; + end + end + + + FINE_DEC: begin + fine_adj_state_r <= #TCQ FINE_DEC_WAIT; + ck_po_stg2_f_indec <= #TCQ 1'b0; + ck_po_stg2_f_en <= #TCQ 1'b1; + if ((ctl_lane_cnt == N_CTL_LANES-1) && (init_dec_cnt > 'd0)) + init_dec_cnt <= #TCQ init_dec_cnt - 1; + else if ((ctl_lane_cnt == N_CTL_LANES-1) && (dec_cnt > 'd0)) + dec_cnt <= #TCQ dec_cnt - 1; + end + + FINE_DEC_WAIT: begin + ck_po_stg2_f_indec <= #TCQ 1'b0; + ck_po_stg2_f_en <= #TCQ 1'b0; + if (ctl_lane_cnt != N_CTL_LANES-1) begin + ctl_lane_cnt <= #TCQ ctl_lane_cnt + 1; + fine_adj_state_r <= #TCQ FINE_DEC_PREWAIT; + end else if (ctl_lane_cnt == N_CTL_LANES-1) begin + ctl_lane_cnt <= #TCQ 'd0; + if ((dec_cnt > 'd0) || (init_dec_cnt > 'd0)) + fine_adj_state_r <= #TCQ FINE_DEC_PREWAIT; + else begin + fine_adj_state_r <= #TCQ FINAL_WAIT; + if ((init_dec_cnt == 'd0) && ~init_dec_done) + init_dec_done <= #TCQ 1'b1; + else + final_dec_done <= #TCQ 1'b1; + end + end + end + + FINE_DEC_PREWAIT: begin + fine_adj_state_r <= #TCQ FINE_DEC; + end + + FINAL_WAIT: begin + rst_dqs_find <= #TCQ 1'b1; + fine_adj_state_r <= #TCQ RST_WAIT; + end + + FINE_ADJ_DONE: begin + if (&pi_dqs_found_all_bank) begin + fine_adjust_done_r <= #TCQ 1'b1; + rst_dqs_find <= #TCQ 1'b0; + fine_adj_state_r <= #TCQ FINE_ADJ_DONE; + end + end + + endcase + end + end + + + + +//***************************************************************************** + + + always@(posedge clk) + dqs_found_start_r <= #TCQ pi_dqs_found_start; + + + always @(posedge clk) begin + if (rst) + rnk_cnt_r <= #TCQ 2'b00; + else if (init_dqsfound_done_r) + rnk_cnt_r <= #TCQ rnk_cnt_r; + else if (rank_done_r) + rnk_cnt_r <= #TCQ rnk_cnt_r + 1; + end + + //***************************************************************** + // Read data_offset calibration done signal + //***************************************************************** + + always @(posedge clk) begin + if (rst || (|pi_rst_stg1_cal_r)) + init_dqsfound_done_r <= #TCQ 1'b0; + else if (&pi_dqs_found_all_bank) begin + if (rnk_cnt_r == RANKS-1) + init_dqsfound_done_r <= #TCQ 1'b1; + else + init_dqsfound_done_r <= #TCQ 1'b0; + end + end + + always @(posedge clk) begin + if (rst || + (init_dqsfound_done_r && (rnk_cnt_r == RANKS-1))) + rank_done_r <= #TCQ 1'b0; + else if (&pi_dqs_found_all_bank && ~(&pi_dqs_found_all_bank_r)) + rank_done_r <= #TCQ 1'b1; + else + rank_done_r <= #TCQ 1'b0; + end + + always @(posedge clk) begin + pi_dqs_found_lanes_r1 <= #TCQ pi_dqs_found_lanes; + pi_dqs_found_lanes_r2 <= #TCQ pi_dqs_found_lanes_r1; + pi_dqs_found_lanes_r3 <= #TCQ pi_dqs_found_lanes_r2; + init_dqsfound_done_r1 <= #TCQ init_dqsfound_done_r; + init_dqsfound_done_r2 <= #TCQ init_dqsfound_done_r1; + init_dqsfound_done_r3 <= #TCQ init_dqsfound_done_r2; + init_dqsfound_done_r4 <= #TCQ init_dqsfound_done_r3; + init_dqsfound_done_r5 <= #TCQ init_dqsfound_done_r4; + rank_done_r1 <= #TCQ rank_done_r; + dqsfound_retry_r1 <= #TCQ dqsfound_retry; + end + + + always @(posedge clk) begin + if (rst) + dqs_found_done_r <= #TCQ 1'b0; + else if (&pi_dqs_found_all_bank && (rnk_cnt_r == RANKS-1) && init_dqsfound_done_r1 && + (fine_adj_state_r == FINE_ADJ_DONE)) + dqs_found_done_r <= #TCQ 1'b1; + else + dqs_found_done_r <= #TCQ 1'b0; + end + + + generate + if (HIGHEST_BANK == 3) begin // Three I/O Bank interface + + // Reset read data offset calibration in all DQS Phaser_INs + // in a Bank after the read data offset value for a rank is determined + // or if within a Bank DQSFOUND is not asserted for all DQSs + always @(posedge clk) begin + if (rst || pi_rst_stg1_cal_r1[0] || fine_adjust) + pi_rst_stg1_cal_r[0] <= #TCQ 1'b0; + else if ((pi_dqs_found_start && ~dqs_found_start_r) || + //(dqsfound_retry[0]) || + (pi_dqs_found_any_bank_r[0] && ~pi_dqs_found_all_bank[0]) || + (rd_byte_data_offset[rnk_cnt_r][0+:6] > (nCL + nAL + LATENCY_FACTOR - 1))) + pi_rst_stg1_cal_r[0] <= #TCQ 1'b1; + end + + always @(posedge clk) begin + if (rst || pi_rst_stg1_cal_r1[1] || fine_adjust) + pi_rst_stg1_cal_r[1] <= #TCQ 1'b0; + else if ((pi_dqs_found_start && ~dqs_found_start_r) || + //(dqsfound_retry[1]) || + (pi_dqs_found_any_bank_r[1] && ~pi_dqs_found_all_bank[1]) || + (rd_byte_data_offset[rnk_cnt_r][6+:6] > (nCL + nAL + LATENCY_FACTOR - 1))) + pi_rst_stg1_cal_r[1] <= #TCQ 1'b1; + end + + always @(posedge clk) begin + if (rst || pi_rst_stg1_cal_r1[2] || fine_adjust) + pi_rst_stg1_cal_r[2] <= #TCQ 1'b0; + else if ((pi_dqs_found_start && ~dqs_found_start_r) || + //(dqsfound_retry[2]) || + (pi_dqs_found_any_bank_r[2] && ~pi_dqs_found_all_bank[2]) || + (rd_byte_data_offset[rnk_cnt_r][12+:6] > (nCL + nAL + LATENCY_FACTOR - 1))) + pi_rst_stg1_cal_r[2] <= #TCQ 1'b1; + end + + always @(posedge clk) begin + if (rst || fine_adjust) + pi_rst_stg1_cal_r1[0] <= #TCQ 1'b0; + else if (pi_rst_stg1_cal_r[0]) + pi_rst_stg1_cal_r1[0] <= #TCQ 1'b1; + else if (~pi_dqs_found_any_bank_r[0] && ~pi_dqs_found_all_bank[0]) + pi_rst_stg1_cal_r1[0] <= #TCQ 1'b0; + end + + always @(posedge clk) begin + if (rst || fine_adjust) + pi_rst_stg1_cal_r1[1] <= #TCQ 1'b0; + else if (pi_rst_stg1_cal_r[1]) + pi_rst_stg1_cal_r1[1] <= #TCQ 1'b1; + else if (~pi_dqs_found_any_bank_r[1] && ~pi_dqs_found_all_bank[1]) + pi_rst_stg1_cal_r1[1] <= #TCQ 1'b0; + end + + always @(posedge clk) begin + if (rst || fine_adjust) + pi_rst_stg1_cal_r1[2] <= #TCQ 1'b0; + else if (pi_rst_stg1_cal_r[2]) + pi_rst_stg1_cal_r1[2] <= #TCQ 1'b1; + else if (~pi_dqs_found_any_bank_r[2] && ~pi_dqs_found_all_bank[2]) + pi_rst_stg1_cal_r1[2] <= #TCQ 1'b0; + end + + //***************************************************************************** + // Retry counter to track number of DQSFOUND retries + //***************************************************************************** + + always @(posedge clk) begin + if (rst || rank_done_r) + retry_cnt[0+:10] <= #TCQ 'b0; + else if ((rd_byte_data_offset[rnk_cnt_r][0+:6] > (nCL + nAL + LATENCY_FACTOR - 1)) && + ~pi_dqs_found_all_bank[0]) + retry_cnt[0+:10] <= #TCQ retry_cnt[0+:10] + 1; + else + retry_cnt[0+:10] <= #TCQ retry_cnt[0+:10]; + end + + always @(posedge clk) begin + if (rst || rank_done_r) + retry_cnt[10+:10] <= #TCQ 'b0; + else if ((rd_byte_data_offset[rnk_cnt_r][6+:6] > (nCL + nAL + LATENCY_FACTOR - 1)) && + ~pi_dqs_found_all_bank[1]) + retry_cnt[10+:10] <= #TCQ retry_cnt[10+:10] + 1; + else + retry_cnt[10+:10] <= #TCQ retry_cnt[10+:10]; + end + + always @(posedge clk) begin + if (rst || rank_done_r) + retry_cnt[20+:10] <= #TCQ 'b0; + else if ((rd_byte_data_offset[rnk_cnt_r][12+:6] > (nCL + nAL + LATENCY_FACTOR - 1)) && + ~pi_dqs_found_all_bank[2]) + retry_cnt[20+:10] <= #TCQ retry_cnt[20+:10] + 1; + else + retry_cnt[20+:10] <= #TCQ retry_cnt[20+:10]; + end + + // Error generation in case pi_dqs_found_all_bank + // is not asserted + always @(posedge clk) begin + if (rst) + pi_dqs_found_err_r[0] <= #TCQ 1'b0; + else if (~pi_dqs_found_all_bank[0] && (retry_cnt[0+:10] == NUM_DQSFOUND_CAL) && + (rd_byte_data_offset[rnk_cnt_r][0+:6] > (nCL + nAL + LATENCY_FACTOR - 1))) + pi_dqs_found_err_r[0] <= #TCQ 1'b1; + end + + always @(posedge clk) begin + if (rst) + pi_dqs_found_err_r[1] <= #TCQ 1'b0; + else if (~pi_dqs_found_all_bank[1] && (retry_cnt[10+:10] == NUM_DQSFOUND_CAL) && + (rd_byte_data_offset[rnk_cnt_r][6+:6] > (nCL + nAL + LATENCY_FACTOR - 1))) + pi_dqs_found_err_r[1] <= #TCQ 1'b1; + end + + always @(posedge clk) begin + if (rst) + pi_dqs_found_err_r[2] <= #TCQ 1'b0; + else if (~pi_dqs_found_all_bank[2] && (retry_cnt[20+:10] == NUM_DQSFOUND_CAL) && + (rd_byte_data_offset[rnk_cnt_r][12+:6] > (nCL + nAL + LATENCY_FACTOR - 1))) + pi_dqs_found_err_r[2] <= #TCQ 1'b1; + end + + // Read data offset value for all DQS in a Bank + always @(posedge clk) begin + if (rst) begin + for (q = 0; q < RANKS; q = q + 1) begin: three_bank0_rst_loop + rd_byte_data_offset[q][0+:6] <= #TCQ nCL + nAL - 2; + end + end else if ((rank_done_r1 && ~init_dqsfound_done_r) || + (rd_byte_data_offset[rnk_cnt_r][0+:6] > (nCL + nAL + LATENCY_FACTOR - 1))) + rd_byte_data_offset[rnk_cnt_r][0+:6] <= #TCQ nCL + nAL - 2; + else if (dqs_found_start_r && ~pi_dqs_found_all_bank[0] && + //(rd_byte_data_offset[rnk_cnt_r][0+:6] < (nCL + nAL + LATENCY_FACTOR)) && + (detect_pi_found_dqs && (detect_rd_cnt == 'd1)) && ~init_dqsfound_done_r && ~fine_adjust) + rd_byte_data_offset[rnk_cnt_r][0+:6] + <= #TCQ rd_byte_data_offset[rnk_cnt_r][0+:6] + 1; + end + + always @(posedge clk) begin + if (rst) begin + for (r = 0; r < RANKS; r = r + 1) begin: three_bank1_rst_loop + rd_byte_data_offset[r][6+:6] <= #TCQ nCL + nAL - 2; + end + end else if ((rank_done_r1 && ~init_dqsfound_done_r) || + (rd_byte_data_offset[rnk_cnt_r][6+:6] > (nCL + nAL + LATENCY_FACTOR - 1))) + rd_byte_data_offset[rnk_cnt_r][6+:6] <= #TCQ nCL + nAL - 2; + else if (dqs_found_start_r && ~pi_dqs_found_all_bank[1] && + //(rd_byte_data_offset[rnk_cnt_r][6+:6] < (nCL + nAL + LATENCY_FACTOR)) && + (detect_pi_found_dqs && (detect_rd_cnt == 'd1)) && ~init_dqsfound_done_r && ~fine_adjust) + rd_byte_data_offset[rnk_cnt_r][6+:6] + <= #TCQ rd_byte_data_offset[rnk_cnt_r][6+:6] + 1; + end + + always @(posedge clk) begin + if (rst) begin + for (s = 0; s < RANKS; s = s + 1) begin: three_bank2_rst_loop + rd_byte_data_offset[s][12+:6] <= #TCQ nCL + nAL - 2; + end + end else if ((rank_done_r1 && ~init_dqsfound_done_r) || + (rd_byte_data_offset[rnk_cnt_r][12+:6] > (nCL + nAL + LATENCY_FACTOR - 1))) + rd_byte_data_offset[rnk_cnt_r][12+:6] <= #TCQ nCL + nAL - 2; + else if (dqs_found_start_r && ~pi_dqs_found_all_bank[2] && + //(rd_byte_data_offset[rnk_cnt_r][12+:6] < (nCL + nAL + LATENCY_FACTOR)) && + (detect_pi_found_dqs && (detect_rd_cnt == 'd1)) && ~init_dqsfound_done_r && ~fine_adjust) + rd_byte_data_offset[rnk_cnt_r][12+:6] + <= #TCQ rd_byte_data_offset[rnk_cnt_r][12+:6] + 1; + end + +//***************************************************************************** +// Two I/O Bank Interface +//***************************************************************************** + end else if (HIGHEST_BANK == 2) begin // Two I/O Bank interface + + // Reset read data offset calibration in all DQS Phaser_INs + // in a Bank after the read data offset value for a rank is determined + // or if within a Bank DQSFOUND is not asserted for all DQSs + always @(posedge clk) begin + if (rst || pi_rst_stg1_cal_r1[0] || fine_adjust) + pi_rst_stg1_cal_r[0] <= #TCQ 1'b0; + else if ((pi_dqs_found_start && ~dqs_found_start_r) || + //(dqsfound_retry[0]) || + (pi_dqs_found_any_bank_r[0] && ~pi_dqs_found_all_bank[0]) || + (rd_byte_data_offset[rnk_cnt_r][0+:6] > (nCL + nAL + LATENCY_FACTOR - 1))) + pi_rst_stg1_cal_r[0] <= #TCQ 1'b1; + end + + always @(posedge clk) begin + if (rst || pi_rst_stg1_cal_r1[1] || fine_adjust) + pi_rst_stg1_cal_r[1] <= #TCQ 1'b0; + else if ((pi_dqs_found_start && ~dqs_found_start_r) || + //(dqsfound_retry[1]) || + (pi_dqs_found_any_bank_r[1] && ~pi_dqs_found_all_bank[1]) || + (rd_byte_data_offset[rnk_cnt_r][6+:6] > (nCL + nAL + LATENCY_FACTOR - 1))) + pi_rst_stg1_cal_r[1] <= #TCQ 1'b1; + end + + always @(posedge clk) begin + if (rst || fine_adjust) + pi_rst_stg1_cal_r1[0] <= #TCQ 1'b0; + else if (pi_rst_stg1_cal_r[0]) + pi_rst_stg1_cal_r1[0] <= #TCQ 1'b1; + else if (~pi_dqs_found_any_bank_r[0] && ~pi_dqs_found_all_bank[0]) + pi_rst_stg1_cal_r1[0] <= #TCQ 1'b0; + end + + always @(posedge clk) begin + if (rst || fine_adjust) + pi_rst_stg1_cal_r1[1] <= #TCQ 1'b0; + else if (pi_rst_stg1_cal_r[1]) + pi_rst_stg1_cal_r1[1] <= #TCQ 1'b1; + else if (~pi_dqs_found_any_bank_r[1] && ~pi_dqs_found_all_bank[1]) + pi_rst_stg1_cal_r1[1] <= #TCQ 1'b0; + end + + //***************************************************************************** + // Retry counter to track number of DQSFOUND retries + //***************************************************************************** + + always @(posedge clk) begin + if (rst || rank_done_r) + retry_cnt[0+:10] <= #TCQ 'b0; + else if ((rd_byte_data_offset[rnk_cnt_r][0+:6] > (nCL + nAL + LATENCY_FACTOR - 1)) && + ~pi_dqs_found_all_bank[0]) + retry_cnt[0+:10] <= #TCQ retry_cnt[0+:10] + 1; + else + retry_cnt[0+:10] <= #TCQ retry_cnt[0+:10]; + end + + always @(posedge clk) begin + if (rst || rank_done_r) + retry_cnt[10+:10] <= #TCQ 'b0; + else if ((rd_byte_data_offset[rnk_cnt_r][6+:6] > (nCL + nAL + LATENCY_FACTOR - 1)) && + ~pi_dqs_found_all_bank[1]) + retry_cnt[10+:10] <= #TCQ retry_cnt[10+:10] + 1; + else + retry_cnt[10+:10] <= #TCQ retry_cnt[10+:10]; + end + + + // Error generation in case pi_dqs_found_all_bank + // is not asserted + always @(posedge clk) begin + if (rst) + pi_dqs_found_err_r[0] <= #TCQ 1'b0; + else if (~pi_dqs_found_all_bank[0] && (retry_cnt[0+:10] == NUM_DQSFOUND_CAL) && + (rd_byte_data_offset[rnk_cnt_r][0+:6] > (nCL + nAL + LATENCY_FACTOR - 1))) + pi_dqs_found_err_r[0] <= #TCQ 1'b1; + end + + always @(posedge clk) begin + if (rst) + pi_dqs_found_err_r[1] <= #TCQ 1'b0; + else if (~pi_dqs_found_all_bank[1] && (retry_cnt[10+:10] == NUM_DQSFOUND_CAL) && + (rd_byte_data_offset[rnk_cnt_r][6+:6] > (nCL + nAL + LATENCY_FACTOR - 1))) + pi_dqs_found_err_r[1] <= #TCQ 1'b1; + end + + + // Read data offset value for all DQS in a Bank + always @(posedge clk) begin + if (rst) begin + for (q = 0; q < RANKS; q = q + 1) begin: two_bank0_rst_loop + rd_byte_data_offset[q][0+:6] <= #TCQ nCL + nAL - 2; + end + end else if ((rank_done_r1 && ~init_dqsfound_done_r) || + (rd_byte_data_offset[rnk_cnt_r][0+:6] > (nCL + nAL + LATENCY_FACTOR - 1))) + rd_byte_data_offset[rnk_cnt_r][0+:6] <= #TCQ nCL + nAL - 2; + else if (dqs_found_start_r && ~pi_dqs_found_all_bank[0] && + //(rd_byte_data_offset[rnk_cnt_r][0+:6] < (nCL + nAL + LATENCY_FACTOR)) && + (detect_pi_found_dqs && (detect_rd_cnt == 'd1)) && ~init_dqsfound_done_r && ~fine_adjust) + rd_byte_data_offset[rnk_cnt_r][0+:6] + <= #TCQ rd_byte_data_offset[rnk_cnt_r][0+:6] + 1; + end + + always @(posedge clk) begin + if (rst) begin + for (r = 0; r < RANKS; r = r + 1) begin: two_bank1_rst_loop + rd_byte_data_offset[r][6+:6] <= #TCQ nCL + nAL - 2; + end + end else if ((rank_done_r1 && ~init_dqsfound_done_r) || + (rd_byte_data_offset[rnk_cnt_r][6+:6] > (nCL + nAL + LATENCY_FACTOR - 1))) + rd_byte_data_offset[rnk_cnt_r][6+:6] <= #TCQ nCL + nAL - 2; + else if (dqs_found_start_r && ~pi_dqs_found_all_bank[1] && + //(rd_byte_data_offset[rnk_cnt_r][6+:6] < (nCL + nAL + LATENCY_FACTOR)) && + (detect_pi_found_dqs && (detect_rd_cnt == 'd1)) && ~init_dqsfound_done_r && ~fine_adjust) + rd_byte_data_offset[rnk_cnt_r][6+:6] + <= #TCQ rd_byte_data_offset[rnk_cnt_r][6+:6] + 1; + end +//***************************************************************************** +// One I/O Bank Interface +//***************************************************************************** + end else begin // One I/O Bank Interface + + // Read data offset value for all DQS in Bank0 + always @(posedge clk) begin + if (rst) begin + for (l = 0; l < RANKS; l = l + 1) begin: bank_rst_loop + rd_byte_data_offset[l] <= #TCQ nCL + nAL - 2; + end + end else if ((rank_done_r1 && ~init_dqsfound_done_r) || + (rd_byte_data_offset[rnk_cnt_r] > (nCL + nAL + LATENCY_FACTOR - 1))) + rd_byte_data_offset[rnk_cnt_r] <= #TCQ nCL + nAL - 2; + else if (dqs_found_start_r && ~pi_dqs_found_all_bank[0] && + //(rd_byte_data_offset[rnk_cnt_r] < (nCL + nAL + LATENCY_FACTOR)) && + (detect_pi_found_dqs && (detect_rd_cnt == 'd1)) && ~init_dqsfound_done_r && ~fine_adjust) + rd_byte_data_offset[rnk_cnt_r] + <= #TCQ rd_byte_data_offset[rnk_cnt_r] + 1; + end + + // Reset read data offset calibration in all DQS Phaser_INs + // in a Bank after the read data offset value for a rank is determined + // or if within a Bank DQSFOUND is not asserted for all DQSs + always @(posedge clk) begin + if (rst || pi_rst_stg1_cal_r1[0] || fine_adjust) + pi_rst_stg1_cal_r[0] <= #TCQ 1'b0; + else if ((pi_dqs_found_start && ~dqs_found_start_r) || + //(dqsfound_retry[0]) || + (pi_dqs_found_any_bank_r[0] && ~pi_dqs_found_all_bank[0]) || + (rd_byte_data_offset[rnk_cnt_r][0+:6] > (nCL + nAL + LATENCY_FACTOR - 1))) + pi_rst_stg1_cal_r[0] <= #TCQ 1'b1; + end + + always @(posedge clk) begin + if (rst || fine_adjust) + pi_rst_stg1_cal_r1[0] <= #TCQ 1'b0; + else if (pi_rst_stg1_cal_r[0]) + pi_rst_stg1_cal_r1[0] <= #TCQ 1'b1; + else if (~pi_dqs_found_any_bank_r[0] && ~pi_dqs_found_all_bank[0]) + pi_rst_stg1_cal_r1[0] <= #TCQ 1'b0; + end + + //***************************************************************************** + // Retry counter to track number of DQSFOUND retries + //***************************************************************************** + + always @(posedge clk) begin + if (rst || rank_done_r) + retry_cnt[0+:10] <= #TCQ 'b0; + else if ((rd_byte_data_offset[rnk_cnt_r][0+:6] > (nCL + nAL + LATENCY_FACTOR - 1)) && + ~pi_dqs_found_all_bank[0]) + retry_cnt[0+:10] <= #TCQ retry_cnt[0+:10] + 1; + else + retry_cnt[0+:10] <= #TCQ retry_cnt[0+:10]; + end + + + // Error generation in case pi_dqs_found_all_bank + // is not asserted even with 3 dqfound retries + always @(posedge clk) begin + if (rst) + pi_dqs_found_err_r[0] <= #TCQ 1'b0; + else if (~pi_dqs_found_all_bank[0] && (retry_cnt[0+:10] == NUM_DQSFOUND_CAL) && + (rd_byte_data_offset[rnk_cnt_r][0+:6] > (nCL + nAL + LATENCY_FACTOR - 1))) + pi_dqs_found_err_r[0] <= #TCQ 1'b1; + end + + end + endgenerate + + always @(posedge clk) begin + if (rst) + pi_rst_stg1_cal <= #TCQ {HIGHEST_BANK{1'b0}}; + else if (rst_dqs_find) + pi_rst_stg1_cal <= #TCQ {HIGHEST_BANK{1'b1}}; + else + pi_rst_stg1_cal <= #TCQ pi_rst_stg1_cal_r; + end + + + + // Final read data offset value to be used during write calibration and + // normal operation + generate + genvar i; + genvar j; + for (i = 0; i < RANKS; i = i + 1) begin: rank_final_loop + reg [5:0] final_do_cand [RANKS-1:0]; + // combinatorially select the candidate offset for the bank + // indexed by final_do_index + if (HIGHEST_BANK == 3) begin + always @(*) begin + case (final_do_index[i]) + 3'b000: final_do_cand[i] = final_data_offset[i][5:0]; + 3'b001: final_do_cand[i] = final_data_offset[i][11:6]; + 3'b010: final_do_cand[i] = final_data_offset[i][17:12]; + default: final_do_cand[i] = 'd0; + endcase + end + end else if (HIGHEST_BANK == 2) begin + always @(*) begin + case (final_do_index[i]) + 3'b000: final_do_cand[i] = final_data_offset[i][5:0]; + 3'b001: final_do_cand[i] = final_data_offset[i][11:6]; + 3'b010: final_do_cand[i] = 'd0; + default: final_do_cand[i] = 'd0; + endcase + end + end else begin + always @(*) begin + case (final_do_index[i]) + 3'b000: final_do_cand[i] = final_data_offset[i][5:0]; + 3'b001: final_do_cand[i] = 'd0; + 3'b010: final_do_cand[i] = 'd0; + default: final_do_cand[i] = 'd0; + endcase + end + end + + always @(posedge clk) begin + if (rst) + final_do_max[i] <= #TCQ 0; + else begin + final_do_max[i] <= #TCQ final_do_max[i]; // default + case (final_do_index[i]) + 3'b000: if ( | DATA_PRESENT[3:0]) + if (final_do_max[i] < final_do_cand[i]) + if (CWL_M % 2) // odd latency CAS slot 1 + final_do_max[i] <= #TCQ final_do_cand[i] - 1; + else + final_do_max[i] <= #TCQ final_do_cand[i]; + 3'b001: if ( | DATA_PRESENT[7:4]) + if (final_do_max[i] < final_do_cand[i]) + if (CWL_M % 2) // odd latency CAS slot 1 + final_do_max[i] <= #TCQ final_do_cand[i] - 1; + else + final_do_max[i] <= #TCQ final_do_cand[i]; + 3'b010: if ( | DATA_PRESENT[11:8]) + if (final_do_max[i] < final_do_cand[i]) + if (CWL_M % 2) // odd latency CAS slot 1 + final_do_max[i] <= #TCQ final_do_cand[i] - 1; + else + final_do_max[i] <= #TCQ final_do_cand[i]; + default: + final_do_max[i] <= #TCQ final_do_max[i]; + endcase + end + end + + always @(posedge clk) + if (rst) begin + final_do_index[i] <= #TCQ 0; + end + else begin + final_do_index[i] <= #TCQ final_do_index[i] + 1; + end + + for (j = 0; j < HIGHEST_BANK; j = j + 1) begin: bank_final_loop + + always @(posedge clk) begin + if (rst) begin + final_data_offset[i][6*j+:6] <= #TCQ 'b0; + end + else begin + //if (dqsfound_retry[j]) + // final_data_offset[i][6*j+:6] <= #TCQ rd_byte_data_offset[i][6*j+:6]; + //else + if (init_dqsfound_done_r && ~init_dqsfound_done_r1) begin + if ( DATA_PRESENT [ j*4+:4] != 0) begin // has a data lane + final_data_offset[i][6*j+:6] <= #TCQ rd_byte_data_offset[i][6*j+:6]; + if (CWL_M % 2) // odd latency CAS slot 1 + final_data_offset_mc[i][6*j+:6] <= #TCQ rd_byte_data_offset[i][6*j+:6] - 1; + else // even latency CAS slot 0 + final_data_offset_mc[i][6*j+:6] <= #TCQ rd_byte_data_offset[i][6*j+:6]; + end + end + else if (init_dqsfound_done_r5 ) begin + if ( DATA_PRESENT [ j*4+:4] == 0) begin // all control lanes + final_data_offset[i][6*j+:6] <= #TCQ final_do_max[i]; + final_data_offset_mc[i][6*j+:6] <= #TCQ final_do_max[i]; + end + end + end + end + end + end + endgenerate + + + // Error generation in case pi_found_dqs signal from Phaser_IN + // is not asserted when a common rddata_offset value is used + + always @(posedge clk) begin + pi_dqs_found_err <= #TCQ |pi_dqs_found_err_r; + end + + + +endmodule + + + + + + diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_init.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_init.v new file mode 100644 index 0000000..70bc94c --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_init.v @@ -0,0 +1,5497 @@ +//***************************************************************************** +// (c) Copyright 2009 - 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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version: %version +// \ \ Application: MIG +// / / Filename: ddr_phy_init.v +// /___/ /\ Date Last Modified: $Date: 2011/06/02 08:35:09 $ +// \ \ / \ Date Created: +// \___\/\___\ +// +//Device: 7 Series +//Design Name: DDR3 SDRAM +//Purpose: +// Memory initialization and overall master state control during +// initialization and calibration. Specifically, the following functions +// are performed: +// 1. Memory initialization (initial AR, mode register programming, etc.) +// 2. Initiating write leveling +// 3. Generate training pattern writes for read leveling. Generate +// memory readback for read leveling. +// This module has an interface for providing control/address and write +// data to the PHY Control Block during initialization/calibration. +// Once initialization and calibration are complete, control is passed to the MC. +// +//Reference: +//Revision History: +// +//***************************************************************************** + +/****************************************************************************** +**$Id: ddr_phy_init.v,v 1.1 2011/06/02 08:35:09 mishra Exp $ +**$Date: 2011/06/02 08:35:09 $ +**$Author: mishra $ +**$Revision: 1.1 $ +**$Source: /devl/xcs/repo/env/Databases/ip/src2/O/mig_7series_v1_3/data/dlib/7series/ddr3_sdram/verilog/rtl/phy/ddr_phy_init.v,v $ +******************************************************************************/ + +`timescale 1ps/1ps + + +module mig_7series_v4_0_ddr_phy_init # + ( + parameter tCK = 1500, // DDRx SDRAM clock period + parameter TCQ = 100, + parameter nCK_PER_CLK = 4, // # of memory clocks per CLK + parameter CLK_PERIOD = 3000, // Logic (internal) clk period (in ps) + parameter USE_ODT_PORT = 0, // 0 - No ODT output from FPGA + // 1 - ODT output from FPGA + parameter DDR3_VDD_OP_VOLT = "150", // Voltage mode used for DDR3 + // 150 - 1.50 V + // 135 - 1.35 V + // 125 - 1.25 V + parameter VREF = "EXTERNAL", // Internal or external Vref + parameter PRBS_WIDTH = 8, // PRBS sequence = 2^PRBS_WIDTH + parameter BANK_WIDTH = 2, + parameter CA_MIRROR = "OFF", // C/A mirror opt for DDR3 dual rank + parameter COL_WIDTH = 10, + parameter nCS_PER_RANK = 1, // # of CS bits per rank e.g. for + // component I/F with CS_WIDTH=1, + // nCS_PER_RANK=# of components + parameter DQ_WIDTH = 64, + parameter DQS_WIDTH = 8, + parameter DQS_CNT_WIDTH = 3, // = ceil(log2(DQS_WIDTH)) + parameter ROW_WIDTH = 14, + parameter CS_WIDTH = 1, + parameter RANKS = 1, // # of memory ranks in the interface + parameter CKE_WIDTH = 1, // # of cke outputs + parameter DRAM_TYPE = "DDR3", + parameter REG_CTRL = "ON", + parameter ADDR_CMD_MODE= "1T", + + // calibration Address + parameter CALIB_ROW_ADD = 16'h0000,// Calibration row address + parameter CALIB_COL_ADD = 12'h000, // Calibration column address + parameter CALIB_BA_ADD = 3'h0, // Calibration bank address + + // DRAM mode settings + parameter AL = "0", // Additive Latency option + parameter BURST_MODE = "8", // Burst length + parameter BURST_TYPE = "SEQ", // Burst type +// parameter nAL = 0, // Additive latency (in clk cyc) + parameter nCL = 5, // Read CAS latency (in clk cyc) + parameter nCWL = 5, // Write CAS latency (in clk cyc) + parameter tRFC = 110000, // Refresh-to-command delay (in ps) + parameter REFRESH_TIMER = 1553, // Refresh interval in fabrci cycles between 8 posted refreshes + parameter REFRESH_TIMER_WIDTH = 8, + parameter OUTPUT_DRV = "HIGH", // DRAM reduced output drive option + parameter RTT_NOM = "60", // Nominal ODT termination value + parameter RTT_WR = "60", // Write ODT termination value + parameter WRLVL = "ON", // Enable write leveling +// parameter PHASE_DETECT = "ON", // Enable read phase detector + parameter DDR2_DQSN_ENABLE = "YES", // Enable differential DQS for DDR2 + parameter nSLOTS = 1, // Number of DIMM SLOTs in the system + parameter SIM_INIT_OPTION = "NONE", // "NONE", "SKIP_PU_DLY", "SKIP_INIT" + parameter SIM_CAL_OPTION = "NONE", // "NONE", "FAST_CAL", "SKIP_CAL" + parameter CKE_ODT_AUX = "FALSE", + parameter PRE_REV3ES = "OFF", // Enable TG error detection during calibration + parameter TEST_AL = "0", // Internal use for ICM verification + parameter FIXED_VICTIM = "TRUE", + parameter BYPASS_COMPLEX_OCAL = "FALSE", + parameter SKIP_CALIB = "FALSE" + ) + ( + input clk, + input rst, + input [2*nCK_PER_CLK*DQ_WIDTH-1:0] prbs_o, + input delay_incdec_done, + input ck_addr_cmd_delay_done, + input pi_phase_locked_all, + input pi_dqs_found_done, + input dqsfound_retry, + input dqs_found_prech_req, + output reg pi_phaselock_start, + output pi_phase_locked_err, + output pi_calib_done, + input phy_if_empty, + // Read/write calibration interface + input wrlvl_done, + input wrlvl_rank_done, + input wrlvl_byte_done, + input wrlvl_byte_redo, + input wrlvl_final, + output reg wrlvl_final_if_rst, + input oclkdelay_calib_done, + input oclk_prech_req, + input oclk_calib_resume, + input lim_done, + input lim_wr_req, + output reg oclkdelay_calib_start, + //complex oclkdelay calibration + input complex_oclkdelay_calib_done, + input complex_oclk_prech_req, + input complex_oclk_calib_resume, + output reg complex_oclkdelay_calib_start, + input [DQS_CNT_WIDTH:0] complex_oclkdelay_calib_cnt, // same as oclkdelay_calib_cnt + output reg complex_ocal_num_samples_inc, + input complex_ocal_num_samples_done_r, + input [2:0] complex_ocal_rd_victim_sel, + output reg complex_ocal_reset_rd_addr, + input complex_ocal_ref_req, + output reg complex_ocal_ref_done, + + input done_dqs_tap_inc, + input [5:0] rd_data_offset_0, + input [5:0] rd_data_offset_1, + input [5:0] rd_data_offset_2, + input [6*RANKS-1:0] rd_data_offset_ranks_0, + input [6*RANKS-1:0] rd_data_offset_ranks_1, + input [6*RANKS-1:0] rd_data_offset_ranks_2, + input pi_dqs_found_rank_done, + input wrcal_done, + input wrcal_prech_req, + input wrcal_read_req, + input wrcal_act_req, + input temp_wrcal_done, + input [7:0] slot_0_present, + input [7:0] slot_1_present, + output reg wl_sm_start, + output reg wr_lvl_start, + output reg wrcal_start, + output reg wrcal_rd_wait, + output reg wrcal_sanity_chk, + output reg tg_timer_done, + output reg no_rst_tg_mc, + input rdlvl_stg1_done, + input rdlvl_stg1_rank_done, + output reg rdlvl_stg1_start, + output reg pi_dqs_found_start, + output reg detect_pi_found_dqs, + // rdlvl stage 1 precharge requested after each DQS + input rdlvl_prech_req, + input rdlvl_last_byte_done, + input wrcal_resume, + input wrcal_sanity_chk_done, + // MPR read leveling + input mpr_rdlvl_done, + input mpr_rnk_done, + input mpr_last_byte_done, + output reg mpr_rdlvl_start, + output reg mpr_end_if_reset, + + // PRBS Read Leveling + input prbs_rdlvl_done, + input prbs_last_byte_done, + input prbs_rdlvl_prech_req, + input complex_victim_inc, + input [2:0] rd_victim_sel, + input [DQS_CNT_WIDTH:0] pi_stg2_prbs_rdlvl_cnt, + output reg [2:0] victim_sel, + output reg [DQS_CNT_WIDTH:0]victim_byte_cnt, + output reg prbs_rdlvl_start, + output reg prbs_gen_clk_en, + output reg prbs_gen_oclk_clk_en, + output reg complex_sample_cnt_inc, + output reg complex_sample_cnt_inc_ocal, + output reg complex_wr_done, + + // Signals shared btw multiple calibration stages + output reg prech_done, + // Data select / status + output reg init_calib_complete, + // Signal to mask memory model error for Invalid latching edge + output reg calib_writes, + // PHY address/control + // 2 commands to PHY Control Block per div 2 clock in 2:1 mode + // 4 commands to PHY Control Block per div 4 clock in 4:1 mode + output reg [nCK_PER_CLK*ROW_WIDTH-1:0] phy_address, + output reg [nCK_PER_CLK*BANK_WIDTH-1:0]phy_bank, + output reg [nCK_PER_CLK-1:0] phy_ras_n, + output reg [nCK_PER_CLK-1:0] phy_cas_n, + output reg [nCK_PER_CLK-1:0] phy_we_n, + output reg phy_reset_n, + output [CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK-1:0] phy_cs_n, + + // Hard PHY Interface signals + input phy_ctl_ready, + input phy_ctl_full, + input phy_cmd_full, + input phy_data_full, + output reg calib_ctl_wren, + output reg calib_cmd_wren, + output reg [1:0] calib_seq, + output reg write_calib, + output reg read_calib, + // PHY_Ctl_Wd + output reg [2:0] calib_cmd, + // calib_aux_out used for CKE and ODT + output reg [3:0] calib_aux_out, + output reg [1:0] calib_odt , + output reg [nCK_PER_CLK-1:0] calib_cke , + output [1:0] calib_rank_cnt, + output reg [1:0] calib_cas_slot, + output reg [5:0] calib_data_offset_0, + output reg [5:0] calib_data_offset_1, + output reg [5:0] calib_data_offset_2, + // PHY OUT_FIFO + output reg calib_wrdata_en, + output reg [2*nCK_PER_CLK*DQ_WIDTH-1:0] phy_wrdata, + // PHY Read + output phy_rddata_en, + output phy_rddata_valid, + output [255:0] dbg_phy_init, + input reset_rd_addr, + //OCAL centering calibration + input oclkdelay_center_calib_start, + input oclk_center_write_resume, + input oclkdelay_center_calib_done, + input rdlvl_pi_incdec, //rdlvl pi dec + input complex_pi_incdec_done, + input num_samples_done_r, + input complex_init_pi_dec_done, + output reg complex_act_start, + output reg calib_tap_inc_start, + output reg calib_tap_end_if_reset, + input calib_tap_inc_done + ); + +//***************************************************************************** +// Assertions to be added +//***************************************************************************** +// The phy_ctl_full signal must never be asserted in synchronous mode of +// operation either 4:1 or 2:1 +// +// The RANKS parameter must never be set to '0' by the user +// valid values: 1 to 4 +// +//***************************************************************************** + + //*************************************************************************** + + // Number of Read level stage 1 writes limited to a SDRAM row + // The address of Read Level stage 1 reads must also be limited + // to a single SDRAM row + // (2^COL_WIDTH)/BURST_MODE = (2^10)/8 = 128 + localparam NUM_STG1_WR_RD = (BURST_MODE == "8") ? 4 : + (BURST_MODE == "4") ? 8 : 4; + + + localparam ADDR_INC = (BURST_MODE == "8") ? 8 : + (BURST_MODE == "4") ? 4 : 8; + + // In a 2 slot dual rank per system RTT_NOM values + // for Rank2 and Rank3 default to 40 ohms + localparam RTT_NOM2 = "40"; + localparam RTT_NOM3 = "40"; + + localparam RTT_NOM_int = (USE_ODT_PORT == 1) ? RTT_NOM : RTT_WR; + + // Specifically for use with half-frequency controller (nCK_PER_CLK=2) + // = 1 if burst length = 4, = 0 if burst length = 8. Determines how + // often row command needs to be issued during read-leveling + // For DDR3 the burst length is fixed during calibration + localparam BURST4_FLAG = (DRAM_TYPE == "DDR3")? 1'b0 : + (BURST_MODE == "8") ? 1'b0 : + ((BURST_MODE == "4") ? 1'b1 : 1'b0); + + + + + //*************************************************************************** + // Counter values used to determine bus timing + // NOTE on all counter terminal counts - these can/should be one less than + // the actual delay to take into account extra clock cycle delay in + // generating the corresponding "done" signal + //*************************************************************************** + + localparam CLK_MEM_PERIOD = CLK_PERIOD / nCK_PER_CLK; + + // Calculate initial delay required in number of CLK clock cycles + // to delay initially. The counter is clocked by [CLK/1024] - which + // is approximately division by 1000 - note that the formulas below will + // result in more than the minimum wait time because of this approximation. + // NOTE: For DDR3 JEDEC specifies to delay reset + // by 200us, and CKE by an additional 500us after power-up + // For DDR2 CKE is delayed by 200us after power up. + localparam DDR3_RESET_DELAY_NS = 200000; + localparam DDR3_CKE_DELAY_NS = 500000 + DDR3_RESET_DELAY_NS; + localparam DDR2_CKE_DELAY_NS = 200000; + localparam PWRON_RESET_DELAY_CNT = + ((DDR3_RESET_DELAY_NS+CLK_PERIOD-1)/CLK_PERIOD); + localparam PWRON_CKE_DELAY_CNT = (DRAM_TYPE == "DDR3") ? + (((DDR3_CKE_DELAY_NS+CLK_PERIOD-1)/CLK_PERIOD)) : + (((DDR2_CKE_DELAY_NS+CLK_PERIOD-1)/CLK_PERIOD)); + // FOR DDR2 -1 taken out. With -1 not getting 200us. The equation + // needs to be reworked. + localparam DDR2_INIT_PRE_DELAY_PS = 400000; + localparam DDR2_INIT_PRE_CNT = + ((DDR2_INIT_PRE_DELAY_PS+CLK_PERIOD-1)/CLK_PERIOD)-1; + + // Calculate tXPR time: reset from CKE HIGH to valid command after power-up + // tXPR = (max(5nCK, tRFC(min)+10ns). Add a few (blah, messy) more clock + // cycles because this counter actually starts up before CKE is asserted + // to memory. + localparam TXPR_DELAY_CNT = + (5*CLK_MEM_PERIOD > tRFC+10000) ? + (((5+nCK_PER_CLK-1)/nCK_PER_CLK)-1)+11 : + (((tRFC+10000+CLK_PERIOD-1)/CLK_PERIOD)-1)+11; + + // tDLLK/tZQINIT time = 512*tCK = 256*tCLKDIV + localparam TDLLK_TZQINIT_DELAY_CNT = 255; + + // TWR values in ns. Both DDR2 and DDR3 have the same value. + // 15000ns/tCK + localparam TWR_CYC = ((15000) % CLK_MEM_PERIOD) ? + (15000/CLK_MEM_PERIOD) + 1 : 15000/CLK_MEM_PERIOD; + + // time to wait between consecutive commands in PHY_INIT - this is a + // generic number, and must be large enough to account for worst case + // timing parameter (tRFC - refresh-to-active) across all memory speed + // grades and operating frequencies. Expressed in clk + // (Divided by 4 or Divided by 2) clock cycles. + localparam CNTNEXT_CMD = 7'b1111111; + + // Counter values to keep track of which MR register to load during init + // Set value of INIT_CNT_MR_DONE to equal value of counter for last mode + // register configured during initialization. + // NOTE: Reserve more bits for DDR2 - more MR accesses for DDR2 init + localparam INIT_CNT_MR2 = 2'b00; + localparam INIT_CNT_MR3 = 2'b01; + localparam INIT_CNT_MR1 = 2'b10; + localparam INIT_CNT_MR0 = 2'b11; + localparam INIT_CNT_MR_DONE = 2'b11; + + // Register chip programmable values for DDR3 + // The register chip for the registered DIMM needs to be programmed + // before the initialization of the registered DIMM. + // Address for the control word is in : DBA2, DA2, DA1, DA0 + // Data for the control word is in: DBA1 DBA0, DA4, DA3 + // The values will be stored in the local param in the following format + // {DBA[2:0], DA[4:0]} + + // RC0 is global features control word. Address == 000 + + localparam REG_RC0 = 8'b00000000; + + // RC1 Clock driver enable control word. Enables or disables the four + // output clocks in the register chip. For single rank and dual rank + // two clocks will be enabled and for quad rank all the four clocks + // will be enabled. Address == 000. Data = 0110 for single and dual rank. + // = 0000 for quad rank + localparam REG_RC1 = 8'b00000001; + + // RC2 timing control word. Set in 1T timing mode + // Address = 010. Data = 0000 + localparam REG_RC2 = 8'b00000010; + + // RC3 timing control word. Setting the data based on number of RANKS (inturn the number of loads) + // This setting is specific to RDIMMs from Micron Technology + localparam REG_RC3 = (RANKS >= 2) ? 8'b00101011 : 8'b00000011; + + // RC4 timing control work. Setting the data based on number of RANKS (inturn the number of loads) + // This setting is specific to RDIMMs from Micron Technology + localparam REG_RC4 = (RANKS >= 2) ? 8'b00101100 : 8'b00000100; + + // RC5 timing control work. Setting the data based on number of RANKS (inturn the number of loads) + // This setting is specific to RDIMMs from Micron Technology + localparam REG_RC5 = (RANKS >= 2) ? 8'b00101101 : 8'b00000101; + + // RC10 timing control work. Setting the data to 0000 + localparam [3:0] FREQUENCY_ENCODING = (tCK >= 1072 && tCK < 1250) ? 4'b0100 : + (tCK >= 1250 && tCK < 1500) ? 4'b0011 : + (tCK >= 1500 && tCK < 1875) ? 4'b0010 : + (tCK >= 1875 && tCK < 2500) ? 4'b0001 : 4'b0000; + + localparam REG_RC10 = {1'b1,FREQUENCY_ENCODING,3'b010}; + + localparam VREF_ENCODING = (VREF == "INTERNAL") ? 1'b1 : 1'b0; + localparam [3:0] DDR3_VOLTAGE_ENCODING = (DDR3_VDD_OP_VOLT == "125") ? {1'b0,VREF_ENCODING,2'b10} : + (DDR3_VDD_OP_VOLT == "135") ? {1'b0,VREF_ENCODING,2'b01} : + {1'b0,VREF_ENCODING,2'b00} ; + + localparam REG_RC11 = {1'b1,DDR3_VOLTAGE_ENCODING,3'b011}; + + // For non-zero AL values + localparam nAL = (AL == "CL-1") ? nCL - 1 : 0; + + // Adding the register dimm latency to write latency + localparam CWL_M = (REG_CTRL == "ON") ? nCWL + nAL + 1 : nCWL + nAL; + + // Count value to generate pi_phase_locked_err signal + localparam PHASELOCKED_TIMEOUT = (SIM_CAL_OPTION == "NONE") ? 16383 : 1000; + + // Timeout interval for detecting error with Traffic Generator + localparam [13:0] TG_TIMER_TIMEOUT + = (SIM_CAL_OPTION == "NONE") ? 14'h3FFF : 14'h0001; + + //bit num per DQS + localparam DQ_PER_DQS = DQ_WIDTH/DQS_WIDTH; + + //COMPLEX_ROW_CNT_BYTE + localparam COMPLEX_ROW_CNT_BYTE = (FIXED_VICTIM=="FALSE")? DQ_PER_DQS*2: 2; + localparam COMPLEX_RD = (FIXED_VICTIM=="FALSE")? DQ_PER_DQS : 1; + + // Master state machine encoding + localparam INIT_IDLE = 7'b0000000; //0 + localparam INIT_WAIT_CKE_EXIT = 7'b0000001; //1 + localparam INIT_LOAD_MR = 7'b0000010; //2 + localparam INIT_LOAD_MR_WAIT = 7'b0000011; //3 + localparam INIT_ZQCL = 7'b0000100; //4 + localparam INIT_WAIT_DLLK_ZQINIT = 7'b0000101; //5 + localparam INIT_WRLVL_START = 7'b0000110; //6 + localparam INIT_WRLVL_WAIT = 7'b0000111; //7 + localparam INIT_WRLVL_LOAD_MR = 7'b0001000; //8 + localparam INIT_WRLVL_LOAD_MR_WAIT = 7'b0001001; //9 + localparam INIT_WRLVL_LOAD_MR2 = 7'b0001010; //A + localparam INIT_WRLVL_LOAD_MR2_WAIT = 7'b0001011; //B + localparam INIT_RDLVL_ACT = 7'b0001100; //C + localparam INIT_RDLVL_ACT_WAIT = 7'b0001101; //D + localparam INIT_RDLVL_STG1_WRITE = 7'b0001110; //E + localparam INIT_RDLVL_STG1_WRITE_READ = 7'b0001111; //F + localparam INIT_RDLVL_STG1_READ = 7'b0010000; //10 + localparam INIT_RDLVL_STG2_READ = 7'b0010001; //11 + localparam INIT_RDLVL_STG2_READ_WAIT = 7'b0010010; //12 + localparam INIT_PRECHARGE_PREWAIT = 7'b0010011; //13 + localparam INIT_PRECHARGE = 7'b0010100; //14 + localparam INIT_PRECHARGE_WAIT = 7'b0010101; //15 + localparam INIT_DONE = 7'b0010110; //16 + localparam INIT_DDR2_PRECHARGE = 7'b0010111; //17 + localparam INIT_DDR2_PRECHARGE_WAIT = 7'b0011000; //18 + localparam INIT_REFRESH = 7'b0011001; //19 + localparam INIT_REFRESH_WAIT = 7'b0011010; //1A + localparam INIT_REG_WRITE = 7'b0011011; //1B + localparam INIT_REG_WRITE_WAIT = 7'b0011100; //1C + localparam INIT_DDR2_MULTI_RANK = 7'b0011101; //1D + localparam INIT_DDR2_MULTI_RANK_WAIT = 7'b0011110; //1E + localparam INIT_WRCAL_ACT = 7'b0011111; //1F + localparam INIT_WRCAL_ACT_WAIT = 7'b0100000; //20 + localparam INIT_WRCAL_WRITE = 7'b0100001; //21 + localparam INIT_WRCAL_WRITE_READ = 7'b0100010; //22 + localparam INIT_WRCAL_READ = 7'b0100011; //23 + localparam INIT_WRCAL_READ_WAIT = 7'b0100100; //24 + localparam INIT_WRCAL_MULT_READS = 7'b0100101; //25 + localparam INIT_PI_PHASELOCK_READS = 7'b0100110; //26 + localparam INIT_MPR_RDEN = 7'b0100111; //27 + localparam INIT_MPR_WAIT = 7'b0101000; //28 + localparam INIT_MPR_READ = 7'b0101001; //29 + localparam INIT_MPR_DISABLE_PREWAIT = 7'b0101010; //2A + localparam INIT_MPR_DISABLE = 7'b0101011; //2B + localparam INIT_MPR_DISABLE_WAIT = 7'b0101100; //2C + localparam INIT_OCLKDELAY_ACT = 7'b0101101; //2D + localparam INIT_OCLKDELAY_ACT_WAIT = 7'b0101110; //2E + localparam INIT_OCLKDELAY_WRITE = 7'b0101111; //2F + localparam INIT_OCLKDELAY_WRITE_WAIT = 7'b0110000; //30 + localparam INIT_OCLKDELAY_READ = 7'b0110001; //31 + localparam INIT_OCLKDELAY_READ_WAIT = 7'b0110010; //32 + localparam INIT_REFRESH_RNK2_WAIT = 7'b0110011; //33 + localparam INIT_RDLVL_COMPLEX_PRECHARGE = 7'b0110100; //34 + localparam INIT_RDLVL_COMPLEX_PRECHARGE_WAIT = 7'b0110101; //35 + localparam INIT_RDLVL_COMPLEX_ACT = 7'b0110110; //36 + localparam INIT_RDLVL_COMPLEX_ACT_WAIT = 7'b0110111; //37 + localparam INIT_RDLVL_COMPLEX_READ = 7'b0111000; //38 + localparam INIT_RDLVL_COMPLEX_READ_WAIT = 7'b0111001; //39 + localparam INIT_RDLVL_COMPLEX_PRECHARGE_PREWAIT = 7'b0111010; //3A + localparam INIT_OCAL_COMPLEX_ACT = 7'b0111011; //3B + localparam INIT_OCAL_COMPLEX_ACT_WAIT = 7'b0111100; //3C + localparam INIT_OCAL_COMPLEX_WRITE_WAIT = 7'b0111101; //3D + localparam INIT_OCAL_COMPLEX_RESUME_WAIT = 7'b0111110; //3E + localparam INIT_OCAL_CENTER_ACT = 7'b0111111; //3F + localparam INIT_OCAL_CENTER_WRITE = 7'b1000000; //40 + localparam INIT_OCAL_CENTER_WRITE_WAIT = 7'b1000001; //41 + localparam INIT_OCAL_CENTER_ACT_WAIT = 7'b1000010; //42 + localparam INIT_RDLVL_COMPLEX_PI_WAIT = 7'b1000011; //43 + localparam INIT_SKIP_CALIB_WAIT = 7'b1000100; //44 + + integer i, j, k, l, m, n, p, q; + + reg pi_dqs_found_all_r; + (* ASYNC_REG = "TRUE" *) reg pi_phase_locked_all_r1; + (* ASYNC_REG = "TRUE" *) reg pi_phase_locked_all_r2; + (* ASYNC_REG = "TRUE" *) reg pi_phase_locked_all_r3; + (* ASYNC_REG = "TRUE" *) reg pi_phase_locked_all_r4; + reg pi_calib_rank_done_r; + reg [13:0] pi_phaselock_timer; + reg stg1_wr_done; + reg rnk_ref_cnt; + reg pi_dqs_found_done_r1; + reg pi_dqs_found_rank_done_r; + reg read_calib_int; + reg read_calib_r; + reg pi_calib_done_r; + reg pi_calib_done_r1; + reg burst_addr_r; + reg [1:0] chip_cnt_r; + reg [6:0] cnt_cmd_r; + reg cnt_cmd_done_r; + reg cnt_cmd_done_m7_r; + reg [7:0] cnt_dllk_zqinit_r; + reg cnt_dllk_zqinit_done_r; + reg cnt_init_af_done_r; + reg [1:0] cnt_init_af_r; + reg [1:0] cnt_init_data_r; + reg [1:0] cnt_init_mr_r; + reg cnt_init_mr_done_r; + reg cnt_init_pre_wait_done_r; + reg [7:0] cnt_init_pre_wait_r; + reg [9:0] cnt_pwron_ce_r; + reg cnt_pwron_cke_done_r; + reg cnt_pwron_cke_done_r1; + reg [8:0] cnt_pwron_r; + reg cnt_pwron_reset_done_r; + reg cnt_txpr_done_r; + reg [7:0] cnt_txpr_r; + reg ddr2_pre_flag_r; + reg ddr2_refresh_flag_r; + reg ddr3_lm_done_r; + reg [4:0] enable_wrlvl_cnt; + reg init_complete_r; + reg init_complete_r1; + reg init_complete_r2; +(* keep = "true" *) reg init_complete_r_timing; +(* keep = "true" *) reg init_complete_r1_timing; + reg [6:0] init_next_state; + reg [6:0] init_state_r; + reg [6:0] init_state_r1; + wire [15:0] load_mr0; + wire [15:0] load_mr1; + wire [15:0] load_mr2; + wire [15:0] load_mr3; + reg mem_init_done_r; + reg [1:0] mr2_r [0:3]; + reg [2:0] mr1_r [0:3]; + reg new_burst_r; + reg [15:0] wrcal_start_dly_r; + wire wrcal_start_pre; + reg wrcal_resume_r; + // Only one ODT signal per rank in PHY Control Block + reg [nCK_PER_CLK-1:0] phy_tmp_odt_r; + reg [nCK_PER_CLK-1:0] phy_tmp_odt_r1; + + reg [CS_WIDTH*nCS_PER_RANK-1:0] phy_tmp_cs1_r; + reg [CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK-1:0] phy_int_cs_n; + wire prech_done_pre; + reg [15:0] prech_done_dly_r; + reg prech_pending_r; + reg prech_req_posedge_r; + reg prech_req_r; + reg pwron_ce_r; + reg first_rdlvl_pat_r; + reg first_wrcal_pat_r; + reg phy_wrdata_en; + reg phy_wrdata_en_r1; + reg [1:0] wrdata_pat_cnt; + reg [1:0] wrcal_pat_cnt; + reg [ROW_WIDTH-1:0] address_w; + reg [BANK_WIDTH-1:0] bank_w; + reg rdlvl_stg1_done_r1; + reg rdlvl_stg1_start_int; + reg [15:0] rdlvl_start_dly0_r; + reg rdlvl_start_pre; + reg rdlvl_last_byte_done_r; + wire rdlvl_rd; + wire rdlvl_wr; + reg rdlvl_wr_r; + wire rdlvl_wr_rd; + reg [3:0] reg_ctrl_cnt_r; + reg [1:0] tmp_mr2_r [0:3]; + reg [2:0] tmp_mr1_r [0:3]; + reg wrlvl_done_r; + reg wrlvl_done_r1; + reg wrlvl_rank_done_r1; + reg wrlvl_rank_done_r2; + reg wrlvl_rank_done_r3; + reg wrlvl_rank_done_r4; + reg wrlvl_rank_done_r5; + reg wrlvl_rank_done_r6; + reg wrlvl_rank_done_r7; + reg [2:0] wrlvl_rank_cntr; + reg wrlvl_odt_ctl; + reg wrlvl_odt; + reg wrlvl_active; + reg wrlvl_active_r1; + reg [2:0] num_reads; + reg temp_wrcal_done_r; + reg temp_lmr_done; + reg extend_cal_pat; + reg [13:0] tg_timer; + reg tg_timer_go; + reg cnt_wrcal_rd; + reg [3:0] cnt_wait; + reg [7:0] wrcal_reads; + reg [8:0] stg1_wr_rd_cnt; + reg phy_data_full_r; + reg wr_level_dqs_asrt; + reg wr_level_dqs_asrt_r1; + reg [1:0] dqs_asrt_cnt; + + + reg [3:0] num_refresh; + wire oclkdelay_calib_start_pre; + reg [15:0] oclkdelay_start_dly_r; + reg [3:0] oclk_wr_cnt; + reg [3:0] wrcal_wr_cnt; + reg wrlvl_final_r; + + + reg prbs_rdlvl_done_r1; + reg prbs_rdlvl_done_r2; + reg prbs_rdlvl_done_r3; + reg prbs_last_byte_done_r; + reg phy_if_empty_r; + reg prbs_pat_resume_int; + reg complex_row0_wr_done; + reg complex_row1_wr_done; + reg complex_row0_rd_done; + reg complex_row1_rd_done; + reg complex_row0_rd_done_r1; + reg [3:0] complex_wait_cnt; + reg [3:0] complex_num_reads; + reg [3:0] complex_num_reads_dec; + reg [ROW_WIDTH-1:0] complex_address; + reg wr_victim_inc; + reg [2:0] wr_victim_sel; + reg [7:0] complex_row_cnt; + + reg complex_sample_cnt_inc_r1; + reg complex_sample_cnt_inc_r2; + reg complex_odt_ext; + reg complex_ocal_odt_ext; + + reg wrcal_final_chk; + wire prech_req; + + reg reset_rd_addr_r1; + reg complex_rdlvl_int_ref_req; + reg ext_int_ref_req; + + //complex OCLK delay calibration + reg [7:0] complex_row_cnt_ocal; + reg [4:0] complex_num_writes; + reg [4:0] complex_num_writes_dec; + reg complex_oclkdelay_calib_start_int; + reg complex_oclkdelay_calib_start_r1; + reg complex_oclkdelay_calib_start_r2; + reg complex_oclkdelay_calib_done_r1; + // reg [DQS_CNT_WIDTH:0] wr_byte_cnt_ocal; + reg [2:0] wr_victim_sel_ocal; + + reg complex_row1_rd_done_r1; //time for switch to write + reg [2:0] complex_row1_rd_cnt; //row1 read number for the byte (8 (16 rows) row1) + reg complex_byte_rd_done; //read for the byte is done + reg complex_byte_rd_done_r1; + // reg complex_row_change; //every 16 rows of read, it is set to "0" for write + reg ocal_num_samples_inc; //1 read/write is done + reg complex_ocal_wr_start; //indicate complex ocal write is started. used for prbs rd addr gen + + reg prbs_rdlvl_done_pulse; //rising edge for prbs_rdlvl_done. used for pipelining + reg prech_done_r1, prech_done_r2, prech_done_r3; + reg mask_lim_done; + reg complex_mask_lim_done; + reg oclkdelay_calib_start_int; + reg [REFRESH_TIMER_WIDTH-1:0] oclkdelay_ref_cnt; + reg oclkdelay_int_ref_req; + reg [3:0] ocal_act_wait_cnt; + reg oclk_calib_resume_level; + reg ocal_last_byte_done; + wire mmcm_wr; //MMCM centering write. no CS will be set + + wire exit_ocal_complex_resume_wait = + init_state_r == INIT_OCAL_COMPLEX_RESUME_WAIT && complex_oclk_calib_resume; + + reg calib_tap_inc_done_r1; + + + + //*************************************************************************** + // Debug + //*************************************************************************** + + //synthesis translate_off + always @(posedge mem_init_done_r) begin + if (!rst) + $display ("PHY_INIT: Memory Initialization completed at %t", $time); + end + + always @(posedge wrlvl_done) begin + if (!rst && (WRLVL == "ON")) + $display ("PHY_INIT: Write Leveling completed at %t", $time); + end + + always @(posedge rdlvl_stg1_done) begin + if (!rst) + $display ("PHY_INIT: Read Leveling Stage 1 completed at %t", $time); + end + + always @(posedge mpr_rdlvl_done) begin + if (!rst) + $display ("PHY_INIT: MPR Read Leveling completed at %t", $time); + end + + always @(posedge oclkdelay_calib_done) begin + if (!rst) + $display ("PHY_INIT: OCLKDELAY calibration completed at %t", $time); + end + + always @(posedge pi_calib_done_r1) begin + if (!rst) + $display ("PHY_INIT: Phaser_In Phase Locked at %t", $time); + end + + always @(posedge pi_dqs_found_done) begin + if (!rst) + $display ("PHY_INIT: Phaser_In DQSFOUND completed at %t", $time); + end + + always @(posedge wrcal_done) begin + if (!rst && (WRLVL == "ON")) + $display ("PHY_INIT: Write Calibration completed at %t", $time); + end + + always@(posedge prbs_rdlvl_done)begin + if(!rst) + $display("PHY_INIT : PRBS/PER_BIT calibration completed at %t",$time); + end + + + always@(posedge complex_oclkdelay_calib_done)begin + if(!rst) + $display("PHY_INIT : COMPLEX OCLKDELAY calibration completed at %t",$time); + end + always@(posedge oclkdelay_center_calib_done)begin + if(!rst) + $display("PHY_INIT : OCLKDELAY CENTER CALIB calibration completed at %t",$time); + end + + //synthesis translate_on + + assign dbg_phy_init[5:0] = init_state_r; + assign dbg_phy_init[6+:8] = complex_row_cnt; + assign dbg_phy_init[14+:3] = victim_sel; + assign dbg_phy_init[17+:4] = victim_byte_cnt; + assign dbg_phy_init[21+:9] = stg1_wr_rd_cnt[8:0]; + assign dbg_phy_init[30+:15] = complex_address; + assign dbg_phy_init[(30+15)+:15] = phy_address[14:0]; + assign dbg_phy_init[60] =prbs_rdlvl_prech_req ; + assign dbg_phy_init[61] =prech_req_posedge_r ; + + + //*************************************************************************** + // DQS count to be sent to hard PHY during Phaser_IN Phase Locking stage + //*************************************************************************** + +// assign pi_phaselock_calib_cnt = dqs_cnt_r; + + assign pi_calib_done = pi_calib_done_r1; + + //prevent PI incdec during complex read + always @ (posedge clk) + complex_act_start <= #TCQ (init_state_r == INIT_RDLVL_COMPLEX_ACT) || (init_state_r == INIT_RDLVL_COMPLEX_PI_WAIT); + + //detect rising edge of prbs_rdlvl_done to reset all control sighals + always @ (posedge clk) begin + prbs_rdlvl_done_pulse <= #TCQ prbs_rdlvl_done & ~prbs_rdlvl_done_r1; + end + + always @(posedge clk) begin + if (rst) + wrcal_final_chk <= #TCQ 1'b0; + else if ((init_next_state == INIT_WRCAL_ACT) && (wrcal_done || (SKIP_CALIB == "TRUE")) && + (DRAM_TYPE == "DDR3")) + wrcal_final_chk <= #TCQ 1'b1; + end + + always @(posedge clk) begin + rdlvl_stg1_done_r1 <= #TCQ rdlvl_stg1_done; + prbs_rdlvl_done_r1 <= #TCQ prbs_rdlvl_done; + prbs_rdlvl_done_r2 <= #TCQ prbs_rdlvl_done_r1; + prbs_rdlvl_done_r3 <= #TCQ prbs_rdlvl_done_r2; + wrcal_resume_r <= #TCQ wrcal_resume; + wrcal_sanity_chk <= #TCQ wrcal_final_chk; + end + + always @(posedge clk) begin + if (rst) + mpr_end_if_reset <= #TCQ 1'b0; + else if (mpr_last_byte_done && (num_refresh != 'd0)) + mpr_end_if_reset <= #TCQ 1'b1; + else + mpr_end_if_reset <= #TCQ 1'b0; + end + + // Siganl to mask memory model error for Invalid latching edge + + always @(posedge clk) + if (rst) + calib_writes <= #TCQ 1'b0; + else if ((init_state_r == INIT_OCLKDELAY_WRITE) || + (init_state_r == INIT_OCAL_CENTER_WRITE) || + (init_state_r == INIT_RDLVL_STG1_WRITE) || + (init_state_r == INIT_RDLVL_STG1_WRITE_READ) || + (init_state_r == INIT_WRCAL_WRITE) || + (init_state_r == INIT_WRCAL_WRITE_READ)) + calib_writes <= #TCQ 1'b1; + else + calib_writes <= #TCQ 1'b0; + + always @(posedge clk) + if (rst) + wrcal_rd_wait <= #TCQ 1'b0; + else if (init_state_r == INIT_WRCAL_READ_WAIT) + wrcal_rd_wait <= #TCQ 1'b1; + else + wrcal_rd_wait <= #TCQ 1'b0; + + //*************************************************************************** + // Signal PHY completion when calibration is finished + // Signal assertion is delayed by four clock cycles to account for the + // multi cycle path constraint to (phy_init_data_sel) signal. + //*************************************************************************** + + always @(posedge clk) + if (rst) begin + init_complete_r <= #TCQ 1'b0; + init_complete_r_timing <= #TCQ 1'b0; + init_complete_r1 <= #TCQ 1'b0; + init_complete_r1_timing <= #TCQ 1'b0; + init_complete_r2 <= #TCQ 1'b0; + init_calib_complete <= #TCQ 1'b0; + end else begin + if (init_state_r == INIT_DONE) begin + init_complete_r <= #TCQ 1'b1; + init_complete_r_timing <= #TCQ 1'b1; + end + init_complete_r1 <= #TCQ init_complete_r; + init_complete_r1_timing <= #TCQ init_complete_r_timing; + init_complete_r2 <= #TCQ init_complete_r1; + init_calib_complete <= #TCQ init_complete_r2; + end + + always @ (posedge clk) + if (rst) + complex_oclkdelay_calib_done_r1 <= #TCQ 1'b0; + else + complex_oclkdelay_calib_done_r1 <= #TCQ complex_oclkdelay_calib_done; + + //reset read address for starting complex ocaldealy calib + always @ (posedge clk) begin + complex_ocal_reset_rd_addr <= #TCQ ((init_state_r == INIT_OCAL_COMPLEX_ACT_WAIT) && (complex_wait_cnt == 'd9)) || (prbs_last_byte_done && ~prbs_last_byte_done_r); + + end + + //first write for complex oclkdealy calib + always @ (posedge clk) begin + if (rst) + complex_ocal_wr_start <= #TCQ 'b0; + else + complex_ocal_wr_start <= #TCQ complex_ocal_reset_rd_addr? 1'b1 : complex_ocal_wr_start; + end + + //ocal stg3 centering start +// always @ (posedge clk) +// if(rst) oclkdelay_center_calib_start <= #TCQ 1'b0; +// else +// oclkdelay_center_calib_start <= #TCQ ((init_state_r == INIT_OCAL_CENTER_ACT) && lim_done)? 1'b1: oclkdelay_center_calib_start; + + //*************************************************************************** + // Instantiate FF for the phy_init_data_sel signal. A multi cycle path + // constraint will be assigned to this signal. This signal will only be + // used within the PHY + //*************************************************************************** + +// FDRSE u_ff_phy_init_data_sel +// ( +// .Q (phy_init_data_sel), +// .C (clk), +// .CE (1'b1), +// .D (init_complete_r), +// .R (1'b0), +// .S (1'b0) +// ) /* synthesis syn_preserve=1 */ +// /* synthesis syn_replicate = 0 */; + + + //*************************************************************************** + // Mode register programming + //*************************************************************************** + + //***************************************************************** + // DDR3 Load mode reg0 + // Mode Register (MR0): + // [15:13] - unused - 000 + // [12] - Precharge Power-down DLL usage - 0 (DLL frozen, slow-exit), + // 1 (DLL maintained) + // [11:9] - write recovery for Auto Precharge (tWR/tCK = 6) + // [8] - DLL reset - 0 or 1 + // [7] - Test Mode - 0 (normal) + // [6:4],[2] - CAS latency - CAS_LAT + // [3] - Burst Type - BURST_TYPE + // [1:0] - Burst Length - BURST_LEN + // DDR2 Load mode register + // Mode Register (MR): + // [15:14] - unused - 00 + // [13] - reserved - 0 + // [12] - Power-down mode - 0 (normal) + // [11:9] - write recovery - write recovery for Auto Precharge + // (tWR/tCK = 6) + // [8] - DLL reset - 0 or 1 + // [7] - Test Mode - 0 (normal) + // [6:4] - CAS latency - CAS_LAT + // [3] - Burst Type - BURST_TYPE + // [2:0] - Burst Length - BURST_LEN + + //***************************************************************** + generate + if(DRAM_TYPE == "DDR3") begin: gen_load_mr0_DDR3 + assign load_mr0[1:0] = (BURST_MODE == "8") ? 2'b00 : + (BURST_MODE == "OTF") ? 2'b01 : + (BURST_MODE == "4") ? 2'b10 : 2'b11; + assign load_mr0[2] = (nCL >= 12) ? 1'b1 : 1'b0; // LSb of CAS latency + assign load_mr0[3] = (BURST_TYPE == "SEQ") ? 1'b0 : 1'b1; + assign load_mr0[6:4] = ((nCL == 5) || (nCL == 13)) ? 3'b001 : + ((nCL == 6) || (nCL == 14)) ? 3'b010 : + (nCL == 7) ? 3'b011 : + (nCL == 8) ? 3'b100 : + (nCL == 9) ? 3'b101 : + (nCL == 10) ? 3'b110 : + (nCL == 11) ? 3'b111 : + (nCL == 12) ? 3'b000 : 3'b111; + assign load_mr0[7] = 1'b0; + assign load_mr0[8] = 1'b1; // Reset DLL (init only) + assign load_mr0[11:9] = (TWR_CYC == 5) ? 3'b001 : + (TWR_CYC == 6) ? 3'b010 : + (TWR_CYC == 7) ? 3'b011 : + (TWR_CYC == 8) ? 3'b100 : + (TWR_CYC == 9) ? 3'b101 : + (TWR_CYC == 10) ? 3'b101 : + (TWR_CYC == 11) ? 3'b110 : + (TWR_CYC == 12) ? 3'b110 : + (TWR_CYC == 13) ? 3'b111 : + (TWR_CYC == 14) ? 3'b111 : + (TWR_CYC == 15) ? 3'b000 : + (TWR_CYC == 16) ? 3'b000 : 3'b010; + assign load_mr0[12] = 1'b0; // Precharge Power-Down DLL 'slow-exit' + assign load_mr0[15:13] = 3'b000; + end else if (DRAM_TYPE == "DDR2") begin: gen_load_mr0_DDR2 // block: gen + assign load_mr0[2:0] = (BURST_MODE == "8") ? 3'b011 : + (BURST_MODE == "4") ? 3'b010 : 3'b111; + assign load_mr0[3] = (BURST_TYPE == "SEQ") ? 1'b0 : 1'b1; + assign load_mr0[6:4] = (nCL == 3) ? 3'b011 : + (nCL == 4) ? 3'b100 : + (nCL == 5) ? 3'b101 : + (nCL == 6) ? 3'b110 : 3'b111; + assign load_mr0[7] = 1'b0; + assign load_mr0[8] = 1'b1; // Reset DLL (init only) + assign load_mr0[11:9] = (TWR_CYC == 2) ? 3'b001 : + (TWR_CYC == 3) ? 3'b010 : + (TWR_CYC == 4) ? 3'b011 : + (TWR_CYC == 5) ? 3'b100 : + (TWR_CYC == 6) ? 3'b101 : 3'b010; + assign load_mr0[15:12]= 4'b0000; // Reserved + end + endgenerate + + //***************************************************************** + // DDR3 Load mode reg1 + // Mode Register (MR1): + // [15:13] - unused - 00 + // [12] - output enable - 0 (enabled for DQ, DQS, DQS#) + // [11] - TDQS enable - 0 (TDQS disabled and DM enabled) + // [10] - reserved - 0 (must be '0') + // [9] - RTT[2] - 0 + // [8] - reserved - 0 (must be '0') + // [7] - write leveling - 0 (disabled), 1 (enabled) + // [6] - RTT[1] - RTT[1:0] = 0(no ODT), 1(75), 2(150), 3(50) + // [5] - Output driver impedance[1] - 0 (RZQ/6 and RZQ/7) + // [4:3] - Additive CAS - ADDITIVE_CAS + // [2] - RTT[0] + // [1] - Output driver impedance[0] - 0(RZQ/6), or 1 (RZQ/7) + // [0] - DLL enable - 0 (normal) + // DDR2 ext mode register + // Extended Mode Register (MR): + // [15:14] - unused - 00 + // [13] - reserved - 0 + // [12] - output enable - 0 (enabled) + // [11] - RDQS enable - 0 (disabled) + // [10] - DQS# enable - 0 (enabled) + // [9:7] - OCD Program - 111 or 000 (first 111, then 000 during init) + // [6] - RTT[1] - RTT[1:0] = 0(no ODT), 1(75), 2(150), 3(50) + // [5:3] - Additive CAS - ADDITIVE_CAS + // [2] - RTT[0] + // [1] - Output drive - REDUCE_DRV (= 0(full), = 1 (reduced) + // [0] - DLL enable - 0 (normal) + //***************************************************************** + + generate + if(DRAM_TYPE == "DDR3") begin: gen_load_mr1_DDR3 + assign load_mr1[0] = 1'b0; // DLL enabled during Imitialization + assign load_mr1[1] = (OUTPUT_DRV == "LOW") ? 1'b0 : 1'b1; + assign load_mr1[2] = ((RTT_NOM_int == "30") || (RTT_NOM_int == "40") || + (RTT_NOM_int == "60")) ? 1'b1 : 1'b0; + assign load_mr1[4:3] = (AL == "0") ? 2'b00 : + (AL == "CL-1") ? 2'b01 : + (AL == "CL-2") ? 2'b10 : 2'b11; + assign load_mr1[5] = 1'b0; + assign load_mr1[6] = ((RTT_NOM_int == "40") || (RTT_NOM_int == "120")) ? + 1'b1 : 1'b0; + assign load_mr1[7] = 1'b0; // Enable write lvl after init sequence + assign load_mr1[8] = 1'b0; + assign load_mr1[9] = ((RTT_NOM_int == "20") || (RTT_NOM_int == "30")) ? + 1'b1 : 1'b0; + assign load_mr1[10] = 1'b0; + assign load_mr1[15:11] = 5'b00000; + end else if (DRAM_TYPE == "DDR2") begin: gen_load_mr1_DDR2 + assign load_mr1[0] = 1'b0; // DLL enabled during Imitialization + assign load_mr1[1] = (OUTPUT_DRV == "LOW") ? 1'b1 : 1'b0; + assign load_mr1[2] = ((RTT_NOM_int == "75") || (RTT_NOM_int == "50")) ? + 1'b1 : 1'b0; + assign load_mr1[5:3] = (AL == "0") ? 3'b000 : + (AL == "1") ? 3'b001 : + (AL == "2") ? 3'b010 : + (AL == "3") ? 3'b011 : + (AL == "4") ? 3'b100 : 3'b111; + assign load_mr1[6] = ((RTT_NOM_int == "50") || + (RTT_NOM_int == "150")) ? 1'b1 : 1'b0; + assign load_mr1[9:7] = 3'b000; + assign load_mr1[10] = (DDR2_DQSN_ENABLE == "YES") ? 1'b0 : 1'b1; + assign load_mr1[15:11] = 5'b00000; + + end + endgenerate + + //***************************************************************** + // DDR3 Load mode reg2 + // Mode Register (MR2): + // [15:11] - unused - 00 + // [10:9] - RTT_WR - 00 (Dynamic ODT off) + // [8] - reserved - 0 (must be '0') + // [7] - self-refresh temperature range - + // 0 (normal), 1 (extended) + // [6] - Auto Self-Refresh - 0 (manual), 1(auto) + // [5:3] - CAS Write Latency (CWL) - + // 000 (5 for 400 MHz device), + // 001 (6 for 400 MHz to 533 MHz devices), + // 010 (7 for 533 MHz to 667 MHz devices), + // 011 (8 for 667 MHz to 800 MHz) + // [2:0] - Partial Array Self-Refresh (Optional) - + // 000 (full array) + // Not used for DDR2 + //***************************************************************** + generate + if(DRAM_TYPE == "DDR3") begin: gen_load_mr2_DDR3 + assign load_mr2[2:0] = 3'b000; + assign load_mr2[5:3] = (nCWL == 5) ? 3'b000 : + (nCWL == 6) ? 3'b001 : + (nCWL == 7) ? 3'b010 : + (nCWL == 8) ? 3'b011 : + (nCWL == 9) ? 3'b100 : + (nCWL == 10) ? 3'b101 : + (nCWL == 11) ? 3'b110 : 3'b111; + assign load_mr2[6] = 1'b0; + assign load_mr2[7] = 1'b0; + assign load_mr2[8] = 1'b0; + // Dynamic ODT disabled + assign load_mr2[10:9] = 2'b00; + assign load_mr2[15:11] = 5'b00000; + end else begin: gen_load_mr2_DDR2 + assign load_mr2[15:0] = 16'd0; + end + endgenerate + + //***************************************************************** + // DDR3 Load mode reg3 + // Mode Register (MR3): + // [15:3] - unused - All zeros + // [2] - MPR Operation - 0(normal operation), 1(data flow from MPR) + // [1:0] - MPR location - 00 (Predefined pattern) + //***************************************************************** + + assign load_mr3[1:0] = 2'b00; + assign load_mr3[2] = 1'b0; + assign load_mr3[15:3] = 13'b0000000000000; + + // For multi-rank systems the rank being accessed during writes in + // Read Leveling must be sent to phy_write for the bitslip logic + assign calib_rank_cnt = chip_cnt_r; + + //*************************************************************************** + // Logic to begin initial calibration, and to handle precharge requests + // during read-leveling (to avoid tRAS violations if individual read + // levelling calibration stages take more than max{tRAS) to complete). + //*************************************************************************** + + // Assert when readback for each stage of read-leveling begins. However, + // note this indicates only when the read command is issued and when + // Phaser_IN has phase aligned FREQ_REF clock to read DQS. It does not + // indicate when the read data is present on the bus (when this happens + // after the read command is issued depends on CAS LATENCY) - there will + // need to be some delay before valid data is present on the bus. +// assign rdlvl_start_pre = (init_state_r == INIT_PI_PHASELOCK_READS); + + // Assert when read back for oclkdelay calibration begins + assign oclkdelay_calib_start_pre = (init_state_r == INIT_OCAL_CENTER_ACT); //(init_state_r == INIT_OCLKDELAY_READ); + + // Assert when read back for write calibration begins + assign wrcal_start_pre = (init_state_r == INIT_WRCAL_READ) || (init_state_r == INIT_WRCAL_MULT_READS); + + // Common precharge signal done signal - pulses only when there has been + // a precharge issued as a result of a PRECH_REQ pulse. Note also a common + // PRECH_DONE signal is used for all blocks + assign prech_done_pre = (((init_state_r == INIT_RDLVL_STG1_READ) || (init_state_r == INIT_RDLVL_STG1_WRITE_READ) || + ((rdlvl_last_byte_done_r || prbs_last_byte_done_r) && (init_state_r == INIT_RDLVL_ACT_WAIT) && cnt_cmd_done_r) || + (dqs_found_prech_req && (init_state_r == INIT_RDLVL_ACT_WAIT)) || + (init_state_r == INIT_MPR_RDEN) || + ((init_state_r == INIT_WRCAL_ACT_WAIT) && cnt_cmd_done_r) || + (init_state_r == INIT_OCAL_CENTER_ACT) || + ((init_state_r == INIT_RDLVL_COMPLEX_PRECHARGE_PREWAIT) && complex_oclkdelay_calib_start_r1) || + ((init_state_r == INIT_OCLKDELAY_ACT_WAIT) && cnt_cmd_done_r) || + ((init_state_r == INIT_RDLVL_COMPLEX_PRECHARGE) && prbs_last_byte_done_r) || //prbs_rdlvl_done + (wrlvl_final && (init_state_r == INIT_REFRESH_WAIT) && cnt_cmd_done_r && ~oclkdelay_calib_done)) && + prech_pending_r && + !prech_req_posedge_r); + + always @(posedge clk) + if (rst) + calib_tap_inc_start <= #TCQ 1'b0; + else if (init_state_r == INIT_SKIP_CALIB_WAIT) + calib_tap_inc_start <= #TCQ 1'b1; + + always @(posedge clk) + calib_tap_inc_done_r1 <= #TCQ calib_tap_inc_done; + + always @(posedge clk) + if (rst || (init_state_r == INIT_WRCAL_WRITE)) + calib_tap_end_if_reset <= #TCQ 1'b0; + else if (calib_tap_inc_done && ~calib_tap_inc_done_r1) + calib_tap_end_if_reset <= #TCQ 1'b1; + + always @(posedge clk) + if (rst) + pi_phaselock_start <= #TCQ 1'b0; + else if (init_state_r == INIT_PI_PHASELOCK_READS) + pi_phaselock_start <= #TCQ 1'b1; + + // Delay start of each calibration by 16 clock cycles to ensure that when + // calibration logic begins, read data is already appearing on the bus. + // Each circuit should synthesize using an SRL16. Assume that reset is + // long enough to clear contents of SRL16. + always @(posedge clk) begin + rdlvl_last_byte_done_r <= #TCQ rdlvl_last_byte_done; + prbs_last_byte_done_r <= #TCQ prbs_last_byte_done; + rdlvl_start_dly0_r <= #TCQ {rdlvl_start_dly0_r[14:0], + rdlvl_start_pre}; + wrcal_start_dly_r <= #TCQ {wrcal_start_dly_r[14:0], + wrcal_start_pre}; + oclkdelay_start_dly_r <= #TCQ {oclkdelay_start_dly_r[14:0], + oclkdelay_calib_start_pre}; + prech_done_dly_r <= #TCQ {prech_done_dly_r[14:0], + prech_done_pre}; + end + + always @(posedge clk) + if (rst) + oclkdelay_calib_start_int <= #TCQ 1'b0; + else if (oclkdelay_start_dly_r[5]) + oclkdelay_calib_start_int <= #TCQ 1'b1; + + always @(posedge clk) begin + if (rst) + ocal_last_byte_done <= #TCQ 1'b0; + else if ((complex_oclkdelay_calib_cnt == DQS_WIDTH-1) && oclkdelay_center_calib_done) + ocal_last_byte_done <= #TCQ 1'b1; + end + + always @(posedge clk) begin + if (rst || (init_state_r == INIT_REFRESH) || prbs_rdlvl_done || ocal_last_byte_done || oclkdelay_center_calib_done) + oclkdelay_ref_cnt <= #TCQ REFRESH_TIMER; + else if (oclkdelay_calib_start_int) begin + if (oclkdelay_ref_cnt > 'd0) + oclkdelay_ref_cnt <= #TCQ oclkdelay_ref_cnt - 1; + else + oclkdelay_ref_cnt <= #TCQ REFRESH_TIMER; + end + end + + always @(posedge clk) begin + if (rst || (init_state_r == INIT_OCAL_CENTER_ACT) || oclkdelay_calib_done || ocal_last_byte_done || oclkdelay_center_calib_done) + oclkdelay_int_ref_req <= #TCQ 1'b0; + else if (oclkdelay_ref_cnt == 'd1) + oclkdelay_int_ref_req <= #TCQ 1'b1; + end + + always @(posedge clk) begin + if (rst) + ocal_act_wait_cnt <= #TCQ 'd0; + else if ((init_state_r == INIT_OCAL_CENTER_ACT_WAIT) && ocal_act_wait_cnt < 'd15) + ocal_act_wait_cnt <= #TCQ ocal_act_wait_cnt + 1; + else + ocal_act_wait_cnt <= #TCQ 'd0; + end + + always @(posedge clk) begin + if (rst || (init_state_r == INIT_OCLKDELAY_READ)) + oclk_calib_resume_level <= #TCQ 1'b0; + else if (oclk_calib_resume) + oclk_calib_resume_level <= #TCQ 1'b1; + end + + always @(posedge clk) begin + if (rst || (init_state_r == INIT_RDLVL_ACT_WAIT) || prbs_rdlvl_done) + complex_rdlvl_int_ref_req <= #TCQ 1'b0; + else if (oclkdelay_ref_cnt == 'd1) +// complex_rdlvl_int_ref_req <= #TCQ 1'b1; + complex_rdlvl_int_ref_req <= #TCQ 1'b0; //temporary fix for read issue + end + + always @(posedge clk) begin + if (rst || (init_state_r == INIT_RDLVL_COMPLEX_READ)) + ext_int_ref_req <= #TCQ 1'b0; + else if ((init_state_r == INIT_RDLVL_ACT_WAIT) && complex_rdlvl_int_ref_req) + ext_int_ref_req <= #TCQ 1'b1; + end + + + always @(posedge clk) begin + prech_done <= #TCQ prech_done_dly_r[15]; + prech_done_r1 <= #TCQ prech_done_dly_r[15]; + prech_done_r2 <= #TCQ prech_done_r1; + prech_done_r3 <= #TCQ prech_done_r2; + end + + + always @(posedge clk) + if (rst) + mpr_rdlvl_start <= #TCQ 1'b0; + else if (pi_dqs_found_done && + (init_state_r == INIT_MPR_READ)) + mpr_rdlvl_start <= #TCQ 1'b1; + + always @(posedge clk) + phy_if_empty_r <= #TCQ phy_if_empty; + + always @(posedge clk) + if (rst || + ((stg1_wr_rd_cnt == 'd2) && ~stg1_wr_done) || prbs_rdlvl_done) + prbs_gen_clk_en <= #TCQ 1'b0; + else if ((~phy_if_empty_r && rdlvl_stg1_done_r1 && ~prbs_rdlvl_done) || + ((init_state_r == INIT_RDLVL_ACT_WAIT) && rdlvl_stg1_done_r1 && (cnt_cmd_r == 'd127)) || + ((init_state_r == INIT_RDLVL_COMPLEX_ACT_WAIT) && rdlvl_stg1_done_r1 && (complex_wait_cnt == 'd14)) + || (init_state_r == INIT_RDLVL_COMPLEX_READ) || ((init_state_r == INIT_PRECHARGE_PREWAIT) && prbs_rdlvl_start)) + prbs_gen_clk_en <= #TCQ 1'b1; + + //Enable for complex oclkdelay - used in prbs gen + always @(posedge clk) + if (rst || + ((stg1_wr_rd_cnt == 'd2) && ~stg1_wr_done) || complex_oclkdelay_calib_done || + (complex_wait_cnt == 'd15 && complex_num_writes == 1 && complex_ocal_wr_start) || + ( init_state_r == INIT_RDLVL_STG1_WRITE && complex_num_writes_dec == 'd2) || ~complex_ocal_wr_start || + (complex_byte_rd_done && init_state_r == INIT_RDLVL_COMPLEX_ACT ) || + (init_state_r != INIT_OCAL_COMPLEX_RESUME_WAIT && init_state_r1 == INIT_OCAL_COMPLEX_RESUME_WAIT) || + (init_state_r == INIT_OCAL_COMPLEX_ACT)) + prbs_gen_oclk_clk_en <= #TCQ 1'b0; + else if ((~phy_if_empty_r && ~complex_oclkdelay_calib_done && prbs_rdlvl_done_r1) || // changed for new algo 3/26 + ((init_state_r == INIT_OCAL_COMPLEX_ACT_WAIT) && (complex_wait_cnt == 'd14)) || + ((init_state_r == INIT_OCAL_COMPLEX_WRITE_WAIT) && (complex_wait_cnt == 'd14)) || + exit_ocal_complex_resume_wait || + ((init_state_r == INIT_RDLVL_COMPLEX_ACT_WAIT) && ~stg1_wr_done && ~complex_row1_wr_done && ~complex_ocal_num_samples_done_r && (complex_wait_cnt == 'd14)) + || (init_state_r == INIT_RDLVL_COMPLEX_READ) ) + prbs_gen_oclk_clk_en <= #TCQ 1'b1; + +generate +if (RANKS < 2) begin + always @(posedge clk) + if (rst) begin + rdlvl_stg1_start <= #TCQ 1'b0; + rdlvl_stg1_start_int <= #TCQ 1'b0; + rdlvl_start_pre <= #TCQ 1'b0; + prbs_rdlvl_start <= #TCQ 1'b0; + end else begin + if (pi_dqs_found_done && cnt_cmd_done_r && + (init_state_r == INIT_RDLVL_ACT_WAIT)) + rdlvl_stg1_start_int <= #TCQ 1'b1; + if (pi_dqs_found_done && + (init_state_r == INIT_RDLVL_STG1_READ))begin + rdlvl_start_pre <= #TCQ 1'b1; + rdlvl_stg1_start <= #TCQ rdlvl_start_dly0_r[14]; + end + if (pi_dqs_found_done && rdlvl_stg1_done && ~prbs_rdlvl_done && + (init_state_r == INIT_RDLVL_COMPLEX_PI_WAIT) && (WRLVL == "ON")) begin + prbs_rdlvl_start <= #TCQ 1'b1; + end + end +end else begin + always @(posedge clk) + if (rst || rdlvl_stg1_rank_done) begin + rdlvl_stg1_start <= #TCQ 1'b0; + rdlvl_stg1_start_int <= #TCQ 1'b0; + rdlvl_start_pre <= #TCQ 1'b0; + prbs_rdlvl_start <= #TCQ 1'b0; + end else begin + if (pi_dqs_found_done && cnt_cmd_done_r && + (init_state_r == INIT_RDLVL_ACT_WAIT)) + rdlvl_stg1_start_int <= #TCQ 1'b1; + if (pi_dqs_found_done && + (init_state_r == INIT_RDLVL_STG1_READ))begin + rdlvl_start_pre <= #TCQ 1'b1; + rdlvl_stg1_start <= #TCQ rdlvl_start_dly0_r[14]; + end + if (pi_dqs_found_done && rdlvl_stg1_done && ~prbs_rdlvl_done && + (init_state_r == INIT_RDLVL_COMPLEX_PI_WAIT) && (WRLVL == "ON")) begin + prbs_rdlvl_start <= #TCQ 1'b1; + end + end +end +endgenerate + + + always @(posedge clk) begin + if (rst || dqsfound_retry || wrlvl_byte_redo) begin + pi_dqs_found_start <= #TCQ 1'b0; + wrcal_start <= #TCQ 1'b0; + end else begin + if (!pi_dqs_found_done && init_state_r == INIT_RDLVL_STG2_READ) + pi_dqs_found_start <= #TCQ 1'b1; + if (wrcal_start_dly_r[5]) + wrcal_start <= #TCQ 1'b1; + end + end // else: !if(rst) + + + always @(posedge clk) + if (rst) + oclkdelay_calib_start <= #TCQ 1'b0; + else if (oclkdelay_start_dly_r[5]) + oclkdelay_calib_start <= #TCQ 1'b1; + + always @(posedge clk) + if (rst) + pi_dqs_found_done_r1 <= #TCQ 1'b0; + else + pi_dqs_found_done_r1 <= #TCQ pi_dqs_found_done; + + + always @(posedge clk) + wrlvl_final_r <= #TCQ wrlvl_final; + + // Reset IN_FIFO after final write leveling to make sure the FIFO + // pointers are initialized + always @(posedge clk) + if (rst || (init_state_r == INIT_WRCAL_WRITE) || (init_state_r == INIT_REFRESH)) + wrlvl_final_if_rst <= #TCQ 1'b0; + else if (wrlvl_done_r && //(wrlvl_final_r && wrlvl_done_r && + (init_state_r == INIT_WRLVL_LOAD_MR2)) + wrlvl_final_if_rst <= #TCQ 1'b1; + + // Constantly enable DQS while write leveling is enabled in the memory + // This is more to get rid of warnings in simulation, can later change + // this code to only enable WRLVL_ACTIVE when WRLVL_START is asserted + + always @(posedge clk) + if (rst || + ((init_state_r1 != INIT_WRLVL_START) && + (init_state_r == INIT_WRLVL_START))) + wrlvl_odt_ctl <= #TCQ 1'b0; + else if (wrlvl_rank_done && ~wrlvl_rank_done_r1) + wrlvl_odt_ctl <= #TCQ 1'b1; + + generate + if (nCK_PER_CLK == 4) begin: en_cnt_div4 + always @ (posedge clk) + if (rst) + enable_wrlvl_cnt <= #TCQ 5'd0; + else if ((init_state_r == INIT_WRLVL_START) || + (wrlvl_odt && (enable_wrlvl_cnt == 5'd0))) + enable_wrlvl_cnt <= #TCQ 5'd12; + else if ((enable_wrlvl_cnt > 5'd0) && ~(phy_ctl_full || phy_cmd_full)) + enable_wrlvl_cnt <= #TCQ enable_wrlvl_cnt - 1; + + // ODT stays asserted as long as write_calib + // signal is asserted + always @(posedge clk) + if (rst || wrlvl_odt_ctl) + wrlvl_odt <= #TCQ 1'b0; + else if (enable_wrlvl_cnt == 5'd1) + wrlvl_odt <= #TCQ 1'b1; + + end else begin: en_cnt_div2 + always @ (posedge clk) + if (rst) + enable_wrlvl_cnt <= #TCQ 5'd0; + else if ((init_state_r == INIT_WRLVL_START) || + (wrlvl_odt && (enable_wrlvl_cnt == 5'd0))) + enable_wrlvl_cnt <= #TCQ 5'd21; + else if ((enable_wrlvl_cnt > 5'd0) && ~(phy_ctl_full || phy_cmd_full)) + enable_wrlvl_cnt <= #TCQ enable_wrlvl_cnt - 1; + + // ODT stays asserted as long as write_calib + // signal is asserted + always @(posedge clk) + if (rst || wrlvl_odt_ctl) + wrlvl_odt <= #TCQ 1'b0; + else if (enable_wrlvl_cnt == 5'd1) + wrlvl_odt <= #TCQ 1'b1; + + end + endgenerate + + always @(posedge clk) + if (rst || wrlvl_rank_done || done_dqs_tap_inc) + wrlvl_active <= #TCQ 1'b0; + else if ((enable_wrlvl_cnt == 5'd1) && wrlvl_odt && !wrlvl_active) + wrlvl_active <= #TCQ 1'b1; + +// signal used to assert DQS for write leveling. +// the DQS will be asserted once every 16 clock cycles. + always @(posedge clk)begin + if(rst || (enable_wrlvl_cnt != 5'd1)) begin + wr_level_dqs_asrt <= #TCQ 1'd0; + end else if ((enable_wrlvl_cnt == 5'd1) && (wrlvl_active_r1)) begin + wr_level_dqs_asrt <= #TCQ 1'd1; + end + end + + always @ (posedge clk) begin + if (rst || (wrlvl_done_r && ~wrlvl_done_r1)) + dqs_asrt_cnt <= #TCQ 2'd0; + else if (wr_level_dqs_asrt && dqs_asrt_cnt != 2'd3) + dqs_asrt_cnt <= #TCQ (dqs_asrt_cnt + 1); + end + + always @ (posedge clk) begin + if (rst || ~wrlvl_active) + wr_lvl_start <= #TCQ 1'd0; + else if (dqs_asrt_cnt == 2'd3) + wr_lvl_start <= #TCQ 1'd1; + end + + + always @(posedge clk) begin + if (rst) + wl_sm_start <= #TCQ 1'b0; + else + wl_sm_start <= #TCQ wr_level_dqs_asrt_r1; + end + + + always @(posedge clk) begin + wrlvl_active_r1 <= #TCQ wrlvl_active; + wr_level_dqs_asrt_r1 <= #TCQ wr_level_dqs_asrt; + wrlvl_done_r <= #TCQ wrlvl_done; + wrlvl_done_r1 <= #TCQ wrlvl_done_r; + wrlvl_rank_done_r1 <= #TCQ wrlvl_rank_done; + wrlvl_rank_done_r2 <= #TCQ wrlvl_rank_done_r1; + wrlvl_rank_done_r3 <= #TCQ wrlvl_rank_done_r2; + wrlvl_rank_done_r4 <= #TCQ wrlvl_rank_done_r3; + wrlvl_rank_done_r5 <= #TCQ wrlvl_rank_done_r4; + wrlvl_rank_done_r6 <= #TCQ wrlvl_rank_done_r5; + wrlvl_rank_done_r7 <= #TCQ wrlvl_rank_done_r6; + end + + always @ (posedge clk) begin + //if (rst) + wrlvl_rank_cntr <= #TCQ 3'd0; + //else if (wrlvl_rank_done) + // wrlvl_rank_cntr <= #TCQ wrlvl_rank_cntr + 1'b1; + end + + //***************************************************************** + // Precharge request logic - those calibration logic blocks + // that require greater than tRAS(max) to finish must break up + // their calibration into smaller units of time, with precharges + // issued in between. This is done using the XXX_PRECH_REQ and + // PRECH_DONE handshaking between PHY_INIT and those blocks + //***************************************************************** + + // Shared request from multiple sources + assign prech_req = oclk_prech_req | rdlvl_prech_req | wrcal_prech_req | prbs_rdlvl_prech_req | + (dqs_found_prech_req & (init_state_r == INIT_RDLVL_STG2_READ_WAIT)); + + // Handshaking logic to force precharge during read leveling, and to + // notify read leveling logic when precharge has been initiated and + // it's okay to proceed with leveling again + always @(posedge clk) + if (rst) begin + prech_req_r <= #TCQ 1'b0; + prech_req_posedge_r <= #TCQ 1'b0; + prech_pending_r <= #TCQ 1'b0; + end else begin + prech_req_r <= #TCQ prech_req; + prech_req_posedge_r <= #TCQ prech_req & ~prech_req_r; + if (prech_req_posedge_r) + prech_pending_r <= #TCQ 1'b1; + // Clear after we've finished with the precharge and have + // returned to issuing read leveling calibration reads + else if (prech_done_pre) + prech_pending_r <= #TCQ 1'b0; + end + + always @(posedge clk) begin + if (rst || prech_done_r3) + mask_lim_done <= #TCQ 1'b0; + else if (prech_pending_r) + mask_lim_done <= #TCQ 1'b1; + end + + always @(posedge clk) begin + if (rst || prbs_rdlvl_done_r3) + complex_mask_lim_done <= #TCQ 1'b0; + else if (~prbs_rdlvl_done && complex_oclkdelay_calib_start_int) + complex_mask_lim_done <= #TCQ 1'b1; + end + + //Complex oclkdelay calibrration + + //*************************************************************************** + // Various timing counters + //*************************************************************************** + + //***************************************************************** + // Generic delay for various states that require it (e.g. for turnaround + // between read and write). Make this a sufficiently large number of clock + // cycles to cover all possible frequencies and memory components) + // Requirements for this counter: + // 1. Greater than tMRD + // 2. tRFC (refresh-active) for DDR2 + // 3. (list the other requirements, slacker...) + //***************************************************************** + + always @(posedge clk) begin + case (init_state_r) + INIT_LOAD_MR_WAIT, + INIT_WRLVL_LOAD_MR_WAIT, + INIT_WRLVL_LOAD_MR2_WAIT, + INIT_MPR_WAIT, + INIT_MPR_DISABLE_PREWAIT, + INIT_MPR_DISABLE_WAIT, + INIT_OCLKDELAY_ACT_WAIT, + INIT_OCLKDELAY_WRITE_WAIT, + INIT_RDLVL_ACT_WAIT, + INIT_RDLVL_STG1_WRITE_READ, + INIT_RDLVL_STG2_READ_WAIT, + INIT_WRCAL_ACT_WAIT, + INIT_WRCAL_WRITE_READ, + INIT_WRCAL_READ_WAIT, + INIT_PRECHARGE_PREWAIT, + INIT_PRECHARGE_WAIT, + INIT_DDR2_PRECHARGE_WAIT, + INIT_REG_WRITE_WAIT, + INIT_REFRESH_WAIT, + INIT_REFRESH_RNK2_WAIT: begin + if (phy_ctl_full || phy_cmd_full) + cnt_cmd_r <= #TCQ cnt_cmd_r; + else + cnt_cmd_r <= #TCQ cnt_cmd_r + 1; + end + INIT_WRLVL_WAIT: + cnt_cmd_r <= #TCQ 'b0; + default: + cnt_cmd_r <= #TCQ 'b0; + endcase + end + + // pulse when count reaches terminal count + always @(posedge clk) + cnt_cmd_done_r <= #TCQ (cnt_cmd_r == CNTNEXT_CMD); + + // For ODT deassertion - hold throughout post read/write wait stage, but + // deassert before next command. The post read/write stage is very long, so + // we simply address the longest case here plus some margin. + always @(posedge clk) + cnt_cmd_done_m7_r <= #TCQ (cnt_cmd_r == (CNTNEXT_CMD - 7)); + +//************************************************************************ +// Added to support PO fine delay inc when TG errors + always @(posedge clk) begin + case (init_state_r) + INIT_WRCAL_READ_WAIT: begin + if (phy_ctl_full || phy_cmd_full) + cnt_wait <= #TCQ cnt_wait; + else + cnt_wait <= #TCQ cnt_wait + 1; + end + default: + cnt_wait <= #TCQ 'b0; + endcase + end + + always @(posedge clk) + cnt_wrcal_rd <= #TCQ (cnt_wait == 'd4); + + always @(posedge clk) begin + if (rst || ~temp_wrcal_done) + temp_lmr_done <= #TCQ 1'b0; + else if (temp_wrcal_done && (init_state_r == INIT_LOAD_MR)) + temp_lmr_done <= #TCQ 1'b1; + end + + always @(posedge clk) + temp_wrcal_done_r <= #TCQ temp_wrcal_done; + + always @(posedge clk) + if (rst) begin + tg_timer_go <= #TCQ 1'b0; + end else if ((PRE_REV3ES == "ON") && temp_wrcal_done && temp_lmr_done && + (init_state_r == INIT_WRCAL_READ_WAIT)) begin + tg_timer_go <= #TCQ 1'b1; + end else begin + tg_timer_go <= #TCQ 1'b0; + end + + always @(posedge clk) begin + if (rst || (temp_wrcal_done && ~temp_wrcal_done_r) || + (init_state_r == INIT_PRECHARGE_PREWAIT)) + tg_timer <= #TCQ 'd0; + else if ((pi_phaselock_timer == PHASELOCKED_TIMEOUT) && + tg_timer_go && + (tg_timer != TG_TIMER_TIMEOUT)) + tg_timer <= #TCQ tg_timer + 1; + end + + always @(posedge clk) begin + if (rst) + tg_timer_done <= #TCQ 1'b0; + else if (tg_timer == TG_TIMER_TIMEOUT) + tg_timer_done <= #TCQ 1'b1; + else + tg_timer_done <= #TCQ 1'b0; + end + + always @(posedge clk) begin + if (rst) + no_rst_tg_mc <= #TCQ 1'b0; + else if ((init_state_r == INIT_WRCAL_ACT) && wrcal_read_req) + no_rst_tg_mc <= #TCQ 1'b1; + else + no_rst_tg_mc <= #TCQ 1'b0; + end + +//************************************************************************ + + always @(posedge clk) begin + if (rst) + detect_pi_found_dqs <= #TCQ 1'b0; + else if ((cnt_cmd_r == 7'b0111111) && + (init_state_r == INIT_RDLVL_STG2_READ_WAIT)) + detect_pi_found_dqs <= #TCQ 1'b1; + else + detect_pi_found_dqs <= #TCQ 1'b0; + end + + //***************************************************************** + // Initial delay after power-on for RESET, CKE + // NOTE: Could reduce power consumption by turning off these counters + // after initial power-up (at expense of more logic) + // NOTE: Likely can combine multiple counters into single counter + //***************************************************************** + + // Create divided by 1024 version of clock + always @(posedge clk) + if (rst) begin + cnt_pwron_ce_r <= #TCQ 10'h000; + pwron_ce_r <= #TCQ 1'b0; + end else begin + cnt_pwron_ce_r <= #TCQ cnt_pwron_ce_r + 1; + pwron_ce_r <= #TCQ (cnt_pwron_ce_r == 10'h3FF); + end + + // "Main" power-on counter - ticks every CLKDIV/1024 cycles + always @(posedge clk) + if (rst) + cnt_pwron_r <= #TCQ 'b0; + else if (pwron_ce_r) + cnt_pwron_r <= #TCQ cnt_pwron_r + 1; + + always @(posedge clk) + if (rst || ~phy_ctl_ready) begin + cnt_pwron_reset_done_r <= #TCQ 1'b0; + cnt_pwron_cke_done_r <= #TCQ 1'b0; + end else begin + // skip power-up count for simulation purposes only + if ((SIM_INIT_OPTION == "SKIP_PU_DLY") || + (SIM_INIT_OPTION == "SKIP_INIT")) begin + cnt_pwron_reset_done_r <= #TCQ 1'b1; + cnt_pwron_cke_done_r <= #TCQ 1'b1; + end else begin + // otherwise, create latched version of done signal for RESET, CKE + if (DRAM_TYPE == "DDR3") begin + if (!cnt_pwron_reset_done_r) + cnt_pwron_reset_done_r + <= #TCQ (cnt_pwron_r == PWRON_RESET_DELAY_CNT); + if (!cnt_pwron_cke_done_r) + cnt_pwron_cke_done_r + <= #TCQ (cnt_pwron_r == PWRON_CKE_DELAY_CNT); + end else begin // DDR2 + cnt_pwron_reset_done_r <= #TCQ 1'b1; // not needed + if (!cnt_pwron_cke_done_r) + cnt_pwron_cke_done_r + <= #TCQ (cnt_pwron_r == PWRON_CKE_DELAY_CNT); + end + end + end // else: !if(rst || ~phy_ctl_ready) + + + always @(posedge clk) + cnt_pwron_cke_done_r1 <= #TCQ cnt_pwron_cke_done_r; + + // Keep RESET asserted and CKE deasserted until after power-on delay + always @(posedge clk or posedge rst) begin + if (rst) + phy_reset_n <= #TCQ 1'b0; + else + phy_reset_n <= #TCQ cnt_pwron_reset_done_r; +// phy_cke <= #TCQ {CKE_WIDTH{cnt_pwron_cke_done_r}}; + end + + //***************************************************************** + // Counter for tXPR (pronouned "Tax-Payer") - wait time after + // CKE deassertion before first MRS command can be asserted + //***************************************************************** + + always @(posedge clk) + if (!cnt_pwron_cke_done_r) begin + cnt_txpr_r <= #TCQ 'b0; + cnt_txpr_done_r <= #TCQ 1'b0; + end else begin + cnt_txpr_r <= #TCQ cnt_txpr_r + 1; + if (!cnt_txpr_done_r) + cnt_txpr_done_r <= #TCQ (cnt_txpr_r == TXPR_DELAY_CNT); + end + + //***************************************************************** + // Counter for the initial 400ns wait for issuing precharge all + // command after CKE assertion. Only for DDR2. + //***************************************************************** + + always @(posedge clk) + if (!cnt_pwron_cke_done_r) begin + cnt_init_pre_wait_r <= #TCQ 'b0; + cnt_init_pre_wait_done_r <= #TCQ 1'b0; + end else begin + cnt_init_pre_wait_r <= #TCQ cnt_init_pre_wait_r + 1; + if (!cnt_init_pre_wait_done_r) + cnt_init_pre_wait_done_r + <= #TCQ (cnt_init_pre_wait_r >= DDR2_INIT_PRE_CNT); + end + + //***************************************************************** + // Wait for both DLL to lock (tDLLK) and ZQ calibration to finish + // (tZQINIT). Both take the same amount of time (512*tCK) + //***************************************************************** + + always @(posedge clk) + if (init_state_r == INIT_ZQCL) begin + cnt_dllk_zqinit_r <= #TCQ 'b0; + cnt_dllk_zqinit_done_r <= #TCQ 1'b0; + end else if (~(phy_ctl_full || phy_cmd_full)) begin + cnt_dllk_zqinit_r <= #TCQ cnt_dllk_zqinit_r + 1; + if (!cnt_dllk_zqinit_done_r) + cnt_dllk_zqinit_done_r + <= #TCQ (cnt_dllk_zqinit_r == TDLLK_TZQINIT_DELAY_CNT); + end + + //***************************************************************** + // Keep track of which MRS counter needs to be programmed during + // memory initialization + // The counter and the done signal are reset an additional time + // for DDR2. The same signals are used for the additional DDR2 + // initialization sequence. + //***************************************************************** + + always @(posedge clk) + if ((init_state_r == INIT_IDLE)|| + ((init_state_r == INIT_REFRESH) + && (~mem_init_done_r))) begin + cnt_init_mr_r <= #TCQ 'b0; + cnt_init_mr_done_r <= #TCQ 1'b0; + end else if (init_state_r == INIT_LOAD_MR) begin + cnt_init_mr_r <= #TCQ cnt_init_mr_r + 1; + cnt_init_mr_done_r <= #TCQ (cnt_init_mr_r == INIT_CNT_MR_DONE); + end + + + //***************************************************************** + // Flag to tell if the first precharge for DDR2 init sequence is + // done + //***************************************************************** + + always @(posedge clk) + if (init_state_r == INIT_IDLE) + ddr2_pre_flag_r<= #TCQ 'b0; + else if (init_state_r == INIT_LOAD_MR) + ddr2_pre_flag_r<= #TCQ 1'b1; + // reset the flag for multi rank case + else if ((ddr2_refresh_flag_r) && + (init_state_r == INIT_LOAD_MR_WAIT)&& + (cnt_cmd_done_r) && (cnt_init_mr_done_r)) + ddr2_pre_flag_r <= #TCQ 'b0; + + //***************************************************************** + // Flag to tell if the refresh stat for DDR2 init sequence is + // reached + //***************************************************************** + + always @(posedge clk) + if (init_state_r == INIT_IDLE) + ddr2_refresh_flag_r<= #TCQ 'b0; + else if ((init_state_r == INIT_REFRESH) && (~mem_init_done_r)) + // reset the flag for multi rank case + ddr2_refresh_flag_r<= #TCQ 1'b1; + else if ((ddr2_refresh_flag_r) && + (init_state_r == INIT_LOAD_MR_WAIT)&& + (cnt_cmd_done_r) && (cnt_init_mr_done_r)) + ddr2_refresh_flag_r <= #TCQ 'b0; + + //***************************************************************** + // Keep track of the number of auto refreshes for DDR2 + // initialization. The spec asks for a minimum of two refreshes. + // Four refreshes are performed here. The two extra refreshes is to + // account for the 200 clock cycle wait between step h and l. + // Without the two extra refreshes we would have to have a + // wait state. + //***************************************************************** + + always @(posedge clk) + if (init_state_r == INIT_IDLE) begin + cnt_init_af_r <= #TCQ 'b0; + cnt_init_af_done_r <= #TCQ 1'b0; + end else if ((init_state_r == INIT_REFRESH) && (~mem_init_done_r))begin + cnt_init_af_r <= #TCQ cnt_init_af_r + 1; + cnt_init_af_done_r <= #TCQ (cnt_init_af_r == 2'b11); + end + + //***************************************************************** + // Keep track of the register control word programming for + // DDR3 RDIMM + //***************************************************************** + + always @(posedge clk) + if (init_state_r == INIT_IDLE) + reg_ctrl_cnt_r <= #TCQ 'b0; + else if (init_state_r == INIT_REG_WRITE) + reg_ctrl_cnt_r <= #TCQ reg_ctrl_cnt_r + 1; + + generate + if (RANKS < 2) begin: one_rank + always @(posedge clk) + if ((init_state_r == INIT_IDLE) || rdlvl_last_byte_done || + (complex_byte_rd_done) || prbs_rdlvl_done_pulse ) + stg1_wr_done <= #TCQ 1'b0; + else if (init_state_r == INIT_RDLVL_STG1_WRITE_READ) + stg1_wr_done <= #TCQ 1'b1; + end else begin: two_ranks + always @(posedge clk) + if ((init_state_r == INIT_IDLE) || rdlvl_last_byte_done || + (complex_byte_rd_done) || prbs_rdlvl_done_pulse || + (rdlvl_stg1_rank_done )) + stg1_wr_done <= #TCQ 1'b0; + else if (init_state_r == INIT_RDLVL_STG1_WRITE_READ) + stg1_wr_done <= #TCQ 1'b1; + end + endgenerate + + always @(posedge clk) + if (rst) + rnk_ref_cnt <= #TCQ 1'b0; + else if (stg1_wr_done && + (init_state_r == INIT_REFRESH_WAIT) && cnt_cmd_done_r) + rnk_ref_cnt <= #TCQ ~rnk_ref_cnt; + + + always @(posedge clk) + if (rst || (init_state_r == INIT_MPR_RDEN) || (init_state_r == INIT_OCAL_CENTER_ACT) || + (init_state_r == INIT_OCLKDELAY_ACT) || (init_state_r == INIT_RDLVL_ACT) || + (init_state_r == INIT_OCAL_COMPLEX_ACT) || (init_state_r ==INIT_RDLVL_COMPLEX_PRECHARGE_PREWAIT)) + num_refresh <= #TCQ 'd0; + else if ((init_state_r == INIT_REFRESH) && + (~pi_dqs_found_done || ((DRAM_TYPE == "DDR3") && ~oclkdelay_calib_done) || + (rdlvl_stg1_done && ~prbs_rdlvl_done) || + (prbs_rdlvl_done && ~complex_oclkdelay_calib_done) || + ((CLK_PERIOD/nCK_PER_CLK <= 2500) && wrcal_done && ~rdlvl_stg1_done) || + ((CLK_PERIOD/nCK_PER_CLK > 2500) && wrlvl_done_r1 && ~rdlvl_stg1_done))) + num_refresh <= #TCQ num_refresh + 1; + + + //*************************************************************************** + // Initialization state machine + //*************************************************************************** + + //***************************************************************** + // Next-state logic + //***************************************************************** + + always @(posedge clk) + if (rst)begin + init_state_r <= #TCQ INIT_IDLE; + init_state_r1 <= #TCQ INIT_IDLE; + end else begin + init_state_r <= #TCQ init_next_state; + init_state_r1 <= #TCQ init_state_r; + end + + always @(*) begin + init_next_state = init_state_r; + (* full_case, parallel_case *) case (init_state_r) + + //******************************************************* + // DRAM initialization + //******************************************************* + + // Initial state - wait for: + // 1. Power-on delays to pass + // 2. PHY Control Block to assert phy_ctl_ready + // 3. PHY Control FIFO must not be FULL + // 4. Read path initialization to finish + INIT_IDLE: + if (cnt_pwron_cke_done_r && phy_ctl_ready && ck_addr_cmd_delay_done && delay_incdec_done + && ~(phy_ctl_full || phy_cmd_full) ) begin + // If skipping memory initialization (simulation only) + if (SIM_INIT_OPTION == "SKIP_INIT") + //if (WRLVL == "ON") + // Proceed to write leveling + // init_next_state = INIT_WRLVL_START; + //else //if (SIM_CAL_OPTION != "SKIP_CAL") + // Proceed to Phaser_In phase lock + init_next_state = INIT_RDLVL_ACT; + // else + // Skip read leveling + //init_next_state = INIT_DONE; + else + init_next_state = INIT_WAIT_CKE_EXIT; + end + + // Wait minimum of Reset CKE exit time (tXPR = max(tXS, + INIT_WAIT_CKE_EXIT: + if ((cnt_txpr_done_r) && (DRAM_TYPE == "DDR3") + && ~(phy_ctl_full || phy_cmd_full)) begin + if((REG_CTRL == "ON") && ((nCS_PER_RANK > 1) || + (RANKS > 1))) + //register write for reg dimm. Some register chips + // have the register chip in a pre-programmed state + // in that case the nCS_PER_RANK == 1 && RANKS == 1 + init_next_state = INIT_REG_WRITE; + else + // Load mode register - this state is repeated multiple times + init_next_state = INIT_LOAD_MR; + end else if ((cnt_init_pre_wait_done_r) && (DRAM_TYPE == "DDR2") + && ~(phy_ctl_full || phy_cmd_full)) + // DDR2 start with a precharge all command + init_next_state = INIT_DDR2_PRECHARGE; + + INIT_REG_WRITE: + init_next_state = INIT_REG_WRITE_WAIT; + + INIT_REG_WRITE_WAIT: + if (cnt_cmd_done_r && ~(phy_ctl_full || phy_cmd_full)) begin + if(reg_ctrl_cnt_r == 4'd8) + init_next_state = INIT_LOAD_MR; + else + init_next_state = INIT_REG_WRITE; + end + + INIT_LOAD_MR: + init_next_state = INIT_LOAD_MR_WAIT; + // After loading MR, wait at least tMRD + + INIT_LOAD_MR_WAIT: + if (cnt_cmd_done_r && ~(phy_ctl_full || phy_cmd_full)) begin + // If finished loading all mode registers, proceed to next step + if (prbs_rdlvl_done && pi_dqs_found_done && rdlvl_stg1_done) + // for ddr3 when the correct burst length is writtern at end + init_next_state = INIT_PRECHARGE; + else if (~wrcal_done && temp_lmr_done) + init_next_state = INIT_PRECHARGE_PREWAIT; + else if (cnt_init_mr_done_r)begin + if(DRAM_TYPE == "DDR3") + init_next_state = INIT_ZQCL; + else begin //DDR2 + if(ddr2_refresh_flag_r)begin + // memory initialization per rank for multi-rank case + if (!mem_init_done_r && (chip_cnt_r <= RANKS-1)) + init_next_state = INIT_DDR2_MULTI_RANK; + else + init_next_state = INIT_RDLVL_ACT; + // ddr2 initialization done.load mode state after refresh + end else + init_next_state = INIT_DDR2_PRECHARGE; + end + end else + init_next_state = INIT_LOAD_MR; + end + + // DDR2 multi rank transition state + INIT_DDR2_MULTI_RANK: + init_next_state = INIT_DDR2_MULTI_RANK_WAIT; + + INIT_DDR2_MULTI_RANK_WAIT: + init_next_state = INIT_DDR2_PRECHARGE; + + // Initial ZQ calibration + INIT_ZQCL: + init_next_state = INIT_WAIT_DLLK_ZQINIT; + + // Wait until both DLL have locked, and ZQ calibration done + INIT_WAIT_DLLK_ZQINIT: + if (cnt_dllk_zqinit_done_r && ~(phy_ctl_full || phy_cmd_full)) + // memory initialization per rank for multi-rank case + if (!mem_init_done_r && (chip_cnt_r <= RANKS-1)) + init_next_state = INIT_LOAD_MR; + //else if (WRLVL == "ON") + // init_next_state = INIT_WRLVL_START; + else + // skip write-leveling (e.g. for DDR2 interface) + init_next_state = INIT_RDLVL_ACT; + + // Initial precharge for DDR2 + INIT_DDR2_PRECHARGE: + init_next_state = INIT_DDR2_PRECHARGE_WAIT; + + INIT_DDR2_PRECHARGE_WAIT: + if (cnt_cmd_done_r && ~(phy_ctl_full || phy_cmd_full)) begin + if (ddr2_pre_flag_r) + init_next_state = INIT_REFRESH; + else // from precharge state initially go to load mode + init_next_state = INIT_LOAD_MR; + end + + INIT_REFRESH: + if ((SKIP_CALIB == "TRUE") && ~calib_tap_inc_done && pi_dqs_found_done) + init_next_state = INIT_SKIP_CALIB_WAIT; + else if ((RANKS == 2) && (chip_cnt_r == RANKS - 1)) + init_next_state = INIT_REFRESH_RNK2_WAIT; + else + init_next_state = INIT_REFRESH_WAIT; + + INIT_REFRESH_RNK2_WAIT: + if (cnt_cmd_done_r && ~(phy_ctl_full || phy_cmd_full)) + init_next_state = INIT_PRECHARGE; + + INIT_REFRESH_WAIT: + if (cnt_cmd_done_r && ~(phy_ctl_full || phy_cmd_full))begin + if(cnt_init_af_done_r && (~mem_init_done_r)) + // go to lm state as part of DDR2 init sequence + init_next_state = INIT_LOAD_MR; + // Go to state to issue back-to-back writes during limit check and centering + else if (~oclkdelay_calib_done && (mpr_last_byte_done || mpr_rdlvl_done) && (DRAM_TYPE == "DDR3")) begin + if (num_refresh == 'd8) + init_next_state = INIT_OCAL_CENTER_ACT; + else + init_next_state = INIT_REFRESH; + end else if(rdlvl_stg1_done && oclkdelay_center_calib_done && + complex_oclkdelay_calib_done && ~wrlvl_done_r1 && (WRLVL == "ON")) + init_next_state = INIT_WRLVL_START; + else if (pi_dqs_found_done && ~wrlvl_done_r1 && ~wrlvl_final && ~wrlvl_byte_redo && (WRLVL == "ON")) + init_next_state = INIT_WRLVL_START; + else if ((((prbs_last_byte_done_r || prbs_rdlvl_done) && ~complex_oclkdelay_calib_done + && pi_dqs_found_done) && (WRLVL == "ON")) //&& rdlvl_stg1_done // changed for new algo 3/26 + && mem_init_done_r) begin + if (num_refresh == 'd8) begin + if (BYPASS_COMPLEX_OCAL == "FALSE") + init_next_state = INIT_RDLVL_COMPLEX_PRECHARGE_PREWAIT; + else + init_next_state = INIT_WRCAL_ACT; + end else + init_next_state = INIT_REFRESH; + end else if (~pi_dqs_found_done || + (rdlvl_stg1_done && ~prbs_rdlvl_done && ~complex_oclkdelay_calib_done) || + ((CLK_PERIOD/nCK_PER_CLK <= 2500) && wrcal_done && ~rdlvl_stg1_done) || + ((CLK_PERIOD/nCK_PER_CLK > 2500) && wrlvl_done_r1 && ~rdlvl_stg1_done)) begin + if (num_refresh == 'd8) + init_next_state = INIT_RDLVL_ACT; + else + init_next_state = INIT_REFRESH; + end else if ((~wrcal_done && wrlvl_byte_redo)&& (DRAM_TYPE == "DDR3") + && (CLK_PERIOD/nCK_PER_CLK > 2500)) + init_next_state = INIT_WRLVL_LOAD_MR2; + else if (((prbs_rdlvl_done && rdlvl_stg1_done && complex_oclkdelay_calib_done && pi_dqs_found_done) && (WRLVL == "ON")) + && mem_init_done_r && (CLK_PERIOD/nCK_PER_CLK > 2500)) + init_next_state = INIT_WRCAL_ACT; + else if (pi_dqs_found_done && (DRAM_TYPE == "DDR3") && ~(mpr_last_byte_done || mpr_rdlvl_done)) begin + if (num_refresh == 'd8) + init_next_state = INIT_MPR_RDEN; + else + init_next_state = INIT_REFRESH; + end else if (((oclkdelay_calib_done && wrlvl_final && ~wrlvl_done_r1) || // changed for new algo 3/25 + (~wrcal_done && wrlvl_byte_redo)) && (DRAM_TYPE == "DDR3")) + init_next_state = INIT_WRLVL_LOAD_MR2; + else if ((~wrcal_done && (WRLVL == "ON") && (CLK_PERIOD/nCK_PER_CLK <= 2500)) + && pi_dqs_found_done) + init_next_state = INIT_WRCAL_ACT; + else if (mem_init_done_r) begin + if (RANKS < 2) + init_next_state = INIT_RDLVL_ACT; + else if (stg1_wr_done && ~rnk_ref_cnt && ~rdlvl_stg1_done) + init_next_state = INIT_PRECHARGE; + else + init_next_state = INIT_RDLVL_ACT; + end else // to DDR2 init state as part of DDR2 init sequence + init_next_state = INIT_REFRESH; + end + + INIT_SKIP_CALIB_WAIT: + if (calib_tap_inc_done) + init_next_state = INIT_WRCAL_ACT; + + + //****************************************************** + // Write Leveling + //******************************************************* + + // Enable write leveling in MR1 and start write leveling + // for current rank + INIT_WRLVL_START: + init_next_state = INIT_WRLVL_WAIT; + + // Wait for both MR load and write leveling to complete + // (write leveling should take much longer than MR load..) + INIT_WRLVL_WAIT: + if (wrlvl_rank_done_r7 && ~(phy_ctl_full || phy_cmd_full)) + init_next_state = INIT_WRLVL_LOAD_MR; + + // Disable write leveling in MR1 for current rank + INIT_WRLVL_LOAD_MR: + init_next_state = INIT_WRLVL_LOAD_MR_WAIT; + + INIT_WRLVL_LOAD_MR_WAIT: + if (cnt_cmd_done_r && ~(phy_ctl_full || phy_cmd_full)) + init_next_state = INIT_WRLVL_LOAD_MR2; + + // Load MR2 to set ODT: Dynamic ODT for single rank case + // And ODTs for multi-rank case as well + INIT_WRLVL_LOAD_MR2: + init_next_state = INIT_WRLVL_LOAD_MR2_WAIT; + + // Wait tMRD before proceeding + INIT_WRLVL_LOAD_MR2_WAIT: + if (cnt_cmd_done_r && ~(phy_ctl_full || phy_cmd_full)) begin + //if (wrlvl_byte_done) + // init_next_state = INIT_PRECHARGE_PREWAIT; + // else if ((RANKS == 2) && wrlvl_rank_done_r2) + // init_next_state = INIT_WRLVL_LOAD_MR2_WAIT; + if (~wrlvl_done_r1) + init_next_state = INIT_WRLVL_START; + else if (SIM_CAL_OPTION == "SKIP_CAL") + // If skip rdlvl, then we're done + init_next_state = INIT_DONE; + else + // Otherwise, proceed to read leveling + //init_next_state = INIT_RDLVL_ACT; + init_next_state = INIT_PRECHARGE_PREWAIT; + end + + //******************************************************* + // Read Leveling + //******************************************************* + + // single row activate. All subsequent read leveling writes and + // read will take place in this row + INIT_RDLVL_ACT: + init_next_state = INIT_RDLVL_ACT_WAIT; + + // hang out for awhile before issuing subsequent column commands + // it's also possible to reach this state at various points + // during read leveling - determine what the current stage is + INIT_RDLVL_ACT_WAIT: + if (cnt_cmd_done_r && ~(phy_ctl_full || phy_cmd_full)) begin + // Just finished an activate. Now either write, read, or precharge + // depending on where we are in the training sequence + if (!pi_calib_done_r1) + init_next_state = INIT_PI_PHASELOCK_READS; + else if (!pi_dqs_found_done) + // (!pi_dqs_found_start || pi_dqs_found_rank_done)) + init_next_state = INIT_RDLVL_STG2_READ; + else if (~wrcal_done && (WRLVL == "ON") && (CLK_PERIOD/nCK_PER_CLK <= 2500)) + init_next_state = INIT_WRCAL_ACT_WAIT; + else if ((!rdlvl_stg1_done && ~stg1_wr_done && ~rdlvl_last_byte_done) || + (!prbs_rdlvl_done && ~stg1_wr_done && ~prbs_last_byte_done)) begin + // Added to avoid rdlvl_stg1 write data pattern at the start of PRBS rdlvl + if (!prbs_rdlvl_done && ~stg1_wr_done && rdlvl_last_byte_done) + init_next_state = INIT_RDLVL_ACT_WAIT; + else + init_next_state = INIT_RDLVL_STG1_WRITE; + end else if ((!rdlvl_stg1_done && rdlvl_stg1_start_int) || !prbs_rdlvl_done) begin + if (rdlvl_last_byte_done || prbs_last_byte_done) + // Added to avoid extra reads at the end of read leveling + init_next_state = INIT_RDLVL_ACT_WAIT; + else begin + // Case 2: If in stage 1, and just precharged after training + // previous byte, then continue reading + if (rdlvl_stg1_done) + init_next_state = INIT_RDLVL_STG1_WRITE_READ; + else + init_next_state = INIT_RDLVL_STG1_READ; + end + end else if ((prbs_rdlvl_done && rdlvl_stg1_done && (RANKS == 1)) && (WRLVL == "ON") && + (CLK_PERIOD/nCK_PER_CLK > 2500)) + init_next_state = INIT_WRCAL_ACT_WAIT; + else + // Otherwise, if we're finished with calibration, then precharge + // the row - silly, because we just opened it - possible to take + // this out by adding logic to avoid the ACT in first place. Make + // sure that cnt_cmd_done will handle tRAS(min) + init_next_state = INIT_PRECHARGE_PREWAIT; + end + + //************************************************** + // Back-to-back reads for Phaser_IN Phase locking + // DQS to FREQ_REF clock + //************************************************** + + INIT_PI_PHASELOCK_READS: + if (pi_phase_locked_all_r3 && ~pi_phase_locked_all_r4) + init_next_state = INIT_PRECHARGE_PREWAIT; + + //********************************************* + // Stage 1 read-leveling (write and continuous read) + //********************************************* + + // Write training pattern for stage 1 + // PRBS pattern of TBD length + INIT_RDLVL_STG1_WRITE: + // 4:1 DDR3 BL8 will require all 8 words in 1 DIV4 clock cycle + // 2:1 DDR2/DDR3 BL8 will require 2 DIV2 clock cycles for 8 words + // 2:1 DDR2 BL4 will require 1 DIV2 clock cycle for 4 words + // An entire row worth of writes issued before proceeding to reads + // The number of write is (2^column width)/burst length to accomodate + // PRBS pattern for window detection. + //VCCO/VCCAUX write is not done + if ((complex_num_writes_dec == 1) && ~complex_row0_wr_done && prbs_rdlvl_done && rdlvl_stg1_done_r1) + init_next_state = INIT_OCAL_COMPLEX_WRITE_WAIT; + //back to back write from row1 + else if (stg1_wr_rd_cnt == 9'd1) begin + if (rdlvl_stg1_done_r1) + init_next_state = INIT_RDLVL_COMPLEX_PRECHARGE_PREWAIT; + else + init_next_state = INIT_RDLVL_STG1_WRITE_READ; + end + + INIT_RDLVL_COMPLEX_PRECHARGE_PREWAIT: + if (complex_rdlvl_int_ref_req || (prbs_rdlvl_done && ~prbs_rdlvl_done_r1)) + init_next_state = INIT_PRECHARGE_PREWAIT; + else if (complex_wait_cnt == 'd15) + //At the end of the byte, it goes to REFRESH + init_next_state = INIT_RDLVL_COMPLEX_PRECHARGE; + + INIT_RDLVL_COMPLEX_PRECHARGE: + init_next_state = INIT_RDLVL_COMPLEX_PRECHARGE_WAIT; + + INIT_RDLVL_COMPLEX_PRECHARGE_WAIT: + if (complex_rdlvl_int_ref_req || (prbs_rdlvl_done && ~prbs_rdlvl_done_r1)) + init_next_state = INIT_PRECHARGE_PREWAIT; + else if (complex_wait_cnt == 'd15) begin + if (prbs_rdlvl_done || prbs_last_byte_done_r) begin // changed for new algo 3/26 + // added condition to ensure that limit starts after rdlvl_stg1_done is asserted in the bypass complex rdlvl mode + if ((~prbs_rdlvl_done && complex_oclkdelay_calib_start_int) || ~lim_done) + init_next_state = INIT_OCAL_CENTER_ACT; //INIT_OCAL_COMPLEX_ACT; // changed for new algo 3/26 + else if (lim_done && complex_oclkdelay_calib_start_r2) + init_next_state = INIT_RDLVL_COMPLEX_ACT; + else + init_next_state = INIT_RDLVL_COMPLEX_PRECHARGE_WAIT; + end else + init_next_state = INIT_RDLVL_COMPLEX_ACT; + end + + + INIT_RDLVL_COMPLEX_ACT: + //only for sampling boundary it need to wait + //when initial pi dec is not done in complex per-bit, it need to wait + if(prbs_rdlvl_start && (num_samples_done_r || ~complex_init_pi_dec_done)) + init_next_state = INIT_RDLVL_COMPLEX_PI_WAIT; + else init_next_state = INIT_RDLVL_COMPLEX_ACT_WAIT; + + //wait PI movement is done before proceeding read + INIT_RDLVL_COMPLEX_PI_WAIT: + if(complex_pi_incdec_done) + init_next_state = INIT_RDLVL_COMPLEX_ACT_WAIT; + + INIT_RDLVL_COMPLEX_ACT_WAIT: + if (complex_rdlvl_int_ref_req || prech_req_posedge_r) //prech req always happen in this state + init_next_state = INIT_PRECHARGE_PREWAIT; + else if (complex_wait_cnt == 'd15) begin + if (oclkdelay_center_calib_start) + init_next_state = INIT_OCAL_CENTER_WRITE_WAIT; + else if (stg1_wr_done) + init_next_state = INIT_RDLVL_COMPLEX_READ; + else if (~complex_row1_wr_done) + if (complex_oclkdelay_calib_start_int && complex_ocal_num_samples_done_r) //WAIT for resume signal for write + init_next_state = INIT_OCAL_COMPLEX_RESUME_WAIT; + else + init_next_state = INIT_RDLVL_STG1_WRITE; + else + init_next_state = INIT_RDLVL_STG1_WRITE_READ; + end + + // Write-read turnaround + INIT_RDLVL_STG1_WRITE_READ: + if (reset_rd_addr_r1) + init_next_state = INIT_RDLVL_COMPLEX_PRECHARGE_PREWAIT; + else if (cnt_cmd_done_r && ~(phy_ctl_full || phy_cmd_full))begin + if (rdlvl_stg1_done_r1) + //before going to read, wait for PI inc/dec done + init_next_state = INIT_RDLVL_COMPLEX_PI_WAIT; + else + init_next_state = INIT_RDLVL_STG1_READ; + end + + // Continuous read, where interruptible by precharge request from + // calibration logic. Also precharges when stage 1 is complete + // No precharges when reads provided to Phaser_IN for phase locking + // FREQ_REF to read DQS since data integrity is not important. + INIT_RDLVL_STG1_READ: + if (rdlvl_stg1_rank_done || (rdlvl_stg1_done && ~rdlvl_stg1_done_r1) || + prech_req_posedge_r || (prbs_rdlvl_done && ~prbs_rdlvl_done_r1)) + init_next_state = INIT_PRECHARGE_PREWAIT; + + INIT_RDLVL_COMPLEX_READ: + if (prech_req_posedge_r || (prbs_rdlvl_done && ~prbs_rdlvl_done_r1)) + init_next_state = INIT_PRECHARGE_PREWAIT; + //For non-back-to-back reads from row0 (VCCO and VCCAUX pattern) + else if (~prbs_rdlvl_done && (complex_num_reads_dec == 1) && ~complex_row0_rd_done) + init_next_state = INIT_RDLVL_COMPLEX_READ_WAIT; + //For back-to-back reads from row1 (ISI pattern) + else if (stg1_wr_rd_cnt == 'd1) + init_next_state = INIT_RDLVL_COMPLEX_PRECHARGE_PREWAIT; + + INIT_RDLVL_COMPLEX_READ_WAIT: + if (prech_req_posedge_r || complex_rdlvl_int_ref_req || (prbs_rdlvl_done && ~prbs_rdlvl_done_r1)) + init_next_state = INIT_PRECHARGE_PREWAIT; + else if (stg1_wr_rd_cnt == 'd1) + init_next_state = INIT_RDLVL_COMPLEX_PRECHARGE_PREWAIT; + else if (complex_wait_cnt == 'd15) + init_next_state = INIT_RDLVL_COMPLEX_READ; + + + //********************************************* + // DQSFOUND calibration (set of 4 reads with gaps) + //********************************************* + + // Read of training data. Note that Stage 2 is not a constant read, + // instead there is a large gap between each set of back-to-back reads + INIT_RDLVL_STG2_READ: + // 4 read commands issued back-to-back + if (num_reads == 'b1) + init_next_state = INIT_RDLVL_STG2_READ_WAIT; + + // Wait before issuing the next set of reads. If a precharge request + // comes in then handle - this can occur after stage 2 calibration is + // completed for a DQS group + INIT_RDLVL_STG2_READ_WAIT: + if (~(phy_ctl_full || phy_cmd_full)) begin + if (pi_dqs_found_rank_done || + pi_dqs_found_done || prech_req_posedge_r) + init_next_state = INIT_PRECHARGE_PREWAIT; + else if (cnt_cmd_done_r) + init_next_state = INIT_RDLVL_STG2_READ; + end + + + //****************************************************************** + // MPR Read Leveling for DDR3 OCLK_DELAYED calibration + //****************************************************************** + + // Issue Load Mode Register 3 command with A[2]=1, A[1:0]=2'b00 + // to enable Multi Purpose Register (MPR) Read + INIT_MPR_RDEN: + init_next_state = INIT_MPR_WAIT; + + //Wait tMRD, tMOD + INIT_MPR_WAIT: + if (cnt_cmd_done_r) begin + init_next_state = INIT_MPR_READ; + end + + // Issue back-to-back read commands to read from MPR with + // Address bus 0x0000 for BL=8. DQ[0] will output the pre-defined + // MPR pattern of 01010101 (Rise0 = 1'b0, Fall0 = 1'b1 ...) + INIT_MPR_READ: + if (mpr_rdlvl_done || mpr_rnk_done || rdlvl_prech_req) + init_next_state = INIT_MPR_DISABLE_PREWAIT; + + INIT_MPR_DISABLE_PREWAIT: + if (cnt_cmd_done_r) + init_next_state = INIT_MPR_DISABLE; + + // Issue Load Mode Register 3 command with A[2]=0 to disable + // MPR read + INIT_MPR_DISABLE: + init_next_state = INIT_MPR_DISABLE_WAIT; + + INIT_MPR_DISABLE_WAIT: + init_next_state = INIT_PRECHARGE_PREWAIT; + + + //*********************************************************************** + // OCLKDELAY Calibration + //*********************************************************************** + + // This calibration requires single write followed by single read to + // determine the Phaser_Out stage 3 delay required to center write DQS + // in write DQ valid window. + + // Single Row Activate command before issuing Write command + INIT_OCLKDELAY_ACT: + init_next_state = INIT_OCLKDELAY_ACT_WAIT; + + INIT_OCLKDELAY_ACT_WAIT: + if (cnt_cmd_done_r && ~oclk_prech_req) + init_next_state = INIT_OCLKDELAY_WRITE; + else if (oclkdelay_calib_done || prech_req_posedge_r) + init_next_state = INIT_PRECHARGE_PREWAIT; + + INIT_OCLKDELAY_WRITE: + if (oclk_wr_cnt == 4'd1) + init_next_state = INIT_OCLKDELAY_WRITE_WAIT; + + INIT_OCLKDELAY_WRITE_WAIT: + if (cnt_cmd_done_r && ~(phy_ctl_full || phy_cmd_full)) begin + if (oclkdelay_int_ref_req) + init_next_state = INIT_PRECHARGE_PREWAIT; + else + init_next_state = INIT_OCLKDELAY_READ; + end + + INIT_OCLKDELAY_READ: + init_next_state = INIT_OCLKDELAY_READ_WAIT; + + INIT_OCLKDELAY_READ_WAIT: + if (~(phy_ctl_full || phy_cmd_full)) begin + if ((oclk_calib_resume_level || oclk_calib_resume) && ~oclkdelay_int_ref_req) + init_next_state = INIT_OCLKDELAY_WRITE; + else if (oclkdelay_calib_done || prech_req_posedge_r || + wrlvl_final || oclkdelay_int_ref_req) + init_next_state = INIT_PRECHARGE_PREWAIT; + else if (oclkdelay_center_calib_start) + init_next_state = INIT_OCAL_CENTER_WRITE_WAIT; + end + + + //********************************************* + // Write calibration + //********************************************* + + // single row activate + INIT_WRCAL_ACT: + init_next_state = INIT_WRCAL_ACT_WAIT; + + // hang out for awhile before issuing subsequent column command + INIT_WRCAL_ACT_WAIT: + if (cnt_cmd_done_r && ~wrcal_prech_req) + init_next_state = INIT_WRCAL_WRITE; + else if (wrcal_done || prech_req_posedge_r) + init_next_state = INIT_PRECHARGE_PREWAIT; + + // Write training pattern for write calibration + INIT_WRCAL_WRITE: + // Once we've issued enough commands for 8 words - proceed to reads + //if (burst_addr_r == 1'b1) + if (wrcal_wr_cnt == 4'd1) + init_next_state = INIT_WRCAL_WRITE_READ; + + // Write-read turnaround + INIT_WRCAL_WRITE_READ: + if (cnt_cmd_done_r && ~(phy_ctl_full || phy_cmd_full)) + init_next_state = INIT_WRCAL_READ; + else if (dqsfound_retry) + init_next_state = INIT_RDLVL_STG2_READ_WAIT; + + + INIT_WRCAL_READ: + if (burst_addr_r == 1'b1) + init_next_state = INIT_WRCAL_READ_WAIT; + + INIT_WRCAL_READ_WAIT: + if (~(phy_ctl_full || phy_cmd_full)) begin + if (wrcal_resume_r) begin + if (wrcal_final_chk) + init_next_state = INIT_WRCAL_READ; + else + init_next_state = INIT_WRCAL_WRITE; + end else if (wrcal_done || prech_req_posedge_r || wrcal_act_req || + // Added to support PO fine delay inc when TG errors + wrlvl_byte_redo || (temp_wrcal_done && ~temp_lmr_done)) + init_next_state = INIT_PRECHARGE_PREWAIT; + else if (dqsfound_retry) + init_next_state = INIT_RDLVL_STG2_READ_WAIT; + else if (wrcal_read_req && cnt_wrcal_rd) + init_next_state = INIT_WRCAL_MULT_READS; + end + + INIT_WRCAL_MULT_READS: + // multiple read commands issued back-to-back + if (wrcal_reads == 'b1) + init_next_state = INIT_WRCAL_READ_WAIT; + + //********************************************* + // Handling of precharge during and in between read-level stages + //********************************************* + + // Make sure we aren't violating any timing specs by precharging + // immediately + INIT_PRECHARGE_PREWAIT: + if (cnt_cmd_done_r && ~(phy_ctl_full || phy_cmd_full)) + init_next_state = INIT_PRECHARGE; + + // Initiate precharge + INIT_PRECHARGE: + init_next_state = INIT_PRECHARGE_WAIT; + + INIT_PRECHARGE_WAIT: + if (cnt_cmd_done_r && ~(phy_ctl_full || phy_cmd_full)) begin + if ((wrcal_sanity_chk_done && (DRAM_TYPE == "DDR3")) || + (rdlvl_stg1_done && prbs_rdlvl_done && pi_dqs_found_done && + (DRAM_TYPE == "DDR2"))) + init_next_state = INIT_DONE; + else if ((wrcal_done || (WRLVL == "OFF")) && rdlvl_stg1_done && prbs_rdlvl_done && + pi_dqs_found_done && complex_oclkdelay_calib_done && wrlvl_done_r1 && ((ddr3_lm_done_r) || (DRAM_TYPE == "DDR2"))) + init_next_state = INIT_WRCAL_ACT; + else if ((wrcal_done || (WRLVL == "OFF") || (~wrcal_done && temp_wrcal_done && ~temp_lmr_done)) + && (rdlvl_stg1_done || (~wrcal_done && temp_wrcal_done && ~temp_lmr_done)) + && prbs_rdlvl_done && complex_oclkdelay_calib_done && wrlvl_done_r1 &rdlvl_stg1_done && pi_dqs_found_done) begin + // after all calibration program the correct burst length + init_next_state = INIT_LOAD_MR; + // Added to support PO fine delay inc when TG errors + end else if (~wrcal_done && temp_wrcal_done && temp_lmr_done) + init_next_state = INIT_WRCAL_READ_WAIT; + else if (rdlvl_stg1_done && pi_dqs_found_done && (WRLVL == "ON")) + // If read leveling finished, proceed to write calibration + init_next_state = INIT_REFRESH; + else + // Otherwise, open row for read-leveling purposes + init_next_state = INIT_REFRESH; + end + + //******************************************************* + // COMPLEX OCLK calibration - for fragmented write + //******************************************************* + INIT_OCAL_COMPLEX_ACT: + init_next_state = INIT_OCAL_COMPLEX_ACT_WAIT; + + INIT_OCAL_COMPLEX_ACT_WAIT: + if (complex_wait_cnt =='d15) + init_next_state = INIT_RDLVL_STG1_WRITE; + + INIT_OCAL_COMPLEX_WRITE_WAIT: + if (prech_req_posedge_r || (complex_oclkdelay_calib_done && ~complex_oclkdelay_calib_done_r1)) + init_next_state = INIT_PRECHARGE_PREWAIT; + else if (stg1_wr_rd_cnt == 'd1) + init_next_state = INIT_RDLVL_COMPLEX_PRECHARGE_PREWAIT; + else if (complex_wait_cnt == 'd15) + init_next_state = INIT_RDLVL_STG1_WRITE; + + //wait for all srg2/stg3 tap movement is done and go back to write again + INIT_OCAL_COMPLEX_RESUME_WAIT: + if (complex_oclk_calib_resume) + init_next_state = INIT_RDLVL_STG1_WRITE; + else if (complex_oclkdelay_calib_done || complex_ocal_ref_req ) + init_next_state = INIT_PRECHARGE_PREWAIT; + + //******************************************************* + // OCAL STG3 Centering calibration + //******************************************************* + INIT_OCAL_CENTER_ACT: + init_next_state = INIT_OCAL_CENTER_ACT_WAIT; + + INIT_OCAL_CENTER_ACT_WAIT: + if (ocal_act_wait_cnt == 'd15) + init_next_state = INIT_OCAL_CENTER_WRITE_WAIT; + + INIT_OCAL_CENTER_WRITE: + if(!oclk_center_write_resume && !lim_wr_req) + init_next_state = INIT_OCAL_CENTER_WRITE_WAIT; + + INIT_OCAL_CENTER_WRITE_WAIT: + //if (oclkdelay_center_calib_done || prech_req_posedge_r) + if (prech_req_posedge_r) + init_next_state = INIT_PRECHARGE_PREWAIT; + else if (lim_done && ~mask_lim_done && ~complex_mask_lim_done && oclkdelay_calib_done && ~oclkdelay_center_calib_start) + init_next_state = INIT_OCAL_COMPLEX_ACT_WAIT; + else if (lim_done && ~mask_lim_done && ~complex_mask_lim_done && ~oclkdelay_center_calib_start) + init_next_state = INIT_OCLKDELAY_READ_WAIT; + else if (oclk_center_write_resume || lim_wr_req) + init_next_state = INIT_OCAL_CENTER_WRITE; + + //******************************************************* + // Initialization/Calibration done. Take a long rest, relax + //******************************************************* + + INIT_DONE: + init_next_state = INIT_DONE; + + endcase + end + + //***************************************************************** + // Initialization done signal - asserted before leveling starts + //***************************************************************** + + + always @(posedge clk) + if (rst) + mem_init_done_r <= #TCQ 1'b0; + else if ((!cnt_dllk_zqinit_done_r && + (cnt_dllk_zqinit_r == TDLLK_TZQINIT_DELAY_CNT) && + (chip_cnt_r == RANKS-1) && (DRAM_TYPE == "DDR3")) + || ( (init_state_r == INIT_LOAD_MR_WAIT) && + (ddr2_refresh_flag_r) && (chip_cnt_r == RANKS-1) + && (cnt_init_mr_done_r) && (DRAM_TYPE == "DDR2"))) + mem_init_done_r <= #TCQ 1'b1; + + //***************************************************************** + // Write Calibration signal to PHY Control Block - asserted before + // Write Leveling starts + //***************************************************************** + + //generate + //if (RANKS < 2) begin: ranks_one + always @(posedge clk) begin + if (rst || (done_dqs_tap_inc && + (init_state_r == INIT_WRLVL_LOAD_MR2))) + write_calib <= #TCQ 1'b0; + else if (wrlvl_active_r1) + write_calib <= #TCQ 1'b1; + end + //end else begin: ranks_two + // always @(posedge clk) begin + // if (rst || + // ((init_state_r1 == INIT_WRLVL_LOAD_MR_WAIT) && + // ((wrlvl_rank_done_r2 && (chip_cnt_r == RANKS-1)) || + // (SIM_CAL_OPTION == "FAST_CAL")))) + // write_calib <= #TCQ 1'b0; + // else if (wrlvl_active_r1) + // write_calib <= #TCQ 1'b1; + // end + //end + //endgenerate + + //***************************************************************** + // Read Calibration signal to PHY Control Block - asserted after + // Write Leveling during PHASER_IN phase locking stage. + // Must be de-asserted before Read Leveling + //***************************************************************** + + always @(posedge clk) begin + if (rst || pi_calib_done_r1) + read_calib_int <= #TCQ 1'b0; + else if (~pi_calib_done_r1 && (init_state_r == INIT_RDLVL_ACT_WAIT) && + (cnt_cmd_r == CNTNEXT_CMD)) + read_calib_int <= #TCQ 1'b1; + end + + always @(posedge clk) + read_calib_r <= #TCQ read_calib_int; + + + always @(posedge clk) begin + if (rst || pi_calib_done_r1) + read_calib <= #TCQ 1'b0; + else if (~pi_calib_done_r1 && (init_state_r == INIT_PI_PHASELOCK_READS)) + read_calib <= #TCQ 1'b1; + end + + + always @(posedge clk) + if (rst) + pi_calib_done_r <= #TCQ 1'b0; + else if (pi_calib_rank_done_r)// && (chip_cnt_r == RANKS-1)) + pi_calib_done_r <= #TCQ 1'b1; + + always @(posedge clk) + if (rst) + pi_calib_rank_done_r <= #TCQ 1'b0; + else if (pi_phase_locked_all_r3 && ~pi_phase_locked_all_r4) + pi_calib_rank_done_r <= #TCQ 1'b1; + else + pi_calib_rank_done_r <= #TCQ 1'b0; + + always @(posedge clk) begin + if (rst || ((PRE_REV3ES == "ON") && temp_wrcal_done && ~temp_wrcal_done_r)) + pi_phaselock_timer <= #TCQ 'd0; + else if (((init_state_r == INIT_PI_PHASELOCK_READS) && + (pi_phaselock_timer != PHASELOCKED_TIMEOUT)) || + tg_timer_go) + pi_phaselock_timer <= #TCQ pi_phaselock_timer + 1; + else + pi_phaselock_timer <= #TCQ pi_phaselock_timer; + end + + assign pi_phase_locked_err = (pi_phaselock_timer == PHASELOCKED_TIMEOUT) ? 1'b1 : 1'b0; + + //***************************************************************** + // DDR3 final burst length programming done. For DDR3 during + // calibration the burst length is fixed to BL8. After calibration + // the correct burst length is programmed. + //***************************************************************** + always @(posedge clk) + if (rst) + ddr3_lm_done_r <= #TCQ 1'b0; + else if ((init_state_r == INIT_LOAD_MR_WAIT) && + (chip_cnt_r == RANKS-1) && wrcal_done) + ddr3_lm_done_r <= #TCQ 1'b1; + + always @(posedge clk) begin + pi_dqs_found_rank_done_r <= #TCQ pi_dqs_found_rank_done; + pi_phase_locked_all_r1 <= #TCQ pi_phase_locked_all; + pi_phase_locked_all_r2 <= #TCQ pi_phase_locked_all_r1; + pi_phase_locked_all_r3 <= #TCQ pi_phase_locked_all_r2; + pi_phase_locked_all_r4 <= #TCQ pi_phase_locked_all_r3; + pi_dqs_found_all_r <= #TCQ pi_dqs_found_done; + pi_calib_done_r1 <= #TCQ pi_calib_done_r; + end + + //*************************************************************************** + // Logic for deep memory (multi-rank) configurations + //*************************************************************************** + + // For DDR3 asserted when + +generate + if (RANKS < 2) begin: single_rank + always @(posedge clk) + chip_cnt_r <= #TCQ 2'b00; + end else begin: dual_rank + always @(posedge clk) + if (rst || + // Set chip_cnt_r to 2'b00 after both Ranks are read leveled + (rdlvl_stg1_done && prbs_rdlvl_done && ~wrcal_done && (SKIP_CALIB == "FALSE")) || + // Set chip_cnt_r to 2'b00 after both Ranks are write leveled + (wrlvl_done_r && + (init_state_r==INIT_WRLVL_LOAD_MR2_WAIT)))begin + chip_cnt_r <= #TCQ 2'b00; + end else if ((((init_state_r == INIT_WAIT_DLLK_ZQINIT) && + (cnt_dllk_zqinit_r == TDLLK_TZQINIT_DELAY_CNT)) && + (DRAM_TYPE == "DDR3")) || + ((init_state_r==INIT_REFRESH_RNK2_WAIT) && + (cnt_cmd_r=='d36)) || + //mpr_rnk_done || + //(rdlvl_stg1_rank_done && ~rdlvl_last_byte_done) || + //(stg1_wr_done && (init_state_r == INIT_REFRESH) && + //~(rnk_ref_cnt && rdlvl_last_byte_done)) || + + // Increment chip_cnt_r to issue Refresh to second rank + (~pi_dqs_found_all_r && + (init_state_r==INIT_PRECHARGE_PREWAIT) && + (cnt_cmd_r=='d36) && (SKIP_CALIB == "FALSE")) || + + // Increment chip_cnt_r when DQSFOUND done for the Rank + (pi_dqs_found_rank_done && ~pi_dqs_found_rank_done_r && (SKIP_CALIB == "FALSE")) || + ((init_state_r == INIT_LOAD_MR_WAIT)&& cnt_cmd_done_r + && wrcal_done) || + ((init_state_r == INIT_DDR2_MULTI_RANK) + && (DRAM_TYPE == "DDR2"))) begin + if ((~mem_init_done_r || ~rdlvl_stg1_done || ~pi_dqs_found_done || + // condition to increment chip_cnt during + // final burst length programming for DDR3 + ~pi_calib_done_r || wrcal_done) //~mpr_rdlvl_done || + && (chip_cnt_r != RANKS-1)) + chip_cnt_r <= #TCQ chip_cnt_r + 1; + else + chip_cnt_r <= #TCQ 2'b00; + end + end + endgenerate +// verilint STARC-2.2.3.3 off +generate + if ((REG_CTRL == "ON") && (RANKS == 1)) begin: DDR3_RDIMM_1rank + always @(posedge clk) begin + if (rst) + phy_int_cs_n <= #TCQ {CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK{1'b1}}; + else if (init_state_r == INIT_REG_WRITE) begin + phy_int_cs_n <= #TCQ {CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK{1'b1}}; + if(!(CWL_M%2)) begin + phy_int_cs_n[0%nCK_PER_CLK] <= #TCQ 1'b0; + phy_int_cs_n[1%nCK_PER_CLK] <= #TCQ 1'b0; + end else begin + phy_int_cs_n[2%nCK_PER_CLK] <= #TCQ 1'b0; + phy_int_cs_n[3%nCK_PER_CLK] <= #TCQ 1'b0; + end + end else if ((init_state_r == INIT_LOAD_MR) || + (init_state_r == INIT_MPR_RDEN) || + (init_state_r == INIT_MPR_DISABLE) || + (init_state_r == INIT_WRLVL_START) || + (init_state_r == INIT_WRLVL_LOAD_MR) || + (init_state_r == INIT_WRLVL_LOAD_MR2) || + (init_state_r == INIT_ZQCL) || + (init_state_r == INIT_RDLVL_ACT) || + (init_state_r == INIT_WRCAL_ACT) || + (init_state_r == INIT_OCLKDELAY_ACT) || + (init_state_r == INIT_OCAL_COMPLEX_ACT) || + (init_state_r == INIT_OCAL_CENTER_ACT) || + (init_state_r == INIT_PRECHARGE) || + (init_state_r == INIT_DDR2_PRECHARGE) || + (init_state_r == INIT_REFRESH) || + (init_state_r == INIT_RDLVL_COMPLEX_PRECHARGE) || + (init_state_r == INIT_RDLVL_COMPLEX_ACT) || + (rdlvl_wr_rd && new_burst_r && ~mmcm_wr)) begin + phy_int_cs_n <= #TCQ {CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK{1'b1}}; + if (!(CWL_M % 2)) //even CWL + phy_int_cs_n[0] <= #TCQ 1'b0; + else // odd CWL + phy_int_cs_n[1*nCS_PER_RANK] <= #TCQ 1'b0; + end else + phy_int_cs_n <= #TCQ {CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK{1'b1}}; + end + end else if (RANKS == 1) begin: DDR3_1rank + always @(posedge clk) begin + if (rst) + phy_int_cs_n <= #TCQ {CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK{1'b1}}; + else if ((init_state_r == INIT_LOAD_MR) || + (init_state_r == INIT_MPR_RDEN) || + (init_state_r == INIT_MPR_DISABLE) || + (init_state_r == INIT_WRLVL_START) || + (init_state_r == INIT_WRLVL_LOAD_MR) || + (init_state_r == INIT_WRLVL_LOAD_MR2) || + (init_state_r == INIT_ZQCL) || + (init_state_r == INIT_RDLVL_ACT) || + (init_state_r == INIT_WRCAL_ACT) || + (init_state_r == INIT_OCLKDELAY_ACT) || + (init_state_r == INIT_OCAL_COMPLEX_ACT) || + (init_state_r == INIT_OCAL_CENTER_ACT) || + (init_state_r == INIT_PRECHARGE) || + (init_state_r == INIT_DDR2_PRECHARGE) || + (init_state_r == INIT_REFRESH) || + (init_state_r == INIT_RDLVL_COMPLEX_PRECHARGE) || + (init_state_r == INIT_RDLVL_COMPLEX_ACT) || + (rdlvl_wr_rd && new_burst_r && ~mmcm_wr)) begin + phy_int_cs_n <= #TCQ {CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK{1'b1}}; + if (!(CWL_M % 2)) begin //even CWL + for (n = 0; n < nCS_PER_RANK; n = n + 1) begin + phy_int_cs_n[n] <= #TCQ 1'b0; + end + end else begin //odd CWL + for (p = nCS_PER_RANK; p < 2*nCS_PER_RANK; p = p + 1) begin + phy_int_cs_n[p] <= #TCQ 1'b0; + end + end + end else + phy_int_cs_n <= #TCQ {CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK{1'b1}}; + end + end else if ((REG_CTRL == "ON") && (RANKS == 2)) begin: DDR3_2rank + always @(posedge clk) begin + if (rst) + phy_int_cs_n <= #TCQ {CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK{1'b1}}; + else if (init_state_r == INIT_REG_WRITE) begin + phy_int_cs_n <= #TCQ {CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK{1'b1}}; + if(!(CWL_M%2)) begin + phy_int_cs_n[0%nCK_PER_CLK] <= #TCQ 1'b0; + phy_int_cs_n[1%nCK_PER_CLK] <= #TCQ 1'b0; + end else begin + phy_int_cs_n[2%nCK_PER_CLK] <= #TCQ 1'b0; + phy_int_cs_n[3%nCK_PER_CLK] <= #TCQ 1'b0; + end + end else begin + phy_int_cs_n <= #TCQ {CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK{1'b1}}; + case (chip_cnt_r) + 2'b00:begin + if ((init_state_r == INIT_LOAD_MR) || + (init_state_r == INIT_MPR_RDEN) || + (init_state_r == INIT_MPR_DISABLE) || + (init_state_r == INIT_WRLVL_START) || + (init_state_r == INIT_WRLVL_LOAD_MR) || + (init_state_r == INIT_WRLVL_LOAD_MR2) || + (init_state_r == INIT_ZQCL) || + (init_state_r == INIT_RDLVL_ACT) || + (init_state_r == INIT_WRCAL_ACT) || + (init_state_r == INIT_OCLKDELAY_ACT) || + (init_state_r == INIT_OCAL_COMPLEX_ACT) || + (init_state_r == INIT_OCAL_CENTER_ACT) || + (init_state_r == INIT_PRECHARGE) || + (init_state_r == INIT_DDR2_PRECHARGE) || + (init_state_r == INIT_REFRESH) || + (init_state_r == INIT_RDLVL_COMPLEX_PRECHARGE) || + (init_state_r == INIT_RDLVL_COMPLEX_ACT) || + (rdlvl_wr_rd && new_burst_r && ~mmcm_wr)) begin + phy_int_cs_n <= #TCQ {CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK{1'b1}}; + if (!(CWL_M % 2)) //even CWL + phy_int_cs_n[0] <= #TCQ 1'b0; + else // odd CWL + phy_int_cs_n[1*CS_WIDTH*nCS_PER_RANK] <= #TCQ 1'b0; + end else + phy_int_cs_n <= #TCQ {CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK{1'b1}}; + //for (n = 0; n < nCS_PER_RANK*nCK_PER_CLK*2; n = n + (nCS_PER_RANK*2)) begin + // + // phy_int_cs_n[n+:nCS_PER_RANK] <= #TCQ {nCS_PER_RANK{1'b0}}; + //end + end + 2'b01:begin + if ((init_state_r == INIT_LOAD_MR) || + (init_state_r == INIT_MPR_RDEN) || + (init_state_r == INIT_MPR_DISABLE) || + (init_state_r == INIT_WRLVL_START) || + (init_state_r == INIT_WRLVL_LOAD_MR) || + (init_state_r == INIT_WRLVL_LOAD_MR2) || + (init_state_r == INIT_ZQCL) || + (init_state_r == INIT_RDLVL_ACT) || + (init_state_r == INIT_WRCAL_ACT) || + (init_state_r == INIT_OCLKDELAY_ACT) || + (init_state_r == INIT_OCAL_COMPLEX_ACT) || + (init_state_r == INIT_OCAL_CENTER_ACT) || + (init_state_r == INIT_PRECHARGE) || + (init_state_r == INIT_DDR2_PRECHARGE) || + (init_state_r == INIT_REFRESH) || + (init_state_r == INIT_RDLVL_COMPLEX_PRECHARGE) || + (init_state_r == INIT_RDLVL_COMPLEX_ACT) || + (rdlvl_wr_rd && new_burst_r && ~mmcm_wr)) begin + phy_int_cs_n <= #TCQ {CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK{1'b1}}; + if (!(CWL_M % 2)) //even CWL + phy_int_cs_n[1] <= #TCQ 1'b0; + else // odd CWL + phy_int_cs_n[1+1*CS_WIDTH*nCS_PER_RANK] <= #TCQ 1'b0; + end else + phy_int_cs_n <= #TCQ {CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK{1'b1}}; + //for (p = nCS_PER_RANK; p < nCS_PER_RANK*nCK_PER_CLK*2; p = p + (nCS_PER_RANK*2)) begin + // + // phy_int_cs_n[p+:nCS_PER_RANK] <= #TCQ {nCS_PER_RANK{1'b0}}; + //end + end + endcase + end + end + end else if (RANKS == 2) begin: DDR3_2rank + always @(posedge clk) begin + if (rst) + phy_int_cs_n <= #TCQ {CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK{1'b1}}; + else if (init_state_r == INIT_REG_WRITE) begin + phy_int_cs_n <= #TCQ {CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK{1'b1}}; + if(!(CWL_M%2)) begin + phy_int_cs_n[0%nCK_PER_CLK] <= #TCQ 1'b0; + phy_int_cs_n[1%nCK_PER_CLK] <= #TCQ 1'b0; + end else begin + phy_int_cs_n[2%nCK_PER_CLK] <= #TCQ 1'b0; + phy_int_cs_n[3%nCK_PER_CLK] <= #TCQ 1'b0; + end + end else begin + phy_int_cs_n <= #TCQ {CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK{1'b1}}; + case (chip_cnt_r) + 2'b00:begin + if ((init_state_r == INIT_LOAD_MR) || + (init_state_r == INIT_MPR_RDEN) || + (init_state_r == INIT_MPR_DISABLE) || + (init_state_r == INIT_WRLVL_START) || + (init_state_r == INIT_WRLVL_LOAD_MR) || + (init_state_r == INIT_WRLVL_LOAD_MR2) || + (init_state_r == INIT_ZQCL) || + (init_state_r == INIT_RDLVL_ACT) || + (init_state_r == INIT_WRCAL_ACT) || + (init_state_r == INIT_OCLKDELAY_ACT) || + (init_state_r == INIT_OCAL_COMPLEX_ACT) || + (init_state_r == INIT_OCAL_CENTER_ACT) || + (init_state_r == INIT_PRECHARGE) || + (init_state_r == INIT_DDR2_PRECHARGE) || + (init_state_r == INIT_REFRESH) || + (init_state_r == INIT_RDLVL_COMPLEX_PRECHARGE) || + (init_state_r == INIT_RDLVL_COMPLEX_ACT) || + (rdlvl_wr_rd && new_burst_r && ~mmcm_wr)) begin + phy_int_cs_n <= #TCQ {CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK{1'b1}}; + if (!(CWL_M % 2)) begin //even CWL + for (n = 0; n < nCS_PER_RANK; n = n + 1) begin + phy_int_cs_n[n] <= #TCQ 1'b0; + end + end else begin // odd CWL + for (p = CS_WIDTH*nCS_PER_RANK; p < (CS_WIDTH*nCS_PER_RANK + nCS_PER_RANK); p = p + 1) begin + phy_int_cs_n[p] <= #TCQ 1'b0; + end + end + end else + phy_int_cs_n <= #TCQ {CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK{1'b1}}; + //for (n = 0; n < nCS_PER_RANK*nCK_PER_CLK*2; n = n + (nCS_PER_RANK*2)) begin + // + // phy_int_cs_n[n+:nCS_PER_RANK] <= #TCQ {nCS_PER_RANK{1'b0}}; + //end + end + 2'b01:begin + if ((init_state_r == INIT_LOAD_MR) || + (init_state_r == INIT_MPR_RDEN) || + (init_state_r == INIT_MPR_DISABLE) || + (init_state_r == INIT_WRLVL_START) || + (init_state_r == INIT_WRLVL_LOAD_MR) || + (init_state_r == INIT_WRLVL_LOAD_MR2) || + (init_state_r == INIT_ZQCL) || + (init_state_r == INIT_RDLVL_ACT) || + (init_state_r == INIT_WRCAL_ACT) || + (init_state_r == INIT_OCLKDELAY_ACT) || + (init_state_r == INIT_OCAL_COMPLEX_ACT) || + (init_state_r == INIT_OCAL_CENTER_ACT) || + (init_state_r == INIT_PRECHARGE) || + (init_state_r == INIT_DDR2_PRECHARGE) || + (init_state_r == INIT_REFRESH) || + (init_state_r == INIT_RDLVL_COMPLEX_PRECHARGE) || + (init_state_r == INIT_RDLVL_COMPLEX_ACT) || + (rdlvl_wr_rd && new_burst_r && ~mmcm_wr)) begin + phy_int_cs_n <= #TCQ {CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK{1'b1}}; + if (!(CWL_M % 2)) begin //even CWL + for (q = nCS_PER_RANK; q < (2 * nCS_PER_RANK); q = q + 1) begin + phy_int_cs_n[q] <= #TCQ 1'b0; + end + end else begin // odd CWL + for (m = (nCS_PER_RANK*CS_WIDTH + nCS_PER_RANK); m < (nCS_PER_RANK*CS_WIDTH + 2*nCS_PER_RANK); m = m + 1) begin + phy_int_cs_n[m] <= #TCQ 1'b0; + end + end + end else + phy_int_cs_n <= #TCQ {CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK{1'b1}}; + //for (p = nCS_PER_RANK; p < nCS_PER_RANK*nCK_PER_CLK*2; p = p + (nCS_PER_RANK*2)) begin + // + // phy_int_cs_n[p+:nCS_PER_RANK] <= #TCQ {nCS_PER_RANK{1'b0}}; + //end + end + endcase + end + end // always @ (posedge clk) + end +// verilint STARC-2.2.3.3 on + // commented out for now. Need it for DDR2 2T timing + /* end else begin: DDR2 + always @(posedge clk) + if (rst) begin + phy_int_cs_n <= #TCQ {CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK{1'b1}}; + end else begin + if (init_state_r == INIT_REG_WRITE) begin + // All ranks selected simultaneously + phy_int_cs_n <= #TCQ {CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK{1'b0}}; + end else if ((wrlvl_odt) || + (init_state_r == INIT_LOAD_MR) || + (init_state_r == INIT_ZQCL) || + (init_state_r == INIT_WRLVL_START) || + (init_state_r == INIT_WRLVL_LOAD_MR) || + (init_state_r == INIT_WRLVL_LOAD_MR2) || + (init_state_r == INIT_RDLVL_ACT) || + (init_state_r == INIT_PI_PHASELOCK_READS) || + (init_state_r == INIT_RDLVL_STG1_WRITE) || + (init_state_r == INIT_RDLVL_STG1_READ) || + (init_state_r == INIT_PRECHARGE) || + (init_state_r == INIT_RDLVL_STG2_READ) || + (init_state_r == INIT_WRCAL_ACT) || + (init_state_r == INIT_WRCAL_READ) || + (init_state_r == INIT_WRCAL_WRITE) || + (init_state_r == INIT_DDR2_PRECHARGE) || + (init_state_r == INIT_REFRESH)) begin + phy_int_cs_n[0] <= #TCQ 1'b0; + end + else phy_int_cs_n <= #TCQ {CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK{1'b1}}; + end // else: !if(rst) + end // block: DDR2 */ +endgenerate + + assign phy_cs_n = phy_int_cs_n; + + //*************************************************************************** + // Write/read burst logic for calibration + //*************************************************************************** + + assign rdlvl_wr = (init_state_r == INIT_OCLKDELAY_WRITE) || + (init_state_r == INIT_OCAL_CENTER_WRITE) || + (init_state_r == INIT_RDLVL_STG1_WRITE) || + (init_state_r == INIT_WRCAL_WRITE); + assign rdlvl_rd = (init_state_r == INIT_PI_PHASELOCK_READS) || + ((init_state_r == INIT_RDLVL_STG1_READ) && ~rdlvl_pi_incdec) || //rdlvl pi dec + (init_state_r == INIT_RDLVL_COMPLEX_READ) || + (init_state_r == INIT_RDLVL_STG2_READ) || + (init_state_r == INIT_OCLKDELAY_READ) || + (init_state_r == INIT_WRCAL_READ) || + ((init_state_r == INIT_MPR_READ) && ~rdlvl_pi_incdec) || + (init_state_r == INIT_WRCAL_MULT_READS); + assign rdlvl_wr_rd = rdlvl_wr | rdlvl_rd; + assign mmcm_wr = (init_state_r == INIT_OCAL_CENTER_WRITE); //used to de-assert cs_n during centering +// assign mmcm_wr = 'b0; // (init_state_r == INIT_OCAL_CENTER_WRITE); + + //*************************************************************************** + // Address generation and logic to count # of writes/reads issued during + // certain stages of calibration + //*************************************************************************** + + // Column address generation logic: + // Keep track of the current column address - since all bursts are in + // increments of 8 only during calibration, we need to keep track of + // addresses [COL_WIDTH-1:3], lower order address bits will always = 0 + + always @(posedge clk) + if (rst || wrcal_done) + burst_addr_r <= #TCQ 1'b0; + else if ((init_state_r == INIT_WRCAL_ACT_WAIT) || + (init_state_r == INIT_OCLKDELAY_ACT_WAIT) || + (init_state_r == INIT_OCLKDELAY_WRITE) || + (init_state_r == INIT_OCLKDELAY_READ) || + (init_state_r == INIT_WRCAL_WRITE) || + (init_state_r == INIT_WRCAL_WRITE_READ) || + (init_state_r == INIT_WRCAL_READ) || + (init_state_r == INIT_WRCAL_MULT_READS) || + (init_state_r == INIT_WRCAL_READ_WAIT)) + burst_addr_r <= #TCQ 1'b1; + else if (rdlvl_wr_rd && new_burst_r) + burst_addr_r <= #TCQ ~burst_addr_r; + else + burst_addr_r <= #TCQ 1'b0; + + // Read Level Stage 1 requires writes to the entire row since + // a PRBS pattern is being written. This counter keeps track + // of the number of writes which depends on the column width + // The (stg1_wr_rd_cnt==9'd0) condition was added so the col + // address wraps around during stage1 reads + always @(posedge clk) + if (rst || ((init_state_r == INIT_RDLVL_STG1_WRITE_READ) && + ~rdlvl_stg1_done)) + stg1_wr_rd_cnt <= #TCQ NUM_STG1_WR_RD; + else if (rdlvl_last_byte_done || (stg1_wr_rd_cnt == 9'd1) || + (prbs_rdlvl_prech_req && (init_state_r == INIT_RDLVL_ACT_WAIT)) || + (init_state_r == INIT_OCAL_COMPLEX_ACT_WAIT) ) begin + if (~complex_row0_wr_done || wr_victim_inc || + (complex_row1_wr_done && (~complex_row0_rd_done || (complex_row0_rd_done && complex_row1_rd_done)))) + stg1_wr_rd_cnt <= #TCQ 'd127; + else + stg1_wr_rd_cnt <= #TCQ prbs_rdlvl_done?'d30 :'d22; + end else if (((init_state_r == INIT_RDLVL_STG1_WRITE) && new_burst_r && ~phy_data_full) + ||((init_state_r == INIT_RDLVL_COMPLEX_READ) && rdlvl_stg1_done)) + stg1_wr_rd_cnt <= #TCQ stg1_wr_rd_cnt - 1; + + always @(posedge clk) + if (rst) + wr_victim_inc <= #TCQ 1'b0; + else if (complex_row0_wr_done && (stg1_wr_rd_cnt == 9'd2) && ~stg1_wr_done) + wr_victim_inc <= #TCQ 1'b1; + else + wr_victim_inc <= #TCQ 1'b0; + + always @(posedge clk) + reset_rd_addr_r1 <= #TCQ reset_rd_addr; + +generate + if (FIXED_VICTIM == "FALSE") begin: row_cnt_victim_rotate + always @(posedge clk) + if (rst || (wr_victim_inc && (complex_row_cnt == DQ_PER_DQS*2-1)) || ~rdlvl_stg1_done_r1 || prbs_rdlvl_done) + complex_row_cnt <= #TCQ 'd0; + else if ((((stg1_wr_rd_cnt == 'd22) && ((init_state_r == INIT_RDLVL_COMPLEX_PRECHARGE) || + (complex_rdlvl_int_ref_req && (init_state_r == INIT_REFRESH_WAIT) && (cnt_cmd_r == 'd127)))) || + complex_victim_inc || (complex_sample_cnt_inc_r2 && ~complex_victim_inc) || wr_victim_inc || reset_rd_addr_r1)) begin + // During writes row count is incremented with every wr_victim_in and stg1_wr_rd_cnt=='d22 + if ((complex_row_cnt < DQ_PER_DQS*2-1) && ~stg1_wr_done) + complex_row_cnt <= #TCQ complex_row_cnt + 1; + // During reads row count requires different conditions for increments + else if (stg1_wr_done) begin + if (reset_rd_addr_r1) + complex_row_cnt <= #TCQ 'd0; + // When looping multiple times in the same victim bit in a byte + else if (complex_sample_cnt_inc_r2 && ~complex_victim_inc) + complex_row_cnt <= #TCQ rd_victim_sel*2; + // When looping through victim bits within a byte + else if (complex_row_cnt < DQ_PER_DQS*2-1) + complex_row_cnt <= #TCQ complex_row_cnt + 1; + // When the number of samples is done and tap is incremented within a byte + else + complex_row_cnt <= #TCQ 'd0; + end + end + end else begin: row_cnt_victim_fixed + always @(posedge clk) + if (rst || ~rdlvl_stg1_done_r1 || prbs_rdlvl_done) + complex_row_cnt <= #TCQ 'd0; + else if ((stg1_wr_rd_cnt == 'd22) && (((init_state_r == INIT_RDLVL_COMPLEX_PRECHARGE_WAIT) && (complex_wait_cnt == 'd15)) || complex_rdlvl_int_ref_req)) + complex_row_cnt <= #TCQ 'd1; + else + complex_row_cnt <= #TCQ 'd0; + end +endgenerate + +//row count + + always @(posedge clk) + if (rst || (wr_victim_inc && (complex_row_cnt_ocal == COMPLEX_ROW_CNT_BYTE-1)) || ~rdlvl_stg1_done_r1 || prbs_rdlvl_done_pulse || complex_byte_rd_done) + complex_row_cnt_ocal <= #TCQ 'd0; + else if ( prbs_rdlvl_done && (((stg1_wr_rd_cnt == 'd30) && (init_state_r == INIT_RDLVL_COMPLEX_PRECHARGE)) || + (complex_sample_cnt_inc_r2) || wr_victim_inc)) begin + // During writes row count is incremented with every wr_victim_in and stg1_wr_rd_cnt=='d22 + if (complex_row_cnt_ocal < COMPLEX_ROW_CNT_BYTE-1) begin + complex_row_cnt_ocal <= #TCQ complex_row_cnt_ocal + 1; + end + end + + always @(posedge clk) + if (rst) + complex_odt_ext <= #TCQ 1'b0; + else if ((init_state_r == INIT_RDLVL_COMPLEX_PRECHARGE) || (init_state_r == INIT_PRECHARGE)) + complex_odt_ext <= #TCQ 1'b0; + else if (rdlvl_stg1_done_r1 && (stg1_wr_rd_cnt == 9'd1) && (init_state_r == INIT_RDLVL_STG1_WRITE)) + complex_odt_ext <= #TCQ 1'b1; + + always @(posedge clk) + if (rst || (wr_victim_inc && (complex_row_cnt == DQ_PER_DQS*2-1))) begin + wr_victim_sel <= #TCQ 'd0; + end else if (rdlvl_stg1_done_r1 && wr_victim_inc) begin + wr_victim_sel <= #TCQ wr_victim_sel + 1; + end + + always @(posedge clk) + if (rst) begin + wr_victim_sel_ocal <= #TCQ 'd0; + end else if (wr_victim_inc && (complex_row_cnt_ocal == COMPLEX_ROW_CNT_BYTE-1)) begin + wr_victim_sel_ocal <= #TCQ 'd0; + end else if (prbs_rdlvl_done && wr_victim_inc) begin + wr_victim_sel_ocal <= #TCQ wr_victim_sel_ocal + 1; + end + + always @(posedge clk) + if (rst) begin + victim_sel <= #TCQ 'd0; + victim_byte_cnt <= #TCQ 'd0; + end else if ((~stg1_wr_done && ~prbs_rdlvl_done) || (prbs_rdlvl_done && ~complex_wr_done)) begin + victim_sel <= #TCQ prbs_rdlvl_done? wr_victim_sel_ocal: wr_victim_sel; + victim_byte_cnt <= #TCQ 'd0; + end else begin + if( (init_state_r == INIT_RDLVL_COMPLEX_ACT) || reset_rd_addr) + victim_sel <= #TCQ prbs_rdlvl_done? complex_ocal_rd_victim_sel:rd_victim_sel; + victim_byte_cnt <= #TCQ 'd0; + end + +generate + if (FIXED_VICTIM == "FALSE") begin: wr_done_victim_rotate + always @(posedge clk) + if (rst || (wr_victim_inc && (complex_row_cnt < DQ_PER_DQS*2-1) && ~prbs_rdlvl_done) || + (wr_victim_inc && prbs_rdlvl_done && complex_row_cnt_ocal 'd85) begin + if (complex_num_reads < 'd6) + complex_num_reads <= #TCQ complex_num_reads + 1; + else + complex_num_reads <= #TCQ 'd1; + // Initila value for VCCAUX pattern is 3, 7, and 12 + end else if (stg1_wr_rd_cnt > 'd73) begin + if (stg1_wr_rd_cnt == 'd85) + complex_num_reads <= #TCQ 'd3; + else if (complex_num_reads < 'd5) + complex_num_reads <= #TCQ complex_num_reads + 1; + end else if (stg1_wr_rd_cnt > 'd39) begin + if (stg1_wr_rd_cnt == 'd73) + complex_num_reads <= #TCQ 'd7; + else if (complex_num_reads < 'd10) + complex_num_reads <= #TCQ complex_num_reads + 1; + end else begin + if (stg1_wr_rd_cnt == 'd39) + complex_num_reads <= #TCQ 'd12; + else if (complex_num_reads < 'd14) + complex_num_reads <= #TCQ complex_num_reads + 1; + end + // Initialize to 1 at the start of reads or after precharge and activate + end else if ((((init_state_r == INIT_RDLVL_STG1_WRITE_READ) || (init_state_r == INIT_RDLVL_COMPLEX_ACT_WAIT)) && ~ext_int_ref_req) || + ((init_state_r == INIT_RDLVL_STG1_WRITE_READ) && (stg1_wr_rd_cnt == 'd22))) + complex_num_reads <= #TCQ 'd1; + + always @(posedge clk) + if (rst) + complex_num_reads_dec <= #TCQ 'd1; + else if (((init_state_r == INIT_RDLVL_COMPLEX_READ_WAIT) && (complex_wait_cnt == 'd15) && ~complex_row0_rd_done) || + ((init_state_r == INIT_RDLVL_STG1_WRITE_READ) || (init_state_r == INIT_RDLVL_COMPLEX_ACT_WAIT))) + complex_num_reads_dec <= #TCQ complex_num_reads; + else if ((init_state_r == INIT_RDLVL_COMPLEX_READ) && (complex_num_reads_dec > 'd0)) + complex_num_reads_dec <= #TCQ complex_num_reads_dec - 1; + + always @(posedge clk) + if (rst) + complex_address <= #TCQ 'd0; + else if (((init_state_r == INIT_RDLVL_COMPLEX_READ_WAIT) && (init_state_r1 != INIT_RDLVL_COMPLEX_READ_WAIT)) || + ((init_state_r == INIT_OCAL_COMPLEX_WRITE_WAIT) && (init_state_r1 != INIT_OCAL_COMPLEX_WRITE_WAIT))) + complex_address <= #TCQ phy_address[COL_WIDTH-1:0]; + + + always @ (posedge clk) + if (rst) + complex_oclkdelay_calib_start_int <= #TCQ 'b0; + else if ((init_state_r == INIT_RDLVL_COMPLEX_PRECHARGE_PREWAIT) && prbs_last_byte_done_r) // changed for new algo 3/26 + complex_oclkdelay_calib_start_int <= #TCQ 'b1; + + always @(posedge clk) begin + complex_oclkdelay_calib_start_r1 <= #TCQ complex_oclkdelay_calib_start_int; + complex_oclkdelay_calib_start_r2 <= #TCQ complex_oclkdelay_calib_start_r1; + end + + always @ (posedge clk) + if (rst) + complex_oclkdelay_calib_start <= #TCQ 'b0; + else if (complex_oclkdelay_calib_start_int && (init_state_r == INIT_OCAL_CENTER_WRITE_WAIT) && prbs_rdlvl_done) // changed for new algo 3/26 + complex_oclkdelay_calib_start <= #TCQ 'b1; + + //packet fragmentation for complex oclkdealy calib write + always @(posedge clk) + if (rst || prbs_rdlvl_done_pulse) begin + complex_num_writes <= #TCQ 'd1; + end else if ((init_state_r == INIT_OCAL_COMPLEX_WRITE_WAIT) && (complex_wait_cnt == 'd14) && ~complex_row0_wr_done) begin + if (stg1_wr_rd_cnt > 'd85) begin + if (complex_num_writes < 'd6) + complex_num_writes <= #TCQ complex_num_writes + 1; + else + complex_num_writes <= #TCQ 'd1; + // Initila value for VCCAUX pattern is 3, 7, and 12 + end else if (stg1_wr_rd_cnt > 'd73) begin + if (stg1_wr_rd_cnt == 'd85) + complex_num_writes <= #TCQ 'd3; + else if (complex_num_writes < 'd5) + complex_num_writes <= #TCQ complex_num_writes + 1; + end else if (stg1_wr_rd_cnt > 'd39) begin + if (stg1_wr_rd_cnt == 'd73) + complex_num_writes <= #TCQ 'd7; + else if (complex_num_writes < 'd10) + complex_num_writes <= #TCQ complex_num_writes + 1; + end else begin + if (stg1_wr_rd_cnt == 'd39) + complex_num_writes <= #TCQ 'd12; + else if (complex_num_writes < 'd14) + complex_num_writes <= #TCQ complex_num_writes + 1; + end + // Initialize to 1 at the start of write or after precharge and activate + end else if ((init_state_r == INIT_RDLVL_COMPLEX_ACT_WAIT) && complex_row0_wr_done) + complex_num_writes <= #TCQ 'd30; + else if (init_state_r == INIT_RDLVL_COMPLEX_ACT_WAIT) + complex_num_writes <= #TCQ 'd1; + + always @(posedge clk) + if (rst || prbs_rdlvl_done_pulse) + complex_num_writes_dec <= #TCQ 'd1; + else if (((init_state_r == INIT_OCAL_COMPLEX_WRITE_WAIT) && (complex_wait_cnt == 'd15) && ~complex_row0_rd_done) || + ((init_state_r == INIT_RDLVL_STG1_WRITE_READ) || (init_state_r == INIT_RDLVL_COMPLEX_ACT_WAIT))) + complex_num_writes_dec <= #TCQ complex_num_writes; + else if ((init_state_r == INIT_RDLVL_STG1_WRITE) && (complex_num_writes_dec > 'd0)) + complex_num_writes_dec <= #TCQ complex_num_writes_dec - 1; + + always @(posedge clk) + if (rst) + complex_sample_cnt_inc_ocal <= #TCQ 1'b0; + else if ((stg1_wr_rd_cnt == 9'd1) && complex_byte_rd_done && prbs_rdlvl_done) + complex_sample_cnt_inc_ocal <= #TCQ 1'b1; + else + complex_sample_cnt_inc_ocal <= #TCQ 1'b0; + + always @(posedge clk) + if (rst) + complex_sample_cnt_inc <= #TCQ 1'b0; + else if ((stg1_wr_rd_cnt == 9'd1) && complex_row1_rd_done) + complex_sample_cnt_inc <= #TCQ 1'b1; + else + complex_sample_cnt_inc <= #TCQ 1'b0; + + always @(posedge clk) begin + complex_sample_cnt_inc_r1 <= #TCQ complex_sample_cnt_inc; + complex_sample_cnt_inc_r2 <= #TCQ complex_sample_cnt_inc_r1; + end + + //complex refresh req + always @ (posedge clk) begin + if(rst || (init_state_r == INIT_OCAL_COMPLEX_ACT) || + (prbs_rdlvl_done && (init_state_r == INIT_RDLVL_COMPLEX_ACT)) ) + complex_ocal_ref_done <= #TCQ 1'b1; + else if (init_state_r == INIT_RDLVL_STG1_WRITE) + complex_ocal_ref_done <= #TCQ 1'b0; + end + + //complex ocal odt extention + always @(posedge clk) + if (rst) + complex_ocal_odt_ext <= #TCQ 1'b0; + else if (((init_state_r == INIT_PRECHARGE_PREWAIT) && cnt_cmd_done_m7_r) || (init_state_r == INIT_OCLKDELAY_READ_WAIT)) + complex_ocal_odt_ext <= #TCQ 1'b0; + else if ((init_state_r == INIT_OCAL_CENTER_WRITE) || (init_state_r == INIT_OCAL_CENTER_WRITE_WAIT)) + complex_ocal_odt_ext <= #TCQ 1'b1; + + // OCLKDELAY calibration requires multiple writes because + // write can be up to 2 cycles early since OCLKDELAY tap + // can go down to 0 + always @(posedge clk) + if (rst || (init_state_r == INIT_OCLKDELAY_WRITE_WAIT) || + (oclk_wr_cnt == 4'd0)) + oclk_wr_cnt <= #TCQ NUM_STG1_WR_RD; + else if ((init_state_r == INIT_OCLKDELAY_WRITE) && + new_burst_r && ~phy_data_full) + oclk_wr_cnt <= #TCQ oclk_wr_cnt - 1; + + // Write calibration requires multiple writes because + // write can be up to 2 cycles early due to new write + // leveling algorithm to avoid late writes + always @(posedge clk) + if (rst || (init_state_r == INIT_WRCAL_WRITE_READ) || + (wrcal_wr_cnt == 4'd0)) + wrcal_wr_cnt <= #TCQ NUM_STG1_WR_RD; + else if ((init_state_r == INIT_WRCAL_WRITE) && + new_burst_r && ~phy_data_full) + wrcal_wr_cnt <= #TCQ wrcal_wr_cnt - 1; + + +generate +if(nCK_PER_CLK == 4) begin:back_to_back_reads_4_1 + // 4 back-to-back reads with gaps for + // read data_offset calibration (rdlvl stage 2) + always @(posedge clk) + if (rst || (init_state_r == INIT_RDLVL_STG2_READ_WAIT)) + num_reads <= #TCQ 3'b000; + else if ((num_reads > 3'b000) && ~(phy_ctl_full || phy_cmd_full)) + num_reads <= #TCQ num_reads - 1; + else if ((init_state_r == INIT_RDLVL_STG2_READ) || phy_ctl_full || + phy_cmd_full && new_burst_r) + num_reads <= #TCQ 3'b011; +end else if(nCK_PER_CLK == 2) begin: back_to_back_reads_2_1 + // 4 back-to-back reads with gaps for + // read data_offset calibration (rdlvl stage 2) + always @(posedge clk) + if (rst || (init_state_r == INIT_RDLVL_STG2_READ_WAIT)) + num_reads <= #TCQ 3'b000; + else if ((num_reads > 3'b000) && ~(phy_ctl_full || phy_cmd_full)) + num_reads <= #TCQ num_reads - 1; + else if ((init_state_r == INIT_RDLVL_STG2_READ) || phy_ctl_full || + phy_cmd_full && new_burst_r) + num_reads <= #TCQ 3'b111; +end +endgenerate + + // back-to-back reads during write calibration + always @(posedge clk) + if (rst ||(init_state_r == INIT_WRCAL_READ_WAIT)) + wrcal_reads <= #TCQ 2'b00; + else if ((wrcal_reads > 2'b00) && ~(phy_ctl_full || phy_cmd_full)) + wrcal_reads <= #TCQ wrcal_reads - 1; + else if ((init_state_r == INIT_WRCAL_MULT_READS) || phy_ctl_full || + phy_cmd_full && new_burst_r) + wrcal_reads <= #TCQ 'd255; + + // determine how often to issue row command during read leveling writes + // and reads + always @(posedge clk) + if (rdlvl_wr_rd) begin + // 2:1 mode - every other command issued is a data command + // 4:1 mode - every command issued is a data command + if (nCK_PER_CLK == 2) begin + if (!phy_ctl_full) + new_burst_r <= #TCQ ~new_burst_r; + end else + new_burst_r <= #TCQ 1'b1; + end else + new_burst_r <= #TCQ 1'b1; + + // indicate when a write is occurring. PHY_WRDATA_EN must be asserted + // simultaneous with the corresponding command/address for CWL = 5,6 + always @(posedge clk) begin + rdlvl_wr_r <= #TCQ rdlvl_wr; + calib_wrdata_en <= #TCQ phy_wrdata_en; + end + + always @(posedge clk) begin + if (rst || wrcal_done) + extend_cal_pat <= #TCQ 1'b0; + else if (temp_lmr_done && (PRE_REV3ES == "ON")) + extend_cal_pat <= #TCQ 1'b1; + end + + + generate + if ((nCK_PER_CLK == 4) || (BURST_MODE == "4")) begin: wrdqen_div4 + // Write data enable asserted for one DIV4 clock cycle + // Only BL8 supported with DIV4. DDR2 BL4 will use DIV2. + always @(*) begin + if (~phy_data_full && ((init_state_r == INIT_RDLVL_STG1_WRITE) || + (init_state_r == INIT_OCLKDELAY_WRITE) || + (init_state_r == INIT_OCAL_CENTER_WRITE) || + (init_state_r == INIT_WRCAL_WRITE))) + phy_wrdata_en = 1'b1; + else + phy_wrdata_en = 1'b0; + end + end else begin: wrdqen_div2 // block: wrdqen_div4 + always @(*) + if((rdlvl_wr & ~phy_ctl_full & new_burst_r & ~phy_data_full) + | phy_wrdata_en_r1) + phy_wrdata_en = 1'b1; + else + phy_wrdata_en = 1'b0; + + always @(posedge clk) + phy_wrdata_en_r1 <= #TCQ rdlvl_wr & ~phy_ctl_full & new_burst_r + & ~phy_data_full; + + always @(posedge clk) begin + if (!phy_wrdata_en & first_rdlvl_pat_r) + wrdata_pat_cnt <= #TCQ 2'b00; + else if (wrdata_pat_cnt == 2'b11) + wrdata_pat_cnt <= #TCQ 2'b10; + else + wrdata_pat_cnt <= #TCQ wrdata_pat_cnt + 1; + end + + always @(posedge clk) begin + if (!phy_wrdata_en & first_wrcal_pat_r) + wrcal_pat_cnt <= #TCQ 2'b00; + else if (extend_cal_pat && (wrcal_pat_cnt == 2'b01)) + wrcal_pat_cnt <= #TCQ 2'b00; + else if (wrcal_pat_cnt == 2'b11) + wrcal_pat_cnt <= #TCQ 2'b10; + else + wrcal_pat_cnt <= #TCQ wrcal_pat_cnt + 1; + end + + end + endgenerate + + + // indicate when a write is occurring. PHY_RDDATA_EN must be asserted + // simultaneous with the corresponding command/address. PHY_RDDATA_EN + // is used during read-leveling to determine read latency + assign phy_rddata_en = ~phy_if_empty; + + // Read data valid generation for MC and User Interface after calibration is + // complete + assign phy_rddata_valid = init_complete_r1_timing ? phy_rddata_en : 1'b0; + + //*************************************************************************** + // Generate training data written at start of each read-leveling stage + // For every stage of read leveling, 8 words are written into memory + // The format is as follows (shown as {rise,fall}): + // Stage 1: 0xF, 0x0, 0xF, 0x0, 0xF, 0x0, 0xF, 0x0 + // Stage 2: 0xF, 0x0, 0xA, 0x5, 0x5, 0xA, 0x9, 0x6 + //*************************************************************************** + + + always @(posedge clk) + if ((init_state_r == INIT_IDLE) || + (init_state_r == INIT_RDLVL_STG1_WRITE)) + cnt_init_data_r <= #TCQ 2'b00; + else if (phy_wrdata_en) + cnt_init_data_r <= #TCQ cnt_init_data_r + 1; + else if (init_state_r == INIT_WRCAL_WRITE) + cnt_init_data_r <= #TCQ 2'b10; + + + // write different sequence for very + // first write to memory only. Used to help us differentiate + // if the writes are "early" or "on-time" during read leveling + always @(posedge clk) + if (rst || rdlvl_stg1_rank_done) + first_rdlvl_pat_r <= #TCQ 1'b1; + else if (phy_wrdata_en && (init_state_r == INIT_RDLVL_STG1_WRITE)) + first_rdlvl_pat_r <= #TCQ 1'b0; + + + always @(posedge clk) + if (rst || wrcal_resume || + (init_state_r == INIT_WRCAL_ACT_WAIT)) + first_wrcal_pat_r <= #TCQ 1'b1; + else if (phy_wrdata_en && (init_state_r == INIT_WRCAL_WRITE)) + first_wrcal_pat_r <= #TCQ 1'b0; + +generate + if ((CLK_PERIOD/nCK_PER_CLK > 2500) && (nCK_PER_CLK == 2)) begin: wrdq_div2_2to1_rdlvl_first + + always @(posedge clk) + if (~oclkdelay_calib_done) + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'hF}}, + {DQ_WIDTH/4{4'h0}}, + {DQ_WIDTH/4{4'hF}}, + {DQ_WIDTH/4{4'h0}}}; + else if (!rdlvl_stg1_done) begin + // The 16 words for stage 1 write data in 2:1 mode is written + // over 4 consecutive controller clock cycles. Note that write + // data follows phy_wrdata_en by one clock cycle + case (wrdata_pat_cnt) + 2'b00: begin + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'hE}}, + {DQ_WIDTH/4{4'h7}}, + {DQ_WIDTH/4{4'h3}}, + {DQ_WIDTH/4{4'h9}}}; + end + + 2'b01: begin + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'h4}}, + {DQ_WIDTH/4{4'h2}}, + {DQ_WIDTH/4{4'h9}}, + {DQ_WIDTH/4{4'hC}}}; + end + + 2'b10: begin + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'hE}}, + {DQ_WIDTH/4{4'h7}}, + {DQ_WIDTH/4{4'h1}}, + {DQ_WIDTH/4{4'hB}}}; + end + + 2'b11: begin + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'h4}}, + {DQ_WIDTH/4{4'h2}}, + {DQ_WIDTH/4{4'h9}}, + {DQ_WIDTH/4{4'hC}}}; + end + endcase + end else if (!prbs_rdlvl_done && ~phy_data_full) begin + phy_wrdata <= #TCQ prbs_o; + // prbs_o is 8-bits wide hence {DQ_WIDTH/8{prbs_o}} results in + // prbs_o being concatenated 8 times resulting in DQ_WIDTH + /*phy_wrdata <= #TCQ {{DQ_WIDTH/8{prbs_o[4*8-1:3*8]}}, + {DQ_WIDTH/8{prbs_o[3*8-1:2*8]}}, + {DQ_WIDTH/8{prbs_o[2*8-1:8]}}, + {DQ_WIDTH/8{prbs_o[8-1:0]}}};*/ + end else if (!wrcal_done) begin + case (wrcal_pat_cnt) + 2'b00: begin + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'h5}}, + {DQ_WIDTH/4{4'hA}}, + {DQ_WIDTH/4{4'h0}}, + {DQ_WIDTH/4{4'hF}}}; + end + 2'b01: begin + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'h6}}, + {DQ_WIDTH/4{4'h9}}, + {DQ_WIDTH/4{4'hA}}, + {DQ_WIDTH/4{4'h5}}}; + end + 2'b10: begin + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'h4}}, + {DQ_WIDTH/4{4'hE}}, + {DQ_WIDTH/4{4'h1}}, + {DQ_WIDTH/4{4'hB}}}; + end + 2'b11: begin + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'h8}}, + {DQ_WIDTH/4{4'hD}}, + {DQ_WIDTH/4{4'hE}}, + {DQ_WIDTH/4{4'h4}}}; + end + endcase + end + + end else if ((CLK_PERIOD/nCK_PER_CLK > 2500) && (nCK_PER_CLK == 4)) begin: wrdq_div2_4to1_rdlvl_first + + always @(posedge clk) + if (~oclkdelay_calib_done) + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'hF}},{DQ_WIDTH/4{4'h0}}, + {DQ_WIDTH/4{4'hF}},{DQ_WIDTH/4{4'h0}}, + {DQ_WIDTH/4{4'hF}},{DQ_WIDTH/4{4'h0}}, + {DQ_WIDTH/4{4'hF}},{DQ_WIDTH/4{4'h0}}}; + else if (!rdlvl_stg1_done && ~phy_data_full) + // write different sequence for very + // first write to memory only. Used to help us differentiate + // if the writes are "early" or "on-time" during read leveling + if (first_rdlvl_pat_r) + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'h4}},{DQ_WIDTH/4{4'h2}}, + {DQ_WIDTH/4{4'h9}},{DQ_WIDTH/4{4'hC}}, + {DQ_WIDTH/4{4'hE}},{DQ_WIDTH/4{4'h7}}, + {DQ_WIDTH/4{4'h3}},{DQ_WIDTH/4{4'h9}}}; + else + // For all others, change the first two words written in order + // to differentiate the "early write" and "on-time write" + // readback patterns during read leveling + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'h4}},{DQ_WIDTH/4{4'h2}}, + {DQ_WIDTH/4{4'h9}},{DQ_WIDTH/4{4'hC}}, + {DQ_WIDTH/4{4'hE}},{DQ_WIDTH/4{4'h7}}, + {DQ_WIDTH/4{4'h1}},{DQ_WIDTH/4{4'hB}}}; + else if (~(prbs_rdlvl_done || prbs_last_byte_done_r) && ~phy_data_full) + phy_wrdata <= #TCQ prbs_o; + // prbs_o is 8-bits wide hence {DQ_WIDTH/8{prbs_o}} results in + // prbs_o being concatenated 8 times resulting in DQ_WIDTH + /*phy_wrdata <= #TCQ {{DQ_WIDTH/8{prbs_o[8*8-1:7*8]}},{DQ_WIDTH/8{prbs_o[7*8-1:6*8]}}, + {DQ_WIDTH/8{prbs_o[6*8-1:5*8]}},{DQ_WIDTH/8{prbs_o[5*8-1:4*8]}}, + {DQ_WIDTH/8{prbs_o[4*8-1:3*8]}},{DQ_WIDTH/8{prbs_o[3*8-1:2*8]}}, + {DQ_WIDTH/8{prbs_o[2*8-1:8]}},{DQ_WIDTH/8{prbs_o[8-1:0]}}};*/ + else if (!wrcal_done) + if (first_wrcal_pat_r) + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'h6}},{DQ_WIDTH/4{4'h9}}, + {DQ_WIDTH/4{4'hA}},{DQ_WIDTH/4{4'h5}}, + {DQ_WIDTH/4{4'h5}},{DQ_WIDTH/4{4'hA}}, + {DQ_WIDTH/4{4'h0}},{DQ_WIDTH/4{4'hF}}}; + else + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'h8}},{DQ_WIDTH/4{4'hD}}, + {DQ_WIDTH/4{4'hE}},{DQ_WIDTH/4{4'h4}}, + {DQ_WIDTH/4{4'h4}},{DQ_WIDTH/4{4'hE}}, + {DQ_WIDTH/4{4'h1}},{DQ_WIDTH/4{4'hB}}}; + + + end else if (nCK_PER_CLK == 4) begin: wrdq_div1_4to1_wrcal_first + + always @(posedge clk) + if ((~oclkdelay_calib_done) && (DRAM_TYPE == "DDR3")) + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'hF}},{DQ_WIDTH/4{4'h0}}, + {DQ_WIDTH/4{4'hF}},{DQ_WIDTH/4{4'h0}}, + {DQ_WIDTH/4{4'hF}},{DQ_WIDTH/4{4'h0}}, + {DQ_WIDTH/4{4'hF}},{DQ_WIDTH/4{4'h0}}}; + else if ((!wrcal_done)&& (DRAM_TYPE == "DDR3")) begin + if (extend_cal_pat) + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'h6}},{DQ_WIDTH/4{4'h9}}, + {DQ_WIDTH/4{4'hA}},{DQ_WIDTH/4{4'h5}}, + {DQ_WIDTH/4{4'h5}},{DQ_WIDTH/4{4'hA}}, + {DQ_WIDTH/4{4'h0}},{DQ_WIDTH/4{4'hF}}}; + else if (first_wrcal_pat_r) + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'h6}},{DQ_WIDTH/4{4'h9}}, + {DQ_WIDTH/4{4'hA}},{DQ_WIDTH/4{4'h5}}, + {DQ_WIDTH/4{4'h5}},{DQ_WIDTH/4{4'hA}}, + {DQ_WIDTH/4{4'h0}},{DQ_WIDTH/4{4'hF}}}; + else + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'h8}},{DQ_WIDTH/4{4'hD}}, + {DQ_WIDTH/4{4'hE}},{DQ_WIDTH/4{4'h4}}, + {DQ_WIDTH/4{4'h4}},{DQ_WIDTH/4{4'hE}}, + {DQ_WIDTH/4{4'h1}},{DQ_WIDTH/4{4'hB}}}; + end else if (!rdlvl_stg1_done && ~phy_data_full) begin + // write different sequence for very + // first write to memory only. Used to help us differentiate + // if the writes are "early" or "on-time" during read leveling + if (first_rdlvl_pat_r) + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'h4}},{DQ_WIDTH/4{4'h2}}, + {DQ_WIDTH/4{4'h9}},{DQ_WIDTH/4{4'hC}}, + {DQ_WIDTH/4{4'hE}},{DQ_WIDTH/4{4'h7}}, + {DQ_WIDTH/4{4'h3}},{DQ_WIDTH/4{4'h9}}}; + else + // For all others, change the first two words written in order + // to differentiate the "early write" and "on-time write" + // readback patterns during read leveling + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'h4}},{DQ_WIDTH/4{4'h2}}, + {DQ_WIDTH/4{4'h9}},{DQ_WIDTH/4{4'hC}}, + {DQ_WIDTH/4{4'hE}},{DQ_WIDTH/4{4'h7}}, + {DQ_WIDTH/4{4'h1}},{DQ_WIDTH/4{4'hB}}}; + end else if (!prbs_rdlvl_done && ~phy_data_full) + phy_wrdata <= #TCQ prbs_o; + // prbs_o is 8-bits wide hence {DQ_WIDTH/8{prbs_o}} results in + // prbs_o being concatenated 8 times resulting in DQ_WIDTH + /*phy_wrdata <= #TCQ {{DQ_WIDTH/8{prbs_o[8*8-1:7*8]}},{DQ_WIDTH/8{prbs_o[7*8-1:6*8]}}, + {DQ_WIDTH/8{prbs_o[6*8-1:5*8]}},{DQ_WIDTH/8{prbs_o[5*8-1:4*8]}}, + {DQ_WIDTH/8{prbs_o[4*8-1:3*8]}},{DQ_WIDTH/8{prbs_o[3*8-1:2*8]}}, + {DQ_WIDTH/8{prbs_o[2*8-1:8]}},{DQ_WIDTH/8{prbs_o[8-1:0]}}};*/ + else if (!complex_oclkdelay_calib_done && ~phy_data_full) + phy_wrdata <= #TCQ prbs_o; + end else begin: wrdq_div1_2to1_wrcal_first + + always @(posedge clk) + if ((~oclkdelay_calib_done)&& (DRAM_TYPE == "DDR3")) + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'hF}}, + {DQ_WIDTH/4{4'h0}}, + {DQ_WIDTH/4{4'hF}}, + {DQ_WIDTH/4{4'h0}}}; + else if ((!wrcal_done) && (DRAM_TYPE == "DDR3"))begin + case (wrcal_pat_cnt) + 2'b00: begin + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'h5}}, + {DQ_WIDTH/4{4'hA}}, + {DQ_WIDTH/4{4'h0}}, + {DQ_WIDTH/4{4'hF}}}; + end + 2'b01: begin + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'h6}}, + {DQ_WIDTH/4{4'h9}}, + {DQ_WIDTH/4{4'hA}}, + {DQ_WIDTH/4{4'h5}}}; + end + 2'b10: begin + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'h4}}, + {DQ_WIDTH/4{4'hE}}, + {DQ_WIDTH/4{4'h1}}, + {DQ_WIDTH/4{4'hB}}}; + end + 2'b11: begin + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'h8}}, + {DQ_WIDTH/4{4'hD}}, + {DQ_WIDTH/4{4'hE}}, + {DQ_WIDTH/4{4'h4}}}; + end + endcase + end else if (!rdlvl_stg1_done) begin + // The 16 words for stage 1 write data in 2:1 mode is written + // over 4 consecutive controller clock cycles. Note that write + // data follows phy_wrdata_en by one clock cycle + case (wrdata_pat_cnt) + 2'b00: begin + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'hE}}, + {DQ_WIDTH/4{4'h7}}, + {DQ_WIDTH/4{4'h3}}, + {DQ_WIDTH/4{4'h9}}}; + end + + 2'b01: begin + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'h4}}, + {DQ_WIDTH/4{4'h2}}, + {DQ_WIDTH/4{4'h9}}, + {DQ_WIDTH/4{4'hC}}}; + end + + 2'b10: begin + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'hE}}, + {DQ_WIDTH/4{4'h7}}, + {DQ_WIDTH/4{4'h1}}, + {DQ_WIDTH/4{4'hB}}}; + end + + 2'b11: begin + phy_wrdata <= #TCQ {{DQ_WIDTH/4{4'h4}}, + {DQ_WIDTH/4{4'h2}}, + {DQ_WIDTH/4{4'h9}}, + {DQ_WIDTH/4{4'hC}}}; + end + endcase + end else if (!prbs_rdlvl_done && ~phy_data_full) begin + phy_wrdata <= #TCQ prbs_o; + // prbs_o is 8-bits wide hence {DQ_WIDTH/8{prbs_o}} results in + // prbs_o being concatenated 8 times resulting in DQ_WIDTH + /*phy_wrdata <= #TCQ {{DQ_WIDTH/8{prbs_o[4*8-1:3*8]}}, + {DQ_WIDTH/8{prbs_o[3*8-1:2*8]}}, + {DQ_WIDTH/8{prbs_o[2*8-1:8]}}, + {DQ_WIDTH/8{prbs_o[8-1:0]}}};*/ + end else if (!complex_oclkdelay_calib_done && ~phy_data_full) begin + phy_wrdata <= #TCQ prbs_o; + end + + end +endgenerate + + //*************************************************************************** + // Memory control/address + //*************************************************************************** + + + // Phases [2] and [3] are always deasserted for 4:1 mode + generate + if (nCK_PER_CLK == 4) begin: gen_div4_ca_tieoff + always @(posedge clk) begin + phy_ras_n[3:2] <= #TCQ 3'b11; + phy_cas_n[3:2] <= #TCQ 3'b11; + phy_we_n[3:2] <= #TCQ 3'b11; + end + end + endgenerate + + // Assert RAS when: (1) Loading MRS, (2) Activating Row, (3) Precharging + // (4) auto refresh + // verilint STARC-2.7.3.3b off + generate + if (!(CWL_M % 2)) begin: even_cwl + always @(posedge clk) begin + if ((init_state_r == INIT_LOAD_MR) || + (init_state_r == INIT_MPR_RDEN) || + (init_state_r == INIT_MPR_DISABLE) || + (init_state_r == INIT_REG_WRITE) || + (init_state_r == INIT_WRLVL_START) || + (init_state_r == INIT_WRLVL_LOAD_MR) || + (init_state_r == INIT_WRLVL_LOAD_MR2) || + (init_state_r == INIT_RDLVL_ACT) || + (init_state_r == INIT_WRCAL_ACT) || + (init_state_r == INIT_OCLKDELAY_ACT) || + (init_state_r == INIT_OCAL_COMPLEX_ACT) || + (init_state_r == INIT_OCAL_CENTER_ACT) || + (init_state_r == INIT_PRECHARGE) || + (init_state_r == INIT_DDR2_PRECHARGE) || + (init_state_r == INIT_REFRESH) || + (init_state_r == INIT_RDLVL_COMPLEX_PRECHARGE) || + (init_state_r == INIT_RDLVL_COMPLEX_ACT))begin + phy_ras_n[0] <= #TCQ 1'b0; + phy_ras_n[1] <= #TCQ 1'b1; + end else begin + phy_ras_n[0] <= #TCQ 1'b1; + phy_ras_n[1] <= #TCQ 1'b1; + end + end + + // Assert CAS when: (1) Loading MRS, (2) Issuing Read/Write command + // (3) auto refresh + always @(posedge clk) begin + if ((init_state_r == INIT_LOAD_MR) || + (init_state_r == INIT_MPR_RDEN) || + (init_state_r == INIT_MPR_DISABLE) || + (init_state_r == INIT_REG_WRITE) || + (init_state_r == INIT_WRLVL_START) || + (init_state_r == INIT_WRLVL_LOAD_MR) || + (init_state_r == INIT_WRLVL_LOAD_MR2) || + (init_state_r == INIT_REFRESH) || + (rdlvl_wr_rd && new_burst_r))begin + phy_cas_n[0] <= #TCQ 1'b0; + phy_cas_n[1] <= #TCQ 1'b1; + end else begin + phy_cas_n[0] <= #TCQ 1'b1; + phy_cas_n[1] <= #TCQ 1'b1; + end + end + // Assert WE when: (1) Loading MRS, (2) Issuing Write command (only + // occur during read leveling), (3) Issuing ZQ Long Calib command, + // (4) Precharge + always @(posedge clk) begin + if ((init_state_r == INIT_LOAD_MR) || + (init_state_r == INIT_MPR_RDEN) || + (init_state_r == INIT_MPR_DISABLE) || + (init_state_r == INIT_REG_WRITE) || + (init_state_r == INIT_ZQCL) || + (init_state_r == INIT_WRLVL_START) || + (init_state_r == INIT_WRLVL_LOAD_MR) || + (init_state_r == INIT_WRLVL_LOAD_MR2) || + (init_state_r == INIT_PRECHARGE) || + (init_state_r == INIT_DDR2_PRECHARGE)|| + (init_state_r == INIT_RDLVL_COMPLEX_PRECHARGE) || + (rdlvl_wr && new_burst_r))begin + phy_we_n[0] <= #TCQ 1'b0; + phy_we_n[1] <= #TCQ 1'b1; + end else begin + phy_we_n[0] <= #TCQ 1'b1; + phy_we_n[1] <= #TCQ 1'b1; + end + end + end else begin: odd_cwl + always @(posedge clk) begin + if ((init_state_r == INIT_LOAD_MR) || + (init_state_r == INIT_MPR_RDEN) || + (init_state_r == INIT_MPR_DISABLE) || + (init_state_r == INIT_REG_WRITE) || + (init_state_r == INIT_WRLVL_START) || + (init_state_r == INIT_WRLVL_LOAD_MR) || + (init_state_r == INIT_WRLVL_LOAD_MR2) || + (init_state_r == INIT_RDLVL_ACT) || + (init_state_r == INIT_WRCAL_ACT) || + (init_state_r == INIT_OCLKDELAY_ACT) || + (init_state_r == INIT_OCAL_COMPLEX_ACT) || + (init_state_r == INIT_OCAL_CENTER_ACT) || + (init_state_r == INIT_PRECHARGE) || + (init_state_r == INIT_DDR2_PRECHARGE) || + (init_state_r == INIT_RDLVL_COMPLEX_PRECHARGE) || + (init_state_r == INIT_RDLVL_COMPLEX_ACT) || + (init_state_r == INIT_REFRESH))begin + phy_ras_n[0] <= #TCQ 1'b1; + phy_ras_n[1] <= #TCQ 1'b0; + end else begin + phy_ras_n[0] <= #TCQ 1'b1; + phy_ras_n[1] <= #TCQ 1'b1; + end + end + // Assert CAS when: (1) Loading MRS, (2) Issuing Read/Write command + // (3) auto refresh + always @(posedge clk) begin + if ((init_state_r == INIT_LOAD_MR) || + (init_state_r == INIT_MPR_RDEN) || + (init_state_r == INIT_MPR_DISABLE) || + (init_state_r == INIT_REG_WRITE) || + (init_state_r == INIT_WRLVL_START) || + (init_state_r == INIT_WRLVL_LOAD_MR) || + (init_state_r == INIT_WRLVL_LOAD_MR2) || + (init_state_r == INIT_REFRESH) || + (rdlvl_wr_rd && new_burst_r))begin + phy_cas_n[0] <= #TCQ 1'b1; + phy_cas_n[1] <= #TCQ 1'b0; + end else begin + phy_cas_n[0] <= #TCQ 1'b1; + phy_cas_n[1] <= #TCQ 1'b1; + end + end + // Assert WE when: (1) Loading MRS, (2) Issuing Write command (only + // occur during read leveling), (3) Issuing ZQ Long Calib command, + // (4) Precharge + always @(posedge clk) begin + if ((init_state_r == INIT_LOAD_MR) || + (init_state_r == INIT_MPR_RDEN) || + (init_state_r == INIT_MPR_DISABLE) || + (init_state_r == INIT_REG_WRITE) || + (init_state_r == INIT_ZQCL) || + (init_state_r == INIT_WRLVL_START) || + (init_state_r == INIT_WRLVL_LOAD_MR) || + (init_state_r == INIT_WRLVL_LOAD_MR2) || + (init_state_r == INIT_PRECHARGE) || + (init_state_r == INIT_DDR2_PRECHARGE)|| + (init_state_r == INIT_RDLVL_COMPLEX_PRECHARGE) || + (rdlvl_wr && new_burst_r))begin + phy_we_n[0] <= #TCQ 1'b1; + phy_we_n[1] <= #TCQ 1'b0; + end else begin + phy_we_n[0] <= #TCQ 1'b1; + phy_we_n[1] <= #TCQ 1'b1; + end + end + end + endgenerate +// verilint STARC-2.7.3.3b on + + + // Assign calib_cmd for the command field in PHY_Ctl_Word + always @(posedge clk) begin + if (wr_level_dqs_asrt) begin + // Request to toggle DQS during write leveling + calib_cmd <= #TCQ 3'b001; + if (CWL_M % 2) begin // odd write latency + calib_data_offset_0 <= #TCQ CWL_M + 3; + calib_data_offset_1 <= #TCQ CWL_M + 3; + calib_data_offset_2 <= #TCQ CWL_M + 3; + calib_cas_slot <= #TCQ 2'b01; + end else begin // even write latency + calib_data_offset_0 <= #TCQ CWL_M + 2; + calib_data_offset_1 <= #TCQ CWL_M + 2; + calib_data_offset_2 <= #TCQ CWL_M + 2; + calib_cas_slot <= #TCQ 2'b00; + end + end else if (rdlvl_wr && new_burst_r) begin + // Write Command + calib_cmd <= #TCQ 3'b001; + if (CWL_M % 2) begin // odd write latency + calib_data_offset_0 <= #TCQ (nCK_PER_CLK == 4) ? CWL_M + 3 : CWL_M - 1; + calib_data_offset_1 <= #TCQ (nCK_PER_CLK == 4) ? CWL_M + 3 : CWL_M - 1; + calib_data_offset_2 <= #TCQ (nCK_PER_CLK == 4) ? CWL_M + 3 : CWL_M - 1; + calib_cas_slot <= #TCQ 2'b01; + end else begin // even write latency + calib_data_offset_0 <= #TCQ (nCK_PER_CLK == 4) ? CWL_M + 2 : CWL_M - 2 ; + calib_data_offset_1 <= #TCQ (nCK_PER_CLK == 4) ? CWL_M + 2 : CWL_M - 2 ; + calib_data_offset_2 <= #TCQ (nCK_PER_CLK == 4) ? CWL_M + 2 : CWL_M - 2 ; + calib_cas_slot <= #TCQ 2'b00; + end + end else if (rdlvl_rd && new_burst_r) begin + // Read Command + calib_cmd <= #TCQ 3'b011; + if (CWL_M % 2) + calib_cas_slot <= #TCQ 2'b01; + else + calib_cas_slot <= #TCQ 2'b00; + if (~pi_calib_done_r1) begin + calib_data_offset_0 <= #TCQ 6'd0; + calib_data_offset_1 <= #TCQ 6'd0; + calib_data_offset_2 <= #TCQ 6'd0; + end else if (~pi_dqs_found_done_r1) begin + calib_data_offset_0 <= #TCQ rd_data_offset_0; + calib_data_offset_1 <= #TCQ rd_data_offset_1; + calib_data_offset_2 <= #TCQ rd_data_offset_2; + end else begin + calib_data_offset_0 <= #TCQ rd_data_offset_ranks_0[6*chip_cnt_r+:6]; + calib_data_offset_1 <= #TCQ rd_data_offset_ranks_1[6*chip_cnt_r+:6]; + calib_data_offset_2 <= #TCQ rd_data_offset_ranks_2[6*chip_cnt_r+:6]; + end + end else begin + // Non-Data Commands like NOP, MRS, ZQ Long Cal, Precharge, + // Active, Refresh + calib_cmd <= #TCQ 3'b100; + calib_data_offset_0 <= #TCQ 6'd0; + calib_data_offset_1 <= #TCQ 6'd0; + calib_data_offset_2 <= #TCQ 6'd0; + if (CWL_M % 2) + calib_cas_slot <= #TCQ 2'b01; + else + calib_cas_slot <= #TCQ 2'b00; + end + end + + // Write Enable to PHY_Control FIFO always asserted + // No danger of this FIFO being Full with 4:1 sync clock ratio + // This is also the write enable to the command OUT_FIFO + always @(posedge clk) begin + if (rst) begin + calib_ctl_wren <= #TCQ 1'b0; + calib_cmd_wren <= #TCQ 1'b0; + calib_seq <= #TCQ 2'b00; + end else if (cnt_pwron_cke_done_r && phy_ctl_ready + && ~(phy_ctl_full || phy_cmd_full )) begin + calib_ctl_wren <= #TCQ 1'b1; + calib_cmd_wren <= #TCQ 1'b1; + calib_seq <= #TCQ calib_seq + 1; + end else begin + calib_ctl_wren <= #TCQ 1'b0; + calib_cmd_wren <= #TCQ 1'b0; + calib_seq <= #TCQ calib_seq; + end + end + + generate + genvar rnk_i; + for (rnk_i = 0; rnk_i < 4; rnk_i = rnk_i + 1) begin: gen_rnk + always @(posedge clk) begin + if (rst) begin + mr2_r[rnk_i] <= #TCQ 2'b00; + mr1_r[rnk_i] <= #TCQ 3'b000; + end else begin + mr2_r[rnk_i] <= #TCQ tmp_mr2_r[rnk_i]; + mr1_r[rnk_i] <= #TCQ tmp_mr1_r[rnk_i]; + end + end + end + endgenerate + + // ODT assignment based on slot config and slot present + // For single slot systems slot_1_present input will be ignored + // Assuming component interfaces to be single slot systems + generate + if (nSLOTS == 1) begin: gen_single_slot_odt + always @(posedge clk) begin + if (rst) begin + tmp_mr2_r[1] <= #TCQ 2'b00; + tmp_mr2_r[2] <= #TCQ 2'b00; + tmp_mr2_r[3] <= #TCQ 2'b00; + tmp_mr1_r[1] <= #TCQ 3'b000; + tmp_mr1_r[2] <= #TCQ 3'b000; + tmp_mr1_r[3] <= #TCQ 3'b000; + phy_tmp_cs1_r <= #TCQ {CS_WIDTH*nCS_PER_RANK{1'b1}}; + phy_tmp_odt_r <= #TCQ 4'b0000; + phy_tmp_odt_r1 <= #TCQ phy_tmp_odt_r; + end else begin + case ({slot_0_present[0],slot_0_present[1], + slot_0_present[2],slot_0_present[3]}) + // Single slot configuration with quad rank + // Assuming same behavior as single slot dual rank for now + // DDR2 does not have quad rank parts + 4'b1111: begin + if ((RTT_WR == "OFF") || + ((WRLVL=="ON") && ~wrlvl_done && + (wrlvl_rank_cntr==3'd0))) begin + //Rank0 Dynamic ODT disabled + tmp_mr2_r[0] <= #TCQ 2'b00; + //Rank0 RTT_NOM + tmp_mr1_r[0] <= #TCQ (RTT_NOM_int == "40") ? 3'b011 : + (RTT_NOM_int == "60") ? 3'b001 : + (RTT_NOM_int == "120") ? 3'b010 : + 3'b000; + end else begin + //Rank0 Dynamic ODT defaults to 120 ohms + tmp_mr2_r[0] <= #TCQ (RTT_WR == "60") ? 2'b01 : + 2'b10; + //Rank0 RTT_NOM after write leveling completes + tmp_mr1_r[0] <= #TCQ 3'b000; + end + phy_tmp_odt_r <= #TCQ 4'b0001; + // Chip Select assignments + phy_tmp_cs1_r[((chip_cnt_r*nCS_PER_RANK) + ) +: nCS_PER_RANK] <= #TCQ 'b0; + end + + // Single slot configuration with single rank + 4'b1000: begin + phy_tmp_odt_r <= #TCQ 4'b0001; + if ((REG_CTRL == "ON") && (nCS_PER_RANK > 1)) begin + phy_tmp_cs1_r[chip_cnt_r] <= #TCQ 1'b0; + end else begin + phy_tmp_cs1_r <= #TCQ {CS_WIDTH*nCS_PER_RANK{1'b0}}; + end + if ((RTT_WR == "OFF") || + ((WRLVL=="ON") && ~wrlvl_done && + ((cnt_init_mr_r == 2'd0) || (USE_ODT_PORT == 1)))) begin + //Rank0 Dynamic ODT disabled + tmp_mr2_r[0] <= #TCQ 2'b00; + //Rank0 RTT_NOM + tmp_mr1_r[0] <= #TCQ (RTT_NOM_int == "40") ? 3'b011 : + (RTT_NOM_int == "60") ? 3'b001 : + (RTT_NOM_int == "120") ? 3'b010 : + 3'b000; + end else begin + //Rank0 Dynamic ODT defaults to 120 ohms + tmp_mr2_r[0] <= #TCQ (RTT_WR == "60") ? 2'b01 : + 2'b10; + //Rank0 RTT_NOM after write leveling completes + tmp_mr1_r[0] <= #TCQ 3'b000; + end + end + + // Single slot configuration with dual rank + 4'b1100: begin + phy_tmp_odt_r <= #TCQ 4'b0001; + // Chip Select assignments + + phy_tmp_cs1_r[((chip_cnt_r*nCS_PER_RANK) + ) +: nCS_PER_RANK] <= #TCQ 'b0; + if ((RTT_WR == "OFF") || + ((WRLVL=="ON") && ~wrlvl_done && + (wrlvl_rank_cntr==3'd0))) begin + //Rank0 Dynamic ODT disabled + tmp_mr2_r[0] <= #TCQ 2'b00; + //Rank0 Rtt_NOM + tmp_mr1_r[0] <= #TCQ (RTT_NOM_int == "40") ? 3'b011 : + (RTT_NOM_int == "60") ? 3'b001 : + (RTT_NOM_int == "120") ? 3'b010 : + 3'b000; + end else begin + //Rank0 Dynamic ODT defaults to 120 ohms + tmp_mr2_r[0] <= #TCQ (RTT_WR == "60") ? 2'b01 : + 2'b10; + //Rank0 Rtt_NOM after write leveling completes + tmp_mr1_r[0] <= #TCQ 3'b000; + end + end + + default: begin + phy_tmp_odt_r <= #TCQ 4'b0001; + phy_tmp_cs1_r <= #TCQ {CS_WIDTH*nCS_PER_RANK{1'b0}}; + if ((RTT_WR == "OFF") || + ((WRLVL=="ON") && ~wrlvl_done)) begin + //Rank0 Dynamic ODT disabled + tmp_mr2_r[0] <= #TCQ 2'b00; + //Rank0 Rtt_NOM + tmp_mr1_r[0] <= #TCQ (RTT_NOM_int == "40") ? 3'b011 : + (RTT_NOM_int == "60") ? 3'b001 : + (RTT_NOM_int == "120") ? 3'b010 : + 3'b000; + end else begin + //Rank0 Dynamic ODT defaults to 120 ohms + tmp_mr2_r[0] <= #TCQ (RTT_WR == "60") ? 2'b01 : + 2'b10; + //Rank0 Rtt_NOM after write leveling completes + tmp_mr1_r[0] <= #TCQ 3'b000; + end + end + endcase + end + end + end else if (nSLOTS == 2) begin: gen_dual_slot_odt + always @ (posedge clk) begin + if (rst) begin + tmp_mr2_r[1] <= #TCQ 2'b00; + tmp_mr2_r[2] <= #TCQ 2'b00; + tmp_mr2_r[3] <= #TCQ 2'b00; + tmp_mr1_r[1] <= #TCQ 3'b000; + tmp_mr1_r[2] <= #TCQ 3'b000; + tmp_mr1_r[3] <= #TCQ 3'b000; + phy_tmp_odt_r <= #TCQ 4'b0000; + phy_tmp_cs1_r <= #TCQ {CS_WIDTH*nCS_PER_RANK{1'b1}}; + phy_tmp_odt_r1 <= #TCQ phy_tmp_odt_r; + end else begin + case ({slot_0_present[0],slot_0_present[1], + slot_1_present[0],slot_1_present[1]}) + // Two slot configuration, one slot present, single rank + 4'b10_00: begin + if (//wrlvl_odt || + (init_state_r == INIT_RDLVL_STG1_WRITE) || + (init_state_r == INIT_WRCAL_WRITE) || + (init_state_r == INIT_OCAL_CENTER_WRITE) || + (init_state_r == INIT_OCLKDELAY_WRITE)) begin + // odt turned on only during write + phy_tmp_odt_r <= #TCQ 4'b0001; + end + phy_tmp_cs1_r <= #TCQ {nCS_PER_RANK{1'b0}}; + if ((RTT_WR == "OFF") || + ((WRLVL=="ON") && ~wrlvl_done)) begin + //Rank0 Dynamic ODT disabled + tmp_mr2_r[0] <= #TCQ 2'b00; + //Rank0 Rtt_NOM + tmp_mr1_r[0] <= #TCQ (RTT_NOM_int == "40") ? 3'b011 : + (RTT_NOM_int == "60") ? 3'b001 : + (RTT_NOM_int == "120") ? 3'b010 : + 3'b000; + end else begin + //Rank0 Dynamic ODT defaults to 120 ohms + tmp_mr2_r[0] <= #TCQ (RTT_WR == "60") ? 2'b01 : + 2'b10; + //Rank0 Rtt_NOM after write leveling completes + tmp_mr1_r[0] <= #TCQ 3'b000; + end + end + 4'b00_10: begin + + //Rank1 ODT enabled + if (//wrlvl_odt || + (init_state_r == INIT_RDLVL_STG1_WRITE) || + (init_state_r == INIT_WRCAL_WRITE) || + (init_state_r == INIT_OCAL_CENTER_WRITE) || + (init_state_r == INIT_OCLKDELAY_WRITE)) begin + // odt turned on only during write + phy_tmp_odt_r <= #TCQ 4'b0001; + end + phy_tmp_cs1_r <= #TCQ {nCS_PER_RANK{1'b0}}; + if ((RTT_WR == "OFF") || + ((WRLVL=="ON") && ~wrlvl_done)) begin + //Rank1 Dynamic ODT disabled + tmp_mr2_r[0] <= #TCQ 2'b00; + //Rank1 Rtt_NOM defaults to 120 ohms + tmp_mr1_r[0] <= #TCQ (RTT_NOM_int == "40") ? 3'b011 : + (RTT_NOM_int == "60") ? 3'b001 : + (RTT_NOM_int == "120") ? 3'b010 : + 3'b000; + end else begin + //Rank1 Dynamic ODT defaults to 120 ohms + tmp_mr2_r[0] <= #TCQ (RTT_WR == "60") ? 2'b01 : + 2'b10; + //Rank1 Rtt_NOM after write leveling completes + tmp_mr1_r[0] <= #TCQ 3'b000; + end + end + // Two slot configuration, one slot present, dual rank + 4'b00_11: begin + if (//wrlvl_odt || + (init_state_r == INIT_RDLVL_STG1_WRITE) || + (init_state_r == INIT_WRCAL_WRITE) || + (init_state_r == INIT_OCAL_CENTER_WRITE) || + (init_state_r == INIT_OCLKDELAY_WRITE)) begin + // odt turned on only during write + phy_tmp_odt_r + <= #TCQ 4'b0001; + end + + // Chip Select assignments + phy_tmp_cs1_r[(chip_cnt_r*nCS_PER_RANK) +: nCS_PER_RANK] + <= #TCQ {nCS_PER_RANK{1'b0}}; + + if ((RTT_WR == "OFF") || + ((WRLVL=="ON") && ~wrlvl_done && + (wrlvl_rank_cntr==3'd0))) begin + //Rank0 Dynamic ODT disabled + tmp_mr2_r[0] <= #TCQ 2'b00; + //Rank0 Rtt_NOM + tmp_mr1_r[0] <= #TCQ (RTT_NOM_int == "40") ? 3'b011 : + (RTT_NOM_int == "60") ? 3'b001 : + (RTT_NOM_int == "120") ? 3'b010 : + 3'b000; + end else begin + //Rank0 Dynamic ODT defaults to 120 ohms + tmp_mr2_r[0] <= #TCQ (RTT_WR == "60") ? 2'b01 : + 2'b10; + //Rank0 Rtt_NOM after write leveling completes + tmp_mr1_r[0] <= #TCQ 3'b000; + end + end + 4'b11_00: begin + if (//wrlvl_odt || + (init_state_r == INIT_RDLVL_STG1_WRITE) || + (init_state_r == INIT_WRCAL_WRITE) || + (init_state_r == INIT_OCAL_CENTER_WRITE) || + (init_state_r == INIT_OCLKDELAY_WRITE)) begin + // odt turned on only during write + phy_tmp_odt_r <= #TCQ 4'b0001; + end + + // Chip Select assignments + phy_tmp_cs1_r[(chip_cnt_r*nCS_PER_RANK) +: nCS_PER_RANK] + <= #TCQ {nCS_PER_RANK{1'b0}}; + + if ((RTT_WR == "OFF") || + ((WRLVL=="ON") && ~wrlvl_done && + (wrlvl_rank_cntr==3'd0))) begin + //Rank1 Dynamic ODT disabled + tmp_mr2_r[0] <= #TCQ 2'b00; + //Rank1 Rtt_NOM + tmp_mr1_r[0] <= #TCQ (RTT_NOM_int == "40") ? 3'b011 : + (RTT_NOM_int == "60") ? 3'b001 : + (RTT_NOM_int == "120") ? 3'b010 : + 3'b000; + end else begin + //Rank1 Dynamic ODT defaults to 120 ohms + tmp_mr2_r[0] <= #TCQ (RTT_WR == "60") ? 2'b01 : + 2'b10; + //Rank1 Rtt_NOM after write leveling completes + tmp_mr1_r[0] <= #TCQ 3'b000; + end + end + // Two slot configuration, one rank per slot + 4'b10_10: begin + if(DRAM_TYPE == "DDR2")begin + if(chip_cnt_r == 2'b00)begin + phy_tmp_odt_r + <= #TCQ 4'b0010; //bit0 for rank0 + end else begin + phy_tmp_odt_r + <= #TCQ 4'b0001; //bit0 for rank0 + end + end else begin + if((init_state_r == INIT_WRLVL_WAIT) || + (init_next_state == INIT_RDLVL_STG1_WRITE) || + (init_next_state == INIT_WRCAL_WRITE) || + (init_next_state == INIT_OCAL_CENTER_WRITE) || + (init_next_state == INIT_OCLKDELAY_WRITE)) + phy_tmp_odt_r <= #TCQ 4'b0011; // bit0 for rank0/1 (write) + else if ((init_next_state == INIT_PI_PHASELOCK_READS) || + (init_next_state == INIT_MPR_READ) || + (init_next_state == INIT_RDLVL_STG1_READ) || + (init_next_state == INIT_RDLVL_COMPLEX_READ) || + (init_next_state == INIT_RDLVL_STG2_READ) || + (init_next_state == INIT_OCLKDELAY_READ) || + (init_next_state == INIT_WRCAL_READ) || + (init_next_state == INIT_WRCAL_MULT_READS)) + phy_tmp_odt_r <= #TCQ 4'b0010; // bit0 for rank1 (rank 0 rd) + end + + // Chip Select assignments + phy_tmp_cs1_r[(chip_cnt_r*nCS_PER_RANK) +: nCS_PER_RANK] + <= #TCQ {nCS_PER_RANK{1'b0}}; + + if ((RTT_WR == "OFF") || + ((WRLVL=="ON") && ~wrlvl_done && + (wrlvl_rank_cntr==3'd0))) begin + //Rank0 Dynamic ODT disabled + tmp_mr2_r[0] <= #TCQ 2'b00; + //Rank0 Rtt_NOM + tmp_mr1_r[0] <= #TCQ (RTT_WR == "60") ? 3'b001 : + (RTT_WR == "120") ? 3'b010 : + 3'b000; + //Rank1 Dynamic ODT disabled + tmp_mr2_r[1] <= #TCQ (RTT_WR == "60") ? 2'b01 : + 2'b10; + //Rank1 Rtt_NOM + tmp_mr1_r[1] <= #TCQ (RTT_NOM_int == "40") ? 3'b011 : + (RTT_NOM_int == "60") ? 3'b001 : + (RTT_NOM_int == "120") ? 3'b010 : + 3'b000; + end else begin + //Rank0 Dynamic ODT defaults to 120 ohms + tmp_mr2_r[0] <= #TCQ (RTT_WR == "60") ? 2'b01 : + 2'b10; + //Rank0 Rtt_NOM + tmp_mr1_r[0] <= #TCQ (RTT_NOM_int == "60") ? 3'b001 : + (RTT_NOM_int == "120") ? 3'b010 : + (RTT_NOM_int == "20") ? 3'b100 : + (RTT_NOM_int == "30") ? 3'b101 : + (RTT_NOM_int == "40") ? 3'b011 : + 3'b000; + //Rank1 Dynamic ODT defaults to 120 ohms + tmp_mr2_r[1] <= #TCQ (RTT_WR == "60") ? 2'b01 : + 2'b10; + //Rank1 Rtt_NOM + tmp_mr1_r[1] <= #TCQ (RTT_NOM_int == "60") ? 3'b001 : + (RTT_NOM_int == "120") ? 3'b010 : + (RTT_NOM_int == "20") ? 3'b100 : + (RTT_NOM_int == "30") ? 3'b101 : + (RTT_NOM_int == "40") ? 3'b011 : + 3'b000; + end + end + // Two Slots - One slot with dual rank and other with single rank + 4'b10_11: begin + + //Rank3 Rtt_NOM + tmp_mr1_r[2] <= #TCQ (RTT_NOM_int == "60") ? 3'b001 : + (RTT_NOM_int == "120") ? 3'b010 : + (RTT_NOM_int == "20") ? 3'b100 : + (RTT_NOM_int == "30") ? 3'b101 : + (RTT_NOM_int == "40") ? 3'b011 : + 3'b000; + tmp_mr2_r[2] <= #TCQ 2'b00; + if ((RTT_WR == "OFF") || + ((WRLVL=="ON") && ~wrlvl_done && + (wrlvl_rank_cntr==3'd0))) begin + //Rank0 Dynamic ODT disabled + tmp_mr2_r[0] <= #TCQ 2'b00; + //Rank0 Rtt_NOM + tmp_mr1_r[0] <= #TCQ (RTT_NOM_int == "40") ? 3'b011 : + (RTT_NOM_int == "60") ? 3'b001 : + (RTT_NOM_int == "120") ? 3'b010 : + 3'b000; + //Rank1 Dynamic ODT disabled + tmp_mr2_r[1] <= #TCQ 2'b00; + //Rank1 Rtt_NOM + tmp_mr1_r[1] <= #TCQ (RTT_NOM_int == "40") ? 3'b011 : + (RTT_NOM_int == "60") ? 3'b001 : + (RTT_NOM_int == "120") ? 3'b010 : + 3'b000; + end else begin + //Rank0 Dynamic ODT defaults to 120 ohms + tmp_mr2_r[0] <= #TCQ (RTT_WR == "60") ? 2'b01 : + 2'b10; + //Rank0 Rtt_NOM after write leveling completes + tmp_mr1_r[0] <= #TCQ (RTT_NOM_int == "60") ? 3'b001 : + (RTT_NOM_int == "120") ? 3'b010 : + (RTT_NOM_int == "20") ? 3'b100 : + (RTT_NOM_int == "30") ? 3'b101 : + (RTT_NOM_int == "40") ? 3'b011 : + 3'b000; + //Rank1 Dynamic ODT defaults to 120 ohms + tmp_mr2_r[1] <= #TCQ (RTT_WR == "60") ? 2'b01 : + 2'b10; + //Rank1 Rtt_NOM after write leveling completes + tmp_mr1_r[1] <= #TCQ 3'b000; + end + //Slot1 Rank1 or Rank3 is being written + if(DRAM_TYPE == "DDR2")begin + if(chip_cnt_r == 2'b00)begin + phy_tmp_odt_r + <= #TCQ 4'b0010; + end else begin + phy_tmp_odt_r + <= #TCQ 4'b0001; + end + end else begin + if (//wrlvl_odt || + (init_state_r == INIT_RDLVL_STG1_WRITE) || + (init_state_r == INIT_WRCAL_WRITE) || + (init_state_r == INIT_OCAL_CENTER_WRITE) || + (init_state_r == INIT_OCLKDELAY_WRITE)) begin + if (chip_cnt_r[0] == 1'b1) begin + phy_tmp_odt_r + <= #TCQ 4'b0011; + //Slot0 Rank0 is being written + end else begin + phy_tmp_odt_r + <= #TCQ 4'b0101; // ODT for ranks 0 and 2 aserted + end + end else if ((init_state_r == INIT_RDLVL_STG1_READ) || + (init_state_r == INIT_RDLVL_COMPLEX_READ) || + (init_state_r == INIT_PI_PHASELOCK_READS) || + (init_state_r == INIT_RDLVL_STG2_READ) || + (init_state_r == INIT_OCLKDELAY_READ) || + (init_state_r == INIT_WRCAL_READ) || + (init_state_r == INIT_WRCAL_MULT_READS))begin + if (chip_cnt_r == 2'b00) begin + phy_tmp_odt_r + <= #TCQ 4'b0100; + end else begin + phy_tmp_odt_r + <= #TCQ 4'b0001; + end + end + end + + // Chip Select assignments + phy_tmp_cs1_r[(chip_cnt_r*nCS_PER_RANK) +: nCS_PER_RANK] + <= #TCQ {nCS_PER_RANK{1'b0}}; + + end + // Two Slots - One slot with dual rank and other with single rank + 4'b11_10: begin + + //Rank2 Rtt_NOM + tmp_mr1_r[2] <= #TCQ (RTT_NOM2 == "60") ? 3'b001 : + (RTT_NOM2 == "120") ? 3'b010 : + (RTT_NOM2 == "20") ? 3'b100 : + (RTT_NOM2 == "30") ? 3'b101 : + (RTT_NOM2 == "40") ? 3'b011: + 3'b000; + tmp_mr2_r[2] <= #TCQ 2'b00; + if ((RTT_WR == "OFF") || + ((WRLVL=="ON") && ~wrlvl_done && + (wrlvl_rank_cntr==3'd0))) begin + //Rank0 Dynamic ODT disabled + tmp_mr2_r[0] <= #TCQ 2'b00; + //Rank0 Rtt_NOM + tmp_mr1_r[0] <= #TCQ (RTT_NOM_int == "40") ? 3'b011 : + (RTT_NOM_int == "60") ? 3'b001 : + (RTT_NOM_int == "120") ? 3'b010 : + 3'b000; + //Rank1 Dynamic ODT disabled + tmp_mr2_r[1] <= #TCQ 2'b00; + //Rank1 Rtt_NOM + tmp_mr1_r[1] <= #TCQ (RTT_NOM_int == "40") ? 3'b011 : + (RTT_NOM_int == "60") ? 3'b001 : + (RTT_NOM_int == "120") ? 3'b010 : + 3'b000; + end else begin + //Rank1 Dynamic ODT defaults to 120 ohms + tmp_mr2_r[1] <= #TCQ (RTT_WR == "60") ? 2'b01 : + 2'b10; + //Rank1 Rtt_NOM + tmp_mr1_r[1] <= #TCQ (RTT_NOM_int == "60") ? 3'b001 : + (RTT_NOM_int == "120") ? 3'b010 : + (RTT_NOM_int == "20") ? 3'b100 : + (RTT_NOM_int == "30") ? 3'b101 : + (RTT_NOM_int == "40") ? 3'b011: + 3'b000; + //Rank0 Dynamic ODT defaults to 120 ohms + tmp_mr2_r[0] <= #TCQ (RTT_WR == "60") ? 2'b01 : + 2'b10; + //Rank0 Rtt_NOM after write leveling completes + tmp_mr1_r[0] <= #TCQ 3'b000; + end + + if(DRAM_TYPE == "DDR2")begin + if(chip_cnt_r[1] == 1'b1)begin + phy_tmp_odt_r <= + #TCQ 4'b0001; + end else begin + phy_tmp_odt_r + <= #TCQ 4'b0100; // rank 2 ODT asserted + end + end else begin + if (// wrlvl_odt || + (init_state_r == INIT_RDLVL_STG1_WRITE) || + (init_state_r == INIT_WRCAL_WRITE) || + (init_state_r == INIT_OCAL_CENTER_WRITE) || + (init_state_r == INIT_OCLKDELAY_WRITE)) begin + + if (chip_cnt_r[1] == 1'b1) begin + phy_tmp_odt_r + <= #TCQ 4'b0110; + end else begin + phy_tmp_odt_r <= + #TCQ 4'b0101; + end + end else if ((init_state_r == INIT_RDLVL_STG1_READ) || + (init_state_r == INIT_RDLVL_COMPLEX_READ) || + (init_state_r == INIT_PI_PHASELOCK_READS) || + (init_state_r == INIT_RDLVL_STG2_READ) || + (init_state_r == INIT_OCLKDELAY_READ) || + (init_state_r == INIT_WRCAL_READ) || + (init_state_r == INIT_WRCAL_MULT_READS)) begin + + if (chip_cnt_r[1] == 1'b1) begin + phy_tmp_odt_r[(1*nCS_PER_RANK) +: nCS_PER_RANK] + <= #TCQ 4'b0010; + end else begin + phy_tmp_odt_r + <= #TCQ 4'b0100; + end + end + end + + // Chip Select assignments + phy_tmp_cs1_r[(chip_cnt_r*nCS_PER_RANK) +: nCS_PER_RANK] + <= #TCQ {nCS_PER_RANK{1'b0}}; + end + // Two Slots - two ranks per slot + 4'b11_11: begin + //Rank2 Rtt_NOM + tmp_mr1_r[2] <= #TCQ (RTT_NOM2 == "60") ? 3'b001 : + (RTT_NOM2 == "120") ? 3'b010 : + (RTT_NOM2 == "20") ? 3'b100 : + (RTT_NOM2 == "30") ? 3'b101 : + (RTT_NOM2 == "40") ? 3'b011 : + 3'b000; + //Rank3 Rtt_NOM + tmp_mr1_r[3] <= #TCQ (RTT_NOM3 == "60") ? 3'b001 : + (RTT_NOM3 == "120") ? 3'b010 : + (RTT_NOM3 == "20") ? 3'b100 : + (RTT_NOM3 == "30") ? 3'b101 : + (RTT_NOM3 == "40") ? 3'b011 : + 3'b000; + tmp_mr2_r[2] <= #TCQ 2'b00; + tmp_mr2_r[3] <= #TCQ 2'b00; + if ((RTT_WR == "OFF") || + ((WRLVL=="ON") && ~wrlvl_done && + (wrlvl_rank_cntr==3'd0))) begin + //Rank0 Dynamic ODT disabled + tmp_mr2_r[0] <= #TCQ 2'b00; + //Rank0 Rtt_NOM + tmp_mr1_r[0] <= #TCQ (RTT_NOM_int == "40") ? 3'b011 : + (RTT_NOM_int == "60") ? 3'b001 : + (RTT_NOM_int == "120") ? 3'b010 : + 3'b000; + //Rank1 Dynamic ODT disabled + tmp_mr2_r[1] <= #TCQ 2'b00; + //Rank1 Rtt_NOM + tmp_mr1_r[1] <= #TCQ (RTT_NOM_int == "40") ? 3'b011 : + (RTT_NOM_int == "60") ? 3'b001 : + (RTT_NOM_int == "120") ? 3'b010 : + 3'b000; + end else begin + //Rank1 Dynamic ODT defaults to 120 ohms + tmp_mr2_r[1] <= #TCQ (RTT_WR == "60") ? 2'b01 : + 2'b10; + //Rank1 Rtt_NOM after write leveling completes + tmp_mr1_r[1] <= #TCQ 3'b000; + //Rank0 Dynamic ODT defaults to 120 ohms + tmp_mr2_r[0] <= #TCQ (RTT_WR == "60") ? 2'b01 : + 2'b10; + //Rank0 Rtt_NOM after write leveling completes + tmp_mr1_r[0] <= #TCQ 3'b000; + end + + if(DRAM_TYPE == "DDR2")begin + if(chip_cnt_r[1] == 1'b1)begin + phy_tmp_odt_r + <= #TCQ 4'b0001; + end else begin + phy_tmp_odt_r + <= #TCQ 4'b0100; + end + end else begin + if (//wrlvl_odt || + (init_state_r == INIT_RDLVL_STG1_WRITE) || + (init_state_r == INIT_WRCAL_WRITE) || + (init_state_r == INIT_OCAL_CENTER_WRITE) || + (init_state_r == INIT_OCLKDELAY_WRITE)) begin + //Slot1 Rank1 or Rank3 is being written + if (chip_cnt_r[0] == 1'b1) begin + phy_tmp_odt_r + <= #TCQ 4'b0110; + //Slot0 Rank0 or Rank2 is being written + end else begin + phy_tmp_odt_r + <= #TCQ 4'b1001; + end + end else if ((init_state_r == INIT_RDLVL_STG1_READ) || + (init_state_r == INIT_RDLVL_COMPLEX_READ) || + (init_state_r == INIT_PI_PHASELOCK_READS) || + (init_state_r == INIT_RDLVL_STG2_READ) || + (init_state_r == INIT_OCLKDELAY_READ) || + (init_state_r == INIT_WRCAL_READ) || + (init_state_r == INIT_WRCAL_MULT_READS))begin + //Slot1 Rank1 or Rank3 is being read + if (chip_cnt_r[0] == 1'b1) begin + phy_tmp_odt_r + <= #TCQ 4'b0100; + //Slot0 Rank0 or Rank2 is being read + end else begin + phy_tmp_odt_r + <= #TCQ 4'b1000; + end + end + end + + // Chip Select assignments + phy_tmp_cs1_r[(chip_cnt_r*nCS_PER_RANK) +: nCS_PER_RANK] + <= #TCQ {nCS_PER_RANK{1'b0}}; + end + default: begin + phy_tmp_odt_r <= #TCQ 4'b1111; + // Chip Select assignments + phy_tmp_cs1_r[(chip_cnt_r*nCS_PER_RANK) +: nCS_PER_RANK] + <= #TCQ {nCS_PER_RANK{1'b0}}; + if ((RTT_WR == "OFF") || + ((WRLVL=="ON") && ~wrlvl_done)) begin + //Rank0 Dynamic ODT disabled + tmp_mr2_r[0] <= #TCQ 2'b00; + //Rank0 Rtt_NOM + tmp_mr1_r[0] <= #TCQ (RTT_NOM_int == "40") ? 3'b011 : + (RTT_NOM_int == "60") ? 3'b001 : + (RTT_NOM_int == "120") ? 3'b010 : + 3'b000; + //Rank1 Dynamic ODT disabled + tmp_mr2_r[1] <= #TCQ 2'b00; + //Rank1 Rtt_NOM + tmp_mr1_r[1] <= #TCQ (RTT_NOM_int == "40") ? 3'b011 : + (RTT_NOM_int == "60") ? 3'b001 : + (RTT_NOM_int == "60") ? 3'b010 : + 3'b000; + end else begin + //Rank0 Dynamic ODT defaults to 120 ohms + tmp_mr2_r[0] <= #TCQ (RTT_WR == "60") ? 2'b01 : + 2'b10; + //Rank0 Rtt_NOM + tmp_mr1_r[0] <= #TCQ (RTT_NOM_int == "60") ? 3'b001 : + (RTT_NOM_int == "120") ? 3'b010 : + (RTT_NOM_int == "20") ? 3'b100 : + (RTT_NOM_int == "30") ? 3'b101 : + (RTT_NOM_int == "40") ? 3'b011 : + 3'b000; + //Rank1 Dynamic ODT defaults to 120 ohms + tmp_mr2_r[1] <= #TCQ (RTT_WR == "60") ? 2'b01 : + 2'b10; + //Rank1 Rtt_NOM + tmp_mr1_r[1] <= #TCQ (RTT_NOM_int == "60") ? 3'b001 : + (RTT_NOM_int == "120") ? 3'b010 : + (RTT_NOM_int == "20") ? 3'b100 : + (RTT_NOM_int == "30") ? 3'b101 : + (RTT_NOM_int == "40") ? 3'b011 : + 3'b000; + end + end + endcase + end + end + end + endgenerate + + + // PHY only supports two ranks. + // calib_aux_out[0] is CKE for rank 0 and calib_aux_out[1] is ODT for rank 0 + // calib_aux_out[2] is CKE for rank 1 and calib_aux_out[3] is ODT for rank 1 + +generate +if(CKE_ODT_AUX == "FALSE") begin + if ((nSLOTS == 1) && (RANKS < 2)) begin + always @(posedge clk) + if (rst) begin + calib_cke <= #TCQ {nCK_PER_CLK{1'b0}} ; + calib_odt <= 2'b00 ; + end else begin + if (cnt_pwron_cke_done_r /*&& ~cnt_pwron_cke_done_r1*/)begin + calib_cke <= #TCQ {nCK_PER_CLK{1'b1}}; + end else begin + calib_cke <= #TCQ {nCK_PER_CLK{1'b0}}; + end + if ((((RTT_NOM == "DISABLED") && (RTT_WR == "OFF"))/* || + wrlvl_rank_done || wrlvl_rank_done_r1 || + (wrlvl_done && !wrlvl_done_r)*/) && (DRAM_TYPE == "DDR3")) begin + calib_odt[0] <= #TCQ 1'b0; + calib_odt[1] <= #TCQ 1'b0; + end else if (((DRAM_TYPE == "DDR3") + ||((RTT_NOM != "DISABLED") && (DRAM_TYPE == "DDR2"))) + && (((init_state_r == INIT_WRLVL_WAIT) && wrlvl_odt ) || + (init_state_r == INIT_RDLVL_STG1_WRITE) || + (init_state_r == INIT_OCAL_COMPLEX_WRITE_WAIT) || + (init_state_r == INIT_RDLVL_STG1_WRITE_READ) || + complex_odt_ext || + (init_state_r == INIT_WRCAL_WRITE) || + (init_state_r == INIT_WRCAL_WRITE_READ) || + (init_state_r == INIT_OCAL_CENTER_WRITE) || + complex_ocal_odt_ext || + (init_state_r == INIT_OCLKDELAY_WRITE)|| + (init_state_r == INIT_OCLKDELAY_WRITE_WAIT))) begin + // Quad rank in a single slot + calib_odt[0] <= #TCQ phy_tmp_odt_r[0]; + calib_odt[1] <= #TCQ phy_tmp_odt_r[1]; + end else begin + calib_odt[0] <= #TCQ 1'b0; + calib_odt[1] <= #TCQ 1'b0; + end + end + end else if ((nSLOTS == 1) && (RANKS <= 2)) begin + always @(posedge clk) + if (rst) begin + calib_cke <= #TCQ {nCK_PER_CLK{1'b0}} ; + calib_odt <= 2'b00 ; + end else begin + if (cnt_pwron_cke_done_r /*&& ~cnt_pwron_cke_done_r1*/)begin + calib_cke <= #TCQ {nCK_PER_CLK{1'b1}}; + end else begin + calib_cke <= #TCQ {nCK_PER_CLK{1'b0}}; + end + if ((((RTT_NOM == "DISABLED") && (RTT_WR == "OFF"))/* || + wrlvl_rank_done_r2 || + (wrlvl_done && !wrlvl_done_r)*/) && (DRAM_TYPE == "DDR3")) begin + calib_odt[0] <= #TCQ 1'b0; + calib_odt[1] <= #TCQ 1'b0; + end else if (((DRAM_TYPE == "DDR3") + ||((RTT_NOM != "DISABLED") && (DRAM_TYPE == "DDR2"))) + && (((init_state_r == INIT_WRLVL_WAIT) && wrlvl_odt)|| + (init_state_r == INIT_RDLVL_STG1_WRITE) || + (init_state_r == INIT_OCAL_COMPLEX_WRITE_WAIT) || + (init_state_r == INIT_RDLVL_STG1_WRITE_READ) || + complex_odt_ext || + (init_state_r == INIT_WRCAL_WRITE) || + (init_state_r == INIT_WRCAL_WRITE_READ) || + (init_state_r == INIT_OCAL_CENTER_WRITE) || + complex_ocal_odt_ext || + (init_state_r == INIT_OCLKDELAY_WRITE)|| + (init_state_r == INIT_OCLKDELAY_WRITE_WAIT))) begin + // Dual rank in a single slot + calib_odt[0] <= #TCQ phy_tmp_odt_r[0]; + calib_odt[1] <= #TCQ phy_tmp_odt_r[1]; + end else begin + calib_odt[0] <= #TCQ 1'b0; + calib_odt[1] <= #TCQ 1'b0; + end + end + end else if ((nSLOTS == 2) && (RANKS == 2)) begin + always @(posedge clk) + if (rst)begin + calib_cke <= #TCQ {nCK_PER_CLK{1'b0}} ; + calib_odt <= 2'b00 ; + end else begin + if (cnt_pwron_cke_done_r /*&& ~cnt_pwron_cke_done_r1*/)begin + calib_cke <= #TCQ {nCK_PER_CLK{1'b1}}; + end else begin + calib_cke <= #TCQ {nCK_PER_CLK{1'b0}}; + end + if (((DRAM_TYPE == "DDR2") && (RTT_NOM == "DISABLED")) || + ((DRAM_TYPE == "DDR3") && + (RTT_NOM == "DISABLED") && (RTT_WR == "OFF"))) begin + calib_odt[0] <= #TCQ 1'b0; + calib_odt[1] <= #TCQ 1'b0; + end else if (((init_state_r == INIT_WRLVL_WAIT) && wrlvl_odt) || + (init_state_r == INIT_RDLVL_STG1_WRITE) || + (init_state_r == INIT_OCAL_COMPLEX_WRITE_WAIT) || + (init_state_r == INIT_WRCAL_WRITE) || + (init_state_r == INIT_OCAL_CENTER_WRITE) || + (init_state_r == INIT_OCLKDELAY_WRITE)) begin + // Quad rank in a single slot + if (nCK_PER_CLK == 2) begin + calib_odt[0] + <= #TCQ (!calib_odt[0]) ? phy_tmp_odt_r[0] : 1'b0; + calib_odt[1] + <= #TCQ (!calib_odt[1]) ? phy_tmp_odt_r[1] : 1'b0; + end else begin + calib_odt[0] <= #TCQ phy_tmp_odt_r[0]; + calib_odt[1] <= #TCQ phy_tmp_odt_r[1]; + end + // Turn on for idle rank during read if dynamic ODT is enabled in DDR3 + end else if(((DRAM_TYPE == "DDR3") && (RTT_WR != "OFF")) && + ((init_state_r == INIT_PI_PHASELOCK_READS) || + (init_state_r == INIT_MPR_READ) || + (init_state_r == INIT_RDLVL_STG1_READ) || + (init_state_r == INIT_RDLVL_COMPLEX_READ) || + (init_state_r == INIT_RDLVL_STG2_READ) || + (init_state_r == INIT_OCLKDELAY_READ) || + (init_state_r == INIT_WRCAL_READ) || + (init_state_r == INIT_WRCAL_MULT_READS))) begin + if (nCK_PER_CLK == 2) begin + calib_odt[0] + <= #TCQ (!calib_odt[0]) ? phy_tmp_odt_r[0] : 1'b0; + calib_odt[1] + <= #TCQ (!calib_odt[1]) ? phy_tmp_odt_r[1] : 1'b0; + end else begin + calib_odt[0] <= #TCQ phy_tmp_odt_r[0]; + calib_odt[1] <= #TCQ phy_tmp_odt_r[1]; + end + // disable well before next command and before disabling write leveling + end else if(cnt_cmd_done_m7_r || + (init_state_r == INIT_WRLVL_WAIT && ~wrlvl_odt)) + calib_odt <= #TCQ 2'b00; + end + end +end else begin//USE AUX OUTPUT for routing CKE and ODT. + if ((nSLOTS == 1) && (RANKS < 2)) begin + always @(posedge clk) + if (rst) begin + calib_aux_out <= #TCQ 4'b0000; + end else begin + if (cnt_pwron_cke_done_r && ~cnt_pwron_cke_done_r1)begin + calib_aux_out[0] <= #TCQ 1'b1; + calib_aux_out[2] <= #TCQ 1'b1; + end else begin + calib_aux_out[0] <= #TCQ 1'b0; + calib_aux_out[2] <= #TCQ 1'b0; + end + if ((((RTT_NOM == "DISABLED") && (RTT_WR == "OFF")) || + wrlvl_rank_done || wrlvl_rank_done_r1 || + (wrlvl_done && !wrlvl_done_r)) && (DRAM_TYPE == "DDR3")) begin + calib_aux_out[1] <= #TCQ 1'b0; + calib_aux_out[3] <= #TCQ 1'b0; + end else if (((DRAM_TYPE == "DDR3") + ||((RTT_NOM != "DISABLED") && (DRAM_TYPE == "DDR2"))) + && (((init_state_r == INIT_WRLVL_WAIT) && wrlvl_odt) || + (init_state_r == INIT_RDLVL_STG1_WRITE) || + (init_state_r == INIT_OCAL_COMPLEX_WRITE_WAIT) || + (init_state_r == INIT_WRCAL_WRITE) || + (init_state_r == INIT_OCAL_CENTER_WRITE) || + (init_state_r == INIT_OCLKDELAY_WRITE))) begin + // Quad rank in a single slot + calib_aux_out[1] <= #TCQ phy_tmp_odt_r[0]; + calib_aux_out[3] <= #TCQ phy_tmp_odt_r[1]; + end else begin + calib_aux_out[1] <= #TCQ 1'b0; + calib_aux_out[3] <= #TCQ 1'b0; + end + end + end else if ((nSLOTS == 1) && (RANKS <= 2)) begin + always @(posedge clk) + if (rst) begin + calib_aux_out <= #TCQ 4'b0000; + end else begin + if (cnt_pwron_cke_done_r && ~cnt_pwron_cke_done_r1)begin + calib_aux_out[0] <= #TCQ 1'b1; + calib_aux_out[2] <= #TCQ 1'b1; + end else begin + calib_aux_out[0] <= #TCQ 1'b0; + calib_aux_out[2] <= #TCQ 1'b0; + end + if ((((RTT_NOM == "DISABLED") && (RTT_WR == "OFF")) || + wrlvl_rank_done_r2 || + (wrlvl_done && !wrlvl_done_r)) && (DRAM_TYPE == "DDR3")) begin + calib_aux_out[1] <= #TCQ 1'b0; + calib_aux_out[3] <= #TCQ 1'b0; + end else if (((DRAM_TYPE == "DDR3") + ||((RTT_NOM != "DISABLED") && (DRAM_TYPE == "DDR2"))) + && (((init_state_r == INIT_WRLVL_WAIT) && wrlvl_odt) || + (init_state_r == INIT_RDLVL_STG1_WRITE) || + (init_state_r == INIT_OCAL_COMPLEX_WRITE_WAIT) || + (init_state_r == INIT_WRCAL_WRITE) || + (init_state_r == INIT_OCAL_CENTER_WRITE) || + (init_state_r == INIT_OCLKDELAY_WRITE))) begin + // Dual rank in a single slot + calib_aux_out[1] <= #TCQ phy_tmp_odt_r[0]; + calib_aux_out[3] <= #TCQ phy_tmp_odt_r[1]; + end else begin + calib_aux_out[1] <= #TCQ 1'b0; + calib_aux_out[3] <= #TCQ 1'b0; + end + end + end else if ((nSLOTS == 2) && (RANKS == 2)) begin + always @(posedge clk) + if (rst) + calib_aux_out <= #TCQ 4'b0000; + else begin + if (cnt_pwron_cke_done_r && ~cnt_pwron_cke_done_r1)begin + calib_aux_out[0] <= #TCQ 1'b1; + calib_aux_out[2] <= #TCQ 1'b1; + end else begin + calib_aux_out[0] <= #TCQ 1'b0; + calib_aux_out[2] <= #TCQ 1'b0; + end + if ((((RTT_NOM == "DISABLED") && (RTT_WR == "OFF")) || + wrlvl_rank_done_r2 || + (wrlvl_done && !wrlvl_done_r)) && (DRAM_TYPE == "DDR3")) begin + calib_aux_out[1] <= #TCQ 1'b0; + calib_aux_out[3] <= #TCQ 1'b0; + end else if (((DRAM_TYPE == "DDR3") + ||((RTT_NOM != "DISABLED") && (DRAM_TYPE == "DDR2"))) + && (((init_state_r == INIT_WRLVL_WAIT) && wrlvl_odt) || + (init_state_r == INIT_RDLVL_STG1_WRITE) || + (init_state_r == INIT_OCAL_COMPLEX_WRITE_WAIT) || + (init_state_r == INIT_WRCAL_WRITE) || + (init_state_r == INIT_OCAL_CENTER_WRITE) || + (init_state_r == INIT_OCLKDELAY_WRITE))) begin + // Quad rank in a single slot + if (nCK_PER_CLK == 2) begin + calib_aux_out[1] + <= #TCQ (!calib_aux_out[1]) ? phy_tmp_odt_r[0] : 1'b0; + calib_aux_out[3] + <= #TCQ (!calib_aux_out[3]) ? phy_tmp_odt_r[1] : 1'b0; + end else begin + calib_aux_out[1] <= #TCQ phy_tmp_odt_r[0]; + calib_aux_out[3] <= #TCQ phy_tmp_odt_r[1]; + end + end else begin + calib_aux_out[1] <= #TCQ 1'b0; + calib_aux_out[3] <= #TCQ 1'b0; + end + end + end +end +endgenerate + + //***************************************************************** + // memory address during init + //***************************************************************** + + always @(posedge clk) + phy_data_full_r <= #TCQ phy_data_full; +// verilint STARC-2.7.3.3b off + always @(*)begin + // Bus 0 for address/bank never used + address_w = 'b0; + bank_w = 'b0; + if ((init_state_r == INIT_PRECHARGE) || + (init_state_r == INIT_RDLVL_COMPLEX_PRECHARGE) || + (init_state_r == INIT_ZQCL) || + (init_state_r == INIT_DDR2_PRECHARGE)) begin + // Set A10=1 for ZQ long calibration or Precharge All + address_w = 'b0; + address_w[10] = 1'b1; + bank_w = 'b0; + end else if (init_state_r == INIT_WRLVL_START) begin + // Enable wrlvl in MR1 + bank_w[1:0] = 2'b01; + address_w = load_mr1[ROW_WIDTH-1:0]; + address_w[2] = mr1_r[chip_cnt_r][0]; + address_w[6] = mr1_r[chip_cnt_r][1]; + address_w[9] = mr1_r[chip_cnt_r][2]; + address_w[7] = 1'b1; + end else if (init_state_r == INIT_WRLVL_LOAD_MR) begin + // Finished with write leveling, disable wrlvl in MR1 + // For single rank disable Rtt_Nom + bank_w[1:0] = 2'b01; + address_w = load_mr1[ROW_WIDTH-1:0]; + address_w[2] = mr1_r[chip_cnt_r][0]; + address_w[6] = mr1_r[chip_cnt_r][1]; + address_w[9] = mr1_r[chip_cnt_r][2]; + end else if (init_state_r == INIT_WRLVL_LOAD_MR2) begin + // Set RTT_WR in MR2 after write leveling disabled + bank_w[1:0] = 2'b10; + address_w = load_mr2[ROW_WIDTH-1:0]; + address_w[10:9] = mr2_r[chip_cnt_r]; + end else if (init_state_r == INIT_MPR_READ) begin + address_w = 'b0; + bank_w = 'b0; + end else if (init_state_r == INIT_MPR_RDEN) begin + // Enable MPR read with LMR3 and A2=1 + bank_w[BANK_WIDTH-1:0] = 'd3; + address_w = {ROW_WIDTH{1'b0}}; + address_w[2] = 1'b1; + end else if (init_state_r == INIT_MPR_DISABLE) begin + // Disable MPR read with LMR3 and A2=0 + bank_w[BANK_WIDTH-1:0] = 'd3; + address_w = {ROW_WIDTH{1'b0}}; + end else if ((init_state_r == INIT_REG_WRITE)& + (DRAM_TYPE == "DDR3"))begin + // bank_w is assigned a 3 bit value. In some + // DDR2 cases there will be only two bank bits. + //Qualifying the condition with DDR3 + bank_w = 'b0; + address_w = 'b0; + case (reg_ctrl_cnt_r) + 4'h1:begin + address_w[4:0] = REG_RC1[4:0]; + bank_w = REG_RC1[7:5]; + end + 4'h2: address_w[4:0] = REG_RC2[4:0]; + 4'h3: begin + address_w[4:0] = REG_RC3[4:0]; + bank_w = REG_RC3[7:5]; + end + 4'h4: begin + address_w[4:0] = REG_RC4[4:0]; + bank_w = REG_RC4[7:5]; + end + 4'h5: begin + address_w[4:0] = REG_RC5[4:0]; + bank_w = REG_RC5[7:5]; + end + 4'h6: begin + address_w[4:0] = REG_RC10[4:0]; + bank_w = REG_RC10[7:5]; + end + 4'h7: begin + address_w[4:0] = REG_RC11[4:0]; + bank_w = REG_RC11[7:5]; + end + default: address_w[4:0] = REG_RC0[4:0]; + endcase + end else if (init_state_r == INIT_LOAD_MR) begin + // If loading mode register, look at cnt_init_mr to determine + // which MR is currently being programmed + address_w = 'b0; + bank_w = 'b0; + if(DRAM_TYPE == "DDR3")begin + if(rdlvl_stg1_done && prbs_rdlvl_done && pi_dqs_found_done)begin + // end of the calibration programming correct + // burst length + if (TEST_AL == "0") begin + bank_w[1:0] = 2'b00; + address_w = load_mr0[ROW_WIDTH-1:0]; + address_w[8]= 1'b0; //Don't reset DLL + end else begin + // programming correct AL value + bank_w[1:0] = 2'b01; + address_w = load_mr1[ROW_WIDTH-1:0]; + if (TEST_AL == "CL-1") + address_w[4:3]= 2'b01; // AL="CL-1" + else + address_w[4:3]= 2'b10; // AL="CL-2" + end + end else begin + case (cnt_init_mr_r) + INIT_CNT_MR2: begin + bank_w[1:0] = 2'b10; + address_w = load_mr2[ROW_WIDTH-1:0]; + address_w[10:9] = mr2_r[chip_cnt_r]; + end + INIT_CNT_MR3: begin + bank_w[1:0] = 2'b11; + address_w = load_mr3[ROW_WIDTH-1:0]; + end + INIT_CNT_MR1: begin + bank_w[1:0] = 2'b01; + address_w = load_mr1[ROW_WIDTH-1:0]; + address_w[2] = mr1_r[chip_cnt_r][0]; + address_w[6] = mr1_r[chip_cnt_r][1]; + address_w[9] = mr1_r[chip_cnt_r][2]; + end + INIT_CNT_MR0: begin + bank_w[1:0] = 2'b00; + address_w = load_mr0[ROW_WIDTH-1:0]; + // fixing it to BL8 for calibration + address_w[1:0] = 2'b00; + end + default: begin + bank_w = {BANK_WIDTH{1'bx}}; + address_w = {ROW_WIDTH{1'bx}}; + end + endcase + end + end else begin // DDR2 + case (cnt_init_mr_r) + INIT_CNT_MR2: begin + if(~ddr2_refresh_flag_r)begin + bank_w[1:0] = 2'b10; + address_w = load_mr2[ROW_WIDTH-1:0]; + end else begin // second set of lm commands + bank_w[1:0] = 2'b00; + address_w = load_mr0[ROW_WIDTH-1:0]; + address_w[8]= 1'b0; + //MRS command without resetting DLL + end + end + INIT_CNT_MR3: begin + if(~ddr2_refresh_flag_r)begin + bank_w[1:0] = 2'b11; + address_w = load_mr3[ROW_WIDTH-1:0]; + end else begin // second set of lm commands + bank_w[1:0] = 2'b00; + address_w = load_mr0[ROW_WIDTH-1:0]; + address_w[8]= 1'b0; + //MRS command without resetting DLL. Repeted again + // because there is an extra state. + end + end + INIT_CNT_MR1: begin + bank_w[1:0] = 2'b01; + if(~ddr2_refresh_flag_r)begin + address_w = load_mr1[ROW_WIDTH-1:0]; + end else begin // second set of lm commands + address_w = load_mr1[ROW_WIDTH-1:0]; + address_w[9:7] = 3'b111; + //OCD default state + end + end + INIT_CNT_MR0: begin + if(~ddr2_refresh_flag_r)begin + bank_w[1:0] = 2'b00; + address_w = load_mr0[ROW_WIDTH-1:0]; + end else begin // second set of lm commands + bank_w[1:0] = 2'b01; + address_w = load_mr1[ROW_WIDTH-1:0]; + if((chip_cnt_r == 2'd1) || (chip_cnt_r == 2'd3))begin + // always disable odt for rank 1 and rank 3 as per SPEC + address_w[2] = 'b0; + address_w[6] = 'b0; + end + //OCD exit + end + end + default: begin + bank_w = {BANK_WIDTH{1'bx}}; + address_w = {ROW_WIDTH{1'bx}}; + end + endcase + end + end else if ( ~prbs_rdlvl_done && ((init_state_r == INIT_PI_PHASELOCK_READS) || + (init_state_r == INIT_RDLVL_STG1_WRITE) || + (init_state_r == INIT_RDLVL_STG1_READ) || + (init_state_r == INIT_RDLVL_COMPLEX_READ))) begin + // Writing and reading PRBS pattern for read leveling stage 1 + // Need to support burst length 4 or 8. PRBS pattern will be + // written to entire row and read back from the same row repeatedly + bank_w = CALIB_BA_ADD[BANK_WIDTH-1:0]; + address_w[ROW_WIDTH-1:COL_WIDTH] = {ROW_WIDTH-COL_WIDTH{1'b0}}; + if (((stg1_wr_rd_cnt == NUM_STG1_WR_RD) && ~rdlvl_stg1_done) || (stg1_wr_rd_cnt == 'd127) || + ((stg1_wr_rd_cnt == 'd22) && (((init_state_r1 != INIT_RDLVL_STG1_WRITE) && ~stg1_wr_done) || complex_row0_rd_done))) begin + address_w[COL_WIDTH-1:0] = {COL_WIDTH{1'b0}}; + end else if (phy_data_full_r || (!new_burst_r)) + address_w[COL_WIDTH-1:0] = phy_address[COL_WIDTH-1:0]; + else if ((stg1_wr_rd_cnt >= 9'd0) && new_burst_r && ~phy_data_full_r) begin + if ((init_state_r == INIT_RDLVL_COMPLEX_READ) && (init_state_r1 != INIT_RDLVL_COMPLEX_READ) )// || + // ((init_state_r == INIT_RDLVL_STG1_WRITE) && prbs_rdlvl_done) ) + address_w[COL_WIDTH-1:0] = complex_address[COL_WIDTH-1:0] + ADDR_INC; + else + address_w[COL_WIDTH-1:0] = phy_address[COL_WIDTH-1:0] + ADDR_INC; + end + //need to add address for complex oclkdelay calib + end else if (prbs_rdlvl_done && ((init_state_r == INIT_RDLVL_STG1_WRITE) || + (init_state_r == INIT_RDLVL_COMPLEX_READ))) begin + bank_w = CALIB_BA_ADD[BANK_WIDTH-1:0]; + address_w[ROW_WIDTH-1:COL_WIDTH] = {ROW_WIDTH-COL_WIDTH{1'b0}}; + if ((stg1_wr_rd_cnt == 'd127) || ((stg1_wr_rd_cnt == 'd30) && (((init_state_r1 != INIT_RDLVL_STG1_WRITE) && ~stg1_wr_done) || complex_row0_rd_done))) begin + address_w[COL_WIDTH-1:0] = {COL_WIDTH{1'b0}}; + end else if (phy_data_full_r || (!new_burst_r)) + address_w[COL_WIDTH-1:0] = phy_address[COL_WIDTH-1:0]; + else if ((stg1_wr_rd_cnt >= 9'd0) && new_burst_r && ~phy_data_full_r) begin + if ((init_state_r == INIT_RDLVL_STG1_WRITE) && (init_state_r1 != INIT_RDLVL_STG1_WRITE) ) + // ((init_state_r == INIT_RDLVL_STG1_WRITE) && prbs_rdlvl_done) ) + address_w[COL_WIDTH-1:0] = complex_address[COL_WIDTH-1:0] + ADDR_INC; + else + address_w[COL_WIDTH-1:0] = phy_address[COL_WIDTH-1:0] + ADDR_INC; + end + + end else if ((init_state_r == INIT_OCLKDELAY_WRITE) || + (init_state_r == INIT_OCAL_CENTER_WRITE) || + (init_state_r == INIT_OCLKDELAY_READ)) begin + bank_w = CALIB_BA_ADD[BANK_WIDTH-1:0]; + address_w[ROW_WIDTH-1:COL_WIDTH] = {ROW_WIDTH-COL_WIDTH{1'b0}}; + if (oclk_wr_cnt == NUM_STG1_WR_RD) + address_w[COL_WIDTH-1:0] = {COL_WIDTH{1'b0}}; + else if (phy_data_full_r || (!new_burst_r)) + address_w[COL_WIDTH-1:0] = phy_address[COL_WIDTH-1:0]; + else if ((oclk_wr_cnt >= 4'd0) && new_burst_r && ~phy_data_full_r) + address_w[COL_WIDTH-1:0] = phy_address[COL_WIDTH-1:0] + ADDR_INC; + end else if ((init_state_r == INIT_WRCAL_WRITE) || + (init_state_r == INIT_WRCAL_READ)) begin + bank_w = CALIB_BA_ADD[BANK_WIDTH-1:0]; + address_w[ROW_WIDTH-1:COL_WIDTH] = {ROW_WIDTH-COL_WIDTH{1'b0}}; + if (wrcal_wr_cnt == NUM_STG1_WR_RD) + address_w[COL_WIDTH-1:0] = {COL_WIDTH{1'b0}}; + else if (phy_data_full_r || (!new_burst_r)) + address_w[COL_WIDTH-1:0] = phy_address[COL_WIDTH-1:0]; + else if ((wrcal_wr_cnt >= 4'd0) && new_burst_r && ~phy_data_full_r) + address_w[COL_WIDTH-1:0] = phy_address[COL_WIDTH-1:0] + ADDR_INC; + end else if ((init_state_r == INIT_WRCAL_MULT_READS) || + (init_state_r == INIT_RDLVL_STG2_READ)) begin + // when writing or reading back training pattern for read leveling stage2 + // need to support burst length of 4 or 8. This may mean issuing + // multiple commands to cover the entire range of addresses accessed + // during read leveling. + // Hard coding A[12] to 1 so that it will always be burst length of 8 + // for DDR3. Does not have any effect on DDR2. + bank_w = CALIB_BA_ADD[BANK_WIDTH-1:0]; + address_w[ROW_WIDTH-1:COL_WIDTH] = {ROW_WIDTH-COL_WIDTH{1'b0}}; + address_w[COL_WIDTH-1:0] = + {CALIB_COL_ADD[COL_WIDTH-1:3],burst_addr_r, 3'b000}; + address_w[12] = 1'b1; + end else if ((init_state_r == INIT_RDLVL_ACT) || + (init_state_r == INIT_RDLVL_COMPLEX_ACT) || + (init_state_r == INIT_WRCAL_ACT) || + (init_state_r == INIT_OCAL_COMPLEX_ACT) || + (init_state_r == INIT_OCAL_CENTER_ACT) || + (init_state_r == INIT_OCLKDELAY_ACT)) begin + + bank_w = CALIB_BA_ADD[BANK_WIDTH-1:0]; + //if (stg1_wr_rd_cnt == 'd22) + // address_w = CALIB_ROW_ADD[ROW_WIDTH-1:0] + 1; + //else + address_w = prbs_rdlvl_done ? CALIB_ROW_ADD[ROW_WIDTH-1:0] + complex_row_cnt_ocal : + CALIB_ROW_ADD[ROW_WIDTH-1:0] + complex_row_cnt; + end else begin + bank_w = {BANK_WIDTH{1'bx}}; + address_w = {ROW_WIDTH{1'bx}}; + end + end + // verilint STARC-2.7.3.3b on + // registring before sending out + generate + genvar r,s; + if ((DRAM_TYPE != "DDR3") || (CA_MIRROR != "ON")) begin: gen_no_mirror + for (r = 0; r < nCK_PER_CLK; r = r + 1) begin: div_clk_loop + always @(posedge clk) begin + phy_address[(r*ROW_WIDTH) +: ROW_WIDTH] <= #TCQ address_w; + phy_bank[(r*BANK_WIDTH) +: BANK_WIDTH] <= #TCQ bank_w; + end + end + end else begin: gen_mirror + // Control/addressing mirroring (optional for DDR3 dual rank DIMMs) + // Mirror for the 2nd rank only. Logic needs to be enhanced to account + // for multiple slots, currently only supports one slot, 2-rank config + + for (r = 0; r < nCK_PER_CLK; r = r + 1) begin: gen_ba_div_clk_loop + for (s = 0; s < BANK_WIDTH; s = s + 1) begin: gen_ba + + always @(posedge clk) + if (chip_cnt_r == 2'b00) begin + phy_bank[(r*BANK_WIDTH) + s] <= #TCQ bank_w[s]; + end else begin + phy_bank[(r*BANK_WIDTH) + s] <= #TCQ bank_w[(s == 0) ? 1 : ((s == 1) ? 0 : s)]; + end + + end + end + + for (r = 0; r < nCK_PER_CLK; r = r + 1) begin: gen_addr_div_clk_loop + for (s = 0; s < ROW_WIDTH; s = s + 1) begin: gen_addr + always @(posedge clk) + if (chip_cnt_r == 2'b00) begin + phy_address[(r*ROW_WIDTH) + s] <= #TCQ address_w[s]; + end else begin + phy_address[(r*ROW_WIDTH) + s] <= #TCQ address_w[ + (s == 3) ? 4 : + ((s == 4) ? 3 : + ((s == 5) ? 6 : + ((s == 6) ? 5 : + ((s == 7) ? 8 : + ((s == 8) ? 7 : s)))))]; + end + end + end + + end + endgenerate + +endmodule diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_cntlr.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_cntlr.v new file mode 100644 index 0000000..a27d7ce --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_cntlr.v @@ -0,0 +1,285 @@ +//***************************************************************************** +// (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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version: %version +// \ \ Application: MIG +// / / Filename: ddr_phy_v4_0_phy_ocd_cntlr.v +// /___/ /\ Date Last Modified: $Date: 2011/02/25 02:07:40 $ +// \ \ / \ Date Created: Aug 03 2009 +// \___\/\___\ +// +//Device: 7 Series +//Design Name: DDR3 SDRAM +//Purpose: Steps through the major sections of the output clock +// delay algorithm. Enabling various subblocks at the right time. +// +// Steps through each byte of the interface. +// +// Implements both the simple and complex data pattern. +// +// for each byte in interface +// begin +// Limit +// Scan - which includes DQS centering +// Precharge +// end +// set _wrlvl and _done equal to one +// +//Reference: +//Revision History: +//***************************************************************************** + +`timescale 1ps/1ps + +module mig_7series_v4_0_ddr_phy_ocd_cntlr # + (parameter TCQ = 100, + parameter DQS_CNT_WIDTH = 3, + parameter DQS_WIDTH = 8) + (/*AUTOARG*/ + // Outputs + wrlvl_final, complex_wrlvl_final, oclk_init_delay_done, + ocd_prech_req, lim_start, complex_oclkdelay_calib_done, + oclkdelay_calib_done, phy_rddata_en_1, phy_rddata_en_2, + phy_rddata_en_3, ocd_cntlr2stg2_dec, oclkdelay_calib_cnt, + reset_scan, + // Inputs + clk, rst, prech_done, oclkdelay_calib_start, + complex_oclkdelay_calib_start, lim_done, phy_rddata_en, + po_counter_read_val, po_rdy, scan_done + ); + + localparam ONE = 1; + + input clk; + input rst; + + output wrlvl_final, complex_wrlvl_final; + reg wrlvl_final_ns, wrlvl_final_r, complex_wrlvl_final_ns, complex_wrlvl_final_r; + always @(posedge clk) wrlvl_final_r <= #TCQ wrlvl_final_ns; + always @(posedge clk) complex_wrlvl_final_r <= #TCQ complex_wrlvl_final_ns; + assign wrlvl_final = wrlvl_final_r; + assign complex_wrlvl_final = complex_wrlvl_final_r; + + // Completed initial delay increment + output oclk_init_delay_done; // may not need this... maybe for fast cal mode. + assign oclk_init_delay_done = 1'b1; + + // Precharge done status from ddr_phy_init + input prech_done; + reg ocd_prech_req_ns, ocd_prech_req_r; + always @(posedge clk) ocd_prech_req_r <= #TCQ ocd_prech_req_ns; + output ocd_prech_req; + assign ocd_prech_req = ocd_prech_req_r; + + input oclkdelay_calib_start, complex_oclkdelay_calib_start; + input lim_done; + + reg lim_start_ns, lim_start_r; + always @(posedge clk) lim_start_r <= #TCQ lim_start_ns; + output lim_start; + assign lim_start = lim_start_r; + + reg complex_oclkdelay_calib_done_ns, complex_oclkdelay_calib_done_r; + always @(posedge clk) complex_oclkdelay_calib_done_r <= #TCQ complex_oclkdelay_calib_done_ns; + output complex_oclkdelay_calib_done; + assign complex_oclkdelay_calib_done = complex_oclkdelay_calib_done_r; + + reg oclkdelay_calib_done_ns, oclkdelay_calib_done_r; + always @(posedge clk) oclkdelay_calib_done_r <= #TCQ oclkdelay_calib_done_ns; + output oclkdelay_calib_done; + assign oclkdelay_calib_done = oclkdelay_calib_done_r; + + input phy_rddata_en; + reg prde_r1, prde_r2; + always @(posedge clk) prde_r1 <= #TCQ phy_rddata_en; + always @(posedge clk) prde_r2 <= #TCQ prde_r1; + wire prde = complex_oclkdelay_calib_start ? prde_r2 : phy_rddata_en; + + reg phy_rddata_en_r1, phy_rddata_en_r2, phy_rddata_en_r3; + always @(posedge clk) phy_rddata_en_r1 <= #TCQ prde; + always @(posedge clk) phy_rddata_en_r2 <= #TCQ phy_rddata_en_r1; + always @(posedge clk) phy_rddata_en_r3 <= #TCQ phy_rddata_en_r2; + output phy_rddata_en_1, phy_rddata_en_2, phy_rddata_en_3; + assign phy_rddata_en_1 = phy_rddata_en_r1; + assign phy_rddata_en_2 = phy_rddata_en_r2; + assign phy_rddata_en_3 = phy_rddata_en_r3; + + input [8:0] po_counter_read_val; + reg ocd_cntlr2stg2_dec_r; + output ocd_cntlr2stg2_dec; + assign ocd_cntlr2stg2_dec = ocd_cntlr2stg2_dec_r; + input po_rdy; + + reg [3:0] po_rd_wait_ns, po_rd_wait_r; + always @(posedge clk) po_rd_wait_r <= #TCQ po_rd_wait_ns; + + reg [DQS_CNT_WIDTH-1:0] byte_ns, byte_r; + always @(posedge clk) byte_r <= #TCQ byte_ns; + output [DQS_CNT_WIDTH:0] oclkdelay_calib_cnt; + assign oclkdelay_calib_cnt = {1'b0, byte_r}; + + reg reset_scan_ns, reset_scan_r; + always @(posedge clk) reset_scan_r <= #TCQ reset_scan_ns; + output reset_scan; + assign reset_scan = reset_scan_r; + input scan_done; + + reg [2:0] sm_ns, sm_r; + always @(posedge clk) sm_r <= #TCQ sm_ns; + + // Primary state machine. + + always @(*) begin + + // Default next state assignments. + + byte_ns = byte_r; + complex_wrlvl_final_ns = complex_wrlvl_final_r; + lim_start_ns = lim_start_r; + oclkdelay_calib_done_ns = oclkdelay_calib_done_r; + complex_oclkdelay_calib_done_ns = complex_oclkdelay_calib_done_r; + ocd_cntlr2stg2_dec_r = 1'b0; + po_rd_wait_ns = po_rd_wait_r; + if (|po_rd_wait_r) po_rd_wait_ns = po_rd_wait_r - 4'b1; + reset_scan_ns = reset_scan_r; + wrlvl_final_ns = wrlvl_final_r; + sm_ns = sm_r; + ocd_prech_req_ns= 1'b0; + + if (rst == 1'b1) begin + + // RESET next states + complex_oclkdelay_calib_done_ns = 1'b0; + complex_wrlvl_final_ns = 1'b0; + sm_ns = /*AK("READY")*/3'd0; + lim_start_ns = 1'b0; + oclkdelay_calib_done_ns = 1'b0; + reset_scan_ns = 1'b1; + wrlvl_final_ns = 1'b0; + end else + + // State based actions and next states. + case (sm_r) + /*AL("READY")*/3'd0: begin + byte_ns = {DQS_CNT_WIDTH{1'b0}}; + if (oclkdelay_calib_start && ~oclkdelay_calib_done_r || + complex_oclkdelay_calib_start && ~complex_oclkdelay_calib_done_r) + begin + sm_ns = /*AK("LIMIT_START")*/3'd1; + lim_start_ns = 1'b1; + end + end + + /*AL("LIMIT_START")*/3'd1: + sm_ns = /*AK("LIMIT_WAIT")*/3'd2; + + /*AL("LIMIT_WAIT")*/3'd2:begin + if (lim_done) begin + lim_start_ns = 1'b0; + sm_ns = /*AK("SCAN")*/3'd3; + reset_scan_ns = 1'b0; + end + end + + /*AL("SCAN")*/3'd3:begin + if (scan_done) begin + reset_scan_ns = 1'b1; + sm_ns = /*AK("COMPUTE")*/3'd4; + end + end + + /*AL("COMPUTE")*/3'd4:begin + sm_ns = /*AK("PRECHARGE")*/3'd5; + ocd_prech_req_ns = 1'b1; + end + + /*AL("PRECHARGE")*/3'd5:begin + if (prech_done) sm_ns = /*AK("DONE")*/3'd6; + end + + /*AL("DONE")*/3'd6:begin + byte_ns = byte_r + ONE[DQS_CNT_WIDTH-1:0]; + if ({1'b0, byte_r} == DQS_WIDTH[DQS_CNT_WIDTH:0] - ONE[DQS_WIDTH:0]) begin + byte_ns = {DQS_CNT_WIDTH{1'b0}}; + po_rd_wait_ns = 4'd8; + sm_ns = /*AK("STG2_2_ZERO")*/3'd7; + end else begin + sm_ns = /*AK("LIMIT_START")*/3'd1; + lim_start_ns = 1'b1; + end + end + + /*AL("STG2_2_ZERO")*/3'd7: + if (~|po_rd_wait_r && po_rdy) + if (|po_counter_read_val[5:0]) ocd_cntlr2stg2_dec_r = 1'b1; + else begin + if ({1'b0, byte_r} == DQS_WIDTH[DQS_CNT_WIDTH:0] - ONE[DQS_WIDTH:0]) begin + sm_ns = /*AK("READY")*/3'd0; + oclkdelay_calib_done_ns= 1'b1; + wrlvl_final_ns = 1'b1; + if (complex_oclkdelay_calib_start) begin + complex_oclkdelay_calib_done_ns = 1'b1; + complex_wrlvl_final_ns = 1'b1; + end + end else begin + byte_ns = byte_r + ONE[DQS_CNT_WIDTH-1:0]; + po_rd_wait_ns = 4'd8; + end + end // else: !if(|po_counter_read_val[5:0]) + + endcase // case (sm_r) + end // always @ begin + +endmodule // mig_7series_v4_0_ddr_phy_ocd_cntlr + +// Local Variables: +// verilog-autolabel-prefix: "3'd" +// End: diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_data.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_data.v new file mode 100644 index 0000000..b82deb8 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_data.v @@ -0,0 +1,231 @@ +//***************************************************************************** +// (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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version: %version +// \ \ Application: MIG +// / / Filename: ddr_phy_v4_0_phy_ocd_data.v +// /___/ /\ Date Last Modified: $Date: 2011/02/25 02:07:40 $ +// \ \ / \ Date Created: Aug 03 2009 +// \___\/\___\ +// +//Device: 7 Series +//Design Name: DDR3 SDRAM +//Purpose: Data comparison for both "non-complex" and "complex" data. +// +// Depending on complex_oclkdelay_calib_start, data provided on the phy_rddata +// bus is compared against a fixed ones and zeros pattern, or against data +// provided on the prob_o bus. +// +// In the case of complex data, the phy_rddata data is delayed by two +// clocks to match up with the prbs_o data. +// +// For 4:1 mode, in each fabric clock, a complete DRAM burst may be delivered. +// A DRAM burst is 8 times the width of the DQ bus. For an 8 byte DQ +// bus, 64 bytes are delivered on each clock. +// +// In 2:1 mode the DRAM burst is delivered on two fabric clocks. For +// an 8 byte bus, 32 bytes are delivered with each fabric clock. +// +// For the most part, this block does not use phy_rddata_en. It delivers +// its results and depends on downstream logic to know when its valid. +// +// phy_rddata_en is used for the PRBS compares when the last line of data +// needs to be carried over to a subsequent line. +// +// Since we work on a byte at a time, the comparison only works on +// one byte of the DQ bus at a time. The oclkdelay_calib_cnt field is used to +// select the proper 8 bytes out of both the phy_rddata and prob_o streams. +// +// Comparisons are computed for "zero" or "rise" data, and "oneeighty" or +// "fall" data. The "oneeighty" compares assumes the rising edge clock is +// landing in the oneeighty data. +// +// For the simple data, we don't need to worry about first byte or last +// byte conditions because the sampled data is taken from the middle +// of a 4 burst segment. +// +// The complex (or PRBS) data starts and stops. And we need to be +// careful about ignoring compares that might be using invalid latched +// data. The PRBS generator provides prbs_ignore_first_byte and +// prbs_ignore_last_bytes. The comparison block is procedural. It +// first compares across the entire line, then comes back and overwrites +// any byte compare results as indicated by the _ignore_ wires. +// +// The compares generate an eight bit vector, one for each byte. The +// final step is to bitwise AND this eight bit vector. We end up +// with two sets of two bits. Zero and oneeighty for the fixed pattern +// and the prbs. +// +// complex_oclkdelay_calib_start is used to +// select between the fixed and prbs compares. The final output +// is a two bit match bus. +// +// There is a deprecated feature to mask the compare for any byte. +// +// +//Reference: +//Revision History: +//***************************************************************************** + +`timescale 1ps/1ps + +module mig_7series_v4_0_ddr_phy_ocd_data # + (parameter TCQ = 100, + parameter nCK_PER_CLK = 4, + parameter DQS_CNT_WIDTH = 3, + parameter DQ_WIDTH = 64) + (/*AUTOARG*/ + // Outputs + match, + // Inputs + clk, rst, complex_oclkdelay_calib_start, phy_rddata, prbs_o, + oclkdelay_calib_cnt, prbs_ignore_first_byte, prbs_ignore_last_bytes, + phy_rddata_en_1 + ); + + localparam [7:0] OCAL_DQ_MASK = 8'b0000_0000; + + input clk; + input rst; + + input complex_oclkdelay_calib_start; + input [2*nCK_PER_CLK*DQ_WIDTH-1:0] phy_rddata; + input [2*nCK_PER_CLK*DQ_WIDTH-1:0] prbs_o; + input [DQS_CNT_WIDTH:0] oclkdelay_calib_cnt; + + reg [DQ_WIDTH-1:0] word, word_shifted; + + reg [63:0] data_bytes_ns, data_bytes_r, data_bytes_r1, data_bytes_r2, prbs_bytes_ns, prbs_bytes_r; + always @(posedge clk) data_bytes_r <= #TCQ data_bytes_ns; + always @(posedge clk) data_bytes_r1 <= #TCQ data_bytes_r; + always @(posedge clk) data_bytes_r2 <= #TCQ data_bytes_r1; + always @(posedge clk) prbs_bytes_r <= #TCQ prbs_bytes_ns; + + input prbs_ignore_first_byte, prbs_ignore_last_bytes; + reg prbs_ignore_first_byte_r, prbs_ignore_last_bytes_r; + always @(posedge clk) prbs_ignore_first_byte_r <= #TCQ prbs_ignore_first_byte; + always @(posedge clk) prbs_ignore_last_bytes_r <= #TCQ prbs_ignore_last_bytes; + + input phy_rddata_en_1; + reg [7:0] last_byte_r; + wire [63:0] data_bytes = complex_oclkdelay_calib_start ? data_bytes_r2 : data_bytes_r; + + wire [7:0] last_byte_ns; + generate if (nCK_PER_CLK == 4) begin + assign last_byte_ns = phy_rddata_en_1 ? data_bytes[63:56] : last_byte_r; + end else begin + assign last_byte_ns = phy_rddata_en_1 ? data_bytes[31:24] : last_byte_r; + end endgenerate + always @(posedge clk) last_byte_r <= #TCQ last_byte_ns; + + reg second_half_ns, second_half_r; + always @(posedge clk) second_half_r <= #TCQ second_half_ns; + always @(*) begin + second_half_ns = second_half_r; + if (rst) second_half_ns = 1'b0; + else second_half_ns = phy_rddata_en_1 ^ second_half_r; + end + + reg [7:0] comp0, comp180, prbs0, prbs180; + + integer ii; + always @(*) begin + comp0 = 8'hff; + comp180 = 8'hff; + prbs0 = 8'hff; + prbs180 = 8'hff; + data_bytes_ns = 64'b0; + prbs_bytes_ns = 64'b0; + for (ii=0; ii<2*nCK_PER_CLK; ii=ii+1) + begin + word = phy_rddata[ii*DQ_WIDTH+:DQ_WIDTH]; + word_shifted = word >> oclkdelay_calib_cnt*8; + data_bytes_ns[ii*8+:8] = word_shifted[7:0]; + + word = prbs_o[ii*DQ_WIDTH+:DQ_WIDTH]; + word_shifted = word >> oclkdelay_calib_cnt*8; + prbs_bytes_ns[ii*8+:8] = word_shifted[7:0]; + + comp0[ii] = data_bytes[ii*8+:8] == (ii%2 ? 8'hff : 8'h00); + comp180[ii] = data_bytes[ii*8+:8] == (ii%2 ? 8'h00 : 8'hff); + + prbs0[ii] = data_bytes[ii*8+:8] == prbs_bytes_r[ii*8+:8]; + end // for (ii=0; ii<2*nCK_PER_CLK; ii=ii+1) + prbs180[0] = last_byte_r == prbs_bytes_r[7:0]; + for (ii=1; ii<2*nCK_PER_CLK; ii=ii+1) + prbs180[ii] = data_bytes[(ii-1)*8+:8] == prbs_bytes_r[ii*8+:8]; + if (nCK_PER_CLK == 4) begin + if (prbs_ignore_last_bytes_r) begin + prbs0[7:6] = 2'b11; + prbs180[7] = 1'b1; + end + if (prbs_ignore_first_byte_r) prbs180[0] = 1'b1; + end else begin + if (second_half_r) begin + if (prbs_ignore_last_bytes_r) begin + prbs0[3:2] = 2'b11; + prbs180[3] = 1'b1; + end + end else if (prbs_ignore_first_byte_r) prbs180[0] = 1'b1; + end // else: !if(nCK_PER_CLK == 4) + end // always @ (*) + + wire [7:0] comp0_masked = comp0 | OCAL_DQ_MASK; + wire [7:0] comp180_masked = comp180 | OCAL_DQ_MASK; + wire [7:0] prbs0_masked = prbs0 | OCAL_DQ_MASK; + wire [7:0] prbs180_masked = prbs180 | OCAL_DQ_MASK; + + output [1:0] match; + assign match = complex_oclkdelay_calib_start ? {&prbs180_masked, &prbs0_masked} : {&comp180_masked , &comp0_masked}; + + +endmodule // mig_7series_v4_0_ddr_phy_ocd_data + diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_edge.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_edge.v new file mode 100644 index 0000000..351f121 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_edge.v @@ -0,0 +1,231 @@ +//***************************************************************************** +// (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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version: %version +// \ \ Application: MIG +// / / Filename: ddr_phy_v4_0_phy_ocd_edge.v +// /___/ /\ Date Last Modified: $Date: 2011/02/25 02:07:40 $ +// \ \ / \ Date Created: Aug 03 2009 +// \___\/\___\ +// +//Device: 7 Series +//Design Name: DDR3 SDRAM +//Purpose: Detects and stores edges as the test pattern is scanned via +// manipulating the phaser out stage 3 taps. +// +// Scanning always proceeds from the left to the right. For more +// on the scanning algorithm, see the _po_cntlr block. +// +// Four scan results are reported. The edges at fuzz2zero, +// zero2fuzz, fuzz2oneeighty, and oneeighty2fuzz. Each edge +// has a 6 bit stg3 tap value and a valid bit. The valid bits +// are reset before the scan starts. +// +// Once reset_scan is set low, this block waits for the first +// samp_done while scanning_right. This marks the left end +// of the scan, and initializes prev_samp_r with samp_result and +// sets the prev_samp_r valid bit to one. +// +// At each subesquent samp_done, the previous samp is compared +// to the current samp_result. The case statement details how +// edges are identified. +// +// Original design assumed fuzz between valid regions. Design +// has been updated to tolerate transitions from zero to oneeight +// and vice-versa without fuzz in between. +// +//Reference: +//Revision History: +//***************************************************************************** + +`timescale 1ps/1ps + +module mig_7series_v4_0_ddr_phy_ocd_edge # + (parameter TCQ = 100) + (/*AUTOARG*/ + // Outputs + scan_right, z2f, f2z, o2f, f2o, zero2fuzz, fuzz2zero, + oneeighty2fuzz, fuzz2oneeighty, + // Inputs + clk, samp_done, phy_rddata_en_2, reset_scan, scanning_right, + samp_result, stg3 + ); + + + localparam [1:0] NULL = 2'b11, + FUZZ = 2'b00, + ONEEIGHTY = 2'b10, + ZERO = 2'b01; + + input clk; + + input samp_done; + input phy_rddata_en_2; + wire samp_valid = samp_done && phy_rddata_en_2; + + input reset_scan; + + input scanning_right; + + reg prev_samp_valid_ns, prev_samp_valid_r; + always @(posedge clk) prev_samp_valid_r <= #TCQ prev_samp_valid_ns; + always @(*) begin + prev_samp_valid_ns = prev_samp_valid_r; + if (reset_scan) prev_samp_valid_ns = 1'b0; + else if (samp_valid) prev_samp_valid_ns = 1'b1; + end + + input [1:0] samp_result; + + reg [1:0] prev_samp_ns, prev_samp_r; + always @(posedge clk) prev_samp_r <= #TCQ prev_samp_ns; + always @(*) + if (samp_valid) prev_samp_ns = samp_result; + else prev_samp_ns = prev_samp_r; + + reg scan_right_ns, scan_right_r; + always @(posedge clk) scan_right_r <= #TCQ scan_right_ns; + output scan_right; + assign scan_right = scan_right_r; + + input [5:0] stg3; + + reg z2f_ns, z2f_r, f2z_ns, f2z_r, o2f_ns, o2f_r, f2o_ns, f2o_r; + always @(posedge clk) z2f_r <= #TCQ z2f_ns; + always @(posedge clk) f2z_r <= #TCQ f2z_ns; + always @(posedge clk) o2f_r <= #TCQ o2f_ns; + always @(posedge clk) f2o_r <= #TCQ f2o_ns; + + output z2f, f2z, o2f, f2o; + assign z2f = z2f_r; + assign f2z = f2z_r; + assign o2f = o2f_r; + assign f2o = f2o_r; + + reg [5:0] zero2fuzz_ns, zero2fuzz_r, fuzz2zero_ns, fuzz2zero_r, + oneeighty2fuzz_ns, oneeighty2fuzz_r, fuzz2oneeighty_ns, fuzz2oneeighty_r; + always @(posedge clk) zero2fuzz_r <= #TCQ zero2fuzz_ns; + always @(posedge clk) fuzz2zero_r <= #TCQ fuzz2zero_ns; + always @(posedge clk) oneeighty2fuzz_r <= #TCQ oneeighty2fuzz_ns; + always @(posedge clk) fuzz2oneeighty_r <= #TCQ fuzz2oneeighty_ns; + + output [5:0] zero2fuzz, fuzz2zero, oneeighty2fuzz, fuzz2oneeighty; + assign zero2fuzz = zero2fuzz_r; + assign fuzz2zero = fuzz2zero_r; + assign oneeighty2fuzz = oneeighty2fuzz_r; + assign fuzz2oneeighty = fuzz2oneeighty_r; + + always @(*) begin + z2f_ns = z2f_r; + f2z_ns = f2z_r; + o2f_ns = o2f_r; + f2o_ns = f2o_r; + zero2fuzz_ns = zero2fuzz_r; + fuzz2zero_ns = fuzz2zero_r; + oneeighty2fuzz_ns = oneeighty2fuzz_r; + fuzz2oneeighty_ns = fuzz2oneeighty_r; + scan_right_ns = 1'b0; + + if (reset_scan) begin + z2f_ns = 1'b0; + f2z_ns = 1'b0; + o2f_ns = 1'b0; + f2o_ns = 1'b0; + end + else if (samp_valid && prev_samp_valid_r) + case (prev_samp_r) + FUZZ : + if (scanning_right) begin + if (samp_result == ZERO) begin + fuzz2zero_ns = stg3; + f2z_ns = 1'b1; + end + if (samp_result == ONEEIGHTY) begin + fuzz2oneeighty_ns = stg3; + f2o_ns = 1'b1; + end + end + ZERO : begin + if (samp_result == FUZZ || samp_result == ONEEIGHTY) scan_right_ns = !scanning_right; + if (scanning_right) begin + if (samp_result == FUZZ) begin + zero2fuzz_ns = stg3 - 6'b1; + z2f_ns = 1'b1; + end + if (samp_result == ONEEIGHTY) begin + zero2fuzz_ns = stg3 - 6'b1; + z2f_ns = 1'b1; + fuzz2oneeighty_ns = stg3; + f2o_ns = 1'b1; + end + end + end + ONEEIGHTY : + if (scanning_right) begin + if (samp_result == FUZZ) begin + oneeighty2fuzz_ns = stg3 - 6'b1; + o2f_ns = 1'b1; + end + if (samp_result == ZERO) + if (f2o_r) begin + oneeighty2fuzz_ns = stg3 - 6'b1; + o2f_ns = 1'b1; + end else begin + fuzz2zero_ns = stg3; + f2z_ns = 1'b1; + end + + end // if (scanning_right) +// NULL : // Should never happen + endcase + end + +endmodule // mig_7series_v4_0_ddr_phy_ocd_edge diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_lim.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_lim.v new file mode 100644 index 0000000..8417cfb --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_lim.v @@ -0,0 +1,598 @@ +//***************************************************************************** +// (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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version: %version +// \ \ Application: MIG +// / / Filename: ddr_phy_oclkdelay_cal.v +// /___/ /\ Date Last Modified: $Date: 2011/02/25 02:07:40 $ +// \ \ / \ Date Created: Aug 03 2009 +// \___\/\___\ +// +//Device: 7 Series +//Design Name: DDR3 SDRAM +//Purpose: Center write DQS in write DQ valid window using Phaser_Out Stage3 +// delay +//Reference: +//Revision History: +//***************************************************************************** + +`timescale 1ps/1ps + +module mig_7series_v4_0_ddr_phy_ocd_lim # + (parameter TAPCNTRWIDTH = 7, + parameter DQS_CNT_WIDTH = 3, + parameter DQS_WIDTH = 9, + parameter TCQ = 100, + parameter TAPSPERKCLK = 56, + parameter TDQSS_DEGREES = 60, + parameter BYPASS_COMPLEX_OCAL = "FALSE") + (/*AUTOARG*/ + // Outputs + lim2init_write_request, lim2init_prech_req, lim2poc_rdy, lim2poc_ktap_right, + lim2stg3_inc, lim2stg3_dec, lim2stg2_inc, lim2stg2_dec, lim_done, + lim2ocal_stg3_right_lim, lim2ocal_stg3_left_lim, dbg_ocd_lim, + // Inputs + clk, rst, lim_start, po_rdy, poc2lim_rise_align_taps_lead, + poc2lim_rise_align_taps_trail, poc2lim_fall_align_taps_lead, + poc2lim_fall_align_taps_trail, oclkdelay_init_val, wl_po_fine_cnt, + simp_stg3_final_sel, oclkdelay_calib_done, poc2lim_detect_done, + prech_done, oclkdelay_calib_cnt + ); + + function [TAPCNTRWIDTH:0] mod_sub (input [TAPCNTRWIDTH-1:0] a, + input [TAPCNTRWIDTH-1:0] b, + input integer base); + begin + mod_sub = (a>=b) ? a-b : a+base[TAPCNTRWIDTH-1:0]-b; + end + endfunction // mod_sub + + input clk; + input rst; + + input lim_start; + input po_rdy; + input [TAPCNTRWIDTH-1:0] poc2lim_rise_align_taps_lead; + input [TAPCNTRWIDTH-1:0] poc2lim_rise_align_taps_trail; + input [TAPCNTRWIDTH-1:0] poc2lim_fall_align_taps_lead; + input [TAPCNTRWIDTH-1:0] poc2lim_fall_align_taps_trail; + input [5:0] oclkdelay_init_val; + input [5:0] wl_po_fine_cnt; + input [5:0] simp_stg3_final_sel; + input oclkdelay_calib_done; + input poc2lim_detect_done; + input prech_done; + input [DQS_CNT_WIDTH:0] oclkdelay_calib_cnt; + + + output lim2init_write_request; + output lim2init_prech_req; + output lim2poc_rdy; + output lim2poc_ktap_right; // I think this can be defaulted. + output lim2stg3_inc; + output lim2stg3_dec; + output lim2stg2_inc; + output lim2stg2_dec; + output lim_done; + output [5:0] lim2ocal_stg3_right_lim; + output [5:0] lim2ocal_stg3_left_lim; + output [255:0] dbg_ocd_lim; + + // Stage 3 taps can move an additional + or - 60 degrees from the write level position + // Convert 60 degrees to MMCM taps. 360/60=6. + //localparam real DIV_FACTOR = 360/TDQSS_DEGREES; + //localparam real TDQSS_LIM_MMCM_TAPS = TAPSPERKCLK/DIV_FACTOR; + localparam DIV_FACTOR = 360/TDQSS_DEGREES; + localparam TDQSS_LIM_MMCM_TAPS = TAPSPERKCLK/DIV_FACTOR; + localparam WAIT_CNT = 15; + + localparam IDLE = 14'b00_0000_0000_0001; + localparam INIT = 14'b00_0000_0000_0010; + localparam WAIT_WR_REQ = 14'b00_0000_0000_0100; + localparam WAIT_POC_DONE = 14'b00_0000_0000_1000; + localparam WAIT_STG3 = 14'b00_0000_0001_0000; + localparam STAGE3_INC = 14'b00_0000_0010_0000; + localparam STAGE3_DEC = 14'b00_0000_0100_0000; + localparam STAGE2_INC = 14'b00_0000_1000_0000; + localparam STAGE2_DEC = 14'b00_0001_0000_0000; + localparam STG3_INCDEC_WAIT = 14'b00_0010_0000_0000; + localparam STG2_INCDEC_WAIT = 14'b00_0100_0000_0000; + localparam STAGE2_TAP_CHK = 14'b00_1000_0000_0000; + localparam PRECH_REQUEST = 14'b01_0000_0000_0000; + localparam LIMIT_DONE = 14'b10_0000_0000_0000; + +// Flip-flops + reg [5:0] stg3_init_val; + reg [13:0] lim_state; + reg lim_start_r; + reg ktap_right_r; + reg write_request_r; + reg prech_req_r; + reg poc_ready_r; + reg wait_cnt_en_r; + reg wait_cnt_done; + reg [3:0] wait_cnt_r; + reg [5:0] stg3_tap_cnt; + reg [5:0] stg2_tap_cnt; + reg [5:0] stg3_left_lim; + reg [5:0] stg3_right_lim; + reg [DQS_WIDTH*6-1:0] cmplx_stg3_left_lim; + reg [DQS_WIDTH*6-1:0] simp_stg3_left_lim; + reg [DQS_WIDTH*6-1:0] cmplx_stg3_right_lim; + reg [DQS_WIDTH*6-1:0] simp_stg3_right_lim; + reg [5:0] stg3_dec_val; + reg [5:0] stg3_inc_val; + reg detect_done_r; + reg stg3_dec_r; + reg stg2_inc_r; + reg stg3_inc2init_val_r; + reg stg3_inc2init_val_r1; + reg stg3_dec2init_val_r; + reg stg3_dec2init_val_r1; + reg stg3_dec_req_r; + reg stg3_inc_req_r; + reg stg2_dec_req_r; + reg stg2_inc_req_r; + reg stg3_init_dec_r; + reg [TAPCNTRWIDTH:0] mmcm_current; + reg [TAPCNTRWIDTH:0] mmcm_init_trail; + reg [TAPCNTRWIDTH:0] mmcm_init_lead; + reg done_r; + + reg [13:0] lim_nxt_state; + reg ktap_right; + reg write_request; + reg prech_req; + reg poc_ready; + reg stg3_dec; + reg stg2_inc; + reg stg3_inc2init_val; + reg stg3_dec2init_val; + reg stg3_dec_req; + reg stg3_inc_req; + reg stg2_dec_req; + reg stg2_inc_req; + reg stg3_init_dec; + reg done; + reg oclkdelay_calib_done_r; + + wire [TAPCNTRWIDTH:0] mmcm_sub_dec = mod_sub (mmcm_init_trail, mmcm_current, TAPSPERKCLK); + wire [TAPCNTRWIDTH:0] mmcm_sub_inc = mod_sub (mmcm_current, mmcm_init_lead, TAPSPERKCLK); + + /***************************************************************************/ + // Debug signals + /***************************************************************************/ + + assign dbg_ocd_lim[0+:DQS_WIDTH*6] = simp_stg3_left_lim[DQS_WIDTH*6-1:0]; + assign dbg_ocd_lim[54+:DQS_WIDTH*6] = simp_stg3_right_lim[DQS_WIDTH*6-1:0]; + assign dbg_ocd_lim[255:108] = 'd0; + + + + + assign lim2init_write_request = write_request_r; + assign lim2init_prech_req = prech_req_r; + assign lim2poc_ktap_right = ktap_right_r; + assign lim2poc_rdy = poc_ready_r; + assign lim2ocal_stg3_left_lim = stg3_left_lim; + assign lim2ocal_stg3_right_lim = stg3_right_lim; + assign lim2stg3_dec = stg3_dec_req_r; + assign lim2stg3_inc = stg3_inc_req_r; + assign lim2stg2_dec = stg2_dec_req_r; + assign lim2stg2_inc = stg2_inc_req_r; + assign lim_done = done_r; + + +/**************************Wait Counter Start*********************************/ +// Wait counter enable for wait states WAIT_WR_REQ and WAIT_STG3 +// To avoid DQS toggling when stage2 and 3 taps are moving + always @(posedge clk) begin + if ((lim_state == WAIT_WR_REQ) || + (lim_state == WAIT_STG3) || + (lim_state == INIT)) + wait_cnt_en_r <= #TCQ 1'b1; + else + wait_cnt_en_r <= #TCQ 1'b0; + end + +// Wait counter for wait states WAIT_WR_REQ and WAIT_STG3 +// To avoid DQS toggling when stage2 and 3 taps are moving + always @(posedge clk) begin + if (!wait_cnt_en_r) begin + wait_cnt_r <= #TCQ 'b0; + wait_cnt_done <= #TCQ 1'b0; + end else begin + if (wait_cnt_r != WAIT_CNT - 1) begin + wait_cnt_r <= #TCQ wait_cnt_r + 1; + wait_cnt_done <= #TCQ 1'b0; + end else begin + wait_cnt_r <= #TCQ 'b0; + wait_cnt_done <= #TCQ 1'b1; + end + end + end +/**************************Wait Counter End***********************************/ + +// Flip-flops + + always @(posedge clk) begin + if (rst) + oclkdelay_calib_done_r <= #TCQ 1'b0; + else + oclkdelay_calib_done_r <= #TCQ oclkdelay_calib_done; + end + + always @(posedge clk) begin + if (rst) + stg3_init_val <= #TCQ oclkdelay_init_val; + else if (oclkdelay_calib_done) + stg3_init_val <= #TCQ simp_stg3_final_sel; + else + stg3_init_val <= #TCQ oclkdelay_init_val; + end + + always @(posedge clk) begin + if (rst) begin + lim_state <= #TCQ IDLE; + lim_start_r <= #TCQ 1'b0; + ktap_right_r <= #TCQ 1'b0; + write_request_r <= #TCQ 1'b0; + prech_req_r <= #TCQ 1'b0; + poc_ready_r <= #TCQ 1'b0; + detect_done_r <= #TCQ 1'b0; + stg3_dec_r <= #TCQ 1'b0; + stg2_inc_r <= #TCQ 1'b0; + stg3_inc2init_val_r <= #TCQ 1'b0; + stg3_inc2init_val_r1<= #TCQ 1'b0; + stg3_dec2init_val_r <= #TCQ 1'b0; + stg3_dec2init_val_r1<= #TCQ 1'b0; + stg3_dec_req_r <= #TCQ 1'b0; + stg3_inc_req_r <= #TCQ 1'b0; + stg2_dec_req_r <= #TCQ 1'b0; + stg2_inc_req_r <= #TCQ 1'b0; + done_r <= #TCQ 1'b0; + stg3_dec_val <= #TCQ 'd0; + stg3_inc_val <= #TCQ 'd0; + stg3_init_dec_r <= #TCQ 1'b0; + end else begin + lim_state <= #TCQ lim_nxt_state; + lim_start_r <= #TCQ lim_start; + ktap_right_r <= #TCQ ktap_right; + write_request_r <= #TCQ write_request; + prech_req_r <= #TCQ prech_req; + poc_ready_r <= #TCQ poc_ready; + detect_done_r <= #TCQ poc2lim_detect_done; + stg3_dec_r <= #TCQ stg3_dec; + stg2_inc_r <= #TCQ stg2_inc; + stg3_inc2init_val_r <= #TCQ stg3_inc2init_val; + stg3_inc2init_val_r1<= #TCQ stg3_inc2init_val_r; + stg3_dec2init_val_r <= #TCQ stg3_dec2init_val; + stg3_dec2init_val_r1<= #TCQ stg3_dec2init_val_r; + stg3_dec_req_r <= #TCQ stg3_dec_req; + stg3_inc_req_r <= #TCQ stg3_inc_req; + stg2_dec_req_r <= #TCQ stg2_dec_req; + stg2_inc_req_r <= #TCQ stg2_inc_req; + stg3_init_dec_r <= #TCQ stg3_init_dec; + done_r <= #TCQ done; + if (stg3_init_val > (('d63 - wl_po_fine_cnt)/2)) + stg3_dec_val <= #TCQ (stg3_init_val - ('d63 - wl_po_fine_cnt)/2); + else + stg3_dec_val <= #TCQ 'd0; + if (stg3_init_val < 'd63 - ((wl_po_fine_cnt)/2)) + stg3_inc_val <= #TCQ (stg3_init_val + (wl_po_fine_cnt)/2); + else + stg3_inc_val <= #TCQ 'd63; + end + end + +// Keeping track of stage 3 tap count + always @(posedge clk) begin + if (rst) + stg3_tap_cnt <= #TCQ stg3_init_val; + else if ((lim_state == IDLE) || (lim_state == INIT)) + stg3_tap_cnt <= #TCQ stg3_init_val; + else if (lim_state == STAGE3_INC) + stg3_tap_cnt <= #TCQ stg3_tap_cnt + 1; + else if (lim_state == STAGE3_DEC) + stg3_tap_cnt <= #TCQ stg3_tap_cnt - 1; + end + +// Keeping track of stage 2 tap count + always @(posedge clk) begin + if (rst) + stg2_tap_cnt <= #TCQ 'd0; + else if ((lim_state == IDLE) || (lim_state == INIT)) + stg2_tap_cnt <= #TCQ wl_po_fine_cnt; + else if (lim_state == STAGE2_INC) + stg2_tap_cnt <= #TCQ stg2_tap_cnt + 1; + else if (lim_state == STAGE2_DEC) + stg2_tap_cnt <= #TCQ stg2_tap_cnt - 1; + end + +// Keeping track of MMCM tap count + always @(posedge clk) begin + if (rst) begin + mmcm_init_trail <= #TCQ 'd0; + mmcm_init_lead <= #TCQ 'd0; + end else if (poc2lim_detect_done && !detect_done_r) begin + if (stg3_tap_cnt == stg3_dec_val) + mmcm_init_trail <= #TCQ poc2lim_rise_align_taps_trail; + if (stg3_tap_cnt == stg3_inc_val) + mmcm_init_lead <= #TCQ poc2lim_rise_align_taps_lead; + end + end + + always @(posedge clk) begin + if (rst) begin + mmcm_current <= #TCQ 'd0; + end else if (stg3_dec_r) begin + if (stg3_tap_cnt == stg3_dec_val) + mmcm_current <= #TCQ mmcm_init_trail; + else + mmcm_current <= #TCQ poc2lim_rise_align_taps_lead; + end else begin + if (stg3_tap_cnt == stg3_inc_val) + mmcm_current <= #TCQ mmcm_init_lead; + else + mmcm_current <= #TCQ poc2lim_rise_align_taps_trail; + end + end + +// Record Stage3 Left Limit + always @(posedge clk) begin + if (rst) begin + stg3_left_lim <= #TCQ 'd0; + simp_stg3_left_lim <= #TCQ 'd0; + cmplx_stg3_left_lim <= #TCQ 'd0; + end else if (stg3_inc2init_val_r && !stg3_inc2init_val_r1) begin + stg3_left_lim <= #TCQ stg3_tap_cnt; + if (oclkdelay_calib_done) + cmplx_stg3_left_lim[oclkdelay_calib_cnt*6+:6] <= #TCQ stg3_tap_cnt; + else + simp_stg3_left_lim[oclkdelay_calib_cnt*6+:6] <= #TCQ stg3_tap_cnt; + end else if (lim_start && !lim_start_r) + stg3_left_lim <= #TCQ 'd0; + end + +// Record Stage3 Right Limit + always @(posedge clk) begin + if (rst) begin + stg3_right_lim <= #TCQ 'd0; + cmplx_stg3_right_lim <= #TCQ 'd0; + simp_stg3_right_lim <= #TCQ 'd0; + end else if (stg3_dec2init_val_r && !stg3_dec2init_val_r1) begin + stg3_right_lim <= #TCQ stg3_tap_cnt; + if (oclkdelay_calib_done) + cmplx_stg3_right_lim[oclkdelay_calib_cnt*6+:6] <= #TCQ stg3_tap_cnt; + else + simp_stg3_right_lim[oclkdelay_calib_cnt*6+:6] <= #TCQ stg3_tap_cnt; + end else if (lim_start && !lim_start_r) + stg3_right_lim <= #TCQ 'd0; + end + + always @(*) begin + lim_nxt_state = lim_state; + ktap_right = ktap_right_r; + write_request = write_request_r; + prech_req = prech_req_r; + poc_ready = poc_ready_r; + stg3_dec = stg3_dec_r; + stg2_inc = stg2_inc_r; + stg3_inc2init_val = stg3_inc2init_val_r; + stg3_dec2init_val = stg3_dec2init_val_r; + stg3_dec_req = stg3_dec_req_r; + stg3_inc_req = stg3_inc_req_r; + stg2_inc_req = stg2_inc_req_r; + stg2_dec_req = stg2_dec_req_r; + stg3_init_dec = stg3_init_dec_r; + done = done_r; + + + case(lim_state) + IDLE: begin + if (lim_start && !lim_start_r) begin + lim_nxt_state = INIT; + stg3_dec = 1'b1; + stg2_inc = 1'b1; + stg3_init_dec = 1'b1; + done = 1'b0; + end + //New start of limit module for complex oclkdelay calib + else if (oclkdelay_calib_done && !oclkdelay_calib_done_r && (BYPASS_COMPLEX_OCAL == "FALSE")) begin + done = 1'b0; + end + end + INIT: begin + ktap_right = 1'b1; + // Initial stage 2 increment to 63 for left limit + if (wait_cnt_done) + lim_nxt_state = STAGE2_TAP_CHK; + end + // Wait for DQS to toggle before asserting poc_ready + WAIT_WR_REQ: begin + write_request = 1'b1; + if (wait_cnt_done) begin + poc_ready = 1'b1; + lim_nxt_state = WAIT_POC_DONE; + end + end + // Wait for POC detect done signal + WAIT_POC_DONE: begin + if (poc2lim_detect_done) begin + write_request = 1'b0; + poc_ready = 1'b0; + lim_nxt_state = WAIT_STG3; + end + end + // Wait for DQS to stop toggling before stage3 inc/dec + WAIT_STG3: begin + if (wait_cnt_done) begin + if (stg3_dec_r) begin + // Check for Stage 3 underflow and MMCM tap limit + if ((stg3_tap_cnt > 'd0) && (mmcm_sub_dec < TDQSS_LIM_MMCM_TAPS)) + lim_nxt_state = STAGE3_DEC; + else begin + stg3_dec = 1'b0; + stg3_inc2init_val = 1'b1; + lim_nxt_state = STAGE3_INC; + end + end else begin // Stage 3 being incremented + // Check for Stage 3 overflow and MMCM tap limit + if ((stg3_tap_cnt < 'd63) && (mmcm_sub_inc < TDQSS_LIM_MMCM_TAPS)) + lim_nxt_state = STAGE3_INC; + else begin + stg3_dec2init_val = 1'b1; + lim_nxt_state = STAGE3_DEC; + end + end + end + end + STAGE3_INC: begin + stg3_inc_req = 1'b1; + lim_nxt_state = STG3_INCDEC_WAIT; + end + STAGE3_DEC: begin + stg3_dec_req = 1'b1; + lim_nxt_state = STG3_INCDEC_WAIT; + end + // Wait for stage3 inc/dec to complete (po_rdy) + STG3_INCDEC_WAIT: begin + stg3_dec_req = 1'b0; + stg3_inc_req = 1'b0; + if (!stg3_dec_req_r && !stg3_inc_req_r && po_rdy) begin + if (stg3_init_dec_r) begin + // Initial decrement of stage 3 + if (stg3_tap_cnt > stg3_dec_val) + lim_nxt_state = STAGE3_DEC; + else begin + lim_nxt_state = WAIT_WR_REQ; + stg3_init_dec = 1'b0; + end + end else if (stg3_dec2init_val_r) begin + if (stg3_tap_cnt > stg3_init_val) + lim_nxt_state = STAGE3_DEC; + else + lim_nxt_state = STAGE2_TAP_CHK; + end else if (stg3_inc2init_val_r) begin + if (stg3_tap_cnt < stg3_inc_val) + lim_nxt_state = STAGE3_INC; + else + lim_nxt_state = STAGE2_TAP_CHK; + end else begin + lim_nxt_state = WAIT_WR_REQ; + end + end + end + // Check for overflow and underflow of stage2 taps + STAGE2_TAP_CHK: begin + if (stg3_dec2init_val_r) begin + // Increment stage 2 to write level tap value at the end of limit detection + if (stg2_tap_cnt < wl_po_fine_cnt) + lim_nxt_state = STAGE2_INC; + else begin + lim_nxt_state = PRECH_REQUEST; + end + end else if (stg3_inc2init_val_r) begin + // Decrement stage 2 to '0' to determine right limit + if (stg2_tap_cnt > 'd0) + lim_nxt_state = STAGE2_DEC; + else begin + lim_nxt_state = PRECH_REQUEST; + stg3_inc2init_val = 1'b0; + end + end else if (stg2_inc_r && (stg2_tap_cnt < 'd63)) begin + // Initial increment to 63 + lim_nxt_state = STAGE2_INC; + end else begin + lim_nxt_state = STG3_INCDEC_WAIT; + stg2_inc = 1'b0; + end + end + STAGE2_INC: begin + stg2_inc_req = 1'b1; + lim_nxt_state = STG2_INCDEC_WAIT; + end + STAGE2_DEC: begin + stg2_dec_req = 1'b1; + lim_nxt_state = STG2_INCDEC_WAIT; + end + // Wait for stage3 inc/dec to complete (po_rdy) + STG2_INCDEC_WAIT: begin + stg2_inc_req = 1'b0; + stg2_dec_req = 1'b0; + if (!stg2_inc_req_r && !stg2_dec_req_r && po_rdy) + lim_nxt_state = STAGE2_TAP_CHK; + end + PRECH_REQUEST: begin + prech_req = 1'b1; + if (prech_done) begin + prech_req = 1'b0; + if (stg3_dec2init_val_r) + lim_nxt_state = LIMIT_DONE; + else + lim_nxt_state = WAIT_WR_REQ; + end + end + LIMIT_DONE: begin + done = 1'b1; + ktap_right = 1'b0; + stg3_dec2init_val = 1'b0; + lim_nxt_state = IDLE; + end + default: begin + lim_nxt_state = IDLE; + end + endcase + end + + +endmodule //mig_7_series_v4_0_ddr_phy_ocd_lim + diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_mux.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_mux.v new file mode 100644 index 0000000..b1fa615 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_mux.v @@ -0,0 +1,207 @@ +//***************************************************************************** +// (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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version: %version +// \ \ Application: MIG +// / / Filename: ddr_phy_v4_0_phy_ocd_mux.v +// /___/ /\ Date Last Modified: $Date: 2011/02/25 02:07:40 $ +// \ \ / \ Date Created: Aug 03 2009 +// \___\/\___\ +// +//Device: 7 Series +//Design Name: DDR3 SDRAM +//Purpose: The limit block and the _po_cntlr block both manipulate +// the phaser out and the POC. This block muxes those commands +// together, and encapsulates logic required for meeting phaser +// setup and wait times. +// +//Reference: +//Revision History: +//***************************************************************************** + +`timescale 1ps/1ps + +module mig_7series_v4_0_ddr_phy_ocd_mux # + (parameter DQS_CNT_WIDTH = 3, + parameter DQS_WIDTH = 8, + parameter TCQ = 100) + (/*AUTOARG*/ + // Outputs + ktap_at_left_edge, ktap_at_right_edge, mmcm_edge_detect_rdy, + po_stg3_incdec, po_en_stg3, po_en_stg23, po_stg23_sel, + po_stg23_incdec, po_rdy, wl_po_fine_cnt_sel, oclk_prech_req, + // Inputs + clk, rst, ocd_ktap_right, ocd_ktap_left, lim2poc_ktap_right, + lim2poc_rdy, ocd_edge_detect_rdy, lim2stg2_inc, lim2stg2_dec, + lim2stg3_inc, lim2stg3_dec, ocd2stg2_inc, ocd2stg2_dec, + ocd_cntlr2stg2_dec, ocd2stg3_inc, ocd2stg3_dec, wl_po_fine_cnt, + oclkdelay_calib_cnt, lim2init_prech_req, ocd_prech_req + ); + + function integer clogb2 (input integer size); // ceiling logb2 + begin + size = size - 1; + for (clogb2=1; size>1; clogb2=clogb2+1) + size = size >> 1; + end + endfunction // clogb2 + + localparam PO_WAIT = 15; + localparam POW_WIDTH = clogb2(PO_WAIT); + localparam ONE = 1; + localparam TWO = 2; + + input clk; + input rst; + + input ocd_ktap_right, ocd_ktap_left; + input lim2poc_ktap_right; + output ktap_at_left_edge, ktap_at_right_edge; + assign ktap_at_left_edge = ocd_ktap_left; + assign ktap_at_right_edge = lim2poc_ktap_right || ocd_ktap_right; + + input lim2poc_rdy; + input ocd_edge_detect_rdy; + output mmcm_edge_detect_rdy; + assign mmcm_edge_detect_rdy = lim2poc_rdy || ocd_edge_detect_rdy; + + // po_stg3_incdec and po_en_stg3 are deprecated and should be removed. + output po_stg3_incdec; + output po_en_stg3; + assign po_stg3_incdec = 1'b0; + assign po_en_stg3 = 1'b0; + + + reg [1:0] po_setup_ns, po_setup_r; + always @(posedge clk) po_setup_r <= #TCQ po_setup_ns; + + input lim2stg2_inc; + input lim2stg2_dec; + + input lim2stg3_inc; + input lim2stg3_dec; + + input ocd2stg2_inc; + input ocd2stg2_dec; + input ocd_cntlr2stg2_dec; + + input ocd2stg3_inc; + input ocd2stg3_dec; + + wire setup_po = + lim2stg2_inc || lim2stg2_dec || lim2stg3_inc || lim2stg3_dec || + ocd2stg2_inc || ocd2stg2_dec || ocd2stg3_inc || ocd2stg3_dec || ocd_cntlr2stg2_dec; + + always @(*) begin + po_setup_ns = po_setup_r; + if (rst) po_setup_ns = 2'b00; + else if (setup_po) po_setup_ns = 2'b11; + else if (|po_setup_r) po_setup_ns = po_setup_r - 2'b01; + end + + reg po_en_stg23_r; + wire po_en_stg23_ns = ~rst && po_setup_r == 2'b01; + always @(posedge clk) po_en_stg23_r <= #TCQ po_en_stg23_ns; + output po_en_stg23; + assign po_en_stg23 = po_en_stg23_r; + + wire sel_stg3 = lim2stg3_inc || lim2stg3_dec || ocd2stg3_inc || ocd2stg3_dec; + + reg [POW_WIDTH-1:0] po_wait_r, po_wait_ns; + reg po_stg23_sel_r; + // Reset to zero at the end. Makes adjust stg2 at end of centering + // get the correct value of po_counter_read_val. + wire po_stg23_sel_ns = ~rst && (setup_po + ? sel_stg3 + ? 1'b1 + : 1'b0 + : po_stg23_sel_r && !(po_wait_r == ONE[POW_WIDTH-1:0])); + always @(posedge clk) po_stg23_sel_r <= #TCQ po_stg23_sel_ns; + output po_stg23_sel; + assign po_stg23_sel = po_stg23_sel_r; + + wire po_inc = lim2stg2_inc || lim2stg3_inc || ocd2stg2_inc || ocd2stg3_inc; + + reg po_stg23_incdec_r; + wire po_stg23_incdec_ns = ~rst && (setup_po ? po_inc ? 1'b1 : 1'b0 : po_stg23_incdec_r); + always @(posedge clk) po_stg23_incdec_r <= #TCQ po_stg23_incdec_ns; + output po_stg23_incdec; + assign po_stg23_incdec = po_stg23_incdec_r; + + + always @(posedge clk) po_wait_r <= #TCQ po_wait_ns; + always @(*) begin + po_wait_ns = po_wait_r; + if (rst) po_wait_ns = {POW_WIDTH{1'b0}}; + else if (po_en_stg23_r) po_wait_ns = PO_WAIT[POW_WIDTH-1:0] - ONE[POW_WIDTH-1:0]; + else if (po_wait_r != {POW_WIDTH{1'b0}}) po_wait_ns = po_wait_r - ONE[POW_WIDTH-1:0]; + end + + wire po_rdy_ns = ~(setup_po || |po_setup_r || |po_wait_ns); + reg po_rdy_r; + always @(posedge clk) po_rdy_r <= #TCQ po_rdy_ns; + + output po_rdy; + assign po_rdy = po_rdy_r; + + input [6*DQS_WIDTH-1:0] wl_po_fine_cnt; + input [DQS_CNT_WIDTH:0] oclkdelay_calib_cnt; + wire [6*DQS_WIDTH-1:0] wl_po_fine_shifted = wl_po_fine_cnt >> oclkdelay_calib_cnt*6; + output [5:0] wl_po_fine_cnt_sel; + assign wl_po_fine_cnt_sel = wl_po_fine_shifted[5:0]; + + input lim2init_prech_req; + input ocd_prech_req; + output oclk_prech_req; + assign oclk_prech_req = ocd_prech_req || lim2init_prech_req; + +endmodule // mig_7series_v4_0_ddr_phy_ocd_mux + diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v new file mode 100644 index 0000000..b1174d9 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v @@ -0,0 +1,594 @@ + +//***************************************************************************** +// (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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version: %version +// \ \ Application: MIG +// / / Filename: ddr_phy_v4_0_phy_ocd_po_cntlr.v +// /___/ /\ Date Last Modified: $Date: 2011/02/25 02:07:40 $ +// \ \ / \ Date Created: Aug 03 2009 +// \___\/\___\ +// +//Device: 7 Series +//Design Name: DDR3 SDRAM +//Purpose: Manipulates phaser out stg2f and stg3 on behalf of +// scan and DQS centering. +// +// Maintains a shadow of the phaser out stg2f and stg3 tap settings. +// The stg3 shadow is 6 bits, just like the phaser out. stg2f is +// 8 bits. This allows the po_cntlr to track how far past the stg2f +// saturation points we have gone when stepping to the limits of stg3. +// This way we're can stay in sync when we step back from the saturation +// limits. +// +// Looks at the edge values and determines which case has been +// detected by the scan. Uses the results to drive the centering. +// +// Main state machine waits until it sees reset_scan go to zero. While +// waiting it is writing the initialzation values to the stg2 and stg3 +// shadows. When reset_scan goes low, taps_set is pulsed. This +// tells the sampling block to begin sampling. When the sampling +// block has finished sampling this setting of the phaser out taps, +// is signals by setting samp_done. When the main state machine +// sees samp_done it sets the next value in the phaser out and +// waits for the phaser out to be ready before beginning the next +// sample. +// +// Turns out phy_init is sensitive to the length of the ocal_num_samples_done +// pulse. Something like a precharge and activate time. Added feature +// to resume_wait to wait at least 32 cycles between assertion and +// subsequent deassertion of ocal_num_samples_done. +// +// Also turns out phy_init needs help to get into consistent +// starting state for complex cal. This can be done by preseting +// ocal_num_samples_done to one. Then waiting for 32 fabric clocks, +// turn off _done and then assert _resume. +// +// Scanning algorithm. +// +// Phaser manipulation algoritm. +// +//Reference: +//Revision History: +//***************************************************************************** + +`timescale 1ps/1ps + +module mig_7series_v4_0_ddr_phy_ocd_po_cntlr # + (parameter DQS_CNT_WIDTH = 3, + parameter DQS_WIDTH = 8, + parameter nCK_PER_CLK = 4, + parameter SAMPLES = 128, + parameter TCQ = 100) + (/*AUTOARG*/ + // Outputs + scan_done, ocal_num_samples_done_r, oclkdelay_center_calib_start, + oclkdelay_center_calib_done, oclk_center_write_resume, ocd2stg2_inc, + ocd2stg2_dec, ocd2stg3_inc, ocd2stg3_dec, stg3, simp_stg3_final, + cmplx_stg3_final, simp_stg3_final_sel, ninety_offsets, + scanning_right, ocd_ktap_left, ocd_ktap_right, ocd_edge_detect_rdy, + taps_set, use_noise_window, ocal_scan_win_not_found, + // Inputs + clk, rst, reset_scan, oclkdelay_init_val, lim2ocal_stg3_right_lim, + lim2ocal_stg3_left_lim, complex_oclkdelay_calib_start, + po_counter_read_val, oclkdelay_calib_cnt, mmcm_edge_detect_done, + mmcm_lbclk_edge_aligned, poc_backup, phy_rddata_en_3, zero2fuzz, + fuzz2zero, oneeighty2fuzz, fuzz2oneeighty, z2f, f2z, o2f, f2o, + scan_right, samp_done, wl_po_fine_cnt_sel, po_rdy + ); + + function integer clogb2 (input integer size); // ceiling logb2 + begin + size = size - 1; + for (clogb2=1; size>1; clogb2=clogb2+1) + size = size >> 1; + end + endfunction // clogb2 + + input clk; + input rst; + + input reset_scan; + reg scan_done_r; + output scan_done; + assign scan_done = scan_done_r; + output [5:0] simp_stg3_final_sel; + + reg cmplx_samples_done_ns, cmplx_samples_done_r; + always @(posedge clk) cmplx_samples_done_r <= #TCQ cmplx_samples_done_ns; + output ocal_num_samples_done_r; + assign ocal_num_samples_done_r = cmplx_samples_done_r; + + // Write Level signals during OCLKDELAY calibration + input [5:0] oclkdelay_init_val; + input [5:0] lim2ocal_stg3_right_lim; + input [5:0] lim2ocal_stg3_left_lim; + + input complex_oclkdelay_calib_start; + + reg oclkdelay_center_calib_start_ns, oclkdelay_center_calib_start_r; + always @(posedge clk) oclkdelay_center_calib_start_r <= #TCQ oclkdelay_center_calib_start_ns; + output oclkdelay_center_calib_start; + assign oclkdelay_center_calib_start = oclkdelay_center_calib_start_r; + + reg oclkdelay_center_calib_done_ns, oclkdelay_center_calib_done_r; + always @(posedge clk) oclkdelay_center_calib_done_r <= #TCQ oclkdelay_center_calib_done_ns; + output oclkdelay_center_calib_done; + assign oclkdelay_center_calib_done = oclkdelay_center_calib_done_r; + + reg oclk_center_write_resume_ns, oclk_center_write_resume_r; + always @(posedge clk) oclk_center_write_resume_r <= #TCQ oclk_center_write_resume_ns; + output oclk_center_write_resume; + assign oclk_center_write_resume = oclk_center_write_resume_r; + + reg ocd2stg2_inc_r, ocd2stg2_dec_r, ocd2stg3_inc_r, ocd2stg3_dec_r; + output ocd2stg2_inc, ocd2stg2_dec, ocd2stg3_inc, ocd2stg3_dec; + assign ocd2stg2_inc = ocd2stg2_inc_r; + assign ocd2stg2_dec = ocd2stg2_dec_r; + assign ocd2stg3_inc = ocd2stg3_inc_r; + assign ocd2stg3_dec = ocd2stg3_dec_r; + + // Remember, two stage 2 steps for every stg 3 step. And we need a sign bit. + reg [8:0] stg2_ns, stg2_r; + always @(posedge clk) stg2_r <= #TCQ stg2_ns; + + reg [5:0] stg3_ns, stg3_r; + always @(posedge clk) stg3_r <= #TCQ stg3_ns; + output [5:0] stg3; + assign stg3 = stg3_r; + + input [5:0] wl_po_fine_cnt_sel; + + input [8:0] po_counter_read_val; + reg [5:0] po_counter_read_val_r; + always @(posedge clk) po_counter_read_val_r <= #TCQ po_counter_read_val[5:0]; + + reg [DQS_WIDTH*6-1:0] simp_stg3_final_ns, simp_stg3_final_r, cmplx_stg3_final_ns, cmplx_stg3_final_r; + always @(posedge clk) simp_stg3_final_r <= #TCQ simp_stg3_final_ns; + always @(posedge clk) cmplx_stg3_final_r <= #TCQ cmplx_stg3_final_ns; + output [DQS_WIDTH*6-1:0] simp_stg3_final, cmplx_stg3_final; + assign simp_stg3_final = simp_stg3_final_r; + assign cmplx_stg3_final = cmplx_stg3_final_r; + + input [DQS_CNT_WIDTH:0] oclkdelay_calib_cnt; + wire [DQS_WIDTH*6-1:0] simp_stg3_final_shft = simp_stg3_final_r >> oclkdelay_calib_cnt * 6; + assign simp_stg3_final_sel = simp_stg3_final_shft[5:0]; + wire [5:0] stg3_init = complex_oclkdelay_calib_start ? simp_stg3_final_sel : oclkdelay_init_val; + + wire signed [8:0] stg2_steps = stg3_r > stg3_init + ? -9'sd2 * $signed({3'b0, (stg3_r - stg3_init)}) + : 9'sd2 * $signed({3'b0, (stg3_init - stg3_r)}); + + wire signed [8:0] stg2_target_ns = $signed({3'b0, wl_po_fine_cnt_sel}) + stg2_steps; + reg signed [8:0] stg2_target_r; + always @ (posedge clk) stg2_target_r <= #TCQ stg2_target_ns; + + reg [5:0] stg2_final_ns, stg2_final_r; + always @(posedge clk) stg2_final_r <= #TCQ stg2_final_ns; + always @(*) stg2_final_ns = stg2_target_r[8] == 1'b1 + ? 6'd0 + : stg2_target_r > 9'd63 + ? 6'd63 + : stg2_target_r[5:0]; + + wire final_stg2_inc = stg2_final_r > po_counter_read_val_r; + wire final_stg2_dec = stg2_final_r < po_counter_read_val_r; + + wire left_lim = stg3_r == lim2ocal_stg3_left_lim; + wire right_lim = stg3_r == lim2ocal_stg3_right_lim; + + reg [1:0] ninety_offsets_ns, ninety_offsets_r; + always @(posedge clk) ninety_offsets_r <= #TCQ ninety_offsets_ns; + output [1:0] ninety_offsets; + assign ninety_offsets = ninety_offsets_r; + + reg scanning_right_ns, scanning_right_r; + always @(posedge clk) scanning_right_r <= #TCQ scanning_right_ns; + output scanning_right; + assign scanning_right = scanning_right_r; + + reg ocd_ktap_left_ns, ocd_ktap_left_r, ocd_ktap_right_ns, ocd_ktap_right_r; + always @(posedge clk) ocd_ktap_left_r <= #TCQ ocd_ktap_left_ns; + always @(posedge clk) ocd_ktap_right_r <= #TCQ ocd_ktap_right_ns; + output ocd_ktap_left, ocd_ktap_right; + assign ocd_ktap_left = ocd_ktap_left_r; + assign ocd_ktap_right = ocd_ktap_right_r; + + reg ocd_edge_detect_rdy_ns, ocd_edge_detect_rdy_r; + always @(posedge clk) ocd_edge_detect_rdy_r <= #TCQ ocd_edge_detect_rdy_ns; + output ocd_edge_detect_rdy; + assign ocd_edge_detect_rdy = ocd_edge_detect_rdy_r; + + input mmcm_edge_detect_done; + input mmcm_lbclk_edge_aligned; + input poc_backup; + reg poc_backup_ns, poc_backup_r; + always @(posedge clk) poc_backup_r <= #TCQ poc_backup_ns; + + reg taps_set_r; + output taps_set; + assign taps_set = taps_set_r; + + input phy_rddata_en_3; + + input [5:0] zero2fuzz, fuzz2zero, oneeighty2fuzz, fuzz2oneeighty; + input z2f, f2z, o2f, f2o; + + wire zero = f2z && z2f; + wire noise = z2f && f2o; + wire oneeighty = f2o && o2f; + + reg win_not_found; + reg [1:0] ninety_offsets_final_ns, ninety_offsets_final_r; + always @(posedge clk) ninety_offsets_final_r <= #TCQ ninety_offsets_final_ns; + reg [5:0] left, right, current_edge; + always @(*) begin + left = lim2ocal_stg3_left_lim; + right = lim2ocal_stg3_right_lim; + ninety_offsets_final_ns = 2'd0; + win_not_found = 1'b0; + if (zero) begin + left = fuzz2zero; + right = zero2fuzz; + end + else if (noise) begin + left = zero2fuzz; + right = fuzz2oneeighty; + ninety_offsets_final_ns = 2'd1; + end + else if (oneeighty) begin + left = fuzz2oneeighty; + right = oneeighty2fuzz; + ninety_offsets_final_ns = 2'd2; + end + else if (z2f) begin + right = zero2fuzz; + end + else if (f2o) begin + left = fuzz2oneeighty; + ninety_offsets_final_ns = 2'd2; + end + else if (f2z) begin + left = fuzz2zero; + end + else win_not_found = 1'b1; + current_edge = ocd_ktap_left_r ? left : right; + end // always @ begin + + output use_noise_window; + assign use_noise_window = ninety_offsets == 2'd1; + + reg ocal_scan_win_not_found_ns, ocal_scan_win_not_found_r; + always @(posedge clk) ocal_scan_win_not_found_r <= #TCQ ocal_scan_win_not_found_ns; + output ocal_scan_win_not_found; + assign ocal_scan_win_not_found = ocal_scan_win_not_found_r; + + wire inc_po_ns = current_edge > stg3_r; + wire dec_po_ns = current_edge < stg3_r; + reg inc_po_r, dec_po_r; + always @(posedge clk) inc_po_r <= #TCQ inc_po_ns; + always @(posedge clk) dec_po_r <= #TCQ dec_po_ns; + + input scan_right; + + wire left_stop = left_lim || scan_right; + wire right_stop = right_lim || o2f; + + // POC samples every other fabric clock. + localparam POC_SAMPLE_CLEAR_WAIT = SAMPLES * 2 > 15 ? SAMPLES * 2 : 15; + localparam MAX_RESUME_WAIT = POC_SAMPLE_CLEAR_WAIT > 31 ? POC_SAMPLE_CLEAR_WAIT : 31; + localparam RESUME_WAIT_WIDTH = clogb2(MAX_RESUME_WAIT + 1); + + reg [RESUME_WAIT_WIDTH-1:0] resume_wait_ns, resume_wait_r; + always @(posedge clk) resume_wait_r <= #TCQ resume_wait_ns; + + wire resume_wait = |resume_wait_r; + + reg po_done_ns, po_done_r; + always @(posedge clk) po_done_r <= #TCQ po_done_ns; + + input samp_done; + + input po_rdy; + + reg up_ns, up_r; + always @(posedge clk) up_r <= #TCQ up_ns; + + reg [1:0] two_ns, two_r; + always @(posedge clk) two_r <= #TCQ two_ns; + + +/* wire stg2_zero = ~|stg2_r; + wire [8:0] stg2_2_zero = stg2_r[8] ? 9'd0 + : stg2_r > 9'd63 + ? 9'd63 + : stg2_r; */ + + reg [3:0] sm_ns, sm_r; + always @(posedge clk) sm_r <= #TCQ sm_ns; + + reg phy_rddata_en_3_second_ns, phy_rddata_en_3_second_r; + always @(posedge clk) phy_rddata_en_3_second_r <= #TCQ phy_rddata_en_3_second_ns; + always @(*) phy_rddata_en_3_second_ns = ~reset_scan && (phy_rddata_en_3 + ? ~phy_rddata_en_3_second_r + : phy_rddata_en_3_second_r); + wire use_samp_done = nCK_PER_CLK == 2 ? phy_rddata_en_3 && phy_rddata_en_3_second_r : phy_rddata_en_3; + + reg po_center_wait; + reg po_slew; + reg po_finish_scan; + + always @(*) begin + + // Default next state assignments. + + cmplx_samples_done_ns = cmplx_samples_done_r; + cmplx_stg3_final_ns = cmplx_stg3_final_r; + scanning_right_ns = scanning_right_r; + ninety_offsets_ns = ninety_offsets_r; + ocal_scan_win_not_found_ns = ocal_scan_win_not_found_r; + ocd_edge_detect_rdy_ns = ocd_edge_detect_rdy_r; + ocd_ktap_left_ns = ocd_ktap_left_r; + ocd_ktap_right_ns = ocd_ktap_right_r; + ocd2stg2_inc_r = 1'b0; + ocd2stg2_dec_r = 1'b0; + ocd2stg3_inc_r = 1'b0; + ocd2stg3_dec_r = 1'b0; + oclkdelay_center_calib_start_ns = oclkdelay_center_calib_start_r; + oclkdelay_center_calib_done_ns = 1'b0; + oclk_center_write_resume_ns = oclk_center_write_resume_r; + po_center_wait = 1'b0; + po_done_ns = po_done_r; + po_finish_scan = 1'b0; + po_slew = 1'b0; + poc_backup_ns = poc_backup_r; + scan_done_r = 1'b0; + simp_stg3_final_ns = simp_stg3_final_r; + sm_ns = sm_r; + taps_set_r = 1'b0; + up_ns = up_r; + stg2_ns = stg2_r; + stg3_ns = stg3_r; + two_ns = two_r; + resume_wait_ns = resume_wait_r; + + if (rst == 1'b1) begin + + // RESET next states + cmplx_samples_done_ns = 1'b0; + ocal_scan_win_not_found_ns = 1'b0; + ocd_ktap_left_ns = 1'b0; + ocd_ktap_right_ns = 1'b0; + ocd_edge_detect_rdy_ns = 1'b0; + oclk_center_write_resume_ns = 1'b0; + oclkdelay_center_calib_start_ns = 1'b0; + po_done_ns = 1'b1; + resume_wait_ns = 5'd0; + sm_ns = /*AK("READY")*/4'd0; + + end else + + // State based actions and next states. + case (sm_r) + + /*AL("READY")*/4'd0:begin + poc_backup_ns = 1'b0; + stg2_ns = {3'b0, wl_po_fine_cnt_sel}; + stg3_ns = stg3_init; + scanning_right_ns = 1'b0; + if (complex_oclkdelay_calib_start) cmplx_samples_done_ns = 1'b1; + if (!reset_scan && ~resume_wait) begin + cmplx_samples_done_ns = 1'b0; + ocal_scan_win_not_found_ns = 1'b0; + taps_set_r = 1'b1; + sm_ns = /*AK("SAMPLING")*/4'd1; + end + end + + /*AL("SAMPLING")*/4'd1:begin + if (samp_done && use_samp_done) begin + if (complex_oclkdelay_calib_start) cmplx_samples_done_ns = 1'b1; + scanning_right_ns = scanning_right_r || left_stop; + if (right_stop && scanning_right_r) begin + oclkdelay_center_calib_start_ns = 1'b1; + ocd_ktap_left_ns = 1'b1; + ocal_scan_win_not_found_ns = win_not_found; + sm_ns = /*AK("SLEW_PO")*/4'd3; + end else begin + if (scanning_right_ns) ocd2stg3_inc_r = 1'b1; + else ocd2stg3_dec_r = 1'b1; + sm_ns = /*AK("PO_WAIT")*/4'd2; + end + end + end + + /*AL("PO_WAIT")*/4'd2:begin + if (po_done_r && ~resume_wait) begin + taps_set_r = 1'b1; + sm_ns = /*AK("SAMPLING")*/4'd1; + cmplx_samples_done_ns = 1'b0; + end + end + + /*AL("SLEW_PO")*/4'd3:begin + po_slew = 1'b1; + ninety_offsets_ns = |ninety_offsets_final_r ? 2'b01 : 2'b00; + if (~resume_wait) begin + if (po_done_r) begin + if (inc_po_r) ocd2stg3_inc_r = 1'b1; + else if (dec_po_r) ocd2stg3_dec_r = 1'b1; + else if (~resume_wait) begin + cmplx_samples_done_ns = 1'b0; + sm_ns = /*AK("ALIGN_EDGES")*/4'd4; + oclk_center_write_resume_ns = 1'b1; + end + end // if (po_done) + end + end // case: 3'd3 + + /*AL("ALIGN_EDGES")*/4'd4: + if (~resume_wait) begin + if (mmcm_edge_detect_done) begin + ocd_edge_detect_rdy_ns = 1'b0; + if (ocd_ktap_left_r) begin + ocd_ktap_left_ns = 1'b0; + ocd_ktap_right_ns = 1'b1; + oclk_center_write_resume_ns = 1'b0; + sm_ns = /*AK("SLEW_PO")*/4'd3; + end else if (ocd_ktap_right_r) begin + ocd_ktap_right_ns = 1'b0; + sm_ns = /*AK("WAIT_ONE")*/4'd5; + end else if (~mmcm_lbclk_edge_aligned) begin + sm_ns = /*AK("DQS_STOP_WAIT")*/4'd6; + oclk_center_write_resume_ns = 1'b0; + end else begin + if (ninety_offsets_r != ninety_offsets_final_r && ocd_edge_detect_rdy_r) begin + ninety_offsets_ns = ninety_offsets_r + 2'b01; + sm_ns = /*AK("WAIT_ONE")*/4'd5; + end else begin + oclk_center_write_resume_ns = 1'b0; + poc_backup_ns = poc_backup; +// stg2_ns = stg2_2_zero; + sm_ns = /*AK("FINISH_SCAN")*/4'd8; + end + end // else: !if(~mmcm_lbclk_edge_aligned) + end else ocd_edge_detect_rdy_ns = 1'b1; + end // if (~resume_wait) + + + /*AL("WAIT_ONE")*/4'd5: + sm_ns = /*AK("ALIGN_EDGES")*/4'd4; + + /*AL("DQS_STOP_WAIT")*/4'd6: + if (~resume_wait) begin + ocd2stg3_dec_r = 1'b1; + sm_ns = /*AK("CENTER_PO_WAIT")*/4'd7; + end + + /*AL("CENTER_PO_WAIT")*/4'd7: begin + po_center_wait = 1'b1; // Kludge to get around limitation of the AUTOs symbols. + if (po_done_r) begin + sm_ns = /*AK("ALIGN_EDGES")*/4'd4; + oclk_center_write_resume_ns = 1'b1; + end + end + + /*AL("FINISH_SCAN")*/4'd8: begin + po_finish_scan = 1'b1; + if (resume_wait_r == 5'd1) begin + if (~poc_backup_r) begin + oclkdelay_center_calib_done_ns = 1'b1; + oclkdelay_center_calib_start_ns = 1'b0; + end + end + if (~resume_wait) begin + if (po_rdy) + if (poc_backup_r) begin + ocd2stg3_inc_r = 1'b1; + poc_backup_ns = 1'b0; + end + else if (~final_stg2_inc && ~final_stg2_dec) begin + if (complex_oclkdelay_calib_start) cmplx_stg3_final_ns[oclkdelay_calib_cnt*6+:6] = stg3_r; + else simp_stg3_final_ns[oclkdelay_calib_cnt*6+:6] = stg3_r; + sm_ns = /*AK("READY")*/4'd0; + scan_done_r = 1'b1; + end else begin + ocd2stg2_inc_r = final_stg2_inc; + ocd2stg2_dec_r = final_stg2_dec; + end + end // if (~resume_wait) + end // case: 4'd8 + + endcase // case (sm_r) + + if (ocd2stg3_inc_r) begin + stg3_ns = stg3_r + 6'h1; + up_ns = 1'b0; + end + if (ocd2stg3_dec_r) begin + stg3_ns = stg3_r - 6'h1; + up_ns = 1'b1; + end + if (ocd2stg3_inc_r || ocd2stg3_dec_r) begin + po_done_ns = 1'b0; + two_ns = 2'b00; + end + + if (~po_done_r) + if (po_rdy) + if (two_r == 2'b10 || po_center_wait || po_slew || po_finish_scan) po_done_ns = 1'b1; + else begin + two_ns = two_r + 2'b1; + if (up_r) begin + stg2_ns = stg2_r + 9'b1; + if (stg2_r >= 9'd0 && stg2_r < 9'd63) ocd2stg2_inc_r = 1'b1; + end else begin + stg2_ns = stg2_r - 9'b1; + if (stg2_r > 9'd0 && stg2_r <= 9'd63) ocd2stg2_dec_r = 1'b1; + end + end // else: !if(two_r == 2'b10) + + if (ocd_ktap_left_ns && ~ocd_ktap_left_r) resume_wait_ns = 'b1; + else if (oclk_center_write_resume_ns && ~oclk_center_write_resume_r) + resume_wait_ns = POC_SAMPLE_CLEAR_WAIT[RESUME_WAIT_WIDTH-1:0]; + else if (~oclk_center_write_resume_ns && oclk_center_write_resume_r) resume_wait_ns = 'd15; + else if (cmplx_samples_done_ns & ~cmplx_samples_done_r || + complex_oclkdelay_calib_start & reset_scan || + poc_backup_r & ocd2stg3_inc_r) resume_wait_ns = 'd31; + else if (|resume_wait_r) resume_wait_ns = resume_wait_r - 'd1; + + end // always @ begin + +endmodule // mig_7series_v4_0_ddr_phy_ocd_po_cntlr + +// Local Variables: +// verilog-autolabel-prefix: "4'd" +// End: diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_samp.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_samp.v new file mode 100644 index 0000000..0f680be --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_ocd_samp.v @@ -0,0 +1,329 @@ +//***************************************************************************** +// (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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version: %version +// \ \ Application: MIG +// / / Filename: ddr_phy_v4_0_phy_ocd_samp.v +// /___/ /\ Date Last Modified: $Date: 2011/02/25 02:07:40 $ +// \ \ / \ Date Created: Aug 03 2009 +// \___\/\___\ +// +//Device: 7 Series +//Design Name: DDR3 SDRAM +//Purpose: Controls the number of samples and generates an aggregate +//sampling result. +// +// The following shows the nesting of the sampling loop. Nominally built +// to accomodate the "complex" sampling protocol. Adapted for use with +// "simple" samplng. +// +// simple complex +// +// samples OCAL_SIMPLE_SCAN_SAMPS 1 or 50 Depends on SIM_CAL_OPTION +// rd_victim_sel 0 0 to 7 +// data_cnt 1 157 +// +// First it collects comparison results provided on the +// two bit "match" bus. A particular phaser tap setting may be recorded one +// or many times depending on various parameter settings. +// The two bit match bus corresponds to comparisons for the +// zero or rising phase, and the oneeighty or falling phase. The "aggregate" +// starts out as NULL and then begins collecting comparison results +// when phy_rddata_en_1 is high. The first result is always set into +// the aggregate result. Subsequent results that match aggregate, don't +// make any change. Subsequent compare results that don't match cause the aggregate +// to turn to FUZZ. +// +// A "sample" is defined as a single DRAM burst for the simple step, and +// an entire 157 DRAM data bursts across the 8 victim bits for complex. +// +// Once all samples have been taken, the samp_result is computed by +// comparing the number of successful compares against the threshold. +// +// The second function is to track and control the number of samples. For +// "simple" data, the number of samples is set by OCAL_SIMPLE_SCAN_SAMPS. +// For "complex" data, nominally +// the complex data pattern consists of a sequence of 157 DRAM chunks. This +// sequence is run with each bit in the byte designated as the "victim". This sequence +// is repeated 50 times, although when SIM_CAL_OPTION is set to none "NONE", it is only +// repeated once. +// +// This block generates oclk_calib_resume. For the simple pattern, a single DRAM +// burst is returned For complex its 157 which indicates the start of the 157*50 +// sequence for a bit. samp_done is pulsed. +// +//Reference: +//Revision History: +//***************************************************************************** + +`timescale 1ps/1ps + +module mig_7series_v4_0_ddr_phy_ocd_samp # + (parameter nCK_PER_CLK = 4, + parameter OCAL_SIMPLE_SCAN_SAMPS = 2, + parameter SCAN_PCT_SAMPS_SOLID = 95, + parameter TCQ = 100, + parameter SIM_CAL_OPTION = "NONE") + (/*AUTOARG*/ + // Outputs + samp_done, oclk_calib_resume, rd_victim_sel, samp_result, + // Inputs + complex_oclkdelay_calib_start, clk, rst, reset_scan, + ocal_num_samples_inc, match, phy_rddata_en_1, taps_set, + phy_rddata_en_2 + ); + + function integer clogb2 (input integer size); // ceiling logb2 + begin + size = size - 1; + for (clogb2=1; size>1; clogb2=clogb2+1) + size = size >> 1; + end + endfunction // clogb2 + + localparam ONE = 1; + + localparam CMPLX_DATA_CNT = nCK_PER_CLK == 2 ? 157 * 2 : 157; + localparam SIMP_DATA_CNT = nCK_PER_CLK == 2 ? 2 : 1; + + localparam DATA_CNT_WIDTH = nCK_PER_CLK == 2 ? 9 : 8; + + localparam CMPLX_SAMPS = SIM_CAL_OPTION == "NONE" ? 50 : 1; + + // Plus one because were counting in natural numbers. + localparam SAMP_CNT_WIDTH = clogb2(OCAL_SIMPLE_SCAN_SAMPS > CMPLX_SAMPS + ? OCAL_SIMPLE_SCAN_SAMPS : CMPLX_SAMPS) + 1; + + // Remember SAMPLES is natural number counting. One corresponds to one sample. + localparam integer SIMP_SAMPS_SOLID_THRESH = OCAL_SIMPLE_SCAN_SAMPS * SCAN_PCT_SAMPS_SOLID * 0.01; + localparam integer SIMP_SAMPS_HALF_THRESH = SIMP_SAMPS_SOLID_THRESH/2; + localparam integer CMPLX_SAMPS_SOLID_THRESH = CMPLX_SAMPS * SCAN_PCT_SAMPS_SOLID * 0.01; + localparam integer CMPLX_SAMPS_HALF_THRESH = CMPLX_SAMPS_SOLID_THRESH/2; + + input complex_oclkdelay_calib_start; + + wire [SAMP_CNT_WIDTH-1:0] samples = complex_oclkdelay_calib_start + ? CMPLX_SAMPS[SAMP_CNT_WIDTH-1:0] + : OCAL_SIMPLE_SCAN_SAMPS[SAMP_CNT_WIDTH-1:0]; + + localparam [1:0] NULL = 2'b11, + FUZZ = 2'b00, + ONEEIGHTY = 2'b10, + ZERO = 2'b01; + + input clk; + input rst; + + input reset_scan; + + // Given the need to count phy_data_en, this is not useful. + input ocal_num_samples_inc; + + input [1:0] match; + + input phy_rddata_en_1; + + input taps_set; + + reg samp_done_ns, samp_done_r; + always @(posedge clk) samp_done_r <= #TCQ samp_done_ns; + output samp_done; + assign samp_done = samp_done_r; + + input phy_rddata_en_2; + wire samp_valid = samp_done_r && phy_rddata_en_2; + + reg [1:0] agg_samp_ns, agg_samp_r; + always @(posedge clk) agg_samp_r <= #TCQ agg_samp_ns; + + reg oclk_calib_resume_ns, oclk_calib_resume_r; + always @(posedge clk) oclk_calib_resume_r <= #TCQ oclk_calib_resume_ns; + output oclk_calib_resume; + assign oclk_calib_resume = oclk_calib_resume_r; + + // Complex data counting. + // Inner most loop. 157 phy_data_en. + reg [DATA_CNT_WIDTH-1:0] data_cnt_ns, data_cnt_r; + always @(posedge clk) data_cnt_r <= #TCQ data_cnt_ns; + + // Nominally, 50 samples of the above 157 phy_data_en. + reg [SAMP_CNT_WIDTH-1:0] samps_ns, samps_r; + always @(posedge clk) samps_r <= #TCQ samps_ns; + + // Step through the 8 bits in the byte. + reg [2:0] rd_victim_sel_ns, rd_victim_sel_r; + always @(posedge clk) rd_victim_sel_r <= #TCQ rd_victim_sel_ns; + output [2:0] rd_victim_sel; + assign rd_victim_sel = rd_victim_sel_r; + + reg [SAMP_CNT_WIDTH-1:0] zero_ns, zero_r, oneeighty_ns, oneeighty_r; + always @(posedge clk) zero_r <= #TCQ zero_ns; + always @(posedge clk) oneeighty_r <= #TCQ oneeighty_ns; + + wire [SAMP_CNT_WIDTH-1:0] samp_thresh = (complex_oclkdelay_calib_start + ? CMPLX_SAMPS_SOLID_THRESH[SAMP_CNT_WIDTH-1:0] + : SIMP_SAMPS_SOLID_THRESH[SAMP_CNT_WIDTH-1:0]); + + wire [SAMP_CNT_WIDTH-1:0] samp_half_thresh = (complex_oclkdelay_calib_start + ? CMPLX_SAMPS_HALF_THRESH[SAMP_CNT_WIDTH-1:0] + : SIMP_SAMPS_HALF_THRESH[SAMP_CNT_WIDTH-1:0]); + + wire zero_ge_thresh = zero_r >= samp_thresh; + wire zero_le_half_thresh = zero_r <= samp_half_thresh; + wire oneeighty_ge_thresh = oneeighty_r >= samp_thresh; + wire oneeighty_le_half_thresh = oneeighty_r <= samp_half_thresh; + + reg [1:0] samp_result_ns, samp_result_r; + always @(posedge clk) samp_result_r <= #TCQ samp_result_ns; + always @(*) + if (rst) samp_result_ns = 'b0; + else begin + samp_result_ns = samp_result_r; + if (samp_valid) begin + if (~samp_result_r[0] && zero_ge_thresh) samp_result_ns[0] = 'b1; + if (samp_result_r[0] && zero_le_half_thresh) samp_result_ns[0] = 'b0; + if (~samp_result_r[1] && oneeighty_ge_thresh) samp_result_ns[1] = 'b1; + if (samp_result_r[1] && oneeighty_le_half_thresh) samp_result_ns[1] = 'b0; + end + end + + output [1:0] samp_result; + assign samp_result = samp_result_ns; + + reg [0:0] sm_ns, sm_r; + always @(posedge clk) sm_r <= #TCQ sm_ns; + + wire [DATA_CNT_WIDTH-1:0] data_cnt = complex_oclkdelay_calib_start + ? CMPLX_DATA_CNT[DATA_CNT_WIDTH-1:0] + : SIMP_DATA_CNT[DATA_CNT_WIDTH-1:0]; + wire [2:0] rd_victim_end = complex_oclkdelay_calib_start ? 3'h7 : 3'h0; + wire data_end = data_cnt_r == ONE[DATA_CNT_WIDTH-1:0]; + wire samp_end = samps_r == ONE[SAMP_CNT_WIDTH-1:0]; + + // Primary state machine. + + always @(*) begin + + // Default next state assignments. + + agg_samp_ns = agg_samp_r; + data_cnt_ns = data_cnt_r; + oclk_calib_resume_ns = 1'b0; + oneeighty_ns = oneeighty_r; + rd_victim_sel_ns = rd_victim_sel_r; + samp_done_ns = samp_done_r; + samps_ns = samps_r; + sm_ns = sm_r; + zero_ns = zero_r; + + if (rst == 1'b1) begin + // RESET next states + sm_ns = /*AK("READY")*/1'd0; + + end else + + // State based actions and next states. + case (sm_r) + + /*AL("READY")*/1'd0:begin + agg_samp_ns = NULL; + data_cnt_ns = data_cnt; + oneeighty_ns = 'b0; + zero_ns = 'b0; + rd_victim_sel_ns = 3'b0; + samps_ns = complex_oclkdelay_calib_start ? CMPLX_SAMPS[SAMP_CNT_WIDTH-1:0] + : OCAL_SIMPLE_SCAN_SAMPS[SAMP_CNT_WIDTH-1:0]; + + + if (taps_set) begin + samp_done_ns = 1'b0; + sm_ns = /*AK("AWAITING_DATA")*/1'd1; + oclk_calib_resume_ns = 1'b1; + end + end + + /*AL("AWAITING_DATA")*/1'd1:begin + if (phy_rddata_en_1) begin + + case (agg_samp_r) + NULL : if (~&match) agg_samp_ns = match; + ZERO, ONEEIGHTY : if (~(agg_samp_r == match || &match)) agg_samp_ns = FUZZ; + FUZZ : ; + endcase // case (agg_samp_r) + + if (~data_end) data_cnt_ns = data_cnt_r - ONE[DATA_CNT_WIDTH-1:0]; + else begin + data_cnt_ns = data_cnt; + if (rd_victim_end != rd_victim_sel_r) rd_victim_sel_ns = rd_victim_sel_r + 3'h1; + else begin + rd_victim_sel_ns = 3'h0; + if (agg_samp_ns == ZERO) zero_ns = zero_r + ONE[SAMP_CNT_WIDTH-1:0]; + if (agg_samp_ns == ONEEIGHTY) oneeighty_ns = oneeighty_r + ONE[SAMP_CNT_WIDTH-1:0]; + agg_samp_ns = NULL; + if (~samp_end) samps_ns = samps_r - ONE[SAMP_CNT_WIDTH-1:0]; + else samp_done_ns = 1'b1; + end + end + + if (samp_done_ns) sm_ns = /*AK("READY")*/1'd0; + else oclk_calib_resume_ns = ~complex_oclkdelay_calib_start && data_end; + end + end + + endcase // case (sm_r) + end // always @ begin + + +endmodule // mig_7series_v4_0_ddr_phy_ocd_samp + +// Local Variables: +// verilog-autolabel-prefix: "1'd" +// End: diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_oclkdelay_cal.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_oclkdelay_cal.v new file mode 100644 index 0000000..e3a998f --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_oclkdelay_cal.v @@ -0,0 +1,552 @@ +//***************************************************************************** +// (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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version: %version +// \ \ Application: MIG +// / / Filename: ddr_phy_oclkdelay_cal.v +// /___/ /\ Date Last Modified: $Date: 2011/02/25 02:07:40 $ +// \ \ / \ Date Created: Aug 03 2009 +// \___\/\___\ +// +//Device: 7 Series +//Design Name: DDR3 SDRAM +//Purpose: Center write DQS in write DQ valid window using Phaser_Out Stage3 +// delay +//Reference: +//Revision History: +//***************************************************************************** + +`timescale 1ps/1ps + +module mig_7series_v4_0_ddr_phy_oclkdelay_cal # + (parameter TCQ = 100, + parameter nCK_PER_CLK = 4, + parameter DRAM_WIDTH = 8, + parameter DQS_CNT_WIDTH = 3, + parameter DQS_WIDTH = 8, + parameter DQ_WIDTH = 64, + parameter MMCM_SAMP_WAIT = 10, + parameter OCAL_SIMPLE_SCAN_SAMPS = 2, + parameter PCT_SAMPS_SOLID = 95, + parameter POC_USE_METASTABLE_SAMP = "FALSE", + parameter SCAN_PCT_SAMPS_SOLID = 95, + parameter SIM_CAL_OPTION = "NONE", + parameter SAMPCNTRWIDTH = 8, + parameter SAMPLES = 128, + parameter TAPCNTRWIDTH = 7, + parameter TAPSPERKCLK = 56, + parameter BYPASS_COMPLEX_OCAL = "FALSE") + (/*AUTOARG*/ + // Outputs + wrlvl_final, rd_victim_sel, psincdec, psen, poc_error, po_stg23_sel, + po_stg23_incdec, po_en_stg23, oclkdelay_center_calib_start, + oclkdelay_center_calib_done, oclk_prech_req, + oclk_center_write_resume, oclk_calib_resume, + ocal_num_samples_done_r, lim2init_write_request, dbg_poc, + complex_wrlvl_final, complex_oclkdelay_calib_done, + oclkdelay_calib_cnt, dbg_phy_oclkdelay_cal, dbg_oclkdelay_rd_data, + oclkdelay_calib_done, lim_done, dbg_ocd_lim, + // Inputs + wl_po_fine_cnt, rst, psdone, prech_done, prbs_o, + prbs_ignore_last_bytes, prbs_ignore_first_byte, poc_sample_pd, + po_counter_read_val, phy_rddata_en, phy_rddata, oclkdelay_init_val, + oclkdelay_calib_start, ocal_num_samples_inc, metaQ, + complex_oclkdelay_calib_start, clk + ); + + /*AUTOINPUT*/ + // Beginning of automatic inputs (from unused autoinst inputs) + input clk; // To u_ocd_lim of mig_7series_v4_0_ddr_phy_ocd_lim.v, ... + input complex_oclkdelay_calib_start;// To u_ocd_data of mig_7series_v4_0_ddr_phy_ocd_data.v, ... + input metaQ; // To u_poc of mig_7series_v4_0_poc_top.v + input ocal_num_samples_inc; // To u_ocd_samp of mig_7series_v4_0_ddr_phy_ocd_samp.v + input oclkdelay_calib_start; // To u_ocd_cntlr of mig_7series_v4_0_ddr_phy_ocd_cntlr.v + input [5:0] oclkdelay_init_val; // To u_ocd_lim of mig_7series_v4_0_ddr_phy_ocd_lim.v, ... + input [2*nCK_PER_CLK*DQ_WIDTH-1:0] phy_rddata;// To u_ocd_data of mig_7series_v4_0_ddr_phy_ocd_data.v + input phy_rddata_en; // To u_ocd_cntlr of mig_7series_v4_0_ddr_phy_ocd_cntlr.v + input [8:0] po_counter_read_val; // To u_ocd_cntlr of mig_7series_v4_0_ddr_phy_ocd_cntlr.v, ... + input poc_sample_pd; // To u_poc of mig_7series_v4_0_poc_top.v + input prbs_ignore_first_byte; // To u_ocd_data of mig_7series_v4_0_ddr_phy_ocd_data.v + input prbs_ignore_last_bytes; // To u_ocd_data of mig_7series_v4_0_ddr_phy_ocd_data.v + input [2*nCK_PER_CLK*DQ_WIDTH-1:0] prbs_o; // To u_ocd_data of mig_7series_v4_0_ddr_phy_ocd_data.v + input prech_done; // To u_ocd_lim of mig_7series_v4_0_ddr_phy_ocd_lim.v, ... + input psdone; // To u_poc of mig_7series_v4_0_poc_top.v + input rst; // To u_ocd_lim of mig_7series_v4_0_ddr_phy_ocd_lim.v, ... + input [6*DQS_WIDTH-1:0] wl_po_fine_cnt; // To u_ocd_mux of mig_7series_v4_0_ddr_phy_ocd_mux.v + // End of automatics + /*AUTOOUTPUT*/ + // Beginning of automatic outputs (from unused autoinst outputs) + output complex_oclkdelay_calib_done;// From u_ocd_cntlr of mig_7series_v4_0_ddr_phy_ocd_cntlr.v + output complex_wrlvl_final; // From u_ocd_cntlr of mig_7series_v4_0_ddr_phy_ocd_cntlr.v + output [1023:0] dbg_poc; // From u_poc of mig_7series_v4_0_poc_top.v + output lim2init_write_request; // From u_ocd_lim of mig_7series_v4_0_ddr_phy_ocd_lim.v + output ocal_num_samples_done_r;// From u_ocd_po_cntlr of mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v + output oclk_calib_resume; // From u_ocd_samp of mig_7series_v4_0_ddr_phy_ocd_samp.v + output oclk_center_write_resume;// From u_ocd_po_cntlr of mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v + output oclk_prech_req; // From u_ocd_mux of mig_7series_v4_0_ddr_phy_ocd_mux.v + output oclkdelay_center_calib_done;// From u_ocd_po_cntlr of mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v + output oclkdelay_center_calib_start;// From u_ocd_po_cntlr of mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v + output po_en_stg23; // From u_ocd_mux of mig_7series_v4_0_ddr_phy_ocd_mux.v + output po_stg23_incdec; // From u_ocd_mux of mig_7series_v4_0_ddr_phy_ocd_mux.v + output po_stg23_sel; // From u_ocd_mux of mig_7series_v4_0_ddr_phy_ocd_mux.v + output poc_error; // From u_poc of mig_7series_v4_0_poc_top.v + output psen; // From u_poc of mig_7series_v4_0_poc_top.v + output psincdec; // From u_poc of mig_7series_v4_0_poc_top.v + output [2:0] rd_victim_sel; // From u_ocd_samp of mig_7series_v4_0_ddr_phy_ocd_samp.v + output wrlvl_final; // From u_ocd_cntlr of mig_7series_v4_0_ddr_phy_ocd_cntlr.v + // End of automatics + /*AUTOWIRE*/ + // Beginning of automatic wires (for undeclared instantiated-module outputs) + wire f2o; // From u_ocd_edge of mig_7series_v4_0_ddr_phy_ocd_edge.v + wire f2z; // From u_ocd_edge of mig_7series_v4_0_ddr_phy_ocd_edge.v + wire [5:0] fuzz2oneeighty; // From u_ocd_edge of mig_7series_v4_0_ddr_phy_ocd_edge.v + wire [5:0] fuzz2zero; // From u_ocd_edge of mig_7series_v4_0_ddr_phy_ocd_edge.v + wire ktap_at_left_edge; // From u_ocd_mux of mig_7series_v4_0_ddr_phy_ocd_mux.v + wire ktap_at_right_edge; // From u_ocd_mux of mig_7series_v4_0_ddr_phy_ocd_mux.v + wire lim2init_prech_req; // From u_ocd_lim of mig_7series_v4_0_ddr_phy_ocd_lim.v + wire [5:0] lim2ocal_stg3_left_lim; // From u_ocd_lim of mig_7series_v4_0_ddr_phy_ocd_lim.v + wire [5:0] lim2ocal_stg3_right_lim;// From u_ocd_lim of mig_7series_v4_0_ddr_phy_ocd_lim.v + wire lim2poc_ktap_right; // From u_ocd_lim of mig_7series_v4_0_ddr_phy_ocd_lim.v + wire lim2poc_rdy; // From u_ocd_lim of mig_7series_v4_0_ddr_phy_ocd_lim.v + wire lim2stg2_dec; // From u_ocd_lim of mig_7series_v4_0_ddr_phy_ocd_lim.v + wire lim2stg2_inc; // From u_ocd_lim of mig_7series_v4_0_ddr_phy_ocd_lim.v + wire lim2stg3_dec; // From u_ocd_lim of mig_7series_v4_0_ddr_phy_ocd_lim.v + wire lim2stg3_inc; // From u_ocd_lim of mig_7series_v4_0_ddr_phy_ocd_lim.v + wire lim_start; // From u_ocd_cntlr of mig_7series_v4_0_ddr_phy_ocd_cntlr.v + wire [1:0] match; // From u_ocd_data of mig_7series_v4_0_ddr_phy_ocd_data.v + wire mmcm_edge_detect_done; // From u_poc of mig_7series_v4_0_poc_top.v + wire mmcm_edge_detect_rdy; // From u_ocd_mux of mig_7series_v4_0_ddr_phy_ocd_mux.v + wire mmcm_lbclk_edge_aligned;// From u_poc of mig_7series_v4_0_poc_top.v + wire [1:0] ninety_offsets; // From u_ocd_po_cntlr of mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v + wire o2f; // From u_ocd_edge of mig_7series_v4_0_ddr_phy_ocd_edge.v + wire ocd2stg2_dec; // From u_ocd_po_cntlr of mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v + wire ocd2stg2_inc; // From u_ocd_po_cntlr of mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v + wire ocd2stg3_dec; // From u_ocd_po_cntlr of mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v + wire ocd2stg3_inc; // From u_ocd_po_cntlr of mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v + wire ocd_cntlr2stg2_dec; // From u_ocd_cntlr of mig_7series_v4_0_ddr_phy_ocd_cntlr.v + wire ocd_edge_detect_rdy; // From u_ocd_po_cntlr of mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v + wire ocd_ktap_left; // From u_ocd_po_cntlr of mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v + wire ocd_ktap_right; // From u_ocd_po_cntlr of mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v + wire ocd_prech_req; // From u_ocd_cntlr of mig_7series_v4_0_ddr_phy_ocd_cntlr.v + wire [5:0] oneeighty2fuzz; // From u_ocd_edge of mig_7series_v4_0_ddr_phy_ocd_edge.v + wire phy_rddata_en_1; // From u_ocd_cntlr of mig_7series_v4_0_ddr_phy_ocd_cntlr.v + wire phy_rddata_en_2; // From u_ocd_cntlr of mig_7series_v4_0_ddr_phy_ocd_cntlr.v + wire phy_rddata_en_3; // From u_ocd_cntlr of mig_7series_v4_0_ddr_phy_ocd_cntlr.v + wire po_rdy; // From u_ocd_mux of mig_7series_v4_0_ddr_phy_ocd_mux.v + wire poc_backup; // From u_poc of mig_7series_v4_0_poc_top.v + wire reset_scan; // From u_ocd_cntlr of mig_7series_v4_0_ddr_phy_ocd_cntlr.v + wire [TAPCNTRWIDTH-1:0] rise_lead_right; // From u_poc of mig_7series_v4_0_poc_top.v + wire [TAPCNTRWIDTH-1:0] rise_trail_right; // From u_poc of mig_7series_v4_0_poc_top.v + wire samp_done; // From u_ocd_samp of mig_7series_v4_0_ddr_phy_ocd_samp.v + wire [1:0] samp_result; // From u_ocd_samp of mig_7series_v4_0_ddr_phy_ocd_samp.v + wire scan_done; // From u_ocd_po_cntlr of mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v + wire scan_right; // From u_ocd_edge of mig_7series_v4_0_ddr_phy_ocd_edge.v + wire scanning_right; // From u_ocd_po_cntlr of mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v + wire [5:0] simp_stg3_final_sel; // From u_ocd_po_cntlr of mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v + wire [5:0] stg3; // From u_ocd_po_cntlr of mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v + wire taps_set; // From u_ocd_po_cntlr of mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v + wire use_noise_window; // From u_ocd_po_cntlr of mig_7series_v4_0_ddr_phy_ocd_po_cntlr.v + wire [5:0] wl_po_fine_cnt_sel; // From u_ocd_mux of mig_7series_v4_0_ddr_phy_ocd_mux.v + wire z2f; // From u_ocd_edge of mig_7series_v4_0_ddr_phy_ocd_edge.v + wire [5:0] zero2fuzz; // From u_ocd_edge of mig_7series_v4_0_ddr_phy_ocd_edge.v + // End of automatics + wire [DQS_WIDTH*6-1:0] simp_stg3_final, cmplx_stg3_final; + wire ocal_scan_win_not_found; + + + output [DQS_CNT_WIDTH:0] oclkdelay_calib_cnt; + output [255:0] dbg_phy_oclkdelay_cal; + output [16*DRAM_WIDTH-1:0] dbg_oclkdelay_rd_data; + output oclkdelay_calib_done; + + output lim_done; + output [255:0] dbg_ocd_lim; + + // Debug signals + assign dbg_phy_oclkdelay_cal[0] = f2o; + assign dbg_phy_oclkdelay_cal[1] = f2z; + assign dbg_phy_oclkdelay_cal[2] = o2f; + assign dbg_phy_oclkdelay_cal[3] = z2f; + assign dbg_phy_oclkdelay_cal[4+:6] = fuzz2oneeighty; + assign dbg_phy_oclkdelay_cal[10+:6] = fuzz2zero; + assign dbg_phy_oclkdelay_cal[16+:6] = oneeighty2fuzz; + assign dbg_phy_oclkdelay_cal[22+:6] = zero2fuzz; + assign dbg_phy_oclkdelay_cal[28+:3] = oclkdelay_calib_cnt; + assign dbg_phy_oclkdelay_cal[31] = oclkdelay_calib_start; + assign dbg_phy_oclkdelay_cal[32] = lim_done; + assign dbg_phy_oclkdelay_cal[33+:6] =lim2ocal_stg3_left_lim ; + assign dbg_phy_oclkdelay_cal[39+:6] = lim2ocal_stg3_right_lim ; + assign dbg_phy_oclkdelay_cal[45+:8] = po_counter_read_val[8:0]; + assign dbg_phy_oclkdelay_cal[53+:54] = simp_stg3_final[DQS_WIDTH*6-1:0]; + assign dbg_phy_oclkdelay_cal[107] = ocal_scan_win_not_found; + assign dbg_phy_oclkdelay_cal[108] = oclkdelay_center_calib_start; + assign dbg_phy_oclkdelay_cal[109] = oclkdelay_center_calib_done; + assign dbg_phy_oclkdelay_cal[115:110] = stg3[5:0]; + + /*mig_7series_v4_0_ddr_phy_ocd_lim AUTO_TEMPLATE( + .TDQSS_DEGREES (), + .wl_po_fine_cnt (wl_po_fine_cnt_sel[5:0]), + .poc2lim_detect_done (mmcm_edge_detect_done), + .poc2lim_fall_align_taps_.* ({TAPCNTRWIDTH{1'b0}}), + .poc2lim_rise_align_taps_lead (rise_lead_right), + .poc2lim_rise_align_taps_trail (rise_trail_right),); */ + + mig_7series_v4_0_ddr_phy_ocd_lim # + (/*AUTOINSTPARAM*/ + // Parameters + .BYPASS_COMPLEX_OCAL (BYPASS_COMPLEX_OCAL), + .DQS_CNT_WIDTH (DQS_CNT_WIDTH), + .DQS_WIDTH (DQS_WIDTH), + .TAPCNTRWIDTH (TAPCNTRWIDTH), + .TAPSPERKCLK (TAPSPERKCLK), + .TCQ (TCQ), + .TDQSS_DEGREES ()) // Templated + u_ocd_lim + (/*AUTOINST*/ + // Outputs + .dbg_ocd_lim (dbg_ocd_lim[255:0]), + .lim2init_prech_req (lim2init_prech_req), + .lim2init_write_request (lim2init_write_request), + .lim2ocal_stg3_left_lim (lim2ocal_stg3_left_lim[5:0]), + .lim2ocal_stg3_right_lim (lim2ocal_stg3_right_lim[5:0]), + .lim2poc_ktap_right (lim2poc_ktap_right), + .lim2poc_rdy (lim2poc_rdy), + .lim2stg2_dec (lim2stg2_dec), + .lim2stg2_inc (lim2stg2_inc), + .lim2stg3_dec (lim2stg3_dec), + .lim2stg3_inc (lim2stg3_inc), + .lim_done (lim_done), + // Inputs + .clk (clk), + .lim_start (lim_start), + .oclkdelay_calib_cnt (oclkdelay_calib_cnt[DQS_CNT_WIDTH:0]), + .oclkdelay_calib_done (oclkdelay_calib_done), + .oclkdelay_init_val (oclkdelay_init_val[5:0]), + .po_rdy (po_rdy), + .poc2lim_detect_done (mmcm_edge_detect_done), // Templated + .poc2lim_fall_align_taps_lead ({TAPCNTRWIDTH{1'b0}}), // Templated + .poc2lim_fall_align_taps_trail ({TAPCNTRWIDTH{1'b0}}), // Templated + .poc2lim_rise_align_taps_lead (rise_lead_right), // Templated + .poc2lim_rise_align_taps_trail (rise_trail_right), // Templated + .prech_done (prech_done), + .rst (rst), + .simp_stg3_final_sel (simp_stg3_final_sel[5:0]), + .wl_po_fine_cnt (wl_po_fine_cnt_sel[5:0])); // Templated + + /*mig_7series_v4_0_poc_top AUTO_TEMPLATE( + .CCENABLE (0), + .LANE_CNT_WIDTH (DQS_CNT_WIDTH), + .SCANFROMRIGHT (1), + .lane (oclkdelay_calib_cnt[DQS_CNT_WIDTH-1:0]), + .pd_out (metaQ),); */ + + mig_7series_v4_0_poc_top # + (/*AUTOINSTPARAM*/ + // Parameters + .CCENABLE (0), // Templated + .LANE_CNT_WIDTH (DQS_CNT_WIDTH), // Templated + .MMCM_SAMP_WAIT (MMCM_SAMP_WAIT), + .PCT_SAMPS_SOLID (PCT_SAMPS_SOLID), + .POC_USE_METASTABLE_SAMP (POC_USE_METASTABLE_SAMP), + .SAMPCNTRWIDTH (SAMPCNTRWIDTH), + .SAMPLES (SAMPLES), + .SCANFROMRIGHT (1), // Templated + .TAPCNTRWIDTH (TAPCNTRWIDTH), + .TAPSPERKCLK (TAPSPERKCLK), + .TCQ (TCQ)) + u_poc + (/*AUTOINST*/ + // Outputs + .dbg_poc (dbg_poc[1023:0]), + .mmcm_edge_detect_done (mmcm_edge_detect_done), + .mmcm_lbclk_edge_aligned (mmcm_lbclk_edge_aligned), + .poc_backup (poc_backup), + .poc_error (poc_error), + .psen (psen), + .psincdec (psincdec), + .rise_lead_right (rise_lead_right[TAPCNTRWIDTH-1:0]), + .rise_trail_right (rise_trail_right[TAPCNTRWIDTH-1:0]), + // Inputs + .clk (clk), + .ktap_at_left_edge (ktap_at_left_edge), + .ktap_at_right_edge (ktap_at_right_edge), + .lane (oclkdelay_calib_cnt[DQS_CNT_WIDTH-1:0]), // Templated + .mmcm_edge_detect_rdy (mmcm_edge_detect_rdy), + .ninety_offsets (ninety_offsets[1:0]), + .pd_out (metaQ), // Templated + .poc_sample_pd (poc_sample_pd), + .psdone (psdone), + .rst (rst), + .use_noise_window (use_noise_window)); + + /*mig_7series_v4_0_ddr_phy_ocd_mux AUTO_TEMPLATE( + .po_stg3_incdec (), + .po_en_stg3 (),); */ + + mig_7series_v4_0_ddr_phy_ocd_mux # + (/*AUTOINSTPARAM*/ + // Parameters + .DQS_CNT_WIDTH (DQS_CNT_WIDTH), + .DQS_WIDTH (DQS_WIDTH), + .TCQ (TCQ)) + u_ocd_mux + (/*AUTOINST*/ + // Outputs + .ktap_at_left_edge (ktap_at_left_edge), + .ktap_at_right_edge (ktap_at_right_edge), + .mmcm_edge_detect_rdy (mmcm_edge_detect_rdy), + .oclk_prech_req (oclk_prech_req), + .po_en_stg23 (po_en_stg23), + .po_en_stg3 (), // Templated + .po_rdy (po_rdy), + .po_stg23_incdec (po_stg23_incdec), + .po_stg23_sel (po_stg23_sel), + .po_stg3_incdec (), // Templated + .wl_po_fine_cnt_sel (wl_po_fine_cnt_sel[5:0]), + // Inputs + .clk (clk), + .lim2init_prech_req (lim2init_prech_req), + .lim2poc_ktap_right (lim2poc_ktap_right), + .lim2poc_rdy (lim2poc_rdy), + .lim2stg2_dec (lim2stg2_dec), + .lim2stg2_inc (lim2stg2_inc), + .lim2stg3_dec (lim2stg3_dec), + .lim2stg3_inc (lim2stg3_inc), + .ocd2stg2_dec (ocd2stg2_dec), + .ocd2stg2_inc (ocd2stg2_inc), + .ocd2stg3_dec (ocd2stg3_dec), + .ocd2stg3_inc (ocd2stg3_inc), + .ocd_cntlr2stg2_dec (ocd_cntlr2stg2_dec), + .ocd_edge_detect_rdy (ocd_edge_detect_rdy), + .ocd_ktap_left (ocd_ktap_left), + .ocd_ktap_right (ocd_ktap_right), + .ocd_prech_req (ocd_prech_req), + .oclkdelay_calib_cnt (oclkdelay_calib_cnt[DQS_CNT_WIDTH:0]), + .rst (rst), + .wl_po_fine_cnt (wl_po_fine_cnt[6*DQS_WIDTH-1:0])); + + mig_7series_v4_0_ddr_phy_ocd_data # + (/*AUTOINSTPARAM*/ + // Parameters + .DQS_CNT_WIDTH (DQS_CNT_WIDTH), + .DQ_WIDTH (DQ_WIDTH), + .TCQ (TCQ), + .nCK_PER_CLK (nCK_PER_CLK)) + u_ocd_data + (/*AUTOINST*/ + // Outputs + .match (match[1:0]), + // Inputs + .clk (clk), + .complex_oclkdelay_calib_start (complex_oclkdelay_calib_start), + .oclkdelay_calib_cnt (oclkdelay_calib_cnt[DQS_CNT_WIDTH:0]), + .phy_rddata (phy_rddata[2*nCK_PER_CLK*DQ_WIDTH-1:0]), + .phy_rddata_en_1 (phy_rddata_en_1), + .prbs_ignore_first_byte (prbs_ignore_first_byte), + .prbs_ignore_last_bytes (prbs_ignore_last_bytes), + .prbs_o (prbs_o[2*nCK_PER_CLK*DQ_WIDTH-1:0]), + .rst (rst)); + + mig_7series_v4_0_ddr_phy_ocd_samp # + (/*AUTOINSTPARAM*/ + // Parameters + .OCAL_SIMPLE_SCAN_SAMPS (OCAL_SIMPLE_SCAN_SAMPS), + .SCAN_PCT_SAMPS_SOLID (SCAN_PCT_SAMPS_SOLID), + .SIM_CAL_OPTION (SIM_CAL_OPTION), + .TCQ (TCQ), + .nCK_PER_CLK (nCK_PER_CLK)) + u_ocd_samp + (/*AUTOINST*/ + // Outputs + .oclk_calib_resume (oclk_calib_resume), + .rd_victim_sel (rd_victim_sel[2:0]), + .samp_done (samp_done), + .samp_result (samp_result[1:0]), + // Inputs + .clk (clk), + .complex_oclkdelay_calib_start (complex_oclkdelay_calib_start), + .match (match[1:0]), + .ocal_num_samples_inc (ocal_num_samples_inc), + .phy_rddata_en_1 (phy_rddata_en_1), + .phy_rddata_en_2 (phy_rddata_en_2), + .reset_scan (reset_scan), + .rst (rst), + .taps_set (taps_set)); + + mig_7series_v4_0_ddr_phy_ocd_edge # + (/*AUTOINSTPARAM*/ + // Parameters + .TCQ (TCQ)) + u_ocd_edge + (/*AUTOINST*/ + // Outputs + .f2o (f2o), + .f2z (f2z), + .fuzz2oneeighty (fuzz2oneeighty[5:0]), + .fuzz2zero (fuzz2zero[5:0]), + .o2f (o2f), + .oneeighty2fuzz (oneeighty2fuzz[5:0]), + .scan_right (scan_right), + .z2f (z2f), + .zero2fuzz (zero2fuzz[5:0]), + // Inputs + .clk (clk), + .phy_rddata_en_2 (phy_rddata_en_2), + .reset_scan (reset_scan), + .samp_done (samp_done), + .samp_result (samp_result[1:0]), + .scanning_right (scanning_right), + .stg3 (stg3[5:0])); + + /*mig_7series_v4_0_ddr_phy_ocd_cntlr AUTO_TEMPLATE( + .oclk_init_delay_done (),); */ + + mig_7series_v4_0_ddr_phy_ocd_cntlr # + (/*AUTOINSTPARAM*/ + // Parameters + .DQS_CNT_WIDTH (DQS_CNT_WIDTH), + .DQS_WIDTH (DQS_WIDTH), + .TCQ (TCQ)) + u_ocd_cntlr + (/*AUTOINST*/ + // Outputs + .complex_oclkdelay_calib_done (complex_oclkdelay_calib_done), + .complex_wrlvl_final (complex_wrlvl_final), + .lim_start (lim_start), + .ocd_cntlr2stg2_dec (ocd_cntlr2stg2_dec), + .ocd_prech_req (ocd_prech_req), + .oclk_init_delay_done (), // Templated + .oclkdelay_calib_cnt (oclkdelay_calib_cnt[DQS_CNT_WIDTH:0]), + .oclkdelay_calib_done (oclkdelay_calib_done), + .phy_rddata_en_1 (phy_rddata_en_1), + .phy_rddata_en_2 (phy_rddata_en_2), + .phy_rddata_en_3 (phy_rddata_en_3), + .reset_scan (reset_scan), + .wrlvl_final (wrlvl_final), + // Inputs + .clk (clk), + .complex_oclkdelay_calib_start (complex_oclkdelay_calib_start), + .lim_done (lim_done), + .oclkdelay_calib_start (oclkdelay_calib_start), + .phy_rddata_en (phy_rddata_en), + .po_counter_read_val (po_counter_read_val[8:0]), + .po_rdy (po_rdy), + .prech_done (prech_done), + .rst (rst), + .scan_done (scan_done)); + + + mig_7series_v4_0_ddr_phy_ocd_po_cntlr # + (/*AUTOINSTPARAM*/ + // Parameters + .DQS_CNT_WIDTH (DQS_CNT_WIDTH), + .DQS_WIDTH (DQS_WIDTH), + .SAMPLES (SAMPLES), + .TCQ (TCQ), + .nCK_PER_CLK (nCK_PER_CLK)) + u_ocd_po_cntlr + (.cmplx_stg3_final (cmplx_stg3_final[DQS_WIDTH*6-1:0]), + .ocal_scan_win_not_found (ocal_scan_win_not_found), + .simp_stg3_final (simp_stg3_final[DQS_WIDTH*6-1:0]), + /*AUTOINST*/ + // Outputs + .ninety_offsets (ninety_offsets[1:0]), + .ocal_num_samples_done_r (ocal_num_samples_done_r), + .ocd2stg2_dec (ocd2stg2_dec), + .ocd2stg2_inc (ocd2stg2_inc), + .ocd2stg3_dec (ocd2stg3_dec), + .ocd2stg3_inc (ocd2stg3_inc), + .ocd_edge_detect_rdy (ocd_edge_detect_rdy), + .ocd_ktap_left (ocd_ktap_left), + .ocd_ktap_right (ocd_ktap_right), + .oclk_center_write_resume (oclk_center_write_resume), + .oclkdelay_center_calib_done (oclkdelay_center_calib_done), + .oclkdelay_center_calib_start (oclkdelay_center_calib_start), + .scan_done (scan_done), + .scanning_right (scanning_right), + .simp_stg3_final_sel (simp_stg3_final_sel[5:0]), + .stg3 (stg3[5:0]), + .taps_set (taps_set), + .use_noise_window (use_noise_window), + // Inputs + .clk (clk), + .complex_oclkdelay_calib_start (complex_oclkdelay_calib_start), + .f2o (f2o), + .f2z (f2z), + .fuzz2oneeighty (fuzz2oneeighty[5:0]), + .fuzz2zero (fuzz2zero[5:0]), + .lim2ocal_stg3_left_lim (lim2ocal_stg3_left_lim[5:0]), + .lim2ocal_stg3_right_lim (lim2ocal_stg3_right_lim[5:0]), + .mmcm_edge_detect_done (mmcm_edge_detect_done), + .mmcm_lbclk_edge_aligned (mmcm_lbclk_edge_aligned), + .o2f (o2f), + .oclkdelay_calib_cnt (oclkdelay_calib_cnt[DQS_CNT_WIDTH:0]), + .oclkdelay_init_val (oclkdelay_init_val[5:0]), + .oneeighty2fuzz (oneeighty2fuzz[5:0]), + .phy_rddata_en_3 (phy_rddata_en_3), + .po_counter_read_val (po_counter_read_val[8:0]), + .po_rdy (po_rdy), + .poc_backup (poc_backup), + .reset_scan (reset_scan), + .rst (rst), + .samp_done (samp_done), + .scan_right (scan_right), + .wl_po_fine_cnt_sel (wl_po_fine_cnt_sel[5:0]), + .z2f (z2f), + .zero2fuzz (zero2fuzz[5:0])); + + +endmodule // mig_7series_v4_0_ddr_phy_oclkdelay_cal + +// Local Variables: +// verilog-library-directories:(".") +// verilog-library-extensions:(".v") +// End: diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_prbs_rdlvl.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_prbs_rdlvl.v new file mode 100644 index 0000000..b61456d --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_prbs_rdlvl.v @@ -0,0 +1,5683 @@ +//***************************************************************************** +// (c) Copyright 2009 - 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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version: +// \ \ Application: MIG +// / / Filename: ddr_phy_prbs_rdlvl.v +// /___/ /\ Date Last Modified: $Date: 2011/06/24 14:49:00 $ +// \ \ / \ Date Created: +// \___\/\___\ +// +//Device: 7 Series +//Design Name: DDR3 SDRAM +//Purpose: +// PRBS Read leveling calibration logic +// NOTES: +// 1. Window detection with PRBS pattern. +//Reference: +//Revision History: +//***************************************************************************** + +/****************************************************************************** +**$Id: ddr_phy_prbs_rdlvl.v,v 1.2 2011/06/24 14:49:00 mgeorge Exp $ +**$Date: 2011/06/24 14:49:00 $ +**$Author: mgeorge $ +**$Revision: 1.2 $ +**$Source: /devl/xcs/repo/env/Databases/ip/src2/O/mig_7series_v1_3/data/dlib/7series/ddr3_sdram/verilog/rtl/phy/ddr_phy_prbs_rdlvl.v,v $ +******************************************************************************/ + +`timescale 1ps/1ps + +module mig_7series_v4_0_ddr_phy_prbs_rdlvl # + ( + parameter TCQ = 100, // clk->out delay (sim only) + parameter nCK_PER_CLK = 2, // # of memory clocks per CLK + parameter DQ_WIDTH = 64, // # of DQ (data) + parameter DQS_CNT_WIDTH = 3, // = ceil(log2(DQS_WIDTH)) + parameter DQS_WIDTH = 8, // # of DQS (strobe) + parameter DRAM_WIDTH = 8, // # of DQ per DQS + parameter RANKS = 1, // # of DRAM ranks + parameter SIM_CAL_OPTION = "NONE", // Skip various calibration steps + parameter PRBS_WIDTH = 8, // PRBS generator output width + parameter FIXED_VICTIM = "TRUE", // No victim rotation when "TRUE" + parameter FINE_PER_BIT = "ON", + parameter CENTER_COMP_MODE = "ON", + parameter PI_VAL_ADJ = "ON" + ) + ( + input clk, + input rst, + // Calibration status, control signals + input prbs_rdlvl_start, + (* max_fanout = 100 *) output reg prbs_rdlvl_done, + output reg prbs_last_byte_done, + output reg prbs_rdlvl_prech_req, + input complex_sample_cnt_inc, + input prech_done, + input phy_if_empty, + // Captured data in fabric clock domain + input [2*nCK_PER_CLK*DQ_WIDTH-1:0] rd_data, + //Expected data from PRBS generator + input [2*nCK_PER_CLK*DQ_WIDTH-1:0] compare_data, + // Decrement initial Phaser_IN Fine tap delay + input [5:0] pi_counter_read_val, + // Stage 1 calibration outputs + output reg pi_en_stg2_f, + output reg pi_stg2_f_incdec, + output [255:0] dbg_prbs_rdlvl, + output [DQS_CNT_WIDTH:0] pi_stg2_prbs_rdlvl_cnt, + output reg [2:0] rd_victim_sel, + output reg complex_victim_inc, + output reg reset_rd_addr, + + output reg [6*DQS_WIDTH*RANKS-1:0] prbs_final_dqs_tap_cnt_r, + output reg [6*DQS_WIDTH*RANKS-1:0] dbg_prbs_first_edge_taps, + output reg [6*DQS_WIDTH*RANKS-1:0] dbg_prbs_second_edge_taps, + output reg [DRAM_WIDTH-1:0] fine_delay_incdec_pb, //fine_delay decreament per bit + output reg fine_delay_sel, //fine delay selection - actual update of fine delay + output reg num_samples_done_r, + input complex_act_start, //read is done. ready for PI movement + output complex_init_pi_dec_done, //Initial PI incdec is done. ready for start + output reg complex_pi_incdec_done //PI incdec is done. ready for Read + ); + + + + + localparam [5:0] PRBS_IDLE = 6'h00; + localparam [5:0] PRBS_NEW_DQS_WAIT = 6'h01; + localparam [5:0] PRBS_PAT_COMPARE = 6'h02; + localparam [5:0] PRBS_DEC_DQS = 6'h03; + localparam [5:0] PRBS_DEC_DQS_WAIT = 6'h04; + localparam [5:0] PRBS_INC_DQS = 6'h05; + localparam [5:0] PRBS_INC_DQS_WAIT = 6'h06; + localparam [5:0] PRBS_CALC_TAPS = 6'h07; + localparam [5:0] PRBS_NEXT_DQS = 6'h08; + localparam [5:0] PRBS_NEW_DQS_PREWAIT = 6'h09; + localparam [5:0] PRBS_DONE = 6'h0A; + localparam [5:0] PRBS_CALC_TAPS_PRE = 6'h0B; + localparam [5:0] PRBS_CALC_TAPS_WAIT = 6'h0C; + + localparam [5:0] FINE_PI_DEC = 6'h0D; //go back to all fail or back to center + localparam [5:0] FINE_PI_DEC_WAIT = 6'h0E; //wait for PI tap dec settle + localparam [5:0] FINE_PI_INC = 6'h0F; //increse up to 1 fail + localparam [5:0] FINE_PI_INC_WAIT = 6'h10; //wait for PI tap int settle + localparam [5:0] FINE_PAT_COMPARE_PER_BIT = 6'h11; //compare per bit error and check left/right/gain/loss + localparam [5:0] FINE_CALC_TAPS = 6'h12; //setup fine_delay_incdec_pb for better window size + localparam [5:0] FINE_CALC_TAPS_WAIT = 6'h13; //wait for ROM value for dec cnt + localparam [5:0] RD_DONE_WAIT_FOR_PI_INC_INC = 6'h14; //wait for read is done before PI inc + localparam [5:0] RD_DONE_WAIT_FOR_PI_INC_DEC = 6'h15; //wait for read is done before PI dec + + localparam [11:0] NUM_SAMPLES_CNT = (SIM_CAL_OPTION == "NONE") ? 'd12 : 12'h001; //MG from 50 + localparam [11:0] NUM_SAMPLES_CNT1 = (SIM_CAL_OPTION == "NONE") ? 'd20 : 12'h001; + localparam [11:0] NUM_SAMPLES_CNT2 = (SIM_CAL_OPTION == "NONE") ? 'd10 : 12'h001; + + //minimum valid window for centering + localparam MIN_WIN = 8; + localparam [MIN_WIN-1:0] MATCH_ALL_ONE = {MIN_WIN{1'b1}}; + localparam [MIN_WIN-1:0] MIN_PASS = {MIN_WIN{1'b0}}; //8'b00000000 + localparam [MIN_WIN-1:0] MIN_LEFT = {1'b1,{{MIN_WIN-1}{1'b0}}}; //8'b10000000 + + wire [DQS_CNT_WIDTH+2:0]prbs_dqs_cnt_timing; + reg [DQS_CNT_WIDTH+2:0] prbs_dqs_cnt_timing_r; + reg [DQS_CNT_WIDTH:0] prbs_dqs_cnt_r; + reg prbs_prech_req_r; + reg [5:0] prbs_state_r; + reg [5:0] prbs_state_r1; + reg wait_state_cnt_en_r; + reg [3:0] wait_state_cnt_r; + reg cnt_wait_state; + reg err_chk_invalid; + // reg found_edge_r; + reg prbs_found_1st_edge_r; + reg prbs_found_2nd_edge_r; + reg [5:0] prbs_1st_edge_taps_r; + // reg found_stable_eye_r; + reg [5:0] prbs_dqs_tap_cnt_r; + reg [5:0] prbs_dec_tap_calc_plus_3; + reg [5:0] prbs_dec_tap_calc_minus_3; + reg prbs_dqs_tap_limit_r; + reg [5:0] prbs_inc_tap_cnt; + reg [5:0] prbs_dec_tap_cnt; + reg [DRAM_WIDTH-1:0] mux_rd_fall0_r1; + reg [DRAM_WIDTH-1:0] mux_rd_fall1_r1; + reg [DRAM_WIDTH-1:0] mux_rd_rise0_r1; + reg [DRAM_WIDTH-1:0] mux_rd_rise1_r1; + reg [DRAM_WIDTH-1:0] mux_rd_fall2_r1; + reg [DRAM_WIDTH-1:0] mux_rd_fall3_r1; + reg [DRAM_WIDTH-1:0] mux_rd_rise2_r1; + reg [DRAM_WIDTH-1:0] mux_rd_rise3_r1; + reg [DRAM_WIDTH-1:0] mux_rd_fall0_r2; + reg [DRAM_WIDTH-1:0] mux_rd_fall1_r2; + reg [DRAM_WIDTH-1:0] mux_rd_rise0_r2; + reg [DRAM_WIDTH-1:0] mux_rd_rise1_r2; + reg [DRAM_WIDTH-1:0] mux_rd_fall2_r2; + reg [DRAM_WIDTH-1:0] mux_rd_fall3_r2; + reg [DRAM_WIDTH-1:0] mux_rd_rise2_r2; + reg [DRAM_WIDTH-1:0] mux_rd_rise3_r2; + reg [DRAM_WIDTH-1:0] mux_rd_fall0_r3; + reg [DRAM_WIDTH-1:0] mux_rd_fall1_r3; + reg [DRAM_WIDTH-1:0] mux_rd_rise0_r3; + reg [DRAM_WIDTH-1:0] mux_rd_rise1_r3; + reg [DRAM_WIDTH-1:0] mux_rd_fall2_r3; + reg [DRAM_WIDTH-1:0] mux_rd_fall3_r3; + reg [DRAM_WIDTH-1:0] mux_rd_rise2_r3; + reg [DRAM_WIDTH-1:0] mux_rd_rise3_r3; + reg [DRAM_WIDTH-1:0] mux_rd_fall0_r4; + reg [DRAM_WIDTH-1:0] mux_rd_fall1_r4; + reg [DRAM_WIDTH-1:0] mux_rd_rise0_r4; + reg [DRAM_WIDTH-1:0] mux_rd_rise1_r4; + reg [DRAM_WIDTH-1:0] mux_rd_fall2_r4; + reg [DRAM_WIDTH-1:0] mux_rd_fall3_r4; + reg [DRAM_WIDTH-1:0] mux_rd_rise2_r4; + reg [DRAM_WIDTH-1:0] mux_rd_rise3_r4; + reg mux_rd_valid_r; + reg rd_valid_r1; + reg rd_valid_r2; + reg rd_valid_r3; + reg new_cnt_dqs_r; + reg prbs_tap_en_r; + reg prbs_tap_inc_r; + reg pi_en_stg2_f_timing; + reg pi_stg2_f_incdec_timing; + wire [DQ_WIDTH-1:0] rd_data_rise0; + wire [DQ_WIDTH-1:0] rd_data_fall0; + wire [DQ_WIDTH-1:0] rd_data_rise1; + wire [DQ_WIDTH-1:0] rd_data_fall1; + wire [DQ_WIDTH-1:0] rd_data_rise2; + wire [DQ_WIDTH-1:0] rd_data_fall2; + wire [DQ_WIDTH-1:0] rd_data_rise3; + wire [DQ_WIDTH-1:0] rd_data_fall3; + wire [DQ_WIDTH-1:0] compare_data_r0; + wire [DQ_WIDTH-1:0] compare_data_f0; + wire [DQ_WIDTH-1:0] compare_data_r1; + wire [DQ_WIDTH-1:0] compare_data_f1; + wire [DQ_WIDTH-1:0] compare_data_r2; + wire [DQ_WIDTH-1:0] compare_data_f2; + wire [DQ_WIDTH-1:0] compare_data_r3; + wire [DQ_WIDTH-1:0] compare_data_f3; + reg [DRAM_WIDTH-1:0] compare_data_rise0_r1; + reg [DRAM_WIDTH-1:0] compare_data_fall0_r1; + reg [DRAM_WIDTH-1:0] compare_data_rise1_r1; + reg [DRAM_WIDTH-1:0] compare_data_fall1_r1; + reg [DRAM_WIDTH-1:0] compare_data_rise2_r1; + reg [DRAM_WIDTH-1:0] compare_data_fall2_r1; + reg [DRAM_WIDTH-1:0] compare_data_rise3_r1; + reg [DRAM_WIDTH-1:0] compare_data_fall3_r1; + reg [DQS_CNT_WIDTH:0] rd_mux_sel_r; + reg [5:0] prbs_2nd_edge_taps_r; + + // reg [6*DQS_WIDTH*RANKS-1:0] prbs_final_dqs_tap_cnt_r; + reg [5:0] rdlvl_cpt_tap_cnt; + reg prbs_rdlvl_start_r; + + reg compare_err; + reg compare_err_r0; + reg compare_err_f0; + reg compare_err_r1; + reg compare_err_f1; + reg compare_err_r2; + reg compare_err_f2; + reg compare_err_r3; + reg compare_err_f3; + reg compare_err_latch; + + reg samples_cnt1_en_r; + reg samples_cnt2_en_r; + reg [11:0] samples_cnt_r; + reg num_samples_done_ind; //indicate num_samples_done_r is set in FINE_PAT_COMPARE_PER_BIT to prevent victim_sel_rd out of sync + reg [DQS_WIDTH-1:0] prbs_tap_mod; + + //reg [6*DQS_WIDTH*RANKS-1:0] dbg_prbs_first_edge_taps; + //reg [6*DQS_WIDTH*RANKS-1:0] dbg_prbs_second_edge_taps; + + //************************************************************************** + // signals for per-bit algorithm of fine_delay calculations + //************************************************************************** + reg [6*DRAM_WIDTH-1:0] left_edge_pb; //left edge value per bit + reg [6*DRAM_WIDTH-1:0] right_edge_pb; //right edge value per bit + reg [MIN_WIN*DRAM_WIDTH-1:0] match_flag_pb; //5 consecutive match flag per bit + reg [MIN_WIN-1:0] match_flag_and; //5 consecute match flag of all bits (1: all bit fail) + reg [MIN_WIN-1:0] match_flag_or; //5 consecute match flag of all bits (1: any bit fail) + reg [DRAM_WIDTH-1:0] left_edge_found_pb; //left_edge found per bit - use for loss calculation + reg [DRAM_WIDTH-1:0] left_edge_updated; //left edge was updated for this PI tap - used for largest left edge /ref bit update + reg [DRAM_WIDTH-1:0] right_edge_found_pb; //right_edge found per bit - use for gail calulation and smallest right edge update + reg right_edge_found; //smallest right_edge found + reg [DRAM_WIDTH*6-1:0] left_loss_pb; //left_edge loss per bit + reg [DRAM_WIDTH*6-1:0] right_gain_pb; //right_edge gain per bit + reg [DRAM_WIDTH-1:0] ref_bit; //bit number which has largest left edge (with smaller right edge) + reg [DRAM_WIDTH-1:0] bit_cnt; //bit number used to calculate ref bit + reg [DRAM_WIDTH-1:0] ref_bit_per_bit; //bit flags which have largest left edge + reg [5:0] ref_right_edge; //ref_bit right edge - keep the smallest edge of ref bits + reg [5:0] largest_left_edge; //biggest left edge of per bit - will be left edge of byte + reg [5:0] smallest_right_edge; //smallest right edge of per bit - will be right edge of byte + reg [5:0] fine_pi_dec_cnt; //Phase In tap decrement count (to go back to '0' or center) + reg [6:0] center_calc; //used for calculate the dec tap for centering + reg [5:0] right_edge_ref; //ref_bit right edge + reg [5:0] left_edge_ref; //ref_bit left edge + + reg [DRAM_WIDTH-1:0] compare_err_pb; //compare error per bit + reg [DRAM_WIDTH-1:0] compare_err_pb_latch_r; //sticky compare error per bit used for left/right edge + reg compare_err_pb_and; //indicate all bit fail + reg compare_err_pb_or; //indicate any bit fail + reg fine_inc_stage; //fine_inc_stage (1: increment all except ref_bit, 0: only inc for gain bit) + reg [1:0] stage_cnt; //stage cnt (0,1: fine delay inc stage, 2: fine delay dec stage) + wire fine_calib; //turn on/off fine delay calibration + + reg [5:0] mem_out_dec; + reg [5:0] dec_cnt; + reg fine_dly_error; //indicate it has wrong left/right edge + reg edge_det_error; //indicate it has wrong left/right edge + + wire center_comp; + wire pi_adj; + + reg no_err_win_detected; + reg no_err_win_detected_latch; + reg [1:0] valid_window_cnt; //number of valid window in the scan + reg double_window_ind; //indication of double window + + //if inital PI dec is not done, init SM should wait until it is done + reg complex_init_pi_dec_done_r; //if inital PI dec is not done, init SM should wait until it is done + wire complex_rdlvl_err; + + //************************************************************************** + // DQS count to hard PHY during write calibration using Phaser_OUT Stage2 + // coarse delay + //************************************************************************** + assign pi_stg2_prbs_rdlvl_cnt = prbs_dqs_cnt_r; + + //fine delay turn on + assign fine_calib = (FINE_PER_BIT=="ON")? 1:0; + assign center_comp = (CENTER_COMP_MODE == "ON")? 1: 0; + assign pi_adj = (PI_VAL_ADJ == "ON")?1:0; + + //Debug error flag + assign complex_rdlvl_err = fine_dly_error | edge_det_error; + + //initial dec is only happening for per-bit + assign complex_init_pi_dec_done = fine_calib? complex_init_pi_dec_done_r : 1'b1; + + assign dbg_prbs_rdlvl[0+:6] = left_edge_pb[0+:6]; + assign dbg_prbs_rdlvl[7:6] = left_loss_pb[0+:2]; + assign dbg_prbs_rdlvl[8+:6] = left_edge_pb[6+:6]; + assign dbg_prbs_rdlvl[15:14] = left_loss_pb[6+:2]; + assign dbg_prbs_rdlvl[16+:6] = left_edge_pb[12+:6] ; + assign dbg_prbs_rdlvl[23:22] = left_loss_pb[12+:2]; + assign dbg_prbs_rdlvl[24+:6] = left_edge_pb[18+:6] ; + assign dbg_prbs_rdlvl[31:30] = left_loss_pb[18+:2]; + assign dbg_prbs_rdlvl[32+:6] = left_edge_pb[24+:6]; + assign dbg_prbs_rdlvl[39:38] = left_loss_pb[24+:2]; + assign dbg_prbs_rdlvl[40+:6] = left_edge_pb[30+:6]; + assign dbg_prbs_rdlvl[47:46] = left_loss_pb[30+:2]; + assign dbg_prbs_rdlvl[48+:6] = left_edge_pb[36+:6]; + assign dbg_prbs_rdlvl[55:54] = left_loss_pb[36+:2]; + assign dbg_prbs_rdlvl[56+:6] = left_edge_pb[42+:6]; + assign dbg_prbs_rdlvl[63:62] = left_loss_pb[42+:2]; + + assign dbg_prbs_rdlvl[64+:6] = right_edge_pb[0+:6]; + assign dbg_prbs_rdlvl[71:70] = right_gain_pb[0+:2]; + assign dbg_prbs_rdlvl[72+:6] = right_edge_pb[6+:6] ; + assign dbg_prbs_rdlvl[79:78] = right_gain_pb[6+:2]; + assign dbg_prbs_rdlvl[80+:6] = right_edge_pb[12+:6]; + assign dbg_prbs_rdlvl[87:86] = right_gain_pb[12+:2]; + assign dbg_prbs_rdlvl[88+:6] = right_edge_pb[18+:6]; + assign dbg_prbs_rdlvl[95:94] = right_gain_pb[18+:2]; + assign dbg_prbs_rdlvl[96+:6] = right_edge_pb[24+:6]; + assign dbg_prbs_rdlvl[103:102] = right_gain_pb[24+:2]; + assign dbg_prbs_rdlvl[104+:6] = right_edge_pb[30+:6]; + assign dbg_prbs_rdlvl[111:110] = right_gain_pb[30+:2]; + assign dbg_prbs_rdlvl[112+:6] = right_edge_pb[36+:6]; + assign dbg_prbs_rdlvl[119:118] = right_gain_pb[36+:2]; + assign dbg_prbs_rdlvl[120+:6] = right_edge_pb[42+:6]; + assign dbg_prbs_rdlvl[127:126] = right_gain_pb[42+:2]; + + assign dbg_prbs_rdlvl[128+:6] = pi_counter_read_val; + assign dbg_prbs_rdlvl[134+:6] = prbs_dqs_tap_cnt_r; + + assign dbg_prbs_rdlvl[140] = prbs_found_1st_edge_r; + assign dbg_prbs_rdlvl[141] = prbs_found_2nd_edge_r; + assign dbg_prbs_rdlvl[142] = compare_err; + assign dbg_prbs_rdlvl[143] = phy_if_empty; + assign dbg_prbs_rdlvl[144] = prbs_rdlvl_start; + assign dbg_prbs_rdlvl[145] = prbs_rdlvl_done; + assign dbg_prbs_rdlvl[146+:5] = prbs_dqs_cnt_r; + assign dbg_prbs_rdlvl[151+:6] = left_edge_pb[prbs_dqs_cnt_r*6+:6] ; + assign dbg_prbs_rdlvl[157+:6] = right_edge_pb[prbs_dqs_cnt_r*6+:6]; + assign dbg_prbs_rdlvl[163+:6] = {2'h0,complex_victim_inc, rd_victim_sel[2:0]}; + assign dbg_prbs_rdlvl[169+:6] =right_gain_pb[prbs_dqs_cnt_r*6+:6] ; + assign dbg_prbs_rdlvl[177:175] = ref_bit[2:0]; + + assign dbg_prbs_rdlvl[178+:6] = prbs_state_r1[5:0]; + assign dbg_prbs_rdlvl[184] = rd_valid_r2; + assign dbg_prbs_rdlvl[185] = compare_err_r0; + assign dbg_prbs_rdlvl[186] = compare_err_f0; + assign dbg_prbs_rdlvl[187] = compare_err_r1; + assign dbg_prbs_rdlvl[188] = compare_err_f1; + assign dbg_prbs_rdlvl[189] = compare_err_r2; + assign dbg_prbs_rdlvl[190] = compare_err_f2; + assign dbg_prbs_rdlvl[191] = compare_err_r3; + assign dbg_prbs_rdlvl[192] = compare_err_f3; + assign dbg_prbs_rdlvl[193+:8] = left_edge_found_pb; + assign dbg_prbs_rdlvl[201+:8] = right_edge_found_pb; + assign dbg_prbs_rdlvl[209+:6] =largest_left_edge ; + assign dbg_prbs_rdlvl[215+:6] =smallest_right_edge ; + assign dbg_prbs_rdlvl[221+:8] = fine_delay_incdec_pb; + assign dbg_prbs_rdlvl[229] = fine_delay_sel; + assign dbg_prbs_rdlvl[230+:8] = compare_err_pb_latch_r; + assign dbg_prbs_rdlvl[238+:6] = fine_pi_dec_cnt; + assign dbg_prbs_rdlvl[244+:5] = match_flag_and[4:0]; + assign dbg_prbs_rdlvl[249+:2] = stage_cnt; + assign dbg_prbs_rdlvl[251] = fine_inc_stage; + assign dbg_prbs_rdlvl[252] = compare_err_pb_and; + assign dbg_prbs_rdlvl[253] = right_edge_found; + assign dbg_prbs_rdlvl[254] = complex_rdlvl_err; + assign dbg_prbs_rdlvl[255] = double_window_ind; + + //************************************************************************** + // Record first and second edges found during calibration + //************************************************************************** + generate + always @(posedge clk) + if (rst) begin + dbg_prbs_first_edge_taps <= #TCQ 'b0; + dbg_prbs_second_edge_taps <= #TCQ 'b0; + end else if (prbs_state_r == PRBS_CALC_TAPS) begin + // Record tap counts of first and second edge edges during + // calibration for each DQS group. If neither edge has + // been found, then those taps will remain 0 + if (prbs_found_1st_edge_r) + dbg_prbs_first_edge_taps[(prbs_dqs_cnt_timing_r*6)+:6] + <= #TCQ prbs_1st_edge_taps_r; + if (prbs_found_2nd_edge_r) + dbg_prbs_second_edge_taps[(prbs_dqs_cnt_timing_r*6)+:6] + <= #TCQ prbs_2nd_edge_taps_r; + end else if (prbs_state_r == FINE_CALC_TAPS) begin + if(stage_cnt == 'd2) begin + dbg_prbs_first_edge_taps[(prbs_dqs_cnt_timing_r*6)+:6] + <= #TCQ largest_left_edge; + dbg_prbs_second_edge_taps[(prbs_dqs_cnt_timing_r*6)+:6] + <= #TCQ smallest_right_edge; + end + end + endgenerate + + //double window indication flag + always @ (posedge clk) + if (rst) double_window_ind <= #TCQ 1'd0; + else double_window_ind <= #TCQ double_window_ind? 1'b1: (valid_window_cnt > 1); + + //padded calculation + always @ (smallest_right_edge or largest_left_edge) + center_calc <= {1'b0, smallest_right_edge} + {1'b0,largest_left_edge}; + //*************************************************************************** + //*************************************************************************** + // Data mux to route appropriate bit to calibration logic - i.e. calibration + // is done sequentially, one bit (or DQS group) at a time + //*************************************************************************** + + generate + if (nCK_PER_CLK == 4) begin: rd_data_div4_logic_clk + assign rd_data_rise0 = rd_data[DQ_WIDTH-1:0]; + assign rd_data_fall0 = rd_data[2*DQ_WIDTH-1:DQ_WIDTH]; + assign rd_data_rise1 = rd_data[3*DQ_WIDTH-1:2*DQ_WIDTH]; + assign rd_data_fall1 = rd_data[4*DQ_WIDTH-1:3*DQ_WIDTH]; + assign rd_data_rise2 = rd_data[5*DQ_WIDTH-1:4*DQ_WIDTH]; + assign rd_data_fall2 = rd_data[6*DQ_WIDTH-1:5*DQ_WIDTH]; + assign rd_data_rise3 = rd_data[7*DQ_WIDTH-1:6*DQ_WIDTH]; + assign rd_data_fall3 = rd_data[8*DQ_WIDTH-1:7*DQ_WIDTH]; + assign compare_data_r0 = compare_data[DQ_WIDTH-1:0]; + assign compare_data_f0 = compare_data[2*DQ_WIDTH-1:DQ_WIDTH]; + assign compare_data_r1 = compare_data[3*DQ_WIDTH-1:2*DQ_WIDTH]; + assign compare_data_f1 = compare_data[4*DQ_WIDTH-1:3*DQ_WIDTH]; + assign compare_data_r2 = compare_data[5*DQ_WIDTH-1:4*DQ_WIDTH]; + assign compare_data_f2 = compare_data[6*DQ_WIDTH-1:5*DQ_WIDTH]; + assign compare_data_r3 = compare_data[7*DQ_WIDTH-1:6*DQ_WIDTH]; + assign compare_data_f3 = compare_data[8*DQ_WIDTH-1:7*DQ_WIDTH]; + end else begin: rd_data_div2_logic_clk + assign rd_data_rise0 = rd_data[DQ_WIDTH-1:0]; + assign rd_data_fall0 = rd_data[2*DQ_WIDTH-1:DQ_WIDTH]; + assign rd_data_rise1 = rd_data[3*DQ_WIDTH-1:2*DQ_WIDTH]; + assign rd_data_fall1 = rd_data[4*DQ_WIDTH-1:3*DQ_WIDTH]; + assign compare_data_r0 = compare_data[DQ_WIDTH-1:0]; + assign compare_data_f0 = compare_data[2*DQ_WIDTH-1:DQ_WIDTH]; + assign compare_data_r1 = compare_data[3*DQ_WIDTH-1:2*DQ_WIDTH]; + assign compare_data_f1 = compare_data[4*DQ_WIDTH-1:3*DQ_WIDTH]; + assign compare_data_r2 = 'h0; + assign compare_data_f2 = 'h0; + assign compare_data_r3 = 'h0; + assign compare_data_f3 = 'h0; + end + endgenerate + + always @(posedge clk) begin + rd_mux_sel_r <= #TCQ prbs_dqs_cnt_r; + end + + // Register outputs for improved timing. + // NOTE: Will need to change when per-bit DQ deskew is supported. + // Currenly all bits in DQS group are checked in aggregate + generate + genvar mux_i; + for (mux_i = 0; mux_i < DRAM_WIDTH; mux_i = mux_i + 1) begin: gen_mux_rd + always @(posedge clk) begin + mux_rd_rise0_r1[mux_i] <= #TCQ rd_data_rise0[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + mux_rd_fall0_r1[mux_i] <= #TCQ rd_data_fall0[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + mux_rd_rise1_r1[mux_i] <= #TCQ rd_data_rise1[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + mux_rd_fall1_r1[mux_i] <= #TCQ rd_data_fall1[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + mux_rd_rise2_r1[mux_i] <= #TCQ rd_data_rise2[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + mux_rd_fall2_r1[mux_i] <= #TCQ rd_data_fall2[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + mux_rd_rise3_r1[mux_i] <= #TCQ rd_data_rise3[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + mux_rd_fall3_r1[mux_i] <= #TCQ rd_data_fall3[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + //Compare data + compare_data_rise0_r1[mux_i] <= #TCQ compare_data_r0[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + compare_data_fall0_r1[mux_i] <= #TCQ compare_data_f0[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + compare_data_rise1_r1[mux_i] <= #TCQ compare_data_r1[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + compare_data_fall1_r1[mux_i] <= #TCQ compare_data_f1[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + compare_data_rise2_r1[mux_i] <= #TCQ compare_data_r2[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + compare_data_fall2_r1[mux_i] <= #TCQ compare_data_f2[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + compare_data_rise3_r1[mux_i] <= #TCQ compare_data_r3[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + compare_data_fall3_r1[mux_i] <= #TCQ compare_data_f3[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + end + end + endgenerate + + generate + genvar muxr2_i; + if (nCK_PER_CLK == 4) begin: gen_mux_div4 + for (muxr2_i = 0; muxr2_i < DRAM_WIDTH; muxr2_i = muxr2_i + 1) begin: gen_rd_4 + always @(posedge clk) begin + if (mux_rd_valid_r) begin + mux_rd_rise0_r2[muxr2_i] <= #TCQ mux_rd_rise0_r1[muxr2_i]; + mux_rd_fall0_r2[muxr2_i] <= #TCQ mux_rd_fall0_r1[muxr2_i]; + mux_rd_rise1_r2[muxr2_i] <= #TCQ mux_rd_rise1_r1[muxr2_i]; + mux_rd_fall1_r2[muxr2_i] <= #TCQ mux_rd_fall1_r1[muxr2_i]; + mux_rd_rise2_r2[muxr2_i] <= #TCQ mux_rd_rise2_r1[muxr2_i]; + mux_rd_fall2_r2[muxr2_i] <= #TCQ mux_rd_fall2_r1[muxr2_i]; + mux_rd_rise3_r2[muxr2_i] <= #TCQ mux_rd_rise3_r1[muxr2_i]; + mux_rd_fall3_r2[muxr2_i] <= #TCQ mux_rd_fall3_r1[muxr2_i]; + end + //pipeline stage + mux_rd_rise0_r3[muxr2_i] <= #TCQ mux_rd_rise0_r2[muxr2_i]; + mux_rd_fall0_r3[muxr2_i] <= #TCQ mux_rd_fall0_r2[muxr2_i]; + mux_rd_rise1_r3[muxr2_i] <= #TCQ mux_rd_rise1_r2[muxr2_i]; + mux_rd_fall1_r3[muxr2_i] <= #TCQ mux_rd_fall1_r2[muxr2_i]; + mux_rd_rise2_r3[muxr2_i] <= #TCQ mux_rd_rise2_r2[muxr2_i]; + mux_rd_fall2_r3[muxr2_i] <= #TCQ mux_rd_fall2_r2[muxr2_i]; + mux_rd_rise3_r3[muxr2_i] <= #TCQ mux_rd_rise3_r2[muxr2_i]; + mux_rd_fall3_r3[muxr2_i] <= #TCQ mux_rd_fall3_r2[muxr2_i]; + //pipeline stage + mux_rd_rise0_r4[muxr2_i] <= #TCQ mux_rd_rise0_r3[muxr2_i]; + mux_rd_fall0_r4[muxr2_i] <= #TCQ mux_rd_fall0_r3[muxr2_i]; + mux_rd_rise1_r4[muxr2_i] <= #TCQ mux_rd_rise1_r3[muxr2_i]; + mux_rd_fall1_r4[muxr2_i] <= #TCQ mux_rd_fall1_r3[muxr2_i]; + mux_rd_rise2_r4[muxr2_i] <= #TCQ mux_rd_rise2_r3[muxr2_i]; + mux_rd_fall2_r4[muxr2_i] <= #TCQ mux_rd_fall2_r3[muxr2_i]; + mux_rd_rise3_r4[muxr2_i] <= #TCQ mux_rd_rise3_r3[muxr2_i]; + mux_rd_fall3_r4[muxr2_i] <= #TCQ mux_rd_fall3_r3[muxr2_i]; + end + end + end else if (nCK_PER_CLK == 2) begin: gen_mux_div2 + for (muxr2_i = 0; muxr2_i < DRAM_WIDTH; muxr2_i = muxr2_i + 1) begin: gen_rd_2 + always @(posedge clk) begin + if (mux_rd_valid_r) begin + mux_rd_rise0_r2[muxr2_i] <= #TCQ mux_rd_rise0_r1[muxr2_i]; + mux_rd_fall0_r2[muxr2_i] <= #TCQ mux_rd_fall0_r1[muxr2_i]; + mux_rd_rise1_r2[muxr2_i] <= #TCQ mux_rd_rise1_r1[muxr2_i]; + mux_rd_fall1_r2[muxr2_i] <= #TCQ mux_rd_fall1_r1[muxr2_i]; + mux_rd_rise2_r2[muxr2_i] <= 'h0; + mux_rd_fall2_r2[muxr2_i] <= 'h0; + mux_rd_rise3_r2[muxr2_i] <= 'h0; + mux_rd_fall3_r2[muxr2_i] <= 'h0; + end + mux_rd_rise0_r3[muxr2_i] <= #TCQ mux_rd_rise0_r2[muxr2_i]; + mux_rd_fall0_r3[muxr2_i] <= #TCQ mux_rd_fall0_r2[muxr2_i]; + mux_rd_rise1_r3[muxr2_i] <= #TCQ mux_rd_rise1_r2[muxr2_i]; + mux_rd_fall1_r3[muxr2_i] <= #TCQ mux_rd_fall1_r2[muxr2_i]; + mux_rd_rise2_r3[muxr2_i] <= 'h0; + mux_rd_fall2_r3[muxr2_i] <= 'h0; + mux_rd_rise3_r3[muxr2_i] <= 'h0; + mux_rd_fall3_r3[muxr2_i] <= 'h0; + + //pipeline stage + mux_rd_rise0_r4[muxr2_i] <= #TCQ mux_rd_rise0_r3[muxr2_i]; + mux_rd_fall0_r4[muxr2_i] <= #TCQ mux_rd_fall0_r3[muxr2_i]; + mux_rd_rise1_r4[muxr2_i] <= #TCQ mux_rd_rise1_r3[muxr2_i]; + mux_rd_fall1_r4[muxr2_i] <= #TCQ mux_rd_fall1_r3[muxr2_i]; + mux_rd_rise2_r4[muxr2_i] <= 'h0; + mux_rd_fall2_r4[muxr2_i] <= 'h0; + mux_rd_rise3_r4[muxr2_i] <= 'h0; + mux_rd_fall3_r4[muxr2_i] <= 'h0; + end + end + end + endgenerate + + + // Registered signal indicates when mux_rd_rise/fall_r is valid + always @(posedge clk) begin + mux_rd_valid_r <= #TCQ ~phy_if_empty && prbs_rdlvl_start; + rd_valid_r1 <= #TCQ mux_rd_valid_r; + rd_valid_r2 <= #TCQ rd_valid_r1; + rd_valid_r3 <= #TCQ rd_valid_r2; + end + + + + +// Counter counts # of samples compared +// Reset sample counter when not "sampling" +// Otherwise, count # of samples compared +// Same counter is shared for three samples checked + always @(posedge clk) + if (rst) + samples_cnt_r <= #TCQ 'b0; + else if (samples_cnt_r == NUM_SAMPLES_CNT) begin + samples_cnt_r <= #TCQ 'b0; + end else if (complex_sample_cnt_inc) begin + samples_cnt_r <= #TCQ samples_cnt_r + 1; + /*if (!rd_valid_r1 || + (prbs_state_r == PRBS_DEC_DQS_WAIT) || + (prbs_state_r == PRBS_INC_DQS_WAIT) || + (prbs_state_r == PRBS_DEC_DQS) || + (prbs_state_r == PRBS_INC_DQS) || + (samples_cnt_r == NUM_SAMPLES_CNT) || + (samples_cnt_r == NUM_SAMPLES_CNT1)) + samples_cnt_r <= #TCQ 'b0; + else if (rd_valid_r1 && + (((samples_cnt_r < NUM_SAMPLES_CNT) && ~samples_cnt1_en_r) || + ((samples_cnt_r < NUM_SAMPLES_CNT1) && ~samples_cnt2_en_r) || + ((samples_cnt_r < NUM_SAMPLES_CNT2) && samples_cnt2_en_r))) + samples_cnt_r <= #TCQ samples_cnt_r + 1;*/ + end + +// Count #2 enable generation +// Assert when correct number of samples compared + always @(posedge clk) + if (rst) + samples_cnt1_en_r <= #TCQ 1'b0; + else begin + if ((prbs_state_r == PRBS_IDLE) || + (prbs_state_r == PRBS_DEC_DQS) || + (prbs_state_r == PRBS_INC_DQS) || + (prbs_state_r == FINE_PI_INC) || + (prbs_state_r == PRBS_NEW_DQS_PREWAIT)) + samples_cnt1_en_r <= #TCQ 1'b0; + else if ((samples_cnt_r == NUM_SAMPLES_CNT) && rd_valid_r1) + samples_cnt1_en_r <= #TCQ 1'b1; + end + +// Counter #3 enable generation +// Assert when correct number of samples compared + always @(posedge clk) + if (rst) + samples_cnt2_en_r <= #TCQ 1'b0; + else begin + if ((prbs_state_r == PRBS_IDLE) || + (prbs_state_r == PRBS_DEC_DQS) || + (prbs_state_r == PRBS_INC_DQS) || + (prbs_state_r == FINE_PI_INC) || + (prbs_state_r == PRBS_NEW_DQS_PREWAIT)) + samples_cnt2_en_r <= #TCQ 1'b0; + else if ((samples_cnt_r == NUM_SAMPLES_CNT1) && rd_valid_r1 && samples_cnt1_en_r) + samples_cnt2_en_r <= #TCQ 1'b1; + end + +// Victim selection logic + always @(posedge clk) + if (rst) + rd_victim_sel <= #TCQ 'd0; + else if (num_samples_done_r) + rd_victim_sel <= #TCQ 'd0; + else if (samples_cnt_r == NUM_SAMPLES_CNT) begin + if (rd_victim_sel < 'd7) + rd_victim_sel <= #TCQ rd_victim_sel + 1; + end + +// Output row count increment pulse to phy_init + always @(posedge clk) + if (rst) + complex_victim_inc <= #TCQ 1'b0; + else if (samples_cnt_r == NUM_SAMPLES_CNT) + complex_victim_inc <= #TCQ 1'b1; + else + complex_victim_inc <= #TCQ 1'b0; + +generate + if (FIXED_VICTIM == "TRUE") begin: victim_fixed + always @(posedge clk) + if (rst) + num_samples_done_r <= #TCQ 1'b0; + else if ((prbs_state_r == PRBS_DEC_DQS) || + (prbs_state_r == PRBS_INC_DQS)|| + (prbs_state_r == FINE_PI_INC) || + (prbs_state_r == FINE_PI_DEC)) + num_samples_done_r <= #TCQ 'b0; + else if (samples_cnt_r == NUM_SAMPLES_CNT) + num_samples_done_r <= #TCQ 1'b1; + end else begin: victim_not_fixed + always @(posedge clk) + if (rst) + num_samples_done_r <= #TCQ 1'b0; + else if ((prbs_state_r == PRBS_DEC_DQS) || + (prbs_state_r == PRBS_INC_DQS)|| + (prbs_state_r == FINE_PI_INC) || + (prbs_state_r == FINE_PI_DEC)) + num_samples_done_r <= #TCQ 'b0; + else if ((samples_cnt_r == NUM_SAMPLES_CNT) && (rd_victim_sel == 'd7)) + num_samples_done_r <= #TCQ 1'b1; + end +endgenerate + + + //*************************************************************************** + // Compare Read Data for the byte being Leveled with Expected data from PRBS + // generator. Resulting compare_err signal used to determine read data valid + // edge. + //*************************************************************************** + generate + if (nCK_PER_CLK == 4) begin: cmp_err_4to1 + always @ (posedge clk) begin + if (rst || new_cnt_dqs_r || (prbs_state_r == PRBS_INC_DQS) || (prbs_state_r == PRBS_DEC_DQS)) begin + compare_err <= #TCQ 1'b0; + compare_err_r0 <= #TCQ 1'b0; + compare_err_f0 <= #TCQ 1'b0; + compare_err_r1 <= #TCQ 1'b0; + compare_err_f1 <= #TCQ 1'b0; + compare_err_r2 <= #TCQ 1'b0; + compare_err_f2 <= #TCQ 1'b0; + compare_err_r3 <= #TCQ 1'b0; + compare_err_f3 <= #TCQ 1'b0; + end else if (rd_valid_r2) begin + compare_err_r0 <= #TCQ (mux_rd_rise0_r3 != compare_data_rise0_r1); + compare_err_f0 <= #TCQ (mux_rd_fall0_r3 != compare_data_fall0_r1); + compare_err_r1 <= #TCQ (mux_rd_rise1_r3 != compare_data_rise1_r1); + compare_err_f1 <= #TCQ (mux_rd_fall1_r3 != compare_data_fall1_r1); + compare_err_r2 <= #TCQ (mux_rd_rise2_r3 != compare_data_rise2_r1); + compare_err_f2 <= #TCQ (mux_rd_fall2_r3 != compare_data_fall2_r1); + compare_err_r3 <= #TCQ (mux_rd_rise3_r3 != compare_data_rise3_r1); + compare_err_f3 <= #TCQ (mux_rd_fall3_r3 != compare_data_fall3_r1); + compare_err <= #TCQ (compare_err_r0 | compare_err_f0 | + compare_err_r1 | compare_err_f1 | + compare_err_r2 | compare_err_f2 | + compare_err_r3 | compare_err_f3); + end + end + end else begin: cmp_err_2to1 + always @ (posedge clk) begin + if (rst || new_cnt_dqs_r || (prbs_state_r == PRBS_INC_DQS) || (prbs_state_r == PRBS_DEC_DQS)) begin + compare_err <= #TCQ 1'b0; + compare_err_r0 <= #TCQ 1'b0; + compare_err_f0 <= #TCQ 1'b0; + compare_err_r1 <= #TCQ 1'b0; + compare_err_f1 <= #TCQ 1'b0; + end else if (rd_valid_r2) begin + compare_err_r0 <= #TCQ (mux_rd_rise0_r3 != compare_data_rise0_r1); + compare_err_f0 <= #TCQ (mux_rd_fall0_r3 != compare_data_fall0_r1); + compare_err_r1 <= #TCQ (mux_rd_rise1_r3 != compare_data_rise1_r1); + compare_err_f1 <= #TCQ (mux_rd_fall1_r3 != compare_data_fall1_r1); + compare_err <= #TCQ (compare_err_r0 | compare_err_f0 | + compare_err_r1 | compare_err_f1); + end + end + end + endgenerate + + //Sticky bit compare_err + always @ (posedge clk) + if (prbs_state_r == PRBS_PAT_COMPARE) + compare_err_latch <= #TCQ compare_err? 1'b1: compare_err_latch; + else + compare_err_latch <= #TCQ 1'b0; + +//*************************************************************************** +// Decrement initial Phaser_IN fine delay value before proceeding with +// read calibration +//*************************************************************************** + + +//*************************************************************************** +// Demultiplexor to control Phaser_IN delay values +//*************************************************************************** + +// Read DQS + always @(posedge clk) begin + if (rst) begin + pi_en_stg2_f_timing <= #TCQ 'b0; + pi_stg2_f_incdec_timing <= #TCQ 'b0; + end else if (prbs_tap_en_r) begin +// Change only specified DQS + pi_en_stg2_f_timing <= #TCQ 1'b1; + pi_stg2_f_incdec_timing <= #TCQ prbs_tap_inc_r; + end else begin + pi_en_stg2_f_timing <= #TCQ 'b0; + pi_stg2_f_incdec_timing <= #TCQ 'b0; + end + end + +// registered for timing + always @(posedge clk) begin + pi_en_stg2_f <= #TCQ pi_en_stg2_f_timing; + pi_stg2_f_incdec <= #TCQ pi_stg2_f_incdec_timing; + end + +//*************************************************************************** +// generate request to PHY_INIT logic to issue precharged. Required when +// calibration can take a long time (during which there are only constant +// reads present on this bus). In this case need to issue perioidic +// precharges to avoid tRAS violation. This signal must meet the following +// requirements: (1) only transition from 0->1 when prech is first needed, +// (2) stay at 1 and only transition 1->0 when RDLVL_PRECH_DONE asserted +//*************************************************************************** + + always @(posedge clk) + if (rst) + prbs_rdlvl_prech_req <= #TCQ 1'b0; + else + prbs_rdlvl_prech_req <= #TCQ prbs_prech_req_r; + +//***************************************************************** +// keep track of edge tap counts found, and current capture clock +// tap count +//***************************************************************** + + always @(posedge clk) + if (rst) begin + prbs_dqs_tap_cnt_r <= #TCQ 'b0; + rdlvl_cpt_tap_cnt <= #TCQ 'b0; + end else if (new_cnt_dqs_r) begin + prbs_dqs_tap_cnt_r <= #TCQ pi_counter_read_val; + rdlvl_cpt_tap_cnt <= #TCQ pi_counter_read_val; + end else if (prbs_tap_en_r) begin + if (prbs_tap_inc_r) + prbs_dqs_tap_cnt_r <= #TCQ prbs_dqs_tap_cnt_r + 1; + else if (prbs_dqs_tap_cnt_r != 'd0) + prbs_dqs_tap_cnt_r <= #TCQ prbs_dqs_tap_cnt_r - 1; + end + + always @(posedge clk) + if (rst) begin + prbs_dec_tap_calc_plus_3 <= #TCQ 'b0; + prbs_dec_tap_calc_minus_3 <= #TCQ 'b0; + end else if (new_cnt_dqs_r) begin + prbs_dec_tap_calc_plus_3 <= #TCQ 'b000011; + prbs_dec_tap_calc_minus_3 <= #TCQ 'b111100; + end else begin + prbs_dec_tap_calc_plus_3 <= #TCQ (prbs_dqs_tap_cnt_r - rdlvl_cpt_tap_cnt + 3); + prbs_dec_tap_calc_minus_3 <= #TCQ (prbs_dqs_tap_cnt_r - rdlvl_cpt_tap_cnt - 3); + end + + always @(posedge clk) + if (rst || new_cnt_dqs_r) + prbs_dqs_tap_limit_r <= #TCQ 1'b0; + else if (prbs_dqs_tap_cnt_r == 6'd63) + prbs_dqs_tap_limit_r <= #TCQ 1'b1; + else + prbs_dqs_tap_limit_r <= #TCQ 1'b0; + + // Temp wire for timing. + // The following in the always block below causes timing issues + // due to DSP block inference + // 6*prbs_dqs_cnt_r. + // replacing this with two left shifts + one left shift to avoid + // DSP multiplier. + + assign prbs_dqs_cnt_timing = {2'd0, prbs_dqs_cnt_r}; + + + always @(posedge clk) + prbs_dqs_cnt_timing_r <= #TCQ prbs_dqs_cnt_timing; + + + // Storing DQS tap values at the end of each DQS read leveling + always @(posedge clk) begin + if (rst) begin + prbs_final_dqs_tap_cnt_r <= #TCQ 'b0; + end else if ((prbs_state_r == PRBS_NEXT_DQS) && (prbs_state_r1 != PRBS_NEXT_DQS)) begin + prbs_final_dqs_tap_cnt_r[(prbs_dqs_cnt_timing_r*6)+:6] + <= #TCQ prbs_dqs_tap_cnt_r; + end + end + + + + + //***************************************************************** + + always @(posedge clk) begin + prbs_state_r1 <= #TCQ prbs_state_r; + prbs_rdlvl_start_r <= #TCQ prbs_rdlvl_start; + end + +// Wait counter for wait states + always @(posedge clk) + if ((prbs_state_r == PRBS_NEW_DQS_WAIT) || + (prbs_state_r == PRBS_INC_DQS_WAIT) || + (prbs_state_r == PRBS_DEC_DQS_WAIT) || + (prbs_state_r == FINE_PI_DEC_WAIT) || + (prbs_state_r == FINE_PI_INC_WAIT) || + (prbs_state_r == PRBS_NEW_DQS_PREWAIT)) + wait_state_cnt_en_r <= #TCQ 1'b1; + else + wait_state_cnt_en_r <= #TCQ 1'b0; + + always @(posedge clk) + if (!wait_state_cnt_en_r) begin + wait_state_cnt_r <= #TCQ 'b0; + cnt_wait_state <= #TCQ 1'b0; + end else begin + if (wait_state_cnt_r < 'd15) begin + wait_state_cnt_r <= #TCQ wait_state_cnt_r + 1; + cnt_wait_state <= #TCQ 1'b0; + end else begin + // Need to reset to 0 to handle the case when there are two + // different WAIT states back-to-back + wait_state_cnt_r <= #TCQ 'b0; + cnt_wait_state <= #TCQ 1'b1; + end + end + + always @ (posedge clk) + err_chk_invalid <= #TCQ (wait_state_cnt_r < 'd14); + + +//***************************************************************** +// compare error checking per-bit +//**************************************************************** + + generate + genvar pb_i; + if (nCK_PER_CLK == 4) begin: cmp_err_pb_4to1 + for(pb_i=0 ; pb_i prbs_dqs_tap_cnt_r -(MIN_WIN-1))? 'd0 + : prbs_dqs_tap_cnt_r-(MIN_WIN-1)-left_edge_ref; + //right edge is updated when match flag becomes 000000001 (8 success, 1 fail) + end else if (match_flag_pb[eg*MIN_WIN+:MIN_WIN]== MIN_PASS && compare_err_pb_latch_r[eg]) begin + right_edge_pb[eg*6+:6] <= #TCQ prbs_dqs_tap_cnt_r-1; + right_edge_found_pb[eg] <= #TCQ 1'b1; + //check the gain of bit - update only for right edge found + if(~right_edge_found_pb[eg]) + right_gain_pb[eg*6+:6] <= #TCQ (right_edge_ref > prbs_dqs_tap_cnt_r-1)? + ((right_edge_pb[eg*6 +:6] > prbs_dqs_tap_cnt_r-1)? 0: prbs_dqs_tap_cnt_r-1- right_edge_pb[eg*6+:6]): + ((right_edge_pb[eg*6+:6] > right_edge_ref)? 0 : right_edge_ref - right_edge_pb[eg*6+:6]); + //no right edge found + end else if (prbs_dqs_tap_cnt_r == 6'h3f && ~right_edge_found_pb[eg]) begin + right_edge_pb[eg*6+:6] <= #TCQ 6'h3f; + right_edge_found_pb[eg] <= #TCQ 1'b1; + //right edge at 63. gain = max(0, ref_bit_right_tap - prev_right_edge) + right_gain_pb[eg*6+:6] <= #TCQ (right_edge_ref > right_edge_pb[eg*6+:6])? + (right_edge_ref - right_edge_pb[eg*6+:6]) : 0; + end + //update match flag - shift and update + match_flag_pb[eg*MIN_WIN+:MIN_WIN] <= #TCQ {match_flag_pb[(eg*MIN_WIN)+:(MIN_WIN-1)],compare_err_pb_latch_r[eg]}; + end else if (prbs_state_r == FINE_PI_DEC) begin + left_edge_found_pb[eg] <= #TCQ 1'b0; + right_edge_found_pb[eg] <= #TCQ 1'b0; + left_loss_pb[eg*6+:6] <= #TCQ 'b0; + right_gain_pb[eg*6+:6] <= #TCQ 'b0; + match_flag_pb[eg*MIN_WIN+:MIN_WIN] <= #TCQ MATCH_ALL_ONE ; //new fix + left_edge_updated[eg] <= #TCQ 'b0; //used only for update largest ref_bit and largest_left_edge + end else if (prbs_state_r == FINE_PI_INC) begin + left_edge_updated[eg] <= #TCQ 'b0; //used only for update largest ref_bit and largest_left_edge + end + end + end //always + end //for + endgenerate + + //update fine_delay according to loss/gain value per bit + generate + genvar f_pb; + for(f_pb=0; f_pbleft_loss_pb[f_pb*6+:6])?1'b1:1'b0; + end + end + end + endgenerate + + //fine inc stage (stage cnt 0,1,2), fine dec stage (stage cnt 3) + always @ (posedge clk) begin + if (rst) + fine_inc_stage <= #TCQ 'b1; + else + fine_inc_stage <= #TCQ (stage_cnt!='d3); + end +//***************************************************************** + + always @(posedge clk) + if (rst) begin + prbs_dqs_cnt_r <= #TCQ 'b0; + prbs_tap_en_r <= #TCQ 1'b0; + prbs_tap_inc_r <= #TCQ 1'b0; + prbs_prech_req_r <= #TCQ 1'b0; + prbs_state_r <= #TCQ PRBS_IDLE; + prbs_found_1st_edge_r <= #TCQ 1'b0; + prbs_found_2nd_edge_r <= #TCQ 1'b0; + prbs_1st_edge_taps_r <= #TCQ 6'bxxxxxx; + prbs_inc_tap_cnt <= #TCQ 'b0; + prbs_dec_tap_cnt <= #TCQ 'b0; + new_cnt_dqs_r <= #TCQ 1'b0; + if (SIM_CAL_OPTION == "FAST_CAL") + prbs_rdlvl_done <= #TCQ 1'b1; + else + prbs_rdlvl_done <= #TCQ 1'b0; + prbs_2nd_edge_taps_r <= #TCQ 6'bxxxxxx; + prbs_last_byte_done <= #TCQ 1'b0; + prbs_tap_mod <= #TCQ 'd0; + reset_rd_addr <= #TCQ 'b0; + fine_pi_dec_cnt <= #TCQ 'b0; + match_flag_and <= #TCQ MATCH_ALL_ONE; + match_flag_or <= #TCQ MATCH_ALL_ONE; + no_err_win_detected <= #TCQ 1'b0; + no_err_win_detected_latch <= #TCQ 1'b0; + valid_window_cnt <= 2'd0; + stage_cnt <= #TCQ 2'b00; + right_edge_found <= #TCQ 1'b0; + largest_left_edge <= #TCQ 6'b000000; + smallest_right_edge <= #TCQ 6'b111111; + num_samples_done_ind <= #TCQ 'b0; + fine_delay_sel <= #TCQ 'b0; + fine_dly_error <= #TCQ 'b0; + edge_det_error <= #TCQ 'b0; + complex_pi_incdec_done <= #TCQ 1'b0; + complex_init_pi_dec_done_r <= #TCQ 1'b0; + end else begin + + case (prbs_state_r) + + PRBS_IDLE: begin + prbs_last_byte_done <= #TCQ 1'b0; + prbs_prech_req_r <= #TCQ 1'b0; + if (prbs_rdlvl_start && ~prbs_rdlvl_start_r) begin + if (SIM_CAL_OPTION == "SKIP_CAL" || SIM_CAL_OPTION == "FAST_CAL") begin + prbs_state_r <= #TCQ PRBS_DONE; + reset_rd_addr <= #TCQ 1'b1; + end else begin + new_cnt_dqs_r <= #TCQ 1'b1; + prbs_state_r <= #TCQ PRBS_NEW_DQS_WAIT; + fine_pi_dec_cnt <= #TCQ pi_counter_read_val;//. + end + end + end + + // Wait for the new DQS group to change + // also gives time for the read data IN_FIFO to + // output the updated data for the new DQS group + PRBS_NEW_DQS_WAIT: begin + reset_rd_addr <= #TCQ 'b0; + prbs_last_byte_done <= #TCQ 1'b0; + prbs_prech_req_r <= #TCQ 1'b0; + stage_cnt <= #TCQ 2'b0; + match_flag_and <= #TCQ MATCH_ALL_ONE; + match_flag_or <= #TCQ MATCH_ALL_ONE; + no_err_win_detected <= #TCQ 1'b0; + no_err_win_detected_latch <= #TCQ 1'b0; + if (cnt_wait_state) begin + new_cnt_dqs_r <= #TCQ 1'b0; + prbs_state_r <= #TCQ fine_calib? FINE_PI_DEC:PRBS_PAT_COMPARE; + //For normal, it doesn't have initial pi incdec + complex_pi_incdec_done <= #TCQ fine_calib? complex_pi_incdec_done: 1'b1; + end + end + + // Check for presence of data eye edge. During this state, we + // sample the read data multiple times, and look for changes + // in the read data, specifically: + // 1. A change in the read data compared with the value of + // read data from the previous delay tap. This indicates + // that the most recent tap delay increment has moved us + // into either a new window, or moved/kept us in the + // transition/jitter region between windows. Note that this + // condition only needs to be checked for once, and for + // logistical purposes, we check this soon after entering + // this state (see comment in PRBS_PAT_COMPARE below for + // why this is done) + // 2. A change in the read data while we are in this state + // (i.e. in the absence of a tap delay increment). This + // indicates that we're close enough to a window edge that + // jitter will cause the read data to change even in the + // absence of a tap delay change + PRBS_PAT_COMPARE: begin + // Continue to sample read data and look for edges until the + // appropriate time interval (shorter for simulation-only, + // much, much longer for actual h/w) has elapsed + //comparision started - wait for next PI movement after read + complex_pi_incdec_done <= #TCQ 1'b0; //need to be wait for new incdec done + if (num_samples_done_r) begin + if (prbs_dqs_tap_limit_r) + // Only one edge detected and ran out of taps since only one + // bit time worth of taps available for window detection. This + // can happen if at tap 0 DQS is in previous window which results + // in only left edge being detected. Or at tap 0 DQS is in the + // current window resulting in only right edge being detected. + // Depending on the frequency this case can also happen if at + // tap 0 DQS is in the left noise region resulting in only left + // edge being detected. + prbs_state_r <= #TCQ PRBS_CALC_TAPS_PRE; + else if (compare_err_latch || (prbs_dqs_tap_cnt_r == 'd0)) begin + // Sticky bit - asserted after we encounter an edge, although + // the current edge may not be considered the "first edge" this + // just means we found at least one edge + prbs_found_1st_edge_r <= #TCQ 1'b1; + + // Both edges of data valid window found: + // If we've found a second edge after a region of stability + // then we must have just passed the second ("right" edge of + // the window. Record this second_edge_taps = current tap-1, + // because we're one past the actual second edge tap, where + // the edge taps represent the extremes of the data valid + // window (i.e. smallest & largest taps where data still valid + if (prbs_found_1st_edge_r) begin + prbs_found_2nd_edge_r <= #TCQ 1'b1; + prbs_2nd_edge_taps_r <= #TCQ prbs_dqs_tap_cnt_r - 1; + prbs_state_r <= #TCQ PRBS_CALC_TAPS_PRE; + end else begin + // Otherwise, an edge was found (just not the "second" edge) + // Assuming DQS is in the correct window at tap 0 of Phaser IN + // fine tap. The first edge found is the right edge of the valid + // window and is the beginning of the jitter region hence done! + if (compare_err_latch) + prbs_1st_edge_taps_r <= #TCQ prbs_dqs_tap_cnt_r + 1; + else + prbs_1st_edge_taps_r <= #TCQ 'd0; + + prbs_inc_tap_cnt <= #TCQ rdlvl_cpt_tap_cnt - prbs_dqs_tap_cnt_r; + prbs_state_r <= #TCQ RD_DONE_WAIT_FOR_PI_INC_INC; + end + end else begin + // Otherwise, if we haven't found an edge.... + // If we still have taps left to use, then keep incrementing + if (prbs_found_1st_edge_r) + //prbs_state_r <= #TCQ PRBS_INC_DQS; + prbs_state_r <= #TCQ RD_DONE_WAIT_FOR_PI_INC_INC; + else + //prbs_state_r <= #TCQ PRBS_DEC_DQS; + prbs_state_r <= #TCQ RD_DONE_WAIT_FOR_PI_INC_DEC; + end + end + end + + // Increment Phaser_IN delay for DQS + PRBS_INC_DQS: begin + prbs_state_r <= #TCQ PRBS_INC_DQS_WAIT; + if (prbs_inc_tap_cnt > 'd0) + prbs_inc_tap_cnt <= #TCQ prbs_inc_tap_cnt - 1; + if (~prbs_dqs_tap_limit_r) begin + prbs_tap_en_r <= #TCQ 1'b1; + prbs_tap_inc_r <= #TCQ 1'b1; + end + end + + // Wait for Phaser_In to settle, before checking again for an edge + // only all INC is done, incdec done is asserted + PRBS_INC_DQS_WAIT: begin + prbs_tap_en_r <= #TCQ 1'b0; + prbs_tap_inc_r <= #TCQ 1'b0; + if (cnt_wait_state) begin + if (prbs_inc_tap_cnt > 'd0) + prbs_state_r <= #TCQ PRBS_INC_DQS; //centering + else begin + prbs_state_r <= #TCQ PRBS_PAT_COMPARE; + complex_pi_incdec_done <= #TCQ 1'b1; + end + end + end + + // Calculate final value of Phaser_IN taps. At this point, one or both + // edges of data eye have been found, and/or all taps have been + // exhausted looking for the edges + // NOTE: The amount to be decrement by is calculated, not the + // absolute setting for DQS. + // CENTER compensation with shift by 1 + //wait finishing the read before PI dec to center + PRBS_CALC_TAPS: begin + if (center_comp) begin + prbs_dec_tap_cnt <= #TCQ (dec_cnt[5] & dec_cnt[0])? 'd32: dec_cnt + pi_adj; + fine_dly_error <= #TCQ (dec_cnt[5] & dec_cnt[0])? 1'b1: fine_dly_error; //sticky bit + prbs_state_r <= #TCQ RD_DONE_WAIT_FOR_PI_INC_DEC; + end else begin //No center compensation + if (prbs_found_2nd_edge_r && prbs_found_1st_edge_r) begin + // Both edges detected + prbs_dec_tap_cnt + <= #TCQ ((prbs_2nd_edge_taps_r - + prbs_1st_edge_taps_r)>>1) + 1 + pi_adj; + edge_det_error <= #TCQ edge_det_error? 1'b1: + (prbs_1st_edge_taps_r >= prbs_2nd_edge_taps_r); + end else if (~prbs_found_2nd_edge_r && prbs_found_1st_edge_r) begin + // Only left edge detected + prbs_dec_tap_cnt + <= #TCQ ((prbs_dqs_tap_cnt_r - prbs_1st_edge_taps_r)>>1) + pi_adj; + end else begin + // No edges detected + edge_det_error <= #TCQ 1'b1; + prbs_dec_tap_cnt + <= #TCQ (prbs_dqs_tap_cnt_r>>1) + pi_adj; + end + // Now use the value we just calculated to decrement CPT taps + // to the desired calibration point + //wait finishing the read before PI dec to center + prbs_state_r <= #TCQ RD_DONE_WAIT_FOR_PI_INC_DEC; + end + end + + // decrement capture clock for final adjustment - center + // capture clock in middle of data eye. This adjustment will occur + // only when both the edges are found usign CPT taps. Must do this + // incrementally to avoid clock glitching (since CPT drives clock + // divider within each ISERDES) + PRBS_DEC_DQS: begin + prbs_tap_en_r <= #TCQ 1'b1; + prbs_tap_inc_r <= #TCQ 1'b0; + // once adjustment is complete, we're done with calibration for + // this DQS, repeat for next DQS + if (prbs_dec_tap_cnt > 'd0) + prbs_dec_tap_cnt <= #TCQ prbs_dec_tap_cnt - 1; + if (prbs_dec_tap_cnt == 6'b000001) begin + prbs_state_r <= #TCQ PRBS_NEXT_DQS; + //only all DEC is done, incdec done is asserted + complex_pi_incdec_done <= #TCQ 1'b1; + end else + prbs_state_r <= #TCQ PRBS_DEC_DQS_WAIT; + end + + PRBS_DEC_DQS_WAIT: begin + prbs_tap_en_r <= #TCQ 1'b0; + prbs_tap_inc_r <= #TCQ 1'b0; + if (cnt_wait_state) begin + if (prbs_dec_tap_cnt > 'd0) + prbs_state_r <= #TCQ PRBS_DEC_DQS; + else begin + //PI movement is done, go to read and compare + complex_pi_incdec_done <= #TCQ 1'b1; + prbs_state_r <= #TCQ PRBS_PAT_COMPARE; + end + end + end + + // Determine whether we're done, or have more DQS's to calibrate + // Also request precharge after every byte, as appropriate + PRBS_NEXT_DQS: begin + //Need to do initial dec for per-bit algorithm + complex_init_pi_dec_done_r <= #TCQ 1'b0; + reset_rd_addr <= #TCQ 'b1; + prbs_prech_req_r <= #TCQ 1'b1; + prbs_tap_en_r <= #TCQ 1'b0; + prbs_tap_inc_r <= #TCQ 1'b0; + // Prepare for another iteration with next DQS group + prbs_found_1st_edge_r <= #TCQ 1'b0; + prbs_found_2nd_edge_r <= #TCQ 1'b0; + prbs_1st_edge_taps_r <= #TCQ 'd0; + prbs_2nd_edge_taps_r <= #TCQ 'd0; + largest_left_edge <= #TCQ 6'b000000; + smallest_right_edge <= #TCQ 6'b111111; + if (prbs_dqs_cnt_r >= DQS_WIDTH-1) begin + prbs_last_byte_done <= #TCQ 1'b1; + end + + // Wait until precharge that occurs in between calibration of + // DQS groups is finished + if (prech_done) begin + prbs_prech_req_r <= #TCQ 1'b0; + if (prbs_dqs_cnt_r >= DQS_WIDTH-1) begin + // All DQS groups done + prbs_state_r <= #TCQ PRBS_DONE; + end else begin + // Process next DQS group + new_cnt_dqs_r <= #TCQ 1'b1; + prbs_dqs_cnt_r <= #TCQ prbs_dqs_cnt_r + 1; + prbs_state_r <= #TCQ PRBS_NEW_DQS_PREWAIT; + end + end + end + + PRBS_NEW_DQS_PREWAIT: begin + if (cnt_wait_state) begin + prbs_state_r <= #TCQ PRBS_NEW_DQS_WAIT; + fine_pi_dec_cnt <= #TCQ pi_counter_read_val;//. + end + end + + PRBS_CALC_TAPS_PRE: + begin + //Wait for new PI movement + complex_pi_incdec_done <= #TCQ 1'b0; + prbs_state_r <= #TCQ fine_calib? PRBS_NEXT_DQS:PRBS_CALC_TAPS_WAIT; + if(center_comp && ~fine_calib) begin + if(prbs_found_1st_edge_r) largest_left_edge <= #TCQ prbs_1st_edge_taps_r; + else largest_left_edge <= #TCQ 6'd0; + if(prbs_found_2nd_edge_r) smallest_right_edge <= #TCQ prbs_2nd_edge_taps_r; + else smallest_right_edge <= #TCQ 6'd63; + end + end + + //wait for center compensation + PRBS_CALC_TAPS_WAIT: + begin + prbs_state_r <= #TCQ PRBS_CALC_TAPS; + end + //if it is fine_inc stage (first/second stage): dec to 0 + //if it is fine_dec stage (third stage): dec to center + FINE_PI_DEC: begin + fine_delay_sel <= #TCQ 'b0; + if(fine_pi_dec_cnt > 0) begin + prbs_tap_en_r <= #TCQ 1'b1; + prbs_tap_inc_r <= #TCQ 1'b0; + fine_pi_dec_cnt <= #TCQ fine_pi_dec_cnt - 'd1; + end + prbs_state_r <= #TCQ FINE_PI_DEC_WAIT; + end + //wait for phaser_in tap decrement. + //if first/second stage is done, goes to FINE_PI_INC + //if last stage is done, goes to NEXT_DQS + //All PI DEC is done, incdec done is asserted + FINE_PI_DEC_WAIT: begin + prbs_tap_en_r <= #TCQ 1'b0; + prbs_tap_inc_r <= #TCQ 1'b0; + if(cnt_wait_state) begin + if(fine_pi_dec_cnt >0) + prbs_state_r <= #TCQ FINE_PI_DEC; + else begin + complex_pi_incdec_done <= #TCQ 1'b1; + if(fine_inc_stage) + prbs_state_r <= #TCQ FINE_PAT_COMPARE_PER_BIT; //start from pi tap "0" + else + prbs_state_r <= #TCQ PRBS_CALC_TAPS_PRE; //finish the process and go to the next DQS + end + end + end + + //finish the read before PI increament + RD_DONE_WAIT_FOR_PI_INC_INC: begin + if(complex_act_start) + prbs_state_r <= #TCQ fine_calib? FINE_PI_INC: PRBS_INC_DQS; + end + + FINE_PI_INC: begin + //prevent left edge update after valid window found + if(|left_edge_updated && ~no_err_win_detected_latch) largest_left_edge <= #TCQ prbs_dqs_tap_cnt_r- (MIN_WIN-1); + + if (no_err_win_detected) begin + //ignore previous right edge updated if valid window shown after + right_edge_found <= #TCQ 'b0; + end else if(|right_edge_found_pb && ~right_edge_found) begin + smallest_right_edge <= #TCQ prbs_dqs_tap_cnt_r -1 ; + right_edge_found <= #TCQ 'b1; + end + //until minimum window is detected, left edge can be updated + //once minimum window is detected, no further left edge update will be done + if(no_err_win_detected) no_err_win_detected_latch <= #TCQ 1'b1; + prbs_state_r <= #TCQ FINE_PI_INC_WAIT; + if(~prbs_dqs_tap_limit_r) begin + prbs_tap_en_r <= #TCQ 1'b1; + prbs_tap_inc_r <= #TCQ 1'b1; + end + end + + //wait for phase_in tap increment + //need to do pattern compare for every bit + FINE_PI_INC_WAIT: begin + prbs_tap_en_r <= #TCQ 1'b0; + prbs_tap_inc_r <= #TCQ 1'b0; + if (cnt_wait_state) begin + prbs_state_r <= #TCQ FINE_PAT_COMPARE_PER_BIT; + //PI movement is done, go to read and compare + complex_pi_incdec_done <= #TCQ 1'b1; + end + end + + //compare per bit data and update flags,left/right edge + FINE_PAT_COMPARE_PER_BIT: begin + //comparision started - initial pi dec is done, wait for another pi movement after read + complex_init_pi_dec_done_r <= #TCQ 1'b1; + complex_pi_incdec_done <= #TCQ 1'b0; + if(num_samples_done_r) begin //sampling boundary + //update and_flag - shift and add + match_flag_and <= #TCQ {match_flag_and[MIN_WIN-2:0],compare_err_pb_and}; + match_flag_or <= #TCQ {match_flag_or[MIN_WIN-2:0],compare_err_pb_or}; + + //to solve false left/right edge detection + if({match_flag_or[MIN_WIN-2:0],compare_err_pb_or} == MIN_PASS) begin //if it detect minimum window + no_err_win_detected <= #TCQ 1'b1; + valid_window_cnt <= #TCQ valid_window_cnt + 'd1; + end else begin + no_err_win_detected <= #TCQ 1'b0; + end + //if it is consecutive 8 passing taps followed by fail or tap limit (finish the search) + //don't go to fine_FINE_CALC_TAPS to prevent to skip whole stage + //Or if all right edge are found + if((match_flag_and == MIN_PASS && compare_err_pb_and && (prbs_dqs_tap_cnt_r > MIN_WIN )) || prbs_dqs_tap_limit_r || (&right_edge_found_pb)) begin + prbs_state_r <= #TCQ FINE_CALC_TAPS; + //if all right edge are alined (all right edge found at the same time), update smallest right edge in here + //doesnt need to set right_edge_found to 1 since it is not used after this stage + if(!right_edge_found) smallest_right_edge <= #TCQ prbs_dqs_tap_cnt_r-1; + end else begin + prbs_state_r <= #TCQ RD_DONE_WAIT_FOR_PI_INC_INC; //keep increase until all fail + end + num_samples_done_ind <= num_samples_done_r; + end + end + //for fine_inc stage, inc all fine delay + //for fine_dec stage, apply dec fine delay for specific bits (by calculating the loss/gain) + // put phaser_in taps to the center + FINE_CALC_TAPS: begin + if(num_samples_done_ind || num_samples_done_r) begin + num_samples_done_ind <= #TCQ 'b0; //indicate num_samples_done_r is set + right_edge_found <= #TCQ 1'b0; //reset right edge found + match_flag_and <= #TCQ MATCH_ALL_ONE; //reset match flag for all bits + match_flag_or <= #TCQ MATCH_ALL_ONE; //reset match flag for all bits + no_err_win_detected <= #TCQ 1'b0; + no_err_win_detected_latch <= #TCQ 1'b0; + prbs_state_r <= #TCQ FINE_CALC_TAPS_WAIT; + valid_window_cnt <= #TCQ 2'd0; //reset valid window counter + end + end + + FINE_CALC_TAPS_WAIT: begin //wait for ROM read out + if(stage_cnt == 'd2) begin //last stage : back to center + if(center_comp) begin + fine_pi_dec_cnt <= #TCQ (dec_cnt[5]&dec_cnt[0])? 'd32: prbs_dqs_tap_cnt_r - smallest_right_edge + dec_cnt - 1 + pi_adj ; //going to the center value & shift by 1 + fine_dly_error <= #TCQ (dec_cnt[5]&dec_cnt[0]) ? 1'b1: fine_dly_error; + end else begin + fine_pi_dec_cnt <= #TCQ prbs_dqs_tap_cnt_r - center_calc[6:1] - center_calc[0] + pi_adj; //going to the center value & shift left by 1 + fine_dly_error <= #TCQ 1'b0; + end + end else begin + fine_pi_dec_cnt <= #TCQ prbs_dqs_tap_cnt_r; + end + if (bit_cnt == DRAM_WIDTH) begin + fine_delay_sel <= #TCQ 'b1; + stage_cnt <= #TCQ stage_cnt + 1; + prbs_state_r <= #TCQ RD_DONE_WAIT_FOR_PI_INC_DEC; + end + + end + + //wait for finishing the read before PI movement + RD_DONE_WAIT_FOR_PI_INC_DEC: begin + if (complex_act_start & ~complex_rdlvl_err) + prbs_state_r <= #TCQ fine_calib? FINE_PI_DEC: PRBS_DEC_DQS; + end + + // Done with this stage of calibration + PRBS_DONE: begin + prbs_prech_req_r <= #TCQ 1'b0; + prbs_last_byte_done <= #TCQ 1'b0; + prbs_rdlvl_done <= #TCQ ~complex_rdlvl_err; + reset_rd_addr <= #TCQ 1'b0; + end + + endcase + end + + //ROM generation for dec counter + always @ (largest_left_edge or smallest_right_edge) begin + case ({largest_left_edge, smallest_right_edge}) + 12'd0 : mem_out_dec = 6'b111111; + 12'd1 : mem_out_dec = 6'b111111; + 12'd2 : mem_out_dec = 6'b111111; + 12'd3 : mem_out_dec = 6'b111111; + 12'd4 : mem_out_dec = 6'b111111; + 12'd5 : mem_out_dec = 6'b111111; + 12'd6 : mem_out_dec = 6'b000100; + 12'd7 : mem_out_dec = 6'b000101; + 12'd8 : mem_out_dec = 6'b000101; + 12'd9 : mem_out_dec = 6'b000110; + 12'd10 : mem_out_dec = 6'b000110; + 12'd11 : mem_out_dec = 6'b000111; + 12'd12 : mem_out_dec = 6'b001000; + 12'd13 : mem_out_dec = 6'b001000; + 12'd14 : mem_out_dec = 6'b001001; + 12'd15 : mem_out_dec = 6'b001010; + 12'd16 : mem_out_dec = 6'b001010; + 12'd17 : mem_out_dec = 6'b001011; + 12'd18 : mem_out_dec = 6'b001011; + 12'd19 : mem_out_dec = 6'b001100; + 12'd20 : mem_out_dec = 6'b001100; + 12'd21 : mem_out_dec = 6'b001100; + 12'd22 : mem_out_dec = 6'b001100; + 12'd23 : mem_out_dec = 6'b001101; + 12'd24 : mem_out_dec = 6'b001100; + 12'd25 : mem_out_dec = 6'b001100; + 12'd26 : mem_out_dec = 6'b001101; + 12'd27 : mem_out_dec = 6'b001110; + 12'd28 : mem_out_dec = 6'b001110; + 12'd29 : mem_out_dec = 6'b001111; + 12'd30 : mem_out_dec = 6'b010000; + 12'd31 : mem_out_dec = 6'b010001; + 12'd32 : mem_out_dec = 6'b010001; + 12'd33 : mem_out_dec = 6'b010010; + 12'd34 : mem_out_dec = 6'b010010; + 12'd35 : mem_out_dec = 6'b010010; + 12'd36 : mem_out_dec = 6'b010011; + 12'd37 : mem_out_dec = 6'b010100; + 12'd38 : mem_out_dec = 6'b010100; + 12'd39 : mem_out_dec = 6'b010101; + 12'd40 : mem_out_dec = 6'b010101; + 12'd41 : mem_out_dec = 6'b010110; + 12'd42 : mem_out_dec = 6'b010110; + 12'd43 : mem_out_dec = 6'b010111; + 12'd44 : mem_out_dec = 6'b011000; + 12'd45 : mem_out_dec = 6'b011001; + 12'd46 : mem_out_dec = 6'b011001; + 12'd47 : mem_out_dec = 6'b011010; + 12'd48 : mem_out_dec = 6'b011010; + 12'd49 : mem_out_dec = 6'b011011; + 12'd50 : mem_out_dec = 6'b011011; + 12'd51 : mem_out_dec = 6'b011100; + 12'd52 : mem_out_dec = 6'b011100; + 12'd53 : mem_out_dec = 6'b011100; + 12'd54 : mem_out_dec = 6'b011100; + 12'd55 : mem_out_dec = 6'b011100; + 12'd56 : mem_out_dec = 6'b011100; + 12'd57 : mem_out_dec = 6'b011100; + 12'd58 : mem_out_dec = 6'b011100; + 12'd59 : mem_out_dec = 6'b011101; + 12'd60 : mem_out_dec = 6'b011110; + 12'd61 : mem_out_dec = 6'b011111; + 12'd62 : mem_out_dec = 6'b100000; + 12'd63 : mem_out_dec = 6'b100000; + 12'd64 : mem_out_dec = 6'b111111; + 12'd65 : mem_out_dec = 6'b111111; + 12'd66 : mem_out_dec = 6'b111111; + 12'd67 : mem_out_dec = 6'b111111; + 12'd68 : mem_out_dec = 6'b111111; + 12'd69 : mem_out_dec = 6'b111111; + 12'd70 : mem_out_dec = 6'b111111; + 12'd71 : mem_out_dec = 6'b000100; + 12'd72 : mem_out_dec = 6'b000100; + 12'd73 : mem_out_dec = 6'b000101; + 12'd74 : mem_out_dec = 6'b000110; + 12'd75 : mem_out_dec = 6'b000111; + 12'd76 : mem_out_dec = 6'b000111; + 12'd77 : mem_out_dec = 6'b001000; + 12'd78 : mem_out_dec = 6'b001001; + 12'd79 : mem_out_dec = 6'b001001; + 12'd80 : mem_out_dec = 6'b001010; + 12'd81 : mem_out_dec = 6'b001010; + 12'd82 : mem_out_dec = 6'b001011; + 12'd83 : mem_out_dec = 6'b001011; + 12'd84 : mem_out_dec = 6'b001011; + 12'd85 : mem_out_dec = 6'b001011; + 12'd86 : mem_out_dec = 6'b001011; + 12'd87 : mem_out_dec = 6'b001100; + 12'd88 : mem_out_dec = 6'b001011; + 12'd89 : mem_out_dec = 6'b001100; + 12'd90 : mem_out_dec = 6'b001100; + 12'd91 : mem_out_dec = 6'b001101; + 12'd92 : mem_out_dec = 6'b001110; + 12'd93 : mem_out_dec = 6'b001111; + 12'd94 : mem_out_dec = 6'b001111; + 12'd95 : mem_out_dec = 6'b010000; + 12'd96 : mem_out_dec = 6'b010001; + 12'd97 : mem_out_dec = 6'b010001; + 12'd98 : mem_out_dec = 6'b010010; + 12'd99 : mem_out_dec = 6'b010010; + 12'd100 : mem_out_dec = 6'b010011; + 12'd101 : mem_out_dec = 6'b010011; + 12'd102 : mem_out_dec = 6'b010100; + 12'd103 : mem_out_dec = 6'b010100; + 12'd104 : mem_out_dec = 6'b010100; + 12'd105 : mem_out_dec = 6'b010101; + 12'd106 : mem_out_dec = 6'b010110; + 12'd107 : mem_out_dec = 6'b010111; + 12'd108 : mem_out_dec = 6'b010111; + 12'd109 : mem_out_dec = 6'b011000; + 12'd110 : mem_out_dec = 6'b011001; + 12'd111 : mem_out_dec = 6'b011001; + 12'd112 : mem_out_dec = 6'b011010; + 12'd113 : mem_out_dec = 6'b011010; + 12'd114 : mem_out_dec = 6'b011011; + 12'd115 : mem_out_dec = 6'b011011; + 12'd116 : mem_out_dec = 6'b011011; + 12'd117 : mem_out_dec = 6'b011011; + 12'd118 : mem_out_dec = 6'b011011; + 12'd119 : mem_out_dec = 6'b011011; + 12'd120 : mem_out_dec = 6'b011011; + 12'd121 : mem_out_dec = 6'b011011; + 12'd122 : mem_out_dec = 6'b011100; + 12'd123 : mem_out_dec = 6'b011101; + 12'd124 : mem_out_dec = 6'b011110; + 12'd125 : mem_out_dec = 6'b011110; + 12'd126 : mem_out_dec = 6'b011111; + 12'd127 : mem_out_dec = 6'b100000; + 12'd128 : mem_out_dec = 6'b111111; + 12'd129 : mem_out_dec = 6'b111111; + 12'd130 : mem_out_dec = 6'b111111; + 12'd131 : mem_out_dec = 6'b111111; + 12'd132 : mem_out_dec = 6'b111111; + 12'd133 : mem_out_dec = 6'b111111; + 12'd134 : mem_out_dec = 6'b111111; + 12'd135 : mem_out_dec = 6'b111111; + 12'd136 : mem_out_dec = 6'b000100; + 12'd137 : mem_out_dec = 6'b000101; + 12'd138 : mem_out_dec = 6'b000101; + 12'd139 : mem_out_dec = 6'b000110; + 12'd140 : mem_out_dec = 6'b000110; + 12'd141 : mem_out_dec = 6'b000111; + 12'd142 : mem_out_dec = 6'b001000; + 12'd143 : mem_out_dec = 6'b001001; + 12'd144 : mem_out_dec = 6'b001001; + 12'd145 : mem_out_dec = 6'b001010; + 12'd146 : mem_out_dec = 6'b001010; + 12'd147 : mem_out_dec = 6'b001010; + 12'd148 : mem_out_dec = 6'b001010; + 12'd149 : mem_out_dec = 6'b001010; + 12'd150 : mem_out_dec = 6'b001010; + 12'd151 : mem_out_dec = 6'b001011; + 12'd152 : mem_out_dec = 6'b001010; + 12'd153 : mem_out_dec = 6'b001011; + 12'd154 : mem_out_dec = 6'b001100; + 12'd155 : mem_out_dec = 6'b001101; + 12'd156 : mem_out_dec = 6'b001101; + 12'd157 : mem_out_dec = 6'b001110; + 12'd158 : mem_out_dec = 6'b001111; + 12'd159 : mem_out_dec = 6'b010000; + 12'd160 : mem_out_dec = 6'b010000; + 12'd161 : mem_out_dec = 6'b010001; + 12'd162 : mem_out_dec = 6'b010001; + 12'd163 : mem_out_dec = 6'b010010; + 12'd164 : mem_out_dec = 6'b010010; + 12'd165 : mem_out_dec = 6'b010011; + 12'd166 : mem_out_dec = 6'b010011; + 12'd167 : mem_out_dec = 6'b010100; + 12'd168 : mem_out_dec = 6'b010100; + 12'd169 : mem_out_dec = 6'b010101; + 12'd170 : mem_out_dec = 6'b010101; + 12'd171 : mem_out_dec = 6'b010110; + 12'd172 : mem_out_dec = 6'b010111; + 12'd173 : mem_out_dec = 6'b010111; + 12'd174 : mem_out_dec = 6'b011000; + 12'd175 : mem_out_dec = 6'b011001; + 12'd176 : mem_out_dec = 6'b011001; + 12'd177 : mem_out_dec = 6'b011010; + 12'd178 : mem_out_dec = 6'b011010; + 12'd179 : mem_out_dec = 6'b011010; + 12'd180 : mem_out_dec = 6'b011010; + 12'd181 : mem_out_dec = 6'b011010; + 12'd182 : mem_out_dec = 6'b011010; + 12'd183 : mem_out_dec = 6'b011010; + 12'd184 : mem_out_dec = 6'b011010; + 12'd185 : mem_out_dec = 6'b011011; + 12'd186 : mem_out_dec = 6'b011100; + 12'd187 : mem_out_dec = 6'b011100; + 12'd188 : mem_out_dec = 6'b011101; + 12'd189 : mem_out_dec = 6'b011110; + 12'd190 : mem_out_dec = 6'b011111; + 12'd191 : mem_out_dec = 6'b100000; + 12'd192 : mem_out_dec = 6'b111111; + 12'd193 : mem_out_dec = 6'b111111; + 12'd194 : mem_out_dec = 6'b111111; + 12'd195 : mem_out_dec = 6'b111111; + 12'd196 : mem_out_dec = 6'b111111; + 12'd197 : mem_out_dec = 6'b111111; + 12'd198 : mem_out_dec = 6'b111111; + 12'd199 : mem_out_dec = 6'b111111; + 12'd200 : mem_out_dec = 6'b111111; + 12'd201 : mem_out_dec = 6'b000100; + 12'd202 : mem_out_dec = 6'b000100; + 12'd203 : mem_out_dec = 6'b000101; + 12'd204 : mem_out_dec = 6'b000110; + 12'd205 : mem_out_dec = 6'b000111; + 12'd206 : mem_out_dec = 6'b001000; + 12'd207 : mem_out_dec = 6'b001000; + 12'd208 : mem_out_dec = 6'b001001; + 12'd209 : mem_out_dec = 6'b001001; + 12'd210 : mem_out_dec = 6'b001001; + 12'd211 : mem_out_dec = 6'b001001; + 12'd212 : mem_out_dec = 6'b001001; + 12'd213 : mem_out_dec = 6'b001001; + 12'd214 : mem_out_dec = 6'b001001; + 12'd215 : mem_out_dec = 6'b001010; + 12'd216 : mem_out_dec = 6'b001010; + 12'd217 : mem_out_dec = 6'b001011; + 12'd218 : mem_out_dec = 6'b001011; + 12'd219 : mem_out_dec = 6'b001100; + 12'd220 : mem_out_dec = 6'b001101; + 12'd221 : mem_out_dec = 6'b001110; + 12'd222 : mem_out_dec = 6'b001111; + 12'd223 : mem_out_dec = 6'b001111; + 12'd224 : mem_out_dec = 6'b010000; + 12'd225 : mem_out_dec = 6'b010000; + 12'd226 : mem_out_dec = 6'b010001; + 12'd227 : mem_out_dec = 6'b010001; + 12'd228 : mem_out_dec = 6'b010010; + 12'd229 : mem_out_dec = 6'b010010; + 12'd230 : mem_out_dec = 6'b010011; + 12'd231 : mem_out_dec = 6'b010011; + 12'd232 : mem_out_dec = 6'b010011; + 12'd233 : mem_out_dec = 6'b010100; + 12'd234 : mem_out_dec = 6'b010100; + 12'd235 : mem_out_dec = 6'b010101; + 12'd236 : mem_out_dec = 6'b010110; + 12'd237 : mem_out_dec = 6'b010111; + 12'd238 : mem_out_dec = 6'b011000; + 12'd239 : mem_out_dec = 6'b011000; + 12'd240 : mem_out_dec = 6'b011001; + 12'd241 : mem_out_dec = 6'b011001; + 12'd242 : mem_out_dec = 6'b011001; + 12'd243 : mem_out_dec = 6'b011001; + 12'd244 : mem_out_dec = 6'b011001; + 12'd245 : mem_out_dec = 6'b011001; + 12'd246 : mem_out_dec = 6'b011001; + 12'd247 : mem_out_dec = 6'b011001; + 12'd248 : mem_out_dec = 6'b011010; + 12'd249 : mem_out_dec = 6'b011010; + 12'd250 : mem_out_dec = 6'b011011; + 12'd251 : mem_out_dec = 6'b011100; + 12'd252 : mem_out_dec = 6'b011101; + 12'd253 : mem_out_dec = 6'b011110; + 12'd254 : mem_out_dec = 6'b011110; + 12'd255 : mem_out_dec = 6'b011111; + 12'd256 : mem_out_dec = 6'b111111; + 12'd257 : mem_out_dec = 6'b111111; + 12'd258 : mem_out_dec = 6'b111111; + 12'd259 : mem_out_dec = 6'b111111; + 12'd260 : mem_out_dec = 6'b111111; + 12'd261 : mem_out_dec = 6'b111111; + 12'd262 : mem_out_dec = 6'b111111; + 12'd263 : mem_out_dec = 6'b111111; + 12'd264 : mem_out_dec = 6'b111111; + 12'd265 : mem_out_dec = 6'b111111; + 12'd266 : mem_out_dec = 6'b000100; + 12'd267 : mem_out_dec = 6'b000101; + 12'd268 : mem_out_dec = 6'b000110; + 12'd269 : mem_out_dec = 6'b000110; + 12'd270 : mem_out_dec = 6'b000111; + 12'd271 : mem_out_dec = 6'b001000; + 12'd272 : mem_out_dec = 6'b001000; + 12'd273 : mem_out_dec = 6'b001000; + 12'd274 : mem_out_dec = 6'b001000; + 12'd275 : mem_out_dec = 6'b001000; + 12'd276 : mem_out_dec = 6'b001000; + 12'd277 : mem_out_dec = 6'b001000; + 12'd278 : mem_out_dec = 6'b001000; + 12'd279 : mem_out_dec = 6'b001001; + 12'd280 : mem_out_dec = 6'b001001; + 12'd281 : mem_out_dec = 6'b001010; + 12'd282 : mem_out_dec = 6'b001011; + 12'd283 : mem_out_dec = 6'b001100; + 12'd284 : mem_out_dec = 6'b001101; + 12'd285 : mem_out_dec = 6'b001101; + 12'd286 : mem_out_dec = 6'b001110; + 12'd287 : mem_out_dec = 6'b001111; + 12'd288 : mem_out_dec = 6'b001111; + 12'd289 : mem_out_dec = 6'b010000; + 12'd290 : mem_out_dec = 6'b010000; + 12'd291 : mem_out_dec = 6'b010001; + 12'd292 : mem_out_dec = 6'b010001; + 12'd293 : mem_out_dec = 6'b010010; + 12'd294 : mem_out_dec = 6'b010010; + 12'd295 : mem_out_dec = 6'b010011; + 12'd296 : mem_out_dec = 6'b010010; + 12'd297 : mem_out_dec = 6'b010011; + 12'd298 : mem_out_dec = 6'b010100; + 12'd299 : mem_out_dec = 6'b010101; + 12'd300 : mem_out_dec = 6'b010110; + 12'd301 : mem_out_dec = 6'b010110; + 12'd302 : mem_out_dec = 6'b010111; + 12'd303 : mem_out_dec = 6'b011000; + 12'd304 : mem_out_dec = 6'b011000; + 12'd305 : mem_out_dec = 6'b011000; + 12'd306 : mem_out_dec = 6'b011000; + 12'd307 : mem_out_dec = 6'b011000; + 12'd308 : mem_out_dec = 6'b011000; + 12'd309 : mem_out_dec = 6'b011000; + 12'd310 : mem_out_dec = 6'b011000; + 12'd311 : mem_out_dec = 6'b011001; + 12'd312 : mem_out_dec = 6'b011001; + 12'd313 : mem_out_dec = 6'b011010; + 12'd314 : mem_out_dec = 6'b011011; + 12'd315 : mem_out_dec = 6'b011100; + 12'd316 : mem_out_dec = 6'b011100; + 12'd317 : mem_out_dec = 6'b011101; + 12'd318 : mem_out_dec = 6'b011110; + 12'd319 : mem_out_dec = 6'b011111; + 12'd320 : mem_out_dec = 6'b111111; + 12'd321 : mem_out_dec = 6'b111111; + 12'd322 : mem_out_dec = 6'b111111; + 12'd323 : mem_out_dec = 6'b111111; + 12'd324 : mem_out_dec = 6'b111111; + 12'd325 : mem_out_dec = 6'b111111; + 12'd326 : mem_out_dec = 6'b111111; + 12'd327 : mem_out_dec = 6'b111111; + 12'd328 : mem_out_dec = 6'b111111; + 12'd329 : mem_out_dec = 6'b111111; + 12'd330 : mem_out_dec = 6'b111111; + 12'd331 : mem_out_dec = 6'b000100; + 12'd332 : mem_out_dec = 6'b000101; + 12'd333 : mem_out_dec = 6'b000110; + 12'd334 : mem_out_dec = 6'b000111; + 12'd335 : mem_out_dec = 6'b001000; + 12'd336 : mem_out_dec = 6'b000111; + 12'd337 : mem_out_dec = 6'b000111; + 12'd338 : mem_out_dec = 6'b000111; + 12'd339 : mem_out_dec = 6'b000111; + 12'd340 : mem_out_dec = 6'b000111; + 12'd341 : mem_out_dec = 6'b000111; + 12'd342 : mem_out_dec = 6'b001000; + 12'd343 : mem_out_dec = 6'b001001; + 12'd344 : mem_out_dec = 6'b001001; + 12'd345 : mem_out_dec = 6'b001010; + 12'd346 : mem_out_dec = 6'b001011; + 12'd347 : mem_out_dec = 6'b001011; + 12'd348 : mem_out_dec = 6'b001100; + 12'd349 : mem_out_dec = 6'b001101; + 12'd350 : mem_out_dec = 6'b001110; + 12'd351 : mem_out_dec = 6'b001110; + 12'd352 : mem_out_dec = 6'b001111; + 12'd353 : mem_out_dec = 6'b001111; + 12'd354 : mem_out_dec = 6'b010000; + 12'd355 : mem_out_dec = 6'b010000; + 12'd356 : mem_out_dec = 6'b010001; + 12'd357 : mem_out_dec = 6'b010001; + 12'd358 : mem_out_dec = 6'b010001; + 12'd359 : mem_out_dec = 6'b010010; + 12'd360 : mem_out_dec = 6'b010010; + 12'd361 : mem_out_dec = 6'b010011; + 12'd362 : mem_out_dec = 6'b010100; + 12'd363 : mem_out_dec = 6'b010100; + 12'd364 : mem_out_dec = 6'b010101; + 12'd365 : mem_out_dec = 6'b010110; + 12'd366 : mem_out_dec = 6'b010111; + 12'd367 : mem_out_dec = 6'b011000; + 12'd368 : mem_out_dec = 6'b010111; + 12'd369 : mem_out_dec = 6'b010111; + 12'd370 : mem_out_dec = 6'b010111; + 12'd371 : mem_out_dec = 6'b010111; + 12'd372 : mem_out_dec = 6'b010111; + 12'd373 : mem_out_dec = 6'b010111; + 12'd374 : mem_out_dec = 6'b011000; + 12'd375 : mem_out_dec = 6'b011001; + 12'd376 : mem_out_dec = 6'b011001; + 12'd377 : mem_out_dec = 6'b011010; + 12'd378 : mem_out_dec = 6'b011010; + 12'd379 : mem_out_dec = 6'b011011; + 12'd380 : mem_out_dec = 6'b011100; + 12'd381 : mem_out_dec = 6'b011101; + 12'd382 : mem_out_dec = 6'b011101; + 12'd383 : mem_out_dec = 6'b011110; + 12'd384 : mem_out_dec = 6'b111111; + 12'd385 : mem_out_dec = 6'b111111; + 12'd386 : mem_out_dec = 6'b111111; + 12'd387 : mem_out_dec = 6'b111111; + 12'd388 : mem_out_dec = 6'b111111; + 12'd389 : mem_out_dec = 6'b111111; + 12'd390 : mem_out_dec = 6'b111111; + 12'd391 : mem_out_dec = 6'b111111; + 12'd392 : mem_out_dec = 6'b111111; + 12'd393 : mem_out_dec = 6'b111111; + 12'd394 : mem_out_dec = 6'b111111; + 12'd395 : mem_out_dec = 6'b111111; + 12'd396 : mem_out_dec = 6'b000101; + 12'd397 : mem_out_dec = 6'b000110; + 12'd398 : mem_out_dec = 6'b000110; + 12'd399 : mem_out_dec = 6'b000111; + 12'd400 : mem_out_dec = 6'b000110; + 12'd401 : mem_out_dec = 6'b000110; + 12'd402 : mem_out_dec = 6'b000110; + 12'd403 : mem_out_dec = 6'b000110; + 12'd404 : mem_out_dec = 6'b000110; + 12'd405 : mem_out_dec = 6'b000111; + 12'd406 : mem_out_dec = 6'b001000; + 12'd407 : mem_out_dec = 6'b001000; + 12'd408 : mem_out_dec = 6'b001001; + 12'd409 : mem_out_dec = 6'b001001; + 12'd410 : mem_out_dec = 6'b001010; + 12'd411 : mem_out_dec = 6'b001011; + 12'd412 : mem_out_dec = 6'b001100; + 12'd413 : mem_out_dec = 6'b001100; + 12'd414 : mem_out_dec = 6'b001101; + 12'd415 : mem_out_dec = 6'b001110; + 12'd416 : mem_out_dec = 6'b001110; + 12'd417 : mem_out_dec = 6'b001111; + 12'd418 : mem_out_dec = 6'b001111; + 12'd419 : mem_out_dec = 6'b010000; + 12'd420 : mem_out_dec = 6'b010000; + 12'd421 : mem_out_dec = 6'b010000; + 12'd422 : mem_out_dec = 6'b010001; + 12'd423 : mem_out_dec = 6'b010001; + 12'd424 : mem_out_dec = 6'b010010; + 12'd425 : mem_out_dec = 6'b010011; + 12'd426 : mem_out_dec = 6'b010011; + 12'd427 : mem_out_dec = 6'b010100; + 12'd428 : mem_out_dec = 6'b010101; + 12'd429 : mem_out_dec = 6'b010110; + 12'd430 : mem_out_dec = 6'b010111; + 12'd431 : mem_out_dec = 6'b010111; + 12'd432 : mem_out_dec = 6'b010110; + 12'd433 : mem_out_dec = 6'b010110; + 12'd434 : mem_out_dec = 6'b010110; + 12'd435 : mem_out_dec = 6'b010110; + 12'd436 : mem_out_dec = 6'b010110; + 12'd437 : mem_out_dec = 6'b010111; + 12'd438 : mem_out_dec = 6'b010111; + 12'd439 : mem_out_dec = 6'b011000; + 12'd440 : mem_out_dec = 6'b011001; + 12'd441 : mem_out_dec = 6'b011001; + 12'd442 : mem_out_dec = 6'b011010; + 12'd443 : mem_out_dec = 6'b011011; + 12'd444 : mem_out_dec = 6'b011011; + 12'd445 : mem_out_dec = 6'b011100; + 12'd446 : mem_out_dec = 6'b011101; + 12'd447 : mem_out_dec = 6'b011110; + 12'd448 : mem_out_dec = 6'b111111; + 12'd449 : mem_out_dec = 6'b111111; + 12'd450 : mem_out_dec = 6'b111111; + 12'd451 : mem_out_dec = 6'b111111; + 12'd452 : mem_out_dec = 6'b111111; + 12'd453 : mem_out_dec = 6'b111111; + 12'd454 : mem_out_dec = 6'b111111; + 12'd455 : mem_out_dec = 6'b111111; + 12'd456 : mem_out_dec = 6'b111111; + 12'd457 : mem_out_dec = 6'b111111; + 12'd458 : mem_out_dec = 6'b111111; + 12'd459 : mem_out_dec = 6'b111111; + 12'd460 : mem_out_dec = 6'b111111; + 12'd461 : mem_out_dec = 6'b000101; + 12'd462 : mem_out_dec = 6'b000110; + 12'd463 : mem_out_dec = 6'b000110; + 12'd464 : mem_out_dec = 6'b000110; + 12'd465 : mem_out_dec = 6'b000110; + 12'd466 : mem_out_dec = 6'b000110; + 12'd467 : mem_out_dec = 6'b000110; + 12'd468 : mem_out_dec = 6'b000110; + 12'd469 : mem_out_dec = 6'b000111; + 12'd470 : mem_out_dec = 6'b000111; + 12'd471 : mem_out_dec = 6'b001000; + 12'd472 : mem_out_dec = 6'b001000; + 12'd473 : mem_out_dec = 6'b001001; + 12'd474 : mem_out_dec = 6'b001010; + 12'd475 : mem_out_dec = 6'b001011; + 12'd476 : mem_out_dec = 6'b001011; + 12'd477 : mem_out_dec = 6'b001100; + 12'd478 : mem_out_dec = 6'b001101; + 12'd479 : mem_out_dec = 6'b001110; + 12'd480 : mem_out_dec = 6'b001110; + 12'd481 : mem_out_dec = 6'b001110; + 12'd482 : mem_out_dec = 6'b001111; + 12'd483 : mem_out_dec = 6'b001111; + 12'd484 : mem_out_dec = 6'b010000; + 12'd485 : mem_out_dec = 6'b010000; + 12'd486 : mem_out_dec = 6'b010000; + 12'd487 : mem_out_dec = 6'b010001; + 12'd488 : mem_out_dec = 6'b010001; + 12'd489 : mem_out_dec = 6'b010010; + 12'd490 : mem_out_dec = 6'b010011; + 12'd491 : mem_out_dec = 6'b010100; + 12'd492 : mem_out_dec = 6'b010101; + 12'd493 : mem_out_dec = 6'b010101; + 12'd494 : mem_out_dec = 6'b010110; + 12'd495 : mem_out_dec = 6'b010110; + 12'd496 : mem_out_dec = 6'b010110; + 12'd497 : mem_out_dec = 6'b010110; + 12'd498 : mem_out_dec = 6'b010101; + 12'd499 : mem_out_dec = 6'b010101; + 12'd500 : mem_out_dec = 6'b010110; + 12'd501 : mem_out_dec = 6'b010111; + 12'd502 : mem_out_dec = 6'b010111; + 12'd503 : mem_out_dec = 6'b011000; + 12'd504 : mem_out_dec = 6'b011000; + 12'd505 : mem_out_dec = 6'b011001; + 12'd506 : mem_out_dec = 6'b011010; + 12'd507 : mem_out_dec = 6'b011010; + 12'd508 : mem_out_dec = 6'b011011; + 12'd509 : mem_out_dec = 6'b011100; + 12'd510 : mem_out_dec = 6'b011101; + 12'd511 : mem_out_dec = 6'b011101; + 12'd512 : mem_out_dec = 6'b111111; + 12'd513 : mem_out_dec = 6'b111111; + 12'd514 : mem_out_dec = 6'b111111; + 12'd515 : mem_out_dec = 6'b111111; + 12'd516 : mem_out_dec = 6'b111111; + 12'd517 : mem_out_dec = 6'b111111; + 12'd518 : mem_out_dec = 6'b111111; + 12'd519 : mem_out_dec = 6'b111111; + 12'd520 : mem_out_dec = 6'b111111; + 12'd521 : mem_out_dec = 6'b111111; + 12'd522 : mem_out_dec = 6'b111111; + 12'd523 : mem_out_dec = 6'b111111; + 12'd524 : mem_out_dec = 6'b111111; + 12'd525 : mem_out_dec = 6'b111111; + 12'd526 : mem_out_dec = 6'b000100; + 12'd527 : mem_out_dec = 6'b000101; + 12'd528 : mem_out_dec = 6'b000100; + 12'd529 : mem_out_dec = 6'b000100; + 12'd530 : mem_out_dec = 6'b000100; + 12'd531 : mem_out_dec = 6'b000101; + 12'd532 : mem_out_dec = 6'b000101; + 12'd533 : mem_out_dec = 6'b000110; + 12'd534 : mem_out_dec = 6'b000111; + 12'd535 : mem_out_dec = 6'b000111; + 12'd536 : mem_out_dec = 6'b000111; + 12'd537 : mem_out_dec = 6'b001000; + 12'd538 : mem_out_dec = 6'b001001; + 12'd539 : mem_out_dec = 6'b001010; + 12'd540 : mem_out_dec = 6'b001011; + 12'd541 : mem_out_dec = 6'b001011; + 12'd542 : mem_out_dec = 6'b001100; + 12'd543 : mem_out_dec = 6'b001101; + 12'd544 : mem_out_dec = 6'b001101; + 12'd545 : mem_out_dec = 6'b001101; + 12'd546 : mem_out_dec = 6'b001110; + 12'd547 : mem_out_dec = 6'b001110; + 12'd548 : mem_out_dec = 6'b001110; + 12'd549 : mem_out_dec = 6'b001111; + 12'd550 : mem_out_dec = 6'b010000; + 12'd551 : mem_out_dec = 6'b010000; + 12'd552 : mem_out_dec = 6'b010001; + 12'd553 : mem_out_dec = 6'b010001; + 12'd554 : mem_out_dec = 6'b010010; + 12'd555 : mem_out_dec = 6'b010010; + 12'd556 : mem_out_dec = 6'b010011; + 12'd557 : mem_out_dec = 6'b010100; + 12'd558 : mem_out_dec = 6'b010100; + 12'd559 : mem_out_dec = 6'b010100; + 12'd560 : mem_out_dec = 6'b010100; + 12'd561 : mem_out_dec = 6'b010100; + 12'd562 : mem_out_dec = 6'b010100; + 12'd563 : mem_out_dec = 6'b010101; + 12'd564 : mem_out_dec = 6'b010101; + 12'd565 : mem_out_dec = 6'b010110; + 12'd566 : mem_out_dec = 6'b010111; + 12'd567 : mem_out_dec = 6'b010111; + 12'd568 : mem_out_dec = 6'b010111; + 12'd569 : mem_out_dec = 6'b011000; + 12'd570 : mem_out_dec = 6'b011001; + 12'd571 : mem_out_dec = 6'b011010; + 12'd572 : mem_out_dec = 6'b011010; + 12'd573 : mem_out_dec = 6'b011011; + 12'd574 : mem_out_dec = 6'b011100; + 12'd575 : mem_out_dec = 6'b011101; + 12'd576 : mem_out_dec = 6'b111111; + 12'd577 : mem_out_dec = 6'b111111; + 12'd578 : mem_out_dec = 6'b111111; + 12'd579 : mem_out_dec = 6'b111111; + 12'd580 : mem_out_dec = 6'b111111; + 12'd581 : mem_out_dec = 6'b111111; + 12'd582 : mem_out_dec = 6'b111111; + 12'd583 : mem_out_dec = 6'b111111; + 12'd584 : mem_out_dec = 6'b111111; + 12'd585 : mem_out_dec = 6'b111111; + 12'd586 : mem_out_dec = 6'b111111; + 12'd587 : mem_out_dec = 6'b111111; + 12'd588 : mem_out_dec = 6'b111111; + 12'd589 : mem_out_dec = 6'b111111; + 12'd590 : mem_out_dec = 6'b111111; + 12'd591 : mem_out_dec = 6'b000100; + 12'd592 : mem_out_dec = 6'b000011; + 12'd593 : mem_out_dec = 6'b000011; + 12'd594 : mem_out_dec = 6'b000100; + 12'd595 : mem_out_dec = 6'b000101; + 12'd596 : mem_out_dec = 6'b000101; + 12'd597 : mem_out_dec = 6'b000110; + 12'd598 : mem_out_dec = 6'b000110; + 12'd599 : mem_out_dec = 6'b000111; + 12'd600 : mem_out_dec = 6'b000111; + 12'd601 : mem_out_dec = 6'b001000; + 12'd602 : mem_out_dec = 6'b001001; + 12'd603 : mem_out_dec = 6'b001010; + 12'd604 : mem_out_dec = 6'b001010; + 12'd605 : mem_out_dec = 6'b001011; + 12'd606 : mem_out_dec = 6'b001100; + 12'd607 : mem_out_dec = 6'b001101; + 12'd608 : mem_out_dec = 6'b001101; + 12'd609 : mem_out_dec = 6'b001101; + 12'd610 : mem_out_dec = 6'b001110; + 12'd611 : mem_out_dec = 6'b001110; + 12'd612 : mem_out_dec = 6'b001110; + 12'd613 : mem_out_dec = 6'b001111; + 12'd614 : mem_out_dec = 6'b010000; + 12'd615 : mem_out_dec = 6'b010000; + 12'd616 : mem_out_dec = 6'b010000; + 12'd617 : mem_out_dec = 6'b010001; + 12'd618 : mem_out_dec = 6'b010001; + 12'd619 : mem_out_dec = 6'b010010; + 12'd620 : mem_out_dec = 6'b010010; + 12'd621 : mem_out_dec = 6'b010011; + 12'd622 : mem_out_dec = 6'b010011; + 12'd623 : mem_out_dec = 6'b010100; + 12'd624 : mem_out_dec = 6'b010011; + 12'd625 : mem_out_dec = 6'b010011; + 12'd626 : mem_out_dec = 6'b010100; + 12'd627 : mem_out_dec = 6'b010100; + 12'd628 : mem_out_dec = 6'b010101; + 12'd629 : mem_out_dec = 6'b010110; + 12'd630 : mem_out_dec = 6'b010110; + 12'd631 : mem_out_dec = 6'b010111; + 12'd632 : mem_out_dec = 6'b010111; + 12'd633 : mem_out_dec = 6'b011000; + 12'd634 : mem_out_dec = 6'b011001; + 12'd635 : mem_out_dec = 6'b011001; + 12'd636 : mem_out_dec = 6'b011010; + 12'd637 : mem_out_dec = 6'b011011; + 12'd638 : mem_out_dec = 6'b011100; + 12'd639 : mem_out_dec = 6'b011100; + 12'd640 : mem_out_dec = 6'b111111; + 12'd641 : mem_out_dec = 6'b111111; + 12'd642 : mem_out_dec = 6'b111111; + 12'd643 : mem_out_dec = 6'b111111; + 12'd644 : mem_out_dec = 6'b111111; + 12'd645 : mem_out_dec = 6'b111111; + 12'd646 : mem_out_dec = 6'b111111; + 12'd647 : mem_out_dec = 6'b111111; + 12'd648 : mem_out_dec = 6'b111111; + 12'd649 : mem_out_dec = 6'b111111; + 12'd650 : mem_out_dec = 6'b111111; + 12'd651 : mem_out_dec = 6'b111111; + 12'd652 : mem_out_dec = 6'b111111; + 12'd653 : mem_out_dec = 6'b111111; + 12'd654 : mem_out_dec = 6'b111111; + 12'd655 : mem_out_dec = 6'b111111; + 12'd656 : mem_out_dec = 6'b000011; + 12'd657 : mem_out_dec = 6'b000011; + 12'd658 : mem_out_dec = 6'b000100; + 12'd659 : mem_out_dec = 6'b000100; + 12'd660 : mem_out_dec = 6'b000101; + 12'd661 : mem_out_dec = 6'b000110; + 12'd662 : mem_out_dec = 6'b000110; + 12'd663 : mem_out_dec = 6'b000111; + 12'd664 : mem_out_dec = 6'b000111; + 12'd665 : mem_out_dec = 6'b001000; + 12'd666 : mem_out_dec = 6'b001001; + 12'd667 : mem_out_dec = 6'b001001; + 12'd668 : mem_out_dec = 6'b001010; + 12'd669 : mem_out_dec = 6'b001011; + 12'd670 : mem_out_dec = 6'b001100; + 12'd671 : mem_out_dec = 6'b001100; + 12'd672 : mem_out_dec = 6'b001100; + 12'd673 : mem_out_dec = 6'b001101; + 12'd674 : mem_out_dec = 6'b001101; + 12'd675 : mem_out_dec = 6'b001101; + 12'd676 : mem_out_dec = 6'b001110; + 12'd677 : mem_out_dec = 6'b001111; + 12'd678 : mem_out_dec = 6'b001111; + 12'd679 : mem_out_dec = 6'b010000; + 12'd680 : mem_out_dec = 6'b010000; + 12'd681 : mem_out_dec = 6'b010000; + 12'd682 : mem_out_dec = 6'b010001; + 12'd683 : mem_out_dec = 6'b010001; + 12'd684 : mem_out_dec = 6'b010010; + 12'd685 : mem_out_dec = 6'b010010; + 12'd686 : mem_out_dec = 6'b010011; + 12'd687 : mem_out_dec = 6'b010011; + 12'd688 : mem_out_dec = 6'b010011; + 12'd689 : mem_out_dec = 6'b010011; + 12'd690 : mem_out_dec = 6'b010100; + 12'd691 : mem_out_dec = 6'b010100; + 12'd692 : mem_out_dec = 6'b010101; + 12'd693 : mem_out_dec = 6'b010101; + 12'd694 : mem_out_dec = 6'b010110; + 12'd695 : mem_out_dec = 6'b010111; + 12'd696 : mem_out_dec = 6'b010111; + 12'd697 : mem_out_dec = 6'b011000; + 12'd698 : mem_out_dec = 6'b011000; + 12'd699 : mem_out_dec = 6'b011001; + 12'd700 : mem_out_dec = 6'b011010; + 12'd701 : mem_out_dec = 6'b011011; + 12'd702 : mem_out_dec = 6'b011011; + 12'd703 : mem_out_dec = 6'b011100; + 12'd704 : mem_out_dec = 6'b111111; + 12'd705 : mem_out_dec = 6'b111111; + 12'd706 : mem_out_dec = 6'b111111; + 12'd707 : mem_out_dec = 6'b111111; + 12'd708 : mem_out_dec = 6'b111111; + 12'd709 : mem_out_dec = 6'b111111; + 12'd710 : mem_out_dec = 6'b111111; + 12'd711 : mem_out_dec = 6'b111111; + 12'd712 : mem_out_dec = 6'b111111; + 12'd713 : mem_out_dec = 6'b111111; + 12'd714 : mem_out_dec = 6'b111111; + 12'd715 : mem_out_dec = 6'b111111; + 12'd716 : mem_out_dec = 6'b111111; + 12'd717 : mem_out_dec = 6'b111111; + 12'd718 : mem_out_dec = 6'b111111; + 12'd719 : mem_out_dec = 6'b111111; + 12'd720 : mem_out_dec = 6'b111111; + 12'd721 : mem_out_dec = 6'b000011; + 12'd722 : mem_out_dec = 6'b000100; + 12'd723 : mem_out_dec = 6'b000100; + 12'd724 : mem_out_dec = 6'b000101; + 12'd725 : mem_out_dec = 6'b000101; + 12'd726 : mem_out_dec = 6'b000110; + 12'd727 : mem_out_dec = 6'b000111; + 12'd728 : mem_out_dec = 6'b000111; + 12'd729 : mem_out_dec = 6'b000111; + 12'd730 : mem_out_dec = 6'b001000; + 12'd731 : mem_out_dec = 6'b001001; + 12'd732 : mem_out_dec = 6'b001010; + 12'd733 : mem_out_dec = 6'b001011; + 12'd734 : mem_out_dec = 6'b001011; + 12'd735 : mem_out_dec = 6'b001100; + 12'd736 : mem_out_dec = 6'b001100; + 12'd737 : mem_out_dec = 6'b001101; + 12'd738 : mem_out_dec = 6'b001101; + 12'd739 : mem_out_dec = 6'b001101; + 12'd740 : mem_out_dec = 6'b001110; + 12'd741 : mem_out_dec = 6'b001110; + 12'd742 : mem_out_dec = 6'b001111; + 12'd743 : mem_out_dec = 6'b010000; + 12'd744 : mem_out_dec = 6'b001111; + 12'd745 : mem_out_dec = 6'b010000; + 12'd746 : mem_out_dec = 6'b010000; + 12'd747 : mem_out_dec = 6'b010001; + 12'd748 : mem_out_dec = 6'b010001; + 12'd749 : mem_out_dec = 6'b010010; + 12'd750 : mem_out_dec = 6'b010010; + 12'd751 : mem_out_dec = 6'b010011; + 12'd752 : mem_out_dec = 6'b010010; + 12'd753 : mem_out_dec = 6'b010011; + 12'd754 : mem_out_dec = 6'b010011; + 12'd755 : mem_out_dec = 6'b010100; + 12'd756 : mem_out_dec = 6'b010101; + 12'd757 : mem_out_dec = 6'b010101; + 12'd758 : mem_out_dec = 6'b010110; + 12'd759 : mem_out_dec = 6'b010110; + 12'd760 : mem_out_dec = 6'b010111; + 12'd761 : mem_out_dec = 6'b010111; + 12'd762 : mem_out_dec = 6'b011000; + 12'd763 : mem_out_dec = 6'b011001; + 12'd764 : mem_out_dec = 6'b011010; + 12'd765 : mem_out_dec = 6'b011010; + 12'd766 : mem_out_dec = 6'b011011; + 12'd767 : mem_out_dec = 6'b011100; + 12'd768 : mem_out_dec = 6'b111111; + 12'd769 : mem_out_dec = 6'b111111; + 12'd770 : mem_out_dec = 6'b111111; + 12'd771 : mem_out_dec = 6'b111111; + 12'd772 : mem_out_dec = 6'b111111; + 12'd773 : mem_out_dec = 6'b111111; + 12'd774 : mem_out_dec = 6'b111111; + 12'd775 : mem_out_dec = 6'b111111; + 12'd776 : mem_out_dec = 6'b111111; + 12'd777 : mem_out_dec = 6'b111111; + 12'd778 : mem_out_dec = 6'b111111; + 12'd779 : mem_out_dec = 6'b111111; + 12'd780 : mem_out_dec = 6'b111111; + 12'd781 : mem_out_dec = 6'b111111; + 12'd782 : mem_out_dec = 6'b111111; + 12'd783 : mem_out_dec = 6'b111111; + 12'd784 : mem_out_dec = 6'b111111; + 12'd785 : mem_out_dec = 6'b111111; + 12'd786 : mem_out_dec = 6'b000011; + 12'd787 : mem_out_dec = 6'b000100; + 12'd788 : mem_out_dec = 6'b000101; + 12'd789 : mem_out_dec = 6'b000101; + 12'd790 : mem_out_dec = 6'b000110; + 12'd791 : mem_out_dec = 6'b000110; + 12'd792 : mem_out_dec = 6'b000110; + 12'd793 : mem_out_dec = 6'b000111; + 12'd794 : mem_out_dec = 6'b001000; + 12'd795 : mem_out_dec = 6'b001001; + 12'd796 : mem_out_dec = 6'b001010; + 12'd797 : mem_out_dec = 6'b001010; + 12'd798 : mem_out_dec = 6'b001011; + 12'd799 : mem_out_dec = 6'b001100; + 12'd800 : mem_out_dec = 6'b001100; + 12'd801 : mem_out_dec = 6'b001100; + 12'd802 : mem_out_dec = 6'b001101; + 12'd803 : mem_out_dec = 6'b001101; + 12'd804 : mem_out_dec = 6'b001110; + 12'd805 : mem_out_dec = 6'b001110; + 12'd806 : mem_out_dec = 6'b001111; + 12'd807 : mem_out_dec = 6'b010000; + 12'd808 : mem_out_dec = 6'b001111; + 12'd809 : mem_out_dec = 6'b001111; + 12'd810 : mem_out_dec = 6'b010000; + 12'd811 : mem_out_dec = 6'b010000; + 12'd812 : mem_out_dec = 6'b010001; + 12'd813 : mem_out_dec = 6'b010001; + 12'd814 : mem_out_dec = 6'b010010; + 12'd815 : mem_out_dec = 6'b010010; + 12'd816 : mem_out_dec = 6'b010010; + 12'd817 : mem_out_dec = 6'b010011; + 12'd818 : mem_out_dec = 6'b010011; + 12'd819 : mem_out_dec = 6'b010100; + 12'd820 : mem_out_dec = 6'b010100; + 12'd821 : mem_out_dec = 6'b010101; + 12'd822 : mem_out_dec = 6'b010110; + 12'd823 : mem_out_dec = 6'b010110; + 12'd824 : mem_out_dec = 6'b010110; + 12'd825 : mem_out_dec = 6'b010111; + 12'd826 : mem_out_dec = 6'b011000; + 12'd827 : mem_out_dec = 6'b011001; + 12'd828 : mem_out_dec = 6'b011001; + 12'd829 : mem_out_dec = 6'b011010; + 12'd830 : mem_out_dec = 6'b011011; + 12'd831 : mem_out_dec = 6'b011100; + 12'd832 : mem_out_dec = 6'b111111; + 12'd833 : mem_out_dec = 6'b111111; + 12'd834 : mem_out_dec = 6'b111111; + 12'd835 : mem_out_dec = 6'b111111; + 12'd836 : mem_out_dec = 6'b111111; + 12'd837 : mem_out_dec = 6'b111111; + 12'd838 : mem_out_dec = 6'b111111; + 12'd839 : mem_out_dec = 6'b111111; + 12'd840 : mem_out_dec = 6'b111111; + 12'd841 : mem_out_dec = 6'b111111; + 12'd842 : mem_out_dec = 6'b111111; + 12'd843 : mem_out_dec = 6'b111111; + 12'd844 : mem_out_dec = 6'b111111; + 12'd845 : mem_out_dec = 6'b111111; + 12'd846 : mem_out_dec = 6'b111111; + 12'd847 : mem_out_dec = 6'b111111; + 12'd848 : mem_out_dec = 6'b111111; + 12'd849 : mem_out_dec = 6'b111111; + 12'd850 : mem_out_dec = 6'b111111; + 12'd851 : mem_out_dec = 6'b000100; + 12'd852 : mem_out_dec = 6'b000100; + 12'd853 : mem_out_dec = 6'b000101; + 12'd854 : mem_out_dec = 6'b000101; + 12'd855 : mem_out_dec = 6'b000110; + 12'd856 : mem_out_dec = 6'b000110; + 12'd857 : mem_out_dec = 6'b000111; + 12'd858 : mem_out_dec = 6'b001000; + 12'd859 : mem_out_dec = 6'b001001; + 12'd860 : mem_out_dec = 6'b001001; + 12'd861 : mem_out_dec = 6'b001010; + 12'd862 : mem_out_dec = 6'b001011; + 12'd863 : mem_out_dec = 6'b001100; + 12'd864 : mem_out_dec = 6'b001100; + 12'd865 : mem_out_dec = 6'b001100; + 12'd866 : mem_out_dec = 6'b001100; + 12'd867 : mem_out_dec = 6'b001101; + 12'd868 : mem_out_dec = 6'b001101; + 12'd869 : mem_out_dec = 6'b001110; + 12'd870 : mem_out_dec = 6'b001111; + 12'd871 : mem_out_dec = 6'b001111; + 12'd872 : mem_out_dec = 6'b001110; + 12'd873 : mem_out_dec = 6'b001111; + 12'd874 : mem_out_dec = 6'b001111; + 12'd875 : mem_out_dec = 6'b010000; + 12'd876 : mem_out_dec = 6'b010000; + 12'd877 : mem_out_dec = 6'b010001; + 12'd878 : mem_out_dec = 6'b010001; + 12'd879 : mem_out_dec = 6'b010010; + 12'd880 : mem_out_dec = 6'b010010; + 12'd881 : mem_out_dec = 6'b010010; + 12'd882 : mem_out_dec = 6'b010011; + 12'd883 : mem_out_dec = 6'b010100; + 12'd884 : mem_out_dec = 6'b010100; + 12'd885 : mem_out_dec = 6'b010101; + 12'd886 : mem_out_dec = 6'b010101; + 12'd887 : mem_out_dec = 6'b010110; + 12'd888 : mem_out_dec = 6'b010110; + 12'd889 : mem_out_dec = 6'b010111; + 12'd890 : mem_out_dec = 6'b011000; + 12'd891 : mem_out_dec = 6'b011000; + 12'd892 : mem_out_dec = 6'b011001; + 12'd893 : mem_out_dec = 6'b011010; + 12'd894 : mem_out_dec = 6'b011011; + 12'd895 : mem_out_dec = 6'b011011; + 12'd896 : mem_out_dec = 6'b111111; + 12'd897 : mem_out_dec = 6'b111111; + 12'd898 : mem_out_dec = 6'b111111; + 12'd899 : mem_out_dec = 6'b111111; + 12'd900 : mem_out_dec = 6'b111111; + 12'd901 : mem_out_dec = 6'b111111; + 12'd902 : mem_out_dec = 6'b111111; + 12'd903 : mem_out_dec = 6'b111111; + 12'd904 : mem_out_dec = 6'b111111; + 12'd905 : mem_out_dec = 6'b111111; + 12'd906 : mem_out_dec = 6'b111111; + 12'd907 : mem_out_dec = 6'b111111; + 12'd908 : mem_out_dec = 6'b111111; + 12'd909 : mem_out_dec = 6'b111111; + 12'd910 : mem_out_dec = 6'b111111; + 12'd911 : mem_out_dec = 6'b111111; + 12'd912 : mem_out_dec = 6'b111111; + 12'd913 : mem_out_dec = 6'b111111; + 12'd914 : mem_out_dec = 6'b111111; + 12'd915 : mem_out_dec = 6'b111111; + 12'd916 : mem_out_dec = 6'b000100; + 12'd917 : mem_out_dec = 6'b000101; + 12'd918 : mem_out_dec = 6'b000101; + 12'd919 : mem_out_dec = 6'b000110; + 12'd920 : mem_out_dec = 6'b000110; + 12'd921 : mem_out_dec = 6'b000111; + 12'd922 : mem_out_dec = 6'b001000; + 12'd923 : mem_out_dec = 6'b001000; + 12'd924 : mem_out_dec = 6'b001001; + 12'd925 : mem_out_dec = 6'b001010; + 12'd926 : mem_out_dec = 6'b001011; + 12'd927 : mem_out_dec = 6'b001011; + 12'd928 : mem_out_dec = 6'b001011; + 12'd929 : mem_out_dec = 6'b001100; + 12'd930 : mem_out_dec = 6'b001100; + 12'd931 : mem_out_dec = 6'b001101; + 12'd932 : mem_out_dec = 6'b001101; + 12'd933 : mem_out_dec = 6'b001110; + 12'd934 : mem_out_dec = 6'b001110; + 12'd935 : mem_out_dec = 6'b001111; + 12'd936 : mem_out_dec = 6'b001110; + 12'd937 : mem_out_dec = 6'b001110; + 12'd938 : mem_out_dec = 6'b001111; + 12'd939 : mem_out_dec = 6'b001111; + 12'd940 : mem_out_dec = 6'b010000; + 12'd941 : mem_out_dec = 6'b010000; + 12'd942 : mem_out_dec = 6'b010001; + 12'd943 : mem_out_dec = 6'b010001; + 12'd944 : mem_out_dec = 6'b010010; + 12'd945 : mem_out_dec = 6'b010010; + 12'd946 : mem_out_dec = 6'b010011; + 12'd947 : mem_out_dec = 6'b010011; + 12'd948 : mem_out_dec = 6'b010100; + 12'd949 : mem_out_dec = 6'b010100; + 12'd950 : mem_out_dec = 6'b010101; + 12'd951 : mem_out_dec = 6'b010110; + 12'd952 : mem_out_dec = 6'b010110; + 12'd953 : mem_out_dec = 6'b010111; + 12'd954 : mem_out_dec = 6'b010111; + 12'd955 : mem_out_dec = 6'b011000; + 12'd956 : mem_out_dec = 6'b011001; + 12'd957 : mem_out_dec = 6'b011010; + 12'd958 : mem_out_dec = 6'b011010; + 12'd959 : mem_out_dec = 6'b011011; + 12'd960 : mem_out_dec = 6'b111111; + 12'd961 : mem_out_dec = 6'b111111; + 12'd962 : mem_out_dec = 6'b111111; + 12'd963 : mem_out_dec = 6'b111111; + 12'd964 : mem_out_dec = 6'b111111; + 12'd965 : mem_out_dec = 6'b111111; + 12'd966 : mem_out_dec = 6'b111111; + 12'd967 : mem_out_dec = 6'b111111; + 12'd968 : mem_out_dec = 6'b111111; + 12'd969 : mem_out_dec = 6'b111111; + 12'd970 : mem_out_dec = 6'b111111; + 12'd971 : mem_out_dec = 6'b111111; + 12'd972 : mem_out_dec = 6'b111111; + 12'd973 : mem_out_dec = 6'b111111; + 12'd974 : mem_out_dec = 6'b111111; + 12'd975 : mem_out_dec = 6'b111111; + 12'd976 : mem_out_dec = 6'b111111; + 12'd977 : mem_out_dec = 6'b111111; + 12'd978 : mem_out_dec = 6'b111111; + 12'd979 : mem_out_dec = 6'b111111; + 12'd980 : mem_out_dec = 6'b111111; + 12'd981 : mem_out_dec = 6'b000100; + 12'd982 : mem_out_dec = 6'b000101; + 12'd983 : mem_out_dec = 6'b000110; + 12'd984 : mem_out_dec = 6'b000110; + 12'd985 : mem_out_dec = 6'b000111; + 12'd986 : mem_out_dec = 6'b000111; + 12'd987 : mem_out_dec = 6'b001000; + 12'd988 : mem_out_dec = 6'b001001; + 12'd989 : mem_out_dec = 6'b001010; + 12'd990 : mem_out_dec = 6'b001010; + 12'd991 : mem_out_dec = 6'b001011; + 12'd992 : mem_out_dec = 6'b001011; + 12'd993 : mem_out_dec = 6'b001011; + 12'd994 : mem_out_dec = 6'b001100; + 12'd995 : mem_out_dec = 6'b001100; + 12'd996 : mem_out_dec = 6'b001101; + 12'd997 : mem_out_dec = 6'b001110; + 12'd998 : mem_out_dec = 6'b001110; + 12'd999 : mem_out_dec = 6'b001110; + 12'd1000 : mem_out_dec = 6'b001101; + 12'd1001 : mem_out_dec = 6'b001110; + 12'd1002 : mem_out_dec = 6'b001110; + 12'd1003 : mem_out_dec = 6'b001111; + 12'd1004 : mem_out_dec = 6'b001111; + 12'd1005 : mem_out_dec = 6'b010000; + 12'd1006 : mem_out_dec = 6'b010000; + 12'd1007 : mem_out_dec = 6'b010001; + 12'd1008 : mem_out_dec = 6'b010001; + 12'd1009 : mem_out_dec = 6'b010010; + 12'd1010 : mem_out_dec = 6'b010011; + 12'd1011 : mem_out_dec = 6'b010011; + 12'd1012 : mem_out_dec = 6'b010100; + 12'd1013 : mem_out_dec = 6'b010100; + 12'd1014 : mem_out_dec = 6'b010101; + 12'd1015 : mem_out_dec = 6'b010110; + 12'd1016 : mem_out_dec = 6'b010110; + 12'd1017 : mem_out_dec = 6'b010110; + 12'd1018 : mem_out_dec = 6'b010111; + 12'd1019 : mem_out_dec = 6'b011000; + 12'd1020 : mem_out_dec = 6'b011001; + 12'd1021 : mem_out_dec = 6'b011001; + 12'd1022 : mem_out_dec = 6'b011010; + 12'd1023 : mem_out_dec = 6'b011011; + 12'd1024 : mem_out_dec = 6'b111111; + 12'd1025 : mem_out_dec = 6'b111111; + 12'd1026 : mem_out_dec = 6'b111111; + 12'd1027 : mem_out_dec = 6'b111111; + 12'd1028 : mem_out_dec = 6'b111111; + 12'd1029 : mem_out_dec = 6'b111111; + 12'd1030 : mem_out_dec = 6'b111111; + 12'd1031 : mem_out_dec = 6'b111111; + 12'd1032 : mem_out_dec = 6'b111111; + 12'd1033 : mem_out_dec = 6'b111111; + 12'd1034 : mem_out_dec = 6'b111111; + 12'd1035 : mem_out_dec = 6'b111111; + 12'd1036 : mem_out_dec = 6'b111111; + 12'd1037 : mem_out_dec = 6'b111111; + 12'd1038 : mem_out_dec = 6'b111111; + 12'd1039 : mem_out_dec = 6'b111111; + 12'd1040 : mem_out_dec = 6'b111111; + 12'd1041 : mem_out_dec = 6'b111111; + 12'd1042 : mem_out_dec = 6'b111111; + 12'd1043 : mem_out_dec = 6'b111111; + 12'd1044 : mem_out_dec = 6'b111111; + 12'd1045 : mem_out_dec = 6'b111111; + 12'd1046 : mem_out_dec = 6'b000100; + 12'd1047 : mem_out_dec = 6'b000101; + 12'd1048 : mem_out_dec = 6'b000101; + 12'd1049 : mem_out_dec = 6'b000110; + 12'd1050 : mem_out_dec = 6'b000110; + 12'd1051 : mem_out_dec = 6'b000111; + 12'd1052 : mem_out_dec = 6'b001000; + 12'd1053 : mem_out_dec = 6'b001001; + 12'd1054 : mem_out_dec = 6'b001001; + 12'd1055 : mem_out_dec = 6'b001010; + 12'd1056 : mem_out_dec = 6'b001010; + 12'd1057 : mem_out_dec = 6'b001011; + 12'd1058 : mem_out_dec = 6'b001011; + 12'd1059 : mem_out_dec = 6'b001100; + 12'd1060 : mem_out_dec = 6'b001100; + 12'd1061 : mem_out_dec = 6'b001100; + 12'd1062 : mem_out_dec = 6'b001100; + 12'd1063 : mem_out_dec = 6'b001100; + 12'd1064 : mem_out_dec = 6'b001100; + 12'd1065 : mem_out_dec = 6'b001100; + 12'd1066 : mem_out_dec = 6'b001101; + 12'd1067 : mem_out_dec = 6'b001101; + 12'd1068 : mem_out_dec = 6'b001110; + 12'd1069 : mem_out_dec = 6'b001111; + 12'd1070 : mem_out_dec = 6'b010000; + 12'd1071 : mem_out_dec = 6'b010000; + 12'd1072 : mem_out_dec = 6'b010001; + 12'd1073 : mem_out_dec = 6'b010001; + 12'd1074 : mem_out_dec = 6'b010010; + 12'd1075 : mem_out_dec = 6'b010010; + 12'd1076 : mem_out_dec = 6'b010011; + 12'd1077 : mem_out_dec = 6'b010011; + 12'd1078 : mem_out_dec = 6'b010100; + 12'd1079 : mem_out_dec = 6'b010101; + 12'd1080 : mem_out_dec = 6'b010101; + 12'd1081 : mem_out_dec = 6'b010110; + 12'd1082 : mem_out_dec = 6'b010110; + 12'd1083 : mem_out_dec = 6'b010111; + 12'd1084 : mem_out_dec = 6'b011000; + 12'd1085 : mem_out_dec = 6'b011000; + 12'd1086 : mem_out_dec = 6'b011001; + 12'd1087 : mem_out_dec = 6'b011010; + 12'd1088 : mem_out_dec = 6'b111111; + 12'd1089 : mem_out_dec = 6'b111111; + 12'd1090 : mem_out_dec = 6'b111111; + 12'd1091 : mem_out_dec = 6'b111111; + 12'd1092 : mem_out_dec = 6'b111111; + 12'd1093 : mem_out_dec = 6'b111111; + 12'd1094 : mem_out_dec = 6'b111111; + 12'd1095 : mem_out_dec = 6'b111111; + 12'd1096 : mem_out_dec = 6'b111111; + 12'd1097 : mem_out_dec = 6'b111111; + 12'd1098 : mem_out_dec = 6'b111111; + 12'd1099 : mem_out_dec = 6'b111111; + 12'd1100 : mem_out_dec = 6'b111111; + 12'd1101 : mem_out_dec = 6'b111111; + 12'd1102 : mem_out_dec = 6'b111111; + 12'd1103 : mem_out_dec = 6'b111111; + 12'd1104 : mem_out_dec = 6'b111111; + 12'd1105 : mem_out_dec = 6'b111111; + 12'd1106 : mem_out_dec = 6'b111111; + 12'd1107 : mem_out_dec = 6'b111111; + 12'd1108 : mem_out_dec = 6'b111111; + 12'd1109 : mem_out_dec = 6'b111111; + 12'd1110 : mem_out_dec = 6'b111111; + 12'd1111 : mem_out_dec = 6'b000100; + 12'd1112 : mem_out_dec = 6'b000100; + 12'd1113 : mem_out_dec = 6'b000101; + 12'd1114 : mem_out_dec = 6'b000110; + 12'd1115 : mem_out_dec = 6'b000111; + 12'd1116 : mem_out_dec = 6'b000111; + 12'd1117 : mem_out_dec = 6'b001000; + 12'd1118 : mem_out_dec = 6'b001001; + 12'd1119 : mem_out_dec = 6'b001001; + 12'd1120 : mem_out_dec = 6'b001010; + 12'd1121 : mem_out_dec = 6'b001010; + 12'd1122 : mem_out_dec = 6'b001011; + 12'd1123 : mem_out_dec = 6'b001011; + 12'd1124 : mem_out_dec = 6'b001011; + 12'd1125 : mem_out_dec = 6'b001011; + 12'd1126 : mem_out_dec = 6'b001011; + 12'd1127 : mem_out_dec = 6'b001011; + 12'd1128 : mem_out_dec = 6'b001011; + 12'd1129 : mem_out_dec = 6'b001011; + 12'd1130 : mem_out_dec = 6'b001100; + 12'd1131 : mem_out_dec = 6'b001101; + 12'd1132 : mem_out_dec = 6'b001110; + 12'd1133 : mem_out_dec = 6'b001110; + 12'd1134 : mem_out_dec = 6'b001111; + 12'd1135 : mem_out_dec = 6'b010000; + 12'd1136 : mem_out_dec = 6'b010000; + 12'd1137 : mem_out_dec = 6'b010001; + 12'd1138 : mem_out_dec = 6'b010001; + 12'd1139 : mem_out_dec = 6'b010010; + 12'd1140 : mem_out_dec = 6'b010010; + 12'd1141 : mem_out_dec = 6'b010011; + 12'd1142 : mem_out_dec = 6'b010100; + 12'd1143 : mem_out_dec = 6'b010100; + 12'd1144 : mem_out_dec = 6'b010100; + 12'd1145 : mem_out_dec = 6'b010101; + 12'd1146 : mem_out_dec = 6'b010110; + 12'd1147 : mem_out_dec = 6'b010110; + 12'd1148 : mem_out_dec = 6'b010111; + 12'd1149 : mem_out_dec = 6'b011000; + 12'd1150 : mem_out_dec = 6'b011000; + 12'd1151 : mem_out_dec = 6'b011001; + 12'd1152 : mem_out_dec = 6'b111111; + 12'd1153 : mem_out_dec = 6'b111111; + 12'd1154 : mem_out_dec = 6'b111111; + 12'd1155 : mem_out_dec = 6'b111111; + 12'd1156 : mem_out_dec = 6'b111111; + 12'd1157 : mem_out_dec = 6'b111111; + 12'd1158 : mem_out_dec = 6'b111111; + 12'd1159 : mem_out_dec = 6'b111111; + 12'd1160 : mem_out_dec = 6'b111111; + 12'd1161 : mem_out_dec = 6'b111111; + 12'd1162 : mem_out_dec = 6'b111111; + 12'd1163 : mem_out_dec = 6'b111111; + 12'd1164 : mem_out_dec = 6'b111111; + 12'd1165 : mem_out_dec = 6'b111111; + 12'd1166 : mem_out_dec = 6'b111111; + 12'd1167 : mem_out_dec = 6'b111111; + 12'd1168 : mem_out_dec = 6'b111111; + 12'd1169 : mem_out_dec = 6'b111111; + 12'd1170 : mem_out_dec = 6'b111111; + 12'd1171 : mem_out_dec = 6'b111111; + 12'd1172 : mem_out_dec = 6'b111111; + 12'd1173 : mem_out_dec = 6'b111111; + 12'd1174 : mem_out_dec = 6'b111111; + 12'd1175 : mem_out_dec = 6'b111111; + 12'd1176 : mem_out_dec = 6'b000100; + 12'd1177 : mem_out_dec = 6'b000101; + 12'd1178 : mem_out_dec = 6'b000101; + 12'd1179 : mem_out_dec = 6'b000110; + 12'd1180 : mem_out_dec = 6'b000111; + 12'd1181 : mem_out_dec = 6'b000111; + 12'd1182 : mem_out_dec = 6'b001000; + 12'd1183 : mem_out_dec = 6'b001001; + 12'd1184 : mem_out_dec = 6'b001001; + 12'd1185 : mem_out_dec = 6'b001010; + 12'd1186 : mem_out_dec = 6'b001010; + 12'd1187 : mem_out_dec = 6'b001010; + 12'd1188 : mem_out_dec = 6'b001010; + 12'd1189 : mem_out_dec = 6'b001010; + 12'd1190 : mem_out_dec = 6'b001010; + 12'd1191 : mem_out_dec = 6'b001010; + 12'd1192 : mem_out_dec = 6'b001010; + 12'd1193 : mem_out_dec = 6'b001011; + 12'd1194 : mem_out_dec = 6'b001100; + 12'd1195 : mem_out_dec = 6'b001100; + 12'd1196 : mem_out_dec = 6'b001101; + 12'd1197 : mem_out_dec = 6'b001110; + 12'd1198 : mem_out_dec = 6'b001111; + 12'd1199 : mem_out_dec = 6'b010000; + 12'd1200 : mem_out_dec = 6'b010000; + 12'd1201 : mem_out_dec = 6'b010000; + 12'd1202 : mem_out_dec = 6'b010001; + 12'd1203 : mem_out_dec = 6'b010001; + 12'd1204 : mem_out_dec = 6'b010010; + 12'd1205 : mem_out_dec = 6'b010011; + 12'd1206 : mem_out_dec = 6'b010011; + 12'd1207 : mem_out_dec = 6'b010100; + 12'd1208 : mem_out_dec = 6'b010100; + 12'd1209 : mem_out_dec = 6'b010100; + 12'd1210 : mem_out_dec = 6'b010101; + 12'd1211 : mem_out_dec = 6'b010110; + 12'd1212 : mem_out_dec = 6'b010110; + 12'd1213 : mem_out_dec = 6'b010111; + 12'd1214 : mem_out_dec = 6'b011000; + 12'd1215 : mem_out_dec = 6'b011001; + 12'd1216 : mem_out_dec = 6'b111111; + 12'd1217 : mem_out_dec = 6'b111111; + 12'd1218 : mem_out_dec = 6'b111111; + 12'd1219 : mem_out_dec = 6'b111111; + 12'd1220 : mem_out_dec = 6'b111111; + 12'd1221 : mem_out_dec = 6'b111111; + 12'd1222 : mem_out_dec = 6'b111111; + 12'd1223 : mem_out_dec = 6'b111111; + 12'd1224 : mem_out_dec = 6'b111111; + 12'd1225 : mem_out_dec = 6'b111111; + 12'd1226 : mem_out_dec = 6'b111111; + 12'd1227 : mem_out_dec = 6'b111111; + 12'd1228 : mem_out_dec = 6'b111111; + 12'd1229 : mem_out_dec = 6'b111111; + 12'd1230 : mem_out_dec = 6'b111111; + 12'd1231 : mem_out_dec = 6'b111111; + 12'd1232 : mem_out_dec = 6'b111111; + 12'd1233 : mem_out_dec = 6'b111111; + 12'd1234 : mem_out_dec = 6'b111111; + 12'd1235 : mem_out_dec = 6'b111111; + 12'd1236 : mem_out_dec = 6'b111111; + 12'd1237 : mem_out_dec = 6'b111111; + 12'd1238 : mem_out_dec = 6'b111111; + 12'd1239 : mem_out_dec = 6'b111111; + 12'd1240 : mem_out_dec = 6'b111111; + 12'd1241 : mem_out_dec = 6'b000100; + 12'd1242 : mem_out_dec = 6'b000100; + 12'd1243 : mem_out_dec = 6'b000101; + 12'd1244 : mem_out_dec = 6'b000110; + 12'd1245 : mem_out_dec = 6'b000111; + 12'd1246 : mem_out_dec = 6'b001000; + 12'd1247 : mem_out_dec = 6'b001000; + 12'd1248 : mem_out_dec = 6'b001001; + 12'd1249 : mem_out_dec = 6'b001001; + 12'd1250 : mem_out_dec = 6'b001001; + 12'd1251 : mem_out_dec = 6'b001001; + 12'd1252 : mem_out_dec = 6'b001001; + 12'd1253 : mem_out_dec = 6'b001001; + 12'd1254 : mem_out_dec = 6'b001001; + 12'd1255 : mem_out_dec = 6'b001001; + 12'd1256 : mem_out_dec = 6'b001010; + 12'd1257 : mem_out_dec = 6'b001010; + 12'd1258 : mem_out_dec = 6'b001011; + 12'd1259 : mem_out_dec = 6'b001100; + 12'd1260 : mem_out_dec = 6'b001101; + 12'd1261 : mem_out_dec = 6'b001110; + 12'd1262 : mem_out_dec = 6'b001110; + 12'd1263 : mem_out_dec = 6'b001111; + 12'd1264 : mem_out_dec = 6'b001111; + 12'd1265 : mem_out_dec = 6'b010000; + 12'd1266 : mem_out_dec = 6'b010000; + 12'd1267 : mem_out_dec = 6'b010001; + 12'd1268 : mem_out_dec = 6'b010001; + 12'd1269 : mem_out_dec = 6'b010010; + 12'd1270 : mem_out_dec = 6'b010011; + 12'd1271 : mem_out_dec = 6'b010011; + 12'd1272 : mem_out_dec = 6'b010011; + 12'd1273 : mem_out_dec = 6'b010100; + 12'd1274 : mem_out_dec = 6'b010100; + 12'd1275 : mem_out_dec = 6'b010101; + 12'd1276 : mem_out_dec = 6'b010110; + 12'd1277 : mem_out_dec = 6'b010111; + 12'd1278 : mem_out_dec = 6'b011000; + 12'd1279 : mem_out_dec = 6'b011000; + 12'd1280 : mem_out_dec = 6'b111111; + 12'd1281 : mem_out_dec = 6'b111111; + 12'd1282 : mem_out_dec = 6'b111111; + 12'd1283 : mem_out_dec = 6'b111111; + 12'd1284 : mem_out_dec = 6'b111111; + 12'd1285 : mem_out_dec = 6'b111111; + 12'd1286 : mem_out_dec = 6'b111111; + 12'd1287 : mem_out_dec = 6'b111111; + 12'd1288 : mem_out_dec = 6'b111111; + 12'd1289 : mem_out_dec = 6'b111111; + 12'd1290 : mem_out_dec = 6'b111111; + 12'd1291 : mem_out_dec = 6'b111111; + 12'd1292 : mem_out_dec = 6'b111111; + 12'd1293 : mem_out_dec = 6'b111111; + 12'd1294 : mem_out_dec = 6'b111111; + 12'd1295 : mem_out_dec = 6'b111111; + 12'd1296 : mem_out_dec = 6'b111111; + 12'd1297 : mem_out_dec = 6'b111111; + 12'd1298 : mem_out_dec = 6'b111111; + 12'd1299 : mem_out_dec = 6'b111111; + 12'd1300 : mem_out_dec = 6'b111111; + 12'd1301 : mem_out_dec = 6'b111111; + 12'd1302 : mem_out_dec = 6'b111111; + 12'd1303 : mem_out_dec = 6'b111111; + 12'd1304 : mem_out_dec = 6'b111111; + 12'd1305 : mem_out_dec = 6'b111111; + 12'd1306 : mem_out_dec = 6'b000100; + 12'd1307 : mem_out_dec = 6'b000101; + 12'd1308 : mem_out_dec = 6'b000110; + 12'd1309 : mem_out_dec = 6'b000110; + 12'd1310 : mem_out_dec = 6'b000111; + 12'd1311 : mem_out_dec = 6'b001000; + 12'd1312 : mem_out_dec = 6'b001000; + 12'd1313 : mem_out_dec = 6'b001000; + 12'd1314 : mem_out_dec = 6'b001000; + 12'd1315 : mem_out_dec = 6'b001000; + 12'd1316 : mem_out_dec = 6'b001000; + 12'd1317 : mem_out_dec = 6'b001000; + 12'd1318 : mem_out_dec = 6'b001000; + 12'd1319 : mem_out_dec = 6'b001001; + 12'd1320 : mem_out_dec = 6'b001001; + 12'd1321 : mem_out_dec = 6'b001010; + 12'd1322 : mem_out_dec = 6'b001011; + 12'd1323 : mem_out_dec = 6'b001100; + 12'd1324 : mem_out_dec = 6'b001100; + 12'd1325 : mem_out_dec = 6'b001101; + 12'd1326 : mem_out_dec = 6'b001110; + 12'd1327 : mem_out_dec = 6'b001111; + 12'd1328 : mem_out_dec = 6'b001111; + 12'd1329 : mem_out_dec = 6'b001111; + 12'd1330 : mem_out_dec = 6'b010000; + 12'd1331 : mem_out_dec = 6'b010000; + 12'd1332 : mem_out_dec = 6'b010001; + 12'd1333 : mem_out_dec = 6'b010001; + 12'd1334 : mem_out_dec = 6'b010010; + 12'd1335 : mem_out_dec = 6'b010011; + 12'd1336 : mem_out_dec = 6'b010010; + 12'd1337 : mem_out_dec = 6'b010011; + 12'd1338 : mem_out_dec = 6'b010100; + 12'd1339 : mem_out_dec = 6'b010101; + 12'd1340 : mem_out_dec = 6'b010110; + 12'd1341 : mem_out_dec = 6'b010110; + 12'd1342 : mem_out_dec = 6'b010111; + 12'd1343 : mem_out_dec = 6'b011000; + 12'd1344 : mem_out_dec = 6'b111111; + 12'd1345 : mem_out_dec = 6'b111111; + 12'd1346 : mem_out_dec = 6'b111111; + 12'd1347 : mem_out_dec = 6'b111111; + 12'd1348 : mem_out_dec = 6'b111111; + 12'd1349 : mem_out_dec = 6'b111111; + 12'd1350 : mem_out_dec = 6'b111111; + 12'd1351 : mem_out_dec = 6'b111111; + 12'd1352 : mem_out_dec = 6'b111111; + 12'd1353 : mem_out_dec = 6'b111111; + 12'd1354 : mem_out_dec = 6'b111111; + 12'd1355 : mem_out_dec = 6'b111111; + 12'd1356 : mem_out_dec = 6'b111111; + 12'd1357 : mem_out_dec = 6'b111111; + 12'd1358 : mem_out_dec = 6'b111111; + 12'd1359 : mem_out_dec = 6'b111111; + 12'd1360 : mem_out_dec = 6'b111111; + 12'd1361 : mem_out_dec = 6'b111111; + 12'd1362 : mem_out_dec = 6'b111111; + 12'd1363 : mem_out_dec = 6'b111111; + 12'd1364 : mem_out_dec = 6'b111111; + 12'd1365 : mem_out_dec = 6'b111111; + 12'd1366 : mem_out_dec = 6'b111111; + 12'd1367 : mem_out_dec = 6'b111111; + 12'd1368 : mem_out_dec = 6'b111111; + 12'd1369 : mem_out_dec = 6'b111111; + 12'd1370 : mem_out_dec = 6'b111111; + 12'd1371 : mem_out_dec = 6'b000101; + 12'd1372 : mem_out_dec = 6'b000101; + 12'd1373 : mem_out_dec = 6'b000110; + 12'd1374 : mem_out_dec = 6'b000111; + 12'd1375 : mem_out_dec = 6'b001000; + 12'd1376 : mem_out_dec = 6'b000111; + 12'd1377 : mem_out_dec = 6'b000111; + 12'd1378 : mem_out_dec = 6'b000111; + 12'd1379 : mem_out_dec = 6'b000111; + 12'd1380 : mem_out_dec = 6'b000111; + 12'd1381 : mem_out_dec = 6'b000111; + 12'd1382 : mem_out_dec = 6'b001000; + 12'd1383 : mem_out_dec = 6'b001001; + 12'd1384 : mem_out_dec = 6'b001001; + 12'd1385 : mem_out_dec = 6'b001010; + 12'd1386 : mem_out_dec = 6'b001010; + 12'd1387 : mem_out_dec = 6'b001011; + 12'd1388 : mem_out_dec = 6'b001100; + 12'd1389 : mem_out_dec = 6'b001101; + 12'd1390 : mem_out_dec = 6'b001110; + 12'd1391 : mem_out_dec = 6'b001110; + 12'd1392 : mem_out_dec = 6'b001111; + 12'd1393 : mem_out_dec = 6'b001111; + 12'd1394 : mem_out_dec = 6'b010000; + 12'd1395 : mem_out_dec = 6'b010000; + 12'd1396 : mem_out_dec = 6'b010001; + 12'd1397 : mem_out_dec = 6'b010001; + 12'd1398 : mem_out_dec = 6'b010010; + 12'd1399 : mem_out_dec = 6'b010010; + 12'd1400 : mem_out_dec = 6'b010010; + 12'd1401 : mem_out_dec = 6'b010011; + 12'd1402 : mem_out_dec = 6'b010100; + 12'd1403 : mem_out_dec = 6'b010100; + 12'd1404 : mem_out_dec = 6'b010101; + 12'd1405 : mem_out_dec = 6'b010110; + 12'd1406 : mem_out_dec = 6'b010111; + 12'd1407 : mem_out_dec = 6'b010111; + 12'd1408 : mem_out_dec = 6'b111111; + 12'd1409 : mem_out_dec = 6'b111111; + 12'd1410 : mem_out_dec = 6'b111111; + 12'd1411 : mem_out_dec = 6'b111111; + 12'd1412 : mem_out_dec = 6'b111111; + 12'd1413 : mem_out_dec = 6'b111111; + 12'd1414 : mem_out_dec = 6'b111111; + 12'd1415 : mem_out_dec = 6'b111111; + 12'd1416 : mem_out_dec = 6'b111111; + 12'd1417 : mem_out_dec = 6'b111111; + 12'd1418 : mem_out_dec = 6'b111111; + 12'd1419 : mem_out_dec = 6'b111111; + 12'd1420 : mem_out_dec = 6'b111111; + 12'd1421 : mem_out_dec = 6'b111111; + 12'd1422 : mem_out_dec = 6'b111111; + 12'd1423 : mem_out_dec = 6'b111111; + 12'd1424 : mem_out_dec = 6'b111111; + 12'd1425 : mem_out_dec = 6'b111111; + 12'd1426 : mem_out_dec = 6'b111111; + 12'd1427 : mem_out_dec = 6'b111111; + 12'd1428 : mem_out_dec = 6'b111111; + 12'd1429 : mem_out_dec = 6'b111111; + 12'd1430 : mem_out_dec = 6'b111111; + 12'd1431 : mem_out_dec = 6'b111111; + 12'd1432 : mem_out_dec = 6'b111111; + 12'd1433 : mem_out_dec = 6'b111111; + 12'd1434 : mem_out_dec = 6'b111111; + 12'd1435 : mem_out_dec = 6'b111111; + 12'd1436 : mem_out_dec = 6'b000101; + 12'd1437 : mem_out_dec = 6'b000110; + 12'd1438 : mem_out_dec = 6'b000111; + 12'd1439 : mem_out_dec = 6'b000111; + 12'd1440 : mem_out_dec = 6'b000110; + 12'd1441 : mem_out_dec = 6'b000110; + 12'd1442 : mem_out_dec = 6'b000110; + 12'd1443 : mem_out_dec = 6'b000110; + 12'd1444 : mem_out_dec = 6'b000110; + 12'd1445 : mem_out_dec = 6'b000111; + 12'd1446 : mem_out_dec = 6'b000111; + 12'd1447 : mem_out_dec = 6'b001000; + 12'd1448 : mem_out_dec = 6'b001001; + 12'd1449 : mem_out_dec = 6'b001001; + 12'd1450 : mem_out_dec = 6'b001010; + 12'd1451 : mem_out_dec = 6'b001011; + 12'd1452 : mem_out_dec = 6'b001100; + 12'd1453 : mem_out_dec = 6'b001100; + 12'd1454 : mem_out_dec = 6'b001101; + 12'd1455 : mem_out_dec = 6'b001110; + 12'd1456 : mem_out_dec = 6'b001110; + 12'd1457 : mem_out_dec = 6'b001111; + 12'd1458 : mem_out_dec = 6'b001111; + 12'd1459 : mem_out_dec = 6'b010000; + 12'd1460 : mem_out_dec = 6'b010000; + 12'd1461 : mem_out_dec = 6'b010001; + 12'd1462 : mem_out_dec = 6'b010001; + 12'd1463 : mem_out_dec = 6'b010010; + 12'd1464 : mem_out_dec = 6'b010010; + 12'd1465 : mem_out_dec = 6'b010011; + 12'd1466 : mem_out_dec = 6'b010011; + 12'd1467 : mem_out_dec = 6'b010100; + 12'd1468 : mem_out_dec = 6'b010101; + 12'd1469 : mem_out_dec = 6'b010110; + 12'd1470 : mem_out_dec = 6'b010110; + 12'd1471 : mem_out_dec = 6'b010111; + 12'd1472 : mem_out_dec = 6'b111111; + 12'd1473 : mem_out_dec = 6'b111111; + 12'd1474 : mem_out_dec = 6'b111111; + 12'd1475 : mem_out_dec = 6'b111111; + 12'd1476 : mem_out_dec = 6'b111111; + 12'd1477 : mem_out_dec = 6'b111111; + 12'd1478 : mem_out_dec = 6'b111111; + 12'd1479 : mem_out_dec = 6'b111111; + 12'd1480 : mem_out_dec = 6'b111111; + 12'd1481 : mem_out_dec = 6'b111111; + 12'd1482 : mem_out_dec = 6'b111111; + 12'd1483 : mem_out_dec = 6'b111111; + 12'd1484 : mem_out_dec = 6'b111111; + 12'd1485 : mem_out_dec = 6'b111111; + 12'd1486 : mem_out_dec = 6'b111111; + 12'd1487 : mem_out_dec = 6'b111111; + 12'd1488 : mem_out_dec = 6'b111111; + 12'd1489 : mem_out_dec = 6'b111111; + 12'd1490 : mem_out_dec = 6'b111111; + 12'd1491 : mem_out_dec = 6'b111111; + 12'd1492 : mem_out_dec = 6'b111111; + 12'd1493 : mem_out_dec = 6'b111111; + 12'd1494 : mem_out_dec = 6'b111111; + 12'd1495 : mem_out_dec = 6'b111111; + 12'd1496 : mem_out_dec = 6'b111111; + 12'd1497 : mem_out_dec = 6'b111111; + 12'd1498 : mem_out_dec = 6'b111111; + 12'd1499 : mem_out_dec = 6'b111111; + 12'd1500 : mem_out_dec = 6'b111111; + 12'd1501 : mem_out_dec = 6'b000101; + 12'd1502 : mem_out_dec = 6'b000110; + 12'd1503 : mem_out_dec = 6'b000110; + 12'd1504 : mem_out_dec = 6'b000110; + 12'd1505 : mem_out_dec = 6'b000110; + 12'd1506 : mem_out_dec = 6'b000101; + 12'd1507 : mem_out_dec = 6'b000101; + 12'd1508 : mem_out_dec = 6'b000110; + 12'd1509 : mem_out_dec = 6'b000111; + 12'd1510 : mem_out_dec = 6'b000111; + 12'd1511 : mem_out_dec = 6'b001000; + 12'd1512 : mem_out_dec = 6'b001000; + 12'd1513 : mem_out_dec = 6'b001001; + 12'd1514 : mem_out_dec = 6'b001010; + 12'd1515 : mem_out_dec = 6'b001011; + 12'd1516 : mem_out_dec = 6'b001011; + 12'd1517 : mem_out_dec = 6'b001100; + 12'd1518 : mem_out_dec = 6'b001101; + 12'd1519 : mem_out_dec = 6'b001110; + 12'd1520 : mem_out_dec = 6'b001110; + 12'd1521 : mem_out_dec = 6'b001110; + 12'd1522 : mem_out_dec = 6'b001111; + 12'd1523 : mem_out_dec = 6'b001111; + 12'd1524 : mem_out_dec = 6'b010000; + 12'd1525 : mem_out_dec = 6'b010000; + 12'd1526 : mem_out_dec = 6'b010001; + 12'd1527 : mem_out_dec = 6'b010001; + 12'd1528 : mem_out_dec = 6'b010001; + 12'd1529 : mem_out_dec = 6'b010010; + 12'd1530 : mem_out_dec = 6'b010011; + 12'd1531 : mem_out_dec = 6'b010100; + 12'd1532 : mem_out_dec = 6'b010101; + 12'd1533 : mem_out_dec = 6'b010101; + 12'd1534 : mem_out_dec = 6'b010110; + 12'd1535 : mem_out_dec = 6'b010110; + 12'd1536 : mem_out_dec = 6'b111111; + 12'd1537 : mem_out_dec = 6'b111111; + 12'd1538 : mem_out_dec = 6'b111111; + 12'd1539 : mem_out_dec = 6'b111111; + 12'd1540 : mem_out_dec = 6'b111111; + 12'd1541 : mem_out_dec = 6'b111111; + 12'd1542 : mem_out_dec = 6'b111111; + 12'd1543 : mem_out_dec = 6'b111111; + 12'd1544 : mem_out_dec = 6'b111111; + 12'd1545 : mem_out_dec = 6'b111111; + 12'd1546 : mem_out_dec = 6'b111111; + 12'd1547 : mem_out_dec = 6'b111111; + 12'd1548 : mem_out_dec = 6'b111111; + 12'd1549 : mem_out_dec = 6'b111111; + 12'd1550 : mem_out_dec = 6'b111111; + 12'd1551 : mem_out_dec = 6'b111111; + 12'd1552 : mem_out_dec = 6'b111111; + 12'd1553 : mem_out_dec = 6'b111111; + 12'd1554 : mem_out_dec = 6'b111111; + 12'd1555 : mem_out_dec = 6'b111111; + 12'd1556 : mem_out_dec = 6'b111111; + 12'd1557 : mem_out_dec = 6'b111111; + 12'd1558 : mem_out_dec = 6'b111111; + 12'd1559 : mem_out_dec = 6'b111111; + 12'd1560 : mem_out_dec = 6'b111111; + 12'd1561 : mem_out_dec = 6'b111111; + 12'd1562 : mem_out_dec = 6'b111111; + 12'd1563 : mem_out_dec = 6'b111111; + 12'd1564 : mem_out_dec = 6'b111111; + 12'd1565 : mem_out_dec = 6'b111111; + 12'd1566 : mem_out_dec = 6'b000100; + 12'd1567 : mem_out_dec = 6'b000100; + 12'd1568 : mem_out_dec = 6'b000100; + 12'd1569 : mem_out_dec = 6'b000100; + 12'd1570 : mem_out_dec = 6'b000100; + 12'd1571 : mem_out_dec = 6'b000101; + 12'd1572 : mem_out_dec = 6'b000101; + 12'd1573 : mem_out_dec = 6'b000110; + 12'd1574 : mem_out_dec = 6'b000111; + 12'd1575 : mem_out_dec = 6'b000111; + 12'd1576 : mem_out_dec = 6'b000111; + 12'd1577 : mem_out_dec = 6'b001000; + 12'd1578 : mem_out_dec = 6'b001001; + 12'd1579 : mem_out_dec = 6'b001010; + 12'd1580 : mem_out_dec = 6'b001010; + 12'd1581 : mem_out_dec = 6'b001011; + 12'd1582 : mem_out_dec = 6'b001100; + 12'd1583 : mem_out_dec = 6'b001101; + 12'd1584 : mem_out_dec = 6'b001101; + 12'd1585 : mem_out_dec = 6'b001101; + 12'd1586 : mem_out_dec = 6'b001110; + 12'd1587 : mem_out_dec = 6'b001110; + 12'd1588 : mem_out_dec = 6'b001111; + 12'd1589 : mem_out_dec = 6'b001111; + 12'd1590 : mem_out_dec = 6'b010000; + 12'd1591 : mem_out_dec = 6'b010001; + 12'd1592 : mem_out_dec = 6'b010001; + 12'd1593 : mem_out_dec = 6'b010001; + 12'd1594 : mem_out_dec = 6'b010010; + 12'd1595 : mem_out_dec = 6'b010010; + 12'd1596 : mem_out_dec = 6'b010011; + 12'd1597 : mem_out_dec = 6'b010011; + 12'd1598 : mem_out_dec = 6'b010100; + 12'd1599 : mem_out_dec = 6'b010100; + 12'd1600 : mem_out_dec = 6'b111111; + 12'd1601 : mem_out_dec = 6'b111111; + 12'd1602 : mem_out_dec = 6'b111111; + 12'd1603 : mem_out_dec = 6'b111111; + 12'd1604 : mem_out_dec = 6'b111111; + 12'd1605 : mem_out_dec = 6'b111111; + 12'd1606 : mem_out_dec = 6'b111111; + 12'd1607 : mem_out_dec = 6'b111111; + 12'd1608 : mem_out_dec = 6'b111111; + 12'd1609 : mem_out_dec = 6'b111111; + 12'd1610 : mem_out_dec = 6'b111111; + 12'd1611 : mem_out_dec = 6'b111111; + 12'd1612 : mem_out_dec = 6'b111111; + 12'd1613 : mem_out_dec = 6'b111111; + 12'd1614 : mem_out_dec = 6'b111111; + 12'd1615 : mem_out_dec = 6'b111111; + 12'd1616 : mem_out_dec = 6'b111111; + 12'd1617 : mem_out_dec = 6'b111111; + 12'd1618 : mem_out_dec = 6'b111111; + 12'd1619 : mem_out_dec = 6'b111111; + 12'd1620 : mem_out_dec = 6'b111111; + 12'd1621 : mem_out_dec = 6'b111111; + 12'd1622 : mem_out_dec = 6'b111111; + 12'd1623 : mem_out_dec = 6'b111111; + 12'd1624 : mem_out_dec = 6'b111111; + 12'd1625 : mem_out_dec = 6'b111111; + 12'd1626 : mem_out_dec = 6'b111111; + 12'd1627 : mem_out_dec = 6'b111111; + 12'd1628 : mem_out_dec = 6'b111111; + 12'd1629 : mem_out_dec = 6'b111111; + 12'd1630 : mem_out_dec = 6'b111111; + 12'd1631 : mem_out_dec = 6'b000100; + 12'd1632 : mem_out_dec = 6'b000011; + 12'd1633 : mem_out_dec = 6'b000011; + 12'd1634 : mem_out_dec = 6'b000100; + 12'd1635 : mem_out_dec = 6'b000100; + 12'd1636 : mem_out_dec = 6'b000101; + 12'd1637 : mem_out_dec = 6'b000110; + 12'd1638 : mem_out_dec = 6'b000110; + 12'd1639 : mem_out_dec = 6'b000111; + 12'd1640 : mem_out_dec = 6'b000111; + 12'd1641 : mem_out_dec = 6'b001000; + 12'd1642 : mem_out_dec = 6'b001001; + 12'd1643 : mem_out_dec = 6'b001001; + 12'd1644 : mem_out_dec = 6'b001010; + 12'd1645 : mem_out_dec = 6'b001011; + 12'd1646 : mem_out_dec = 6'b001100; + 12'd1647 : mem_out_dec = 6'b001101; + 12'd1648 : mem_out_dec = 6'b001101; + 12'd1649 : mem_out_dec = 6'b001101; + 12'd1650 : mem_out_dec = 6'b001110; + 12'd1651 : mem_out_dec = 6'b001110; + 12'd1652 : mem_out_dec = 6'b001110; + 12'd1653 : mem_out_dec = 6'b001111; + 12'd1654 : mem_out_dec = 6'b010000; + 12'd1655 : mem_out_dec = 6'b010000; + 12'd1656 : mem_out_dec = 6'b010001; + 12'd1657 : mem_out_dec = 6'b010001; + 12'd1658 : mem_out_dec = 6'b010001; + 12'd1659 : mem_out_dec = 6'b010010; + 12'd1660 : mem_out_dec = 6'b010010; + 12'd1661 : mem_out_dec = 6'b010011; + 12'd1662 : mem_out_dec = 6'b010011; + 12'd1663 : mem_out_dec = 6'b010100; + 12'd1664 : mem_out_dec = 6'b111111; + 12'd1665 : mem_out_dec = 6'b111111; + 12'd1666 : mem_out_dec = 6'b111111; + 12'd1667 : mem_out_dec = 6'b111111; + 12'd1668 : mem_out_dec = 6'b111111; + 12'd1669 : mem_out_dec = 6'b111111; + 12'd1670 : mem_out_dec = 6'b111111; + 12'd1671 : mem_out_dec = 6'b111111; + 12'd1672 : mem_out_dec = 6'b111111; + 12'd1673 : mem_out_dec = 6'b111111; + 12'd1674 : mem_out_dec = 6'b111111; + 12'd1675 : mem_out_dec = 6'b111111; + 12'd1676 : mem_out_dec = 6'b111111; + 12'd1677 : mem_out_dec = 6'b111111; + 12'd1678 : mem_out_dec = 6'b111111; + 12'd1679 : mem_out_dec = 6'b111111; + 12'd1680 : mem_out_dec = 6'b111111; + 12'd1681 : mem_out_dec = 6'b111111; + 12'd1682 : mem_out_dec = 6'b111111; + 12'd1683 : mem_out_dec = 6'b111111; + 12'd1684 : mem_out_dec = 6'b111111; + 12'd1685 : mem_out_dec = 6'b111111; + 12'd1686 : mem_out_dec = 6'b111111; + 12'd1687 : mem_out_dec = 6'b111111; + 12'd1688 : mem_out_dec = 6'b111111; + 12'd1689 : mem_out_dec = 6'b111111; + 12'd1690 : mem_out_dec = 6'b111111; + 12'd1691 : mem_out_dec = 6'b111111; + 12'd1692 : mem_out_dec = 6'b111111; + 12'd1693 : mem_out_dec = 6'b111111; + 12'd1694 : mem_out_dec = 6'b111111; + 12'd1695 : mem_out_dec = 6'b111111; + 12'd1696 : mem_out_dec = 6'b000011; + 12'd1697 : mem_out_dec = 6'b000011; + 12'd1698 : mem_out_dec = 6'b000100; + 12'd1699 : mem_out_dec = 6'b000100; + 12'd1700 : mem_out_dec = 6'b000101; + 12'd1701 : mem_out_dec = 6'b000101; + 12'd1702 : mem_out_dec = 6'b000110; + 12'd1703 : mem_out_dec = 6'b000111; + 12'd1704 : mem_out_dec = 6'b000111; + 12'd1705 : mem_out_dec = 6'b001000; + 12'd1706 : mem_out_dec = 6'b001000; + 12'd1707 : mem_out_dec = 6'b001001; + 12'd1708 : mem_out_dec = 6'b001010; + 12'd1709 : mem_out_dec = 6'b001011; + 12'd1710 : mem_out_dec = 6'b001100; + 12'd1711 : mem_out_dec = 6'b001100; + 12'd1712 : mem_out_dec = 6'b001100; + 12'd1713 : mem_out_dec = 6'b001101; + 12'd1714 : mem_out_dec = 6'b001101; + 12'd1715 : mem_out_dec = 6'b001110; + 12'd1716 : mem_out_dec = 6'b001110; + 12'd1717 : mem_out_dec = 6'b001111; + 12'd1718 : mem_out_dec = 6'b001111; + 12'd1719 : mem_out_dec = 6'b010000; + 12'd1720 : mem_out_dec = 6'b010000; + 12'd1721 : mem_out_dec = 6'b010000; + 12'd1722 : mem_out_dec = 6'b010001; + 12'd1723 : mem_out_dec = 6'b010001; + 12'd1724 : mem_out_dec = 6'b010010; + 12'd1725 : mem_out_dec = 6'b010010; + 12'd1726 : mem_out_dec = 6'b010011; + 12'd1727 : mem_out_dec = 6'b010011; + 12'd1728 : mem_out_dec = 6'b111111; + 12'd1729 : mem_out_dec = 6'b111111; + 12'd1730 : mem_out_dec = 6'b111111; + 12'd1731 : mem_out_dec = 6'b111111; + 12'd1732 : mem_out_dec = 6'b111111; + 12'd1733 : mem_out_dec = 6'b111111; + 12'd1734 : mem_out_dec = 6'b111111; + 12'd1735 : mem_out_dec = 6'b111111; + 12'd1736 : mem_out_dec = 6'b111111; + 12'd1737 : mem_out_dec = 6'b111111; + 12'd1738 : mem_out_dec = 6'b111111; + 12'd1739 : mem_out_dec = 6'b111111; + 12'd1740 : mem_out_dec = 6'b111111; + 12'd1741 : mem_out_dec = 6'b111111; + 12'd1742 : mem_out_dec = 6'b111111; + 12'd1743 : mem_out_dec = 6'b111111; + 12'd1744 : mem_out_dec = 6'b111111; + 12'd1745 : mem_out_dec = 6'b111111; + 12'd1746 : mem_out_dec = 6'b111111; + 12'd1747 : mem_out_dec = 6'b111111; + 12'd1748 : mem_out_dec = 6'b111111; + 12'd1749 : mem_out_dec = 6'b111111; + 12'd1750 : mem_out_dec = 6'b111111; + 12'd1751 : mem_out_dec = 6'b111111; + 12'd1752 : mem_out_dec = 6'b111111; + 12'd1753 : mem_out_dec = 6'b111111; + 12'd1754 : mem_out_dec = 6'b111111; + 12'd1755 : mem_out_dec = 6'b111111; + 12'd1756 : mem_out_dec = 6'b111111; + 12'd1757 : mem_out_dec = 6'b111111; + 12'd1758 : mem_out_dec = 6'b111111; + 12'd1759 : mem_out_dec = 6'b111111; + 12'd1760 : mem_out_dec = 6'b111111; + 12'd1761 : mem_out_dec = 6'b000011; + 12'd1762 : mem_out_dec = 6'b000011; + 12'd1763 : mem_out_dec = 6'b000100; + 12'd1764 : mem_out_dec = 6'b000101; + 12'd1765 : mem_out_dec = 6'b000101; + 12'd1766 : mem_out_dec = 6'b000110; + 12'd1767 : mem_out_dec = 6'b000111; + 12'd1768 : mem_out_dec = 6'b000111; + 12'd1769 : mem_out_dec = 6'b000111; + 12'd1770 : mem_out_dec = 6'b001000; + 12'd1771 : mem_out_dec = 6'b001001; + 12'd1772 : mem_out_dec = 6'b001010; + 12'd1773 : mem_out_dec = 6'b001011; + 12'd1774 : mem_out_dec = 6'b001011; + 12'd1775 : mem_out_dec = 6'b001100; + 12'd1776 : mem_out_dec = 6'b001100; + 12'd1777 : mem_out_dec = 6'b001101; + 12'd1778 : mem_out_dec = 6'b001101; + 12'd1779 : mem_out_dec = 6'b001101; + 12'd1780 : mem_out_dec = 6'b001110; + 12'd1781 : mem_out_dec = 6'b001111; + 12'd1782 : mem_out_dec = 6'b001111; + 12'd1783 : mem_out_dec = 6'b010000; + 12'd1784 : mem_out_dec = 6'b010000; + 12'd1785 : mem_out_dec = 6'b010000; + 12'd1786 : mem_out_dec = 6'b010000; + 12'd1787 : mem_out_dec = 6'b010001; + 12'd1788 : mem_out_dec = 6'b010001; + 12'd1789 : mem_out_dec = 6'b010010; + 12'd1790 : mem_out_dec = 6'b010010; + 12'd1791 : mem_out_dec = 6'b010011; + 12'd1792 : mem_out_dec = 6'b111111; + 12'd1793 : mem_out_dec = 6'b111111; + 12'd1794 : mem_out_dec = 6'b111111; + 12'd1795 : mem_out_dec = 6'b111111; + 12'd1796 : mem_out_dec = 6'b111111; + 12'd1797 : mem_out_dec = 6'b111111; + 12'd1798 : mem_out_dec = 6'b111111; + 12'd1799 : mem_out_dec = 6'b111111; + 12'd1800 : mem_out_dec = 6'b111111; + 12'd1801 : mem_out_dec = 6'b111111; + 12'd1802 : mem_out_dec = 6'b111111; + 12'd1803 : mem_out_dec = 6'b111111; + 12'd1804 : mem_out_dec = 6'b111111; + 12'd1805 : mem_out_dec = 6'b111111; + 12'd1806 : mem_out_dec = 6'b111111; + 12'd1807 : mem_out_dec = 6'b111111; + 12'd1808 : mem_out_dec = 6'b111111; + 12'd1809 : mem_out_dec = 6'b111111; + 12'd1810 : mem_out_dec = 6'b111111; + 12'd1811 : mem_out_dec = 6'b111111; + 12'd1812 : mem_out_dec = 6'b111111; + 12'd1813 : mem_out_dec = 6'b111111; + 12'd1814 : mem_out_dec = 6'b111111; + 12'd1815 : mem_out_dec = 6'b111111; + 12'd1816 : mem_out_dec = 6'b111111; + 12'd1817 : mem_out_dec = 6'b111111; + 12'd1818 : mem_out_dec = 6'b111111; + 12'd1819 : mem_out_dec = 6'b111111; + 12'd1820 : mem_out_dec = 6'b111111; + 12'd1821 : mem_out_dec = 6'b111111; + 12'd1822 : mem_out_dec = 6'b111111; + 12'd1823 : mem_out_dec = 6'b111111; + 12'd1824 : mem_out_dec = 6'b111111; + 12'd1825 : mem_out_dec = 6'b111111; + 12'd1826 : mem_out_dec = 6'b000011; + 12'd1827 : mem_out_dec = 6'b000100; + 12'd1828 : mem_out_dec = 6'b000100; + 12'd1829 : mem_out_dec = 6'b000101; + 12'd1830 : mem_out_dec = 6'b000110; + 12'd1831 : mem_out_dec = 6'b000110; + 12'd1832 : mem_out_dec = 6'b000110; + 12'd1833 : mem_out_dec = 6'b000111; + 12'd1834 : mem_out_dec = 6'b001000; + 12'd1835 : mem_out_dec = 6'b001001; + 12'd1836 : mem_out_dec = 6'b001010; + 12'd1837 : mem_out_dec = 6'b001010; + 12'd1838 : mem_out_dec = 6'b001011; + 12'd1839 : mem_out_dec = 6'b001100; + 12'd1840 : mem_out_dec = 6'b001100; + 12'd1841 : mem_out_dec = 6'b001100; + 12'd1842 : mem_out_dec = 6'b001101; + 12'd1843 : mem_out_dec = 6'b001101; + 12'd1844 : mem_out_dec = 6'b001110; + 12'd1845 : mem_out_dec = 6'b001110; + 12'd1846 : mem_out_dec = 6'b001111; + 12'd1847 : mem_out_dec = 6'b010000; + 12'd1848 : mem_out_dec = 6'b001111; + 12'd1849 : mem_out_dec = 6'b001111; + 12'd1850 : mem_out_dec = 6'b010000; + 12'd1851 : mem_out_dec = 6'b010000; + 12'd1852 : mem_out_dec = 6'b010001; + 12'd1853 : mem_out_dec = 6'b010001; + 12'd1854 : mem_out_dec = 6'b010010; + 12'd1855 : mem_out_dec = 6'b010010; + 12'd1856 : mem_out_dec = 6'b111111; + 12'd1857 : mem_out_dec = 6'b111111; + 12'd1858 : mem_out_dec = 6'b111111; + 12'd1859 : mem_out_dec = 6'b111111; + 12'd1860 : mem_out_dec = 6'b111111; + 12'd1861 : mem_out_dec = 6'b111111; + 12'd1862 : mem_out_dec = 6'b111111; + 12'd1863 : mem_out_dec = 6'b111111; + 12'd1864 : mem_out_dec = 6'b111111; + 12'd1865 : mem_out_dec = 6'b111111; + 12'd1866 : mem_out_dec = 6'b111111; + 12'd1867 : mem_out_dec = 6'b111111; + 12'd1868 : mem_out_dec = 6'b111111; + 12'd1869 : mem_out_dec = 6'b111111; + 12'd1870 : mem_out_dec = 6'b111111; + 12'd1871 : mem_out_dec = 6'b111111; + 12'd1872 : mem_out_dec = 6'b111111; + 12'd1873 : mem_out_dec = 6'b111111; + 12'd1874 : mem_out_dec = 6'b111111; + 12'd1875 : mem_out_dec = 6'b111111; + 12'd1876 : mem_out_dec = 6'b111111; + 12'd1877 : mem_out_dec = 6'b111111; + 12'd1878 : mem_out_dec = 6'b111111; + 12'd1879 : mem_out_dec = 6'b111111; + 12'd1880 : mem_out_dec = 6'b111111; + 12'd1881 : mem_out_dec = 6'b111111; + 12'd1882 : mem_out_dec = 6'b111111; + 12'd1883 : mem_out_dec = 6'b111111; + 12'd1884 : mem_out_dec = 6'b111111; + 12'd1885 : mem_out_dec = 6'b111111; + 12'd1886 : mem_out_dec = 6'b111111; + 12'd1887 : mem_out_dec = 6'b111111; + 12'd1888 : mem_out_dec = 6'b111111; + 12'd1889 : mem_out_dec = 6'b111111; + 12'd1890 : mem_out_dec = 6'b111111; + 12'd1891 : mem_out_dec = 6'b000100; + 12'd1892 : mem_out_dec = 6'b000100; + 12'd1893 : mem_out_dec = 6'b000101; + 12'd1894 : mem_out_dec = 6'b000101; + 12'd1895 : mem_out_dec = 6'b000110; + 12'd1896 : mem_out_dec = 6'b000110; + 12'd1897 : mem_out_dec = 6'b000111; + 12'd1898 : mem_out_dec = 6'b001000; + 12'd1899 : mem_out_dec = 6'b001001; + 12'd1900 : mem_out_dec = 6'b001001; + 12'd1901 : mem_out_dec = 6'b001010; + 12'd1902 : mem_out_dec = 6'b001011; + 12'd1903 : mem_out_dec = 6'b001100; + 12'd1904 : mem_out_dec = 6'b001100; + 12'd1905 : mem_out_dec = 6'b001100; + 12'd1906 : mem_out_dec = 6'b001100; + 12'd1907 : mem_out_dec = 6'b001101; + 12'd1908 : mem_out_dec = 6'b001110; + 12'd1909 : mem_out_dec = 6'b001110; + 12'd1910 : mem_out_dec = 6'b001111; + 12'd1911 : mem_out_dec = 6'b001111; + 12'd1912 : mem_out_dec = 6'b001111; + 12'd1913 : mem_out_dec = 6'b001111; + 12'd1914 : mem_out_dec = 6'b001111; + 12'd1915 : mem_out_dec = 6'b010000; + 12'd1916 : mem_out_dec = 6'b010000; + 12'd1917 : mem_out_dec = 6'b010001; + 12'd1918 : mem_out_dec = 6'b010001; + 12'd1919 : mem_out_dec = 6'b010010; + 12'd1920 : mem_out_dec = 6'b111111; + 12'd1921 : mem_out_dec = 6'b111111; + 12'd1922 : mem_out_dec = 6'b111111; + 12'd1923 : mem_out_dec = 6'b111111; + 12'd1924 : mem_out_dec = 6'b111111; + 12'd1925 : mem_out_dec = 6'b111111; + 12'd1926 : mem_out_dec = 6'b111111; + 12'd1927 : mem_out_dec = 6'b111111; + 12'd1928 : mem_out_dec = 6'b111111; + 12'd1929 : mem_out_dec = 6'b111111; + 12'd1930 : mem_out_dec = 6'b111111; + 12'd1931 : mem_out_dec = 6'b111111; + 12'd1932 : mem_out_dec = 6'b111111; + 12'd1933 : mem_out_dec = 6'b111111; + 12'd1934 : mem_out_dec = 6'b111111; + 12'd1935 : mem_out_dec = 6'b111111; + 12'd1936 : mem_out_dec = 6'b111111; + 12'd1937 : mem_out_dec = 6'b111111; + 12'd1938 : mem_out_dec = 6'b111111; + 12'd1939 : mem_out_dec = 6'b111111; + 12'd1940 : mem_out_dec = 6'b111111; + 12'd1941 : mem_out_dec = 6'b111111; + 12'd1942 : mem_out_dec = 6'b111111; + 12'd1943 : mem_out_dec = 6'b111111; + 12'd1944 : mem_out_dec = 6'b111111; + 12'd1945 : mem_out_dec = 6'b111111; + 12'd1946 : mem_out_dec = 6'b111111; + 12'd1947 : mem_out_dec = 6'b111111; + 12'd1948 : mem_out_dec = 6'b111111; + 12'd1949 : mem_out_dec = 6'b111111; + 12'd1950 : mem_out_dec = 6'b111111; + 12'd1951 : mem_out_dec = 6'b111111; + 12'd1952 : mem_out_dec = 6'b111111; + 12'd1953 : mem_out_dec = 6'b111111; + 12'd1954 : mem_out_dec = 6'b111111; + 12'd1955 : mem_out_dec = 6'b111111; + 12'd1956 : mem_out_dec = 6'b000100; + 12'd1957 : mem_out_dec = 6'b000101; + 12'd1958 : mem_out_dec = 6'b000101; + 12'd1959 : mem_out_dec = 6'b000110; + 12'd1960 : mem_out_dec = 6'b000110; + 12'd1961 : mem_out_dec = 6'b000111; + 12'd1962 : mem_out_dec = 6'b001000; + 12'd1963 : mem_out_dec = 6'b001000; + 12'd1964 : mem_out_dec = 6'b001001; + 12'd1965 : mem_out_dec = 6'b001010; + 12'd1966 : mem_out_dec = 6'b001011; + 12'd1967 : mem_out_dec = 6'b001011; + 12'd1968 : mem_out_dec = 6'b001011; + 12'd1969 : mem_out_dec = 6'b001100; + 12'd1970 : mem_out_dec = 6'b001100; + 12'd1971 : mem_out_dec = 6'b001101; + 12'd1972 : mem_out_dec = 6'b001101; + 12'd1973 : mem_out_dec = 6'b001110; + 12'd1974 : mem_out_dec = 6'b001111; + 12'd1975 : mem_out_dec = 6'b001111; + 12'd1976 : mem_out_dec = 6'b001110; + 12'd1977 : mem_out_dec = 6'b001110; + 12'd1978 : mem_out_dec = 6'b001111; + 12'd1979 : mem_out_dec = 6'b001111; + 12'd1980 : mem_out_dec = 6'b010000; + 12'd1981 : mem_out_dec = 6'b010000; + 12'd1982 : mem_out_dec = 6'b010001; + 12'd1983 : mem_out_dec = 6'b010001; + 12'd1984 : mem_out_dec = 6'b111111; + 12'd1985 : mem_out_dec = 6'b111111; + 12'd1986 : mem_out_dec = 6'b111111; + 12'd1987 : mem_out_dec = 6'b111111; + 12'd1988 : mem_out_dec = 6'b111111; + 12'd1989 : mem_out_dec = 6'b111111; + 12'd1990 : mem_out_dec = 6'b111111; + 12'd1991 : mem_out_dec = 6'b111111; + 12'd1992 : mem_out_dec = 6'b111111; + 12'd1993 : mem_out_dec = 6'b111111; + 12'd1994 : mem_out_dec = 6'b111111; + 12'd1995 : mem_out_dec = 6'b111111; + 12'd1996 : mem_out_dec = 6'b111111; + 12'd1997 : mem_out_dec = 6'b111111; + 12'd1998 : mem_out_dec = 6'b111111; + 12'd1999 : mem_out_dec = 6'b111111; + 12'd2000 : mem_out_dec = 6'b111111; + 12'd2001 : mem_out_dec = 6'b111111; + 12'd2002 : mem_out_dec = 6'b111111; + 12'd2003 : mem_out_dec = 6'b111111; + 12'd2004 : mem_out_dec = 6'b111111; + 12'd2005 : mem_out_dec = 6'b111111; + 12'd2006 : mem_out_dec = 6'b111111; + 12'd2007 : mem_out_dec = 6'b111111; + 12'd2008 : mem_out_dec = 6'b111111; + 12'd2009 : mem_out_dec = 6'b111111; + 12'd2010 : mem_out_dec = 6'b111111; + 12'd2011 : mem_out_dec = 6'b111111; + 12'd2012 : mem_out_dec = 6'b111111; + 12'd2013 : mem_out_dec = 6'b111111; + 12'd2014 : mem_out_dec = 6'b111111; + 12'd2015 : mem_out_dec = 6'b111111; + 12'd2016 : mem_out_dec = 6'b111111; + 12'd2017 : mem_out_dec = 6'b111111; + 12'd2018 : mem_out_dec = 6'b111111; + 12'd2019 : mem_out_dec = 6'b111111; + 12'd2020 : mem_out_dec = 6'b111111; + 12'd2021 : mem_out_dec = 6'b000100; + 12'd2022 : mem_out_dec = 6'b000101; + 12'd2023 : mem_out_dec = 6'b000110; + 12'd2024 : mem_out_dec = 6'b000110; + 12'd2025 : mem_out_dec = 6'b000111; + 12'd2026 : mem_out_dec = 6'b000111; + 12'd2027 : mem_out_dec = 6'b001000; + 12'd2028 : mem_out_dec = 6'b001001; + 12'd2029 : mem_out_dec = 6'b001010; + 12'd2030 : mem_out_dec = 6'b001010; + 12'd2031 : mem_out_dec = 6'b001011; + 12'd2032 : mem_out_dec = 6'b001011; + 12'd2033 : mem_out_dec = 6'b001011; + 12'd2034 : mem_out_dec = 6'b001100; + 12'd2035 : mem_out_dec = 6'b001101; + 12'd2036 : mem_out_dec = 6'b001101; + 12'd2037 : mem_out_dec = 6'b001110; + 12'd2038 : mem_out_dec = 6'b001110; + 12'd2039 : mem_out_dec = 6'b001110; + 12'd2040 : mem_out_dec = 6'b001101; + 12'd2041 : mem_out_dec = 6'b001110; + 12'd2042 : mem_out_dec = 6'b001110; + 12'd2043 : mem_out_dec = 6'b001111; + 12'd2044 : mem_out_dec = 6'b001111; + 12'd2045 : mem_out_dec = 6'b010000; + 12'd2046 : mem_out_dec = 6'b010000; + 12'd2047 : mem_out_dec = 6'b010001; + 12'd2048 : mem_out_dec = 6'b111111; + 12'd2049 : mem_out_dec = 6'b111111; + 12'd2050 : mem_out_dec = 6'b111111; + 12'd2051 : mem_out_dec = 6'b111111; + 12'd2052 : mem_out_dec = 6'b111111; + 12'd2053 : mem_out_dec = 6'b111111; + 12'd2054 : mem_out_dec = 6'b111111; + 12'd2055 : mem_out_dec = 6'b111111; + 12'd2056 : mem_out_dec = 6'b111111; + 12'd2057 : mem_out_dec = 6'b111111; + 12'd2058 : mem_out_dec = 6'b111111; + 12'd2059 : mem_out_dec = 6'b111111; + 12'd2060 : mem_out_dec = 6'b111111; + 12'd2061 : mem_out_dec = 6'b111111; + 12'd2062 : mem_out_dec = 6'b111111; + 12'd2063 : mem_out_dec = 6'b111111; + 12'd2064 : mem_out_dec = 6'b111111; + 12'd2065 : mem_out_dec = 6'b111111; + 12'd2066 : mem_out_dec = 6'b111111; + 12'd2067 : mem_out_dec = 6'b111111; + 12'd2068 : mem_out_dec = 6'b111111; + 12'd2069 : mem_out_dec = 6'b111111; + 12'd2070 : mem_out_dec = 6'b111111; + 12'd2071 : mem_out_dec = 6'b111111; + 12'd2072 : mem_out_dec = 6'b111111; + 12'd2073 : mem_out_dec = 6'b111111; + 12'd2074 : mem_out_dec = 6'b111111; + 12'd2075 : mem_out_dec = 6'b111111; + 12'd2076 : mem_out_dec = 6'b111111; + 12'd2077 : mem_out_dec = 6'b111111; + 12'd2078 : mem_out_dec = 6'b111111; + 12'd2079 : mem_out_dec = 6'b111111; + 12'd2080 : mem_out_dec = 6'b111111; + 12'd2081 : mem_out_dec = 6'b111111; + 12'd2082 : mem_out_dec = 6'b111111; + 12'd2083 : mem_out_dec = 6'b111111; + 12'd2084 : mem_out_dec = 6'b111111; + 12'd2085 : mem_out_dec = 6'b111111; + 12'd2086 : mem_out_dec = 6'b000100; + 12'd2087 : mem_out_dec = 6'b000101; + 12'd2088 : mem_out_dec = 6'b000101; + 12'd2089 : mem_out_dec = 6'b000110; + 12'd2090 : mem_out_dec = 6'b000110; + 12'd2091 : mem_out_dec = 6'b000111; + 12'd2092 : mem_out_dec = 6'b001000; + 12'd2093 : mem_out_dec = 6'b001001; + 12'd2094 : mem_out_dec = 6'b001001; + 12'd2095 : mem_out_dec = 6'b001010; + 12'd2096 : mem_out_dec = 6'b001010; + 12'd2097 : mem_out_dec = 6'b001011; + 12'd2098 : mem_out_dec = 6'b001011; + 12'd2099 : mem_out_dec = 6'b001100; + 12'd2100 : mem_out_dec = 6'b001100; + 12'd2101 : mem_out_dec = 6'b001100; + 12'd2102 : mem_out_dec = 6'b001100; + 12'd2103 : mem_out_dec = 6'b001101; + 12'd2104 : mem_out_dec = 6'b001100; + 12'd2105 : mem_out_dec = 6'b001100; + 12'd2106 : mem_out_dec = 6'b001101; + 12'd2107 : mem_out_dec = 6'b001101; + 12'd2108 : mem_out_dec = 6'b001110; + 12'd2109 : mem_out_dec = 6'b001111; + 12'd2110 : mem_out_dec = 6'b010000; + 12'd2111 : mem_out_dec = 6'b010000; + 12'd2112 : mem_out_dec = 6'b111111; + 12'd2113 : mem_out_dec = 6'b111111; + 12'd2114 : mem_out_dec = 6'b111111; + 12'd2115 : mem_out_dec = 6'b111111; + 12'd2116 : mem_out_dec = 6'b111111; + 12'd2117 : mem_out_dec = 6'b111111; + 12'd2118 : mem_out_dec = 6'b111111; + 12'd2119 : mem_out_dec = 6'b111111; + 12'd2120 : mem_out_dec = 6'b111111; + 12'd2121 : mem_out_dec = 6'b111111; + 12'd2122 : mem_out_dec = 6'b111111; + 12'd2123 : mem_out_dec = 6'b111111; + 12'd2124 : mem_out_dec = 6'b111111; + 12'd2125 : mem_out_dec = 6'b111111; + 12'd2126 : mem_out_dec = 6'b111111; + 12'd2127 : mem_out_dec = 6'b111111; + 12'd2128 : mem_out_dec = 6'b111111; + 12'd2129 : mem_out_dec = 6'b111111; + 12'd2130 : mem_out_dec = 6'b111111; + 12'd2131 : mem_out_dec = 6'b111111; + 12'd2132 : mem_out_dec = 6'b111111; + 12'd2133 : mem_out_dec = 6'b111111; + 12'd2134 : mem_out_dec = 6'b111111; + 12'd2135 : mem_out_dec = 6'b111111; + 12'd2136 : mem_out_dec = 6'b111111; + 12'd2137 : mem_out_dec = 6'b111111; + 12'd2138 : mem_out_dec = 6'b111111; + 12'd2139 : mem_out_dec = 6'b111111; + 12'd2140 : mem_out_dec = 6'b111111; + 12'd2141 : mem_out_dec = 6'b111111; + 12'd2142 : mem_out_dec = 6'b111111; + 12'd2143 : mem_out_dec = 6'b111111; + 12'd2144 : mem_out_dec = 6'b111111; + 12'd2145 : mem_out_dec = 6'b111111; + 12'd2146 : mem_out_dec = 6'b111111; + 12'd2147 : mem_out_dec = 6'b111111; + 12'd2148 : mem_out_dec = 6'b111111; + 12'd2149 : mem_out_dec = 6'b111111; + 12'd2150 : mem_out_dec = 6'b111111; + 12'd2151 : mem_out_dec = 6'b000100; + 12'd2152 : mem_out_dec = 6'b000100; + 12'd2153 : mem_out_dec = 6'b000101; + 12'd2154 : mem_out_dec = 6'b000110; + 12'd2155 : mem_out_dec = 6'b000111; + 12'd2156 : mem_out_dec = 6'b000111; + 12'd2157 : mem_out_dec = 6'b001000; + 12'd2158 : mem_out_dec = 6'b001001; + 12'd2159 : mem_out_dec = 6'b001001; + 12'd2160 : mem_out_dec = 6'b001010; + 12'd2161 : mem_out_dec = 6'b001010; + 12'd2162 : mem_out_dec = 6'b001011; + 12'd2163 : mem_out_dec = 6'b001011; + 12'd2164 : mem_out_dec = 6'b001011; + 12'd2165 : mem_out_dec = 6'b001011; + 12'd2166 : mem_out_dec = 6'b001011; + 12'd2167 : mem_out_dec = 6'b001100; + 12'd2168 : mem_out_dec = 6'b001011; + 12'd2169 : mem_out_dec = 6'b001011; + 12'd2170 : mem_out_dec = 6'b001100; + 12'd2171 : mem_out_dec = 6'b001101; + 12'd2172 : mem_out_dec = 6'b001110; + 12'd2173 : mem_out_dec = 6'b001110; + 12'd2174 : mem_out_dec = 6'b001111; + 12'd2175 : mem_out_dec = 6'b010000; + 12'd2176 : mem_out_dec = 6'b111111; + 12'd2177 : mem_out_dec = 6'b111111; + 12'd2178 : mem_out_dec = 6'b111111; + 12'd2179 : mem_out_dec = 6'b111111; + 12'd2180 : mem_out_dec = 6'b111111; + 12'd2181 : mem_out_dec = 6'b111111; + 12'd2182 : mem_out_dec = 6'b111111; + 12'd2183 : mem_out_dec = 6'b111111; + 12'd2184 : mem_out_dec = 6'b111111; + 12'd2185 : mem_out_dec = 6'b111111; + 12'd2186 : mem_out_dec = 6'b111111; + 12'd2187 : mem_out_dec = 6'b111111; + 12'd2188 : mem_out_dec = 6'b111111; + 12'd2189 : mem_out_dec = 6'b111111; + 12'd2190 : mem_out_dec = 6'b111111; + 12'd2191 : mem_out_dec = 6'b111111; + 12'd2192 : mem_out_dec = 6'b111111; + 12'd2193 : mem_out_dec = 6'b111111; + 12'd2194 : mem_out_dec = 6'b111111; + 12'd2195 : mem_out_dec = 6'b111111; + 12'd2196 : mem_out_dec = 6'b111111; + 12'd2197 : mem_out_dec = 6'b111111; + 12'd2198 : mem_out_dec = 6'b111111; + 12'd2199 : mem_out_dec = 6'b111111; + 12'd2200 : mem_out_dec = 6'b111111; + 12'd2201 : mem_out_dec = 6'b111111; + 12'd2202 : mem_out_dec = 6'b111111; + 12'd2203 : mem_out_dec = 6'b111111; + 12'd2204 : mem_out_dec = 6'b111111; + 12'd2205 : mem_out_dec = 6'b111111; + 12'd2206 : mem_out_dec = 6'b111111; + 12'd2207 : mem_out_dec = 6'b111111; + 12'd2208 : mem_out_dec = 6'b111111; + 12'd2209 : mem_out_dec = 6'b111111; + 12'd2210 : mem_out_dec = 6'b111111; + 12'd2211 : mem_out_dec = 6'b111111; + 12'd2212 : mem_out_dec = 6'b111111; + 12'd2213 : mem_out_dec = 6'b111111; + 12'd2214 : mem_out_dec = 6'b111111; + 12'd2215 : mem_out_dec = 6'b111111; + 12'd2216 : mem_out_dec = 6'b000100; + 12'd2217 : mem_out_dec = 6'b000101; + 12'd2218 : mem_out_dec = 6'b000101; + 12'd2219 : mem_out_dec = 6'b000110; + 12'd2220 : mem_out_dec = 6'b000111; + 12'd2221 : mem_out_dec = 6'b000111; + 12'd2222 : mem_out_dec = 6'b001000; + 12'd2223 : mem_out_dec = 6'b001001; + 12'd2224 : mem_out_dec = 6'b001001; + 12'd2225 : mem_out_dec = 6'b001010; + 12'd2226 : mem_out_dec = 6'b001010; + 12'd2227 : mem_out_dec = 6'b001010; + 12'd2228 : mem_out_dec = 6'b001010; + 12'd2229 : mem_out_dec = 6'b001010; + 12'd2230 : mem_out_dec = 6'b001010; + 12'd2231 : mem_out_dec = 6'b001010; + 12'd2232 : mem_out_dec = 6'b001010; + 12'd2233 : mem_out_dec = 6'b001011; + 12'd2234 : mem_out_dec = 6'b001100; + 12'd2235 : mem_out_dec = 6'b001100; + 12'd2236 : mem_out_dec = 6'b001101; + 12'd2237 : mem_out_dec = 6'b001110; + 12'd2238 : mem_out_dec = 6'b001111; + 12'd2239 : mem_out_dec = 6'b010000; + 12'd2240 : mem_out_dec = 6'b111111; + 12'd2241 : mem_out_dec = 6'b111111; + 12'd2242 : mem_out_dec = 6'b111111; + 12'd2243 : mem_out_dec = 6'b111111; + 12'd2244 : mem_out_dec = 6'b111111; + 12'd2245 : mem_out_dec = 6'b111111; + 12'd2246 : mem_out_dec = 6'b111111; + 12'd2247 : mem_out_dec = 6'b111111; + 12'd2248 : mem_out_dec = 6'b111111; + 12'd2249 : mem_out_dec = 6'b111111; + 12'd2250 : mem_out_dec = 6'b111111; + 12'd2251 : mem_out_dec = 6'b111111; + 12'd2252 : mem_out_dec = 6'b111111; + 12'd2253 : mem_out_dec = 6'b111111; + 12'd2254 : mem_out_dec = 6'b111111; + 12'd2255 : mem_out_dec = 6'b111111; + 12'd2256 : mem_out_dec = 6'b111111; + 12'd2257 : mem_out_dec = 6'b111111; + 12'd2258 : mem_out_dec = 6'b111111; + 12'd2259 : mem_out_dec = 6'b111111; + 12'd2260 : mem_out_dec = 6'b111111; + 12'd2261 : mem_out_dec = 6'b111111; + 12'd2262 : mem_out_dec = 6'b111111; + 12'd2263 : mem_out_dec = 6'b111111; + 12'd2264 : mem_out_dec = 6'b111111; + 12'd2265 : mem_out_dec = 6'b111111; + 12'd2266 : mem_out_dec = 6'b111111; + 12'd2267 : mem_out_dec = 6'b111111; + 12'd2268 : mem_out_dec = 6'b111111; + 12'd2269 : mem_out_dec = 6'b111111; + 12'd2270 : mem_out_dec = 6'b111111; + 12'd2271 : mem_out_dec = 6'b111111; + 12'd2272 : mem_out_dec = 6'b111111; + 12'd2273 : mem_out_dec = 6'b111111; + 12'd2274 : mem_out_dec = 6'b111111; + 12'd2275 : mem_out_dec = 6'b111111; + 12'd2276 : mem_out_dec = 6'b111111; + 12'd2277 : mem_out_dec = 6'b111111; + 12'd2278 : mem_out_dec = 6'b111111; + 12'd2279 : mem_out_dec = 6'b111111; + 12'd2280 : mem_out_dec = 6'b111111; + 12'd2281 : mem_out_dec = 6'b000100; + 12'd2282 : mem_out_dec = 6'b000101; + 12'd2283 : mem_out_dec = 6'b000101; + 12'd2284 : mem_out_dec = 6'b000110; + 12'd2285 : mem_out_dec = 6'b000111; + 12'd2286 : mem_out_dec = 6'b001000; + 12'd2287 : mem_out_dec = 6'b001001; + 12'd2288 : mem_out_dec = 6'b001001; + 12'd2289 : mem_out_dec = 6'b001001; + 12'd2290 : mem_out_dec = 6'b001001; + 12'd2291 : mem_out_dec = 6'b001001; + 12'd2292 : mem_out_dec = 6'b001001; + 12'd2293 : mem_out_dec = 6'b001001; + 12'd2294 : mem_out_dec = 6'b001001; + 12'd2295 : mem_out_dec = 6'b001001; + 12'd2296 : mem_out_dec = 6'b001010; + 12'd2297 : mem_out_dec = 6'b001010; + 12'd2298 : mem_out_dec = 6'b001011; + 12'd2299 : mem_out_dec = 6'b001100; + 12'd2300 : mem_out_dec = 6'b001101; + 12'd2301 : mem_out_dec = 6'b001110; + 12'd2302 : mem_out_dec = 6'b001110; + 12'd2303 : mem_out_dec = 6'b001111; + 12'd2304 : mem_out_dec = 6'b111111; + 12'd2305 : mem_out_dec = 6'b111111; + 12'd2306 : mem_out_dec = 6'b111111; + 12'd2307 : mem_out_dec = 6'b111111; + 12'd2308 : mem_out_dec = 6'b111111; + 12'd2309 : mem_out_dec = 6'b111111; + 12'd2310 : mem_out_dec = 6'b111111; + 12'd2311 : mem_out_dec = 6'b111111; + 12'd2312 : mem_out_dec = 6'b111111; + 12'd2313 : mem_out_dec = 6'b111111; + 12'd2314 : mem_out_dec = 6'b111111; + 12'd2315 : mem_out_dec = 6'b111111; + 12'd2316 : mem_out_dec = 6'b111111; + 12'd2317 : mem_out_dec = 6'b111111; + 12'd2318 : mem_out_dec = 6'b111111; + 12'd2319 : mem_out_dec = 6'b111111; + 12'd2320 : mem_out_dec = 6'b111111; + 12'd2321 : mem_out_dec = 6'b111111; + 12'd2322 : mem_out_dec = 6'b111111; + 12'd2323 : mem_out_dec = 6'b111111; + 12'd2324 : mem_out_dec = 6'b111111; + 12'd2325 : mem_out_dec = 6'b111111; + 12'd2326 : mem_out_dec = 6'b111111; + 12'd2327 : mem_out_dec = 6'b111111; + 12'd2328 : mem_out_dec = 6'b111111; + 12'd2329 : mem_out_dec = 6'b111111; + 12'd2330 : mem_out_dec = 6'b111111; + 12'd2331 : mem_out_dec = 6'b111111; + 12'd2332 : mem_out_dec = 6'b111111; + 12'd2333 : mem_out_dec = 6'b111111; + 12'd2334 : mem_out_dec = 6'b111111; + 12'd2335 : mem_out_dec = 6'b111111; + 12'd2336 : mem_out_dec = 6'b111111; + 12'd2337 : mem_out_dec = 6'b111111; + 12'd2338 : mem_out_dec = 6'b111111; + 12'd2339 : mem_out_dec = 6'b111111; + 12'd2340 : mem_out_dec = 6'b111111; + 12'd2341 : mem_out_dec = 6'b111111; + 12'd2342 : mem_out_dec = 6'b111111; + 12'd2343 : mem_out_dec = 6'b111111; + 12'd2344 : mem_out_dec = 6'b111111; + 12'd2345 : mem_out_dec = 6'b111111; + 12'd2346 : mem_out_dec = 6'b000100; + 12'd2347 : mem_out_dec = 6'b000101; + 12'd2348 : mem_out_dec = 6'b000110; + 12'd2349 : mem_out_dec = 6'b000111; + 12'd2350 : mem_out_dec = 6'b000111; + 12'd2351 : mem_out_dec = 6'b001000; + 12'd2352 : mem_out_dec = 6'b001000; + 12'd2353 : mem_out_dec = 6'b001000; + 12'd2354 : mem_out_dec = 6'b001000; + 12'd2355 : mem_out_dec = 6'b001000; + 12'd2356 : mem_out_dec = 6'b001000; + 12'd2357 : mem_out_dec = 6'b001000; + 12'd2358 : mem_out_dec = 6'b001000; + 12'd2359 : mem_out_dec = 6'b001001; + 12'd2360 : mem_out_dec = 6'b001001; + 12'd2361 : mem_out_dec = 6'b001010; + 12'd2362 : mem_out_dec = 6'b001011; + 12'd2363 : mem_out_dec = 6'b001100; + 12'd2364 : mem_out_dec = 6'b001100; + 12'd2365 : mem_out_dec = 6'b001101; + 12'd2366 : mem_out_dec = 6'b001110; + 12'd2367 : mem_out_dec = 6'b001111; + 12'd2368 : mem_out_dec = 6'b111111; + 12'd2369 : mem_out_dec = 6'b111111; + 12'd2370 : mem_out_dec = 6'b111111; + 12'd2371 : mem_out_dec = 6'b111111; + 12'd2372 : mem_out_dec = 6'b111111; + 12'd2373 : mem_out_dec = 6'b111111; + 12'd2374 : mem_out_dec = 6'b111111; + 12'd2375 : mem_out_dec = 6'b111111; + 12'd2376 : mem_out_dec = 6'b111111; + 12'd2377 : mem_out_dec = 6'b111111; + 12'd2378 : mem_out_dec = 6'b111111; + 12'd2379 : mem_out_dec = 6'b111111; + 12'd2380 : mem_out_dec = 6'b111111; + 12'd2381 : mem_out_dec = 6'b111111; + 12'd2382 : mem_out_dec = 6'b111111; + 12'd2383 : mem_out_dec = 6'b111111; + 12'd2384 : mem_out_dec = 6'b111111; + 12'd2385 : mem_out_dec = 6'b111111; + 12'd2386 : mem_out_dec = 6'b111111; + 12'd2387 : mem_out_dec = 6'b111111; + 12'd2388 : mem_out_dec = 6'b111111; + 12'd2389 : mem_out_dec = 6'b111111; + 12'd2390 : mem_out_dec = 6'b111111; + 12'd2391 : mem_out_dec = 6'b111111; + 12'd2392 : mem_out_dec = 6'b111111; + 12'd2393 : mem_out_dec = 6'b111111; + 12'd2394 : mem_out_dec = 6'b111111; + 12'd2395 : mem_out_dec = 6'b111111; + 12'd2396 : mem_out_dec = 6'b111111; + 12'd2397 : mem_out_dec = 6'b111111; + 12'd2398 : mem_out_dec = 6'b111111; + 12'd2399 : mem_out_dec = 6'b111111; + 12'd2400 : mem_out_dec = 6'b111111; + 12'd2401 : mem_out_dec = 6'b111111; + 12'd2402 : mem_out_dec = 6'b111111; + 12'd2403 : mem_out_dec = 6'b111111; + 12'd2404 : mem_out_dec = 6'b111111; + 12'd2405 : mem_out_dec = 6'b111111; + 12'd2406 : mem_out_dec = 6'b111111; + 12'd2407 : mem_out_dec = 6'b111111; + 12'd2408 : mem_out_dec = 6'b111111; + 12'd2409 : mem_out_dec = 6'b111111; + 12'd2410 : mem_out_dec = 6'b111111; + 12'd2411 : mem_out_dec = 6'b000101; + 12'd2412 : mem_out_dec = 6'b000101; + 12'd2413 : mem_out_dec = 6'b000110; + 12'd2414 : mem_out_dec = 6'b000111; + 12'd2415 : mem_out_dec = 6'b001000; + 12'd2416 : mem_out_dec = 6'b000111; + 12'd2417 : mem_out_dec = 6'b000111; + 12'd2418 : mem_out_dec = 6'b000111; + 12'd2419 : mem_out_dec = 6'b000111; + 12'd2420 : mem_out_dec = 6'b000111; + 12'd2421 : mem_out_dec = 6'b000111; + 12'd2422 : mem_out_dec = 6'b001000; + 12'd2423 : mem_out_dec = 6'b001001; + 12'd2424 : mem_out_dec = 6'b001001; + 12'd2425 : mem_out_dec = 6'b001010; + 12'd2426 : mem_out_dec = 6'b001010; + 12'd2427 : mem_out_dec = 6'b001011; + 12'd2428 : mem_out_dec = 6'b001100; + 12'd2429 : mem_out_dec = 6'b001101; + 12'd2430 : mem_out_dec = 6'b001101; + 12'd2431 : mem_out_dec = 6'b001110; + 12'd2432 : mem_out_dec = 6'b111111; + 12'd2433 : mem_out_dec = 6'b111111; + 12'd2434 : mem_out_dec = 6'b111111; + 12'd2435 : mem_out_dec = 6'b111111; + 12'd2436 : mem_out_dec = 6'b111111; + 12'd2437 : mem_out_dec = 6'b111111; + 12'd2438 : mem_out_dec = 6'b111111; + 12'd2439 : mem_out_dec = 6'b111111; + 12'd2440 : mem_out_dec = 6'b111111; + 12'd2441 : mem_out_dec = 6'b111111; + 12'd2442 : mem_out_dec = 6'b111111; + 12'd2443 : mem_out_dec = 6'b111111; + 12'd2444 : mem_out_dec = 6'b111111; + 12'd2445 : mem_out_dec = 6'b111111; + 12'd2446 : mem_out_dec = 6'b111111; + 12'd2447 : mem_out_dec = 6'b111111; + 12'd2448 : mem_out_dec = 6'b111111; + 12'd2449 : mem_out_dec = 6'b111111; + 12'd2450 : mem_out_dec = 6'b111111; + 12'd2451 : mem_out_dec = 6'b111111; + 12'd2452 : mem_out_dec = 6'b111111; + 12'd2453 : mem_out_dec = 6'b111111; + 12'd2454 : mem_out_dec = 6'b111111; + 12'd2455 : mem_out_dec = 6'b111111; + 12'd2456 : mem_out_dec = 6'b111111; + 12'd2457 : mem_out_dec = 6'b111111; + 12'd2458 : mem_out_dec = 6'b111111; + 12'd2459 : mem_out_dec = 6'b111111; + 12'd2460 : mem_out_dec = 6'b111111; + 12'd2461 : mem_out_dec = 6'b111111; + 12'd2462 : mem_out_dec = 6'b111111; + 12'd2463 : mem_out_dec = 6'b111111; + 12'd2464 : mem_out_dec = 6'b111111; + 12'd2465 : mem_out_dec = 6'b111111; + 12'd2466 : mem_out_dec = 6'b111111; + 12'd2467 : mem_out_dec = 6'b111111; + 12'd2468 : mem_out_dec = 6'b111111; + 12'd2469 : mem_out_dec = 6'b111111; + 12'd2470 : mem_out_dec = 6'b111111; + 12'd2471 : mem_out_dec = 6'b111111; + 12'd2472 : mem_out_dec = 6'b111111; + 12'd2473 : mem_out_dec = 6'b111111; + 12'd2474 : mem_out_dec = 6'b111111; + 12'd2475 : mem_out_dec = 6'b111111; + 12'd2476 : mem_out_dec = 6'b000101; + 12'd2477 : mem_out_dec = 6'b000110; + 12'd2478 : mem_out_dec = 6'b000111; + 12'd2479 : mem_out_dec = 6'b000111; + 12'd2480 : mem_out_dec = 6'b000110; + 12'd2481 : mem_out_dec = 6'b000110; + 12'd2482 : mem_out_dec = 6'b000110; + 12'd2483 : mem_out_dec = 6'b000110; + 12'd2484 : mem_out_dec = 6'b000110; + 12'd2485 : mem_out_dec = 6'b000111; + 12'd2486 : mem_out_dec = 6'b000111; + 12'd2487 : mem_out_dec = 6'b001000; + 12'd2488 : mem_out_dec = 6'b001001; + 12'd2489 : mem_out_dec = 6'b001001; + 12'd2490 : mem_out_dec = 6'b001010; + 12'd2491 : mem_out_dec = 6'b001011; + 12'd2492 : mem_out_dec = 6'b001011; + 12'd2493 : mem_out_dec = 6'b001100; + 12'd2494 : mem_out_dec = 6'b001101; + 12'd2495 : mem_out_dec = 6'b001110; + 12'd2496 : mem_out_dec = 6'b111111; + 12'd2497 : mem_out_dec = 6'b111111; + 12'd2498 : mem_out_dec = 6'b111111; + 12'd2499 : mem_out_dec = 6'b111111; + 12'd2500 : mem_out_dec = 6'b111111; + 12'd2501 : mem_out_dec = 6'b111111; + 12'd2502 : mem_out_dec = 6'b111111; + 12'd2503 : mem_out_dec = 6'b111111; + 12'd2504 : mem_out_dec = 6'b111111; + 12'd2505 : mem_out_dec = 6'b111111; + 12'd2506 : mem_out_dec = 6'b111111; + 12'd2507 : mem_out_dec = 6'b111111; + 12'd2508 : mem_out_dec = 6'b111111; + 12'd2509 : mem_out_dec = 6'b111111; + 12'd2510 : mem_out_dec = 6'b111111; + 12'd2511 : mem_out_dec = 6'b111111; + 12'd2512 : mem_out_dec = 6'b111111; + 12'd2513 : mem_out_dec = 6'b111111; + 12'd2514 : mem_out_dec = 6'b111111; + 12'd2515 : mem_out_dec = 6'b111111; + 12'd2516 : mem_out_dec = 6'b111111; + 12'd2517 : mem_out_dec = 6'b111111; + 12'd2518 : mem_out_dec = 6'b111111; + 12'd2519 : mem_out_dec = 6'b111111; + 12'd2520 : mem_out_dec = 6'b111111; + 12'd2521 : mem_out_dec = 6'b111111; + 12'd2522 : mem_out_dec = 6'b111111; + 12'd2523 : mem_out_dec = 6'b111111; + 12'd2524 : mem_out_dec = 6'b111111; + 12'd2525 : mem_out_dec = 6'b111111; + 12'd2526 : mem_out_dec = 6'b111111; + 12'd2527 : mem_out_dec = 6'b111111; + 12'd2528 : mem_out_dec = 6'b111111; + 12'd2529 : mem_out_dec = 6'b111111; + 12'd2530 : mem_out_dec = 6'b111111; + 12'd2531 : mem_out_dec = 6'b111111; + 12'd2532 : mem_out_dec = 6'b111111; + 12'd2533 : mem_out_dec = 6'b111111; + 12'd2534 : mem_out_dec = 6'b111111; + 12'd2535 : mem_out_dec = 6'b111111; + 12'd2536 : mem_out_dec = 6'b111111; + 12'd2537 : mem_out_dec = 6'b111111; + 12'd2538 : mem_out_dec = 6'b111111; + 12'd2539 : mem_out_dec = 6'b111111; + 12'd2540 : mem_out_dec = 6'b111111; + 12'd2541 : mem_out_dec = 6'b000101; + 12'd2542 : mem_out_dec = 6'b000110; + 12'd2543 : mem_out_dec = 6'b000110; + 12'd2544 : mem_out_dec = 6'b000110; + 12'd2545 : mem_out_dec = 6'b000110; + 12'd2546 : mem_out_dec = 6'b000101; + 12'd2547 : mem_out_dec = 6'b000101; + 12'd2548 : mem_out_dec = 6'b000110; + 12'd2549 : mem_out_dec = 6'b000111; + 12'd2550 : mem_out_dec = 6'b000111; + 12'd2551 : mem_out_dec = 6'b001000; + 12'd2552 : mem_out_dec = 6'b001000; + 12'd2553 : mem_out_dec = 6'b001001; + 12'd2554 : mem_out_dec = 6'b001010; + 12'd2555 : mem_out_dec = 6'b001010; + 12'd2556 : mem_out_dec = 6'b001011; + 12'd2557 : mem_out_dec = 6'b001100; + 12'd2558 : mem_out_dec = 6'b001101; + 12'd2559 : mem_out_dec = 6'b001101; + 12'd2560 : mem_out_dec = 6'b111111; + 12'd2561 : mem_out_dec = 6'b111111; + 12'd2562 : mem_out_dec = 6'b111111; + 12'd2563 : mem_out_dec = 6'b111111; + 12'd2564 : mem_out_dec = 6'b111111; + 12'd2565 : mem_out_dec = 6'b111111; + 12'd2566 : mem_out_dec = 6'b111111; + 12'd2567 : mem_out_dec = 6'b111111; + 12'd2568 : mem_out_dec = 6'b111111; + 12'd2569 : mem_out_dec = 6'b111111; + 12'd2570 : mem_out_dec = 6'b111111; + 12'd2571 : mem_out_dec = 6'b111111; + 12'd2572 : mem_out_dec = 6'b111111; + 12'd2573 : mem_out_dec = 6'b111111; + 12'd2574 : mem_out_dec = 6'b111111; + 12'd2575 : mem_out_dec = 6'b111111; + 12'd2576 : mem_out_dec = 6'b111111; + 12'd2577 : mem_out_dec = 6'b111111; + 12'd2578 : mem_out_dec = 6'b111111; + 12'd2579 : mem_out_dec = 6'b111111; + 12'd2580 : mem_out_dec = 6'b111111; + 12'd2581 : mem_out_dec = 6'b111111; + 12'd2582 : mem_out_dec = 6'b111111; + 12'd2583 : mem_out_dec = 6'b111111; + 12'd2584 : mem_out_dec = 6'b111111; + 12'd2585 : mem_out_dec = 6'b111111; + 12'd2586 : mem_out_dec = 6'b111111; + 12'd2587 : mem_out_dec = 6'b111111; + 12'd2588 : mem_out_dec = 6'b111111; + 12'd2589 : mem_out_dec = 6'b111111; + 12'd2590 : mem_out_dec = 6'b111111; + 12'd2591 : mem_out_dec = 6'b111111; + 12'd2592 : mem_out_dec = 6'b111111; + 12'd2593 : mem_out_dec = 6'b111111; + 12'd2594 : mem_out_dec = 6'b111111; + 12'd2595 : mem_out_dec = 6'b111111; + 12'd2596 : mem_out_dec = 6'b111111; + 12'd2597 : mem_out_dec = 6'b111111; + 12'd2598 : mem_out_dec = 6'b111111; + 12'd2599 : mem_out_dec = 6'b111111; + 12'd2600 : mem_out_dec = 6'b111111; + 12'd2601 : mem_out_dec = 6'b111111; + 12'd2602 : mem_out_dec = 6'b111111; + 12'd2603 : mem_out_dec = 6'b111111; + 12'd2604 : mem_out_dec = 6'b111111; + 12'd2605 : mem_out_dec = 6'b111111; + 12'd2606 : mem_out_dec = 6'b000100; + 12'd2607 : mem_out_dec = 6'b000101; + 12'd2608 : mem_out_dec = 6'b000100; + 12'd2609 : mem_out_dec = 6'b000100; + 12'd2610 : mem_out_dec = 6'b000100; + 12'd2611 : mem_out_dec = 6'b000101; + 12'd2612 : mem_out_dec = 6'b000101; + 12'd2613 : mem_out_dec = 6'b000110; + 12'd2614 : mem_out_dec = 6'b000111; + 12'd2615 : mem_out_dec = 6'b000111; + 12'd2616 : mem_out_dec = 6'b000111; + 12'd2617 : mem_out_dec = 6'b001000; + 12'd2618 : mem_out_dec = 6'b001001; + 12'd2619 : mem_out_dec = 6'b001010; + 12'd2620 : mem_out_dec = 6'b001010; + 12'd2621 : mem_out_dec = 6'b001011; + 12'd2622 : mem_out_dec = 6'b001100; + 12'd2623 : mem_out_dec = 6'b001101; + 12'd2624 : mem_out_dec = 6'b111111; + 12'd2625 : mem_out_dec = 6'b111111; + 12'd2626 : mem_out_dec = 6'b111111; + 12'd2627 : mem_out_dec = 6'b111111; + 12'd2628 : mem_out_dec = 6'b111111; + 12'd2629 : mem_out_dec = 6'b111111; + 12'd2630 : mem_out_dec = 6'b111111; + 12'd2631 : mem_out_dec = 6'b111111; + 12'd2632 : mem_out_dec = 6'b111111; + 12'd2633 : mem_out_dec = 6'b111111; + 12'd2634 : mem_out_dec = 6'b111111; + 12'd2635 : mem_out_dec = 6'b111111; + 12'd2636 : mem_out_dec = 6'b111111; + 12'd2637 : mem_out_dec = 6'b111111; + 12'd2638 : mem_out_dec = 6'b111111; + 12'd2639 : mem_out_dec = 6'b111111; + 12'd2640 : mem_out_dec = 6'b111111; + 12'd2641 : mem_out_dec = 6'b111111; + 12'd2642 : mem_out_dec = 6'b111111; + 12'd2643 : mem_out_dec = 6'b111111; + 12'd2644 : mem_out_dec = 6'b111111; + 12'd2645 : mem_out_dec = 6'b111111; + 12'd2646 : mem_out_dec = 6'b111111; + 12'd2647 : mem_out_dec = 6'b111111; + 12'd2648 : mem_out_dec = 6'b111111; + 12'd2649 : mem_out_dec = 6'b111111; + 12'd2650 : mem_out_dec = 6'b111111; + 12'd2651 : mem_out_dec = 6'b111111; + 12'd2652 : mem_out_dec = 6'b111111; + 12'd2653 : mem_out_dec = 6'b111111; + 12'd2654 : mem_out_dec = 6'b111111; + 12'd2655 : mem_out_dec = 6'b111111; + 12'd2656 : mem_out_dec = 6'b111111; + 12'd2657 : mem_out_dec = 6'b111111; + 12'd2658 : mem_out_dec = 6'b111111; + 12'd2659 : mem_out_dec = 6'b111111; + 12'd2660 : mem_out_dec = 6'b111111; + 12'd2661 : mem_out_dec = 6'b111111; + 12'd2662 : mem_out_dec = 6'b111111; + 12'd2663 : mem_out_dec = 6'b111111; + 12'd2664 : mem_out_dec = 6'b111111; + 12'd2665 : mem_out_dec = 6'b111111; + 12'd2666 : mem_out_dec = 6'b111111; + 12'd2667 : mem_out_dec = 6'b111111; + 12'd2668 : mem_out_dec = 6'b111111; + 12'd2669 : mem_out_dec = 6'b111111; + 12'd2670 : mem_out_dec = 6'b111111; + 12'd2671 : mem_out_dec = 6'b000100; + 12'd2672 : mem_out_dec = 6'b000011; + 12'd2673 : mem_out_dec = 6'b000011; + 12'd2674 : mem_out_dec = 6'b000100; + 12'd2675 : mem_out_dec = 6'b000100; + 12'd2676 : mem_out_dec = 6'b000101; + 12'd2677 : mem_out_dec = 6'b000110; + 12'd2678 : mem_out_dec = 6'b000110; + 12'd2679 : mem_out_dec = 6'b000111; + 12'd2680 : mem_out_dec = 6'b000111; + 12'd2681 : mem_out_dec = 6'b001000; + 12'd2682 : mem_out_dec = 6'b001001; + 12'd2683 : mem_out_dec = 6'b001001; + 12'd2684 : mem_out_dec = 6'b001010; + 12'd2685 : mem_out_dec = 6'b001011; + 12'd2686 : mem_out_dec = 6'b001100; + 12'd2687 : mem_out_dec = 6'b001100; + 12'd2688 : mem_out_dec = 6'b111111; + 12'd2689 : mem_out_dec = 6'b111111; + 12'd2690 : mem_out_dec = 6'b111111; + 12'd2691 : mem_out_dec = 6'b111111; + 12'd2692 : mem_out_dec = 6'b111111; + 12'd2693 : mem_out_dec = 6'b111111; + 12'd2694 : mem_out_dec = 6'b111111; + 12'd2695 : mem_out_dec = 6'b111111; + 12'd2696 : mem_out_dec = 6'b111111; + 12'd2697 : mem_out_dec = 6'b111111; + 12'd2698 : mem_out_dec = 6'b111111; + 12'd2699 : mem_out_dec = 6'b111111; + 12'd2700 : mem_out_dec = 6'b111111; + 12'd2701 : mem_out_dec = 6'b111111; + 12'd2702 : mem_out_dec = 6'b111111; + 12'd2703 : mem_out_dec = 6'b111111; + 12'd2704 : mem_out_dec = 6'b111111; + 12'd2705 : mem_out_dec = 6'b111111; + 12'd2706 : mem_out_dec = 6'b111111; + 12'd2707 : mem_out_dec = 6'b111111; + 12'd2708 : mem_out_dec = 6'b111111; + 12'd2709 : mem_out_dec = 6'b111111; + 12'd2710 : mem_out_dec = 6'b111111; + 12'd2711 : mem_out_dec = 6'b111111; + 12'd2712 : mem_out_dec = 6'b111111; + 12'd2713 : mem_out_dec = 6'b111111; + 12'd2714 : mem_out_dec = 6'b111111; + 12'd2715 : mem_out_dec = 6'b111111; + 12'd2716 : mem_out_dec = 6'b111111; + 12'd2717 : mem_out_dec = 6'b111111; + 12'd2718 : mem_out_dec = 6'b111111; + 12'd2719 : mem_out_dec = 6'b111111; + 12'd2720 : mem_out_dec = 6'b111111; + 12'd2721 : mem_out_dec = 6'b111111; + 12'd2722 : mem_out_dec = 6'b111111; + 12'd2723 : mem_out_dec = 6'b111111; + 12'd2724 : mem_out_dec = 6'b111111; + 12'd2725 : mem_out_dec = 6'b111111; + 12'd2726 : mem_out_dec = 6'b111111; + 12'd2727 : mem_out_dec = 6'b111111; + 12'd2728 : mem_out_dec = 6'b111111; + 12'd2729 : mem_out_dec = 6'b111111; + 12'd2730 : mem_out_dec = 6'b111111; + 12'd2731 : mem_out_dec = 6'b111111; + 12'd2732 : mem_out_dec = 6'b111111; + 12'd2733 : mem_out_dec = 6'b111111; + 12'd2734 : mem_out_dec = 6'b111111; + 12'd2735 : mem_out_dec = 6'b111111; + 12'd2736 : mem_out_dec = 6'b000011; + 12'd2737 : mem_out_dec = 6'b000011; + 12'd2738 : mem_out_dec = 6'b000100; + 12'd2739 : mem_out_dec = 6'b000100; + 12'd2740 : mem_out_dec = 6'b000101; + 12'd2741 : mem_out_dec = 6'b000101; + 12'd2742 : mem_out_dec = 6'b000110; + 12'd2743 : mem_out_dec = 6'b000111; + 12'd2744 : mem_out_dec = 6'b000111; + 12'd2745 : mem_out_dec = 6'b001000; + 12'd2746 : mem_out_dec = 6'b001000; + 12'd2747 : mem_out_dec = 6'b001001; + 12'd2748 : mem_out_dec = 6'b001010; + 12'd2749 : mem_out_dec = 6'b001011; + 12'd2750 : mem_out_dec = 6'b001011; + 12'd2751 : mem_out_dec = 6'b001100; + 12'd2752 : mem_out_dec = 6'b111111; + 12'd2753 : mem_out_dec = 6'b111111; + 12'd2754 : mem_out_dec = 6'b111111; + 12'd2755 : mem_out_dec = 6'b111111; + 12'd2756 : mem_out_dec = 6'b111111; + 12'd2757 : mem_out_dec = 6'b111111; + 12'd2758 : mem_out_dec = 6'b111111; + 12'd2759 : mem_out_dec = 6'b111111; + 12'd2760 : mem_out_dec = 6'b111111; + 12'd2761 : mem_out_dec = 6'b111111; + 12'd2762 : mem_out_dec = 6'b111111; + 12'd2763 : mem_out_dec = 6'b111111; + 12'd2764 : mem_out_dec = 6'b111111; + 12'd2765 : mem_out_dec = 6'b111111; + 12'd2766 : mem_out_dec = 6'b111111; + 12'd2767 : mem_out_dec = 6'b111111; + 12'd2768 : mem_out_dec = 6'b111111; + 12'd2769 : mem_out_dec = 6'b111111; + 12'd2770 : mem_out_dec = 6'b111111; + 12'd2771 : mem_out_dec = 6'b111111; + 12'd2772 : mem_out_dec = 6'b111111; + 12'd2773 : mem_out_dec = 6'b111111; + 12'd2774 : mem_out_dec = 6'b111111; + 12'd2775 : mem_out_dec = 6'b111111; + 12'd2776 : mem_out_dec = 6'b111111; + 12'd2777 : mem_out_dec = 6'b111111; + 12'd2778 : mem_out_dec = 6'b111111; + 12'd2779 : mem_out_dec = 6'b111111; + 12'd2780 : mem_out_dec = 6'b111111; + 12'd2781 : mem_out_dec = 6'b111111; + 12'd2782 : mem_out_dec = 6'b111111; + 12'd2783 : mem_out_dec = 6'b111111; + 12'd2784 : mem_out_dec = 6'b111111; + 12'd2785 : mem_out_dec = 6'b111111; + 12'd2786 : mem_out_dec = 6'b111111; + 12'd2787 : mem_out_dec = 6'b111111; + 12'd2788 : mem_out_dec = 6'b111111; + 12'd2789 : mem_out_dec = 6'b111111; + 12'd2790 : mem_out_dec = 6'b111111; + 12'd2791 : mem_out_dec = 6'b111111; + 12'd2792 : mem_out_dec = 6'b111111; + 12'd2793 : mem_out_dec = 6'b111111; + 12'd2794 : mem_out_dec = 6'b111111; + 12'd2795 : mem_out_dec = 6'b111111; + 12'd2796 : mem_out_dec = 6'b111111; + 12'd2797 : mem_out_dec = 6'b111111; + 12'd2798 : mem_out_dec = 6'b111111; + 12'd2799 : mem_out_dec = 6'b111111; + 12'd2800 : mem_out_dec = 6'b111111; + 12'd2801 : mem_out_dec = 6'b000011; + 12'd2802 : mem_out_dec = 6'b000011; + 12'd2803 : mem_out_dec = 6'b000100; + 12'd2804 : mem_out_dec = 6'b000101; + 12'd2805 : mem_out_dec = 6'b000101; + 12'd2806 : mem_out_dec = 6'b000110; + 12'd2807 : mem_out_dec = 6'b000111; + 12'd2808 : mem_out_dec = 6'b000111; + 12'd2809 : mem_out_dec = 6'b000111; + 12'd2810 : mem_out_dec = 6'b001000; + 12'd2811 : mem_out_dec = 6'b001001; + 12'd2812 : mem_out_dec = 6'b001010; + 12'd2813 : mem_out_dec = 6'b001010; + 12'd2814 : mem_out_dec = 6'b001011; + 12'd2815 : mem_out_dec = 6'b001100; + 12'd2816 : mem_out_dec = 6'b111111; + 12'd2817 : mem_out_dec = 6'b111111; + 12'd2818 : mem_out_dec = 6'b111111; + 12'd2819 : mem_out_dec = 6'b111111; + 12'd2820 : mem_out_dec = 6'b111111; + 12'd2821 : mem_out_dec = 6'b111111; + 12'd2822 : mem_out_dec = 6'b111111; + 12'd2823 : mem_out_dec = 6'b111111; + 12'd2824 : mem_out_dec = 6'b111111; + 12'd2825 : mem_out_dec = 6'b111111; + 12'd2826 : mem_out_dec = 6'b111111; + 12'd2827 : mem_out_dec = 6'b111111; + 12'd2828 : mem_out_dec = 6'b111111; + 12'd2829 : mem_out_dec = 6'b111111; + 12'd2830 : mem_out_dec = 6'b111111; + 12'd2831 : mem_out_dec = 6'b111111; + 12'd2832 : mem_out_dec = 6'b111111; + 12'd2833 : mem_out_dec = 6'b111111; + 12'd2834 : mem_out_dec = 6'b111111; + 12'd2835 : mem_out_dec = 6'b111111; + 12'd2836 : mem_out_dec = 6'b111111; + 12'd2837 : mem_out_dec = 6'b111111; + 12'd2838 : mem_out_dec = 6'b111111; + 12'd2839 : mem_out_dec = 6'b111111; + 12'd2840 : mem_out_dec = 6'b111111; + 12'd2841 : mem_out_dec = 6'b111111; + 12'd2842 : mem_out_dec = 6'b111111; + 12'd2843 : mem_out_dec = 6'b111111; + 12'd2844 : mem_out_dec = 6'b111111; + 12'd2845 : mem_out_dec = 6'b111111; + 12'd2846 : mem_out_dec = 6'b111111; + 12'd2847 : mem_out_dec = 6'b111111; + 12'd2848 : mem_out_dec = 6'b111111; + 12'd2849 : mem_out_dec = 6'b111111; + 12'd2850 : mem_out_dec = 6'b111111; + 12'd2851 : mem_out_dec = 6'b111111; + 12'd2852 : mem_out_dec = 6'b111111; + 12'd2853 : mem_out_dec = 6'b111111; + 12'd2854 : mem_out_dec = 6'b111111; + 12'd2855 : mem_out_dec = 6'b111111; + 12'd2856 : mem_out_dec = 6'b111111; + 12'd2857 : mem_out_dec = 6'b111111; + 12'd2858 : mem_out_dec = 6'b111111; + 12'd2859 : mem_out_dec = 6'b111111; + 12'd2860 : mem_out_dec = 6'b111111; + 12'd2861 : mem_out_dec = 6'b111111; + 12'd2862 : mem_out_dec = 6'b111111; + 12'd2863 : mem_out_dec = 6'b111111; + 12'd2864 : mem_out_dec = 6'b111111; + 12'd2865 : mem_out_dec = 6'b111111; + 12'd2866 : mem_out_dec = 6'b000011; + 12'd2867 : mem_out_dec = 6'b000100; + 12'd2868 : mem_out_dec = 6'b000100; + 12'd2869 : mem_out_dec = 6'b000101; + 12'd2870 : mem_out_dec = 6'b000110; + 12'd2871 : mem_out_dec = 6'b000110; + 12'd2872 : mem_out_dec = 6'b000110; + 12'd2873 : mem_out_dec = 6'b000111; + 12'd2874 : mem_out_dec = 6'b001000; + 12'd2875 : mem_out_dec = 6'b001001; + 12'd2876 : mem_out_dec = 6'b001001; + 12'd2877 : mem_out_dec = 6'b001010; + 12'd2878 : mem_out_dec = 6'b001011; + 12'd2879 : mem_out_dec = 6'b001100; + 12'd2880 : mem_out_dec = 6'b111111; + 12'd2881 : mem_out_dec = 6'b111111; + 12'd2882 : mem_out_dec = 6'b111111; + 12'd2883 : mem_out_dec = 6'b111111; + 12'd2884 : mem_out_dec = 6'b111111; + 12'd2885 : mem_out_dec = 6'b111111; + 12'd2886 : mem_out_dec = 6'b111111; + 12'd2887 : mem_out_dec = 6'b111111; + 12'd2888 : mem_out_dec = 6'b111111; + 12'd2889 : mem_out_dec = 6'b111111; + 12'd2890 : mem_out_dec = 6'b111111; + 12'd2891 : mem_out_dec = 6'b111111; + 12'd2892 : mem_out_dec = 6'b111111; + 12'd2893 : mem_out_dec = 6'b111111; + 12'd2894 : mem_out_dec = 6'b111111; + 12'd2895 : mem_out_dec = 6'b111111; + 12'd2896 : mem_out_dec = 6'b111111; + 12'd2897 : mem_out_dec = 6'b111111; + 12'd2898 : mem_out_dec = 6'b111111; + 12'd2899 : mem_out_dec = 6'b111111; + 12'd2900 : mem_out_dec = 6'b111111; + 12'd2901 : mem_out_dec = 6'b111111; + 12'd2902 : mem_out_dec = 6'b111111; + 12'd2903 : mem_out_dec = 6'b111111; + 12'd2904 : mem_out_dec = 6'b111111; + 12'd2905 : mem_out_dec = 6'b111111; + 12'd2906 : mem_out_dec = 6'b111111; + 12'd2907 : mem_out_dec = 6'b111111; + 12'd2908 : mem_out_dec = 6'b111111; + 12'd2909 : mem_out_dec = 6'b111111; + 12'd2910 : mem_out_dec = 6'b111111; + 12'd2911 : mem_out_dec = 6'b111111; + 12'd2912 : mem_out_dec = 6'b111111; + 12'd2913 : mem_out_dec = 6'b111111; + 12'd2914 : mem_out_dec = 6'b111111; + 12'd2915 : mem_out_dec = 6'b111111; + 12'd2916 : mem_out_dec = 6'b111111; + 12'd2917 : mem_out_dec = 6'b111111; + 12'd2918 : mem_out_dec = 6'b111111; + 12'd2919 : mem_out_dec = 6'b111111; + 12'd2920 : mem_out_dec = 6'b111111; + 12'd2921 : mem_out_dec = 6'b111111; + 12'd2922 : mem_out_dec = 6'b111111; + 12'd2923 : mem_out_dec = 6'b111111; + 12'd2924 : mem_out_dec = 6'b111111; + 12'd2925 : mem_out_dec = 6'b111111; + 12'd2926 : mem_out_dec = 6'b111111; + 12'd2927 : mem_out_dec = 6'b111111; + 12'd2928 : mem_out_dec = 6'b111111; + 12'd2929 : mem_out_dec = 6'b111111; + 12'd2930 : mem_out_dec = 6'b111111; + 12'd2931 : mem_out_dec = 6'b000100; + 12'd2932 : mem_out_dec = 6'b000100; + 12'd2933 : mem_out_dec = 6'b000101; + 12'd2934 : mem_out_dec = 6'b000101; + 12'd2935 : mem_out_dec = 6'b000110; + 12'd2936 : mem_out_dec = 6'b000110; + 12'd2937 : mem_out_dec = 6'b000111; + 12'd2938 : mem_out_dec = 6'b001000; + 12'd2939 : mem_out_dec = 6'b001000; + 12'd2940 : mem_out_dec = 6'b001001; + 12'd2941 : mem_out_dec = 6'b001010; + 12'd2942 : mem_out_dec = 6'b001011; + 12'd2943 : mem_out_dec = 6'b001011; + 12'd2944 : mem_out_dec = 6'b111111; + 12'd2945 : mem_out_dec = 6'b111111; + 12'd2946 : mem_out_dec = 6'b111111; + 12'd2947 : mem_out_dec = 6'b111111; + 12'd2948 : mem_out_dec = 6'b111111; + 12'd2949 : mem_out_dec = 6'b111111; + 12'd2950 : mem_out_dec = 6'b111111; + 12'd2951 : mem_out_dec = 6'b111111; + 12'd2952 : mem_out_dec = 6'b111111; + 12'd2953 : mem_out_dec = 6'b111111; + 12'd2954 : mem_out_dec = 6'b111111; + 12'd2955 : mem_out_dec = 6'b111111; + 12'd2956 : mem_out_dec = 6'b111111; + 12'd2957 : mem_out_dec = 6'b111111; + 12'd2958 : mem_out_dec = 6'b111111; + 12'd2959 : mem_out_dec = 6'b111111; + 12'd2960 : mem_out_dec = 6'b111111; + 12'd2961 : mem_out_dec = 6'b111111; + 12'd2962 : mem_out_dec = 6'b111111; + 12'd2963 : mem_out_dec = 6'b111111; + 12'd2964 : mem_out_dec = 6'b111111; + 12'd2965 : mem_out_dec = 6'b111111; + 12'd2966 : mem_out_dec = 6'b111111; + 12'd2967 : mem_out_dec = 6'b111111; + 12'd2968 : mem_out_dec = 6'b111111; + 12'd2969 : mem_out_dec = 6'b111111; + 12'd2970 : mem_out_dec = 6'b111111; + 12'd2971 : mem_out_dec = 6'b111111; + 12'd2972 : mem_out_dec = 6'b111111; + 12'd2973 : mem_out_dec = 6'b111111; + 12'd2974 : mem_out_dec = 6'b111111; + 12'd2975 : mem_out_dec = 6'b111111; + 12'd2976 : mem_out_dec = 6'b111111; + 12'd2977 : mem_out_dec = 6'b111111; + 12'd2978 : mem_out_dec = 6'b111111; + 12'd2979 : mem_out_dec = 6'b111111; + 12'd2980 : mem_out_dec = 6'b111111; + 12'd2981 : mem_out_dec = 6'b111111; + 12'd2982 : mem_out_dec = 6'b111111; + 12'd2983 : mem_out_dec = 6'b111111; + 12'd2984 : mem_out_dec = 6'b111111; + 12'd2985 : mem_out_dec = 6'b111111; + 12'd2986 : mem_out_dec = 6'b111111; + 12'd2987 : mem_out_dec = 6'b111111; + 12'd2988 : mem_out_dec = 6'b111111; + 12'd2989 : mem_out_dec = 6'b111111; + 12'd2990 : mem_out_dec = 6'b111111; + 12'd2991 : mem_out_dec = 6'b111111; + 12'd2992 : mem_out_dec = 6'b111111; + 12'd2993 : mem_out_dec = 6'b111111; + 12'd2994 : mem_out_dec = 6'b111111; + 12'd2995 : mem_out_dec = 6'b111111; + 12'd2996 : mem_out_dec = 6'b000100; + 12'd2997 : mem_out_dec = 6'b000101; + 12'd2998 : mem_out_dec = 6'b000101; + 12'd2999 : mem_out_dec = 6'b000110; + 12'd3000 : mem_out_dec = 6'b000110; + 12'd3001 : mem_out_dec = 6'b000111; + 12'd3002 : mem_out_dec = 6'b000111; + 12'd3003 : mem_out_dec = 6'b001000; + 12'd3004 : mem_out_dec = 6'b001001; + 12'd3005 : mem_out_dec = 6'b001010; + 12'd3006 : mem_out_dec = 6'b001010; + 12'd3007 : mem_out_dec = 6'b001011; + 12'd3008 : mem_out_dec = 6'b111111; + 12'd3009 : mem_out_dec = 6'b111111; + 12'd3010 : mem_out_dec = 6'b111111; + 12'd3011 : mem_out_dec = 6'b111111; + 12'd3012 : mem_out_dec = 6'b111111; + 12'd3013 : mem_out_dec = 6'b111111; + 12'd3014 : mem_out_dec = 6'b111111; + 12'd3015 : mem_out_dec = 6'b111111; + 12'd3016 : mem_out_dec = 6'b111111; + 12'd3017 : mem_out_dec = 6'b111111; + 12'd3018 : mem_out_dec = 6'b111111; + 12'd3019 : mem_out_dec = 6'b111111; + 12'd3020 : mem_out_dec = 6'b111111; + 12'd3021 : mem_out_dec = 6'b111111; + 12'd3022 : mem_out_dec = 6'b111111; + 12'd3023 : mem_out_dec = 6'b111111; + 12'd3024 : mem_out_dec = 6'b111111; + 12'd3025 : mem_out_dec = 6'b111111; + 12'd3026 : mem_out_dec = 6'b111111; + 12'd3027 : mem_out_dec = 6'b111111; + 12'd3028 : mem_out_dec = 6'b111111; + 12'd3029 : mem_out_dec = 6'b111111; + 12'd3030 : mem_out_dec = 6'b111111; + 12'd3031 : mem_out_dec = 6'b111111; + 12'd3032 : mem_out_dec = 6'b111111; + 12'd3033 : mem_out_dec = 6'b111111; + 12'd3034 : mem_out_dec = 6'b111111; + 12'd3035 : mem_out_dec = 6'b111111; + 12'd3036 : mem_out_dec = 6'b111111; + 12'd3037 : mem_out_dec = 6'b111111; + 12'd3038 : mem_out_dec = 6'b111111; + 12'd3039 : mem_out_dec = 6'b111111; + 12'd3040 : mem_out_dec = 6'b111111; + 12'd3041 : mem_out_dec = 6'b111111; + 12'd3042 : mem_out_dec = 6'b111111; + 12'd3043 : mem_out_dec = 6'b111111; + 12'd3044 : mem_out_dec = 6'b111111; + 12'd3045 : mem_out_dec = 6'b111111; + 12'd3046 : mem_out_dec = 6'b111111; + 12'd3047 : mem_out_dec = 6'b111111; + 12'd3048 : mem_out_dec = 6'b111111; + 12'd3049 : mem_out_dec = 6'b111111; + 12'd3050 : mem_out_dec = 6'b111111; + 12'd3051 : mem_out_dec = 6'b111111; + 12'd3052 : mem_out_dec = 6'b111111; + 12'd3053 : mem_out_dec = 6'b111111; + 12'd3054 : mem_out_dec = 6'b111111; + 12'd3055 : mem_out_dec = 6'b111111; + 12'd3056 : mem_out_dec = 6'b111111; + 12'd3057 : mem_out_dec = 6'b111111; + 12'd3058 : mem_out_dec = 6'b111111; + 12'd3059 : mem_out_dec = 6'b111111; + 12'd3060 : mem_out_dec = 6'b111111; + 12'd3061 : mem_out_dec = 6'b000100; + 12'd3062 : mem_out_dec = 6'b000101; + 12'd3063 : mem_out_dec = 6'b000110; + 12'd3064 : mem_out_dec = 6'b000110; + 12'd3065 : mem_out_dec = 6'b000111; + 12'd3066 : mem_out_dec = 6'b000111; + 12'd3067 : mem_out_dec = 6'b001000; + 12'd3068 : mem_out_dec = 6'b001001; + 12'd3069 : mem_out_dec = 6'b001001; + 12'd3070 : mem_out_dec = 6'b001010; + 12'd3071 : mem_out_dec = 6'b001011; + 12'd3072 : mem_out_dec = 6'b111111; + 12'd3073 : mem_out_dec = 6'b111111; + 12'd3074 : mem_out_dec = 6'b111111; + 12'd3075 : mem_out_dec = 6'b111111; + 12'd3076 : mem_out_dec = 6'b111111; + 12'd3077 : mem_out_dec = 6'b111111; + 12'd3078 : mem_out_dec = 6'b111111; + 12'd3079 : mem_out_dec = 6'b111111; + 12'd3080 : mem_out_dec = 6'b111111; + 12'd3081 : mem_out_dec = 6'b111111; + 12'd3082 : mem_out_dec = 6'b111111; + 12'd3083 : mem_out_dec = 6'b111111; + 12'd3084 : mem_out_dec = 6'b111111; + 12'd3085 : mem_out_dec = 6'b111111; + 12'd3086 : mem_out_dec = 6'b111111; + 12'd3087 : mem_out_dec = 6'b111111; + 12'd3088 : mem_out_dec = 6'b111111; + 12'd3089 : mem_out_dec = 6'b111111; + 12'd3090 : mem_out_dec = 6'b111111; + 12'd3091 : mem_out_dec = 6'b111111; + 12'd3092 : mem_out_dec = 6'b111111; + 12'd3093 : mem_out_dec = 6'b111111; + 12'd3094 : mem_out_dec = 6'b111111; + 12'd3095 : mem_out_dec = 6'b111111; + 12'd3096 : mem_out_dec = 6'b111111; + 12'd3097 : mem_out_dec = 6'b111111; + 12'd3098 : mem_out_dec = 6'b111111; + 12'd3099 : mem_out_dec = 6'b111111; + 12'd3100 : mem_out_dec = 6'b111111; + 12'd3101 : mem_out_dec = 6'b111111; + 12'd3102 : mem_out_dec = 6'b111111; + 12'd3103 : mem_out_dec = 6'b111111; + 12'd3104 : mem_out_dec = 6'b111111; + 12'd3105 : mem_out_dec = 6'b111111; + 12'd3106 : mem_out_dec = 6'b111111; + 12'd3107 : mem_out_dec = 6'b111111; + 12'd3108 : mem_out_dec = 6'b111111; + 12'd3109 : mem_out_dec = 6'b111111; + 12'd3110 : mem_out_dec = 6'b111111; + 12'd3111 : mem_out_dec = 6'b111111; + 12'd3112 : mem_out_dec = 6'b111111; + 12'd3113 : mem_out_dec = 6'b111111; + 12'd3114 : mem_out_dec = 6'b111111; + 12'd3115 : mem_out_dec = 6'b111111; + 12'd3116 : mem_out_dec = 6'b111111; + 12'd3117 : mem_out_dec = 6'b111111; + 12'd3118 : mem_out_dec = 6'b111111; + 12'd3119 : mem_out_dec = 6'b111111; + 12'd3120 : mem_out_dec = 6'b111111; + 12'd3121 : mem_out_dec = 6'b111111; + 12'd3122 : mem_out_dec = 6'b111111; + 12'd3123 : mem_out_dec = 6'b111111; + 12'd3124 : mem_out_dec = 6'b111111; + 12'd3125 : mem_out_dec = 6'b111111; + 12'd3126 : mem_out_dec = 6'b000100; + 12'd3127 : mem_out_dec = 6'b000101; + 12'd3128 : mem_out_dec = 6'b000101; + 12'd3129 : mem_out_dec = 6'b000110; + 12'd3130 : mem_out_dec = 6'b000110; + 12'd3131 : mem_out_dec = 6'b000111; + 12'd3132 : mem_out_dec = 6'b001000; + 12'd3133 : mem_out_dec = 6'b001000; + 12'd3134 : mem_out_dec = 6'b001001; + 12'd3135 : mem_out_dec = 6'b001010; + 12'd3136 : mem_out_dec = 6'b111111; + 12'd3137 : mem_out_dec = 6'b111111; + 12'd3138 : mem_out_dec = 6'b111111; + 12'd3139 : mem_out_dec = 6'b111111; + 12'd3140 : mem_out_dec = 6'b111111; + 12'd3141 : mem_out_dec = 6'b111111; + 12'd3142 : mem_out_dec = 6'b111111; + 12'd3143 : mem_out_dec = 6'b111111; + 12'd3144 : mem_out_dec = 6'b111111; + 12'd3145 : mem_out_dec = 6'b111111; + 12'd3146 : mem_out_dec = 6'b111111; + 12'd3147 : mem_out_dec = 6'b111111; + 12'd3148 : mem_out_dec = 6'b111111; + 12'd3149 : mem_out_dec = 6'b111111; + 12'd3150 : mem_out_dec = 6'b111111; + 12'd3151 : mem_out_dec = 6'b111111; + 12'd3152 : mem_out_dec = 6'b111111; + 12'd3153 : mem_out_dec = 6'b111111; + 12'd3154 : mem_out_dec = 6'b111111; + 12'd3155 : mem_out_dec = 6'b111111; + 12'd3156 : mem_out_dec = 6'b111111; + 12'd3157 : mem_out_dec = 6'b111111; + 12'd3158 : mem_out_dec = 6'b111111; + 12'd3159 : mem_out_dec = 6'b111111; + 12'd3160 : mem_out_dec = 6'b111111; + 12'd3161 : mem_out_dec = 6'b111111; + 12'd3162 : mem_out_dec = 6'b111111; + 12'd3163 : mem_out_dec = 6'b111111; + 12'd3164 : mem_out_dec = 6'b111111; + 12'd3165 : mem_out_dec = 6'b111111; + 12'd3166 : mem_out_dec = 6'b111111; + 12'd3167 : mem_out_dec = 6'b111111; + 12'd3168 : mem_out_dec = 6'b111111; + 12'd3169 : mem_out_dec = 6'b111111; + 12'd3170 : mem_out_dec = 6'b111111; + 12'd3171 : mem_out_dec = 6'b111111; + 12'd3172 : mem_out_dec = 6'b111111; + 12'd3173 : mem_out_dec = 6'b111111; + 12'd3174 : mem_out_dec = 6'b111111; + 12'd3175 : mem_out_dec = 6'b111111; + 12'd3176 : mem_out_dec = 6'b111111; + 12'd3177 : mem_out_dec = 6'b111111; + 12'd3178 : mem_out_dec = 6'b111111; + 12'd3179 : mem_out_dec = 6'b111111; + 12'd3180 : mem_out_dec = 6'b111111; + 12'd3181 : mem_out_dec = 6'b111111; + 12'd3182 : mem_out_dec = 6'b111111; + 12'd3183 : mem_out_dec = 6'b111111; + 12'd3184 : mem_out_dec = 6'b111111; + 12'd3185 : mem_out_dec = 6'b111111; + 12'd3186 : mem_out_dec = 6'b111111; + 12'd3187 : mem_out_dec = 6'b111111; + 12'd3188 : mem_out_dec = 6'b111111; + 12'd3189 : mem_out_dec = 6'b111111; + 12'd3190 : mem_out_dec = 6'b111111; + 12'd3191 : mem_out_dec = 6'b000100; + 12'd3192 : mem_out_dec = 6'b000100; + 12'd3193 : mem_out_dec = 6'b000101; + 12'd3194 : mem_out_dec = 6'b000110; + 12'd3195 : mem_out_dec = 6'b000110; + 12'd3196 : mem_out_dec = 6'b000111; + 12'd3197 : mem_out_dec = 6'b001000; + 12'd3198 : mem_out_dec = 6'b001000; + 12'd3199 : mem_out_dec = 6'b001001; + 12'd3200 : mem_out_dec = 6'b111111; + 12'd3201 : mem_out_dec = 6'b111111; + 12'd3202 : mem_out_dec = 6'b111111; + 12'd3203 : mem_out_dec = 6'b111111; + 12'd3204 : mem_out_dec = 6'b111111; + 12'd3205 : mem_out_dec = 6'b111111; + 12'd3206 : mem_out_dec = 6'b111111; + 12'd3207 : mem_out_dec = 6'b111111; + 12'd3208 : mem_out_dec = 6'b111111; + 12'd3209 : mem_out_dec = 6'b111111; + 12'd3210 : mem_out_dec = 6'b111111; + 12'd3211 : mem_out_dec = 6'b111111; + 12'd3212 : mem_out_dec = 6'b111111; + 12'd3213 : mem_out_dec = 6'b111111; + 12'd3214 : mem_out_dec = 6'b111111; + 12'd3215 : mem_out_dec = 6'b111111; + 12'd3216 : mem_out_dec = 6'b111111; + 12'd3217 : mem_out_dec = 6'b111111; + 12'd3218 : mem_out_dec = 6'b111111; + 12'd3219 : mem_out_dec = 6'b111111; + 12'd3220 : mem_out_dec = 6'b111111; + 12'd3221 : mem_out_dec = 6'b111111; + 12'd3222 : mem_out_dec = 6'b111111; + 12'd3223 : mem_out_dec = 6'b111111; + 12'd3224 : mem_out_dec = 6'b111111; + 12'd3225 : mem_out_dec = 6'b111111; + 12'd3226 : mem_out_dec = 6'b111111; + 12'd3227 : mem_out_dec = 6'b111111; + 12'd3228 : mem_out_dec = 6'b111111; + 12'd3229 : mem_out_dec = 6'b111111; + 12'd3230 : mem_out_dec = 6'b111111; + 12'd3231 : mem_out_dec = 6'b111111; + 12'd3232 : mem_out_dec = 6'b111111; + 12'd3233 : mem_out_dec = 6'b111111; + 12'd3234 : mem_out_dec = 6'b111111; + 12'd3235 : mem_out_dec = 6'b111111; + 12'd3236 : mem_out_dec = 6'b111111; + 12'd3237 : mem_out_dec = 6'b111111; + 12'd3238 : mem_out_dec = 6'b111111; + 12'd3239 : mem_out_dec = 6'b111111; + 12'd3240 : mem_out_dec = 6'b111111; + 12'd3241 : mem_out_dec = 6'b111111; + 12'd3242 : mem_out_dec = 6'b111111; + 12'd3243 : mem_out_dec = 6'b111111; + 12'd3244 : mem_out_dec = 6'b111111; + 12'd3245 : mem_out_dec = 6'b111111; + 12'd3246 : mem_out_dec = 6'b111111; + 12'd3247 : mem_out_dec = 6'b111111; + 12'd3248 : mem_out_dec = 6'b111111; + 12'd3249 : mem_out_dec = 6'b111111; + 12'd3250 : mem_out_dec = 6'b111111; + 12'd3251 : mem_out_dec = 6'b111111; + 12'd3252 : mem_out_dec = 6'b111111; + 12'd3253 : mem_out_dec = 6'b111111; + 12'd3254 : mem_out_dec = 6'b111111; + 12'd3255 : mem_out_dec = 6'b111111; + 12'd3256 : mem_out_dec = 6'b000100; + 12'd3257 : mem_out_dec = 6'b000100; + 12'd3258 : mem_out_dec = 6'b000101; + 12'd3259 : mem_out_dec = 6'b000110; + 12'd3260 : mem_out_dec = 6'b000110; + 12'd3261 : mem_out_dec = 6'b000111; + 12'd3262 : mem_out_dec = 6'b001000; + 12'd3263 : mem_out_dec = 6'b001001; + 12'd3264 : mem_out_dec = 6'b111111; + 12'd3265 : mem_out_dec = 6'b111111; + 12'd3266 : mem_out_dec = 6'b111111; + 12'd3267 : mem_out_dec = 6'b111111; + 12'd3268 : mem_out_dec = 6'b111111; + 12'd3269 : mem_out_dec = 6'b111111; + 12'd3270 : mem_out_dec = 6'b111111; + 12'd3271 : mem_out_dec = 6'b111111; + 12'd3272 : mem_out_dec = 6'b111111; + 12'd3273 : mem_out_dec = 6'b111111; + 12'd3274 : mem_out_dec = 6'b111111; + 12'd3275 : mem_out_dec = 6'b111111; + 12'd3276 : mem_out_dec = 6'b111111; + 12'd3277 : mem_out_dec = 6'b111111; + 12'd3278 : mem_out_dec = 6'b111111; + 12'd3279 : mem_out_dec = 6'b111111; + 12'd3280 : mem_out_dec = 6'b111111; + 12'd3281 : mem_out_dec = 6'b111111; + 12'd3282 : mem_out_dec = 6'b111111; + 12'd3283 : mem_out_dec = 6'b111111; + 12'd3284 : mem_out_dec = 6'b111111; + 12'd3285 : mem_out_dec = 6'b111111; + 12'd3286 : mem_out_dec = 6'b111111; + 12'd3287 : mem_out_dec = 6'b111111; + 12'd3288 : mem_out_dec = 6'b111111; + 12'd3289 : mem_out_dec = 6'b111111; + 12'd3290 : mem_out_dec = 6'b111111; + 12'd3291 : mem_out_dec = 6'b111111; + 12'd3292 : mem_out_dec = 6'b111111; + 12'd3293 : mem_out_dec = 6'b111111; + 12'd3294 : mem_out_dec = 6'b111111; + 12'd3295 : mem_out_dec = 6'b111111; + 12'd3296 : mem_out_dec = 6'b111111; + 12'd3297 : mem_out_dec = 6'b111111; + 12'd3298 : mem_out_dec = 6'b111111; + 12'd3299 : mem_out_dec = 6'b111111; + 12'd3300 : mem_out_dec = 6'b111111; + 12'd3301 : mem_out_dec = 6'b111111; + 12'd3302 : mem_out_dec = 6'b111111; + 12'd3303 : mem_out_dec = 6'b111111; + 12'd3304 : mem_out_dec = 6'b111111; + 12'd3305 : mem_out_dec = 6'b111111; + 12'd3306 : mem_out_dec = 6'b111111; + 12'd3307 : mem_out_dec = 6'b111111; + 12'd3308 : mem_out_dec = 6'b111111; + 12'd3309 : mem_out_dec = 6'b111111; + 12'd3310 : mem_out_dec = 6'b111111; + 12'd3311 : mem_out_dec = 6'b111111; + 12'd3312 : mem_out_dec = 6'b111111; + 12'd3313 : mem_out_dec = 6'b111111; + 12'd3314 : mem_out_dec = 6'b111111; + 12'd3315 : mem_out_dec = 6'b111111; + 12'd3316 : mem_out_dec = 6'b111111; + 12'd3317 : mem_out_dec = 6'b111111; + 12'd3318 : mem_out_dec = 6'b111111; + 12'd3319 : mem_out_dec = 6'b111111; + 12'd3320 : mem_out_dec = 6'b111111; + 12'd3321 : mem_out_dec = 6'b000100; + 12'd3322 : mem_out_dec = 6'b000100; + 12'd3323 : mem_out_dec = 6'b000101; + 12'd3324 : mem_out_dec = 6'b000110; + 12'd3325 : mem_out_dec = 6'b000111; + 12'd3326 : mem_out_dec = 6'b001000; + 12'd3327 : mem_out_dec = 6'b001000; + 12'd3328 : mem_out_dec = 6'b111111; + 12'd3329 : mem_out_dec = 6'b111111; + 12'd3330 : mem_out_dec = 6'b111111; + 12'd3331 : mem_out_dec = 6'b111111; + 12'd3332 : mem_out_dec = 6'b111111; + 12'd3333 : mem_out_dec = 6'b111111; + 12'd3334 : mem_out_dec = 6'b111111; + 12'd3335 : mem_out_dec = 6'b111111; + 12'd3336 : mem_out_dec = 6'b111111; + 12'd3337 : mem_out_dec = 6'b111111; + 12'd3338 : mem_out_dec = 6'b111111; + 12'd3339 : mem_out_dec = 6'b111111; + 12'd3340 : mem_out_dec = 6'b111111; + 12'd3341 : mem_out_dec = 6'b111111; + 12'd3342 : mem_out_dec = 6'b111111; + 12'd3343 : mem_out_dec = 6'b111111; + 12'd3344 : mem_out_dec = 6'b111111; + 12'd3345 : mem_out_dec = 6'b111111; + 12'd3346 : mem_out_dec = 6'b111111; + 12'd3347 : mem_out_dec = 6'b111111; + 12'd3348 : mem_out_dec = 6'b111111; + 12'd3349 : mem_out_dec = 6'b111111; + 12'd3350 : mem_out_dec = 6'b111111; + 12'd3351 : mem_out_dec = 6'b111111; + 12'd3352 : mem_out_dec = 6'b111111; + 12'd3353 : mem_out_dec = 6'b111111; + 12'd3354 : mem_out_dec = 6'b111111; + 12'd3355 : mem_out_dec = 6'b111111; + 12'd3356 : mem_out_dec = 6'b111111; + 12'd3357 : mem_out_dec = 6'b111111; + 12'd3358 : mem_out_dec = 6'b111111; + 12'd3359 : mem_out_dec = 6'b111111; + 12'd3360 : mem_out_dec = 6'b111111; + 12'd3361 : mem_out_dec = 6'b111111; + 12'd3362 : mem_out_dec = 6'b111111; + 12'd3363 : mem_out_dec = 6'b111111; + 12'd3364 : mem_out_dec = 6'b111111; + 12'd3365 : mem_out_dec = 6'b111111; + 12'd3366 : mem_out_dec = 6'b111111; + 12'd3367 : mem_out_dec = 6'b111111; + 12'd3368 : mem_out_dec = 6'b111111; + 12'd3369 : mem_out_dec = 6'b111111; + 12'd3370 : mem_out_dec = 6'b111111; + 12'd3371 : mem_out_dec = 6'b111111; + 12'd3372 : mem_out_dec = 6'b111111; + 12'd3373 : mem_out_dec = 6'b111111; + 12'd3374 : mem_out_dec = 6'b111111; + 12'd3375 : mem_out_dec = 6'b111111; + 12'd3376 : mem_out_dec = 6'b111111; + 12'd3377 : mem_out_dec = 6'b111111; + 12'd3378 : mem_out_dec = 6'b111111; + 12'd3379 : mem_out_dec = 6'b111111; + 12'd3380 : mem_out_dec = 6'b111111; + 12'd3381 : mem_out_dec = 6'b111111; + 12'd3382 : mem_out_dec = 6'b111111; + 12'd3383 : mem_out_dec = 6'b111111; + 12'd3384 : mem_out_dec = 6'b111111; + 12'd3385 : mem_out_dec = 6'b111111; + 12'd3386 : mem_out_dec = 6'b000100; + 12'd3387 : mem_out_dec = 6'b000101; + 12'd3388 : mem_out_dec = 6'b000110; + 12'd3389 : mem_out_dec = 6'b000110; + 12'd3390 : mem_out_dec = 6'b000111; + 12'd3391 : mem_out_dec = 6'b001000; + 12'd3392 : mem_out_dec = 6'b111111; + 12'd3393 : mem_out_dec = 6'b111111; + 12'd3394 : mem_out_dec = 6'b111111; + 12'd3395 : mem_out_dec = 6'b111111; + 12'd3396 : mem_out_dec = 6'b111111; + 12'd3397 : mem_out_dec = 6'b111111; + 12'd3398 : mem_out_dec = 6'b111111; + 12'd3399 : mem_out_dec = 6'b111111; + 12'd3400 : mem_out_dec = 6'b111111; + 12'd3401 : mem_out_dec = 6'b111111; + 12'd3402 : mem_out_dec = 6'b111111; + 12'd3403 : mem_out_dec = 6'b111111; + 12'd3404 : mem_out_dec = 6'b111111; + 12'd3405 : mem_out_dec = 6'b111111; + 12'd3406 : mem_out_dec = 6'b111111; + 12'd3407 : mem_out_dec = 6'b111111; + 12'd3408 : mem_out_dec = 6'b111111; + 12'd3409 : mem_out_dec = 6'b111111; + 12'd3410 : mem_out_dec = 6'b111111; + 12'd3411 : mem_out_dec = 6'b111111; + 12'd3412 : mem_out_dec = 6'b111111; + 12'd3413 : mem_out_dec = 6'b111111; + 12'd3414 : mem_out_dec = 6'b111111; + 12'd3415 : mem_out_dec = 6'b111111; + 12'd3416 : mem_out_dec = 6'b111111; + 12'd3417 : mem_out_dec = 6'b111111; + 12'd3418 : mem_out_dec = 6'b111111; + 12'd3419 : mem_out_dec = 6'b111111; + 12'd3420 : mem_out_dec = 6'b111111; + 12'd3421 : mem_out_dec = 6'b111111; + 12'd3422 : mem_out_dec = 6'b111111; + 12'd3423 : mem_out_dec = 6'b111111; + 12'd3424 : mem_out_dec = 6'b111111; + 12'd3425 : mem_out_dec = 6'b111111; + 12'd3426 : mem_out_dec = 6'b111111; + 12'd3427 : mem_out_dec = 6'b111111; + 12'd3428 : mem_out_dec = 6'b111111; + 12'd3429 : mem_out_dec = 6'b111111; + 12'd3430 : mem_out_dec = 6'b111111; + 12'd3431 : mem_out_dec = 6'b111111; + 12'd3432 : mem_out_dec = 6'b111111; + 12'd3433 : mem_out_dec = 6'b111111; + 12'd3434 : mem_out_dec = 6'b111111; + 12'd3435 : mem_out_dec = 6'b111111; + 12'd3436 : mem_out_dec = 6'b111111; + 12'd3437 : mem_out_dec = 6'b111111; + 12'd3438 : mem_out_dec = 6'b111111; + 12'd3439 : mem_out_dec = 6'b111111; + 12'd3440 : mem_out_dec = 6'b111111; + 12'd3441 : mem_out_dec = 6'b111111; + 12'd3442 : mem_out_dec = 6'b111111; + 12'd3443 : mem_out_dec = 6'b111111; + 12'd3444 : mem_out_dec = 6'b111111; + 12'd3445 : mem_out_dec = 6'b111111; + 12'd3446 : mem_out_dec = 6'b111111; + 12'd3447 : mem_out_dec = 6'b111111; + 12'd3448 : mem_out_dec = 6'b111111; + 12'd3449 : mem_out_dec = 6'b111111; + 12'd3450 : mem_out_dec = 6'b111111; + 12'd3451 : mem_out_dec = 6'b000100; + 12'd3452 : mem_out_dec = 6'b000101; + 12'd3453 : mem_out_dec = 6'b000110; + 12'd3454 : mem_out_dec = 6'b000111; + 12'd3455 : mem_out_dec = 6'b001000; + 12'd3456 : mem_out_dec = 6'b111111; + 12'd3457 : mem_out_dec = 6'b111111; + 12'd3458 : mem_out_dec = 6'b111111; + 12'd3459 : mem_out_dec = 6'b111111; + 12'd3460 : mem_out_dec = 6'b111111; + 12'd3461 : mem_out_dec = 6'b111111; + 12'd3462 : mem_out_dec = 6'b111111; + 12'd3463 : mem_out_dec = 6'b111111; + 12'd3464 : mem_out_dec = 6'b111111; + 12'd3465 : mem_out_dec = 6'b111111; + 12'd3466 : mem_out_dec = 6'b111111; + 12'd3467 : mem_out_dec = 6'b111111; + 12'd3468 : mem_out_dec = 6'b111111; + 12'd3469 : mem_out_dec = 6'b111111; + 12'd3470 : mem_out_dec = 6'b111111; + 12'd3471 : mem_out_dec = 6'b111111; + 12'd3472 : mem_out_dec = 6'b111111; + 12'd3473 : mem_out_dec = 6'b111111; + 12'd3474 : mem_out_dec = 6'b111111; + 12'd3475 : mem_out_dec = 6'b111111; + 12'd3476 : mem_out_dec = 6'b111111; + 12'd3477 : mem_out_dec = 6'b111111; + 12'd3478 : mem_out_dec = 6'b111111; + 12'd3479 : mem_out_dec = 6'b111111; + 12'd3480 : mem_out_dec = 6'b111111; + 12'd3481 : mem_out_dec = 6'b111111; + 12'd3482 : mem_out_dec = 6'b111111; + 12'd3483 : mem_out_dec = 6'b111111; + 12'd3484 : mem_out_dec = 6'b111111; + 12'd3485 : mem_out_dec = 6'b111111; + 12'd3486 : mem_out_dec = 6'b111111; + 12'd3487 : mem_out_dec = 6'b111111; + 12'd3488 : mem_out_dec = 6'b111111; + 12'd3489 : mem_out_dec = 6'b111111; + 12'd3490 : mem_out_dec = 6'b111111; + 12'd3491 : mem_out_dec = 6'b111111; + 12'd3492 : mem_out_dec = 6'b111111; + 12'd3493 : mem_out_dec = 6'b111111; + 12'd3494 : mem_out_dec = 6'b111111; + 12'd3495 : mem_out_dec = 6'b111111; + 12'd3496 : mem_out_dec = 6'b111111; + 12'd3497 : mem_out_dec = 6'b111111; + 12'd3498 : mem_out_dec = 6'b111111; + 12'd3499 : mem_out_dec = 6'b111111; + 12'd3500 : mem_out_dec = 6'b111111; + 12'd3501 : mem_out_dec = 6'b111111; + 12'd3502 : mem_out_dec = 6'b111111; + 12'd3503 : mem_out_dec = 6'b111111; + 12'd3504 : mem_out_dec = 6'b111111; + 12'd3505 : mem_out_dec = 6'b111111; + 12'd3506 : mem_out_dec = 6'b111111; + 12'd3507 : mem_out_dec = 6'b111111; + 12'd3508 : mem_out_dec = 6'b111111; + 12'd3509 : mem_out_dec = 6'b111111; + 12'd3510 : mem_out_dec = 6'b111111; + 12'd3511 : mem_out_dec = 6'b111111; + 12'd3512 : mem_out_dec = 6'b111111; + 12'd3513 : mem_out_dec = 6'b111111; + 12'd3514 : mem_out_dec = 6'b111111; + 12'd3515 : mem_out_dec = 6'b111111; + 12'd3516 : mem_out_dec = 6'b000101; + 12'd3517 : mem_out_dec = 6'b000110; + 12'd3518 : mem_out_dec = 6'b000110; + 12'd3519 : mem_out_dec = 6'b000111; + 12'd3520 : mem_out_dec = 6'b111111; + 12'd3521 : mem_out_dec = 6'b111111; + 12'd3522 : mem_out_dec = 6'b111111; + 12'd3523 : mem_out_dec = 6'b111111; + 12'd3524 : mem_out_dec = 6'b111111; + 12'd3525 : mem_out_dec = 6'b111111; + 12'd3526 : mem_out_dec = 6'b111111; + 12'd3527 : mem_out_dec = 6'b111111; + 12'd3528 : mem_out_dec = 6'b111111; + 12'd3529 : mem_out_dec = 6'b111111; + 12'd3530 : mem_out_dec = 6'b111111; + 12'd3531 : mem_out_dec = 6'b111111; + 12'd3532 : mem_out_dec = 6'b111111; + 12'd3533 : mem_out_dec = 6'b111111; + 12'd3534 : mem_out_dec = 6'b111111; + 12'd3535 : mem_out_dec = 6'b111111; + 12'd3536 : mem_out_dec = 6'b111111; + 12'd3537 : mem_out_dec = 6'b111111; + 12'd3538 : mem_out_dec = 6'b111111; + 12'd3539 : mem_out_dec = 6'b111111; + 12'd3540 : mem_out_dec = 6'b111111; + 12'd3541 : mem_out_dec = 6'b111111; + 12'd3542 : mem_out_dec = 6'b111111; + 12'd3543 : mem_out_dec = 6'b111111; + 12'd3544 : mem_out_dec = 6'b111111; + 12'd3545 : mem_out_dec = 6'b111111; + 12'd3546 : mem_out_dec = 6'b111111; + 12'd3547 : mem_out_dec = 6'b111111; + 12'd3548 : mem_out_dec = 6'b111111; + 12'd3549 : mem_out_dec = 6'b111111; + 12'd3550 : mem_out_dec = 6'b111111; + 12'd3551 : mem_out_dec = 6'b111111; + 12'd3552 : mem_out_dec = 6'b111111; + 12'd3553 : mem_out_dec = 6'b111111; + 12'd3554 : mem_out_dec = 6'b111111; + 12'd3555 : mem_out_dec = 6'b111111; + 12'd3556 : mem_out_dec = 6'b111111; + 12'd3557 : mem_out_dec = 6'b111111; + 12'd3558 : mem_out_dec = 6'b111111; + 12'd3559 : mem_out_dec = 6'b111111; + 12'd3560 : mem_out_dec = 6'b111111; + 12'd3561 : mem_out_dec = 6'b111111; + 12'd3562 : mem_out_dec = 6'b111111; + 12'd3563 : mem_out_dec = 6'b111111; + 12'd3564 : mem_out_dec = 6'b111111; + 12'd3565 : mem_out_dec = 6'b111111; + 12'd3566 : mem_out_dec = 6'b111111; + 12'd3567 : mem_out_dec = 6'b111111; + 12'd3568 : mem_out_dec = 6'b111111; + 12'd3569 : mem_out_dec = 6'b111111; + 12'd3570 : mem_out_dec = 6'b111111; + 12'd3571 : mem_out_dec = 6'b111111; + 12'd3572 : mem_out_dec = 6'b111111; + 12'd3573 : mem_out_dec = 6'b111111; + 12'd3574 : mem_out_dec = 6'b111111; + 12'd3575 : mem_out_dec = 6'b111111; + 12'd3576 : mem_out_dec = 6'b111111; + 12'd3577 : mem_out_dec = 6'b111111; + 12'd3578 : mem_out_dec = 6'b111111; + 12'd3579 : mem_out_dec = 6'b111111; + 12'd3580 : mem_out_dec = 6'b111111; + 12'd3581 : mem_out_dec = 6'b000101; + 12'd3582 : mem_out_dec = 6'b000110; + 12'd3583 : mem_out_dec = 6'b000110; + 12'd3584 : mem_out_dec = 6'b111111; + 12'd3585 : mem_out_dec = 6'b111111; + 12'd3586 : mem_out_dec = 6'b111111; + 12'd3587 : mem_out_dec = 6'b111111; + 12'd3588 : mem_out_dec = 6'b111111; + 12'd3589 : mem_out_dec = 6'b111111; + 12'd3590 : mem_out_dec = 6'b111111; + 12'd3591 : mem_out_dec = 6'b111111; + 12'd3592 : mem_out_dec = 6'b111111; + 12'd3593 : mem_out_dec = 6'b111111; + 12'd3594 : mem_out_dec = 6'b111111; + 12'd3595 : mem_out_dec = 6'b111111; + 12'd3596 : mem_out_dec = 6'b111111; + 12'd3597 : mem_out_dec = 6'b111111; + 12'd3598 : mem_out_dec = 6'b111111; + 12'd3599 : mem_out_dec = 6'b111111; + 12'd3600 : mem_out_dec = 6'b111111; + 12'd3601 : mem_out_dec = 6'b111111; + 12'd3602 : mem_out_dec = 6'b111111; + 12'd3603 : mem_out_dec = 6'b111111; + 12'd3604 : mem_out_dec = 6'b111111; + 12'd3605 : mem_out_dec = 6'b111111; + 12'd3606 : mem_out_dec = 6'b111111; + 12'd3607 : mem_out_dec = 6'b111111; + 12'd3608 : mem_out_dec = 6'b111111; + 12'd3609 : mem_out_dec = 6'b111111; + 12'd3610 : mem_out_dec = 6'b111111; + 12'd3611 : mem_out_dec = 6'b111111; + 12'd3612 : mem_out_dec = 6'b111111; + 12'd3613 : mem_out_dec = 6'b111111; + 12'd3614 : mem_out_dec = 6'b111111; + 12'd3615 : mem_out_dec = 6'b111111; + 12'd3616 : mem_out_dec = 6'b111111; + 12'd3617 : mem_out_dec = 6'b111111; + 12'd3618 : mem_out_dec = 6'b111111; + 12'd3619 : mem_out_dec = 6'b111111; + 12'd3620 : mem_out_dec = 6'b111111; + 12'd3621 : mem_out_dec = 6'b111111; + 12'd3622 : mem_out_dec = 6'b111111; + 12'd3623 : mem_out_dec = 6'b111111; + 12'd3624 : mem_out_dec = 6'b111111; + 12'd3625 : mem_out_dec = 6'b111111; + 12'd3626 : mem_out_dec = 6'b111111; + 12'd3627 : mem_out_dec = 6'b111111; + 12'd3628 : mem_out_dec = 6'b111111; + 12'd3629 : mem_out_dec = 6'b111111; + 12'd3630 : mem_out_dec = 6'b111111; + 12'd3631 : mem_out_dec = 6'b111111; + 12'd3632 : mem_out_dec = 6'b111111; + 12'd3633 : mem_out_dec = 6'b111111; + 12'd3634 : mem_out_dec = 6'b111111; + 12'd3635 : mem_out_dec = 6'b111111; + 12'd3636 : mem_out_dec = 6'b111111; + 12'd3637 : mem_out_dec = 6'b111111; + 12'd3638 : mem_out_dec = 6'b111111; + 12'd3639 : mem_out_dec = 6'b111111; + 12'd3640 : mem_out_dec = 6'b111111; + 12'd3641 : mem_out_dec = 6'b111111; + 12'd3642 : mem_out_dec = 6'b111111; + 12'd3643 : mem_out_dec = 6'b111111; + 12'd3644 : mem_out_dec = 6'b111111; + 12'd3645 : mem_out_dec = 6'b111111; + 12'd3646 : mem_out_dec = 6'b000100; + 12'd3647 : mem_out_dec = 6'b000101; + 12'd3648 : mem_out_dec = 6'b111111; + 12'd3649 : mem_out_dec = 6'b111111; + 12'd3650 : mem_out_dec = 6'b111111; + 12'd3651 : mem_out_dec = 6'b111111; + 12'd3652 : mem_out_dec = 6'b111111; + 12'd3653 : mem_out_dec = 6'b111111; + 12'd3654 : mem_out_dec = 6'b111111; + 12'd3655 : mem_out_dec = 6'b111111; + 12'd3656 : mem_out_dec = 6'b111111; + 12'd3657 : mem_out_dec = 6'b111111; + 12'd3658 : mem_out_dec = 6'b111111; + 12'd3659 : mem_out_dec = 6'b111111; + 12'd3660 : mem_out_dec = 6'b111111; + 12'd3661 : mem_out_dec = 6'b111111; + 12'd3662 : mem_out_dec = 6'b111111; + 12'd3663 : mem_out_dec = 6'b111111; + 12'd3664 : mem_out_dec = 6'b111111; + 12'd3665 : mem_out_dec = 6'b111111; + 12'd3666 : mem_out_dec = 6'b111111; + 12'd3667 : mem_out_dec = 6'b111111; + 12'd3668 : mem_out_dec = 6'b111111; + 12'd3669 : mem_out_dec = 6'b111111; + 12'd3670 : mem_out_dec = 6'b111111; + 12'd3671 : mem_out_dec = 6'b111111; + 12'd3672 : mem_out_dec = 6'b111111; + 12'd3673 : mem_out_dec = 6'b111111; + 12'd3674 : mem_out_dec = 6'b111111; + 12'd3675 : mem_out_dec = 6'b111111; + 12'd3676 : mem_out_dec = 6'b111111; + 12'd3677 : mem_out_dec = 6'b111111; + 12'd3678 : mem_out_dec = 6'b111111; + 12'd3679 : mem_out_dec = 6'b111111; + 12'd3680 : mem_out_dec = 6'b111111; + 12'd3681 : mem_out_dec = 6'b111111; + 12'd3682 : mem_out_dec = 6'b111111; + 12'd3683 : mem_out_dec = 6'b111111; + 12'd3684 : mem_out_dec = 6'b111111; + 12'd3685 : mem_out_dec = 6'b111111; + 12'd3686 : mem_out_dec = 6'b111111; + 12'd3687 : mem_out_dec = 6'b111111; + 12'd3688 : mem_out_dec = 6'b111111; + 12'd3689 : mem_out_dec = 6'b111111; + 12'd3690 : mem_out_dec = 6'b111111; + 12'd3691 : mem_out_dec = 6'b111111; + 12'd3692 : mem_out_dec = 6'b111111; + 12'd3693 : mem_out_dec = 6'b111111; + 12'd3694 : mem_out_dec = 6'b111111; + 12'd3695 : mem_out_dec = 6'b111111; + 12'd3696 : mem_out_dec = 6'b111111; + 12'd3697 : mem_out_dec = 6'b111111; + 12'd3698 : mem_out_dec = 6'b111111; + 12'd3699 : mem_out_dec = 6'b111111; + 12'd3700 : mem_out_dec = 6'b111111; + 12'd3701 : mem_out_dec = 6'b111111; + 12'd3702 : mem_out_dec = 6'b111111; + 12'd3703 : mem_out_dec = 6'b111111; + 12'd3704 : mem_out_dec = 6'b111111; + 12'd3705 : mem_out_dec = 6'b111111; + 12'd3706 : mem_out_dec = 6'b111111; + 12'd3707 : mem_out_dec = 6'b111111; + 12'd3708 : mem_out_dec = 6'b111111; + 12'd3709 : mem_out_dec = 6'b111111; + 12'd3710 : mem_out_dec = 6'b111111; + 12'd3711 : mem_out_dec = 6'b000100; + 12'd3712 : mem_out_dec = 6'b111111; + 12'd3713 : mem_out_dec = 6'b111111; + 12'd3714 : mem_out_dec = 6'b111111; + 12'd3715 : mem_out_dec = 6'b111111; + 12'd3716 : mem_out_dec = 6'b111111; + 12'd3717 : mem_out_dec = 6'b111111; + 12'd3718 : mem_out_dec = 6'b111111; + 12'd3719 : mem_out_dec = 6'b111111; + 12'd3720 : mem_out_dec = 6'b111111; + 12'd3721 : mem_out_dec = 6'b111111; + 12'd3722 : mem_out_dec = 6'b111111; + 12'd3723 : mem_out_dec = 6'b111111; + 12'd3724 : mem_out_dec = 6'b111111; + 12'd3725 : mem_out_dec = 6'b111111; + 12'd3726 : mem_out_dec = 6'b111111; + 12'd3727 : mem_out_dec = 6'b111111; + 12'd3728 : mem_out_dec = 6'b111111; + 12'd3729 : mem_out_dec = 6'b111111; + 12'd3730 : mem_out_dec = 6'b111111; + 12'd3731 : mem_out_dec = 6'b111111; + 12'd3732 : mem_out_dec = 6'b111111; + 12'd3733 : mem_out_dec = 6'b111111; + 12'd3734 : mem_out_dec = 6'b111111; + 12'd3735 : mem_out_dec = 6'b111111; + 12'd3736 : mem_out_dec = 6'b111111; + 12'd3737 : mem_out_dec = 6'b111111; + 12'd3738 : mem_out_dec = 6'b111111; + 12'd3739 : mem_out_dec = 6'b111111; + 12'd3740 : mem_out_dec = 6'b111111; + 12'd3741 : mem_out_dec = 6'b111111; + 12'd3742 : mem_out_dec = 6'b111111; + 12'd3743 : mem_out_dec = 6'b111111; + 12'd3744 : mem_out_dec = 6'b111111; + 12'd3745 : mem_out_dec = 6'b111111; + 12'd3746 : mem_out_dec = 6'b111111; + 12'd3747 : mem_out_dec = 6'b111111; + 12'd3748 : mem_out_dec = 6'b111111; + 12'd3749 : mem_out_dec = 6'b111111; + 12'd3750 : mem_out_dec = 6'b111111; + 12'd3751 : mem_out_dec = 6'b111111; + 12'd3752 : mem_out_dec = 6'b111111; + 12'd3753 : mem_out_dec = 6'b111111; + 12'd3754 : mem_out_dec = 6'b111111; + 12'd3755 : mem_out_dec = 6'b111111; + 12'd3756 : mem_out_dec = 6'b111111; + 12'd3757 : mem_out_dec = 6'b111111; + 12'd3758 : mem_out_dec = 6'b111111; + 12'd3759 : mem_out_dec = 6'b111111; + 12'd3760 : mem_out_dec = 6'b111111; + 12'd3761 : mem_out_dec = 6'b111111; + 12'd3762 : mem_out_dec = 6'b111111; + 12'd3763 : mem_out_dec = 6'b111111; + 12'd3764 : mem_out_dec = 6'b111111; + 12'd3765 : mem_out_dec = 6'b111111; + 12'd3766 : mem_out_dec = 6'b111111; + 12'd3767 : mem_out_dec = 6'b111111; + 12'd3768 : mem_out_dec = 6'b111111; + 12'd3769 : mem_out_dec = 6'b111111; + 12'd3770 : mem_out_dec = 6'b111111; + 12'd3771 : mem_out_dec = 6'b111111; + 12'd3772 : mem_out_dec = 6'b111111; + 12'd3773 : mem_out_dec = 6'b111111; + 12'd3774 : mem_out_dec = 6'b111111; + 12'd3775 : mem_out_dec = 6'b111111; + 12'd3776 : mem_out_dec = 6'b111111; + 12'd3777 : mem_out_dec = 6'b111111; + 12'd3778 : mem_out_dec = 6'b111111; + 12'd3779 : mem_out_dec = 6'b111111; + 12'd3780 : mem_out_dec = 6'b111111; + 12'd3781 : mem_out_dec = 6'b111111; + 12'd3782 : mem_out_dec = 6'b111111; + 12'd3783 : mem_out_dec = 6'b111111; + 12'd3784 : mem_out_dec = 6'b111111; + 12'd3785 : mem_out_dec = 6'b111111; + 12'd3786 : mem_out_dec = 6'b111111; + 12'd3787 : mem_out_dec = 6'b111111; + 12'd3788 : mem_out_dec = 6'b111111; + 12'd3789 : mem_out_dec = 6'b111111; + 12'd3790 : mem_out_dec = 6'b111111; + 12'd3791 : mem_out_dec = 6'b111111; + 12'd3792 : mem_out_dec = 6'b111111; + 12'd3793 : mem_out_dec = 6'b111111; + 12'd3794 : mem_out_dec = 6'b111111; + 12'd3795 : mem_out_dec = 6'b111111; + 12'd3796 : mem_out_dec = 6'b111111; + 12'd3797 : mem_out_dec = 6'b111111; + 12'd3798 : mem_out_dec = 6'b111111; + 12'd3799 : mem_out_dec = 6'b111111; + 12'd3800 : mem_out_dec = 6'b111111; + 12'd3801 : mem_out_dec = 6'b111111; + 12'd3802 : mem_out_dec = 6'b111111; + 12'd3803 : mem_out_dec = 6'b111111; + 12'd3804 : mem_out_dec = 6'b111111; + 12'd3805 : mem_out_dec = 6'b111111; + 12'd3806 : mem_out_dec = 6'b111111; + 12'd3807 : mem_out_dec = 6'b111111; + 12'd3808 : mem_out_dec = 6'b111111; + 12'd3809 : mem_out_dec = 6'b111111; + 12'd3810 : mem_out_dec = 6'b111111; + 12'd3811 : mem_out_dec = 6'b111111; + 12'd3812 : mem_out_dec = 6'b111111; + 12'd3813 : mem_out_dec = 6'b111111; + 12'd3814 : mem_out_dec = 6'b111111; + 12'd3815 : mem_out_dec = 6'b111111; + 12'd3816 : mem_out_dec = 6'b111111; + 12'd3817 : mem_out_dec = 6'b111111; + 12'd3818 : mem_out_dec = 6'b111111; + 12'd3819 : mem_out_dec = 6'b111111; + 12'd3820 : mem_out_dec = 6'b111111; + 12'd3821 : mem_out_dec = 6'b111111; + 12'd3822 : mem_out_dec = 6'b111111; + 12'd3823 : mem_out_dec = 6'b111111; + 12'd3824 : mem_out_dec = 6'b111111; + 12'd3825 : mem_out_dec = 6'b111111; + 12'd3826 : mem_out_dec = 6'b111111; + 12'd3827 : mem_out_dec = 6'b111111; + 12'd3828 : mem_out_dec = 6'b111111; + 12'd3829 : mem_out_dec = 6'b111111; + 12'd3830 : mem_out_dec = 6'b111111; + 12'd3831 : mem_out_dec = 6'b111111; + 12'd3832 : mem_out_dec = 6'b111111; + 12'd3833 : mem_out_dec = 6'b111111; + 12'd3834 : mem_out_dec = 6'b111111; + 12'd3835 : mem_out_dec = 6'b111111; + 12'd3836 : mem_out_dec = 6'b111111; + 12'd3837 : mem_out_dec = 6'b111111; + 12'd3838 : mem_out_dec = 6'b111111; + 12'd3839 : mem_out_dec = 6'b111111; + 12'd3840 : mem_out_dec = 6'b111111; + 12'd3841 : mem_out_dec = 6'b111111; + 12'd3842 : mem_out_dec = 6'b111111; + 12'd3843 : mem_out_dec = 6'b111111; + 12'd3844 : mem_out_dec = 6'b111111; + 12'd3845 : mem_out_dec = 6'b111111; + 12'd3846 : mem_out_dec = 6'b111111; + 12'd3847 : mem_out_dec = 6'b111111; + 12'd3848 : mem_out_dec = 6'b111111; + 12'd3849 : mem_out_dec = 6'b111111; + 12'd3850 : mem_out_dec = 6'b111111; + 12'd3851 : mem_out_dec = 6'b111111; + 12'd3852 : mem_out_dec = 6'b111111; + 12'd3853 : mem_out_dec = 6'b111111; + 12'd3854 : mem_out_dec = 6'b111111; + 12'd3855 : mem_out_dec = 6'b111111; + 12'd3856 : mem_out_dec = 6'b111111; + 12'd3857 : mem_out_dec = 6'b111111; + 12'd3858 : mem_out_dec = 6'b111111; + 12'd3859 : mem_out_dec = 6'b111111; + 12'd3860 : mem_out_dec = 6'b111111; + 12'd3861 : mem_out_dec = 6'b111111; + 12'd3862 : mem_out_dec = 6'b111111; + 12'd3863 : mem_out_dec = 6'b111111; + 12'd3864 : mem_out_dec = 6'b111111; + 12'd3865 : mem_out_dec = 6'b111111; + 12'd3866 : mem_out_dec = 6'b111111; + 12'd3867 : mem_out_dec = 6'b111111; + 12'd3868 : mem_out_dec = 6'b111111; + 12'd3869 : mem_out_dec = 6'b111111; + 12'd3870 : mem_out_dec = 6'b111111; + 12'd3871 : mem_out_dec = 6'b111111; + 12'd3872 : mem_out_dec = 6'b111111; + 12'd3873 : mem_out_dec = 6'b111111; + 12'd3874 : mem_out_dec = 6'b111111; + 12'd3875 : mem_out_dec = 6'b111111; + 12'd3876 : mem_out_dec = 6'b111111; + 12'd3877 : mem_out_dec = 6'b111111; + 12'd3878 : mem_out_dec = 6'b111111; + 12'd3879 : mem_out_dec = 6'b111111; + 12'd3880 : mem_out_dec = 6'b111111; + 12'd3881 : mem_out_dec = 6'b111111; + 12'd3882 : mem_out_dec = 6'b111111; + 12'd3883 : mem_out_dec = 6'b111111; + 12'd3884 : mem_out_dec = 6'b111111; + 12'd3885 : mem_out_dec = 6'b111111; + 12'd3886 : mem_out_dec = 6'b111111; + 12'd3887 : mem_out_dec = 6'b111111; + 12'd3888 : mem_out_dec = 6'b111111; + 12'd3889 : mem_out_dec = 6'b111111; + 12'd3890 : mem_out_dec = 6'b111111; + 12'd3891 : mem_out_dec = 6'b111111; + 12'd3892 : mem_out_dec = 6'b111111; + 12'd3893 : mem_out_dec = 6'b111111; + 12'd3894 : mem_out_dec = 6'b111111; + 12'd3895 : mem_out_dec = 6'b111111; + 12'd3896 : mem_out_dec = 6'b111111; + 12'd3897 : mem_out_dec = 6'b111111; + 12'd3898 : mem_out_dec = 6'b111111; + 12'd3899 : mem_out_dec = 6'b111111; + 12'd3900 : mem_out_dec = 6'b111111; + 12'd3901 : mem_out_dec = 6'b111111; + 12'd3902 : mem_out_dec = 6'b111111; + 12'd3903 : mem_out_dec = 6'b111111; + 12'd3904 : mem_out_dec = 6'b111111; + 12'd3905 : mem_out_dec = 6'b111111; + 12'd3906 : mem_out_dec = 6'b111111; + 12'd3907 : mem_out_dec = 6'b111111; + 12'd3908 : mem_out_dec = 6'b111111; + 12'd3909 : mem_out_dec = 6'b111111; + 12'd3910 : mem_out_dec = 6'b111111; + 12'd3911 : mem_out_dec = 6'b111111; + 12'd3912 : mem_out_dec = 6'b111111; + 12'd3913 : mem_out_dec = 6'b111111; + 12'd3914 : mem_out_dec = 6'b111111; + 12'd3915 : mem_out_dec = 6'b111111; + 12'd3916 : mem_out_dec = 6'b111111; + 12'd3917 : mem_out_dec = 6'b111111; + 12'd3918 : mem_out_dec = 6'b111111; + 12'd3919 : mem_out_dec = 6'b111111; + 12'd3920 : mem_out_dec = 6'b111111; + 12'd3921 : mem_out_dec = 6'b111111; + 12'd3922 : mem_out_dec = 6'b111111; + 12'd3923 : mem_out_dec = 6'b111111; + 12'd3924 : mem_out_dec = 6'b111111; + 12'd3925 : mem_out_dec = 6'b111111; + 12'd3926 : mem_out_dec = 6'b111111; + 12'd3927 : mem_out_dec = 6'b111111; + 12'd3928 : mem_out_dec = 6'b111111; + 12'd3929 : mem_out_dec = 6'b111111; + 12'd3930 : mem_out_dec = 6'b111111; + 12'd3931 : mem_out_dec = 6'b111111; + 12'd3932 : mem_out_dec = 6'b111111; + 12'd3933 : mem_out_dec = 6'b111111; + 12'd3934 : mem_out_dec = 6'b111111; + 12'd3935 : mem_out_dec = 6'b111111; + 12'd3936 : mem_out_dec = 6'b111111; + 12'd3937 : mem_out_dec = 6'b111111; + 12'd3938 : mem_out_dec = 6'b111111; + 12'd3939 : mem_out_dec = 6'b111111; + 12'd3940 : mem_out_dec = 6'b111111; + 12'd3941 : mem_out_dec = 6'b111111; + 12'd3942 : mem_out_dec = 6'b111111; + 12'd3943 : mem_out_dec = 6'b111111; + 12'd3944 : mem_out_dec = 6'b111111; + 12'd3945 : mem_out_dec = 6'b111111; + 12'd3946 : mem_out_dec = 6'b111111; + 12'd3947 : mem_out_dec = 6'b111111; + 12'd3948 : mem_out_dec = 6'b111111; + 12'd3949 : mem_out_dec = 6'b111111; + 12'd3950 : mem_out_dec = 6'b111111; + 12'd3951 : mem_out_dec = 6'b111111; + 12'd3952 : mem_out_dec = 6'b111111; + 12'd3953 : mem_out_dec = 6'b111111; + 12'd3954 : mem_out_dec = 6'b111111; + 12'd3955 : mem_out_dec = 6'b111111; + 12'd3956 : mem_out_dec = 6'b111111; + 12'd3957 : mem_out_dec = 6'b111111; + 12'd3958 : mem_out_dec = 6'b111111; + 12'd3959 : mem_out_dec = 6'b111111; + 12'd3960 : mem_out_dec = 6'b111111; + 12'd3961 : mem_out_dec = 6'b111111; + 12'd3962 : mem_out_dec = 6'b111111; + 12'd3963 : mem_out_dec = 6'b111111; + 12'd3964 : mem_out_dec = 6'b111111; + 12'd3965 : mem_out_dec = 6'b111111; + 12'd3966 : mem_out_dec = 6'b111111; + 12'd3967 : mem_out_dec = 6'b111111; + 12'd3968 : mem_out_dec = 6'b111111; + 12'd3969 : mem_out_dec = 6'b111111; + 12'd3970 : mem_out_dec = 6'b111111; + 12'd3971 : mem_out_dec = 6'b111111; + 12'd3972 : mem_out_dec = 6'b111111; + 12'd3973 : mem_out_dec = 6'b111111; + 12'd3974 : mem_out_dec = 6'b111111; + 12'd3975 : mem_out_dec = 6'b111111; + 12'd3976 : mem_out_dec = 6'b111111; + 12'd3977 : mem_out_dec = 6'b111111; + 12'd3978 : mem_out_dec = 6'b111111; + 12'd3979 : mem_out_dec = 6'b111111; + 12'd3980 : mem_out_dec = 6'b111111; + 12'd3981 : mem_out_dec = 6'b111111; + 12'd3982 : mem_out_dec = 6'b111111; + 12'd3983 : mem_out_dec = 6'b111111; + 12'd3984 : mem_out_dec = 6'b111111; + 12'd3985 : mem_out_dec = 6'b111111; + 12'd3986 : mem_out_dec = 6'b111111; + 12'd3987 : mem_out_dec = 6'b111111; + 12'd3988 : mem_out_dec = 6'b111111; + 12'd3989 : mem_out_dec = 6'b111111; + 12'd3990 : mem_out_dec = 6'b111111; + 12'd3991 : mem_out_dec = 6'b111111; + 12'd3992 : mem_out_dec = 6'b111111; + 12'd3993 : mem_out_dec = 6'b111111; + 12'd3994 : mem_out_dec = 6'b111111; + 12'd3995 : mem_out_dec = 6'b111111; + 12'd3996 : mem_out_dec = 6'b111111; + 12'd3997 : mem_out_dec = 6'b111111; + 12'd3998 : mem_out_dec = 6'b111111; + 12'd3999 : mem_out_dec = 6'b111111; + 12'd4000 : mem_out_dec = 6'b111111; + 12'd4001 : mem_out_dec = 6'b111111; + 12'd4002 : mem_out_dec = 6'b111111; + 12'd4003 : mem_out_dec = 6'b111111; + 12'd4004 : mem_out_dec = 6'b111111; + 12'd4005 : mem_out_dec = 6'b111111; + 12'd4006 : mem_out_dec = 6'b111111; + 12'd4007 : mem_out_dec = 6'b111111; + 12'd4008 : mem_out_dec = 6'b111111; + 12'd4009 : mem_out_dec = 6'b111111; + 12'd4010 : mem_out_dec = 6'b111111; + 12'd4011 : mem_out_dec = 6'b111111; + 12'd4012 : mem_out_dec = 6'b111111; + 12'd4013 : mem_out_dec = 6'b111111; + 12'd4014 : mem_out_dec = 6'b111111; + 12'd4015 : mem_out_dec = 6'b111111; + 12'd4016 : mem_out_dec = 6'b111111; + 12'd4017 : mem_out_dec = 6'b111111; + 12'd4018 : mem_out_dec = 6'b111111; + 12'd4019 : mem_out_dec = 6'b111111; + 12'd4020 : mem_out_dec = 6'b111111; + 12'd4021 : mem_out_dec = 6'b111111; + 12'd4022 : mem_out_dec = 6'b111111; + 12'd4023 : mem_out_dec = 6'b111111; + 12'd4024 : mem_out_dec = 6'b111111; + 12'd4025 : mem_out_dec = 6'b111111; + 12'd4026 : mem_out_dec = 6'b111111; + 12'd4027 : mem_out_dec = 6'b111111; + 12'd4028 : mem_out_dec = 6'b111111; + 12'd4029 : mem_out_dec = 6'b111111; + 12'd4030 : mem_out_dec = 6'b111111; + 12'd4031 : mem_out_dec = 6'b111111; + 12'd4032 : mem_out_dec = 6'b111111; + 12'd4033 : mem_out_dec = 6'b111111; + 12'd4034 : mem_out_dec = 6'b111111; + 12'd4035 : mem_out_dec = 6'b111111; + 12'd4036 : mem_out_dec = 6'b111111; + 12'd4037 : mem_out_dec = 6'b111111; + 12'd4038 : mem_out_dec = 6'b111111; + 12'd4039 : mem_out_dec = 6'b111111; + 12'd4040 : mem_out_dec = 6'b111111; + 12'd4041 : mem_out_dec = 6'b111111; + 12'd4042 : mem_out_dec = 6'b111111; + 12'd4043 : mem_out_dec = 6'b111111; + 12'd4044 : mem_out_dec = 6'b111111; + 12'd4045 : mem_out_dec = 6'b111111; + 12'd4046 : mem_out_dec = 6'b111111; + 12'd4047 : mem_out_dec = 6'b111111; + 12'd4048 : mem_out_dec = 6'b111111; + 12'd4049 : mem_out_dec = 6'b111111; + 12'd4050 : mem_out_dec = 6'b111111; + 12'd4051 : mem_out_dec = 6'b111111; + 12'd4052 : mem_out_dec = 6'b111111; + 12'd4053 : mem_out_dec = 6'b111111; + 12'd4054 : mem_out_dec = 6'b111111; + 12'd4055 : mem_out_dec = 6'b111111; + 12'd4056 : mem_out_dec = 6'b111111; + 12'd4057 : mem_out_dec = 6'b111111; + 12'd4058 : mem_out_dec = 6'b111111; + 12'd4059 : mem_out_dec = 6'b111111; + 12'd4060 : mem_out_dec = 6'b111111; + 12'd4061 : mem_out_dec = 6'b111111; + 12'd4062 : mem_out_dec = 6'b111111; + 12'd4063 : mem_out_dec = 6'b111111; + 12'd4064 : mem_out_dec = 6'b111111; + 12'd4065 : mem_out_dec = 6'b111111; + 12'd4066 : mem_out_dec = 6'b111111; + 12'd4067 : mem_out_dec = 6'b111111; + 12'd4068 : mem_out_dec = 6'b111111; + 12'd4069 : mem_out_dec = 6'b111111; + 12'd4070 : mem_out_dec = 6'b111111; + 12'd4071 : mem_out_dec = 6'b111111; + 12'd4072 : mem_out_dec = 6'b111111; + 12'd4073 : mem_out_dec = 6'b111111; + 12'd4074 : mem_out_dec = 6'b111111; + 12'd4075 : mem_out_dec = 6'b111111; + 12'd4076 : mem_out_dec = 6'b111111; + 12'd4077 : mem_out_dec = 6'b111111; + 12'd4078 : mem_out_dec = 6'b111111; + 12'd4079 : mem_out_dec = 6'b111111; + 12'd4080 : mem_out_dec = 6'b111111; + 12'd4081 : mem_out_dec = 6'b111111; + 12'd4082 : mem_out_dec = 6'b111111; + 12'd4083 : mem_out_dec = 6'b111111; + 12'd4084 : mem_out_dec = 6'b111111; + 12'd4085 : mem_out_dec = 6'b111111; + 12'd4086 : mem_out_dec = 6'b111111; + 12'd4087 : mem_out_dec = 6'b111111; + 12'd4088 : mem_out_dec = 6'b111111; + 12'd4089 : mem_out_dec = 6'b111111; + 12'd4090 : mem_out_dec = 6'b111111; + 12'd4091 : mem_out_dec = 6'b111111; + 12'd4092 : mem_out_dec = 6'b111111; + 12'd4093 : mem_out_dec = 6'b111111; + 12'd4094 : mem_out_dec = 6'b111111; + 12'd4095 : mem_out_dec = 6'b111111; + endcase + end + + always @ (posedge clk) begin + dec_cnt <= #TCQ mem_out_dec; + end +endmodule diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_rdlvl.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_rdlvl.v new file mode 100644 index 0000000..04a4264 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_rdlvl.v @@ -0,0 +1,3380 @@ +//***************************************************************************** +// (c) Copyright 2009 - 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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version: +// \ \ Application: MIG +// / / Filename: ddr_phy_rdlvl.v +// /___/ /\ Date Last Modified: $Date: 2011/06/24 14:49:00 $ +// \ \ / \ Date Created: +// \___\/\___\ +// +//Device: 7 Series +//Design Name: DDR3 SDRAM +//Purpose: +// Read leveling Stage1 calibration logic +// NOTES: +// 1. Window detection with PRBS pattern. +//Reference: +//Revision History: +//***************************************************************************** + +/****************************************************************************** +**$Id: ddr_phy_rdlvl.v,v 1.2 2011/06/24 14:49:00 mgeorge Exp $ +**$Date: 2011/06/24 14:49:00 $ +**$Author: mgeorge $ +**$Revision: 1.2 $ +**$Source: /devl/xcs/repo/env/Databases/ip/src2/O/mig_7series_v1_3/data/dlib/7series/ddr3_sdram/verilog/rtl/phy/ddr_phy_rdlvl.v,v $ +******************************************************************************/ + +`timescale 1ps/1ps + +(* use_dsp48 = "no" *) + +module mig_7series_v4_0_ddr_phy_rdlvl # + ( + parameter TCQ = 100, // clk->out delay (sim only) + parameter nCK_PER_CLK = 2, // # of memory clocks per CLK + parameter CLK_PERIOD = 3333, // Internal clock period (in ps) + parameter DQ_WIDTH = 64, // # of DQ (data) + parameter DQS_CNT_WIDTH = 3, // = ceil(log2(DQS_WIDTH)) + parameter DQS_WIDTH = 8, // # of DQS (strobe) + parameter DRAM_WIDTH = 8, // # of DQ per DQS + parameter RANKS = 1, // # of DRAM ranks + parameter PER_BIT_DESKEW = "ON", // Enable per-bit DQ deskew + parameter SIM_CAL_OPTION = "NONE", // Skip various calibration steps + parameter DEBUG_PORT = "OFF", // Enable debug port + parameter DRAM_TYPE = "DDR3", // Memory I/F type: "DDR3", "DDR2" + parameter OCAL_EN = "ON", + parameter IDELAY_ADJ = "ON", + parameter PI_DIV2_INCDEC = "TRUE" + ) + ( + input clk, + input rst, + // Calibration status, control signals + input mpr_rdlvl_start, + output mpr_rdlvl_done, + output reg mpr_last_byte_done, + output mpr_rnk_done, + input rdlvl_stg1_start, + output rdlvl_stg1_done /* synthesis syn_maxfan = 30 */, + output rdlvl_stg1_rnk_done, + output reg rdlvl_stg1_err, + output mpr_rdlvl_err, + output rdlvl_err, + output reg rdlvl_prech_req, + output rdlvl_last_byte_done, + output reg rdlvl_assrt_common, + input prech_done, + input phy_if_empty, + input [4:0] idelaye2_init_val, + // Captured data in fabric clock domain + input [2*nCK_PER_CLK*DQ_WIDTH-1:0] rd_data, + // Decrement initial Phaser_IN Fine tap delay + input dqs_po_dec_done, + input [5:0] pi_counter_read_val, + // Stage 1 calibration outputs + output reg pi_fine_dly_dec_done, + output reg pi_en_stg2_f, + output reg pi_stg2_f_incdec, + output reg pi_stg2_load, + output reg [5:0] pi_stg2_reg_l, + output [DQS_CNT_WIDTH:0] pi_stg2_rdlvl_cnt, + // To DQ IDELAY required to find left edge of + // valid window + output idelay_ce, + output idelay_inc, + input idelay_ld, + input [DQS_CNT_WIDTH:0] wrcal_cnt, + // Only output if Per-bit de-skew enabled + output reg [5*RANKS*DQ_WIDTH-1:0] dlyval_dq, + //output to prevent read during PI movement + output reg rdlvl_pi_incdec, + // Debug Port + output [6*DQS_WIDTH*RANKS-1:0] dbg_cpt_first_edge_cnt, + output [6*DQS_WIDTH*RANKS-1:0] dbg_cpt_second_edge_cnt, + output [6*DQS_WIDTH*RANKS-1:0] dbg_cpt_tap_cnt, + output [5*DQS_WIDTH*RANKS-1:0] dbg_dq_idelay_tap_cnt, + + input dbg_idel_up_all, + input dbg_idel_down_all, + input dbg_idel_up_cpt, + input dbg_idel_down_cpt, + input [DQS_CNT_WIDTH-1:0] dbg_sel_idel_cpt, + input dbg_sel_all_idel_cpt, + output [255:0] dbg_phy_rdlvl + ); + + // minimum time (in IDELAY taps) for which capture data must be stable for + // algorithm to consider a valid data eye to be found. The read leveling + // logic will ignore any window found smaller than this value. Limitations + // on how small this number can be is determined by: (1) the algorithmic + // limitation of how many taps wide the data eye can be (3 taps), and (2) + // how wide regions of "instability" that occur around the edges of the + // read valid window can be (i.e. need to be able to filter out "false" + // windows that occur for a short # of taps around the edges of the true + // data window, although with multi-sampling during read leveling, this is + // not as much a concern) - the larger the value, the more protection + // against "false" windows + localparam MIN_EYE_SIZE = 16; + + // Length of calibration sequence (in # of words) + localparam CAL_PAT_LEN = 8; + // Read data shift register length + localparam RD_SHIFT_LEN = CAL_PAT_LEN / (2*nCK_PER_CLK); + + // # of cycles required to perform read data shift register compare + // This is defined as from the cycle the new data is loaded until + // signal found_edge_r is valid + localparam RD_SHIFT_COMP_DELAY = 5; + + // worst-case # of cycles to wait to ensure that both the SR and + // PREV_SR shift registers have valid data, and that the comparison + // of the two shift register values is valid. The "+1" at the end of + // this equation is a fudge factor, I freely admit that + localparam SR_VALID_DELAY = (2 * RD_SHIFT_LEN) + RD_SHIFT_COMP_DELAY + 1; + + // # of clock cycles to wait after changing tap value or read data MUX + // to allow: (1) tap chain to settle, (2) for delayed input to propagate + // thru ISERDES, (3) for the read data comparison logic to have time to + // output the comparison of two consecutive samples of the settled read data + // The minimum delay is 16 cycles, which should be good enough to handle all + // three of the above conditions for the simulation-only case with a short + // training pattern. For H/W (or for simulation with longer training + // pattern), it will take longer to store and compare two consecutive + // samples, and the value of this parameter will reflect that + // put the maximum number for 2:1 mode + localparam PIPE_WAIT_CNT = (nCK_PER_CLK == 2) ? 31 : (SR_VALID_DELAY < 8) ? 16 + : (SR_VALID_DELAY + 8); + + // # of read data samples to examine when detecting whether an edge has + // occured during stage 1 calibration. Width of local param must be + // changed as appropriate. Note that there are two counters used, each + // counter can be changed independently of the other - they are used in + // cascade to create a larger counter + localparam [11:0] DETECT_EDGE_SAMPLE_CNT0 = 12'h001; //12'hFFF; + localparam [11:0] DETECT_EDGE_SAMPLE_CNT1 = 12'h001; // 12'h1FF Must be > 0 + + localparam [5:0] CAL1_IDLE = 6'h00; + localparam [5:0] CAL1_NEW_DQS_WAIT = 6'h01; + localparam [5:0] CAL1_STORE_FIRST_WAIT = 6'h02; + localparam [5:0] CAL1_PAT_DETECT = 6'h03; + localparam [5:0] CAL1_DQ_IDEL_TAP_INC = 6'h04; + localparam [5:0] CAL1_DQ_IDEL_TAP_INC_WAIT = 6'h05; + localparam [5:0] CAL1_DQ_IDEL_TAP_DEC = 6'h06; + localparam [5:0] CAL1_DQ_IDEL_TAP_DEC_WAIT = 6'h07; + localparam [5:0] CAL1_DETECT_EDGE = 6'h08; + localparam [5:0] CAL1_IDEL_INC_CPT = 6'h09; + localparam [5:0] CAL1_IDEL_INC_CPT_WAIT = 6'h0A; + localparam [5:0] CAL1_CALC_IDEL = 6'h0B; + localparam [5:0] CAL1_IDEL_DEC_CPT = 6'h0C; + localparam [5:0] CAL1_IDEL_DEC_CPT_WAIT = 6'h0D; + localparam [5:0] CAL1_NEXT_DQS = 6'h0E; + localparam [5:0] CAL1_DONE = 6'h0F; + localparam [5:0] CAL1_PB_STORE_FIRST_WAIT = 6'h10; + localparam [5:0] CAL1_PB_DETECT_EDGE = 6'h11; + localparam [5:0] CAL1_PB_INC_CPT = 6'h12; + localparam [5:0] CAL1_PB_INC_CPT_WAIT = 6'h13; + localparam [5:0] CAL1_PB_DEC_CPT_LEFT = 6'h14; + localparam [5:0] CAL1_PB_DEC_CPT_LEFT_WAIT = 6'h15; + localparam [5:0] CAL1_PB_DETECT_EDGE_DQ = 6'h16; + localparam [5:0] CAL1_PB_INC_DQ = 6'h17; + localparam [5:0] CAL1_PB_INC_DQ_WAIT = 6'h18; + localparam [5:0] CAL1_PB_DEC_CPT = 6'h19; + localparam [5:0] CAL1_PB_DEC_CPT_WAIT = 6'h1A; + localparam [5:0] CAL1_REGL_LOAD = 6'h1B; + localparam [5:0] CAL1_RDLVL_ERR = 6'h1C; + localparam [5:0] CAL1_MPR_NEW_DQS_WAIT = 6'h1D; + localparam [5:0] CAL1_VALID_WAIT = 6'h1E; + localparam [5:0] CAL1_MPR_PAT_DETECT = 6'h1F; + localparam [5:0] CAL1_NEW_DQS_PREWAIT = 6'h20; + localparam [5:0] CAL1_RD_STOP_FOR_PI_INC = 6'h21; + localparam [5:0] CAL1_CENTER_WAIT = 6'h22; + + integer a; + integer b; + integer d; + integer e; + integer f; + integer h; + integer g; + integer i; + integer j; + integer k; + integer l; + integer m; + integer n; + integer r; + integer p; + integer q; + integer s; + integer t; + integer u; + integer w; + integer ce_i; + integer ce_rnk_i; + integer aa; + integer bb; + integer cc; + integer dd; + genvar x; + genvar z; + + reg [DQS_CNT_WIDTH:0] cal1_cnt_cpt_r; + wire [DQS_CNT_WIDTH+2:0]cal1_cnt_cpt_timing; + reg [DQS_CNT_WIDTH:0] cal1_cnt_cpt_timing_r; + reg cal1_dq_idel_ce; + reg cal1_dq_idel_inc; + reg cal1_dlyce_cpt_r; + reg cal1_dlyinc_cpt_r; + reg cal1_dlyce_dq_r; + reg cal1_dlyinc_dq_r; + reg cal1_wait_cnt_en_r; + reg [4:0] cal1_wait_cnt_r; + reg cal1_wait_r; + reg [DQ_WIDTH-1:0] dlyce_dq_r; + reg dlyinc_dq_r; + reg [4:0] dlyval_dq_reg_r [0:RANKS-1][0:DQ_WIDTH-1]; + reg cal1_prech_req_r; + reg [5:0] cal1_state_r; + reg [5:0] cal1_state_r1; + reg [5:0] cal1_state_r2; + reg [5:0] cal1_state_r3; + reg [5:0] cnt_idel_dec_cpt_r; + reg [3:0] cnt_shift_r; + reg detect_edge_done_r; + reg [5:0] right_edge_taps_r; + reg [5:0] first_edge_taps_r; + reg found_edge_r; + reg found_first_edge_r; + reg found_second_edge_r; + reg found_stable_eye_r; + reg found_stable_eye_last_r; + reg found_edge_all_r; + reg [5:0] tap_cnt_cpt_r; + reg tap_limit_cpt_r; + reg [4:0] idel_tap_cnt_dq_pb_r; + reg idel_tap_limit_dq_pb_r; + reg [DRAM_WIDTH-1:0] mux_rd_fall0_r; + reg [DRAM_WIDTH-1:0] mux_rd_fall1_r; + reg [DRAM_WIDTH-1:0] mux_rd_rise0_r; + reg [DRAM_WIDTH-1:0] mux_rd_rise1_r; + reg [DRAM_WIDTH-1:0] mux_rd_fall2_r; + reg [DRAM_WIDTH-1:0] mux_rd_fall3_r; + reg [DRAM_WIDTH-1:0] mux_rd_rise2_r; + reg [DRAM_WIDTH-1:0] mux_rd_rise3_r; + reg mux_rd_valid_r; + reg new_cnt_cpt_r; + reg [RD_SHIFT_LEN-1:0] old_sr_fall0_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] old_sr_fall1_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] old_sr_rise0_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] old_sr_rise1_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] old_sr_fall2_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] old_sr_fall3_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] old_sr_rise2_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] old_sr_rise3_r [DRAM_WIDTH-1:0]; + reg [DRAM_WIDTH-1:0] old_sr_match_fall0_r; + reg [DRAM_WIDTH-1:0] old_sr_match_fall1_r; + reg [DRAM_WIDTH-1:0] old_sr_match_rise0_r; + reg [DRAM_WIDTH-1:0] old_sr_match_rise1_r; + reg [DRAM_WIDTH-1:0] old_sr_match_fall2_r; + reg [DRAM_WIDTH-1:0] old_sr_match_fall3_r; + reg [DRAM_WIDTH-1:0] old_sr_match_rise2_r; + reg [DRAM_WIDTH-1:0] old_sr_match_rise3_r; + reg [4:0] pb_cnt_eye_size_r [DRAM_WIDTH-1:0]; + reg [DRAM_WIDTH-1:0] pb_detect_edge_done_r; + reg [DRAM_WIDTH-1:0] pb_found_edge_last_r; + reg [DRAM_WIDTH-1:0] pb_found_edge_r; + reg [DRAM_WIDTH-1:0] pb_found_first_edge_r; + reg [DRAM_WIDTH-1:0] pb_found_stable_eye_r; + reg [DRAM_WIDTH-1:0] pb_last_tap_jitter_r; + reg pi_en_stg2_f_timing; + reg pi_stg2_f_incdec_timing; + reg pi_stg2_load_timing; + reg [5:0] pi_stg2_reg_l_timing; + reg [DRAM_WIDTH-1:0] prev_sr_diff_r; + reg [RD_SHIFT_LEN-1:0] prev_sr_fall0_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] prev_sr_fall1_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] prev_sr_rise0_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] prev_sr_rise1_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] prev_sr_fall2_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] prev_sr_fall3_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] prev_sr_rise2_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] prev_sr_rise3_r [DRAM_WIDTH-1:0]; + reg [DRAM_WIDTH-1:0] prev_sr_match_cyc2_r; + reg [DRAM_WIDTH-1:0] prev_sr_match_fall0_r; + reg [DRAM_WIDTH-1:0] prev_sr_match_fall1_r; + reg [DRAM_WIDTH-1:0] prev_sr_match_rise0_r; + reg [DRAM_WIDTH-1:0] prev_sr_match_rise1_r; + reg [DRAM_WIDTH-1:0] prev_sr_match_fall2_r; + reg [DRAM_WIDTH-1:0] prev_sr_match_fall3_r; + reg [DRAM_WIDTH-1:0] prev_sr_match_rise2_r; + reg [DRAM_WIDTH-1:0] prev_sr_match_rise3_r; + wire [DQ_WIDTH-1:0] rd_data_rise0; + wire [DQ_WIDTH-1:0] rd_data_fall0; + wire [DQ_WIDTH-1:0] rd_data_rise1; + wire [DQ_WIDTH-1:0] rd_data_fall1; + wire [DQ_WIDTH-1:0] rd_data_rise2; + wire [DQ_WIDTH-1:0] rd_data_fall2; + wire [DQ_WIDTH-1:0] rd_data_rise3; + wire [DQ_WIDTH-1:0] rd_data_fall3; + reg samp_cnt_done_r; + reg samp_edge_cnt0_en_r; + reg [11:0] samp_edge_cnt0_r; + reg samp_edge_cnt1_en_r; + reg [11:0] samp_edge_cnt1_r; + reg [DQS_CNT_WIDTH:0] rd_mux_sel_r; + reg [5:0] second_edge_taps_r; + reg [RD_SHIFT_LEN-1:0] sr_fall0_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] sr_fall1_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] sr_rise0_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] sr_rise1_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] sr_fall2_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] sr_fall3_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] sr_rise2_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] sr_rise3_r [DRAM_WIDTH-1:0]; + reg store_sr_r; + reg store_sr_req_pulsed_r; + reg store_sr_req_r; + reg sr_valid_r; + reg sr_valid_r1; + reg sr_valid_r2; + reg [DRAM_WIDTH-1:0] old_sr_diff_r; + reg [DRAM_WIDTH-1:0] old_sr_match_cyc2_r; + reg pat0_data_match_r; + reg pat1_data_match_r; + wire pat_data_match_r; + wire [RD_SHIFT_LEN-1:0] pat0_fall0 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat0_fall1 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat0_fall2 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat0_fall3 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat1_fall0 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat1_fall1 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat1_fall2 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat1_fall3 [3:0]; + reg [DRAM_WIDTH-1:0] pat0_match_fall0_r; + reg pat0_match_fall0_and_r; + reg [DRAM_WIDTH-1:0] pat0_match_fall1_r; + reg pat0_match_fall1_and_r; + reg [DRAM_WIDTH-1:0] pat0_match_fall2_r; + reg pat0_match_fall2_and_r; + reg [DRAM_WIDTH-1:0] pat0_match_fall3_r; + reg pat0_match_fall3_and_r; + reg [DRAM_WIDTH-1:0] pat0_match_rise0_r; + reg pat0_match_rise0_and_r; + reg [DRAM_WIDTH-1:0] pat0_match_rise1_r; + reg pat0_match_rise1_and_r; + reg [DRAM_WIDTH-1:0] pat0_match_rise2_r; + reg pat0_match_rise2_and_r; + reg [DRAM_WIDTH-1:0] pat0_match_rise3_r; + reg pat0_match_rise3_and_r; + reg [DRAM_WIDTH-1:0] pat1_match_fall0_r; + reg pat1_match_fall0_and_r; + reg [DRAM_WIDTH-1:0] pat1_match_fall1_r; + reg pat1_match_fall1_and_r; + reg [DRAM_WIDTH-1:0] pat1_match_fall2_r; + reg pat1_match_fall2_and_r; + reg [DRAM_WIDTH-1:0] pat1_match_fall3_r; + reg pat1_match_fall3_and_r; + reg [DRAM_WIDTH-1:0] pat1_match_rise0_r; + reg pat1_match_rise0_and_r; + reg [DRAM_WIDTH-1:0] pat1_match_rise1_r; + reg pat1_match_rise1_and_r; + reg [DRAM_WIDTH-1:0] pat1_match_rise2_r; + reg pat1_match_rise2_and_r; + reg [DRAM_WIDTH-1:0] pat1_match_rise3_r; + reg pat1_match_rise3_and_r; + reg [4:0] idelay_tap_cnt_r [0:RANKS-1][0:DQS_WIDTH-1]; + reg [5*DQS_WIDTH*RANKS-1:0] idelay_tap_cnt_w; + reg [4:0] idelay_tap_cnt_slice_r; + reg idelay_tap_limit_r; + + wire [RD_SHIFT_LEN-1:0] pat0_rise0 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat0_rise1 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat0_rise2 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat0_rise3 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat1_rise0 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat1_rise1 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat1_rise2 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat1_rise3 [3:0]; + + wire [RD_SHIFT_LEN-1:0] idel_pat0_rise0 [3:0]; + wire [RD_SHIFT_LEN-1:0] idel_pat0_fall0 [3:0]; + wire [RD_SHIFT_LEN-1:0] idel_pat0_rise1 [3:0]; + wire [RD_SHIFT_LEN-1:0] idel_pat0_fall1 [3:0]; + wire [RD_SHIFT_LEN-1:0] idel_pat0_rise2 [3:0]; + wire [RD_SHIFT_LEN-1:0] idel_pat0_fall2 [3:0]; + wire [RD_SHIFT_LEN-1:0] idel_pat0_rise3 [3:0]; + wire [RD_SHIFT_LEN-1:0] idel_pat0_fall3 [3:0]; + wire [RD_SHIFT_LEN-1:0] idel_pat1_rise0 [3:0]; + wire [RD_SHIFT_LEN-1:0] idel_pat1_fall0 [3:0]; + wire [RD_SHIFT_LEN-1:0] idel_pat1_rise1 [3:0]; + wire [RD_SHIFT_LEN-1:0] idel_pat1_fall1 [3:0]; + wire [RD_SHIFT_LEN-1:0] idel_pat1_rise2 [3:0]; + wire [RD_SHIFT_LEN-1:0] idel_pat1_fall2 [3:0]; + wire [RD_SHIFT_LEN-1:0] idel_pat1_rise3 [3:0]; + wire [RD_SHIFT_LEN-1:0] idel_pat1_fall3 [3:0]; + + reg [DRAM_WIDTH-1:0] idel_pat0_match_rise0_r; + reg [DRAM_WIDTH-1:0] idel_pat0_match_fall0_r; + reg [DRAM_WIDTH-1:0] idel_pat0_match_rise1_r; + reg [DRAM_WIDTH-1:0] idel_pat0_match_fall1_r; + reg [DRAM_WIDTH-1:0] idel_pat0_match_rise2_r; + reg [DRAM_WIDTH-1:0] idel_pat0_match_fall2_r; + reg [DRAM_WIDTH-1:0] idel_pat0_match_rise3_r; + reg [DRAM_WIDTH-1:0] idel_pat0_match_fall3_r; + + reg [DRAM_WIDTH-1:0] idel_pat1_match_rise0_r; + reg [DRAM_WIDTH-1:0] idel_pat1_match_fall0_r; + reg [DRAM_WIDTH-1:0] idel_pat1_match_rise1_r; + reg [DRAM_WIDTH-1:0] idel_pat1_match_fall1_r; + reg [DRAM_WIDTH-1:0] idel_pat1_match_rise2_r; + reg [DRAM_WIDTH-1:0] idel_pat1_match_fall2_r; + reg [DRAM_WIDTH-1:0] idel_pat1_match_rise3_r; + reg [DRAM_WIDTH-1:0] idel_pat1_match_fall3_r; + + reg idel_pat0_match_rise0_and_r; + reg idel_pat0_match_fall0_and_r; + reg idel_pat0_match_rise1_and_r; + reg idel_pat0_match_fall1_and_r; + reg idel_pat0_match_rise2_and_r; + reg idel_pat0_match_fall2_and_r; + reg idel_pat0_match_rise3_and_r; + reg idel_pat0_match_fall3_and_r; + + reg idel_pat1_match_rise0_and_r; + reg idel_pat1_match_fall0_and_r; + reg idel_pat1_match_rise1_and_r; + reg idel_pat1_match_fall1_and_r; + reg idel_pat1_match_rise2_and_r; + reg idel_pat1_match_fall2_and_r; + reg idel_pat1_match_rise3_and_r; + reg idel_pat1_match_fall3_and_r; + + reg idel_pat0_data_match_r; + reg idel_pat1_data_match_r; + + reg idel_pat_data_match; + reg idel_pat_data_match_r; + + reg [4:0] idel_dec_cnt; + + reg [5:0] rdlvl_dqs_tap_cnt_r [0:RANKS-1][0:DQS_WIDTH-1]; + reg [1:0] rnk_cnt_r; + reg rdlvl_rank_done_r; + + reg [3:0] done_cnt; + reg [1:0] regl_rank_cnt; + reg [DQS_CNT_WIDTH:0] regl_dqs_cnt; + reg [DQS_CNT_WIDTH:0] regl_dqs_cnt_r; + wire [DQS_CNT_WIDTH+2:0]regl_dqs_cnt_timing; + reg regl_rank_done_r; + reg rdlvl_stg1_start_r; + + reg dqs_po_dec_done_r1; + reg dqs_po_dec_done_r2; + reg fine_dly_dec_done_r1; + reg fine_dly_dec_done_r2; + reg fine_dly_dec_done_r3; + reg fine_dly_dec_done_r4; + reg [3:0] wait_cnt_r; + reg [5:0] pi_rdval_cnt; + reg pi_cnt_dec; + + reg mpr_valid_r; + reg mpr_valid_r1; + reg mpr_valid_r2; + reg mpr_rd_rise0_prev_r; + reg mpr_rd_fall0_prev_r; + reg mpr_rd_rise1_prev_r; + reg mpr_rd_fall1_prev_r; + reg mpr_rd_rise2_prev_r; + reg mpr_rd_fall2_prev_r; + reg mpr_rd_rise3_prev_r; + reg mpr_rd_fall3_prev_r; + reg mpr_rdlvl_done_r; + reg mpr_rdlvl_done_r1; + reg mpr_rdlvl_done_r2; + reg mpr_rdlvl_start_r; + reg mpr_rank_done_r; + reg [2:0] stable_idel_cnt; + reg inhibit_edge_detect_r; + reg idel_pat_detect_valid_r; + reg idel_mpr_pat_detect_r; + reg mpr_pat_detect_r; + reg mpr_dec_cpt_r; + reg idel_adj_inc; //IDELAY adjustment + wire [1:0] idelay_adj; + wire pb_detect_edge_setup; + wire pb_detect_edge; + // Debug + reg [6*DQS_WIDTH-1:0] dbg_cpt_first_edge_taps; + reg [6*DQS_WIDTH-1:0] dbg_cpt_second_edge_taps; + reg [6*DQS_WIDTH*RANKS-1:0] dbg_cpt_tap_cnt_w; + reg rdlvl_stg1_done_int; + reg rdlvl_stg1_done_int_r1, rdlvl_stg1_done_int_r2, rdlvl_stg1_done_int_r3; + reg rdlvl_last_byte_done_int; + reg rdlvl_last_byte_done_int_r1, rdlvl_last_byte_done_int_r2, rdlvl_last_byte_done_int_r3; + + + //IDELAY adjustment setting for -1 + //2'b10 : IDELAY - 1 + //2'b01 : IDELAY + 1 + //2'b00 : No IDELAY adjustment + assign idelay_adj = (IDELAY_ADJ == "ON") ? 2'b10: 2'b00; + + //*************************************************************************** + // Debug + //*************************************************************************** + + always @(*) begin + for (d = 0; d < RANKS; d = d + 1) begin + for (e = 0; e < DQS_WIDTH; e = e + 1) begin + idelay_tap_cnt_w[(5*e+5*DQS_WIDTH*d)+:5] = idelay_tap_cnt_r[d][e]; + dbg_cpt_tap_cnt_w[(6*e+6*DQS_WIDTH*d)+:6] = rdlvl_dqs_tap_cnt_r[d][e]; + end + end + end + + assign mpr_rdlvl_err = rdlvl_stg1_err & (!mpr_rdlvl_done); + assign rdlvl_err = rdlvl_stg1_err & (mpr_rdlvl_done); + + + assign dbg_phy_rdlvl[0] = rdlvl_stg1_start; + assign dbg_phy_rdlvl[1] = pat_data_match_r; + assign dbg_phy_rdlvl[2] = mux_rd_valid_r; + assign dbg_phy_rdlvl[3] = idelay_tap_limit_r; + assign dbg_phy_rdlvl[8:4] = 'b0; + assign dbg_phy_rdlvl[14:9] = cal1_state_r[5:0]; + assign dbg_phy_rdlvl[20:15] = cnt_idel_dec_cpt_r; + assign dbg_phy_rdlvl[21] = found_first_edge_r; + assign dbg_phy_rdlvl[22] = found_second_edge_r; + assign dbg_phy_rdlvl[23] = found_edge_r; + assign dbg_phy_rdlvl[24] = store_sr_r; + // [40:25] previously used for sr, old_sr shift registers. If connecting + // these signals again, don't forget to parameterize based on RD_SHIFT_LEN + assign dbg_phy_rdlvl[40:25] = 'b0; + assign dbg_phy_rdlvl[41] = sr_valid_r; + assign dbg_phy_rdlvl[42] = found_stable_eye_r; + assign dbg_phy_rdlvl[48:43] = tap_cnt_cpt_r; + assign dbg_phy_rdlvl[54:49] = first_edge_taps_r; + assign dbg_phy_rdlvl[60:55] = second_edge_taps_r; + assign dbg_phy_rdlvl[64:61] = cal1_cnt_cpt_timing_r; + assign dbg_phy_rdlvl[65] = cal1_dlyce_cpt_r; + assign dbg_phy_rdlvl[66] = cal1_dlyinc_cpt_r; + assign dbg_phy_rdlvl[67] = found_edge_r; + assign dbg_phy_rdlvl[68] = found_first_edge_r; + assign dbg_phy_rdlvl[73:69] = 'b0; + assign dbg_phy_rdlvl[74] = idel_pat_data_match; + assign dbg_phy_rdlvl[75] = idel_pat0_data_match_r; + assign dbg_phy_rdlvl[76] = idel_pat1_data_match_r; + assign dbg_phy_rdlvl[77] = pat0_data_match_r; + assign dbg_phy_rdlvl[78] = pat1_data_match_r; + assign dbg_phy_rdlvl[79+:5*DQS_WIDTH*RANKS] = idelay_tap_cnt_w; + assign dbg_phy_rdlvl[170+:8] = mux_rd_rise0_r; + assign dbg_phy_rdlvl[178+:8] = mux_rd_fall0_r; + assign dbg_phy_rdlvl[186+:8] = mux_rd_rise1_r; + assign dbg_phy_rdlvl[194+:8] = mux_rd_fall1_r; + assign dbg_phy_rdlvl[202+:8] = mux_rd_rise2_r; + assign dbg_phy_rdlvl[210+:8] = mux_rd_fall2_r; + assign dbg_phy_rdlvl[218+:8] = mux_rd_rise3_r; + assign dbg_phy_rdlvl[226+:8] = mux_rd_fall3_r; + + //*************************************************************************** + // Debug output + //*************************************************************************** + + // CPT taps + assign dbg_cpt_first_edge_cnt = dbg_cpt_first_edge_taps; + assign dbg_cpt_second_edge_cnt = dbg_cpt_second_edge_taps; + assign dbg_cpt_tap_cnt = dbg_cpt_tap_cnt_w; + assign dbg_dq_idelay_tap_cnt = idelay_tap_cnt_w; + + // Record first and second edges found during CPT calibration + + generate + always @(posedge clk) + if (rst || (rdlvl_stg1_start && ~rdlvl_stg1_start_r)) begin + dbg_cpt_first_edge_taps <= #TCQ 'b0; + dbg_cpt_second_edge_taps <= #TCQ 'b0; + end else if ((SIM_CAL_OPTION == "FAST_CAL") & (cal1_state_r1 == CAL1_CALC_IDEL)) begin + //for (ce_rnk_i = 0; ce_rnk_i < RANKS; ce_rnk_i = ce_rnk_i + 1) begin: gen_dbg_cpt_rnk + for (ce_i = 0; ce_i < DQS_WIDTH; ce_i = ce_i + 1) begin: gen_dbg_cpt_edge + if (found_first_edge_r) + dbg_cpt_first_edge_taps[(6*ce_i)+:6] + <= #TCQ first_edge_taps_r; + if (found_second_edge_r) + dbg_cpt_second_edge_taps[(6*ce_i)+:6] + <= #TCQ second_edge_taps_r; + end + //end + end else if (cal1_state_r == CAL1_CALC_IDEL) begin + // Record tap counts of first and second edge edges during + // CPT calibration for each DQS group. If neither edge has + // been found, then those taps will remain 0 + if (found_first_edge_r) + dbg_cpt_first_edge_taps[((cal1_cnt_cpt_timing <<2) + (cal1_cnt_cpt_timing <<1))+:6] + <= #TCQ first_edge_taps_r; + if (found_second_edge_r) + dbg_cpt_second_edge_taps[((cal1_cnt_cpt_timing <<2) + (cal1_cnt_cpt_timing <<1))+:6] + <= #TCQ second_edge_taps_r; + end + endgenerate + + assign rdlvl_stg1_rnk_done = rdlvl_rank_done_r;// || regl_rank_done_r; + assign mpr_rnk_done = mpr_rank_done_r; + assign mpr_rdlvl_done = ((DRAM_TYPE == "DDR3") && (OCAL_EN == "ON")) ? //&& (SIM_CAL_OPTION == "NONE") + mpr_rdlvl_done_r : 1'b1; + + //************************************************************************** + // DQS count to hard PHY during write calibration using Phaser_OUT Stage2 + // coarse delay + //************************************************************************** + assign pi_stg2_rdlvl_cnt = (((PI_DIV2_INCDEC == "TRUE") && (cal1_state_r3 == CAL1_REGL_LOAD)) || ((PI_DIV2_INCDEC == "FALSE") && (cal1_state_r == CAL1_REGL_LOAD))) ? regl_dqs_cnt_r : cal1_cnt_cpt_r; + assign rdlvl_stg1_done = (PI_DIV2_INCDEC == "TRUE") ? rdlvl_stg1_done_int_r3 : rdlvl_stg1_done_int; + assign rdlvl_last_byte_done = (PI_DIV2_INCDEC == "TRUE") ? rdlvl_last_byte_done_int_r3 : rdlvl_last_byte_done_int; + + always @ (posedge clk) begin + rdlvl_stg1_done_int_r1 <= #TCQ rdlvl_stg1_done_int; + rdlvl_stg1_done_int_r2 <= #TCQ rdlvl_stg1_done_int_r1; + rdlvl_stg1_done_int_r3 <= #TCQ rdlvl_stg1_done_int_r2; + rdlvl_last_byte_done_int_r1 <= #TCQ rdlvl_last_byte_done_int; + rdlvl_last_byte_done_int_r2 <= #TCQ rdlvl_last_byte_done_int_r1; + rdlvl_last_byte_done_int_r3 <= #TCQ rdlvl_last_byte_done_int_r2; + end + + assign idelay_ce = cal1_dq_idel_ce; + assign idelay_inc = cal1_dq_idel_inc; + + //*************************************************************************** + // Assert calib_in_common in FAST_CAL mode for IDELAY tap increments to all + // DQs simultaneously + //*************************************************************************** + + always @(posedge clk) begin + if (rst) + rdlvl_assrt_common <= #TCQ 1'b0; + else if ((SIM_CAL_OPTION == "FAST_CAL") & rdlvl_stg1_start & + !rdlvl_stg1_start_r) + rdlvl_assrt_common <= #TCQ 1'b1; + else if (!idel_pat_data_match_r & idel_pat_data_match) + rdlvl_assrt_common <= #TCQ 1'b0; + end + + //*************************************************************************** + // Data mux to route appropriate bit to calibration logic - i.e. calibration + // is done sequentially, one bit (or DQS group) at a time + //*************************************************************************** + + generate + if (nCK_PER_CLK == 4) begin: rd_data_div4_logic_clk + assign rd_data_rise0 = rd_data[DQ_WIDTH-1:0]; + assign rd_data_fall0 = rd_data[2*DQ_WIDTH-1:DQ_WIDTH]; + assign rd_data_rise1 = rd_data[3*DQ_WIDTH-1:2*DQ_WIDTH]; + assign rd_data_fall1 = rd_data[4*DQ_WIDTH-1:3*DQ_WIDTH]; + assign rd_data_rise2 = rd_data[5*DQ_WIDTH-1:4*DQ_WIDTH]; + assign rd_data_fall2 = rd_data[6*DQ_WIDTH-1:5*DQ_WIDTH]; + assign rd_data_rise3 = rd_data[7*DQ_WIDTH-1:6*DQ_WIDTH]; + assign rd_data_fall3 = rd_data[8*DQ_WIDTH-1:7*DQ_WIDTH]; + end else begin: rd_data_div2_logic_clk + assign rd_data_rise0 = rd_data[DQ_WIDTH-1:0]; + assign rd_data_fall0 = rd_data[2*DQ_WIDTH-1:DQ_WIDTH]; + assign rd_data_rise1 = rd_data[3*DQ_WIDTH-1:2*DQ_WIDTH]; + assign rd_data_fall1 = rd_data[4*DQ_WIDTH-1:3*DQ_WIDTH]; + end + endgenerate + + always @(posedge clk) begin + rd_mux_sel_r <= #TCQ cal1_cnt_cpt_r; + end + + // Register outputs for improved timing. + // NOTE: Will need to change when per-bit DQ deskew is supported. + // Currenly all bits in DQS group are checked in aggregate + generate + genvar mux_i; + for (mux_i = 0; mux_i < DRAM_WIDTH; mux_i = mux_i + 1) begin: gen_mux_rd + always @(posedge clk) begin + mux_rd_rise0_r[mux_i] <= #TCQ rd_data_rise0[DRAM_WIDTH*rd_mux_sel_r + + mux_i]; + mux_rd_fall0_r[mux_i] <= #TCQ rd_data_fall0[DRAM_WIDTH*rd_mux_sel_r + + mux_i]; + mux_rd_rise1_r[mux_i] <= #TCQ rd_data_rise1[DRAM_WIDTH*rd_mux_sel_r + + mux_i]; + mux_rd_fall1_r[mux_i] <= #TCQ rd_data_fall1[DRAM_WIDTH*rd_mux_sel_r + + mux_i]; + mux_rd_rise2_r[mux_i] <= #TCQ rd_data_rise2[DRAM_WIDTH*rd_mux_sel_r + + mux_i]; + mux_rd_fall2_r[mux_i] <= #TCQ rd_data_fall2[DRAM_WIDTH*rd_mux_sel_r + + mux_i]; + mux_rd_rise3_r[mux_i] <= #TCQ rd_data_rise3[DRAM_WIDTH*rd_mux_sel_r + + mux_i]; + mux_rd_fall3_r[mux_i] <= #TCQ rd_data_fall3[DRAM_WIDTH*rd_mux_sel_r + + mux_i]; + end + end + endgenerate + + //*************************************************************************** + // MPR Read Leveling + //*************************************************************************** + + // storing the previous read data for checking later. Only bit 0 is used + // since MPR contents (01010101) are available generally on DQ[0] per + // JEDEC spec. + always @(posedge clk)begin + if ((cal1_state_r == CAL1_MPR_NEW_DQS_WAIT) || + ((cal1_state_r == CAL1_MPR_PAT_DETECT) && (idel_pat_detect_valid_r)))begin + mpr_rd_rise0_prev_r <= #TCQ mux_rd_rise0_r[0]; + mpr_rd_fall0_prev_r <= #TCQ mux_rd_fall0_r[0]; + mpr_rd_rise1_prev_r <= #TCQ mux_rd_rise1_r[0]; + mpr_rd_fall1_prev_r <= #TCQ mux_rd_fall1_r[0]; + mpr_rd_rise2_prev_r <= #TCQ mux_rd_rise2_r[0]; + mpr_rd_fall2_prev_r <= #TCQ mux_rd_fall2_r[0]; + mpr_rd_rise3_prev_r <= #TCQ mux_rd_rise3_r[0]; + mpr_rd_fall3_prev_r <= #TCQ mux_rd_fall3_r[0]; + end + end + + generate + if (nCK_PER_CLK == 4) begin: mpr_4to1 + // changed stable count of 2 IDELAY taps at 78 ps resolution + always @(posedge clk) begin + if (rst | (cal1_state_r == CAL1_NEW_DQS_PREWAIT) | + //(cal1_state_r == CAL1_DETECT_EDGE) | + (mpr_rd_rise0_prev_r != mux_rd_rise0_r[0]) | + (mpr_rd_fall0_prev_r != mux_rd_fall0_r[0]) | + (mpr_rd_rise1_prev_r != mux_rd_rise1_r[0]) | + (mpr_rd_fall1_prev_r != mux_rd_fall1_r[0]) | + (mpr_rd_rise2_prev_r != mux_rd_rise2_r[0]) | + (mpr_rd_fall2_prev_r != mux_rd_fall2_r[0]) | + (mpr_rd_rise3_prev_r != mux_rd_rise3_r[0]) | + (mpr_rd_fall3_prev_r != mux_rd_fall3_r[0])) + stable_idel_cnt <= #TCQ 3'd0; + else if ((|idelay_tap_cnt_r[rnk_cnt_r][cal1_cnt_cpt_timing]) & + ((cal1_state_r == CAL1_MPR_PAT_DETECT) & + (idel_pat_detect_valid_r))) begin + if ((mpr_rd_rise0_prev_r == mux_rd_rise0_r[0]) & + (mpr_rd_fall0_prev_r == mux_rd_fall0_r[0]) & + (mpr_rd_rise1_prev_r == mux_rd_rise1_r[0]) & + (mpr_rd_fall1_prev_r == mux_rd_fall1_r[0]) & + (mpr_rd_rise2_prev_r == mux_rd_rise2_r[0]) & + (mpr_rd_fall2_prev_r == mux_rd_fall2_r[0]) & + (mpr_rd_rise3_prev_r == mux_rd_rise3_r[0]) & + (mpr_rd_fall3_prev_r == mux_rd_fall3_r[0]) & + (stable_idel_cnt < 3'd2)) + stable_idel_cnt <= #TCQ stable_idel_cnt + 1; + end + end + + always @(posedge clk) begin + if (rst | + (mpr_rd_rise0_prev_r & ~mpr_rd_fall0_prev_r & + mpr_rd_rise1_prev_r & ~mpr_rd_fall1_prev_r & + mpr_rd_rise2_prev_r & ~mpr_rd_fall2_prev_r & + mpr_rd_rise3_prev_r & ~mpr_rd_fall3_prev_r)) + inhibit_edge_detect_r <= 1'b1; + // Wait for settling time after idelay tap increment before + // de-asserting inhibit_edge_detect_r + else if ((cal1_state_r == CAL1_MPR_PAT_DETECT) & + (idelay_tap_cnt_r[rnk_cnt_r][cal1_cnt_cpt_timing] > 5'd1) & + (~mpr_rd_rise0_prev_r & mpr_rd_fall0_prev_r & + ~mpr_rd_rise1_prev_r & mpr_rd_fall1_prev_r & + ~mpr_rd_rise2_prev_r & mpr_rd_fall2_prev_r & + ~mpr_rd_rise3_prev_r & mpr_rd_fall3_prev_r)) + inhibit_edge_detect_r <= 1'b0; + end + + //checking for transition from 01010101 to 10101010 + always @(posedge clk)begin + if (rst | (cal1_state_r == CAL1_MPR_NEW_DQS_WAIT) | + inhibit_edge_detect_r) + idel_mpr_pat_detect_r <= #TCQ 1'b0; + // 10101010 is not the correct pattern + else if ((mpr_rd_rise0_prev_r & ~mpr_rd_fall0_prev_r & + mpr_rd_rise1_prev_r & ~mpr_rd_fall1_prev_r & + mpr_rd_rise2_prev_r & ~mpr_rd_fall2_prev_r & + mpr_rd_rise3_prev_r & ~mpr_rd_fall3_prev_r) || + ((stable_idel_cnt < 3'd2) & (cal1_state_r == CAL1_MPR_PAT_DETECT) + && (idel_pat_detect_valid_r))) + //|| (idelay_tap_cnt_r[rnk_cnt_r][cal1_cnt_cpt_timing] < 5'd2)) + idel_mpr_pat_detect_r <= #TCQ 1'b0; + // 01010101 to 10101010 is the correct transition + else if ((~mpr_rd_rise0_prev_r & mpr_rd_fall0_prev_r & + ~mpr_rd_rise1_prev_r & mpr_rd_fall1_prev_r & + ~mpr_rd_rise2_prev_r & mpr_rd_fall2_prev_r & + ~mpr_rd_rise3_prev_r & mpr_rd_fall3_prev_r) & + (stable_idel_cnt == 3'd2) & + ((mpr_rd_rise0_prev_r != mux_rd_rise0_r[0]) || + (mpr_rd_fall0_prev_r != mux_rd_fall0_r[0]) || + (mpr_rd_rise1_prev_r != mux_rd_rise1_r[0]) || + (mpr_rd_fall1_prev_r != mux_rd_fall1_r[0]) || + (mpr_rd_rise2_prev_r != mux_rd_rise2_r[0]) || + (mpr_rd_fall2_prev_r != mux_rd_fall2_r[0]) || + (mpr_rd_rise3_prev_r != mux_rd_rise3_r[0]) || + (mpr_rd_fall3_prev_r != mux_rd_fall3_r[0]))) + idel_mpr_pat_detect_r <= #TCQ 1'b1; + end + end else if (nCK_PER_CLK == 2) begin: mpr_2to1 + // changed stable count of 2 IDELAY taps at 78 ps resolution + always @(posedge clk) begin + if (rst | (cal1_state_r == CAL1_MPR_NEW_DQS_WAIT) | + (mpr_rd_rise0_prev_r != mux_rd_rise0_r[0]) | + (mpr_rd_fall0_prev_r != mux_rd_fall0_r[0]) | + (mpr_rd_rise1_prev_r != mux_rd_rise1_r[0]) | + (mpr_rd_fall1_prev_r != mux_rd_fall1_r[0])) + stable_idel_cnt <= #TCQ 3'd0; + else if ((idelay_tap_cnt_r[rnk_cnt_r][cal1_cnt_cpt_timing] > 5'd0) & + ((cal1_state_r == CAL1_MPR_PAT_DETECT) & + (idel_pat_detect_valid_r))) begin + if ((mpr_rd_rise0_prev_r == mux_rd_rise0_r[0]) & + (mpr_rd_fall0_prev_r == mux_rd_fall0_r[0]) & + (mpr_rd_rise1_prev_r == mux_rd_rise1_r[0]) & + (mpr_rd_fall1_prev_r == mux_rd_fall1_r[0]) & + (stable_idel_cnt < 3'd2)) + stable_idel_cnt <= #TCQ stable_idel_cnt + 1; + end + end + + always @(posedge clk) begin + if (rst | + (mpr_rd_rise0_prev_r & ~mpr_rd_fall0_prev_r & + mpr_rd_rise1_prev_r & ~mpr_rd_fall1_prev_r)) + inhibit_edge_detect_r <= 1'b1; + else if ((cal1_state_r == CAL1_MPR_PAT_DETECT) & + (idelay_tap_cnt_r[rnk_cnt_r][cal1_cnt_cpt_timing] > 5'd1) & + (~mpr_rd_rise0_prev_r & mpr_rd_fall0_prev_r & + ~mpr_rd_rise1_prev_r & mpr_rd_fall1_prev_r)) + inhibit_edge_detect_r <= 1'b0; + end + + //checking for transition from 01010101 to 10101010 + always @(posedge clk)begin + if (rst | (cal1_state_r == CAL1_MPR_NEW_DQS_WAIT) | + inhibit_edge_detect_r) + idel_mpr_pat_detect_r <= #TCQ 1'b0; + // 1010 is not the correct pattern + else if ((mpr_rd_rise0_prev_r & ~mpr_rd_fall0_prev_r & + mpr_rd_rise1_prev_r & ~mpr_rd_fall1_prev_r) || + ((stable_idel_cnt < 3'd2) & (cal1_state_r == CAL1_MPR_PAT_DETECT) + & (idel_pat_detect_valid_r))) + // ||(idelay_tap_cnt_r[rnk_cnt_r][cal1_cnt_cpt_timing] < 5'd2)) + idel_mpr_pat_detect_r <= #TCQ 1'b0; + // 0101 to 1010 is the correct transition + else if ((~mpr_rd_rise0_prev_r & mpr_rd_fall0_prev_r & + ~mpr_rd_rise1_prev_r & mpr_rd_fall1_prev_r) & + (stable_idel_cnt == 3'd2) & + ((mpr_rd_rise0_prev_r != mux_rd_rise0_r[0]) || + (mpr_rd_fall0_prev_r != mux_rd_fall0_r[0]) || + (mpr_rd_rise1_prev_r != mux_rd_rise1_r[0]) || + (mpr_rd_fall1_prev_r != mux_rd_fall1_r[0]))) + idel_mpr_pat_detect_r <= #TCQ 1'b1; + end + end + endgenerate + + + + // Registered signal indicates when mux_rd_rise/fall_r is valid + always @(posedge clk) + mux_rd_valid_r <= #TCQ ~phy_if_empty; + + + //*************************************************************************** + // Decrement initial Phaser_IN fine delay value before proceeding with + // read calibration + //*************************************************************************** + + always @(posedge clk) begin + dqs_po_dec_done_r1 <= #TCQ dqs_po_dec_done; + dqs_po_dec_done_r2 <= #TCQ dqs_po_dec_done_r1; + fine_dly_dec_done_r2 <= #TCQ fine_dly_dec_done_r1; + fine_dly_dec_done_r3 <= #TCQ fine_dly_dec_done_r2; + fine_dly_dec_done_r4 <= #TCQ fine_dly_dec_done_r3; + if (PI_DIV2_INCDEC == "TRUE") + pi_fine_dly_dec_done <= #TCQ fine_dly_dec_done_r4; + else + pi_fine_dly_dec_done <= #TCQ fine_dly_dec_done_r2; + end + + always @(posedge clk) begin + if (rst || pi_cnt_dec) + wait_cnt_r <= #TCQ 'd8; + else if (dqs_po_dec_done_r2 && (wait_cnt_r > 'd0)) + wait_cnt_r <= #TCQ wait_cnt_r - 1; + end + + always @(posedge clk) begin + if (rst) begin + pi_rdval_cnt <= #TCQ 'd0; + end else if (dqs_po_dec_done_r1 && ~dqs_po_dec_done_r2) begin + pi_rdval_cnt <= #TCQ pi_counter_read_val; + end else if (pi_rdval_cnt > 'd0) begin + if (pi_cnt_dec) + pi_rdval_cnt <= #TCQ pi_rdval_cnt - 1; + else + pi_rdval_cnt <= #TCQ pi_rdval_cnt; + end else if (pi_rdval_cnt == 'd0) begin + pi_rdval_cnt <= #TCQ pi_rdval_cnt; + end + end + + always @(posedge clk) begin + if (rst || (pi_rdval_cnt == 'd0)) + pi_cnt_dec <= #TCQ 1'b0; + else if (dqs_po_dec_done_r2 && (pi_rdval_cnt > 'd0) + && (wait_cnt_r == 'd1)) + pi_cnt_dec <= #TCQ 1'b1; + else + pi_cnt_dec <= #TCQ 1'b0; + end + + always @(posedge clk) begin + if (rst) begin + fine_dly_dec_done_r1 <= #TCQ 1'b0; + end else if (((pi_cnt_dec == 'd1) && (pi_rdval_cnt == 'd1)) || + (dqs_po_dec_done_r2 && (pi_rdval_cnt == 'd0))) begin + fine_dly_dec_done_r1 <= #TCQ 1'b1; + end + end + + //*************************************************************************** + // Demultiplexor to control Phaser_IN delay values + //*************************************************************************** + + // Read DQS + always @(posedge clk) begin + if (rst) begin + pi_en_stg2_f_timing <= #TCQ 'b0; + pi_stg2_f_incdec_timing <= #TCQ 'b0; + end else if (pi_cnt_dec) begin + pi_en_stg2_f_timing <= #TCQ 'b1; + pi_stg2_f_incdec_timing <= #TCQ 'b0; + end else if (cal1_dlyce_cpt_r) begin + if ((SIM_CAL_OPTION == "NONE") || + (SIM_CAL_OPTION == "FAST_WIN_DETECT")) begin + // Change only specified DQS + pi_en_stg2_f_timing <= #TCQ 1'b1; + pi_stg2_f_incdec_timing <= #TCQ cal1_dlyinc_cpt_r; + end else if (SIM_CAL_OPTION == "FAST_CAL") begin + // if simulating, and "shortcuts" for calibration enabled, apply + // results to all DQSs (i.e. assume same delay on all + // DQSs). + pi_en_stg2_f_timing <= #TCQ 1'b1; + pi_stg2_f_incdec_timing <= #TCQ cal1_dlyinc_cpt_r; + end + end else begin + pi_en_stg2_f_timing <= #TCQ 'b0; + pi_stg2_f_incdec_timing <= #TCQ 'b0; + end + end + + // registered for timing + always @(posedge clk) begin + pi_en_stg2_f <= #TCQ pi_en_stg2_f_timing; + pi_stg2_f_incdec <= #TCQ pi_stg2_f_incdec_timing; + end + + // This counter used to implement settling time between + // Phaser_IN rank register loads to different DQSs + always @(posedge clk) begin + if (rst) + done_cnt <= #TCQ 'b0; + else if (((cal1_state_r == CAL1_REGL_LOAD) && + (cal1_state_r1 == CAL1_NEXT_DQS)) || + ((done_cnt == 4'd1) && (cal1_state_r != CAL1_DONE))) + done_cnt <= #TCQ 4'b1010; + else if (done_cnt > 'b0) + done_cnt <= #TCQ done_cnt - 1; + end + + // During rank register loading the rank count must be sent to + // Phaser_IN via the phy_ctl_wd?? If so phy_init will have to + // issue NOPs during rank register loading with the appropriate + // rank count + always @(posedge clk) begin + if (rst || (regl_rank_done_r == 1'b1)) + regl_rank_done_r <= #TCQ 1'b0; + else if ((regl_dqs_cnt == DQS_WIDTH-1) && + (regl_rank_cnt != RANKS-1) && + (done_cnt == 4'd1)) + regl_rank_done_r <= #TCQ 1'b1; + end + + // Temp wire for timing. + // The following in the always block below causes timing issues + // due to DSP block inference + // 6*regl_dqs_cnt. + // replacing this with two left shifts + 1 left shift to avoid + // DSP multiplier. + assign regl_dqs_cnt_timing = {2'd0, regl_dqs_cnt}; + + // Load Phaser_OUT rank register with rdlvl delay value + // for each DQS per rank. + always @(posedge clk) begin + if (rst || (done_cnt == 4'd0)) begin + pi_stg2_load_timing <= #TCQ 'b0; + pi_stg2_reg_l_timing <= #TCQ 'b0; + end else if ((cal1_state_r == CAL1_REGL_LOAD) && + (regl_dqs_cnt <= DQS_WIDTH-1) && (done_cnt == 4'd1)) begin + pi_stg2_load_timing <= #TCQ 'b1; + pi_stg2_reg_l_timing <= #TCQ + rdlvl_dqs_tap_cnt_r[rnk_cnt_r][regl_dqs_cnt]; + end else begin + pi_stg2_load_timing <= #TCQ 'b0; + pi_stg2_reg_l_timing <= #TCQ 'b0; + end + end + + // registered for timing + always @(posedge clk) begin + pi_stg2_load <= #TCQ pi_stg2_load_timing; + pi_stg2_reg_l <= #TCQ pi_stg2_reg_l_timing; + end + + always @(posedge clk) begin + if (rst || (done_cnt == 4'd0) || + (mpr_rdlvl_done_r1 && ~mpr_rdlvl_done_r2)) + regl_rank_cnt <= #TCQ 2'b00; + else if ((cal1_state_r == CAL1_REGL_LOAD) && + (regl_dqs_cnt == DQS_WIDTH-1) && (done_cnt == 4'd1)) begin + if (regl_rank_cnt == RANKS-1) + regl_rank_cnt <= #TCQ regl_rank_cnt; + else + regl_rank_cnt <= #TCQ regl_rank_cnt + 1; + end + end + + always @(posedge clk) begin + if (rst || (done_cnt == 4'd0) || + (mpr_rdlvl_done_r1 && ~mpr_rdlvl_done_r2)) + regl_dqs_cnt <= #TCQ {DQS_CNT_WIDTH+1{1'b0}}; + else if ((cal1_state_r == CAL1_REGL_LOAD) && + (regl_dqs_cnt == DQS_WIDTH-1) && (done_cnt == 4'd1)) begin + if (regl_rank_cnt == RANKS-1) + regl_dqs_cnt <= #TCQ regl_dqs_cnt; + else + regl_dqs_cnt <= #TCQ 'b0; + end else if ((cal1_state_r == CAL1_REGL_LOAD) && (regl_dqs_cnt != DQS_WIDTH-1) + && (done_cnt == 4'd1)) + regl_dqs_cnt <= #TCQ regl_dqs_cnt + 1; + else + regl_dqs_cnt <= #TCQ regl_dqs_cnt; + end + + + always @(posedge clk) + regl_dqs_cnt_r <= #TCQ regl_dqs_cnt; + //***************************************************************** + // DQ Stage 1 CALIBRATION INCREMENT/DECREMENT LOGIC: + // The actual IDELAY elements for each of the DQ bits is set via the + // DLYVAL parallel load port. However, the stage 1 calibration + // algorithm (well most of it) only needs to increment or decrement the DQ + // IDELAY value by 1 at any one time. + //***************************************************************** + + // Chip-select generation for each of the individual counters tracking + // IDELAY tap values for each DQ + generate + for (z = 0; z < DQS_WIDTH; z = z + 1) begin: gen_dlyce_dq + always @(posedge clk) + if (rst) + dlyce_dq_r[DRAM_WIDTH*z+:DRAM_WIDTH] <= #TCQ 'b0; + else + if (SIM_CAL_OPTION == "SKIP_CAL") + // If skipping calibration altogether (only for simulation), no + // need to set DQ IODELAY values - they are hardcoded + dlyce_dq_r[DRAM_WIDTH*z+:DRAM_WIDTH] <= #TCQ 'b0; + else if (SIM_CAL_OPTION == "FAST_CAL") begin + // If fast calibration option (simulation only) selected, DQ + // IODELAYs across all bytes are updated simultaneously + // (although per-bit deskew within DQS[0] is still supported) + for (h = 0; h < DRAM_WIDTH; h = h + 1) begin + dlyce_dq_r[DRAM_WIDTH*z + h] <= #TCQ cal1_dlyce_dq_r; + end + end else if ((SIM_CAL_OPTION == "NONE") || + (SIM_CAL_OPTION == "FAST_WIN_DETECT")) begin + if (cal1_cnt_cpt_r == z) begin + for (g = 0; g < DRAM_WIDTH; g = g + 1) begin + dlyce_dq_r[DRAM_WIDTH*z + g] + <= #TCQ cal1_dlyce_dq_r; + end + end else + dlyce_dq_r[DRAM_WIDTH*z+:DRAM_WIDTH] <= #TCQ 'b0; + end + end + endgenerate + + // Also delay increment/decrement control to match delay on DLYCE + always @(posedge clk) + if (rst) + dlyinc_dq_r <= #TCQ 1'b0; + else + dlyinc_dq_r <= #TCQ cal1_dlyinc_dq_r; + + + // Each DQ has a counter associated with it to record current read-leveling + // delay value + always @(posedge clk) + // Reset or skipping calibration all together + if (rst | (SIM_CAL_OPTION == "SKIP_CAL")) begin + for (aa = 0; aa < RANKS; aa = aa + 1) begin: rst_dlyval_dq_reg_r + for (bb = 0; bb < DQ_WIDTH; bb = bb + 1) + dlyval_dq_reg_r[aa][bb] <= #TCQ 'b0; + end + end else if (SIM_CAL_OPTION == "FAST_CAL") begin + for (n = 0; n < RANKS; n = n + 1) begin: gen_dlyval_dq_reg_rnk + for (r = 0; r < DQ_WIDTH; r = r + 1) begin: gen_dlyval_dq_reg + if (dlyce_dq_r[r]) begin + if (dlyinc_dq_r) + dlyval_dq_reg_r[n][r] <= #TCQ dlyval_dq_reg_r[n][r] + 5'h01; + else + dlyval_dq_reg_r[n][r] <= #TCQ dlyval_dq_reg_r[n][r] - 5'h01; + end + end + end + end else begin + if (dlyce_dq_r[cal1_cnt_cpt_r]) begin + if (dlyinc_dq_r) + dlyval_dq_reg_r[rnk_cnt_r][cal1_cnt_cpt_r] <= #TCQ + dlyval_dq_reg_r[rnk_cnt_r][cal1_cnt_cpt_r] + 5'h01; + else + dlyval_dq_reg_r[rnk_cnt_r][cal1_cnt_cpt_r] <= #TCQ + dlyval_dq_reg_r[rnk_cnt_r][cal1_cnt_cpt_r] - 5'h01; + end + end + + // Register for timing (help with logic placement) + always @(posedge clk) begin + for (cc = 0; cc < RANKS; cc = cc + 1) begin: dlyval_dq_assgn + for (dd = 0; dd < DQ_WIDTH; dd = dd + 1) + dlyval_dq[((5*dd)+(cc*DQ_WIDTH*5))+:5] <= #TCQ dlyval_dq_reg_r[cc][dd]; + end + end + + //*************************************************************************** + // Generate signal used to delay calibration state machine - used when: + // (1) IDELAY value changed + // (2) RD_MUX_SEL value changed + // Use when a delay is necessary to give the change time to propagate + // through the data pipeline (through IDELAY and ISERDES, and fabric + // pipeline stages) + //*************************************************************************** + + + // List all the stage 1 calibration wait states here. + // verilint STARC-2.7.3.3b off + always @(posedge clk) + if ((cal1_state_r == CAL1_NEW_DQS_WAIT) || + (cal1_state_r == CAL1_MPR_NEW_DQS_WAIT) || + (cal1_state_r == CAL1_NEW_DQS_PREWAIT) || + (cal1_state_r == CAL1_VALID_WAIT) || + (cal1_state_r == CAL1_PB_STORE_FIRST_WAIT) || + (cal1_state_r == CAL1_PB_INC_CPT_WAIT) || + (cal1_state_r == CAL1_PB_DEC_CPT_LEFT_WAIT) || + (cal1_state_r == CAL1_PB_INC_DQ_WAIT) || + (cal1_state_r == CAL1_PB_DEC_CPT_WAIT) || + (cal1_state_r == CAL1_IDEL_INC_CPT_WAIT) || + (cal1_state_r == CAL1_IDEL_DEC_CPT_WAIT) || + (cal1_state_r == CAL1_STORE_FIRST_WAIT) || + (cal1_state_r == CAL1_DQ_IDEL_TAP_INC_WAIT) || + (cal1_state_r == CAL1_DQ_IDEL_TAP_DEC_WAIT) || + (cal1_state_r == CAL1_CENTER_WAIT) || + (cal1_state_r == CAL1_RD_STOP_FOR_PI_INC)) + cal1_wait_cnt_en_r <= #TCQ 1'b1; + else + cal1_wait_cnt_en_r <= #TCQ 1'b0; +// verilint STARC-2.7.3.3b on + always @(posedge clk) + if (!cal1_wait_cnt_en_r) begin + cal1_wait_cnt_r <= #TCQ 5'b00000; + cal1_wait_r <= #TCQ 1'b1; + end else begin + if (cal1_wait_cnt_r != PIPE_WAIT_CNT - 1) begin + cal1_wait_cnt_r <= #TCQ cal1_wait_cnt_r + 1; + cal1_wait_r <= #TCQ 1'b1; + end else begin + // Need to reset to 0 to handle the case when there are two + // different WAIT states back-to-back + cal1_wait_cnt_r <= #TCQ 5'b00000; + cal1_wait_r <= #TCQ 1'b0; + end + end + + //*************************************************************************** + // generate request to PHY_INIT logic to issue precharged. Required when + // calibration can take a long time (during which there are only constant + // reads present on this bus). In this case need to issue perioidic + // precharges to avoid tRAS violation. This signal must meet the following + // requirements: (1) only transition from 0->1 when prech is first needed, + // (2) stay at 1 and only transition 1->0 when RDLVL_PRECH_DONE asserted + //*************************************************************************** + + always @(posedge clk) + if (rst) + rdlvl_prech_req <= #TCQ 1'b0; + else + rdlvl_prech_req <= #TCQ cal1_prech_req_r; + + //*************************************************************************** + // Serial-to-parallel register to store last RDDATA_SHIFT_LEN cycles of + // data from ISERDES. The value of this register is also stored, so that + // previous and current values of the ISERDES data can be compared while + // varying the IODELAY taps to see if an "edge" of the data valid window + // has been encountered since the last IODELAY tap adjustment + //*************************************************************************** + + //*************************************************************************** + // Shift register to store last RDDATA_SHIFT_LEN cycles of data from ISERDES + // NOTE: Written using discrete flops, but SRL can be used if the matching + // logic does the comparison sequentially, rather than parallel + //*************************************************************************** + + generate + genvar rd_i; + if (nCK_PER_CLK == 4) begin: gen_sr_div4 + if (RD_SHIFT_LEN == 1) begin: gen_sr_len_eq1 + for (rd_i = 0; rd_i < DRAM_WIDTH; rd_i = rd_i + 1) begin: gen_sr + always @(posedge clk) begin + if (mux_rd_valid_r) begin + sr_rise0_r[rd_i] <= #TCQ mux_rd_rise0_r[rd_i]; + sr_fall0_r[rd_i] <= #TCQ mux_rd_fall0_r[rd_i]; + sr_rise1_r[rd_i] <= #TCQ mux_rd_rise1_r[rd_i]; + sr_fall1_r[rd_i] <= #TCQ mux_rd_fall1_r[rd_i]; + sr_rise2_r[rd_i] <= #TCQ mux_rd_rise2_r[rd_i]; + sr_fall2_r[rd_i] <= #TCQ mux_rd_fall2_r[rd_i]; + sr_rise3_r[rd_i] <= #TCQ mux_rd_rise3_r[rd_i]; + sr_fall3_r[rd_i] <= #TCQ mux_rd_fall3_r[rd_i]; + end + end + end + end else if (RD_SHIFT_LEN > 1) begin: gen_sr_len_gt1 + for (rd_i = 0; rd_i < DRAM_WIDTH; rd_i = rd_i + 1) begin: gen_sr + always @(posedge clk) begin + if (mux_rd_valid_r) begin + sr_rise0_r[rd_i] <= #TCQ {sr_rise0_r[rd_i][RD_SHIFT_LEN-2:0], + mux_rd_rise0_r[rd_i]}; + sr_fall0_r[rd_i] <= #TCQ {sr_fall0_r[rd_i][RD_SHIFT_LEN-2:0], + mux_rd_fall0_r[rd_i]}; + sr_rise1_r[rd_i] <= #TCQ {sr_rise1_r[rd_i][RD_SHIFT_LEN-2:0], + mux_rd_rise1_r[rd_i]}; + sr_fall1_r[rd_i] <= #TCQ {sr_fall1_r[rd_i][RD_SHIFT_LEN-2:0], + mux_rd_fall1_r[rd_i]}; + sr_rise2_r[rd_i] <= #TCQ {sr_rise2_r[rd_i][RD_SHIFT_LEN-2:0], + mux_rd_rise2_r[rd_i]}; + sr_fall2_r[rd_i] <= #TCQ {sr_fall2_r[rd_i][RD_SHIFT_LEN-2:0], + mux_rd_fall2_r[rd_i]}; + sr_rise3_r[rd_i] <= #TCQ {sr_rise3_r[rd_i][RD_SHIFT_LEN-2:0], + mux_rd_rise3_r[rd_i]}; + sr_fall3_r[rd_i] <= #TCQ {sr_fall3_r[rd_i][RD_SHIFT_LEN-2:0], + mux_rd_fall3_r[rd_i]}; + end + end + end + end + end else if (nCK_PER_CLK == 2) begin: gen_sr_div2 + if (RD_SHIFT_LEN == 1) begin: gen_sr_len_eq1 + for (rd_i = 0; rd_i < DRAM_WIDTH; rd_i = rd_i + 1) begin: gen_sr + always @(posedge clk) begin + if (mux_rd_valid_r) begin + sr_rise0_r[rd_i] <= #TCQ {mux_rd_rise0_r[rd_i]}; + sr_fall0_r[rd_i] <= #TCQ {mux_rd_fall0_r[rd_i]}; + sr_rise1_r[rd_i] <= #TCQ {mux_rd_rise1_r[rd_i]}; + sr_fall1_r[rd_i] <= #TCQ {mux_rd_fall1_r[rd_i]}; + end + end + end + end else if (RD_SHIFT_LEN > 1) begin: gen_sr_len_gt1 + for (rd_i = 0; rd_i < DRAM_WIDTH; rd_i = rd_i + 1) begin: gen_sr + always @(posedge clk) begin + if (mux_rd_valid_r) begin + sr_rise0_r[rd_i] <= #TCQ {sr_rise0_r[rd_i][RD_SHIFT_LEN-2:0], + mux_rd_rise0_r[rd_i]}; + sr_fall0_r[rd_i] <= #TCQ {sr_fall0_r[rd_i][RD_SHIFT_LEN-2:0], + mux_rd_fall0_r[rd_i]}; + sr_rise1_r[rd_i] <= #TCQ {sr_rise1_r[rd_i][RD_SHIFT_LEN-2:0], + mux_rd_rise1_r[rd_i]}; + sr_fall1_r[rd_i] <= #TCQ {sr_fall1_r[rd_i][RD_SHIFT_LEN-2:0], + mux_rd_fall1_r[rd_i]}; + end + end + end + end + end + endgenerate + + //*************************************************************************** + // Conversion to pattern calibration + //*************************************************************************** + + // Pattern for DQ IDELAY calibration + + //***************************************************************** + // Expected data pattern when DQ shifted to the right such that + // DQS before the left edge of the DVW: + // Based on pattern of ({rise,fall}) = + // 0x1, 0xB, 0x4, 0x4, 0xB, 0x9 + // Each nibble will look like: + // bit3: 0, 1, 0, 0, 1, 1 + // bit2: 0, 0, 1, 1, 0, 0 + // bit1: 0, 1, 0, 0, 1, 0 + // bit0: 1, 1, 0, 0, 1, 1 + // Or if the write is early it could look like: + // 0x4, 0x4, 0xB, 0x9, 0x6, 0xE + // bit3: 0, 0, 1, 1, 0, 1 + // bit2: 1, 1, 0, 0, 1, 1 + // bit1: 0, 0, 1, 0, 1, 1 + // bit0: 0, 0, 1, 1, 0, 0 + // Change the hard-coded pattern below accordingly as RD_SHIFT_LEN + // and the actual training pattern contents change + //***************************************************************** + + generate + if (nCK_PER_CLK == 4) begin: gen_pat_div4 + // Pattern for DQ IDELAY increment + + // Target pattern for "early write" + assign {idel_pat0_rise0[3], idel_pat0_rise0[2], + idel_pat0_rise0[1], idel_pat0_rise0[0]} = 4'h1; + assign {idel_pat0_fall0[3], idel_pat0_fall0[2], + idel_pat0_fall0[1], idel_pat0_fall0[0]} = 4'h7; + assign {idel_pat0_rise1[3], idel_pat0_rise1[2], + idel_pat0_rise1[1], idel_pat0_rise1[0]} = 4'hE; + assign {idel_pat0_fall1[3], idel_pat0_fall1[2], + idel_pat0_fall1[1], idel_pat0_fall1[0]} = 4'hC; + assign {idel_pat0_rise2[3], idel_pat0_rise2[2], + idel_pat0_rise2[1], idel_pat0_rise2[0]} = 4'h9; + assign {idel_pat0_fall2[3], idel_pat0_fall2[2], + idel_pat0_fall2[1], idel_pat0_fall2[0]} = 4'h2; + assign {idel_pat0_rise3[3], idel_pat0_rise3[2], + idel_pat0_rise3[1], idel_pat0_rise3[0]} = 4'h4; + assign {idel_pat0_fall3[3], idel_pat0_fall3[2], + idel_pat0_fall3[1], idel_pat0_fall3[0]} = 4'hB; + + // Target pattern for "on-time write" + assign {idel_pat1_rise0[3], idel_pat1_rise0[2], + idel_pat1_rise0[1], idel_pat1_rise0[0]} = 4'h4; + assign {idel_pat1_fall0[3], idel_pat1_fall0[2], + idel_pat1_fall0[1], idel_pat1_fall0[0]} = 4'h9; + assign {idel_pat1_rise1[3], idel_pat1_rise1[2], + idel_pat1_rise1[1], idel_pat1_rise1[0]} = 4'h3; + assign {idel_pat1_fall1[3], idel_pat1_fall1[2], + idel_pat1_fall1[1], idel_pat1_fall1[0]} = 4'h7; + assign {idel_pat1_rise2[3], idel_pat1_rise2[2], + idel_pat1_rise2[1], idel_pat1_rise2[0]} = 4'hE; + assign {idel_pat1_fall2[3], idel_pat1_fall2[2], + idel_pat1_fall2[1], idel_pat1_fall2[0]} = 4'hC; + assign {idel_pat1_rise3[3], idel_pat1_rise3[2], + idel_pat1_rise3[1], idel_pat1_rise3[0]} = 4'h9; + assign {idel_pat1_fall3[3], idel_pat1_fall3[2], + idel_pat1_fall3[1], idel_pat1_fall3[0]} = 4'h2; + + + // Correct data valid window for "early write" + assign {pat0_rise0[3], pat0_rise0[2], + pat0_rise0[1], pat0_rise0[0]} = 4'h7; + assign {pat0_fall0[3], pat0_fall0[2], + pat0_fall0[1], pat0_fall0[0]} = 4'hE; + assign {pat0_rise1[3], pat0_rise1[2], + pat0_rise1[1], pat0_rise1[0]} = 4'hC; + assign {pat0_fall1[3], pat0_fall1[2], + pat0_fall1[1], pat0_fall1[0]} = 4'h9; + assign {pat0_rise2[3], pat0_rise2[2], + pat0_rise2[1], pat0_rise2[0]} = 4'h2; + assign {pat0_fall2[3], pat0_fall2[2], + pat0_fall2[1], pat0_fall2[0]} = 4'h4; + assign {pat0_rise3[3], pat0_rise3[2], + pat0_rise3[1], pat0_rise3[0]} = 4'hB; + assign {pat0_fall3[3], pat0_fall3[2], + pat0_fall3[1], pat0_fall3[0]} = 4'h1; + + // Correct data valid window for "on-time write" + assign {pat1_rise0[3], pat1_rise0[2], + pat1_rise0[1], pat1_rise0[0]} = 4'h9; + assign {pat1_fall0[3], pat1_fall0[2], + pat1_fall0[1], pat1_fall0[0]} = 4'h3; + assign {pat1_rise1[3], pat1_rise1[2], + pat1_rise1[1], pat1_rise1[0]} = 4'h7; + assign {pat1_fall1[3], pat1_fall1[2], + pat1_fall1[1], pat1_fall1[0]} = 4'hE; + assign {pat1_rise2[3], pat1_rise2[2], + pat1_rise2[1], pat1_rise2[0]} = 4'hC; + assign {pat1_fall2[3], pat1_fall2[2], + pat1_fall2[1], pat1_fall2[0]} = 4'h9; + assign {pat1_rise3[3], pat1_rise3[2], + pat1_rise3[1], pat1_rise3[0]} = 4'h2; + assign {pat1_fall3[3], pat1_fall3[2], + pat1_fall3[1], pat1_fall3[0]} = 4'h4; + + end else if (nCK_PER_CLK == 2) begin: gen_pat_div2 + + // Pattern for DQ IDELAY increment + + // Target pattern for "early write" + assign idel_pat0_rise0[3] = 2'b01; + assign idel_pat0_fall0[3] = 2'b00; + assign idel_pat0_rise1[3] = 2'b10; + assign idel_pat0_fall1[3] = 2'b11; + + assign idel_pat0_rise0[2] = 2'b00; + assign idel_pat0_fall0[2] = 2'b10; + assign idel_pat0_rise1[2] = 2'b11; + assign idel_pat0_fall1[2] = 2'b10; + + assign idel_pat0_rise0[1] = 2'b00; + assign idel_pat0_fall0[1] = 2'b11; + assign idel_pat0_rise1[1] = 2'b10; + assign idel_pat0_fall1[1] = 2'b01; + + assign idel_pat0_rise0[0] = 2'b11; + assign idel_pat0_fall0[0] = 2'b10; + assign idel_pat0_rise1[0] = 2'b00; + assign idel_pat0_fall1[0] = 2'b01; + + + // Target pattern for "on-time write" + assign idel_pat1_rise0[3] = 2'b01; + assign idel_pat1_fall0[3] = 2'b11; + assign idel_pat1_rise1[3] = 2'b01; + assign idel_pat1_fall1[3] = 2'b00; + + assign idel_pat1_rise0[2] = 2'b11; + assign idel_pat1_fall0[2] = 2'b01; + assign idel_pat1_rise1[2] = 2'b00; + assign idel_pat1_fall1[2] = 2'b10; + + assign idel_pat1_rise0[1] = 2'b01; + assign idel_pat1_fall0[1] = 2'b00; + assign idel_pat1_rise1[1] = 2'b10; + assign idel_pat1_fall1[1] = 2'b11; + + assign idel_pat1_rise0[0] = 2'b00; + assign idel_pat1_fall0[0] = 2'b10; + assign idel_pat1_rise1[0] = 2'b11; + assign idel_pat1_fall1[0] = 2'b10; + + + // Correct data valid window for "early write" + assign pat0_rise0[3] = 2'b00; + assign pat0_fall0[3] = 2'b10; + assign pat0_rise1[3] = 2'b11; + assign pat0_fall1[3] = 2'b10; + + assign pat0_rise0[2] = 2'b10; + assign pat0_fall0[2] = 2'b11; + assign pat0_rise1[2] = 2'b10; + assign pat0_fall1[2] = 2'b00; + + assign pat0_rise0[1] = 2'b11; + assign pat0_fall0[1] = 2'b10; + assign pat0_rise1[1] = 2'b01; + assign pat0_fall1[1] = 2'b00; + + assign pat0_rise0[0] = 2'b10; + assign pat0_fall0[0] = 2'b00; + assign pat0_rise1[0] = 2'b01; + assign pat0_fall1[0] = 2'b11; + + // Correct data valid window for "on-time write" + assign pat1_rise0[3] = 2'b11; + assign pat1_fall0[3] = 2'b01; + assign pat1_rise1[3] = 2'b00; + assign pat1_fall1[3] = 2'b10; + + assign pat1_rise0[2] = 2'b01; + assign pat1_fall0[2] = 2'b00; + assign pat1_rise1[2] = 2'b10; + assign pat1_fall1[2] = 2'b11; + + assign pat1_rise0[1] = 2'b00; + assign pat1_fall0[1] = 2'b10; + assign pat1_rise1[1] = 2'b11; + assign pat1_fall1[1] = 2'b10; + + assign pat1_rise0[0] = 2'b10; + assign pat1_fall0[0] = 2'b11; + assign pat1_rise1[0] = 2'b10; + assign pat1_fall1[0] = 2'b00; + end + endgenerate + + // Each bit of each byte is compared to expected pattern. + // This was done to prevent (and "drastically decrease") the chance that + // invalid data clocked in when the DQ bus is tri-state (along with a + // combination of the correct data) will resemble the expected data + // pattern. A better fix for this is to change the training pattern and/or + // make the pattern longer. + generate + genvar pt_i; + if (nCK_PER_CLK == 4) begin: gen_pat_match_div4 + for (pt_i = 0; pt_i < DRAM_WIDTH; pt_i = pt_i + 1) begin: gen_pat_match + + // DQ IDELAY pattern detection + always @(posedge clk) begin + if (sr_rise0_r[pt_i] == idel_pat0_rise0[pt_i%4]) + idel_pat0_match_rise0_r[pt_i] <= #TCQ 1'b1; + else + idel_pat0_match_rise0_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall0_r[pt_i] == idel_pat0_fall0[pt_i%4]) + idel_pat0_match_fall0_r[pt_i] <= #TCQ 1'b1; + else + idel_pat0_match_fall0_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise1_r[pt_i] == idel_pat0_rise1[pt_i%4]) + idel_pat0_match_rise1_r[pt_i] <= #TCQ 1'b1; + else + idel_pat0_match_rise1_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall1_r[pt_i] == idel_pat0_fall1[pt_i%4]) + idel_pat0_match_fall1_r[pt_i] <= #TCQ 1'b1; + else + idel_pat0_match_fall1_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise2_r[pt_i] == idel_pat0_rise2[pt_i%4]) + idel_pat0_match_rise2_r[pt_i] <= #TCQ 1'b1; + else + idel_pat0_match_rise2_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall2_r[pt_i] == idel_pat0_fall2[pt_i%4]) + idel_pat0_match_fall2_r[pt_i] <= #TCQ 1'b1; + else + idel_pat0_match_fall2_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise3_r[pt_i] == idel_pat0_rise3[pt_i%4]) + idel_pat0_match_rise3_r[pt_i] <= #TCQ 1'b1; + else + idel_pat0_match_rise3_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall3_r[pt_i] == idel_pat0_fall3[pt_i%4]) + idel_pat0_match_fall3_r[pt_i] <= #TCQ 1'b1; + else + idel_pat0_match_fall3_r[pt_i] <= #TCQ 1'b0; + end + + always @(posedge clk) begin + if (sr_rise0_r[pt_i] == idel_pat1_rise0[pt_i%4]) + idel_pat1_match_rise0_r[pt_i] <= #TCQ 1'b1; + else + idel_pat1_match_rise0_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall0_r[pt_i] == idel_pat1_fall0[pt_i%4]) + idel_pat1_match_fall0_r[pt_i] <= #TCQ 1'b1; + else + idel_pat1_match_fall0_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise1_r[pt_i] == idel_pat1_rise1[pt_i%4]) + idel_pat1_match_rise1_r[pt_i] <= #TCQ 1'b1; + else + idel_pat1_match_rise1_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall1_r[pt_i] == idel_pat1_fall1[pt_i%4]) + idel_pat1_match_fall1_r[pt_i] <= #TCQ 1'b1; + else + idel_pat1_match_fall1_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise2_r[pt_i] == idel_pat1_rise2[pt_i%4]) + idel_pat1_match_rise2_r[pt_i] <= #TCQ 1'b1; + else + idel_pat1_match_rise2_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall2_r[pt_i] == idel_pat1_fall2[pt_i%4]) + idel_pat1_match_fall2_r[pt_i] <= #TCQ 1'b1; + else + idel_pat1_match_fall2_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise3_r[pt_i] == idel_pat1_rise3[pt_i%4]) + idel_pat1_match_rise3_r[pt_i] <= #TCQ 1'b1; + else + idel_pat1_match_rise3_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall3_r[pt_i] == idel_pat1_fall3[pt_i%4]) + idel_pat1_match_fall3_r[pt_i] <= #TCQ 1'b1; + else + idel_pat1_match_fall3_r[pt_i] <= #TCQ 1'b0; + end + + // DQS DVW pattern detection + always @(posedge clk) begin + if (sr_rise0_r[pt_i] == pat0_rise0[pt_i%4]) + pat0_match_rise0_r[pt_i] <= #TCQ 1'b1; + else + pat0_match_rise0_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall0_r[pt_i] == pat0_fall0[pt_i%4]) + pat0_match_fall0_r[pt_i] <= #TCQ 1'b1; + else + pat0_match_fall0_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise1_r[pt_i] == pat0_rise1[pt_i%4]) + pat0_match_rise1_r[pt_i] <= #TCQ 1'b1; + else + pat0_match_rise1_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall1_r[pt_i] == pat0_fall1[pt_i%4]) + pat0_match_fall1_r[pt_i] <= #TCQ 1'b1; + else + pat0_match_fall1_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise2_r[pt_i] == pat0_rise2[pt_i%4]) + pat0_match_rise2_r[pt_i] <= #TCQ 1'b1; + else + pat0_match_rise2_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall2_r[pt_i] == pat0_fall2[pt_i%4]) + pat0_match_fall2_r[pt_i] <= #TCQ 1'b1; + else + pat0_match_fall2_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise3_r[pt_i] == pat0_rise3[pt_i%4]) + pat0_match_rise3_r[pt_i] <= #TCQ 1'b1; + else + pat0_match_rise3_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall3_r[pt_i] == pat0_fall3[pt_i%4]) + pat0_match_fall3_r[pt_i] <= #TCQ 1'b1; + else + pat0_match_fall3_r[pt_i] <= #TCQ 1'b0; + end + + always @(posedge clk) begin + if (sr_rise0_r[pt_i] == pat1_rise0[pt_i%4]) + pat1_match_rise0_r[pt_i] <= #TCQ 1'b1; + else + pat1_match_rise0_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall0_r[pt_i] == pat1_fall0[pt_i%4]) + pat1_match_fall0_r[pt_i] <= #TCQ 1'b1; + else + pat1_match_fall0_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise1_r[pt_i] == pat1_rise1[pt_i%4]) + pat1_match_rise1_r[pt_i] <= #TCQ 1'b1; + else + pat1_match_rise1_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall1_r[pt_i] == pat1_fall1[pt_i%4]) + pat1_match_fall1_r[pt_i] <= #TCQ 1'b1; + else + pat1_match_fall1_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise2_r[pt_i] == pat1_rise2[pt_i%4]) + pat1_match_rise2_r[pt_i] <= #TCQ 1'b1; + else + pat1_match_rise2_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall2_r[pt_i] == pat1_fall2[pt_i%4]) + pat1_match_fall2_r[pt_i] <= #TCQ 1'b1; + else + pat1_match_fall2_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise3_r[pt_i] == pat1_rise3[pt_i%4]) + pat1_match_rise3_r[pt_i] <= #TCQ 1'b1; + else + pat1_match_rise3_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall3_r[pt_i] == pat1_fall3[pt_i%4]) + pat1_match_fall3_r[pt_i] <= #TCQ 1'b1; + else + pat1_match_fall3_r[pt_i] <= #TCQ 1'b0; + end + + end + + // Combine pattern match "subterms" for DQ-IDELAY stage + always @(posedge clk) begin + idel_pat0_match_rise0_and_r <= #TCQ &idel_pat0_match_rise0_r; + idel_pat0_match_fall0_and_r <= #TCQ &idel_pat0_match_fall0_r; + idel_pat0_match_rise1_and_r <= #TCQ &idel_pat0_match_rise1_r; + idel_pat0_match_fall1_and_r <= #TCQ &idel_pat0_match_fall1_r; + idel_pat0_match_rise2_and_r <= #TCQ &idel_pat0_match_rise2_r; + idel_pat0_match_fall2_and_r <= #TCQ &idel_pat0_match_fall2_r; + idel_pat0_match_rise3_and_r <= #TCQ &idel_pat0_match_rise3_r; + idel_pat0_match_fall3_and_r <= #TCQ &idel_pat0_match_fall3_r; + idel_pat0_data_match_r <= #TCQ (idel_pat0_match_rise0_and_r && + idel_pat0_match_fall0_and_r && + idel_pat0_match_rise1_and_r && + idel_pat0_match_fall1_and_r && + idel_pat0_match_rise2_and_r && + idel_pat0_match_fall2_and_r && + idel_pat0_match_rise3_and_r && + idel_pat0_match_fall3_and_r); + end + + always @(posedge clk) begin + idel_pat1_match_rise0_and_r <= #TCQ &idel_pat1_match_rise0_r; + idel_pat1_match_fall0_and_r <= #TCQ &idel_pat1_match_fall0_r; + idel_pat1_match_rise1_and_r <= #TCQ &idel_pat1_match_rise1_r; + idel_pat1_match_fall1_and_r <= #TCQ &idel_pat1_match_fall1_r; + idel_pat1_match_rise2_and_r <= #TCQ &idel_pat1_match_rise2_r; + idel_pat1_match_fall2_and_r <= #TCQ &idel_pat1_match_fall2_r; + idel_pat1_match_rise3_and_r <= #TCQ &idel_pat1_match_rise3_r; + idel_pat1_match_fall3_and_r <= #TCQ &idel_pat1_match_fall3_r; + idel_pat1_data_match_r <= #TCQ (idel_pat1_match_rise0_and_r && + idel_pat1_match_fall0_and_r && + idel_pat1_match_rise1_and_r && + idel_pat1_match_fall1_and_r && + idel_pat1_match_rise2_and_r && + idel_pat1_match_fall2_and_r && + idel_pat1_match_rise3_and_r && + idel_pat1_match_fall3_and_r); + end + + always @(*) + idel_pat_data_match <= #TCQ idel_pat0_data_match_r | + idel_pat1_data_match_r; + + always @(posedge clk) + idel_pat_data_match_r <= #TCQ idel_pat_data_match; + + // Combine pattern match "subterms" for DQS-PHASER_IN stage + always @(posedge clk) begin + pat0_match_rise0_and_r <= #TCQ &pat0_match_rise0_r; + pat0_match_fall0_and_r <= #TCQ &pat0_match_fall0_r; + pat0_match_rise1_and_r <= #TCQ &pat0_match_rise1_r; + pat0_match_fall1_and_r <= #TCQ &pat0_match_fall1_r; + pat0_match_rise2_and_r <= #TCQ &pat0_match_rise2_r; + pat0_match_fall2_and_r <= #TCQ &pat0_match_fall2_r; + pat0_match_rise3_and_r <= #TCQ &pat0_match_rise3_r; + pat0_match_fall3_and_r <= #TCQ &pat0_match_fall3_r; + pat0_data_match_r <= #TCQ (pat0_match_rise0_and_r && + pat0_match_fall0_and_r && + pat0_match_rise1_and_r && + pat0_match_fall1_and_r && + pat0_match_rise2_and_r && + pat0_match_fall2_and_r && + pat0_match_rise3_and_r && + pat0_match_fall3_and_r); + end + + always @(posedge clk) begin + pat1_match_rise0_and_r <= #TCQ &pat1_match_rise0_r; + pat1_match_fall0_and_r <= #TCQ &pat1_match_fall0_r; + pat1_match_rise1_and_r <= #TCQ &pat1_match_rise1_r; + pat1_match_fall1_and_r <= #TCQ &pat1_match_fall1_r; + pat1_match_rise2_and_r <= #TCQ &pat1_match_rise2_r; + pat1_match_fall2_and_r <= #TCQ &pat1_match_fall2_r; + pat1_match_rise3_and_r <= #TCQ &pat1_match_rise3_r; + pat1_match_fall3_and_r <= #TCQ &pat1_match_fall3_r; + pat1_data_match_r <= #TCQ (pat1_match_rise0_and_r && + pat1_match_fall0_and_r && + pat1_match_rise1_and_r && + pat1_match_fall1_and_r && + pat1_match_rise2_and_r && + pat1_match_fall2_and_r && + pat1_match_rise3_and_r && + pat1_match_fall3_and_r); + end + + assign pat_data_match_r = pat0_data_match_r | pat1_data_match_r; + + end else if (nCK_PER_CLK == 2) begin: gen_pat_match_div2 + for (pt_i = 0; pt_i < DRAM_WIDTH; pt_i = pt_i + 1) begin: gen_pat_match + + // DQ IDELAY pattern detection + always @(posedge clk) begin + if (sr_rise0_r[pt_i] == idel_pat0_rise0[pt_i%4]) + idel_pat0_match_rise0_r[pt_i] <= #TCQ 1'b1; + else + idel_pat0_match_rise0_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall0_r[pt_i] == idel_pat0_fall0[pt_i%4]) + idel_pat0_match_fall0_r[pt_i] <= #TCQ 1'b1; + else + idel_pat0_match_fall0_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise1_r[pt_i] == idel_pat0_rise1[pt_i%4]) + idel_pat0_match_rise1_r[pt_i] <= #TCQ 1'b1; + else + idel_pat0_match_rise1_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall1_r[pt_i] == idel_pat0_fall1[pt_i%4]) + idel_pat0_match_fall1_r[pt_i] <= #TCQ 1'b1; + else + idel_pat0_match_fall1_r[pt_i] <= #TCQ 1'b0; + end + + always @(posedge clk) begin + if (sr_rise0_r[pt_i] == idel_pat1_rise0[pt_i%4]) + idel_pat1_match_rise0_r[pt_i] <= #TCQ 1'b1; + else + idel_pat1_match_rise0_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall0_r[pt_i] == idel_pat1_fall0[pt_i%4]) + idel_pat1_match_fall0_r[pt_i] <= #TCQ 1'b1; + else + idel_pat1_match_fall0_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise1_r[pt_i] == idel_pat1_rise1[pt_i%4]) + idel_pat1_match_rise1_r[pt_i] <= #TCQ 1'b1; + else + idel_pat1_match_rise1_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall1_r[pt_i] == idel_pat1_fall1[pt_i%4]) + idel_pat1_match_fall1_r[pt_i] <= #TCQ 1'b1; + else + idel_pat1_match_fall1_r[pt_i] <= #TCQ 1'b0; + end + + // DQS DVW pattern detection + always @(posedge clk) begin + if (sr_rise0_r[pt_i] == pat0_rise0[pt_i%4]) + pat0_match_rise0_r[pt_i] <= #TCQ 1'b1; + else + pat0_match_rise0_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall0_r[pt_i] == pat0_fall0[pt_i%4]) + pat0_match_fall0_r[pt_i] <= #TCQ 1'b1; + else + pat0_match_fall0_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise1_r[pt_i] == pat0_rise1[pt_i%4]) + pat0_match_rise1_r[pt_i] <= #TCQ 1'b1; + else + pat0_match_rise1_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall1_r[pt_i] == pat0_fall1[pt_i%4]) + pat0_match_fall1_r[pt_i] <= #TCQ 1'b1; + else + pat0_match_fall1_r[pt_i] <= #TCQ 1'b0; + end + + always @(posedge clk) begin + if (sr_rise0_r[pt_i] == pat1_rise0[pt_i%4]) + pat1_match_rise0_r[pt_i] <= #TCQ 1'b1; + else + pat1_match_rise0_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall0_r[pt_i] == pat1_fall0[pt_i%4]) + pat1_match_fall0_r[pt_i] <= #TCQ 1'b1; + else + pat1_match_fall0_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise1_r[pt_i] == pat1_rise1[pt_i%4]) + pat1_match_rise1_r[pt_i] <= #TCQ 1'b1; + else + pat1_match_rise1_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall1_r[pt_i] == pat1_fall1[pt_i%4]) + pat1_match_fall1_r[pt_i] <= #TCQ 1'b1; + else + pat1_match_fall1_r[pt_i] <= #TCQ 1'b0; + end + + end + + // Combine pattern match "subterms" for DQ-IDELAY stage + always @(posedge clk) begin + idel_pat0_match_rise0_and_r <= #TCQ &idel_pat0_match_rise0_r; + idel_pat0_match_fall0_and_r <= #TCQ &idel_pat0_match_fall0_r; + idel_pat0_match_rise1_and_r <= #TCQ &idel_pat0_match_rise1_r; + idel_pat0_match_fall1_and_r <= #TCQ &idel_pat0_match_fall1_r; + idel_pat0_data_match_r <= #TCQ (idel_pat0_match_rise0_and_r && + idel_pat0_match_fall0_and_r && + idel_pat0_match_rise1_and_r && + idel_pat0_match_fall1_and_r); + end + + always @(posedge clk) begin + idel_pat1_match_rise0_and_r <= #TCQ &idel_pat1_match_rise0_r; + idel_pat1_match_fall0_and_r <= #TCQ &idel_pat1_match_fall0_r; + idel_pat1_match_rise1_and_r <= #TCQ &idel_pat1_match_rise1_r; + idel_pat1_match_fall1_and_r <= #TCQ &idel_pat1_match_fall1_r; + idel_pat1_data_match_r <= #TCQ (idel_pat1_match_rise0_and_r && + idel_pat1_match_fall0_and_r && + idel_pat1_match_rise1_and_r && + idel_pat1_match_fall1_and_r); + end + + always @(posedge clk) begin + if (sr_valid_r2) + idel_pat_data_match <= #TCQ idel_pat0_data_match_r | + idel_pat1_data_match_r; + end + + //assign idel_pat_data_match = idel_pat0_data_match_r | + // idel_pat1_data_match_r; + + always @(posedge clk) + idel_pat_data_match_r <= #TCQ idel_pat_data_match; + + // Combine pattern match "subterms" for DQS-PHASER_IN stage + always @(posedge clk) begin + pat0_match_rise0_and_r <= #TCQ &pat0_match_rise0_r; + pat0_match_fall0_and_r <= #TCQ &pat0_match_fall0_r; + pat0_match_rise1_and_r <= #TCQ &pat0_match_rise1_r; + pat0_match_fall1_and_r <= #TCQ &pat0_match_fall1_r; + pat0_data_match_r <= #TCQ (pat0_match_rise0_and_r && + pat0_match_fall0_and_r && + pat0_match_rise1_and_r && + pat0_match_fall1_and_r); + end + + always @(posedge clk) begin + pat1_match_rise0_and_r <= #TCQ &pat1_match_rise0_r; + pat1_match_fall0_and_r <= #TCQ &pat1_match_fall0_r; + pat1_match_rise1_and_r <= #TCQ &pat1_match_rise1_r; + pat1_match_fall1_and_r <= #TCQ &pat1_match_fall1_r; + pat1_data_match_r <= #TCQ (pat1_match_rise0_and_r && + pat1_match_fall0_and_r && + pat1_match_rise1_and_r && + pat1_match_fall1_and_r); + end + + assign pat_data_match_r = pat0_data_match_r | pat1_data_match_r; + + end + + endgenerate + + + always @(posedge clk) begin + rdlvl_stg1_start_r <= #TCQ rdlvl_stg1_start; + mpr_rdlvl_done_r1 <= #TCQ mpr_rdlvl_done_r; + mpr_rdlvl_done_r2 <= #TCQ mpr_rdlvl_done_r1; + mpr_rdlvl_start_r <= #TCQ mpr_rdlvl_start; + end + + //*************************************************************************** + // First stage calibration: Capture clock + //*************************************************************************** + + //***************************************************************** + // Keep track of how many samples have been written to shift registers + // Every time RD_SHIFT_LEN samples have been written, then we have a + // full read training pattern loaded into the sr_* registers. Then assert + // sr_valid_r to indicate that: (1) comparison between the sr_* and + // old_sr_* and prev_sr_* registers can take place, (2) transfer of + // the contents of sr_* to old_sr_* and prev_sr_* registers can also + // take place + //***************************************************************** +// verilint STARC-2.2.3.3 off + always @(posedge clk) + if (rst || (mpr_rdlvl_done_r && ~rdlvl_stg1_start)) begin + cnt_shift_r <= #TCQ 'b1; + sr_valid_r <= #TCQ 1'b0; + mpr_valid_r <= #TCQ 1'b0; + end else begin + if (mux_rd_valid_r && mpr_rdlvl_start && ~mpr_rdlvl_done_r) begin + if (cnt_shift_r == 'b0) + mpr_valid_r <= #TCQ 1'b1; + else begin + mpr_valid_r <= #TCQ 1'b0; + cnt_shift_r <= #TCQ cnt_shift_r + 1; + end + end else + mpr_valid_r <= #TCQ 1'b0; + + if (mux_rd_valid_r && rdlvl_stg1_start) begin + if (cnt_shift_r == RD_SHIFT_LEN-1) begin + sr_valid_r <= #TCQ 1'b1; + cnt_shift_r <= #TCQ 'b0; + end else begin + sr_valid_r <= #TCQ 1'b0; + cnt_shift_r <= #TCQ cnt_shift_r + 1; + end + end else + // When the current mux_rd_* contents are not valid, then + // retain the current value of cnt_shift_r, and make sure + // that sr_valid_r = 0 to prevent any downstream loads or + // comparisons + sr_valid_r <= #TCQ 1'b0; + end +// verilint STARC-2.2.3.3 on + //***************************************************************** + // Logic to determine when either edge of the data eye encountered + // Pre- and post-IDELAY update data pattern is compared, if they + // differ, than an edge has been encountered. Currently no attempt + // made to determine if the data pattern itself is "correct", only + // whether it changes after incrementing the IDELAY (possible + // future enhancement) + //***************************************************************** + + // One-way control for ensuring that state machine request to store + // current read data into OLD SR shift register only occurs on a + // valid clock cycle. The FSM provides a one-cycle request pulse. + // It is the responsibility of the FSM to wait the worst-case time + // before relying on any downstream results of this load. + always @(posedge clk) + if (rst) + store_sr_r <= #TCQ 1'b0; + else begin + if (store_sr_req_r) + store_sr_r <= #TCQ 1'b1; + else if ((sr_valid_r || mpr_valid_r) && store_sr_r) + store_sr_r <= #TCQ 1'b0; + end + + // Transfer current data to old data, prior to incrementing delay + // Also store data from current sampling window - so that we can detect + // if the current delay tap yields data that is "jittery" + generate + if (nCK_PER_CLK == 4) begin: gen_old_sr_div4 + for (z = 0; z < DRAM_WIDTH; z = z + 1) begin: gen_old_sr + always @(posedge clk) begin + if (sr_valid_r || mpr_valid_r) begin + // Load last sample (i.e. from current sampling interval) + prev_sr_rise0_r[z] <= #TCQ sr_rise0_r[z]; + prev_sr_fall0_r[z] <= #TCQ sr_fall0_r[z]; + prev_sr_rise1_r[z] <= #TCQ sr_rise1_r[z]; + prev_sr_fall1_r[z] <= #TCQ sr_fall1_r[z]; + prev_sr_rise2_r[z] <= #TCQ sr_rise2_r[z]; + prev_sr_fall2_r[z] <= #TCQ sr_fall2_r[z]; + prev_sr_rise3_r[z] <= #TCQ sr_rise3_r[z]; + prev_sr_fall3_r[z] <= #TCQ sr_fall3_r[z]; + end + if ((sr_valid_r || mpr_valid_r) && store_sr_r) begin + old_sr_rise0_r[z] <= #TCQ sr_rise0_r[z]; + old_sr_fall0_r[z] <= #TCQ sr_fall0_r[z]; + old_sr_rise1_r[z] <= #TCQ sr_rise1_r[z]; + old_sr_fall1_r[z] <= #TCQ sr_fall1_r[z]; + old_sr_rise2_r[z] <= #TCQ sr_rise2_r[z]; + old_sr_fall2_r[z] <= #TCQ sr_fall2_r[z]; + old_sr_rise3_r[z] <= #TCQ sr_rise3_r[z]; + old_sr_fall3_r[z] <= #TCQ sr_fall3_r[z]; + end + end + end + end else if (nCK_PER_CLK == 2) begin: gen_old_sr_div2 + for (z = 0; z < DRAM_WIDTH; z = z + 1) begin: gen_old_sr + always @(posedge clk) begin + if (sr_valid_r || mpr_valid_r) begin + prev_sr_rise0_r[z] <= #TCQ sr_rise0_r[z]; + prev_sr_fall0_r[z] <= #TCQ sr_fall0_r[z]; + prev_sr_rise1_r[z] <= #TCQ sr_rise1_r[z]; + prev_sr_fall1_r[z] <= #TCQ sr_fall1_r[z]; + end + if ((sr_valid_r || mpr_valid_r) && store_sr_r) begin + old_sr_rise0_r[z] <= #TCQ sr_rise0_r[z]; + old_sr_fall0_r[z] <= #TCQ sr_fall0_r[z]; + old_sr_rise1_r[z] <= #TCQ sr_rise1_r[z]; + old_sr_fall1_r[z] <= #TCQ sr_fall1_r[z]; + end + end + end + end + endgenerate + + //******************************************************* + // Match determination occurs over 3 cycles - pipelined for better timing + //******************************************************* + + // Match valid with # of cycles of pipelining in match determination + always @(posedge clk) begin + sr_valid_r1 <= #TCQ sr_valid_r; + sr_valid_r2 <= #TCQ sr_valid_r1; + mpr_valid_r1 <= #TCQ mpr_valid_r; + mpr_valid_r2 <= #TCQ mpr_valid_r1; + end + + generate + if (nCK_PER_CLK == 4) begin: gen_sr_match_div4 + for (z = 0; z < DRAM_WIDTH; z = z + 1) begin: gen_sr_match + always @(posedge clk) begin + // CYCLE1: Compare all bits in DQS grp, generate separate term for + // each bit over four bit times. For example, if there are 8-bits + // per DQS group, 32 terms are generated on cycle 1 + // NOTE: Structure HDL such that X on data bus will result in a + // mismatch. This is required for memory models that can drive the + // bus with X's to model uncertainty regions (e.g. Denali) + if ((pat_data_match_r || mpr_valid_r1) && (sr_rise0_r[z] == old_sr_rise0_r[z])) + old_sr_match_rise0_r[z] <= #TCQ 1'b1; + else if (~mpr_valid_r1 && mpr_rdlvl_start && ~mpr_rdlvl_done_r) + old_sr_match_rise0_r[z] <= #TCQ old_sr_match_rise0_r[z]; + else + old_sr_match_rise0_r[z] <= #TCQ 1'b0; + + if ((pat_data_match_r || mpr_valid_r1) && (sr_fall0_r[z] == old_sr_fall0_r[z])) + old_sr_match_fall0_r[z] <= #TCQ 1'b1; + else if (~mpr_valid_r1 && mpr_rdlvl_start && ~mpr_rdlvl_done_r) + old_sr_match_fall0_r[z] <= #TCQ old_sr_match_fall0_r[z]; + else + old_sr_match_fall0_r[z] <= #TCQ 1'b0; + + if ((pat_data_match_r || mpr_valid_r1) && (sr_rise1_r[z] == old_sr_rise1_r[z])) + old_sr_match_rise1_r[z] <= #TCQ 1'b1; + else if (~mpr_valid_r1 && mpr_rdlvl_start && ~mpr_rdlvl_done_r) + old_sr_match_rise1_r[z] <= #TCQ old_sr_match_rise1_r[z]; + else + old_sr_match_rise1_r[z] <= #TCQ 1'b0; + + if ((pat_data_match_r || mpr_valid_r1) && (sr_fall1_r[z] == old_sr_fall1_r[z])) + old_sr_match_fall1_r[z] <= #TCQ 1'b1; + else if (~mpr_valid_r1 && mpr_rdlvl_start && ~mpr_rdlvl_done_r) + old_sr_match_fall1_r[z] <= #TCQ old_sr_match_fall1_r[z]; + else + old_sr_match_fall1_r[z] <= #TCQ 1'b0; + + if ((pat_data_match_r || mpr_valid_r1) && (sr_rise2_r[z] == old_sr_rise2_r[z])) + old_sr_match_rise2_r[z] <= #TCQ 1'b1; + else if (~mpr_valid_r1 && mpr_rdlvl_start && ~mpr_rdlvl_done_r) + old_sr_match_rise2_r[z] <= #TCQ old_sr_match_rise2_r[z]; + else + old_sr_match_rise2_r[z] <= #TCQ 1'b0; + + if ((pat_data_match_r || mpr_valid_r1) && (sr_fall2_r[z] == old_sr_fall2_r[z])) + old_sr_match_fall2_r[z] <= #TCQ 1'b1; + else if (~mpr_valid_r1 && mpr_rdlvl_start && ~mpr_rdlvl_done_r) + old_sr_match_fall2_r[z] <= #TCQ old_sr_match_fall2_r[z]; + else + old_sr_match_fall2_r[z] <= #TCQ 1'b0; + + if ((pat_data_match_r || mpr_valid_r1) && (sr_rise3_r[z] == old_sr_rise3_r[z])) + old_sr_match_rise3_r[z] <= #TCQ 1'b1; + else if (~mpr_valid_r1 && mpr_rdlvl_start && ~mpr_rdlvl_done_r) + old_sr_match_rise3_r[z] <= #TCQ old_sr_match_rise3_r[z]; + else + old_sr_match_rise3_r[z] <= #TCQ 1'b0; + + if ((pat_data_match_r || mpr_valid_r1) && (sr_fall3_r[z] == old_sr_fall3_r[z])) + old_sr_match_fall3_r[z] <= #TCQ 1'b1; + else if (~mpr_valid_r1 && mpr_rdlvl_start && ~mpr_rdlvl_done_r) + old_sr_match_fall3_r[z] <= #TCQ old_sr_match_fall3_r[z]; + else + old_sr_match_fall3_r[z] <= #TCQ 1'b0; + + if ((pat_data_match_r || mpr_valid_r1) && (sr_rise0_r[z] == prev_sr_rise0_r[z])) + prev_sr_match_rise0_r[z] <= #TCQ 1'b1; + else if (~mpr_valid_r1 && mpr_rdlvl_start && ~mpr_rdlvl_done_r) + prev_sr_match_rise0_r[z] <= #TCQ prev_sr_match_rise0_r[z]; + else + prev_sr_match_rise0_r[z] <= #TCQ 1'b0; + + if ((pat_data_match_r || mpr_valid_r1) && (sr_fall0_r[z] == prev_sr_fall0_r[z])) + prev_sr_match_fall0_r[z] <= #TCQ 1'b1; + else if (~mpr_valid_r1 && mpr_rdlvl_start && ~mpr_rdlvl_done_r) + prev_sr_match_fall0_r[z] <= #TCQ prev_sr_match_fall0_r[z]; + else + prev_sr_match_fall0_r[z] <= #TCQ 1'b0; + + if ((pat_data_match_r || mpr_valid_r1) && (sr_rise1_r[z] == prev_sr_rise1_r[z])) + prev_sr_match_rise1_r[z] <= #TCQ 1'b1; + else if (~mpr_valid_r1 && mpr_rdlvl_start && ~mpr_rdlvl_done_r) + prev_sr_match_rise1_r[z] <= #TCQ prev_sr_match_rise1_r[z]; + else + prev_sr_match_rise1_r[z] <= #TCQ 1'b0; + + if ((pat_data_match_r || mpr_valid_r1) && (sr_fall1_r[z] == prev_sr_fall1_r[z])) + prev_sr_match_fall1_r[z] <= #TCQ 1'b1; + else if (~mpr_valid_r1 && mpr_rdlvl_start && ~mpr_rdlvl_done_r) + prev_sr_match_fall1_r[z] <= #TCQ prev_sr_match_fall1_r[z]; + else + prev_sr_match_fall1_r[z] <= #TCQ 1'b0; + + if ((pat_data_match_r || mpr_valid_r1) && (sr_rise2_r[z] == prev_sr_rise2_r[z])) + prev_sr_match_rise2_r[z] <= #TCQ 1'b1; + else if (~mpr_valid_r1 && mpr_rdlvl_start && ~mpr_rdlvl_done_r) + prev_sr_match_rise2_r[z] <= #TCQ prev_sr_match_rise2_r[z]; + else + prev_sr_match_rise2_r[z] <= #TCQ 1'b0; + + if ((pat_data_match_r || mpr_valid_r1) && (sr_fall2_r[z] == prev_sr_fall2_r[z])) + prev_sr_match_fall2_r[z] <= #TCQ 1'b1; + else if (~mpr_valid_r1 && mpr_rdlvl_start && ~mpr_rdlvl_done_r) + prev_sr_match_fall2_r[z] <= #TCQ prev_sr_match_fall2_r[z]; + else + prev_sr_match_fall2_r[z] <= #TCQ 1'b0; + + if ((pat_data_match_r || mpr_valid_r1) && (sr_rise3_r[z] == prev_sr_rise3_r[z])) + prev_sr_match_rise3_r[z] <= #TCQ 1'b1; + else if (~mpr_valid_r1 && mpr_rdlvl_start && ~mpr_rdlvl_done_r) + prev_sr_match_rise3_r[z] <= #TCQ prev_sr_match_rise3_r[z]; + else + prev_sr_match_rise3_r[z] <= #TCQ 1'b0; + + if ((pat_data_match_r || mpr_valid_r1) && (sr_fall3_r[z] == prev_sr_fall3_r[z])) + prev_sr_match_fall3_r[z] <= #TCQ 1'b1; + else if (~mpr_valid_r1 && mpr_rdlvl_start && ~mpr_rdlvl_done_r) + prev_sr_match_fall3_r[z] <= #TCQ prev_sr_match_fall3_r[z]; + else + prev_sr_match_fall3_r[z] <= #TCQ 1'b0; + + // CYCLE2: Combine all the comparisons for every 8 words (rise0, + // fall0,rise1, fall1) in the calibration sequence. Now we're down + // to DRAM_WIDTH terms + old_sr_match_cyc2_r[z] <= #TCQ + old_sr_match_rise0_r[z] & + old_sr_match_fall0_r[z] & + old_sr_match_rise1_r[z] & + old_sr_match_fall1_r[z] & + old_sr_match_rise2_r[z] & + old_sr_match_fall2_r[z] & + old_sr_match_rise3_r[z] & + old_sr_match_fall3_r[z]; + prev_sr_match_cyc2_r[z] <= #TCQ + prev_sr_match_rise0_r[z] & + prev_sr_match_fall0_r[z] & + prev_sr_match_rise1_r[z] & + prev_sr_match_fall1_r[z] & + prev_sr_match_rise2_r[z] & + prev_sr_match_fall2_r[z] & + prev_sr_match_rise3_r[z] & + prev_sr_match_fall3_r[z]; + + // CYCLE3: Invert value (i.e. assert when DIFFERENCE in value seen), + // and qualify with pipelined valid signal) - probably don't need + // a cycle just do do this.... + if (sr_valid_r2 || mpr_valid_r2) begin + old_sr_diff_r[z] <= #TCQ ~old_sr_match_cyc2_r[z]; + prev_sr_diff_r[z] <= #TCQ ~prev_sr_match_cyc2_r[z]; + end else begin + old_sr_diff_r[z] <= #TCQ 'b0; + prev_sr_diff_r[z] <= #TCQ 'b0; + end + end + end + end if (nCK_PER_CLK == 2) begin: gen_sr_match_div2 + for (z = 0; z < DRAM_WIDTH; z = z + 1) begin: gen_sr_match + always @(posedge clk) begin + if ((sr_valid_r || mpr_valid_r1) && (sr_rise0_r[z] == old_sr_rise0_r[z])) + old_sr_match_rise0_r[z] <= #TCQ 1'b1; + else if (~mpr_valid_r1 && mpr_rdlvl_start && ~mpr_rdlvl_done_r) + old_sr_match_rise0_r[z] <= #TCQ old_sr_match_rise0_r[z]; + else + old_sr_match_rise0_r[z] <= #TCQ 1'b0; + + if ((sr_valid_r || mpr_valid_r1) && (sr_fall0_r[z] == old_sr_fall0_r[z])) + old_sr_match_fall0_r[z] <= #TCQ 1'b1; + else if (~mpr_valid_r1 && mpr_rdlvl_start && ~mpr_rdlvl_done_r) + old_sr_match_fall0_r[z] <= #TCQ old_sr_match_fall0_r[z]; + else + old_sr_match_fall0_r[z] <= #TCQ 1'b0; + + if ((sr_valid_r || mpr_valid_r1) && (sr_rise1_r[z] == old_sr_rise1_r[z])) + old_sr_match_rise1_r[z] <= #TCQ 1'b1; + else if (~mpr_valid_r1 && mpr_rdlvl_start && ~mpr_rdlvl_done_r) + old_sr_match_rise1_r[z] <= #TCQ old_sr_match_rise1_r[z]; + else + old_sr_match_rise1_r[z] <= #TCQ 1'b0; + + if ((sr_valid_r || mpr_valid_r1) && (sr_fall1_r[z] == old_sr_fall1_r[z])) + old_sr_match_fall1_r[z] <= #TCQ 1'b1; + else if (~mpr_valid_r1 && mpr_rdlvl_start && ~mpr_rdlvl_done_r) + old_sr_match_fall1_r[z] <= #TCQ old_sr_match_fall1_r[z]; + else + old_sr_match_fall1_r[z] <= #TCQ 1'b0; + + if ((sr_valid_r || mpr_valid_r1) && (sr_rise0_r[z] == prev_sr_rise0_r[z])) + prev_sr_match_rise0_r[z] <= #TCQ 1'b1; + else if (~mpr_valid_r1 && mpr_rdlvl_start && ~mpr_rdlvl_done_r) + prev_sr_match_rise0_r[z] <= #TCQ prev_sr_match_rise0_r[z]; + else + prev_sr_match_rise0_r[z] <= #TCQ 1'b0; + + if ((sr_valid_r || mpr_valid_r1) && (sr_fall0_r[z] == prev_sr_fall0_r[z])) + prev_sr_match_fall0_r[z] <= #TCQ 1'b1; + else if (~mpr_valid_r1 && mpr_rdlvl_start && ~mpr_rdlvl_done_r) + prev_sr_match_fall0_r[z] <= #TCQ prev_sr_match_fall0_r[z]; + else + prev_sr_match_fall0_r[z] <= #TCQ 1'b0; + + if ((sr_valid_r || mpr_valid_r1) && (sr_rise1_r[z] == prev_sr_rise1_r[z])) + prev_sr_match_rise1_r[z] <= #TCQ 1'b1; + else if (~mpr_valid_r1 && mpr_rdlvl_start && ~mpr_rdlvl_done_r) + prev_sr_match_rise1_r[z] <= #TCQ prev_sr_match_rise1_r[z]; + else + prev_sr_match_rise1_r[z] <= #TCQ 1'b0; + + if ((sr_valid_r || mpr_valid_r1) && (sr_fall1_r[z] == prev_sr_fall1_r[z])) + prev_sr_match_fall1_r[z] <= #TCQ 1'b1; + else if (~mpr_valid_r1 && mpr_rdlvl_start && ~mpr_rdlvl_done_r) + prev_sr_match_fall1_r[z] <= #TCQ prev_sr_match_fall1_r[z]; + else + prev_sr_match_fall1_r[z] <= #TCQ 1'b0; + + old_sr_match_cyc2_r[z] <= #TCQ + old_sr_match_rise0_r[z] & + old_sr_match_fall0_r[z] & + old_sr_match_rise1_r[z] & + old_sr_match_fall1_r[z]; + prev_sr_match_cyc2_r[z] <= #TCQ + prev_sr_match_rise0_r[z] & + prev_sr_match_fall0_r[z] & + prev_sr_match_rise1_r[z] & + prev_sr_match_fall1_r[z]; + + // CYCLE3: Invert value (i.e. assert when DIFFERENCE in value seen), + // and qualify with pipelined valid signal) - probably don't need + // a cycle just do do this.... + if (sr_valid_r2 || mpr_valid_r2) begin + old_sr_diff_r[z] <= #TCQ ~old_sr_match_cyc2_r[z]; + prev_sr_diff_r[z] <= #TCQ ~prev_sr_match_cyc2_r[z]; + end else begin + old_sr_diff_r[z] <= #TCQ 'b0; + prev_sr_diff_r[z] <= #TCQ 'b0; + end + end + end + end + endgenerate + + //*************************************************************************** + // First stage calibration: DQS Capture + //*************************************************************************** + + + //******************************************************* + // Counters for tracking # of samples compared + // For each comparision point (i.e. to determine if an edge has + // occurred after each IODELAY increment when read leveling), + // multiple samples are compared in order to average out the effects + // of jitter. If any one of these samples is different than the "old" + // sample corresponding to the previous IODELAY value, then an edge + // is declared to be detected. + //******************************************************* + + // Two cascaded counters are used to keep track of # of samples compared, + // in order to make it easier to meeting timing on these paths. Once + // optimal sampling interval is determined, it may be possible to remove + // the second counter + always @(posedge clk) + samp_edge_cnt0_en_r <= #TCQ + (cal1_state_r == CAL1_PAT_DETECT) || + (cal1_state_r == CAL1_DETECT_EDGE) || + (cal1_state_r == CAL1_PB_DETECT_EDGE) || + (cal1_state_r == CAL1_PB_DETECT_EDGE_DQ); + + // First counter counts # of samples compared + always @(posedge clk) + if (rst) + samp_edge_cnt0_r <= #TCQ 'b0; + else begin + if (!samp_edge_cnt0_en_r) + // Reset sample counter when not in any of the "sampling" states + samp_edge_cnt0_r <= #TCQ 'b0; + else if (sr_valid_r2 || mpr_valid_r2) + // Otherwise, count # of samples compared + samp_edge_cnt0_r <= #TCQ samp_edge_cnt0_r + 1; + end + + // Counter #2 enable generation + always @(posedge clk) + if (rst) + samp_edge_cnt1_en_r <= #TCQ 1'b0; + else begin + // Assert pulse when correct number of samples compared + if ((samp_edge_cnt0_r == DETECT_EDGE_SAMPLE_CNT0) && + (sr_valid_r2 || mpr_valid_r2)) + samp_edge_cnt1_en_r <= #TCQ 1'b1; + else + samp_edge_cnt1_en_r <= #TCQ 1'b0; + end + + // Counter #2 + always @(posedge clk) + if (rst) + samp_edge_cnt1_r <= #TCQ 'b0; + else + if (!samp_edge_cnt0_en_r) + samp_edge_cnt1_r <= #TCQ 'b0; + else if (samp_edge_cnt1_en_r) + samp_edge_cnt1_r <= #TCQ samp_edge_cnt1_r + 1; + + always @(posedge clk) + if (rst) + samp_cnt_done_r <= #TCQ 1'b0; + else begin + if (!samp_edge_cnt0_en_r) + samp_cnt_done_r <= #TCQ 'b0; + else if ((SIM_CAL_OPTION == "FAST_CAL") || + (SIM_CAL_OPTION == "FAST_WIN_DETECT")) begin + if (samp_edge_cnt0_r == SR_VALID_DELAY-1) + // For simulation only, stay in edge detection mode a minimum + // amount of time - just enough for two data compares to finish + samp_cnt_done_r <= #TCQ 1'b1; + end else begin + if (samp_edge_cnt1_r == DETECT_EDGE_SAMPLE_CNT1) + samp_cnt_done_r <= #TCQ 1'b1; + end + end + + //***************************************************************** + // Logic to keep track of (on per-bit basis): + // 1. When a region of stability preceded by a known edge occurs + // 2. If for the current tap, the read data jitters + // 3. If an edge occured between the current and previous tap + // 4. When the current edge detection/sampling interval can end + // Essentially, these are a series of status bits - the stage 1 + // calibration FSM monitors these to determine when an edge is + // found. Additional information is provided to help the FSM + // determine if a left or right edge has been found. + //**************************************************************** + + assign pb_detect_edge_setup + = (cal1_state_r == CAL1_STORE_FIRST_WAIT) || + (cal1_state_r == CAL1_PB_STORE_FIRST_WAIT) || + (cal1_state_r == CAL1_PB_DEC_CPT_LEFT_WAIT); + + assign pb_detect_edge + = (cal1_state_r == CAL1_PAT_DETECT) || + (cal1_state_r == CAL1_DETECT_EDGE) || + (cal1_state_r == CAL1_PB_DETECT_EDGE) || + (cal1_state_r == CAL1_PB_DETECT_EDGE_DQ); + + generate + for (z = 0; z < DRAM_WIDTH; z = z + 1) begin: gen_track_left_edge + always @(posedge clk) begin + if (pb_detect_edge_setup) begin + // Reset eye size, stable eye marker, and jitter marker before + // starting new edge detection iteration + pb_cnt_eye_size_r[z] <= #TCQ 5'd0; + pb_detect_edge_done_r[z] <= #TCQ 1'b0; + pb_found_stable_eye_r[z] <= #TCQ 1'b0; + pb_last_tap_jitter_r[z] <= #TCQ 1'b0; + pb_found_edge_last_r[z] <= #TCQ 1'b0; + pb_found_edge_r[z] <= #TCQ 1'b0; + pb_found_first_edge_r[z] <= #TCQ 1'b0; + end else if (pb_detect_edge) begin + // Save information on which DQ bits are already out of the + // data valid window - those DQ bits will later not have their + // IDELAY tap value incremented + pb_found_edge_last_r[z] <= #TCQ pb_found_edge_r[z]; + + if (!pb_detect_edge_done_r[z]) begin + if (samp_cnt_done_r) begin + // If we've reached end of sampling interval, no jitter on + // current tap has been found (although an edge could have + // been found between the current and previous taps), and + // the sampling interval is complete. Increment the stable + // eye counter if no edge found, and always clear the jitter + // flag in preparation for the next tap. + pb_last_tap_jitter_r[z] <= #TCQ 1'b0; + pb_detect_edge_done_r[z] <= #TCQ 1'b1; + if (!pb_found_edge_r[z] && !pb_last_tap_jitter_r[z]) begin + // If the data was completely stable during this tap and + // no edge was found between this and the previous tap + // then increment the stable eye counter "as appropriate" + if (pb_cnt_eye_size_r[z] != MIN_EYE_SIZE-1) + pb_cnt_eye_size_r[z] <= #TCQ pb_cnt_eye_size_r[z] + 1; + else //if (pb_found_first_edge_r[z]) + // We've reached minimum stable eye width + pb_found_stable_eye_r[z] <= #TCQ 1'b1; + end else begin + // Otherwise, an edge was found, either because of a + // difference between this and the previous tap's read + // data, and/or because the previous tap's data jittered + // (but not the current tap's data), then just set the + // edge found flag, and enable the stable eye counter + pb_cnt_eye_size_r[z] <= #TCQ 5'd0; + pb_found_stable_eye_r[z] <= #TCQ 1'b0; + pb_found_edge_r[z] <= #TCQ 1'b1; + pb_detect_edge_done_r[z] <= #TCQ 1'b1; + end + end else if (prev_sr_diff_r[z]) begin + // If we find that the current tap read data jitters, then + // set edge and jitter found flags, "enable" the eye size + // counter, and stop sampling interval for this bit + pb_cnt_eye_size_r[z] <= #TCQ 5'd0; + pb_found_stable_eye_r[z] <= #TCQ 1'b0; + pb_last_tap_jitter_r[z] <= #TCQ 1'b1; + pb_found_edge_r[z] <= #TCQ 1'b1; + pb_found_first_edge_r[z] <= #TCQ 1'b1; + pb_detect_edge_done_r[z] <= #TCQ 1'b1; + end else if (old_sr_diff_r[z] || pb_last_tap_jitter_r[z]) begin + // If either an edge was found (i.e. difference between + // current tap and previous tap read data), or the previous + // tap exhibited jitter (which means by definition that the + // current tap cannot match the previous tap because the + // previous tap gave unstable data), then set the edge found + // flag, and "enable" eye size counter. But do not stop + // sampling interval - we still need to check if the current + // tap exhibits jitter + pb_cnt_eye_size_r[z] <= #TCQ 5'd0; + pb_found_stable_eye_r[z] <= #TCQ 1'b0; + pb_found_edge_r[z] <= #TCQ 1'b1; + pb_found_first_edge_r[z] <= #TCQ 1'b1; + end + end + end else begin + // Before every edge detection interval, reset "intra-tap" flags + pb_found_edge_r[z] <= #TCQ 1'b0; + pb_detect_edge_done_r[z] <= #TCQ 1'b0; + end + end + end + endgenerate + + // Combine the above per-bit status flags into combined terms when + // performing deskew on the aggregate data window + always @(posedge clk) begin + detect_edge_done_r <= #TCQ &pb_detect_edge_done_r; + found_edge_r <= #TCQ |pb_found_edge_r; + found_edge_all_r <= #TCQ &pb_found_edge_r; + found_stable_eye_r <= #TCQ &pb_found_stable_eye_r; + end + + // last IODELAY "stable eye" indicator is updated only after + // detect_edge_done_r is asserted - so that when we do find the "right edge" + // of the data valid window, found_edge_r = 1, AND found_stable_eye_r = 1 + // when detect_edge_done_r = 1 (otherwise, if found_stable_eye_r updates + // immediately, then it never possible to have found_stable_eye_r = 1 + // when we detect an edge - and we'll never know whether we've found + // a "right edge") + always @(posedge clk) + if (pb_detect_edge_setup) + found_stable_eye_last_r <= #TCQ 1'b0; + else if (detect_edge_done_r) + found_stable_eye_last_r <= #TCQ found_stable_eye_r; + + //***************************************************************** + // Keep track of DQ IDELAYE2 taps used + //***************************************************************** + + // Added additional register stage to improve timing + always @(posedge clk) + if (rst) + idelay_tap_cnt_slice_r <= 5'h0; + else + idelay_tap_cnt_slice_r <= idelay_tap_cnt_r[rnk_cnt_r][cal1_cnt_cpt_timing]; + + always @(posedge clk) + if (rst || (SIM_CAL_OPTION == "SKIP_CAL")) begin //|| new_cnt_cpt_r + for (s = 0; s < RANKS; s = s + 1) begin + for (t = 0; t < DQS_WIDTH; t = t + 1) begin + idelay_tap_cnt_r[s][t] <= #TCQ idelaye2_init_val; + end + end + end else if (SIM_CAL_OPTION == "FAST_CAL") begin + for (u = 0; u < RANKS; u = u + 1) begin + for (w = 0; w < DQS_WIDTH; w = w + 1) begin + if (cal1_dq_idel_ce) begin + if (cal1_dq_idel_inc) + idelay_tap_cnt_r[u][w] <= #TCQ idelay_tap_cnt_r[u][w] + 1; + else + idelay_tap_cnt_r[u][w] <= #TCQ idelay_tap_cnt_r[u][w] - 1; + end + end + end + end else if ((rnk_cnt_r == RANKS-1) && (RANKS == 2) && + rdlvl_rank_done_r && (cal1_state_r == CAL1_IDLE)) begin + for (f = 0; f < DQS_WIDTH; f = f + 1) begin + idelay_tap_cnt_r[rnk_cnt_r][f] <= #TCQ idelay_tap_cnt_r[(rnk_cnt_r-1)][f]; + end + end else if (cal1_dq_idel_ce) begin + if (cal1_dq_idel_inc) + idelay_tap_cnt_r[rnk_cnt_r][cal1_cnt_cpt_timing] <= #TCQ idelay_tap_cnt_slice_r + 5'h1; + else + idelay_tap_cnt_r[rnk_cnt_r][cal1_cnt_cpt_timing] <= #TCQ idelay_tap_cnt_slice_r - 5'h1; + end else if (idelay_ld) + idelay_tap_cnt_r[0][wrcal_cnt] <= #TCQ 5'b00000; + + always @(posedge clk) + if (rst || new_cnt_cpt_r) + idelay_tap_limit_r <= #TCQ 1'b0; + else if (idelay_tap_cnt_r[rnk_cnt_r][cal1_cnt_cpt_r] == 'd31) + idelay_tap_limit_r <= #TCQ 1'b1; + + //***************************************************************** + // keep track of edge tap counts found, and current capture clock + // tap count + //***************************************************************** + + always @(posedge clk) + if (rst || new_cnt_cpt_r || + (mpr_rdlvl_done_r1 && ~mpr_rdlvl_done_r2)) + tap_cnt_cpt_r <= #TCQ 'b0; + else if (cal1_dlyce_cpt_r) begin + if (cal1_dlyinc_cpt_r) + tap_cnt_cpt_r <= #TCQ tap_cnt_cpt_r + 1; + else if (tap_cnt_cpt_r != 'd0) + tap_cnt_cpt_r <= #TCQ tap_cnt_cpt_r - 1; + end + + always @(posedge clk) + if (rst || new_cnt_cpt_r || + (cal1_state_r1 == CAL1_DQ_IDEL_TAP_INC) || + (mpr_rdlvl_done_r1 && ~mpr_rdlvl_done_r2)) + tap_limit_cpt_r <= #TCQ 1'b0; + else if (tap_cnt_cpt_r == 6'd63) + tap_limit_cpt_r <= #TCQ 1'b1; + + always @(posedge clk) + cal1_cnt_cpt_timing_r <= #TCQ cal1_cnt_cpt_r; + + assign cal1_cnt_cpt_timing = {2'b00, cal1_cnt_cpt_r}; + + // Storing DQS tap values at the end of each DQS read leveling + always @(posedge clk) begin + if (rst) begin + for (a = 0; a < RANKS; a = a + 1) begin: rst_rdlvl_dqs_tap_count_loop + for (b = 0; b < DQS_WIDTH; b = b + 1) + rdlvl_dqs_tap_cnt_r[a][b] <= #TCQ 'b0; + end + end else if ((SIM_CAL_OPTION == "FAST_CAL") & (cal1_state_r1 == CAL1_NEXT_DQS)) begin + for (p = 0; p < RANKS; p = p +1) begin: rdlvl_dqs_tap_rank_cnt + for(q = 0; q < DQS_WIDTH; q = q +1) begin: rdlvl_dqs_tap_cnt + rdlvl_dqs_tap_cnt_r[p][q] <= #TCQ tap_cnt_cpt_r; + end + end + end else if (SIM_CAL_OPTION == "SKIP_CAL") begin + for (j = 0; j < RANKS; j = j +1) begin: rdlvl_dqs_tap_rnk_cnt + for(i = 0; i < DQS_WIDTH; i = i +1) begin: rdlvl_dqs_cnt + rdlvl_dqs_tap_cnt_r[j][i] <= #TCQ 6'd31; + end + end + end else if (cal1_state_r1 == CAL1_NEXT_DQS) begin + rdlvl_dqs_tap_cnt_r[rnk_cnt_r][cal1_cnt_cpt_timing_r] <= #TCQ tap_cnt_cpt_r; + end + end + + + // Counter to track maximum DQ IODELAY tap usage during the per-bit + // deskew portion of stage 1 calibration + always @(posedge clk) + if (rst) begin + idel_tap_cnt_dq_pb_r <= #TCQ 'b0; + idel_tap_limit_dq_pb_r <= #TCQ 1'b0; + end else + if (new_cnt_cpt_r) begin + idel_tap_cnt_dq_pb_r <= #TCQ 'b0; + idel_tap_limit_dq_pb_r <= #TCQ 1'b0; + end else if (|cal1_dlyce_dq_r) begin + if (cal1_dlyinc_dq_r) + idel_tap_cnt_dq_pb_r <= #TCQ idel_tap_cnt_dq_pb_r + 1; + else + idel_tap_cnt_dq_pb_r <= #TCQ idel_tap_cnt_dq_pb_r - 1; + + if (idel_tap_cnt_dq_pb_r == 31) + idel_tap_limit_dq_pb_r <= #TCQ 1'b1; + else + idel_tap_limit_dq_pb_r <= #TCQ 1'b0; + end + + + //***************************************************************** + + always @(posedge clk) begin + cal1_state_r1 <= #TCQ cal1_state_r; + cal1_state_r2 <= #TCQ cal1_state_r1; + cal1_state_r3 <= #TCQ cal1_state_r2; + end + + always @(posedge clk) + if (rst) begin + cal1_cnt_cpt_r <= #TCQ 'b0; + cal1_dlyce_cpt_r <= #TCQ 1'b0; + cal1_dlyinc_cpt_r <= #TCQ 1'b0; + cal1_dq_idel_ce <= #TCQ 1'b0; + cal1_dq_idel_inc <= #TCQ 1'b0; + cal1_prech_req_r <= #TCQ 1'b0; + cal1_state_r <= #TCQ CAL1_IDLE; + cnt_idel_dec_cpt_r <= #TCQ 6'bxxxxxx; + found_first_edge_r <= #TCQ 1'b0; + found_second_edge_r <= #TCQ 1'b0; + right_edge_taps_r <= #TCQ 6'b000000; + first_edge_taps_r <= #TCQ 6'bxxxxxx; + new_cnt_cpt_r <= #TCQ 1'b0; + rdlvl_stg1_done_int <= #TCQ 1'b0; + rdlvl_stg1_err <= #TCQ 1'b0; + second_edge_taps_r <= #TCQ 6'bxxxxxx; + store_sr_req_pulsed_r <= #TCQ 1'b0; + store_sr_req_r <= #TCQ 1'b0; + rnk_cnt_r <= #TCQ 2'b00; + rdlvl_rank_done_r <= #TCQ 1'b0; + idel_dec_cnt <= #TCQ 'd0; + rdlvl_last_byte_done_int <= #TCQ 1'b0; + idel_pat_detect_valid_r <= #TCQ 1'b0; + mpr_rank_done_r <= #TCQ 1'b0; + mpr_last_byte_done <= #TCQ 1'b0; + idel_adj_inc <= #TCQ 1'b0; + if (OCAL_EN == "ON") + mpr_rdlvl_done_r <= #TCQ 1'b0; + else + mpr_rdlvl_done_r <= #TCQ 1'b1; + mpr_dec_cpt_r <= #TCQ 1'b0; + rdlvl_pi_incdec <= #TCQ 1'b0; + end else begin + // default (inactive) states for all "pulse" outputs + // verilint STARC-2.2.3.3 off + cal1_prech_req_r <= #TCQ 1'b0; + cal1_dlyce_cpt_r <= #TCQ 1'b0; + cal1_dlyinc_cpt_r <= #TCQ 1'b0; + cal1_dq_idel_ce <= #TCQ 1'b0; + cal1_dq_idel_inc <= #TCQ 1'b0; + new_cnt_cpt_r <= #TCQ 1'b0; + store_sr_req_pulsed_r <= #TCQ 1'b0; + store_sr_req_r <= #TCQ 1'b0; + + case (cal1_state_r) + + CAL1_IDLE: begin + rdlvl_rank_done_r <= #TCQ 1'b0; + rdlvl_last_byte_done_int <= #TCQ 1'b0; + mpr_rank_done_r <= #TCQ 1'b0; + mpr_last_byte_done <= #TCQ 1'b0; + if (mpr_rdlvl_start && ~mpr_rdlvl_start_r) begin + rdlvl_pi_incdec <= #TCQ 1'b0; + cal1_state_r <= #TCQ CAL1_MPR_NEW_DQS_WAIT; + end else begin + rdlvl_pi_incdec <= #TCQ 1'b1; + if (rdlvl_stg1_start && ~rdlvl_stg1_start_r) begin + if (SIM_CAL_OPTION == "SKIP_CAL") + cal1_state_r <= #TCQ CAL1_REGL_LOAD; + else if (SIM_CAL_OPTION == "FAST_CAL") + cal1_state_r <= #TCQ CAL1_NEXT_DQS; + else begin + new_cnt_cpt_r <= #TCQ 1'b1; + cal1_state_r <= #TCQ CAL1_NEW_DQS_WAIT; + end + end + end + end + + CAL1_MPR_NEW_DQS_WAIT: begin + cal1_prech_req_r <= #TCQ 1'b0; + if (!cal1_wait_r && mpr_valid_r) + cal1_state_r <= #TCQ CAL1_MPR_PAT_DETECT; + end + + // Wait for the new DQS group to change + // also gives time for the read data IN_FIFO to + // output the updated data for the new DQS group + CAL1_NEW_DQS_WAIT: begin + rdlvl_rank_done_r <= #TCQ 1'b0; + rdlvl_last_byte_done_int <= #TCQ 1'b0; + mpr_rank_done_r <= #TCQ 1'b0; + mpr_last_byte_done <= #TCQ 1'b0; + cal1_prech_req_r <= #TCQ 1'b0; + if (|pi_counter_read_val) begin //VK_REVIEW + mpr_dec_cpt_r <= #TCQ 1'b1; + cal1_state_r <= #TCQ CAL1_IDEL_DEC_CPT; + cnt_idel_dec_cpt_r <= #TCQ pi_counter_read_val; + rdlvl_pi_incdec <= #TCQ 1'b1; //every byte dec first so no read needed + end else if (!cal1_wait_r) begin + rdlvl_pi_incdec <= #TCQ 1'b0; + + // Store "previous tap" read data. Technically there is no + // "previous" read data, since we are starting a new DQS + // group, so we'll never find an edge at tap 0 unless the + // data is fluctuating/jittering + store_sr_req_r <= #TCQ 1'b1; + // If per-bit deskew is disabled, then skip the first + // portion of stage 1 calibration + if (PER_BIT_DESKEW == "OFF") + cal1_state_r <= #TCQ CAL1_STORE_FIRST_WAIT; + else if (PER_BIT_DESKEW == "ON") + cal1_state_r <= #TCQ CAL1_PB_STORE_FIRST_WAIT; + end else + rdlvl_pi_incdec <= #TCQ 1'b1; //every byte dec first so no read needed + end + //***************************************************************** + // Per-bit deskew states + //***************************************************************** + + // Wait state following storage of initial read data + CAL1_PB_STORE_FIRST_WAIT: + if (!cal1_wait_r) + cal1_state_r <= #TCQ CAL1_PB_DETECT_EDGE; + + // Look for an edge on all DQ bits in current DQS group + CAL1_PB_DETECT_EDGE: + if (detect_edge_done_r) begin + if (found_stable_eye_r) begin + // If we've found the left edge for all bits (or more precisely, + // we've found the left edge, and then part of the stable + // window thereafter), then proceed to positioning the CPT clock + // right before the left margin + cnt_idel_dec_cpt_r <= #TCQ MIN_EYE_SIZE + 1; + cal1_state_r <= #TCQ CAL1_PB_DEC_CPT_LEFT; + end else begin + // If we've reached the end of the sampling time, and haven't + // yet found the left margin of all the DQ bits, then: + if (!tap_limit_cpt_r) begin + // If we still have taps left to use, then store current value + // of read data, increment the capture clock, and continue to + // look for (left) edges + store_sr_req_r <= #TCQ 1'b1; + cal1_state_r <= #TCQ CAL1_PB_INC_CPT; + end else begin + // If we ran out of taps moving the capture clock, and we + // haven't finished edge detection, then reset the capture + // clock taps to 0 (gradually, one tap at a time... + // then exit the per-bit portion of the algorithm - + // i.e. proceed to adjust the capture clock and DQ IODELAYs as + cnt_idel_dec_cpt_r <= #TCQ 6'd63; + cal1_state_r <= #TCQ CAL1_PB_DEC_CPT; + end + end + end + + // Increment delay for DQS + CAL1_PB_INC_CPT: begin + cal1_dlyce_cpt_r <= #TCQ 1'b1; + cal1_dlyinc_cpt_r <= #TCQ 1'b1; + cal1_state_r <= #TCQ CAL1_PB_INC_CPT_WAIT; + end + + // Wait for IODELAY for both capture and internal nodes within + // ISERDES to settle, before checking again for an edge + CAL1_PB_INC_CPT_WAIT: begin + cal1_dlyce_cpt_r <= #TCQ 1'b0; + cal1_dlyinc_cpt_r <= #TCQ 1'b0; + if (!cal1_wait_r) begin + cal1_state_r <= #TCQ CAL1_PB_DETECT_EDGE; + + end + end + // We've found the left edges of the windows for all DQ bits + // (actually, we found it MIN_EYE_SIZE taps ago) Decrement capture + // clock IDELAY to position just outside left edge of data window + CAL1_PB_DEC_CPT_LEFT: + if (cnt_idel_dec_cpt_r == 6'b000000) + cal1_state_r <= #TCQ CAL1_PB_DEC_CPT_LEFT_WAIT; + else begin + cal1_dlyce_cpt_r <= #TCQ 1'b1; + cal1_dlyinc_cpt_r <= #TCQ 1'b0; + cnt_idel_dec_cpt_r <= #TCQ cnt_idel_dec_cpt_r - 1; + end + + CAL1_PB_DEC_CPT_LEFT_WAIT: + if (!cal1_wait_r) + cal1_state_r <= #TCQ CAL1_PB_DETECT_EDGE_DQ; + + // If there is skew between individual DQ bits, then after we've + // positioned the CPT clock, we will be "in the window" for some + // DQ bits ("early" DQ bits), and "out of the window" for others + // ("late" DQ bits). Increase DQ taps until we are out of the + // window for all DQ bits + CAL1_PB_DETECT_EDGE_DQ: + if (detect_edge_done_r) + if (found_edge_all_r) begin + // We're out of the window for all DQ bits in this DQS group + // We're done with per-bit deskew for this group - now decr + // capture clock IODELAY tap count back to 0, and proceed + // with the rest of stage 1 calibration for this DQS group + cnt_idel_dec_cpt_r <= #TCQ tap_cnt_cpt_r; + cal1_state_r <= #TCQ CAL1_PB_DEC_CPT; + end else + if (!idel_tap_limit_dq_pb_r) + // If we still have DQ taps available for deskew, keep + // incrementing IODELAY tap count for the appropriate DQ bits + cal1_state_r <= #TCQ CAL1_PB_INC_DQ; + else begin + // Otherwise, stop immediately (we've done the best we can) + // and proceed with rest of stage 1 calibration + cnt_idel_dec_cpt_r <= #TCQ tap_cnt_cpt_r; + cal1_state_r <= #TCQ CAL1_PB_DEC_CPT; + end + + CAL1_PB_INC_DQ: begin + // Increment only those DQ for which an edge hasn't been found yet + cal1_dlyce_dq_r <= #TCQ ~pb_found_edge_last_r; + cal1_dlyinc_dq_r <= #TCQ 1'b1; + cal1_state_r <= #TCQ CAL1_PB_INC_DQ_WAIT; + end + + CAL1_PB_INC_DQ_WAIT: + if (!cal1_wait_r) + cal1_state_r <= #TCQ CAL1_PB_DETECT_EDGE_DQ; + + // Decrement capture clock taps back to initial value + CAL1_PB_DEC_CPT: + if (cnt_idel_dec_cpt_r == 6'b000000) + cal1_state_r <= #TCQ CAL1_PB_DEC_CPT_WAIT; + else begin + cal1_dlyce_cpt_r <= #TCQ 1'b1; + cal1_dlyinc_cpt_r <= #TCQ 1'b0; + cnt_idel_dec_cpt_r <= #TCQ cnt_idel_dec_cpt_r - 1; + end + + // Wait for capture clock to settle, then proceed to rest of + // state 1 calibration for this DQS group + CAL1_PB_DEC_CPT_WAIT: + if (!cal1_wait_r) begin + store_sr_req_r <= #TCQ 1'b1; + cal1_state_r <= #TCQ CAL1_STORE_FIRST_WAIT; + end + + // When first starting calibration for a DQS group, save the + // current value of the read data shift register, and use this + // as a reference. Note that for the first iteration of the + // edge detection loop, we will in effect be checking for an edge + // at IODELAY taps = 0 - normally, we are comparing the read data + // for IODELAY taps = N, with the read data for IODELAY taps = N-1 + // An edge can only be found at IODELAY taps = 0 if the read data + // is changing during this time (possible due to jitter) + CAL1_STORE_FIRST_WAIT: begin + mpr_dec_cpt_r <= #TCQ 1'b0; + if (!cal1_wait_r) + cal1_state_r <= #TCQ CAL1_PAT_DETECT; + end + + CAL1_VALID_WAIT: begin + if (!cal1_wait_r) + cal1_state_r <= #TCQ CAL1_MPR_PAT_DETECT; + end + + CAL1_MPR_PAT_DETECT: begin + rdlvl_pi_incdec <= #TCQ 1'b0; + // MPR read leveling for centering DQS in valid window before + // OCLKDELAYED calibration begins in order to eliminate read issues + if (idel_pat_detect_valid_r == 1'b0) begin + cal1_state_r <= #TCQ CAL1_VALID_WAIT; + idel_pat_detect_valid_r <= #TCQ 1'b1; + end else if (idel_pat_detect_valid_r && idel_mpr_pat_detect_r) begin + cal1_state_r <= #TCQ CAL1_DETECT_EDGE; + idel_dec_cnt <= #TCQ 'd0; + end else if (!idelay_tap_limit_r) + cal1_state_r <= #TCQ CAL1_DQ_IDEL_TAP_INC; + else + cal1_state_r <= #TCQ CAL1_RDLVL_ERR; + end + + CAL1_PAT_DETECT: begin + // All DQ bits associated with a DQS are pushed to the right one IDELAY + // tap at a time until first rising DQS is in the tri-state region + // before first rising edge window. + // The detect_edge_done_r condition included to support averaging + // during IDELAY tap increments + rdlvl_pi_incdec <= #TCQ 1'b0; + if (detect_edge_done_r) begin + if (idel_pat_data_match) begin + case (idelay_adj) + 2'b01: begin + cal1_state_r <= CAL1_DQ_IDEL_TAP_INC; + idel_dec_cnt <= #TCQ 5'd0; + idel_adj_inc <= #TCQ 1'b1; + end + 2'b10: begin //DEC by 1 + cal1_state_r <= #TCQ CAL1_DQ_IDEL_TAP_DEC ; + idel_dec_cnt <= #TCQ 5'd1; + idel_adj_inc <= #TCQ 1'b0; + end + default: begin + cal1_state_r <= #TCQ CAL1_DETECT_EDGE; + idel_dec_cnt <= #TCQ 5'd0; + idel_adj_inc <= #TCQ 1'b0; + end + endcase + end else if (!idelay_tap_limit_r) begin + cal1_state_r <= #TCQ CAL1_DQ_IDEL_TAP_INC; + end else begin + cal1_state_r <= #TCQ CAL1_RDLVL_ERR; + end + end + end + + // Increment IDELAY tap by 1 for DQ bits in the byte being calibrated + // until left edge of valid window detected + CAL1_DQ_IDEL_TAP_INC: begin + cal1_dq_idel_ce <= #TCQ 1'b1; + cal1_dq_idel_inc <= #TCQ 1'b1; + cal1_state_r <= #TCQ CAL1_DQ_IDEL_TAP_INC_WAIT; + idel_pat_detect_valid_r <= #TCQ 1'b0; + end + + CAL1_DQ_IDEL_TAP_INC_WAIT: begin + cal1_dq_idel_ce <= #TCQ 1'b0; + cal1_dq_idel_inc <= #TCQ 1'b0; + if (!cal1_wait_r) begin + idel_adj_inc <= #TCQ 1'b0; + if (idel_adj_inc) + cal1_state_r <= #TCQ CAL1_DETECT_EDGE; + else if (~mpr_rdlvl_done_r & (DRAM_TYPE == "DDR3")) + cal1_state_r <= #TCQ CAL1_MPR_PAT_DETECT; + else + cal1_state_r <= #TCQ CAL1_PAT_DETECT; + end + end + + // Decrement by 2 IDELAY taps once idel_pat_data_match detected + CAL1_DQ_IDEL_TAP_DEC: begin + cal1_dq_idel_inc <= #TCQ 1'b0; + cal1_state_r <= #TCQ CAL1_DQ_IDEL_TAP_DEC_WAIT; + if (idel_dec_cnt >= 'd0) + cal1_dq_idel_ce <= #TCQ 1'b1; + else + cal1_dq_idel_ce <= #TCQ 1'b0; + if (idel_dec_cnt > 'd0) + idel_dec_cnt <= #TCQ idel_dec_cnt - 1; + else + idel_dec_cnt <= #TCQ idel_dec_cnt; + end + + CAL1_DQ_IDEL_TAP_DEC_WAIT: begin + cal1_dq_idel_ce <= #TCQ 1'b0; + cal1_dq_idel_inc <= #TCQ 1'b0; + if (!cal1_wait_r) begin + if ((idel_dec_cnt > 'd0) || (pi_rdval_cnt > 'd0)) + cal1_state_r <= #TCQ CAL1_DQ_IDEL_TAP_DEC; + else if (mpr_dec_cpt_r) + cal1_state_r <= #TCQ CAL1_STORE_FIRST_WAIT; + else + cal1_state_r <= #TCQ CAL1_DETECT_EDGE; + end + end + + // Check for presence of data eye edge. During this state, we + // sample the read data multiple times, and look for changes + // in the read data, specifically: + // 1. A change in the read data compared with the value of + // read data from the previous delay tap. This indicates + // that the most recent tap delay increment has moved us + // into either a new window, or moved/kept us in the + // transition/jitter region between windows. Note that this + // condition only needs to be checked for once, and for + // logistical purposes, we check this soon after entering + // this state (see comment in CAL1_DETECT_EDGE below for + // why this is done) + // 2. A change in the read data while we are in this state + // (i.e. in the absence of a tap delay increment). This + // indicates that we're close enough to a window edge that + // jitter will cause the read data to change even in the + // absence of a tap delay change + CAL1_DETECT_EDGE: begin + // Essentially wait for the first comparision to finish, then + // store current data into "old" data register. This store + // happens now, rather than later (e.g. when we've have already + // left this state) in order to avoid the situation the data that + // is stored as "old" data has not been used in an "active + // comparison" - i.e. data is stored after the last comparison + // of this state. In this case, we can miss an edge if the + // following sequence occurs: + // 1. Comparison completes in this state - no edge found + // 2. "Momentary jitter" occurs which "pushes" the data out the + // equivalent of one delay tap + // 3. We store this jittered data as the "old" data + // 4. "Jitter" no longer present + // 5. We increment the delay tap by one + // 6. Now we compare the current with the "old" data - they're + // the same, and no edge is detected + // NOTE: Given the large # of comparisons done in this state, it's + // highly unlikely the above sequence will occur in actual H/W + + // Wait for the first load of read data into the comparison + // shift register to finish, then load the current read data + // into the "old" data register. This allows us to do one + // initial comparision between the current read data, and + // stored data corresponding to the previous delay tap + idel_pat_detect_valid_r <= #TCQ 1'b0; + if (!store_sr_req_pulsed_r) begin + // Pulse store_sr_req_r only once in this state + store_sr_req_r <= #TCQ 1'b1; + store_sr_req_pulsed_r <= #TCQ 1'b1; + end else begin + store_sr_req_r <= #TCQ 1'b0; + store_sr_req_pulsed_r <= #TCQ 1'b1; + end + + // Continue to sample read data and look for edges until the + // appropriate time interval (shorter for simulation-only, + // much, much longer for actual h/w) has elapsed + if (detect_edge_done_r) begin + if (tap_limit_cpt_r) + // Only one edge detected and ran out of taps since only one + // bit time worth of taps available for window detection. This + // can happen if at tap 0 DQS is in previous window which results + // in only left edge being detected. Or at tap 0 DQS is in the + // current window resulting in only right edge being detected. + // Depending on the frequency this case can also happen if at + // tap 0 DQS is in the left noise region resulting in only left + // edge being detected. + cal1_state_r <= #TCQ CAL1_CALC_IDEL; + else if (found_edge_r) begin + // Sticky bit - asserted after we encounter an edge, although + // the current edge may not be considered the "first edge" this + // just means we found at least one edge + found_first_edge_r <= #TCQ 1'b1; + + // Only the right edge of the data valid window is found + // Record the inner right edge tap value + if (!found_first_edge_r && found_stable_eye_last_r) begin + if (tap_cnt_cpt_r == 'd0) + right_edge_taps_r <= #TCQ 'd0; + else + right_edge_taps_r <= #TCQ tap_cnt_cpt_r; + end + + // Both edges of data valid window found: + // If we've found a second edge after a region of stability + // then we must have just passed the second ("right" edge of + // the window. Record this second_edge_taps = current tap-1, + // because we're one past the actual second edge tap, where + // the edge taps represent the extremes of the data valid + // window (i.e. smallest & largest taps where data still valid + if (found_first_edge_r && found_stable_eye_last_r) begin + found_second_edge_r <= #TCQ 1'b1; + second_edge_taps_r <= #TCQ tap_cnt_cpt_r - 1; + cal1_state_r <= #TCQ CAL1_CALC_IDEL; + end else begin + // Otherwise, an edge was found (just not the "second" edge) + // Assuming DQS is in the correct window at tap 0 of Phaser IN + // fine tap. The first edge found is the right edge of the valid + // window and is the beginning of the jitter region hence done! + first_edge_taps_r <= #TCQ tap_cnt_cpt_r; + //wait for read stop before PI increament + cal1_state_r <= #TCQ CAL1_RD_STOP_FOR_PI_INC; + end + end else + // Otherwise, if we haven't found an edge.... + // If we still have taps left to use, then keep incrementing + //wait for read stop before PI increament + cal1_state_r <= #TCQ CAL1_RD_STOP_FOR_PI_INC; + end + end + + //before increment PI, read command sending should be stopped. + //Also need to wait existing read is finished + CAL1_RD_STOP_FOR_PI_INC: begin + rdlvl_pi_incdec <= #TCQ 1'b1; + if (!cal1_wait_r) + cal1_state_r <= #TCQ CAL1_IDEL_INC_CPT; + end + + // Increment Phaser_IN delay for DQS + CAL1_IDEL_INC_CPT: begin + cal1_state_r <= #TCQ CAL1_IDEL_INC_CPT_WAIT; + if (~tap_limit_cpt_r) begin + cal1_dlyce_cpt_r <= #TCQ 1'b1; + cal1_dlyinc_cpt_r <= #TCQ 1'b1; + end else begin + cal1_dlyce_cpt_r <= #TCQ 1'b0; + cal1_dlyinc_cpt_r <= #TCQ 1'b0; + end + end + + // Wait for Phaser_In to settle, before checking again for an edge + CAL1_IDEL_INC_CPT_WAIT: begin + cal1_dlyce_cpt_r <= #TCQ 1'b0; + cal1_dlyinc_cpt_r <= #TCQ 1'b0; + if (!cal1_wait_r) begin + cal1_state_r <= #TCQ CAL1_DETECT_EDGE; + rdlvl_pi_incdec <= #TCQ 1'b0; //return to normal read + end + end + + // Calculate final value of Phaser_IN taps. At this point, one or both + // edges of data eye have been found, and/or all taps have been + // exhausted looking for the edges + // NOTE: We're calculating the amount to decrement by, not the + // absolute setting for DQS. + CAL1_CALC_IDEL: begin + // CASE1: If 2 edges found. + if (found_second_edge_r) + cnt_idel_dec_cpt_r + <= #TCQ ((second_edge_taps_r - + first_edge_taps_r)>>1) + 1; + else if (right_edge_taps_r > 6'd0) + // Only right edge detected + // right_edge_taps_r is the inner right edge tap value + // hence used for calculation + cnt_idel_dec_cpt_r + <= #TCQ (tap_cnt_cpt_r - (right_edge_taps_r>>1)); + else if (found_first_edge_r) + // Only left edge detected + cnt_idel_dec_cpt_r + <= #TCQ ((tap_cnt_cpt_r - first_edge_taps_r)>>1); + else + cnt_idel_dec_cpt_r + <= #TCQ (tap_cnt_cpt_r>>1); + // Now use the value we just calculated to decrement CPT taps + // to the desired calibration point + //cal1_state_r <= #TCQ CAL1_IDEL_DEC_CPT; + cal1_state_r <= #TCQ CAL1_CENTER_WAIT; + rdlvl_pi_incdec <= #TCQ 1'b1; + end + + CAL1_CENTER_WAIT: begin + if(!cal1_wait_r) + cal1_state_r <= #TCQ CAL1_IDEL_DEC_CPT; + end + // decrement capture clock for final adjustment - center + // capture clock in middle of data eye. This adjustment will occur + // only when both the edges are found usign CPT taps. Must do this + // incrementally to avoid clock glitching (since CPT drives clock + // divider within each ISERDES) + CAL1_IDEL_DEC_CPT: begin + cal1_dlyce_cpt_r <= #TCQ 1'b1; + cal1_dlyinc_cpt_r <= #TCQ 1'b0; + // once adjustment is complete, we're done with calibration for + // this DQS, repeat for next DQS + cnt_idel_dec_cpt_r <= #TCQ cnt_idel_dec_cpt_r - 1; + if (cnt_idel_dec_cpt_r == 6'b000001) begin + if (mpr_dec_cpt_r) begin + if (|idelay_tap_cnt_r[rnk_cnt_r][cal1_cnt_cpt_timing]) begin + idel_dec_cnt <= #TCQ idelay_tap_cnt_r[rnk_cnt_r][cal1_cnt_cpt_timing]; + cal1_state_r <= #TCQ CAL1_DQ_IDEL_TAP_DEC; + end else + cal1_state_r <= #TCQ CAL1_STORE_FIRST_WAIT; + end else + cal1_state_r <= #TCQ CAL1_NEXT_DQS; + end else + cal1_state_r <= #TCQ CAL1_IDEL_DEC_CPT_WAIT; + end + + CAL1_IDEL_DEC_CPT_WAIT: begin + cal1_dlyce_cpt_r <= #TCQ 1'b0; + cal1_dlyinc_cpt_r <= #TCQ 1'b0; + if (!cal1_wait_r) + cal1_state_r <= #TCQ CAL1_IDEL_DEC_CPT; + end + + // Determine whether we're done, or have more DQS's to calibrate + // Also request precharge after every byte, as appropriate + CAL1_NEXT_DQS: begin + //if (mpr_rdlvl_done_r || (DRAM_TYPE == "DDR2")) + cal1_prech_req_r <= #TCQ 1'b1; + //else + // cal1_prech_req_r <= #TCQ 1'b0; + cal1_dlyce_cpt_r <= #TCQ 1'b0; + cal1_dlyinc_cpt_r <= #TCQ 1'b0; + // Prepare for another iteration with next DQS group + found_first_edge_r <= #TCQ 1'b0; + found_second_edge_r <= #TCQ 1'b0; + first_edge_taps_r <= #TCQ 'd0; + second_edge_taps_r <= #TCQ 'd0; + right_edge_taps_r <= #TCQ 'd0; + if ((SIM_CAL_OPTION == "FAST_CAL") || + (cal1_cnt_cpt_r >= DQS_WIDTH-1)) begin + if (mpr_rdlvl_done_r) begin + rdlvl_last_byte_done_int <= #TCQ 1'b1; + mpr_last_byte_done <= #TCQ 1'b0; + end else begin + rdlvl_last_byte_done_int <= #TCQ 1'b0; + mpr_last_byte_done <= #TCQ 1'b1; + end + end + + // Wait until precharge that occurs in between calibration of + // DQS groups is finished + if (prech_done) begin // || (~mpr_rdlvl_done_r & (DRAM_TYPE == "DDR3"))) begin + if (SIM_CAL_OPTION == "FAST_CAL") begin + //rdlvl_rank_done_r <= #TCQ 1'b1; + rdlvl_last_byte_done_int <= #TCQ 1'b0; + mpr_last_byte_done <= #TCQ 1'b0; + cal1_state_r <= #TCQ CAL1_DONE; //CAL1_REGL_LOAD; + end else if (cal1_cnt_cpt_r >= DQS_WIDTH-1) begin + if (~mpr_rdlvl_done_r) begin + mpr_rank_done_r <= #TCQ 1'b1; + // if (rnk_cnt_r == RANKS-1) begin + // All DQS groups in all ranks done + cal1_state_r <= #TCQ CAL1_DONE; + cal1_cnt_cpt_r <= #TCQ 'b0; + // end else begin + // // Process DQS groups in next rank + // rnk_cnt_r <= #TCQ rnk_cnt_r + 1; + // new_cnt_cpt_r <= #TCQ 1'b1; + // cal1_cnt_cpt_r <= #TCQ 'b0; + // cal1_state_r <= #TCQ CAL1_IDLE; + // end + end else begin + // All DQS groups in a rank done + rdlvl_rank_done_r <= #TCQ 1'b1; + if (rnk_cnt_r == RANKS-1) begin + // All DQS groups in all ranks done + cal1_state_r <= #TCQ CAL1_REGL_LOAD; + end else begin + // Process DQS groups in next rank + rnk_cnt_r <= #TCQ rnk_cnt_r + 1; + new_cnt_cpt_r <= #TCQ 1'b1; + cal1_cnt_cpt_r <= #TCQ 'b0; + cal1_state_r <= #TCQ CAL1_IDLE; + end + end + end else begin + // Process next DQS group + new_cnt_cpt_r <= #TCQ 1'b1; + cal1_cnt_cpt_r <= #TCQ cal1_cnt_cpt_r + 1; + cal1_state_r <= #TCQ CAL1_NEW_DQS_PREWAIT; + end + end + end + + CAL1_NEW_DQS_PREWAIT: begin + if (!cal1_wait_r) begin + rdlvl_pi_incdec <= #TCQ 1'b0; + if (~mpr_rdlvl_done_r & (DRAM_TYPE == "DDR3")) + cal1_state_r <= #TCQ CAL1_MPR_NEW_DQS_WAIT; + else + cal1_state_r <= #TCQ CAL1_NEW_DQS_WAIT; + end + end + + // Load rank registers in Phaser_IN + CAL1_REGL_LOAD: begin + rdlvl_rank_done_r <= #TCQ 1'b0; + mpr_rank_done_r <= #TCQ 1'b0; + cal1_prech_req_r <= #TCQ 1'b0; + cal1_cnt_cpt_r <= #TCQ 'b0; + rnk_cnt_r <= #TCQ 2'b00; + if ((regl_rank_cnt == RANKS-1) && + ((regl_dqs_cnt == DQS_WIDTH-1) && (done_cnt == 4'd1))) begin + cal1_state_r <= #TCQ CAL1_DONE; + rdlvl_last_byte_done_int <= #TCQ 1'b0; + mpr_last_byte_done <= #TCQ 1'b0; + end else + cal1_state_r <= #TCQ CAL1_REGL_LOAD; + end + + CAL1_RDLVL_ERR: begin + rdlvl_stg1_err <= #TCQ 1'b1; + end + + // Done with this stage of calibration + // if used, allow DEBUG_PORT to control taps + CAL1_DONE: begin + mpr_rdlvl_done_r <= #TCQ 1'b1; + cal1_prech_req_r <= #TCQ 1'b0; + if (~mpr_rdlvl_done_r && (OCAL_EN=="ON") && (DRAM_TYPE == "DDR3")) begin + rdlvl_stg1_done_int <= #TCQ 1'b0; + cal1_state_r <= #TCQ CAL1_IDLE; + end else + rdlvl_stg1_done_int <= #TCQ 1'b1; + end + + endcase + end +// verilint STARC-2.2.3.3 on + + + + +endmodule diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_tempmon.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_tempmon.v new file mode 100644 index 0000000..1719afd --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_tempmon.v @@ -0,0 +1,559 @@ +//***************************************************************************** +// (c) Copyright 2008 - 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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor : Xilinx +// \ \ \/ Version : %version +// \ \ Application : MIG +// / / Filename : mig_7series_v4_0_ddr_phy_tempmon.v +// /___/ /\ Date Last Modified : $date$ +// \ \ / \ Date Created : Dec 20 2013 +// \___\/\___\ +// +//Device : 7 Series +//Design Name : DDR3 SDRAM +//Purpose : Monitors chip temperature via the XADC and adjusts the +// stage 2 tap values as appropriate. +//Reference : +//Revision History : +//***************************************************************************** + +`timescale 1 ps / 1 ps + +module mig_7series_v4_0_ddr_phy_tempmon # +( + parameter SKIP_CALIB = "FALSE", + parameter TCQ = 100, // Register delay (simulation only) + // Temperature bands must be in order. To disable bands, set to extreme. + parameter TEMP_INCDEC = 1465, // Degrees C * 100 (14.65 * 100) + parameter TEMP_HYST = 1, + parameter TEMP_MIN_LIMIT = 12'h8ac, + parameter TEMP_MAX_LIMIT = 12'hca4 +) +( + input clk, // Fabric clock + input rst, // System reset + input calib_complete, // Calibration complete + input tempmon_sample_en, // Signal to enable sampling + input [11:0] device_temp, // Current device temperature + input [11:0] calib_device_temp, // Calibration device temperature + output tempmon_pi_f_inc, // Increment PHASER_IN taps + output tempmon_pi_f_dec, // Decrement PHASER_IN taps + output tempmon_sel_pi_incdec, // Assume control of PHASER_IN taps + output tempmon_done_skip +); + + // translate hysteresis into XADC units + localparam HYST_OFFSET = (TEMP_HYST * 4096) / 504; + + localparam TEMP_INCDEC_OFFSET = ((TEMP_INCDEC * 4096) / 50400) ; + + // Temperature sampler FSM encoding + localparam IDLE = 11'b000_0000_0001; + localparam INIT = 11'b000_0000_0010; + localparam FOUR_INC = 11'b000_0000_0100; + localparam THREE_INC = 11'b000_0000_1000; + localparam TWO_INC = 11'b000_0001_0000; + localparam ONE_INC = 11'b000_0010_0000; + localparam NEUTRAL = 11'b000_0100_0000; + localparam ONE_DEC = 11'b000_1000_0000; + localparam TWO_DEC = 11'b001_0000_0000; + localparam THREE_DEC = 11'b010_0000_0000; + localparam FOUR_DEC = 11'b100_0000_0000; + + + //=========================================================================== + // Reg declarations + //=========================================================================== + + // Output port flops. Inc and dec are mutex. + reg pi_f_dec; // Flop output + reg pi_f_inc; // Flop output + reg pi_f_dec_nxt; // FSM output + reg pi_f_inc_nxt; // FSM output + + // FSM state + reg [10:0] tempmon_state; + reg [10:0] tempmon_state_nxt; + + // FSM output used to capture the initial device termperature + reg tempmon_state_init; + + // Flag to indicate the initial device temperature is captured and normal operation can begin + reg tempmon_init_complete; + + // Temperature band/state boundaries + reg [11:0] four_inc_max_limit; + reg [11:0] three_inc_max_limit; + reg [11:0] two_inc_max_limit; + reg [11:0] one_inc_max_limit; + reg [11:0] neutral_max_limit; + reg [11:0] one_dec_max_limit; + reg [11:0] two_dec_max_limit; + reg [11:0] three_dec_max_limit; + reg [11:0] three_inc_min_limit; + reg [11:0] two_inc_min_limit; + reg [11:0] one_inc_min_limit; + reg [11:0] neutral_min_limit; + reg [11:0] one_dec_min_limit; + reg [11:0] two_dec_min_limit; + reg [11:0] three_dec_min_limit; + reg [11:0] four_dec_min_limit; + reg [11:0] device_temp_init; + + // Flops for capturing and storing the current device temperature + reg tempmon_sample_en_101; + reg tempmon_sample_en_102; + reg [11:0] device_temp_101; + reg [11:0] device_temp_capture_102; + reg update_temp_102; + + // Flops for comparing temperature to max limits + reg temp_cmp_four_inc_max_102; + reg temp_cmp_three_inc_max_102; + reg temp_cmp_two_inc_max_102; + reg temp_cmp_one_inc_max_102; + reg temp_cmp_neutral_max_102; + reg temp_cmp_one_dec_max_102; + reg temp_cmp_two_dec_max_102; + reg temp_cmp_three_dec_max_102; + + // Flops for comparing temperature to min limits + reg temp_cmp_three_inc_min_102; + reg temp_cmp_two_inc_min_102; + reg temp_cmp_one_inc_min_102; + reg temp_cmp_neutral_min_102; + reg temp_cmp_one_dec_min_102; + reg temp_cmp_two_dec_min_102; + reg temp_cmp_three_dec_min_102; + reg temp_cmp_four_dec_min_102; + + reg calib_complete_r; + reg tempmon_done; + reg [2:0] sample_en_cnt; + + always @ (posedge clk) + calib_complete_r <= #TCQ calib_complete; + + wire [11:0] device_temp_in = ((tempmon_state_init | ~calib_complete_r) & (SKIP_CALIB == "TRUE")) ? calib_device_temp : device_temp; + + always @ (posedge clk) begin + if (rst) + sample_en_cnt <= #TCQ 'd0; + else if ((tempmon_sample_en & ~tempmon_sample_en_101) & ((SKIP_CALIB == "TRUE")) & (sample_en_cnt < 'd5)) + sample_en_cnt <= #TCQ sample_en_cnt + 1; + end + + always @ (posedge clk) begin + if (rst) + tempmon_done <= #TCQ 1'b0; + else if ((sample_en_cnt == 'd5) & ((SKIP_CALIB == "TRUE"))) + tempmon_done <= #TCQ 1'b1; + end + + assign tempmon_done_skip = tempmon_done; + + //=========================================================================== + // Overview and temperature band limits + //=========================================================================== + + // The main feature of the tempmon block is an FSM that tracks the temerature provided by the ADC and decides if the phaser needs to be adjusted. The FSM + // has nine temperature bands or states, centered around an initial device temperature. The name of each state is the net number of phaser increments or + // decrements that have been issued in getting to the state. There are two temperature boundaries or limits between adjacent states. These two boundaries are + // offset by a small amount to provide hysteresis. The max limits are the boundaries that are used to determine when to move to the next higher temperature state + // and decrement the phaser. The min limits determine when to move to the next lower temperature state and increment the phaser. The limits are calculated when + // the initial device temperature is taken, and will always be at fixed offsets from the initial device temperature. States with limits below 0C or above + // 125C will never be entered. + + // Temperature lowest highest + // <------------------------------------------------------------------------------------------------------------------------------------------------> + // + // Temp four three two one neutral one two three four + // band/state inc inc inc inc dec dec dec dec + // + // Max limits |<-2*TEMP_INCDEC->|<-2*TEMP_INCDEC->|<-2*TEMP_INCDEC->|<-2*TEMP_INCDEC->|<-2*TEMP_INCDEC->|<-2*TEMP_INCDEC->|<-2*TEMP_INCDEC->| + // Min limits |<-2*TEMP_INCDEC->|<-2*TEMP_INCDEC->|<-2*TEMP_INCDEC->|<-2*TEMP_INCDEC->|<-2*TEMP_INCDEC->|<-2*TEMP_INCDEC->|<-2*TEMP_INCDEC->| | + // | | | | | | | + // | | | | | | | + // three_inc_min_limit | HYST_OFFSET--->| |<-- | four_dec_min_limit | + // | device_temp_init | + // four_inc_max_limit three_dec_max_limit + + + + // Boundaries for moving from lower temp bands to higher temp bands. + // Note that only three_dec_max_limit can roll over, assuming device_temp_init is between 0C and 125C and TEMP_INCDEC_OFFSET is 14.65C, + // and none of the min or max limits can roll under. So three_dec_max_limit has a check for being out of the 0x0 to 0xFFF range. + wire [11:0] four_inc_max_limit_nxt = device_temp_init - 7*TEMP_INCDEC_OFFSET; // upper boundary of lowest temp band + wire [11:0] three_inc_max_limit_nxt = device_temp_init - 5*TEMP_INCDEC_OFFSET; + wire [11:0] two_inc_max_limit_nxt = device_temp_init - 3*TEMP_INCDEC_OFFSET; + wire [11:0] one_inc_max_limit_nxt = device_temp_init - TEMP_INCDEC_OFFSET; + wire [11:0] neutral_max_limit_nxt = device_temp_init + TEMP_INCDEC_OFFSET; // upper boundary of init temp band + wire [11:0] one_dec_max_limit_nxt = device_temp_init + 3*TEMP_INCDEC_OFFSET; + wire [11:0] two_dec_max_limit_nxt = device_temp_init + 5*TEMP_INCDEC_OFFSET; + wire [12:0] three_dec_max_limit_tmp = device_temp_init + 7*TEMP_INCDEC_OFFSET; // upper boundary of 2nd highest temp band + wire [11:0] three_dec_max_limit_nxt = three_dec_max_limit_tmp[12] ? 12'hFFF : three_dec_max_limit_tmp[11:0]; + + + // Boundaries for moving from higher temp bands to lower temp bands + wire [11:0] three_inc_min_limit_nxt = four_inc_max_limit - HYST_OFFSET; // lower boundary of 2nd lowest temp band + wire [11:0] two_inc_min_limit_nxt = three_inc_max_limit - HYST_OFFSET; + wire [11:0] one_inc_min_limit_nxt = two_inc_max_limit - HYST_OFFSET; + wire [11:0] neutral_min_limit_nxt = one_inc_max_limit - HYST_OFFSET; // lower boundary of init temp band + wire [11:0] one_dec_min_limit_nxt = neutral_max_limit - HYST_OFFSET; + wire [11:0] two_dec_min_limit_nxt = one_dec_max_limit - HYST_OFFSET; + wire [11:0] three_dec_min_limit_nxt = two_dec_max_limit - HYST_OFFSET; + wire [11:0] four_dec_min_limit_nxt = three_dec_max_limit - HYST_OFFSET; // lower boundary of highest temp band + + + + //=========================================================================== + // Capture device temperature + //=========================================================================== + + // There is a three stage pipeline used to capture temperature, calculate the next state + // of the FSM, and update the tempmon outputs. + // + // Stage 100 Inputs device_temp and tempmon_sample_en become valid and are flopped. + // Input device_temp is compared to ADC codes for 0C and 125C and limited + // at the flop input if needed. + // + // Stage 101 The flopped version of device_temp is compared to the FSM temperature band boundaries + // to determine if a state change is needed. State changes are only enabled on the + // rising edge of the flopped tempmon_sample_en signal. If there is a state change a phaser + // increment or decrement signal is generated and flopped. + // + // Stage 102 The flopped versions of the phaser inc/dec signals drive the module outputs. + + // Limit device_temp to 0C to 125C and assign it to flop input device_temp_100 + // temp C = ( ( ADC CODE * 503.975 ) / 4096 ) - 273.15 + wire device_temp_high = device_temp_in > TEMP_MAX_LIMIT; + wire device_temp_low = device_temp_in < TEMP_MIN_LIMIT; + wire [11:0] device_temp_100 = ( { 12 { device_temp_high } } & TEMP_MAX_LIMIT ) + | ( { 12 { device_temp_low } } & TEMP_MIN_LIMIT ) + | ( { 12 { ~device_temp_high & ~device_temp_low } } & device_temp_in ); + + // Capture/hold the initial temperature used in setting temperature bands and set init complete flag + // to enable normal sample operation. + wire [11:0] device_temp_init_nxt = tempmon_state_init ? device_temp_101 : device_temp_init; + wire tempmon_init_complete_nxt = tempmon_state_init ? 1'b1 : tempmon_init_complete; + + // Capture/hold the current temperature on the sample enable signal rising edge after init is complete. + // The captured current temp is not used functionaly. It is just useful for debug and waveform review. + wire update_temp_101 = tempmon_init_complete & ~tempmon_sample_en_102 & tempmon_sample_en_101; + wire [11:0] device_temp_capture_101 = update_temp_101 ? device_temp_101 : device_temp_capture_102; + + + //=========================================================================== + // Generate FSM arc signals + //=========================================================================== + + // Temperature comparisons for increasing temperature. + wire temp_cmp_four_inc_max_101 = device_temp_101 >= four_inc_max_limit ; + wire temp_cmp_three_inc_max_101 = device_temp_101 >= three_inc_max_limit ; + wire temp_cmp_two_inc_max_101 = device_temp_101 >= two_inc_max_limit ; + wire temp_cmp_one_inc_max_101 = device_temp_101 >= one_inc_max_limit ; + wire temp_cmp_neutral_max_101 = device_temp_101 >= neutral_max_limit ; + wire temp_cmp_one_dec_max_101 = device_temp_101 >= one_dec_max_limit ; + wire temp_cmp_two_dec_max_101 = device_temp_101 >= two_dec_max_limit ; + wire temp_cmp_three_dec_max_101 = device_temp_101 >= three_dec_max_limit ; + + // Temperature comparisons for decreasing temperature. + wire temp_cmp_three_inc_min_101 = device_temp_101 < three_inc_min_limit ; + wire temp_cmp_two_inc_min_101 = device_temp_101 < two_inc_min_limit ; + wire temp_cmp_one_inc_min_101 = device_temp_101 < one_inc_min_limit ; + wire temp_cmp_neutral_min_101 = device_temp_101 < neutral_min_limit ; + wire temp_cmp_one_dec_min_101 = device_temp_101 < one_dec_min_limit ; + wire temp_cmp_two_dec_min_101 = device_temp_101 < two_dec_min_limit ; + wire temp_cmp_three_dec_min_101 = device_temp_101 < three_dec_min_limit ; + wire temp_cmp_four_dec_min_101 = device_temp_101 < four_dec_min_limit ; + + // FSM arcs for increasing temperature. + wire temp_gte_four_inc_max = update_temp_102 & temp_cmp_four_inc_max_102; + wire temp_gte_three_inc_max = update_temp_102 & temp_cmp_three_inc_max_102; + wire temp_gte_two_inc_max = update_temp_102 & temp_cmp_two_inc_max_102; + wire temp_gte_one_inc_max = update_temp_102 & temp_cmp_one_inc_max_102; + wire temp_gte_neutral_max = update_temp_102 & temp_cmp_neutral_max_102; + wire temp_gte_one_dec_max = update_temp_102 & temp_cmp_one_dec_max_102; + wire temp_gte_two_dec_max = update_temp_102 & temp_cmp_two_dec_max_102; + wire temp_gte_three_dec_max = update_temp_102 & temp_cmp_three_dec_max_102; + + // FSM arcs for decreasing temperature. + wire temp_lte_three_inc_min = update_temp_102 & temp_cmp_three_inc_min_102; + wire temp_lte_two_inc_min = update_temp_102 & temp_cmp_two_inc_min_102; + wire temp_lte_one_inc_min = update_temp_102 & temp_cmp_one_inc_min_102; + wire temp_lte_neutral_min = update_temp_102 & temp_cmp_neutral_min_102; + wire temp_lte_one_dec_min = update_temp_102 & temp_cmp_one_dec_min_102; + wire temp_lte_two_dec_min = update_temp_102 & temp_cmp_two_dec_min_102; + wire temp_lte_three_dec_min = update_temp_102 & temp_cmp_three_dec_min_102; + wire temp_lte_four_dec_min = update_temp_102 & temp_cmp_four_dec_min_102; + + + //=========================================================================== + // Implement FSM + //=========================================================================== + + // In addition to the nine temperature states, there are also IDLE and INIT states. + // The INIT state triggers the calculation of the temperature boundaries between the + // other states. After INIT, the FSM will always go to the NEUTRAL state. There is + // no timing restriction required between calib_complete and tempmon_sample_en. + + always @(*) begin + + tempmon_state_nxt = tempmon_state; + tempmon_state_init = 1'b0; + pi_f_inc_nxt = 1'b0; + pi_f_dec_nxt = 1'b0; + + casez (tempmon_state) + IDLE: begin + if (calib_complete) tempmon_state_nxt = INIT; + end + INIT: begin + tempmon_state_nxt = NEUTRAL; + tempmon_state_init = 1'b1; + end + FOUR_INC: begin + if (temp_gte_four_inc_max) begin + tempmon_state_nxt = THREE_INC; + pi_f_dec_nxt = 1'b1; + end + end + THREE_INC: begin + if (temp_gte_three_inc_max) begin + tempmon_state_nxt = TWO_INC; + pi_f_dec_nxt = 1'b1; + end + else if (temp_lte_three_inc_min) begin + tempmon_state_nxt = FOUR_INC; + pi_f_inc_nxt = 1'b1; + end + end + TWO_INC: begin + if (temp_gte_two_inc_max) begin + tempmon_state_nxt = ONE_INC; + pi_f_dec_nxt = 1'b1; + end + else if (temp_lte_two_inc_min) begin + tempmon_state_nxt = THREE_INC; + pi_f_inc_nxt = 1'b1; + end + end + ONE_INC: begin + if (temp_gte_one_inc_max) begin + tempmon_state_nxt = NEUTRAL; + pi_f_dec_nxt = 1'b1; + end + else if (temp_lte_one_inc_min) begin + tempmon_state_nxt = TWO_INC; + pi_f_inc_nxt = 1'b1; + end + end + NEUTRAL: begin + if (temp_gte_neutral_max) begin + tempmon_state_nxt = ONE_DEC; + pi_f_dec_nxt = 1'b1; + end + else if (temp_lte_neutral_min) begin + tempmon_state_nxt = ONE_INC; + pi_f_inc_nxt = 1'b1; + end + end + ONE_DEC: begin + if (temp_gte_one_dec_max) begin + tempmon_state_nxt = TWO_DEC; + pi_f_dec_nxt = 1'b1; + end + else if (temp_lte_one_dec_min) begin + tempmon_state_nxt = NEUTRAL; + pi_f_inc_nxt = 1'b1; + end + end + TWO_DEC: begin + if (temp_gte_two_dec_max) begin + tempmon_state_nxt = THREE_DEC; + pi_f_dec_nxt = 1'b1; + end + else if (temp_lte_two_dec_min) begin + tempmon_state_nxt = ONE_DEC; + pi_f_inc_nxt = 1'b1; + end + end + THREE_DEC: begin + if (temp_gte_three_dec_max) begin + tempmon_state_nxt = FOUR_DEC; + pi_f_dec_nxt = 1'b1; + end + else if (temp_lte_three_dec_min) begin + tempmon_state_nxt = TWO_DEC; + pi_f_inc_nxt = 1'b1; + end + end + FOUR_DEC: begin + if (temp_lte_four_dec_min) begin + tempmon_state_nxt = THREE_DEC; + pi_f_inc_nxt = 1'b1; + end + end + default: begin + tempmon_state_nxt = IDLE; + end + endcase + + end //always + +//synopsys translate_off +reg [71:0] tempmon_state_name; +always @(*) casez (tempmon_state) + IDLE : tempmon_state_name = "IDLE"; + INIT : tempmon_state_name = "INIT"; + FOUR_INC : tempmon_state_name = "FOUR_INC"; + THREE_INC : tempmon_state_name = "THREE_INC"; + TWO_INC : tempmon_state_name = "TWO_INC"; + ONE_INC : tempmon_state_name = "ONE_INC"; + NEUTRAL : tempmon_state_name = "NEUTRAL"; + ONE_DEC : tempmon_state_name = "ONE_DEC"; + TWO_DEC : tempmon_state_name = "TWO_DEC"; + THREE_DEC : tempmon_state_name = "THREE_DEC"; + FOUR_DEC : tempmon_state_name = "FOUR_DEC"; + default : tempmon_state_name = "BAD_STATE"; +endcase +//synopsys translate_on + + //=========================================================================== + // Generate final output and implement flops + //=========================================================================== + + // Generate output + assign tempmon_pi_f_inc = pi_f_inc; + assign tempmon_pi_f_dec = pi_f_dec; + assign tempmon_sel_pi_incdec = pi_f_inc | pi_f_dec; + + + // Implement reset flops + always @(posedge clk) begin + if(rst) begin + tempmon_state <= #TCQ 11'b000_0000_0001; + pi_f_inc <= #TCQ 1'b0; + pi_f_dec <= #TCQ 1'b0; + four_inc_max_limit <= #TCQ 12'b0; + three_inc_max_limit <= #TCQ 12'b0; + two_inc_max_limit <= #TCQ 12'b0; + one_inc_max_limit <= #TCQ 12'b0; + neutral_max_limit <= #TCQ 12'b0; + one_dec_max_limit <= #TCQ 12'b0; + two_dec_max_limit <= #TCQ 12'b0; + three_dec_max_limit <= #TCQ 12'b0; + three_inc_min_limit <= #TCQ 12'b0; + two_inc_min_limit <= #TCQ 12'b0; + one_inc_min_limit <= #TCQ 12'b0; + neutral_min_limit <= #TCQ 12'b0; + one_dec_min_limit <= #TCQ 12'b0; + two_dec_min_limit <= #TCQ 12'b0; + three_dec_min_limit <= #TCQ 12'b0; + four_dec_min_limit <= #TCQ 12'b0; + device_temp_init <= #TCQ 12'b0; + tempmon_init_complete <= #TCQ 1'b0; + tempmon_sample_en_101 <= #TCQ 1'b0; + tempmon_sample_en_102 <= #TCQ 1'b0; + device_temp_101 <= #TCQ 12'b0; + device_temp_capture_102 <= #TCQ 12'b0; + end + else begin + tempmon_state <= #TCQ tempmon_state_nxt; + pi_f_inc <= #TCQ pi_f_inc_nxt; + pi_f_dec <= #TCQ pi_f_dec_nxt; + four_inc_max_limit <= #TCQ four_inc_max_limit_nxt; + three_inc_max_limit <= #TCQ three_inc_max_limit_nxt; + two_inc_max_limit <= #TCQ two_inc_max_limit_nxt; + one_inc_max_limit <= #TCQ one_inc_max_limit_nxt; + neutral_max_limit <= #TCQ neutral_max_limit_nxt; + one_dec_max_limit <= #TCQ one_dec_max_limit_nxt; + two_dec_max_limit <= #TCQ two_dec_max_limit_nxt; + three_dec_max_limit <= #TCQ three_dec_max_limit_nxt; + three_inc_min_limit <= #TCQ three_inc_min_limit_nxt; + two_inc_min_limit <= #TCQ two_inc_min_limit_nxt; + one_inc_min_limit <= #TCQ one_inc_min_limit_nxt; + neutral_min_limit <= #TCQ neutral_min_limit_nxt; + one_dec_min_limit <= #TCQ one_dec_min_limit_nxt; + two_dec_min_limit <= #TCQ two_dec_min_limit_nxt; + three_dec_min_limit <= #TCQ three_dec_min_limit_nxt; + four_dec_min_limit <= #TCQ four_dec_min_limit_nxt; + device_temp_init <= #TCQ device_temp_init_nxt; + tempmon_init_complete <= #TCQ tempmon_init_complete_nxt; + tempmon_sample_en_101 <= #TCQ tempmon_sample_en; + tempmon_sample_en_102 <= #TCQ tempmon_sample_en_101; + device_temp_101 <= #TCQ device_temp_100; + device_temp_capture_102 <= #TCQ device_temp_capture_101; + end + end + + // Implement non-reset flops + always @(posedge clk) begin + temp_cmp_four_inc_max_102 <= #TCQ temp_cmp_four_inc_max_101; + temp_cmp_three_inc_max_102 <= #TCQ temp_cmp_three_inc_max_101; + temp_cmp_two_inc_max_102 <= #TCQ temp_cmp_two_inc_max_101; + temp_cmp_one_inc_max_102 <= #TCQ temp_cmp_one_inc_max_101; + temp_cmp_neutral_max_102 <= #TCQ temp_cmp_neutral_max_101; + temp_cmp_one_dec_max_102 <= #TCQ temp_cmp_one_dec_max_101; + temp_cmp_two_dec_max_102 <= #TCQ temp_cmp_two_dec_max_101; + temp_cmp_three_dec_max_102 <= #TCQ temp_cmp_three_dec_max_101; + temp_cmp_three_inc_min_102 <= #TCQ temp_cmp_three_inc_min_101; + temp_cmp_two_inc_min_102 <= #TCQ temp_cmp_two_inc_min_101; + temp_cmp_one_inc_min_102 <= #TCQ temp_cmp_one_inc_min_101; + temp_cmp_neutral_min_102 <= #TCQ temp_cmp_neutral_min_101; + temp_cmp_one_dec_min_102 <= #TCQ temp_cmp_one_dec_min_101; + temp_cmp_two_dec_min_102 <= #TCQ temp_cmp_two_dec_min_101; + temp_cmp_three_dec_min_102 <= #TCQ temp_cmp_three_dec_min_101; + temp_cmp_four_dec_min_102 <= #TCQ temp_cmp_four_dec_min_101; + update_temp_102 <= #TCQ update_temp_101; + end + + +endmodule diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_top.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_top.v new file mode 100644 index 0000000..9c084c6 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_top.v @@ -0,0 +1,1444 @@ +//***************************************************************************** +// (c) Copyright 2008 - 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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor : Xilinx +// \ \ \/ Version : 4.0 +// \ \ Application : MIG +// / / Filename : ddr_phy_top.v +// /___/ /\ Date Last Modified : $date$ +// \ \ / \ Date Created : Aug 03 2009 +// \___\/\___\ +// +//Device : 7 Series +//Design Name : DDR3 SDRAM +//Purpose : Top level memory interface block. Instantiates a clock +// and reset generator, the memory controller, the phy and +// the user interface blocks. +//Reference : +//Revision History : +//***************************************************************************** + +`timescale 1 ps / 1 ps + +module mig_7series_v4_0_ddr_phy_top # + ( + parameter TCQ = 100, // Register delay (simulation only) + parameter DDR3_VDD_OP_VOLT = 135, // Voltage mode used for DDR3 + parameter AL = "0", // Additive Latency option + parameter BANK_WIDTH = 3, // # of bank bits + parameter BURST_MODE = "8", // Burst length + parameter BURST_TYPE = "SEQ", // Burst type + parameter CA_MIRROR = "OFF", // C/A mirror opt for DDR3 dual rank + parameter CK_WIDTH = 1, // # of CK/CK# outputs to memory + parameter CL = 5, + parameter COL_WIDTH = 12, // column address width + parameter CS_WIDTH = 1, // # of unique CS outputs + parameter CKE_WIDTH = 1, // # of cke outputs + parameter CWL = 5, + parameter DM_WIDTH = 8, // # of DM (data mask) + parameter DQ_WIDTH = 64, // # of DQ (data) + parameter DQS_CNT_WIDTH = 3, // = ceil(log2(DQS_WIDTH)) + parameter DQS_WIDTH = 8, // # of DQS (strobe) + parameter DRAM_TYPE = "DDR3", + parameter DRAM_WIDTH = 8, // # of DQ per DQS + parameter MASTER_PHY_CTL = 0, // The bank number where master PHY_CONTROL resides + parameter LP_DDR_CK_WIDTH = 2, + + // Hard PHY parameters + parameter PHYCTL_CMD_FIFO = "FALSE", + // five fields, one per possible I/O bank, 4 bits in each field, + // 1 per lane data=1/ctl=0 + parameter DATA_CTL_B0 = 4'hc, + parameter DATA_CTL_B1 = 4'hf, + parameter DATA_CTL_B2 = 4'hf, + parameter DATA_CTL_B3 = 4'hf, + parameter DATA_CTL_B4 = 4'hf, + // defines the byte lanes in I/O banks being used in the interface + // 1- Used, 0- Unused + parameter BYTE_LANES_B0 = 4'b1111, + parameter BYTE_LANES_B1 = 4'b0000, + parameter BYTE_LANES_B2 = 4'b0000, + parameter BYTE_LANES_B3 = 4'b0000, + parameter BYTE_LANES_B4 = 4'b0000, + // defines the bit lanes in I/O banks being used in the interface. Each + // parameter = 1 I/O bank = 4 byte lanes = 48 bit lanes. 1-Used, 0-Unused + parameter PHY_0_BITLANES = 48'h0000_0000_0000, + parameter PHY_1_BITLANES = 48'h0000_0000_0000, + parameter PHY_2_BITLANES = 48'h0000_0000_0000, + + // control/address/data pin mapping parameters + parameter CK_BYTE_MAP + = 144'h00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00, + parameter ADDR_MAP + = 192'h000_000_000_000_000_000_000_000_000_000_000_000_000_000_000_000, + parameter BANK_MAP = 36'h000_000_000, + parameter CAS_MAP = 12'h000, + parameter CKE_ODT_BYTE_MAP = 8'h00, + parameter CKE_MAP = 96'h000_000_000_000_000_000_000_000, + parameter ODT_MAP = 96'h000_000_000_000_000_000_000_000, + parameter CKE_ODT_AUX = "FALSE", + parameter CS_MAP = 120'h000_000_000_000_000_000_000_000_000_000, + parameter PARITY_MAP = 12'h000, + parameter RAS_MAP = 12'h000, + parameter WE_MAP = 12'h000, + parameter DQS_BYTE_MAP + = 144'h00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00, + parameter DATA0_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA1_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA2_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA3_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA4_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA5_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA6_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA7_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA8_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA9_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA10_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA11_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA12_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA13_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA14_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA15_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA16_MAP = 96'h000_000_000_000_000_000_000_000, + parameter DATA17_MAP = 96'h000_000_000_000_000_000_000_000, + parameter MASK0_MAP = 108'h000_000_000_000_000_000_000_000_000, + parameter MASK1_MAP = 108'h000_000_000_000_000_000_000_000_000, + + // This parameter must be set based on memory clock frequency + // It must be set to 4 for frequencies above 533 MHz?? (undecided) + // and set to 2 for 533 MHz and below + parameter PRE_REV3ES = "OFF", // Delay O/Ps using Phaser_Out fine dly + parameter nCK_PER_CLK = 2, // # of memory CKs per fabric CLK + parameter nCS_PER_RANK = 1, // # of unique CS outputs per rank + parameter ADDR_CMD_MODE = "1T", // ADDR/CTRL timing: "2T", "1T" + parameter BANK_TYPE = "HP_IO", // # = "HP_IO", "HPL_IO", "HR_IO", "HRL_IO" + parameter DATA_IO_PRIM_TYPE = "DEFAULT", // # = "HP_LP", "HR_LP", "DEFAULT" + parameter DATA_IO_IDLE_PWRDWN = "ON", // "ON" or "OFF" + parameter IODELAY_GRP = "IODELAY_MIG", + parameter FPGA_SPEED_GRADE = 1, + parameter IBUF_LPWR_MODE = "OFF", // input buffer low power option + parameter OUTPUT_DRV = "HIGH", // to calib_top + parameter REG_CTRL = "OFF", // to calib_top + parameter RTT_NOM = "60", // to calib_top + parameter RTT_WR = "120", // to calib_top + parameter tCK = 2500, // pS + parameter tRFC = 110000, // pS + parameter tREFI = 7800000, // pS + parameter DDR2_DQSN_ENABLE = "YES", // Enable differential DQS for DDR2 + parameter WRLVL = "OFF", // to calib_top + parameter DEBUG_PORT = "OFF", // to calib_top + parameter RANKS = 4, + parameter ODT_WIDTH = 1, + parameter ROW_WIDTH = 16, // DRAM address bus width + parameter [7:0] SLOT_1_CONFIG = 8'b0000_0000, + // calibration Address. The address given below will be used for calibration + // read and write operations. + parameter CALIB_ROW_ADD = 16'h0000,// Calibration row address + parameter CALIB_COL_ADD = 12'h000, // Calibration column address + parameter CALIB_BA_ADD = 3'h0, // Calibration bank address + // Simulation /debug options + parameter SIM_BYPASS_INIT_CAL = "OFF", + // Parameter used to force skipping + // or abbreviation of initialization + // and calibration. Overrides + // SIM_INIT_OPTION, SIM_CAL_OPTION, + // and disables various other blocks + //parameter SIM_INIT_OPTION = "SKIP_PU_DLY", // Skip various init steps + //parameter SIM_CAL_OPTION = "NONE", // Skip various calib steps + parameter REFCLK_FREQ = 200.0, // IODELAY ref clock freq (MHz) + parameter USE_CS_PORT = 1, // Support chip select output + parameter USE_DM_PORT = 1, // Support data mask output + parameter USE_ODT_PORT = 1, // Support ODT output + parameter RD_PATH_REG = 0, // optional registers in the read path + // to MC for timing improvement. + // =1 enabled, = 0 disabled + parameter IDELAY_ADJ = "ON", //ON : IDELAY-1, OFF: No change + parameter FINE_PER_BIT = "ON", //ON : Use per bit calib for complex rdlvl + parameter CENTER_COMP_MODE = "ON", //ON: use PI stg2 tap compensation + parameter PI_VAL_ADJ = "ON", //ON: PI stg2 tap -1 for centering + parameter TAPSPERKCLK = 56, + parameter POC_USE_METASTABLE_SAMP = "FALSE", + parameter SKIP_CALIB = "FALSE", + parameter FPGA_VOLT_TYPE = "N" + ) + ( + input clk, // Fabric logic clock + // To MC, calib_top, hard PHY + input clk_div2, // mem_refclk divided by 2 for PI incdec + input rst_div2, // reset in clk_div2 domain + input clk_ref, // Idelay_ctrl reference clock + // To hard PHY (external source) + input freq_refclk, // To hard PHY for Phasers + input mem_refclk, // Memory clock to hard PHY + input pll_lock, // System PLL lock signal + input sync_pulse, // 1/N sync pulse used to synchronize all PHASERS + input mmcm_ps_clk, // Phase shift clock for oclk stg3 centering + input poc_sample_pd, // Tell POC how to avoid metastability. + + input error, // Support for TG error detect + output rst_tg_mc, // Support for TG error detect + + input [11:0] device_temp, + input tempmon_sample_en, + + input dbg_sel_pi_incdec, + input dbg_sel_po_incdec, + input [DQS_CNT_WIDTH:0] dbg_byte_sel, + input dbg_pi_f_inc, + input dbg_pi_f_dec, + input dbg_po_f_inc, + input dbg_po_f_stg23_sel, + input dbg_po_f_dec, + input dbg_idel_down_all, + input dbg_idel_down_cpt, + input dbg_idel_up_all, + input dbg_idel_up_cpt, + input dbg_sel_all_idel_cpt, + input [DQS_CNT_WIDTH-1:0] dbg_sel_idel_cpt, + input rst, + input iddr_rst, + input [7:0] slot_0_present, + input [7:0] slot_1_present, + // From MC + input [nCK_PER_CLK-1:0] mc_ras_n, + input [nCK_PER_CLK-1:0] mc_cas_n, + input [nCK_PER_CLK-1:0] mc_we_n, + input [nCK_PER_CLK*ROW_WIDTH-1:0] mc_address, + input [nCK_PER_CLK*BANK_WIDTH-1:0] mc_bank, + input [CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK-1:0] mc_cs_n, + input mc_reset_n, + input [1:0] mc_odt, + input [nCK_PER_CLK-1:0] mc_cke, + // AUX - For ODT and CKE assertion during reads and writes + input [3:0] mc_aux_out0, + input [3:0] mc_aux_out1, + input mc_cmd_wren, + input mc_ctl_wren, + input [2:0] mc_cmd, + input [1:0] mc_cas_slot, + input [5:0] mc_data_offset, + input [5:0] mc_data_offset_1, + input [5:0] mc_data_offset_2, + input [1:0] mc_rank_cnt, + // Write + input mc_wrdata_en, + input [2*nCK_PER_CLK*DQ_WIDTH-1:0] mc_wrdata, + input [2*nCK_PER_CLK*(DQ_WIDTH/8)-1:0] mc_wrdata_mask, + input idle, + // DDR bus signals + output [ROW_WIDTH-1:0] ddr_addr, + output [BANK_WIDTH-1:0] ddr_ba, + output ddr_cas_n, + output [CK_WIDTH-1:0] ddr_ck_n, + output [CK_WIDTH-1:0] ddr_ck, + output [CKE_WIDTH-1:0] ddr_cke, + output [CS_WIDTH*nCS_PER_RANK-1:0] ddr_cs_n, + output [DM_WIDTH-1:0] ddr_dm, + output [ODT_WIDTH-1:0] ddr_odt, + output ddr_ras_n, + output ddr_reset_n, + output ddr_parity, + output ddr_we_n, + inout [DQ_WIDTH-1:0] ddr_dq, + inout [DQS_WIDTH-1:0] ddr_dqs_n, + inout [DQS_WIDTH-1:0] ddr_dqs, + + // Ports to be used when SKIP_CALIB="TRUE" + output calib_tap_req, + input [6:0] calib_tap_addr, + input calib_tap_load, + input [7:0] calib_tap_val, + input calib_tap_load_done, + + //phase shift clock control + output psen, + output psincdec, + input psdone, + // Debug Port Outputs + output [255:0] dbg_calib_top, + output [6*DQS_WIDTH*RANKS-1:0] dbg_cpt_first_edge_cnt, + output [6*DQS_WIDTH*RANKS-1:0] dbg_cpt_second_edge_cnt, + output [6*DQS_WIDTH*RANKS-1:0] dbg_cpt_tap_cnt, + output [5*DQS_WIDTH*RANKS-1:0] dbg_dq_idelay_tap_cnt, + output [255:0] dbg_phy_rdlvl, + output [99:0] dbg_phy_wrcal, + output [6*DQS_WIDTH-1:0] dbg_final_po_fine_tap_cnt, + output [3*DQS_WIDTH-1:0] dbg_final_po_coarse_tap_cnt, + output [DQS_WIDTH-1:0] dbg_rd_data_edge_detect, + output [2*nCK_PER_CLK*DQ_WIDTH-1:0] dbg_rddata, + output dbg_rddata_valid, + output [1:0] dbg_rdlvl_done, + output [1:0] dbg_rdlvl_err, + output [1:0] dbg_rdlvl_start, + output [5:0] dbg_tap_cnt_during_wrlvl, + output dbg_wl_edge_detect_valid, + output dbg_wrlvl_done, + output dbg_wrlvl_err, + output dbg_wrlvl_start, + output [6*DQS_WIDTH-1:0] dbg_wrlvl_fine_tap_cnt, + output [3*DQS_WIDTH-1:0] dbg_wrlvl_coarse_tap_cnt, + output [255:0] dbg_phy_wrlvl, + output dbg_pi_phaselock_start, + output dbg_pi_phaselocked_done, + output dbg_pi_phaselock_err, + output [11:0] dbg_pi_phase_locked_phy4lanes, + output dbg_pi_dqsfound_start, + output dbg_pi_dqsfound_done, + output dbg_pi_dqsfound_err, + output [11:0] dbg_pi_dqs_found_lanes_phy4lanes, + output dbg_wrcal_start, + output dbg_wrcal_done, + output dbg_wrcal_err, + output [1023:0] dbg_poc, + // FIFO status flags + output phy_mc_ctl_full, + output phy_mc_cmd_full, + output phy_mc_data_full, + // Calibration status and resultant outputs + output init_calib_complete, + output init_wrcal_complete, + output [6*RANKS-1:0] calib_rd_data_offset_0, + output [6*RANKS-1:0] calib_rd_data_offset_1, + output [6*RANKS-1:0] calib_rd_data_offset_2, + output phy_rddata_valid, + output [2*nCK_PER_CLK*DQ_WIDTH-1:0] phy_rd_data, + + output ref_dll_lock, + input rst_phaser_ref, + output [6*RANKS-1:0] dbg_rd_data_offset, + output [255:0] dbg_phy_init, + output [255:0] dbg_prbs_rdlvl, + output [255:0] dbg_dqs_found_cal, + output [5:0] dbg_pi_counter_read_val, + output [8:0] dbg_po_counter_read_val, + output dbg_oclkdelay_calib_start, + output dbg_oclkdelay_calib_done, + output [255:0] dbg_phy_oclkdelay_cal, + output [DRAM_WIDTH*16 -1:0] dbg_oclkdelay_rd_data, + output [6*DQS_WIDTH*RANKS-1:0] prbs_final_dqs_tap_cnt_r, + output [6*DQS_WIDTH*RANKS-1:0] dbg_prbs_first_edge_taps, + output [6*DQS_WIDTH*RANKS-1:0] dbg_prbs_second_edge_taps + ); + + // Calculate number of slots in the system + localparam nSLOTS = 1 + (|SLOT_1_CONFIG ? 1 : 0); + localparam CLK_PERIOD = tCK * nCK_PER_CLK; + + // Parameter used to force skipping or abbreviation of initialization + // and calibration. Overrides SIM_INIT_OPTION, SIM_CAL_OPTION, and + // disables various other blocks depending on the option selected + // This option should only be used during simulation. In the case of + // the "SKIP" option, the testbench used should also not be modeling + // propagation delays. + // Allowable options = {"NONE", "SIM_FULL", "SKIP", "FAST"} + // "NONE" = options determined by the individual parameter settings + // "SIM_FULL" = skip power-up delay. FULL calibration performed without + // averaging algorithm turned ON during window detection. + // "SKIP" = skip power-up delay. Skip calibration not yet supported. + // "FAST" = skip power-up delay, and calibrate (read leveling, write + // leveling, and phase detector) only using one DQS group, and + // apply the results to all other DQS groups. + localparam SIM_INIT_OPTION + = ((SIM_BYPASS_INIT_CAL == "SKIP") ? "SKIP_INIT" : + ((SIM_BYPASS_INIT_CAL == "FAST") || + (SIM_BYPASS_INIT_CAL == "SIM_FULL")) ? "SKIP_PU_DLY" : + "NONE"); + localparam SIM_CAL_OPTION + = ((SIM_BYPASS_INIT_CAL == "SKIP") ? "SKIP_CAL" : + (SIM_BYPASS_INIT_CAL == "FAST") ? "FAST_CAL" : + ((SIM_BYPASS_INIT_CAL == "SIM_FULL") || + (SIM_BYPASS_INIT_CAL == "SIM_INIT_CAL_FULL")) ? "FAST_WIN_DETECT" : + "NONE"); + localparam WRLVL_W + = (SIM_BYPASS_INIT_CAL == "SKIP") ? "OFF" : WRLVL; + + localparam HIGHEST_BANK = (BYTE_LANES_B4 != 0 ? 5 : (BYTE_LANES_B3 != 0 ? 4 : + (BYTE_LANES_B2 != 0 ? 3 : + (BYTE_LANES_B1 != 0 ? 2 : 1)))); + + localparam HIGHEST_LANE_B0 = BYTE_LANES_B0[3] ? 4 : BYTE_LANES_B0[2] ? 3 : + BYTE_LANES_B0[1] ? 2 : BYTE_LANES_B0[0] ? 1 : + 0; + localparam HIGHEST_LANE_B1 = BYTE_LANES_B1[3] ? 4 : BYTE_LANES_B1[2] ? 3 : + BYTE_LANES_B1[1] ? 2 : BYTE_LANES_B1[0] ? 1 : + 0; + localparam HIGHEST_LANE_B2 = BYTE_LANES_B2[3] ? 4 : BYTE_LANES_B2[2] ? 3 : + BYTE_LANES_B2[1] ? 2 : BYTE_LANES_B2[0] ? 1 : + 0; + localparam HIGHEST_LANE_B3 = BYTE_LANES_B3[3] ? 4 : BYTE_LANES_B3[2] ? 3 : + BYTE_LANES_B3[1] ? 2 : BYTE_LANES_B3[0] ? 1 : + 0; + localparam HIGHEST_LANE_B4 = BYTE_LANES_B4[3] ? 4 : BYTE_LANES_B4[2] ? 3 : + BYTE_LANES_B4[1] ? 2 : BYTE_LANES_B4[0] ? 1 : + 0; + localparam HIGHEST_LANE = + (HIGHEST_LANE_B4 != 0) ? (HIGHEST_LANE_B4+16) : + ((HIGHEST_LANE_B3 != 0) ? (HIGHEST_LANE_B3 + 12) : + ((HIGHEST_LANE_B2 != 0) ? (HIGHEST_LANE_B2 + 8) : + ((HIGHEST_LANE_B1 != 0) ? (HIGHEST_LANE_B1 + 4) : + HIGHEST_LANE_B0))); + + localparam N_CTL_LANES = ((0+(!DATA_CTL_B0[0]) & BYTE_LANES_B0[0]) + + (0+(!DATA_CTL_B0[1]) & BYTE_LANES_B0[1]) + + (0+(!DATA_CTL_B0[2]) & BYTE_LANES_B0[2]) + + (0+(!DATA_CTL_B0[3]) & BYTE_LANES_B0[3])) + + ((0+(!DATA_CTL_B1[0]) & BYTE_LANES_B1[0]) + + (0+(!DATA_CTL_B1[1]) & BYTE_LANES_B1[1]) + + (0+(!DATA_CTL_B1[2]) & BYTE_LANES_B1[2]) + + (0+(!DATA_CTL_B1[3]) & BYTE_LANES_B1[3])) + + ((0+(!DATA_CTL_B2[0]) & BYTE_LANES_B2[0]) + + (0+(!DATA_CTL_B2[1]) & BYTE_LANES_B2[1]) + + (0+(!DATA_CTL_B2[2]) & BYTE_LANES_B2[2]) + + (0+(!DATA_CTL_B2[3]) & BYTE_LANES_B2[3])) + + ((0+(!DATA_CTL_B3[0]) & BYTE_LANES_B3[0]) + + (0+(!DATA_CTL_B3[1]) & BYTE_LANES_B3[1]) + + (0+(!DATA_CTL_B3[2]) & BYTE_LANES_B3[2]) + + (0+(!DATA_CTL_B3[3]) & BYTE_LANES_B3[3])) + + ((0+(!DATA_CTL_B4[0]) & BYTE_LANES_B4[0]) + + (0+(!DATA_CTL_B4[1]) & BYTE_LANES_B4[1]) + + (0+(!DATA_CTL_B4[2]) & BYTE_LANES_B4[2]) + + (0+(!DATA_CTL_B4[3]) & BYTE_LANES_B4[3])); + + // Assuming Ck/Addr/Cmd and Control are placed in a single IO Bank + // This should be the case since the PLL should be placed adjacent + // to the same IO Bank as Ck/Addr/Cmd and Control + localparam [2:0] CTL_BANK = (((!DATA_CTL_B0[0]) & BYTE_LANES_B0[0]) | + ((!DATA_CTL_B0[1]) & BYTE_LANES_B0[1]) | + ((!DATA_CTL_B0[2]) & BYTE_LANES_B0[2]) | + ((!DATA_CTL_B0[3]) & BYTE_LANES_B0[3])) ? + 3'b000 : + (((!DATA_CTL_B1[0]) & BYTE_LANES_B1[0]) | + ((!DATA_CTL_B1[1]) & BYTE_LANES_B1[1]) | + ((!DATA_CTL_B1[2]) & BYTE_LANES_B1[2]) | + ((!DATA_CTL_B1[3]) & BYTE_LANES_B1[3])) ? + 3'b001 : + (((!DATA_CTL_B2[0]) & BYTE_LANES_B2[0]) | + ((!DATA_CTL_B2[1]) & BYTE_LANES_B2[1]) | + ((!DATA_CTL_B2[2]) & BYTE_LANES_B2[2]) | + ((!DATA_CTL_B2[3]) & BYTE_LANES_B2[3])) ? + 3'b010 : + (((!DATA_CTL_B3[0]) & BYTE_LANES_B3[0]) | + ((!DATA_CTL_B3[1]) & BYTE_LANES_B3[1]) | + ((!DATA_CTL_B3[2]) & BYTE_LANES_B3[2]) | + ((!DATA_CTL_B3[3]) & BYTE_LANES_B3[3])) ? + 3'b011 : + (((!DATA_CTL_B4[0]) & BYTE_LANES_B4[0]) | + ((!DATA_CTL_B4[1]) & BYTE_LANES_B4[1]) | + ((!DATA_CTL_B4[2]) & BYTE_LANES_B4[2]) | + ((!DATA_CTL_B4[3]) & BYTE_LANES_B4[3])) ? + 3'b100 : 3'b000; + + localparam [7:0] CTL_BYTE_LANE = (N_CTL_LANES == 4) ? 8'b11_10_01_00 : + ((N_CTL_LANES == 3) & + (((!DATA_CTL_B0[0]) & BYTE_LANES_B0[0] & + (!DATA_CTL_B0[1]) & BYTE_LANES_B0[1] & + (!DATA_CTL_B0[2]) & BYTE_LANES_B0[2]) | + ((!DATA_CTL_B1[0]) & BYTE_LANES_B1[0] & + (!DATA_CTL_B1[1]) & BYTE_LANES_B1[1] & + (!DATA_CTL_B1[2]) & BYTE_LANES_B1[2]) | + ((!DATA_CTL_B2[0]) & BYTE_LANES_B2[0] & + (!DATA_CTL_B2[1]) & BYTE_LANES_B2[1] & + (!DATA_CTL_B2[2]) & BYTE_LANES_B2[2]) | + ((!DATA_CTL_B3[0]) & BYTE_LANES_B3[0] & + (!DATA_CTL_B3[1]) & BYTE_LANES_B3[1] & + (!DATA_CTL_B3[2]) & BYTE_LANES_B3[2]) | + ((!DATA_CTL_B4[0]) & BYTE_LANES_B4[0] & + (!DATA_CTL_B4[1]) & BYTE_LANES_B4[1] & + (!DATA_CTL_B4[2]) & BYTE_LANES_B4[2]))) ? + 8'b00_10_01_00 : + ((N_CTL_LANES == 3) & + (((!DATA_CTL_B0[0]) & BYTE_LANES_B0[0] & + (!DATA_CTL_B0[1]) & BYTE_LANES_B0[1] & + (!DATA_CTL_B0[3]) & BYTE_LANES_B0[3]) | + ((!DATA_CTL_B1[0]) & BYTE_LANES_B1[0] & + (!DATA_CTL_B1[1]) & BYTE_LANES_B1[1] & + (!DATA_CTL_B1[3]) & BYTE_LANES_B1[3]) | + ((!DATA_CTL_B2[0]) & BYTE_LANES_B2[0] & + (!DATA_CTL_B2[1]) & BYTE_LANES_B2[1] & + (!DATA_CTL_B2[3]) & BYTE_LANES_B2[3]) | + ((!DATA_CTL_B3[0]) & BYTE_LANES_B3[0] & + (!DATA_CTL_B3[1]) & BYTE_LANES_B3[1] & + (!DATA_CTL_B3[3]) & BYTE_LANES_B3[3]) | + ((!DATA_CTL_B4[0]) & BYTE_LANES_B4[0] & + (!DATA_CTL_B4[1]) & BYTE_LANES_B4[1] & + (!DATA_CTL_B4[3]) & BYTE_LANES_B4[3]))) ? + 8'b00_11_01_00 : + ((N_CTL_LANES == 3) & + (((!DATA_CTL_B0[0]) & BYTE_LANES_B0[0] & + (!DATA_CTL_B0[2]) & BYTE_LANES_B0[2] & + (!DATA_CTL_B0[3]) & BYTE_LANES_B0[3]) | + ((!DATA_CTL_B1[0]) & BYTE_LANES_B1[0] & + (!DATA_CTL_B1[2]) & BYTE_LANES_B1[2] & + (!DATA_CTL_B1[3]) & BYTE_LANES_B1[3]) | + ((!DATA_CTL_B2[0]) & BYTE_LANES_B2[0] & + (!DATA_CTL_B2[2]) & BYTE_LANES_B2[2] & + (!DATA_CTL_B2[3]) & BYTE_LANES_B2[3]) | + ((!DATA_CTL_B3[0]) & BYTE_LANES_B3[0] & + (!DATA_CTL_B3[2]) & BYTE_LANES_B3[2] & + (!DATA_CTL_B3[3]) & BYTE_LANES_B3[3]) | + ((!DATA_CTL_B4[0]) & BYTE_LANES_B4[0] & + (!DATA_CTL_B4[2]) & BYTE_LANES_B4[2] & + (!DATA_CTL_B4[3]) & BYTE_LANES_B4[3]))) ? + 8'b00_11_10_00 : + ((N_CTL_LANES == 3) & + (((!DATA_CTL_B0[1]) & BYTE_LANES_B0[1] & + (!DATA_CTL_B0[2]) & BYTE_LANES_B0[2] & + (!DATA_CTL_B0[3]) & BYTE_LANES_B0[3]) | + ((!DATA_CTL_B1[1]) & BYTE_LANES_B1[1] & + (!DATA_CTL_B1[2]) & BYTE_LANES_B1[2] & + (!DATA_CTL_B1[3]) & BYTE_LANES_B1[3]) | + ((!DATA_CTL_B2[1]) & BYTE_LANES_B2[1] & + (!DATA_CTL_B2[2]) & BYTE_LANES_B2[2] & + (!DATA_CTL_B2[3]) & BYTE_LANES_B2[3]) | + ((!DATA_CTL_B3[1]) & BYTE_LANES_B3[1] & + (!DATA_CTL_B3[2]) & BYTE_LANES_B3[2] & + (!DATA_CTL_B3[3]) & BYTE_LANES_B3[3]) | + ((!DATA_CTL_B4[1]) & BYTE_LANES_B4[1] & + (!DATA_CTL_B4[2]) & BYTE_LANES_B4[2] & + (!DATA_CTL_B4[3]) & BYTE_LANES_B4[3]))) ? + 8'b00_11_10_01 : + ((N_CTL_LANES == 2) & + (((!DATA_CTL_B0[0]) & BYTE_LANES_B0[0] & + (!DATA_CTL_B0[1]) & BYTE_LANES_B0[1]) | + ((!DATA_CTL_B1[0]) & BYTE_LANES_B1[0] & + (!DATA_CTL_B1[1]) & BYTE_LANES_B1[1]) | + ((!DATA_CTL_B2[0]) & BYTE_LANES_B2[0] & + (!DATA_CTL_B2[1]) & BYTE_LANES_B2[1]) | + ((!DATA_CTL_B3[0]) & BYTE_LANES_B3[0] & + (!DATA_CTL_B3[1]) & BYTE_LANES_B3[1]) | + ((!DATA_CTL_B4[0]) & BYTE_LANES_B4[0] & + (!DATA_CTL_B4[1]) & BYTE_LANES_B4[1]))) ? + 8'b00_00_01_00 : + ((N_CTL_LANES == 2) & + (((!DATA_CTL_B0[0]) & BYTE_LANES_B0[0] & + (!DATA_CTL_B0[3]) & BYTE_LANES_B0[3]) | + ((!DATA_CTL_B1[0]) & BYTE_LANES_B1[0] & + (!DATA_CTL_B1[3]) & BYTE_LANES_B1[3]) | + ((!DATA_CTL_B2[0]) & BYTE_LANES_B2[0] & + (!DATA_CTL_B2[3]) & BYTE_LANES_B2[3]) | + ((!DATA_CTL_B3[0]) & BYTE_LANES_B3[0] & + (!DATA_CTL_B3[3]) & BYTE_LANES_B3[3]) | + ((!DATA_CTL_B4[0]) & BYTE_LANES_B4[0] & + (!DATA_CTL_B4[3]) & BYTE_LANES_B4[3]))) ? + 8'b00_00_11_00 : + ((N_CTL_LANES == 2) & + (((!DATA_CTL_B0[2]) & BYTE_LANES_B0[2] & + (!DATA_CTL_B0[3]) & BYTE_LANES_B0[3]) | + ((!DATA_CTL_B1[2]) & BYTE_LANES_B1[2] & + (!DATA_CTL_B1[3]) & BYTE_LANES_B1[3]) | + ((!DATA_CTL_B2[2]) & BYTE_LANES_B2[2] & + (!DATA_CTL_B2[3]) & BYTE_LANES_B2[3]) | + ((!DATA_CTL_B3[2]) & BYTE_LANES_B3[2] & + (!DATA_CTL_B3[3]) & BYTE_LANES_B3[3]) | + ((!DATA_CTL_B4[2]) & BYTE_LANES_B4[2] & + (!DATA_CTL_B4[3]) & BYTE_LANES_B4[3]))) ? + 8'b00_00_11_10 : + ((N_CTL_LANES == 2) & + (((!DATA_CTL_B0[1]) & BYTE_LANES_B0[1] & + (!DATA_CTL_B0[2]) & BYTE_LANES_B0[2]) | + ((!DATA_CTL_B1[1]) & BYTE_LANES_B1[1] & + (!DATA_CTL_B1[2]) & BYTE_LANES_B1[2]) | + ((!DATA_CTL_B2[1]) & BYTE_LANES_B2[1] & + (!DATA_CTL_B2[2]) & BYTE_LANES_B2[2]) | + ((!DATA_CTL_B3[1]) & BYTE_LANES_B3[1] & + (!DATA_CTL_B3[2]) & BYTE_LANES_B3[2]) | + ((!DATA_CTL_B4[1]) & BYTE_LANES_B4[1] & + (!DATA_CTL_B4[2]) & BYTE_LANES_B4[2]))) ? + 8'b00_00_10_01 : + ((N_CTL_LANES == 2) & + (((!DATA_CTL_B0[1]) & BYTE_LANES_B0[1] & + (!DATA_CTL_B0[3]) & BYTE_LANES_B0[3]) | + ((!DATA_CTL_B1[1]) & BYTE_LANES_B1[1] & + (!DATA_CTL_B1[3]) & BYTE_LANES_B1[3]) | + ((!DATA_CTL_B2[1]) & BYTE_LANES_B2[1] & + (!DATA_CTL_B2[3]) & BYTE_LANES_B2[3]) | + ((!DATA_CTL_B3[1]) & BYTE_LANES_B3[1] & + (!DATA_CTL_B3[3]) & BYTE_LANES_B3[3]) | + ((!DATA_CTL_B4[1]) & BYTE_LANES_B4[1] & + (!DATA_CTL_B4[3]) & BYTE_LANES_B4[3]))) ? + 8'b00_00_11_01 : + ((N_CTL_LANES == 2) & + (((!DATA_CTL_B0[0]) & BYTE_LANES_B0[0] & + (!DATA_CTL_B0[2]) & BYTE_LANES_B0[2]) | + ((!DATA_CTL_B1[0]) & BYTE_LANES_B1[0] & + (!DATA_CTL_B1[2]) & BYTE_LANES_B1[2]) | + ((!DATA_CTL_B2[0]) & BYTE_LANES_B2[0] & + (!DATA_CTL_B2[2]) & BYTE_LANES_B2[2]) | + ((!DATA_CTL_B3[0]) & BYTE_LANES_B3[0] & + (!DATA_CTL_B3[2]) & BYTE_LANES_B3[2]) | + ((!DATA_CTL_B4[0]) & BYTE_LANES_B4[0] & + (!DATA_CTL_B4[2]) & BYTE_LANES_B4[2]))) ? + 8'b00_00_10_00 : 8'b11_10_01_00; + + localparam PI_DIV2_INCDEC = (DRAM_TYPE == "DDR2") ? "FALSE" : (((FPGA_VOLT_TYPE == "L") && (nCK_PER_CLK == 4)) ? "TRUE" : "FALSE"); + + wire [HIGHEST_LANE*80-1:0] phy_din; + wire [HIGHEST_LANE*80-1:0] phy_dout; + wire [(HIGHEST_LANE*12)-1:0] ddr_cmd_ctl_data; + wire [(((HIGHEST_LANE+3)/4)*4)-1:0] aux_out; + wire [(CK_WIDTH * LP_DDR_CK_WIDTH)-1:0] ddr_clk; + wire phy_mc_go; + wire phy_ctl_full; + wire phy_cmd_full; + wire phy_data_full; + wire phy_pre_data_a_full; + wire if_empty /* synthesis syn_maxfan = 3 */; + wire phy_write_calib; + wire phy_read_calib; + wire [HIGHEST_BANK-1:0] rst_stg1_cal; + wire [5:0] calib_sel; + wire calib_in_common /* synthesis syn_maxfan = 10 */; + wire [HIGHEST_BANK-1:0] calib_zero_inputs; + wire [HIGHEST_BANK-1:0] calib_zero_ctrl; + wire pi_phase_locked; + wire pi_phase_locked_all; + wire pi_found_dqs; + wire pi_dqs_found_all; + wire pi_dqs_out_of_range; + wire pi_enstg2_f; + wire pi_stg2_fincdec; + wire pi_stg2_load; + wire [5:0] pi_stg2_reg_l; + wire idelay_ce; + wire idelay_inc; + wire idelay_ld; + wire [2:0] po_sel_stg2stg3; + wire [2:0] po_stg2_cincdec; + wire [2:0] po_enstg2_c; + wire [2:0] po_stg2_fincdec; + wire [2:0] po_enstg2_f; + wire [8:0] po_counter_read_val; + wire [5:0] pi_counter_read_val; + wire [2*nCK_PER_CLK*DQ_WIDTH-1:0] phy_wrdata; + reg [nCK_PER_CLK-1:0] parity; + wire [nCK_PER_CLK*ROW_WIDTH-1:0] phy_address; + wire [nCK_PER_CLK*BANK_WIDTH-1:0] phy_bank; + wire [CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK-1:0] phy_cs_n; + wire [nCK_PER_CLK-1:0] phy_ras_n; + wire [nCK_PER_CLK-1:0] phy_cas_n; + wire [nCK_PER_CLK-1:0] phy_we_n; + wire phy_reset_n; + wire [3:0] calib_aux_out; + wire [nCK_PER_CLK-1:0] calib_cke; + wire [1:0] calib_odt; + wire calib_ctl_wren; + wire calib_cmd_wren; + wire calib_wrdata_en; + wire [2:0] calib_cmd; + wire [1:0] calib_seq; + wire [5:0] calib_data_offset_0; + wire [5:0] calib_data_offset_1; + wire [5:0] calib_data_offset_2; + wire [1:0] calib_rank_cnt; + wire [1:0] calib_cas_slot; + wire [nCK_PER_CLK*ROW_WIDTH-1:0] mux_address; + wire [3:0] mux_aux_out; + wire [3:0] aux_out_map; + wire [nCK_PER_CLK*BANK_WIDTH-1:0] mux_bank; + wire [2:0] mux_cmd; + wire mux_cmd_wren; + wire [CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK-1:0] mux_cs_n; + wire mux_ctl_wren; + wire [1:0] mux_cas_slot; + wire [5:0] mux_data_offset; + wire [5:0] mux_data_offset_1; + wire [5:0] mux_data_offset_2; + wire [nCK_PER_CLK-1:0] mux_ras_n; + wire [nCK_PER_CLK-1:0] mux_cas_n; + wire [1:0] mux_rank_cnt; + wire mux_reset_n; + wire [nCK_PER_CLK-1:0] mux_we_n; + wire [2*nCK_PER_CLK*DQ_WIDTH-1:0] mux_wrdata; + wire [2*nCK_PER_CLK*(DQ_WIDTH/8)-1:0] mux_wrdata_mask; + wire mux_wrdata_en; + wire [nCK_PER_CLK-1:0] mux_cke ; + wire [1:0] mux_odt ; + wire phy_if_empty_def; + wire phy_if_reset; + wire phy_init_data_sel; + wire [2*nCK_PER_CLK*DQ_WIDTH-1:0] rd_data_map; + wire phy_rddata_valid_w; + reg rddata_valid_reg; + reg [2*nCK_PER_CLK*DQ_WIDTH-1:0] rd_data_reg; + wire [4:0] idelaye2_init_val; + wire [5:0] oclkdelay_init_val; + wire po_counter_load_en; + wire [DQS_CNT_WIDTH:0] byte_sel_cnt; + wire [DRAM_WIDTH-1:0] fine_delay_incdec_pb; + wire fine_delay_sel; + wire pd_out; + + //*************************************************************************** + + assign dbg_rddata_valid = rddata_valid_reg; + assign dbg_rddata = rd_data_reg; + + assign dbg_rd_data_offset = calib_rd_data_offset_0; + assign dbg_pi_phaselocked_done = pi_phase_locked_all; + + assign dbg_po_counter_read_val = po_counter_read_val; + assign dbg_pi_counter_read_val = pi_counter_read_val; + + //*************************************************************************** + + //*************************************************************************** + // Clock domain crossing from DIV4 to DIV2 for Phaser_In stage2 incdec + //*************************************************************************** + //localparam PI_DIV2_INCDEC = "TRUE"; + + wire pi_fine_enable; + wire pi_fine_inc; + wire pi_counter_load_en; + wire [5:0] pi_counter_load_val; + wire [HIGHEST_BANK-1:0] pi_rst_dqs_find; + + generate + if (PI_DIV2_INCDEC == "TRUE") begin: div2_incdec + // 3-stage synchronizer registers + (* ASYNC_REG = "TRUE" *) reg pi_enstg2_f_div2r1; + (* ASYNC_REG = "TRUE" *) reg pi_enstg2_f_div2r2; + (* ASYNC_REG = "TRUE" *) reg pi_enstg2_f_div2r3; + (* ASYNC_REG = "TRUE" *) reg pi_stg2_fincdec_div2r1; + (* ASYNC_REG = "TRUE" *) reg pi_stg2_fincdec_div2r2; + (* ASYNC_REG = "TRUE" *) reg pi_stg2_fincdec_div2r3; + (* ASYNC_REG = "TRUE" *) reg pi_stg2_load_div2r1; + (* ASYNC_REG = "TRUE" *) reg pi_stg2_load_div2r2; + (* ASYNC_REG = "TRUE" *) reg pi_stg2_load_div2r3; + (* ASYNC_REG = "TRUE" *) reg [HIGHEST_BANK-1:0] rst_stg1_cal_div2r1; + (* ASYNC_REG = "TRUE" *) reg [HIGHEST_BANK-1:0] rst_stg1_cal_div2r2; + (* ASYNC_REG = "TRUE" *) reg [5:0] pi_stg2_reg_l_div2r1; + (* ASYNC_REG = "TRUE" *) reg [5:0] pi_stg2_reg_l_div2r2; + (* ASYNC_REG = "TRUE" *) reg [5:0] pi_stg2_reg_l_div2r3; + + reg pi_stg2_fine_enable, pi_stg2_fine_enable_r1; + reg pi_stg2_fine_inc, pi_stg2_fine_inc_r1; + reg pi_stg2_load_en, pi_stg2_load_en_r1; + reg [5:0] pi_stg2_load_val; + (* ASYNC_REG = "TRUE" *) reg [HIGHEST_BANK-1:0] pi_dqs_find_rst; + + // 3-stage synchronizer + always @(posedge clk_div2) begin + //Phaser_In fine enable + pi_enstg2_f_div2r1 <= #TCQ pi_enstg2_f; + pi_enstg2_f_div2r2 <= #TCQ pi_enstg2_f_div2r1; + pi_enstg2_f_div2r3 <= #TCQ pi_enstg2_f_div2r2; + //Phaser_In fine incdec + pi_stg2_fincdec_div2r1 <= #TCQ pi_stg2_fincdec; + pi_stg2_fincdec_div2r2 <= #TCQ pi_stg2_fincdec_div2r1; + pi_stg2_fincdec_div2r3 <= #TCQ pi_stg2_fincdec_div2r2; + //Phaser_In stage2 load + pi_stg2_load_div2r1 <= #TCQ pi_stg2_load; + pi_stg2_load_div2r2 <= #TCQ pi_stg2_load_div2r1; + pi_stg2_load_div2r3 <= #TCQ pi_stg2_load_div2r2; + //Phaser_In stage2 load value + pi_stg2_reg_l_div2r1 <= #TCQ pi_stg2_reg_l; + pi_stg2_reg_l_div2r2 <= #TCQ pi_stg2_reg_l_div2r1; + pi_stg2_reg_l_div2r3 <= #TCQ pi_stg2_reg_l_div2r2; + //Phaser_In reset DQSFOUND + rst_stg1_cal_div2r1 <= #TCQ rst_stg1_cal; + rst_stg1_cal_div2r2 <= #TCQ rst_stg1_cal_div2r1; + pi_dqs_find_rst <= #TCQ rst_stg1_cal_div2r2; + end + + always @(posedge clk_div2) begin + pi_stg2_fine_enable_r1 <= #TCQ pi_stg2_fine_enable; + pi_stg2_fine_inc_r1 <= #TCQ pi_stg2_fine_inc; + pi_stg2_load_en_r1 <= #TCQ pi_stg2_load_en; + end + + always @(posedge clk_div2) begin + if (rst_div2 || pi_stg2_fine_enable || pi_stg2_fine_enable_r1) + pi_stg2_fine_enable <= #TCQ 1'b0; + else if (pi_enstg2_f_div2r3) + pi_stg2_fine_enable <= #TCQ 1'b1; + end + + always @(posedge clk_div2) begin + if (rst_div2 || pi_stg2_fine_inc || pi_stg2_fine_inc_r1) + pi_stg2_fine_inc <= #TCQ 1'b0; + else if (pi_stg2_fincdec_div2r3) + pi_stg2_fine_inc <= #TCQ 1'b1; + end + + always @(posedge clk_div2) begin + if (rst_div2 || pi_stg2_load_en || pi_stg2_load_en_r1) + pi_stg2_load_en <= #TCQ 1'b0; + else if (pi_stg2_load_div2r3) + pi_stg2_load_en <= #TCQ 1'b1; + end + + always @(posedge clk_div2) begin + if (rst_div2 || pi_stg2_load_en || pi_stg2_load_en_r1) + pi_stg2_load_val <= #TCQ 6'd0; + else if (pi_stg2_load_div2r3) + pi_stg2_load_val <= #TCQ pi_stg2_reg_l_div2r3; + end + + + assign pi_fine_enable = pi_stg2_fine_enable; + assign pi_fine_inc = pi_stg2_fine_inc; + assign pi_counter_load_en = pi_stg2_load_en; + assign pi_counter_load_val = pi_stg2_load_val; + assign pi_rst_dqs_find = pi_dqs_find_rst; + + end else begin: div4_incdec + assign pi_fine_enable = pi_enstg2_f; + assign pi_fine_inc = pi_stg2_fincdec; + assign pi_counter_load_en = pi_stg2_load; + assign pi_counter_load_val = pi_stg2_reg_l; + assign pi_rst_dqs_find = rst_stg1_cal; + + end + endgenerate + + genvar i; + generate + for (i = 0; i < CK_WIDTH; i = i+1) begin: clock_gen + assign ddr_ck[i] = ddr_clk[LP_DDR_CK_WIDTH * i]; + assign ddr_ck_n[i] = ddr_clk[(LP_DDR_CK_WIDTH * i) + 1]; + end + endgenerate + + //*************************************************************************** + // During memory initialization and calibration the calibration logic drives + // the memory signals. After calibration is complete the memory controller + // drives the memory signals. + // Do not expect timing issues in 4:1 mode at 800 MHz/1600 Mbps + //*************************************************************************** + + wire [CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK-1:0] mc_cs_n_temp ; + genvar v ; + + generate + if((REG_CTRL == "ON") && (DRAM_TYPE == "DDR3") && (RANKS == 1) && (nCS_PER_RANK ==2)) begin : cs_rdimm + for(v = 0 ; v < CS_WIDTH*nCS_PER_RANK*nCK_PER_CLK ; v = v+1 ) begin + if((v%(CS_WIDTH*nCS_PER_RANK)) == 0) begin + assign mc_cs_n_temp[v] = mc_cs_n[v] ; + end else begin + assign mc_cs_n_temp[v] = 'b1 ; + end + end + end else begin + assign mc_cs_n_temp = mc_cs_n ; + end + endgenerate + + assign mux_wrdata = (phy_init_data_sel | init_wrcal_complete) ? mc_wrdata : phy_wrdata; + assign mux_wrdata_mask = (phy_init_data_sel | init_wrcal_complete) ? mc_wrdata_mask : 'b0; + assign mux_address = (phy_init_data_sel | init_wrcal_complete) ? mc_address : phy_address; + assign mux_bank = (phy_init_data_sel | init_wrcal_complete) ? mc_bank : phy_bank; + assign mux_cs_n = (phy_init_data_sel | init_wrcal_complete) ? mc_cs_n_temp : phy_cs_n; + assign mux_ras_n = (phy_init_data_sel | init_wrcal_complete) ? mc_ras_n : phy_ras_n; + assign mux_cas_n = (phy_init_data_sel | init_wrcal_complete) ? mc_cas_n : phy_cas_n; + assign mux_we_n = (phy_init_data_sel | init_wrcal_complete) ? mc_we_n : phy_we_n; + assign mux_reset_n = (phy_init_data_sel | init_wrcal_complete) ? mc_reset_n : phy_reset_n; + assign mux_aux_out = (phy_init_data_sel | init_wrcal_complete) ? mc_aux_out0 : calib_aux_out; + assign mux_odt = (phy_init_data_sel | init_wrcal_complete) ? mc_odt : calib_odt ; + assign mux_cke = (phy_init_data_sel | init_wrcal_complete) ? mc_cke : calib_cke ; + assign mux_cmd_wren = (phy_init_data_sel | init_wrcal_complete) ? mc_cmd_wren : + calib_cmd_wren; + assign mux_ctl_wren = (phy_init_data_sel | init_wrcal_complete) ? mc_ctl_wren : + calib_ctl_wren; + assign mux_wrdata_en = (phy_init_data_sel | init_wrcal_complete) ? mc_wrdata_en : + calib_wrdata_en; + assign mux_cmd = (phy_init_data_sel | init_wrcal_complete) ? mc_cmd : calib_cmd; + assign mux_cas_slot = (phy_init_data_sel | init_wrcal_complete) ? mc_cas_slot : calib_cas_slot; + assign mux_data_offset = (phy_init_data_sel | init_wrcal_complete) ? mc_data_offset : + calib_data_offset_0; + assign mux_data_offset_1 = (phy_init_data_sel | init_wrcal_complete) ? mc_data_offset_1 : + calib_data_offset_1; + assign mux_data_offset_2 = (phy_init_data_sel | init_wrcal_complete) ? mc_data_offset_2 : + calib_data_offset_2; + // Reserved field. Hard coded to 2'b00 irrespective of the number of ranks. CR 643601 + assign mux_rank_cnt = 2'b00; + + + // Assigning cke & odt for DDR2 & DDR3 + // No changes for DDR3 & DDR2 dual rank + // DDR2 single rank systems might potentially need 3 odt signals. + // Aux_out[2] will have the odt toggled by phy and controller + // wiring aux_out[2] to 0 & 3. Depending upon the odt parameter + // all of the three odt bits or some of them might be used. + // mapping done in mc_phy_wrapper module + generate + if(CKE_ODT_AUX == "TRUE") begin + assign aux_out_map = ((DRAM_TYPE == "DDR2") && (RANKS == 1)) ? + {mux_aux_out[1],mux_aux_out[1],mux_aux_out[1],mux_aux_out[0]} : + mux_aux_out; + end else begin + assign aux_out_map = 4'b0000 ; + end + endgenerate + + assign init_calib_complete = phy_init_data_sel; + + assign phy_mc_ctl_full = phy_ctl_full; + assign phy_mc_cmd_full = phy_cmd_full; + assign phy_mc_data_full = phy_pre_data_a_full; + + //*************************************************************************** + // Generate parity for DDR3 RDIMM. + //*************************************************************************** + + generate + if ((DRAM_TYPE == "DDR3") && (REG_CTRL == "ON")) begin: gen_ddr3_parity + if (nCK_PER_CLK == 4) begin + always @(posedge clk) begin + parity[0] <= #TCQ (^{mux_address[(ROW_WIDTH*4)-1:ROW_WIDTH*3], + mux_bank[(BANK_WIDTH*4)-1:BANK_WIDTH*3], + mux_cas_n[3], mux_ras_n[3], mux_we_n[3]}); + end + always @(*) begin + parity[1] = (^{mux_address[ROW_WIDTH-1:0], mux_bank[BANK_WIDTH-1:0], + mux_cas_n[0],mux_ras_n[0], mux_we_n[0]}); + parity[2] = (^{mux_address[(ROW_WIDTH*2)-1:ROW_WIDTH], + mux_bank[(BANK_WIDTH*2)-1:BANK_WIDTH], + mux_cas_n[1], mux_ras_n[1], mux_we_n[1]}); + parity[3] = (^{mux_address[(ROW_WIDTH*3)-1:ROW_WIDTH*2], + mux_bank[(BANK_WIDTH*3)-1:BANK_WIDTH*2], + mux_cas_n[2],mux_ras_n[2], mux_we_n[2]}); + end + end else begin + always @(posedge clk) begin + parity[0] <= #TCQ(^{mux_address[(ROW_WIDTH*2)-1:ROW_WIDTH], + mux_bank[(BANK_WIDTH*2)-1:BANK_WIDTH], + mux_cas_n[1], mux_ras_n[1], mux_we_n[1]}); + end + always @(*) begin + parity[1] = (^{mux_address[ROW_WIDTH-1:0], + mux_bank[BANK_WIDTH-1:0], + mux_cas_n[0], mux_ras_n[0], mux_we_n[0]}); + end + end + end else begin: gen_ddr3_noparity + if (nCK_PER_CLK == 4) begin + always @(posedge clk) begin + parity[0] <= #TCQ 1'b0; + parity[1] <= #TCQ 1'b0; + parity[2] <= #TCQ 1'b0; + parity[3] <= #TCQ 1'b0; + end + end else begin + always @(posedge clk) begin + parity[0] <= #TCQ 1'b0; + parity[1] <= #TCQ 1'b0; + end + end + end + endgenerate + + //*************************************************************************** + // Code for optional register stage in read path to MC for timing + //*************************************************************************** + generate + if(RD_PATH_REG == 1)begin:RD_REG_TIMING + always @(posedge clk)begin + rddata_valid_reg <= #TCQ phy_rddata_valid_w; + rd_data_reg <= #TCQ rd_data_map; + end // always @ (posedge clk) + end else begin : RD_REG_NO_TIMING // block: RD_REG_TIMING + always @(phy_rddata_valid_w or rd_data_map)begin + rddata_valid_reg = phy_rddata_valid_w; + rd_data_reg = rd_data_map; + end + end + endgenerate + + assign phy_rddata_valid = rddata_valid_reg; + assign phy_rd_data = rd_data_reg; + + //*************************************************************************** + // Hard PHY and accompanying bit mapping logic + //*************************************************************************** + + mig_7series_v4_0_ddr_mc_phy_wrapper # + ( + .TCQ (TCQ), + .tCK (tCK), + .BANK_TYPE (BANK_TYPE), + .DATA_IO_PRIM_TYPE (DATA_IO_PRIM_TYPE), + .DATA_IO_IDLE_PWRDWN(DATA_IO_IDLE_PWRDWN), + .IODELAY_GRP (IODELAY_GRP), + .FPGA_SPEED_GRADE (FPGA_SPEED_GRADE), + .nCK_PER_CLK (nCK_PER_CLK), + .nCS_PER_RANK (nCS_PER_RANK), + .BANK_WIDTH (BANK_WIDTH), + .CKE_WIDTH (CKE_WIDTH), + .CS_WIDTH (CS_WIDTH), + .CK_WIDTH (CK_WIDTH), + .LP_DDR_CK_WIDTH (LP_DDR_CK_WIDTH), + .DDR2_DQSN_ENABLE (DDR2_DQSN_ENABLE), + .CWL (CWL), + .DM_WIDTH (DM_WIDTH), + .DQ_WIDTH (DQ_WIDTH), + .DQS_CNT_WIDTH (DQS_CNT_WIDTH), + .DQS_WIDTH (DQS_WIDTH), + .DRAM_TYPE (DRAM_TYPE), + .RANKS (RANKS), + .ODT_WIDTH (ODT_WIDTH), + .REG_CTRL (REG_CTRL), + .ROW_WIDTH (ROW_WIDTH), + .USE_CS_PORT (USE_CS_PORT), + .USE_DM_PORT (USE_DM_PORT), + .USE_ODT_PORT (USE_ODT_PORT), + .IBUF_LPWR_MODE (IBUF_LPWR_MODE), + .PHYCTL_CMD_FIFO (PHYCTL_CMD_FIFO), + .DATA_CTL_B0 (DATA_CTL_B0), + .DATA_CTL_B1 (DATA_CTL_B1), + .DATA_CTL_B2 (DATA_CTL_B2), + .DATA_CTL_B3 (DATA_CTL_B3), + .DATA_CTL_B4 (DATA_CTL_B4), + .BYTE_LANES_B0 (BYTE_LANES_B0), + .BYTE_LANES_B1 (BYTE_LANES_B1), + .BYTE_LANES_B2 (BYTE_LANES_B2), + .BYTE_LANES_B3 (BYTE_LANES_B3), + .BYTE_LANES_B4 (BYTE_LANES_B4), + .PHY_0_BITLANES (PHY_0_BITLANES), + .PHY_1_BITLANES (PHY_1_BITLANES), + .PHY_2_BITLANES (PHY_2_BITLANES), + .HIGHEST_BANK (HIGHEST_BANK), + .HIGHEST_LANE (HIGHEST_LANE), + .CK_BYTE_MAP (CK_BYTE_MAP), + .ADDR_MAP (ADDR_MAP), + .BANK_MAP (BANK_MAP), + .CAS_MAP (CAS_MAP), + .CKE_ODT_BYTE_MAP (CKE_ODT_BYTE_MAP), + .CKE_MAP (CKE_MAP), + .ODT_MAP (ODT_MAP), + .CKE_ODT_AUX (CKE_ODT_AUX), + .CS_MAP (CS_MAP), + .PARITY_MAP (PARITY_MAP), + .RAS_MAP (RAS_MAP), + .WE_MAP (WE_MAP), + .DQS_BYTE_MAP (DQS_BYTE_MAP), + .DATA0_MAP (DATA0_MAP), + .DATA1_MAP (DATA1_MAP), + .DATA2_MAP (DATA2_MAP), + .DATA3_MAP (DATA3_MAP), + .DATA4_MAP (DATA4_MAP), + .DATA5_MAP (DATA5_MAP), + .DATA6_MAP (DATA6_MAP), + .DATA7_MAP (DATA7_MAP), + .DATA8_MAP (DATA8_MAP), + .DATA9_MAP (DATA9_MAP), + .DATA10_MAP (DATA10_MAP), + .DATA11_MAP (DATA11_MAP), + .DATA12_MAP (DATA12_MAP), + .DATA13_MAP (DATA13_MAP), + .DATA14_MAP (DATA14_MAP), + .DATA15_MAP (DATA15_MAP), + .DATA16_MAP (DATA16_MAP), + .DATA17_MAP (DATA17_MAP), + .MASK0_MAP (MASK0_MAP), + .MASK1_MAP (MASK1_MAP), + .SIM_CAL_OPTION (SIM_CAL_OPTION), + .MASTER_PHY_CTL (MASTER_PHY_CTL), + .DRAM_WIDTH (DRAM_WIDTH), + .POC_USE_METASTABLE_SAMP (POC_USE_METASTABLE_SAMP), + .PI_DIV2_INCDEC (PI_DIV2_INCDEC) + ) + u_ddr_mc_phy_wrapper + ( + .rst (rst), + .iddr_rst (iddr_rst), + .clk (clk), + .clk_div2 (clk_div2), + // For memory frequencies between 400~1066 MHz freq_refclk = mem_refclk + // For memory frequencies below 400 MHz mem_refclk = mem_refclk and + // freq_refclk = 2x or 4x mem_refclk such that it remains in the + // 400~1066 MHz range + .freq_refclk (freq_refclk), + .mem_refclk (mem_refclk), + .mmcm_ps_clk (mmcm_ps_clk), + .pll_lock (pll_lock), + .sync_pulse (sync_pulse), + .idelayctrl_refclk (clk_ref), + .phy_cmd_wr_en (mux_cmd_wren), + .phy_data_wr_en (mux_wrdata_en), + // phy_ctl_wd = {ACTPRE[31:30],EventDelay[29:25],seq[24:23], + // DataOffset[22:17],HiIndex[16:15],LowIndex[14:12], + // AuxOut[11:8],ControlOffset[7:3],PHYCmd[2:0]} + // The fields ACTPRE, and BankCount are only used + // when the hard PHY counters are used by the MC. + .phy_ctl_wd ({5'd0, mux_cas_slot, calib_seq, mux_data_offset, + mux_rank_cnt, 3'd0, aux_out_map, + 5'd0, mux_cmd}), + .phy_ctl_wr (mux_ctl_wren), + .phy_if_empty_def (phy_if_empty_def), + .phy_if_reset (phy_if_reset), + .data_offset_1 (mux_data_offset_1), + .data_offset_2 (mux_data_offset_2), + .aux_in_1 (aux_out_map), + .aux_in_2 (aux_out_map), + .idelaye2_init_val (idelaye2_init_val), + .oclkdelay_init_val (oclkdelay_init_val), + .if_empty (if_empty), + .phy_ctl_full (phy_ctl_full), + .phy_cmd_full (phy_cmd_full), + .phy_data_full (phy_data_full), + .phy_pre_data_a_full (phy_pre_data_a_full), + .ddr_clk (ddr_clk), + .phy_mc_go (phy_mc_go), + .phy_write_calib (phy_write_calib), + .phy_read_calib (phy_read_calib), + .po_fine_enable (po_enstg2_f), + .po_coarse_enable (po_enstg2_c), + .po_fine_inc (po_stg2_fincdec), + .po_coarse_inc (po_stg2_cincdec), + .po_counter_load_en (po_counter_load_en), + .po_counter_read_en (1'b1), + .po_sel_fine_oclk_delay (po_sel_stg2stg3), + .po_counter_load_val (), + .po_counter_read_val (po_counter_read_val), + .pi_rst_dqs_find (pi_rst_dqs_find), + .pi_fine_enable (pi_fine_enable), + .pi_fine_inc (pi_fine_inc), + .pi_counter_load_en (pi_counter_load_en), + .pi_counter_load_val (pi_counter_load_val), + .pi_counter_read_val (pi_counter_read_val), + .idelay_ce (idelay_ce), + .idelay_inc (idelay_inc), + .idelay_ld (idelay_ld), + .pi_phase_locked (pi_phase_locked), + .pi_phase_locked_all (pi_phase_locked_all), + .pi_dqs_found (pi_found_dqs), + .pi_dqs_found_all (pi_dqs_found_all), + // Currently not being used. May be used in future if periodic reads + // become a requirement. This output could also be used to signal a + // catastrophic failure in read capture and the need for re-cal + .pi_dqs_out_of_range (pi_dqs_out_of_range), + .phy_init_data_sel (phy_init_data_sel), + .calib_sel (calib_sel), + .calib_in_common (calib_in_common), + .calib_zero_inputs (calib_zero_inputs), + .calib_zero_ctrl (calib_zero_ctrl), + .mux_address (mux_address), + .mux_bank (mux_bank), + .mux_cs_n (mux_cs_n), + .mux_ras_n (mux_ras_n), + .mux_cas_n (mux_cas_n), + .mux_we_n (mux_we_n), + .mux_reset_n (mux_reset_n), + .parity_in (parity), + .mux_wrdata (mux_wrdata), + .mux_wrdata_mask (mux_wrdata_mask), + .mux_odt (mux_odt), + .mux_cke (mux_cke), + .idle (idle), + .rd_data (rd_data_map), + .ddr_addr (ddr_addr), + .ddr_ba (ddr_ba), + .ddr_cas_n (ddr_cas_n), + .ddr_cke (ddr_cke), + .ddr_cs_n (ddr_cs_n), + .ddr_dm (ddr_dm), + .ddr_odt (ddr_odt), + .ddr_parity (ddr_parity), + .ddr_ras_n (ddr_ras_n), + .ddr_we_n (ddr_we_n), + .ddr_dq (ddr_dq), + .ddr_dqs (ddr_dqs), + .ddr_dqs_n (ddr_dqs_n), + .ddr_reset_n (ddr_reset_n), + .dbg_pi_counter_read_en (1'b1), + .ref_dll_lock (ref_dll_lock), + .rst_phaser_ref (rst_phaser_ref), + .dbg_pi_phase_locked_phy4lanes (dbg_pi_phase_locked_phy4lanes), + .dbg_pi_dqs_found_lanes_phy4lanes (dbg_pi_dqs_found_lanes_phy4lanes), + .byte_sel_cnt (byte_sel_cnt), + .pd_out (pd_out), + .fine_delay_incdec_pb (fine_delay_incdec_pb), + .fine_delay_sel (fine_delay_sel) + ); + + //*************************************************************************** + // Soft memory initialization and calibration logic + //*************************************************************************** + + mig_7series_v4_0_ddr_calib_top # + ( + .TCQ (TCQ), + .DDR3_VDD_OP_VOLT (DDR3_VDD_OP_VOLT), + .nCK_PER_CLK (nCK_PER_CLK), + .PRE_REV3ES (PRE_REV3ES), + .tCK (tCK), + .CLK_PERIOD (CLK_PERIOD), + .N_CTL_LANES (N_CTL_LANES), + .CTL_BYTE_LANE (CTL_BYTE_LANE), + .CTL_BANK (CTL_BANK), + .DRAM_TYPE (DRAM_TYPE), + .PRBS_WIDTH (8), + .DQS_BYTE_MAP (DQS_BYTE_MAP), + .HIGHEST_BANK (HIGHEST_BANK), + .BANK_TYPE (BANK_TYPE), + .HIGHEST_LANE (HIGHEST_LANE), + .BYTE_LANES_B0 (BYTE_LANES_B0), + .BYTE_LANES_B1 (BYTE_LANES_B1), + .BYTE_LANES_B2 (BYTE_LANES_B2), + .BYTE_LANES_B3 (BYTE_LANES_B3), + .BYTE_LANES_B4 (BYTE_LANES_B4), + .DATA_CTL_B0 (DATA_CTL_B0), + .DATA_CTL_B1 (DATA_CTL_B1), + .DATA_CTL_B2 (DATA_CTL_B2), + .DATA_CTL_B3 (DATA_CTL_B3), + .DATA_CTL_B4 (DATA_CTL_B4), + .SLOT_1_CONFIG (SLOT_1_CONFIG), + .BANK_WIDTH (BANK_WIDTH), + .CA_MIRROR (CA_MIRROR), + .COL_WIDTH (COL_WIDTH), + .CKE_ODT_AUX (CKE_ODT_AUX), + .nCS_PER_RANK (nCS_PER_RANK), + .DQ_WIDTH (DQ_WIDTH), + .DQS_CNT_WIDTH (DQS_CNT_WIDTH), + .DQS_WIDTH (DQS_WIDTH), + .DRAM_WIDTH (DRAM_WIDTH), + .ROW_WIDTH (ROW_WIDTH), + .RANKS (RANKS), + .CS_WIDTH (CS_WIDTH), + .CKE_WIDTH (CKE_WIDTH), + .DDR2_DQSN_ENABLE (DDR2_DQSN_ENABLE), + .PER_BIT_DESKEW ("OFF"), + .CALIB_ROW_ADD (CALIB_ROW_ADD), + .CALIB_COL_ADD (CALIB_COL_ADD), + .CALIB_BA_ADD (CALIB_BA_ADD), + .AL (AL), + .BURST_MODE (BURST_MODE), + .BURST_TYPE (BURST_TYPE), + .nCL (CL), + .nCWL (CWL), + .tRFC (tRFC), + .tREFI (tREFI), + .OUTPUT_DRV (OUTPUT_DRV), + .REG_CTRL (REG_CTRL), + .ADDR_CMD_MODE (ADDR_CMD_MODE), + .RTT_NOM (RTT_NOM), + .RTT_WR (RTT_WR), + .WRLVL (WRLVL_W), + .USE_ODT_PORT (USE_ODT_PORT), + .SIM_INIT_OPTION (SIM_INIT_OPTION), + .SIM_CAL_OPTION (SIM_CAL_OPTION), + .DEBUG_PORT (DEBUG_PORT), + .IDELAY_ADJ (IDELAY_ADJ), + .FINE_PER_BIT (FINE_PER_BIT), + .CENTER_COMP_MODE (CENTER_COMP_MODE), + .PI_VAL_ADJ (PI_VAL_ADJ), + .TAPSPERKCLK (TAPSPERKCLK), + .POC_USE_METASTABLE_SAMP (POC_USE_METASTABLE_SAMP), + .SKIP_CALIB (SKIP_CALIB), + .PI_DIV2_INCDEC (PI_DIV2_INCDEC) + ) + u_ddr_calib_top + ( + .clk (clk), + .rst (rst), + + .tg_err (error), + .rst_tg_mc (rst_tg_mc), + + .slot_0_present (slot_0_present), + .slot_1_present (slot_1_present), + // PHY Control Block and IN_FIFO status + .phy_ctl_ready (phy_mc_go), + .phy_ctl_full (1'b0), + .phy_cmd_full (1'b0), + .phy_data_full (1'b0), + .phy_if_empty (if_empty), + .idelaye2_init_val (idelaye2_init_val), + .oclkdelay_init_val (oclkdelay_init_val), + // From calib logic To data IN_FIFO + // DQ IDELAY tap value from Calib logic + // port to be added to mc_phy by Gary + .dlyval_dq (), + // hard PHY calibration modes + .write_calib (phy_write_calib), + .read_calib (phy_read_calib), + // DQS count and ck/addr/cmd to be mapped to calib_sel + // based on parameter that defines placement of ctl lanes + // and DQS byte groups in each bank. When phy_write_calib + // is de-asserted calib_sel should select CK/addr/cmd/ctl. + .calib_sel (calib_sel), + .calib_in_common (calib_in_common), + .calib_zero_inputs (calib_zero_inputs), + .calib_zero_ctrl (calib_zero_ctrl), + .phy_if_empty_def (phy_if_empty_def), + .phy_if_reset (phy_if_reset), + // Signals from calib logic to be MUXED with MC + // signals before sending to hard PHY + .calib_ctl_wren (calib_ctl_wren), + .calib_cmd_wren (calib_cmd_wren), + .calib_seq (calib_seq), + .calib_aux_out (calib_aux_out), + .calib_odt (calib_odt), + .calib_cke (calib_cke), + .calib_cmd (calib_cmd), + .calib_wrdata_en (calib_wrdata_en), + .calib_rank_cnt (calib_rank_cnt), + .calib_cas_slot (calib_cas_slot), + .calib_data_offset_0 (calib_data_offset_0), + .calib_data_offset_1 (calib_data_offset_1), + .calib_data_offset_2 (calib_data_offset_2), + .phy_reset_n (phy_reset_n), + .phy_address (phy_address), + .phy_bank (phy_bank), + .phy_cs_n (phy_cs_n), + .phy_ras_n (phy_ras_n), + .phy_cas_n (phy_cas_n), + .phy_we_n (phy_we_n), + .phy_wrdata (phy_wrdata), + // DQS Phaser_IN calibration/status signals + .pi_phaselocked (pi_phase_locked), + .pi_phase_locked_all (pi_phase_locked_all), + .pi_found_dqs (pi_found_dqs), + .pi_dqs_found_all (pi_dqs_found_all), + .pi_dqs_found_lanes (dbg_pi_dqs_found_lanes_phy4lanes), + .pi_rst_stg1_cal (rst_stg1_cal), + .pi_en_stg2_f (pi_enstg2_f), + .pi_stg2_f_incdec (pi_stg2_fincdec), + .pi_stg2_load (pi_stg2_load), + .pi_stg2_reg_l (pi_stg2_reg_l), + .pi_counter_read_val (pi_counter_read_val), + .device_temp (device_temp), + .tempmon_sample_en (tempmon_sample_en), + // IDELAY tap enable and inc signals + .idelay_ce (idelay_ce), + .idelay_inc (idelay_inc), + .idelay_ld (idelay_ld), + // DQS Phaser_OUT calibration/status signals + .po_sel_stg2stg3 (po_sel_stg2stg3), + .po_stg2_c_incdec (po_stg2_cincdec), + .po_en_stg2_c (po_enstg2_c), + .po_stg2_f_incdec (po_stg2_fincdec), + .po_en_stg2_f (po_enstg2_f), + .po_counter_load_en (po_counter_load_en), + .po_counter_read_val (po_counter_read_val), + // From data IN_FIFO To Calib logic and MC/UI + .phy_rddata (rd_data_map), + // From calib logic To MC + .phy_rddata_valid (phy_rddata_valid_w), + .calib_rd_data_offset_0 (calib_rd_data_offset_0), + .calib_rd_data_offset_1 (calib_rd_data_offset_1), + .calib_rd_data_offset_2 (calib_rd_data_offset_2), + .calib_writes (), + // Mem Init and Calibration status To MC + .init_calib_complete (phy_init_data_sel), + .init_wrcal_complete (init_wrcal_complete), + // Debug Error signals + .pi_phase_locked_err (dbg_pi_phaselock_err), + .pi_dqsfound_err (dbg_pi_dqsfound_err), + .wrcal_err (dbg_wrcal_err), + //used for oclk stg3 centering + .pd_out (pd_out), + .psen (psen), + .psincdec (psincdec), + .psdone (psdone), + .poc_sample_pd (poc_sample_pd), + .calib_tap_req (calib_tap_req), + .calib_tap_addr (calib_tap_addr), + .calib_tap_load (calib_tap_load), + .calib_tap_val (calib_tap_val), + .calib_tap_load_done (calib_tap_load_done), + // Debug Signals + .dbg_pi_phaselock_start (dbg_pi_phaselock_start), + .dbg_pi_dqsfound_start (dbg_pi_dqsfound_start), + .dbg_pi_dqsfound_done (dbg_pi_dqsfound_done), + .dbg_wrlvl_start (dbg_wrlvl_start), + .dbg_wrlvl_done (dbg_wrlvl_done), + .dbg_wrlvl_err (dbg_wrlvl_err), + .dbg_wrlvl_fine_tap_cnt (dbg_wrlvl_fine_tap_cnt), + .dbg_wrlvl_coarse_tap_cnt (dbg_wrlvl_coarse_tap_cnt), + .dbg_phy_wrlvl (dbg_phy_wrlvl), + .dbg_tap_cnt_during_wrlvl (dbg_tap_cnt_during_wrlvl), + .dbg_wl_edge_detect_valid (dbg_wl_edge_detect_valid), + .dbg_rd_data_edge_detect (dbg_rd_data_edge_detect), + .dbg_wrcal_start (dbg_wrcal_start), + .dbg_wrcal_done (dbg_wrcal_done), + .dbg_phy_wrcal (dbg_phy_wrcal), + .dbg_final_po_fine_tap_cnt (dbg_final_po_fine_tap_cnt), + .dbg_final_po_coarse_tap_cnt (dbg_final_po_coarse_tap_cnt), + .dbg_rdlvl_start (dbg_rdlvl_start), + .dbg_rdlvl_done (dbg_rdlvl_done), + .dbg_rdlvl_err (dbg_rdlvl_err), + .dbg_cpt_first_edge_cnt (dbg_cpt_first_edge_cnt), + .dbg_cpt_second_edge_cnt (dbg_cpt_second_edge_cnt), + .dbg_cpt_tap_cnt (dbg_cpt_tap_cnt), + .dbg_dq_idelay_tap_cnt (dbg_dq_idelay_tap_cnt), + .dbg_sel_pi_incdec (dbg_sel_pi_incdec), + .dbg_sel_po_incdec (dbg_sel_po_incdec), + .dbg_byte_sel (dbg_byte_sel), + .dbg_pi_f_inc (dbg_pi_f_inc), + .dbg_pi_f_dec (dbg_pi_f_dec), + .dbg_po_f_inc (dbg_po_f_inc), + .dbg_po_f_stg23_sel (dbg_po_f_stg23_sel), + .dbg_po_f_dec (dbg_po_f_dec), + .dbg_idel_up_all (dbg_idel_up_all), + .dbg_idel_down_all (dbg_idel_down_all), + .dbg_idel_up_cpt (dbg_idel_up_cpt), + .dbg_idel_down_cpt (dbg_idel_down_cpt), + .dbg_sel_idel_cpt (dbg_sel_idel_cpt), + .dbg_sel_all_idel_cpt (dbg_sel_all_idel_cpt), + .dbg_phy_rdlvl (dbg_phy_rdlvl), + .dbg_calib_top (dbg_calib_top), + .dbg_phy_init (dbg_phy_init), + .dbg_prbs_rdlvl (dbg_prbs_rdlvl), + .dbg_dqs_found_cal (dbg_dqs_found_cal), + .dbg_phy_oclkdelay_cal (dbg_phy_oclkdelay_cal), + .dbg_oclkdelay_rd_data (dbg_oclkdelay_rd_data), + .dbg_oclkdelay_calib_start (dbg_oclkdelay_calib_start), + .dbg_oclkdelay_calib_done (dbg_oclkdelay_calib_done), + .dbg_poc (dbg_poc[1023:0]), + .prbs_final_dqs_tap_cnt_r (prbs_final_dqs_tap_cnt_r), + .dbg_prbs_first_edge_taps (dbg_prbs_first_edge_taps), + .dbg_prbs_second_edge_taps (dbg_prbs_second_edge_taps), + .byte_sel_cnt (byte_sel_cnt), + .fine_delay_incdec_pb (fine_delay_incdec_pb), + .fine_delay_sel (fine_delay_sel) + ); + +endmodule diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_wrcal.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_wrcal.v new file mode 100644 index 0000000..4a7560c --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_wrcal.v @@ -0,0 +1,1316 @@ +//***************************************************************************** +// (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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version: +// \ \ Application: MIG +// / / Filename: ddr_phy_wrcal.v +// /___/ /\ Date Last Modified: $Date: 2011/06/02 08:35:09 $ +// \ \ / \ Date Created: +// \___\/\___\ +// +//Device: 7 Series +//Design Name: DDR3 SDRAM +//Purpose: +// Write calibration logic to align DQS to correct CK edge +//Reference: +//Revision History: +//***************************************************************************** + +/****************************************************************************** +**$Id: ddr_phy_wrcal.v,v 1.1 2011/06/02 08:35:09 mishra Exp $ +**$Date: 2011/06/02 08:35:09 $ +**$Author: +**$Revision: +**$Source: +******************************************************************************/ + +`timescale 1ps/1ps + +module mig_7series_v4_0_ddr_phy_wrcal # + ( + parameter TCQ = 100, // clk->out delay (sim only) + parameter nCK_PER_CLK = 2, // # of memory clocks per CLK + parameter CLK_PERIOD = 2500, + parameter DQ_WIDTH = 64, // # of DQ (data) + parameter DQS_CNT_WIDTH = 3, // = ceil(log2(DQS_WIDTH)) + parameter DQS_WIDTH = 8, // # of DQS (strobe) + parameter DRAM_WIDTH = 8, // # of DQ per DQS + parameter PRE_REV3ES = "OFF", // Delay O/Ps using Phaser_Out fine dly + parameter SIM_CAL_OPTION = "NONE" // Skip various calibration steps + ) + ( + input clk, + input rst, + // Calibration status, control signals + input wrcal_start, + input wrcal_rd_wait, + input wrcal_sanity_chk, + input dqsfound_retry_done, + input phy_rddata_en, + output dqsfound_retry, + output wrcal_read_req, + output reg wrcal_act_req, + output reg wrcal_done, + output reg wrcal_pat_err, + output reg wrcal_prech_req, + output reg temp_wrcal_done, + output reg wrcal_sanity_chk_done, + input prech_done, + // Captured data in resync clock domain + input [2*nCK_PER_CLK*DQ_WIDTH-1:0] rd_data, + // Write level values of Phaser_Out coarse and fine + // delay taps required to load Phaser_Out register + input [3*DQS_WIDTH-1:0] wl_po_coarse_cnt, + input [6*DQS_WIDTH-1:0] wl_po_fine_cnt, + input wrlvl_byte_done, + output reg wrlvl_byte_redo, + output reg early1_data, + output reg early2_data, + // DQ IDELAY + output reg idelay_ld, + output reg wrcal_pat_resume, // to phy_init for write + output reg [DQS_CNT_WIDTH:0] po_stg2_wrcal_cnt, + output phy_if_reset, + + // Debug Port + output [6*DQS_WIDTH-1:0] dbg_final_po_fine_tap_cnt, + output [3*DQS_WIDTH-1:0] dbg_final_po_coarse_tap_cnt, + output [99:0] dbg_phy_wrcal + ); + + // Length of calibration sequence (in # of words) + //localparam CAL_PAT_LEN = 8; + + // Read data shift register length + localparam RD_SHIFT_LEN = 1; //(nCK_PER_CLK == 4) ? 1 : 2; + + // # of reads for reliable read capture + localparam NUM_READS = 2; + + // # of cycles to wait after changing RDEN count value + localparam RDEN_WAIT_CNT = 12; + + localparam COARSE_CNT = (CLK_PERIOD/nCK_PER_CLK <= 2500) ? 3 : 6; + localparam FINE_CNT = (CLK_PERIOD/nCK_PER_CLK <= 2500) ? 22 : 44; + + + localparam CAL2_IDLE = 4'h0; + localparam CAL2_READ_WAIT = 4'h1; + localparam CAL2_NEXT_DQS = 4'h2; + localparam CAL2_WRLVL_WAIT = 4'h3; + localparam CAL2_IFIFO_RESET = 4'h4; + localparam CAL2_DQ_IDEL_DEC = 4'h5; + localparam CAL2_DONE = 4'h6; + localparam CAL2_SANITY_WAIT = 4'h7; + localparam CAL2_ERR = 4'h8; + + integer i,j,k,l,m,p,q,d; + + reg [2:0] po_coarse_tap_cnt [0:DQS_WIDTH-1]; + reg [3*DQS_WIDTH-1:0] po_coarse_tap_cnt_w; + reg [5:0] po_fine_tap_cnt [0:DQS_WIDTH-1]; + reg [6*DQS_WIDTH-1:0] po_fine_tap_cnt_w; + reg [DQS_CNT_WIDTH:0] wrcal_dqs_cnt_r/* synthesis syn_maxfan = 10 */; + reg [4:0] not_empty_wait_cnt; + reg [3:0] tap_inc_wait_cnt; + reg cal2_done_r; + reg cal2_done_r1; + reg cal2_prech_req_r; + reg [3:0] cal2_state_r; + reg [3:0] cal2_state_r1; + reg [2:0] wl_po_coarse_cnt_w [0:DQS_WIDTH-1]; + reg [5:0] wl_po_fine_cnt_w [0:DQS_WIDTH-1]; + reg cal2_if_reset; + reg wrcal_pat_resume_r; + reg wrcal_pat_resume_r1; + reg wrcal_pat_resume_r2; + reg wrcal_pat_resume_r3; + reg [DRAM_WIDTH-1:0] mux_rd_fall0_r; + reg [DRAM_WIDTH-1:0] mux_rd_fall1_r; + reg [DRAM_WIDTH-1:0] mux_rd_rise0_r; + reg [DRAM_WIDTH-1:0] mux_rd_rise1_r; + reg [DRAM_WIDTH-1:0] mux_rd_fall2_r; + reg [DRAM_WIDTH-1:0] mux_rd_fall3_r; + reg [DRAM_WIDTH-1:0] mux_rd_rise2_r; + reg [DRAM_WIDTH-1:0] mux_rd_rise3_r; + reg pat_data_match_r; + reg pat1_data_match_r; + reg pat1_data_match_r1; + reg pat2_data_match_r; + reg pat_data_match_valid_r; + wire [RD_SHIFT_LEN-1:0] pat_fall0 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat_fall1 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat_fall2 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat_fall3 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat1_fall0 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat1_fall1 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat2_fall0 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat2_fall1 [3:0]; + wire [RD_SHIFT_LEN-1:0] early_fall0 [3:0]; + wire [RD_SHIFT_LEN-1:0] early_fall1 [3:0]; + wire [RD_SHIFT_LEN-1:0] early_fall2 [3:0]; + wire [RD_SHIFT_LEN-1:0] early_fall3 [3:0]; + wire [RD_SHIFT_LEN-1:0] early1_fall0 [3:0]; + wire [RD_SHIFT_LEN-1:0] early1_fall1 [3:0]; + wire [RD_SHIFT_LEN-1:0] early2_fall0 [3:0]; + wire [RD_SHIFT_LEN-1:0] early2_fall1 [3:0]; + reg [DRAM_WIDTH-1:0] pat_match_fall0_r; + reg pat_match_fall0_and_r; + reg [DRAM_WIDTH-1:0] pat_match_fall1_r; + reg pat_match_fall1_and_r; + reg [DRAM_WIDTH-1:0] pat_match_fall2_r; + reg pat_match_fall2_and_r; + reg [DRAM_WIDTH-1:0] pat_match_fall3_r; + reg pat_match_fall3_and_r; + reg [DRAM_WIDTH-1:0] pat_match_rise0_r; + reg pat_match_rise0_and_r; + reg [DRAM_WIDTH-1:0] pat_match_rise1_r; + reg pat_match_rise1_and_r; + reg [DRAM_WIDTH-1:0] pat_match_rise2_r; + reg pat_match_rise2_and_r; + reg [DRAM_WIDTH-1:0] pat_match_rise3_r; + reg pat_match_rise3_and_r; + reg [DRAM_WIDTH-1:0] pat1_match_rise0_r; + reg [DRAM_WIDTH-1:0] pat1_match_rise1_r; + reg [DRAM_WIDTH-1:0] pat1_match_fall0_r; + reg [DRAM_WIDTH-1:0] pat1_match_fall1_r; + reg [DRAM_WIDTH-1:0] pat2_match_rise0_r; + reg [DRAM_WIDTH-1:0] pat2_match_rise1_r; + reg [DRAM_WIDTH-1:0] pat2_match_fall0_r; + reg [DRAM_WIDTH-1:0] pat2_match_fall1_r; + reg pat1_match_rise0_and_r; + reg pat1_match_rise1_and_r; + reg pat1_match_fall0_and_r; + reg pat1_match_fall1_and_r; + reg pat2_match_rise0_and_r; + reg pat2_match_rise1_and_r; + reg pat2_match_fall0_and_r; + reg pat2_match_fall1_and_r; + reg early1_data_match_r; + reg early1_data_match_r1; + reg [DRAM_WIDTH-1:0] early1_match_fall0_r; + reg early1_match_fall0_and_r; + reg [DRAM_WIDTH-1:0] early1_match_fall1_r; + reg early1_match_fall1_and_r; + reg [DRAM_WIDTH-1:0] early1_match_fall2_r; + reg early1_match_fall2_and_r; + reg [DRAM_WIDTH-1:0] early1_match_fall3_r; + reg early1_match_fall3_and_r; + reg [DRAM_WIDTH-1:0] early1_match_rise0_r; + reg early1_match_rise0_and_r; + reg [DRAM_WIDTH-1:0] early1_match_rise1_r; + reg early1_match_rise1_and_r; + reg [DRAM_WIDTH-1:0] early1_match_rise2_r; + reg early1_match_rise2_and_r; + reg [DRAM_WIDTH-1:0] early1_match_rise3_r; + reg early1_match_rise3_and_r; + reg early2_data_match_r; + reg [DRAM_WIDTH-1:0] early2_match_fall0_r; + reg early2_match_fall0_and_r; + reg [DRAM_WIDTH-1:0] early2_match_fall1_r; + reg early2_match_fall1_and_r; + reg [DRAM_WIDTH-1:0] early2_match_fall2_r; + reg early2_match_fall2_and_r; + reg [DRAM_WIDTH-1:0] early2_match_fall3_r; + reg early2_match_fall3_and_r; + reg [DRAM_WIDTH-1:0] early2_match_rise0_r; + reg early2_match_rise0_and_r; + reg [DRAM_WIDTH-1:0] early2_match_rise1_r; + reg early2_match_rise1_and_r; + reg [DRAM_WIDTH-1:0] early2_match_rise2_r; + reg early2_match_rise2_and_r; + reg [DRAM_WIDTH-1:0] early2_match_rise3_r; + reg early2_match_rise3_and_r; + wire [RD_SHIFT_LEN-1:0] pat_rise0 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat_rise1 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat_rise2 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat_rise3 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat1_rise0 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat1_rise1 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat2_rise0 [3:0]; + wire [RD_SHIFT_LEN-1:0] pat2_rise1 [3:0]; + wire [RD_SHIFT_LEN-1:0] early_rise0 [3:0]; + wire [RD_SHIFT_LEN-1:0] early_rise1 [3:0]; + wire [RD_SHIFT_LEN-1:0] early_rise2 [3:0]; + wire [RD_SHIFT_LEN-1:0] early_rise3 [3:0]; + wire [RD_SHIFT_LEN-1:0] early1_rise0 [3:0]; + wire [RD_SHIFT_LEN-1:0] early1_rise1 [3:0]; + wire [RD_SHIFT_LEN-1:0] early2_rise0 [3:0]; + wire [RD_SHIFT_LEN-1:0] early2_rise1 [3:0]; + wire [DQ_WIDTH-1:0] rd_data_rise0; + wire [DQ_WIDTH-1:0] rd_data_fall0; + wire [DQ_WIDTH-1:0] rd_data_rise1; + wire [DQ_WIDTH-1:0] rd_data_fall1; + wire [DQ_WIDTH-1:0] rd_data_rise2; + wire [DQ_WIDTH-1:0] rd_data_fall2; + wire [DQ_WIDTH-1:0] rd_data_rise3; + wire [DQ_WIDTH-1:0] rd_data_fall3; + reg [DQS_CNT_WIDTH:0] rd_mux_sel_r; + reg rd_active_posedge_r; + reg rd_active_r; + reg rd_active_r1; + reg rd_active_r2; + reg rd_active_r3; + reg rd_active_r4; + reg rd_active_r5; + reg [RD_SHIFT_LEN-1:0] sr_fall0_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] sr_fall1_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] sr_rise0_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] sr_rise1_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] sr_fall2_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] sr_fall3_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] sr_rise2_r [DRAM_WIDTH-1:0]; + reg [RD_SHIFT_LEN-1:0] sr_rise3_r [DRAM_WIDTH-1:0]; + reg wrlvl_byte_done_r; + reg idelay_ld_done; + reg pat1_detect; + reg early1_detect; + reg wrcal_sanity_chk_r; + reg wrcal_sanity_chk_err; + + + //*************************************************************************** + // Debug + //*************************************************************************** + + always @(*) begin + for (d = 0; d < DQS_WIDTH; d = d + 1) begin + po_fine_tap_cnt_w[(6*d)+:6] = po_fine_tap_cnt[d]; + po_coarse_tap_cnt_w[(3*d)+:3] = po_coarse_tap_cnt[d]; + end + end + + assign dbg_final_po_fine_tap_cnt = po_fine_tap_cnt_w; + assign dbg_final_po_coarse_tap_cnt = po_coarse_tap_cnt_w; + + assign dbg_phy_wrcal[0] = pat_data_match_r; + assign dbg_phy_wrcal[4:1] = cal2_state_r1[3:0]; + assign dbg_phy_wrcal[5] = wrcal_sanity_chk_err; + assign dbg_phy_wrcal[6] = wrcal_start; + assign dbg_phy_wrcal[7] = wrcal_done; + assign dbg_phy_wrcal[8] = pat_data_match_valid_r; + assign dbg_phy_wrcal[13+:DQS_CNT_WIDTH]= wrcal_dqs_cnt_r; + assign dbg_phy_wrcal[17+:5] = not_empty_wait_cnt; + assign dbg_phy_wrcal[22] = early1_data; + assign dbg_phy_wrcal[23] = early2_data; + assign dbg_phy_wrcal[24+:8] = mux_rd_rise0_r; + assign dbg_phy_wrcal[32+:8] = mux_rd_fall0_r; + assign dbg_phy_wrcal[40+:8] = mux_rd_rise1_r; + assign dbg_phy_wrcal[48+:8] = mux_rd_fall1_r; + assign dbg_phy_wrcal[56+:8] = mux_rd_rise2_r; + assign dbg_phy_wrcal[64+:8] = mux_rd_fall2_r; + assign dbg_phy_wrcal[72+:8] = mux_rd_rise3_r; + assign dbg_phy_wrcal[80+:8] = mux_rd_fall3_r; + assign dbg_phy_wrcal[88] = early1_data_match_r; + assign dbg_phy_wrcal[89] = early2_data_match_r; + assign dbg_phy_wrcal[90] = wrcal_sanity_chk_r & pat_data_match_valid_r; + assign dbg_phy_wrcal[91] = wrcal_sanity_chk_r; + assign dbg_phy_wrcal[92] = wrcal_sanity_chk_done; + + assign dqsfound_retry = 1'b0; + assign wrcal_read_req = 1'b0; + assign phy_if_reset = cal2_if_reset; + + //************************************************************************** + // DQS count to hard PHY during write calibration using Phaser_OUT Stage2 + // coarse delay + //************************************************************************** + + always @(posedge clk) begin + po_stg2_wrcal_cnt <= #TCQ wrcal_dqs_cnt_r; + wrlvl_byte_done_r <= #TCQ wrlvl_byte_done; + wrcal_sanity_chk_r <= #TCQ wrcal_sanity_chk; + end + + //*************************************************************************** + // Data mux to route appropriate byte to calibration logic - i.e. calibration + // is done sequentially, one byte (or DQS group) at a time + //*************************************************************************** + + generate + if (nCK_PER_CLK == 4) begin: gen_rd_data_div4 + assign rd_data_rise0 = rd_data[DQ_WIDTH-1:0]; + assign rd_data_fall0 = rd_data[2*DQ_WIDTH-1:DQ_WIDTH]; + assign rd_data_rise1 = rd_data[3*DQ_WIDTH-1:2*DQ_WIDTH]; + assign rd_data_fall1 = rd_data[4*DQ_WIDTH-1:3*DQ_WIDTH]; + assign rd_data_rise2 = rd_data[5*DQ_WIDTH-1:4*DQ_WIDTH]; + assign rd_data_fall2 = rd_data[6*DQ_WIDTH-1:5*DQ_WIDTH]; + assign rd_data_rise3 = rd_data[7*DQ_WIDTH-1:6*DQ_WIDTH]; + assign rd_data_fall3 = rd_data[8*DQ_WIDTH-1:7*DQ_WIDTH]; + end else if (nCK_PER_CLK == 2) begin: gen_rd_data_div2 + assign rd_data_rise0 = rd_data[DQ_WIDTH-1:0]; + assign rd_data_fall0 = rd_data[2*DQ_WIDTH-1:DQ_WIDTH]; + assign rd_data_rise1 = rd_data[3*DQ_WIDTH-1:2*DQ_WIDTH]; + assign rd_data_fall1 = rd_data[4*DQ_WIDTH-1:3*DQ_WIDTH]; + end + endgenerate + + //************************************************************************** + // Final Phaser OUT coarse and fine delay taps after write calibration + // Sum of taps used during write leveling taps and write calibration + //************************************************************************** + + always @(*) begin + for (m = 0; m < DQS_WIDTH; m = m + 1) begin + wl_po_coarse_cnt_w[m] = wl_po_coarse_cnt[3*m+:3]; + wl_po_fine_cnt_w[m] = wl_po_fine_cnt[6*m+:6]; + end + end + + always @(posedge clk) begin + if (rst) begin + for (p = 0; p < DQS_WIDTH; p = p + 1) begin + po_coarse_tap_cnt[p] <= #TCQ {3{1'b0}}; + po_fine_tap_cnt[p] <= #TCQ {6{1'b0}}; + end + end else if (cal2_done_r && ~cal2_done_r1) begin + for (q = 0; q < DQS_WIDTH; q = q + 1) begin + po_coarse_tap_cnt[q] <= #TCQ wl_po_coarse_cnt_w[i]; + po_fine_tap_cnt[q] <= #TCQ wl_po_fine_cnt_w[i]; + end + end + end + + always @(posedge clk) begin + rd_mux_sel_r <= #TCQ wrcal_dqs_cnt_r; + end + + // Register outputs for improved timing. + // NOTE: Will need to change when per-bit DQ deskew is supported. + // Currenly all bits in DQS group are checked in aggregate + generate + genvar mux_i; + if (nCK_PER_CLK == 4) begin: gen_mux_rd_div4 + for (mux_i = 0; mux_i < DRAM_WIDTH; mux_i = mux_i + 1) begin: gen_mux_rd + always @(posedge clk) begin + mux_rd_rise0_r[mux_i] <= #TCQ rd_data_rise0[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + mux_rd_fall0_r[mux_i] <= #TCQ rd_data_fall0[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + mux_rd_rise1_r[mux_i] <= #TCQ rd_data_rise1[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + mux_rd_fall1_r[mux_i] <= #TCQ rd_data_fall1[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + mux_rd_rise2_r[mux_i] <= #TCQ rd_data_rise2[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + mux_rd_fall2_r[mux_i] <= #TCQ rd_data_fall2[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + mux_rd_rise3_r[mux_i] <= #TCQ rd_data_rise3[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + mux_rd_fall3_r[mux_i] <= #TCQ rd_data_fall3[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + end + end + end else if (nCK_PER_CLK == 2) begin: gen_mux_rd_div2 + for (mux_i = 0; mux_i < DRAM_WIDTH; mux_i = mux_i + 1) begin: gen_mux_rd + always @(posedge clk) begin + mux_rd_rise0_r[mux_i] <= #TCQ rd_data_rise0[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + mux_rd_fall0_r[mux_i] <= #TCQ rd_data_fall0[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + mux_rd_rise1_r[mux_i] <= #TCQ rd_data_rise1[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + mux_rd_fall1_r[mux_i] <= #TCQ rd_data_fall1[DRAM_WIDTH*rd_mux_sel_r + mux_i]; + end + end + end + endgenerate + + //*************************************************************************** + // generate request to PHY_INIT logic to issue precharged. Required when + // calibration can take a long time (during which there are only constant + // reads present on this bus). In this case need to issue perioidic + // precharges to avoid tRAS violation. This signal must meet the following + // requirements: (1) only transition from 0->1 when prech is first needed, + // (2) stay at 1 and only transition 1->0 when RDLVL_PRECH_DONE asserted + //*************************************************************************** + + always @(posedge clk) + if (rst) + wrcal_prech_req <= #TCQ 1'b0; + else + // Combine requests from all stages here + wrcal_prech_req <= #TCQ cal2_prech_req_r; + + //*************************************************************************** + // Shift register to store last RDDATA_SHIFT_LEN cycles of data from ISERDES + // NOTE: Written using discrete flops, but SRL can be used if the matching + // logic does the comparison sequentially, rather than parallel + //*************************************************************************** + + generate + genvar rd_i; + if (nCK_PER_CLK == 4) begin: gen_sr_div4 + for (rd_i = 0; rd_i < DRAM_WIDTH; rd_i = rd_i + 1) begin: gen_sr + always @(posedge clk) begin + sr_rise0_r[rd_i] <= #TCQ mux_rd_rise0_r[rd_i]; + sr_fall0_r[rd_i] <= #TCQ mux_rd_fall0_r[rd_i]; + sr_rise1_r[rd_i] <= #TCQ mux_rd_rise1_r[rd_i]; + sr_fall1_r[rd_i] <= #TCQ mux_rd_fall1_r[rd_i]; + sr_rise2_r[rd_i] <= #TCQ mux_rd_rise2_r[rd_i]; + sr_fall2_r[rd_i] <= #TCQ mux_rd_fall2_r[rd_i]; + sr_rise3_r[rd_i] <= #TCQ mux_rd_rise3_r[rd_i]; + sr_fall3_r[rd_i] <= #TCQ mux_rd_fall3_r[rd_i]; + end + end + end else if (nCK_PER_CLK == 2) begin: gen_sr_div2 + for (rd_i = 0; rd_i < DRAM_WIDTH; rd_i = rd_i + 1) begin: gen_sr + always @(posedge clk) begin + sr_rise0_r[rd_i] <= #TCQ mux_rd_rise0_r[rd_i]; + sr_fall0_r[rd_i] <= #TCQ mux_rd_fall0_r[rd_i]; + sr_rise1_r[rd_i] <= #TCQ mux_rd_rise1_r[rd_i]; + sr_fall1_r[rd_i] <= #TCQ mux_rd_fall1_r[rd_i]; + end + end + end + endgenerate + + //*************************************************************************** + // Write calibration: + // During write leveling DQS is aligned to the nearest CK edge that may not + // be the correct CK edge. Write calibration is required to align the DQS to + // the correct CK edge that clocks the write command. + // The Phaser_Out coarse delay line is adjusted if required to add a memory + // clock cycle of delay in order to read back the expected pattern. + //*************************************************************************** + + always @(posedge clk) begin + rd_active_r <= #TCQ phy_rddata_en; + rd_active_r1 <= #TCQ rd_active_r; + rd_active_r2 <= #TCQ rd_active_r1; + rd_active_r3 <= #TCQ rd_active_r2; + rd_active_r4 <= #TCQ rd_active_r3; + rd_active_r5 <= #TCQ rd_active_r4; + end + + //***************************************************************** + // Expected data pattern when properly received by read capture + // logic: + // Based on pattern of ({rise,fall}) = + // 0xF, 0x0, 0xA, 0x5, 0x5, 0xA, 0x9, 0x6 + // Each nibble will look like: + // bit3: 1, 0, 1, 0, 0, 1, 1, 0 + // bit2: 1, 0, 0, 1, 1, 0, 0, 1 + // bit1: 1, 0, 1, 0, 0, 1, 0, 1 + // bit0: 1, 0, 0, 1, 1, 0, 1, 0 + // Change the hard-coded pattern below accordingly as RD_SHIFT_LEN + // and the actual training pattern contents change + //***************************************************************** + + generate + if (nCK_PER_CLK == 4) begin: gen_pat_div4 + // FF00AA5555AA9966 + assign pat_rise0[3] = 1'b1; + assign pat_fall0[3] = 1'b0; + assign pat_rise1[3] = 1'b1; + assign pat_fall1[3] = 1'b0; + assign pat_rise2[3] = 1'b0; + assign pat_fall2[3] = 1'b1; + assign pat_rise3[3] = 1'b1; + assign pat_fall3[3] = 1'b0; + + assign pat_rise0[2] = 1'b1; + assign pat_fall0[2] = 1'b0; + assign pat_rise1[2] = 1'b0; + assign pat_fall1[2] = 1'b1; + assign pat_rise2[2] = 1'b1; + assign pat_fall2[2] = 1'b0; + assign pat_rise3[2] = 1'b0; + assign pat_fall3[2] = 1'b1; + + assign pat_rise0[1] = 1'b1; + assign pat_fall0[1] = 1'b0; + assign pat_rise1[1] = 1'b1; + assign pat_fall1[1] = 1'b0; + assign pat_rise2[1] = 1'b0; + assign pat_fall2[1] = 1'b1; + assign pat_rise3[1] = 1'b0; + assign pat_fall3[1] = 1'b1; + + assign pat_rise0[0] = 1'b1; + assign pat_fall0[0] = 1'b0; + assign pat_rise1[0] = 1'b0; + assign pat_fall1[0] = 1'b1; + assign pat_rise2[0] = 1'b1; + assign pat_fall2[0] = 1'b0; + assign pat_rise3[0] = 1'b1; + assign pat_fall3[0] = 1'b0; + + // Pattern to distinguish between early write and incorrect read + // BB11EE4444EEDD88 + assign early_rise0[3] = 1'b1; + assign early_fall0[3] = 1'b0; + assign early_rise1[3] = 1'b1; + assign early_fall1[3] = 1'b0; + assign early_rise2[3] = 1'b0; + assign early_fall2[3] = 1'b1; + assign early_rise3[3] = 1'b1; + assign early_fall3[3] = 1'b1; + + assign early_rise0[2] = 1'b0; + assign early_fall0[2] = 1'b0; + assign early_rise1[2] = 1'b1; + assign early_fall1[2] = 1'b1; + assign early_rise2[2] = 1'b1; + assign early_fall2[2] = 1'b1; + assign early_rise3[2] = 1'b1; + assign early_fall3[2] = 1'b0; + + assign early_rise0[1] = 1'b1; + assign early_fall0[1] = 1'b0; + assign early_rise1[1] = 1'b1; + assign early_fall1[1] = 1'b0; + assign early_rise2[1] = 1'b0; + assign early_fall2[1] = 1'b1; + assign early_rise3[1] = 1'b0; + assign early_fall3[1] = 1'b0; + + assign early_rise0[0] = 1'b1; + assign early_fall0[0] = 1'b1; + assign early_rise1[0] = 1'b0; + assign early_fall1[0] = 1'b0; + assign early_rise2[0] = 1'b0; + assign early_fall2[0] = 1'b0; + assign early_rise3[0] = 1'b1; + assign early_fall3[0] = 1'b0; + + end else if (nCK_PER_CLK == 2) begin: gen_pat_div2 + // First cycle pattern FF00AA55 + assign pat1_rise0[3] = 1'b1; + assign pat1_fall0[3] = 1'b0; + assign pat1_rise1[3] = 1'b1; + assign pat1_fall1[3] = 1'b0; + + assign pat1_rise0[2] = 1'b1; + assign pat1_fall0[2] = 1'b0; + assign pat1_rise1[2] = 1'b0; + assign pat1_fall1[2] = 1'b1; + + assign pat1_rise0[1] = 1'b1; + assign pat1_fall0[1] = 1'b0; + assign pat1_rise1[1] = 1'b1; + assign pat1_fall1[1] = 1'b0; + + assign pat1_rise0[0] = 1'b1; + assign pat1_fall0[0] = 1'b0; + assign pat1_rise1[0] = 1'b0; + assign pat1_fall1[0] = 1'b1; + + // Second cycle pattern 55AA9966 + assign pat2_rise0[3] = 1'b0; + assign pat2_fall0[3] = 1'b1; + assign pat2_rise1[3] = 1'b1; + assign pat2_fall1[3] = 1'b0; + + assign pat2_rise0[2] = 1'b1; + assign pat2_fall0[2] = 1'b0; + assign pat2_rise1[2] = 1'b0; + assign pat2_fall1[2] = 1'b1; + + assign pat2_rise0[1] = 1'b0; + assign pat2_fall0[1] = 1'b1; + assign pat2_rise1[1] = 1'b0; + assign pat2_fall1[1] = 1'b1; + + assign pat2_rise0[0] = 1'b1; + assign pat2_fall0[0] = 1'b0; + assign pat2_rise1[0] = 1'b1; + assign pat2_fall1[0] = 1'b0; + + //Pattern to distinguish between early write and incorrect read + // First cycle pattern AA5555AA + assign early1_rise0[3] = 2'b1; + assign early1_fall0[3] = 2'b0; + assign early1_rise1[3] = 2'b0; + assign early1_fall1[3] = 2'b1; + + assign early1_rise0[2] = 2'b0; + assign early1_fall0[2] = 2'b1; + assign early1_rise1[2] = 2'b1; + assign early1_fall1[2] = 2'b0; + + assign early1_rise0[1] = 2'b1; + assign early1_fall0[1] = 2'b0; + assign early1_rise1[1] = 2'b0; + assign early1_fall1[1] = 2'b1; + + assign early1_rise0[0] = 2'b0; + assign early1_fall0[0] = 2'b1; + assign early1_rise1[0] = 2'b1; + assign early1_fall1[0] = 2'b0; + + // Second cycle pattern 9966BB11 + assign early2_rise0[3] = 2'b1; + assign early2_fall0[3] = 2'b0; + assign early2_rise1[3] = 2'b1; + assign early2_fall1[3] = 2'b0; + + assign early2_rise0[2] = 2'b0; + assign early2_fall0[2] = 2'b1; + assign early2_rise1[2] = 2'b0; + assign early2_fall1[2] = 2'b0; + + assign early2_rise0[1] = 2'b0; + assign early2_fall0[1] = 2'b1; + assign early2_rise1[1] = 2'b1; + assign early2_fall1[1] = 2'b0; + + assign early2_rise0[0] = 2'b1; + assign early2_fall0[0] = 2'b0; + assign early2_rise1[0] = 2'b1; + assign early2_fall1[0] = 2'b1; + end + endgenerate + + // Each bit of each byte is compared to expected pattern. + // This was done to prevent (and "drastically decrease") the chance that + // invalid data clocked in when the DQ bus is tri-state (along with a + // combination of the correct data) will resemble the expected data + // pattern. A better fix for this is to change the training pattern and/or + // make the pattern longer. + generate + genvar pt_i; + if (nCK_PER_CLK == 4) begin: gen_pat_match_div4 + for (pt_i = 0; pt_i < DRAM_WIDTH; pt_i = pt_i + 1) begin: gen_pat_match + always @(posedge clk) begin + if (sr_rise0_r[pt_i] == pat_rise0[pt_i%4]) + pat_match_rise0_r[pt_i] <= #TCQ 1'b1; + else + pat_match_rise0_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall0_r[pt_i] == pat_fall0[pt_i%4]) + pat_match_fall0_r[pt_i] <= #TCQ 1'b1; + else + pat_match_fall0_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise1_r[pt_i] == pat_rise1[pt_i%4]) + pat_match_rise1_r[pt_i] <= #TCQ 1'b1; + else + pat_match_rise1_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall1_r[pt_i] == pat_fall1[pt_i%4]) + pat_match_fall1_r[pt_i] <= #TCQ 1'b1; + else + pat_match_fall1_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise2_r[pt_i] == pat_rise2[pt_i%4]) + pat_match_rise2_r[pt_i] <= #TCQ 1'b1; + else + pat_match_rise2_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall2_r[pt_i] == pat_fall2[pt_i%4]) + pat_match_fall2_r[pt_i] <= #TCQ 1'b1; + else + pat_match_fall2_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise3_r[pt_i] == pat_rise3[pt_i%4]) + pat_match_rise3_r[pt_i] <= #TCQ 1'b1; + else + pat_match_rise3_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall3_r[pt_i] == pat_fall3[pt_i%4]) + pat_match_fall3_r[pt_i] <= #TCQ 1'b1; + else + pat_match_fall3_r[pt_i] <= #TCQ 1'b0; + end + + always @(posedge clk) begin + if (sr_rise0_r[pt_i] == pat_rise1[pt_i%4]) + early1_match_rise0_r[pt_i] <= #TCQ 1'b1; + else + early1_match_rise0_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall0_r[pt_i] == pat_fall1[pt_i%4]) + early1_match_fall0_r[pt_i] <= #TCQ 1'b1; + else + early1_match_fall0_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise1_r[pt_i] == pat_rise2[pt_i%4]) + early1_match_rise1_r[pt_i] <= #TCQ 1'b1; + else + early1_match_rise1_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall1_r[pt_i] == pat_fall2[pt_i%4]) + early1_match_fall1_r[pt_i] <= #TCQ 1'b1; + else + early1_match_fall1_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise2_r[pt_i] == pat_rise3[pt_i%4]) + early1_match_rise2_r[pt_i] <= #TCQ 1'b1; + else + early1_match_rise2_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall2_r[pt_i] == pat_fall3[pt_i%4]) + early1_match_fall2_r[pt_i] <= #TCQ 1'b1; + else + early1_match_fall2_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise3_r[pt_i] == early_rise0[pt_i%4]) + early1_match_rise3_r[pt_i] <= #TCQ 1'b1; + else + early1_match_rise3_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall3_r[pt_i] == early_fall0[pt_i%4]) + early1_match_fall3_r[pt_i] <= #TCQ 1'b1; + else + early1_match_fall3_r[pt_i] <= #TCQ 1'b0; + end + + always @(posedge clk) begin + if (sr_rise0_r[pt_i] == pat_rise2[pt_i%4]) + early2_match_rise0_r[pt_i] <= #TCQ 1'b1; + else + early2_match_rise0_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall0_r[pt_i] == pat_fall2[pt_i%4]) + early2_match_fall0_r[pt_i] <= #TCQ 1'b1; + else + early2_match_fall0_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise1_r[pt_i] == pat_rise3[pt_i%4]) + early2_match_rise1_r[pt_i] <= #TCQ 1'b1; + else + early2_match_rise1_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall1_r[pt_i] == pat_fall3[pt_i%4]) + early2_match_fall1_r[pt_i] <= #TCQ 1'b1; + else + early2_match_fall1_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise2_r[pt_i] == early_rise0[pt_i%4]) + early2_match_rise2_r[pt_i] <= #TCQ 1'b1; + else + early2_match_rise2_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall2_r[pt_i] == early_fall0[pt_i%4]) + early2_match_fall2_r[pt_i] <= #TCQ 1'b1; + else + early2_match_fall2_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise3_r[pt_i] == early_rise1[pt_i%4]) + early2_match_rise3_r[pt_i] <= #TCQ 1'b1; + else + early2_match_rise3_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall3_r[pt_i] == early_fall1[pt_i%4]) + early2_match_fall3_r[pt_i] <= #TCQ 1'b1; + else + early2_match_fall3_r[pt_i] <= #TCQ 1'b0; + end + end + + + always @(posedge clk) begin + pat_match_rise0_and_r <= #TCQ &pat_match_rise0_r; + pat_match_fall0_and_r <= #TCQ &pat_match_fall0_r; + pat_match_rise1_and_r <= #TCQ &pat_match_rise1_r; + pat_match_fall1_and_r <= #TCQ &pat_match_fall1_r; + pat_match_rise2_and_r <= #TCQ &pat_match_rise2_r; + pat_match_fall2_and_r <= #TCQ &pat_match_fall2_r; + pat_match_rise3_and_r <= #TCQ &pat_match_rise3_r; + pat_match_fall3_and_r <= #TCQ &pat_match_fall3_r; + pat_data_match_r <= #TCQ (pat_match_rise0_and_r && + pat_match_fall0_and_r && + pat_match_rise1_and_r && + pat_match_fall1_and_r && + pat_match_rise2_and_r && + pat_match_fall2_and_r && + pat_match_rise3_and_r && + pat_match_fall3_and_r); + pat_data_match_valid_r <= #TCQ rd_active_r3; + end + + always @(posedge clk) begin + early1_match_rise0_and_r <= #TCQ &early1_match_rise0_r; + early1_match_fall0_and_r <= #TCQ &early1_match_fall0_r; + early1_match_rise1_and_r <= #TCQ &early1_match_rise1_r; + early1_match_fall1_and_r <= #TCQ &early1_match_fall1_r; + early1_match_rise2_and_r <= #TCQ &early1_match_rise2_r; + early1_match_fall2_and_r <= #TCQ &early1_match_fall2_r; + early1_match_rise3_and_r <= #TCQ &early1_match_rise3_r; + early1_match_fall3_and_r <= #TCQ &early1_match_fall3_r; + early1_data_match_r <= #TCQ (early1_match_rise0_and_r && + early1_match_fall0_and_r && + early1_match_rise1_and_r && + early1_match_fall1_and_r && + early1_match_rise2_and_r && + early1_match_fall2_and_r && + early1_match_rise3_and_r && + early1_match_fall3_and_r); + end + + always @(posedge clk) begin + early2_match_rise0_and_r <= #TCQ &early2_match_rise0_r; + early2_match_fall0_and_r <= #TCQ &early2_match_fall0_r; + early2_match_rise1_and_r <= #TCQ &early2_match_rise1_r; + early2_match_fall1_and_r <= #TCQ &early2_match_fall1_r; + early2_match_rise2_and_r <= #TCQ &early2_match_rise2_r; + early2_match_fall2_and_r <= #TCQ &early2_match_fall2_r; + early2_match_rise3_and_r <= #TCQ &early2_match_rise3_r; + early2_match_fall3_and_r <= #TCQ &early2_match_fall3_r; + early2_data_match_r <= #TCQ (early2_match_rise0_and_r && + early2_match_fall0_and_r && + early2_match_rise1_and_r && + early2_match_fall1_and_r && + early2_match_rise2_and_r && + early2_match_fall2_and_r && + early2_match_rise3_and_r && + early2_match_fall3_and_r); + end + + end else if (nCK_PER_CLK == 2) begin: gen_pat_match_div2 + + for (pt_i = 0; pt_i < DRAM_WIDTH; pt_i = pt_i + 1) begin: gen_pat_match + always @(posedge clk) begin + if (sr_rise0_r[pt_i] == pat1_rise0[pt_i%4]) + pat1_match_rise0_r[pt_i] <= #TCQ 1'b1; + else + pat1_match_rise0_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall0_r[pt_i] == pat1_fall0[pt_i%4]) + pat1_match_fall0_r[pt_i] <= #TCQ 1'b1; + else + pat1_match_fall0_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise1_r[pt_i] == pat1_rise1[pt_i%4]) + pat1_match_rise1_r[pt_i] <= #TCQ 1'b1; + else + pat1_match_rise1_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall1_r[pt_i] == pat1_fall1[pt_i%4]) + pat1_match_fall1_r[pt_i] <= #TCQ 1'b1; + else + pat1_match_fall1_r[pt_i] <= #TCQ 1'b0; + end + + always @(posedge clk) begin + if (sr_rise0_r[pt_i] == pat2_rise0[pt_i%4]) + pat2_match_rise0_r[pt_i] <= #TCQ 1'b1; + else + pat2_match_rise0_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall0_r[pt_i] == pat2_fall0[pt_i%4]) + pat2_match_fall0_r[pt_i] <= #TCQ 1'b1; + else + pat2_match_fall0_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise1_r[pt_i] == pat2_rise1[pt_i%4]) + pat2_match_rise1_r[pt_i] <= #TCQ 1'b1; + else + pat2_match_rise1_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall1_r[pt_i] == pat2_fall1[pt_i%4]) + pat2_match_fall1_r[pt_i] <= #TCQ 1'b1; + else + pat2_match_fall1_r[pt_i] <= #TCQ 1'b0; + end + + always @(posedge clk) begin + if (sr_rise0_r[pt_i] == early1_rise0[pt_i%4]) + early1_match_rise0_r[pt_i] <= #TCQ 1'b1; + else + early1_match_rise0_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall0_r[pt_i] == early1_fall0[pt_i%4]) + early1_match_fall0_r[pt_i] <= #TCQ 1'b1; + else + early1_match_fall0_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise1_r[pt_i] == early1_rise1[pt_i%4]) + early1_match_rise1_r[pt_i] <= #TCQ 1'b1; + else + early1_match_rise1_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall1_r[pt_i] == early1_fall1[pt_i%4]) + early1_match_fall1_r[pt_i] <= #TCQ 1'b1; + else + early1_match_fall1_r[pt_i] <= #TCQ 1'b0; + end + + // early2 in this case does not mean 2 cycles early but + // the second cycle of read data in 2:1 mode + always @(posedge clk) begin + if (sr_rise0_r[pt_i] == early2_rise0[pt_i%4]) + early2_match_rise0_r[pt_i] <= #TCQ 1'b1; + else + early2_match_rise0_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall0_r[pt_i] == early2_fall0[pt_i%4]) + early2_match_fall0_r[pt_i] <= #TCQ 1'b1; + else + early2_match_fall0_r[pt_i] <= #TCQ 1'b0; + + if (sr_rise1_r[pt_i] == early2_rise1[pt_i%4]) + early2_match_rise1_r[pt_i] <= #TCQ 1'b1; + else + early2_match_rise1_r[pt_i] <= #TCQ 1'b0; + + if (sr_fall1_r[pt_i] == early2_fall1[pt_i%4]) + early2_match_fall1_r[pt_i] <= #TCQ 1'b1; + else + early2_match_fall1_r[pt_i] <= #TCQ 1'b0; + end + end + + always @(posedge clk) begin + pat1_match_rise0_and_r <= #TCQ &pat1_match_rise0_r; + pat1_match_fall0_and_r <= #TCQ &pat1_match_fall0_r; + pat1_match_rise1_and_r <= #TCQ &pat1_match_rise1_r; + pat1_match_fall1_and_r <= #TCQ &pat1_match_fall1_r; + pat1_data_match_r <= #TCQ (pat1_match_rise0_and_r && + pat1_match_fall0_and_r && + pat1_match_rise1_and_r && + pat1_match_fall1_and_r); + pat1_data_match_r1 <= #TCQ pat1_data_match_r; + + pat2_match_rise0_and_r <= #TCQ &pat2_match_rise0_r && rd_active_r3; + pat2_match_fall0_and_r <= #TCQ &pat2_match_fall0_r && rd_active_r3; + pat2_match_rise1_and_r <= #TCQ &pat2_match_rise1_r && rd_active_r3; + pat2_match_fall1_and_r <= #TCQ &pat2_match_fall1_r && rd_active_r3; + pat2_data_match_r <= #TCQ (pat2_match_rise0_and_r && + pat2_match_fall0_and_r && + pat2_match_rise1_and_r && + pat2_match_fall1_and_r); + + // For 2:1 mode, read valid is asserted for 2 clock cycles - + // here we generate a "match valid" pulse that is only 1 clock + // cycle wide that is simulatenous when the match calculation + // is complete + pat_data_match_valid_r <= #TCQ rd_active_r4 & ~rd_active_r5; + end + + always @(posedge clk) begin + early1_match_rise0_and_r <= #TCQ &early1_match_rise0_r; + early1_match_fall0_and_r <= #TCQ &early1_match_fall0_r; + early1_match_rise1_and_r <= #TCQ &early1_match_rise1_r; + early1_match_fall1_and_r <= #TCQ &early1_match_fall1_r; + early1_data_match_r <= #TCQ (early1_match_rise0_and_r && + early1_match_fall0_and_r && + early1_match_rise1_and_r && + early1_match_fall1_and_r); + early1_data_match_r1 <= #TCQ early1_data_match_r; + + early2_match_rise0_and_r <= #TCQ &early2_match_rise0_r && rd_active_r3; + early2_match_fall0_and_r <= #TCQ &early2_match_fall0_r && rd_active_r3; + early2_match_rise1_and_r <= #TCQ &early2_match_rise1_r && rd_active_r3; + early2_match_fall1_and_r <= #TCQ &early2_match_fall1_r && rd_active_r3; + early2_data_match_r <= #TCQ (early2_match_rise0_and_r && + early2_match_fall0_and_r && + early2_match_rise1_and_r && + early2_match_fall1_and_r); + end + + end + endgenerate + + // Need to delay it by 3 cycles in order to wait for Phaser_Out + // coarse delay to take effect before issuing a write command + always @(posedge clk) begin + wrcal_pat_resume_r1 <= #TCQ wrcal_pat_resume_r; + wrcal_pat_resume_r2 <= #TCQ wrcal_pat_resume_r1; + wrcal_pat_resume <= #TCQ wrcal_pat_resume_r2; + end + + always @(posedge clk) begin + if (rst) + tap_inc_wait_cnt <= #TCQ 'd0; + else if ((cal2_state_r == CAL2_DQ_IDEL_DEC) || + (cal2_state_r == CAL2_IFIFO_RESET) || + (cal2_state_r == CAL2_SANITY_WAIT)) + tap_inc_wait_cnt <= #TCQ tap_inc_wait_cnt + 1; + else + tap_inc_wait_cnt <= #TCQ 'd0; + end + + always @(posedge clk) begin + if (rst) + not_empty_wait_cnt <= #TCQ 'd0; + else if ((cal2_state_r == CAL2_READ_WAIT) && wrcal_rd_wait) + not_empty_wait_cnt <= #TCQ not_empty_wait_cnt + 1; + else + not_empty_wait_cnt <= #TCQ 'd0; + end + + always @(posedge clk) + cal2_state_r1 <= #TCQ cal2_state_r; + + //***************************************************************** + // Write Calibration state machine + //***************************************************************** + + // when calibrating, check to see if the expected pattern is received. + // Otherwise delay DQS to align to correct CK edge. + // NOTES: + // 1. An error condition can occur due to two reasons: + // a. If the matching logic does not receive the expected data + // pattern. However, the error may be "recoverable" because + // the write calibration is still in progress. If an error is + // found the write calibration logic delays DQS by an additional + // clock cycle and restarts the pattern detection process. + // By design, if the write path timing is incorrect, the correct + // data pattern will never be detected. + // b. Valid data not found even after incrementing Phaser_Out + // coarse delay line. + + + always @(posedge clk) begin + if (rst) begin + wrcal_dqs_cnt_r <= #TCQ 'b0; + cal2_done_r <= #TCQ 1'b0; + cal2_prech_req_r <= #TCQ 1'b0; + cal2_state_r <= #TCQ CAL2_IDLE; + wrcal_pat_err <= #TCQ 1'b0; + wrcal_pat_resume_r <= #TCQ 1'b0; + wrcal_act_req <= #TCQ 1'b0; + cal2_if_reset <= #TCQ 1'b0; + temp_wrcal_done <= #TCQ 1'b0; + wrlvl_byte_redo <= #TCQ 1'b0; + early1_data <= #TCQ 1'b0; + early2_data <= #TCQ 1'b0; + idelay_ld <= #TCQ 1'b0; + idelay_ld_done <= #TCQ 1'b0; + pat1_detect <= #TCQ 1'b0; + early1_detect <= #TCQ 1'b0; + wrcal_sanity_chk_done <= #TCQ 1'b0; + wrcal_sanity_chk_err <= #TCQ 1'b0; + end else begin + cal2_prech_req_r <= #TCQ 1'b0; + case (cal2_state_r) + CAL2_IDLE: begin + wrcal_pat_err <= #TCQ 1'b0; + if (wrcal_start) begin + cal2_if_reset <= #TCQ 1'b0; + if (SIM_CAL_OPTION == "SKIP_CAL") + // If skip write calibration, then proceed to end. + cal2_state_r <= #TCQ CAL2_DONE; + else + cal2_state_r <= #TCQ CAL2_READ_WAIT; + end + end + + // General wait state to wait for read data to be output by the + // IN_FIFO + CAL2_READ_WAIT: begin + wrcal_pat_resume_r <= #TCQ 1'b0; + cal2_if_reset <= #TCQ 1'b0; + // Wait until read data is received, and pattern matching + // calculation is complete. NOTE: Need to add a timeout here + // in case for some reason data is never received (or rather + // the PHASER_IN and IN_FIFO think they never receives data) + if (pat_data_match_valid_r && (nCK_PER_CLK == 4)) begin + if (pat_data_match_r) + // If found data match, then move on to next DQS group + cal2_state_r <= #TCQ CAL2_NEXT_DQS; + else begin + if (wrcal_sanity_chk_r) + cal2_state_r <= #TCQ CAL2_ERR; + // If writes are one or two cycles early then redo + // write leveling for the byte + else if (early1_data_match_r) begin + early1_data <= #TCQ 1'b1; + early2_data <= #TCQ 1'b0; + wrlvl_byte_redo <= #TCQ 1'b1; + cal2_state_r <= #TCQ CAL2_WRLVL_WAIT; + end else if (early2_data_match_r) begin + early1_data <= #TCQ 1'b0; + early2_data <= #TCQ 1'b1; + wrlvl_byte_redo <= #TCQ 1'b1; + cal2_state_r <= #TCQ CAL2_WRLVL_WAIT; + // Read late due to incorrect MPR idelay value + // Decrement Idelay to '0'for the current byte + end else if (~idelay_ld_done) begin + cal2_state_r <= #TCQ CAL2_DQ_IDEL_DEC; + idelay_ld <= #TCQ 1'b1; + end else + cal2_state_r <= #TCQ CAL2_ERR; + end + end else if (pat_data_match_valid_r && (nCK_PER_CLK == 2)) begin + if ((pat1_data_match_r1 && pat2_data_match_r) || + (pat1_detect && pat2_data_match_r)) + // If found data match, then move on to next DQS group + cal2_state_r <= #TCQ CAL2_NEXT_DQS; + else if (pat1_data_match_r1 && ~pat2_data_match_r) begin + cal2_state_r <= #TCQ CAL2_READ_WAIT; + pat1_detect <= #TCQ 1'b1; + end else begin + // If writes are one or two cycles early then redo + // write leveling for the byte + if (wrcal_sanity_chk_r) + cal2_state_r <= #TCQ CAL2_ERR; + else if ((early1_data_match_r1 && early2_data_match_r) || + (early1_detect && early2_data_match_r)) begin + early1_data <= #TCQ 1'b1; + early2_data <= #TCQ 1'b0; + wrlvl_byte_redo <= #TCQ 1'b1; + cal2_state_r <= #TCQ CAL2_WRLVL_WAIT; + end else if (early1_data_match_r1 && ~early2_data_match_r) begin + early1_detect <= #TCQ 1'b1; + cal2_state_r <= #TCQ CAL2_READ_WAIT; + // Read late due to incorrect MPR idelay value + // Decrement Idelay to '0'for the current byte + end else if (~idelay_ld_done) begin + cal2_state_r <= #TCQ CAL2_DQ_IDEL_DEC; + idelay_ld <= #TCQ 1'b1; + end else + cal2_state_r <= #TCQ CAL2_ERR; + end + end else if (not_empty_wait_cnt == 'd31) + cal2_state_r <= #TCQ CAL2_ERR; + end + + CAL2_WRLVL_WAIT: begin + early1_detect <= #TCQ 1'b0; + if (wrlvl_byte_done && ~wrlvl_byte_done_r) + wrlvl_byte_redo <= #TCQ 1'b0; + if (wrlvl_byte_done) begin + if (rd_active_r1 && ~rd_active_r) begin + cal2_state_r <= #TCQ CAL2_IFIFO_RESET; + cal2_if_reset <= #TCQ 1'b1; + early1_data <= #TCQ 1'b0; + early2_data <= #TCQ 1'b0; + end + end + end + + CAL2_DQ_IDEL_DEC: begin + if (tap_inc_wait_cnt == 'd4) begin + idelay_ld <= #TCQ 1'b0; + cal2_state_r <= #TCQ CAL2_IFIFO_RESET; + cal2_if_reset <= #TCQ 1'b1; + idelay_ld_done <= #TCQ 1'b1; + end + end + + CAL2_IFIFO_RESET: begin + if (tap_inc_wait_cnt == 'd15) begin + cal2_if_reset <= #TCQ 1'b0; + if (wrcal_sanity_chk_r) + cal2_state_r <= #TCQ CAL2_DONE; + else if (idelay_ld_done) begin + wrcal_pat_resume_r <= #TCQ 1'b1; + cal2_state_r <= #TCQ CAL2_READ_WAIT; + end else + cal2_state_r <= #TCQ CAL2_IDLE; + end + end + + // Final processing for current DQS group. Move on to next group + CAL2_NEXT_DQS: begin + // At this point, we've just found the correct pattern for the + // current DQS group. + + // Request bank/row precharge, and wait for its completion. Always + // precharge after each DQS group to avoid tRAS(max) violation + //verilint STARC-2.2.3.3 off + if (wrcal_sanity_chk_r && (wrcal_dqs_cnt_r != DQS_WIDTH-1)) begin + cal2_prech_req_r <= #TCQ 1'b0; + wrcal_dqs_cnt_r <= #TCQ wrcal_dqs_cnt_r + 1; + cal2_state_r <= #TCQ CAL2_SANITY_WAIT; + end else + cal2_prech_req_r <= #TCQ 1'b1; + idelay_ld_done <= #TCQ 1'b0; + pat1_detect <= #TCQ 1'b0; + if (prech_done) + if (((DQS_WIDTH == 1) || (SIM_CAL_OPTION == "FAST_CAL")) || + (wrcal_dqs_cnt_r == DQS_WIDTH-1)) begin + // If either FAST_CAL is enabled and first DQS group is + // finished, or if the last DQS group was just finished, + // then end of write calibration + if (wrcal_sanity_chk_r) begin + cal2_if_reset <= #TCQ 1'b1; + cal2_state_r <= #TCQ CAL2_IFIFO_RESET; + end else + cal2_state_r <= #TCQ CAL2_DONE; + end else begin + // Continue to next DQS group + wrcal_dqs_cnt_r <= #TCQ wrcal_dqs_cnt_r + 1; + cal2_state_r <= #TCQ CAL2_READ_WAIT; + end + end + //verilint STARC-2.2.3.3 on + CAL2_SANITY_WAIT: begin + if (tap_inc_wait_cnt == 'd15) begin + cal2_state_r <= #TCQ CAL2_READ_WAIT; + wrcal_pat_resume_r <= #TCQ 1'b1; + end + end + + // Finished with read enable calibration + CAL2_DONE: begin + if (wrcal_sanity_chk && ~wrcal_sanity_chk_r) begin + cal2_done_r <= #TCQ 1'b0; + wrcal_dqs_cnt_r <= #TCQ 'd0; + cal2_state_r <= #TCQ CAL2_IDLE; + end else + cal2_done_r <= #TCQ 1'b1; + cal2_prech_req_r <= #TCQ 1'b0; + cal2_if_reset <= #TCQ 1'b0; + if (wrcal_sanity_chk_r) + wrcal_sanity_chk_done <= #TCQ 1'b1; + end + + // Assert error signal indicating that writes timing is incorrect + CAL2_ERR: begin + wrcal_pat_resume_r <= #TCQ 1'b0; + if (wrcal_sanity_chk_r) + wrcal_sanity_chk_err <= #TCQ 1'b1; + else + wrcal_pat_err <= #TCQ 1'b1; + cal2_state_r <= #TCQ CAL2_ERR; + end + endcase + end + end + + // Delay assertion of wrcal_done for write calibration by a few cycles after + // we've reached CAL2_DONE + always @(posedge clk) + if (rst) + cal2_done_r1 <= #TCQ 1'b0; + else + cal2_done_r1 <= #TCQ cal2_done_r; + + always @(posedge clk) + if (rst || (wrcal_sanity_chk && ~wrcal_sanity_chk_r)) + wrcal_done <= #TCQ 1'b0; + else if (cal2_done_r) + wrcal_done <= #TCQ 1'b1; + +endmodule diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_wrlvl.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_wrlvl.v new file mode 100644 index 0000000..9f3a811 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_wrlvl.v @@ -0,0 +1,1218 @@ +//***************************************************************************** +// (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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version: %version +// \ \ Application: MIG +// / / Filename: ddr_phy_wrlvl.v +// /___/ /\ Date Last Modified: $Date: 2011/06/24 14:49:00 $ +// \ \ / \ Date Created: Mon Jun 23 2008 +// \___\/\___\ +// +//Device: 7 Series +//Design Name: DDR3 SDRAM +//Purpose: +// Memory initialization and overall master state control during +// initialization and calibration. Specifically, the following functions +// are performed: +// 1. Memory initialization (initial AR, mode register programming, etc.) +// 2. Initiating write leveling +// 3. Generate training pattern writes for read leveling. Generate +// memory readback for read leveling. +// This module has a DFI interface for providing control/address and write +// data to the rest of the PHY datapath during initialization/calibration. +// Once initialization is complete, control is passed to the MC. +// NOTES: +// 1. Multiple CS (multi-rank) not supported +// 2. DDR2 not supported +// 3. ODT not supported +//Reference: +//Revision History: +//***************************************************************************** + +/****************************************************************************** +**$Id: ddr_phy_wrlvl.v,v 1.3 2011/06/24 14:49:00 mgeorge Exp $ +**$Date: 2011/06/24 14:49:00 $ +**$Author: mgeorge $ +**$Revision: 1.3 $ +**$Source: /devl/xcs/repo/env/Databases/ip/src2/O/mig_7series_v1_3/data/dlib/7series/ddr3_sdram/verilog/rtl/phy/ddr_phy_wrlvl.v,v $ +******************************************************************************/ + +`timescale 1ps/1ps + +module mig_7series_v4_0_ddr_phy_wrlvl # + ( + parameter TCQ = 100, + parameter DQS_CNT_WIDTH = 3, + parameter DQ_WIDTH = 64, + parameter DQS_WIDTH = 2, + parameter DRAM_WIDTH = 8, + parameter RANKS = 1, + parameter nCK_PER_CLK = 4, + parameter CLK_PERIOD = 4, + parameter SIM_CAL_OPTION = "NONE" + ) + ( + input clk, + input rst, + input phy_ctl_ready, + input wr_level_start, + input wl_sm_start, + input wrlvl_final, + input wrlvl_byte_redo, + input [DQS_CNT_WIDTH:0] wrcal_cnt, + input early1_data, + input early2_data, + input [DQS_CNT_WIDTH:0] oclkdelay_calib_cnt, + input oclkdelay_calib_done, + input [(DQ_WIDTH)-1:0] rd_data_rise0, + output reg wrlvl_byte_done, + output reg dqs_po_dec_done /* synthesis syn_maxfan = 2 */, + output phy_ctl_rdy_dly, + output reg wr_level_done /* synthesis syn_maxfan = 2 */, + // to phy_init for cs logic + output wrlvl_rank_done, + output done_dqs_tap_inc, + output [DQS_CNT_WIDTH:0] po_stg2_wl_cnt, + // Fine delay line used only during write leveling + // Inc/dec Phaser_Out fine delay line + output reg dqs_po_stg2_f_incdec, + // Enable Phaser_Out fine delay inc/dec + output reg dqs_po_en_stg2_f, + // Coarse delay line used during write leveling + // only if 64 taps of fine delay line were not + // sufficient to detect a 0->1 transition + // Inc Phaser_Out coarse delay line + output reg dqs_wl_po_stg2_c_incdec, + // Enable Phaser_Out coarse delay inc/dec + output reg dqs_wl_po_en_stg2_c, + // Read Phaser_Out delay value + input [8:0] po_counter_read_val, +// output reg dqs_wl_po_stg2_load, +// output reg [8:0] dqs_wl_po_stg2_reg_l, + // CK edge undetected + output reg wrlvl_err, + output reg [3*DQS_WIDTH-1:0] wl_po_coarse_cnt, + output reg [6*DQS_WIDTH-1:0] wl_po_fine_cnt, + // Debug ports + output [5:0] dbg_wl_tap_cnt, + output dbg_wl_edge_detect_valid, + output [(DQS_WIDTH)-1:0] dbg_rd_data_edge_detect, + output [DQS_CNT_WIDTH:0] dbg_dqs_count, + output [4:0] dbg_wl_state, + output [6*DQS_WIDTH-1:0] dbg_wrlvl_fine_tap_cnt, + output [3*DQS_WIDTH-1:0] dbg_wrlvl_coarse_tap_cnt, + output [255:0] dbg_phy_wrlvl + ); + + + localparam WL_IDLE = 5'h0; + localparam WL_INIT = 5'h1; + localparam WL_INIT_FINE_INC = 5'h2; + localparam WL_INIT_FINE_INC_WAIT1= 5'h3; + localparam WL_INIT_FINE_INC_WAIT = 5'h4; + localparam WL_INIT_FINE_DEC = 5'h5; + localparam WL_INIT_FINE_DEC_WAIT = 5'h6; + localparam WL_FINE_INC = 5'h7; + localparam WL_WAIT = 5'h8; + localparam WL_EDGE_CHECK = 5'h9; + localparam WL_DQS_CHECK = 5'hA; + localparam WL_DQS_CNT = 5'hB; + localparam WL_2RANK_TAP_DEC = 5'hC; + localparam WL_2RANK_DQS_CNT = 5'hD; + localparam WL_FINE_DEC = 5'hE; + localparam WL_FINE_DEC_WAIT = 5'hF; + localparam WL_CORSE_INC = 5'h10; + localparam WL_CORSE_INC_WAIT = 5'h11; + localparam WL_CORSE_INC_WAIT1 = 5'h12; + localparam WL_CORSE_INC_WAIT2 = 5'h13; + localparam WL_CORSE_DEC = 5'h14; + localparam WL_CORSE_DEC_WAIT = 5'h15; + localparam WL_CORSE_DEC_WAIT1 = 5'h16; + localparam WL_FINE_INC_WAIT = 5'h17; + localparam WL_2RANK_FINAL_TAP = 5'h18; + localparam WL_INIT_FINE_DEC_WAIT1= 5'h19; + localparam WL_FINE_DEC_WAIT1 = 5'h1A; + localparam WL_CORSE_INC_WAIT_TMP = 5'h1B; + + localparam COARSE_TAPS = 7; + + localparam FAST_CAL_FINE = (CLK_PERIOD/nCK_PER_CLK <= 2500) ? 45 : 48; + localparam FAST_CAL_COARSE = (CLK_PERIOD/nCK_PER_CLK <= 2500) ? 1 : 2; + localparam REDO_COARSE = (CLK_PERIOD/nCK_PER_CLK <= 2500) ? 2 : 5; + + + integer i, j, k, l, p, q, r, s, t, m, n, u, v, w, x,y; + + reg phy_ctl_ready_r1; + reg phy_ctl_ready_r2; + reg phy_ctl_ready_r3; + reg phy_ctl_ready_r4; + reg phy_ctl_ready_r5; + reg phy_ctl_ready_r6; + (* max_fanout = 50 *) reg [DQS_CNT_WIDTH:0] dqs_count_r; + reg [1:0] rank_cnt_r; + reg [DQS_WIDTH-1:0] rd_data_rise_wl_r; + reg [DQS_WIDTH-1:0] rd_data_previous_r; + reg [DQS_WIDTH-1:0] rd_data_edge_detect_r; + reg wr_level_done_r; + reg wrlvl_rank_done_r; + reg wr_level_start_r; + reg [4:0] wl_state_r, wl_state_r1; + reg inhibit_edge_detect_r; + reg wl_edge_detect_valid_r; + reg [5:0] wl_tap_count_r; + reg [5:0] fine_dec_cnt; + reg [5:0] fine_inc[0:DQS_WIDTH-1]; // DQS_WIDTH number of counters 6-bit each + reg [2:0] corse_dec[0:DQS_WIDTH-1]; + reg [2:0] corse_inc[0:DQS_WIDTH-1]; + reg dq_cnt_inc; + reg [3:0] stable_cnt; + reg flag_ck_negedge; + //reg past_negedge; + reg flag_init; + reg [2:0] corse_cnt[0:DQS_WIDTH-1]; + reg [3*DQS_WIDTH-1:0] corse_cnt_dbg; + reg [2:0] wl_corse_cnt[0:RANKS-1][0:DQS_WIDTH-1]; + //reg [3*DQS_WIDTH-1:0] coarse_tap_inc; + reg [2:0] final_coarse_tap[0:DQS_WIDTH-1]; + reg [5:0] add_smallest[0:DQS_WIDTH-1]; + reg [5:0] add_largest[0:DQS_WIDTH-1]; + //reg [6*DQS_WIDTH-1:0] fine_tap_inc; + //reg [6*DQS_WIDTH-1:0] fine_tap_dec; + reg wr_level_done_r1; + reg wr_level_done_r2; + reg wr_level_done_r3; + reg wr_level_done_r4; + reg wr_level_done_r5; + reg [5:0] wl_dqs_tap_count_r[0:RANKS-1][0:DQS_WIDTH-1]; + reg [5:0] smallest[0:DQS_WIDTH-1]; + reg [5:0] largest[0:DQS_WIDTH-1]; + reg [5:0] final_val[0:DQS_WIDTH-1]; + reg [5:0] po_dec_cnt[0:DQS_WIDTH-1]; + reg done_dqs_dec; + reg [8:0] po_rdval_cnt; + reg po_cnt_dec; + reg po_dec_done; + reg dual_rnk_dec; + wire [DQS_CNT_WIDTH+2:0] dqs_count_w; + reg [5:0] fast_cal_fine_cnt; + reg [2:0] fast_cal_coarse_cnt; + reg wrlvl_byte_redo_r; + reg [2:0] wrlvl_redo_corse_inc; + reg wrlvl_final_r; + reg final_corse_dec; + wire [DQS_CNT_WIDTH+2:0] oclk_count_w; + reg wrlvl_tap_done_r ; + reg [3:0] wait_cnt; + reg [3:0] incdec_wait_cnt; + + + + // Debug ports + assign dbg_wl_edge_detect_valid = wl_edge_detect_valid_r; + assign dbg_rd_data_edge_detect = rd_data_edge_detect_r; + assign dbg_wl_tap_cnt = wl_tap_count_r; + assign dbg_dqs_count = dqs_count_r; + assign dbg_wl_state = wl_state_r; + assign dbg_wrlvl_fine_tap_cnt = wl_po_fine_cnt; + assign dbg_wrlvl_coarse_tap_cnt = wl_po_coarse_cnt; + + always @(*) begin + for (v = 0; v < DQS_WIDTH; v = v + 1) + corse_cnt_dbg[3*v+:3] = corse_cnt[v]; + end + + assign dbg_phy_wrlvl[0+:27] = corse_cnt_dbg; + assign dbg_phy_wrlvl[27+:5] = wl_state_r; + assign dbg_phy_wrlvl[32+:4] = dqs_count_r; + assign dbg_phy_wrlvl[36+:9] = rd_data_rise_wl_r; + assign dbg_phy_wrlvl[45+:9] = rd_data_previous_r; + assign dbg_phy_wrlvl[54+:4] = stable_cnt; + assign dbg_phy_wrlvl[58] = 'd0; + assign dbg_phy_wrlvl[59] = flag_ck_negedge; + + assign dbg_phy_wrlvl [60] = wl_edge_detect_valid_r; + assign dbg_phy_wrlvl [61+:6] = wl_tap_count_r; + assign dbg_phy_wrlvl [67+:9] = rd_data_edge_detect_r; + assign dbg_phy_wrlvl [76+:54] = wl_po_fine_cnt; + assign dbg_phy_wrlvl [130+:27] = wl_po_coarse_cnt; + + + + //************************************************************************** + // DQS count to hard PHY during write leveling using Phaser_OUT Stage2 delay + //************************************************************************** + assign po_stg2_wl_cnt = dqs_count_r; + + assign wrlvl_rank_done = wrlvl_rank_done_r; + + assign done_dqs_tap_inc = done_dqs_dec; + + assign phy_ctl_rdy_dly = phy_ctl_ready_r6; + + always @(posedge clk) begin + phy_ctl_ready_r1 <= #TCQ phy_ctl_ready; + phy_ctl_ready_r2 <= #TCQ phy_ctl_ready_r1; + phy_ctl_ready_r3 <= #TCQ phy_ctl_ready_r2; + phy_ctl_ready_r4 <= #TCQ phy_ctl_ready_r3; + phy_ctl_ready_r5 <= #TCQ phy_ctl_ready_r4; + phy_ctl_ready_r6 <= #TCQ phy_ctl_ready_r5; + wrlvl_byte_redo_r <= #TCQ wrlvl_byte_redo; + wrlvl_final_r <= #TCQ wrlvl_final; + if ((wrlvl_byte_redo && ~wrlvl_byte_redo_r) || + (wrlvl_final && ~wrlvl_final_r)) + wr_level_done <= #TCQ 1'b0; + else + wr_level_done <= #TCQ done_dqs_dec; + end + +// Status signal that will be asserted once the first +// pass of write leveling is done. + always @(posedge clk) begin + if(rst) begin + wrlvl_tap_done_r <= #TCQ 1'b0 ; + end else begin + if(wrlvl_tap_done_r == 1'b0) begin + if(oclkdelay_calib_done) begin + wrlvl_tap_done_r <= #TCQ 1'b1 ; + end + end + end + end + + always @(posedge clk) begin + if (rst || po_cnt_dec) + wait_cnt <= #TCQ 'd8; + else if (phy_ctl_ready_r6 && (wait_cnt > 'd0)) + wait_cnt <= #TCQ wait_cnt - 1; + end + + always @(posedge clk) begin + if (rst) begin + po_rdval_cnt <= #TCQ 'd0; + end else if (phy_ctl_ready_r5 && ~phy_ctl_ready_r6) begin + po_rdval_cnt <= #TCQ po_counter_read_val; + end else if (po_rdval_cnt > 'd0) begin + if (po_cnt_dec) + po_rdval_cnt <= #TCQ po_rdval_cnt - 1; + else + po_rdval_cnt <= #TCQ po_rdval_cnt; + end else if (po_rdval_cnt == 'd0) begin + po_rdval_cnt <= #TCQ po_rdval_cnt; + end + end + + always @(posedge clk) begin + if (rst || (po_rdval_cnt == 'd0)) + po_cnt_dec <= #TCQ 1'b0; + else if (phy_ctl_ready_r6 && (po_rdval_cnt > 'd0) && (wait_cnt == 'd1)) + po_cnt_dec <= #TCQ 1'b1; + else + po_cnt_dec <= #TCQ 1'b0; + end + + always @(posedge clk) begin + if (rst) + po_dec_done <= #TCQ 1'b0; + else if (((po_cnt_dec == 'd1) && (po_rdval_cnt == 'd1)) || + (phy_ctl_ready_r6 && (po_rdval_cnt == 'd0))) begin + po_dec_done <= #TCQ 1'b1; + end + end + + + always @(posedge clk) begin + dqs_po_dec_done <= #TCQ po_dec_done; + wr_level_done_r1 <= #TCQ wr_level_done_r; + wr_level_done_r2 <= #TCQ wr_level_done_r1; + wr_level_done_r3 <= #TCQ wr_level_done_r2; + wr_level_done_r4 <= #TCQ wr_level_done_r3; + wr_level_done_r5 <= #TCQ wr_level_done_r4; + for (l = 0; l < DQS_WIDTH; l = l + 1) begin + wl_po_coarse_cnt[3*l+:3] <= #TCQ final_coarse_tap[l]; + if ((RANKS == 1) || ~oclkdelay_calib_done) + wl_po_fine_cnt[6*l+:6] <= #TCQ smallest[l]; + else + wl_po_fine_cnt[6*l+:6] <= #TCQ final_val[l]; + end + end + + generate + if (RANKS == 2) begin: dual_rank + always @(posedge clk) begin + if (rst || (wrlvl_byte_redo && ~wrlvl_byte_redo_r) || + (wrlvl_final && ~wrlvl_final_r)) + done_dqs_dec <= #TCQ 1'b0; + else if ((SIM_CAL_OPTION == "FAST_CAL") || ~oclkdelay_calib_done) + done_dqs_dec <= #TCQ wr_level_done_r; + else if (wr_level_done_r5 && (wl_state_r == WL_IDLE)) + done_dqs_dec <= #TCQ 1'b1; + end + end else begin: single_rank + always @(posedge clk) begin + if (rst || (wrlvl_byte_redo && ~wrlvl_byte_redo_r) || + (wrlvl_final && ~wrlvl_final_r)) + done_dqs_dec <= #TCQ 1'b0; + else if (~oclkdelay_calib_done) + done_dqs_dec <= #TCQ wr_level_done_r; + else if (wr_level_done_r3 && ~wr_level_done_r4) + done_dqs_dec <= #TCQ 1'b1; + end + end + endgenerate + + always @(posedge clk) + if (rst || (wrlvl_byte_redo && ~wrlvl_byte_redo_r)) + wrlvl_byte_done <= #TCQ 1'b0; + else if (wrlvl_byte_redo && wr_level_done_r3 && ~wr_level_done_r4) + wrlvl_byte_done <= #TCQ 1'b1; + + // Storing DQS tap values at the end of each DQS write leveling + always @(posedge clk) begin + if (rst) begin + for (k = 0; k < RANKS; k = k + 1) begin: rst_wl_dqs_tap_count_loop + for (n = 0; n < DQS_WIDTH; n = n + 1) begin + wl_corse_cnt[k][n] <= #TCQ 'b0; + wl_dqs_tap_count_r[k][n] <= #TCQ 'b0; + end + end + end else if ((wl_state_r == WL_DQS_CNT) | (wl_state_r == WL_WAIT) | + (wl_state_r == WL_FINE_DEC_WAIT1) | + (wl_state_r == WL_2RANK_TAP_DEC)) begin + wl_dqs_tap_count_r[rank_cnt_r][dqs_count_r] <= #TCQ wl_tap_count_r; + wl_corse_cnt[rank_cnt_r][dqs_count_r] <= #TCQ corse_cnt[dqs_count_r]; + end else if ((SIM_CAL_OPTION == "FAST_CAL") & (wl_state_r == WL_DQS_CHECK)) begin + for (p = 0; p < RANKS; p = p +1) begin: dqs_tap_rank_cnt + for(q = 0; q < DQS_WIDTH; q = q +1) begin: dqs_tap_dqs_cnt + wl_dqs_tap_count_r[p][q] <= #TCQ wl_tap_count_r; + wl_corse_cnt[p][q] <= #TCQ corse_cnt[0]; + end + end + end + end + + // Convert coarse delay to fine taps in case of unequal number of coarse + // taps between ranks. Assuming a difference of 1 coarse tap counts + // between ranks. A common fine and coarse tap value must be used for both ranks + // because Phaser_Out has only one rank register. + // Coarse tap1 = period(ps)*93/360 = 34 fine taps + // Other coarse taps = period(ps)*103/360 = 38 fine taps + + generate + genvar cnt; + if (RANKS == 2) begin // Dual rank + for(cnt = 0; cnt < DQS_WIDTH; cnt = cnt +1) begin: coarse_dqs_cnt + always @(posedge clk) begin + if (rst) begin + //coarse_tap_inc[3*cnt+:3] <= #TCQ 'b0; + add_smallest[cnt] <= #TCQ 'd0; + add_largest[cnt] <= #TCQ 'd0; + final_coarse_tap[cnt] <= #TCQ 'd0; + end else if (wr_level_done_r1 & ~wr_level_done_r2) begin + if (~oclkdelay_calib_done) begin + for(y = 0 ; y < DQS_WIDTH; y = y+1) begin + final_coarse_tap[y] <= #TCQ wl_corse_cnt[0][y]; + add_smallest[y] <= #TCQ 'd0; + add_largest[y] <= #TCQ 'd0; + end + end else + if (wl_corse_cnt[0][cnt] == wl_corse_cnt[1][cnt]) begin + // Both ranks have use the same number of coarse delay taps. + // No conversion of coarse tap to fine taps required. + //coarse_tap_inc[3*cnt+:3] <= #TCQ wl_corse_cnt[1][3*cnt+:3]; + final_coarse_tap[cnt] <= #TCQ wl_corse_cnt[1][cnt]; + add_smallest[cnt] <= #TCQ 'd0; + add_largest[cnt] <= #TCQ 'd0; + end else if (wl_corse_cnt[0][cnt] < wl_corse_cnt[1][cnt]) begin + // Rank 0 uses fewer coarse delay taps than rank1. + // conversion of coarse tap to fine taps required for rank1. + // The final coarse count will the smaller value. + //coarse_tap_inc[3*cnt+:3] <= #TCQ wl_corse_cnt[1][3*cnt+:3] - 1; + final_coarse_tap[cnt] <= #TCQ wl_corse_cnt[1][cnt] - 1; + if (|wl_corse_cnt[0][cnt]) + // Coarse tap 2 or higher being converted to fine taps + // This will be added to 'largest' value in final_val + // computation + add_largest[cnt] <= #TCQ 'd38; + else + // Coarse tap 1 being converted to fine taps + // This will be added to 'largest' value in final_val + // computation + add_largest[cnt] <= #TCQ 'd34; + end else if (wl_corse_cnt[0][cnt] > wl_corse_cnt[1][cnt]) begin + // This may be an unlikely scenario in a real system. + // Rank 0 uses more coarse delay taps than rank1. + // conversion of coarse tap to fine taps required. + //coarse_tap_inc[3*cnt+:3] <= #TCQ 'd0; + final_coarse_tap[cnt] <= #TCQ wl_corse_cnt[1][cnt]; + if (|wl_corse_cnt[1][cnt]) + // Coarse tap 2 or higher being converted to fine taps + // This will be added to 'smallest' value in final_val + // computation + add_smallest[cnt] <= #TCQ 'd38; + else + // Coarse tap 1 being converted to fine taps + // This will be added to 'smallest' value in + // final_val computation + add_smallest[cnt] <= #TCQ 'd34; + end + end + end + end + end else begin + // Single rank + always @(posedge clk) begin + //coarse_tap_inc <= #TCQ 'd0; + for(w = 0; w < DQS_WIDTH; w = w + 1) begin + final_coarse_tap[w] <= #TCQ wl_corse_cnt[0][w]; + add_smallest[w] <= #TCQ 'd0; + add_largest[w] <= #TCQ 'd0; + end + end + end + endgenerate + + + // Determine delay value for DQS in multirank system + // Assuming delay value is the smallest for rank 0 DQS + // and largest delay value for rank 4 DQS + // Set to smallest + ((largest-smallest)/2) + always @(posedge clk) begin + if (rst) begin + for(x = 0; x < DQS_WIDTH; x = x +1) begin + smallest[x] <= #TCQ 'b0; + largest[x] <= #TCQ 'b0; + end + end else if ((wl_state_r == WL_DQS_CNT) & wrlvl_byte_redo) begin + smallest[dqs_count_r] <= #TCQ wl_dqs_tap_count_r[0][dqs_count_r]; + largest[dqs_count_r] <= #TCQ wl_dqs_tap_count_r[0][dqs_count_r]; + end else if ((wl_state_r == WL_DQS_CNT) | + (wl_state_r == WL_2RANK_TAP_DEC)) begin + smallest[dqs_count_r] <= #TCQ wl_dqs_tap_count_r[0][dqs_count_r]; + largest[dqs_count_r] <= #TCQ wl_dqs_tap_count_r[RANKS-1][dqs_count_r]; + end else if (((SIM_CAL_OPTION == "FAST_CAL") | + (~oclkdelay_calib_done & ~wrlvl_byte_redo)) & + wr_level_done_r1 & ~wr_level_done_r2) begin + for(i = 0; i < DQS_WIDTH; i = i +1) begin: smallest_dqs + smallest[i] <= #TCQ wl_dqs_tap_count_r[0][i]; + largest[i] <= #TCQ wl_dqs_tap_count_r[0][i]; + end + end + end + + +// final_val to be used for all DQSs in all ranks + genvar wr_i; + generate + for (wr_i = 0; wr_i < DQS_WIDTH; wr_i = wr_i +1) begin: gen_final_tap + always @(posedge clk) begin + if (rst) + final_val[wr_i] <= #TCQ 'b0; + else if (wr_level_done_r2 && ~wr_level_done_r3) begin + if (~oclkdelay_calib_done) + final_val[wr_i] <= #TCQ (smallest[wr_i] + add_smallest[wr_i]); + else if ((smallest[wr_i] + add_smallest[wr_i]) < + (largest[wr_i] + add_largest[wr_i])) + final_val[wr_i] <= #TCQ ((smallest[wr_i] + add_smallest[wr_i]) + + (((largest[wr_i] + add_largest[wr_i]) - + (smallest[wr_i] + add_smallest[wr_i]))/2)); + else if ((smallest[wr_i] + add_smallest[wr_i]) > + (largest[wr_i] + add_largest[wr_i])) + final_val[wr_i] <= #TCQ ((largest[wr_i] + add_largest[wr_i]) + + (((smallest[wr_i] + add_smallest[wr_i]) - + (largest[wr_i] + add_largest[wr_i]))/2)); + else if ((smallest[wr_i] + add_smallest[wr_i]) == + (largest[wr_i] + add_largest[wr_i])) + final_val[wr_i] <= #TCQ (largest[wr_i] + add_largest[wr_i]); + end + end + end + endgenerate + +// // fine tap inc/dec value for all DQSs in all ranks +// genvar dqs_i; +// generate +// for (dqs_i = 0; dqs_i < DQS_WIDTH; dqs_i = dqs_i +1) begin: gen_fine_tap +// always @(posedge clk) begin +// if (rst) +// fine_tap_inc[6*dqs_i+:6] <= #TCQ 'd0; +// //fine_tap_dec[6*dqs_i+:6] <= #TCQ 'd0; +// else if (wr_level_done_r3 && ~wr_level_done_r4) begin +// fine_tap_inc[6*dqs_i+:6] <= #TCQ final_val[6*dqs_i+:6]; +// //fine_tap_dec[6*dqs_i+:6] <= #TCQ 'd0; +// end +// end +// endgenerate + + + // Inc/Dec Phaser_Out stage 2 fine delay line + always @(posedge clk) begin + if (rst) begin + // Fine delay line used only during write leveling + dqs_po_stg2_f_incdec <= #TCQ 1'b0; + dqs_po_en_stg2_f <= #TCQ 1'b0; + // Dec Phaser_Out fine delay (1)before write leveling, + // (2)if no 0 to 1 transition detected with 63 fine delay taps, or + // (3)dual rank case where fine taps for the first rank need to be 0 + end else if (po_cnt_dec || (wl_state_r == WL_INIT_FINE_DEC) || + (wl_state_r == WL_FINE_DEC)) begin + dqs_po_stg2_f_incdec <= #TCQ 1'b0; + dqs_po_en_stg2_f <= #TCQ 1'b1; + // Inc Phaser_Out fine delay during write leveling + end else if ((wl_state_r == WL_INIT_FINE_INC) || + (wl_state_r == WL_FINE_INC)) begin + dqs_po_stg2_f_incdec <= #TCQ 1'b1; + dqs_po_en_stg2_f <= #TCQ 1'b1; + end else begin + dqs_po_stg2_f_incdec <= #TCQ 1'b0; + dqs_po_en_stg2_f <= #TCQ 1'b0; + end + end + + + // Inc Phaser_Out stage 2 Coarse delay line + always @(posedge clk) begin + if (rst) begin + // Coarse delay line used during write leveling + // only if no 0->1 transition undetected with 64 + // fine delay line taps + dqs_wl_po_stg2_c_incdec <= #TCQ 1'b0; + dqs_wl_po_en_stg2_c <= #TCQ 1'b0; + end else if (wl_state_r == WL_CORSE_INC) begin + // Inc Phaser_Out coarse delay during write leveling + dqs_wl_po_stg2_c_incdec <= #TCQ 1'b1; + dqs_wl_po_en_stg2_c <= #TCQ 1'b1; + end else begin + dqs_wl_po_stg2_c_incdec <= #TCQ 1'b0; + dqs_wl_po_en_stg2_c <= #TCQ 1'b0; + end + end + + + // only storing the rise data for checking. The data comming back during + // write leveling will be a static value. Just checking for rise data is + // enough. + +genvar rd_i; +generate + for(rd_i = 0; rd_i < DQS_WIDTH; rd_i = rd_i +1)begin: gen_rd + always @(posedge clk) + rd_data_rise_wl_r[rd_i] <= + #TCQ |rd_data_rise0[(rd_i*DRAM_WIDTH)+DRAM_WIDTH-1:rd_i*DRAM_WIDTH]; + end +endgenerate + + + // storing the previous data for checking later. + always @(posedge clk)begin + if ((wl_state_r == WL_INIT) || //(wl_state_r == WL_INIT_FINE_INC_WAIT) || + //(wl_state_r == WL_INIT_FINE_INC_WAIT1) || + ((wl_state_r1 == WL_INIT_FINE_INC_WAIT) & (wl_state_r == WL_INIT_FINE_INC)) || + (wl_state_r == WL_FINE_DEC) || (wl_state_r == WL_FINE_DEC_WAIT1) || (wl_state_r == WL_FINE_DEC_WAIT) || + (wl_state_r == WL_CORSE_INC) || (wl_state_r == WL_CORSE_INC_WAIT) || (wl_state_r == WL_CORSE_INC_WAIT_TMP) || + (wl_state_r == WL_CORSE_INC_WAIT1) || (wl_state_r == WL_CORSE_INC_WAIT2) || + ((wl_state_r == WL_EDGE_CHECK) & (wl_edge_detect_valid_r))) + rd_data_previous_r <= #TCQ rd_data_rise_wl_r; + end + + // changed stable count from 3 to 7 because of fine tap resolution + always @(posedge clk)begin + if (rst | (wl_state_r == WL_DQS_CNT) | + (wl_state_r == WL_2RANK_TAP_DEC) | + (wl_state_r == WL_FINE_DEC) | + (rd_data_previous_r[dqs_count_r] != rd_data_rise_wl_r[dqs_count_r]) | + (wl_state_r1 == WL_INIT_FINE_DEC)) + stable_cnt <= #TCQ 'd0; + else if ((wl_tap_count_r > 6'd0) & + (((wl_state_r == WL_EDGE_CHECK) & (wl_edge_detect_valid_r)) | + ((wl_state_r1 == WL_INIT_FINE_INC_WAIT) & (wl_state_r == WL_INIT_FINE_INC)))) begin + if ((rd_data_previous_r[dqs_count_r] == rd_data_rise_wl_r[dqs_count_r]) + & (stable_cnt < 'd14)) + stable_cnt <= #TCQ stable_cnt + 1; + end + end + + // Signal to ensure that flag_ck_negedge does not incorrectly assert + // when DQS is very close to CK rising edge + //always @(posedge clk) begin + // if (rst | (wl_state_r == WL_DQS_CNT) | + // (wl_state_r == WL_DQS_CHECK) | wr_level_done_r) + // past_negedge <= #TCQ 1'b0; + // else if (~flag_ck_negedge && ~rd_data_previous_r[dqs_count_r] && + // (stable_cnt == 'd0) && ((wl_state_r == WL_CORSE_INC_WAIT1) | + // (wl_state_r == WL_CORSE_INC_WAIT2))) + // past_negedge <= #TCQ 1'b1; + //end + + // Flag to indicate negedge of CK detected and ignore 0->1 transitions + // in this region + always @(posedge clk)begin + if (rst | (wl_state_r == WL_DQS_CNT) | + (wl_state_r == WL_DQS_CHECK) | wr_level_done_r | + (wl_state_r1 == WL_INIT_FINE_DEC)) + flag_ck_negedge <= #TCQ 1'd0; + else if ((rd_data_previous_r[dqs_count_r] && ((stable_cnt > 'd0) | + (wl_state_r == WL_FINE_DEC) | (wl_state_r == WL_FINE_DEC_WAIT) | (wl_state_r == WL_FINE_DEC_WAIT1))) | + (wl_state_r == WL_CORSE_INC)) + flag_ck_negedge <= #TCQ 1'd1; + else if (~rd_data_previous_r[dqs_count_r] && (stable_cnt == 'd14)) + //&& flag_ck_negedge) + flag_ck_negedge <= #TCQ 1'd0; + end + + // Flag to inhibit rd_data_edge_detect_r before stable DQ + always @(posedge clk) begin + if (rst) + flag_init <= #TCQ 1'b1; + else if ((wl_state_r == WL_WAIT) && ((wl_state_r1 == WL_INIT_FINE_INC_WAIT) || + (wl_state_r1 == WL_INIT_FINE_DEC_WAIT))) + flag_init <= #TCQ 1'b0; + end + + //checking for transition from 0 to 1 + always @(posedge clk)begin + if (rst | flag_ck_negedge | flag_init | (wl_tap_count_r < 'd1) | + inhibit_edge_detect_r) + rd_data_edge_detect_r <= #TCQ {DQS_WIDTH{1'b0}}; + else if (rd_data_edge_detect_r[dqs_count_r] == 1'b1) begin + if ((wl_state_r == WL_FINE_DEC) || (wl_state_r == WL_FINE_DEC_WAIT) || (wl_state_r == WL_FINE_DEC_WAIT1) || + (wl_state_r == WL_CORSE_INC) || (wl_state_r == WL_CORSE_INC_WAIT) || (wl_state_r == WL_CORSE_INC_WAIT_TMP) || + (wl_state_r == WL_CORSE_INC_WAIT1) || (wl_state_r == WL_CORSE_INC_WAIT2)) + rd_data_edge_detect_r <= #TCQ {DQS_WIDTH{1'b0}}; + else + rd_data_edge_detect_r <= #TCQ rd_data_edge_detect_r; + end else if (rd_data_previous_r[dqs_count_r] && (stable_cnt < 'd14)) + rd_data_edge_detect_r <= #TCQ {DQS_WIDTH{1'b0}}; + else + rd_data_edge_detect_r <= #TCQ (~rd_data_previous_r & rd_data_rise_wl_r); + end + + + + // registring the write level start signal + always@(posedge clk) begin + wr_level_start_r <= #TCQ wr_level_start; + end + + // Assign dqs_count_r to dqs_count_w to perform the shift operation + // instead of multiply operation + assign dqs_count_w = {2'b00, dqs_count_r}; + + assign oclk_count_w = {2'b00, oclkdelay_calib_cnt}; + + always @(posedge clk) begin + if (rst) + incdec_wait_cnt <= #TCQ 'd0; + else if ((wl_state_r == WL_FINE_DEC_WAIT1) || + (wl_state_r == WL_INIT_FINE_DEC_WAIT1) || + (wl_state_r == WL_CORSE_INC_WAIT_TMP)) + incdec_wait_cnt <= #TCQ incdec_wait_cnt + 1; + else + incdec_wait_cnt <= #TCQ 'd0; + end + + + // state machine to initiate the write leveling sequence + // The state machine operates on one byte at a time. + // It will increment the delays to the DQS OSERDES + // and sample the DQ from the memory. When it detects + // a transition from 1 to 0 then the write leveling is considered + // done. + always @(posedge clk) begin + if(rst)begin + wrlvl_err <= #TCQ 1'b0; + wr_level_done_r <= #TCQ 1'b0; + wrlvl_rank_done_r <= #TCQ 1'b0; + dqs_count_r <= #TCQ {DQS_CNT_WIDTH+1{1'b0}}; + dq_cnt_inc <= #TCQ 1'b1; + rank_cnt_r <= #TCQ 2'b00; + wl_state_r <= #TCQ WL_IDLE; + wl_state_r1 <= #TCQ WL_IDLE; + inhibit_edge_detect_r <= #TCQ 1'b1; + wl_edge_detect_valid_r <= #TCQ 1'b0; + wl_tap_count_r <= #TCQ 6'd0; + fine_dec_cnt <= #TCQ 6'd0; + for (r = 0; r < DQS_WIDTH; r = r + 1) begin + fine_inc[r] <= #TCQ 6'b0; + corse_dec[r] <= #TCQ 3'b0; + corse_inc[r] <= #TCQ 3'b0; + corse_cnt[r] <= #TCQ 3'b0; + end + dual_rnk_dec <= #TCQ 1'b0; + fast_cal_fine_cnt <= #TCQ FAST_CAL_FINE; + fast_cal_coarse_cnt <= #TCQ FAST_CAL_COARSE; + final_corse_dec <= #TCQ 1'b0; + //zero_tran_r <= #TCQ 1'b0; + wrlvl_redo_corse_inc <= #TCQ 'd0; + end else begin + wl_state_r1 <= #TCQ wl_state_r; + case (wl_state_r) + + WL_IDLE: begin + wrlvl_rank_done_r <= #TCQ 1'd0; + inhibit_edge_detect_r <= #TCQ 1'b1; + if (wrlvl_byte_redo && ~wrlvl_byte_redo_r) begin + wr_level_done_r <= #TCQ 1'b0; + dqs_count_r <= #TCQ wrcal_cnt; + corse_cnt[wrcal_cnt] <= #TCQ final_coarse_tap[wrcal_cnt]; + wl_tap_count_r <= #TCQ smallest[wrcal_cnt]; + if (early1_data && + (((final_coarse_tap[wrcal_cnt] < 'd6) && (CLK_PERIOD/nCK_PER_CLK <= 2500)) || + ((final_coarse_tap[wrcal_cnt] < 'd3) && (CLK_PERIOD/nCK_PER_CLK > 2500)))) + wrlvl_redo_corse_inc <= #TCQ REDO_COARSE; + else if (early2_data && (final_coarse_tap[wrcal_cnt] < 'd2)) + wrlvl_redo_corse_inc <= #TCQ 3'd6; + else begin + wl_state_r <= #TCQ WL_IDLE; + wrlvl_err <= #TCQ 1'b1; + end + end else if (wrlvl_final && ~wrlvl_final_r) begin + wr_level_done_r <= #TCQ 1'b0; + dqs_count_r <= #TCQ 'd0; + end + // verilint STARC-2.2.3.3 off + if(!wr_level_done_r & wr_level_start_r & wl_sm_start) begin + if (SIM_CAL_OPTION == "FAST_CAL") + wl_state_r <= #TCQ WL_FINE_INC; + else + wl_state_r <= #TCQ WL_INIT; + end + end + // verilint STARC-2.2.3.3 on + WL_INIT: begin + wl_edge_detect_valid_r <= #TCQ 1'b0; + inhibit_edge_detect_r <= #TCQ 1'b1; + wrlvl_rank_done_r <= #TCQ 1'd0; + //zero_tran_r <= #TCQ 1'b0; + if (wrlvl_final) + corse_cnt[dqs_count_w ] <= #TCQ final_coarse_tap[dqs_count_w ]; + if (wrlvl_byte_redo) begin + if (|wl_tap_count_r) begin + wl_state_r <= #TCQ WL_FINE_DEC; + fine_dec_cnt <= #TCQ wl_tap_count_r; + end else if ((corse_cnt[dqs_count_w] + wrlvl_redo_corse_inc) <= 'd7) + wl_state_r <= #TCQ WL_CORSE_INC; + else begin + wl_state_r <= #TCQ WL_IDLE; + wrlvl_err <= #TCQ 1'b1; + end + end else if(wl_sm_start) + wl_state_r <= #TCQ WL_INIT_FINE_INC; + end + + // Initially Phaser_Out fine delay taps incremented + // until stable_cnt=14. A stable_cnt of 14 indicates + // that rd_data_rise_wl_r=rd_data_previous_r for 14 fine + // tap increments. This is done to inhibit false 0->1 + // edge detection when DQS is initially aligned to the + // negedge of CK + WL_INIT_FINE_INC: begin + wl_state_r <= #TCQ WL_INIT_FINE_INC_WAIT1; + wl_tap_count_r <= #TCQ wl_tap_count_r + 1'b1; + final_corse_dec <= #TCQ 1'b0; + end + + WL_INIT_FINE_INC_WAIT1: begin + if (wl_sm_start) + wl_state_r <= #TCQ WL_INIT_FINE_INC_WAIT; + end + + // Case1: stable value of rd_data_previous_r=0 then + // proceed to 0->1 edge detection. + // Case2: stable value of rd_data_previous_r=1 then + // decrement fine taps to '0' and proceed to 0->1 + // edge detection. Need to decrement in this case to + // make sure a valid 0->1 transition was not left + // undetected. + WL_INIT_FINE_INC_WAIT: begin + if (wl_sm_start) begin + if (stable_cnt < 'd14) + wl_state_r <= #TCQ WL_INIT_FINE_INC; + else if (~rd_data_previous_r[dqs_count_r]) begin + wl_state_r <= #TCQ WL_WAIT; + inhibit_edge_detect_r <= #TCQ 1'b0; + end else begin + wl_state_r <= #TCQ WL_INIT_FINE_DEC; + fine_dec_cnt <= #TCQ wl_tap_count_r; + end + end + end + + // Case2: stable value of rd_data_previous_r=1 then + // decrement fine taps to '0' and proceed to 0->1 + // edge detection. Need to decrement in this case to + // make sure a valid 0->1 transition was not left + // undetected. + WL_INIT_FINE_DEC: begin + wl_tap_count_r <= #TCQ 'd0; + wl_state_r <= #TCQ WL_INIT_FINE_DEC_WAIT1; + if (fine_dec_cnt > 6'd0) + fine_dec_cnt <= #TCQ fine_dec_cnt - 1; + else + fine_dec_cnt <= #TCQ fine_dec_cnt; + end + + WL_INIT_FINE_DEC_WAIT1: begin + if (incdec_wait_cnt == 'd8) + wl_state_r <= #TCQ WL_INIT_FINE_DEC_WAIT; + end + + WL_INIT_FINE_DEC_WAIT: begin + if (fine_dec_cnt > 6'd0) begin + wl_state_r <= #TCQ WL_INIT_FINE_DEC; + inhibit_edge_detect_r <= #TCQ 1'b1; + end else begin + wl_state_r <= #TCQ WL_WAIT; + inhibit_edge_detect_r <= #TCQ 1'b0; + end + end + + // Inc DQS Phaser_Out Stage2 Fine Delay line + WL_FINE_INC: begin + wl_edge_detect_valid_r <= #TCQ 1'b0; + if (SIM_CAL_OPTION == "FAST_CAL") begin + wl_state_r <= #TCQ WL_FINE_INC_WAIT; + if (fast_cal_fine_cnt > 'd0) + fast_cal_fine_cnt <= #TCQ fast_cal_fine_cnt - 1; + else + fast_cal_fine_cnt <= #TCQ fast_cal_fine_cnt; + end else if (wr_level_done_r5) begin + wl_tap_count_r <= #TCQ 'd0; + wl_state_r <= #TCQ WL_FINE_INC_WAIT; + if (|fine_inc[dqs_count_w]) + fine_inc[dqs_count_w] <= #TCQ fine_inc[dqs_count_w] - 1; + end else begin + wl_state_r <= #TCQ WL_WAIT; + wl_tap_count_r <= #TCQ wl_tap_count_r + 1'b1; + end + end + + WL_FINE_INC_WAIT: begin + if (SIM_CAL_OPTION == "FAST_CAL") begin + if (fast_cal_fine_cnt > 'd0) + wl_state_r <= #TCQ WL_FINE_INC; + else if (fast_cal_coarse_cnt > 'd0) + wl_state_r <= #TCQ WL_CORSE_INC; + else + wl_state_r <= #TCQ WL_DQS_CNT; + end else if (|fine_inc[dqs_count_w]) + wl_state_r <= #TCQ WL_FINE_INC; + else if (dqs_count_r == (DQS_WIDTH-1)) + wl_state_r <= #TCQ WL_IDLE; + else begin + wl_state_r <= #TCQ WL_2RANK_FINAL_TAP; + dqs_count_r <= #TCQ dqs_count_r + 1; + end + end + + WL_FINE_DEC: begin + wl_edge_detect_valid_r <= #TCQ 1'b0; + wl_tap_count_r <= #TCQ 'd0; + wl_state_r <= #TCQ WL_FINE_DEC_WAIT1; + if (fine_dec_cnt > 6'd0) + fine_dec_cnt <= #TCQ fine_dec_cnt - 1; + else + fine_dec_cnt <= #TCQ fine_dec_cnt; + end + + WL_FINE_DEC_WAIT1: begin + if (incdec_wait_cnt == 'd8) + wl_state_r <= #TCQ WL_FINE_DEC_WAIT; + end + + WL_FINE_DEC_WAIT: begin + if (fine_dec_cnt > 6'd0) + wl_state_r <= #TCQ WL_FINE_DEC; + //else if (zero_tran_r) + // wl_state_r <= #TCQ WL_DQS_CNT; + else if (dual_rnk_dec) begin + if (|corse_dec[dqs_count_r]) + wl_state_r <= #TCQ WL_CORSE_DEC; + else + wl_state_r <= #TCQ WL_2RANK_DQS_CNT; + end else if (wrlvl_byte_redo) begin + if ((corse_cnt[dqs_count_w] + wrlvl_redo_corse_inc) <= 'd7) + wl_state_r <= #TCQ WL_CORSE_INC; + else begin + wl_state_r <= #TCQ WL_IDLE; + wrlvl_err <= #TCQ 1'b1; + end + end else + wl_state_r <= #TCQ WL_CORSE_INC; + end + + WL_CORSE_DEC: begin + wl_state_r <= #TCQ WL_CORSE_DEC_WAIT; + dual_rnk_dec <= #TCQ 1'b0; + if (|corse_dec[dqs_count_r]) + corse_dec[dqs_count_r] <= #TCQ corse_dec[dqs_count_r] - 1; + else + corse_dec[dqs_count_r] <= #TCQ corse_dec[dqs_count_r]; + end + + WL_CORSE_DEC_WAIT: begin + if (wl_sm_start) begin + //if (|corse_dec[dqs_count_r]) + // wl_state_r <= #TCQ WL_CORSE_DEC; + if (|corse_dec[dqs_count_r]) + wl_state_r <= #TCQ WL_CORSE_DEC_WAIT1; + else + wl_state_r <= #TCQ WL_2RANK_DQS_CNT; + end + end + + WL_CORSE_DEC_WAIT1: begin + if (wl_sm_start) + wl_state_r <= #TCQ WL_CORSE_DEC; + end + + WL_CORSE_INC: begin + wl_state_r <= #TCQ WL_CORSE_INC_WAIT_TMP; + if (SIM_CAL_OPTION == "FAST_CAL") begin + if (fast_cal_coarse_cnt > 'd0) + fast_cal_coarse_cnt <= #TCQ fast_cal_coarse_cnt - 1; + else + fast_cal_coarse_cnt <= #TCQ fast_cal_coarse_cnt; + end else if (wrlvl_byte_redo) begin + corse_cnt[dqs_count_w] <= #TCQ corse_cnt[dqs_count_w] + 1; + if (|wrlvl_redo_corse_inc) + wrlvl_redo_corse_inc <= #TCQ wrlvl_redo_corse_inc - 1; + end else if (~wr_level_done_r5) + corse_cnt[dqs_count_r] <= #TCQ corse_cnt[dqs_count_r] + 1; + else if (|corse_inc[dqs_count_w]) + corse_inc[dqs_count_w] <= #TCQ corse_inc[dqs_count_w] - 1; + end + + WL_CORSE_INC_WAIT_TMP: begin + if (incdec_wait_cnt == 'd8) + wl_state_r <= #TCQ WL_CORSE_INC_WAIT; + end + + WL_CORSE_INC_WAIT: begin + if (SIM_CAL_OPTION == "FAST_CAL") begin + if (fast_cal_coarse_cnt > 'd0) + wl_state_r <= #TCQ WL_CORSE_INC; + else + wl_state_r <= #TCQ WL_DQS_CNT; + end else if (wrlvl_byte_redo) begin + if (|wrlvl_redo_corse_inc) + wl_state_r <= #TCQ WL_CORSE_INC; + else begin + wl_state_r <= #TCQ WL_INIT_FINE_INC; + inhibit_edge_detect_r <= #TCQ 1'b1; + end + end else if (~wr_level_done_r5 && wl_sm_start) + wl_state_r <= #TCQ WL_CORSE_INC_WAIT1; + else if (wr_level_done_r5) begin + if (|corse_inc[dqs_count_r]) + wl_state_r <= #TCQ WL_CORSE_INC; + else if (|fine_inc[dqs_count_w]) + wl_state_r <= #TCQ WL_FINE_INC; + else if (dqs_count_r == (DQS_WIDTH-1)) + wl_state_r <= #TCQ WL_IDLE; + else begin + wl_state_r <= #TCQ WL_2RANK_FINAL_TAP; + dqs_count_r <= #TCQ dqs_count_r + 1; + end + end + end + + WL_CORSE_INC_WAIT1: begin + if (wl_sm_start) + wl_state_r <= #TCQ WL_CORSE_INC_WAIT2; + end + + WL_CORSE_INC_WAIT2: begin + if (wl_sm_start) + wl_state_r <= #TCQ WL_WAIT; + end + + WL_WAIT: begin + if (wl_sm_start) + wl_state_r <= #TCQ WL_EDGE_CHECK; + end + + WL_EDGE_CHECK: begin // Look for the edge + if (wl_edge_detect_valid_r == 1'b0) begin + wl_state_r <= #TCQ WL_WAIT; + wl_edge_detect_valid_r <= #TCQ 1'b1; + end + // 0->1 transition detected with DQS + else if(rd_data_edge_detect_r[dqs_count_r] && + wl_edge_detect_valid_r) + begin + wl_tap_count_r <= #TCQ wl_tap_count_r; + if ((SIM_CAL_OPTION == "FAST_CAL") || (RANKS < 2) || + ~oclkdelay_calib_done) + wl_state_r <= #TCQ WL_DQS_CNT; + else + wl_state_r <= #TCQ WL_2RANK_TAP_DEC; + end + // For initial writes check only upto 56 taps. Reserving the + // remaining taps for OCLK calibration. + else if((~wrlvl_tap_done_r) && (wl_tap_count_r > 6'd55)) begin + if (corse_cnt[dqs_count_r] < COARSE_TAPS) begin + wl_state_r <= #TCQ WL_FINE_DEC; + fine_dec_cnt <= #TCQ wl_tap_count_r; + end else begin + wrlvl_err <= #TCQ 1'b1; + wl_state_r <= #TCQ WL_IDLE; + end + end else begin + if (wl_tap_count_r < 6'd56) //for reuse wrlvl for complex ocal + wl_state_r <= #TCQ WL_FINE_INC; + else if (corse_cnt[dqs_count_r] < COARSE_TAPS) begin + wl_state_r <= #TCQ WL_FINE_DEC; + fine_dec_cnt <= #TCQ wl_tap_count_r; + end else begin + wrlvl_err <= #TCQ 1'b1; + wl_state_r <= #TCQ WL_IDLE; + end + end + end + + WL_2RANK_TAP_DEC: begin + wl_state_r <= #TCQ WL_FINE_DEC; + fine_dec_cnt <= #TCQ wl_tap_count_r; + for (m = 0; m < DQS_WIDTH; m = m + 1) + corse_dec[m] <= #TCQ corse_cnt[m]; + wl_edge_detect_valid_r <= #TCQ 1'b0; + dual_rnk_dec <= #TCQ 1'b1; + end + + WL_DQS_CNT: begin + if ((SIM_CAL_OPTION == "FAST_CAL") || + (dqs_count_r == (DQS_WIDTH-1)) || + wrlvl_byte_redo) begin + dqs_count_r <= #TCQ dqs_count_r; + dq_cnt_inc <= #TCQ 1'b0; + end else begin + dqs_count_r <= #TCQ dqs_count_r + 1'b1; + dq_cnt_inc <= #TCQ 1'b1; + end + wl_state_r <= #TCQ WL_DQS_CHECK; + wl_edge_detect_valid_r <= #TCQ 1'b0; + end + + WL_2RANK_DQS_CNT: begin + if ((SIM_CAL_OPTION == "FAST_CAL") || + (dqs_count_r == (DQS_WIDTH-1))) begin + dqs_count_r <= #TCQ dqs_count_r; + dq_cnt_inc <= #TCQ 1'b0; + end else begin + dqs_count_r <= #TCQ dqs_count_r + 1'b1; + dq_cnt_inc <= #TCQ 1'b1; + end + wl_state_r <= #TCQ WL_DQS_CHECK; + wl_edge_detect_valid_r <= #TCQ 1'b0; + dual_rnk_dec <= #TCQ 1'b0; + end + + WL_DQS_CHECK: begin // check if all DQS have been calibrated + wl_tap_count_r <= #TCQ 'd0; + if (dq_cnt_inc == 1'b0)begin + wrlvl_rank_done_r <= #TCQ 1'd1; + for (t = 0; t < DQS_WIDTH; t = t + 1) + corse_cnt[t] <= #TCQ 3'b0; + if ((SIM_CAL_OPTION == "FAST_CAL") || (RANKS < 2) || ~oclkdelay_calib_done) begin + wl_state_r <= #TCQ WL_IDLE; + if (wrlvl_byte_redo) + dqs_count_r <= #TCQ dqs_count_r; + else + dqs_count_r <= #TCQ 'd0; + end else if (rank_cnt_r == RANKS-1) begin + dqs_count_r <= #TCQ dqs_count_r; + if (RANKS > 1) + wl_state_r <= #TCQ WL_2RANK_FINAL_TAP; + else + wl_state_r <= #TCQ WL_IDLE; + end else begin + wl_state_r <= #TCQ WL_INIT; + dqs_count_r <= #TCQ 'd0; + end + if ((SIM_CAL_OPTION == "FAST_CAL") || + (rank_cnt_r == RANKS-1)) begin + wr_level_done_r <= #TCQ 1'd1; + rank_cnt_r <= #TCQ 2'b00; + end else begin + wr_level_done_r <= #TCQ 1'd0; + rank_cnt_r <= #TCQ rank_cnt_r + 1'b1; + end + end else + wl_state_r <= #TCQ WL_INIT; + end + + WL_2RANK_FINAL_TAP: begin + if (wr_level_done_r4 && ~wr_level_done_r5) begin + for(u = 0; u < DQS_WIDTH; u = u + 1) begin + corse_inc[u] <= #TCQ final_coarse_tap[u]; + fine_inc[u] <= #TCQ final_val[u]; + end + dqs_count_r <= #TCQ 'd0; + end else if (wr_level_done_r5) begin + if (|corse_inc[dqs_count_r]) + wl_state_r <= #TCQ WL_CORSE_INC; + else if (|fine_inc[dqs_count_w]) + wl_state_r <= #TCQ WL_FINE_INC; + end + end + endcase + end + end // always @ (posedge clk) + +endmodule + + + + + + + diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_wrlvl_off_delay.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_wrlvl_off_delay.v new file mode 100644 index 0000000..5c2a599 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_phy_wrlvl_off_delay.v @@ -0,0 +1,246 @@ +//***************************************************************************** +// (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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version: %version +// \ \ Application: MIG +// / / Filename: ddr_phy_ck_addr_cmd_delay.v +// /___/ /\ Date Last Modified: $Date: 2011/02/25 02:07:40 $ +// \ \ / \ Date Created: Aug 03 2009 +// \___\/\___\ +// +//Device: 7 Series +//Design Name: DDR3 SDRAM +//Purpose: Module to decrement initial PO delay to 0 and add 1/4 tck for tdqss +//Reference: +//Revision History: +//***************************************************************************** + +`timescale 1ps/1ps + +module mig_7series_v4_0_ddr_phy_wrlvl_off_delay # + ( + parameter TCQ = 100, + parameter tCK = 3636, + parameter nCK_PER_CLK = 2, + parameter CLK_PERIOD = 4, + parameter PO_INITIAL_DLY= 46, + parameter DQS_CNT_WIDTH = 3, + parameter DQS_WIDTH = 8, + parameter N_CTL_LANES = 3 + ) + ( + input clk, + input rst, + input pi_fine_dly_dec_done, + input cmd_delay_start, + // Control lane being shifted using Phaser_Out fine delay taps + output reg [DQS_CNT_WIDTH:0] ctl_lane_cnt, + // Inc/dec Phaser_Out fine delay line + output reg po_s2_incdec_f, + output reg po_en_s2_f, + // Inc/dec Phaser_Out coarse delay line + output reg po_s2_incdec_c, + output reg po_en_s2_c, + // Completed adjusting delays for dq, dqs for tdqss + output po_ck_addr_cmd_delay_done, + // completed decrementing initialPO delays + output po_dec_done, + output phy_ctl_rdy_dly + ); + + + localparam TAP_LIMIT = 63; + + + +// PO fine delay tap resolution change by frequency. tCK > 2500, need +// twice the amount of taps +// localparam D_DLY_F = (tCK > 2500 ) ? D_DLY * 2 : D_DLY; + + // coarse delay tap is added DQ/DQS to meet the TDQSS specification. + localparam TDQSS_DLY = (tCK > 2500 )? 2: 1; + + reg delay_done; + reg delay_done_r1; + reg delay_done_r2; + reg delay_done_r3; + reg delay_done_r4; + reg [5:0] po_delay_cnt_r; + reg po_cnt_inc; + reg cmd_delay_start_r1; + reg cmd_delay_start_r2; + reg cmd_delay_start_r3; + reg cmd_delay_start_r4; + reg cmd_delay_start_r5; + reg cmd_delay_start_r6; + reg po_delay_done; + reg po_delay_done_r1; + reg po_delay_done_r2; + reg po_delay_done_r3; + reg po_delay_done_r4; + reg pi_fine_dly_dec_done_r; + reg po_en_stg2_c; + reg po_en_stg2_f; + reg po_stg2_incdec_c; + reg po_stg2_f_incdec; + reg [DQS_CNT_WIDTH:0] lane_cnt_dqs_c_r; + reg [DQS_CNT_WIDTH:0] lane_cnt_po_r; + reg [5:0] delay_cnt_r; + + always @(posedge clk) begin + cmd_delay_start_r1 <= #TCQ cmd_delay_start; + cmd_delay_start_r2 <= #TCQ cmd_delay_start_r1; + cmd_delay_start_r3 <= #TCQ cmd_delay_start_r2; + cmd_delay_start_r4 <= #TCQ cmd_delay_start_r3; + cmd_delay_start_r5 <= #TCQ cmd_delay_start_r4; + cmd_delay_start_r6 <= #TCQ cmd_delay_start_r5; + pi_fine_dly_dec_done_r <= #TCQ pi_fine_dly_dec_done; + end + + assign phy_ctl_rdy_dly = cmd_delay_start_r6; + + + // logic for decrementing initial fine delay taps for all PO + // Decrement done for add, ctrl and data phaser outs + + assign po_dec_done = (PO_INITIAL_DLY == 0) ? 1 : po_delay_done_r4; + + + always @(posedge clk) + if (rst || ~cmd_delay_start_r6 || po_delay_done) begin + po_stg2_f_incdec <= #TCQ 1'b0; + po_en_stg2_f <= #TCQ 1'b0; + end else if (po_delay_cnt_r > 6'd0) begin + po_en_stg2_f <= #TCQ ~po_en_stg2_f; + end + + always @(posedge clk) + if (rst || ~cmd_delay_start_r6 || (po_delay_cnt_r == 6'd0)) + // set all the PO delays to 31. Decrement from 46 to 31. + // Requirement comes from dqs_found logic + po_delay_cnt_r <= #TCQ (PO_INITIAL_DLY - 31); + else if ( po_en_stg2_f && (po_delay_cnt_r > 6'd0)) + po_delay_cnt_r <= #TCQ po_delay_cnt_r - 1; + + always @(posedge clk) + if (rst) + lane_cnt_po_r <= #TCQ 'd0; + else if ( po_en_stg2_f && (po_delay_cnt_r == 6'd1)) + lane_cnt_po_r <= #TCQ lane_cnt_po_r + 1; + + always @(posedge clk) + if (rst || ~cmd_delay_start_r6 ) + po_delay_done <= #TCQ 1'b0; + else if ((po_delay_cnt_r == 6'd1) && (lane_cnt_po_r ==1'b0)) + po_delay_done <= #TCQ 1'b1; + + always @(posedge clk) begin + po_delay_done_r1 <= #TCQ po_delay_done; + po_delay_done_r2 <= #TCQ po_delay_done_r1; + po_delay_done_r3 <= #TCQ po_delay_done_r2; + po_delay_done_r4 <= #TCQ po_delay_done_r3; + end + + // logic to select between all PO delays and data path delay. + always @(posedge clk) begin + po_s2_incdec_f <= #TCQ po_stg2_f_incdec; + po_en_s2_f <= #TCQ po_en_stg2_f; + end + +// Logic to add 1/4 taps amount of delay to data path for tdqss. +// After all the initial PO delays are decremented the 1/4 delay will +// be added. Coarse delay taps will be added here . +// Delay added only to data path + + assign po_ck_addr_cmd_delay_done = (TDQSS_DLY == 0) ? pi_fine_dly_dec_done_r + : delay_done_r4; + + always @(posedge clk) + if (rst || ~pi_fine_dly_dec_done_r || delay_done) begin + po_stg2_incdec_c <= #TCQ 1'b1; + po_en_stg2_c <= #TCQ 1'b0; + end else if (delay_cnt_r > 6'd0) begin + po_en_stg2_c <= #TCQ ~po_en_stg2_c; + end + + always @(posedge clk) + if (rst || ~pi_fine_dly_dec_done_r || (delay_cnt_r == 6'd0)) + delay_cnt_r <= #TCQ TDQSS_DLY; + else if ( po_en_stg2_c && (delay_cnt_r > 6'd0)) + delay_cnt_r <= #TCQ delay_cnt_r - 1; + + always @(posedge clk) + if (rst) + lane_cnt_dqs_c_r <= #TCQ 'd0; + else if ( po_en_stg2_c && (delay_cnt_r == 6'd1)) + lane_cnt_dqs_c_r <= #TCQ lane_cnt_dqs_c_r + 1; + + always @(posedge clk) + if (rst || ~pi_fine_dly_dec_done_r) + delay_done <= #TCQ 1'b0; + else if ((delay_cnt_r == 6'd1) && (lane_cnt_dqs_c_r == 1'b0)) + delay_done <= #TCQ 1'b1; + + + always @(posedge clk) begin + delay_done_r1 <= #TCQ delay_done; + delay_done_r2 <= #TCQ delay_done_r1; + delay_done_r3 <= #TCQ delay_done_r2; + delay_done_r4 <= #TCQ delay_done_r3; + end + + always @(posedge clk) begin + po_s2_incdec_c <= #TCQ po_stg2_incdec_c; + po_en_s2_c <= #TCQ po_en_stg2_c; + ctl_lane_cnt <= #TCQ lane_cnt_dqs_c_r; + end + +endmodule diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_prbs_gen.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_prbs_gen.v new file mode 100644 index 0000000..9222b07 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_prbs_gen.v @@ -0,0 +1,580 @@ +//***************************************************************************** +// (c) Copyright 2009 - 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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version: %version +// \ \ Application: MIG +// / / Filename: ddr_prbs_gen.v +// /___/ /\ Date Last Modified: $Date: 2011/06/02 08:35:10 $ +// \ \ / \ Date Created: 05/12/10 +// \___\/\___\ +// +//Device: 7 Series +//Design Name: ddr_prbs_gen +// Overview: +// Implements a "pseudo-PRBS" generator. Basically this is a standard +// PRBS generator (using an linear feedback shift register) along with +// logic to force the repetition of the sequence after 2^PRBS_WIDTH +// samples (instead of 2^PRBS_WIDTH - 1). The LFSR is based on the design +// from Table 1 of XAPP 210. Note that only 8- and 10-tap long LFSR chains +// are supported in this code +// Parameter Requirements: +// 1. PRBS_WIDTH = 8 or 10 +// 2. PRBS_WIDTH >= 2*nCK_PER_CLK +// Output notes: +// The output of this module consists of 2*nCK_PER_CLK bits, these contain +// the value of the LFSR output for the next 2*CK_PER_CLK bit times. Note +// that prbs_o[0] contains the bit value for the "earliest" bit time. +// +//Reference: +//Revision History: +// +//***************************************************************************** + +/****************************************************************************** +**$Id: ddr_prbs_gen.v,v 1.1 2011/06/02 08:35:10 mishra Exp $ +**$Date: 2011/06/02 08:35:10 $ +**$Author: mishra $ +**$Revision: 1.1 $ +**$Source: /devl/xcs/repo/env/Databases/ip/src2/O/mig_7series_v1_3/data/dlib/7series/ddr3_sdram/verilog/rtl/phy/ddr_prbs_gen.v,v $ +******************************************************************************/ + + +`timescale 1ps/1ps + +module mig_7series_v4_0_ddr_prbs_gen # + ( + parameter TCQ = 100, // clk->out delay (sim only) + parameter PRBS_WIDTH = 64, // LFSR shift register length + parameter DQS_CNT_WIDTH = 5, + parameter DQ_WIDTH = 72, + parameter VCCO_PAT_EN = 1, + parameter VCCAUX_PAT_EN = 1, + parameter ISI_PAT_EN = 1, + parameter FIXED_VICTIM = "TRUE" + ) + ( + input clk_i, // input clock + input clk_en_i, // clock enable + input rst_i, // synchronous reset + input [PRBS_WIDTH-1:0] prbs_seed_i, // initial LFSR seed + input phy_if_empty, // IN_FIFO empty flag + input prbs_rdlvl_start, // PRBS read lveling start + input prbs_rdlvl_done, + input complex_wr_done, + input [2:0] victim_sel, + input [DQS_CNT_WIDTH:0] byte_cnt, + //output [PRBS_WIDTH-1:0] prbs_o // generated pseudo random data + output [8*DQ_WIDTH-1:0] prbs_o, + output [9:0] dbg_prbs_gen, + input reset_rd_addr, + output prbs_ignore_first_byte, + output prbs_ignore_last_bytes + ); + + //*************************************************************************** + + function integer clogb2 (input integer size); + begin + size = size - 1; + for (clogb2=1; size>1; clogb2=clogb2+1) + size = size >> 1; + end + endfunction + + // Number of internal clock cycles before the PRBS sequence will repeat + localparam PRBS_SEQ_LEN_CYCLES = 128; + localparam PRBS_SEQ_LEN_CYCLES_BITS = clogb2(PRBS_SEQ_LEN_CYCLES); + + reg phy_if_empty_r; + reg reseed_prbs_r; + reg [PRBS_SEQ_LEN_CYCLES_BITS-1:0] sample_cnt_r; + reg [PRBS_WIDTH - 1 :0] prbs; + reg [PRBS_WIDTH :1] lfsr_q; + + + //*************************************************************************** + always @(posedge clk_i) begin + phy_if_empty_r <= #TCQ phy_if_empty; + end + + //*************************************************************************** + // Generate PRBS reset signal to ensure that PRBS sequence repeats after + // every 2**PRBS_WIDTH samples. Basically what happens is that we let the + // LFSR run for an extra cycle after "truly PRBS" 2**PRBS_WIDTH - 1 + // samples have past. Once that extra cycle is finished, we reseed the LFSR + always @(posedge clk_i) + begin + if (rst_i || ~clk_en_i) begin + sample_cnt_r <= #TCQ 'b0; + reseed_prbs_r <= #TCQ 1'b0; + end else if (clk_en_i && (~phy_if_empty_r || ~prbs_rdlvl_start)) begin + // The rollver count should always be [(power of 2) - 1] + sample_cnt_r <= #TCQ sample_cnt_r + 1; + // Assert PRBS reset signal so that it is simultaneously with the + // last sample of the sequence + if (sample_cnt_r == PRBS_SEQ_LEN_CYCLES - 2) + reseed_prbs_r <= #TCQ 1'b1; + else + reseed_prbs_r <= #TCQ 1'b0; + end + end + + always @ (posedge clk_i) + begin +//reset it to a known good state to prevent it locks up + if ((reseed_prbs_r && clk_en_i) || rst_i || ~clk_en_i) begin + lfsr_q[4:1] <= #TCQ prbs_seed_i[3:0] | 4'h5; + lfsr_q[PRBS_WIDTH:5] <= #TCQ prbs_seed_i[PRBS_WIDTH-1:4]; + end + else if (clk_en_i && (~phy_if_empty_r || ~prbs_rdlvl_start)) begin + lfsr_q[PRBS_WIDTH:31] <= #TCQ lfsr_q[PRBS_WIDTH-1:30]; + lfsr_q[30] <= #TCQ lfsr_q[16] ^ lfsr_q[13] ^ lfsr_q[5] ^ lfsr_q[1]; + lfsr_q[29:9] <= #TCQ lfsr_q[28:8]; + lfsr_q[8] <= #TCQ lfsr_q[32] ^ lfsr_q[7]; + lfsr_q[7] <= #TCQ lfsr_q[32] ^ lfsr_q[6]; + lfsr_q[6:4] <= #TCQ lfsr_q[5:3]; + lfsr_q[3] <= #TCQ lfsr_q[32] ^ lfsr_q[2]; + lfsr_q[2] <= #TCQ lfsr_q[1] ; + lfsr_q[1] <= #TCQ lfsr_q[32]; + end + end + + always @ (lfsr_q[PRBS_WIDTH:1]) begin + prbs = lfsr_q[PRBS_WIDTH:1]; + end + +//****************************************************************************** +// Complex pattern BRAM +//****************************************************************************** + +localparam BRAM_ADDR_WIDTH = 8; +localparam BRAM_DATA_WIDTH = 18; +localparam BRAM_DEPTH = 256; + +integer i,j; +(* RAM_STYLE = "distributed" *) reg [BRAM_ADDR_WIDTH - 1:0] rd_addr; +//reg [BRAM_DATA_WIDTH - 1:0] mem[0:BRAM_DEPTH - 1]; +(* RAM_STYLE = "distributed" *) reg [BRAM_DATA_WIDTH - 1:0] mem_out; +reg [BRAM_DATA_WIDTH - 3:0] dout_o; +reg [DQ_WIDTH-1:0] sel; +reg [DQ_WIDTH-1:0] dout_rise0; +reg [DQ_WIDTH-1:0] dout_fall0; +reg [DQ_WIDTH-1:0] dout_rise1; +reg [DQ_WIDTH-1:0] dout_fall1; +reg [DQ_WIDTH-1:0] dout_rise2; +reg [DQ_WIDTH-1:0] dout_fall2; +reg [DQ_WIDTH-1:0] dout_rise3; +reg [DQ_WIDTH-1:0] dout_fall3; + +// VCCO noise injection pattern with matching victim (reads with gaps) +// content format +// {aggressor pattern, victim pattern} +always @ (rd_addr) begin + case (rd_addr) + 8'd0 : mem_out = {2'b11, 8'b10101010,8'b10101010}; //1 read + 8'd1 : mem_out = {2'b01, 8'b11001100,8'b11001100}; //2 reads + 8'd2 : mem_out = {2'b10, 8'b11001100,8'b11001100}; //2 reads + 8'd3 : mem_out = {2'b01, 8'b11100011,8'b11100011}; //3 reads + 8'd4 : mem_out = {2'b00, 8'b10001110,8'b10001110}; //3 reads + 8'd5 : mem_out = {2'b10, 8'b00111000,8'b00111000}; //3 reads + 8'd6 : mem_out = {2'b01, 8'b11110000,8'b11110000}; //4 reads + 8'd7 : mem_out = {2'b00, 8'b11110000,8'b11110000}; //4 reads + 8'd8 : mem_out = {2'b00, 8'b11110000,8'b11110000}; //4 reads + 8'd9 : mem_out = {2'b10, 8'b11110000,8'b11110000}; //4 reads + 8'd10 : mem_out = {2'b01, 8'b11111000,8'b11111000}; //5 reads + 8'd11 : mem_out = {2'b00, 8'b00111110,8'b00111110}; //5 reads + 8'd12 : mem_out = {2'b00, 8'b00001111,8'b00001111}; //5 reads + 8'd13 : mem_out = {2'b00, 8'b10000011,8'b10000011}; //5 reads + 8'd14 : mem_out = {2'b10, 8'b11100000,8'b11100000}; //5 reads + 8'd15 : mem_out = {2'b01, 8'b11111100,8'b11111100}; //6 reads + 8'd16 : mem_out = {2'b00, 8'b00001111,8'b00001111}; //6 reads + 8'd17 : mem_out = {2'b00, 8'b11000000,8'b11000000}; //6 reads + 8'd18 : mem_out = {2'b00, 8'b11111100,8'b11111100}; //6 reads + 8'd19 : mem_out = {2'b00, 8'b00001111,8'b00001111}; //6 reads + 8'd20 : mem_out = {2'b10, 8'b11000000,8'b11000000}; //6 reads + // VCCO noise injection pattern with non-matching victim (reads with gaps) + // content format + // {aggressor pattern, victim pattern} + 8'd21 : mem_out = {2'b11, 8'b10101010,8'b01010101}; //1 read + 8'd22 : mem_out = {2'b01, 8'b11001100,8'b00110011}; //2 reads + 8'd23 : mem_out = {2'b10, 8'b11001100,8'b00110011}; //2 reads + 8'd24 : mem_out = {2'b01, 8'b11100011,8'b00011100}; //3 reads + 8'd25 : mem_out = {2'b00, 8'b10001110,8'b01110001}; //3 reads + 8'd26 : mem_out = {2'b10, 8'b00111000,8'b11000111}; //3 reads + 8'd27 : mem_out = {2'b01, 8'b11110000,8'b00001111}; //4 reads + 8'd28 : mem_out = {2'b00, 8'b11110000,8'b00001111}; //4 reads + 8'd29 : mem_out = {2'b00, 8'b11110000,8'b00001111}; //4 reads + 8'd30 : mem_out = {2'b10, 8'b11110000,8'b00001111}; //4 reads + 8'd31 : mem_out = {2'b01, 8'b11111000,8'b00000111}; //5 reads + 8'd32 : mem_out = {2'b00, 8'b00111110,8'b11000001}; //5 reads + 8'd33 : mem_out = {2'b00, 8'b00001111,8'b11110000}; //5 reads + 8'd34 : mem_out = {2'b00, 8'b10000011,8'b01111100}; //5 reads + 8'd35 : mem_out = {2'b10, 8'b11100000,8'b00011111}; //5 reads + 8'd36 : mem_out = {2'b01, 8'b11111100,8'b00000011}; //6 reads + 8'd37 : mem_out = {2'b00, 8'b00001111,8'b11110000}; //6 reads + 8'd38 : mem_out = {2'b00, 8'b11000000,8'b00111111}; //6 reads + 8'd39 : mem_out = {2'b00, 8'b11111100,8'b00000011}; //6 reads + 8'd40 : mem_out = {2'b00, 8'b00001111,8'b11110000}; //6 reads + 8'd41 : mem_out = {2'b10, 8'b11000000,8'b00111111}; //6 reads + // VCCAUX noise injection pattern with ISI pattern on victim (reads with gaps) + // content format + // {aggressor pattern, victim pattern} + 8'd42 : mem_out = {2'b01, 8'b10110100,8'b01010111}; //3 reads + 8'd43 : mem_out = {2'b00, 8'b10110100,8'b01101111}; //3 reads + 8'd44 : mem_out = {2'b10, 8'b10110100,8'b11000000}; //3 reads + 8'd45 : mem_out = {2'b01, 8'b10100010,8'b10000100}; //4 reads + 8'd46 : mem_out = {2'b00, 8'b10001010,8'b00110001}; //4 reads + 8'd47 : mem_out = {2'b00, 8'b00101000,8'b01000111}; //4 reads + 8'd48 : mem_out = {2'b10, 8'b10100010,8'b00100101}; //4 reads + 8'd49 : mem_out = {2'b01, 8'b10101111,8'b10011010}; //5 reads + 8'd50 : mem_out = {2'b00, 8'b01010000,8'b01111010}; //5 reads + 8'd51 : mem_out = {2'b00, 8'b10101111,8'b10010101}; //5 reads + 8'd52 : mem_out = {2'b00, 8'b01010000,8'b11011011}; //5 reads + 8'd53 : mem_out = {2'b10, 8'b10101111,8'b11110000}; //5 reads + 8'd54 : mem_out = {2'b01, 8'b10101000,8'b00100001}; //7 reads + 8'd55 : mem_out = {2'b00, 8'b00101010,8'b10001010}; //7 reads + 8'd56 : mem_out = {2'b00, 8'b00001010,8'b00100101}; //7 reads + 8'd57 : mem_out = {2'b00, 8'b10000010,8'b10011010}; //7 reads + 8'd58 : mem_out = {2'b00, 8'b10100000,8'b01111010}; //7 reads + 8'd59 : mem_out = {2'b00, 8'b10101000,8'b10111111}; //7 reads + 8'd60 : mem_out = {2'b10, 8'b00101010,8'b01010111}; //7 reads + 8'd61 : mem_out = {2'b01, 8'b10101011,8'b01101111}; //8 reads + 8'd62 : mem_out = {2'b00, 8'b11110101,8'b11000000}; //8 reads + 8'd63 : mem_out = {2'b00, 8'b01000000,8'b10000100}; //8 reads + 8'd64 : mem_out = {2'b00, 8'b10101011,8'b00110001}; //8 reads + 8'd65 : mem_out = {2'b00, 8'b11110101,8'b01000111}; //8 reads + 8'd66 : mem_out = {2'b00, 8'b01000000,8'b00100101}; //8 reads + 8'd67 : mem_out = {2'b00, 8'b10101011,8'b10011010}; //8 reads + 8'd68 : mem_out = {2'b10, 8'b11110101,8'b01111010}; //8 reads + 8'd69 : mem_out = {2'b01, 8'b10101010,8'b10010101}; //9 reads + 8'd70 : mem_out = {2'b00, 8'b00000010,8'b11011011}; //9 reads + 8'd71 : mem_out = {2'b00, 8'b10101000,8'b11110000}; //9 reads + 8'd72 : mem_out = {2'b00, 8'b00001010,8'b00100001}; //9 reads + 8'd73 : mem_out = {2'b00, 8'b10100000,8'b10001010}; //9 reads + 8'd74 : mem_out = {2'b00, 8'b00101010,8'b00100101}; //9 reads + 8'd75 : mem_out = {2'b00, 8'b10000000,8'b10011010}; //9 reads + 8'd76 : mem_out = {2'b00, 8'b10101010,8'b01111010}; //9 reads + 8'd77 : mem_out = {2'b10, 8'b00000010,8'b10111111}; //9 reads + 8'd78 : mem_out = {2'b01, 8'b10101010,8'b01010111}; //10 reads + 8'd79 : mem_out = {2'b00, 8'b11111111,8'b01101111}; //10 reads + 8'd80 : mem_out = {2'b00, 8'b01010101,8'b11000000}; //10 reads + 8'd81 : mem_out = {2'b00, 8'b00000000,8'b10000100}; //10 reads + 8'd82 : mem_out = {2'b00, 8'b10101010,8'b00110001}; //10 reads + 8'd83 : mem_out = {2'b00, 8'b11111111,8'b01000111}; //10 reads + 8'd84 : mem_out = {2'b00, 8'b01010101,8'b00100101}; //10 reads + 8'd85 : mem_out = {2'b00, 8'b00000000,8'b10011010}; //10 reads + 8'd86 : mem_out = {2'b00, 8'b10101010,8'b01111010}; //10 reads + 8'd87 : mem_out = {2'b10, 8'b11111111,8'b10010101}; //10 reads + 8'd88 : mem_out = {2'b01, 8'b10101010,8'b11011011}; //12 reads + 8'd89 : mem_out = {2'b00, 8'b10000000,8'b11110000}; //12 reads + 8'd90 : mem_out = {2'b00, 8'b00101010,8'b00100001}; //12 reads + 8'd91 : mem_out = {2'b00, 8'b10100000,8'b10001010}; //12 reads + 8'd92 : mem_out = {2'b00, 8'b00001010,8'b00100101}; //12 reads + 8'd93 : mem_out = {2'b00, 8'b10101000,8'b10011010}; //12 reads + 8'd94 : mem_out = {2'b00, 8'b00000010,8'b01111010}; //12 reads + 8'd95 : mem_out = {2'b00, 8'b10101010,8'b10111111}; //12 reads + 8'd96 : mem_out = {2'b00, 8'b00000000,8'b01010111}; //12 reads + 8'd97 : mem_out = {2'b00, 8'b10101010,8'b01101111}; //12 reads + 8'd98 : mem_out = {2'b00, 8'b10000000,8'b11000000}; //12 reads + 8'd99 : mem_out = {2'b10, 8'b00101010,8'b10000100}; //12 reads + 8'd100 : mem_out = {2'b01, 8'b10101010,8'b00110001}; //13 reads + 8'd101 : mem_out = {2'b00, 8'b10111111,8'b01000111}; //13 reads + 8'd102 : mem_out = {2'b00, 8'b11110101,8'b00100101}; //13 reads + 8'd103 : mem_out = {2'b00, 8'b01010100,8'b10011010}; //13 reads + 8'd104 : mem_out = {2'b00, 8'b00000000,8'b01111010}; //13 reads + 8'd105 : mem_out = {2'b00, 8'b10101010,8'b10010101}; //13 reads + 8'd106 : mem_out = {2'b00, 8'b10111111,8'b11011011}; //13 reads + 8'd107 : mem_out = {2'b00, 8'b11110101,8'b11110000}; //13 reads + 8'd108 : mem_out = {2'b00, 8'b01010100,8'b00100001}; //13 reads + 8'd109 : mem_out = {2'b00, 8'b00000000,8'b10001010}; //13 reads + 8'd110 : mem_out = {2'b00, 8'b10101010,8'b00100101}; //13 reads + 8'd111 : mem_out = {2'b00, 8'b10111111,8'b10011010}; //13 reads + 8'd112 : mem_out = {2'b10, 8'b11110101,8'b01111010}; //13 reads + 8'd113 : mem_out = {2'b01, 8'b10101010,8'b10111111}; //14 reads + 8'd114 : mem_out = {2'b00, 8'b10100000,8'b01010111}; //14 reads + 8'd115 : mem_out = {2'b00, 8'b00000010,8'b01101111}; //14 reads + 8'd116 : mem_out = {2'b00, 8'b10101010,8'b11000000}; //14 reads + 8'd117 : mem_out = {2'b00, 8'b10000000,8'b10000100}; //14 reads + 8'd118 : mem_out = {2'b00, 8'b00001010,8'b00110001}; //14 reads + 8'd119 : mem_out = {2'b00, 8'b10101010,8'b01000111}; //14 reads + 8'd120 : mem_out = {2'b00, 8'b00000000,8'b00100101}; //14 reads + 8'd121 : mem_out = {2'b00, 8'b00101010,8'b10011010}; //14 reads + 8'd122 : mem_out = {2'b00, 8'b10101000,8'b01111010}; //14 reads + 8'd123 : mem_out = {2'b00, 8'b00000000,8'b10010101}; //14 reads + 8'd124 : mem_out = {2'b00, 8'b10101010,8'b11011011}; //14 reads + 8'd125 : mem_out = {2'b00, 8'b10100000,8'b11110000}; //14 reads + 8'd126 : mem_out = {2'b10, 8'b00000010,8'b00100001}; //14 reads + // ISI pattern (Back-to-back reads) + // content format + // {aggressor pattern, victim pattern} + 8'd127 : mem_out = {2'b01, 8'b01010111,8'b01010111}; + 8'd128 : mem_out = {2'b00, 8'b01101111,8'b01101111}; + 8'd129 : mem_out = {2'b00, 8'b11000000,8'b11000000}; + 8'd130 : mem_out = {2'b00, 8'b10000110,8'b10000100}; + 8'd131 : mem_out = {2'b00, 8'b00101000,8'b00110001}; + 8'd132 : mem_out = {2'b00, 8'b11100100,8'b01000111}; + 8'd133 : mem_out = {2'b00, 8'b10110011,8'b00100101}; + 8'd134 : mem_out = {2'b00, 8'b01001111,8'b10011011}; + 8'd135 : mem_out = {2'b00, 8'b10110101,8'b01010101}; + 8'd136 : mem_out = {2'b00, 8'b10110101,8'b01010101}; + 8'd137 : mem_out = {2'b00, 8'b10000111,8'b10011000}; + 8'd138 : mem_out = {2'b00, 8'b11100011,8'b00011100}; + 8'd139 : mem_out = {2'b00, 8'b00001010,8'b11110101}; + 8'd140 : mem_out = {2'b00, 8'b11010100,8'b00101011}; + 8'd141 : mem_out = {2'b00, 8'b01001000,8'b10110111}; + 8'd142 : mem_out = {2'b00, 8'b00011111,8'b11100000}; + 8'd143 : mem_out = {2'b00, 8'b10111100,8'b01000011}; + 8'd144 : mem_out = {2'b00, 8'b10001111,8'b00010100}; + 8'd145 : mem_out = {2'b00, 8'b10110100,8'b01001011}; + 8'd146 : mem_out = {2'b00, 8'b11001011,8'b00110100}; + 8'd147 : mem_out = {2'b00, 8'b00001010,8'b11110101}; + 8'd148 : mem_out = {2'b00, 8'b10000000,8'b00000000}; + //Additional for ISI + 8'd149 : mem_out = {2'b00, 8'b00000000,8'b00000000}; + 8'd150 : mem_out = {2'b00, 8'b01010101,8'b01010101}; + 8'd151 : mem_out = {2'b00, 8'b01010101,8'b01010101}; + 8'd152 : mem_out = {2'b00, 8'b00000000,8'b00000000}; + 8'd153 : mem_out = {2'b00, 8'b00000000,8'b00000000}; + 8'd154 : mem_out = {2'b00, 8'b01010101,8'b00101010}; + 8'd155 : mem_out = {2'b00, 8'b01010101,8'b10101010}; + 8'd156 : mem_out = {2'b10, 8'b00000000,8'b10000000}; + //Available + 8'd157 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd158 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd159 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd160 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd161 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd162 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd163 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd164 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd165 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd166 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd167 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd168 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd169 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd170 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd171 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd172 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd173 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd174 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd175 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd176 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd177 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd178 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd179 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd180 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd181 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd182 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd183 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd184 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd185 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd186 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd187 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd188 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd189 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd190 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd191 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd192 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd193 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd194 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd195 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd196 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd197 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd198 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd199 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd200 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd201 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd202 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd203 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd204 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd205 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd206 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd207 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd208 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd209 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd210 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd211 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd212 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd213 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd214 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd215 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd216 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd217 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd218 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd219 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd220 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd221 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd222 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd223 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd224 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd225 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd226 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd227 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd228 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd229 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd230 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd231 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd232 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd233 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd234 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd235 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd236 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd237 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd238 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd239 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd240 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd241 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd242 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd243 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd244 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd245 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd246 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd247 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd248 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd249 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd250 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd251 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd252 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd253 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd254 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + 8'd255 : mem_out = {2'b00, 8'b00000001,8'b00000001}; + endcase +end + + + +always @ (posedge clk_i) begin + if (rst_i | reset_rd_addr) + rd_addr <= #TCQ 'b0; + //rd_addr for complex oclkdelay calib + else if (clk_en_i && prbs_rdlvl_done && (~phy_if_empty_r || ~complex_wr_done)) begin + if (rd_addr == 'd156) rd_addr <= #TCQ 'b0; + else rd_addr <= #TCQ rd_addr + 1; + end + //rd_addr for complex rdlvl + else if (clk_en_i && (~phy_if_empty_r || (~prbs_rdlvl_start && ~complex_wr_done))) begin + if (rd_addr == 'd148) rd_addr <= #TCQ 'b0; + else rd_addr <= #TCQ rd_addr+1; + end + +end + +// Each pattern can be disabled independently +// When disabled zeros are written to and read from the DRAM +always @ (posedge clk_i) begin + if ((rd_addr < 42) && VCCO_PAT_EN) + dout_o <= #TCQ mem_out[BRAM_DATA_WIDTH-3:0]; + else if ((rd_addr < 127) && VCCAUX_PAT_EN) + dout_o <= #TCQ mem_out[BRAM_DATA_WIDTH-3:0]; + else if (ISI_PAT_EN && (rd_addr > 126)) + dout_o <= #TCQ mem_out[BRAM_DATA_WIDTH-3:0]; + else + dout_o <= #TCQ 'd0; +end + +reg prbs_ignore_first_byte_r; +always @(posedge clk_i) prbs_ignore_first_byte_r <= #TCQ mem_out[16]; +assign prbs_ignore_first_byte = prbs_ignore_first_byte_r; + +reg prbs_ignore_last_bytes_r; +always @(posedge clk_i) prbs_ignore_last_bytes_r <= #TCQ mem_out[17]; +assign prbs_ignore_last_bytes = prbs_ignore_last_bytes_r; + + + +generate + if (FIXED_VICTIM == "TRUE") begin: victim_sel_fixed + // Fixed victim bit 3 + always @(posedge clk_i) + sel <= #TCQ {DQ_WIDTH/8{8'h08}}; + end else begin: victim_sel_rotate + // One-hot victim select + always @(posedge clk_i) + if (rst_i) + sel <= #TCQ 'd0; + else begin + for (i = 0; i < DQ_WIDTH/8; i = i+1) begin + for (j=0; j <8 ; j = j+1) begin + if (j == victim_sel) + sel[i*8+j] <= #TCQ 1'b1; + else + sel[i*8+j] <= #TCQ 1'b0; + end + end + end + end +endgenerate + + + +// construct 8 X DATA_WIDTH output bus +always @(*) + for (i = 0; i < DQ_WIDTH; i = i+1) begin + dout_rise0[i] = (dout_o[7]&&sel[i] || dout_o[15]&&~sel[i]); + dout_fall0[i] = (dout_o[6]&&sel[i] || dout_o[14]&&~sel[i]); + dout_rise1[i] = (dout_o[5]&&sel[i] || dout_o[13]&&~sel[i]); + dout_fall1[i] = (dout_o[4]&&sel[i] || dout_o[12]&&~sel[i]); + dout_rise2[i] = (dout_o[3]&&sel[i] || dout_o[11]&&~sel[i]); + dout_fall2[i] = (dout_o[2]&&sel[i] || dout_o[10]&&~sel[i]); + dout_rise3[i] = (dout_o[1]&&sel[i] || dout_o[9]&&~sel[i]); + dout_fall3[i] = (dout_o[0]&&sel[i] || dout_o[8]&&~sel[i]); + end + + + assign prbs_o = {dout_fall3, dout_rise3, dout_fall2, dout_rise2, dout_fall1, dout_rise1, dout_fall0, dout_rise0}; + + assign dbg_prbs_gen[9] = phy_if_empty_r; + assign dbg_prbs_gen[8] = clk_en_i; + assign dbg_prbs_gen[7:0] = rd_addr[7:0]; + +endmodule + + diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_skip_calib_tap.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_skip_calib_tap.v new file mode 100644 index 0000000..cba1878 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_ddr_skip_calib_tap.v @@ -0,0 +1,837 @@ +//***************************************************************************** +// (c) Copyright 2009 - 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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version: %version +// \ \ Application: MIG +// / / Filename: ddr_skip_calib_tap.v +// /___/ /\ Date Last Modified: $Date: 2015/05/06 02:07:40 $ +// \ \ / \ Date Created: May 06 2015 +// \___\/\___\ +// +//Device: 7 Series +//Design Name: DDR3 SDRAM +//Purpose: Phaser_Out, Phaser_In, and IDELAY tap adjustments to match +// calibration values when SKIP_CALIB=="TRUE" +//Reference: +//Revision History: +//***************************************************************************** + +`timescale 1ps/1ps + +module mig_7series_v4_0_ddr_skip_calib_tap # + ( + parameter TCQ = 100, // clk->out delay (sim only) + parameter DQS_WIDTH = 8 // number of bytes + ) + ( + input clk, + input rst, + input phy_ctl_ready, + // Completed loading calib tap values into registers + input load_done, + // Tap adjustment status + input calib_tap_inc_start, + output calib_tap_inc_done, + // Calibration tap values + input [6*DQS_WIDTH-1:0] calib_po_stage2_tap_cnt, + input [6*DQS_WIDTH-1:0] calib_po_stage3_tap_cnt, + input [3*DQS_WIDTH-1:0] calib_po_coarse_tap_cnt, + input [6*DQS_WIDTH-1:0] calib_pi_stage2_tap_cnt, + input [5*DQS_WIDTH-1:0] calib_idelay_tap_cnt, + // Phaser_Out and Phaser_In tap count + input [8:0] po_counter_read_val, + input [5:0] pi_counter_read_val, + // Phaser_Out and Phaser_In tap inc/dec control signals + output [5:0] calib_tap_inc_byte_cnt, + output calib_po_f_en, + output calib_po_f_incdec, + output calib_po_sel_stg2stg3, + output calib_po_c_en, + output calib_po_c_inc, + output calib_pi_f_en, + output calib_pi_f_incdec, + output calib_idelay_ce, + output calib_idelay_inc, + output skip_cal_po_pi_dec_done, + output reg coarse_dec_err, + output [127:0] dbg_skip_cal + ); + + //*************************************************************************** + // Decrement initial Phaser_OUT fine delay value before proceeding with + // calibration + //*************************************************************************** + + + reg phy_ctl_ready_r1, phy_ctl_ready_r2, phy_ctl_ready_r3, phy_ctl_ready_r4, phy_ctl_ready_r5, phy_ctl_ready_r6; + reg po_cnt_dec; + reg [3:0] dec_wait_cnt; + reg [8:0] po_rdval_cnt; + reg po_dec_done; + reg dec_po_f_en_r; + reg dec_po_f_incdec_r; + reg dqs_po_dec_done_r1, dqs_po_dec_done_r2; + reg fine_dly_dec_done_r1, fine_dly_dec_done_r2, fine_dly_dec_done_r3; + reg [5:0] pi_rdval_cnt; + reg pi_cnt_dec; + reg dec_pi_f_en_r; + reg dec_pi_f_incdec_r; + + always @(posedge clk) begin + phy_ctl_ready_r1 <= #TCQ phy_ctl_ready; + phy_ctl_ready_r2 <= #TCQ phy_ctl_ready_r1; + phy_ctl_ready_r3 <= #TCQ phy_ctl_ready_r2; + phy_ctl_ready_r4 <= #TCQ phy_ctl_ready_r3; + phy_ctl_ready_r5 <= #TCQ phy_ctl_ready_r4; + phy_ctl_ready_r6 <= #TCQ phy_ctl_ready_r5; + end + + always @(posedge clk) begin + if (rst || po_cnt_dec || pi_cnt_dec) + dec_wait_cnt <= #TCQ 'd8; + else if (phy_ctl_ready_r6 && (dec_wait_cnt > 'd0)) + dec_wait_cnt <= #TCQ dec_wait_cnt - 1; + end + + always @(posedge clk) begin + if (rst) begin + po_rdval_cnt <= #TCQ 'd0; + end else if (phy_ctl_ready_r5 && ~phy_ctl_ready_r6) begin + po_rdval_cnt <= #TCQ po_counter_read_val; + end else if (po_rdval_cnt > 'd0) begin + if (po_cnt_dec) + po_rdval_cnt <= #TCQ po_rdval_cnt - 1; + else + po_rdval_cnt <= #TCQ po_rdval_cnt; + end else if (po_rdval_cnt == 'd0) begin + po_rdval_cnt <= #TCQ po_rdval_cnt; + end + end + + always @(posedge clk) begin + if (rst || (po_rdval_cnt == 'd0)) + po_cnt_dec <= #TCQ 1'b0; + else if (phy_ctl_ready_r6 && (po_rdval_cnt > 'd0) && (dec_wait_cnt == 'd1)) + po_cnt_dec <= #TCQ 1'b1; + else + po_cnt_dec <= #TCQ 1'b0; + end + + // Inc/Dec Phaser_Out stage 2 fine delay line + always @(posedge clk) begin + if (rst) begin + dec_po_f_incdec_r <= #TCQ 1'b0; + dec_po_f_en_r <= #TCQ 1'b0; + end else if (po_cnt_dec) begin + dec_po_f_incdec_r <= #TCQ 1'b0; + dec_po_f_en_r <= #TCQ 1'b1; + end else begin + dec_po_f_incdec_r <= #TCQ 1'b0; + dec_po_f_en_r <= #TCQ 1'b0; + end + end + + always @(posedge clk) begin + if (rst) + po_dec_done <= #TCQ 1'b0; + else if (((po_cnt_dec == 'd1) && (po_rdval_cnt == 'd1)) || + (phy_ctl_ready_r6 && (po_rdval_cnt == 'd0))) begin + po_dec_done <= #TCQ 1'b1; + end + end + + //*************************************************************************** + // Decrement initial Phaser_IN fine delay value before proceeding with + // calibration + //*************************************************************************** + + always @(posedge clk) begin + dqs_po_dec_done_r1 <= #TCQ po_dec_done; + dqs_po_dec_done_r2 <= #TCQ dqs_po_dec_done_r1; + fine_dly_dec_done_r2 <= #TCQ fine_dly_dec_done_r1; + fine_dly_dec_done_r3 <= #TCQ fine_dly_dec_done_r2; + end + + always @(posedge clk) begin + if (rst) begin + pi_rdval_cnt <= #TCQ 'd0; + end else if (dqs_po_dec_done_r1 && ~dqs_po_dec_done_r2) begin + pi_rdval_cnt <= #TCQ pi_counter_read_val; + end else if (pi_rdval_cnt > 'd0) begin + if (pi_cnt_dec) + pi_rdval_cnt <= #TCQ pi_rdval_cnt - 1; + else + pi_rdval_cnt <= #TCQ pi_rdval_cnt; + end else if (pi_rdval_cnt == 'd0) begin + pi_rdval_cnt <= #TCQ pi_rdval_cnt; + end + end + + always @(posedge clk) begin + if (rst || (pi_rdval_cnt == 'd0)) + pi_cnt_dec <= #TCQ 1'b0; + else if (dqs_po_dec_done_r2 && (pi_rdval_cnt > 'd0) + && (dec_wait_cnt == 'd1)) + pi_cnt_dec <= #TCQ 1'b1; + else + pi_cnt_dec <= #TCQ 1'b0; + end + + // Inc/Dec Phaser_In stage 2 fine delay line + always @(posedge clk) begin + if (rst) begin + dec_pi_f_incdec_r <= #TCQ 1'b0; + dec_pi_f_en_r <= #TCQ 1'b0; + end else if (pi_cnt_dec) begin + dec_pi_f_incdec_r <= #TCQ 1'b0; + dec_pi_f_en_r <= #TCQ 1'b1; + end else begin + dec_pi_f_incdec_r <= #TCQ 1'b0; + dec_pi_f_en_r <= #TCQ 1'b0; + end + end + + always @(posedge clk) begin + if (rst) begin + fine_dly_dec_done_r1 <= #TCQ 1'b0; + end else if (((pi_cnt_dec == 'd1) && (pi_rdval_cnt == 'd1)) || + (dqs_po_dec_done_r2 && (pi_rdval_cnt == 'd0))) begin + fine_dly_dec_done_r1 <= #TCQ 1'b1; + end + end + + assign skip_cal_po_pi_dec_done = fine_dly_dec_done_r3; + +//*************************end Phaser_Out and Phaser_In decrement to zero******* + + + + localparam WAIT_CNT = 15; + + // State Machine + localparam [4:0] IDLE = 5'h00; + localparam [4:0] READ_PO_PI_COUNTER_VAL = 5'h01; + localparam [4:0] CALC_INC_DEC_CNT_VAL = 5'h02; + localparam [4:0] WAIT_STG3_SEL = 5'h03; + localparam [4:0] PO_COARSE_CNT_CHECK = 5'h04; + localparam [4:0] PO_COARSE_INC = 5'h05; + localparam [4:0] PO_STG3_SEL = 5'h06; + localparam [4:0] PO_STG3_INC_CNT_CHECK = 5'h07; + localparam [4:0] PO_STG3_INC = 5'h08; + localparam [4:0] PO_STG3_DEC_CNT_CHECK = 5'h09; + localparam [4:0] PO_STG3_DEC = 5'h0A; + localparam [4:0] PO_STG2_INC_CNT_CHECK = 5'h0B; + localparam [4:0] PO_STG2_INC = 5'h0C; + localparam [4:0] PO_STG2_DEC_CNT_CHECK = 5'h0D; + localparam [4:0] PO_STG2_DEC = 5'h0E; + localparam [4:0] PI_STG2_INC_CNT_CHECK = 5'h0F; + localparam [4:0] PI_STG2_INC = 5'h10; + localparam [4:0] PI_STG2_DEC_CNT_CHECK = 5'h11; + localparam [4:0] PI_STG2_DEC = 5'h12; + localparam [4:0] IDELAY_CNT_CHECK = 5'h13; + localparam [4:0] IDELAY_TAP_INC = 5'h14; + localparam [4:0] WAIT_TAP_INC_DEC = 5'h15; + localparam [4:0] NEXT_BYTE = 5'h16; + localparam [4:0] WAIT_PO_PI_COUNTER_VAL = 5'h17; + localparam [4:0] PO_PI_TAP_ADJ_DONE = 5'h18; + + + reg calib_tap_inc_start_r; + reg [4:0] skip_state_r; + reg wait_cnt_en_r; + reg wait_cnt_done; + reg [3:0] wait_cnt_r; + reg po_sel_stg23_r; + reg po_f_en_r; + reg po_f_incdec_r; + reg po_c_en_r; + reg po_c_inc_r; + reg pi_f_en_r; + reg pi_f_incdec_r; + reg idelay_ce_r; + reg idelay_inc_r; + reg [2:0] po_c_inc_cnt; + reg [5:0] po_stg3_inc_cnt; + reg [5:0] po_stg3_dec_cnt; + reg [5:0] po_stg2_inc_cnt; + reg [5:0] po_stg2_dec_cnt; + reg [5:0] pi_stg2_inc_cnt; + reg [5:0] pi_stg2_dec_cnt; + reg [4:0] idelay_inc_cnt; + reg po_stg3_cnt_load_r; + reg po_c_inc_active_r; + reg po_stg3_inc_active_r; + reg po_stg3_dec_active_r; + reg po_stg2_inc_active_r; + reg po_stg2_dec_active_r; + reg pi_stg2_inc_active_r; + reg pi_stg2_dec_active_r; + reg idelay_inc_active_r; + reg [5:0] byte_cnt_r; + reg tap_adj_done_r; + reg [2:0] calib_byte_po_c_cnt; + reg [5:0] calib_byte_po_stg2_cnt; + reg [5:0] calib_byte_po_stg3_cnt; + reg [5:0] calib_byte_pi_stg2_cnt; + reg [4:0] calib_byte_idelay_cnt; + + reg [4:0] skip_next_state; + reg [5:0] byte_cnt; + reg tap_adj_done; + reg po_sel_stg23; + reg po_f_en; + reg po_f_incdec; + reg po_c_en; + reg po_c_inc; + reg pi_f_en; + reg pi_f_incdec; + reg idelay_ce; + reg idelay_inc; + reg po_stg3_cnt_load; + reg po_c_inc_active; + reg po_stg3_inc_active; + reg po_stg3_dec_active; + reg po_stg2_inc_active; + reg po_stg2_dec_active; + reg pi_stg2_inc_active; + reg pi_stg2_dec_active; + reg idelay_inc_active; + + + +// Output assignments + assign calib_tap_inc_byte_cnt = byte_cnt_r; + assign calib_po_f_en = fine_dly_dec_done_r3 ? po_f_en_r : dec_po_f_en_r; + assign calib_po_f_incdec = fine_dly_dec_done_r3 ? po_f_incdec_r : dec_po_f_incdec_r; + assign calib_po_sel_stg2stg3 = po_sel_stg23_r; + assign calib_po_c_en = po_c_en_r; + assign calib_po_c_inc = po_c_inc_r; + assign calib_pi_f_en = fine_dly_dec_done_r3 ? pi_f_en_r : dec_pi_f_en_r; + assign calib_pi_f_incdec = fine_dly_dec_done_r3 ? pi_f_incdec_r : dec_pi_f_incdec_r; + assign calib_idelay_ce = idelay_ce_r; + assign calib_idelay_inc = idelay_inc_r; + assign calib_tap_inc_done = tap_adj_done_r; + +// Register input calib_tap_inc_start + always @(posedge clk) + calib_tap_inc_start_r <= #TCQ calib_tap_inc_start; + + +/**************************Wait Counter Start*********************************/ +// Wait counter enable for wait states WAIT_STG3_SEL, WAIT_TAP_INC_DEC, and +// WAIT_PO_PI_COUNTER_VAL + always @(posedge clk) begin + if ((skip_state_r == WAIT_STG3_SEL) || + (skip_state_r == WAIT_TAP_INC_DEC) || + (skip_state_r == WAIT_PO_PI_COUNTER_VAL)) + wait_cnt_en_r <= #TCQ 1'b1; + else + wait_cnt_en_r <= #TCQ 1'b0; + end + +// Wait counter enable for wait states WAIT_STG3_SEL, WAIT_TAP_INC_DEC, and +// WAIT_PO_PI_COUNTER_VAL + always @(posedge clk) begin + if (!wait_cnt_en_r) begin + wait_cnt_r <= #TCQ 'b0; + wait_cnt_done <= #TCQ 1'b0; + end else begin + if (wait_cnt_r != WAIT_CNT - 1) begin + wait_cnt_r <= #TCQ wait_cnt_r + 1; + wait_cnt_done <= #TCQ 1'b0; + end else begin + wait_cnt_r <= #TCQ 'b0; + wait_cnt_done <= #TCQ 1'b1; + end + end + end +/**************************Wait Counter End***********************************/ + +// Calibration tap values for current byte being adjusted + always @(posedge clk) begin + if (rst) begin + calib_byte_po_c_cnt <= #TCQ 'd0; + calib_byte_po_stg2_cnt <= #TCQ 'd0; + calib_byte_po_stg3_cnt <= #TCQ 'd0; + calib_byte_pi_stg2_cnt <= #TCQ 'd0; + calib_byte_idelay_cnt <= #TCQ 'd0; + end else begin + calib_byte_po_c_cnt <= #TCQ calib_po_coarse_tap_cnt[3*byte_cnt_r+:3]; + calib_byte_po_stg2_cnt <= #TCQ calib_po_stage2_tap_cnt[6*byte_cnt_r+:6]; + calib_byte_po_stg3_cnt <= #TCQ calib_po_stage3_tap_cnt[6*byte_cnt_r+:6]; + calib_byte_pi_stg2_cnt <= #TCQ calib_pi_stage2_tap_cnt[6*byte_cnt_r+:6]; + calib_byte_idelay_cnt <= #TCQ calib_idelay_tap_cnt[5*byte_cnt_r+:5]; + end + end + +// Phaser_Out, Phaser_In, and IDELAY inc/dec counters + always @(posedge clk) begin + if (rst) begin + po_c_inc_cnt <= #TCQ 'd0; + po_stg2_inc_cnt <= #TCQ 'd0; + po_stg2_dec_cnt <= #TCQ 'd0; + pi_stg2_inc_cnt <= #TCQ 'd0; + pi_stg2_dec_cnt <= #TCQ 'd0; + idelay_inc_cnt <= #TCQ 'd0; + end else if (skip_state_r == READ_PO_PI_COUNTER_VAL) begin + // IDELAY tap count setting + idelay_inc_cnt <= #TCQ calib_byte_idelay_cnt; + // Phaser_Out coarse tap setting + if (po_counter_read_val[8:6] == 'd0) begin + coarse_dec_err <= #TCQ 1'b0; + po_c_inc_cnt <= #TCQ calib_byte_po_c_cnt; + end else if (po_counter_read_val[8:6] < calib_byte_po_c_cnt) begin + coarse_dec_err <= #TCQ 1'b0; + po_c_inc_cnt <= #TCQ calib_byte_po_c_cnt - po_counter_read_val[8:6]; + end else begin + // Phaser_Out coarse taps cannot be decremented + coarse_dec_err <= #TCQ 1'b1; + po_c_inc_cnt <= #TCQ 'd0; + end + // Phaser_Out stage2 tap count setting when po_sel_stg23_r=0 + if (po_counter_read_val[5:0] == 'd0) begin + po_stg2_inc_cnt <= #TCQ calib_byte_po_stg2_cnt; + po_stg2_dec_cnt <= #TCQ 'd0; + end else if (po_counter_read_val[5:0] > calib_byte_po_stg2_cnt) begin + po_stg2_inc_cnt <= #TCQ 'd0; + po_stg2_dec_cnt <= #TCQ po_counter_read_val[5:0] - calib_byte_po_stg2_cnt; + end else if (po_counter_read_val[5:0] < calib_byte_po_stg2_cnt) begin + po_stg2_inc_cnt <= #TCQ calib_byte_po_stg2_cnt - po_counter_read_val[5:0]; + po_stg2_dec_cnt <= #TCQ 'd0; + end else if (po_counter_read_val[5:0] == calib_byte_po_stg2_cnt) begin + po_stg2_inc_cnt <= #TCQ 'd0; + po_stg2_dec_cnt <= #TCQ 'd0; + end + //Phaser_In stgae2 tap count setting + if (pi_counter_read_val == 'd0) begin + pi_stg2_inc_cnt <= #TCQ calib_byte_pi_stg2_cnt; + pi_stg2_dec_cnt <= #TCQ 'd0; + end else if (pi_counter_read_val > calib_byte_pi_stg2_cnt) begin + pi_stg2_inc_cnt <= #TCQ 'd0; + pi_stg2_dec_cnt <= #TCQ pi_counter_read_val - calib_byte_pi_stg2_cnt; + end else if (pi_counter_read_val < calib_byte_pi_stg2_cnt) begin + pi_stg2_inc_cnt <= #TCQ calib_byte_pi_stg2_cnt - pi_counter_read_val; + pi_stg2_dec_cnt <= #TCQ 'd0; + end else if (pi_counter_read_val == calib_byte_pi_stg2_cnt) begin + pi_stg2_inc_cnt <= #TCQ 'd0; + pi_stg2_dec_cnt <= #TCQ 'd0; + end + end else begin + if (skip_state_r == IDELAY_TAP_INC) + idelay_inc_cnt <= #TCQ idelay_inc_cnt - 1; + if (skip_state_r == PO_COARSE_INC) + po_c_inc_cnt <= #TCQ po_c_inc_cnt - 1; + if (skip_state_r == PO_STG2_INC) + po_stg2_inc_cnt <= #TCQ po_stg2_inc_cnt - 1; + if (skip_state_r == PO_STG2_DEC) + po_stg2_dec_cnt <= #TCQ po_stg2_dec_cnt - 1; + if (skip_state_r == PI_STG2_INC) + pi_stg2_inc_cnt <= #TCQ pi_stg2_inc_cnt - 1; + if (skip_state_r == PI_STG2_DEC) + pi_stg2_dec_cnt <= #TCQ pi_stg2_dec_cnt - 1; + end + end + + // Phaser_Out stage 3 tap count setting when po_sel_stg23_r=1 + always @(posedge clk) begin + if (rst) begin + po_stg3_inc_cnt <= #TCQ 'd0; + po_stg3_dec_cnt <= #TCQ 'd0; + end else if ((skip_state_r == WAIT_STG3_SEL) && wait_cnt_done && po_stg3_cnt_load_r) begin + if (po_counter_read_val[5:0] == 'd0) begin + po_stg3_inc_cnt <= #TCQ calib_byte_po_stg3_cnt; + po_stg3_dec_cnt <= #TCQ 'd0; + end else if (po_counter_read_val[5:0] > calib_byte_po_stg3_cnt) begin + po_stg3_inc_cnt <= #TCQ 'd0; + po_stg3_dec_cnt <= #TCQ po_counter_read_val[5:0] - calib_byte_po_stg3_cnt; + end else if (po_counter_read_val[5:0] < calib_byte_po_stg3_cnt) begin + po_stg3_inc_cnt <= #TCQ calib_byte_po_stg3_cnt - po_counter_read_val[5:0]; + po_stg3_dec_cnt <= #TCQ 'd0; + end else if (po_counter_read_val[5:0] == calib_byte_po_stg3_cnt) begin + po_stg3_inc_cnt <= #TCQ 'd0; + po_stg3_dec_cnt <= #TCQ 'd0; + end + end else begin + if (skip_state_r == PO_STG3_INC) + po_stg3_inc_cnt <= #TCQ po_stg3_inc_cnt - 1; + if (skip_state_r == PO_STG3_DEC) + po_stg3_dec_cnt <= #TCQ po_stg3_dec_cnt - 1; + end + end + + always @(posedge clk) begin + if (rst) begin + skip_state_r <= #TCQ IDLE; + byte_cnt_r <= #TCQ 'd0; + tap_adj_done_r <= #TCQ 1'b0; + po_sel_stg23_r <= #TCQ 1'b0; + po_f_en_r <= #TCQ 1'b0; + po_f_incdec_r <= #TCQ 1'b0; + po_c_en_r <= #TCQ 1'b0; + po_c_inc_r <= #TCQ 1'b0; + pi_f_en_r <= #TCQ 1'b0; + pi_f_incdec_r <= #TCQ 1'b0; + idelay_ce_r <= #TCQ 1'b0; + idelay_inc_r <= #TCQ 1'b0; + po_stg3_cnt_load_r <= #TCQ 1'b0; + po_c_inc_active_r <= #TCQ 1'b0; + po_stg3_inc_active_r <= #TCQ 1'b0; + po_stg3_dec_active_r <= #TCQ 1'b0; + po_stg2_inc_active_r <= #TCQ 1'b0; + po_stg2_dec_active_r <= #TCQ 1'b0; + pi_stg2_inc_active_r <= #TCQ 1'b0; + pi_stg2_dec_active_r <= #TCQ 1'b0; + idelay_inc_active_r <= #TCQ 1'b0; + end else begin + skip_state_r <= #TCQ skip_next_state; + byte_cnt_r <= #TCQ byte_cnt; + tap_adj_done_r <= #TCQ tap_adj_done; + po_sel_stg23_r <= #TCQ po_sel_stg23; + po_f_en_r <= #TCQ po_f_en; + po_f_incdec_r <= #TCQ po_f_incdec; + po_c_en_r <= #TCQ po_c_en; + po_c_inc_r <= #TCQ po_c_inc; + pi_f_en_r <= #TCQ pi_f_en; + pi_f_incdec_r <= #TCQ pi_f_incdec; + idelay_ce_r <= #TCQ idelay_ce; + idelay_inc_r <= #TCQ idelay_inc; + po_stg3_cnt_load_r <= #TCQ po_stg3_cnt_load; + po_c_inc_active_r <= #TCQ po_c_inc_active; + po_stg3_inc_active_r <= #TCQ po_stg3_inc_active; + po_stg3_dec_active_r <= #TCQ po_stg3_dec_active; + po_stg2_inc_active_r <= #TCQ po_stg2_inc_active; + po_stg2_dec_active_r <= #TCQ po_stg2_dec_active; + pi_stg2_inc_active_r <= #TCQ pi_stg2_inc_active; + pi_stg2_dec_active_r <= #TCQ pi_stg2_dec_active; + idelay_inc_active_r <= #TCQ idelay_inc_active; + end + end + +// State Machine + always @(*) begin + skip_next_state = skip_state_r; + byte_cnt = byte_cnt_r; + tap_adj_done = tap_adj_done_r; + po_sel_stg23 = po_sel_stg23_r; + po_f_en = po_f_en_r; + po_f_incdec = po_f_incdec_r; + po_c_en = po_c_en_r; + po_c_inc = po_c_inc_r; + pi_f_en = pi_f_en_r; + pi_f_incdec = pi_f_incdec_r; + idelay_ce = idelay_ce_r; + idelay_inc = idelay_inc_r; + po_stg3_cnt_load = po_stg3_cnt_load_r; + po_c_inc_active = po_c_inc_active_r; + po_stg3_inc_active = po_stg3_inc_active_r; + po_stg3_dec_active = po_stg3_dec_active_r; + po_stg2_inc_active = po_stg2_inc_active_r; + po_stg2_dec_active = po_stg2_dec_active_r; + pi_stg2_inc_active = pi_stg2_inc_active_r; + pi_stg2_dec_active = pi_stg2_dec_active_r; + idelay_inc_active = idelay_inc_active_r; + + + case(skip_state_r) + IDLE: begin + // Begin tap adjustment on the rising edge of calib_tap_inc_start + // This logic assumes that load_done is asserted before calib_tap_inc_start + // If this is not the case this logic will have to change + if (calib_tap_inc_start && ~calib_tap_inc_start_r && load_done) begin + skip_next_state = READ_PO_PI_COUNTER_VAL; + end + end + + READ_PO_PI_COUNTER_VAL: begin + skip_next_state = CALC_INC_DEC_CNT_VAL; + end + + CALC_INC_DEC_CNT_VAL: begin + skip_next_state = WAIT_STG3_SEL; + po_sel_stg23 = 1'b1; + po_stg3_cnt_load = 1'b1; + end + + WAIT_STG3_SEL: begin + if (wait_cnt_done) begin + if (po_stg3_cnt_load) + skip_next_state = PO_STG3_SEL; + else + skip_next_state = PO_COARSE_CNT_CHECK; + end + end + + PO_COARSE_CNT_CHECK: begin + if (po_c_inc_cnt > 'd0) begin + po_c_inc_active = 1'b1; + skip_next_state = PO_COARSE_INC; + end else begin + po_c_inc_active = 1'b0; + skip_next_state = PO_STG2_DEC_CNT_CHECK; + end + end + + PO_COARSE_INC: begin + po_c_en = 1'b1; + po_c_inc = 1'b1; + skip_next_state = WAIT_TAP_INC_DEC; + end + + PO_STG3_SEL: begin + po_stg3_cnt_load = 1'b0; + if (po_stg3_inc_cnt > 'd0) begin + po_stg3_inc_active = 1'b1; + skip_next_state = PO_STG3_INC; + end else if (po_stg3_dec_cnt > 'd0) begin + po_stg3_dec_active = 1'b1; + skip_next_state = PO_STG3_DEC; + end else begin + po_sel_stg23 = 1'b0; + skip_next_state = WAIT_STG3_SEL; + + end + end + + PO_STG3_INC_CNT_CHECK: begin + if (po_stg3_inc_cnt > 'd0) begin + po_stg3_inc_active = 1'b1; + skip_next_state = PO_STG3_INC; + end else begin + po_stg3_inc_active = 1'b0; + po_sel_stg23 = 1'b0; + skip_next_state = WAIT_STG3_SEL; + end + end + + PO_STG3_INC: begin + po_f_en = 1'b1; + po_f_incdec = 1'b1; + skip_next_state = WAIT_TAP_INC_DEC; + end + + PO_STG3_DEC_CNT_CHECK: begin + if (po_stg3_dec_cnt > 'd0) begin + po_stg3_dec_active = 1'b1; + skip_next_state = PO_STG3_DEC; + end else begin + po_stg3_dec_active = 1'b0; + po_sel_stg23 = 1'b0; + skip_next_state = WAIT_STG3_SEL; + end + end + + PO_STG3_DEC: begin + po_f_en = 1'b1; + po_f_incdec = 1'b0; + skip_next_state = WAIT_TAP_INC_DEC; + end + + PO_STG2_DEC_CNT_CHECK: begin + if (po_stg2_dec_cnt > 'd0) begin + po_stg2_dec_active = 1'b1; + skip_next_state = PO_STG2_DEC; + end else if (po_stg2_inc_cnt > 'd0) begin + po_stg2_dec_active = 1'b0; + skip_next_state = PO_STG2_INC_CNT_CHECK; + end else begin + po_stg2_dec_active = 1'b0; + skip_next_state = PI_STG2_DEC_CNT_CHECK; + end + end + + PO_STG2_DEC: begin + po_f_en = 1'b1; + po_f_incdec = 1'b0; + skip_next_state = WAIT_TAP_INC_DEC; + end + + PO_STG2_INC_CNT_CHECK: begin + if (po_stg2_inc_cnt > 'd0) begin + po_stg2_inc_active = 1'b1; + skip_next_state = PO_STG2_INC; + end else begin + po_stg2_inc_active = 1'b0; + skip_next_state = PI_STG2_DEC_CNT_CHECK; + end + end + + PO_STG2_INC: begin + po_f_en = 1'b1; + po_f_incdec = 1'b1; + skip_next_state = WAIT_TAP_INC_DEC; + end + + PI_STG2_DEC_CNT_CHECK: begin + if (pi_stg2_dec_cnt > 'd0) begin + pi_stg2_dec_active = 1'b1; + skip_next_state = PI_STG2_DEC; + end else if (pi_stg2_inc_cnt > 'd0) begin + pi_stg2_dec_active = 1'b0; + skip_next_state = PI_STG2_INC_CNT_CHECK; + end else begin + pi_stg2_dec_active = 1'b0; + skip_next_state = IDELAY_CNT_CHECK; + end + end + + PI_STG2_DEC: begin + pi_f_en = 1'b1; + pi_f_incdec = 1'b0; + skip_next_state = WAIT_TAP_INC_DEC; + end + + PI_STG2_INC_CNT_CHECK: begin + if (pi_stg2_inc_cnt > 'd0) begin + pi_stg2_inc_active = 1'b1; + skip_next_state = PI_STG2_INC; + end else begin + pi_stg2_inc_active = 1'b0; + skip_next_state = IDELAY_CNT_CHECK; + end + end + + PI_STG2_INC: begin + pi_f_en = 1'b1; + pi_f_incdec = 1'b1; + skip_next_state = WAIT_TAP_INC_DEC; + end + + IDELAY_CNT_CHECK: begin + if (idelay_inc_cnt > 'd0) begin + idelay_inc_active = 1'b1; + skip_next_state = IDELAY_TAP_INC; + end else begin + idelay_inc_active = 1'b0; + skip_next_state = NEXT_BYTE; + end + end + + IDELAY_TAP_INC: begin + idelay_ce = 1'b1; + idelay_inc = 1'b1; + skip_next_state = WAIT_TAP_INC_DEC; + end + + WAIT_TAP_INC_DEC: begin + po_c_en = 1'b0; + po_c_inc = 1'b0; + po_f_en = 1'b0; + po_f_incdec = 1'b0; + pi_f_en = 1'b0; + pi_f_incdec = 1'b0; + idelay_ce = 1'b0; + idelay_inc = 1'b0; + if (wait_cnt_done) begin + if (po_c_inc_active_r) + skip_next_state = PO_COARSE_CNT_CHECK; + else if (po_stg3_inc_active_r) + skip_next_state = PO_STG3_INC_CNT_CHECK; + else if (po_stg3_dec_active_r) + skip_next_state = PO_STG3_DEC_CNT_CHECK; + else if (po_stg2_dec_active_r) + skip_next_state = PO_STG2_DEC_CNT_CHECK; + else if (po_stg2_inc_active_r) + skip_next_state = PO_STG2_INC_CNT_CHECK; + else if (pi_stg2_dec_active_r) + skip_next_state = PI_STG2_DEC_CNT_CHECK; + else if (pi_stg2_inc_active_r) + skip_next_state = PI_STG2_INC_CNT_CHECK; + else if (idelay_inc_active_r) + skip_next_state = IDELAY_CNT_CHECK; + end + end + + NEXT_BYTE: begin + if (byte_cnt_r >= DQS_WIDTH-1) begin + skip_next_state = PO_PI_TAP_ADJ_DONE; + end else begin + byte_cnt = byte_cnt + 1; + skip_next_state = WAIT_PO_PI_COUNTER_VAL; + end + end + + WAIT_PO_PI_COUNTER_VAL: begin + if (wait_cnt_done) + skip_next_state = READ_PO_PI_COUNTER_VAL; + end + + PO_PI_TAP_ADJ_DONE: begin + tap_adj_done = 1'b1; + end + + default: begin + skip_next_state = IDLE; + end + + endcase + end + + //Debug + assign dbg_skip_cal[4:0] = skip_state_r; + assign dbg_skip_cal[7:5] = po_c_inc_cnt; + assign dbg_skip_cal[13:8] = po_stg3_inc_cnt; + assign dbg_skip_cal[19:14] = po_stg3_dec_cnt; + assign dbg_skip_cal[25:20] = po_stg2_inc_cnt; + assign dbg_skip_cal[31:26] = po_stg2_dec_cnt; + assign dbg_skip_cal[37:32] = pi_stg2_inc_cnt; + assign dbg_skip_cal[43:38] = pi_stg2_dec_cnt; + assign dbg_skip_cal[48:44] = idelay_inc_cnt; + assign dbg_skip_cal[54:49] = byte_cnt_r; + assign dbg_skip_cal[55] = po_c_inc_active; + assign dbg_skip_cal[56] = po_stg3_inc_active; + assign dbg_skip_cal[57] = po_stg3_dec_active; + assign dbg_skip_cal[58] = po_stg2_inc_active; + assign dbg_skip_cal[59] = po_stg2_dec_active; + assign dbg_skip_cal[60] = pi_stg2_inc_active; + assign dbg_skip_cal[61] = pi_stg2_dec_active; + assign dbg_skip_cal[62] = idelay_inc_active; + +endmodule diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_infrastructure.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_infrastructure.v new file mode 100644 index 0000000..02d85aa --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_infrastructure.v @@ -0,0 +1,767 @@ +//***************************************************************************** +// (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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version: %version +// \ \ Application: MIG +// / / Filename: infrastructure.v +// /___/ /\ Date Last Modified: $Date: 2011/06/02 08:34:56 $ +// \ \ / \ Date Created:Tue Jun 30 2009 +// \___\/\___\ +// +//Device: Virtex-6 +//Design Name: DDR3 SDRAM +//Purpose: +// Clock generation/distribution and reset synchronization +//Reference: +//Revision History: +//***************************************************************************** + +/****************************************************************************** +**$Id: infrastructure.v,v 1.1 2011/06/02 08:34:56 mishra Exp $ +**$Date: 2011/06/02 08:34:56 $ +**$Author: mishra $ +**$Revision: 1.1 $ +**$Source: /devl/xcs/repo/env/Databases/ip/src2/O/mig_7series_v1_3/data/dlib/7series/ddr3_sdram/verilog/rtl/clocking/infrastructure.v,v $ +******************************************************************************/ + +`timescale 1ps/1ps + + +module mig_7series_v4_0_infrastructure # + ( + parameter SIMULATION = "FALSE", // Should be TRUE during design simulations and + // FALSE during implementations + parameter TCQ = 100, // clk->out delay (sim only) + parameter CLKIN_PERIOD = 3000, // Memory clock period + parameter nCK_PER_CLK = 2, // Fabric clk period:Memory clk period + parameter SYSCLK_TYPE = "DIFFERENTIAL", + // input clock type + // "DIFFERENTIAL","SINGLE_ENDED" + parameter UI_EXTRA_CLOCKS = "FALSE", + // Generates extra clocks as + // 1/2, 1/4 and 1/8 of fabrick clock. + // Valid for DDR2/DDR3 AXI interfaces + // based on GUI selection + parameter CLKFBOUT_MULT = 4, // write PLL VCO multiplier + parameter DIVCLK_DIVIDE = 1, // write PLL VCO divisor + parameter CLKOUT0_PHASE = 45.0, // VCO output divisor for clkout0 + parameter CLKOUT0_DIVIDE = 16, // VCO output divisor for PLL clkout0 + parameter CLKOUT1_DIVIDE = 4, // VCO output divisor for PLL clkout1 + parameter CLKOUT2_DIVIDE = 64, // VCO output divisor for PLL clkout2 + parameter CLKOUT3_DIVIDE = 16, // VCO output divisor for PLL clkout3 + parameter MMCM_VCO = 1200, // Max Freq (MHz) of MMCM VCO + parameter MMCM_MULT_F = 4, // write MMCM VCO multiplier + parameter MMCM_DIVCLK_DIVIDE = 1, // write MMCM VCO divisor + parameter MMCM_CLKOUT0_EN = "FALSE", // Enabled (or) Disable MMCM clkout0 + parameter MMCM_CLKOUT1_EN = "FALSE", // Enabled (or) Disable MMCM clkout1 + parameter MMCM_CLKOUT2_EN = "FALSE", // Enabled (or) Disable MMCM clkout2 + parameter MMCM_CLKOUT3_EN = "FALSE", // Enabled (or) Disable MMCM clkout3 + parameter MMCM_CLKOUT4_EN = "FALSE", // Enabled (or) Disable MMCM clkout4 + parameter MMCM_CLKOUT0_DIVIDE = 1, // VCO output divisor for MMCM clkout0 + parameter MMCM_CLKOUT1_DIVIDE = 1, // VCO output divisor for MMCM clkout1 + parameter MMCM_CLKOUT2_DIVIDE = 1, // VCO output divisor for MMCM clkout2 + parameter MMCM_CLKOUT3_DIVIDE = 1, // VCO output divisor for MMCM clkout3 + parameter MMCM_CLKOUT4_DIVIDE = 1, // VCO output divisor for MMCM clkout4 + parameter RST_ACT_LOW = 1, + parameter tCK = 1250, + // memory tCK paramter. + // # = Clock Period in pS. + parameter MEM_TYPE = "DDR3" + ) + ( + // Clock inputs + input mmcm_clk, // System clock diff input + // System reset input + input sys_rst, // core reset from user application + // PLLE2/IDELAYCTRL Lock status + input [1:0] iodelay_ctrl_rdy, // IDELAYCTRL lock status + // Clock outputs + + output clk, // fabric clock freq ; either half rate or quarter rate and is + // determined by PLL parameters settings. + output clk_div2, // mem_refclk divided by 2 for PI incdec + output rst_div2, // reset in clk_div2 domain + output mem_refclk, // equal to memory clock + output freq_refclk, // freq above 400 MHz: set freq_refclk = mem_refclk + // freq below 400 MHz: set freq_refclk = 2* mem_refclk or 4* mem_refclk; + // to hard PHY for phaser + output sync_pulse, // exactly 1/16 of mem_refclk and the sync pulse is exactly 1 memref_clk wide +// output auxout_clk, // IO clk used to clock out Aux_Out ports + output mmcm_ps_clk, // Phase shift clock + output poc_sample_pd, // Tell POC when to sample phase detector output. + output ui_addn_clk_0, // MMCM out0 clk + output ui_addn_clk_1, // MMCM out1 clk + output ui_addn_clk_2, // MMCM out2 clk + output ui_addn_clk_3, // MMCM out3 clk + output ui_addn_clk_4, // MMCM out4 clk + output pll_locked, // locked output from PLLE2_ADV + output mmcm_locked, // locked output from MMCME2_ADV + // Reset outputs + output rstdiv0, // Reset CLK and CLKDIV logic (incl I/O), + output iddr_rst + + ,output rst_phaser_ref + ,input ref_dll_lock + ,input psen + ,input psincdec + ,output psdone + ); + + // # of clock cycles to delay deassertion of reset. Needs to be a fairly + // high number not so much for metastability protection, but to give time + // for reset (i.e. stable clock cycles) to propagate through all state + // machines and to all control signals (i.e. not all control signals have + // resets, instead they rely on base state logic being reset, and the effect + // of that reset propagating through the logic). Need this because we may not + // be getting stable clock cycles while reset asserted (i.e. since reset + // depends on DCM lock status) + localparam RST_SYNC_NUM = 25; + + // Round up for clk reset delay to ensure that CLKDIV reset deassertion + // occurs at same time or after CLK reset deassertion (still need to + // consider route delay - add one or two extra cycles to be sure!) + localparam RST_DIV_SYNC_NUM = (RST_SYNC_NUM+1)/2; + + // Input clock is assumed to be equal to the memory clock frequency + // User should change the parameter as necessary if a different input + // clock frequency is used + localparam real CLKIN1_PERIOD_NS = CLKIN_PERIOD / 1000.0; + localparam CLKOUT4_DIVIDE = 2 * CLKOUT1_DIVIDE; + + localparam integer VCO_PERIOD + = (CLKIN1_PERIOD_NS * DIVCLK_DIVIDE * 1000) / CLKFBOUT_MULT; + + localparam CLKOUT0_PERIOD = VCO_PERIOD * CLKOUT0_DIVIDE; + localparam CLKOUT1_PERIOD = VCO_PERIOD * CLKOUT1_DIVIDE; + localparam CLKOUT2_PERIOD = VCO_PERIOD * CLKOUT2_DIVIDE; + localparam CLKOUT3_PERIOD = VCO_PERIOD * CLKOUT3_DIVIDE; + localparam CLKOUT4_PERIOD = VCO_PERIOD * CLKOUT4_DIVIDE; + + localparam CLKOUT4_PHASE = (SIMULATION == "TRUE") ? 22.5 : 168.75; + + localparam real CLKOUT3_PERIOD_NS = CLKOUT3_PERIOD / 1000.0; + localparam real CLKOUT4_PERIOD_NS = CLKOUT4_PERIOD / 1000.0; + + //synthesis translate_off + initial begin + $display("############# Write Clocks PLLE2_ADV Parameters #############\n"); + $display("nCK_PER_CLK = %7d", nCK_PER_CLK ); + $display("CLK_PERIOD = %7d", CLKIN_PERIOD ); + $display("CLKIN1_PERIOD = %7.3f", CLKIN1_PERIOD_NS); + $display("DIVCLK_DIVIDE = %7d", DIVCLK_DIVIDE ); + $display("CLKFBOUT_MULT = %7d", CLKFBOUT_MULT ); + $display("VCO_PERIOD = %7.1f", VCO_PERIOD ); + $display("CLKOUT0_DIVIDE_F = %7d", CLKOUT0_DIVIDE ); + $display("CLKOUT1_DIVIDE = %7d", CLKOUT1_DIVIDE ); + $display("CLKOUT2_DIVIDE = %7d", CLKOUT2_DIVIDE ); + $display("CLKOUT3_DIVIDE = %7d", CLKOUT3_DIVIDE ); + $display("CLKOUT0_PERIOD = %7d", CLKOUT0_PERIOD ); + $display("CLKOUT1_PERIOD = %7d", CLKOUT1_PERIOD ); + $display("CLKOUT2_PERIOD = %7d", CLKOUT2_PERIOD ); + $display("CLKOUT3_PERIOD = %7d", CLKOUT3_PERIOD ); + $display("CLKOUT4_PERIOD = %7d", CLKOUT4_PERIOD ); + $display("############################################################\n"); + end + //synthesis translate_on + + wire clk_bufg; + wire clk_pll; + wire clkfbout_pll; + wire mmcm_clkfbout; + wire pll_locked_i + /* synthesis syn_maxfan = 10 */; + (* max_fanout = 50 *) reg [RST_DIV_SYNC_NUM-2:0] rstdiv0_sync_r; + wire rst_tmp; + (* max_fanout = 50 *) reg rstdiv0_sync_r1 + /* synthesis syn_maxfan = 50 */; + reg [RST_DIV_SYNC_NUM-2:0] rst_sync_r; + (* max_fanout = 10 *) reg rst_sync_r1 + /* synthesis syn_maxfan = 10 */; + reg [RST_DIV_SYNC_NUM-2:0] rstdiv2_sync_r; + (* max_fanout = 10 *) reg rstdiv2_sync_r1 + /* synthesis syn_maxfan = 10 */; + wire sys_rst_act_hi; + + wire rst_tmp_phaser_ref; + (* max_fanout = 50 *) reg [RST_DIV_SYNC_NUM-1:0] rst_phaser_ref_sync_r + /* synthesis syn_maxfan = 10 */; + + // Instantiation of the MMCM primitive + wire clkfbout; + wire MMCM_Locked_i; + + wire mmcm_clkout0; + wire mmcm_clkout1; + wire mmcm_clkout2; + wire mmcm_clkout3; + wire mmcm_clkout4; + wire mmcm_ps_clk_bufg_in; + wire clk_div2_bufg_in; + + wire pll_clk3_out; + wire pll_clk3; + + assign sys_rst_act_hi = RST_ACT_LOW ? ~sys_rst: sys_rst; + + //*************************************************************************** + // Assign global clocks: + // 2. clk : Half rate / Quarter rate(used for majority of internal logic) + //*************************************************************************** + + assign clk = clk_bufg; + assign pll_locked = pll_locked_i & MMCM_Locked_i; + assign mmcm_locked = MMCM_Locked_i; + + + //*************************************************************************** + // Global base clock generation and distribution + //*************************************************************************** + + //***************************************************************** + // NOTES ON CALCULTING PROPER VCO FREQUENCY + // 1. VCO frequency = + // 1/((DIVCLK_DIVIDE * CLKIN_PERIOD)/(CLKFBOUT_MULT * nCK_PER_CLK)) + // 2. VCO frequency must be in the range [TBD, TBD] + //***************************************************************** + + PLLE2_ADV # + ( + .BANDWIDTH ("OPTIMIZED"), + .COMPENSATION ("INTERNAL"), + .STARTUP_WAIT ("FALSE"), + .CLKOUT0_DIVIDE (CLKOUT0_DIVIDE), // 4 freq_ref + .CLKOUT1_DIVIDE (CLKOUT1_DIVIDE), // 4 mem_ref + .CLKOUT2_DIVIDE (CLKOUT2_DIVIDE), // 16 sync + .CLKOUT3_DIVIDE (CLKOUT3_DIVIDE), // 16 sysclk + .CLKOUT4_DIVIDE (CLKOUT4_DIVIDE), + .CLKOUT5_DIVIDE (), + .DIVCLK_DIVIDE (DIVCLK_DIVIDE), + .CLKFBOUT_MULT (CLKFBOUT_MULT), + .CLKFBOUT_PHASE (0.000), + .CLKIN1_PERIOD (CLKIN1_PERIOD_NS), + .CLKIN2_PERIOD (), + .CLKOUT0_DUTY_CYCLE (0.500), + .CLKOUT0_PHASE (CLKOUT0_PHASE), + .CLKOUT1_DUTY_CYCLE (0.500), + .CLKOUT1_PHASE (0.000), + .CLKOUT2_DUTY_CYCLE (1.0/16.0), + .CLKOUT2_PHASE (9.84375), // PHASE shift is required for sync pulse generation. + .CLKOUT3_DUTY_CYCLE (0.500), + .CLKOUT3_PHASE (0.000), + .CLKOUT4_DUTY_CYCLE (0.500), + .CLKOUT4_PHASE (CLKOUT4_PHASE), + .CLKOUT5_DUTY_CYCLE (0.500), + .CLKOUT5_PHASE (0.000), + .REF_JITTER1 (0.010), + .REF_JITTER2 (0.010) + ) + plle2_i + ( + .CLKFBOUT (pll_clkfbout), + .CLKOUT0 (freq_refclk), + .CLKOUT1 (mem_refclk), + .CLKOUT2 (sync_pulse), // always 1/16 of mem_ref_clk + .CLKOUT3 (pll_clk3_out), +// .CLKOUT4 (auxout_clk_i), + .CLKOUT4 (), + .CLKOUT5 (), + .DO (), + .DRDY (), + .LOCKED (pll_locked_i), + .CLKFBIN (pll_clkfbout), + .CLKIN1 (mmcm_clk), + .CLKIN2 (), + .CLKINSEL (1'b1), + .DADDR (7'b0), + .DCLK (1'b0), + .DEN (1'b0), + .DI (16'b0), + .DWE (1'b0), + .PWRDWN (1'b0), + .RST ( sys_rst_act_hi) + ); + + +// BUFH u_bufh_auxout_clk +// ( +// .O (auxout_clk), +// .I (auxout_clk_i) +// ); + + BUFG u_bufg_clkdiv0 + ( + .O (clk_bufg), + .I (clk_pll_i) + ); + + BUFH u_bufh_pll_clk3 + ( + .O (pll_clk3), + .I (pll_clk3_out) + ); + + localparam real MMCM_VCO_PERIOD = 1000000.0/MMCM_VCO; + + //synthesis translate_off + initial begin + $display("############# MMCME2_ADV Parameters #############\n"); + $display("MMCM_MULT_F = %d", MMCM_MULT_F); +// $display("MMCM_VCO_FREQ (MHz) = %7.3f", MMCM_VCO*1000.0); + $display("MMCM_VCO_FREQ (MHz) = %7.3f", MMCM_VCO*1.000); + $display("MMCM_VCO_PERIOD = %7.3f", MMCM_VCO_PERIOD); + $display("#################################################\n"); + end + //synthesis translate_on + + generate + if (UI_EXTRA_CLOCKS == "TRUE") begin: gen_ui_extra_clocks + + localparam MMCM_CLKOUT0_DIVIDE_CAL = (MMCM_CLKOUT0_EN == "TRUE") ? MMCM_CLKOUT0_DIVIDE : MMCM_MULT_F; + localparam MMCM_CLKOUT1_DIVIDE_CAL = (MMCM_CLKOUT1_EN == "TRUE") ? MMCM_CLKOUT1_DIVIDE : MMCM_MULT_F; + localparam MMCM_CLKOUT2_DIVIDE_CAL = (MMCM_CLKOUT2_EN == "TRUE") ? MMCM_CLKOUT2_DIVIDE : MMCM_MULT_F; + localparam MMCM_CLKOUT3_DIVIDE_CAL = (MMCM_CLKOUT3_EN == "TRUE") ? MMCM_CLKOUT3_DIVIDE : MMCM_MULT_F; + localparam MMCM_CLKOUT4_DIVIDE_CAL = (MMCM_CLKOUT4_EN == "TRUE") ? MMCM_CLKOUT4_DIVIDE : MMCM_MULT_F; + + MMCME2_ADV + #(.BANDWIDTH ("HIGH"), + .CLKOUT4_CASCADE ("FALSE"), + .COMPENSATION ("BUF_IN"), + .STARTUP_WAIT ("FALSE"), +// .DIVCLK_DIVIDE (1), + .DIVCLK_DIVIDE (MMCM_DIVCLK_DIVIDE), + .CLKFBOUT_MULT_F (MMCM_MULT_F), + .CLKFBOUT_PHASE (0.000), + .CLKFBOUT_USE_FINE_PS ("FALSE"), + .CLKOUT0_DIVIDE_F (MMCM_CLKOUT0_DIVIDE_CAL), + .CLKOUT0_PHASE (0.000), + .CLKOUT0_DUTY_CYCLE (0.500), + .CLKOUT0_USE_FINE_PS ("FALSE"), + .CLKOUT1_DIVIDE (MMCM_CLKOUT1_DIVIDE_CAL), + .CLKOUT1_PHASE (0.000), + .CLKOUT1_DUTY_CYCLE (0.500), + .CLKOUT1_USE_FINE_PS ("FALSE"), + .CLKOUT2_DIVIDE (MMCM_CLKOUT2_DIVIDE_CAL), + .CLKOUT2_PHASE (0.000), + .CLKOUT2_DUTY_CYCLE (0.500), + .CLKOUT2_USE_FINE_PS ("FALSE"), + .CLKOUT3_DIVIDE (MMCM_CLKOUT3_DIVIDE_CAL), + .CLKOUT3_PHASE (0.000), + .CLKOUT3_DUTY_CYCLE (0.500), + .CLKOUT3_USE_FINE_PS ("FALSE"), + .CLKOUT4_DIVIDE (MMCM_CLKOUT4_DIVIDE_CAL), + .CLKOUT4_PHASE (0.000), + .CLKOUT4_DUTY_CYCLE (0.500), + .CLKOUT4_USE_FINE_PS ("FALSE"), + .CLKOUT5_DIVIDE (((MMCM_MULT_F*2)/MMCM_DIVCLK_DIVIDE)), + .CLKOUT5_PHASE (0.000), + .CLKOUT5_DUTY_CYCLE (0.500), + .CLKOUT5_USE_FINE_PS ("TRUE"), + .CLKOUT6_DIVIDE (MMCM_MULT_F/2), + .CLKOUT6_PHASE (0.000), + .CLKOUT6_DUTY_CYCLE (0.500), + .CLKOUT6_USE_FINE_PS ("FALSE"), + .CLKIN1_PERIOD (CLKOUT3_PERIOD_NS), + .REF_JITTER1 (0.000)) + mmcm_i + // Output clocks + (.CLKFBOUT (clk_pll_i), + .CLKFBOUTB (), + .CLKOUT0 (mmcm_clkout0), + .CLKOUT0B (), + .CLKOUT1 (mmcm_clkout1), + .CLKOUT1B (), + .CLKOUT2 (mmcm_clkout2), + .CLKOUT2B (), + .CLKOUT3 (mmcm_clkout3), + .CLKOUT3B (), + .CLKOUT4 (mmcm_clkout4), + .CLKOUT5 (mmcm_ps_clk_bufg_in), + .CLKOUT6 (clk_div2_bufg_in), + // Input clock control + .CLKFBIN (clk_bufg), // From BUFH network + .CLKIN1 (pll_clk3), // From PLL + .CLKIN2 (1'b0), + // Tied to always select the primary input clock + .CLKINSEL (1'b1), + // Ports for dynamic reconfiguration + .DADDR (7'h0), + .DCLK (1'b0), + .DEN (1'b0), + .DI (16'h0), + .DO (), + .DRDY (), + .DWE (1'b0), + // Ports for dynamic phase shift + .PSCLK (clk), + .PSEN (psen), + .PSINCDEC (psincdec), + .PSDONE (psdone), + // Other control and status signals + .LOCKED (MMCM_Locked_i), + .CLKINSTOPPED (), + .CLKFBSTOPPED (), + .PWRDWN (1'b0), + .RST (~pll_locked_i)); + + BUFG u_bufg_ui_addn_clk_0 + ( + .O (ui_addn_clk_0), + .I (mmcm_clkout0) + ); + + BUFG u_bufg_ui_addn_clk_1 + ( + .O (ui_addn_clk_1), + .I (mmcm_clkout1) + ); + + BUFG u_bufg_ui_addn_clk_2 + ( + .O (ui_addn_clk_2), + .I (mmcm_clkout2) + ); + + BUFG u_bufg_ui_addn_clk_3 + ( + .O (ui_addn_clk_3), + .I (mmcm_clkout3) + ); + + BUFG u_bufg_ui_addn_clk_4 + ( + .O (ui_addn_clk_4), + .I (mmcm_clkout4) + ); + + BUFG u_bufg_mmcm_ps_clk + ( + .O (mmcm_ps_clk), + .I (mmcm_ps_clk_bufg_in) + ); + + BUFG u_bufg_clk_div2 + ( + .O (clk_div2), + .I (clk_div2_bufg_in) + ); + end else begin: gen_mmcm + + MMCME2_ADV + #(.BANDWIDTH ("HIGH"), + .CLKOUT4_CASCADE ("FALSE"), + .COMPENSATION ("BUF_IN"), + .STARTUP_WAIT ("FALSE"), +// .DIVCLK_DIVIDE (1), + .DIVCLK_DIVIDE (MMCM_DIVCLK_DIVIDE), + .CLKFBOUT_MULT_F (MMCM_MULT_F), + .CLKFBOUT_PHASE (0.000), + .CLKFBOUT_USE_FINE_PS ("FALSE"), + .CLKOUT0_DIVIDE_F (((MMCM_MULT_F*2)/MMCM_DIVCLK_DIVIDE)), + .CLKOUT0_PHASE (0.000), + .CLKOUT0_DUTY_CYCLE (0.500), + .CLKOUT0_USE_FINE_PS ("TRUE"), + .CLKOUT1_DIVIDE (MMCM_MULT_F/2), + .CLKOUT1_PHASE (0.000), + .CLKOUT1_DUTY_CYCLE (0.500), + .CLKOUT1_USE_FINE_PS ("FALSE"), + .CLKIN1_PERIOD (CLKOUT3_PERIOD_NS), + .REF_JITTER1 (0.000)) + mmcm_i + // Output clocks + (.CLKFBOUT (clk_pll_i), + .CLKFBOUTB (), + .CLKOUT0 (mmcm_ps_clk_bufg_in), + .CLKOUT0B (), + .CLKOUT1 (clk_div2_bufg_in), + .CLKOUT1B (), + .CLKOUT2 (), + .CLKOUT2B (), + .CLKOUT3 (), + .CLKOUT3B (), + .CLKOUT4 (), + .CLKOUT5 (), + .CLKOUT6 (), + // Input clock control + .CLKFBIN (clk_bufg), // From BUFH network + .CLKIN1 (pll_clk3), // From PLL + .CLKIN2 (1'b0), + // Tied to always select the primary input clock + .CLKINSEL (1'b1), + // Ports for dynamic reconfiguration + .DADDR (7'h0), + .DCLK (1'b0), + .DEN (1'b0), + .DI (16'h0), + .DO (), + .DRDY (), + .DWE (1'b0), + // Ports for dynamic phase shift + .PSCLK (clk), + .PSEN (psen), + .PSINCDEC (psincdec), + .PSDONE (psdone), + // Other control and status signals + .LOCKED (MMCM_Locked_i), + .CLKINSTOPPED (), + .CLKFBSTOPPED (), + .PWRDWN (1'b0), + .RST (~pll_locked_i)); + + BUFG u_bufg_mmcm_ps_clk + ( + .O (mmcm_ps_clk), + .I (mmcm_ps_clk_bufg_in) + ); + + BUFG u_bufg_clk_div2 + ( + .O (clk_div2), + .I (clk_div2_bufg_in) + ); + + end // block: gen_mmcm + endgenerate + + //*************************************************************************** + // Generate poc_sample_pd. + // + // As the phase shift clocks precesses around kclk, it also precesses + // around the fabric clock. Noise may be generated as output of the + // IDDR is registered into the fabric clock domain. + // + // The mmcm_ps_clk signal runs at half the rate of the fabric clock. + // This means that there are two rising edges of fabric clock per mmcm_ps_clk. + // If we can guarantee that the POC uses the data sampled on the second + // fabric clock, then we are certain that the setup time to the second + // fabric clock is greater than 1 fabric clock cycle. + // + // To predict when the phase detctor output is from this second edge, we + // need to know two things. The initial phase of fabric clock and mmcm_ps_clk + // and the number of phase offsets set into the mmcm. The later is a + // trivial count of the PSEN signal. + // + // The former is a bit tricky because latching a clock with a clock is + // not well defined. This problem is solved by generating a signal + // the goes high on the first rising edge of mmcm_ps_clk. Logic in + // the fabric domain can look at this signal and then develop an analog + // the mmcm_ps_clk with zero offset. + // + // This all depends on the timing tools making the timing work when + // when the mmcm phase offset is zero. + // + // poc_sample_pd tells the POC when to sample the phase detector output. + // Setup from the IDDR to the fabric clock is always one plus some + // fraction of the fabric clock. + //*************************************************************************** + + localparam ONE = 1; + localparam integer TAPSPERFCLK = 56 * MMCM_MULT_F; + localparam TAPSPERFCLK_MINUS_ONE = TAPSPERFCLK - 1; + localparam QCNTR_WIDTH = clogb2(TAPSPERFCLK); + + function integer clogb2 (input integer size); // ceiling logb2 + begin + size = size - 1; + for (clogb2=1; size>1; clogb2=clogb2+1) + size = size >> 1; + end + endfunction // clogb2 + + reg [QCNTR_WIDTH-1:0] qcntr_ns, qcntr_r; + always @(posedge clk) qcntr_r <= #TCQ qcntr_ns; + + reg inv_poc_sample_ns, inv_poc_sample_r; + always @(posedge clk) inv_poc_sample_r <= #TCQ inv_poc_sample_ns; + + always @(*) begin + qcntr_ns = qcntr_r; + inv_poc_sample_ns = inv_poc_sample_r; + if (rstdiv0) begin + qcntr_ns = 'b0; + inv_poc_sample_ns = 'b0; + end else if (psen) begin + if (qcntr_r < TAPSPERFCLK_MINUS_ONE[QCNTR_WIDTH-1:0]) + qcntr_ns = (qcntr_r + ONE[QCNTR_WIDTH-1:0]); + else begin + qcntr_ns = {QCNTR_WIDTH{1'b0}}; + inv_poc_sample_ns = ~inv_poc_sample_r; + end + end + end + + // Be vewy vewy careful to make sure this path is aligned with the + // phase detector out pipeline. + reg first_rising_ps_clk_ns, first_rising_ps_clk_r; + always @(posedge mmcm_ps_clk) first_rising_ps_clk_r <= #TCQ first_rising_ps_clk_ns; + always @(*) first_rising_ps_clk_ns = ~rstdiv0; + + reg mmcm_hi0_ns, mmcm_hi0_r; + always @(posedge clk) mmcm_hi0_r <= #TCQ mmcm_hi0_ns; + always @(*) mmcm_hi0_ns = ~first_rising_ps_clk_r || ~mmcm_hi0_r; + + reg poc_sample_pd_ns, poc_sample_pd_r; + always @(*) poc_sample_pd_ns = inv_poc_sample_ns ^ mmcm_hi0_r; + always @(posedge clk) poc_sample_pd_r <= #TCQ poc_sample_pd_ns; + assign poc_sample_pd = poc_sample_pd_r; + + //*************************************************************************** + // Make sure logic acheives 90 degree setup time from rising mmcm_ps_clk + // to the appropriate edge of fabric clock + //*************************************************************************** + + //synthesis translate_off + generate + if ( tCK <= 2500 ) begin : check_ocal_timing + localparam CLK_PERIOD_PS = MMCM_VCO_PERIOD * MMCM_MULT_F; + localparam integer CLK_PERIOD_PS_DIV4 = CLK_PERIOD_PS/4; + + time rising_mmcm_ps_clk; + always @(posedge mmcm_ps_clk) rising_mmcm_ps_clk = $time(); + + time pdiff; // Not used, except in waveform plots. + always @(posedge clk) pdiff = $time() - rising_mmcm_ps_clk; + end + endgenerate + + //synthesis translate_on + + //*************************************************************************** + // RESET SYNCHRONIZATION DESCRIPTION: + // Various resets are generated to ensure that: + // 1. All resets are synchronously deasserted with respect to the clock + // domain they are interfacing to. There are several different clock + // domains - each one will receive a synchronized reset. + // 2. The reset deassertion order starts with deassertion of SYS_RST, + // followed by deassertion of resets for various parts of the design + // (see "RESET ORDER" below) based on the lock status of PLLE2s. + // RESET ORDER: + // 1. User deasserts SYS_RST + // 2. Reset PLLE2 and IDELAYCTRL + // 3. Wait for PLLE2 and IDELAYCTRL to lock + // 4. Release reset for all I/O primitives and internal logic + // OTHER NOTES: + // 1. Asynchronously assert reset. This way we can assert reset even if + // there is no clock (needed for things like 3-stating output buffers + // to prevent initial bus contention). Reset deassertion is synchronous. + //*************************************************************************** + + //***************************************************************** + // CLKDIV logic reset + //***************************************************************** + + // Wait for PLLE2 and IDELAYCTRL to lock before releasing reset + + // current O,25.0 unisim phaser_ref never locks. Need to find out why . + generate + if (MEM_TYPE == "DDR3" && tCK <= 1500) begin: rst_tmp_300_400 + assign rst_tmp = sys_rst_act_hi | ~iodelay_ctrl_rdy[1] | + ~ref_dll_lock | ~MMCM_Locked_i; + end else begin: rst_tmp_200 + assign rst_tmp = sys_rst_act_hi | ~iodelay_ctrl_rdy[0] | + ~ref_dll_lock | ~MMCM_Locked_i; + end + endgenerate + + always @(posedge clk_bufg or posedge rst_tmp) begin + if (rst_tmp) begin + rstdiv0_sync_r <= #TCQ {RST_DIV_SYNC_NUM-1{1'b1}}; + rstdiv0_sync_r1 <= #TCQ 1'b1 ; + end else begin + rstdiv0_sync_r <= #TCQ rstdiv0_sync_r << 1; + rstdiv0_sync_r1 <= #TCQ rstdiv0_sync_r[RST_DIV_SYNC_NUM-2]; + end + end + + assign rstdiv0 = rstdiv0_sync_r1 ; + +//IDDR rest + always @(posedge mmcm_ps_clk or posedge rst_tmp) begin + if (rst_tmp) begin + rst_sync_r <= #TCQ {RST_DIV_SYNC_NUM-1{1'b1}}; + rst_sync_r1 <= #TCQ 1'b1 ; + end else begin + rst_sync_r <= #TCQ rst_sync_r << 1; + rst_sync_r1 <= #TCQ rst_sync_r[RST_DIV_SYNC_NUM-2]; + end + end + + assign iddr_rst = rst_sync_r1 ; + +// Sync reset in the clk_div2 domain + always @(posedge clk_div2 or posedge rst_tmp) begin + if (rst_tmp) begin + rstdiv2_sync_r <= #TCQ {RST_DIV_SYNC_NUM-1{1'b1}}; + rstdiv2_sync_r1 <= #TCQ 1'b1 ; + end else begin + rstdiv2_sync_r <= #TCQ rstdiv2_sync_r << 1; + rstdiv2_sync_r1 <= #TCQ rstdiv2_sync_r[RST_DIV_SYNC_NUM-2]; + end + end + + assign rst_div2 = rstdiv2_sync_r1 ; + + generate + if (MEM_TYPE == "DDR3" && tCK <= 1500) begin: rst_tmp_phaser_ref_300_400 + assign rst_tmp_phaser_ref = sys_rst_act_hi | ~MMCM_Locked_i | ~iodelay_ctrl_rdy[1]; + end else begin: rst_tmp_phaser_ref_200 + assign rst_tmp_phaser_ref = sys_rst_act_hi | ~MMCM_Locked_i | ~iodelay_ctrl_rdy[0]; + end + endgenerate + + always @(posedge clk_bufg or posedge rst_tmp_phaser_ref) + if (rst_tmp_phaser_ref) + rst_phaser_ref_sync_r <= #TCQ {RST_DIV_SYNC_NUM{1'b1}}; + else + rst_phaser_ref_sync_r <= #TCQ rst_phaser_ref_sync_r << 1; + + assign rst_phaser_ref = rst_phaser_ref_sync_r[RST_DIV_SYNC_NUM-1]; + +endmodule diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_iodelay_ctrl.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_iodelay_ctrl.v new file mode 100644 index 0000000..ec50367 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_iodelay_ctrl.v @@ -0,0 +1,355 @@ +//***************************************************************************** +// (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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version: %version +// \ \ Application: MIG +// / / Filename: iodelay_ctrl.v +// /___/ /\ Date Last Modified: $Date: 2011/06/02 08:34:56 $ +// \ \ / \ Date Created: Wed Aug 16 2006 +// \___\/\___\ +// +//Device: 7 Series +//Design Name: DDR3 SDRAM +//Purpose: +// This module instantiates the IDELAYCTRL primitive, which continously +// calibrates the IODELAY elements in the region to account for varying +// environmental conditions. A 200MHz or 300MHz reference clock (depending +// on the desired IODELAY tap resolution) must be supplied +//Reference: +//Revision History: +//***************************************************************************** + +/****************************************************************************** +**$Id: iodelay_ctrl.v,v 1.1 2011/06/02 08:34:56 mishra Exp $ +**$Date: 2011/06/02 08:34:56 $ +**$Author: mishra $ +**$Revision: 1.1 $ +**$Source: /devl/xcs/repo/env/Databases/ip/src2/O/mig_7series_v1_3/data/dlib/7series/ddr3_sdram/verilog/rtl/clocking/iodelay_ctrl.v,v $ +******************************************************************************/ + +`timescale 1ps/1ps + +module mig_7series_v4_0_iodelay_ctrl # + ( + parameter TCQ = 100, + // clk->out delay (sim only) + parameter IODELAY_GRP0 = "IODELAY_MIG0", + // May be assigned unique name when + // multiple IP cores used in design + parameter IODELAY_GRP1 = "IODELAY_MIG1", + // May be assigned unique name when + // multiple IP cores used in design + parameter REFCLK_TYPE = "DIFFERENTIAL", + // Reference clock type + // "DIFFERENTIAL","SINGLE_ENDED" + // NO_BUFFER, USE_SYSTEM_CLOCK + parameter SYSCLK_TYPE = "DIFFERENTIAL", + // input clock type + // DIFFERENTIAL, SINGLE_ENDED, + // NO_BUFFER + parameter SYS_RST_PORT = "FALSE", + // "TRUE" - if pin is selected for sys_rst + // and IBUF will be instantiated. + // "FALSE" - if pin is not selected for sys_rst + parameter RST_ACT_LOW = 1, + // Reset input polarity + // (0 = active high, 1 = active low) + parameter DIFF_TERM_REFCLK = "TRUE", + // Differential Termination + parameter FPGA_SPEED_GRADE = 1, + // FPGA speed grade + parameter REF_CLK_MMCM_IODELAY_CTRL = "FALSE" + ) + ( + input clk_ref_p, + input clk_ref_n, + input clk_ref_i, + input sys_rst, + output [1:0] clk_ref, + output sys_rst_o, + output [1:0] iodelay_ctrl_rdy + ); + + // # of clock cycles to delay deassertion of reset. Needs to be a fairly + // high number not so much for metastability protection, but to give time + // for reset (i.e. stable clock cycles) to propagate through all state + // machines and to all control signals (i.e. not all control signals have + // resets, instead they rely on base state logic being reset, and the effect + // of that reset propagating through the logic). Need this because we may not + // be getting stable clock cycles while reset asserted (i.e. since reset + // depends on DCM lock status) + // COMMENTED, RC, 01/13/09 - causes pack error in MAP w/ larger # + localparam RST_SYNC_NUM = 15; + // localparam RST_SYNC_NUM = 25; + + wire clk_ref_ibufg; + wire clk_ref_mmcm_300; + wire clk_ref_mmcm_400; + wire mmcm_clkfbout; + wire mmcm_Locked; + wire [1:0] rst_ref; + reg [RST_SYNC_NUM-1:0] rst_ref_sync_r [1:0] /* synthesis syn_maxfan = 10 */; + wire rst_tmp_idelay; + wire sys_rst_act_hi; + + //*************************************************************************** + + // If the pin is selected for sys_rst in GUI, IBUF will be instantiated. + // If the pin is not selected in GUI, sys_rst signal is expected to be + // driven internally. + generate + if (SYS_RST_PORT == "TRUE") + IBUF u_sys_rst_ibuf + ( + .I (sys_rst), + .O (sys_rst_o) + ); + else + assign sys_rst_o = sys_rst; + endgenerate + + // Possible inversion of system reset as appropriate + assign sys_rst_act_hi = RST_ACT_LOW ? ~sys_rst_o: sys_rst_o; + + //*************************************************************************** + // 1) Input buffer for IDELAYCTRL reference clock - handle either a + // differential or single-ended input. Global clock buffer is used to + // drive the rest of FPGA logic. + // 2) For NO_BUFFER option, Reference clock will be driven from internal + // clock i.e., clock is driven from fabric. Input buffers and Global + // clock buffers will not be instaitaed. + // 3) For USE_SYSTEM_CLOCK, input buffer output of system clock will be used + // as the input reference clock. Global clock buffer is used to drive + // the rest of FPGA logic. + //*************************************************************************** + + generate + if (REFCLK_TYPE == "DIFFERENTIAL") begin: diff_clk_ref + IBUFGDS # + ( + .DIFF_TERM (DIFF_TERM_REFCLK), + .IBUF_LOW_PWR ("FALSE") + ) + u_ibufg_clk_ref + ( + .I (clk_ref_p), + .IB (clk_ref_n), + .O (clk_ref_ibufg) + ); + + end else if (REFCLK_TYPE == "SINGLE_ENDED") begin : se_clk_ref + IBUFG # + ( + .IBUF_LOW_PWR ("FALSE") + ) + u_ibufg_clk_ref + ( + .I (clk_ref_i), + .O (clk_ref_ibufg) + ); + + end else if ((REFCLK_TYPE == "NO_BUFFER") || + (REFCLK_TYPE == "USE_SYSTEM_CLOCK" && SYSCLK_TYPE == "NO_BUFFER")) begin : clk_ref_noibuf_nobuf + assign clk_ref_ibufg = clk_ref_i; + end else if (REFCLK_TYPE == "USE_SYSTEM_CLOCK" && SYSCLK_TYPE != "NO_BUFFER") begin : clk_ref_noibuf + assign clk_ref_ibufg = clk_ref_i; + end + endgenerate + + // reference clock 300MHz and 400MHz generation with MMCM + generate + if (REF_CLK_MMCM_IODELAY_CTRL == "TRUE") begin: clk_ref_mmcm_gen + + MMCME2_ADV + #(.BANDWIDTH ("HIGH"), + .CLKOUT4_CASCADE ("FALSE"), + .COMPENSATION ("INTERNAL"), + .STARTUP_WAIT ("FALSE"), + .DIVCLK_DIVIDE (1), + .CLKFBOUT_MULT_F (6), + .CLKFBOUT_PHASE (0.000), + .CLKFBOUT_USE_FINE_PS ("FALSE"), + .CLKOUT0_DIVIDE_F (4), + .CLKOUT0_PHASE (0.000), + .CLKOUT0_DUTY_CYCLE (0.500), + .CLKOUT0_USE_FINE_PS ("FALSE"), + .CLKOUT1_DIVIDE (3), + .CLKOUT1_PHASE (0.000), + .CLKOUT1_DUTY_CYCLE (0.500), + .CLKOUT1_USE_FINE_PS ("FALSE"), + .CLKIN1_PERIOD (5), + .REF_JITTER1 (0.000)) + mmcm_i + // Output clocks + (.CLKFBOUT (mmcm_clkfbout), + .CLKFBOUTB (), + .CLKOUT0 (clk_ref_mmcm_300), + .CLKOUT0B (), + .CLKOUT1 (clk_ref_mmcm_400), + .CLKOUT1B (), + .CLKOUT2 (), + .CLKOUT2B (), + .CLKOUT3 (), + .CLKOUT3B (), + .CLKOUT4 (), + .CLKOUT5 (), + .CLKOUT6 (), + // Input clock control + .CLKFBIN (mmcm_clkfbout), + .CLKIN1 (clk_ref_ibufg), + .CLKIN2 (1'b0), + // Tied to always select the primary input clock + .CLKINSEL (1'b1), + // Ports for dynamic reconfiguration + .DADDR (7'h0), + .DCLK (1'b0), + .DEN (1'b0), + .DI (16'h0), + .DO (), + .DRDY (), + .DWE (1'b0), + // Ports for dynamic phase shift + .PSCLK (1'b0), + .PSEN (1'b0), + .PSINCDEC (1'b0), + .PSDONE (), + // Other control and status signals + .LOCKED (mmcm_Locked), + .CLKINSTOPPED (), + .CLKFBSTOPPED (), + .PWRDWN (1'b0), + .RST (sys_rst_act_hi)); + end + endgenerate + + generate + if (REF_CLK_MMCM_IODELAY_CTRL == "TRUE") begin : clk_ref_300_400_en + if(FPGA_SPEED_GRADE == 1) begin: clk_ref_300 + BUFG u_bufg_clk_ref_300 + ( + .O (clk_ref[1]), + .I (clk_ref_mmcm_300) + ); + end else if (FPGA_SPEED_GRADE == 2 || FPGA_SPEED_GRADE == 3) begin: clk_ref_400 + BUFG u_bufg_clk_ref_400 + ( + .O (clk_ref[1]), + .I (clk_ref_mmcm_400) + ); + end + end + endgenerate + + generate + if ((REFCLK_TYPE == "DIFFERENTIAL") || + (REFCLK_TYPE == "SINGLE_ENDED") || + (REFCLK_TYPE == "USE_SYSTEM_CLOCK" && SYSCLK_TYPE != "NO_BUFFER")) begin: clk_ref_200 + BUFG u_bufg_clk_ref + ( + .O (clk_ref[0]), + .I (clk_ref_ibufg) + ); + end else begin: clk_ref_200_no_buffer + assign clk_ref[0] = clk_ref_i; + end + endgenerate + + //***************************************************************** + // IDELAYCTRL reset + // This assumes an external clock signal driving the IDELAYCTRL + // blocks. Otherwise, if a PLL drives IDELAYCTRL, then the PLL + // lock signal will need to be incorporated in this. + //***************************************************************** + + // Add PLL lock if PLL drives IDELAYCTRL in user design + assign rst_tmp_idelay = sys_rst_act_hi; + + generate + if (REF_CLK_MMCM_IODELAY_CTRL == "TRUE") begin: rst_ref_gen_1 + always @(posedge clk_ref[1] or posedge rst_tmp_idelay) + if (rst_tmp_idelay) + rst_ref_sync_r[1] <= #TCQ {RST_SYNC_NUM{1'b1}}; + else + rst_ref_sync_r[1] <= #TCQ rst_ref_sync_r[1] << 1; + + assign rst_ref[1] = rst_ref_sync_r[1][RST_SYNC_NUM-1]; + end + endgenerate + + always @(posedge clk_ref[0] or posedge rst_tmp_idelay) + if (rst_tmp_idelay) + rst_ref_sync_r[0] <= #TCQ {RST_SYNC_NUM{1'b1}}; + else + rst_ref_sync_r[0] <= #TCQ rst_ref_sync_r[0] << 1; + + assign rst_ref[0] = rst_ref_sync_r[0][RST_SYNC_NUM-1]; + + //***************************************************************** + + generate + if (REF_CLK_MMCM_IODELAY_CTRL == "TRUE") begin: idelayctrl_gen_1 + (* IODELAY_GROUP = IODELAY_GRP1 *) IDELAYCTRL u_idelayctrl_300_400 + ( + .RDY (iodelay_ctrl_rdy[1]), + .REFCLK (clk_ref[1]), + .RST (rst_ref[1]) + ); + end + endgenerate + + (* IODELAY_GROUP = IODELAY_GRP0 *) IDELAYCTRL u_idelayctrl_200 + ( + .RDY (iodelay_ctrl_rdy[0]), + .REFCLK (clk_ref[0]), + .RST (rst_ref[0]) + ); + +endmodule diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_poc_cc.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_poc_cc.v new file mode 100644 index 0000000..cac0016 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_poc_cc.v @@ -0,0 +1,203 @@ +//***************************************************************************** +// (c) Copyright 2009 - 2012 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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version:%version +// \ \ Application: MIG +// / / Filename: mig_7series_v4_0_poc_cc.v +// /___/ /\ Date Last Modified: $$ +// \ \ / \ Date Created:Tue 20 Jan 2014 +// \___\/\___\ +// +//Device: Virtex-7 +//Design Name: DDR3 SDRAM +//Purpose: Phaser out characterization and control. Logic to interface with +// Chipscope and control. Intended to support real time observation. Largely +// not generated for production implementations. +// +// Also generates debug bus. Concept is a dynamic portion that can be used +// to examine the POC while it is operating, and a logging portion that +// stores per lane results. +// +//Reference: +//Revision History: +//***************************************************************************** + +`timescale 1 ps / 1 ps + +module mig_7series_v4_0_poc_cc # + (parameter TCQ = 100, + parameter CCENABLE = 0, + parameter LANE_CNT_WIDTH = 2, + parameter PCT_SAMPS_SOLID = 95, + parameter SAMPCNTRWIDTH = 8, + parameter SAMPLES = 128, + parameter SMWIDTH = 2, + parameter TAPCNTRWIDTH = 7) + (/*AUTOARG*/ + // Outputs + samples, samps_solid_thresh, poc_error, dbg_poc, + // Inputs + psen, clk, rst, ktap_at_right_edge, ktap_at_left_edge, + mmcm_lbclk_edge_aligned, mmcm_edge_detect_done, fall_lead_right, + fall_trail_right, rise_lead_right, rise_trail_right, fall_lead_left, + fall_trail_left, rise_lead_left, rise_trail_left, fall_lead_center, + fall_trail_center, rise_lead_center, rise_trail_center, lane, + mmcm_edge_detect_rdy, poc_backup, sm, tap, run, run_end, + run_polarity, run_too_small, samp_cntr, samps_hi, samps_hi_held, + samps_zero, samps_one, run_ends, diff, left, right, window_center, + edge_center + ); + + // Remember SAMPLES is whole number counting. Zero corresponds to one sample. + localparam integer SAMPS_SOLID_THRESH = (SAMPLES+1) * PCT_SAMPS_SOLID * 0.01; + + output [SAMPCNTRWIDTH:0] samples, samps_solid_thresh; + input psen; + + input clk, rst; + input ktap_at_right_edge, ktap_at_left_edge; + + input mmcm_lbclk_edge_aligned; + wire reset_aligned_cnt = rst || ktap_at_right_edge || ktap_at_left_edge || mmcm_lbclk_edge_aligned; + + input mmcm_edge_detect_done; + reg mmcm_edge_detect_done_r; + always @(posedge clk) mmcm_edge_detect_done_r <= #TCQ mmcm_edge_detect_done; + wire done = mmcm_edge_detect_done && ~mmcm_edge_detect_done_r; + + + reg [6:0] aligned_cnt_r; + wire [6:0] aligned_cnt_ns = reset_aligned_cnt ? 7'b0 : aligned_cnt_r + {6'b0, done}; + always @(posedge clk) aligned_cnt_r <= #TCQ aligned_cnt_ns; + + reg poc_error_r; + wire poc_error_ns = ~rst && (aligned_cnt_r[6] || poc_error_r); + always @(posedge clk) poc_error_r <= #TCQ poc_error_ns; + output poc_error; + assign poc_error = poc_error_r; + + input [TAPCNTRWIDTH-1:0] fall_lead_right, fall_trail_right, rise_lead_right, rise_trail_right; + input [TAPCNTRWIDTH-1:0] fall_lead_left, fall_trail_left, rise_lead_left, rise_trail_left; + input [TAPCNTRWIDTH-1:0] fall_lead_center, fall_trail_center, rise_lead_center, rise_trail_center; + + + generate if (CCENABLE == 0) begin : no_characterization + assign samples = SAMPLES[SAMPCNTRWIDTH:0]; + assign samps_solid_thresh = SAMPS_SOLID_THRESH[SAMPCNTRWIDTH:0]; + end else begin : characterization + end endgenerate + + reg [1023:0] dbg_poc_r; + output [1023:0] dbg_poc; + assign dbg_poc = dbg_poc_r; + input [LANE_CNT_WIDTH-1:0] lane; + + input mmcm_edge_detect_rdy; + input poc_backup; + input [SMWIDTH-1:0] sm; + input [TAPCNTRWIDTH-1:0] tap; + input [TAPCNTRWIDTH-1:0] run; + input run_end; + input run_polarity; + input run_too_small; + input [SAMPCNTRWIDTH-1:0] samp_cntr; + input [SAMPCNTRWIDTH:0] samps_hi; + input [SAMPCNTRWIDTH:0] samps_hi_held; + input samps_zero, samps_one; + input [1:0] run_ends; + input [TAPCNTRWIDTH+1:0] diff; + + always @(*) begin + dbg_poc_r[99:0] = 'b0; + dbg_poc_r[1023:900] = 'b0; + dbg_poc_r[0] = mmcm_edge_detect_rdy; + dbg_poc_r[1] = mmcm_edge_detect_done; + dbg_poc_r[2] = ktap_at_right_edge; + dbg_poc_r[3] = ktap_at_left_edge; + dbg_poc_r[4] = mmcm_lbclk_edge_aligned; + dbg_poc_r[5] = poc_backup; + dbg_poc_r[6+:SMWIDTH] = sm; + dbg_poc_r[10+:TAPCNTRWIDTH] = tap; + dbg_poc_r[20+:TAPCNTRWIDTH] = run; + dbg_poc_r[30] = run_end; + dbg_poc_r[31] = run_polarity; + dbg_poc_r[32] = run_too_small; + dbg_poc_r[33+:SAMPCNTRWIDTH] = samp_cntr; + dbg_poc_r[49+:SAMPCNTRWIDTH+1] = samps_hi; + dbg_poc_r[66+:SAMPCNTRWIDTH+1] = samps_hi_held; + dbg_poc_r[83] = samps_zero; + dbg_poc_r[84] = samps_one; + dbg_poc_r[86:85] = run_ends; + dbg_poc_r[87+:TAPCNTRWIDTH+2] = diff; + end // always @ (*) + + input [TAPCNTRWIDTH-1:0] left, right; + input [TAPCNTRWIDTH:0] window_center, edge_center; + + reg [899:100] dbg_poc_ns; + always @(posedge clk) dbg_poc_r[899:100] <= #TCQ dbg_poc_ns; + + always @(*) begin + if (rst) dbg_poc_ns = 'b0; + else begin + dbg_poc_ns = dbg_poc_r[899:100]; + if (mmcm_edge_detect_rdy && lane < 8) begin + dbg_poc_ns[(lane+1)*100] = poc_backup; + dbg_poc_ns[(lane+1)*100+1] = dbg_poc_ns[(lane+1)*100+1] || run_too_small; + dbg_poc_ns[(lane+1)*100+10+:TAPCNTRWIDTH] = left; + dbg_poc_ns[(lane+1)*100+20+:TAPCNTRWIDTH] = right; + dbg_poc_ns[(lane+1)*100+30+:TAPCNTRWIDTH+1] = window_center; + dbg_poc_ns[(lane+1)*100+41+:TAPCNTRWIDTH+1] = edge_center; + end + end + end + +endmodule // mig_7series_v4_0_poc_cc diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_poc_edge_store.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_poc_edge_store.v new file mode 100644 index 0000000..2f25193 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_poc_edge_store.v @@ -0,0 +1,117 @@ +//***************************************************************************** +// (c) Copyright 2009 - 2012 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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version:%version +// \ \ Application: MIG +// / / Filename: mig_7series_v4_0_poc_meta.v +// /___/ /\ Date Last Modified: $$ +// \ \ / \ Date Created:Fri 24 Jan 2014 +// \___\/\___\ +// +//Device: Virtex-7 +//Design Name: DDR3 SDRAM +//Purpose: Phaser output calibration edge store. +//Reference: +//Revision History: +//***************************************************************************** + +`timescale 1 ps / 1 ps + +module mig_7series_v4_0_poc_edge_store # + (parameter TCQ = 100, + parameter TAPCNTRWIDTH = 7, + parameter TAPSPERKCLK = 112) + (/*AUTOARG*/ + // Outputs + fall_lead, fall_trail, rise_lead, rise_trail, + // Inputs + clk, run_polarity, run_end, select0, select1, tap, run + ); + + input clk; + + input run_polarity; + input run_end; + input select0; + input select1; + input [TAPCNTRWIDTH-1:0] tap; + input [TAPCNTRWIDTH-1:0] run; + + wire [TAPCNTRWIDTH:0] trailing_edge = run > tap ? tap + TAPSPERKCLK[TAPCNTRWIDTH-1:0] - run + : tap - run; + + wire run_end_this = run_end && select0 && select1; + + reg [TAPCNTRWIDTH-1:0] fall_lead_r, fall_trail_r, rise_lead_r, rise_trail_r; + output [TAPCNTRWIDTH-1:0] fall_lead, fall_trail, rise_lead, rise_trail; + assign fall_lead = fall_lead_r; + assign fall_trail = fall_trail_r; + assign rise_lead = rise_lead_r; + assign rise_trail = rise_trail_r; + + wire [TAPCNTRWIDTH-1:0] fall_lead_ns = run_end_this & run_polarity ? tap : fall_lead_r; + wire [TAPCNTRWIDTH-1:0] rise_trail_ns = run_end_this & run_polarity ? trailing_edge[TAPCNTRWIDTH-1:0] + : rise_trail_r; + wire [TAPCNTRWIDTH-1:0] rise_lead_ns = run_end_this & ~run_polarity ? tap : rise_lead_r; + wire [TAPCNTRWIDTH-1:0] fall_trail_ns = run_end_this & ~run_polarity ? trailing_edge[TAPCNTRWIDTH-1:0] + : fall_trail_r; + + always @(posedge clk) fall_lead_r <= #TCQ fall_lead_ns; + always @(posedge clk) fall_trail_r <= #TCQ fall_trail_ns; + always @(posedge clk) rise_lead_r <= #TCQ rise_lead_ns; + always @(posedge clk) rise_trail_r <= #TCQ rise_trail_ns; + +endmodule // mig_7series_v4_0_poc_edge_store + +// Local Variables: +// verilog-library-directories:(".") +// verilog-library-extensions:(".v") +// End: diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_poc_meta.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_poc_meta.v new file mode 100644 index 0000000..6e3490c --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_poc_meta.v @@ -0,0 +1,302 @@ +//***************************************************************************** +// (c) Copyright 2009 - 2012 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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version:%version +// \ \ Application: MIG +// / / Filename: mig_7series_v4_0_poc_meta.v +// /___/ /\ Date Last Modified: $$ +// \ \ / \ Date Created:Tue 15 Jan 2014 +// \___\/\___\ +// +//Device: Virtex-7 +//Design Name: DDR3 SDRAM +//Purpose: Phaser output calibration meta controller. +// +// Compute center of the window set up with with the ktap_left, +// ktap_right dance (hereafter "the window"). Also compute center of the +// edge (hereafter "the edge") to be aligned in the center +// of this window. +// +// Following the ktap_left/right dance, the to be centered edge is +// always left at the right edge of the window +// if SCANFROMRIGHT == 1, and the left edge otherwise. +// +// An assumption is the rise(0) case has a window wider than the noise on the +// edge. The noise case with the possibly narrow window +// will always be shifted by 90. And the fall(180) case is shifted by +// 90 twice. Hence when we start, we can assume the center of the +// edge is to the right/left of the the window center. +// +// The actual hardware does not necessarily monotonically appear to +// move the window centers. Because of noise, it is possible for the +// centered edge to move opposite the expected direction with a tap increment. +// +// This problem is solved by computing the absolute difference between +// the centers and the circular distance between the centers. These will +// be the same until the difference transits through zero. Then the circular +// difference will jump to almost the value of TAPSPERKCLK. +// +// The window center computation is done at 1/2 tap increments to maintain +// resolution through the divide by 2 for centering. +// +// There is a corner case of when the shift is greater than 180 degress. In +// this case the absolute difference and the circular difference will be +// unequal at the beginning of the alignment. This is solved by latching +// if they are equal at the end of each cycle. The completion must see +// that they were equal in the previous cycle, but are not equal in this cycle. +// +// Since the phaser out steps are of unknown size, it is possible to overshoot +// the center. The previous difference is recorded and if its less than the current +// difference, poc_backup is driven high. +// +//Reference: +//Revision History: +//***************************************************************************** + +`timescale 1 ps / 1 ps + +module mig_7series_v4_0_poc_meta # + (parameter SCANFROMRIGHT = 0, + parameter TCQ = 100, + parameter TAPCNTRWIDTH = 7, + parameter TAPSPERKCLK = 112) + (/*AUTOARG*/ + // Outputs + run_ends, mmcm_edge_detect_done, edge_center, left, right, + window_center, diff, poc_backup, mmcm_lbclk_edge_aligned, + // Inputs + rst, clk, mmcm_edge_detect_rdy, run_too_small, run, run_end, + run_polarity, rise_lead_right, rise_trail_left, rise_lead_center, + rise_trail_center, rise_trail_right, rise_lead_left, ninety_offsets, + use_noise_window, ktap_at_right_edge, ktap_at_left_edge + ); + + localparam NINETY = TAPSPERKCLK/4; + + function [TAPCNTRWIDTH-1:0] offset (input [TAPCNTRWIDTH-1:0] a, + input [1:0] b, + input integer base); + integer offset_ii; + begin + offset_ii = (a + b * NINETY) < base + ? (a + b * NINETY) + : (a + b * NINETY - base); + offset = offset_ii[TAPCNTRWIDTH-1:0]; + end + endfunction // offset + + function [TAPCNTRWIDTH-1:0] mod_sub (input [TAPCNTRWIDTH-1:0] a, + input [TAPCNTRWIDTH-1:0] b, + input integer base); + begin + mod_sub = (a>=b) ? a-b : a+base-b; + end + endfunction // mod_sub + + function [TAPCNTRWIDTH:0] center (input [TAPCNTRWIDTH-1:0] left, + input [TAPCNTRWIDTH-1:0] diff, + input integer base); + integer center_ii; + begin + center_ii = ({left, 1'b0} + diff < base * 2) + ? {left, 1'b0} + diff + 32'h0 + : {left, 1'b0} + diff - base * 2; + center = center_ii[TAPCNTRWIDTH:0]; + end + endfunction // center + + input rst; + input clk; + + + input mmcm_edge_detect_rdy; + + reg [1:0] run_ends_r; + + input run_too_small; + reg run_too_small_r1, run_too_small_r2, run_too_small_r3; + + always @ (posedge clk) run_too_small_r1 <= #TCQ run_too_small & (run_ends_r == 'd1); //align with run_end_r1; + always @ (posedge clk) run_too_small_r2 <= #TCQ run_too_small_r1; + always @ (posedge clk) run_too_small_r3 <= #TCQ run_too_small_r2; + + wire reset_run_ends = rst || ~mmcm_edge_detect_rdy || run_too_small_r3 ; + + // This input used only for the SVA. + input [TAPCNTRWIDTH-1:0] run; + + input run_end; + reg run_end_r, run_end_r1, run_end_r2, run_end_r3; + always @(posedge clk) run_end_r <= #TCQ run_end; + always @(posedge clk) run_end_r1 <= #TCQ run_end_r; + always @(posedge clk) run_end_r2 <= #TCQ run_end_r1; + always @(posedge clk) run_end_r3 <= #TCQ run_end_r2; + + input run_polarity; + reg run_polarity_held_ns, run_polarity_held_r; + always @(posedge clk) run_polarity_held_r <= #TCQ run_polarity_held_ns; + always @(*) run_polarity_held_ns = run_end ? run_polarity : run_polarity_held_r; + + reg [1:0] run_ends_ns; + always @(posedge clk) run_ends_r <= #TCQ run_ends_ns; + always @(*) begin + run_ends_ns = run_ends_r; + if (reset_run_ends) run_ends_ns = 2'b0; + else case (run_ends_r) + 2'b00 : run_ends_ns = run_ends_r + {1'b0, run_end_r3 && run_polarity_held_r}; + 2'b01, 2'b10 : run_ends_ns = run_ends_r + {1'b0, run_end_r3}; + endcase // case (run_ends_r) + end // always @ begin + output [1:0] run_ends; + assign run_ends = run_ends_r; + + reg done_r; + wire done_ns = mmcm_edge_detect_rdy && &run_ends_r; + always @(posedge clk) done_r <= #TCQ done_ns; + output mmcm_edge_detect_done; + assign mmcm_edge_detect_done = done_r; + + input [TAPCNTRWIDTH-1:0] rise_lead_right; + input [TAPCNTRWIDTH-1:0] rise_trail_left; + input [TAPCNTRWIDTH-1:0] rise_lead_center; + input [TAPCNTRWIDTH-1:0] rise_trail_center; + input [TAPCNTRWIDTH-1:0] rise_trail_right; + input [TAPCNTRWIDTH-1:0] rise_lead_left; + + input [1:0] ninety_offsets; + wire [1:0] offsets = SCANFROMRIGHT == 1 ? ninety_offsets : 2'b00 - ninety_offsets; + + wire [TAPCNTRWIDTH-1:0] rise_lead_center_offset_ns = offset(rise_lead_center, offsets, TAPSPERKCLK); + wire [TAPCNTRWIDTH-1:0] rise_trail_center_offset_ns = offset(rise_trail_center, offsets, TAPSPERKCLK); + reg [TAPCNTRWIDTH-1:0] rise_lead_center_offset_r, rise_trail_center_offset_r; + always @(posedge clk) rise_lead_center_offset_r <= #TCQ rise_lead_center_offset_ns; + always @(posedge clk) rise_trail_center_offset_r <= #TCQ rise_trail_center_offset_ns; + + wire [TAPCNTRWIDTH-1:0] edge_diff_ns = mod_sub(rise_trail_center_offset_r, rise_lead_center_offset_r, TAPSPERKCLK); + reg [TAPCNTRWIDTH-1:0] edge_diff_r; + always @(posedge clk) edge_diff_r <= #TCQ edge_diff_ns; + + wire [TAPCNTRWIDTH:0] edge_center_ns = center(rise_lead_center_offset_r, edge_diff_r, TAPSPERKCLK); + reg [TAPCNTRWIDTH:0] edge_center_r; + always @(posedge clk) edge_center_r <= #TCQ edge_center_ns; + output [TAPCNTRWIDTH:0] edge_center; + assign edge_center = edge_center_r; + + input use_noise_window; + output [TAPCNTRWIDTH-1:0] left, right; + assign left = use_noise_window ? rise_lead_left : rise_trail_left; + assign right = use_noise_window ? rise_trail_right : rise_lead_right; + + wire [TAPCNTRWIDTH-1:0] center_diff_ns = mod_sub(right, left, TAPSPERKCLK); + reg [TAPCNTRWIDTH-1:0] center_diff_r; + always @(posedge clk) center_diff_r <= #TCQ center_diff_ns; + + wire [TAPCNTRWIDTH:0] window_center_ns = center(left, center_diff_r, TAPSPERKCLK); + reg [TAPCNTRWIDTH:0] window_center_r; + always @(posedge clk) window_center_r <= #TCQ window_center_ns; + output [TAPCNTRWIDTH:0] window_center; + assign window_center = window_center_r; + + localparam TAPSPERKCLKX2 = TAPSPERKCLK * 2; + + wire [TAPCNTRWIDTH+1:0] left_center = {1'b0, SCANFROMRIGHT == 1 ? window_center_r : edge_center_r}; + wire [TAPCNTRWIDTH+1:0] right_center = {1'b0, SCANFROMRIGHT == 1 ? edge_center_r : window_center_r}; + + wire [TAPCNTRWIDTH+1:0] diff_ns = right_center >= left_center + ? right_center - left_center + : right_center + TAPSPERKCLKX2[TAPCNTRWIDTH+1:0] - left_center; + + reg [TAPCNTRWIDTH+1:0] diff_r; + always @(posedge clk) diff_r <= #TCQ diff_ns; + output [TAPCNTRWIDTH+1:0] diff; + assign diff = diff_r; + + wire [TAPCNTRWIDTH+1:0] abs_diff = diff_r > TAPSPERKCLKX2[TAPCNTRWIDTH+1:0]/2 + ? TAPSPERKCLKX2[TAPCNTRWIDTH+1:0] - diff_r + : diff_r; + + reg [TAPCNTRWIDTH+1:0] prev_ns, prev_r; + always @(posedge clk) prev_r <= #TCQ prev_ns; + always @(*) prev_ns = done_ns ? diff_r : prev_r; + + input ktap_at_right_edge; + input ktap_at_left_edge; + + wire centering = !(ktap_at_right_edge || ktap_at_left_edge); + wire diffs_eq = abs_diff == diff_r; + reg diffs_eq_ns, diffs_eq_r; + always @(*) diffs_eq_ns = centering && ((done_r && done_ns) ? diffs_eq : diffs_eq_r); + always @(posedge clk) diffs_eq_r <= #TCQ diffs_eq_ns; + + reg edge_aligned_r; + reg prev_valid_ns, prev_valid_r; + always @(posedge clk) prev_valid_r <= #TCQ prev_valid_ns; + always @(*) prev_valid_ns = (~rst && ~ktap_at_right_edge && ~ktap_at_left_edge && ~edge_aligned_r) && prev_valid_r | done_ns; + + wire indicate_alignment = ~rst && centering && done_ns; + wire edge_aligned_ns = indicate_alignment && (~|diff_r || ~diffs_eq & diffs_eq_r); + always @(posedge clk) edge_aligned_r <= #TCQ edge_aligned_ns; + + reg poc_backup_r; + wire poc_backup_ns = edge_aligned_ns && abs_diff > prev_r; + always @(posedge clk) poc_backup_r <= #TCQ poc_backup_ns; + output poc_backup; + assign poc_backup = poc_backup_r; + + output mmcm_lbclk_edge_aligned; + assign mmcm_lbclk_edge_aligned = edge_aligned_r; + +endmodule // mig_7series_v4_0_poc_meta + +// Local Variables: +// verilog-library-directories:(".") +// verilog-library-extensions:(".v") +// End: diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_poc_pd.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_poc_pd.v new file mode 100644 index 0000000..6fd4667 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_poc_pd.v @@ -0,0 +1,131 @@ +//***************************************************************************** +// (c) Copyright 2009 - 2012 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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version:%version +// \ \ Application: MIG +// / / Filename: mig_7series_v4_0_poc_pd.v +// /___/ /\ Date Last Modified: $$ +// \ \ / \ Date Created:Tue 15 Jan 2014 +// \___\/\___\ +// +//Device: Virtex-7 +//Design Name: DDR3 SDRAM +//Purpose: IDDR used as phase detector. The pos_edge and neg_edge stuff +// prevents any noise that could happen when the phase shift clock is very +// nearly aligned to the fabric clock. +//Reference: +//Revision History: +//***************************************************************************** + +`timescale 1 ps / 1 ps + +module mig_7series_v4_0_poc_pd # + (parameter POC_USE_METASTABLE_SAMP = "FALSE", + parameter SIM_CAL_OPTION = "NONE", + parameter TCQ = 100) + (/*AUTOARG*/ + // Outputs + pd_out, + // Inputs + iddr_rst, clk, kclk, mmcm_ps_clk + ); + + input iddr_rst; + input clk; + input kclk; + input mmcm_ps_clk; + + wire q1; + IDDR # + (.DDR_CLK_EDGE ("OPPOSITE_EDGE"), + .INIT_Q1 (1'b0), + .INIT_Q2 (1'b0), + .SRTYPE ("SYNC")) + u_phase_detector + (.Q1 (q1), + .Q2 (), + .C (mmcm_ps_clk), + .CE (1'b1), + .D (kclk), + .R (iddr_rst), + .S (1'b0)); + + // Path from q1 to xxx_edge_samp must be constrained to be less than 1/4 cycle. FIXME + + reg pos_edge_samp; + + generate if (SIM_CAL_OPTION == "NONE" || POC_USE_METASTABLE_SAMP == "TRUE") begin : no_eXes + always @(posedge clk) pos_edge_samp <= #TCQ q1; + end else begin : eXes + reg q1_delayed; + reg rising_clk_seen; + always @(posedge mmcm_ps_clk) begin + rising_clk_seen <= 1'b0; + q1_delayed <= 1'bx; + end + always @(posedge clk) begin + rising_clk_seen = 1'b1; + if (rising_clk_seen) q1_delayed <= q1; + end + always @(posedge clk) begin + pos_edge_samp <= q1_delayed; + end + end endgenerate + + reg pd_out_r; + always @(posedge clk) pd_out_r <= #TCQ pos_edge_samp; + + output pd_out; + assign pd_out = pd_out_r; + + +endmodule // mic_7series_v4_0_poc_pd + diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_poc_tap_base.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_poc_tap_base.v new file mode 100644 index 0000000..56146db --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_poc_tap_base.v @@ -0,0 +1,301 @@ +//***************************************************************************** +// (c) Copyright 2009 - 2012 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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version:%version +// \ \ Application: MIG +// / / Filename: mig_7series_v4_0_poc_tap_base.v +// /___/ /\ Date Last Modified: $$ +// \ \ / \ Date Created:Tue 15 Jan 2014 +// \___\/\___\ +// +//Device: Virtex-7 +//Design Name: DDR3 SDRAM +//Purpose: All your taps are belong to us. +// +//In general, this block should be able to start up with a random initialization of +//the various counters. But its probably easier, more normative and quicker time to solution +//to just initialize to zero with rst. +// +// Following deassertion of reset, endlessly increments the MMCM delay with PSEN. For +// each MMCM tap it samples the phase detector output a programmable number of times. +// When the sampling count is achieved, PSEN is pulsed and sampling of the next MMCM +// tap begins. +// +// Following a PSEN, sampling pauses for MMCM_SAMP_WAIT clocks. This is workaround +// for a bug in the MMCM where its output may have noise for a period following +// the PSEN. +// +// Samples are taken every other fabric clock. This is because the MMCM phase shift +// clock operates at half the fabric clock. The reason for this is unknown. +// +// At the end of the sampling period, a filtering step is implemented. samps_solid_thresh +// is the minumum number of samples that must be seen to declare a solid zero or one. If +// neithr the one and zero samples cross this threshold, then the sampple is declared fuzz. +// +// A "run_polarity" bit is maintained. It is set appropriately whenever a solid sample +// is observed. +// +// A "run" counter is maintained. If the current sample is fuzz, or opposite polarity +// from a previous sample, then the run counter is reset. If the current sample is the +// same polarity run_polarity, then the run counter is incremented. +// +// If a run_polarity reversal or fuzz is observed and the run counter is not zero +// then the run_end strobe is pulsed. +// +//Reference: +//Revision History: +//***************************************************************************** + +`timescale 1 ps / 1 ps + +module mig_7series_v4_0_poc_tap_base # + (parameter MMCM_SAMP_WAIT = 10, + parameter POC_USE_METASTABLE_SAMP = "FALSE", + parameter TCQ = 100, + parameter SAMPCNTRWIDTH = 8, + parameter SMWIDTH = 2, + parameter TAPCNTRWIDTH = 7, + parameter TAPSPERKCLK = 112) + (/*AUTOARG*/ + // Outputs + psincdec, psen, run, run_end, run_too_small, run_polarity, + samp_cntr, samps_hi, samps_hi_held, tap, sm, samps_zero, samps_one, + // Inputs + pd_out, clk, samples, samps_solid_thresh, psdone, rst, + poc_sample_pd + ); + + + function integer clogb2 (input integer size); // ceiling logb2 + begin + size = size - 1; + for (clogb2=1; size>1; clogb2=clogb2+1) + size = size >> 1; + end + endfunction // clogb2 + + input pd_out; + input clk; + input [SAMPCNTRWIDTH:0] samples, samps_solid_thresh; + input psdone; + input rst; + + localparam ONE = 1; + + localparam SAMP_WAIT_WIDTH = clogb2(MMCM_SAMP_WAIT); + reg [SAMP_WAIT_WIDTH-1:0] samp_wait_ns, samp_wait_r; + always @(posedge clk) samp_wait_r <= #TCQ samp_wait_ns; + + reg pd_out_r; + always @(posedge clk) pd_out_r <= #TCQ pd_out; + wire pd_out_sel = POC_USE_METASTABLE_SAMP == "TRUE" ? pd_out_r : pd_out; + + output psincdec; + assign psincdec = 1'b1; + output psen; + reg psen_int; + assign psen = psen_int; + + reg [TAPCNTRWIDTH-1:0] run_r; + reg [TAPCNTRWIDTH-1:0] run_ns; + always @(posedge clk) run_r <= #TCQ run_ns; + output [TAPCNTRWIDTH-1:0] run; + assign run = run_r; + + output run_end; + reg run_end_int; + assign run_end = run_end_int; + + output run_too_small; + reg run_too_small_r, run_too_small_ns; + always @(*) run_too_small_ns = run_end && (run < TAPSPERKCLK/4); + always @(posedge clk) run_too_small_r <= #TCQ run_too_small_ns; + assign run_too_small = run_too_small_r; + + reg run_polarity_r; + reg run_polarity_ns; + always @(posedge clk) run_polarity_r <= #TCQ run_polarity_ns; + output run_polarity; + assign run_polarity = run_polarity_r; + + reg [SAMPCNTRWIDTH-1:0] samp_cntr_r; + reg [SAMPCNTRWIDTH-1:0] samp_cntr_ns; + always @(posedge clk) samp_cntr_r <= #TCQ samp_cntr_ns; + output [SAMPCNTRWIDTH-1:0] samp_cntr; + assign samp_cntr = samp_cntr_r; + + reg [SAMPCNTRWIDTH:0] samps_hi_r; + reg [SAMPCNTRWIDTH:0] samps_hi_ns; + always @(posedge clk) samps_hi_r <= #TCQ samps_hi_ns; + output [SAMPCNTRWIDTH:0] samps_hi; + assign samps_hi = samps_hi_r; + + reg [SAMPCNTRWIDTH:0] samps_hi_held_r; + reg [SAMPCNTRWIDTH:0] samps_hi_held_ns; + always @(posedge clk) samps_hi_held_r <= #TCQ samps_hi_held_ns; + output [SAMPCNTRWIDTH:0] samps_hi_held; + assign samps_hi_held = samps_hi_held_r; + + reg [TAPCNTRWIDTH-1:0] tap_ns, tap_r; + always @(posedge clk) tap_r <= #TCQ tap_ns; + output [TAPCNTRWIDTH-1:0] tap; + assign tap = tap_r; + + reg [SMWIDTH-1:0] sm_ns; + reg [SMWIDTH-1:0] sm_r; + always @(posedge clk) sm_r <= #TCQ sm_ns; + output [SMWIDTH-1:0] sm; + assign sm = sm_r; + + reg samps_zero_ns, samps_zero_r, samps_one_ns, samps_one_r; + always @(posedge clk) samps_zero_r <= #TCQ samps_zero_ns; + always @(posedge clk) samps_one_r <= #TCQ samps_one_ns; + output samps_zero, samps_one; + assign samps_zero = samps_zero_r; + assign samps_one = samps_one_r; + + // Interesting corner case... what if both samps_zero and samps_one are + // hi? Could happen for small sample counts and reasonable values of + // PCT_SAMPS_SOLID. Doesn't affect samps_solid. run_polarity assignment + // consistently breaks tie with samps_one_r. + wire [SAMPCNTRWIDTH:0] samps_lo = samples + ONE[SAMPCNTRWIDTH:0] - samps_hi_r; + always @(*) begin + samps_zero_ns = samps_zero_r; + samps_one_ns = samps_one_r; + samps_zero_ns = samps_lo >= samps_solid_thresh; + samps_one_ns = samps_hi_r >= samps_solid_thresh; + end // always @ begin + wire new_polarity = run_polarity_ns ^ run_polarity_r; + + input poc_sample_pd; + + always @(*) begin + + if (rst == 1'b1) begin + + // RESET next states + psen_int = 1'b0; + sm_ns = /*AUTOLINK("SAMPLE")*/2'd0; + run_polarity_ns = 1'b0; + run_ns = {TAPCNTRWIDTH{1'b0}}; + run_end_int = 1'b0; + samp_cntr_ns = {SAMPCNTRWIDTH{1'b0}}; + samps_hi_ns = {SAMPCNTRWIDTH+1{1'b0}}; + tap_ns = {TAPCNTRWIDTH{1'b0}}; + samp_wait_ns = MMCM_SAMP_WAIT[SAMP_WAIT_WIDTH-1:0]; + samps_hi_held_ns = {SAMPCNTRWIDTH+1{1'b0}}; + end else begin + + // Default next states; + psen_int = 1'b0; + sm_ns = sm_r; + run_polarity_ns = run_polarity_r; + run_ns = run_r; + run_end_int = 1'b0; + samp_cntr_ns = samp_cntr_r; + samps_hi_ns = samps_hi_r; + tap_ns = tap_r; + samp_wait_ns = samp_wait_r; + if (|samp_wait_r) samp_wait_ns = samp_wait_r - ONE[SAMP_WAIT_WIDTH-1:0]; + samps_hi_held_ns = samps_hi_held_r; + +// State based actions and next states. + case (sm_r) + /*AL("SAMPLE")*/2'd0: begin + if (~|samp_wait_r && poc_sample_pd | POC_USE_METASTABLE_SAMP == "TRUE") begin + if (POC_USE_METASTABLE_SAMP == "TRUE") samp_wait_ns = ONE[SAMP_WAIT_WIDTH-1:0]; + if ({1'b0, samp_cntr_r} == samples) sm_ns = /*AK("COMPUTE")*/2'd1; + samps_hi_ns = samps_hi_r + {{SAMPCNTRWIDTH{1'b0}}, pd_out_sel}; + samp_cntr_ns = samp_cntr_r + ONE[SAMPCNTRWIDTH-1:0]; + end + end + + /*AL("COMPUTE")*/2'd1:begin + sm_ns = /*AK("PSEN")*/2'd2; + end + + /*AL("PSEN")*/2'd2:begin + sm_ns = /*AK("PSDONE_WAIT")*/2'd3; + psen_int = 1'b1; + samp_cntr_ns = {SAMPCNTRWIDTH{1'b0}}; + samps_hi_ns = {SAMPCNTRWIDTH+1{1'b0}}; + samps_hi_held_ns = samps_hi_r; + tap_ns = (tap_r < TAPSPERKCLK[TAPCNTRWIDTH-1:0] - ONE[TAPCNTRWIDTH-1:0]) + ? tap_r + ONE[TAPCNTRWIDTH-1:0] + : {TAPCNTRWIDTH{1'b0}}; + + if (run_polarity_r) begin + if (samps_zero_r) run_polarity_ns = 1'b0; + end else begin + if (samps_one_r) run_polarity_ns = 1'b1; + end + if (new_polarity) begin + run_ns ={TAPCNTRWIDTH{1'b0}}; + run_end_int = 1'b1; + end else run_ns = run_r + ONE[TAPCNTRWIDTH-1:0]; + end + + /*AL("PSDONE_WAIT")*/2'd3:begin + samp_wait_ns = MMCM_SAMP_WAIT[SAMP_WAIT_WIDTH-1:0] - ONE[SAMP_WAIT_WIDTH-1:0]; + if (psdone) sm_ns = /*AK("SAMPLE")*/2'd0; + end + + endcase // case (sm_r) + end // else: !if(rst == 1'b1) + end // always @ (*) + +endmodule // mig_7series_v4_0_poc_tap_base + +// Local Variables: +// verilog-library-directories:(".") +// verilog-library-extensions:(".v") +// verilog-autolabel-prefix: "2'd" +// End: diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_poc_top.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_poc_top.v new file mode 100644 index 0000000..ab75547 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_poc_top.v @@ -0,0 +1,370 @@ +//***************************************************************************** +// (c) Copyright 2009 - 2012 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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version:%version +// \ \ Application: MIG +// / / Filename: mig_7series_v4_0_poc_top.v +// /___/ /\ Date Last Modified: $$ +// \ \ / \ Date Created:Tue 15 Jan 2014 +// \___\/\___\ +// +//Device: Virtex-7 +//Design Name: DDR3 SDRAM +//Purpose: Phaser out calibration top. +//Reference: +//Revision History: +//***************************************************************************** + +`timescale 1 ps / 1 ps + +module mig_7series_v4_0_poc_top # + (parameter LANE_CNT_WIDTH = 2, + parameter MMCM_SAMP_WAIT = 10, + parameter PCT_SAMPS_SOLID = 95, + parameter POC_USE_METASTABLE_SAMP = "FALSE", + parameter TCQ = 100, + parameter CCENABLE = 0, + parameter SCANFROMRIGHT = 0, + parameter SAMPCNTRWIDTH = 8, + parameter SAMPLES = 128, + parameter TAPCNTRWIDTH = 7, + parameter TAPSPERKCLK =112) + (/*AUTOARG*/ + // Outputs + psincdec, poc_error, dbg_poc, psen, rise_lead_right, + rise_trail_right, mmcm_edge_detect_done, mmcm_lbclk_edge_aligned, + poc_backup, + // Inputs + use_noise_window, rst, psdone, poc_sample_pd, pd_out, + ninety_offsets, mmcm_edge_detect_rdy, lane, ktap_at_right_edge, + ktap_at_left_edge, clk + ); + + localparam SMWIDTH = 2; + + /*AUTOINPUT*/ + // Beginning of automatic inputs (from unused autoinst inputs) + input clk; // To u_poc_tap_base of mig_7series_v4_0_poc_tap_base.v, ... + input ktap_at_left_edge; // To u_poc_meta of mig_7series_v4_0_poc_meta.v, ... + input ktap_at_right_edge; // To u_poc_meta of mig_7series_v4_0_poc_meta.v, ... + input [LANE_CNT_WIDTH-1:0] lane; // To u_poc_cc of mig_7series_v4_0_poc_cc.v + input mmcm_edge_detect_rdy; // To u_poc_meta of mig_7series_v4_0_poc_meta.v, ... + input [1:0] ninety_offsets; // To u_poc_meta of mig_7series_v4_0_poc_meta.v + input pd_out; // To u_poc_tap_base of mig_7series_v4_0_poc_tap_base.v + input poc_sample_pd; // To u_poc_tap_base of mig_7series_v4_0_poc_tap_base.v + input psdone; // To u_poc_tap_base of mig_7series_v4_0_poc_tap_base.v + input rst; // To u_poc_tap_base of mig_7series_v4_0_poc_tap_base.v, ... + input use_noise_window; // To u_poc_meta of mig_7series_v4_0_poc_meta.v + // End of automatics + /*AUTOOUTPUT*/ + // Beginning of automatic outputs (from unused autoinst outputs) + output [1023:0] dbg_poc; // From u_poc_cc of mig_7series_v4_0_poc_cc.v + output poc_error; // From u_poc_cc of mig_7series_v4_0_poc_cc.v + output psincdec; // From u_poc_tap_base of mig_7series_v4_0_poc_tap_base.v + // End of automatics + /*AUTOwire*/ + // Beginning of automatic wires (for undeclared instantiated-module outputs) + wire [TAPCNTRWIDTH+1:0] diff; // From u_poc_meta of mig_7series_v4_0_poc_meta.v + wire [TAPCNTRWIDTH:0] edge_center; // From u_poc_meta of mig_7series_v4_0_poc_meta.v + wire [TAPCNTRWIDTH-1:0] fall_lead_center; // From u_edge_center of mig_7series_v4_0_poc_edge_store.v + wire [TAPCNTRWIDTH-1:0] fall_lead_left; // From u_edge_left of mig_7series_v4_0_poc_edge_store.v + wire [TAPCNTRWIDTH-1:0] fall_lead_right; // From u_edge_right of mig_7series_v4_0_poc_edge_store.v + wire [TAPCNTRWIDTH-1:0] fall_trail_center; // From u_edge_center of mig_7series_v4_0_poc_edge_store.v + wire [TAPCNTRWIDTH-1:0] fall_trail_left; // From u_edge_left of mig_7series_v4_0_poc_edge_store.v + wire [TAPCNTRWIDTH-1:0] fall_trail_right; // From u_edge_right of mig_7series_v4_0_poc_edge_store.v + wire [TAPCNTRWIDTH-1:0] left; // From u_poc_meta of mig_7series_v4_0_poc_meta.v + wire [TAPCNTRWIDTH-1:0] right; // From u_poc_meta of mig_7series_v4_0_poc_meta.v + wire [TAPCNTRWIDTH-1:0] rise_lead_center; // From u_edge_center of mig_7series_v4_0_poc_edge_store.v + wire [TAPCNTRWIDTH-1:0] rise_lead_left; // From u_edge_left of mig_7series_v4_0_poc_edge_store.v + wire [TAPCNTRWIDTH-1:0] rise_trail_center; // From u_edge_center of mig_7series_v4_0_poc_edge_store.v + wire [TAPCNTRWIDTH-1:0] rise_trail_left; // From u_edge_left of mig_7series_v4_0_poc_edge_store.v + wire [TAPCNTRWIDTH-1:0] run; // From u_poc_tap_base of mig_7series_v4_0_poc_tap_base.v + wire run_end; // From u_poc_tap_base of mig_7series_v4_0_poc_tap_base.v + wire [1:0] run_ends; // From u_poc_meta of mig_7series_v4_0_poc_meta.v + wire run_polarity; // From u_poc_tap_base of mig_7series_v4_0_poc_tap_base.v + wire run_too_small; // From u_poc_tap_base of mig_7series_v4_0_poc_tap_base.v + wire [SAMPCNTRWIDTH-1:0] samp_cntr; // From u_poc_tap_base of mig_7series_v4_0_poc_tap_base.v + wire [SAMPCNTRWIDTH:0] samples; // From u_poc_cc of mig_7series_v4_0_poc_cc.v + wire [SAMPCNTRWIDTH:0] samps_hi; // From u_poc_tap_base of mig_7series_v4_0_poc_tap_base.v + wire [SAMPCNTRWIDTH:0] samps_hi_held; // From u_poc_tap_base of mig_7series_v4_0_poc_tap_base.v + wire samps_one; // From u_poc_tap_base of mig_7series_v4_0_poc_tap_base.v + wire [SAMPCNTRWIDTH:0] samps_solid_thresh; // From u_poc_cc of mig_7series_v4_0_poc_cc.v + wire samps_zero; // From u_poc_tap_base of mig_7series_v4_0_poc_tap_base.v + wire [SMWIDTH-1:0] sm; // From u_poc_tap_base of mig_7series_v4_0_poc_tap_base.v + wire [TAPCNTRWIDTH-1:0] tap; // From u_poc_tap_base of mig_7series_v4_0_poc_tap_base.v + wire [TAPCNTRWIDTH:0] window_center; // From u_poc_meta of mig_7series_v4_0_poc_meta.v + // End of automatics + + output psen; + output [TAPCNTRWIDTH-1:0] rise_lead_right; + output [TAPCNTRWIDTH-1:0] rise_trail_right; + output mmcm_edge_detect_done; + output mmcm_lbclk_edge_aligned; + output poc_backup; + + mig_7series_v4_0_poc_tap_base # + (/*AUTOINSTPARAM*/ + // Parameters + .MMCM_SAMP_WAIT (MMCM_SAMP_WAIT), + .POC_USE_METASTABLE_SAMP (POC_USE_METASTABLE_SAMP), + .SAMPCNTRWIDTH (SAMPCNTRWIDTH), + .SMWIDTH (SMWIDTH), + .TAPCNTRWIDTH (TAPCNTRWIDTH), + .TAPSPERKCLK (TAPSPERKCLK), + .TCQ (TCQ)) + u_poc_tap_base + (/*AUTOINST*/ + // Outputs + .psen (psen), + .psincdec (psincdec), + .run (run[TAPCNTRWIDTH-1:0]), + .run_end (run_end), + .run_polarity (run_polarity), + .run_too_small (run_too_small), + .samp_cntr (samp_cntr[SAMPCNTRWIDTH-1:0]), + .samps_hi (samps_hi[SAMPCNTRWIDTH:0]), + .samps_hi_held (samps_hi_held[SAMPCNTRWIDTH:0]), + .samps_one (samps_one), + .samps_zero (samps_zero), + .sm (sm[SMWIDTH-1:0]), + .tap (tap[TAPCNTRWIDTH-1:0]), + // Inputs + .clk (clk), + .pd_out (pd_out), + .poc_sample_pd (poc_sample_pd), + .psdone (psdone), + .rst (rst), + .samples (samples[SAMPCNTRWIDTH:0]), + .samps_solid_thresh (samps_solid_thresh[SAMPCNTRWIDTH:0])); + + mig_7series_v4_0_poc_meta # + (/*AUTOINSTPARAM*/ + // Parameters + .SCANFROMRIGHT (SCANFROMRIGHT), + .TAPCNTRWIDTH (TAPCNTRWIDTH), + .TAPSPERKCLK (TAPSPERKCLK), + .TCQ (TCQ)) + u_poc_meta + (/*AUTOINST*/ + // Outputs + .diff (diff[TAPCNTRWIDTH+1:0]), + .edge_center (edge_center[TAPCNTRWIDTH:0]), + .left (left[TAPCNTRWIDTH-1:0]), + .mmcm_edge_detect_done (mmcm_edge_detect_done), + .mmcm_lbclk_edge_aligned (mmcm_lbclk_edge_aligned), + .poc_backup (poc_backup), + .right (right[TAPCNTRWIDTH-1:0]), + .run_ends (run_ends[1:0]), + .window_center (window_center[TAPCNTRWIDTH:0]), + // Inputs + .clk (clk), + .ktap_at_left_edge (ktap_at_left_edge), + .ktap_at_right_edge (ktap_at_right_edge), + .mmcm_edge_detect_rdy (mmcm_edge_detect_rdy), + .ninety_offsets (ninety_offsets[1:0]), + .rise_lead_center (rise_lead_center[TAPCNTRWIDTH-1:0]), + .rise_lead_left (rise_lead_left[TAPCNTRWIDTH-1:0]), + .rise_lead_right (rise_lead_right[TAPCNTRWIDTH-1:0]), + .rise_trail_center (rise_trail_center[TAPCNTRWIDTH-1:0]), + .rise_trail_left (rise_trail_left[TAPCNTRWIDTH-1:0]), + .rise_trail_right (rise_trail_right[TAPCNTRWIDTH-1:0]), + .rst (rst), + .run (run[TAPCNTRWIDTH-1:0]), + .run_end (run_end), + .run_polarity (run_polarity), + .run_too_small (run_too_small), + .use_noise_window (use_noise_window)); + + /*mig_7series_v4_0_poc_edge_store AUTO_TEMPLATE "edge_\(.*\)$" ( + .\(.*\)lead (\1lead_@@"vl-bits"), + .\(.*\)trail (\1trail_@@"vl-bits"), + .select0 (ktap_at_@_edge), + .select1 (1'b1),)*/ + + mig_7series_v4_0_poc_edge_store # + (/*AUTOINSTPARAM*/ + // Parameters + .TAPCNTRWIDTH (TAPCNTRWIDTH), + .TAPSPERKCLK (TAPSPERKCLK), + .TCQ (TCQ)) + u_edge_right + (/*AUTOINST*/ + // Outputs + .fall_lead (fall_lead_right[TAPCNTRWIDTH-1:0]), // Templated + .fall_trail (fall_trail_right[TAPCNTRWIDTH-1:0]), // Templated + .rise_lead (rise_lead_right[TAPCNTRWIDTH-1:0]), // Templated + .rise_trail (rise_trail_right[TAPCNTRWIDTH-1:0]), // Templated + // Inputs + .clk (clk), + .run (run[TAPCNTRWIDTH-1:0]), + .run_end (run_end), + .run_polarity (run_polarity), + .select0 (ktap_at_right_edge), // Templated + .select1 (1'b1), // Templated + .tap (tap[TAPCNTRWIDTH-1:0])); + + mig_7series_v4_0_poc_edge_store # + (/*AUTOINSTPARAM*/ + // Parameters + .TAPCNTRWIDTH (TAPCNTRWIDTH), + .TAPSPERKCLK (TAPSPERKCLK), + .TCQ (TCQ)) + u_edge_left + (/*AUTOINST*/ + // Outputs + .fall_lead (fall_lead_left[TAPCNTRWIDTH-1:0]), // Templated + .fall_trail (fall_trail_left[TAPCNTRWIDTH-1:0]), // Templated + .rise_lead (rise_lead_left[TAPCNTRWIDTH-1:0]), // Templated + .rise_trail (rise_trail_left[TAPCNTRWIDTH-1:0]), // Templated + // Inputs + .clk (clk), + .run (run[TAPCNTRWIDTH-1:0]), + .run_end (run_end), + .run_polarity (run_polarity), + .select0 (ktap_at_left_edge), // Templated + .select1 (1'b1), // Templated + .tap (tap[TAPCNTRWIDTH-1:0])); + + wire not_ktap_at_right_edge = ~ktap_at_right_edge; + wire not_ktap_at_left_edge = ~ktap_at_left_edge; + /*mig_7series_v4_0_poc_edge_store AUTO_TEMPLATE "edge_\(.*\)$" ( + .\(.*\)lead (\1lead_@@"vl-bits"), + .\(.*\)trail (\1trail_@@"vl-bits"), + .select0 (not_ktap_at_right_edge), + .select1 (not_ktap_at_left_edge),)*/ + + mig_7series_v4_0_poc_edge_store # + (/*AUTOINSTPARAM*/ + // Parameters + .TAPCNTRWIDTH (TAPCNTRWIDTH), + .TAPSPERKCLK (TAPSPERKCLK), + .TCQ (TCQ)) + u_edge_center + (/*AUTOINST*/ + // Outputs + .fall_lead (fall_lead_center[TAPCNTRWIDTH-1:0]), // Templated + .fall_trail (fall_trail_center[TAPCNTRWIDTH-1:0]), // Templated + .rise_lead (rise_lead_center[TAPCNTRWIDTH-1:0]), // Templated + .rise_trail (rise_trail_center[TAPCNTRWIDTH-1:0]), // Templated + // Inputs + .clk (clk), + .run (run[TAPCNTRWIDTH-1:0]), + .run_end (run_end), + .run_polarity (run_polarity), + .select0 (not_ktap_at_right_edge), // Templated + .select1 (not_ktap_at_left_edge), // Templated + .tap (tap[TAPCNTRWIDTH-1:0])); + + mig_7series_v4_0_poc_cc # + (/*AUTOINSTPARAM*/ + // Parameters + .CCENABLE (CCENABLE), + .LANE_CNT_WIDTH (LANE_CNT_WIDTH), + .PCT_SAMPS_SOLID (PCT_SAMPS_SOLID), + .SAMPCNTRWIDTH (SAMPCNTRWIDTH), + .SAMPLES (SAMPLES), + .SMWIDTH (SMWIDTH), + .TAPCNTRWIDTH (TAPCNTRWIDTH), + .TCQ (TCQ)) + u_poc_cc + (/*AUTOINST*/ + // Outputs + .dbg_poc (dbg_poc[1023:0]), + .poc_error (poc_error), + .samples (samples[SAMPCNTRWIDTH:0]), + .samps_solid_thresh (samps_solid_thresh[SAMPCNTRWIDTH:0]), + // Inputs + .clk (clk), + .diff (diff[TAPCNTRWIDTH+1:0]), + .edge_center (edge_center[TAPCNTRWIDTH:0]), + .fall_lead_center (fall_lead_center[TAPCNTRWIDTH-1:0]), + .fall_lead_left (fall_lead_left[TAPCNTRWIDTH-1:0]), + .fall_lead_right (fall_lead_right[TAPCNTRWIDTH-1:0]), + .fall_trail_center (fall_trail_center[TAPCNTRWIDTH-1:0]), + .fall_trail_left (fall_trail_left[TAPCNTRWIDTH-1:0]), + .fall_trail_right (fall_trail_right[TAPCNTRWIDTH-1:0]), + .ktap_at_left_edge (ktap_at_left_edge), + .ktap_at_right_edge (ktap_at_right_edge), + .lane (lane[LANE_CNT_WIDTH-1:0]), + .left (left[TAPCNTRWIDTH-1:0]), + .mmcm_edge_detect_done (mmcm_edge_detect_done), + .mmcm_edge_detect_rdy (mmcm_edge_detect_rdy), + .mmcm_lbclk_edge_aligned (mmcm_lbclk_edge_aligned), + .poc_backup (poc_backup), + .psen (psen), + .right (right[TAPCNTRWIDTH-1:0]), + .rise_lead_center (rise_lead_center[TAPCNTRWIDTH-1:0]), + .rise_lead_left (rise_lead_left[TAPCNTRWIDTH-1:0]), + .rise_lead_right (rise_lead_right[TAPCNTRWIDTH-1:0]), + .rise_trail_center (rise_trail_center[TAPCNTRWIDTH-1:0]), + .rise_trail_left (rise_trail_left[TAPCNTRWIDTH-1:0]), + .rise_trail_right (rise_trail_right[TAPCNTRWIDTH-1:0]), + .rst (rst), + .run (run[TAPCNTRWIDTH-1:0]), + .run_end (run_end), + .run_ends (run_ends[1:0]), + .run_polarity (run_polarity), + .run_too_small (run_too_small), + .samp_cntr (samp_cntr[SAMPCNTRWIDTH-1:0]), + .samps_hi (samps_hi[SAMPCNTRWIDTH:0]), + .samps_hi_held (samps_hi_held[SAMPCNTRWIDTH:0]), + .samps_one (samps_one), + .samps_zero (samps_zero), + .sm (sm[SMWIDTH-1:0]), + .tap (tap[TAPCNTRWIDTH-1:0]), + .window_center (window_center[TAPCNTRWIDTH:0])); + +endmodule // mig_7series_v4_0_poc_top + +// Local Variables: +// verilog-library-directories:(".") +// verilog-library-extensions:(".v") +// End: diff --git a/projects/ZC706/verilog/phy/mig_7series_v4_0_tempmon.v b/projects/ZC706/verilog/phy/mig_7series_v4_0_tempmon.v new file mode 100644 index 0000000..51340b8 --- /dev/null +++ b/projects/ZC706/verilog/phy/mig_7series_v4_0_tempmon.v @@ -0,0 +1,381 @@ +//***************************************************************************** +// (c) Copyright 2008 - 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. +// +//***************************************************************************** +// ____ ____ +// / /\/ / +// /___/ \ / Vendor : Xilinx +// \ \ \/ Version : %version +// \ \ Application : MIG +// / / Filename : mig_7series_v4_0_tempmon.v +// /___/ /\ Date Last Modified : $date$ +// \ \ / \ Date Created : Jul 25 2012 +// \___\/\___\ +// +//Device : 7 Series +//Design Name : DDR3 SDRAM +//Purpose : Monitors chip temperature via the XADC and adjusts the +// stage 2 tap values as appropriate. +//Reference : +//Revision History : +//***************************************************************************** + +`timescale 1 ps / 1 ps + +module mig_7series_v4_0_tempmon # +( + parameter TCQ = 100, // Register delay (sim only) + parameter TEMP_MON_CONTROL = "INTERNAL", // XADC or user temperature source + parameter XADC_CLK_PERIOD = 5000, // pS (default to 200 MHz refclk) + parameter tTEMPSAMPLE = 10000000 // ps (10 us) +) +( + input clk, // Fabric clock + input xadc_clk, + input rst, // System reset + input [11:0] device_temp_i, // User device temperature + output [11:0] device_temp // Sampled temperature +); + + //*************************************************************************** + // Function cdiv + // Description: + // This function performs ceiling division (divide and round-up) + // Inputs: + // num: integer to be divided + // div: divisor + // Outputs: + // cdiv: result of ceiling division (num/div, rounded up) + //*************************************************************************** + + function integer cdiv (input integer num, input integer div); + begin + // perform division, then add 1 if and only if remainder is non-zero + cdiv = (num/div) + (((num%div)>0) ? 1 : 0); + end + endfunction // cdiv + + //*************************************************************************** + // Function clogb2 + // Description: + // This function performs binary logarithm and rounds up + // Inputs: + // size: integer to perform binary log upon + // Outputs: + // clogb2: result of binary logarithm, rounded up + //*************************************************************************** + + function integer clogb2 (input integer size); + begin + + size = size - 1; + + // increment clogb2 from 1 for each bit in size + for (clogb2 = 1; size > 1; clogb2 = clogb2 + 1) + size = size >> 1; + + end + + endfunction // clogb2 + + // Synchronization registers + (* ASYNC_REG = "TRUE" *) reg [11:0] device_temp_sync_r1; + (* ASYNC_REG = "TRUE" *) reg [11:0] device_temp_sync_r2; + (* ASYNC_REG = "TRUE" *) reg [11:0] device_temp_sync_r3 /* synthesis syn_srlstyle="registers" */; + (* ASYNC_REG = "TRUE" *) reg [11:0] device_temp_sync_r4; + (* ASYNC_REG = "TRUE" *) reg [11:0] device_temp_sync_r5; + + // Output register + (* ASYNC_REG = "TRUE" *) reg [11:0] device_temp_r; + + wire [11:0] device_temp_lcl; + reg [3:0] sync_cntr = 4'b0000; + reg device_temp_sync_r4_neq_r3; + + // (* ASYNC_REG = "TRUE" *) reg rst_r1; + // (* ASYNC_REG = "TRUE" *) reg rst_r2; + + // // Synchronization rst to XADC clock domain + // always @(posedge xadc_clk) begin + // rst_r1 <= rst; + // rst_r2 <= rst_r1; + // end + + // Synchronization counter + always @(posedge clk) begin + + device_temp_sync_r1 <= #TCQ device_temp_lcl; + device_temp_sync_r2 <= #TCQ device_temp_sync_r1; + device_temp_sync_r3 <= #TCQ device_temp_sync_r2; + device_temp_sync_r4 <= #TCQ device_temp_sync_r3; + device_temp_sync_r5 <= #TCQ device_temp_sync_r4; + + device_temp_sync_r4_neq_r3 <= #TCQ (device_temp_sync_r4 != device_temp_sync_r3) ? 1'b1 : 1'b0; + + end + + always @(posedge clk) + if(rst || (device_temp_sync_r4_neq_r3)) + sync_cntr <= #TCQ 4'b0000; + else if(~&sync_cntr) + sync_cntr <= #TCQ sync_cntr + 4'b0001; + + always @(posedge clk) + if(&sync_cntr) + device_temp_r <= #TCQ device_temp_sync_r5; + + assign device_temp = device_temp_r; + + generate + + if(TEMP_MON_CONTROL == "EXTERNAL") begin : user_supplied_temperature + + assign device_temp_lcl = device_temp_i; + + end else begin : xadc_supplied_temperature + + // calculate polling timer width and limit + localparam nTEMPSAMP = cdiv(tTEMPSAMPLE, XADC_CLK_PERIOD); + localparam nTEMPSAMP_CLKS = nTEMPSAMP; + localparam nTEMPSAMP_CLKS_M6 = nTEMPSAMP - 6; + localparam nTEMPSAMP_CNTR_WIDTH = clogb2(nTEMPSAMP_CLKS); + + // Temperature sampler FSM encoding + localparam INIT_IDLE = 2'b00; + localparam REQUEST_READ_TEMP = 2'b01; + localparam WAIT_FOR_READ = 2'b10; + localparam READ = 2'b11; + + // polling timer and tick + reg [nTEMPSAMP_CNTR_WIDTH-1:0] sample_timer = {nTEMPSAMP_CNTR_WIDTH{1'b0}}; + reg sample_timer_en = 1'b0; + reg sample_timer_clr = 1'b0; + reg sample_en = 1'b0; + + // Temperature sampler state + reg [2:0] tempmon_state = INIT_IDLE; + reg [2:0] tempmon_next_state = INIT_IDLE; + + // XADC interfacing + reg xadc_den = 1'b0; + wire xadc_drdy; + wire [15:0] xadc_do; + reg xadc_drdy_r = 1'b0; + reg [15:0] xadc_do_r = 1'b0; + + // Temperature storage + reg [11:0] temperature = 12'b0; + + // Reset sync + (* ASYNC_REG = "TRUE" *) reg rst_r1; + (* ASYNC_REG = "TRUE" *) reg rst_r2; + + // Synchronization rst to XADC clock domain + always @(posedge xadc_clk) begin + rst_r1 <= rst; + rst_r2 <= rst_r1; + end + + // XADC polling interval timer + always @ (posedge xadc_clk) + if(rst_r2 || sample_timer_clr) + sample_timer <= #TCQ {nTEMPSAMP_CNTR_WIDTH{1'b0}}; + else if(sample_timer_en) + sample_timer <= #TCQ sample_timer + 1'b1; + + // XADC sampler state transition + always @(posedge xadc_clk) + if(rst_r2) + tempmon_state <= #TCQ INIT_IDLE; + else + tempmon_state <= #TCQ tempmon_next_state; + + // Sample enable + always @(posedge xadc_clk) + sample_en <= #TCQ (sample_timer == nTEMPSAMP_CLKS_M6) ? 1'b1 : 1'b0; + + // XADC sampler next state transition + always @(tempmon_state or sample_en or xadc_drdy_r) begin + + tempmon_next_state = tempmon_state; + + case(tempmon_state) + + INIT_IDLE: + if(sample_en) + tempmon_next_state = REQUEST_READ_TEMP; + + REQUEST_READ_TEMP: + tempmon_next_state = WAIT_FOR_READ; + + WAIT_FOR_READ: + if(xadc_drdy_r) + tempmon_next_state = READ; + + READ: + tempmon_next_state = INIT_IDLE; + + default: + tempmon_next_state = INIT_IDLE; + + endcase + + end + + // Sample timer clear + always @(posedge xadc_clk) + if(rst_r2 || (tempmon_state == WAIT_FOR_READ)) + sample_timer_clr <= #TCQ 1'b0; + else if(tempmon_state == REQUEST_READ_TEMP) + sample_timer_clr <= #TCQ 1'b1; + + // Sample timer enable + always @(posedge xadc_clk) + if(rst_r2 || (tempmon_state == REQUEST_READ_TEMP)) + sample_timer_en <= #TCQ 1'b0; + else if((tempmon_state == INIT_IDLE) || (tempmon_state == READ)) + sample_timer_en <= #TCQ 1'b1; + + // XADC enable + always @(posedge xadc_clk) + if(rst_r2 || (tempmon_state == WAIT_FOR_READ)) + xadc_den <= #TCQ 1'b0; + else if(tempmon_state == REQUEST_READ_TEMP) + xadc_den <= #TCQ 1'b1; + + // Register XADC outputs + always @(posedge xadc_clk) + if(rst_r2) begin + xadc_drdy_r <= #TCQ 1'b0; + xadc_do_r <= #TCQ 16'b0; + end + else begin + xadc_drdy_r <= #TCQ xadc_drdy; + xadc_do_r <= #TCQ xadc_do; + end + + // Store current read value + always @(posedge xadc_clk) + if(rst_r2) + temperature <= #TCQ 12'b0; + else if(tempmon_state == READ) + temperature <= #TCQ xadc_do_r[15:4]; + + assign device_temp_lcl = temperature; + + // XADC: Dual 12-Bit 1MSPS Analog-to-Digital Converter + // 7 Series + // Xilinx HDL Libraries Guide, version 14.1 + XADC #( + // INIT_40 - INIT_42: XADC configuration registers + .INIT_40(16'h1000), // config reg 0 + .INIT_41(16'h2fff), // config reg 1 + .INIT_42(16'h0800), // config reg 2 + // INIT_48 - INIT_4F: Sequence Registers + .INIT_48(16'h0101), // Sequencer channel selection + .INIT_49(16'h0000), // Sequencer channel selection + .INIT_4A(16'h0100), // Sequencer Average selection + .INIT_4B(16'h0000), // Sequencer Average selection + .INIT_4C(16'h0000), // Sequencer Bipolar selection + .INIT_4D(16'h0000), // Sequencer Bipolar selection + .INIT_4E(16'h0000), // Sequencer Acq time selection + .INIT_4F(16'h0000), // Sequencer Acq time selection + // INIT_50 - INIT_58, INIT5C: Alarm Limit Registers + .INIT_50(16'hb5ed), // Temp alarm trigger + .INIT_51(16'h57e4), // Vccint upper alarm limit + .INIT_52(16'ha147), // Vccaux upper alarm limit + .INIT_53(16'hca33), // Temp alarm OT upper + .INIT_54(16'ha93a), // Temp alarm reset + .INIT_55(16'h52c6), // Vccint lower alarm limit + .INIT_56(16'h9555), // Vccaux lower alarm limit + .INIT_57(16'hae4e), // Temp alarm OT reset + .INIT_58(16'h5999), // VBRAM upper alarm limit + .INIT_5C(16'h5111), // VBRAM lower alarm limit + // Simulation attributes: Set for proepr simulation behavior + .SIM_DEVICE("7SERIES") // Select target device (values) + ) + XADC_inst ( + // ALARMS: 8-bit (each) output: ALM, OT + .ALM(), // 8-bit output: Output alarm for temp, Vccint, Vccaux and Vccbram + .OT(), // 1-bit output: Over-Temperature alarm + // Dynamic Reconfiguration Port (DRP): 16-bit (each) output: Dynamic Reconfiguration Ports + .DO(xadc_do), // 16-bit output: DRP output data bus + .DRDY(xadc_drdy), // 1-bit output: DRP data ready + // STATUS: 1-bit (each) output: XADC status ports + .BUSY(), // 1-bit output: ADC busy output + .CHANNEL(), // 5-bit output: Channel selection outputs + .EOC(), // 1-bit output: End of Conversion + .EOS(), // 1-bit output: End of Sequence + .JTAGBUSY(), // 1-bit output: JTAG DRP transaction in progress output + .JTAGLOCKED(), // 1-bit output: JTAG requested DRP port lock + .JTAGMODIFIED(), // 1-bit output: JTAG Write to the DRP has occurred + .MUXADDR(), // 5-bit output: External MUX channel decode + // Auxiliary Analog-Input Pairs: 16-bit (each) input: VAUXP[15:0], VAUXN[15:0] + .VAUXN(16'b0), // 16-bit input: N-side auxiliary analog input + .VAUXP(16'b0), // 16-bit input: P-side auxiliary analog input + // CONTROL and CLOCK: 1-bit (each) input: Reset, conversion start and clock inputs + .CONVST(1'b0), // 1-bit input: Convert start input + .CONVSTCLK(1'b0), // 1-bit input: Convert start input + .RESET(1'b0), // 1-bit input: Active-high reset + // Dedicated Analog Input Pair: 1-bit (each) input: VP/VN + .VN(1'b0), // 1-bit input: N-side analog input + .VP(1'b0), // 1-bit input: P-side analog input + // Dynamic Reconfiguration Port (DRP): 7-bit (each) input: Dynamic Reconfiguration Ports + .DADDR(7'b0), // 7-bit input: DRP address bus + .DCLK(xadc_clk), // 1-bit input: DRP clock + .DEN(xadc_den), // 1-bit input: DRP enable signal + .DI(16'b0), // 16-bit input: DRP input data bus + .DWE(1'b0) // 1-bit input: DRP write enable + ); + + // End of XADC_inst instantiation + + end + + endgenerate + +endmodule diff --git a/projects/ZC706/verilog/project.vh b/projects/ZC706/verilog/project.vh new file mode 100644 index 0000000..d9f67e2 --- /dev/null +++ b/projects/ZC706/verilog/project.vh @@ -0,0 +1,14 @@ +//`define SIMULATION + +`define SOFTMC_STREAM_WIDTH 256 +`define SOFTMC_STREAM_KEEP 32 + +`define DQ_WIDTH 64 +`define ODT_WIDTH 1 +`define CS_WIDTH 1 +`define CKE_WIDTH 1 +`define CK_WIDTH 1 +`define ROW_ADDR_WIDTH 14 + +`define BANK_WIDTH 3 +`define ROW_WIDTH 16 \ No newline at end of file diff --git a/projects/ZC706/verilog/softmc_top.v b/projects/ZC706/verilog/softmc_top.v new file mode 100644 index 0000000..6360122 --- /dev/null +++ b/projects/ZC706/verilog/softmc_top.v @@ -0,0 +1,511 @@ +`include "parameters.vh" +`include "project.vh" + + +module softmc_top #(parameter tCK = 1500, SIM = "false") + ( +`ifdef SIMULATION + input clk, + input rst, +`else + // common signals + input c0_sys_clk_p, + input c0_sys_clk_n, + input sys_rst, +`endif + + // iob <> ddr4 sdram ip signals + output [13:0] ddr3_addr, + output [2:0] ddr3_ba, + output ddr3_ras_n, + output ddr3_cas_n, + output ddr3_we_n, + output [`CKE_WIDTH-1:0] ddr3_cke, + output [`ODT_WIDTH-1:0] ddr3_odt, + output [`CS_WIDTH-1:0] ddr3_cs_n, + output [`CK_WIDTH-1:0] ddr3_ck_p, + output [`CK_WIDTH-1:0] ddr3_ck_n, + output ddr3_reset_n, + + inout [7:0] ddr3_dm, + inout [63:0] ddr3_dq, + inout [7:0] ddr3_dqs_p, + inout [7:0] ddr3_dqs_n + //output init_calib_complete + +`ifndef SIMULATION + , + // xdma signals + input clk_ref_p, + input clk_ref_n, + output [3:0] pci_exp_txp, + output [3:0] pci_exp_txn, + input [3:0] pci_exp_rxp, + input [3:0] pci_exp_rxn, + input pcie_rst_n +`endif + ); + + wire ui_rst_n; + wire ui_clk, ui_rst; + +`ifdef SIMULATION + // Generate differantial clock from single edge input clock and assign resets. + wire c0_sys_clk_p; + wire c0_sys_clk_n; + wire sys_rst; + reg [6:0] sim_rst_r; + + assign c0_sys_clk_p = clk; + assign c0_sys_clk_n = ~clk; + assign sys_rst = rst; + assign ui_rst = ~ui_rst_n || (|sim_rst_r); + + always @(posedge clk) begin + if (rst) begin + sim_rst_r <= 'hFFFFFFFF; + end + else if (sim_rst_r > 0) begin + sim_rst_r <= sim_rst_r - 1; + end + end +`else + assign ui_rst = ~ui_rst_n; +`endif + + + // Frontend control signals + wire softmc_fin; + wire user_rst; + + // Frontend <-> Fetch signals + wire [`IMEM_ADDR_WIDTH-1:0] fr_addr_in; + wire fr_valid_in; + wire [`INSTR_WIDTH-1:0] fr_data_out; + wire fr_valid_out; + wire [`IMEM_ADDR_WIDTH-1:0] fr_addr_out; + wire fr_ready_out; + + // Frontend <-> misc. control signals + wire per_rd_init; + wire per_zq_init; + wire per_ref_init; + wire rbe_switch_mode; + wire toggle_dll; + + // AXI streaming ports + wire [`XDMA_AXI_DATA_WIDTH-1:0] m_axis_h2c_tdata_0,xdma_h2c_tdata_0; + wire m_axis_h2c_tlast_0, xdma_h2c_tlast_0; + wire m_axis_h2c_tvalid_0, xdma_h2c_tvalid_0; + wire m_axis_h2c_tready_0, xdma_h2c_tready_0; + wire [`XDMA_AXI_DATA_WIDTH/8-1:0] m_axis_h2c_tkeep_0, xdma_h2c_tkeep_0; + wire [`XDMA_AXI_DATA_WIDTH-1:0] s_axis_c2h_tdata_0, xdma_c2h_tdata_0; + wire s_axis_c2h_tlast_0, xdma_c2h_tlast_0; + wire s_axis_c2h_tvalid_0, xdma_c2h_tvalid_0; + wire s_axis_c2h_tready_0, xdma_c2h_tready_0; + wire [`XDMA_AXI_DATA_WIDTH/8-1:0] s_axis_c2h_tkeep_0, xdma_c2h_tkeep_0; + + // ddr_pipeline <-> outer module if + wire [3:0] ddr_write; + wire [3:0] ddr_read; + wire [3:0] ddr_pre; + wire [3:0] ddr_act; + wire [3:0] ddr_ref; + wire [3:0] ddr_sre; + wire [3:0] ddr_srx; + wire [3:0] ddr_zq; + wire [3:0] ddr_nop; + wire [3:0] ddr_ap; + wire [3:0] ddr_pall; + wire [3:0] ddr_half_bl; + wire [4*`BG_WIDTH-1:0] ddr_bg; + wire [4*`BANK_WIDTH-1:0] ddr_bank; + wire [4*`COL_WIDTH-1:0] ddr_col; + wire [4*`ROW_WIDTH-1:0] ddr_row; + wire [511:0] ddr_wdata; + + // periodic maintenance signals + wire ddr_maint_read; + + + // ddr adapter + // MC <-> PHY Interface + wire [3:0] mc_ras_n; // DDR Row access strobe + wire [3:0] mc_cas_n; // DDR Column access strobe + wire [3:0] mc_we_n; // DDR Write enable + wire [55:0] mc_address; // row address for activates / column address for read&writes + wire [11:0] mc_bank; // bank address + wire [3:0] mc_cs_n; // chip select, probably used to deselect in NOP cycles + wire mc_reset_n; // Have no idea, probably need to keep HIGH + wire [1:0] mc_odt; // Need some logic to drive this + wire [3:0] mc_cke; // This should be HIGH all the time + wire [3:0] mc_aux_out0; + wire [3:0] mc_aux_out1; + wire mc_cmd_wren; // Enqueue new command + wire mc_ctl_wren; // Enqueue new control singal + wire [2:0] mc_cmd; // The command to enqueue + wire [1:0] mc_cas_slot; // Which CAS slot we issued this command from 0-2 + wire [5:0] mc_data_offset; + wire [5:0] mc_data_offset_1; + wire [5:0] mc_data_offset_2; + wire [1:0] mc_rank_cnt; + // Write + wire mc_wrdata_en; // Asserted for DDR-WRITEs + wire [511:0] mc_wrdata; + wire [63:0] mc_wrdata_mask; // Should be 0xff if we don't want to mask out bits + wire idle; + wire phy_mc_ctl_full; // CTL interface is full + wire phy_mc_cmd_full; // CMD interface is full + wire phy_mc_data_full; // ????????? + (*dont_touch = "true"*) reg pmcctlf; + (*dont_touch = "true"*) reg pmccmdf; + (*dont_touch = "true"*) reg pmcdf; + wire [5:0] calib_rd_data_offset_0; + wire [5:0] calib_rd_data_offset_1; + wire [5:0] calib_rd_data_offset_2; + wire phy_rddata_valid; // Next cycle will have a valid read + wire [511:0] phy_rd_data; + + wire read_seq_incoming; // next few instructions will read from DRAM + wire [11:0] incoming_reads; // how many reads next few instructions will issue + wire [11:0] buffer_space; // remaining buffer size + + wire c0_init_calib_complete; + + // There is a possibility that these signals are on + // the critical path as observed in + // the previous iteration of SoftMC + reg c0_init_calib_complete_r, sys_rst_r; + wire iq_full, processing_iseq, rdback_fifo_empty; + + //assign init_calib_complete = c0_init_calib_complete_r; + + always @(posedge ui_clk) begin + c0_init_calib_complete_r <= c0_init_calib_complete; + sys_rst_r <= sys_rst; + end + + memctl_mig phy_ddr3_i( + // DDR Interface + .ddr3_dq (ddr3_dq), + .ddr3_dqs_n (ddr3_dqs_n), + .ddr3_dqs_p (ddr3_dqs_p), + .ddr3_addr (ddr3_addr), + .ddr3_ba (ddr3_ba), + .ddr3_ras_n (ddr3_ras_n), + .ddr3_cas_n (ddr3_cas_n), + .ddr3_we_n (ddr3_we_n), + .ddr3_reset_n (ddr3_reset_n), + .ddr3_ck_p (ddr3_ck_p), + .ddr3_ck_n (ddr3_ck_n), + .ddr3_cke (ddr3_cke), + .ddr3_cs_n (ddr3_cs_n), + .ddr3_dm (ddr3_dm), + .ddr3_odt (ddr3_odt), + + // MC <-> PHY Interface + .mc_ras_n (mc_ras_n), + .mc_cas_n (mc_cas_n), + .mc_we_n (mc_we_n), + .mc_address (mc_address), + .mc_bank (mc_bank), + .mc_cs_n (mc_cs_n), + .mc_reset_n (mc_reset_n), + .mc_odt (mc_odt), + .mc_cke (mc_cke), + // AUX - For ODT and CKE assertion during reads and writes + .mc_aux_out0 (mc_aux_out0), + .mc_aux_out1 (mc_aux_out1), + .mc_cmd_wren (mc_cmd_wren), + .mc_ctl_wren (mc_ctl_wren), + .mc_cmd (mc_cmd), + .mc_cas_slot (mc_cas_slot), + .mc_data_offset (mc_data_offset), + .mc_data_offset_1 (mc_data_offset_1), + .mc_data_offset_2 (mc_data_offset_2), + .mc_rank_cnt (mc_rank_cnt), + + .mc_wrdata_en (mc_wrdata_en), + .mc_wrdata (mc_wrdata), + .mc_wrdata_mask (mc_wrdata_mask), + .idle (idle), + .phy_mc_ctl_full (phy_mc_ctl_full), + .phy_mc_cmd_full (phy_mc_cmd_full), + .phy_mc_data_full (phy_mc_data_full), + .calib_rd_data_offset_0 (calib_rd_data_offset_0), + .calib_rd_data_offset_1 (calib_rd_data_offset_1), + .calib_rd_data_offset_2 (calib_rd_data_offset_2), + .phy_rddata_valid (phy_rddata_valid), + .phy_rd_data (phy_rd_data), + + + .sys_clk_p (c0_sys_clk_p), + .sys_clk_n (c0_sys_clk_n), + + .ui_clk (ui_clk), + .ui_clk_sync_rst (ui_rst_n), + + .init_calib_complete (c0_init_calib_complete), + + // System reset - Default polarity of sys_rst pin is Active Low. + // System reset polarity will change based on the option + // selected in GUI. + .sys_rst (sys_rst) + ); + + softmc_pipeline pipeline( + .clk(ui_clk), + .rst(ui_rst || user_rst), + + .softmc_end(softmc_fin), + .read_size(incoming_reads), + .read_seq_incoming(read_seq_incoming), + .buffer_space(buffer_space), + + .addr_out(fr_addr_in), + .valid_out(fr_valid_in), + .data_in(fr_data_out), + .valid_in(fr_valid_out), + .addr_in(fr_addr_out), + .ready_out(fr_ready_out), + + .ddr_write(ddr_write), + .ddr_read(ddr_read), + .ddr_pre(ddr_pre), + .ddr_act(ddr_act), + .ddr_ref(ddr_ref), + .ddr_sre(ddr_sre), + .ddr_srx(ddr_srx), + .ddr_zq(ddr_zq), + .ddr_nop(ddr_nop), + .ddr_ap(ddr_ap), + .ddr_pall(ddr_pall), + .ddr_half_bl(ddr_half_bl), + .ddr_bg(ddr_bg), + .ddr_bank(ddr_bank), + .ddr_col(ddr_col), + .ddr_row(ddr_row), + .ddr_wdata(ddr_wdata) + ); + + wire frontend_ready; + + frontend #(.SIM_MEM(SIM)) frontend( + .clk(ui_clk), + .rst(ui_rst), + + .init_calib_complete(c0_init_calib_complete_r), + .softmc_fin(softmc_fin), + .user_rst(user_rst), + + .dllt_begin(toggle_dll), + + // indicates read_back unit is ready for the next iseq + .frontend_ready(frontend_ready), + + // frontend <-> fetch stage if + .addr_in(fr_addr_in), + .valid_in(fr_valid_in), + .data_out(fr_data_out), + .valid_out(fr_valid_out), + .addr_out(fr_addr_out), + .ready_in(fr_ready_out), + + // frontend <-> xdma interface + .h2c_tdata_0(m_axis_h2c_tdata_0), + .h2c_tlast_0(m_axis_h2c_tlast_0), + .h2c_tvalid_0(m_axis_h2c_tvalid_0), + .h2c_tready_0(m_axis_h2c_tready_0), + .h2c_tkeep_0(m_axis_h2c_tkeep_0), + + .per_rd_init(per_rd_init), + .per_zq_init(per_zq_init), + .per_ref_init(per_ref_init), + .rbe_switch_mode(rbe_switch_mode) + ); + + ddr3_adapter ddr3_adapter + ( + .clk(ui_clk), + .rst(ui_rst || user_rst), + .init_calib_complete(c0_init_calib_complete_r), + //.io_config_strobe, + //.io_config, + // MC <-> PHY Interface + .mc_ras_n (mc_ras_n), + .mc_cas_n (mc_cas_n), + .mc_we_n (mc_we_n), + .mc_address (mc_address), + .mc_bank (mc_bank), + .mc_cs_n (mc_cs_n), + .mc_reset_n (mc_reset_n), + .mc_odt (mc_odt), + .mc_cke (mc_cke), + // AUX - For ODT and CKE assertion during reads and writes + .mc_aux_out0 (mc_aux_out0), + .mc_aux_out1 (mc_aux_out1), + .mc_cmd_wren (mc_cmd_wren), + .mc_ctl_wren (mc_ctl_wren), + .mc_cmd (mc_cmd), + .mc_cas_slot (mc_cas_slot), + .mc_data_offset (mc_data_offset), + .mc_data_offset_1 (mc_data_offset_1), + .mc_data_offset_2 (mc_data_offset_2), + .mc_rank_cnt (mc_rank_cnt), + + .mc_wrdata_en (mc_wrdata_en), + .mc_wrdata (mc_wrdata), + .mc_wrdata_mask (mc_wrdata_mask), + .idle (idle), + .phy_mc_ctl_full (phy_mc_ctl_full), + .phy_mc_cmd_full (phy_mc_cmd_full), + .phy_mc_data_full (phy_mc_data_full), + .calib_rd_data_offset_0 (calib_rd_data_offset_0), + .calib_rd_data_offset_1 (calib_rd_data_offset_1), + .calib_rd_data_offset_2 (calib_rd_data_offset_2), + + .ddr_write(ddr_write), + .ddr_read(ddr_read), + .ddr_pre(ddr_pre), + .ddr_act(ddr_act), + .ddr_ref(ddr_ref), + .ddr_zq(ddr_zq), + .ddr_nop(ddr_nop), + .ddr_ap(ddr_ap), + .ddr_pall(ddr_pall), + .ddr_half_bl(ddr_half_bl), + .ddr_bg(ddr_bg), + .ddr_bank(ddr_bank), + .ddr_col(ddr_col), + .ddr_row(ddr_row), + .ddr_wdata(ddr_wdata), + + .ddr_maint_read(per_rd_init) + ); + +`ifndef SIMULATION + wire sys_clk, sys_clk_gt; + wire [2:0] msi_vector_width; + wire msi_enable; + wire user_lnk_up, usr_irq_req, usr_irq_ack; + wire pci_user_clk, pci_user_reset; + + pcie_top zc706_pcie ( + .pci_exp_txn ( pci_exp_txn ), + .pci_exp_txp ( pci_exp_txp ), + .pci_exp_rxn ( pci_exp_rxn ), + .pci_exp_rxp ( pci_exp_rxp ), + + .sys_rst_n ( pcie_rst_n ), + + .sys_clk_p ( clk_ref_p ), + .sys_clk_n ( clk_ref_n ), + + .softmc_c2h_tdata(xdma_c2h_tdata_0), + .softmc_c2h_tlast(xdma_c2h_tlast_0), + .softmc_c2h_tvalid(xdma_c2h_tvalid_0), + .softmc_c2h_tready(xdma_c2h_tready_0), + .softmc_c2h_tkeep(xdma_c2h_tkeep_0), + + .softmc_h2c_tdata(xdma_h2c_tdata_0), + .softmc_h2c_tlast(xdma_h2c_tlast_0), + .softmc_h2c_tvalid(xdma_h2c_tvalid_0), + .softmc_h2c_tready(xdma_h2c_tready_0), + .softmc_h2c_tkeep(xdma_h2c_tkeep_0), + + .user_clk_o ( pci_user_clk ), + .user_reset_o ( pci_user_reset ) + ); + + assign clk_200mhz = pci_user_clk; + + // Clock converter for the c2h interface + axis_clock_converter axis_clk_conv_i0 + ( + .s_axis_tvalid(s_axis_c2h_tvalid_0), + .s_axis_tlast(s_axis_c2h_tlast_0), + .s_axis_tdata(s_axis_c2h_tdata_0), + .s_axis_tkeep(s_axis_c2h_tkeep_0), + .s_axis_tready(s_axis_c2h_tready_0), + .m_axis_tvalid(xdma_c2h_tvalid_0), + .m_axis_tlast(xdma_c2h_tlast_0), + .m_axis_tdata(xdma_c2h_tdata_0), + .m_axis_tkeep(xdma_c2h_tkeep_0), + .m_axis_tready(xdma_c2h_tready_0), + .s_axis_aresetn(~ui_rst), + .s_axis_aclk(ui_clk), + .m_axis_aresetn(~pci_user_reset), + .m_axis_aclk(pci_user_clk) + ); + + // Clock converter for the h2c interface + axis_clock_converter axis_clk_conv_i1 + ( + .m_axis_tvalid(m_axis_h2c_tvalid_0), + .m_axis_tlast(m_axis_h2c_tlast_0), + .m_axis_tdata(m_axis_h2c_tdata_0), + .m_axis_tkeep(m_axis_h2c_tkeep_0), + .m_axis_tready(m_axis_h2c_tready_0), + .s_axis_tvalid(xdma_h2c_tvalid_0), + .s_axis_tlast(xdma_h2c_tlast_0), + .s_axis_tdata(xdma_h2c_tdata_0), + .s_axis_tkeep(xdma_h2c_tkeep_0), + .s_axis_tready(xdma_h2c_tready_0), + .m_axis_aresetn(~ui_rst), + .m_axis_aclk(ui_clk), + .s_axis_aresetn(~pci_user_reset), + .s_axis_aclk(pci_user_clk) + ); + + // ila_hc debug_c2h_ui_clk ( + // .clk ( ui_clk ), + // .probe0 ( s_axis_c2h_tdata_0 ), + // .probe1 ( s_axis_c2h_tkeep_0 ), + // .probe2 ( s_axis_c2h_tvalid_0 ), + // .probe3 ( c0_init_calib_complete_r ), + // .probe4 ( s_axis_c2h_tlast_0 ) + // ); + + // ila_hc debug_h2c_ui_clk ( + // .clk ( ui_clk ), + // .probe0 ( m_axis_h2c_tdata_0 ), + // .probe1 ( m_axis_h2c_tkeep_0 ), + // .probe2 ( m_axis_h2c_tvalid_0 ), + // .probe3 ( m_axis_h2c_tready_0 ), + // .probe4 ( m_axis_h2c_tlast_0 ) + // ); +`endif + + readback_engine rbe( + + // common signals + .clk(ui_clk), + .rst(ui_rst || user_rst), + + // other ctrl signals + .flush(frontend_ready), + .switch_mode(rbe_switch_mode), + .read_seq_incoming(read_seq_incoming), // next few instructions will read from DRAM + .incoming_reads(incoming_reads), // how many reads next few instructions will issue + .buffer_space(buffer_space), // remaining buffer size + // DRAM <-> engine if + .rd_data(phy_rd_data), + .rd_valid(phy_rddata_valid), + + // rbe <-> rf interface + .ddr_wdata(ddr_wdata), + + .per_rd_init(per_rd_init), + .per_zq_init(per_zq_init), + .per_ref_init(per_ref_init), + + // rbe <-> xdma if + .c2h_tdata_0(s_axis_c2h_tdata_0), + .c2h_tlast_0(s_axis_c2h_tlast_0), + .c2h_tvalid_0(s_axis_c2h_tvalid_0), + .c2h_tready_0(s_axis_c2h_tready_0), + .c2h_tkeep_0(s_axis_c2h_tkeep_0) + + ); + +endmodule diff --git a/projects/ZC706/verilog/zc706_pcie_4x_gen2.v b/projects/ZC706/verilog/zc706_pcie_4x_gen2.v new file mode 100644 index 0000000..e0609d3 --- /dev/null +++ b/projects/ZC706/verilog/zc706_pcie_4x_gen2.v @@ -0,0 +1,582 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : zc706_pcie_x4_gen2_support.v +// Version : 3.2 +//-- +//-- Description: PCI Express Endpoint Shared Logic Wrapper +//-- +//------------------------------------------------------------------------------ + +`timescale 1ns / 1ps + +(* DowngradeIPIdentifiedWarnings = "yes" *) +module zc706_pcie_x4_gen2_support # ( + parameter LINK_CAP_MAX_LINK_WIDTH = 8, // PCIe Lane Width + parameter CLK_SHARING_EN = "FALSE", // Enable Clock Sharing + parameter C_DATA_WIDTH = 256, // AXI interface data width + parameter KEEP_WIDTH = C_DATA_WIDTH / 8, // TSTRB width + parameter PCIE_REFCLK_FREQ = 0, // PCIe reference clock frequency + parameter PCIE_USERCLK1_FREQ = 2, // PCIe user clock 1 frequency + parameter PCIE_USERCLK2_FREQ = 2, // PCIe user clock 2 frequency + parameter PCIE_GT_DEVICE = "GTX", // PCIe GT device + parameter PCIE_USE_MODE = "2.1" // PCIe use mode +) +( + + //----------------------------------------------------------------------------------------------------------------// + // PCI Express (pci_exp) Interface // + //----------------------------------------------------------------------------------------------------------------// + + // Tx + output [(LINK_CAP_MAX_LINK_WIDTH - 1) : 0] pci_exp_txn, + output [(LINK_CAP_MAX_LINK_WIDTH - 1) : 0] pci_exp_txp, + + // Rx + input [(LINK_CAP_MAX_LINK_WIDTH - 1) : 0] pci_exp_rxn, + input [(LINK_CAP_MAX_LINK_WIDTH - 1) : 0] pci_exp_rxp, + + //----------------------------------------------------------------------------------------------------------------// + // Clocking Sharing Interface // + //----------------------------------------------------------------------------------------------------------------// + output pipe_pclk_out_slave, + output pipe_rxusrclk_out, + output [(LINK_CAP_MAX_LINK_WIDTH - 1) : 0] pipe_rxoutclk_out, + output pipe_dclk_out, + output pipe_userclk1_out, + output pipe_userclk2_out, + output pipe_oobclk_out, + output pipe_mmcm_lock_out, + input [(LINK_CAP_MAX_LINK_WIDTH - 1) : 0] pipe_pclk_sel_slave, + input pipe_mmcm_rst_n, + + //----------------------------------------------------------------------------------------------------------------// + // AXI-S Interface // + //----------------------------------------------------------------------------------------------------------------// + + // Common + output user_clk_out, + output user_reset_out, + output user_lnk_up, + output user_app_rdy, + + input tx_cfg_gnt, + input rx_np_ok, + input rx_np_req, + input cfg_turnoff_ok, + input cfg_trn_pending, + input cfg_pm_halt_aspm_l0s, + input cfg_pm_halt_aspm_l1, + input cfg_pm_force_state_en, + input [1:0] cfg_pm_force_state, + input [63:0] cfg_dsn, + input cfg_pm_send_pme_to, + input [7:0] cfg_ds_bus_number, + input [4:0] cfg_ds_device_number, + input [2:0] cfg_ds_function_number, + input cfg_pm_wake, + + // AXI TX + //----------- + input [C_DATA_WIDTH-1:0] s_axis_tx_tdata, + input s_axis_tx_tvalid, + output s_axis_tx_tready, + input [KEEP_WIDTH-1:0] s_axis_tx_tkeep, + input s_axis_tx_tlast, + input [3:0] s_axis_tx_tuser, + + // AXI RX + //----------- + output [C_DATA_WIDTH-1:0] m_axis_rx_tdata, + output m_axis_rx_tvalid, + input m_axis_rx_tready, + output [KEEP_WIDTH-1:0] m_axis_rx_tkeep, + output m_axis_rx_tlast, + output [21:0] m_axis_rx_tuser, + + // Flow Control + output [11:0] fc_cpld, + output [7:0] fc_cplh, + output [11:0] fc_npd, + output [7:0] fc_nph, + output [11:0] fc_pd, + output [7:0] fc_ph, + input [2:0] fc_sel, + + //----------------------------------------------------------------------------------------------------------------// + // Configuration (CFG) Interface // + //----------------------------------------------------------------------------------------------------------------// + //------------------------------------------------// + // EP and RP // + //------------------------------------------------// + output tx_err_drop, + output tx_cfg_req, + output [5:0] tx_buf_av, + output [15:0] cfg_status, + output [15:0] cfg_command, + output [15:0] cfg_dstatus, + output [15:0] cfg_dcommand, + output [15:0] cfg_lstatus, + output [15:0] cfg_lcommand, + output [15:0] cfg_dcommand2, + output [2:0] cfg_pcie_link_state, + output cfg_to_turnoff, + output [7:0] cfg_bus_number, + output [4:0] cfg_device_number, + output [2:0] cfg_function_number, + + output cfg_pmcsr_pme_en, + output [1:0] cfg_pmcsr_powerstate, + output cfg_pmcsr_pme_status, + output cfg_received_func_lvl_rst, + + //------------------------------------------------// + // RP Only // + //------------------------------------------------// + output cfg_bridge_serr_en, + output cfg_slot_control_electromech_il_ctl_pulse, + output cfg_root_control_syserr_corr_err_en, + output cfg_root_control_syserr_non_fatal_err_en, + output cfg_root_control_syserr_fatal_err_en, + output cfg_root_control_pme_int_en, + output cfg_aer_rooterr_corr_err_reporting_en, + output cfg_aer_rooterr_non_fatal_err_reporting_en, + output cfg_aer_rooterr_fatal_err_reporting_en, + output cfg_aer_rooterr_corr_err_received, + output cfg_aer_rooterr_non_fatal_err_received, + output cfg_aer_rooterr_fatal_err_received, + //----------------------------------------------------------------------------------------------------------------// + // VC interface // + //----------------------------------------------------------------------------------------------------------------// + + output [6:0] cfg_vc_tcvc_map, + + // Management Interface + output [31:0] cfg_mgmt_do, + output cfg_mgmt_rd_wr_done, + input [31:0] cfg_mgmt_di, + input [3:0] cfg_mgmt_byte_en, + input [9:0] cfg_mgmt_dwaddr, + input cfg_mgmt_wr_en, + input cfg_mgmt_rd_en, + input cfg_mgmt_wr_readonly, + input cfg_mgmt_wr_rw1c_as_rw, + + // Error Reporting Interface + input cfg_err_ecrc, + input cfg_err_ur, + input cfg_err_cpl_timeout, + input cfg_err_cpl_unexpect, + input cfg_err_cpl_abort, + input cfg_err_posted, + input cfg_err_cor, + input cfg_err_atomic_egress_blocked, + input cfg_err_internal_cor, + input cfg_err_malformed, + input cfg_err_mc_blocked, + input cfg_err_poisoned, + input cfg_err_norecovery, + input [47:0] cfg_err_tlp_cpl_header, + output cfg_err_cpl_rdy, + input cfg_err_locked, + input cfg_err_acs, + input cfg_err_internal_uncor, + //----------------------------------------------------------------------------------------------------------------// + // AER interface // + //----------------------------------------------------------------------------------------------------------------// + input [127:0] cfg_err_aer_headerlog, + input [4:0] cfg_aer_interrupt_msgnum, + output cfg_err_aer_headerlog_set, + output cfg_aer_ecrc_check_en, + output cfg_aer_ecrc_gen_en, + + output cfg_msg_received, + output [15:0] cfg_msg_data, + output cfg_msg_received_pm_as_nak, + output cfg_msg_received_setslotpowerlimit, + output cfg_msg_received_err_cor, + output cfg_msg_received_err_non_fatal, + output cfg_msg_received_err_fatal, + output cfg_msg_received_pm_pme, + output cfg_msg_received_pme_to_ack, + output cfg_msg_received_assert_int_a, + output cfg_msg_received_assert_int_b, + output cfg_msg_received_assert_int_c, + output cfg_msg_received_assert_int_d, + output cfg_msg_received_deassert_int_a, + output cfg_msg_received_deassert_int_b, + output cfg_msg_received_deassert_int_c, + output cfg_msg_received_deassert_int_d, + + //------------------------------------------------// + // EP Only // + //------------------------------------------------// + // Interrupt Interface Signals + input cfg_interrupt, + output cfg_interrupt_rdy, + input cfg_interrupt_assert, + input [7:0] cfg_interrupt_di, + output [7:0] cfg_interrupt_do, + output [2:0] cfg_interrupt_mmenable, + output cfg_interrupt_msienable, + output cfg_interrupt_msixenable, + output cfg_interrupt_msixfm, + input cfg_interrupt_stat, + input [4:0] cfg_pciecap_interrupt_msgnum, + + //----------------------------------------------------------------------------------------------------------------// + // Physical Layer Control and Status (PL) Interface // + //----------------------------------------------------------------------------------------------------------------// + //------------------------------------------------// + // EP and RP // + //------------------------------------------------// + input [1:0] pl_directed_link_change, + input [1:0] pl_directed_link_width, + input pl_directed_link_speed, + input pl_directed_link_auton, + input pl_upstream_prefer_deemph, + + output pl_sel_lnk_rate, + output [1:0] pl_sel_lnk_width, + output [5:0] pl_ltssm_state, + output [1:0] pl_lane_reversal_mode, + output pl_phy_lnk_up, + output [2:0] pl_tx_pm_state, + output [1:0] pl_rx_pm_state, + output pl_link_upcfg_cap, + output pl_link_gen2_cap, + output pl_link_partner_gen2_supported, + output [2:0] pl_initial_link_width, + output pl_directed_change_done, + + //------------------------------------------------// + // EP Only // + //------------------------------------------------// + output pl_received_hot_rst, + + //------------------------------------------------// + // RP Only // + //------------------------------------------------// + input pl_transmit_hot_rst, + input pl_downstream_deemph_source, + + //----------------------------------------------------------------------------------------------------------------// + // PCIe DRP (PCIe DRP) Interface // + //----------------------------------------------------------------------------------------------------------------// + input pcie_drp_clk, + input pcie_drp_en, + input pcie_drp_we, + input [8:0] pcie_drp_addr, + input [15:0] pcie_drp_di, + output pcie_drp_rdy, + output [15:0] pcie_drp_do, + + input sys_clk, + input sys_rst_n + +); + // Wires used for external clocking connectivity + wire pipe_pclk_out; + wire pipe_txoutclk_in; + wire [(LINK_CAP_MAX_LINK_WIDTH - 1) : 0] pipe_rxoutclk_in; + wire [(LINK_CAP_MAX_LINK_WIDTH - 1) : 0] pipe_pclk_sel_in; + wire pipe_gen3_in; + + + // Wires used for external GT COMMON connectivity + wire [11:0] qpll_drp_crscode; + wire [17:0] qpll_drp_fsm; + wire [1:0] qpll_drp_done; + wire [1:0] qpll_drp_reset; + wire qpll_qplld; + wire [1:0] qpll_qpllreset; + wire qpll_drp_clk; + wire qpll_drp_rst_n; + wire qpll_drp_ovrd; + wire qpll_drp_gen3; + wire qpll_drp_start; + + + //---------- PIPE Clock Shared Mode ------------------------------// + +zc706_pcie_x4_gen2_pipe_clock # + ( + .PCIE_ASYNC_EN ( "FALSE" ), // PCIe async enable + .PCIE_TXBUF_EN ( "FALSE" ), // PCIe TX buffer enable for Gen1/Gen2 only + .PCIE_LANE ( LINK_CAP_MAX_LINK_WIDTH ), // PCIe number of lanes + // synthesis translate_off + .PCIE_LINK_SPEED ( 2 ), + // synthesis translate_on + .PCIE_REFCLK_FREQ ( PCIE_REFCLK_FREQ ), // PCIe reference clock frequency + .PCIE_USERCLK1_FREQ ( PCIE_USERCLK1_FREQ ), // PCIe user clock 1 frequency + .PCIE_USERCLK2_FREQ ( PCIE_USERCLK2_FREQ ), // PCIe user clock 2 frequency + .PCIE_DEBUG_MODE ( 0 ) + ) + pipe_clock_i + ( + + //---------- Input ------------------------------------- + .CLK_CLK ( sys_clk ), + .CLK_TXOUTCLK ( pipe_txoutclk_in ), // Reference clock from lane 0 + .CLK_RXOUTCLK_IN ( pipe_rxoutclk_in ), + .CLK_RST_N ( pipe_mmcm_rst_n ), // Allow system reset for error_recovery + .CLK_PCLK_SEL ( pipe_pclk_sel_in ), + .CLK_PCLK_SEL_SLAVE ( pipe_pclk_sel_slave), + .CLK_GEN3 ( pipe_gen3_in ), + + //---------- Output ------------------------------------ + .CLK_PCLK ( pipe_pclk_out), + .CLK_PCLK_SLAVE ( pipe_pclk_out_slave), + .CLK_RXUSRCLK ( pipe_rxusrclk_out), + .CLK_RXOUTCLK_OUT ( pipe_rxoutclk_out), + .CLK_DCLK ( pipe_dclk_out), + .CLK_OOBCLK ( pipe_oobclk_out), + .CLK_USERCLK1 ( pipe_userclk1_out), + .CLK_USERCLK2 ( pipe_userclk2_out), + .CLK_MMCM_LOCK ( pipe_mmcm_lock_out) + + ); + + + + + //---------- GT COMMON Internal Mode--------------------------------------- + + assign qpll_drp_done = 2'd0; + assign qpll_drp_reset = 2'd0; + assign qpll_drp_crscode = 12'd0; + assign qpll_drp_fsm = 18'd0; + assign qpll_qplloutclk = 2'd0; + assign qpll_qplloutrefclk = 2'd0; + assign qpll_qplllock = 2'd0; + + + +pcie_7x_0 zc706_pcie_x4_gen2_i +( + .pci_exp_txn(pci_exp_txn), + .pci_exp_txp(pci_exp_txp), + .pci_exp_rxn(pci_exp_rxn), + .pci_exp_rxp(pci_exp_rxp), + .pipe_pclk_in(pipe_pclk_out), + .pipe_rxusrclk_in(pipe_rxusrclk_out), + .pipe_rxoutclk_in(pipe_rxoutclk_out), + .pipe_mmcm_rst_n(pipe_mmcm_rst_n), + .pipe_dclk_in(pipe_dclk_out), + .pipe_userclk1_in(pipe_userclk1_out), + .pipe_userclk2_in(pipe_userclk2_out), + .pipe_oobclk_in( pipe_oobclk_out ), + .pipe_mmcm_lock_in(pipe_mmcm_lock_out), + .pipe_txoutclk_out(pipe_txoutclk_in), + .pipe_rxoutclk_out(pipe_rxoutclk_in), + .pipe_pclk_sel_out(pipe_pclk_sel_in), + .pipe_gen3_out(pipe_gen3_in), + .user_clk_out(user_clk_out), + .user_reset_out(user_reset_out), + .user_lnk_up(user_lnk_up), + .user_app_rdy(user_app_rdy), + .s_axis_tx_tdata(s_axis_tx_tdata), + .s_axis_tx_tvalid(s_axis_tx_tvalid), + .s_axis_tx_tready(s_axis_tx_tready), + .s_axis_tx_tkeep(s_axis_tx_tkeep), + .s_axis_tx_tlast(s_axis_tx_tlast), + .s_axis_tx_tuser(s_axis_tx_tuser), + .m_axis_rx_tdata(m_axis_rx_tdata), + .m_axis_rx_tvalid(m_axis_rx_tvalid), + .m_axis_rx_tready(m_axis_rx_tready), + .m_axis_rx_tkeep(m_axis_rx_tkeep), + .m_axis_rx_tlast(m_axis_rx_tlast), + .m_axis_rx_tuser(m_axis_rx_tuser), + .tx_cfg_gnt(tx_cfg_gnt), + .rx_np_ok(rx_np_ok), + .rx_np_req(rx_np_req), + .cfg_trn_pending(cfg_trn_pending), + .cfg_pm_halt_aspm_l0s(cfg_pm_halt_aspm_l0s), + .cfg_pm_halt_aspm_l1(cfg_pm_halt_aspm_l1), + .cfg_pm_force_state_en(cfg_pm_force_state_en), + .cfg_pm_force_state(cfg_pm_force_state), + .cfg_dsn(cfg_dsn), + .cfg_turnoff_ok(cfg_turnoff_ok), + .cfg_pm_wake(cfg_pm_wake), + .cfg_pm_send_pme_to(cfg_pm_send_pme_to), + .cfg_ds_bus_number(cfg_ds_bus_number), + .cfg_ds_device_number(cfg_ds_device_number), + .cfg_ds_function_number(cfg_ds_function_number), + .fc_cpld(fc_cpld), + .fc_cplh(fc_cplh), + .fc_npd(fc_npd), + .fc_nph(fc_nph), + .fc_pd(fc_pd), + .fc_ph(fc_ph), + .fc_sel(fc_sel), + .cfg_mgmt_do(cfg_mgmt_do), + .cfg_mgmt_rd_wr_done(cfg_mgmt_rd_wr_done), + .cfg_mgmt_di(cfg_mgmt_di), + .cfg_mgmt_byte_en(cfg_mgmt_byte_en), + .cfg_mgmt_dwaddr(cfg_mgmt_dwaddr), + .cfg_mgmt_wr_en(cfg_mgmt_wr_en), + .cfg_mgmt_rd_en(cfg_mgmt_rd_en), + .cfg_mgmt_wr_readonly(cfg_mgmt_wr_readonly), + .cfg_mgmt_wr_rw1c_as_rw(cfg_mgmt_wr_rw1c_as_rw), + .tx_buf_av(tx_buf_av), + .tx_err_drop(tx_err_drop), + .tx_cfg_req(tx_cfg_req), + .cfg_status(cfg_status), + .cfg_command(cfg_command), + .cfg_dstatus(cfg_dstatus), + .cfg_dcommand(cfg_dcommand), + .cfg_lstatus(cfg_lstatus), + .cfg_lcommand(cfg_lcommand), + .cfg_dcommand2(cfg_dcommand2), + .cfg_pcie_link_state(cfg_pcie_link_state), + .cfg_pmcsr_pme_en(cfg_pmcsr_pme_en), + .cfg_pmcsr_powerstate(cfg_pmcsr_powerstate), + .cfg_pmcsr_pme_status(cfg_pmcsr_pme_status), + .cfg_vc_tcvc_map(cfg_vc_tcvc_map), + .cfg_to_turnoff(cfg_to_turnoff), + .cfg_bus_number(cfg_bus_number), + .cfg_device_number(cfg_device_number), + .cfg_function_number(cfg_function_number), + .cfg_bridge_serr_en(cfg_bridge_serr_en), + .cfg_slot_control_electromech_il_ctl_pulse(cfg_slot_control_electromech_il_ctl_pulse), + .cfg_root_control_syserr_corr_err_en(cfg_root_control_syserr_corr_err_en), + .cfg_root_control_syserr_non_fatal_err_en(cfg_root_control_syserr_non_fatal_err_en), + .cfg_root_control_syserr_fatal_err_en(cfg_root_control_syserr_fatal_err_en), + .cfg_root_control_pme_int_en(cfg_root_control_pme_int_en), + .cfg_aer_rooterr_corr_err_reporting_en(cfg_aer_rooterr_corr_err_reporting_en), + .cfg_aer_rooterr_non_fatal_err_reporting_en(cfg_aer_rooterr_non_fatal_err_reporting_en), + .cfg_aer_rooterr_fatal_err_reporting_en(cfg_aer_rooterr_fatal_err_reporting_en), + .cfg_aer_rooterr_corr_err_received(cfg_aer_rooterr_corr_err_received), + .cfg_aer_rooterr_non_fatal_err_received(cfg_aer_rooterr_non_fatal_err_received), + .cfg_aer_rooterr_fatal_err_received(cfg_aer_rooterr_fatal_err_received), + .cfg_received_func_lvl_rst(cfg_received_func_lvl_rst), + .cfg_err_ecrc(cfg_err_ecrc), + .cfg_err_ur(cfg_err_ur), + .cfg_err_cpl_timeout(cfg_err_cpl_timeout), + .cfg_err_cpl_unexpect(cfg_err_cpl_unexpect), + .cfg_err_cpl_abort(cfg_err_cpl_abort), + .cfg_err_posted(cfg_err_posted), + .cfg_err_cor(cfg_err_cor), + .cfg_err_atomic_egress_blocked(cfg_err_atomic_egress_blocked), + .cfg_err_internal_cor(cfg_err_internal_cor), + .cfg_err_malformed(cfg_err_malformed), + .cfg_err_mc_blocked(cfg_err_mc_blocked), + .cfg_err_poisoned(cfg_err_poisoned), + .cfg_err_norecovery(cfg_err_norecovery), + .cfg_err_tlp_cpl_header(cfg_err_tlp_cpl_header), + .cfg_err_cpl_rdy(cfg_err_cpl_rdy), + .cfg_err_locked(cfg_err_locked), + .cfg_err_acs(cfg_err_acs), + .cfg_err_internal_uncor(cfg_err_internal_uncor), + .cfg_aer_ecrc_check_en(cfg_aer_ecrc_check_en), + .cfg_aer_ecrc_gen_en(cfg_aer_ecrc_gen_en), + .cfg_err_aer_headerlog(cfg_err_aer_headerlog), + .cfg_err_aer_headerlog_set(cfg_err_aer_headerlog_set), + .cfg_aer_interrupt_msgnum(cfg_aer_interrupt_msgnum), + .cfg_interrupt(cfg_interrupt), + .cfg_interrupt_rdy(cfg_interrupt_rdy), + .cfg_interrupt_assert(cfg_interrupt_assert), + .cfg_interrupt_di(cfg_interrupt_di), + .cfg_interrupt_do(cfg_interrupt_do), + .cfg_interrupt_mmenable(cfg_interrupt_mmenable), + .cfg_interrupt_msienable(cfg_interrupt_msienable), + .cfg_interrupt_msixenable(cfg_interrupt_msixenable), + .cfg_interrupt_msixfm(cfg_interrupt_msixfm), + .cfg_interrupt_stat(cfg_interrupt_stat), + .cfg_pciecap_interrupt_msgnum(cfg_pciecap_interrupt_msgnum), + .cfg_msg_received(cfg_msg_received), + .cfg_msg_data(cfg_msg_data), + .cfg_msg_received_pm_as_nak(cfg_msg_received_pm_as_nak), + .cfg_msg_received_setslotpowerlimit(cfg_msg_received_setslotpowerlimit), + .cfg_msg_received_err_cor(cfg_msg_received_err_cor), + .cfg_msg_received_err_non_fatal(cfg_msg_received_err_non_fatal), + .cfg_msg_received_err_fatal(cfg_msg_received_err_fatal), + .cfg_msg_received_pm_pme(cfg_msg_received_pm_pme), + .cfg_msg_received_pme_to_ack(cfg_msg_received_pme_to_ack), + .cfg_msg_received_assert_int_a(cfg_msg_received_assert_int_a), + .cfg_msg_received_assert_int_b(cfg_msg_received_assert_int_b), + .cfg_msg_received_assert_int_c(cfg_msg_received_assert_int_c), + .cfg_msg_received_assert_int_d(cfg_msg_received_assert_int_d), + .cfg_msg_received_deassert_int_a(cfg_msg_received_deassert_int_a), + .cfg_msg_received_deassert_int_b(cfg_msg_received_deassert_int_b), + .cfg_msg_received_deassert_int_c(cfg_msg_received_deassert_int_c), + .cfg_msg_received_deassert_int_d(cfg_msg_received_deassert_int_d), + .pl_directed_link_change(pl_directed_link_change), + .pl_directed_link_width(pl_directed_link_width), + .pl_directed_link_speed(pl_directed_link_speed), + .pl_directed_link_auton(pl_directed_link_auton), + .pl_upstream_prefer_deemph(pl_upstream_prefer_deemph), + .pl_sel_lnk_rate(pl_sel_lnk_rate), + .pl_sel_lnk_width(pl_sel_lnk_width), + .pl_ltssm_state(pl_ltssm_state), + .pl_lane_reversal_mode(pl_lane_reversal_mode), + .pl_phy_lnk_up(pl_phy_lnk_up), + .pl_tx_pm_state(pl_tx_pm_state), + .pl_rx_pm_state(pl_rx_pm_state), + .pl_link_upcfg_cap(pl_link_upcfg_cap), + .pl_link_gen2_cap(pl_link_gen2_cap), + .pl_link_partner_gen2_supported(pl_link_partner_gen2_supported), + .pl_initial_link_width(pl_initial_link_width), + .pl_directed_change_done(pl_directed_change_done), + .pl_received_hot_rst(pl_received_hot_rst), + .pl_transmit_hot_rst(pl_transmit_hot_rst), + .pl_downstream_deemph_source(pl_downstream_deemph_source), + .pcie_drp_clk(pcie_drp_clk), + .pcie_drp_en(pcie_drp_en), + .pcie_drp_we(pcie_drp_we), + .pcie_drp_addr(pcie_drp_addr), + .pcie_drp_di(pcie_drp_di), + .pcie_drp_rdy(pcie_drp_rdy), + .pcie_drp_do(pcie_drp_do), + .sys_clk(sys_clk), + .sys_rst_n(sys_rst_n) + ); + +endmodule diff --git a/projects/ZC706/verilog/zc706_pcie_4x_gen2_pipe_clock.v b/projects/ZC706/verilog/zc706_pcie_4x_gen2_pipe_clock.v new file mode 100644 index 0000000..ff37b25 --- /dev/null +++ b/projects/ZC706/verilog/zc706_pcie_4x_gen2_pipe_clock.v @@ -0,0 +1,578 @@ +//----------------------------------------------------------------------------- +// +// (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. +// +//----------------------------------------------------------------------------- +// Project : Series-7 Integrated Block for PCI Express +// File : zc706_pcie_x4_gen2_pipe_clock.v +// Version : 3.2 +//------------------------------------------------------------------------------ +// Filename : pipe_clock.v +// Description : PIPE Clock Module for 7 Series Transceiver +// Version : 15.3 +//------------------------------------------------------------------------------ +`timescale 1ns / 1ps +//---------- PIPE Clock Module ------------------------------------------------- +(* DowngradeIPIdentifiedWarnings = "yes" *) +module zc706_pcie_x4_gen2_pipe_clock # +( + parameter PCIE_ASYNC_EN = "FALSE", // PCIe async enable + parameter PCIE_TXBUF_EN = "FALSE", // PCIe TX buffer enable for Gen1/Gen2 only + parameter PCIE_CLK_SHARING_EN= "FALSE", // Enable Clock Sharing + parameter PCIE_LANE = 1, // PCIe number of lanes + parameter PCIE_LINK_SPEED = 3, // PCIe link speed + parameter PCIE_REFCLK_FREQ = 0, // PCIe reference clock frequency + parameter PCIE_USERCLK1_FREQ = 2, // PCIe user clock 1 frequency + parameter PCIE_USERCLK2_FREQ = 2, // PCIe user clock 2 frequency + parameter PCIE_OOBCLK_MODE = 1, // PCIe oob clock mode + parameter PCIE_DEBUG_MODE = 0 // PCIe Debug mode + +) +( + + //---------- Input ------------------------------------- + input CLK_CLK, + input CLK_TXOUTCLK, + input [PCIE_LANE-1:0] CLK_RXOUTCLK_IN, + input CLK_RST_N, + input [PCIE_LANE-1:0] CLK_PCLK_SEL, + input [PCIE_LANE-1:0] CLK_PCLK_SEL_SLAVE, + input CLK_GEN3, + + //---------- Output ------------------------------------ + output CLK_PCLK, + output CLK_PCLK_SLAVE, + output CLK_RXUSRCLK, + output [PCIE_LANE-1:0] CLK_RXOUTCLK_OUT, + output CLK_DCLK, + output CLK_OOBCLK, + output CLK_USERCLK1, + output CLK_USERCLK2, + output CLK_MMCM_LOCK + +); + + //---------- Select Clock Divider ---------------------- + localparam DIVCLK_DIVIDE = (PCIE_REFCLK_FREQ == 2) ? 1 : + (PCIE_REFCLK_FREQ == 1) ? 1 : 1; + + localparam CLKFBOUT_MULT_F = (PCIE_REFCLK_FREQ == 2) ? 4 : + (PCIE_REFCLK_FREQ == 1) ? 8 : 10; + + localparam CLKIN1_PERIOD = (PCIE_REFCLK_FREQ == 2) ? 4 : + (PCIE_REFCLK_FREQ == 1) ? 8 : 10; + + localparam CLKOUT0_DIVIDE_F = 8; + + localparam CLKOUT1_DIVIDE = 4; + + localparam CLKOUT2_DIVIDE = (PCIE_USERCLK1_FREQ == 5) ? 2 : + (PCIE_USERCLK1_FREQ == 4) ? 4 : + (PCIE_USERCLK1_FREQ == 3) ? 8 : + (PCIE_USERCLK1_FREQ == 1) ? 32 : 16; + + localparam CLKOUT3_DIVIDE = (PCIE_USERCLK2_FREQ == 5) ? 2 : + (PCIE_USERCLK2_FREQ == 4) ? 4 : + (PCIE_USERCLK2_FREQ == 3) ? 8 : + (PCIE_USERCLK2_FREQ == 1) ? 32 : 16; + + localparam CLKOUT4_DIVIDE = 20; + + localparam PCIE_GEN1_MODE = 1'b0; // PCIe link speed is GEN1 only + + //---------- Input Registers --------------------------- +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] pclk_sel_reg1 = {PCIE_LANE{1'd0}}; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] pclk_sel_slave_reg1 = {PCIE_LANE{1'd0}}; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg gen3_reg1 = 1'd0; + +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] pclk_sel_reg2 = {PCIE_LANE{1'd0}}; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg [PCIE_LANE-1:0] pclk_sel_slave_reg2 = {PCIE_LANE{1'd0}}; +(* ASYNC_REG = "TRUE", SHIFT_EXTRACT = "NO" *) reg gen3_reg2 = 1'd0; + + //---------- Internal Signals -------------------------- + wire refclk; + wire mmcm_fb; + wire clk_125mhz; + wire clk_125mhz_buf; + wire clk_250mhz; + wire userclk1; + wire userclk2; + wire oobclk; + reg pclk_sel = 1'd0; + reg pclk_sel_slave = 1'd0; + + //---------- Output Registers -------------------------- + wire pclk_1; + wire pclk; + wire userclk1_1; + wire userclk2_1; + wire mmcm_lock; + + //---------- Generate Per-Lane Signals ----------------- + genvar i; // Index for per-lane signals + +//---------- Input FF ---------------------------------------------------------- +always @ (posedge pclk) +begin + + if (!CLK_RST_N) + begin + //---------- 1st Stage FF -------------------------- + pclk_sel_reg1 <= {PCIE_LANE{1'd0}}; + pclk_sel_slave_reg1 <= {PCIE_LANE{1'd0}}; + gen3_reg1 <= 1'd0; + //---------- 2nd Stage FF -------------------------- + pclk_sel_reg2 <= {PCIE_LANE{1'd0}}; + pclk_sel_slave_reg2 <= {PCIE_LANE{1'd0}}; + gen3_reg2 <= 1'd0; + end + else + begin + //---------- 1st Stage FF -------------------------- + pclk_sel_reg1 <= CLK_PCLK_SEL; + pclk_sel_slave_reg1 <= CLK_PCLK_SEL_SLAVE; + gen3_reg1 <= CLK_GEN3; + //---------- 2nd Stage FF -------------------------- + pclk_sel_reg2 <= pclk_sel_reg1; + pclk_sel_slave_reg2 <= pclk_sel_slave_reg1; + gen3_reg2 <= gen3_reg1; + end + +end + +//---------- Select Reference clock or TXOUTCLK -------------------------------- +generate if ((PCIE_TXBUF_EN == "TRUE") && (PCIE_LINK_SPEED != 3)) + + begin : refclk_i + + //---------- Select Reference Clock ---------------------------------------- + BUFG refclk_i + ( + + //---------- Input ------------------------------------- + .I (CLK_CLK), + //---------- Output ------------------------------------ + .O (refclk) + + ); + + end + +else + + begin : txoutclk_i + + //---------- Select TXOUTCLK ----------------------------------------------- + BUFG txoutclk_i + ( + + //---------- Input ------------------------------------- + .I (CLK_TXOUTCLK), + //---------- Output ------------------------------------ + .O (refclk) + + ); + + end + +endgenerate + +//---------- MMCM -------------------------------------------------------------- +MMCME2_ADV # +( + + .BANDWIDTH ("OPTIMIZED"), + .CLKOUT4_CASCADE ("FALSE"), + .COMPENSATION ("ZHOLD"), + .STARTUP_WAIT ("FALSE"), + .DIVCLK_DIVIDE (DIVCLK_DIVIDE), + .CLKFBOUT_MULT_F (CLKFBOUT_MULT_F), + .CLKFBOUT_PHASE (0.000), + .CLKFBOUT_USE_FINE_PS ("FALSE"), + .CLKOUT0_DIVIDE_F (CLKOUT0_DIVIDE_F), + .CLKOUT0_PHASE (0.000), + .CLKOUT0_DUTY_CYCLE (0.500), + .CLKOUT0_USE_FINE_PS ("FALSE"), + .CLKOUT1_DIVIDE (CLKOUT1_DIVIDE), + .CLKOUT1_PHASE (0.000), + .CLKOUT1_DUTY_CYCLE (0.500), + .CLKOUT1_USE_FINE_PS ("FALSE"), + .CLKOUT2_DIVIDE (CLKOUT2_DIVIDE), + .CLKOUT2_PHASE (0.000), + .CLKOUT2_DUTY_CYCLE (0.500), + .CLKOUT2_USE_FINE_PS ("FALSE"), + .CLKOUT3_DIVIDE (CLKOUT3_DIVIDE), + .CLKOUT3_PHASE (0.000), + .CLKOUT3_DUTY_CYCLE (0.500), + .CLKOUT3_USE_FINE_PS ("FALSE"), + .CLKOUT4_DIVIDE (CLKOUT4_DIVIDE), + .CLKOUT4_PHASE (0.000), + .CLKOUT4_DUTY_CYCLE (0.500), + .CLKOUT4_USE_FINE_PS ("FALSE"), + .CLKIN1_PERIOD (CLKIN1_PERIOD), + .REF_JITTER1 (0.010) + +) +mmcm_i +( + + //---------- Input ------------------------------------ + .CLKIN1 (refclk), + .CLKIN2 (1'd0), // not used, comment out CLKIN2 if it cause implementation issues + //.CLKIN2 (refclk), // not used, comment out CLKIN2 if it cause implementation issues + .CLKINSEL (1'd1), + .CLKFBIN (mmcm_fb), + .RST (!CLK_RST_N), + .PWRDWN (1'd0), + + //---------- Output ------------------------------------ + .CLKFBOUT (mmcm_fb), + .CLKFBOUTB (), + .CLKOUT0 (clk_125mhz), + .CLKOUT0B (), + .CLKOUT1 (clk_250mhz), + .CLKOUT1B (), + .CLKOUT2 (userclk1), + .CLKOUT2B (), + .CLKOUT3 (userclk2), + .CLKOUT3B (), + .CLKOUT4 (oobclk), + .CLKOUT5 (), + .CLKOUT6 (), + .LOCKED (mmcm_lock), + + //---------- Dynamic Reconfiguration ------------------- + .DCLK ( 1'd0), + .DADDR ( 7'd0), + .DEN ( 1'd0), + .DWE ( 1'd0), + .DI (16'd0), + .DO (), + .DRDY (), + + //---------- Dynamic Phase Shift ----------------------- + .PSCLK (1'd0), + .PSEN (1'd0), + .PSINCDEC (1'd0), + .PSDONE (), + + //---------- Status ------------------------------------ + .CLKINSTOPPED (), + .CLKFBSTOPPED () + +); + +//---------- Select PCLK MUX --------------------------------------------------- +generate if (PCIE_LINK_SPEED != 1) + + begin : pclk_i1_bufgctrl + //---------- PCLK Mux ---------------------------------- + BUFGCTRL pclk_i1 + ( + //---------- Input --------------------------------- + .CE0 (1'd1), + .CE1 (1'd1), + .I0 (clk_125mhz), + .I1 (clk_250mhz), + .IGNORE0 (1'd0), + .IGNORE1 (1'd0), + .S0 (~pclk_sel), + .S1 ( pclk_sel), + //---------- Output -------------------------------- + .O (pclk_1) + ); + end + +else + + //---------- Select PCLK Buffer ------------------------ + begin : pclk_i1_bufg + //---------- PCLK Buffer ------------------------------- + BUFG pclk_i1 + ( + //---------- Input --------------------------------- + .I (clk_125mhz), + //---------- Output -------------------------------- + .O (clk_125mhz_buf) + ); + assign pclk_1 = clk_125mhz_buf; + end + +endgenerate + +//---------- Select PCLK MUX for Slave--------------------------------------------------- +generate if(PCIE_CLK_SHARING_EN == "FALSE") + //---------- PCLK MUX for Slave------------------// + begin : pclk_slave_disable + assign CLK_PCLK_SLAVE = 1'b0; + end + +else if (PCIE_LINK_SPEED != 1) + + begin : pclk_slave_bufgctrl + //---------- PCLK Mux ---------------------------------- + BUFGCTRL pclk_slave + ( + //---------- Input --------------------------------- + .CE0 (1'd1), + .CE1 (1'd1), + .I0 (clk_125mhz), + .I1 (clk_250mhz), + .IGNORE0 (1'd0), + .IGNORE1 (1'd0), + .S0 (~pclk_sel_slave), + .S1 ( pclk_sel_slave), + //---------- Output -------------------------------- + .O (CLK_PCLK_SLAVE) + ); + end + +else + + //---------- Select PCLK Buffer ------------------------ + begin : pclk_slave_bufg + //---------- PCLK Buffer ------------------------------- + BUFG pclk_slave + ( + //---------- Input --------------------------------- + .I (clk_125mhz), + //---------- Output -------------------------------- + .O (CLK_PCLK_SLAVE) + ); + end + +endgenerate + +//---------- Generate RXOUTCLK Buffer for Debug -------------------------------- +generate if ((PCIE_DEBUG_MODE == 1) || (PCIE_ASYNC_EN == "TRUE")) + + begin : rxoutclk_per_lane + //---------- Generate per Lane ------------------------- + for (i=0; i Date: Tue, 23 May 2023 20:55:44 +0300 Subject: [PATCH 2/5] Add ZC706 PCIe Driver --- sources/zc706_driver/Makefile | 13 ++ sources/zc706_driver/cdev.c | 97 ++++++++++++++ sources/zc706_driver/cdev.h | 38 ++++++ sources/zc706_driver/softmc_dma.c | 207 ++++++++++++++++++++++++++++++ sources/zc706_driver/softmc_dma.h | 67 ++++++++++ sources/zc706_driver/test/test.c | 43 +++++++ 6 files changed, 465 insertions(+) create mode 100644 sources/zc706_driver/Makefile create mode 100644 sources/zc706_driver/cdev.c create mode 100644 sources/zc706_driver/cdev.h create mode 100644 sources/zc706_driver/softmc_dma.c create mode 100644 sources/zc706_driver/softmc_dma.h create mode 100644 sources/zc706_driver/test/test.c diff --git a/sources/zc706_driver/Makefile b/sources/zc706_driver/Makefile new file mode 100644 index 0000000..3bfa404 --- /dev/null +++ b/sources/zc706_driver/Makefile @@ -0,0 +1,13 @@ +CONFIG_MODULE_SIG=n +CONFIG_MODULE_SIG_ALL=n + +TARGET_MODULE := dma_softmc + +$(TARGET_MODULE)-objs += softmc_dma.o cdev.o +obj-m += $(TARGET_MODULE).o + +all: + make -C /usr/src/linux-headers-$(shell uname -r)/ M=$(shell pwd) modules + +clean: + make -C /usr/src/linux-headers-$(shell uname -r)/ M=$(shell pwd) clean \ No newline at end of file diff --git a/sources/zc706_driver/cdev.c b/sources/zc706_driver/cdev.c new file mode 100644 index 0000000..32c3209 --- /dev/null +++ b/sources/zc706_driver/cdev.c @@ -0,0 +1,97 @@ +#include "cdev.h" +#include "softmc_dma.h" + +static int read_offset = 0; + +static int softmc_uevent(struct device *dev, struct kobj_uevent_env *env) { + add_uevent_var(env, "DEVMODE=%#o", 0666); + return 0; +} + +void softmc_cdev_init(void) { + int err; + dev_t dev; + softmc_class = NULL; + err = alloc_chrdev_region(&dev, 0, 1, "softmc_cdev"); + dev_major = MAJOR(dev); + softmc_class = class_create(THIS_MODULE, "softmc_cdev"); + softmc_class->dev_uevent = softmc_uevent; + cdev_init(&driver_data.cdev, &softmc_fops); + driver_data.cdev.owner = THIS_MODULE; + cdev_add(&driver_data.cdev, MKDEV(dev_major, 0), 1); + device_create(softmc_class, NULL, MKDEV(dev_major, 0), NULL, "softmc_cdev", 0); +} + +void softmc_cdev_exit(void) { + device_destroy(softmc_class, MKDEV(dev_major, 0)); + class_unregister(softmc_class); + class_destroy(softmc_class); + unregister_chrdev_region(MKDEV(dev_major, 0), 1); +} + +int softmc_open(struct inode *inode, struct file *file) { + printk("SOFTMC: Device open\n"); + return 0; +} + +int softmc_release(struct inode *inode, struct file *file) { + printk("SOFTMC: Device close\n"); + return 0; +} + +long softmc_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { + printk("SOFTMC: Device ioctl\n"); + return 0; +} + +ssize_t softmc_read(struct file *file, char __user *buf, size_t count, loff_t *offset) { + int i; + int n; + size_t remaining_bytes = count; + int read_bytes = 0; + char cdev_buf[CDEV_BUF_LEN]; + #ifdef DEBUG + printk("READ CALL with count %d.\n", count); + #endif + while (remaining_bytes > 0) { + size_t step_size = remaining_bytes < CDEV_BUF_LEN ? remaining_bytes : CDEV_BUF_LEN; + n = read_dma_buffer(cdev_buf, step_size); + copy_to_user((buf + read_bytes), cdev_buf, n); + if (n < step_size) { + DBG("Requesting data.\n"); + n = load_recv_buffer(remaining_bytes); + } + read_bytes += n; + remaining_bytes -= n; + } + #ifdef DEBUG + printk("READ CALL completed with %d reads.\n", read_bytes); + #endif + return read_bytes; +} + +ssize_t softmc_write(struct file *file, const char __user *buf, size_t count, loff_t *offset) { + int n; + size_t remaining_bytes = count; + int sent_bytes = 0; + char cdev_buf[CDEV_BUF_LEN]; + #ifdef DEBUG + printk("WRITE CALL with count %d.\n", count); + #endif + while (remaining_bytes > 0) { + size_t step_size = remaining_bytes < CDEV_BUF_LEN ? remaining_bytes : CDEV_BUF_LEN; + copy_from_user(cdev_buf, (buf + sent_bytes), step_size); + n = write_dma_buffer(cdev_buf, step_size); + if (n < step_size) { + DBG("Flushing buffer.\n"); + flush_send_buffer(); + } + sent_bytes += n; + remaining_bytes -= n; + } + #ifdef DEBUG + printk("WRITE CALL completed with %d sent bytes.\n", sent_bytes); + #endif + flush_send_buffer(); + return sent_bytes; +} \ No newline at end of file diff --git a/sources/zc706_driver/cdev.h b/sources/zc706_driver/cdev.h new file mode 100644 index 0000000..43724dc --- /dev/null +++ b/sources/zc706_driver/cdev.h @@ -0,0 +1,38 @@ +#ifndef CDEV_H +#define CDEV_H + +#include +#include +#include +#include +#include +#include + +#define CDEV_BUF_LEN 256 + +struct softmc_data { + struct cdev cdev; +}; + +void softmc_cdev_init(void); +void softmc_cdev_exit(void); +int softmc_open(struct inode *inode, struct file *file); +int softmc_release(struct inode *inode, struct file *file); +long softmc_ioctl(struct file *file, unsigned int cmd, unsigned long arg); +ssize_t softmc_read(struct file *file, char __user *buf, size_t count, loff_t *offset); +ssize_t softmc_write(struct file *file, const char __user *buf, size_t count, loff_t *offset); + +static const struct file_operations softmc_fops = { + .owner = THIS_MODULE, + .open = softmc_open, + .release = softmc_release, + .unlocked_ioctl = softmc_ioctl, + .read = softmc_read, + .write = softmc_write +}; + +static int dev_major; +static struct class *softmc_class; +static struct softmc_data driver_data; + +#endif //CDEV_H \ No newline at end of file diff --git a/sources/zc706_driver/softmc_dma.c b/sources/zc706_driver/softmc_dma.c new file mode 100644 index 0000000..8579740 --- /dev/null +++ b/sources/zc706_driver/softmc_dma.c @@ -0,0 +1,207 @@ +#include "softmc_dma.h" +#include "cdev.h" + +static irqreturn_t irq_handler(int irq, void *dev_id) { + int i; + disable_interrupt(); + DBG("Interrupt received.\n"); + printk("IRQ: %d DEV_ID:%4x\n", irq, *((int *)dev_id)); + last_cmd_done = TRUE; + DBG("Waking up devices.\n"); + wake_up_all(&softmc_wq); + enable_interrupt(); + return IRQ_HANDLED; +} + +static int __init init_softmc_dma(void) { + printk(KERN_INFO "Loading DMA Module.\n"); + printk("---------------------------\n\n\n"); + int nvec; + int err; + device_id = (int *) kmalloc(sizeof(int), GFP_KERNEL); + dev = pci_get_device(VENDOR_ID, DEVICE_ID, dev); + if (dev == NULL) { + printk("pci_softmc - device not available\n"); + return -1; + } + if (pci_enable_device(dev) < 0) { + printk("pci_softmc - can not enable device\n"); + return -1; + } + u16 val = 0; + pci_read_config_word(dev, PCI_VENDOR_ID, &val); + printk("pci_softmc - VENDOR ID: 0x%x\n", val); + pci_read_config_word(dev, PCI_DEVICE_ID, &val); + *device_id = val; + printk("pci_softmc - DEVICE ID: 0x%x\n", val); + pci_read_config_word(dev, PCI_COMMAND, &val); + printk("pci_softmc - COMMAND: 0x%x\n", val); + pci_release_region(dev, 0); + if (pci_request_region(dev, 0, "pci_softmc_bar0")) { + printk("pci_softmc - could not request BAR0\n"); + return -1; + } + softmc_bar0 = pci_iomap(dev, 0, pci_resource_len(dev, 0)); + printk("pci_softmc - bar size is %lld\n", pci_resource_len(dev, 0)); + printk("pci_softmc - current_state: %d\n", dev->current_state); + printk("pci_softmc - pci_msi_vec_count: %d\n", pci_msi_vec_count(dev)); + printk("pci_softmc - msi_enabled: %d\n", dev->msi_enabled); + printk("pci_softmc - msix_enabled: %d\n", dev->msix_enabled); + printk("pci_softmc - dev->irq: %d\n", dev->irq); + err = request_irq(dev->irq, irq_handler, 0, "PCI_FPGA_SOFTMC", device_id); + printk("pci_softmc - request IRQ: %d\n", err); + send_buff = create_buffer(DMA_BUF_SIZE); + recv_buff = create_buffer(DMA_BUF_SIZE); + init_waitqueue_head(&softmc_wq); + softmc_cdev_init(); + txn_reg = (int *) kmalloc(sizeof(int), GFP_DMA); + uint64_t txn_reg_addr = virt_to_phys(txn_reg); + iowrite32((u32) (txn_reg_addr >> 32), softmc_bar0 + OFFSET_TXN_REG_LO_ADDR); + iowrite32((u32) (txn_reg_addr & 0xFFFFFFFF), softmc_bar0 + OFFSET_TXN_REG_HI_ADDR); + printk(KERN_INFO "Loaded DMA Module.\n"); + enable_interrupt(); + return 0; +} + +static void __exit exit_softmc_dma(void) { + printk(KERN_INFO "Unloading DMA Module.\n"); + free_irq(dev->irq, device_id); + printk("pci_softmc - freed IRQ\n"); + pci_release_region(dev, 0); + printk("pci_softmc - released BARs\n"); + softmc_cdev_exit(); + destroy_buffer(send_buff); + destroy_buffer(recv_buff); + printk(KERN_INFO "Unloaded DMA Module.\n"); +} + +int write_dma_buffer(void *from, int size) { + dma_buffer_t *buf = send_buff; + if (!buf) { + printk("Invalid dma buffer.\n"); + } + if (!from) { + printk("Invalid target buffer.\n"); + } + const char *src = from; + int write_count = 0; + int available_bytes = buf->capacity - buf->data_count; + if (size > available_bytes) { + size = available_bytes; + } +#ifdef DEBUG + printk("size: %d\tavailable_bytes: %d\n", size, available_bytes); +#endif + while (write_count < size) { + writeb(*(src + write_count), (buf->buffer + ((buf->start_off + write_count) % buf->capacity))); + write_count++; + } + buf->data_count += write_count; +#ifdef DEBUG + printk("WRITING DMA BUFFER:\n"); + printk("start_off: %d\tdata_count: %d\n", buf->start_off, buf->data_count); +#endif + return write_count; +} + +int read_dma_buffer(void *to, int size) { + dma_buffer_t *buf = recv_buff; + if (!buf) { + printk("Invalid dma buffer.\n"); + } + if (!to) { + printk("Invalid target buffer.\n"); + } + int read_count = 0; + int available_bytes = buf->data_count; + char *dst = to; + if (size > available_bytes) { + size = available_bytes; + } +#ifdef DEBUG + printk("size: %d\tavailable_bytes: %d\n", size, available_bytes); +#endif + while (read_count < size) { + writeb(*(buf->buffer + ((buf->start_off + read_count) % buf->capacity)), (dst + read_count)); + read_count++; + } + buf->start_off = (buf->start_off + read_count) % buf->capacity; + buf->data_count -= read_count; +#ifdef DEBUG + printk("READ DMA BUFFER:\n"); + printk("start_off: %d\tdata_count: %d\n", buf->start_off, buf->data_count); +#endif + return read_count; +} + +dma_buffer_t *create_buffer(unsigned long size) { + dma_buffer_t *buf = (dma_buffer_t *) kmalloc(sizeof(dma_buffer_t), GFP_KERNEL); + if (!buf) { + printk("Could not create dma_buffer_t\n"); + return NULL; + } + buf->buffer = (void *) kmalloc(size, GFP_DMA); + if (!buf->buffer) { + printk("Could not create buffer\n"); + return NULL; + } + buf->capacity = size; + buf->data_count = 0; + buf->start_off = 0; + return buf; +} + +void destroy_buffer(dma_buffer_t *buf) { + kfree(buf->buffer); + kfree(buf); +} + +int load_recv_buffer(int size) { + int i; + int available_size = recv_buff->capacity - recv_buff->data_count; + if (size > available_size) { + size = available_size; + } + last_cmd = CMD_WRITE; + last_cmd_done = FALSE; + uint64_t send_phy_addr = virt_to_phys(recv_buff->buffer); + iowrite32((u32) (send_phy_addr >> 32), softmc_bar0 + 4); + iowrite32((u32) (send_phy_addr & 0xFFFFFFFF), softmc_bar0 + 8); + iowrite32((u32) ((sizeof(char) * available_size) << CMD_LEN_OFFSET | CMD_WRITE), softmc_bar0); + recv_buff->start_off = 0; + recv_buff->data_count = size; + DBG("Waiting for DMA load\n"); + wait_event_interruptible(softmc_wq, last_cmd_done); + DBG("DMA loaded\n"); + return size; +} + +void flush_send_buffer(void) { + last_cmd = CMD_READ; + last_cmd_done = FALSE; + uint64_t send_phy_addr = virt_to_phys(send_buff->buffer); + iowrite32((u32) (send_phy_addr >> 32), softmc_bar0 + 4); + iowrite32((u32) (send_phy_addr & 0xFFFFFFFF), softmc_bar0 + 8); + iowrite32((u32) ((sizeof(char) * send_buff->data_count) << CMD_LEN_OFFSET | CMD_READ), softmc_bar0); + send_buff->data_count = 0; + DBG("Waiting for DMA write\n"); + wait_event_interruptible(softmc_wq, last_cmd_done); + DBG("DMA written\n"); +} + +void disable_interrupt(void) { + u16 reg; + pci_read_config_word(dev, PCI_COMMAND, ®); + reg = reg | (1ULL << INTR_BIT_OFFSET); + pci_write_config_word(dev, PCI_COMMAND, reg); +} + +void enable_interrupt(void) { + u16 reg; + pci_read_config_word(dev, PCI_COMMAND, ®); + reg = reg & ~(1ULL << INTR_BIT_OFFSET); + pci_write_config_word(dev, PCI_COMMAND, reg); +} + +module_init(init_softmc_dma); +module_exit(exit_softmc_dma); \ No newline at end of file diff --git a/sources/zc706_driver/softmc_dma.h b/sources/zc706_driver/softmc_dma.h new file mode 100644 index 0000000..b78f12f --- /dev/null +++ b/sources/zc706_driver/softmc_dma.h @@ -0,0 +1,67 @@ +#ifndef SOFTMC_DMA_H +#define SOFTMC_DMA_H + +#include +#include +#include +#include +#include +#include +#include +#include + +#define TRUE (1 == 1) +#define FALSE (1 != 1) + +#define VENDOR_ID 0x10EE +#define DEVICE_ID 0x7024 +#define BUF_LEN 64 +#define CMD_LEN_OFFSET 16 +#define CMD_WRITE 0x0003 +#define CMD_READ 0x0001 +#define DMA_BUF_SIZE 4096 +#define INTR_BIT_OFFSET 10 +#define BUS_BIT_OFFSET 2 + +#define OFFSET_TXN_REG_LO_ADDR 5 +#define OFFSET_TXN_REG_HI_ADDR 4 + +#define DEBUG + +#ifdef DEBUG +#define DBG(msg) printk("%s", msg) +#else +#define DBG(msg) while(false) +#endif + +MODULE_AUTHOR("Oguzhan Canpolat"); +MODULE_LICENSE("GPL"); + +typedef struct { + char *buffer; + int data_count; + int start_off; + int capacity; +} dma_buffer_t; + +static dma_buffer_t *send_buff; +static dma_buffer_t *recv_buff; +static int *txn_reg; +static int last_cmd; +static int last_cmd_done; +static struct pci_dev *dev; +static int *device_id; +static void __iomem *softmc_bar0; +static wait_queue_head_t softmc_wq; + +static irqreturn_t irq_handler(int irq, void *dev_id); +int load_recv_buffer(int bytes); +void flush_send_buffer(void); +int write_dma_buffer(void *from, int size); +int read_dma_buffer(void *to, int size); +dma_buffer_t *create_buffer(unsigned long size); +void destroy_buffer(dma_buffer_t *buf); +void disable_interrupt(void); +void enable_interrupt(void); + +#endif //SOFTMC_DMA_H \ No newline at end of file diff --git a/sources/zc706_driver/test/test.c b/sources/zc706_driver/test/test.c new file mode 100644 index 0000000..9ae4126 --- /dev/null +++ b/sources/zc706_driver/test/test.c @@ -0,0 +1,43 @@ +#include +#include + +#define BUF_LEN 4096*4 + +void read_test() { + char buf[BUF_LEN]; + for (int i = 0; i < BUF_LEN; i++) { + buf[i] = i; + } + FILE *fp = fopen("/dev/softmc_cdev", "r"); + if (!fp) { + printf("No file\n"); + return; + } + printf("Reading once\n"); + fread(buf, sizeof(char), BUF_LEN, fp); + printf("%s", buf); + printf("\n--------\n"); + fread(buf, sizeof(char), BUF_LEN, fp); + printf("%s", buf); + printf("\n--------\n"); + fclose(fp); +} + +void write_test() { + char buf[BUF_LEN]; + for (int i = 0; i < BUF_LEN; i++) { + buf[i] = i; + } + FILE *fp = fopen("/dev/softmc_cdev", "w"); + if (!fp) { + printf("No file\n"); + return; + } + fwrite(buf, sizeof(char), BUF_LEN, fp); + fclose(fp); +} + +int main() { + write_test(); + return 0; +} \ No newline at end of file From 1554bd5bd10a362de9504605e421d7859a58a6d9 Mon Sep 17 00:00:00 2001 From: kirbyydoge Date: Sat, 31 Aug 2024 17:46:10 +0200 Subject: [PATCH 3/5] Add ZC706 to platform api and create ZC706 driver README --- projects/ZC706/verilog/pcie_top.v | 1211 +++++++++++++++-------------- sources/api/board.cpp | 31 + sources/api/board.h | 3 +- sources/zc706_driver/README.md | 13 + 4 files changed, 653 insertions(+), 605 deletions(-) create mode 100644 sources/zc706_driver/README.md diff --git a/projects/ZC706/verilog/pcie_top.v b/projects/ZC706/verilog/pcie_top.v index 2e5d55a..3c15765 100644 --- a/projects/ZC706/verilog/pcie_top.v +++ b/projects/ZC706/verilog/pcie_top.v @@ -57,650 +57,653 @@ `include "project.vh" // `define DEBUG +// `define ILA_CORES `timescale 1ns / 1ps (* DowngradeIPIdentifiedWarnings = "yes" *) module pcie_top # ( - parameter PL_FAST_TRAIN = "FALSE", // Simulation Speedup - parameter EXT_PIPE_SIM = "FALSE", // This Parameter has effect on selecting Enable External PIPE Interface in GUI. - parameter PCIE_EXT_CLK = "TRUE", // Use External Clocking Module - parameter PCIE_EXT_GT_COMMON = "FALSE", - parameter REF_CLK_FREQ = 0, // 0 - 100 MHz, 1 - 125 MHz, 2 - 250 MHz - parameter C_DATA_WIDTH = 64, // RX/TX interface data width - parameter KEEP_WIDTH = C_DATA_WIDTH / 8 // TSTRB width + parameter PL_FAST_TRAIN = "FALSE", // Simulation Speedup + parameter EXT_PIPE_SIM = "FALSE", // This Parameter has effect on selecting Enable External PIPE Interface in GUI. + parameter PCIE_EXT_CLK = "TRUE", // Use External Clocking Module + parameter PCIE_EXT_GT_COMMON = "FALSE", + parameter REF_CLK_FREQ = 0, // 0 - 100 MHz, 1 - 125 MHz, 2 - 250 MHz + parameter C_DATA_WIDTH = 64, // RX/TX interface data width + parameter KEEP_WIDTH = C_DATA_WIDTH / 8 // TSTRB width ) ( - output [3:0] pci_exp_txp, - output [3:0] pci_exp_txn, - input [3:0] pci_exp_rxp, - input [3:0] pci_exp_rxn, + output [3:0] pci_exp_txp, + output [3:0] pci_exp_txn, + input [3:0] pci_exp_rxp, + input [3:0] pci_exp_rxn, - output led_0, - output led_2, - output led_3, + output led_0, + output led_2, + output led_3, `ifndef DEBUG - output [`SOFTMC_STREAM_WIDTH-1:0] softmc_h2c_tdata, - output [`SOFTMC_STREAM_KEEP-1:0] softmc_h2c_tkeep, - output softmc_h2c_tvalid, - input softmc_h2c_tready, - output softmc_h2c_tlast, - - input [`SOFTMC_STREAM_WIDTH-1:0] softmc_c2h_tdata, - input [`SOFTMC_STREAM_KEEP-1:0] softmc_c2h_tkeep, - input softmc_c2h_tvalid, - output softmc_c2h_tready, - input softmc_c2h_tlast, - - output user_clk_o, - output user_reset_o, + output [`SOFTMC_STREAM_WIDTH-1:0] softmc_h2c_tdata, + output [`SOFTMC_STREAM_KEEP-1:0] softmc_h2c_tkeep, + output softmc_h2c_tvalid, + input softmc_h2c_tready, + output softmc_h2c_tlast, + + input [`SOFTMC_STREAM_WIDTH-1:0] softmc_c2h_tdata, + input [`SOFTMC_STREAM_KEEP-1:0] softmc_c2h_tkeep, + input softmc_c2h_tvalid, + output softmc_c2h_tready, + input softmc_c2h_tlast, + + output user_clk_o, + output user_reset_o, `endif - input sys_clk_p, - input sys_clk_n, - input sys_rst_n + input sys_clk_p, + input sys_clk_n, + input sys_rst_n ); // Wire Declarations - wire pipe_mmcm_rst_n; - - wire user_clk; - wire user_reset; - wire user_lnk_up; - - assign user_clk_o = user_clk; - assign user_reset_o = user_reset; - - // Tx - wire s_axis_tx_tready; - wire [3:0] s_axis_tx_tuser; - wire [C_DATA_WIDTH-1:0] s_axis_tx_tdata; - wire [KEEP_WIDTH-1:0] s_axis_tx_tkeep; - wire s_axis_tx_tlast; - wire s_axis_tx_tvalid; - - // Rx - wire [C_DATA_WIDTH-1:0] m_axis_rx_tdata; - wire [KEEP_WIDTH-1:0] m_axis_rx_tkeep; - wire m_axis_rx_tlast; - wire m_axis_rx_tvalid; - wire m_axis_rx_tready; - wire [21:0] m_axis_rx_tuser; - - wire tx_cfg_gnt; - wire rx_np_ok; - wire rx_np_req; - wire cfg_turnoff_ok; - wire cfg_trn_pending; - wire cfg_pm_halt_aspm_l0s; - wire cfg_pm_halt_aspm_l1; - wire cfg_pm_force_state_en; - wire [1:0] cfg_pm_force_state; - wire cfg_pm_wake; - wire [63:0] cfg_dsn; - - // Flow Control - wire [2:0] fc_sel; - - //------------------------------------------------------- - // Configuration (CFG) Interface - //------------------------------------------------------- - wire cfg_err_ecrc; - wire cfg_err_cor; - wire cfg_err_ur; - wire cfg_err_cpl_timeout; - wire cfg_err_cpl_abort; - wire cfg_err_cpl_unexpect; - wire cfg_err_posted; - wire cfg_err_locked; - wire [47:0] cfg_err_tlp_cpl_header; - wire [127:0] cfg_err_aer_headerlog; - wire [4:0] cfg_aer_interrupt_msgnum; - - wire cfg_interrupt; - wire cfg_interrupt_rdy; - wire cfg_interrupt_assert; - wire [7:0] cfg_interrupt_di; - wire cfg_interrupt_stat; - wire [4:0] cfg_pciecap_interrupt_msgnum; - wire cfg_interrupt_msienable; - - wire cfg_to_turnoff; - wire [7:0] cfg_bus_number; - wire [4:0] cfg_device_number; - wire [2:0] cfg_function_number; - - wire [31:0] cfg_mgmt_di; - wire [31:0] cfg_mgmt_do; - wire [3:0] cfg_mgmt_byte_en; - wire [9:0] cfg_mgmt_dwaddr; - wire cfg_mgmt_wr_en; - wire cfg_mgmt_rd_en; - wire cfg_mgmt_rd_wr_done; - wire cfg_mgmt_wr_readonly; - - wire [15:0] cfg_dcommand; - wire [15:0] cfg_command; - - //------------------------------------------------------- - // Physical Layer Control and Status (PL) Interface - //------------------------------------------------------- - wire pl_directed_link_auton; - wire [1:0] pl_directed_link_change; - wire pl_directed_link_speed; - wire [1:0] pl_directed_link_width; - wire pl_upstream_prefer_deemph; - - wire sys_rst_n_c; + wire pipe_mmcm_rst_n; + + wire user_clk; + wire user_reset; + wire user_lnk_up; + + assign user_clk_o = user_clk; + assign user_reset_o = user_reset; + + // Tx + wire s_axis_tx_tready; + wire [3:0] s_axis_tx_tuser; + wire [C_DATA_WIDTH-1:0] s_axis_tx_tdata; + wire [KEEP_WIDTH-1:0] s_axis_tx_tkeep; + wire s_axis_tx_tlast; + wire s_axis_tx_tvalid; + + // Rx + wire [C_DATA_WIDTH-1:0] m_axis_rx_tdata; + wire [KEEP_WIDTH-1:0] m_axis_rx_tkeep; + wire m_axis_rx_tlast; + wire m_axis_rx_tvalid; + wire m_axis_rx_tready; + wire [21:0] m_axis_rx_tuser; + + wire tx_cfg_gnt; + wire rx_np_ok; + wire rx_np_req; + wire cfg_turnoff_ok; + wire cfg_trn_pending; + wire cfg_pm_halt_aspm_l0s; + wire cfg_pm_halt_aspm_l1; + wire cfg_pm_force_state_en; + wire [1:0] cfg_pm_force_state; + wire cfg_pm_wake; + wire [63:0] cfg_dsn; + + // Flow Control + wire [2:0] fc_sel; + + //------------------------------------------------------- + // Configuration (CFG) Interface + //------------------------------------------------------- + wire cfg_err_ecrc; + wire cfg_err_cor; + wire cfg_err_ur; + wire cfg_err_cpl_timeout; + wire cfg_err_cpl_abort; + wire cfg_err_cpl_unexpect; + wire cfg_err_posted; + wire cfg_err_locked; + wire [47:0] cfg_err_tlp_cpl_header; + wire [127:0] cfg_err_aer_headerlog; + wire [4:0] cfg_aer_interrupt_msgnum; + + wire cfg_interrupt; + wire cfg_interrupt_rdy; + wire cfg_interrupt_assert; + wire [7:0] cfg_interrupt_di; + wire cfg_interrupt_stat; + wire [4:0] cfg_pciecap_interrupt_msgnum; + wire cfg_interrupt_msienable; + + wire cfg_to_turnoff; + wire [7:0] cfg_bus_number; + wire [4:0] cfg_device_number; + wire [2:0] cfg_function_number; + + wire [31:0] cfg_mgmt_di; + wire [31:0] cfg_mgmt_do; + wire [3:0] cfg_mgmt_byte_en; + wire [9:0] cfg_mgmt_dwaddr; + wire cfg_mgmt_wr_en; + wire cfg_mgmt_rd_en; + wire cfg_mgmt_rd_wr_done; + wire cfg_mgmt_wr_readonly; + + wire [15:0] cfg_dcommand; + wire [15:0] cfg_command; + + //------------------------------------------------------- + // Physical Layer Control and Status (PL) Interface + //------------------------------------------------------- + wire pl_directed_link_auton; + wire [1:0] pl_directed_link_change; + wire pl_directed_link_speed; + wire [1:0] pl_directed_link_width; + wire pl_upstream_prefer_deemph; + + wire sys_rst_n_c; // Register Declaration - reg user_reset_q; - reg user_lnk_up_q; - reg [25:0] user_clk_heartbeat = 'h0; + reg user_reset_q; + reg user_lnk_up_q; + reg [25:0] user_clk_heartbeat = 'h0; // Local Parameters - localparam TCQ = 1; - localparam USER_CLK_FREQ = 3; - localparam USER_CLK2_DIV2 = "FALSE"; - localparam USERCLK2_FREQ = (USER_CLK2_DIV2 == "TRUE") ? (USER_CLK_FREQ == 4) ? 3 : (USER_CLK_FREQ == 3) ? 2 : USER_CLK_FREQ: USER_CLK_FREQ; + localparam TCQ = 1; + localparam USER_CLK_FREQ = 3; + localparam USER_CLK2_DIV2 = "FALSE"; + localparam USERCLK2_FREQ = (USER_CLK2_DIV2 == "TRUE") ? (USER_CLK_FREQ == 4) ? 3 : (USER_CLK_FREQ == 3) ? 2 : USER_CLK_FREQ: USER_CLK_FREQ; //-----------------------------I/O BUFFERS------------------------// - IBUF sys_reset_n_ibuf (.O(sys_rst_n_c), .I(sys_rst_n)); + IBUF sys_reset_n_ibuf (.O(sys_rst_n_c), .I(sys_rst_n)); - IBUFDS_GTE2 refclk_ibuf (.O(sys_clk), .ODIV2(), .I(sys_clk_p), .CEB(1'b0), .IB(sys_clk_n)); + IBUFDS_GTE2 refclk_ibuf (.O(sys_clk), .ODIV2(), .I(sys_clk_p), .CEB(1'b0), .IB(sys_clk_n)); - OBUF led_0_obuf (.O(led_0), .I(!user_reset)); - OBUF led_2_obuf (.O(led_2), .I(user_lnk_up)); - OBUF led_3_obuf (.O(led_3), .I(user_clk_heartbeat[25])); + OBUF led_0_obuf (.O(led_0), .I(!user_reset)); + OBUF led_2_obuf (.O(led_2), .I(user_lnk_up)); + OBUF led_3_obuf (.O(led_3), .I(user_clk_heartbeat[25])); - always @(posedge user_clk) begin - user_reset_q <= user_reset; - user_lnk_up_q <= user_lnk_up; - end + always @(posedge user_clk) begin + user_reset_q <= user_reset; + user_lnk_up_q <= user_lnk_up; + end - // Create a Clock Heartbeat on LED #3 - always @(posedge user_clk) begin - user_clk_heartbeat <= #TCQ user_clk_heartbeat + 1'b1; - end + // Create a Clock Heartbeat on LED #3 + always @(posedge user_clk) begin + user_clk_heartbeat <= #TCQ user_clk_heartbeat + 1'b1; + end - assign pipe_mmcm_rst_n = 1'b1; + assign pipe_mmcm_rst_n = 1'b1; `ifdef DEBUG - localparam DATA_LIMIT = 'd1024; - wire [`SOFTMC_STREAM_WIDTH-1:0] softmc_h2c_tdata; - wire [`SOFTMC_STREAM_KEEP-1:0] softmc_h2c_tkeep; - wire softmc_h2c_tvalid; - reg softmc_h2c_tready; - wire softmc_h2c_tlast; - - reg [`SOFTMC_STREAM_WIDTH-1:0] softmc_c2h_tdata; - reg [`SOFTMC_STREAM_KEEP-1:0] softmc_c2h_tkeep; - reg softmc_c2h_tvalid; - wire softmc_c2h_tready; - reg softmc_c2h_tlast; - - reg [15:0] data_count; - reg [7:0] data_base; - - integer data_loop_i; - always @(posedge user_clk) begin - if (user_reset_q) begin - softmc_c2h_tdata <= 0; - softmc_c2h_tkeep <= 0; - softmc_c2h_tvalid <= 0; - softmc_c2h_tlast <= 0; - softmc_h2c_tready <= 0; - data_count <= 0; - data_base <= 0; - end - else begin - softmc_c2h_tkeep <= {`SOFTMC_STREAM_KEEP{1'b1}}; - softmc_c2h_tlast <= data_count == (DATA_LIMIT - 1); - softmc_h2c_tready <= 1; - if (softmc_c2h_tready && softmc_c2h_tvalid) begin - for (data_loop_i = 0; data_loop_i < `SOFTMC_STREAM_KEEP; data_loop_i = data_loop_i + 1) begin - softmc_c2h_tdata[(`SOFTMC_STREAM_KEEP - data_loop_i - 1) * 8 +: 8] <= (data_base + `SOFTMC_STREAM_KEEP) + data_loop_i; - end - softmc_c2h_tvalid <= data_count < (DATA_LIMIT - 1); - data_count <= data_count + (`SOFTMC_STREAM_WIDTH / 32); // each data is 32 bits long - data_base <= data_base + `SOFTMC_STREAM_KEEP; - end - else begin - for (data_loop_i = 0; data_loop_i < `SOFTMC_STREAM_KEEP; data_loop_i = data_loop_i + 1) begin - softmc_c2h_tdata[(`SOFTMC_STREAM_KEEP - data_loop_i - 1) * 8 +: 8] <= data_base + data_loop_i; - end - softmc_c2h_tvalid <= data_count < DATA_LIMIT; - end - end - end + localparam DATA_LIMIT = 'd1024; + wire [`SOFTMC_STREAM_WIDTH-1:0] softmc_h2c_tdata; + wire [`SOFTMC_STREAM_KEEP-1:0] softmc_h2c_tkeep; + wire softmc_h2c_tvalid; + reg softmc_h2c_tready; + wire softmc_h2c_tlast; + + reg [`SOFTMC_STREAM_WIDTH-1:0] softmc_c2h_tdata; + reg [`SOFTMC_STREAM_KEEP-1:0] softmc_c2h_tkeep; + reg softmc_c2h_tvalid; + wire softmc_c2h_tready; + reg softmc_c2h_tlast; + + reg [15:0] data_count; + reg [7:0] data_base; + + integer data_loop_i; + always @(posedge user_clk) begin + if (user_reset_q) begin + softmc_c2h_tdata <= 0; + softmc_c2h_tkeep <= 0; + softmc_c2h_tvalid <= 0; + softmc_c2h_tlast <= 0; + softmc_h2c_tready <= 0; + data_count <= 0; + data_base <= 0; + end + else begin + softmc_c2h_tkeep <= {`SOFTMC_STREAM_KEEP{1'b1}}; + softmc_c2h_tlast <= data_count == (DATA_LIMIT - 1); + softmc_h2c_tready <= 1; + if (softmc_c2h_tready && softmc_c2h_tvalid) begin + for (data_loop_i = 0; data_loop_i < `SOFTMC_STREAM_KEEP; data_loop_i = data_loop_i + 1) begin + softmc_c2h_tdata[(`SOFTMC_STREAM_KEEP - data_loop_i - 1) * 8 +: 8] <= (data_base + `SOFTMC_STREAM_KEEP) + data_loop_i; + end + softmc_c2h_tvalid <= data_count < (DATA_LIMIT - 1); + data_count <= data_count + (`SOFTMC_STREAM_WIDTH / 32); // each data is 32 bits long + data_base <= data_base + `SOFTMC_STREAM_KEEP; + end + else begin + for (data_loop_i = 0; data_loop_i < `SOFTMC_STREAM_KEEP; data_loop_i = data_loop_i + 1) begin + softmc_c2h_tdata[(`SOFTMC_STREAM_KEEP - data_loop_i - 1) * 8 +: 8] <= data_base + data_loop_i; + end + softmc_c2h_tvalid <= data_count < DATA_LIMIT; + end + end + end `endif zc706_pcie_x4_gen2_support # - ( - .LINK_CAP_MAX_LINK_WIDTH ( 4 ), // PCIe Lane Width - .C_DATA_WIDTH ( C_DATA_WIDTH ), // RX/TX interface data width - .KEEP_WIDTH ( KEEP_WIDTH ), // TSTRB width - .PCIE_REFCLK_FREQ ( REF_CLK_FREQ ), // PCIe reference clock frequency - .PCIE_USERCLK1_FREQ ( USER_CLK_FREQ +1 ), // PCIe user clock 1 frequency - .PCIE_USERCLK2_FREQ ( USERCLK2_FREQ +1 ), // PCIe user clock 2 frequency - .PCIE_USE_MODE ("3.0"), // PCIe use mode - .PCIE_GT_DEVICE ("GTX") // PCIe GT device - ) + ( + .LINK_CAP_MAX_LINK_WIDTH ( 4 ), // PCIe Lane Width + .C_DATA_WIDTH ( C_DATA_WIDTH ), // RX/TX interface data width + .KEEP_WIDTH ( KEEP_WIDTH ), // TSTRB width + .PCIE_REFCLK_FREQ ( REF_CLK_FREQ ), // PCIe reference clock frequency + .PCIE_USERCLK1_FREQ ( USER_CLK_FREQ +1 ), // PCIe user clock 1 frequency + .PCIE_USERCLK2_FREQ ( USERCLK2_FREQ +1 ), // PCIe user clock 2 frequency + .PCIE_USE_MODE ("3.0"), // PCIe use mode + .PCIE_GT_DEVICE ("GTX") // PCIe GT device + ) zc706_pcie_x4_gen2_support_i - ( - - //----------------------------------------------------------------------------------------------------------------// - // PCI Express (pci_exp) Interface // - //----------------------------------------------------------------------------------------------------------------// - // Tx - .pci_exp_txn ( pci_exp_txn ), - .pci_exp_txp ( pci_exp_txp ), - - // Rx - .pci_exp_rxn ( pci_exp_rxn ), - .pci_exp_rxp ( pci_exp_rxp ), - - //----------------------------------------------------------------------------------------------------------------// - // Clocking Sharing Interface // - //----------------------------------------------------------------------------------------------------------------// - .pipe_pclk_out_slave ( ), - .pipe_rxusrclk_out ( ), - .pipe_rxoutclk_out ( ), - .pipe_dclk_out ( ), - .pipe_userclk1_out ( ), - .pipe_oobclk_out ( ), - .pipe_userclk2_out ( ), - .pipe_mmcm_lock_out ( ), - .pipe_pclk_sel_slave ( 4'b0), - .pipe_mmcm_rst_n ( pipe_mmcm_rst_n ), // Async | Async - - - //----------------------------------------------------------------------------------------------------------------// - // AXI-S Interface // - //----------------------------------------------------------------------------------------------------------------// - - // Common - .user_clk_out ( user_clk ), - .user_reset_out ( user_reset ), - .user_lnk_up ( user_lnk_up ), - .user_app_rdy ( ), - - // TX - .s_axis_tx_tready ( s_axis_tx_tready ), - .s_axis_tx_tdata ( s_axis_tx_tdata ), - .s_axis_tx_tkeep ( s_axis_tx_tkeep ), - .s_axis_tx_tuser ( s_axis_tx_tuser ), - .s_axis_tx_tlast ( s_axis_tx_tlast ), - .s_axis_tx_tvalid ( s_axis_tx_tvalid ), - - // Rx - .m_axis_rx_tdata ( m_axis_rx_tdata ), - .m_axis_rx_tkeep ( m_axis_rx_tkeep ), - .m_axis_rx_tlast ( m_axis_rx_tlast ), - .m_axis_rx_tvalid ( m_axis_rx_tvalid ), - .m_axis_rx_tready ( m_axis_rx_tready ), - .m_axis_rx_tuser ( m_axis_rx_tuser ), - - // Flow Control - .fc_cpld ( ), - .fc_cplh ( ), - .fc_npd ( ), - .fc_nph ( ), - .fc_pd ( ), - .fc_ph ( ), - .fc_sel ( fc_sel ), - - // Management Interface - .cfg_mgmt_di ( cfg_mgmt_di ), - .cfg_mgmt_byte_en ( cfg_mgmt_byte_en ), - .cfg_mgmt_dwaddr ( cfg_mgmt_dwaddr ), - .cfg_mgmt_wr_en ( cfg_mgmt_wr_en ), - .cfg_mgmt_rd_en ( cfg_mgmt_rd_en ), - .cfg_mgmt_wr_readonly ( cfg_mgmt_wr_readonly ), - - //------------------------------------------------// - // EP and RP // - //------------------------------------------------// - .cfg_mgmt_do ( cfg_mgmt_do ), - .cfg_mgmt_rd_wr_done ( cfg_mgmt_rd_wr_done ), - .cfg_mgmt_wr_rw1c_as_rw ( 1'b0 ), - - // Error Reporting Interface - .cfg_err_ecrc ( cfg_err_ecrc ), - .cfg_err_ur ( cfg_err_ur ), - .cfg_err_cpl_timeout ( cfg_err_cpl_timeout ), - .cfg_err_cpl_unexpect ( cfg_err_cpl_unexpect ), - .cfg_err_cpl_abort ( cfg_err_cpl_abort ), - .cfg_err_posted ( cfg_err_posted ), - .cfg_err_cor ( cfg_err_cor ), - .cfg_err_atomic_egress_blocked ( cfg_err_atomic_egress_blocked ), - .cfg_err_internal_cor ( cfg_err_internal_cor ), - .cfg_err_malformed ( cfg_err_malformed ), - .cfg_err_mc_blocked ( cfg_err_mc_blocked ), - .cfg_err_poisoned ( cfg_err_poisoned ), - .cfg_err_norecovery ( cfg_err_norecovery ), - .cfg_err_tlp_cpl_header ( cfg_err_tlp_cpl_header ), - .cfg_err_cpl_rdy ( ), - .cfg_err_locked ( cfg_err_locked ), - .cfg_err_acs ( cfg_err_acs ), - .cfg_err_internal_uncor ( cfg_err_internal_uncor ), - - //----------------------------------------------------------------------------------------------------------------// - // AER Interface // - //----------------------------------------------------------------------------------------------------------------// - .cfg_err_aer_headerlog ( cfg_err_aer_headerlog ), - .cfg_err_aer_headerlog_set ( ), - .cfg_aer_ecrc_check_en ( ), - .cfg_aer_ecrc_gen_en ( ), - .cfg_aer_interrupt_msgnum ( cfg_aer_interrupt_msgnum ), - - .tx_cfg_gnt ( tx_cfg_gnt ), - .rx_np_ok ( rx_np_ok ), - .rx_np_req ( rx_np_req ), - .cfg_trn_pending ( cfg_trn_pending ), - .cfg_pm_halt_aspm_l0s ( cfg_pm_halt_aspm_l0s ), - .cfg_pm_halt_aspm_l1 ( cfg_pm_halt_aspm_l1 ), - .cfg_pm_force_state_en ( cfg_pm_force_state_en ), - .cfg_pm_force_state ( cfg_pm_force_state ), - .cfg_dsn ( cfg_dsn ), - .cfg_turnoff_ok ( cfg_turnoff_ok ), - .cfg_pm_wake ( cfg_pm_wake ), - //------------------------------------------------// - // RP Only // - //------------------------------------------------// - .cfg_pm_send_pme_to ( 1'b0 ), - .cfg_ds_bus_number ( 8'b0 ), - .cfg_ds_device_number ( 5'b0 ), - .cfg_ds_function_number ( 3'b0 ), - - //------------------------------------------------// - // EP Only // - //------------------------------------------------// - .cfg_interrupt ( cfg_interrupt ), - .cfg_interrupt_rdy ( cfg_interrupt_rdy ), - .cfg_interrupt_assert ( cfg_interrupt_assert ), - .cfg_interrupt_di ( cfg_interrupt_di ), - .cfg_interrupt_do ( ), - .cfg_interrupt_mmenable ( ), - .cfg_interrupt_msienable ( cfg_interrupt_msienable ), - .cfg_interrupt_msixenable ( ), - .cfg_interrupt_msixfm ( ), - .cfg_interrupt_stat ( cfg_interrupt_stat ), - .cfg_pciecap_interrupt_msgnum ( cfg_pciecap_interrupt_msgnum ), - - //----------------------------------------------------------------------------------------------------------------// - // Configuration (CFG) Interface // - //----------------------------------------------------------------------------------------------------------------// - .cfg_status ( ), - .cfg_command ( cfg_command ), - .cfg_dstatus ( ), - .cfg_lstatus ( ), - .cfg_pcie_link_state ( ), - .cfg_dcommand ( cfg_dcommand ), - .cfg_lcommand ( ), - .cfg_dcommand2 ( ), - - .cfg_pmcsr_pme_en ( ), - .cfg_pmcsr_powerstate ( ), - .cfg_pmcsr_pme_status ( ), - .cfg_received_func_lvl_rst ( ), - .tx_buf_av ( ), - .tx_err_drop ( ), - .tx_cfg_req ( ), - .cfg_to_turnoff ( cfg_to_turnoff ), - .cfg_bus_number ( cfg_bus_number ), - .cfg_device_number ( cfg_device_number ), - .cfg_function_number ( cfg_function_number ), - .cfg_bridge_serr_en ( ), - .cfg_slot_control_electromech_il_ctl_pulse ( ), - .cfg_root_control_syserr_corr_err_en ( ), - .cfg_root_control_syserr_non_fatal_err_en ( ), - .cfg_root_control_syserr_fatal_err_en ( ), - .cfg_root_control_pme_int_en ( ), - .cfg_aer_rooterr_corr_err_reporting_en ( ), - .cfg_aer_rooterr_non_fatal_err_reporting_en( ), - .cfg_aer_rooterr_fatal_err_reporting_en ( ), - .cfg_aer_rooterr_corr_err_received ( ), - .cfg_aer_rooterr_non_fatal_err_received ( ), - .cfg_aer_rooterr_fatal_err_received ( ), - //----------------------------------------------------------------------------------------------------------------// - // VC interface // - //---------------------------------------------------------------------------------------------------------------// - .cfg_vc_tcvc_map ( ), - - .cfg_msg_received ( ), - .cfg_msg_data ( ), - .cfg_msg_received_err_cor ( ), - .cfg_msg_received_err_non_fatal ( ), - .cfg_msg_received_err_fatal ( ), - .cfg_msg_received_pm_as_nak ( ), - .cfg_msg_received_pme_to_ack ( ), - .cfg_msg_received_assert_int_a ( ), - .cfg_msg_received_assert_int_b ( ), - .cfg_msg_received_assert_int_c ( ), - .cfg_msg_received_assert_int_d ( ), - .cfg_msg_received_deassert_int_a ( ), - .cfg_msg_received_deassert_int_b ( ), - .cfg_msg_received_deassert_int_c ( ), - .cfg_msg_received_deassert_int_d ( ), - .cfg_msg_received_pm_pme ( ), - .cfg_msg_received_setslotpowerlimit ( ), - - //----------------------------------------------------------------------------------------------------------------// - // Physical Layer Control and Status (PL) Interface // - //----------------------------------------------------------------------------------------------------------------// - .pl_directed_link_change ( pl_directed_link_change ), - .pl_directed_link_width ( pl_directed_link_width ), - .pl_directed_link_speed ( pl_directed_link_speed ), - .pl_directed_link_auton ( pl_directed_link_auton ), - .pl_upstream_prefer_deemph ( pl_upstream_prefer_deemph ), - - .pl_sel_lnk_rate ( ), - .pl_sel_lnk_width ( ), - .pl_ltssm_state ( ), - .pl_lane_reversal_mode ( ), - - .pl_phy_lnk_up ( ), - .pl_tx_pm_state ( ), - .pl_rx_pm_state ( ), - - .pl_link_upcfg_cap ( ), - .pl_link_gen2_cap ( ), - .pl_link_partner_gen2_supported ( ), - .pl_initial_link_width ( ), - - .pl_directed_change_done ( ), - - //------------------------------------------------// - // EP Only // - //------------------------------------------------// - .pl_received_hot_rst ( ), - - //------------------------------------------------// - // RP Only // - //------------------------------------------------// - .pl_transmit_hot_rst ( 1'b0 ), - .pl_downstream_deemph_source ( 1'b0 ), - - //----------------------------------------------------------------------------------------------------------------// - // PCIe DRP (PCIe DRP) Interface // - //----------------------------------------------------------------------------------------------------------------// - .pcie_drp_clk ( 1'b1 ), - .pcie_drp_en ( 1'b0 ), - .pcie_drp_we ( 1'b0 ), - .pcie_drp_addr ( 9'h0 ), - .pcie_drp_di ( 16'h0 ), - .pcie_drp_rdy ( ), - .pcie_drp_do ( ), - - - - //----------------------------------------------------------------------------------------------------------------// - // System (SYS) Interface // - //----------------------------------------------------------------------------------------------------------------// - .sys_clk ( sys_clk ), - .sys_rst_n ( sys_rst_n_c ) + ( + + //----------------------------------------------------------------------------------------------------------------// + // PCI Express (pci_exp) Interface // + //----------------------------------------------------------------------------------------------------------------// + // Tx + .pci_exp_txn ( pci_exp_txn ), + .pci_exp_txp ( pci_exp_txp ), + + // Rx + .pci_exp_rxn ( pci_exp_rxn ), + .pci_exp_rxp ( pci_exp_rxp ), + + //----------------------------------------------------------------------------------------------------------------// + // Clocking Sharing Interface // + //----------------------------------------------------------------------------------------------------------------// + .pipe_pclk_out_slave ( ), + .pipe_rxusrclk_out ( ), + .pipe_rxoutclk_out ( ), + .pipe_dclk_out ( ), + .pipe_userclk1_out ( ), + .pipe_oobclk_out ( ), + .pipe_userclk2_out ( ), + .pipe_mmcm_lock_out ( ), + .pipe_pclk_sel_slave ( 4'b0), + .pipe_mmcm_rst_n ( pipe_mmcm_rst_n ), // Async | Async + + + //----------------------------------------------------------------------------------------------------------------// + // AXI-S Interface // + //----------------------------------------------------------------------------------------------------------------// + + // Common + .user_clk_out ( user_clk ), + .user_reset_out ( user_reset ), + .user_lnk_up ( user_lnk_up ), + .user_app_rdy ( ), + + // TX + .s_axis_tx_tready ( s_axis_tx_tready ), + .s_axis_tx_tdata ( s_axis_tx_tdata ), + .s_axis_tx_tkeep ( s_axis_tx_tkeep ), + .s_axis_tx_tuser ( s_axis_tx_tuser ), + .s_axis_tx_tlast ( s_axis_tx_tlast ), + .s_axis_tx_tvalid ( s_axis_tx_tvalid ), + + // Rx + .m_axis_rx_tdata ( m_axis_rx_tdata ), + .m_axis_rx_tkeep ( m_axis_rx_tkeep ), + .m_axis_rx_tlast ( m_axis_rx_tlast ), + .m_axis_rx_tvalid ( m_axis_rx_tvalid ), + .m_axis_rx_tready ( m_axis_rx_tready ), + .m_axis_rx_tuser ( m_axis_rx_tuser ), + + // Flow Control + .fc_cpld ( ), + .fc_cplh ( ), + .fc_npd ( ), + .fc_nph ( ), + .fc_pd ( ), + .fc_ph ( ), + .fc_sel ( fc_sel ), + + // Management Interface + .cfg_mgmt_di ( cfg_mgmt_di ), + .cfg_mgmt_byte_en ( cfg_mgmt_byte_en ), + .cfg_mgmt_dwaddr ( cfg_mgmt_dwaddr ), + .cfg_mgmt_wr_en ( cfg_mgmt_wr_en ), + .cfg_mgmt_rd_en ( cfg_mgmt_rd_en ), + .cfg_mgmt_wr_readonly ( cfg_mgmt_wr_readonly ), + + //------------------------------------------------// + // EP and RP // + //------------------------------------------------// + .cfg_mgmt_do ( cfg_mgmt_do ), + .cfg_mgmt_rd_wr_done ( cfg_mgmt_rd_wr_done ), + .cfg_mgmt_wr_rw1c_as_rw ( 1'b0 ), + + // Error Reporting Interface + .cfg_err_ecrc ( cfg_err_ecrc ), + .cfg_err_ur ( cfg_err_ur ), + .cfg_err_cpl_timeout ( cfg_err_cpl_timeout ), + .cfg_err_cpl_unexpect ( cfg_err_cpl_unexpect ), + .cfg_err_cpl_abort ( cfg_err_cpl_abort ), + .cfg_err_posted ( cfg_err_posted ), + .cfg_err_cor ( cfg_err_cor ), + .cfg_err_atomic_egress_blocked ( cfg_err_atomic_egress_blocked ), + .cfg_err_internal_cor ( cfg_err_internal_cor ), + .cfg_err_malformed ( cfg_err_malformed ), + .cfg_err_mc_blocked ( cfg_err_mc_blocked ), + .cfg_err_poisoned ( cfg_err_poisoned ), + .cfg_err_norecovery ( cfg_err_norecovery ), + .cfg_err_tlp_cpl_header ( cfg_err_tlp_cpl_header ), + .cfg_err_cpl_rdy ( ), + .cfg_err_locked ( cfg_err_locked ), + .cfg_err_acs ( cfg_err_acs ), + .cfg_err_internal_uncor ( cfg_err_internal_uncor ), + + //----------------------------------------------------------------------------------------------------------------// + // AER Interface // + //----------------------------------------------------------------------------------------------------------------// + .cfg_err_aer_headerlog ( cfg_err_aer_headerlog ), + .cfg_err_aer_headerlog_set ( ), + .cfg_aer_ecrc_check_en ( ), + .cfg_aer_ecrc_gen_en ( ), + .cfg_aer_interrupt_msgnum ( cfg_aer_interrupt_msgnum ), + + .tx_cfg_gnt ( tx_cfg_gnt ), + .rx_np_ok ( rx_np_ok ), + .rx_np_req ( rx_np_req ), + .cfg_trn_pending ( cfg_trn_pending ), + .cfg_pm_halt_aspm_l0s ( cfg_pm_halt_aspm_l0s ), + .cfg_pm_halt_aspm_l1 ( cfg_pm_halt_aspm_l1 ), + .cfg_pm_force_state_en ( cfg_pm_force_state_en ), + .cfg_pm_force_state ( cfg_pm_force_state ), + .cfg_dsn ( cfg_dsn ), + .cfg_turnoff_ok ( cfg_turnoff_ok ), + .cfg_pm_wake ( cfg_pm_wake ), + //------------------------------------------------// + // RP Only // + //------------------------------------------------// + .cfg_pm_send_pme_to ( 1'b0 ), + .cfg_ds_bus_number ( 8'b0 ), + .cfg_ds_device_number ( 5'b0 ), + .cfg_ds_function_number ( 3'b0 ), + + //------------------------------------------------// + // EP Only // + //------------------------------------------------// + .cfg_interrupt ( cfg_interrupt ), + .cfg_interrupt_rdy ( cfg_interrupt_rdy ), + .cfg_interrupt_assert ( cfg_interrupt_assert ), + .cfg_interrupt_di ( cfg_interrupt_di ), + .cfg_interrupt_do ( ), + .cfg_interrupt_mmenable ( ), + .cfg_interrupt_msienable ( cfg_interrupt_msienable ), + .cfg_interrupt_msixenable ( ), + .cfg_interrupt_msixfm ( ), + .cfg_interrupt_stat ( cfg_interrupt_stat ), + .cfg_pciecap_interrupt_msgnum ( cfg_pciecap_interrupt_msgnum ), + + //----------------------------------------------------------------------------------------------------------------// + // Configuration (CFG) Interface // + //----------------------------------------------------------------------------------------------------------------// + .cfg_status ( ), + .cfg_command ( cfg_command ), + .cfg_dstatus ( ), + .cfg_lstatus ( ), + .cfg_pcie_link_state ( ), + .cfg_dcommand ( cfg_dcommand ), + .cfg_lcommand ( ), + .cfg_dcommand2 ( ), + + .cfg_pmcsr_pme_en ( ), + .cfg_pmcsr_powerstate ( ), + .cfg_pmcsr_pme_status ( ), + .cfg_received_func_lvl_rst ( ), + .tx_buf_av ( ), + .tx_err_drop ( ), + .tx_cfg_req ( ), + .cfg_to_turnoff ( cfg_to_turnoff ), + .cfg_bus_number ( cfg_bus_number ), + .cfg_device_number ( cfg_device_number ), + .cfg_function_number ( cfg_function_number ), + .cfg_bridge_serr_en ( ), + .cfg_slot_control_electromech_il_ctl_pulse ( ), + .cfg_root_control_syserr_corr_err_en ( ), + .cfg_root_control_syserr_non_fatal_err_en ( ), + .cfg_root_control_syserr_fatal_err_en ( ), + .cfg_root_control_pme_int_en ( ), + .cfg_aer_rooterr_corr_err_reporting_en ( ), + .cfg_aer_rooterr_non_fatal_err_reporting_en( ), + .cfg_aer_rooterr_fatal_err_reporting_en ( ), + .cfg_aer_rooterr_corr_err_received ( ), + .cfg_aer_rooterr_non_fatal_err_received ( ), + .cfg_aer_rooterr_fatal_err_received ( ), + //----------------------------------------------------------------------------------------------------------------// + // VC interface // + //---------------------------------------------------------------------------------------------------------------// + .cfg_vc_tcvc_map ( ), + + .cfg_msg_received ( ), + .cfg_msg_data ( ), + .cfg_msg_received_err_cor ( ), + .cfg_msg_received_err_non_fatal ( ), + .cfg_msg_received_err_fatal ( ), + .cfg_msg_received_pm_as_nak ( ), + .cfg_msg_received_pme_to_ack ( ), + .cfg_msg_received_assert_int_a ( ), + .cfg_msg_received_assert_int_b ( ), + .cfg_msg_received_assert_int_c ( ), + .cfg_msg_received_assert_int_d ( ), + .cfg_msg_received_deassert_int_a ( ), + .cfg_msg_received_deassert_int_b ( ), + .cfg_msg_received_deassert_int_c ( ), + .cfg_msg_received_deassert_int_d ( ), + .cfg_msg_received_pm_pme ( ), + .cfg_msg_received_setslotpowerlimit ( ), + + //----------------------------------------------------------------------------------------------------------------// + // Physical Layer Control and Status (PL) Interface // + //----------------------------------------------------------------------------------------------------------------// + .pl_directed_link_change ( pl_directed_link_change ), + .pl_directed_link_width ( pl_directed_link_width ), + .pl_directed_link_speed ( pl_directed_link_speed ), + .pl_directed_link_auton ( pl_directed_link_auton ), + .pl_upstream_prefer_deemph ( pl_upstream_prefer_deemph ), + + .pl_sel_lnk_rate ( ), + .pl_sel_lnk_width ( ), + .pl_ltssm_state ( ), + .pl_lane_reversal_mode ( ), + + .pl_phy_lnk_up ( ), + .pl_tx_pm_state ( ), + .pl_rx_pm_state ( ), + + .pl_link_upcfg_cap ( ), + .pl_link_gen2_cap ( ), + .pl_link_partner_gen2_supported ( ), + .pl_initial_link_width ( ), + + .pl_directed_change_done ( ), + + //------------------------------------------------// + // EP Only // + //------------------------------------------------// + .pl_received_hot_rst ( ), + + //------------------------------------------------// + // RP Only // + //------------------------------------------------// + .pl_transmit_hot_rst ( 1'b0 ), + .pl_downstream_deemph_source ( 1'b0 ), + + //----------------------------------------------------------------------------------------------------------------// + // PCIe DRP (PCIe DRP) Interface // + //----------------------------------------------------------------------------------------------------------------// + .pcie_drp_clk ( 1'b1 ), + .pcie_drp_en ( 1'b0 ), + .pcie_drp_we ( 1'b0 ), + .pcie_drp_addr ( 9'h0 ), + .pcie_drp_di ( 16'h0 ), + .pcie_drp_rdy ( ), + .pcie_drp_do ( ), + + + + //----------------------------------------------------------------------------------------------------------------// + // System (SYS) Interface // + //----------------------------------------------------------------------------------------------------------------// + .sys_clk ( sys_clk ), + .sys_rst_n ( sys_rst_n_c ) ); pcie_app_7x #( - .C_DATA_WIDTH( C_DATA_WIDTH ) + .C_DATA_WIDTH( C_DATA_WIDTH ) ) app ( - //----------------------------------------------------------------------------------------------------------------// - // AXI-S Interface // - //----------------------------------------------------------------------------------------------------------------// - - // Common - .user_clk ( user_clk ), - .user_reset ( user_reset_q ), - .user_lnk_up ( user_lnk_up_q ), - - // Tx - .s_axis_tx_tready ( s_axis_tx_tready ), - .s_axis_tx_tdata ( s_axis_tx_tdata ), - .s_axis_tx_tkeep ( s_axis_tx_tkeep ), - .s_axis_tx_tuser ( s_axis_tx_tuser ), - .s_axis_tx_tlast ( s_axis_tx_tlast ), - .s_axis_tx_tvalid ( s_axis_tx_tvalid ), - - // Rx - .m_axis_rx_tdata ( m_axis_rx_tdata ), - .m_axis_rx_tkeep ( m_axis_rx_tkeep ), - .m_axis_rx_tlast ( m_axis_rx_tlast ), - .m_axis_rx_tvalid ( m_axis_rx_tvalid ), - .m_axis_rx_tready ( m_axis_rx_tready ), - .m_axis_rx_tuser ( m_axis_rx_tuser ), - - .tx_cfg_gnt ( tx_cfg_gnt ), - .rx_np_ok ( rx_np_ok ), - .rx_np_req ( rx_np_req ), - .cfg_turnoff_ok ( cfg_turnoff_ok ), - .cfg_trn_pending ( cfg_trn_pending ), - .cfg_pm_halt_aspm_l0s ( cfg_pm_halt_aspm_l0s ), - .cfg_pm_halt_aspm_l1 ( cfg_pm_halt_aspm_l1 ), - .cfg_pm_force_state_en ( cfg_pm_force_state_en ), - .cfg_pm_force_state ( cfg_pm_force_state ), - .cfg_pm_wake ( cfg_pm_wake ), - .cfg_dsn ( cfg_dsn ), - .cfg_dcommand ( cfg_dcommand ), - .cfg_command ( cfg_command ), - - // Flow Control - .fc_sel ( fc_sel ), - - //----------------------------------------------------------------------------------------------------------------// - // Configuration (CFG) Interface // - //----------------------------------------------------------------------------------------------------------------// - .cfg_err_cor ( cfg_err_cor ), - .cfg_err_atomic_egress_blocked ( cfg_err_atomic_egress_blocked ), - .cfg_err_internal_cor ( cfg_err_internal_cor ), - .cfg_err_malformed ( cfg_err_malformed ), - .cfg_err_mc_blocked ( cfg_err_mc_blocked ), - .cfg_err_poisoned ( cfg_err_poisoned ), - .cfg_err_norecovery ( cfg_err_norecovery ), - .cfg_err_ur ( cfg_err_ur ), - .cfg_err_ecrc ( cfg_err_ecrc ), - .cfg_err_cpl_timeout ( cfg_err_cpl_timeout ), - .cfg_err_cpl_abort ( cfg_err_cpl_abort ), - .cfg_err_cpl_unexpect ( cfg_err_cpl_unexpect ), - .cfg_err_posted ( cfg_err_posted ), - .cfg_err_locked ( cfg_err_locked ), - .cfg_err_acs ( cfg_err_acs ), //1'b0 ), - .cfg_err_internal_uncor ( cfg_err_internal_uncor ), //1'b0 ), - .cfg_err_tlp_cpl_header ( cfg_err_tlp_cpl_header ), - //----------------------------------------------------------------------------------------------------------------// - // Advanced Error Reporting (AER) Interface // - //----------------------------------------------------------------------------------------------------------------// - .cfg_err_aer_headerlog ( cfg_err_aer_headerlog ), - .cfg_aer_interrupt_msgnum ( cfg_aer_interrupt_msgnum ), - - .cfg_to_turnoff ( cfg_to_turnoff ), - .cfg_bus_number ( cfg_bus_number ), - .cfg_device_number ( cfg_device_number ), - .cfg_function_number ( cfg_function_number ), - - //----------------------------------------------------------------------------------------------------------------// - // Management (MGMT) Interface // - //----------------------------------------------------------------------------------------------------------------// - .cfg_mgmt_di ( cfg_mgmt_di ), - .cfg_mgmt_do ( cfg_mgmt_do ), - .cfg_mgmt_byte_en ( cfg_mgmt_byte_en ), - .cfg_mgmt_dwaddr ( cfg_mgmt_dwaddr ), - .cfg_mgmt_wr_en ( cfg_mgmt_wr_en ), - .cfg_mgmt_rd_en ( cfg_mgmt_rd_en ), - .cfg_mgmt_wr_readonly ( cfg_mgmt_wr_readonly ), - .cfg_mgmt_rd_wr_done ( cfg_mgmt_rd_wr_done ), - - //----------------------------------------------------------------------------------------------------------------// - // Physical Layer Control and Status (PL) Interface // - //----------------------------------------------------------------------------------------------------------------// - .pl_directed_link_auton ( pl_directed_link_auton ), - .pl_directed_link_change ( pl_directed_link_change ), - .pl_directed_link_speed ( pl_directed_link_speed ), - .pl_directed_link_width ( pl_directed_link_width ), - .pl_upstream_prefer_deemph ( pl_upstream_prefer_deemph ), - - .cfg_interrupt ( cfg_interrupt ), - .cfg_interrupt_rdy ( cfg_interrupt_rdy ), - .cfg_interrupt_assert ( cfg_interrupt_assert ), - .cfg_interrupt_di ( cfg_interrupt_di ), - .cfg_interrupt_stat ( cfg_interrupt_stat ), - .cfg_pciecap_interrupt_msgnum ( cfg_pciecap_interrupt_msgnum ), - .cfg_interrupt_msienable ( cfg_interrupt_msienable ), - - //--------------------------------------------------------------------------------------------------------------// - // Streaming Data Transfer Interface // - //--------------------------------------------------------------------------------------------------------------// - .softmc_h2c_tdata ( softmc_h2c_tdata ), - .softmc_h2c_tkeep ( softmc_h2c_tkeep ), - .softmc_h2c_tvalid ( softmc_h2c_tvalid ), - .softmc_h2c_tready ( softmc_h2c_tready ), - .softmc_h2c_tlast ( softmc_h2c_tlast ), - - .softmc_c2h_tdata ( softmc_c2h_tdata ), - .softmc_c2h_tkeep ( softmc_c2h_tkeep ), - .softmc_c2h_tvalid ( softmc_c2h_tvalid ), - .softmc_c2h_tready ( softmc_c2h_tready ), - .softmc_c2h_tlast ( softmc_c2h_tlast ) + //----------------------------------------------------------------------------------------------------------------// + // AXI-S Interface // + //----------------------------------------------------------------------------------------------------------------// + + // Common + .user_clk ( user_clk ), + .user_reset ( user_reset_q ), + .user_lnk_up ( user_lnk_up_q ), + + // Tx + .s_axis_tx_tready ( s_axis_tx_tready ), + .s_axis_tx_tdata ( s_axis_tx_tdata ), + .s_axis_tx_tkeep ( s_axis_tx_tkeep ), + .s_axis_tx_tuser ( s_axis_tx_tuser ), + .s_axis_tx_tlast ( s_axis_tx_tlast ), + .s_axis_tx_tvalid ( s_axis_tx_tvalid ), + + // Rx + .m_axis_rx_tdata ( m_axis_rx_tdata ), + .m_axis_rx_tkeep ( m_axis_rx_tkeep ), + .m_axis_rx_tlast ( m_axis_rx_tlast ), + .m_axis_rx_tvalid ( m_axis_rx_tvalid ), + .m_axis_rx_tready ( m_axis_rx_tready ), + .m_axis_rx_tuser ( m_axis_rx_tuser ), + + .tx_cfg_gnt ( tx_cfg_gnt ), + .rx_np_ok ( rx_np_ok ), + .rx_np_req ( rx_np_req ), + .cfg_turnoff_ok ( cfg_turnoff_ok ), + .cfg_trn_pending ( cfg_trn_pending ), + .cfg_pm_halt_aspm_l0s ( cfg_pm_halt_aspm_l0s ), + .cfg_pm_halt_aspm_l1 ( cfg_pm_halt_aspm_l1 ), + .cfg_pm_force_state_en ( cfg_pm_force_state_en ), + .cfg_pm_force_state ( cfg_pm_force_state ), + .cfg_pm_wake ( cfg_pm_wake ), + .cfg_dsn ( cfg_dsn ), + .cfg_dcommand ( cfg_dcommand ), + .cfg_command ( cfg_command ), + + // Flow Control + .fc_sel ( fc_sel ), + + //----------------------------------------------------------------------------------------------------------------// + // Configuration (CFG) Interface // + //----------------------------------------------------------------------------------------------------------------// + .cfg_err_cor ( cfg_err_cor ), + .cfg_err_atomic_egress_blocked ( cfg_err_atomic_egress_blocked ), + .cfg_err_internal_cor ( cfg_err_internal_cor ), + .cfg_err_malformed ( cfg_err_malformed ), + .cfg_err_mc_blocked ( cfg_err_mc_blocked ), + .cfg_err_poisoned ( cfg_err_poisoned ), + .cfg_err_norecovery ( cfg_err_norecovery ), + .cfg_err_ur ( cfg_err_ur ), + .cfg_err_ecrc ( cfg_err_ecrc ), + .cfg_err_cpl_timeout ( cfg_err_cpl_timeout ), + .cfg_err_cpl_abort ( cfg_err_cpl_abort ), + .cfg_err_cpl_unexpect ( cfg_err_cpl_unexpect ), + .cfg_err_posted ( cfg_err_posted ), + .cfg_err_locked ( cfg_err_locked ), + .cfg_err_acs ( cfg_err_acs ), //1'b0 ), + .cfg_err_internal_uncor ( cfg_err_internal_uncor ), //1'b0 ), + .cfg_err_tlp_cpl_header ( cfg_err_tlp_cpl_header ), + //----------------------------------------------------------------------------------------------------------------// + // Advanced Error Reporting (AER) Interface // + //----------------------------------------------------------------------------------------------------------------// + .cfg_err_aer_headerlog ( cfg_err_aer_headerlog ), + .cfg_aer_interrupt_msgnum ( cfg_aer_interrupt_msgnum ), + + .cfg_to_turnoff ( cfg_to_turnoff ), + .cfg_bus_number ( cfg_bus_number ), + .cfg_device_number ( cfg_device_number ), + .cfg_function_number ( cfg_function_number ), + + //----------------------------------------------------------------------------------------------------------------// + // Management (MGMT) Interface // + //----------------------------------------------------------------------------------------------------------------// + .cfg_mgmt_di ( cfg_mgmt_di ), + .cfg_mgmt_do ( cfg_mgmt_do ), + .cfg_mgmt_byte_en ( cfg_mgmt_byte_en ), + .cfg_mgmt_dwaddr ( cfg_mgmt_dwaddr ), + .cfg_mgmt_wr_en ( cfg_mgmt_wr_en ), + .cfg_mgmt_rd_en ( cfg_mgmt_rd_en ), + .cfg_mgmt_wr_readonly ( cfg_mgmt_wr_readonly ), + .cfg_mgmt_rd_wr_done ( cfg_mgmt_rd_wr_done ), + + //----------------------------------------------------------------------------------------------------------------// + // Physical Layer Control and Status (PL) Interface // + //----------------------------------------------------------------------------------------------------------------// + .pl_directed_link_auton ( pl_directed_link_auton ), + .pl_directed_link_change ( pl_directed_link_change ), + .pl_directed_link_speed ( pl_directed_link_speed ), + .pl_directed_link_width ( pl_directed_link_width ), + .pl_upstream_prefer_deemph ( pl_upstream_prefer_deemph ), + + .cfg_interrupt ( cfg_interrupt ), + .cfg_interrupt_rdy ( cfg_interrupt_rdy ), + .cfg_interrupt_assert ( cfg_interrupt_assert ), + .cfg_interrupt_di ( cfg_interrupt_di ), + .cfg_interrupt_stat ( cfg_interrupt_stat ), + .cfg_pciecap_interrupt_msgnum ( cfg_pciecap_interrupt_msgnum ), + .cfg_interrupt_msienable ( cfg_interrupt_msienable ), + + //--------------------------------------------------------------------------------------------------------------// + // Streaming Data Transfer Interface // + //--------------------------------------------------------------------------------------------------------------// + .softmc_h2c_tdata ( softmc_h2c_tdata ), + .softmc_h2c_tkeep ( softmc_h2c_tkeep ), + .softmc_h2c_tvalid ( softmc_h2c_tvalid ), + .softmc_h2c_tready ( softmc_h2c_tready ), + .softmc_h2c_tlast ( softmc_h2c_tlast ), + + .softmc_c2h_tdata ( softmc_c2h_tdata ), + .softmc_c2h_tkeep ( softmc_c2h_tkeep ), + .softmc_c2h_tvalid ( softmc_c2h_tvalid ), + .softmc_c2h_tready ( softmc_c2h_tready ), + .softmc_c2h_tlast ( softmc_c2h_tlast ) ); -// ila_ms debug_maxis ( -// .clk ( user_clk ), -// .probe0 ( m_axis_rx_tdata ), -// .probe1 ( m_axis_rx_tkeep ), -// .probe2 ( m_axis_rx_tvalid ), -// .probe3 ( m_axis_rx_tready ), -// .probe4 ( m_axis_rx_tlast ) -// ); - -// ila_ms debug_saxis ( -// .clk ( user_clk ), -// .probe0 ( s_axis_tx_tdata ), -// .probe1 ( s_axis_tx_tkeep ), -// .probe2 ( s_axis_tx_tvalid ), -// .probe3 ( s_axis_tx_tready ), -// .probe4 ( s_axis_tx_tlast ) -// ); - -// ila_hc debug_c2h ( -// .clk ( user_clk ), -// .probe0 ( softmc_c2h_tdata ), -// .probe1 ( softmc_c2h_tkeep ), -// .probe2 ( softmc_c2h_tvalid ), -// .probe3 ( softmc_c2h_tready ), -// .probe4 ( softmc_c2h_tlast ) -// ); - -// ila_hc debug_h2c ( -// .clk ( user_clk ), -// .probe0 ( softmc_h2c_tdata ), -// .probe1 ( softmc_h2c_tkeep ), -// .probe2 ( softmc_h2c_tvalid ), -// .probe3 ( softmc_h2c_tready ), -// .probe4 ( softmc_h2c_tlast ) -// ); +`ifdef ILA_CORES + ila_ms debug_maxis ( + .clk ( user_clk ), + .probe0 ( m_axis_rx_tdata ), + .probe1 ( m_axis_rx_tkeep ), + .probe2 ( m_axis_rx_tvalid ), + .probe3 ( m_axis_rx_tready ), + .probe4 ( m_axis_rx_tlast ) + ); + + ila_ms debug_saxis ( + .clk ( user_clk ), + .probe0 ( s_axis_tx_tdata ), + .probe1 ( s_axis_tx_tkeep ), + .probe2 ( s_axis_tx_tvalid ), + .probe3 ( s_axis_tx_tready ), + .probe4 ( s_axis_tx_tlast ) + ); + + ila_hc debug_c2h ( + .clk ( user_clk ), + .probe0 ( softmc_c2h_tdata ), + .probe1 ( softmc_c2h_tkeep ), + .probe2 ( softmc_c2h_tvalid ), + .probe3 ( softmc_c2h_tready ), + .probe4 ( softmc_c2h_tlast ) + ); + + ila_hc debug_h2c ( + .clk ( user_clk ), + .probe0 ( softmc_h2c_tdata ), + .probe1 ( softmc_h2c_tkeep ), + .probe2 ( softmc_h2c_tvalid ), + .probe3 ( softmc_h2c_tready ), + .probe4 ( softmc_h2c_tlast ) + ); +`endif endmodule \ No newline at end of file diff --git a/sources/api/board.cpp b/sources/api/board.cpp index db990ca..61753c5 100644 --- a/sources/api/board.cpp +++ b/sources/api/board.cpp @@ -60,6 +60,21 @@ int BoardInterface::init() } return 0; } + case IFACE::ZC706: + { + to_card = fopen("/dev/softmc_cdev", "r"); + if (to_card < 0) + { + std::cerr << "Open to host failed!" << std::endl; + return 1; + } + from_card = fopen("/dev/softmc_cdev", "w"); + if (from_card < 0) + { + std::cerr << "Open to card failed!" << std::endl; + return 1; + } + } default: std::cerr << "Unknown iface_type!" << std::endl; return 1; @@ -73,6 +88,9 @@ int BoardInterface::sendData(void* data, const uint size) case IFACE::XDMA: return xdma_send(data,size); break; + case IFACE::ZC706: + return zc706_send(data,size); + break; default: std::cerr << "Unknown iface_type!" << std::endl; return 1; @@ -86,6 +104,9 @@ int BoardInterface::recvData(void* buf, const uint size) case IFACE::XDMA: return xdma_recv(buf,size); break; + case IFACE::ZC706: + return zc706_recv(data,size); + break; default: std::cerr << "Unknown iface_type!" << std::endl; return 1; @@ -130,3 +151,13 @@ int BoardInterface::xdma_recv(void* buf, const uint size) memcpy(buf, (char*) recv_buf, count); return count; } + +int BoardInterface::zc706_recv(void* buf, const uint size) +{ + return fread(buf, sizeof(char), size, fp); +} + +int BoardInterface::zc706_send(void* buf, const uint size) +{ + return fwrite(buf, sizeof(char), size, fp); +} \ No newline at end of file diff --git a/sources/api/board.h b/sources/api/board.h index 0935392..357fb3b 100644 --- a/sources/api/board.h +++ b/sources/api/board.h @@ -13,7 +13,8 @@ class BoardInterface{ const std::string FROM_FPGA_DEFAULT = "/dev/xdma0_c2h_0"; public: enum class IFACE { - XDMA = 0 + XDMA = 0, + ZC706 }; BoardInterface(IFACE); ~BoardInterface(); diff --git a/sources/zc706_driver/README.md b/sources/zc706_driver/README.md new file mode 100644 index 0000000..9378e43 --- /dev/null +++ b/sources/zc706_driver/README.md @@ -0,0 +1,13 @@ +### Testing and Verifying the ZC706 PCIe Driver + +1. Define ILA_CORES flag in `/projects/ZC706/verilog/pcie_top.v` and synthesize / implement the project (see line 60) +2. Compile the ZC706 PCIe Driver with `$ make all` +3. Insert ZC706 Driver with `$ insmod dma_softmc` +4. Compile the driver test with `$ g++ test/*.c -o test/test` +5. Setup ILA cores to trigger when `softmc_c2h_tvalid` or `softmc_h2c_tvalid` is asserted +6. Run the driver test with `./test/test` and verify data transfers using ILA core waveforms + +### Using ZC706 PCIe Driver Instead of XDMA + +1. Replace the default *BoardInterface* to `BoardInterface::IFACE::XDMA` in `/sources/api/platform.cpp` (line 69) +2. Include the DRAM-Bender platform to applications and execute as before (e.g., `/sources/apps/Smalltest`) \ No newline at end of file From a6d879a665d12b4a2e1fcfc93a7fe94c7392bd1f Mon Sep 17 00:00:00 2001 From: kirbyydoge <60625692+kirbyydoge@users.noreply.github.com> Date: Sat, 31 Aug 2024 17:59:22 +0200 Subject: [PATCH 4/5] Update README.md --- sources/zc706_driver/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sources/zc706_driver/README.md b/sources/zc706_driver/README.md index 9378e43..a2c8c5e 100644 --- a/sources/zc706_driver/README.md +++ b/sources/zc706_driver/README.md @@ -1,6 +1,6 @@ ### Testing and Verifying the ZC706 PCIe Driver -1. Define ILA_CORES flag in `/projects/ZC706/verilog/pcie_top.v` and synthesize / implement the project (see line 60) +1. Define ILA_CORES flag in `/projects/ZC706/verilog/pcie_top.v` (see line 60) and synthesize / implement the project 2. Compile the ZC706 PCIe Driver with `$ make all` 3. Insert ZC706 Driver with `$ insmod dma_softmc` 4. Compile the driver test with `$ g++ test/*.c -o test/test` @@ -9,5 +9,5 @@ ### Using ZC706 PCIe Driver Instead of XDMA -1. Replace the default *BoardInterface* to `BoardInterface::IFACE::XDMA` in `/sources/api/platform.cpp` (line 69) -2. Include the DRAM-Bender platform to applications and execute as before (e.g., `/sources/apps/Smalltest`) \ No newline at end of file +1. Replace the default *BoardInterface* to `BoardInterface::IFACE::XDMA` in `/sources/api/platform.cpp` (see line 69) +2. Include the DRAM-Bender platform to applications and execute as before (e.g., `/sources/apps/Smalltest`) From dfc5d64630ae2db838cc9443e3481201a8e421af Mon Sep 17 00:00:00 2001 From: kirbyydoge Date: Sun, 1 Sep 2024 13:18:19 +0200 Subject: [PATCH 5/5] Change standard file functions of ZC706 driver to match XDMA driver --- sources/api/board.cpp | 21 +++++++++++++-------- sources/api/board.h | 2 ++ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/sources/api/board.cpp b/sources/api/board.cpp index 61753c5..b0c474c 100644 --- a/sources/api/board.cpp +++ b/sources/api/board.cpp @@ -62,13 +62,13 @@ int BoardInterface::init() } case IFACE::ZC706: { - to_card = fopen("/dev/softmc_cdev", "r"); + to_card = open("/dev/softmc_cdev", O_RDWR); if (to_card < 0) { std::cerr << "Open to host failed!" << std::endl; return 1; } - from_card = fopen("/dev/softmc_cdev", "w"); + from_card = open("/dev/softmc_cdev", O_RDWR); if (from_card < 0) { std::cerr << "Open to card failed!" << std::endl; @@ -105,7 +105,7 @@ int BoardInterface::recvData(void* buf, const uint size) return xdma_recv(buf,size); break; case IFACE::ZC706: - return zc706_recv(data,size); + return zc706_recv(buf,size); break; default: std::cerr << "Unknown iface_type!" << std::endl; @@ -152,12 +152,17 @@ int BoardInterface::xdma_recv(void* buf, const uint size) return count; } -int BoardInterface::zc706_recv(void* buf, const uint size) +int BoardInterface::zc706_send(void* data, const uint size) { - return fread(buf, sizeof(char), size, fp); + uint64_t count = 0; + while (count < size) { + auto rc = write(to_card, (char*) data, size); + count += rc; + } + return count; } -int BoardInterface::zc706_send(void* buf, const uint size) +int BoardInterface::zc706_recv(void* buf, const uint size) { - return fwrite(buf, sizeof(char), size, fp); -} \ No newline at end of file + return read(from_card, (char*) buf, size); +} diff --git a/sources/api/board.h b/sources/api/board.h index 357fb3b..7f0fe3a 100644 --- a/sources/api/board.h +++ b/sources/api/board.h @@ -30,6 +30,8 @@ class BoardInterface{ void* recv_buf; int xdma_send(void* data, const uint size); int xdma_recv(void* buf, const uint size); + int zc706_send(void* data, const uint size); + int zc706_recv(void* buf, const uint size); // end XDMA related constructs };

_=7a30b65T{D8>tc~>ZNddy30@kA8d4ni?lJKYZA@#V?$GuPuz z({JtgL$>KfR0F?IOhQ)NqZC^;ddQa97(a(mk@(P_8w9m{(B);am7R0L)5yPhM-XMa zJ)OI>>vUV)rz+Sdgwt9n(>5IO2{tB5JBw>qVb(b?R_|Yy}kZyX~MI5)b!VZ2+5F<*do{`|(y4M89y5-xZ6@vrj*+hOfTaV?@cquA~hxDt!=GJQv@ z8!MxCEkfL@>iD=DoezI}`&OmED(uapkNM2bi`MJj1|^(ahDJcL?JIJxjS(5RQR{Sxi+stGH4XxpDwG2i7cxIPtp12 z4P$75m$?ls$%(0OU+ zApTgY`IOP(O(pRg;)HuK&nY9^$#E#w3whNe-08!q=iM%5N8etZj&^sSJL$*vlH{%$ zAQZ~eJmB+`_T1YjQAdzsf5YmSuh6}KOo8gH7=6Uzn4=uuY(go9AeF2}Qdct*-8?+7 zZaF@k?pdnr-l=-2%=1?Nw3^#|W}6csdUn=1t#M&ttOD29(u)TVA$q(ytGa02^}}o{ zuC|ifuVDH;Bx~3GFc^e&1=E_4tbKQXAPBz{ zOtYuL51Hjpz=UsQPQVm*Z`IV3@Q^qeL~ljhgwu65p&Op(1jR{C-JF@(M041hU0j() z)M%%ZLiE;aJnadJ_@>+;Oi34UsPVyYP z6~8vMx=O1hSPFYqW6bUFoU6g%#0~tR{n1?e*z6O0qg#aT>{n&x^#p6YFk5t zAt)yvvSdJA&g)Rll*8g&alPV^o#D}zte&;W>jlfyK2k(Yql<$y>-^rU?T2c>sCH|- zPX+cN7VO+@ul`$9rZ!FiHH|Fr*Z#?>0W`5CB5`5!3k8`=snSvGUonotE1A)qo#ngT z9yE{S1fild_Ml!l_rcPj)?*0B8~Q@g;aEX`kn4n(#@!(G$dSf?mZMvTp~=ocO{On< z4ke#L4U;9e052^Qd|yDBCJ-t|P#sP>dj>T*J%G`pq4ZOD zV6sqFFanKnxT3G-@!@a@KAWX^3jH(9QB3%;6sL-OegmeDypXq>QxRl0CBq~ zu+G-gT07Y{y`tJ^vuK_xz2v9kbnk8D7}Y*(IFr-i_I__}^yusu?x&L3DZzE@m#D&I zqAD~|o~7?nQR5gsNcxpYQ;?oLhIt?JmA?8Y*&vQQLztv&nE-_s8BBIwh6+iIU=IAy zI(Q1=^XJb=qK;)zpDXf}3-D}zg$YOULrO0(F!ub8@)@`5hh!M;`|k>2NbNLziU#K_ zeUA?6UdI;p9&FY=;{hLJXz^inv*hxJdl-5E*#JStc@2GI19|$p)b2wL=?#!byiGXC ze>`2QX}ma_Hnsbyf8hLXE0>*K1OCHR-6QXk0m|dAn`y(5_G@f?1a~Ckw(ciA`O+Ud zd2prU^t3iELpQ||%1VP1%i3VdBaW3Esg{=YpxTP3*g%B67>u1Iu#)>Pfw63Ro(cmI zeyPHFcdtStN5|9sB;pzG1TW-3qO_RmPYHS`x`;2<4hDP2H^-Ig&QC7=cIoV3S3XIK zN{>YV5lKQd(p|gMch=(6f;1-GM{Vd~{j%POPGN8MlS8IIl^4JZ5s?^mWAJqe@dP5; zedx%uyCT?tdim6E;n~9`Wxnq^2Y!=JR|7Yv%WaL5(8U`uJLkWRZ)U~0(g&2!yV+Pd z*{0$kBEO?Gm_2*BZ#T%+PW?UwLvsb`XogUcf$KCOgvzsFMY)>H|?)9vwLvGyS-6uH)PXFvE z8H`8){(R<9WJCX#88M`v6>y)4!%&uW$Wi-}Qbqmr`K0n5mKj;D4_`K+$mf%s3a*ZE zoDxQ4a&UQvTr?*Mm3)uKrzzn_{x6HnAtPiYR95z9oyS{0hTR+^Q-|;F&qvr|yj>a= zxQrwES@?LMk(Ju4fAB$*-PQ4?+PDT6G5FnIb+hYsjeB3& zv09zl6weNs!zLG}P9f2FVR%JIV6>=er@Es#(VFi{`SK6;!7;0SYs1Z|z~=nrnTc9^ zHO79G&i2$iyBYYYF)MQqb>0F+t^8%3l~JCZ9Rx$7wK=3BASwl-gB-h={GXK}Huryy zhisP1ZB{7>m50=h{v5N~5&Sh}Rj*}CbRRWi%&M_w-nn060`Xb7c&mWyKDn4#jEG4b{vj{eF(drOHPamd~b96 z5q8Tb7x<<5cH0BiEJi06>NyDN5ChigmG(#K$V=?hV(!erwjXNbIT~xgO!5?b`E6yl za55!QT=hB?*sr_)C^2@Nt0KgNrMXk;!@{ z4)?V(nj_xK+>u}#6>{_VVdfnm(FT$X)A(V0?dA9o=6P-gl=J>|I{D@JF@O9u+o02a zqt{gql8UtWYh@x|xiWR_Hsf(|DuIL@B6+Z8n`fFZoZ2!5X3+z)kS@oY=c=rg=Vcuu ze;zZlQ}8x=9e+P}IQ8+P7GwKk#$w-fC;9U285=b+QMfsy zb~zQ|>WbMzWaTv?qaU+2QRG#U$Hp>y4s6vEUIh+MP01<87Ce$Q(pFK8rt2NDlc!^N zWnv8D4(Aa8$*Tjb>Jz<>m87WxSDb3P2sOo26yoHOZCKAFM9m&Y*l_)}BqzHGcfLY$h+C zBdUG1X6(bq*z%~)C12IXV}@8tD|+N`V>a<+RdmJ_KJ~!ZsB6CJ?VZ|?QC2H35i>GU zR#m1$?e&|!IO)FJW7H@4G)41*!5Vj>mna*R9MTv zt|xXRnDLURpd}+-Wu4Uo&0g?6=uQA}C#zycM~xv<~)j24rgsHOr1+~tq-zP8Y$CYYyr zBz*45@R)m>hum0C-Cn9@JA$WLO_0>@i+X zXtneQEFMWs-kyR8C6#i1XbUWTVbGUwRA|_OVf9$NdQkU`ebE-EnY5F`yteMlkivpr znA}c)XNqlXdH=r2@BF)9@SaIa*1!E;MXzaEXdh2(;gLvcwFr9Im^Vl4y2ID`=Pus$(K8@3b+Vo6$c->w}+f=j^=z)Ye&Xp#ajDaf5*sF^a32)6B? z;?%dr;b9|zR|EyY@(=rK!xrQ}?9?~*f7qX=Apf?5)>6fT<-q;Hjs=DmZkB${p8C}r z>koEGupF;H*xw6cg#h+WC@ZjUpb{v~d|SM^sqCxwaJU!rpLVeHpg-){H};!t2X^^? z?U1Esf}xH-`Ys2$@kig|>DU(W{$Q8&p(0%VgFWY~_npU+x4U{h+r;hCaM8AKV=W!h zwV?j6*P=-L&R;KGF$J065B428HtlzRu&et}nf}rDs@$*MIB^mO6b-zH z?Pl8w1hEuMqnmH9NU9lmLqWCTNlcGv&Sp)T7Ih!8w&PeL_n8LxpY`D44E}azRc_!% zTxsFeDE-a_h27tTo%gcJ4eQbecShFmnOgSbV&`_;0^^5;L_y>wo<8)a=JRlGQ(#ZA zc`y`>?9Z$&sLoJvsxqZLt3*m$Lm^cRoA`qfo?qQYG)??IFm1;%pr$*~&!;o}wC9h# zezvl^o)}R6bYM-UyhJSNd*zPeGO(bV&`Mdx(&mp$;;Ds1BJ8Z4<{}gJ?hb0z_6sQ5 zd+-FaSYCvJKM;dR4iSS=+ZwxhN!v(A+&qvXTs&xcw&Uus1PKM35dBHsBKoHu)nBLC zoIQ|aY(e_#P1+ZvQ9+ub?mGR!-UA7r0Xj8npyWDkv-Lo7rUh{nBz~?Yq$J>dVFedd za>d1QP7U|o1PLoFqhrvYaO5fJ3pJrn9`tM>ri#H5KS@d8cdA(^=7qn$&B9!5=<$3v zcAvY1nZQ}?2Yol4wE_7Cc9h~YE0k#28v%}FSlAyFJqA!uec)j&t6UKD()gK@2Z~J* z_GFcqpx_(d2vD5?3HFy8NzubSw5|=$CXXjVrC`^!o1y6M^TC!_lQJbs&EJ}G-+$ec z0h4Us#({SRJn|-x(2B6$YWws-xuc*WXfZ532pc8S?h~EASYQ!|Z}Eaw%5g-{%XpXFpq<(VF_kB#&wrV0A-q&PRI)$)uM6{jX_;>W-T*h_3GLhKf4B}901%SnSC zXm=DWbQB|+X-y_;4^&QB^gY>6meT%0lj!flVbyA4tigod?*t$AoZtl!E-dxkP5|?| zqF3u1RJ6rs!i7wx#pE#m5;p{L#3~Qg70?i5M4uNQw%PEwNH}21zIkv#2E;#Xv*U3$ z3CGhSp3%~CdDPxPK-a6iBZ6*;`R0})fo9qQPy}+_Qha|t83Lhb`%OXJb3zCx$og+7 zcwSd*0*d=qw-jIBm$)GU3jf~}k{`DD{wXTXMPr+4y4&0Z{dnoNEh$*~wRaKF{rjL9 zxJe{IpTNMy-G7)+(HGFYJz*!&z5k*h`HKQo`!5QlzbKynMZwte7X{`&MZtD}Muh&| z2*9D!DjF|W{x1rXe~N-j z6LL|Y{?!OIJgz48cuM%Q2jCG}4qOy1O;803^beW_w3?x2>Y12Grok7FO-?a{Jy!6r zOY?m4rw_QPs8rEbl7Fa7JfD0uin(RX=(fMD5f&<#G$ z2nFHe+kRYg#ArRv){|Ct=sF46srfz?vq5)~Nw$>@aFdFN{$!5ZRPfQN?q}G^9zXPS z0sf;ZYIyF6qVE+?)&)@D1Vdc}!&ch`{EA1Rh(tW$CbkkVQmdzSNh)48yrb#bj{~=> zY|)2AZ5)9P81OG$OTq2xs&oCjiO=iksU%_+Cz42mYGDo-(|j|}u+ta&=8#EaAMK#) zOuMd=pg1$$*hh%kDr$$GVY4Z6xPaSR$o=W;LlPp9?uR6C|BD+`(UQPUgI^e7FsEvy zOAf4jP%SfVki)hg9JbMr!N`W>%f}$qGjH*uR$R+5cC%;6m1=4;lt}H|k_tqod-Ux(&0BaEl4sQjXKmZRB zxZem?D!~l%KrnwRZ~=mCqP=2SH*LzL);mfI?^>ppBawHD64Q3|;at4|#`}#ED4!f& zk~VmMC{pt#IBi;OY<%B|Gbs-YPA#t@3}(T4B8(-n=Qm*(a|HiBk9QRsCP~|!PbBo- zL3*9F=%kOI!y#G0QX!$zl1~m42>FX)LJQ7#Ah!s9d10TsiLs>f+s+zM{~g!~Z|!iw zdYRS0{^HjDl6+FMK=_5JZKvo9ydr^#?R(>-AGW}kHp=%mbSXv@E=_hwRxil}{0W$z zDH-B-qgxOOszo4SEFp+v;KquSyjAtXh^Bz?u7bw$_W2yX)j#%Md*OfW{l@>bTd4fk z9`Khvu^j2W#N-(gGAu4qEm0qjcLd~16~*n6*n;&MOTdy|-Y!Xkd@?u>bmZP`M}}XV z;De4t+;-$ETSP+Jf9**{|Fy&aWk1{akDaLQzxKBUxTM9Nc*LaIO)%P(7YcsTCE&|{ zI+8#7pN{ap`EN%Wl>Xb1P5J-YjsCJL{MYU-_h0+8+<)zqqhu5uwM*m_Xi6ko_5m9h zuOMIk?1)?Pf0q=U`QMJTX8)(5_J;qpUq%1d?vU|cJMUk1k^kBgLRGx0$QEJS-dcDT zf)8?OrJfwmYWLg3eDdV-lX-;Oi4Z|1@U9t z`iaOV86f`OF%J18D#ZUgzC%8_p4q#X_14w(Y*%6r2gN`tMa%N4xzq1g1NuDi&g7PB z64|ds{D&7-hQD~vxXOMBoNygUEw04=0OJf$58&P^et87R!}eo(I|h;Pyz zAngs(C_2~aE|AXh2WhgK^bkmgfi%xe+J6=b^GFcp`Rhk|5P6kvkq1)JCv-f0DRGMf zDWrSj7*r%;!D*P>S#Jfys(hKCl?@3eZHD76g#=J$4kMmUXLeoRuLeNwSD7LAs{;SG z9-#=S|HBb#@Zx`QgqFAkkO`{!-kw;3A{A1vpZlZ!J~Df{PG|#=tY~i!IR6KePlPc^ zAB)_cC*0)InKWc=E4QaLsiEElwy<{<$?fq&5p0^2>Jc_!;2#>sq~(dRBa4mEb3Ng| zC+5wB{~l1+6aIU^-c0!Kc?Kr*|MU3Rmc_>W@#0_q_j4JdT!+ohInF3WM$?#rlw%lP? zJS2~Qf%v=;-iz9TJFFhWgCKt20Ppq2h&yZ+#AzUYP!I2wsmmQ^M1&DtBTF(fG7Hmu zSU}j7j_%((NQ+?}V(z(stbnekhS)~AjE%(kpi*E@oDOkl1R8wU1AI$g4Fd+BevfC+ zh(N*a+cK?vU$J!6Li5}Y#2iw@Rxj{Fgc-T65W^JnO?@;(W-K) zfY%L6B*VM-+zeJ5T8XW?|YYZ1u~s+g_7Q#Kd&a+QFaFy$V}STnn&ag@ir5xF1v2uxdQ zB}{*r0_vF=yET^}yFi|$$-+nubfcdLx@Z=n|B5M?iGP9f3z!K9y4XG+%!G8gg9m1! z!izETGRmjgQ`P=v>7Apc_Zj7Lc}~-=OL(*PuIpe6vn>3uiu?j+HL%JzcZuVOo5*|4 z50d$j%fXYg$}{E5!@FMu5Qa$O1bvZfE>plctEU49@=PqU@R1PX=YNdG!07XjF&h}c zM+e**(}D4d(wd7!-qMf?g{nNYX_qoQE&RQg5UT`J_9&eDyg%99-Ma?6;F?on9)23xfNmTR3K98?h~D?D zsY(I;jGxGwjfLCN@H0Y3xpC9(d{|m|wx zJ(YzfanvA_a*z3Uq@v`*Fo*^!T57rQm+q(!@J~WeF@s}p@y3mz8!H7t6?pV7WuOY` znHx5!!eFWO8NQ=jrD-|v>kX=)5`HrB{0yY^7{8^lDhvy!{D8fz z$ukDm&=}NQCb_MdoDGam-$9I9akoZPh_T4xGyJuYw(Dz=1D(I&mofoaz?TRIT7o;l zISeBKS;}3=Qncp9QQ06o?AJVQtPEdA0D7SS1pTD1Odub7PZjB#mYxhyqKwc%H>wJt zi+qMV>H8p%kFiGp3sQn0g*37O)rbg5!Jd4v705^13%yv=(qr*(RL_JF&qvuCIC-Nr zA$2OsWI&g!0C$FXZo|ZaDNyGx3;kIE_AK)Rgm(n$>>we`ndlJ+kp=2>Kqv_vG`q}~ zc4?Hjj~}pSlxTI%HlTFGHn7s|5FlECLR=OI8I`~D=TXFt0tY05y6~Q=de4y#K6wa!_4|qAonEK(Y~dp=FnItI^jmmRS~>-cDtKWJ ztz;ENq$BWjDFK-mc~F*t{!mQ<*#%JF#cFXp(jAqc7jV&`Jv@2Tp}$7kJc4@JTm;j^ zfC~c!D_jGU%($rbs&|;>;&mESGZn+Q{t6jG??H)#NA;(vVaH+e19zp$m0`z6>^U6nf~q58_G^KIcv3v4}^y~5xR*{gf_3c zt+ZvWzvR9OaZ<4UB23xoBhk%VNXNaZ+|7JHits)MWoKQ^|2yMLV5I%WNCk|a|1o|7 z6=VOcC}aJ_1XR?p{-O^m-Wr{{nWI6)TjLr)Rj^k3ZHy+gQ3k00gHi3Z^^99h0>dxD zzJmEi^)EXQ4I0mTT5%q>bDD4k{YX2rqY(-SogD4j93H1ud>R_^^W@;*s4q8GOyexM z>cA&hIu)C^^idR=M!O}AYZe}kyY5^8wog(H!n=7ht_O(jmD-CKS#GRi0g|sjQCUW8 z?kplPI&GUMv2Y#Oerno3XYy>7@JEghsQc6sp4kBxG7yYRXl^aOAor~cJA_Yy%F;Da ze8Cb+AEuMU5rOMR)B56Bd`#0KRUcf)vm!Lh4H$hI6D+Qo7TlI>8VfA80~k)|Ww9AJ zw8}0YExK2;a6xqw5>02;oY1Wdj-;OgN;sj(8C|iM8jd8IECV%>KBvM-HgyFqz=_km z!(!VK#A_*zfGszM3Wvq#*P=wE8x^1lmF4>9`=~#@kCWx1)k5nJ>T2l(2_qIZc$jeq>+RsXVtM7JHOEe*bBL+C$AtTXSZ(vE<`rtvgKb z(@Z>Clxh$RnP|qK%E{A6r|B06+Pk0{eaT^6=?NbME62eLj)kBi-3>xTlHz#G<2afI z(=r^2LTp~bA$BImj_1lI(cyXba|@}~h{5~sBW53wsH=BKISm)&Hgj-86qJOy1Qdn2 zSd?)V|K|ZbxB)0pVlIBdG%tM*+50rwag;6L<;pPe8ysTK)67brGbQ)k zYwnt&hZeVsqx2fAP$t9sYVcl5&+H@A=NgbQoTkS_GXy#S2_-uVQe^-P0qF3-Tup!V z7|OJ?%#zKy=@q(M4)lb9(W2pzM-*X}9BfhFP|NFeXmYM7W2g#cm79GyGWIYo^{^N# zf;+~V0#6MSdqmsHfeM#TjA$4K4};wy1BtST9_W_z!8E)MLfbRpVrlAZ31{XoDHZ6N zvVvap1pm4_gb@p!cP9k*;O_43)7`u!?JdV!J@l0q+UP4ihN`~*wZj0J2OQ6B z`P|C0B-qNZg60PkOgxyJcBU_|D&oMZSUs;w*z>A*0;@;*sS<*5;(5X5fV>j`R_{4= z6M@u)_}`@NH1J6PW4-8>LIiH`L=gX)ek0ppw44eBP`W8OzpwF3C4^t=mjfNT{MU5- z`36!=ETr+T2dRyI&-1im_s?V*yCcL~-6 zqj1C6N!lq;NN4$&X_MF^Q-y73%6t%ko{XwoO`q+7CX775hLdTK4|=mbT(p5@c~8P-dFZTST( z2N%q#rJX{&d$tew`qDO$MC*v4=4BWnVkF=px)Xyo>SgERknlW4^j^oskKI_@Ue*-^ z!>|FOh%xc-G9yDCy@cp*DQVZeJ;2dyM)(zaM4t@(-W^+d0&eJ6_1hUmk#LU)&u(2} zOnfv9o3?haF_>uaH$jGVJTKwufyq-~(?@+5D!EXIk@D{+D~tTZtFjTj!UM7mDvN|8 zK#Z2o7eaKcyj012GXm^@CQ^McY<@0~efR*!xqSFS-8=%c4qRE^pxhBkajrESCoZ8t z>zS3y$$}w)}rX*&}H%pUrAJtEz*eJX(2+5nMq{rgz}LGHF^3W>!{w zn&jl}LAM>_V_5%@R|vNOE^QO$`VQrNdK+-Ex;ENE%VQiI0x!c6z3+ifIcI5m`30~Z zFr&|@0n8p8SP!C}7T`k%X8-G&Ai4okqaH{N;F|Dz2V4_9kkHW2vwO~n-dFX@OD}*) zBRyvXkSO=K|1nWCdPJf9fJCwS{>FP9MV17cKH_%{Ncv0v%7O8((JRcbp!K&%s`Z8( zNd50fKE>3yy#T2RgvI?(yUvVet355usE|qh;`h6u;u31=;*LjI_>Dz zxtbUJ4c!B_ROMd6F|NhM>E>XE)1v~@nAvkSz(Y%5`E8A-;S|$LeWdyyGEfqC(meACARQ5beL>B{-WR=uXH6Lk^K=%a3AOB%ca0IP^$mAxjdS$3%Q_)YtQI7p7Wdqb zjQreu%{-h9T%3H|ydKqs_rtBc1=#p?+`)R@xUXKncnar#%{YJ#4&%_ROZH&xQ0Xd< zNcLnt!EuUlthe5(6rPnK7g73X%o+F+>B4|&Su{Z5`!`%cu+o(muN+y|whq@8P7e>< z*j!!ZI$O}f(?Zpgx6%}KKN2SzrQ07f2gk8-8K zr`*%A2RD3(GBkYG>~yw}@-0D~^1ek`j{=-(36U0ZJpAPg39Fka&uR0*=f!RzR(nMS zB@7ct2nj}Hul|iO1}xe#DDLGcZy6eLBQzA4D!D0)M9ddrq9tZ&uyQS9WCiVake(`F z=r2z3Yk-h;D6k1g`4XZ*=srXE!~x>?$A6Lt zE>K1|MYvjs14d0hh^3Kh%NL)%th{mo-D+0KcP(LcP};z$6jx2eCp+owxT+f9cs=DB zmS;*P%#&;le%%d4$@z&&^Wvh z$;d_}S`AEpVeMc@E>OpA2u5_f9{Xa%?-Z9osQd1zg&o2AUJS3z(%5C;d((}PJTpav z!{zi^RM>}_DTLBE?&zp$n*iQIh(kLc!;Nr5*P?m72m~+gL;B`P{KE&Q5&W7%&Ajo;9b+I)X*(Fnueuj2PH=SCQYuEugXpt>~nK5$6C6 zc!+3@`m;_CUnn{eifp)Psx0CI9-sUshLFB7u&h(QU!8aWC!uG)E75N!SYRJ?MgIRe zXAE$lKgPrc4&?98C3jhxEf6Te|=a>XUH0-3v@#;^JoNol)S%?uamOc{O ze(>y>4;A?E{y}*2=Zo@sY_H{}+kk;DU|F^-FISu{kdlPKJGP7=UY_p~G6z5f{v3qy z-Jak#L_|Q&PCb(kDLd%$A7s=lN&EWGkp8G z21af`;HUvsPImy?=0Y;PYvj zl)C1+^3ZyyiFZ)m7y& zpY*^-a~sxb{pO_N;%oS-ZMa6q;-6Hcak;fH*oe#v??MtDA6J_tQ&c(~Fc~Z-3(j-d zLxlEATus!u{rtA?)9K$V6xlAzTHf}j87GMN`AvS*)~(Yt$xK;XkKxv)=C+tG9^%St zy!IHwy|vAwjd=`fB!0VPhv{bN3~qU7XVlkhT`RkndZ@o7YdPJYRwCobez<9xHfBy& zYx7p2*C~&7Y%r`5Qftdj>$o@-Bi3bcr%%^o&0>6#bHV;VO%Bf4e(2-lsg&NA&u`Vs z=CA1-vd6r;(jAf)W@$lHa(jJ#DP>5O=Wi?I))q>Jf*N;IVPdivX-^YuU%?g6%@$45 z-E!3WIYqT@D{FjMnB45N_}EiVHxPQC^W}%oUJVfDe09vx#EP?g1}N`qRgjd_es@kf0X;3TwC2ph?1w`v%LPZNrM9Rhxa&Wy9xkJCma zjWll-Z>HD-urvXSJZ}~>Ll;v#A72#hRQs)RT_uIQapDcoS311#wSeuu3-zp%SG|~tuXYV<{ZmdcABLXIN ztczqLUPls8R-8L(q~UkZ?sI_608QZm6TLuF`0GeK%8GTM3AcN8o&&5NXbOX#sJAW} z40|1kOIb1RsPMZ9vfi5JpH0e;x)XU1BM?c|`1TM)fC|T0fQ%}RJ{%DQ)wNqR3 z?ff^nklCU-=!(^J5bdF=iKw~KJh-H_d_3A!VN4bq<)K$<9c6!z%LS+6-W!P^mx@@R zJL+d_CcXn!)1xIdo`Vhd%9emR-UIR^?8A=?PIb^*2f_~*t)Ad&7#L^rwILf@X&J*q z9_eXm=@|npoV?uDh#44==2oPVgQt3~(x?7b&Z%ZyI@jj= z`yKnOxtOz<{;}*2%biCKwH{{INq4hP`}ga+`{#qITeS`!P9kcjYPs=WMDRD2IGmWU z+&vsTEDR2X9B&RZ-gKvh5SF}uDq}-&|M3#ucKEh*-}SJ#!~yABOpBKGv^dXE-c`oK z9_aDrIFPcrxwSccVPSp=(PPM-t$vDgnBK$P&HDLq=Wgr6*FL@w+mM|R%j`5vr2fu@ zZU=6ihZA>qkGnm7!pE({O%G-Hr(w<1rxWXqUG>A1(r8ZTfrmpv4M~A0{`tU@-L349 zqxTtUEj;{On%TY?eCVl^CY0iN-6pVomz4~dYjd5e2V01{SKK;oM@zQVT(z|9Esg?w zP(?3?8s`EuUwdDy4nMz2I5+c@LT9m5pCV|IopwBVd0F>V$}_Y;#f4k^h+B73%fYW` zBjgx<9?D(@j&yIdzioZg{dUD_;sR4%E_J1wq4a&r?q=iDR7^6_3k~nnAcW7r&pLF< zQzmo+4=2UHF0{5D)8a6-)SnmZ3>rm+$ql!{5EbC0H*482eQm)&JWo9tyLc$%y5YF) zWj1#_uT9v>vwWYP=I-Kd0}rWx+L_=?$G(;L85{WwKFP3;^u|s_hkE{|Bz60&nd2Dc z-O=XHyqkx)&V|15>{RO=)4rPk`74K#Q;#Owtegd+yaCj{lOgqP$JuGSOY`JRJi0{K z4S$@SBn1nqi{se3-p|aEawRdi?LqbPl@b4fa(hnmrr_LrU`RNHKyL75}FVYAj!iDl?E{6CQ z>4BejjQ?VAz<0c~xb)EA*m%AF`0%)Carx2uYQ@6o>h7R@N=Gr z^Mw+D%rJ#Al!^FI%-db)2OZR~H?l*F5I^zCrJsplU?X{1Mx<5cawSp6g2lAFL>VSo15prJ35GnhW=_w{UxNqH=2%qZ-Dv>T;ucJ z0f-9rD#{$5bUCs(CyR4hHsdi~NwK6tS??>4O$uqR1q)w(9~=2Qn#5Rf3tJv0;@rlx zPwntR;d5`5a_I9R*y|}ni zIFRH4V-K?>rjK7=Er9oCD9^0&^(-1Xw3_x7`ZfyIZgrdoU$t6vn2~LgPD}6Um`t6a z%OjpMcsxZMUwLq8oQu5`e-!c3y0Y}0guL~X^%kt@m)6FlhG=wU_ zPSH$G)J#s+oMo*vH0lYpWN8?jW+QbO?)%vi_XV6*I6&2(*;?6vrZq3GPtAr!CX9Sr z(P&v#W=#z zN|h)qW@+>!;=dlHkpv;npJvp`H2?R`@hCk4L&$9~{E>*d;rq7B|P?)}au z8IN3x{t5(0qtZq=N#5S7uKpk#1GE^BK`Mx%N|=(VfSA_M?o|v9iE!aKGPY8Ve@`S0 ztD#|cuqkbBabV4A(!e_*Zo^g7S>m(!pNL5{9QKZyAqGL3+!Zp`QsUvn+w$76vLMyL z=?k$kX* z{-OICisqeF=p$-8dokvw;u&Vj+_#1)vm=yqIhqyP@vPdapuR9g+YUm)ejdjcz=Y~c z;G+^6f3mJ#H4`vEu#&jD7o6#eFG+Q4l4kOhj_X}ZrAS3MRUmR!PH$NNKZ?0#5Z?`d zp^>V(YwpU4dO#C0{~j_SU4G;1Qf2yOjA+5n;R))b5{o*6>{Pmr@Nd&zDVAosdYkeS zEg3^%6lUuzQMuVXqn;7-`M#0&wPs>XUaq89I7HGGnqH}zyDYTkW$!j4I@g`L?N;jY(Z`^6>xOXEM-cRAeT)f64;2V8R9Q*>!?uEh=L^M*PM|h9hrv_VJAeo zBJn0)SR>5}60Ib0aTBRv;(|x>pprwb5=8k3{1~&c7szMhf--D{3UsMMcnLdPJ_GjU z_8KeF(1(B;xfL2g1hqD$+((FBL|&z*qVnjG#$Onv*h(oRiYwPc=fq zCPEEWPE5+JrlQ4UE?R{?tnymKG+Q zamB(Uzkze_LLG(GVRzS=V>3eAH-t4_yj5dSCNZTB7N_^ zf}LAq(Uo7IQz40;Y3Ln`W6cr^^z3@>2}$+YQ;84g>875pXDV$HntVGat^`fRMEOF!6R^ubLild?y* z%pwTzKE07=TklZX)?sAtP+MivmD)IQFgsbEud!8mh|8qE?* zkh=)&7i~}+*z2Djnfe8d>B5347Vnd+3>&rII($wLt{0U>k*c);SxA6lXIPQ-cu_r* zDIP0}eT|tju6PkNaAQwVUx8g{Jw7m9U$JA3Ct1MM8#|~FmhHd9VG4vOnaZ3RvZ$=( zuds(FFLp)6;>3Vv;3qgtufwu)Ypuz0y2!-YgjvIJ+}HB|=pOm^?l|Iu0)Gx?Ec4&9 zfp^VKZ-K*GnEj6b!`8P6T|ZVZO$1I3Xay{Y69wl#EwU4Z;D1_0A}0##Fe26l#lg6w znr2^v2}c_(OdjL2nPxb=14?PELbSqPA+c432ajD{hHJPrcR*_Y04Zq59{e~C9ZDqU zb;DMci=a2cpemwp&~p@qEBKnnVA8iULO%GiQ(Yq($TUMn(|ONVhrwiR%o?y+U;#JA%e`306s zUlFMq*kN9#h{|>_R_6yPD!1k*ab;?Ziy$Y0OiAnuL}f#hZbb*j!8)@jyuTYNzAl#r z1{)Y>FwI4z!eB*#pa9NF+f?zj0dTRgd=@Cr4%VB|rSgrwhJe%6?6`=_^Y}?I4oCZ%Z3*t~hWRDwj>AN|97$*AZIyIP#lrx84r$ zFVM$lIJon1KRMakJG(RAZJzIUv}r81Xr;L}xiHS|k)=OnJPiY11afzmCO_p+Tlv7R zE^^!2WO-%DzgY6_1RBKe(XeoHxqiQXdQO$>cyhOJK#1$Hjd;w@!(Y$E?Pfc1bC~w_ ze(m7mKo0sx<%G6VD?iQN1RJ|U$lTt>!u{G%Cz3kw>)jb-SmqyZ%r}PHZLF_O7KYS4 znlhG_9)T|dd8%)`S&A)rvc*tO(C?i3g{J*41|Ilm63IR49^u-0+*t=PBVx+W4if@K zBCa|!)-Lf=Wgwa)8!A^^dofBQ9N%BFO^I_;J36iW+;Tm!FL%7-By7~f+%r=@@VN4^ zzZVVH!ZB`x`pF}PsYN-s$ikq4IPtEDDoSa1nCo-ks}tN)x_j+r z$*!O#M+6sUKEEV^`tJQaER4e;A(@-Dp4 zT!GNdN?bok-w%5suI`k?h9AG1vd#2y{7Rcc$}@0bxYIKUMlDp)UK1bPd%j#2AML7{ zuu8^n;UbBRA8P7ixO0~)DHWYv6Cb%_Xs0n}?62-FJcmqBGZ@x>viL~lBv2KP+K?|z zHM3eVl#1F=_PjSbcBzR37np^0YU*~(WMM)g zOoX9nv-mPR`-1a^DN`%50Q}A^(ztaMqAqt&7%lJIbLg@|-gBVF*J^S%k%9g02_=j8)-HFforzxxlnVKiUQe*PXBz~9$-V) z2yF06oc`Y-%-2=_UlAsz^S==0-rk>ti4*fDVfNe4u039P`%ZO_pv2p)F@PsvLCvVSd{E4RL zJmFESYCle7C7dNW^^qvJ2U7~JIq-;jKsQ)tF0swVL1n}8EzV1foIV(hhf<9WU8B-E zD+Ar}aIbyt6A9!Nb)Vc)k3I=9l1*=1VVcX?T6W`(YC>8LgC^2w<3f*2rVFK=P=CVf z#cp5XYrjO&OKyr!j`~|+tLvsE_j|kVknQhweTLB>>N5mQ@B5ErB=p`)M!!JUV_n4@ z5+>8`G1pl$3H3!c)goK1Z5Jjx)Z+~NdPH}mM5dDRN|d=ka5df5N8QxC4gu)60J?sEM-w^+x#|C(k9haGUG}sA{NYpljq{u1(ypO~W7F~OZe0y^L^)i4A zzrwwQmA8B*!yK&0^%Y!dUlqUgHvAbd2NUbuFpgq099%k(vJ$rhUKJ6JOC!&$(MZB*D$qt`1bV#jbF3`1YsReqHmlfil5%c5 zoNp%A{`@x|_MaZUqVaB8!7?zih|ig)GY!8MLUIRxgz}*1B(~{-jHfWpt^tp^&uVN0 z-E}eyF0DKmJ&4jQA?Xa9rft(X-_hQWGIKJ|s=*8g=c&%$tjwjOG-}2LKo{;discyD zRMF(4Ud2w=;GS$-Kw&S0nc1;7XQ#MmjWcF9Vq4jif!Js)%oWNUR{eWb3Ygd;FvsmARL969D zfmhb@Hy9shNXtc3==6!jIVq$WW~_GO5R-k7G6N_ONwNTiVe}LT3wjRQ2g1nHV{x)$ zlW=ou(7OQ~rIf?ZEL5Xr1<#Q%4Y3BuGi5*tI$!9WMA-EsOS-mctu=5{-Z%;PCcPuE zPY}#`8ppfVuvji?+j0;U22qJwR=L+5?F)E&n2dLizDeU}&hiTxcht_G>_;CFwC6L` zDKgl$Nx&oJ`jP8TzeB+7UHLN3cp=C9d|xg@{|=@XTM9|}h*G$>T&-hWKlC?xmOMAh z%Fr{y0?n`4Un8~4nKvdzQZ$t^0> z07okS3rEKMog*v$1w--v1w)1Z-u)vUEBK#Sn#A9mUw`L+9AC2rxo2HOs)TqwsO=?;V4q%&ai44i%`SzC>nQ(jKstnt?(|xH5h`H z!tcQS1r5*iPc9m{r8#c>iwjgtJJ?DAJ=SWtb`~y!`15lk8BX4YSk26`tX8~qopG!EUt^l()@p9j!^7p)D!Oo3w;4O9Y#jb5 zdu|M5!8F@0Ph6Bff4?p}>>S%#<~W&Mwfm5{>Ey(5q#5xTqWX4nz`i4Rrjo$-0Gny6 zzujrrIX_=%z;!%W@l=Ws!8X}pZQ;0g<$WVA{NC>buOGC6LfjU!3I9coO?ohxx9T4;@;2WEg#neNBeE2^;UV8S0q>C!i zN*%0fQ6_$4yVZ`=vK`Wm@a zBjrtQwJ(_#d9e;YD~&u2KW%kh96UTAeooeWji}-NXxDgl(0kLnv7`9rWc8|Xj-T!E zC;qaBqr1&#``gXJvuW+ZR|ximyylV)5&cXs2+kSdEqjM}OGKjl_FNygdH)430W zJA_ADSGBE=XDc3u7LV*XdrzsI6Xe<_7jbv~hBsG=ZJ?X>3mq7-%aF1b$J9`_mR6on z_a=tN)T*O+Ba&s=(KLjuM!BWI`wv@wmelT5G2RI_h;BoemY5;68E56VmjlC>$4?IY zAG&qc>vHrqOTWTU;hNli{Qj=hf`tgO^o5&{I@$;bPM;ccOlPB9(Sz41IM~}S6S|-- zeN?5b7dDE2bj?zqblMBL>+bj^cML;JYLC=oNjPit*crpi9;8T( zieQHfidY|0bjz{Ys?;w1xD*0T*nY8yRs}MIrPJ#(V3$agb*%YlXoICsjn!llN|Tt^ zfiPP|dfkQ_Dert9Td~A6o(Uh<&E=n*H>|+cDq&x7vqA92W%dk?8d<_-+3Q5ky+~l% z-lBp3{kviH)`vP*4P1|r5|RCTM?18J6${mswS&{gLp|)<-9zvvKpZa(sSO!ETspEm zG|s?qAUuqBXkFrSePFe7G`BtbEHUfjWwa|r6u{Ld;n2$2!ZWkaFm$wYvomq)&H8k? z7ubZhgZ@q@zWKzFp}AO2T=w$*JCt$sF~<7-FHv*NPb(S(6%Hv?93*tfeef_t%jIH9qhg)ve5iv915z%y)%X{ za;>Y8uWw3oIwWz2`Fm{Q6{u1Z!T*%3PWCmV#2rodIe!ZBFvgFf5TLst+9Asa<=FXd zwWovQcVz2PW4mC1z;sE%FlZ$P8Gv7VFe+tyW?BmHzlx$~b& znzEn%H*R_QKvoT;be`2*O@ePu~r4TN(A+TCmp_thb`R*EHIoF zpCpqG*`ZZY$eW3S(**@aEzj0x()QJNruH8hF$m`XK$L~SmjrknPZZ#F5lKM4{DcY! zneNX*Ci}CH$@NRfv;l<7ZB7$kGwZRLWMmA&VShw55jQ@tICS|8c@85{K-iSgEC;|{ zN&kU9#~@_tD0GKt@<@rR#_?e&5%J$Ry%C3QwVgDO$SuvNKBC3q$z6SFEWBaSwL>EF zcxe`LN8}Q-@K8wp4fPOeA^r6j?c!4dN@Y}Hgzi{{N1FDqIuGa1*82zkA4^X=x+9HY z_&2X1Ef!i)-ePWpv%$WquQyZtK8jO~i8G7?)AHE@On6ljw*Nqc#q&uS`Kny4Ext0oxMy;@LbAQ!OY)mk%|g;XDg={wno}X; z0um;}cp7G5?LEnlyY-1dr=%Y1l4Cr^pBk!ZJhTQ7bZrr{l$u78=p=0yR);` zIgZ({$EFe=Wfmwt;J)g6?|>QY9Q`pY;WcX)6@_LOho;Pj06BdnVYQxZGzwM`f0Y7a z=C4u+QN*gIJw4&*6KXPADCV6kN%g+=Jssp#!kcto@R`l6_m3+ux=}0b4U<-5!|{ZF zW;9TxXcQ)w2jvuU&grmSzSWGEl$C$2FEbp=()A6SGgl_sT z*I}?EVmH(t`2XZCS-R4&5%j5{P$L#Mdoz%qFW%|+1u!97ZEO;T^UO~jM=reYVN6Bt z@0GUNCa2=UE5!ty-WRkVvr@znoEhTV7?%$(#2-|3KOD8{7j~}}DOs+;S$|O1T)(8L zJ9nj_e0bcc$^c3ExtGZG+I?=v$K5a^zGUt~oOd+yKyA87B(%fo}L_QmOu%VJq2k#bC)Oqu)cCfE$>=%iS zBTFEN)D#GEnFfN?@PkG2YyJl)dKuBzczE}>)^MU_1D#{qf;eW&g&kq{xD z(!+0dIW%K;vYY^~)~CPo>MR>yzg3r9qjs<9A}MrwzactI zn^H*GIw**YsiUgBtzHRYY^k7jw-NAOzLs*UmLHM}mx~xaRTH=?Urny%_e*Gg7})Hq zMIX$5piw%&M6#1MoX+ZUC{Xt>N32BOvI zV`?H=Cq;kClD~=x5;hjlRUn+&nY#MsLDKbF<9H{21ou$)2#+$s!t0@MAlU&ib7+bi zQ3nUj%MhL9*7m#p+Ypr&!j{Ah?h&o?OZ97jG!3hYk<$U8r|zu1mY3ANk_HJ$Wx^p$ zs(<~1ssi~Tb-6kF>c|2-a|7Eg;ju)ue)1&JXPszaGo>_tXjIMZAI(pa2@oBa$O^<^W5<~;~=hqD&4D~r|8VHl(p=K4M zW?`2xrws>WAh}d70o7t9Qz)sZaf~(K-km)OU`xNcNSu=g6M#1@o_W)u81NNC0=$Vk z3-D%GH^7^gJ^*hflLNfz&~vh{*0-BQ(-|0T9qZAep zS#{-VoncWR0x|S}c&bKg!=Ffl_=)9}If{g69JIUKXWf7A8`4!^_^ZDTO@yZ>(+HOAnV0Q`J%OB~NuV8CempH@(SQpZ0n z^56gxaiU<{Ppb1+z51l8_mO-|OlP%tVZB`_Jg%xnMpORH7y!E?6$1wXy#MidkJ>7NEn%?aDhJt^rIR33UKMdBYP z?gR(VPOTOz2_7)N{gyo|O?YAESoDVy0?yJe6clq3Z}QQz*W>tbHs2g|HLk?8H`}vg zP5w@Bo0JuJyq{s~c)z4d$981;d?xIcpJ1e>pjnPUJsKmu@o|$P03}<5{tBEJ&%o*P zH{e7_1)`q*2Ap&3fHHcB@KWzu_;g4(#&j%Z6p;hu`k5Ng*Nm9_^Gi4Wg z*m*oKEPGDW|D&Qeq<_rPB!O~iU`WT^q2g>+ufFc?+M;vtV&TB-X&7Dkk-_8iu9ncU zRZ0$G|K8R9@oazp{NC_#aAzhc+ra700#g5%K>9W7p8_fV?wd+$4&9rZv4f#n$}P%- zJn@l^kfkGwr|D~92hXRKo8F0;os@4w21nzogqEe24qV9T7ZwmV3yGQxqYd?1^Y0ms zHVGZ*-Rqnm+Hc9)K1lalX0zt~TP4))Sqa6B-dGZctXxN$@*u{VVfb;oYR!Ck^LWa5 zd(v`kJKmxdALPj{>A;qH#O20*1{D6bkU7=b5yQ7cdcg?| zmh$J|3h0UNwhd1a9whj^%$yJc6wvB2*kKHWml(pJa?e^5#d4s=R`AXMP(VwMo)u8N zf2V-5Xg@2UZ&S%Ar&bY4I&0HX{$5op`}9lyT$^D%{zp}<-+!a3Rwv-=YfO#Y5(u08 z>`=R_l(qht!N=A6^z@AP#S9u}maXAE(oyf*E{tYyBd$idr|rfKYj-VmDPS!HIW5SU z20t*%#kV2^605cKk*>X*jvRSFyxG;+y^k(Dc$7 z0Zq?A8^FxF;%CfEQv)!Q;2VIM)()xwk(Ta06R9FVq=z{Gk(OOMve}i9?4H5q7dhU# z{-CB!=F8CS3(gs)j75$32w*03)iY*RY66&9P_!igeIlR+5GmT;Gm-kmjiRKtI#<{k zT7J!e=|!A-D@8Hp)BaX!8E2nD?sTmtA$FuKzeap=v0+45(q?=Tl{qaG@zdPEai8S} z+#l^V_0}AVbA;r>c9Tj%n4e+Ewcbr8DGOoRKkv*M)# zX|uPId!}@>bml=1#8>0=FqDkU6)hlC!x@bAS|~6Y5IZNy0NL|l^I7)f0Ax?QU$W;0 zAbXD34#CW<=2o&2gZR=B@QVU(U0>4Brt@W3^#$h+QzlmE12Sk%$E~(hH%93a_LyMN zQjVS3$!!`F{=acT;-_9To|X|vElw+pQc-cH9!}Y-o|$~#CXjf9n8vsgyrgKnQB)tFxDXp`x2bLZjP`ZU&-#eT_kO8IKO!GpAl{wK5< zDw>V$OqOR3tLYq5IxDj4-uz4d9$EE`_<`?Hb54D9iY_|923Hi=G}83ZX<{?4&4pU9 z)C~6IUJ7F3X4N178~Ygy+$^@7P3*o7*{}j2PieGz2N_x8GsWY)*qKz>-CiqyevJjX z{x%5eH&hoy*Dv;_GojOpDlRvQ@mCgR{m4i2+D4gCkA;^@`KH*NQ^!e+P7zD-2}D2_7OM=vrKo}*0@Prh zx%7h@5v#~1Ex@HZk_b^ZQh(!8YB*ne300yh;oz5F@ReR$?Uz-&>_=t5Kb5iGwfWcT z+tS{@SKp$q|Ej*F-T9wY-$L5{yXsran19hm;g0^)M!Dku)JFH5W)0M`eX_Y>MBA4E2R=TNp9A%YhaY%j#?ddMeYR zkp#;G|IfsmGCQ$$Bv*dDAISGY11NXefvh~`XJXbitm==|rt~n4vO8@iue|4niC7=W z%_+Vz;!sL@2AAQSz)ccI)34W*rm%?pcvVe@dNTKu81?GwGc>B%0?>%yMUpg5WQ`Og zNaj{bltA(YhnNcW#H9-ea>WFKTC9K|bRUwDf*61-lOX{lo!0`86zYqFoi`bYwY;hz z*$Nm9P*cnOO4vpNyn`1B(#uyoW8YKZfe~KfbUhd?&?Or7B`gvhpn>ApU`0OQ5FKKZ z0rY8M2<^KIqc0Hcrt($bUX2)8avr?{@m2j-FTH~PW6@yt;ge`Gow&6JD11P~1j*Cy z>uLbM*uA7h3RJ{y^;VO^ORJ_|&FKRq%EDXUK%ym->eGxM*7`@)QODqn z;_^V#bakhZv%cKj-h^^U>l4)pKX=ytmus{stCY}WFyW=+>UZn=>)YqoAWO(9LfR6i zJ7ve2xnZ*so^P+UoJq;H2aWoBQ>0-LZbJM&mL)XnlJmYPVV(S{h@A}u>c`3sBCZye zA}hK-^o6c*jqtJj$V+ zVE%z>0uOUos1c)B=*!+P;a1}(u4C$b`f`eS zn087k8P#{yj#=qS=^V27_^P!^COotT{YT~MM|21G>l%{|HHD28ufp3B#g9pN#jgrG zc*$!H#CRG~1jQUkaTjEdwl^0sSO)<06Ymf8Q%f`sAkZQ)hr&Mnd3y)A6_sKnhkkGj zL2d`#_Q)amMebBh6c~<7++NO?ooSLh?YRC{g0f4;aZ1^^^?<8b4ydYip9APnIuEF- zJt4{wYbxwxkvV7%0}v85g-c*U7$~6)sRF|I=7BJ{Mj$MRGN+5mXw$!d7pPX< z%*K(5Ri^nT-18lI3>>DAjsIx-cz-iccZ<$ck3~vmLM1BGy#3t#ItEVWxw#`u0F8aJ zu#PFZvps+HC#n&9IQ;FGdT^l7_RX%(OK2GzBcO=(gYr>jW-f!O)c@B-wv-gc|96XQ zn=zfnDhW0iKmcwQJM-r|y(buQnaqCDkBeum#4p#sEP~c^5gWMq#h)~VXe@-)`ms%; z;_a!M3y$orHg!{nQ0-j56WoF&)eF2KDwXt?Ncl_4r)bA~E+QAjg=Uh;0Raz8LgTnH zd({70BfIoN5?{g23i($_t{#AH*|{xVF7} zSqEcY^O1c_F`$w*0y~X^iPG#=qMo$jK1r+GEJVM?#12QafVuZ;4ym!qMZ{t06C_?4 z*OdO_j(z!k6Yyhsw+H*D>nSrg{YP^4?|DF&4ung^b@eTcX~6rU`h8Cu^6pQUYX|DR zL7xBmqN&~Ui>3mh4oG4yX)5PWXHQPnZZ00JK53in3+1U`Ot;u(L%g@=<> z=a$=p?v3_YM@l|>cOI@+l0RXC;@BEmT{Qd+cmM0RA9Vt-YI&Q-$vwL{q9vePIo)k5 zW`t8m#?HpRU67kT9!&X@W#Gg$X7{#n>|9d!NI;RN)x{8F|JZ|)qBp0)rly+V$D@1* zd@J=~CQSi#{qii+_fXTwYfn zWq91#SyfZAi`-)8v+0K%$>=qkW!VbjjVbE$0B_2Fq#S5Fx4-jTY9s^#Yg_jIbpRIpgBokrT5DESch{~-kFM@2EH&LNhL?jXd;uRI!t1{jG>szAs?Fpy z)wOijW5}6k{jU1$lDPu;IPD_2+e~y>XcI`r!CJgnA#T4aW+I6YMs>1bZo?xF1)<@~ z`p!XH3pDES`LL2(1;^B>`NT#-1HXDhpC-bL?&oy>h|hc`7kST@MuZ@OQ|d*BdMU`% zPX9^)+DyP64Q&tvJ-xhH^K0dGtHGr@iHZ7OH=Ry(&cHYK9`apPip}j`q=%IC-lFLp zIOXcglrsBQ8 zBUsaFeWv9Buz3<+lV-XA`Dev>&2AN&Hzral#vbOA^q!v{Hjn=N*`M_p;3%mQxHCqd z(=5`f)4_MIaY}mr0DCk$A&w1b=jZWq^LG5*&gl)DQi59PNbm4p_C7QAkDNAr8muvU z!tN_P*F#I|kH$^g-Q|i{RwF$p z!N%M&y&NV1!7kTB zyQJlxYq1f6+8OH%e(85~-0g2)+-(+JhWvcIjcduhi(qK{mP_H(yf{-g0@aH_CdzOo zr@-H8DOeZx$G^g}qdzs>-eBq}UTGvUdzZcWY(QXm=+BLgw|88)5oMNkZx6FvaJs!6 zVnLzys>eZZd`zz>q5V3ELXn%df~oXWoM^^*T?987kJ}8c&qf?=Z7cx1S?ofMUz-XH zy-H5IVl34=jp=Rk_S8knq73B-jGcBV@5A!Q6^Q^_1u; zujxGBAQNE;bsF&iG2mgOe(Jn3x_R;Rs9M~XC)17fk+svOwMi?*J)ea=+PnWeFU#&? z&{VtSkKfWpuY?3^f+~J+>7{LByQo%Sala-kU4y2TXbZ->WY|C z%Z2-AG3I10UYuV@a_Pu3@#EizB)YC$Ph8~&uyoBpuOf@~glb{u$>Z>SR?^&1yo?5*z1>VyX? zFBXsxJmu0qXjjG$SgS|4ZX!lPBSvQN3rA?3$L6uGhTS^4<&dJ>_Qz9>BH=nT-M;7j zYCZU^M+fLBxf1_quXGg86CnWnqFpO2o)Me1o9%)cG`Qf;bcJ|@+>MIshZ>aGvZjGa z6Kzt=dy~QxZ(L2?C!5$+D97*rVHGi!z%~2OL^{ir1GF*J+9YO-$jC${b9Hp7U}4B) z?!+NogN*BbbjfRz#X@5xQfj2zvypI<%a^i823JCR=7awybf>}zhJz!8BO?XVQ!X*W z*mT~5Bd-*evPZ)${7>lP{m%uee#|dwEUn>mfmIOV$7$jpZK5M;4-3iE_IBVDcyk?hlvAo9p^JKt8rWfSu+#f;kEs^J(sQCH7za6l+0#jU@v-M90xCD39k5v1$tstHdlT#Ph8HX%rXnR^X}PIi=I7)uDqoP_k)E zT$zWTi*sR>RBvOwp`^#!A-gfTCyL=F-GWhn^B4x>teRhLV-=0hx?7lyztU&IaT4Fe zayN@ettqI_c4dr6So9Z;7H%pPl9fsO?!Z@r>lbDF`X8%`?v?l#;oV9wqumiR7PdAt zJ%+YF=a$C0k!tEzSMLbaTK#9E#1IrYwxWa(iML`jVSy7WYu9Zg zU|dbZ;?Ex7o2Oy)Y#v_p-U^&_h^v7T)DRM=U!oe$v~f}KGz7n(G@fbU6W~eM`ogAh zR={JfvezT}lnCb7s-m&3lcs8ez8{=(twtai=Edj%WB`%qQB{n^RxnYElDs1sn!?JY zh5XWTO4)N92`;kH$nN{A2!YFb8eC-SCylS8$Iz#z0*H`q4N)+^Xj!|AKFE+cJv%V! z8;#@Z);rP8%QUI_?tDx?GG8)rE!Rp!l70R<#71NAe1MG=m>&v)!wMD@YS45k*zaSV z(X%8%!G{bLDAYRm-H60F! zU8pr;;e?!+Qhmvb>5dN*%y4pdNS+IR(f!jq&9fd+{Q;B@g~yyX&@%;->?EJxwK6Axe8S!;4!+LoHR z+(A=-^|Z5sf$WY`3#DAu^8N zPu%wT=yAW>$|KPr_PI*x0MFPw9IJPse^5T0>4{s{*4k}Zr5tnZh02r3_W9jaPJQw@(ssurScBZj|ZY|W0{uJkY* z?zleMGv1IA*f6uW#?TLxrM)x<>tKza-~2H+5|?gk`|@LJw%`9`bOdJxTIe_ZU~*I6WVuM*DEq>3=^sC%^9&AT~9LE2PU?g zavZ@J+T|K6(NbK|7!fTg>34Hue?V`8Wxq9~>*uxMr^In$;XbcOn|>!YSFWnRJ$49{ z=WO!Wm{_^<(?^Z^PMSGmbz)uQ=2Y-FtsD2_sq9v!4}&`Tn1PL{9FHF#I+GJ$Y==a+ z+hmi=o;t~ttWq?Tw0v~Fjky64>&d<=0@>2gUW~8VUd)w@;HZE9G0IoJe3RjdM+LOd zV%*t}pS5u9$y$f%t`*62cBwz2)n{mueVZ2Y+s=lOm^TdjB7#)7*Oh~Ys)NE0v7ah| z7E&CC$!E)G-vE|t(I!p;i~9o-`iB=ONei+ElzlQdmok{0N25B}RQ+$#9~5$DkrX}n z&6oLR1!)G#?oA@$O9Fpg)D%2fA4xV`u7h+uAjWh!sZm~AX8f!4a zKWT;@k@_&GQdw={{}iccbPP><<_%rCM&?!yLROaM1GY6fr}Dkp3`%-c3cypfp;+1DrHBrm6_ zU>>jUf04B814zyb;&s*ELPrJ-Ui z#mss0#fw2FfPAbV9|c3=OmX&1v0}cM>r7v7-*3G4Gk7Xtb8t~D$<^wbdEYhjB&YDY z6hNOnma>?Ux0s>UB;`CX=r%Bm#50fN7PWv9*O6AIt56WGP$>EqiKv)oBoT=x3G$d5 z$>Whrna#+X%}`5{`cG1+3*`j~<;kMq;W~EbEtKC6>Yh{B z%rB&tFU9JThDZth+@fad{n}*8bU8IaLWUV1S#55AELtw7}(`?EEQ)&VeGo5uo%-T z{2l;e%K0kFjChk`dimvf?r7d;saV6FBiQ93x4Gc-m!iXxrPvz-8NPuSySl8|d>vmj zK<_?bD6gtxRF63kh1A>*k55pEG41W`3w2_|%f1D%)P?afR+Z&!JLy*Et|Bz;9f%H> zmJMDSY;N|pV%xr(3y)`0U)U9Whcrw9i!BdiR7^DbnuU#|WGJ})f~tSV z_2B|Z^mv`)i5>q1g59(9%SJbtv{gwzHZ2$)uLCpc65OW5i6&CR%$)gCEkte?J2pm6 zBnkUzeZR9XjFx#go43a2DgCtY@JSeC{DvVs%Wc(1^9ALr_XWlszpc(^Ef4WmJl~(V z@1K@@5)mz4UMyQoWK%^ul2!5~7l_Q#D;uaWCmxunqMq2=oqzCqdUC%Bb#$>`@1t{N zwE6ipmtI8gB^g?WW+`SsQpRezYy>qcm)-sQE{--pmoRO$%md} z2MeLbctN~9qyb6t@SAG%Jbx~qv0~(6CT&UNPfvbL+L&z?Js#@8<6iC^@#+lBpU#SO zbFzikV9kji4VS6#6ql*6Ebuo8b}UfHoB853mV_lNPzpRfh6ZX8f1+abYX6rF6&nx%F`e=S!jKM8%&P;=<-+O9w0{V?B2)DA}4bW;B*0 zWGpDJ4UR?B@n>+C#bhk-uMMn((}iZ#NeLXX;T-p1eBcO)L~Tdtw-HCLs2$t`xDr&L@~t z_$#}qM>g{FY)e?V`Cy+;B1u)z;%ikWs0zL+eNcqZO#-^VG;`430GX!?R^^bUjhht1 zVcQrVr_7zv6w_g$0J2z9ZR0&jN;0Wje4qMkns{Dv4}+ZGYyPL9UII5whJN!#Ew(W3 zEB3i!ceRarx|F67*34fhQ~~0cQpi*n5tLWnE1W0)2f?iWCyLtQJjoZwM6gdX<;|fZ zZN?x{pySFOWXas4xX_;tLa%ephTNO^;BkXo&K1jh#UB`tK2cT1FhXiseV)mu2Rla~ z@nOf1Np4b)ZJ`+OiHhK+C$!fSapxV7*6~w~u{`Hp@O0=s&L}CE>R!CTNcK-CICEc+ zKL(uE(E#LEhYL^&2l>fhCinXiyU5Wa7U4$Y4779NBItdj@^S0VlPIT}go^OAo)f>Y zn`|-4wb%v9ayC5C$Jmed>t*I|!Dl%uD{8v3)*k7TEvpB7!a*a7q~pOEV#E4eMDpIh zJ1@o28#)4X~<38EPM#?)Y~e+;i-jP)N(Zf5Fg zOL%TyIcfVODYy8K7;&KvKR--rhYpoMD-rp3D}tpYV;V9=gZ`Nc9omdRk265rL4$WU~c*!3Dm>@sISe^-{s@$Ee#=tvjtt1fB4A%u#onZ zg95bxA*wOLM)8aCW!N~@C%60$9>zL`_n%Mi1Qh1%Bj3SyXJ?}lz27Fr+{VRl^f<}I z@PNQS5rV~YMBKIhiC{jb1O_QbKcVPc-(#KWtIM|MI=-qoZ_0!-amk!a*`#(Cphuo| zHmwAPZOkN>U3E6pDan3cR0PH_te=^!w}Ii8VEIvA4qQ9Fix(ohn-ZFKF+V#KqKV2s zr5B9x49@?Wd$T6h)6)e7%gzU#Vhxjo4qWTno^Zt4je& z`ER5A+k}ZBX!b$9HTU1_|9e)l(K9y_y~C80t_1O4laf;yW7SnTkWk~0ogE}(*HqoMS)VDC=4#g#1;P4L6zVMzb| z8*}%s`qxwU*1RNhvIX7ue;VxjZ)Xi()4-kuohm+g1r(oVj2`z;GDPa_Hu&l8pu)^#UDL*%T zAcNx=A%g?WId+O{MEC%4=zCb`=6^lCqukW(R=mfHxcZtGqm1 zH2eh$d_X_cG0JXq(VG2ofsW^8VMO8eQCfzyxVb9I%v$djM{#P(^yLAP3$o(j!iOOt zAe0DN^wtkPUCiKXF?Rd0zD#)^aE0D2E~9Adv9IkhNIDKRNkxEf3i9qzCJA|`g11Ct z<|)rTkEL;(tGvoOnMEO|!kWm~`=S?i$tA=Z8y>NVJ)#e>o&+WbGVq!J_M!d?>VXUUn3-RNP`de4(B}yEKO4D?%veYh((Ye2e5v{{qE(nFM6BR< zN(~iNe8x+1g}EY3qrV!1X;v6hypk9T%BTrW}q9YdG-3{u>H|*JD!X9B{_v znf}j!b-VmdWuR1TUH`U|ae{_HB$C)D-QGX*2|24# z)E!Aa&qJ{szH?$W$ye_7pzkwnm+usN%6w(|WA?^;LT8HaH! zNXCXy#k}l5UXQRA0Snj`85tZl?QqT&SdLqIcRSKCJ*-#y|M6FicuOM%uF=9_V8WVM&LvaoP7p_^!S(zcKEt^v9xfHw*r|KT4+saW-AstM(6)gF`96J6eCjw!C%E#6z35igb}xv zKHl3rf%>hocYB7+{y$gVkP~QZ19^4$0F1a-VGIKgT36LUi)8exZhV!8pjF_%IHV20 zvXberK*_aDi0iJ%lirvFSh%?HD z^*`CvaQ-nuZ<=I6Jzr}$T2>mqd@J~`YP^12gA}2lz`#xu&TdAJQ!2aRg9$7E`}DR3 zqpn)>_hwgP3Q|z?y^c;2)Fsb<3E{=;dck{;GG%_%8R(!P{l_Yt7#)`!|M7Kry_6Iq zuM!z_BAGQdG2;IGTOxzj{)>M}|Y=VJ^B33)aa z%KcgV6TuUgqQjp9&}Q!sn6m-r#VGfieV*zz`K>>;q>6ofy$1|=x5KeFK+Dzm=cp>) z_Ro1P&VskF=sY~GMC*@GH*3h%CxdQ`268ekJZ_oz9j5xHyI_Y=={FyTGz-_hnj^qw zu`LpPw4Vznvk>y??b*1zado)kU0^VgbqBxYvC%ST+<0V~lDR`>dJL66-bm7=?dYxW zc+$*Y^8j3kxS;7r&+9>%M+b<1y{T<~(Mit#2^RVV_riY$e&PJn_U9(TFBSOVGs(xz zu}jcAu|d3WjS=Oq|3$M`AL1yS=gL% zCD0ul<>N6KZPxwL(5M6>xFobmNZ?a;J;sT2jW6tib8NB-!VFbn8scIhsIKjA-N&IK zc^)p^jK&O&S#H&-Ip(zi8;rb)&_t#+*2ia3bF;(qtce*W)UOUvF9OdThe2}}=V#S? znLh1z%P5R5b5Cbaf9iJRCVX5ApSW!RjVPVk0y)BMgiWJd+e<;=gqs519y+F z>2uoJD;#Qi&Xi8W`}fnct0!WeG(Js>gpKpNt6zQ2xAc7O_p9=9D%W{u4(zRbZi!xI zXSv%1RgZ}qmSKS%zJP~$$o;9{**;>~-7V{v=gqW<#^BcD<>;c9y4HKS`RNx$tYw(_ zmWRlei^$7Z^&S2SUiqo-sCj`~CkKvV!e1z^Jy$q(4_!`|#qWrvW*XXC?(4Y#L=!Fu z?W}48TeDR=tM~i&auccZK9BnY#2sG1r=%CJbELZsnd_>DSp~hNm`Y&KS|;j(-t*0B zG^o45yMT_T6AhI4=Y0#Pr=ws~0N=}VFxtsk&nbTSJI?v6sIjq|l{UR>pFy9+q4@^%KqXb<(D8+zm^nS)D}hZB77y#$xN#iQ`t!1)HQ2M-N_h zHTtSXE1V^wQ{>aMIK@IK6))hVSbLgYQi=SkC$G1sJRPI*AE3m3$l>wH^o>ahUhqmaWSC(JvK&HtL7qGHhPp$;N?Q*K+h}YMC51K;5TJL5g}-7^w4I z+3Ldc8}WjjkLxXRq+o5=do3`JRUGbY zmF85P6E0L>S0;~UF6~Z4WtY=wEyCp{zkJ^Ns{B;JAsAdAsG?c8h8#NW1pZmZHc>Bm zc_`JafFAvPpU`I?c~nIFa=dtW>hsi?#HV<9t9C7-2a>%9x2xzX^SS+&%ZJX6?q03! z&y$weczLPj0Gr!zRd-&3ne~ch{+}-jFPseArD09km5nyNc}(Y(D#$L;(t*c4hW0f! zhDSDjD0>6H)7$t?tk-PP;y|y^<%Sg6d$9HKsqfr}l7AUcE4s0E*EeRg3Kjrhn(qWC zUYOt9s6o$)J{0Z|m#oR}9)gvkD-z4`jh{pVZgK_jr17YHy*kx2+ZtTiBy;lyf6&+=-IhMt}AEF?m&z}fkiMEhz30xywvWc(x z6vx~J&%ZdOfsc{Syx0O7fF?fI8wv-i4&Z5JhXW%xa=Bx zx;Az46SDo0iqKfa^SG}4Qb8j%c|-bmd2U-os|H+D{E;y%*Li^HH)ON4>RkS3TO69Nb!1mV0bhX;XD` z+K4dbVop29BDZF9YwX~4U9BC7qBh{bbG2vA@8v0voir$ieC^{YZ?mlULx#863UDH7 zLR_Da*+4&sRhp`m(kaCDB0PIz2QD_D=a}W_plpF*uLdJ_cUn1%*`5||^WfuY{B9g; z_Bls*{`ut)a^CRqAUnm^$)V}4|6z+ZU1C~Fg?#APEPh?B-JtIJ?9jEvWmV|c){PQE zRf5rNa2l4&*=`lm-FZ0P^R?U(@X^AbTjXe>HSMwj=J4r4rAx(1HRYgFYULIn?5K6) z^Wr5Zcb;`+-N|!W=}ynhZ~X$wZqiJ&Y&1DMt%5HdCoB0wOGBjP(^m2zrtS5;^vpfKSoqJ8KCVI@qGi}b2VdS>FO&1Qpe%zv$mRFa0T>hnN)c9{?*RN= zp6eV;eLDIF`!AF1K50)9#Wo$fZ9v<R$F`Scibsq%v@@iS1?M>{U6j4^QRWXF0Tj%Jgi$qKyjF?Hk* z-W03C*$`V9j@oku!X(=!|8IdtNGd*VWj|_`XlgqQ>7GQ0GQz3Aaw&>xI|9t#hLyqVxWAM{)y~1 zxFNNt=-4jhTX|OY!>4*nE1+U|Agzj_uV|@flZ|!N3Fh#Po(rw1!Y`o&EUDQ=$&5qm zb4YE+n7X+MHR6WFLro!gU(3>jkyGbe2!UR9gw%`U#(2@l+~XS{q`*@LOFzThDPzYy zKQG$xZ75~Bk3EWOBze|~u%)4rRVRgRI_uYMPk!4p{!SLwx=(4frJgkoLt#5B`l0D&zdUfM4dV%x4Wn1#-ajozKJSNd=2GP zT-Ciz9PZSMB3M3v`Ctwga|IY+w036fb2n&iRkQis*J!9%p10VZ%Ix2*H8+`6lCsQ{zX2-^+@aRhg0KCVxy57*7kta>} zD<7Z*L>i`FD*V}A?);ZF99spl#I`Exo#EO#*L1bL7TIj7WLpn+%5ONHelC0STLYXX zo`;f53U;s-IbH=Mg-z3PJD)D0kIJnlKY_p#bI?$ML9ZINQ_WKOk-?mR_`q=y#|`_K z%w@ir^T8u}+u6=gXBk4+CHNn2kB;S%whiBd;Lc}7PE>0f=dm7zMNV^o6k3F!eaB*(hloH)QUewki#p%Bt{P2zzvVR-0z?2PXqL4y*8QDS|vMowigx zkOLX6v=F`Mn=)zy;5Pg$I`^q`G1H3J@PVjz-EH-J2w=BHFkto4d&RdH2Ksw1-_?AU`AEY2KA6_xe~mDUf7T<- z{zZq6M5m}nkcYQZzsZy)+rH}2f>>w1n$DxLp? zM!}4SpN{u+HSsBMf{V=H5yzIA&lB5aLXEJKKwAAwhGTS$=OxlAW`#_)kp)v(QVIv{ z2_5jZKKWoxJ;7k&=f`BJ2={f#A-(ov2v1<+n0+ zMdUgvzottOr&$wv|V}8@yMdLBC942)5sbe=w6@5l~z8r{{GO;a$Cf`i2vo{`uXRwv-nHS zYJC`)hoxmcH;}x`LMdp=*@kTK)a8~nYZgf716ZZJ5BssbzGK8_R_jUU@*AJo!0YHl z)>-jArK_0@4&QN(7v)rI&A0ESSWt1BZ)+oze$QcytSGW6JWa&(_-`IwV>tR-zeRF2uUaS$U6 z!Ij5qWA-c4#0Gm5G~TEYf1xT@B!KEi?0F1+y#F9k3^#o`C)P5(yyN+;va%#Sy3chS z#aR(N{jXeovb}5LTPxZ3BO~zpO~9GS1yTBo3u0Oj0y?C_1MAz#_e(;PcIeyb3@1dg zN6krX`s7S3R`FIPLKDIx>pY&q;TVDzenKbOzP9L_cBA?JZi(j-wL8*H`hZ)?$3^YBZ^HHY`v)_ju1`C(jq5RdtU9>5jFJdC$3aco~6415}*E0zH z)={KrUy3u|p1RG-??A;j;lj_-BM*RgBiEc|Xq(53>sI=_!e}ppN z4kVNplYLo*M8aw%eV5GJF9)`s&rVheh#qB^%}jm5nzm{-;YJM=;F%tqW^j#eDwF~J zwV1oyobLDwxPWpVC3TLzxHb!u>BoxiHP*27*!$c0k!LK)f~efOTu~n!8`b#KOEJVY zwQ@NviN|@jD!gcWW~UH;%N@>awU(LXY_Cds(h9n@_ycQ3sZbt0rgdgu_V}G)qlg>h zfJ%4Ij(U-3`JF6EDp`jaabl**4$jW+_nZ;nTmOt%hzgz$2Ry<)dXp&{7B6y$vOz!O z99Mf&rCuJ_AT?1>7%mCop#8qAO~2A!UCjDC=_`(1Ifr??cCogrQ`i4p>_MlZ@abgS zDH;u{iolEnk#PUsWcd8_Ds?#YW~yQgnJ1D)+ZH}4z59KU?HG024(6IIyub%cWJ@+d z_nDlF_##3YIk$C?VM+utj=GEw$Y6S~s0f1Sd(}M)8#HV!tKAbvN-{-}c%6?IwhkV8 zZpz#2X~nKWS+IUSr~Ug!4K*cbljT%;P-36PtR3{N=I z&g=?fW)8%IltiM!XUi1quv(a z=-#gjjd4sgN4$ax4w#V%3-@9uDw=MyCKr_l$r1Myf}iWA^-I@a&bTUI_m=MZlAQ=25ea;Sav5*pmNmKPtP!=ly(^jf<0kffd5U(PZ+vJ;R2FEzOz z$G2K29!+A2?Sxrvq!y$`TaFUWo-zx(*LpD>5ve5Sw^xqczJsx-q$32(ur)V&bdY3A zCz={|xyam%WfJ2Mod4FwT&Nsc*?03j6Hry|b<>_V0!UwwT8HddL3@O1B(9RsriSH*sm10blPNDO+Zeor zY#n+w<(-0RRJKV%U@nAI3_oFrl)|^?MiSA5{f%kN#Y^8pO`JByK$365iNxRd5ctkj zcL3C%V;p%dk9TvZmwrF-h<-!2w&?I8lUe$u;nmBzBCv8CFHpC)eoXWO_Z_pAcNiQZ zR$B**i$^BO59#;2;MCtx`alQT7;9MCjR9*|IA#3$0gJL zb;I&wuoe`YL(y&*ov*6`+Ag!d!tLMlBVrS+W;(k38?bxNDd&*Cj>#FZ47#;MZ-P0n z)t-qBce@oBNJ0X@+;xs+R4Sz6_u;jQo_8UJAH^iu)ty+zU8?AQ_ng4;?6u2{nXZhN z@jHYHKVuYBr1ghT<7dEyfgsdt@emFw?q7?$!z83J4|3j3dAn{U9WZXaibF4S z&TdKCwaVCy1_p_kAFE!peBycovv_E*l&@ zkTNx_%$$3Q#^VZxclCJOLHI+LZ`2j(q@ei#lj7ml)`|CYd0Z4*0Ccm!#8fYGDE3`P zunby^r>A@dMXdSZ4wR3KSz9>G>O#d+s@+6K%+8WJ`f1|g)7Fh`=CVDRE63o#Y;XmM z4l%zB!7|>GrqlCU#Qh8kN09|vwUTLv=QQAo@vP7X*CzFuJcvo&0z^Iyn377)#nyQ#!^fs2daeSdlKgPyMi@gjfFrJNwg8F(cGCU2IBS`@11K_g#V)-O}A(U`qph29st0 zQP+fi11Os)4jN~fDvsMm20>;c{H$Q+-6H-7PmlDKDuR{dO}i$?+>zj+$jg3@Sb{)k z3@=_HfLG?xO~!I8FH*dW!%YB*G9YfVP>pG7KvrSwk!vMs+oISuw$n6$)1xyhp5nyo z-E$B^(IZdZ@yeqj@ESfCh=i37Cgk|*#EaVZdti_6&eJU4_TxUE(z9)+ir(Or8jF*D zBZI@+O~c!3+^2lMFX)0pIb_gI@XK|Lp3z zFjYb4aqcp6PNyk8>P2828n?UU4^3|%h{9L-Ov9$TNS-{!w?2uYP+Wr`>#(K#nVeGB z^_}y$jX;M*B|qCOPeFDFBMKew7Fb#J?7nuZ6Y_s1SKA z+ARNF90@K?t{8QbzW&zy0sZLszZ!=iV+(mAjN%72yI?k>B^c^A;POM!Nx{R^nAvhh zv3vTnGiJ;34b_T-ET*_S*Hr;PPaE_k#NGUCr;osmuTMH-!6$rx=Zgv3Wq}P2qW5X! zB`d=$xfakKC)dg!zS8Stcnsp0ViY~UsX4dhe)=*ilT844XEUMe^Rm_1u8guR@hG^W zM=du%UqYPli1E-2K9O0yc#c?G{5u+3u!rAbeMk&%Dd=6rRZfE04_a zs#3ybDU;^Jni()i-p=~MWyzCs{6C%WSd)89g=teJ+4+CU;IVoqUm{*)muT>SEv;Oo zhfqFE?%_)N-8|R;fD<-){4e**#F;Pme^}`CN!yhvV9NW0Q_%@sKD=!CTga@7mj74T3v= zp&bZ1TY=#3#6C>d&Zpy6;+KnQl!;ES`&E`AzGdt|`XvV52D3*s%`)dUO!N6)6iID0 zRy<4+70Y%K#a@tUmdS;YuW$tfGycMgSGWp-?T~3^Or0+`Nj5540QE>6VB+Mc3UjMp zS!aoiR%;!a#jJm`qxDf?IXD`=-L9YdBjG4Bm`0>3?K#(G77V;x`EeuKkIxvq5 zh9s`*06gZmnm?@2K5&Wva#9Iw&kUX#Gx05G)cksj{`H6tB89RT;}Q+;e=t=X_B>w9x3QHlYrJkPP}L$}&@% znqy)X1Q7-TY%{f`IVL4R5W^tAF;m-;W3nFv0U!KPlxwDTILCxK7(x;RcxGysKsmt> zpcmAM^3Bv9fO3M-OM^fC{{zY(0)u}M{4W4}X)ui_-#-NZPaq!D1EZ4Qx19e4z$*>r z7Ulbg;Qt9=f_k7|68x6)zW{8?D2JHW@`I(p-wTN5cW3O8OXKWeg*h*@*L$#j{fDA z`XxbZ%1DQpvm~^5>ZxCm*g)YdgOV_b1`C3H)e;Jbwcq^;u-WAqEfuf6muu^n1R^OT zq>@*A%R+csu8JYGeX(a1mb(?B*XgM)ia z?f8D6rMl7%=MTX&&zRcZAf*2nm4VP42z`4+zTbUfYL`IB_Ad$op*0Y4{fojtXcL5d z|Dq@m+5w>urJdg-e2*K8E)$(E;0(*e-m)Q%!U{YKNSz8>8RxR)DVkVr0gHYUzexM} zw<6Tz>ghghXndXo!OtLg`4@sufuINoDmBodZ?r2OH(D;A(n^MV6)f-3I+o2OYo?zz z7TsLW`($*o-l`4Uwt8I>17*u07%yob4j&~O2h{ekLj1dZ?DVGeX4P7b+l3n02{50f z9>ShApPw|_lge(|pYGZI^gZ3zd$ag>^F5k7yHI?b4h;PYM=~U?Loc-pVO8dq!Xg(|y6;(aPMNiQ3p=HNcRY<~b^;uFYf{S0FkX zdje;GJp~jV6>Q2gS*LJWVwU3O2F3I^f@;)E*C}q#n5EpM@moWP0R4yo!eEdbTm)27 zTjM}slQCezlAI9XulaE>YasDIQpIi-tL#sfsZ;Gdpd*GY zG^3$mN+?W~Dw7X@g*9K{z=$6GiiHcy$1znYz4!{&r!9u)|Iyh|5=vCDx0XhQn#tFI z;a$*YG@f4a?;ok3wTVwot8O?Nv`>9<#WFjR-|+web<6`|EUrC2*78Cf*`+6OnMOs^ ze?TJQ@}=tQ;|PuWeq~q-AkhD^IRypTgK7(d=rBdG4JN!6MS+78WXqzT9M1Lu7Dv&E zHO6%sO(fGdW?;Z)p?xYbN*tX)s{nta zJ$giRNf&1Bu01A8QUWsJtgk=hxg)3Ei8X%3-yp$tNA?f+?Gz!)#Er5H2RlTfiWJLL zg6H^=vojtpfVXU>i+NDR-%z$3#tTlCmVA>$j>5?n@%!w0a$MPG;_nzXA)K+lAz^}3 z?f2Jz$u>KB!i_h4*!&`iibG&tSl|!IGyVJg17}}Q2r1}kSKGaIDngRIF)BhvG9ez8 z+Q%F|>ISI*XI-Ot9=Vn;u?DRo-*!cv+c)yV$>W@u=d_-DPpVe)S^_{A5-vFZqqzI3N%@3TrrjLx?)(FdhvHi_?HAE(oz8 zp!Stvy*Ni2k3AlJ=`AVvli8lUWHApYsSlqo-mE8BQD}pjl$X_SJqrsc`rSwK2;jY> zV-t)bJ;(8J7eeEBF;KkE^o6_Z0Rk|gU3WJG&oKD2qpxI%*A;eZrB3`~x3sn`TER7w z?5x;5SIEu`F*=$Fx_>xTMV4JD`@_U%)*|qj5GD*fZ4ooCNTqrOKjd64@(_`Ll$G_5 zl7}|3H?UR~Lh%lMD}aT-f#?2br-n{DUv6D{WfrDhW6L8q0!s%zxfSxLFqoi)1!>}K z{j@{>O$Iw_~ zFn@0$y5y$&Cgm&46W_uaIyG}0Iq&va3!Sr~`e2hxOm&_^R~*JlV*RI3d3fFC`nHq# zWFnL-?FuLsZ5|Zc^;ye|6X3O?m*o-+)GyN8#O+9(oB&5~mV;$bc;w#Ws&cxU6S@28 z!5fmau=^Rst)jP)!hinYo~Uu)-zYI{jrBfC+>U%=3N@Y=q!qeE)( z#Irq=S;GK*hHpE=}2B!f{1Y3uVx6ukD|<-{(tYdctBo z4D?sTqo4*nWCS2R&)f;DPeT1iy|!0uzR#NxmuOWD_-$u$daj5g-%_|{Br7j#3HS2Z z={H5EugjcqGwU=E3s^Pi#_^k%YHHvz>+nxmT%y%or(WGF&JN>oA6$g$MrYBgBce=Uu1Q;d)`I0z!xs5NzKIeei|+4e zW6&th(Y*-j-Wq0nYuI7&Z^Mv@u$|W%!~TFh|AaR((KoXFp}%Cr32$T}Mt{jBgxS4$ zsMXEe5VQQG&p?le9Y97$0%lxs`S);6IevmE|gH;1eLc2gW4#rtq80Jd{V{M{Rwb@khrzrT?YypiSndK)v?8`-wr z+nDd!ym^S}OU^%e{$yOUdC=$pogCfVi8HqAPg~@`U%G$0345LT_vFx2{binZePec? z|J%)&);H!Vi@!%xTj!OT;zWP$p#o)+@JWm~(*ktjM|y$7@c`#Gk*ptYaCPV}B=&!U z6?AW2r#C1=`{w<|Gc$siG&J@9G4|GBRjpstDBazi(%m6l(v5Vdw9+Y^QqmoQbV+xI z2+}Pr4bq|1T^l&(=lSk;pXdGqd(0SP&Udc8ajms|muj}2P3vbVIg2X!=)^znIvZSE zui3@T-{ntPjuBKA$9=@7jo>z%}VEeGVzh%k?>Vwom#hG;Olb}<$*}Vc-%ArZdP~8 z*s8*-iT1>1w1ZWA=&e0y(=B2;iR&Os@8qLpbq27EK3SF@Emd=X1%Bf(X7|zJw*Xkg zpDgE(7Uds+#b+b2ot8J-rh7}`7$wmC2;t3Av}UtQY+MsUI%b#6%(Z*66@zc_NI9gpJ0~V10YL(B$H)0Y)Jvgpf>@s@F%kJS{7@7>@EQyOB;G5tDk7^ z1IQ9J0WyBZN3vzvn}}_I%oaq}*t(9}C;R$sc@S2z_92Mt?un}+F?Nf6zqeJcR>Rcb zWJXeZqz+?3&muS#;9eenj^-6fA6u8G#je?reOksBMdvqEX`IImDf(?L7d6j zZQDRGn`e)!^i<3}s2D$klSnz0uP$`?jl-UzK+;8y=Iy$wx}!eAE>q3-F+j;>2fL#Y zD^WLD%=%lI(m7BbgJ&NLvt-{)LF^3sK0zBm6a7e24A9gLdrAW|F8Pl%RsaoSP4omn zqp|x)qn#{9|E;V8L}U6$BMH#-v+r|*XfhsY!U3A9VNWGcHHD8fMgR>%jp7tQ!?lOq z;Z9#tnFX@6gDiG`TbQQ-OTpikERbdCZwtx{V8P!1i^msaQTW^P3uFoY+hQ;aSla%! zd)WHJ4prPM{wFz$7sS04*^-XCkq{K{cj zS6~wQEtQ;FVK8q#uO`@-=#_O?KC4i|pwTc5hM zU54*6uA(;V?i+usdnPqAIF18mB#wo`_e*I&6oM>I6oR0@CaV5HG$yDdCcLMTvOvP}-A}?7L4}pPmiRE`Ust1^r6Ae< zl9~?}wV`m&1~}9}98LdloB|wW{m&c;AP#|Nj>5-|*`GN!fpSwnK9@@el>0po>A74F zpxhAi=W>UDa%)(g%YBqe#eXjMQEDWI3%xb@t&huBP+$Ddfm9&E%V)x5kT53aldwK0 zi*fv^z^5eXzmu4epQ?CFI{Q1RZ0hf%*MBEjAnRau>6WcSl(zMYGnQ2Kx_TJ)QN8wx z3e{3Kl{q{!C|jp^a(&5n^<;VdHg(!ygB)jCTh*%#x3qE0y7B}qlAft}X*p6u&$@2b zJxsDLY0CGgkDj@H!A77r&sxrU;K~F$S@)2O#6+cys&3n>Is&ock^r *2iqExGo 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%0DnaL7=_z0nN3N} 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