From 8deb36ce08d5a2950a93049969a7a4f844d05bed Mon Sep 17 00:00:00 2001 From: Istvan Csomortani Date: Tue, 1 Apr 2014 16:19:24 +0300 Subject: [PATCH 01/18] adi_board.tcl: All procedures works on Zynq/Microblaze General patch for the integration procedures. Tested on kc705 and zed. --- projects/scripts/adi_board.tcl | 165 +++++++++++++++++++-------------- 1 file changed, 95 insertions(+), 70 deletions(-) diff --git a/projects/scripts/adi_board.tcl b/projects/scripts/adi_board.tcl index 494ee3458..0a07ee12f 100644 --- a/projects/scripts/adi_board.tcl +++ b/projects/scripts/adi_board.tcl @@ -11,14 +11,14 @@ proc set_num {number} { } } # search the first free HP port in case of a Zynq device -proc free_hp_port {} { +proc free_hp_port { sys_ps7 } { set hp_port_num 0 set hp_port 1 - while(hp_port) { - set hp_port_num [expr hp_port_num + 1] - set hp_port [get_property "CONFIG.PCW_USE_S_AXI_HP${hp_port_num}" [get_bd_cells sys_ps7]] + while { $hp_port == 1 } { + set hp_port_num [expr $hp_port_num + 1] + set hp_port [get_property "CONFIG.PCW_USE_S_AXI_HP${hp_port_num}" $sys_ps7] } return $hp_port_num @@ -42,9 +42,6 @@ proc adi_interconnect_lite { peripheral_name peripheral_address } { # check processor type, connect system clock and reset to the peripheral if { $::sys_zynq == 1 } { - # sys_proc is a zynq - set sys_proc [get_bd_cells sys_ps7] - # connect clk and reset for the interconnect connect_bd_net -net sys_100m_clk \ [get_bd_pins "$interconnect_bd/M[set_num [expr $number_of_master -1]]_ACLK"] $::sys_100m_clk_source @@ -57,13 +54,10 @@ proc adi_interconnect_lite { peripheral_name peripheral_address } { connect_bd_net -net sys_100m_resetn \ [get_bd_pins "${peripheral_name}/s_axi_aresetn"] } else { - # sys_proc is a micorblaze - set sys_proc [get_bd_cells sys_mb] - # connect clk and reset for the interconnect connect_bd_net -net sys_100m_clk \ [get_bd_pins "$interconnect_bd/M[set_num [expr $number_of_master -1]]_ACLK"] $::sys_100m_clk_source - connect_bd_net -net sys_100m_resetn_intc \ + connect_bd_net -net sys_100m_resetn \ [get_bd_pins "$interconnect_bd/M[set_num [expr $number_of_master -1]]_ARESETN"] $::sys_100m_resetn_source # connect clk and reset for the peripheral port @@ -109,12 +103,10 @@ proc adi_spi_core { spi_name spi_ss_width spi_base_addr } { # check processor type, connect system clock and reset to the peripheral if { $::sys_zynq == 1 } { - # sys_proc is a zynq - set sys_proc [get_bd_cells sys_ps7] # add SPI interface to ps7 - set_property -dict [list CONFIG.PCW_SPI0_PERIPHERAL_ENABLE {1}] $sys_proc - set_property -dict [list CONFIG.PCW_SPI0_SPI0_IO {EMIO}] $sys_proc + set_property -dict [list CONFIG.PCW_SPI0_PERIPHERAL_ENABLE {1}] [get_bd_cells sys_ps7] + set_property -dict [list CONFIG.PCW_SPI0_SPI0_IO {EMIO}] [get_bd_cells sys_ps7] set i 0 while { $i < $spi_ss_width } { @@ -155,58 +147,76 @@ proc adi_spi_core { spi_name spi_ss_width spi_base_addr } { [get_bd_ports spi_csn_i] \ [get_bd_pins sys_ps7/SPI0_SS_I] connect_bd_net -net spi_sclk_i \ - [get_bd_ports spi_clk_i] \ + [get_bd_ports spi_sclk_i] \ [get_bd_pins sys_ps7/SPI0_SCLK_I] connect_bd_net -net spi_sclk_o \ - [get_bd_ports spi_clk_o] \ + [get_bd_ports spi_sclk_o] \ [get_bd_pins sys_ps7/SPI0_SCLK_O] connect_bd_net -net spi_mosi_i \ - [get_bd_ports spi_sdo_i] \ + [get_bd_ports spi_mosi_i] \ [get_bd_pins sys_ps7/SPI0_MOSI_I] connect_bd_net -net spi_mosi_o \ - [get_bd_ports spi_sdo_o] \ + [get_bd_ports spi_mosi_o] \ [get_bd_pins sys_ps7/SPI0_MOSI_O] connect_bd_net -net spi_miso_i \ - [get_bd_ports spi_sdi_i] \ + [get_bd_ports spi_miso_i] \ [get_bd_pins sys_ps7/SPI0_MISO_I] } else { # SPI SS lines - set spi_csn_i [create_bd_port -dir I -from [expr $spi_ss_width - 1] -to 0 spi_csn_i] - set spi_csn_o [create_bd_port -dir O -from [expr $spi_ss_width - 1] -to 0 spi_csn_o] + set spi_csn_o [create_bd_port -dir O -from [expr $spi_ss_width - 1] -to 0 spi_csn_o] # instanciate AXI_SPI core set spi_name [create_bd_cell -type ip -vlnv xilinx.com:ip:axi_quad_spi:3.1 $spi_name] set_property -dict [list CONFIG.C_USE_STARTUP {0}] $spi_name - set_property -dict [list CONFIG.C_NUM_SS_BITS {$spi_ss_width}] $spi_name + set_property -dict [list CONFIG.C_SCK_RATIO {16}] $spi_name set_property -dict [list CONFIG.Multiples16 {2}] $spi_name + switch $spi_ss_width { + 1 + { + set_property -dict [list CONFIG.C_NUM_SS_BITS {1}] $spi_name + } + 2 + { + set_property -dict [list CONFIG.C_NUM_SS_BITS {2}] $spi_name + } + 3 + { + set_property -dict [list CONFIG.C_NUM_SS_BITS {3}] $spi_name + } + 4 + { + set_property -dict [list CONFIG.C_NUM_SS_BITS {4}] $spi_name + } + } + + adi_interconnect_lite $spi_name $spi_base_addr + connect_bd_net -net sys_100m_clk \ + [get_bd_pins "${spi_name}/ext_spi_clk"] \ + $::sys_100m_clk_source # spi external ports connect_bd_net -net spi_csn_o \ [get_bd_ports spi_csn_o] \ - [get_bd_pins "${spi_name}/ss_i"] + [get_bd_pins "${spi_name}/ss_o"] connect_bd_net -net spi_csn_i \ [get_bd_ports spi_csn_i] \ - [get_bd_pins "${spi_name}/ss_o"] + [get_bd_pins "${spi_name}/ss_i"] connect_bd_net -net spi_sclk_o \ - [get_bd_ports spi_clk_o] \ + [get_bd_ports spi_sclk_o] \ [get_bd_pins "${spi_name}/sck_o"] connect_bd_net -net spi_sclk_i \ - [get_bd_ports spi_clk_i] \ + [get_bd_ports spi_sclk_i] \ [get_bd_pins "${spi_name}/sck_i"] connect_bd_net -net spi_mosi_o \ - [get_bd_pins spi_sdo_o] \ + [get_bd_ports spi_mosi_o] \ [get_bd_pins "${spi_name}/io0_o"] connect_bd_net -net spi_mosi_i \ - [get_bd_pins spi_sdo_i] \ + [get_bd_ports spi_mosi_i] \ [get_bd_pins "${spi_name}/io0_i"] connect_bd_net -net spi_miso_i \ - [get_bd_ports spi_sdi_i] \ + [get_bd_ports spi_miso_i] \ [get_bd_pins "${spi_name}/io1_i"] - create_bd_addr_seg -range 0x00010000 -offset $spi_base_addr - $::sys_addr_cntrl_space \ - [get_bd_addr_segs "${spi_name}/axi_lite/Reg"] \ - "SEG_data_${spi_name}" } } @@ -215,43 +225,59 @@ proc adi_dma_interconnect { dma_name port_name} { # check processor type, connect system clock and reset to the peripheral if { $::sys_zynq == 1 } { - set hp_port [free_hp_port] - set_property -dict [list "CONFIG.PCW_USE_S_AXI_HP${hp_port}" {1}] $sys_ps7 - set axi_dma_interconnect_($hp_port) [create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 axi_dma_interconnect_($hp_port)] - set_property -dict [list CONFIG.NUM_MI {1}] $axi_dma_interconnect_($hp_port) + + set hp_port [free_hp_port [get_bd_cells sys_ps7]] + set_property -dict [list "CONFIG.PCW_USE_S_AXI_HP${hp_port}" {1}] [get_bd_cells sys_ps7] + switch $hp_port { + 1 + { + set axi_dma_interconnect_1 [create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 axi_dma_interconnect_1] + set_property -dict [list CONFIG.NUM_MI {1}] $axi_dma_interconnect_1 + } + 2 + { + set axi_dma_interconnect_2 [create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 axi_dma_interconnect_2] + set_property -dict [list CONFIG.NUM_MI {1}] $axi_dma_interconnect_2 + } + 3 + { + set axi_dma_interconnect_3 [create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 axi_dma_interconnect_3] + set_property -dict [list CONFIG.NUM_MI {1}] $axi_dma_interconnect_3 + } + } # connect the master port of the interconnect to the HP1, and connect aditional clock/reset signals connect_bd_net -net sys_100m_clk \ [get_bd_pins sys_ps7/S_AXI_HP1_ACLK] connect_bd_net -net sys_100m_clk \ - [get_bd_pins axi_ddr_interconnect/M00_ACLK] $::sys_100m_clk_source + [get_bd_pins "axi_dma_interconnect_${hp_port}/M00_ACLK"] $::sys_100m_clk_source connect_bd_net -net sys_100m_resetn \ [get_bd_pins "axi_dma_interconnect_${hp_port}/M00_ARESETN"] $::sys_100m_resetn_source connect_bd_net -net sys_100m_clk \ [get_bd_pins "axi_dma_interconnect_${hp_port}/ACLK"] $::sys_100m_clk_source connect_bd_net -net sys_100m_resetn \ [get_bd_pins "axi_dma_interconnect_${hp_port}/ARESETN"] $::sys_100m_resetn_source - connect_bd_intf_net -intf_net axi_ddr_interconnect_m00_axi \ + connect_bd_intf_net -intf_net axi_dma_interconnect_m00_axi \ [get_bd_intf_pins "axi_dma_interconnect_${hp_port}/M00_AXI"] \ [get_bd_intf_pins sys_ps7/S_AXI_HP1] # connect clk and reset for the interconnect - connect_bd_net -net sys_200m_clk \ - [get_bd_pins "${axi_dma_interconnect_($hp_port)}/S00_ACLK"] \ - [get_bd_pins $clk] - connect_bd_net -net sys_100m_resetn_intc \ - [get_bd_pins "$axi_dma_interconnect_($hp_port)/S00_ARESETN"] \ - [get_bd_pins $reset_i] + connect_bd_net -net sys_100m_clk \ + [get_bd_pins "axi_dma_interconnect_${hp_port}/S00_ACLK"] \ + $::sys_100m_clk_source + connect_bd_net -net sys_100m_resetn \ + [get_bd_pins "axi_dma_interconnect_${hp_port}/S00_ARESETN"] \ + $::sys_100m_resetn_source # connect clk and reset for the peripheral port - puts "${dma_name}/${peripheral_port}_aclk" - connect_bd_net -net sys_200m_clk \ - [get_bd_pins "${dma_name}/${peripheral_port}_aclk"] - connect_bd_net -net sys_200m_resetn \ - [get_bd_pins "${dma_name}/${peripheral_port}_aresetn"] + puts "${dma_name}/${port_name}_aclk" + connect_bd_net -net sys_100m_clk \ + [get_bd_pins "${dma_name}/${port_name}_aclk"] + connect_bd_net -net sys_100m_resetn \ + [get_bd_pins "${dma_name}/${port_name}_aresetn"] # Connect the interconnect to the dma - connect_bd_intf_net -intf_net ${dma_name}_interconnect_s00_axi \ + connect_bd_intf_net -intf_net "axi_dma_interconnect_${hp_port}_s00_axi" \ [get_bd_intf_pins "axi_dma_interconnect_${hp_port}/S00_AXI"] \ [get_bd_intf_pins "${dma_name}/${port_name}"] @@ -262,35 +288,34 @@ proc adi_dma_interconnect { dma_name port_name} { "SEG_sys_ps7_hp${hp_port}_ddr_lowocm" } else { - set axi_ddr_interconnect [get_bd_cells axi_ddr_interconnect] + set axi_mem_interconnect [get_bd_cells axi_mem_interconnect] # increment the number of the master ports of the interconnect - set number_of_slave [get_property CONFIG.NUM_SI $axi_ddr_interconnect] + set number_of_slave [get_property CONFIG.NUM_SI $axi_mem_interconnect] set number_of_slave [expr $number_of_slave + 1] - set_property CONFIG.NUM_SI $number_of_slave $axi_ddr_interconnect + set_property CONFIG.NUM_SI $number_of_slave $axi_mem_interconnect # connect clk and reset for the interconnect - connect_bd_net -net sys_200m_clk \ - [get_bd_pins "${axi_ddr_interconnect}/S0[expr $number_of_slave-1]_ACLK"] \ - $::sys_200m_clk_source - connect_bd_net -net sys_100m_resetn_intc \ - [get_bd_pins "$axi_ddr_interconnect/S0[expr $number_of_slave -1]_ARESETN"] \ + connect_bd_net -net sys_100m_clk \ + [get_bd_pins "${axi_mem_interconnect}/S0[expr $number_of_slave-1]_ACLK"] \ + $::sys_100m_clk_source + connect_bd_net -net sys_100m_resetn \ + [get_bd_pins "$axi_mem_interconnect/S0[expr $number_of_slave -1]_ARESETN"] \ $::sys_100m_resetn_source # connect clk and reset for the peripheral port - puts "${dma_name}/${peripheral_port}_aclk" - connect_bd_net -net sys_200m_clk \ - [get_bd_pins "${dma_name}/${peripheral_port}_aclk"] - connect_bd_net -net sys_200m_resetn \ - [get_bd_pins "${dma_name}/${peripheral_port}_aresetn"] + connect_bd_net -net sys_100m_clk \ + [get_bd_pins "${dma_name}/${port_name}_aclk"] + connect_bd_net -net sys_100m_resetn \ + [get_bd_pins "${dma_name}/${port_name}_aresetn"] # make the port connection - connect_bd_intf_net -intf_net "axi_ddr_interconnect_s${number_of_slave}" \ - [get_bd_intf_pins "$axi_ddr_interconnect/S0[expr $number_of_slave -1]_AXI"] \ - [get_bd_intf_pins "${dma_name}/${peripheral_port}"] + connect_bd_intf_net -intf_net "axi_mem_interconnect_s${number_of_slave}" \ + [get_bd_intf_pins "$axi_mem_interconnect/S0[expr $number_of_slave -1]_AXI"] \ + [get_bd_intf_pins "${dma_name}/${port_name}"] # define address space for the peripheral - create_bd_addr_seg -range $peripheral_address_range -offset $peripheral_address \ - [get_bd_addr_spaces "${dma_name}/${peripheral_port}"] \ + create_bd_addr_seg -range $::sys_mem_size -offset 0x00000000 \ + [get_bd_addr_spaces "${dma_name}/${port_name}"] \ [get_bd_addr_segs "axi_ddr_cntrl/memmap/memaddr"] \ "SEG_data_${dma_name}_2_ddr" } From 724bd70a06b8ca0a27f8a0bd9d7da4b7bbd9ad27 Mon Sep 17 00:00:00 2001 From: Rejeesh Kutty Date: Tue, 1 Apr 2014 11:17:48 -0400 Subject: [PATCH 02/18] altera additions and replacements --- library/axi_dmac/axi_dmac_alt.v | 28 +-- library/axi_dmac/axi_dmac_hw.tcl | 27 +-- library/common/altera/ad_jesd_align.v | 99 +++++++++ library/common/altera/ad_rst.v | 68 +++++++ library/common/altera/ad_xcvr_rx_rst.v | 266 +++++++++++++++++++++++++ 5 files changed, 462 insertions(+), 26 deletions(-) create mode 100644 library/common/altera/ad_jesd_align.v create mode 100644 library/common/altera/ad_rst.v create mode 100644 library/common/altera/ad_xcvr_rx_rst.v diff --git a/library/axi_dmac/axi_dmac_alt.v b/library/axi_dmac/axi_dmac_alt.v index 1806da021..8cc429092 100755 --- a/library/axi_dmac/axi_dmac_alt.v +++ b/library/axi_dmac/axi_dmac_alt.v @@ -208,7 +208,7 @@ module axi_dmac_alt ( input s_axi_aresetn; input s_axi_awvalid; input [13:0] s_axi_awaddr; - input [ 1:0] s_axi_awid; + input [ 2:0] s_axi_awid; input [ 7:0] s_axi_awlen; input [ 2:0] s_axi_awsize; input [ 1:0] s_axi_awburst; @@ -223,11 +223,11 @@ module axi_dmac_alt ( output s_axi_wready; output s_axi_bvalid; output [ 1:0] s_axi_bresp; - output [ 1:0] s_axi_bid; + output [ 2:0] s_axi_bid; input s_axi_bready; input s_axi_arvalid; input [13:0] s_axi_araddr; - input [ 1:0] s_axi_arid; + input [ 2:0] s_axi_arid; input [ 7:0] s_axi_arlen; input [ 2:0] s_axi_arsize; input [ 1:0] s_axi_arburst; @@ -238,7 +238,7 @@ module axi_dmac_alt ( output s_axi_rvalid; output [ 1:0] s_axi_rresp; output [31:0] s_axi_rdata; - output [ 1:0] s_axi_rid; + output [ 2:0] s_axi_rid; output s_axi_rlast; input s_axi_rready; @@ -248,7 +248,7 @@ module axi_dmac_alt ( input m_dest_axi_aresetn; output m_dest_axi_awvalid; output [31:0] m_dest_axi_awaddr; - output [ 1:0] m_dest_axi_awid; + output [ 2:0] m_dest_axi_awid; output [ 7:0] m_dest_axi_awlen; output [ 2:0] m_dest_axi_awsize; output [ 1:0] m_dest_axi_awburst; @@ -263,11 +263,11 @@ module axi_dmac_alt ( input m_dest_axi_wready; input m_dest_axi_bvalid; input [ 1:0] m_dest_axi_bresp; - input [ 1:0] m_dest_axi_bid; + input [ 2:0] m_dest_axi_bid; output m_dest_axi_bready; output m_dest_axi_arvalid; output [31:0] m_dest_axi_araddr; - output [ 1:0] m_dest_axi_arid; + output [ 2:0] m_dest_axi_arid; output [ 7:0] m_dest_axi_arlen; output [ 2:0] m_dest_axi_arsize; output [ 1:0] m_dest_axi_arburst; @@ -278,7 +278,7 @@ module axi_dmac_alt ( input m_dest_axi_rvalid; input [ 1:0] m_dest_axi_rresp; input [C_DMA_DATA_WIDTH_DEST-1:0] m_dest_axi_rdata; - input [ 1:0] m_dest_axi_rid; + input [ 2:0] m_dest_axi_rid; input m_dest_axi_rlast; output m_dest_axi_rready; @@ -288,7 +288,7 @@ module axi_dmac_alt ( input m_src_axi_aresetn; output m_src_axi_awvalid; output [31:0] m_src_axi_awaddr; - output [ 1:0] m_src_axi_awid; + output [ 2:0] m_src_axi_awid; output [ 7:0] m_src_axi_awlen; output [ 2:0] m_src_axi_awsize; output [ 1:0] m_src_axi_awburst; @@ -303,11 +303,11 @@ module axi_dmac_alt ( input m_src_axi_wready; input m_src_axi_bvalid; input [ 1:0] m_src_axi_bresp; - input [ 1:0] m_src_axi_bid; + input [ 2:0] m_src_axi_bid; output m_src_axi_bready; output m_src_axi_arvalid; output [31:0] m_src_axi_araddr; - output [ 1:0] m_src_axi_arid; + output [ 2:0] m_src_axi_arid; output [ 7:0] m_src_axi_arlen; output [ 2:0] m_src_axi_arsize; output [ 1:0] m_src_axi_arburst; @@ -318,7 +318,7 @@ module axi_dmac_alt ( input m_src_axi_rvalid; input [ 1:0] m_src_axi_rresp; input [C_DMA_DATA_WIDTH_SRC-1:0] m_src_axi_rdata; - input [ 1:0] m_src_axi_rid; + input [ 2:0] m_src_axi_rid; input m_src_axi_rlast; output m_src_axi_rready; @@ -349,8 +349,8 @@ module axi_dmac_alt ( // defaults - assign s_axi_bid = 2'd0; - assign s_axi_rid = 2'd0; + assign s_axi_bid = 3'd0; + assign s_axi_rid = 3'd0; assign s_axi_rlast = 1'd0; // instantiation diff --git a/library/axi_dmac/axi_dmac_hw.tcl b/library/axi_dmac/axi_dmac_hw.tcl index 69a4a6cd4..8ef85100e 100755 --- a/library/axi_dmac/axi_dmac_hw.tcl +++ b/library/axi_dmac/axi_dmac_hw.tcl @@ -19,6 +19,8 @@ add_fileset_file up_axi.v VERILOG PATH $ad_hdl_dir/library/commo add_fileset_file axi_fifo.v VERILOG PATH $ad_hdl_dir/library/axi_fifo/axi_fifo.v add_fileset_file address_gray.v VERILOG PATH $ad_hdl_dir/library/axi_fifo/address_gray.v add_fileset_file address_gray_pipelined.v VERILOG PATH $ad_hdl_dir/library/axi_fifo/address_gray_pipelined.v +add_fileset_file inc_id.h VERILOG_INCLUDE PATH inc_id.h +add_fileset_file resp.h VERILOG_INCLUDE PATH resp.h add_fileset_file address_generator.v VERILOG PATH address_generator.v add_fileset_file data_mover.v VERILOG PATH data_mover.v add_fileset_file request_arb.v VERILOG PATH request_arb.v @@ -36,6 +38,7 @@ add_fileset_file splitter.v VERILOG PATH splitter.v add_fileset_file response_generator.v VERILOG PATH response_generator.v add_fileset_file axi_dmac.v VERILOG PATH axi_dmac.v add_fileset_file axi_repack.v VERILOG PATH axi_repack.v +add_fileset_file axi_dmac_alt.v VERILOG PATH axi_dmac_alt.v # parameters @@ -173,7 +176,7 @@ add_interface_port s_axi s_axi_rvalid rvalid Output 1 add_interface_port s_axi s_axi_rresp rresp Output 2 add_interface_port s_axi s_axi_rdata rdata Output 32 add_interface_port s_axi s_axi_rready rready Input 1 -add_interface_port s_axi s_axi_awid awid Input 2 +add_interface_port s_axi s_axi_awid awid Input 3 add_interface_port s_axi s_axi_awlen awlen Input 8 add_interface_port s_axi s_axi_awsize awsize Input 3 add_interface_port s_axi s_axi_awburst awburst Input 2 @@ -181,15 +184,15 @@ add_interface_port s_axi s_axi_awlock awlock Input 1 add_interface_port s_axi s_axi_awcache awcache Input 4 add_interface_port s_axi s_axi_awprot awprot Input 3 add_interface_port s_axi s_axi_wlast wlast Input 1 -add_interface_port s_axi s_axi_bid bid Output 2 -add_interface_port s_axi s_axi_arid arid Input 2 +add_interface_port s_axi s_axi_bid bid Output 3 +add_interface_port s_axi s_axi_arid arid Input 3 add_interface_port s_axi s_axi_arlen arlen Input 8 add_interface_port s_axi s_axi_arsize arsize Input 3 add_interface_port s_axi s_axi_arburst arburst Input 2 add_interface_port s_axi s_axi_arlock arlock Input 1 add_interface_port s_axi s_axi_arcache arcache Input 4 add_interface_port s_axi s_axi_arprot arprot Input 3 -add_interface_port s_axi s_axi_rid rid Output 2 +add_interface_port s_axi s_axi_rid rid Output 3 add_interface_port s_axi s_axi_rlast rlast Output 1 # conditional interface @@ -227,7 +230,7 @@ proc axi_dmac_elaborate {} { add_interface_port m_dest_axi m_dest_axi_rresp rresp Input 2 add_interface_port m_dest_axi m_dest_axi_rdata rdata Input C_DMA_DATA_WIDTH_DEST add_interface_port m_dest_axi m_dest_axi_rready rready Output 1 - add_interface_port m_dest_axi m_dest_axi_awid awid Output 2 + add_interface_port m_dest_axi m_dest_axi_awid awid Output 3 add_interface_port m_dest_axi m_dest_axi_awlen awlen Output 8 add_interface_port m_dest_axi m_dest_axi_awsize awsize Output 3 add_interface_port m_dest_axi m_dest_axi_awburst awburst Output 2 @@ -235,15 +238,15 @@ proc axi_dmac_elaborate {} { add_interface_port m_dest_axi m_dest_axi_awcache awcache Output 4 add_interface_port m_dest_axi m_dest_axi_awprot awprot Output 3 add_interface_port m_dest_axi m_dest_axi_wlast wlast Output 1 - add_interface_port m_dest_axi m_dest_axi_bid bid Input 2 - add_interface_port m_dest_axi m_dest_axi_arid arid Output 2 + add_interface_port m_dest_axi m_dest_axi_bid bid Input 3 + add_interface_port m_dest_axi m_dest_axi_arid arid Output 3 add_interface_port m_dest_axi m_dest_axi_arlen arlen Output 8 add_interface_port m_dest_axi m_dest_axi_arsize arsize Output 3 add_interface_port m_dest_axi m_dest_axi_arburst arburst Output 2 add_interface_port m_dest_axi m_dest_axi_arlock arlock Output 1 add_interface_port m_dest_axi m_dest_axi_arcache arcache Output 4 add_interface_port m_dest_axi m_dest_axi_arprot arprot Output 3 - add_interface_port m_dest_axi m_dest_axi_rid rid Input 2 + add_interface_port m_dest_axi m_dest_axi_rid rid Input 3 add_interface_port m_dest_axi m_dest_axi_rlast rlast Input 1 } @@ -276,7 +279,7 @@ proc axi_dmac_elaborate {} { add_interface_port m_src_axi m_src_axi_rresp rresp Input 2 add_interface_port m_src_axi m_src_axi_rdata rdata Input C_DMA_DATA_WIDTH_SRC add_interface_port m_src_axi m_src_axi_rready rready Output 1 - add_interface_port m_src_axi m_src_axi_awid awid Output 2 + add_interface_port m_src_axi m_src_axi_awid awid Output 3 add_interface_port m_src_axi m_src_axi_awlen awlen Output 8 add_interface_port m_src_axi m_src_axi_awsize awsize Output 3 add_interface_port m_src_axi m_src_axi_awburst awburst Output 2 @@ -284,15 +287,15 @@ proc axi_dmac_elaborate {} { add_interface_port m_src_axi m_src_axi_awcache awcache Output 4 add_interface_port m_src_axi m_src_axi_awprot awprot Output 3 add_interface_port m_src_axi m_src_axi_wlast wlast Output 1 - add_interface_port m_src_axi m_src_axi_bid bid Input 2 - add_interface_port m_src_axi m_src_axi_arid arid Output 2 + add_interface_port m_src_axi m_src_axi_bid bid Input 3 + add_interface_port m_src_axi m_src_axi_arid arid Output 3 add_interface_port m_src_axi m_src_axi_arlen arlen Output 8 add_interface_port m_src_axi m_src_axi_arsize arsize Output 3 add_interface_port m_src_axi m_src_axi_arburst arburst Output 2 add_interface_port m_src_axi m_src_axi_arlock arlock Output 1 add_interface_port m_src_axi m_src_axi_arcache arcache Output 4 add_interface_port m_src_axi m_src_axi_arprot arprot Output 3 - add_interface_port m_src_axi m_src_axi_rid rid Input 2 + add_interface_port m_src_axi m_src_axi_rid rid Input 3 add_interface_port m_src_axi m_src_axi_rlast rlast Input 1 } diff --git a/library/common/altera/ad_jesd_align.v b/library/common/altera/ad_jesd_align.v new file mode 100644 index 000000000..6ebb12a3e --- /dev/null +++ b/library/common/altera/ad_jesd_align.v @@ -0,0 +1,99 @@ +// *************************************************************************** +// *************************************************************************** +// Copyright 2011(c) Analog Devices, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// - Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the +// distribution. +// - Neither the name of Analog Devices, Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// - The use of this software may or may not infringe the patent rights +// of one or more patent holders. This license does not release you +// from the requirement that you obtain separate licenses from these +// patent holders to use this software. +// - Use of the software either in source or binary form, must be run +// on or directly connected to an Analog Devices Inc. component. +// +// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +// INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE ARE DISCLAIMED. +// +// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY +// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// *************************************************************************** +// *************************************************************************** + +`timescale 1ns/100ps + +module ad_jesd_align ( + + // jesd interface + + rx_clk, + rx_sof, + rx_ip_data, + rx_data); + + // jesd interface + + input rx_clk; + input [ 3:0] rx_sof; + input [31:0] rx_ip_data; + + // aligned data + + output [31:0] rx_data; + + // internal registers + + reg [31:0] rx_ip_data_d = 'd0; + reg [31:0] rx_data = 'd0; + + // dword may contain more than one frame per clock + + always @(posedge rx_clk) begin + rx_ip_data_d <= rx_ip_data; + if (rx_sof[3] == 1'b1) begin + rx_data[31:24] <= rx_ip_data[ 7: 0]; + rx_data[23:16] <= rx_ip_data[15: 8]; + rx_data[15: 8] <= rx_ip_data[23:16]; + rx_data[ 7: 0] <= rx_ip_data[31:24]; + end else if (rx_sof[2] == 1'b1) begin + rx_data[31:24] <= rx_ip_data[31:24]; + rx_data[23:16] <= rx_ip_data_d[ 7: 0]; + rx_data[15: 8] <= rx_ip_data_d[15: 8]; + rx_data[ 7: 0] <= rx_ip_data_d[23:16]; + end else if (rx_sof[1] == 1'b1) begin + rx_data[31:24] <= rx_ip_data[23:16]; + rx_data[23:16] <= rx_ip_data[31:24]; + rx_data[15: 8] <= rx_ip_data_d[ 7: 0]; + rx_data[ 7: 0] <= rx_ip_data_d[15: 8]; + end else if (rx_sof[0] == 1'b1) begin + rx_data[31:24] <= rx_ip_data[15: 8]; + rx_data[23:16] <= rx_ip_data[23:16]; + rx_data[15: 8] <= rx_ip_data[31:24]; + rx_data[ 7: 0] <= rx_ip_data_d[ 7: 0]; + end else begin + rx_data[31:24] <= 8'd0; + rx_data[23:16] <= 8'd0; + rx_data[15: 8] <= 8'd0; + rx_data[ 7: 0] <= 8'd0; + end + end + +endmodule + +// *************************************************************************** +// *************************************************************************** diff --git a/library/common/altera/ad_rst.v b/library/common/altera/ad_rst.v new file mode 100644 index 000000000..77059ba65 --- /dev/null +++ b/library/common/altera/ad_rst.v @@ -0,0 +1,68 @@ +// *************************************************************************** +// *************************************************************************** +// Copyright 2011(c) Analog Devices, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// - Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the +// distribution. +// - Neither the name of Analog Devices, Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// - The use of this software may or may not infringe the patent rights +// of one or more patent holders. This license does not release you +// from the requirement that you obtain separate licenses from these +// patent holders to use this software. +// - Use of the software either in source or binary form, must be run +// on or directly connected to an Analog Devices Inc. component. +// +// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +// INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE ARE DISCLAIMED. +// +// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY +// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** + +`timescale 1ns/100ps + +module ad_rst ( + + // clock reset + + preset, + clk, + rst); + + // clock reset + + input preset; + input clk; + output rst; + + // simple reset gen + + lpm_ff #(.LPM_WIDTH(1), .LPM_AVALUE(1'b1)) i_rst_reg ( + .enable (1'b1), + .data (1'b0), + .aset (preset), + .clock (clk), + .q (rst)); + +endmodule + +// *************************************************************************** +// *************************************************************************** diff --git a/library/common/altera/ad_xcvr_rx_rst.v b/library/common/altera/ad_xcvr_rx_rst.v new file mode 100644 index 000000000..02c68c88f --- /dev/null +++ b/library/common/altera/ad_xcvr_rx_rst.v @@ -0,0 +1,266 @@ +// *************************************************************************** +// *************************************************************************** +// Copyright 2011(c) Analog Devices, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// - Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the +// distribution. +// - Neither the name of Analog Devices, Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// - The use of this software may or may not infringe the patent rights +// of one or more patent holders. This license does not release you +// from the requirement that you obtain separate licenses from these +// patent holders to use this software. +// - Use of the software either in source or binary form, must be run +// on or directly connected to an Analog Devices Inc. component. +// +// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +// INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE ARE DISCLAIMED. +// +// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY +// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** + +`timescale 1ns/100ps + +module ad_xcvr_rx_rst ( + + // clock, reset and pll locked + + rx_clk, + rx_rstn, + rx_sw_rstn, + rx_pll_locked, + + // xcvr status and reset + + rx_cal_busy, + rx_cdr_locked, + rx_analog_reset, + rx_digital_reset, + rx_ready, + rx_rst_state); + + // parameters + + parameter NUM_OF_LANES = 4; + parameter RX_CAL_DONE_COUNT_WIDTH = 8; + parameter RX_CDR_LOCKED_COUNT_WIDTH = 8; + parameter RX_ANALOG_RESET_COUNT_WIDTH = 5; + parameter RX_DIGITAL_RESET_COUNT_WIDTH = 12; + + localparam RX_RESET_FSM_INIT = 4'h0; + localparam RX_RESET_FSM_ARST0 = 4'h1; + localparam RX_RESET_FSM_ARST1 = 4'h2; + localparam RX_RESET_FSM_ARST2 = 4'h3; + localparam RX_RESET_FSM_ARST3 = 4'h4; + localparam RX_RESET_FSM_ARSTD = 4'h5; + localparam RX_RESET_FSM_DRST0 = 4'h6; + localparam RX_RESET_FSM_DRST1 = 4'h7; + localparam RX_RESET_FSM_DRST2 = 4'h8; + localparam RX_RESET_FSM_DRST3 = 4'h9; + localparam RX_RESET_FSM_DRSTD = 4'ha; + localparam RX_RESET_FSM_IDLE = 4'hb; + + // clock, reset and pll locked + + input rx_clk; + input rx_rstn; + input rx_sw_rstn; + input rx_pll_locked; + + // xcvr status and reset + + input [NUM_OF_LANES-1:0] rx_cal_busy; + input [NUM_OF_LANES-1:0] rx_cdr_locked; + output [NUM_OF_LANES-1:0] rx_analog_reset; + output [NUM_OF_LANES-1:0] rx_digital_reset; + output rx_ready; + output [ 3:0] rx_rst_state; + + // internal registers + + reg [ 2:0] rx_rst_req_m = 'd0; + reg rx_rst_req = 'd0; + reg [RX_CAL_DONE_COUNT_WIDTH:0] rx_cal_done_cnt = 'd0; + reg [RX_CDR_LOCKED_COUNT_WIDTH:0] rx_cdr_locked_cnt = 'd0; + reg [RX_ANALOG_RESET_COUNT_WIDTH:0] rx_analog_reset_cnt = 'd0; + reg [RX_DIGITAL_RESET_COUNT_WIDTH:0] rx_digital_reset_cnt = 'd0; + reg [ 3:0] rx_rst_state = 'd0; + reg [NUM_OF_LANES-1:0] rx_analog_reset = 'd0; + reg [NUM_OF_LANES-1:0] rx_digital_reset = 'd0; + reg rx_ready = 'd0; + + // internal signals + + wire rx_rst_req_s; + wire rx_cal_busy_s; + wire rx_cal_done_s; + wire rx_cal_done_valid_s; + wire rx_cdr_locked_s; + wire rx_cdr_locked_valid_s; + wire rx_analog_reset_s; + wire rx_analog_reset_valid_s; + wire rx_digital_reset_s; + wire rx_digital_reset_valid_s; + + // reset request + + assign rx_rst_req_s = ~(rx_rstn & rx_sw_rstn & rx_pll_locked); + + always @(posedge rx_clk) begin + rx_rst_req_m <= {rx_rst_req_m[1:0], rx_rst_req_s}; + rx_rst_req <= rx_rst_req_m[2]; + end + + // cal busy check width + + assign rx_cal_busy_s = | rx_cal_busy; + assign rx_cal_done_s = ~rx_cal_busy_s; + assign rx_cal_done_valid_s = rx_cal_done_cnt[RX_CAL_DONE_COUNT_WIDTH]; + + always @(posedge rx_clk) begin + if (rx_cal_done_s == 1'd0) begin + rx_cal_done_cnt <= 'd0; + end else if (rx_cal_done_cnt[RX_CAL_DONE_COUNT_WIDTH] == 1'b0) begin + rx_cal_done_cnt <= rx_cal_done_cnt + 1'b1; + end + end + + // cdr locked check width + + assign rx_cdr_locked_s = | rx_cdr_locked; + assign rx_cdr_locked_valid_s = rx_cdr_locked_cnt[RX_CDR_LOCKED_COUNT_WIDTH]; + + always @(posedge rx_clk) begin + if (rx_cdr_locked_s == 1'd0) begin + rx_cdr_locked_cnt <= 'd0; + end else if (rx_cdr_locked_cnt[RX_CDR_LOCKED_COUNT_WIDTH] == 1'b0) begin + rx_cdr_locked_cnt <= rx_cdr_locked_cnt + 1'b1; + end + end + + // analog reset width + + assign rx_analog_reset_s = | rx_analog_reset; + assign rx_analog_reset_valid_s = rx_analog_reset_cnt[RX_ANALOG_RESET_COUNT_WIDTH]; + + always @(posedge rx_clk) begin + if (rx_analog_reset_s == 1'd0) begin + rx_analog_reset_cnt <= 'd0; + end else if (rx_analog_reset_cnt[RX_ANALOG_RESET_COUNT_WIDTH] == 1'b0) begin + rx_analog_reset_cnt <= rx_analog_reset_cnt + 1'b1; + end + end + + // digital reset width + + assign rx_digital_reset_s = | rx_digital_reset; + assign rx_digital_reset_valid_s = rx_digital_reset_cnt[RX_DIGITAL_RESET_COUNT_WIDTH]; + + always @(posedge rx_clk) begin + if (rx_digital_reset_s == 1'd0) begin + rx_digital_reset_cnt <= 'd0; + end else if (rx_digital_reset_cnt[RX_DIGITAL_RESET_COUNT_WIDTH] == 1'b0) begin + rx_digital_reset_cnt <= rx_digital_reset_cnt + 1'b1; + end + end + + // state machine + + always @(posedge rx_clk) begin + if (rx_rst_req == 1'b1) begin + rx_rst_state <= RX_RESET_FSM_INIT; + end else begin + case (rx_rst_state) + RX_RESET_FSM_INIT: begin + rx_rst_state <= RX_RESET_FSM_ARST0; + end + RX_RESET_FSM_ARST0: begin + if ((rx_cal_done_valid_s == 1'b1) && (rx_analog_reset_valid_s == 1'b1)) begin + rx_rst_state <= RX_RESET_FSM_ARST1; + end else begin + rx_rst_state <= RX_RESET_FSM_ARST0; + end + end + RX_RESET_FSM_ARST1: begin + rx_rst_state <= RX_RESET_FSM_ARST2; + end + RX_RESET_FSM_ARST2: begin + rx_rst_state <= RX_RESET_FSM_ARST3; + end + RX_RESET_FSM_ARST3: begin + rx_rst_state <= RX_RESET_FSM_ARSTD; + end + RX_RESET_FSM_ARSTD: begin + rx_rst_state <= RX_RESET_FSM_DRST0; + end + RX_RESET_FSM_DRST0: begin + if ((rx_cdr_locked_valid_s == 1'b1) && (rx_digital_reset_valid_s == 1'b1)) begin + rx_rst_state <= RX_RESET_FSM_DRST1; + end else begin + rx_rst_state <= RX_RESET_FSM_DRST0; + end + end + RX_RESET_FSM_DRST1: begin + rx_rst_state <= RX_RESET_FSM_DRST2; + end + RX_RESET_FSM_DRST2: begin + rx_rst_state <= RX_RESET_FSM_DRST3; + end + RX_RESET_FSM_DRST3: begin + rx_rst_state <= RX_RESET_FSM_DRSTD; + end + RX_RESET_FSM_DRSTD: begin + rx_rst_state <= RX_RESET_FSM_IDLE; + end + RX_RESET_FSM_IDLE: begin + rx_rst_state <= RX_RESET_FSM_IDLE; + end + default: begin + rx_rst_state <= RX_RESET_FSM_INIT; + end + endcase + end + end + + // output signals + + always @(posedge rx_clk) begin + if (rx_rst_state == RX_RESET_FSM_INIT) begin + rx_analog_reset <= {{NUM_OF_LANES{1'b1}}}; + end else if (rx_rst_state == RX_RESET_FSM_ARSTD) begin + rx_analog_reset <= {{NUM_OF_LANES{1'b0}}}; + end + if (rx_rst_state == RX_RESET_FSM_INIT) begin + rx_digital_reset <= {{NUM_OF_LANES{1'b1}}}; + end else if (rx_rst_state == RX_RESET_FSM_DRSTD) begin + rx_digital_reset <= {{NUM_OF_LANES{1'b0}}}; + end + if (rx_rst_state == RX_RESET_FSM_IDLE) begin + rx_ready <= 1'b1; + end else begin + rx_ready <= 1'b0; + end + end + +endmodule + +// *************************************************************************** +// *************************************************************************** From 0d678b89ed32bd59ef67350ace9c992bba356934 Mon Sep 17 00:00:00 2001 From: Rejeesh Kutty Date: Tue, 1 Apr 2014 11:46:37 -0400 Subject: [PATCH 03/18] altera a5gt fmcjesdadc1 setup --- library/axi_ad9250/axi_ad9250.v | 375 +++ library/axi_ad9250/axi_ad9250_alt.v | 217 ++ library/axi_ad9250/axi_ad9250_channel.v | 183 ++ library/axi_ad9250/axi_ad9250_hw.tcl | 124 + library/axi_ad9250/axi_ad9250_if.v | 122 + library/axi_ad9250/axi_ad9250_ip.tcl | 26 + library/axi_ad9250/axi_ad9250_pnmon.v | 224 ++ projects/common/a5gt/a5gt_system_assign.tcl | 787 +++++ projects/fmcjesdadc1/a5gt/system_bd.qsys | 2645 +++++++++++++++++ projects/fmcjesdadc1/a5gt/system_constr.sdc | 36 + projects/fmcjesdadc1/a5gt/system_project.tcl | 859 ++++++ projects/fmcjesdadc1/a5gt/system_timing.tcl | 23 + projects/fmcjesdadc1/a5gt/system_top.v | 372 +++ projects/fmcjesdadc1/common/fmcjesdadc1_spi.v | 150 + 14 files changed, 6143 insertions(+) create mode 100755 library/axi_ad9250/axi_ad9250.v create mode 100755 library/axi_ad9250/axi_ad9250_alt.v create mode 100755 library/axi_ad9250/axi_ad9250_channel.v create mode 100755 library/axi_ad9250/axi_ad9250_hw.tcl create mode 100755 library/axi_ad9250/axi_ad9250_if.v create mode 100755 library/axi_ad9250/axi_ad9250_ip.tcl create mode 100755 library/axi_ad9250/axi_ad9250_pnmon.v create mode 100755 projects/common/a5gt/a5gt_system_assign.tcl create mode 100755 projects/fmcjesdadc1/a5gt/system_bd.qsys create mode 100755 projects/fmcjesdadc1/a5gt/system_constr.sdc create mode 100755 projects/fmcjesdadc1/a5gt/system_project.tcl create mode 100755 projects/fmcjesdadc1/a5gt/system_timing.tcl create mode 100755 projects/fmcjesdadc1/a5gt/system_top.v create mode 100644 projects/fmcjesdadc1/common/fmcjesdadc1_spi.v diff --git a/library/axi_ad9250/axi_ad9250.v b/library/axi_ad9250/axi_ad9250.v new file mode 100755 index 000000000..ad88dcf76 --- /dev/null +++ b/library/axi_ad9250/axi_ad9250.v @@ -0,0 +1,375 @@ +// *************************************************************************** +// *************************************************************************** +// Copyright 2011(c) Analog Devices, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// - Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the +// distribution. +// - Neither the name of Analog Devices, Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// - The use of this software may or may not infringe the patent rights +// of one or more patent holders. This license does not release you +// from the requirement that you obtain separate licenses from these +// patent holders to use this software. +// - Use of the software either in source or binary form, must be run +// on or directly connected to an Analog Devices Inc. component. +// +// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +// INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE ARE DISCLAIMED. +// +// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY +// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** + +`timescale 1ns/100ps + +module axi_ad9250 ( + + // jesd interface + // rx_clk is (line-rate/40) + + rx_clk, + rx_data, + + // dma interface + + adc_clk, + adc_dwr, + adc_ddata, + adc_dsync, + adc_dovf, + adc_dunf, + + // axi interface + + s_axi_aclk, + s_axi_aresetn, + s_axi_awvalid, + s_axi_awaddr, + s_axi_awready, + s_axi_wvalid, + s_axi_wdata, + s_axi_wstrb, + s_axi_wready, + s_axi_bvalid, + s_axi_bresp, + s_axi_bready, + s_axi_arvalid, + s_axi_araddr, + s_axi_arready, + s_axi_rvalid, + s_axi_rresp, + s_axi_rdata, + s_axi_rready, + + // debug signals + + adc_mon_valid, + adc_mon_data); + + parameter PCORE_ID = 0; + parameter PCORE_DEVICE_TYPE = 0; + parameter PCORE_IODELAY_GROUP = "adc_if_delay_group"; + parameter C_S_AXI_MIN_SIZE = 32'hffff; + parameter C_BASEADDR = 32'hffffffff; + parameter C_HIGHADDR = 32'h00000000; + + // jesd interface + // rx_clk is (line-rate/40) + + input rx_clk; + input [63:0] rx_data; + + // dma interface + + output adc_clk; + output adc_dwr; + output [63:0] adc_ddata; + output adc_dsync; + input adc_dovf; + input adc_dunf; + + // axi interface + + input s_axi_aclk; + input s_axi_aresetn; + input s_axi_awvalid; + input [31:0] s_axi_awaddr; + output s_axi_awready; + input s_axi_wvalid; + input [31:0] s_axi_wdata; + input [ 3:0] s_axi_wstrb; + output s_axi_wready; + output s_axi_bvalid; + output [ 1:0] s_axi_bresp; + input s_axi_bready; + input s_axi_arvalid; + input [31:0] s_axi_araddr; + output s_axi_arready; + output s_axi_rvalid; + output [ 1:0] s_axi_rresp; + output [31:0] s_axi_rdata; + input s_axi_rready; + + // debug signals + + output adc_mon_valid; + output [55:0] adc_mon_data; + + // internal registers + + reg adc_data_cnt = 'd0; + reg adc_dsync = 'd0; + reg adc_dwr = 'd0; + reg [63:0] adc_ddata = 'd0; + reg up_adc_status_pn_err = 'd0; + reg up_adc_status_pn_oos = 'd0; + reg up_adc_status_or = 'd0; + reg [31:0] up_rdata = 'd0; + reg up_ack = 'd0; + + // internal clocks & resets + + wire adc_rst; + wire up_rstn; + wire up_clk; + + // internal signals + + wire [27:0] adc_data_a_s; + wire [27:0] adc_data_b_s; + wire adc_or_a_s; + wire adc_or_b_s; + wire adc_status_s; + wire adc_enable_a_s; + wire [31:0] adc_channel_data_a_s; + wire adc_enable_b_s; + wire [31:0] adc_channel_data_b_s; + wire up_adc_pn_err_a_s; + wire up_adc_pn_oos_a_s; + wire up_adc_or_a_s; + wire [31:0] up_adc_channel_rdata_a_s; + wire up_adc_channel_ack_a_s; + wire up_adc_pn_err_b_s; + wire up_adc_pn_oos_b_s; + wire up_adc_or_b_s; + wire [31:0] up_adc_channel_rdata_b_s; + wire up_adc_channel_ack_b_s; + wire [31:0] up_adc_common_rdata_s; + wire up_adc_common_ack_s; + wire up_sel_s; + wire up_wr_s; + wire [13:0] up_addr_s; + wire [31:0] up_wdata_s; + + // signal name changes + + assign up_clk = s_axi_aclk; + assign up_rstn = s_axi_aresetn; + + // monitor signals + + assign adc_mon_valid = 1'b1; + assign adc_mon_data[ 27: 0] = adc_data_a_s; + assign adc_mon_data[ 55: 28] = adc_data_b_s; + + // adc channels - dma interface + + always @(posedge adc_clk) begin + adc_data_cnt <= ~adc_data_cnt; + case ({adc_enable_b_s, adc_enable_a_s}) + 2'b11: begin // both I and Q + adc_dsync <= 1'b1; + adc_dwr <= 1'b1; + adc_ddata <= {adc_channel_data_b_s[31:16], adc_channel_data_a_s[31:16], + adc_channel_data_b_s[15: 0], adc_channel_data_a_s[15: 0]}; + end + 2'b10: begin // Q only + adc_dsync <= 1'b1; + adc_dwr <= adc_data_cnt; + adc_ddata <= {adc_channel_data_b_s, adc_ddata[63:32]}; + end + 2'b01: begin // I only + adc_dsync <= 1'b1; + adc_dwr <= adc_data_cnt; + adc_ddata <= {adc_channel_data_a_s, adc_ddata[63:32]}; + end + default: begin // no channels + adc_dsync <= 1'b1; + adc_dwr <= 1'b1; + adc_ddata <= {4{16'hdead}}; + end + endcase + end + + // processor read interface + + always @(negedge up_rstn or posedge up_clk) begin + if (up_rstn == 0) begin + up_adc_status_pn_err <= 'd0; + up_adc_status_pn_oos <= 'd0; + up_adc_status_or <= 'd0; + up_rdata <= 'd0; + up_ack <= 'd0; + end else begin + up_adc_status_pn_err <= up_adc_pn_err_a_s | up_adc_pn_err_b_s; + up_adc_status_pn_oos <= up_adc_pn_oos_a_s | up_adc_pn_oos_b_s; + up_adc_status_or <= up_adc_or_a_s | up_adc_or_b_s; + up_rdata <= up_adc_common_rdata_s | up_adc_channel_rdata_a_s | up_adc_channel_rdata_b_s; + up_ack <= up_adc_common_ack_s | up_adc_channel_ack_a_s | up_adc_channel_ack_b_s; + end + end + + // main (device interface) + + axi_ad9250_if i_if ( + .rx_clk (rx_clk), + .rx_data (rx_data), + .adc_clk (adc_clk), + .adc_rst (adc_rst), + .adc_data_a (adc_data_a_s), + .adc_data_b (adc_data_b_s), + .adc_or_a (adc_or_a_s), + .adc_or_b (adc_or_b_s), + .adc_status (adc_status_s)); + + // channel + + axi_ad9250_channel #(.IQSEL(0), .CHID(0)) i_channel_0 ( + .adc_clk (adc_clk), + .adc_rst (adc_rst), + .adc_data (adc_data_a_s), + .adc_or (adc_or_a_s), + .adc_dfmt_data (adc_channel_data_a_s), + .adc_enable (adc_enable_a_s), + .up_adc_pn_err (up_adc_pn_err_a_s), + .up_adc_pn_oos (up_adc_pn_oos_a_s), + .up_adc_or (up_adc_or_a_s), + .up_rstn (up_rstn), + .up_clk (up_clk), + .up_sel (up_sel_s), + .up_wr (up_wr_s), + .up_addr (up_addr_s), + .up_wdata (up_wdata_s), + .up_rdata (up_adc_channel_rdata_a_s), + .up_ack (up_adc_channel_ack_a_s)); + + // channel + + axi_ad9250_channel #(.IQSEL(1), .CHID(1)) i_channel_1 ( + .adc_clk (adc_clk), + .adc_rst (adc_rst), + .adc_data (adc_data_b_s), + .adc_or (adc_or_b_s), + .adc_dfmt_data (adc_channel_data_b_s), + .adc_enable (adc_enable_b_s), + .up_adc_pn_err (up_adc_pn_err_b_s), + .up_adc_pn_oos (up_adc_pn_oos_b_s), + .up_adc_or (up_adc_or_b_s), + .up_rstn (up_rstn), + .up_clk (up_clk), + .up_sel (up_sel_s), + .up_wr (up_wr_s), + .up_addr (up_addr_s), + .up_wdata (up_wdata_s), + .up_rdata (up_adc_channel_rdata_b_s), + .up_ack (up_adc_channel_ack_b_s)); + + // common processor control + + up_adc_common #(.PCORE_ID(PCORE_ID)) i_up_adc_common ( + .mmcm_rst (), + .adc_clk (adc_clk), + .adc_rst (adc_rst), + .adc_r1_mode (), + .adc_ddr_edgesel (), + .adc_pin_mode (), + .adc_status (adc_status_s), + .adc_status_pn_err (up_adc_status_pn_err), + .adc_status_pn_oos (up_adc_status_pn_oos), + .adc_status_or (up_adc_status_or), + .adc_status_ovf (adc_dovf), + .adc_status_unf (adc_dunf), + .adc_clk_ratio (32'd1), + .delay_clk (1'b0), + .delay_rst (), + .delay_sel (), + .delay_rwn (), + .delay_addr (), + .delay_wdata (), + .delay_rdata (5'd0), + .delay_ack_t (1'b0), + .delay_locked (1'b0), + .drp_clk (1'd0), + .drp_rst (), + .drp_sel (), + .drp_wr (), + .drp_addr (), + .drp_wdata (), + .drp_rdata (16'd0), + .drp_ready (1'd0), + .drp_locked (1'd1), + .up_usr_chanmax (), + .adc_usr_chanmax (8'd1), + .up_rstn (up_rstn), + .up_clk (up_clk), + .up_sel (up_sel_s), + .up_wr (up_wr_s), + .up_addr (up_addr_s), + .up_wdata (up_wdata_s), + .up_rdata (up_adc_common_rdata_s), + .up_ack (up_adc_common_ack_s)); + + // up bus interface + + up_axi #( + .PCORE_BASEADDR (C_BASEADDR), + .PCORE_HIGHADDR (C_HIGHADDR)) + i_up_axi ( + .up_rstn (up_rstn), + .up_clk (up_clk), + .up_axi_awvalid (s_axi_awvalid), + .up_axi_awaddr (s_axi_awaddr), + .up_axi_awready (s_axi_awready), + .up_axi_wvalid (s_axi_wvalid), + .up_axi_wdata (s_axi_wdata), + .up_axi_wstrb (s_axi_wstrb), + .up_axi_wready (s_axi_wready), + .up_axi_bvalid (s_axi_bvalid), + .up_axi_bresp (s_axi_bresp), + .up_axi_bready (s_axi_bready), + .up_axi_arvalid (s_axi_arvalid), + .up_axi_araddr (s_axi_araddr), + .up_axi_arready (s_axi_arready), + .up_axi_rvalid (s_axi_rvalid), + .up_axi_rresp (s_axi_rresp), + .up_axi_rdata (s_axi_rdata), + .up_axi_rready (s_axi_rready), + .up_sel (up_sel_s), + .up_wr (up_wr_s), + .up_addr (up_addr_s), + .up_wdata (up_wdata_s), + .up_rdata (up_rdata), + .up_ack (up_ack)); + +endmodule + +// *************************************************************************** +// *************************************************************************** + diff --git a/library/axi_ad9250/axi_ad9250_alt.v b/library/axi_ad9250/axi_ad9250_alt.v new file mode 100755 index 000000000..bb4cd0087 --- /dev/null +++ b/library/axi_ad9250/axi_ad9250_alt.v @@ -0,0 +1,217 @@ +// *************************************************************************** +// *************************************************************************** +// Copyright 2011(c) Analog Devices, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// - Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the +// distribution. +// - Neither the name of Analog Devices, Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// - The use of this software may or may not infringe the patent rights +// of one or more patent holders. This license does not release you +// from the requirement that you obtain separate licenses from these +// patent holders to use this software. +// - Use of the software either in source or binary form, must be run +// on or directly connected to an Analog Devices Inc. component. +// +// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +// INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE ARE DISCLAIMED. +// +// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY +// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** + +`timescale 1ns/100ps + +module axi_ad9250_alt ( + + // jesd interface + // rx_clk is (line-rate/40) + + rx_clk, + rx_data, + + // dma interface + + adc_clk, + adc_dwr, + adc_ddata, + adc_dsync, + adc_dovf, + adc_dunf, + + // axi interface + + s_axi_aclk, + s_axi_aresetn, + s_axi_awvalid, + s_axi_awaddr, + s_axi_awid, + s_axi_awlen, + s_axi_awsize, + s_axi_awburst, + s_axi_awlock, + s_axi_awcache, + s_axi_awprot, + s_axi_awready, + s_axi_wvalid, + s_axi_wdata, + s_axi_wstrb, + s_axi_wlast, + s_axi_wready, + s_axi_bvalid, + s_axi_bresp, + s_axi_bid, + s_axi_bready, + s_axi_arvalid, + s_axi_araddr, + s_axi_arid, + s_axi_arlen, + s_axi_arsize, + s_axi_arburst, + s_axi_arlock, + s_axi_arcache, + s_axi_arprot, + s_axi_arready, + s_axi_rvalid, + s_axi_rresp, + s_axi_rdata, + s_axi_rid, + s_axi_rlast, + s_axi_rready, + + // debug signals + + adc_mon_valid, + adc_mon_data); + + parameter PCORE_ID = 0; + parameter PCORE_DEVICE_TYPE = 0; + + // jesd interface + // rx_clk is (line-rate/40) + + input rx_clk; + input [63:0] rx_data; + + // dma interface + + output adc_clk; + output adc_dwr; + output [63:0] adc_ddata; + output adc_dsync; + input adc_dovf; + input adc_dunf; + + // axi interface + + input s_axi_aclk; + input s_axi_aresetn; + input s_axi_awvalid; + input [13:0] s_axi_awaddr; + input [ 2:0] s_axi_awid; + input [ 7:0] s_axi_awlen; + input [ 2:0] s_axi_awsize; + input [ 1:0] s_axi_awburst; + input [ 0:0] s_axi_awlock; + input [ 3:0] s_axi_awcache; + input [ 2:0] s_axi_awprot; + output s_axi_awready; + input s_axi_wvalid; + input [31:0] s_axi_wdata; + input [ 3:0] s_axi_wstrb; + input s_axi_wlast; + output s_axi_wready; + output s_axi_bvalid; + output [ 1:0] s_axi_bresp; + output [ 2:0] s_axi_bid; + input s_axi_bready; + input s_axi_arvalid; + input [13:0] s_axi_araddr; + input [ 2:0] s_axi_arid; + input [ 7:0] s_axi_arlen; + input [ 2:0] s_axi_arsize; + input [ 1:0] s_axi_arburst; + input [ 0:0] s_axi_arlock; + input [ 3:0] s_axi_arcache; + input [ 2:0] s_axi_arprot; + output s_axi_arready; + output s_axi_rvalid; + output [ 1:0] s_axi_rresp; + output [31:0] s_axi_rdata; + output [ 2:0] s_axi_rid; + output s_axi_rlast; + input s_axi_rready; + + // debug signals + + output adc_mon_valid; + output [119:0] adc_mon_data; + + // defaults + + assign s_axi_bid = 3'd0; + assign s_axi_rid = 3'd0; + assign s_axi_rlast = 1'd0; + + // ad9250 lite version + + axi_ad9250 #( + .PCORE_ID (PCORE_ID), + .PCORE_DEVICE_TYPE (PCORE_DEVICE_TYPE), + .PCORE_IODELAY_GROUP ("adc_if_delay_group"), + .C_S_AXI_MIN_SIZE (32'hffff), + .C_BASEADDR (32'h00000000), + .C_HIGHADDR (32'hffffffff)) + i_ad9250 ( + .rx_clk (rx_clk), + .rx_data (rx_data), + .adc_clk (adc_clk), + .adc_dwr (adc_dwr), + .adc_ddata (adc_ddata), + .adc_dsync (adc_dsync), + .adc_dovf (adc_dovf), + .adc_dunf (adc_dunf), + .s_axi_aclk (s_axi_aclk), + .s_axi_aresetn (s_axi_aresetn), + .s_axi_awvalid (s_axi_awvalid), + .s_axi_awaddr ({18'd0, s_axi_awaddr}), + .s_axi_awready (s_axi_awready), + .s_axi_wvalid (s_axi_wvalid), + .s_axi_wdata (s_axi_wdata), + .s_axi_wstrb (s_axi_wstrb), + .s_axi_wready (s_axi_wready), + .s_axi_bvalid (s_axi_bvalid), + .s_axi_bresp (s_axi_bresp), + .s_axi_bready (s_axi_bready), + .s_axi_arvalid (s_axi_arvalid), + .s_axi_araddr ({18'd0, s_axi_araddr}), + .s_axi_arready (s_axi_arready), + .s_axi_rvalid (s_axi_rvalid), + .s_axi_rresp (s_axi_rresp), + .s_axi_rdata (s_axi_rdata), + .s_axi_rready (s_axi_rready), + .adc_mon_valid (adc_mon_valid), + .adc_mon_data (adc_mon_data)); + +endmodule + +// *************************************************************************** +// *************************************************************************** + diff --git a/library/axi_ad9250/axi_ad9250_channel.v b/library/axi_ad9250/axi_ad9250_channel.v new file mode 100755 index 000000000..78ce1b1a1 --- /dev/null +++ b/library/axi_ad9250/axi_ad9250_channel.v @@ -0,0 +1,183 @@ +// *************************************************************************** +// *************************************************************************** +// Copyright 2011(c) Analog Devices, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// - Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the +// distribution. +// - Neither the name of Analog Devices, Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// - The use of this software may or may not infringe the patent rights +// of one or more patent holders. This license does not release you +// from the requirement that you obtain separate licenses from these +// patent holders to use this software. +// - Use of the software either in source or binary form, must be run +// on or directly connected to an Analog Devices Inc. component. +// +// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +// INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE ARE DISCLAIMED. +// +// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY +// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// ADC channel- + +`timescale 1ns/100ps + +module axi_ad9250_channel ( + + // adc interface + + adc_clk, + adc_rst, + adc_data, + adc_or, + + // channel interface + + adc_dfmt_data, + adc_enable, + up_adc_pn_err, + up_adc_pn_oos, + up_adc_or, + + // processor interface + + up_rstn, + up_clk, + up_sel, + up_wr, + up_addr, + up_wdata, + up_rdata, + up_ack); + + // parameters + + parameter IQSEL = 0; + parameter CHID = 0; + + // adc interface + + input adc_clk; + input adc_rst; + input [27:0] adc_data; + input adc_or; + + // channel interface + + output [31:0] adc_dfmt_data; + output adc_enable; + output up_adc_pn_err; + output up_adc_pn_oos; + output up_adc_or; + + // processor interface + + input up_rstn; + input up_clk; + input up_sel; + input up_wr; + input [13:0] up_addr; + input [31:0] up_wdata; + output [31:0] up_rdata; + output up_ack; + + // internal signals + + wire adc_pn_oos_s; + wire adc_pn_err_s; + wire adc_pn_type_s; + wire adc_dfmt_enable_s; + wire adc_dfmt_type_s; + wire adc_dfmt_se_s; + + // instantiations + + axi_ad9250_pnmon i_pnmon ( + .adc_clk (adc_clk), + .adc_data (adc_data), + .adc_pn_oos (adc_pn_oos_s), + .adc_pn_err (adc_pn_err_s), + .adc_pn_type (adc_pn_type_s)); + + genvar n; + generate + for (n = 0; n < 2; n = n + 1) begin: g_ad_datafmt_1 + ad_datafmt #(.DATA_WIDTH(14)) i_ad_datafmt ( + .clk (adc_clk), + .valid (1'b1), + .data (adc_data[n*14+13:n*14]), + .valid_out (), + .data_out (adc_dfmt_data[n*16+15:n*16]), + .dfmt_enable (adc_dfmt_enable_s), + .dfmt_type (adc_dfmt_type_s), + .dfmt_se (adc_dfmt_se_s)); + end + endgenerate + + up_adc_channel #(.PCORE_ADC_CHID(CHID)) i_up_adc_channel ( + .adc_clk (adc_clk), + .adc_rst (adc_rst), + .adc_enable (adc_enable), + .adc_pn_sel (), + .adc_iqcor_enb (), + .adc_dcfilt_enb (), + .adc_dfmt_se (adc_dfmt_se_s), + .adc_dfmt_type (adc_dfmt_type_s), + .adc_dfmt_enable (adc_dfmt_enable_s), + .adc_pn_type (adc_pn_type_s), + .adc_dcfilt_offset (), + .adc_dcfilt_coeff (), + .adc_iqcor_coeff_1 (), + .adc_iqcor_coeff_2 (), + .adc_pn_err (adc_pn_err_s), + .adc_pn_oos (adc_pn_oos_s), + .adc_or (adc_or), + .up_adc_pn_err (up_adc_pn_err), + .up_adc_pn_oos (up_adc_pn_oos), + .up_adc_or (up_adc_or), + .up_usr_datatype_be (), + .up_usr_datatype_signed (), + .up_usr_datatype_shift (), + .up_usr_datatype_total_bits (), + .up_usr_datatype_bits (), + .up_usr_decimation_m (), + .up_usr_decimation_n (), + .adc_usr_datatype_be (1'b0), + .adc_usr_datatype_signed (1'b1), + .adc_usr_datatype_shift (8'd0), + .adc_usr_datatype_total_bits (8'd16), + .adc_usr_datatype_bits (8'd16), + .adc_usr_decimation_m (16'd1), + .adc_usr_decimation_n (16'd1), + .up_rstn (up_rstn), + .up_clk (up_clk), + .up_sel (up_sel), + .up_wr (up_wr), + .up_addr (up_addr), + .up_wdata (up_wdata), + .up_rdata (up_rdata), + .up_ack (up_ack)); + +endmodule + +// *************************************************************************** +// *************************************************************************** + diff --git a/library/axi_ad9250/axi_ad9250_hw.tcl b/library/axi_ad9250/axi_ad9250_hw.tcl new file mode 100755 index 000000000..4d631c4ee --- /dev/null +++ b/library/axi_ad9250/axi_ad9250_hw.tcl @@ -0,0 +1,124 @@ + + +package require -exact qsys 13.0 +source ../scripts/adi_env.tcl + +set_module_property NAME axi_ad9250 +set_module_property DESCRIPTION "AXI AD9250 Interface" +set_module_property VERSION 1.0 +set_module_property DISPLAY_NAME axi_ad9250 + +# files + +add_fileset quartus_synth QUARTUS_SYNTH "" "Quartus Synthesis" +set_fileset_property quartus_synth TOP_LEVEL axi_ad9250_alt +add_fileset_file ad_rst.v VERILOG PATH $ad_hdl_dir/library/common/altera/ad_rst.v +add_fileset_file ad_datafmt.v VERILOG PATH $ad_hdl_dir/library/common/ad_datafmt.v +add_fileset_file up_axi.v VERILOG PATH $ad_hdl_dir/library/common/up_axi.v +add_fileset_file up_xfer_cntrl.v VERILOG PATH $ad_hdl_dir/library/common/up_xfer_cntrl.v +add_fileset_file up_xfer_status.v VERILOG PATH $ad_hdl_dir/library/common/up_xfer_status.v +add_fileset_file up_clock_mon.v VERILOG PATH $ad_hdl_dir/library/common/up_clock_mon.v +add_fileset_file up_drp_cntrl.v VERILOG PATH $ad_hdl_dir/library/common/up_drp_cntrl.v +add_fileset_file up_delay_cntrl.v VERILOG PATH $ad_hdl_dir/library/common/up_delay_cntrl.v +add_fileset_file up_adc_common.v VERILOG PATH $ad_hdl_dir/library/common/up_adc_common.v +add_fileset_file up_adc_channel.v VERILOG PATH $ad_hdl_dir/library/common/up_adc_channel.v +add_fileset_file axi_ad9250_pnmon.v VERILOG PATH axi_ad9250_pnmon.v +add_fileset_file axi_ad9250_if.v VERILOG PATH axi_ad9250_if.v +add_fileset_file axi_ad9250_channel.v VERILOG PATH axi_ad9250_channel.v +add_fileset_file axi_ad9250.v VERILOG PATH axi_ad9250.v +add_fileset_file axi_ad9250_alt.v VERILOG PATH axi_ad9250_alt.v TOP_LEVEL_FILE + +# parameters + +add_parameter PCORE_ID INTEGER 0 +set_parameter_property PCORE_ID DEFAULT_VALUE 0 +set_parameter_property PCORE_ID DISPLAY_NAME PCORE_ID +set_parameter_property PCORE_ID TYPE INTEGER +set_parameter_property PCORE_ID UNITS None +set_parameter_property PCORE_ID HDL_PARAMETER true + +add_parameter PCORE_DEVICE_TYPE INTEGER 0 +set_parameter_property PCORE_DEVICE_TYPE DEFAULT_VALUE 0 +set_parameter_property PCORE_DEVICE_TYPE DISPLAY_NAME PCORE_DEVICE_TYPE +set_parameter_property PCORE_DEVICE_TYPE TYPE INTEGER +set_parameter_property PCORE_DEVICE_TYPE UNITS None +set_parameter_property PCORE_DEVICE_TYPE HDL_PARAMETER true + +# axi4 slave + +add_interface s_axi_clock clock end +add_interface_port s_axi_clock s_axi_aclk clk Input 1 + +add_interface s_axi_reset reset end +set_interface_property s_axi_reset associatedClock s_axi_clock +add_interface_port s_axi_reset s_axi_aresetn reset_n Input 1 + +add_interface s_axi axi4 end +set_interface_property s_axi associatedClock s_axi_clock +set_interface_property s_axi associatedReset s_axi_reset +add_interface_port s_axi s_axi_awvalid awvalid Input 1 +add_interface_port s_axi s_axi_awaddr awaddr Input 14 +add_interface_port s_axi s_axi_awready awready Output 1 +add_interface_port s_axi s_axi_wvalid wvalid Input 1 +add_interface_port s_axi s_axi_wdata wdata Input 32 +add_interface_port s_axi s_axi_wstrb wstrb Input 4 +add_interface_port s_axi s_axi_wready wready Output 1 +add_interface_port s_axi s_axi_bvalid bvalid Output 1 +add_interface_port s_axi s_axi_bresp bresp Output 2 +add_interface_port s_axi s_axi_bready bready Input 1 +add_interface_port s_axi s_axi_arvalid arvalid Input 1 +add_interface_port s_axi s_axi_araddr araddr Input 14 +add_interface_port s_axi s_axi_arready arready Output 1 +add_interface_port s_axi s_axi_rvalid rvalid Output 1 +add_interface_port s_axi s_axi_rresp rresp Output 2 +add_interface_port s_axi s_axi_rdata rdata Output 32 +add_interface_port s_axi s_axi_rready rready Input 1 +add_interface_port s_axi s_axi_awid awid Input 3 +add_interface_port s_axi s_axi_awlen awlen Input 8 +add_interface_port s_axi s_axi_awsize awsize Input 3 +add_interface_port s_axi s_axi_awburst awburst Input 2 +add_interface_port s_axi s_axi_awlock awlock Input 1 +add_interface_port s_axi s_axi_awcache awcache Input 4 +add_interface_port s_axi s_axi_awprot awprot Input 3 +add_interface_port s_axi s_axi_wlast wlast Input 1 +add_interface_port s_axi s_axi_bid bid Output 3 +add_interface_port s_axi s_axi_arid arid Input 3 +add_interface_port s_axi s_axi_arlen arlen Input 8 +add_interface_port s_axi s_axi_arsize arsize Input 3 +add_interface_port s_axi s_axi_arburst arburst Input 2 +add_interface_port s_axi s_axi_arlock arlock Input 1 +add_interface_port s_axi s_axi_arcache arcache Input 4 +add_interface_port s_axi s_axi_arprot arprot Input 3 +add_interface_port s_axi s_axi_rid rid Output 3 +add_interface_port s_axi s_axi_rlast rlast Output 1 + + +# transceiver interface + +add_interface xcvr_clk clock end +add_interface_port xcvr_clk rx_clk clk Input 1 + +add_interface xcvr_data conduit end +set_interface_property xcvr_data associatedClock xcvr_clk +add_interface_port xcvr_data rx_data data Input 64 + +# dma interface + +add_interface adc_clock clock start +add_interface_port adc_clock adc_clk clk Output 1 + +add_interface adc_dma_if conduit end +set_interface_property adc_dma_if associatedClock adc_clock +add_interface_port adc_dma_if adc_ddata ddata Output 64 +add_interface_port adc_dma_if adc_dsync dsync Output 1 +add_interface_port adc_dma_if adc_dovf dovf Input 1 +add_interface_port adc_dma_if adc_dunf dunf Input 1 +add_interface_port adc_dma_if adc_dwr dwr Output 1 + +# signal tap + +add_interface adc_mon_if conduit end +set_interface_property adc_mon_if associatedClock adc_clock +add_interface_port adc_mon_if adc_mon_valid valid Output 1 +add_interface_port adc_mon_if adc_mon_data data Output 56 + diff --git a/library/axi_ad9250/axi_ad9250_if.v b/library/axi_ad9250/axi_ad9250_if.v new file mode 100755 index 000000000..6d1cd1fbd --- /dev/null +++ b/library/axi_ad9250/axi_ad9250_if.v @@ -0,0 +1,122 @@ +// *************************************************************************** +// *************************************************************************** +// Copyright 2011(c) Analog Devices, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// - Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the +// distribution. +// - Neither the name of Analog Devices, Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// - The use of this software may or may not infringe the patent rights +// of one or more patent holders. This license does not release you +// from the requirement that you obtain separate licenses from these +// patent holders to use this software. +// - Use of the software either in source or binary form, must be run +// on or directly connected to an Analog Devices Inc. component. +// +// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +// INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE ARE DISCLAIMED. +// +// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY +// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// This is the LVDS/DDR interface + +`timescale 1ns/100ps + +module axi_ad9250_if ( + + // jesd interface + // rx_clk is (line-rate/40) + + rx_clk, + rx_data, + + // adc data output + + adc_clk, + adc_rst, + adc_data_a, + adc_data_b, + adc_or_a, + adc_or_b, + adc_status); + + // jesd interface + // rx_clk is (line-rate/40) + + input rx_clk; + input [63:0] rx_data; + + // adc data output + + output adc_clk; + input adc_rst; + output [27:0] adc_data_a; + output [27:0] adc_data_b; + output adc_or_a; + output adc_or_b; + output adc_status; + + // internal registers + + reg adc_status = 'd0; + + // internal signals + + wire [15:0] adc_data_a_s1_s; + wire [15:0] adc_data_a_s0_s; + wire [15:0] adc_data_b_s1_s; + wire [15:0] adc_data_b_s0_s; + + // adc clock is the reference clock + + assign adc_clk = rx_clk; + assign adc_or_a = 1'b0; + assign adc_or_b = 1'b0; + + // adc channels + + assign adc_data_a = {adc_data_a_s1_s[13:0], adc_data_a_s0_s[13:0]}; + + assign adc_data_b = {adc_data_b_s1_s[13:0], adc_data_b_s0_s[13:0]}; + + // data multiplex + + assign adc_data_a_s1_s = {rx_data[25:24], rx_data[23:16], rx_data[31:26]}; + assign adc_data_a_s0_s = {rx_data[ 9: 8], rx_data[ 7: 0], rx_data[15:10]}; + + assign adc_data_b_s1_s = {rx_data[57:56], rx_data[55:48], rx_data[63:58]}; + assign adc_data_b_s0_s = {rx_data[41:40], rx_data[39:32], rx_data[47:42]}; + + // status + + always @(posedge rx_clk) begin + if (adc_rst == 1'b1) begin + adc_status <= 1'b0; + end else begin + adc_status <= 1'b1; + end + end + +endmodule + +// *************************************************************************** +// *************************************************************************** + diff --git a/library/axi_ad9250/axi_ad9250_ip.tcl b/library/axi_ad9250/axi_ad9250_ip.tcl new file mode 100755 index 000000000..588d2ab43 --- /dev/null +++ b/library/axi_ad9250/axi_ad9250_ip.tcl @@ -0,0 +1,26 @@ +# ip + +source ../scripts/adi_env.tcl +source $ad_hdl_dir/library/scripts/adi_ip.tcl + +adi_ip_create axi_ad9250 +adi_ip_files axi_ad9250 [list \ + "$ad_hdl_dir/library/common/ad_rst.v" \ + "$ad_hdl_dir/library/common/ad_datafmt.v" \ + "$ad_hdl_dir/library/common/up_axi.v" \ + "$ad_hdl_dir/library/common/up_xfer_cntrl.v" \ + "$ad_hdl_dir/library/common/up_xfer_status.v" \ + "$ad_hdl_dir/library/common/up_clock_mon.v" \ + "$ad_hdl_dir/library/common/up_drp_cntrl.v" \ + "$ad_hdl_dir/library/common/up_delay_cntrl.v" \ + "$ad_hdl_dir/library/common/up_adc_common.v" \ + "$ad_hdl_dir/library/common/up_adc_channel.v" \ + "axi_ad9250_pnmon.v" \ + "axi_ad9250_channel.v" \ + "axi_ad9250_if.v" \ + "axi_ad9250.v" ] + +adi_ip_properties axi_ad9250 + +ipx::save_core [ipx::current_core] + diff --git a/library/axi_ad9250/axi_ad9250_pnmon.v b/library/axi_ad9250/axi_ad9250_pnmon.v new file mode 100755 index 000000000..50d35ed12 --- /dev/null +++ b/library/axi_ad9250/axi_ad9250_pnmon.v @@ -0,0 +1,224 @@ +// *************************************************************************** +// *************************************************************************** +// Copyright 2011(c) Analog Devices, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// - Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the +// distribution. +// - Neither the name of Analog Devices, Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// - The use of this software may or may not infringe the patent rights +// of one or more patent holders. This license does not release you +// from the requirement that you obtain separate licenses from these +// patent holders to use this software. +// - Use of the software either in source or binary form, must be run +// on or directly connected to an Analog Devices Inc. component. +// +// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +// INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE ARE DISCLAIMED. +// +// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY +// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// PN monitors + +`timescale 1ns/100ps + +module axi_ad9250_pnmon ( + + // adc interface + + adc_clk, + adc_data, + + // pn out of sync and error + + adc_pn_oos, + adc_pn_err, + + // processor interface PN9 (0x0), PN23 (0x1) + + adc_pn_type); + + // adc interface + + input adc_clk; + input [27:0] adc_data; + + // pn out of sync and error + + output adc_pn_oos; + output adc_pn_err; + + // processor interface PN9 (0x0), PN23 (0x1) + + input adc_pn_type; + + // internal registers + + reg [27:0] adc_pn_data = 'd0; + reg adc_pn_match_d_1 = 'd0; + reg adc_pn_match_d_0 = 'd0; + reg adc_pn_match_z = 'd0; + reg adc_pn_err = 'd0; + reg [ 6:0] adc_pn_oos_count = 'd0; + reg adc_pn_oos = 'd0; + + // internal signals + + wire [27:0] adc_pn_data_in_s; + wire adc_pn_match_d_1_s; + wire adc_pn_match_d_0_s; + wire adc_pn_match_z_s; + wire adc_pn_match_s; + wire [27:0] adc_pn_data_s; + wire adc_pn_update_s; + wire adc_pn_err_s; + + // PN23 function + + function [27:0] pn23; + input [27:0] din; + reg [27:0] dout; + begin + dout[27] = din[22] ^ din[17]; + dout[26] = din[21] ^ din[16]; + dout[25] = din[20] ^ din[15]; + dout[24] = din[19] ^ din[14]; + dout[23] = din[18] ^ din[13]; + dout[22] = din[17] ^ din[12]; + dout[21] = din[16] ^ din[11]; + dout[20] = din[15] ^ din[10]; + dout[19] = din[14] ^ din[ 9]; + dout[18] = din[13] ^ din[ 8]; + dout[17] = din[12] ^ din[ 7]; + dout[16] = din[11] ^ din[ 6]; + dout[15] = din[10] ^ din[ 5]; + dout[14] = din[ 9] ^ din[ 4]; + dout[13] = din[ 8] ^ din[ 3]; + dout[12] = din[ 7] ^ din[ 2]; + dout[11] = din[ 6] ^ din[ 1]; + dout[10] = din[ 5] ^ din[ 0]; + dout[ 9] = din[ 4] ^ din[22] ^ din[17]; + dout[ 8] = din[ 3] ^ din[21] ^ din[16]; + dout[ 7] = din[ 2] ^ din[20] ^ din[15]; + dout[ 6] = din[ 1] ^ din[19] ^ din[14]; + dout[ 5] = din[ 0] ^ din[18] ^ din[13]; + dout[ 4] = din[22] ^ din[12]; + dout[ 3] = din[21] ^ din[11]; + dout[ 2] = din[20] ^ din[10]; + dout[ 1] = din[19] ^ din[ 9]; + dout[ 0] = din[18] ^ din[ 8]; + pn23 = dout; + end + endfunction + + // PN9 function + + function [27:0] pn9; + input [27:0] din; + reg [27:0] dout; + begin + dout[27] = din[ 8] ^ din[ 4]; + dout[26] = din[ 7] ^ din[ 3]; + dout[25] = din[ 6] ^ din[ 2]; + dout[24] = din[ 5] ^ din[ 1]; + dout[23] = din[ 4] ^ din[ 0]; + dout[22] = din[ 3] ^ din[ 8] ^ din[ 4]; + dout[21] = din[ 2] ^ din[ 7] ^ din[ 3]; + dout[20] = din[ 1] ^ din[ 6] ^ din[ 2]; + dout[19] = din[ 0] ^ din[ 5] ^ din[ 1]; + dout[18] = din[ 8] ^ din[ 0]; + dout[17] = din[ 7] ^ din[ 8] ^ din[ 4]; + dout[16] = din[ 6] ^ din[ 7] ^ din[ 3]; + dout[15] = din[ 5] ^ din[ 6] ^ din[ 2]; + dout[14] = din[ 4] ^ din[ 5] ^ din[ 1]; + dout[13] = din[ 3] ^ din[ 4] ^ din[ 0]; + dout[12] = din[ 2] ^ din[ 3] ^ din[ 8] ^ din[ 4]; + dout[11] = din[ 1] ^ din[ 2] ^ din[ 7] ^ din[ 3]; + dout[10] = din[ 0] ^ din[ 1] ^ din[ 6] ^ din[ 2]; + dout[ 9] = din[ 8] ^ din[ 0] ^ din[ 4] ^ din[ 5] ^ din[ 1]; + dout[ 8] = din[ 7] ^ din[ 8] ^ din[ 3] ^ din[ 0]; + dout[ 7] = din[ 6] ^ din[ 7] ^ din[ 2] ^ din[ 8] ^ din[ 4]; + dout[ 6] = din[ 5] ^ din[ 6] ^ din[ 1] ^ din[ 7] ^ din[ 3]; + dout[ 5] = din[ 4] ^ din[ 5] ^ din[ 0] ^ din[ 6] ^ din[ 2]; + dout[ 4] = din[ 3] ^ din[ 8] ^ din[ 5] ^ din[ 1]; + dout[ 3] = din[ 2] ^ din[ 4] ^ din[ 7] ^ din[ 0]; + dout[ 2] = din[ 1] ^ din[ 3] ^ din[ 6] ^ din[ 8] ^ din[ 4]; + dout[ 1] = din[ 0] ^ din[ 2] ^ din[ 5] ^ din[ 7] ^ din[ 3]; + dout[ 0] = din[ 8] ^ din[ 1] ^ din[ 6] ^ din[ 2]; + pn9 = dout; + end + endfunction + + // pn sequence checking algorithm is commonly used in most applications. + // if oos is asserted (pn is out of sync): + // the next sequence is generated from the incoming data. + // if 16 sequences match consecutively, oos is cleared (de-asserted). + // if oos is de-asserted (pn is in sync) + // the next sequence is generated from the current sequence. + // if 64 sequences mismatch consecutively, oos is set (asserted). + // if oos is de-asserted, any spurious mismatches sets the error register. + // ideally, processor should make sure both oos == 0x0 and err == 0x0. + + assign adc_pn_data_in_s = {~adc_data[27], adc_data[26:14], ~adc_data[13], adc_data[12:0]}; + assign adc_pn_match_d_1_s = (adc_pn_data_in_s[27:14] == adc_pn_data[27:14]) ? 1'b1 : 1'b0; + assign adc_pn_match_d_0_s = (adc_pn_data_in_s[13: 0] == adc_pn_data[13: 0]) ? 1'b1 : 1'b0; + assign adc_pn_match_z_s = (adc_pn_data_in_s == 28'd0) ? 1'b0 : 1'b1; + assign adc_pn_match_s = adc_pn_match_d_1 & adc_pn_match_d_0 & adc_pn_match_z; + assign adc_pn_data_s = (adc_pn_oos == 1'b1) ? adc_pn_data_in_s : adc_pn_data; + assign adc_pn_update_s = ~(adc_pn_oos ^ adc_pn_match_s); + assign adc_pn_err_s = ~(adc_pn_oos | adc_pn_match_s); + + // pn running sequence + + always @(posedge adc_clk) begin + if (adc_pn_type == 1'b0) begin + adc_pn_data <= pn9(adc_pn_data_s); + end else begin + adc_pn_data <= pn23(adc_pn_data_s); + end + end + + // pn oos and counters (64 to clear and set). + + always @(posedge adc_clk) begin + adc_pn_match_d_1 <= adc_pn_match_d_1_s; + adc_pn_match_d_0 <= adc_pn_match_d_0_s; + adc_pn_match_z <= adc_pn_match_z_s; + adc_pn_err <= adc_pn_err_s; + if (adc_pn_update_s == 1'b1) begin + if (adc_pn_oos_count >= 16) begin + adc_pn_oos_count <= 'd0; + adc_pn_oos <= ~adc_pn_oos; + end else begin + adc_pn_oos_count <= adc_pn_oos_count + 1'b1; + adc_pn_oos <= adc_pn_oos; + end + end else begin + adc_pn_oos_count <= 'd0; + adc_pn_oos <= adc_pn_oos; + end + end + +endmodule + +// *************************************************************************** +// *************************************************************************** + diff --git a/projects/common/a5gt/a5gt_system_assign.tcl b/projects/common/a5gt/a5gt_system_assign.tcl new file mode 100755 index 000000000..98347fcf5 --- /dev/null +++ b/projects/common/a5gt/a5gt_system_assign.tcl @@ -0,0 +1,787 @@ + +# clocks and resets + +set_location_assignment PIN_C34 -to sys_clk +set_location_assignment PIN_D34 -to "sys_clk(n)" +set_instance_assignment -name IO_STANDARD LVDS -to sys_clk +set_instance_assignment -name INPUT_TERMINATION DIFFERENTIAL -to sys_clk -disable + +set_location_assignment PIN_L6 -to sys_resetn +set_instance_assignment -name IO_STANDARD "2.5 V" -to sys_resetn + +# ddr3 + +set_location_assignment PIN_B31 -to ddr3_a[0] +set_location_assignment PIN_A30 -to ddr3_a[1] +set_location_assignment PIN_A31 -to ddr3_a[2] +set_location_assignment PIN_A32 -to ddr3_a[3] +set_location_assignment PIN_A33 -to ddr3_a[4] +set_location_assignment PIN_B33 -to ddr3_a[5] +set_location_assignment PIN_H31 -to ddr3_a[6] +set_location_assignment PIN_J31 -to ddr3_a[7] +set_location_assignment PIN_C31 -to ddr3_a[8] +set_location_assignment PIN_D31 -to ddr3_a[9] +set_location_assignment PIN_C32 -to ddr3_a[10] +set_location_assignment PIN_D32 -to ddr3_a[11] +set_location_assignment PIN_N31 -to ddr3_a[12] +set_location_assignment PIN_P31 -to ddr3_a[13] +set_location_assignment PIN_M32 -to ddr3_ba[0] +set_location_assignment PIN_N32 -to ddr3_ba[1] +set_location_assignment PIN_J34 -to ddr3_ba[2] +set_location_assignment PIN_B30 -to ddr3_clk_p +set_location_assignment PIN_C30 -to ddr3_clk_n +set_location_assignment PIN_E31 -to ddr3_cke +set_location_assignment PIN_L34 -to ddr3_cs_n +set_location_assignment PIN_K34 -to ddr3_ras_n +set_location_assignment PIN_L33 -to ddr3_cas_n +set_location_assignment PIN_M33 -to ddr3_we_n +set_location_assignment PIN_G30 -to ddr3_reset_n +set_location_assignment PIN_L31 -to ddr3_odt +set_location_assignment PIN_F33 -to ddr3_rzq + +set_location_assignment PIN_N30 -to ddr3_dqs_p[0] +set_location_assignment PIN_P30 -to ddr3_dqs_n[0] +set_location_assignment PIN_R29 -to ddr3_dqs_p[1] +set_location_assignment PIN_T29 -to ddr3_dqs_n[1] +set_location_assignment PIN_J30 -to ddr3_dm[0] +set_location_assignment PIN_J29 -to ddr3_dm[1] +set_location_assignment PIN_B28 -to ddr3_dq[0] +set_location_assignment PIN_C29 -to ddr3_dq[1] +set_location_assignment PIN_R30 -to ddr3_dq[2] +set_location_assignment PIN_A29 -to ddr3_dq[3] +set_location_assignment PIN_A28 -to ddr3_dq[4] +set_location_assignment PIN_L30 -to ddr3_dq[5] +set_location_assignment PIN_D30 -to ddr3_dq[6] +set_location_assignment PIN_D29 -to ddr3_dq[7] +set_location_assignment PIN_L28 -to ddr3_dq[8] +set_location_assignment PIN_M28 -to ddr3_dq[9] +set_location_assignment PIN_H28 -to ddr3_dq[10] +set_location_assignment PIN_C28 -to ddr3_dq[11] +set_location_assignment PIN_D28 -to ddr3_dq[12] +set_location_assignment PIN_F28 -to ddr3_dq[13] +set_location_assignment PIN_M29 -to ddr3_dq[14] +set_location_assignment PIN_N29 -to ddr3_dq[15] + +set_location_assignment PIN_R28 -to ddr3_dqs_p[2] +set_location_assignment PIN_T28 -to ddr3_dqs_n[2] +set_location_assignment PIN_M26 -to ddr3_dqs_p[3] +set_location_assignment PIN_N26 -to ddr3_dqs_n[3] +set_location_assignment PIN_K27 -to ddr3_dm[2] +set_location_assignment PIN_J26 -to ddr3_dm[3] +set_location_assignment PIN_P27 -to ddr3_dq[16] +set_location_assignment PIN_R27 -to ddr3_dq[17] +set_location_assignment PIN_H27 -to ddr3_dq[18] +set_location_assignment PIN_B27 -to ddr3_dq[19] +set_location_assignment PIN_C27 -to ddr3_dq[20] +set_location_assignment PIN_E27 -to ddr3_dq[21] +set_location_assignment PIN_M27 -to ddr3_dq[22] +set_location_assignment PIN_N27 -to ddr3_dq[23] +set_location_assignment PIN_C26 -to ddr3_dq[24] +set_location_assignment PIN_D26 -to ddr3_dq[25] +set_location_assignment PIN_K25 -to ddr3_dq[26] +set_location_assignment PIN_R26 -to ddr3_dq[27] +set_location_assignment PIN_T27 -to ddr3_dq[28] +set_location_assignment PIN_A26 -to ddr3_dq[29] +set_location_assignment PIN_F26 -to ddr3_dq[30] +set_location_assignment PIN_G26 -to ddr3_dq[31] + +set_location_assignment PIN_A20 -to ddr3_dqs_p[4] +set_location_assignment PIN_B21 -to ddr3_dqs_n[4] +set_location_assignment PIN_C23 -to ddr3_dqs_p[5] +set_location_assignment PIN_D23 -to ddr3_dqs_n[5] +set_location_assignment PIN_M21 -to ddr3_dm[4] +set_location_assignment PIN_B22 -to ddr3_dm[5] +set_location_assignment PIN_D20 -to ddr3_dq[32] +set_location_assignment PIN_H21 -to ddr3_dq[33] +set_location_assignment PIN_D21 -to ddr3_dq[34] +set_location_assignment PIN_J21 -to ddr3_dq[35] +set_location_assignment PIN_A21 -to ddr3_dq[36] +set_location_assignment PIN_G21 -to ddr3_dq[37] +set_location_assignment PIN_A22 -to ddr3_dq[38] +set_location_assignment PIN_C20 -to ddr3_dq[39] +set_location_assignment PIN_A23 -to ddr3_dq[40] +set_location_assignment PIN_E22 -to ddr3_dq[41] +set_location_assignment PIN_L22 -to ddr3_dq[42] +set_location_assignment PIN_C22 -to ddr3_dq[43] +set_location_assignment PIN_N22 -to ddr3_dq[44] +set_location_assignment PIN_F22 -to ddr3_dq[45] +set_location_assignment PIN_P22 -to ddr3_dq[46] +set_location_assignment PIN_J22 -to ddr3_dq[47] + +set_location_assignment PIN_D24 -to ddr3_dqs_p[6] +set_location_assignment PIN_E24 -to ddr3_dqs_n[6] +set_location_assignment PIN_A25 -to ddr3_dqs_p[7] +set_location_assignment PIN_B25 -to ddr3_dqs_n[7] +set_location_assignment PIN_J23 -to ddr3_dm[6] +set_location_assignment PIN_D25 -to ddr3_dm[7] +set_location_assignment PIN_C24 -to ddr3_dq[48] +set_location_assignment PIN_M23 -to ddr3_dq[49] +set_location_assignment PIN_B24 -to ddr3_dq[50] +set_location_assignment PIN_R23 -to ddr3_dq[51] +set_location_assignment PIN_G24 -to ddr3_dq[52] +set_location_assignment PIN_G23 -to ddr3_dq[53] +set_location_assignment PIN_F24 -to ddr3_dq[54] +set_location_assignment PIN_F23 -to ddr3_dq[55] +set_location_assignment PIN_R24 -to ddr3_dq[56] +set_location_assignment PIN_G25 -to ddr3_dq[57] +set_location_assignment PIN_T26 -to ddr3_dq[58] +set_location_assignment PIN_E25 -to ddr3_dq[59] +set_location_assignment PIN_N24 -to ddr3_dq[60] +set_location_assignment PIN_K24 -to ddr3_dq[61] +set_location_assignment PIN_T25 -to ddr3_dq[62] +set_location_assignment PIN_P24 -to ddr3_dq[63] + +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[0] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[1] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[2] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[3] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[4] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[5] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[6] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[7] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[8] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[9] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[10] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[11] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[12] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[13] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_ba[0] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_ba[1] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_ba[2] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_clk_p +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_clk_n +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_cke +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_cs_n +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_ras_n +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_cas_n +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_we_n +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_odt +set_instance_assignment -name IO_STANDARD "1.5 V" -to ddr3_reset_n +set_instance_assignment -name IO_STANDARD "1.5 V" -to ddr3_rzq + +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_p[0] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_n[0] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_p[1] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_n[1] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dm[0] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dm[1] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[0] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[1] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[2] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[3] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[4] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[5] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[6] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[7] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[8] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[9] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[10] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[11] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[12] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[13] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[14] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[15] + +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_p[2] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_n[2] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_p[3] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_n[3] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dm[2] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dm[3] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[16] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[17] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[18] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[19] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[20] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[21] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[22] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[23] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[24] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[25] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[26] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[27] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[28] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[29] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[30] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[31] + +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_p[4] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_n[4] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_p[5] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_n[5] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dm[4] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dm[5] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[32] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[33] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[34] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[35] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[36] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[37] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[38] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[39] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[40] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[41] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[42] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[43] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[44] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[45] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[46] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[47] + +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_p[6] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_n[6] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_p[7] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_n[7] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dm[6] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dm[7] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[48] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[49] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[50] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[51] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[52] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[53] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[54] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[55] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[56] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[57] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[58] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[59] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[60] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[61] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[62] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[63] + +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[0] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[1] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[2] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[3] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[4] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[5] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[6] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[7] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[8] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[9] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[10] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[11] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[12] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[13] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_ba[0] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_ba[1] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_ba[2] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_cke +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_cs_n +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_ras_n +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_cas_n +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_we_n +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_reset_n +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_odt + +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dm[0] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dm[1] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dq[0] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dq[1] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dq[2] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dq[3] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dq[4] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dq[5] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dq[6] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dq[7] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dq[8] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dq[9] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dq[10] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dq[11] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dq[12] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dq[13] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dq[14] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dq[15] + +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dm[2] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dm[3] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dq[16] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dq[17] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dq[18] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dq[19] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dq[20] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dq[21] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dq[22] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dq[23] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dq[24] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dq[25] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dq[26] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dq[27] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dq[28] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dq[29] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dq[30] +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dq[31] + +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to ddr3_clk_p +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to ddr3_clk_n + +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[0] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[0] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[1] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[1] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[0] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[0] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[1] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[1] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dm[0] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dm[1] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[0] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[1] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[2] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[3] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[4] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[5] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[6] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[7] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[8] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[9] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[10] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[11] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[12] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[13] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[14] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[15] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[0] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[1] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[2] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[3] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[4] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[5] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[6] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[7] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[8] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[9] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[10] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[11] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[12] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[13] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[14] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[15] + +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[2] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[2] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[3] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[3] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[2] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[2] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[3] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[3] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dm[2] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dm[3] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[16] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[17] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[18] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[19] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[20] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[21] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[22] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[23] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[24] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[25] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[26] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[27] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[28] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[29] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[30] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[31] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[16] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[17] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[18] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[19] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[20] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[21] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[22] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[23] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[24] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[25] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[26] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[27] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[28] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[29] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[30] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[31] + +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[4] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[4] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[5] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[5] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[4] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[4] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[5] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[5] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dm[4] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dm[5] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[32] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[33] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[34] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[35] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[36] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[37] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[38] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[39] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[40] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[41] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[42] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[43] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[44] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[45] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[46] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[47] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[32] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[33] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[34] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[35] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[36] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[37] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[38] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[39] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[40] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[41] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[42] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[43] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[44] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[45] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[46] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[47] + +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[6] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[6] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[7] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[7] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[6] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[6] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[7] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[7] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dm[6] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dm[7] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[48] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[49] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[50] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[51] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[52] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[53] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[54] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[55] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[56] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[57] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[58] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[59] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[60] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[61] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[62] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[63] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[48] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[49] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[50] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[51] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[52] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[53] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[54] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[55] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[56] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[57] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[58] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[59] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[60] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[61] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[62] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[63] + +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[0] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[1] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[2] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[3] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[4] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[5] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[6] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[7] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[8] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[9] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[10] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[11] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[12] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[13] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_ba[0] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_ba[1] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_ba[2] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_clk_p +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_clk_n +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_cke +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_cs_n +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_ras_n +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_cas_n +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_we_n +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_reset_n +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_odt + +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_p[0] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_n[0] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_p[1] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_n[1] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dm[0] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dm[1] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[0] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[1] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[2] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[3] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[4] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[5] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[6] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[7] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[8] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[9] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[10] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[11] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[12] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[13] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[14] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[15] + +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_p[2] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_n[2] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_p[3] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_n[3] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dm[2] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dm[3] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[16] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[17] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[18] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[19] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[20] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[21] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[22] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[23] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[24] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[25] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[26] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[27] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[28] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[29] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[30] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[31] + +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_p[4] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_n[4] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_p[5] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_n[5] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dm[4] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dm[5] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[32] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[33] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[34] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[35] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[36] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[37] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[38] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[39] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[40] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[41] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[42] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[43] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[44] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[45] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[46] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[47] + +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_p[6] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_n[6] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_p[7] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_n[7] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dm[6] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dm[7] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[48] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[49] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[50] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[51] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[52] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[53] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[54] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[55] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[56] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[57] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[58] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[59] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[60] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[61] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[62] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[63] + +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dqs_p[0] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dqs_n[0] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dqs_p[1] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dqs_n[1] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dm[0] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dm[1] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[0] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[1] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[2] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[3] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[4] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[5] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[6] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[7] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[8] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[9] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[10] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[11] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[12] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[13] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[14] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[15] + +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dqs_p[2] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dqs_n[2] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dqs_p[3] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dqs_n[3] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dm[2] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dm[3] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[16] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[17] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[18] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[19] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[20] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[21] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[22] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[23] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[24] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[25] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[26] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[27] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[28] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[29] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[30] +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[31] + +set_instance_assignment -name ENABLE_BENEFICIAL_SKEW_OPTIMIZATION_FOR_NON_GLOBAL_CLOCKS ON -to i_fmcjesdadc1|sys_ddr3_cntrl + +set_instance_assignment -name GLOBAL_SIGNAL "DUAL-REGIONAL CLOCK" -to i_fmcjesdadc1|sys_ddr3_cntrl|pll0|pll_addr_cmd_clk +set_instance_assignment -name GLOBAL_SIGNAL "DUAL-REGIONAL CLOCK" -to i_fmcjesdadc1|sys_ddr3_cntrl|pll0|pll_avl_clk +set_instance_assignment -name GLOBAL_SIGNAL "DUAL-REGIONAL CLOCK" -to i_fmcjesdadc1|sys_ddr3_cntrl|pll0|pll_config_clk +set_instance_assignment -name GLOBAL_SIGNAL "GLOBAL CLOCK" -to i_fmcjesdadc1|sys_ddr3_cntrl|pll0|pll_afi_clk +set_instance_assignment -name GLOBAL_SIGNAL "GLOBAL CLOCK" -to i_fmcjesdadc1|sys_ddr3_cntrl|pll0|pll_hr_clk + +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uio_pads|dq_ddio[0].read_capture_clk_buffer +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uio_pads|dq_ddio[1].read_capture_clk_buffer +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uio_pads|dq_ddio[2].read_capture_clk_buffer +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uio_pads|dq_ddio[3].read_capture_clk_buffer +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uio_pads|dq_ddio[4].read_capture_clk_buffer +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uio_pads|dq_ddio[5].read_capture_clk_buffer +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uio_pads|dq_ddio[6].read_capture_clk_buffer +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uio_pads|dq_ddio[7].read_capture_clk_buffer +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_wraddress[0] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_wraddress[1] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_wraddress[2] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_wraddress[3] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_wraddress[4] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_wraddress[5] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_wraddress[6] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_wraddress[7] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_write_side[0] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_write_side[1] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_write_side[2] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_write_side[3] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_write_side[4] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_write_side[5] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_write_side[6] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_write_side[7] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|ureset|phy_reset_mem_stable_n +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|ureset|phy_reset_n +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|s0|sequencer_rw_mgr_inst|rw_mgr_inst|rw_mgr_core_inst|rw_soft_reset_n + +# ethernet interface + +set_location_assignment PIN_M14 -to eth_rx_clk +set_location_assignment PIN_N14 -to eth_rx_data[0] +set_location_assignment PIN_N15 -to eth_rx_data[1] +set_location_assignment PIN_P15 -to eth_rx_data[2] +set_location_assignment PIN_B9 -to eth_rx_data[3] +set_location_assignment PIN_C9 -to eth_rx_cntrl[4] +set_location_assignment PIN_K18 -to eth_tx_clk_out[5] +set_location_assignment PIN_L18 -to eth_tx_data[0] +set_location_assignment PIN_R11 -to eth_tx_data[1] +set_location_assignment PIN_T11 -to eth_tx_data[2] +set_location_assignment PIN_H9 -to eth_tx_data[3] +set_location_assignment PIN_J9 -to eth_tx_cntrl +set_location_assignment PIN_F7 -to eth_mdc +set_location_assignment PIN_G7 -to eth_mdio_i +set_location_assignment PIN_F9 -to eth_mdio_o +set_location_assignment PIN_G9 -to eth_mdio_t + +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_rx_clk +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_rx_data[0] +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_rx_data[1] +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_rx_data[2] +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_rx_data[3] +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_rx_cntrl[4] +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_tx_clk_out[5] +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_tx_data[0] +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_tx_data[1] +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_tx_data[2] +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_tx_data[3] +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_tx_cntrl +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_mdc +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_mdio_i +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_mdio_o +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_mdio_t + +# leds + +set_location_assignment PIN_M19 -to led_grn[0] +set_location_assignment PIN_L19 -to led_grn[1] +set_location_assignment PIN_K19 -to led_grn[2] +set_location_assignment PIN_J19 -to led_grn[3] +set_location_assignment PIN_K20 -to led_grn[4] +set_location_assignment PIN_J20 -to led_grn[5] +set_location_assignment PIN_T20 -to led_grn[6] +set_location_assignment PIN_R20 -to led_grn[7] +set_location_assignment PIN_N20 -to led_red[0] +set_location_assignment PIN_C15 -to led_red[1] +set_location_assignment PIN_AL28 -to led_red[2] +set_location_assignment PIN_F11 -to led_red[3] +set_location_assignment PIN_AJ31 -to led_red[4] +set_location_assignment PIN_AN34 -to led_red[5] +set_location_assignment PIN_AJ34 -to led_red[6] +set_location_assignment PIN_AK33 -to led_red[7] +set_location_assignment PIN_D6 -to push_buttons[0] +set_location_assignment PIN_C6 -to push_buttons[1] +set_location_assignment PIN_K7 -to push_buttons[2] +set_location_assignment PIN_C8 -to dip_switches[0] +set_location_assignment PIN_D8 -to dip_switches[1] +set_location_assignment PIN_E7 -to dip_switches[2] +set_location_assignment PIN_E6 -to dip_switches[3] +set_location_assignment PIN_G8 -to dip_switches[4] +set_location_assignment PIN_F8 -to dip_switches[5] +set_location_assignment PIN_D15 -to dip_switches[6] +set_location_assignment PIN_G11 -to dip_switches[7] + +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_grn[0] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_grn[1] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_grn[2] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_grn[3] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_grn[4] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_grn[5] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_grn[6] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_grn[7] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_red[0] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_red[1] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_red[2] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_red[3] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_red[4] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_red[5] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_red[6] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_red[7] +set_instance_assignment -name IO_STANDARD "2.5 V" -to push_buttons[0] +set_instance_assignment -name IO_STANDARD "2.5 V" -to push_buttons[1] +set_instance_assignment -name IO_STANDARD "2.5 V" -to push_buttons[2] +set_instance_assignment -name IO_STANDARD "2.5 V" -to dip_switches[0] +set_instance_assignment -name IO_STANDARD "2.5 V" -to dip_switches[1] +set_instance_assignment -name IO_STANDARD "2.5 V" -to dip_switches[2] +set_instance_assignment -name IO_STANDARD "2.5 V" -to dip_switches[3] +set_instance_assignment -name IO_STANDARD "2.5 V" -to dip_switches[4] +set_instance_assignment -name IO_STANDARD "2.5 V" -to dip_switches[5] +set_instance_assignment -name IO_STANDARD "2.5 V" -to dip_switches[6] +set_instance_assignment -name IO_STANDARD "2.5 V" -to dip_switches[7] + + diff --git a/projects/fmcjesdadc1/a5gt/system_bd.qsys b/projects/fmcjesdadc1/a5gt/system_bd.qsys new file mode 100755 index 000000000..d1b19629f --- /dev/null +++ b/projects/fmcjesdadc1/a5gt/system_bd.qsys @@ -0,0 +1,2645 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Automatic Switchover + + + + + + + Create an adjpllin signal to connect with an upstream PLL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + sys_cpu.jtag_debug_module + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + ]]> + + + + + ADDRESS_STALL 1 ADVANCED_INFO 0 ANY_QFP 0 CELL_LEVEL_BACK_ANNOTATION_DISABLED 0 COMPILER_SUPPORT 1 DSP 1 DSP_SHIFTER_BLOCK 0 DUMP_ASM_LAB_BITS_FOR_POWER 0 EMUL 0 ENABLE_ADVANCED_IO_ANALYSIS_GUI_FEATURES 1 ENABLE_PIN_PLANNER 0 ENGINEERING_SAMPLE 0 EPCS 1 ESB 0 FAKE1 0 FAKE2 0 FAKE3 0 FAMILY_LEVEL_INSTALLATION_ONLY 0 FASTEST 0 FINAL_TIMING_MODEL 0 FITTER_USE_FALLING_EDGE_DELAY 1 GENERATE_DC_ON_CURRENT_WARNING_FOR_INTERNAL_CLAMPING_DIODE 1 HARDCOPY 0 HAS_18_BIT_MULTS 1 HAS_ACE_SUPPORT 1 HAS_ACTIVE_PARALLEL_FLASH_SUPPORT 0 HAS_ADJUSTABLE_OUTPUT_IO_TIMING_MEAS_POINT 1 HAS_ADVANCED_IO_INVERTED_CORNER 1 HAS_ADVANCED_IO_POWER_SUPPORT 1 HAS_ADVANCED_IO_TIMING_SUPPORT 1 HAS_ALM_SUPPORT 1 HAS_ATOM_AND_ROUTING_POWER_MODELED_TOGETHER 0 HAS_AUTO_DERIVE_CLOCK_UNCERTAINTY_SUPPORT 1 HAS_AUTO_FIT_SUPPORT 1 HAS_BALANCED_OPT_TECHNIQUE_SUPPORT 1 HAS_BENEFICIAL_SKEW_SUPPORT 0 HAS_BITLEVEL_DRIVE_STRENGTH_CONTROL 1 HAS_BSDL_FILE_GENERATION 1 HAS_CDB_RE_NETWORK_PRESERVATION_SUPPORT 0 HAS_CGA_SUPPORT 1 HAS_CHECK_NETLIST_SUPPORT 1 HAS_CLOCK_REGION_CHECKER_ENABLED 1 HAS_CORE_JUNCTION_TEMP_DERATING 0 HAS_CROSSTALK_SUPPORT 0 HAS_CUSTOM_REGION_SUPPORT 1 HAS_DAP_JTAG_FROM_HPS 0 HAS_DATA_DRIVEN_ACVQ_HSSI_SUPPORT 1 HAS_DDB_FDI_SUPPORT 1 HAS_DESIGN_ANALYZER_SUPPORT 1 HAS_DETAILED_IO_RAIL_POWER_MODEL 1 HAS_DETAILED_LEIM_STATIC_POWER_MODEL 0 HAS_DETAILED_LE_POWER_MODEL 1 HAS_DETAILED_ROUTING_MUX_STATIC_POWER_MODEL 0 HAS_DETAILED_THERMAL_CIRCUIT_PARAMETER_SUPPORT 1 HAS_DEVICE_MIGRATION_SUPPORT 1 HAS_DIAGONAL_MIGRATION_SUPPORT 0 HAS_EMIF_TOOLKIT_SUPPORT 1 HAS_ERROR_DETECTION_SUPPORT 1 HAS_FAMILY_VARIANT_MIGRATION_SUPPORT 0 HAS_FANOUT_FREE_NODE_SUPPORT 1 HAS_FAST_FIT_SUPPORT 1 HAS_FITTER_EARLY_TIMING_ESTIMATE_SUPPORT 0 HAS_FITTER_ECO_SUPPORT 1 HAS_FIT_NETLIST_OPT_RETIME_SUPPORT 1 HAS_FIT_NETLIST_OPT_SUPPORT 1 HAS_FORMAL_VERIFICATION_SUPPORT 1 HAS_FPGA_XCHANGE_SUPPORT 1 HAS_FSAC_LUTRAM_REGISTER_PACKING_SUPPORT 1 HAS_FULL_DAT_MIN_TIMING_SUPPORT 1 HAS_FULL_INCREMENTAL_DESIGN_SUPPORT 1 HAS_FUNCTIONAL_SIMULATION_SUPPORT 0 HAS_FUNCTIONAL_VERILOG_SIMULATION_SUPPORT 1 HAS_FUNCTIONAL_VHDL_SIMULATION_SUPPORT 1 HAS_GLITCH_FILTERING_SUPPORT 1 HAS_HARDCOPYII_SUPPORT 0 HAS_HC_READY_SUPPORT 0 HAS_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_HOLD_TIME_AVOIDANCE_ACROSS_CLOCK_SPINE_SUPPORT 1 HAS_HSPICE_WRITER_SUPPORT 1 HAS_HSSI_POWER_CALCULATOR 1 HAS_IBISO_WRITER_SUPPORT 0 HAS_ICD_DATA_IP 0 HAS_INCREMENTAL_DAT_SUPPORT 1 HAS_INCREMENTAL_SYNTHESIS_SUPPORT 1 HAS_INTERFACE_PLANNER_SUPPORT 1 HAS_IO_ASSIGNMENT_ANALYSIS_SUPPORT 1 HAS_IO_DECODER 1 HAS_IO_PLACEMENT_OPTIMIZATION_SUPPORT 1 HAS_IO_SMART_RECOMPILE_SUPPORT 0 HAS_JITTER_SUPPORT 1 HAS_JTAG_SLD_HUB_SUPPORT 1 HAS_LIMITED_TCL_FITTER_SUPPORT 1 HAS_LOGICAL_FLOORPLANNER_SUPPORT 0 HAS_LOGIC_LOCK_SUPPORT 1 HAS_MICROPROCESSOR 0 HAS_MIF_SMART_COMPILE_SUPPORT 1 HAS_MINMAX_TIMING_MODELING_SUPPORT 1 HAS_MIN_TIMING_ANALYSIS_SUPPORT 1 HAS_MUX_RESTRUCTURE_SUPPORT 1 HAS_NEW_HC_FLOW_SUPPORT 0 HAS_NEW_SERDES_MAX_RESOURCE_COUNT_REPORTING_SUPPORT 0 HAS_NEW_VPR_SUPPORT 1 HAS_NONSOCKET_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_NO_HARDBLOCK_PARTITION_SUPPORT 0 HAS_NO_JTAG_USERCODE_SUPPORT 0 HAS_OPERATING_SETTINGS_AND_CONDITIONS_REPORTING_SUPPORT 1 HAS_PAD_LOCATION_ASSIGNMENT_SUPPORT 0 HAS_PARTIAL_RECONFIG_SUPPORT 1 HAS_PASSIVE_PARALLEL_SUPPORT 0 HAS_PHYSICAL_NETLIST_OUTPUT 0 HAS_PHYSICAL_ROUTING_SUPPORT 1 HAS_PIN_SPECIFIC_VOLTAGE_SUPPORT 1 HAS_PLDM_REF_SUPPORT 0 HAS_POWER_BINNING_LIMITS_DATA 1 HAS_POWER_ESTIMATION_SUPPORT 1 HAS_PRELIMINARY_CLOCK_UNCERTAINTY_NUMBERS 0 HAS_PRE_FITTER_FPP_SUPPORT 1 HAS_PRE_FITTER_LUTRAM_NETLIST_CHECKER_ENABLED 1 HAS_PVA_SUPPORT 1 HAS_RAPID_RECOMPILE_SUPPORT 0 HAS_RCF_SUPPORT 1 HAS_RCF_SUPPORT_FOR_DEBUGGING 0 HAS_RED_BLACK_SEPARATION_SUPPORT 0 HAS_RE_LEVEL_TIMING_GRAPH_SUPPORT 1 HAS_RISEFALL_DELAY_SUPPORT 1 HAS_SIGNAL_PROBE_SUPPORT 1 HAS_SIGNAL_TAP_SUPPORT 1 HAS_SIMULATOR_SUPPORT 0 HAS_SPLIT_IO_SUPPORT 1 HAS_SPLIT_LC_SUPPORT 1 HAS_STRICT_PRESERVATION_SUPPORT 0 HAS_SYNTH_FSYN_NETLIST_OPT_SUPPORT 1 HAS_SYNTH_NETLIST_OPT_RETIME_SUPPORT 0 HAS_SYNTH_NETLIST_OPT_SUPPORT 1 HAS_TCL_FITTER_SUPPORT 0 HAS_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_TEMPLATED_REGISTER_PACKING_SUPPORT 1 HAS_TIME_BORROWING_SUPPORT 0 HAS_TIMING_DRIVEN_SYNTHESIS_SUPPORT 1 HAS_TIMING_INFO_SUPPORT 1 HAS_TIMING_OPERATING_CONDITIONS 1 HAS_TIMING_SIMULATION_SUPPORT 0 HAS_TITAN_BASED_MAC_REGISTER_PACKER_SUPPORT 1 HAS_U2B2_SUPPORT 0 HAS_USER_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_USE_FITTER_INFO_SUPPORT 0 HAS_VCCPD_POWER_RAIL 1 HAS_VERTICAL_MIGRATION_SUPPORT 1 HAS_VIEWDRAW_SYMBOL_SUPPORT 0 HAS_VIO_SUPPORT 1 HAS_VIRTUAL_DEVICES 0 HAS_WYSIWYG_DFFEAS_SUPPORT 1 HAS_XIBISO_WRITER_SUPPORT 1 IFP_USE_LEGACY_IO_CHECKER 1 INCREMENTAL_DESIGN_SUPPORTS_COMPATIBLE_CONSTRAINTS 0 INSTALLED 0 INTERNAL_POF_SUPPORT_ENABLED 0 INTERNAL_USE_ONLY 0 ISSUE_MILITARY_TEMPERATURE_WARNING 0 IS_CONFIG_ROM 0 IS_DEFAULT_FAMILY 0 IS_HARDCOPY_FAMILY 0 IS_HBGA_PACKAGE 0 IS_HIGH_CURRENT_PART 0 IS_LOW_POWER_PART 0 IS_SDM_ONLY_PACKAGE 0 LVDS_IO 1 M10K_MEMORY 1 M144K_MEMORY 1 M20K_MEMORY 0 M4K_MEMORY 0 M512_MEMORY 0 M9K_MEMORY 0 MLAB_MEMORY 1 MRAM_MEMORY 0 NOT_LISTED 0 NOT_MIGRATABLE 0 NO_FITTER_DELAY_CACHE_GENERATED 0 NO_PIN_OUT 0 NO_POF 0 NO_RPE_SUPPORT 0 NO_SUPPORT_FOR_LOGICLOCK_CONTENT_BACK_ANNOTATION 1 NO_SUPPORT_FOR_STA_CLOCK_UNCERTAINTY_CHECK 0 NO_TDC_SUPPORT 0 POSTFIT_BAK_DATABASE_EXPORT_ENABLED 1 POSTMAP_BAK_DATABASE_EXPORT_ENABLED 1 PROGRAMMER_SUPPORT 1 QFIT_IN_DEVELOPMENT 0 QMAP_IN_DEVELOPMENT 0 RAM_LOGICAL_NAME_CHECKING_IN_CUT_ENABLED 1 REPORTS_METASTABILITY_MTBF 1 REQUIRES_INSTALLATION_PATCH 0 REQUIRES_LIST_OF_TEMPERATURE_AND_VOLTAGE_OPERATING_CONDITIONS 1 RESERVES_SIGNAL_PROBE_PINS 0 RESOLVE_MAX_FANOUT_EARLY 1 RESOLVE_MAX_FANOUT_LATE 0 RESPECTS_FIXED_SIZED_LOCKED_LOCATION_LOGICLOCK 1 RESTRICTED_USER_SELECTION 0 RISEFALL_SUPPORT_IS_HIDDEN 0 SHOW_HIDDEN_FAMILY_IN_PROGRAMMER 0 STRICT_TIMING_DB_CHECKS 1 SUPPORTS_ADDITIONAL_OPTIONS_FOR_UNUSED_IO 1 SUPPORTS_CRC 1 SUPPORTS_DIFFERENTIAL_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_DSP_BALANCING_BACK_ANNOTATION 0 SUPPORTS_GENERATION_OF_EARLY_POWER_ESTIMATOR_FILE 1 SUPPORTS_GLOBAL_SIGNAL_BACK_ANNOTATION 1 SUPPORTS_MAC_CHAIN_OUT_ADDER 1 SUPPORTS_RAM_PACKING_BACK_ANNOTATION 0 SUPPORTS_REG_PACKING_BACK_ANNOTATION 0 SUPPORTS_SIGNALPROBE_REGISTER_PIPELINING 1 SUPPORTS_SINGLE_ENDED_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_USER_MANUAL_LOGIC_DUPLICATION 1 TMV_RUN_CUSTOMIZABLE_VIEWER 1 TMV_RUN_INTERNAL_DETAILS 1 TMV_RUN_INTERNAL_DETAILS_ON_IO 0 TMV_RUN_INTERNAL_DETAILS_ON_IOBUF 1 TMV_RUN_INTERNAL_DETAILS_ON_LCELL 0 TMV_RUN_INTERNAL_DETAILS_ON_LRAM 0 TRANSCEIVER_3G_BLOCK 1 TRANSCEIVER_6G_BLOCK 1 USES_ACV_FOR_FLED 1 USES_ADB_FOR_BACK_ANNOTATION 1 USES_ALTERA_LNSIM 0 USES_ASIC_ROUTING_POWER_CALCULATOR 0 USES_DATA_DRIVEN_PLL_COMPUTATION_UTIL 1 USES_DEV 1 USES_ICP_FOR_ECO_FITTER 0 USES_LIBERTY_TIMING 0 USES_POWER_SIGNAL_ACTIVITIES 1 USES_THIRD_GENERATION_TIMING_MODELS_TIS 1 USES_U2B2_TIMING_MODELS 0 USE_ADVANCED_IO_POWER_BY_DEFAULT 1 USE_ADVANCED_IO_TIMING_BY_DEFAULT 1 USE_BASE_FAMILY_DDB_PATH 0 USE_OCT_AUTO_CALIBRATION 1 USE_RELAX_IO_ASSIGNMENT_RULES 0 USE_RISEFALL_ONLY 1 USE_SEPARATE_LIST_FOR_TECH_MIGRATION 0 USE_SINGLE_COMPILER_PASS_PLL_MIF_FILE_WRITER 1 USE_TITAN_IO_BASED_IO_REGISTER_PACKER_UTIL 1 USING_28NM_OR_OLDER_TIMING_METHODOLOGY 1 WYSIWYG_BUS_WIDTH_CHECKING_IN_CUT_ENABLED 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $${FILENAME}_sys_int_mem + + ADDRESS_STALL 1 ADVANCED_INFO 0 ANY_QFP 0 CELL_LEVEL_BACK_ANNOTATION_DISABLED 0 COMPILER_SUPPORT 1 DSP 1 DSP_SHIFTER_BLOCK 0 DUMP_ASM_LAB_BITS_FOR_POWER 0 EMUL 0 ENABLE_ADVANCED_IO_ANALYSIS_GUI_FEATURES 1 ENABLE_PIN_PLANNER 0 ENGINEERING_SAMPLE 0 EPCS 1 ESB 0 FAKE1 0 FAKE2 0 FAKE3 0 FAMILY_LEVEL_INSTALLATION_ONLY 0 FASTEST 0 FINAL_TIMING_MODEL 0 FITTER_USE_FALLING_EDGE_DELAY 1 GENERATE_DC_ON_CURRENT_WARNING_FOR_INTERNAL_CLAMPING_DIODE 1 HARDCOPY 0 HAS_18_BIT_MULTS 1 HAS_ACE_SUPPORT 1 HAS_ACTIVE_PARALLEL_FLASH_SUPPORT 0 HAS_ADJUSTABLE_OUTPUT_IO_TIMING_MEAS_POINT 1 HAS_ADVANCED_IO_INVERTED_CORNER 1 HAS_ADVANCED_IO_POWER_SUPPORT 1 HAS_ADVANCED_IO_TIMING_SUPPORT 1 HAS_ALM_SUPPORT 1 HAS_ATOM_AND_ROUTING_POWER_MODELED_TOGETHER 0 HAS_AUTO_DERIVE_CLOCK_UNCERTAINTY_SUPPORT 1 HAS_AUTO_FIT_SUPPORT 1 HAS_BALANCED_OPT_TECHNIQUE_SUPPORT 1 HAS_BENEFICIAL_SKEW_SUPPORT 0 HAS_BITLEVEL_DRIVE_STRENGTH_CONTROL 1 HAS_BSDL_FILE_GENERATION 1 HAS_CDB_RE_NETWORK_PRESERVATION_SUPPORT 0 HAS_CGA_SUPPORT 1 HAS_CHECK_NETLIST_SUPPORT 1 HAS_CLOCK_REGION_CHECKER_ENABLED 1 HAS_CORE_JUNCTION_TEMP_DERATING 0 HAS_CROSSTALK_SUPPORT 0 HAS_CUSTOM_REGION_SUPPORT 1 HAS_DAP_JTAG_FROM_HPS 0 HAS_DATA_DRIVEN_ACVQ_HSSI_SUPPORT 1 HAS_DDB_FDI_SUPPORT 1 HAS_DESIGN_ANALYZER_SUPPORT 1 HAS_DETAILED_IO_RAIL_POWER_MODEL 1 HAS_DETAILED_LEIM_STATIC_POWER_MODEL 0 HAS_DETAILED_LE_POWER_MODEL 1 HAS_DETAILED_ROUTING_MUX_STATIC_POWER_MODEL 0 HAS_DETAILED_THERMAL_CIRCUIT_PARAMETER_SUPPORT 1 HAS_DEVICE_MIGRATION_SUPPORT 1 HAS_DIAGONAL_MIGRATION_SUPPORT 0 HAS_EMIF_TOOLKIT_SUPPORT 1 HAS_ERROR_DETECTION_SUPPORT 1 HAS_FAMILY_VARIANT_MIGRATION_SUPPORT 0 HAS_FANOUT_FREE_NODE_SUPPORT 1 HAS_FAST_FIT_SUPPORT 1 HAS_FITTER_EARLY_TIMING_ESTIMATE_SUPPORT 0 HAS_FITTER_ECO_SUPPORT 1 HAS_FIT_NETLIST_OPT_RETIME_SUPPORT 1 HAS_FIT_NETLIST_OPT_SUPPORT 1 HAS_FORMAL_VERIFICATION_SUPPORT 1 HAS_FPGA_XCHANGE_SUPPORT 1 HAS_FSAC_LUTRAM_REGISTER_PACKING_SUPPORT 1 HAS_FULL_DAT_MIN_TIMING_SUPPORT 1 HAS_FULL_INCREMENTAL_DESIGN_SUPPORT 1 HAS_FUNCTIONAL_SIMULATION_SUPPORT 0 HAS_FUNCTIONAL_VERILOG_SIMULATION_SUPPORT 1 HAS_FUNCTIONAL_VHDL_SIMULATION_SUPPORT 1 HAS_GLITCH_FILTERING_SUPPORT 1 HAS_HARDCOPYII_SUPPORT 0 HAS_HC_READY_SUPPORT 0 HAS_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_HOLD_TIME_AVOIDANCE_ACROSS_CLOCK_SPINE_SUPPORT 1 HAS_HSPICE_WRITER_SUPPORT 1 HAS_HSSI_POWER_CALCULATOR 1 HAS_IBISO_WRITER_SUPPORT 0 HAS_ICD_DATA_IP 0 HAS_INCREMENTAL_DAT_SUPPORT 1 HAS_INCREMENTAL_SYNTHESIS_SUPPORT 1 HAS_INTERFACE_PLANNER_SUPPORT 1 HAS_IO_ASSIGNMENT_ANALYSIS_SUPPORT 1 HAS_IO_DECODER 1 HAS_IO_PLACEMENT_OPTIMIZATION_SUPPORT 1 HAS_IO_SMART_RECOMPILE_SUPPORT 0 HAS_JITTER_SUPPORT 1 HAS_JTAG_SLD_HUB_SUPPORT 1 HAS_LIMITED_TCL_FITTER_SUPPORT 1 HAS_LOGICAL_FLOORPLANNER_SUPPORT 0 HAS_LOGIC_LOCK_SUPPORT 1 HAS_MICROPROCESSOR 0 HAS_MIF_SMART_COMPILE_SUPPORT 1 HAS_MINMAX_TIMING_MODELING_SUPPORT 1 HAS_MIN_TIMING_ANALYSIS_SUPPORT 1 HAS_MUX_RESTRUCTURE_SUPPORT 1 HAS_NEW_HC_FLOW_SUPPORT 0 HAS_NEW_SERDES_MAX_RESOURCE_COUNT_REPORTING_SUPPORT 0 HAS_NEW_VPR_SUPPORT 1 HAS_NONSOCKET_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_NO_HARDBLOCK_PARTITION_SUPPORT 0 HAS_NO_JTAG_USERCODE_SUPPORT 0 HAS_OPERATING_SETTINGS_AND_CONDITIONS_REPORTING_SUPPORT 1 HAS_PAD_LOCATION_ASSIGNMENT_SUPPORT 0 HAS_PARTIAL_RECONFIG_SUPPORT 1 HAS_PASSIVE_PARALLEL_SUPPORT 0 HAS_PHYSICAL_NETLIST_OUTPUT 0 HAS_PHYSICAL_ROUTING_SUPPORT 1 HAS_PIN_SPECIFIC_VOLTAGE_SUPPORT 1 HAS_PLDM_REF_SUPPORT 0 HAS_POWER_BINNING_LIMITS_DATA 1 HAS_POWER_ESTIMATION_SUPPORT 1 HAS_PRELIMINARY_CLOCK_UNCERTAINTY_NUMBERS 0 HAS_PRE_FITTER_FPP_SUPPORT 1 HAS_PRE_FITTER_LUTRAM_NETLIST_CHECKER_ENABLED 1 HAS_PVA_SUPPORT 1 HAS_RAPID_RECOMPILE_SUPPORT 0 HAS_RCF_SUPPORT 1 HAS_RCF_SUPPORT_FOR_DEBUGGING 0 HAS_RED_BLACK_SEPARATION_SUPPORT 0 HAS_RE_LEVEL_TIMING_GRAPH_SUPPORT 1 HAS_RISEFALL_DELAY_SUPPORT 1 HAS_SIGNAL_PROBE_SUPPORT 1 HAS_SIGNAL_TAP_SUPPORT 1 HAS_SIMULATOR_SUPPORT 0 HAS_SPLIT_IO_SUPPORT 1 HAS_SPLIT_LC_SUPPORT 1 HAS_STRICT_PRESERVATION_SUPPORT 0 HAS_SYNTH_FSYN_NETLIST_OPT_SUPPORT 1 HAS_SYNTH_NETLIST_OPT_RETIME_SUPPORT 0 HAS_SYNTH_NETLIST_OPT_SUPPORT 1 HAS_TCL_FITTER_SUPPORT 0 HAS_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_TEMPLATED_REGISTER_PACKING_SUPPORT 1 HAS_TIME_BORROWING_SUPPORT 0 HAS_TIMING_DRIVEN_SYNTHESIS_SUPPORT 1 HAS_TIMING_INFO_SUPPORT 1 HAS_TIMING_OPERATING_CONDITIONS 1 HAS_TIMING_SIMULATION_SUPPORT 0 HAS_TITAN_BASED_MAC_REGISTER_PACKER_SUPPORT 1 HAS_U2B2_SUPPORT 0 HAS_USER_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_USE_FITTER_INFO_SUPPORT 0 HAS_VCCPD_POWER_RAIL 1 HAS_VERTICAL_MIGRATION_SUPPORT 1 HAS_VIEWDRAW_SYMBOL_SUPPORT 0 HAS_VIO_SUPPORT 1 HAS_VIRTUAL_DEVICES 0 HAS_WYSIWYG_DFFEAS_SUPPORT 1 HAS_XIBISO_WRITER_SUPPORT 1 IFP_USE_LEGACY_IO_CHECKER 1 INCREMENTAL_DESIGN_SUPPORTS_COMPATIBLE_CONSTRAINTS 0 INSTALLED 0 INTERNAL_POF_SUPPORT_ENABLED 0 INTERNAL_USE_ONLY 0 ISSUE_MILITARY_TEMPERATURE_WARNING 0 IS_CONFIG_ROM 0 IS_DEFAULT_FAMILY 0 IS_HARDCOPY_FAMILY 0 IS_HBGA_PACKAGE 0 IS_HIGH_CURRENT_PART 0 IS_LOW_POWER_PART 0 IS_SDM_ONLY_PACKAGE 0 LVDS_IO 1 M10K_MEMORY 1 M144K_MEMORY 1 M20K_MEMORY 0 M4K_MEMORY 0 M512_MEMORY 0 M9K_MEMORY 0 MLAB_MEMORY 1 MRAM_MEMORY 0 NOT_LISTED 0 NOT_MIGRATABLE 0 NO_FITTER_DELAY_CACHE_GENERATED 0 NO_PIN_OUT 0 NO_POF 0 NO_RPE_SUPPORT 0 NO_SUPPORT_FOR_LOGICLOCK_CONTENT_BACK_ANNOTATION 1 NO_SUPPORT_FOR_STA_CLOCK_UNCERTAINTY_CHECK 0 NO_TDC_SUPPORT 0 POSTFIT_BAK_DATABASE_EXPORT_ENABLED 1 POSTMAP_BAK_DATABASE_EXPORT_ENABLED 1 PROGRAMMER_SUPPORT 1 QFIT_IN_DEVELOPMENT 0 QMAP_IN_DEVELOPMENT 0 RAM_LOGICAL_NAME_CHECKING_IN_CUT_ENABLED 1 REPORTS_METASTABILITY_MTBF 1 REQUIRES_INSTALLATION_PATCH 0 REQUIRES_LIST_OF_TEMPERATURE_AND_VOLTAGE_OPERATING_CONDITIONS 1 RESERVES_SIGNAL_PROBE_PINS 0 RESOLVE_MAX_FANOUT_EARLY 1 RESOLVE_MAX_FANOUT_LATE 0 RESPECTS_FIXED_SIZED_LOCKED_LOCATION_LOGICLOCK 1 RESTRICTED_USER_SELECTION 0 RISEFALL_SUPPORT_IS_HIDDEN 0 SHOW_HIDDEN_FAMILY_IN_PROGRAMMER 0 STRICT_TIMING_DB_CHECKS 1 SUPPORTS_ADDITIONAL_OPTIONS_FOR_UNUSED_IO 1 SUPPORTS_CRC 1 SUPPORTS_DIFFERENTIAL_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_DSP_BALANCING_BACK_ANNOTATION 0 SUPPORTS_GENERATION_OF_EARLY_POWER_ESTIMATOR_FILE 1 SUPPORTS_GLOBAL_SIGNAL_BACK_ANNOTATION 1 SUPPORTS_MAC_CHAIN_OUT_ADDER 1 SUPPORTS_RAM_PACKING_BACK_ANNOTATION 0 SUPPORTS_REG_PACKING_BACK_ANNOTATION 0 SUPPORTS_SIGNALPROBE_REGISTER_PIPELINING 1 SUPPORTS_SINGLE_ENDED_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_USER_MANUAL_LOGIC_DUPLICATION 1 TMV_RUN_CUSTOMIZABLE_VIEWER 1 TMV_RUN_INTERNAL_DETAILS 1 TMV_RUN_INTERNAL_DETAILS_ON_IO 0 TMV_RUN_INTERNAL_DETAILS_ON_IOBUF 1 TMV_RUN_INTERNAL_DETAILS_ON_LCELL 0 TMV_RUN_INTERNAL_DETAILS_ON_LRAM 0 TRANSCEIVER_3G_BLOCK 1 TRANSCEIVER_6G_BLOCK 1 USES_ACV_FOR_FLED 1 USES_ADB_FOR_BACK_ANNOTATION 1 USES_ALTERA_LNSIM 0 USES_ASIC_ROUTING_POWER_CALCULATOR 0 USES_DATA_DRIVEN_PLL_COMPUTATION_UTIL 1 USES_DEV 1 USES_ICP_FOR_ECO_FITTER 0 USES_LIBERTY_TIMING 0 USES_POWER_SIGNAL_ACTIVITIES 1 USES_THIRD_GENERATION_TIMING_MODELS_TIS 1 USES_U2B2_TIMING_MODELS 0 USE_ADVANCED_IO_POWER_BY_DEFAULT 1 USE_ADVANCED_IO_TIMING_BY_DEFAULT 1 USE_BASE_FAMILY_DDB_PATH 0 USE_OCT_AUTO_CALIBRATION 1 USE_RELAX_IO_ASSIGNMENT_RULES 0 USE_RISEFALL_ONLY 1 USE_SEPARATE_LIST_FOR_TECH_MIGRATION 0 USE_SINGLE_COMPILER_PASS_PLL_MIF_FILE_WRITER 1 USE_TITAN_IO_BASED_IO_REGISTER_PACKER_UTIL 1 USING_28NM_OR_OLDER_TIMING_METHODOLOGY 1 WYSIWYG_BUS_WIDTH_CHECKING_IN_CUT_ENABLED 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Bidirectional,Bidirectional,Bidirectional,Bidirectional,Bidirectional,Bidirectional + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NO_INTERACTIVE_WINDOWS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $${FILENAME}_sys_ethernet_desc_mem + + ADDRESS_STALL 1 ADVANCED_INFO 0 ANY_QFP 0 CELL_LEVEL_BACK_ANNOTATION_DISABLED 0 COMPILER_SUPPORT 1 DSP 1 DSP_SHIFTER_BLOCK 0 DUMP_ASM_LAB_BITS_FOR_POWER 0 EMUL 0 ENABLE_ADVANCED_IO_ANALYSIS_GUI_FEATURES 1 ENABLE_PIN_PLANNER 0 ENGINEERING_SAMPLE 0 EPCS 1 ESB 0 FAKE1 0 FAKE2 0 FAKE3 0 FAMILY_LEVEL_INSTALLATION_ONLY 0 FASTEST 0 FINAL_TIMING_MODEL 0 FITTER_USE_FALLING_EDGE_DELAY 1 GENERATE_DC_ON_CURRENT_WARNING_FOR_INTERNAL_CLAMPING_DIODE 1 HARDCOPY 0 HAS_18_BIT_MULTS 1 HAS_ACE_SUPPORT 1 HAS_ACTIVE_PARALLEL_FLASH_SUPPORT 0 HAS_ADJUSTABLE_OUTPUT_IO_TIMING_MEAS_POINT 1 HAS_ADVANCED_IO_INVERTED_CORNER 1 HAS_ADVANCED_IO_POWER_SUPPORT 1 HAS_ADVANCED_IO_TIMING_SUPPORT 1 HAS_ALM_SUPPORT 1 HAS_ATOM_AND_ROUTING_POWER_MODELED_TOGETHER 0 HAS_AUTO_DERIVE_CLOCK_UNCERTAINTY_SUPPORT 1 HAS_AUTO_FIT_SUPPORT 1 HAS_BALANCED_OPT_TECHNIQUE_SUPPORT 1 HAS_BENEFICIAL_SKEW_SUPPORT 0 HAS_BITLEVEL_DRIVE_STRENGTH_CONTROL 1 HAS_BSDL_FILE_GENERATION 1 HAS_CDB_RE_NETWORK_PRESERVATION_SUPPORT 0 HAS_CGA_SUPPORT 1 HAS_CHECK_NETLIST_SUPPORT 1 HAS_CLOCK_REGION_CHECKER_ENABLED 1 HAS_CORE_JUNCTION_TEMP_DERATING 0 HAS_CROSSTALK_SUPPORT 0 HAS_CUSTOM_REGION_SUPPORT 1 HAS_DAP_JTAG_FROM_HPS 0 HAS_DATA_DRIVEN_ACVQ_HSSI_SUPPORT 1 HAS_DDB_FDI_SUPPORT 1 HAS_DESIGN_ANALYZER_SUPPORT 1 HAS_DETAILED_IO_RAIL_POWER_MODEL 1 HAS_DETAILED_LEIM_STATIC_POWER_MODEL 0 HAS_DETAILED_LE_POWER_MODEL 1 HAS_DETAILED_ROUTING_MUX_STATIC_POWER_MODEL 0 HAS_DETAILED_THERMAL_CIRCUIT_PARAMETER_SUPPORT 1 HAS_DEVICE_MIGRATION_SUPPORT 1 HAS_DIAGONAL_MIGRATION_SUPPORT 0 HAS_EMIF_TOOLKIT_SUPPORT 1 HAS_ERROR_DETECTION_SUPPORT 1 HAS_FAMILY_VARIANT_MIGRATION_SUPPORT 0 HAS_FANOUT_FREE_NODE_SUPPORT 1 HAS_FAST_FIT_SUPPORT 1 HAS_FITTER_EARLY_TIMING_ESTIMATE_SUPPORT 0 HAS_FITTER_ECO_SUPPORT 1 HAS_FIT_NETLIST_OPT_RETIME_SUPPORT 1 HAS_FIT_NETLIST_OPT_SUPPORT 1 HAS_FORMAL_VERIFICATION_SUPPORT 1 HAS_FPGA_XCHANGE_SUPPORT 1 HAS_FSAC_LUTRAM_REGISTER_PACKING_SUPPORT 1 HAS_FULL_DAT_MIN_TIMING_SUPPORT 1 HAS_FULL_INCREMENTAL_DESIGN_SUPPORT 1 HAS_FUNCTIONAL_SIMULATION_SUPPORT 0 HAS_FUNCTIONAL_VERILOG_SIMULATION_SUPPORT 1 HAS_FUNCTIONAL_VHDL_SIMULATION_SUPPORT 1 HAS_GLITCH_FILTERING_SUPPORT 1 HAS_HARDCOPYII_SUPPORT 0 HAS_HC_READY_SUPPORT 0 HAS_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_HOLD_TIME_AVOIDANCE_ACROSS_CLOCK_SPINE_SUPPORT 1 HAS_HSPICE_WRITER_SUPPORT 1 HAS_HSSI_POWER_CALCULATOR 1 HAS_IBISO_WRITER_SUPPORT 0 HAS_ICD_DATA_IP 0 HAS_INCREMENTAL_DAT_SUPPORT 1 HAS_INCREMENTAL_SYNTHESIS_SUPPORT 1 HAS_INTERFACE_PLANNER_SUPPORT 1 HAS_IO_ASSIGNMENT_ANALYSIS_SUPPORT 1 HAS_IO_DECODER 1 HAS_IO_PLACEMENT_OPTIMIZATION_SUPPORT 1 HAS_IO_SMART_RECOMPILE_SUPPORT 0 HAS_JITTER_SUPPORT 1 HAS_JTAG_SLD_HUB_SUPPORT 1 HAS_LIMITED_TCL_FITTER_SUPPORT 1 HAS_LOGICAL_FLOORPLANNER_SUPPORT 0 HAS_LOGIC_LOCK_SUPPORT 1 HAS_MICROPROCESSOR 0 HAS_MIF_SMART_COMPILE_SUPPORT 1 HAS_MINMAX_TIMING_MODELING_SUPPORT 1 HAS_MIN_TIMING_ANALYSIS_SUPPORT 1 HAS_MUX_RESTRUCTURE_SUPPORT 1 HAS_NEW_HC_FLOW_SUPPORT 0 HAS_NEW_SERDES_MAX_RESOURCE_COUNT_REPORTING_SUPPORT 0 HAS_NEW_VPR_SUPPORT 1 HAS_NONSOCKET_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_NO_HARDBLOCK_PARTITION_SUPPORT 0 HAS_NO_JTAG_USERCODE_SUPPORT 0 HAS_OPERATING_SETTINGS_AND_CONDITIONS_REPORTING_SUPPORT 1 HAS_PAD_LOCATION_ASSIGNMENT_SUPPORT 0 HAS_PARTIAL_RECONFIG_SUPPORT 1 HAS_PASSIVE_PARALLEL_SUPPORT 0 HAS_PHYSICAL_NETLIST_OUTPUT 0 HAS_PHYSICAL_ROUTING_SUPPORT 1 HAS_PIN_SPECIFIC_VOLTAGE_SUPPORT 1 HAS_PLDM_REF_SUPPORT 0 HAS_POWER_BINNING_LIMITS_DATA 1 HAS_POWER_ESTIMATION_SUPPORT 1 HAS_PRELIMINARY_CLOCK_UNCERTAINTY_NUMBERS 0 HAS_PRE_FITTER_FPP_SUPPORT 1 HAS_PRE_FITTER_LUTRAM_NETLIST_CHECKER_ENABLED 1 HAS_PVA_SUPPORT 1 HAS_RAPID_RECOMPILE_SUPPORT 0 HAS_RCF_SUPPORT 1 HAS_RCF_SUPPORT_FOR_DEBUGGING 0 HAS_RED_BLACK_SEPARATION_SUPPORT 0 HAS_RE_LEVEL_TIMING_GRAPH_SUPPORT 1 HAS_RISEFALL_DELAY_SUPPORT 1 HAS_SIGNAL_PROBE_SUPPORT 1 HAS_SIGNAL_TAP_SUPPORT 1 HAS_SIMULATOR_SUPPORT 0 HAS_SPLIT_IO_SUPPORT 1 HAS_SPLIT_LC_SUPPORT 1 HAS_STRICT_PRESERVATION_SUPPORT 0 HAS_SYNTH_FSYN_NETLIST_OPT_SUPPORT 1 HAS_SYNTH_NETLIST_OPT_RETIME_SUPPORT 0 HAS_SYNTH_NETLIST_OPT_SUPPORT 1 HAS_TCL_FITTER_SUPPORT 0 HAS_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_TEMPLATED_REGISTER_PACKING_SUPPORT 1 HAS_TIME_BORROWING_SUPPORT 0 HAS_TIMING_DRIVEN_SYNTHESIS_SUPPORT 1 HAS_TIMING_INFO_SUPPORT 1 HAS_TIMING_OPERATING_CONDITIONS 1 HAS_TIMING_SIMULATION_SUPPORT 0 HAS_TITAN_BASED_MAC_REGISTER_PACKER_SUPPORT 1 HAS_U2B2_SUPPORT 0 HAS_USER_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_USE_FITTER_INFO_SUPPORT 0 HAS_VCCPD_POWER_RAIL 1 HAS_VERTICAL_MIGRATION_SUPPORT 1 HAS_VIEWDRAW_SYMBOL_SUPPORT 0 HAS_VIO_SUPPORT 1 HAS_VIRTUAL_DEVICES 0 HAS_WYSIWYG_DFFEAS_SUPPORT 1 HAS_XIBISO_WRITER_SUPPORT 1 IFP_USE_LEGACY_IO_CHECKER 1 INCREMENTAL_DESIGN_SUPPORTS_COMPATIBLE_CONSTRAINTS 0 INSTALLED 0 INTERNAL_POF_SUPPORT_ENABLED 0 INTERNAL_USE_ONLY 0 ISSUE_MILITARY_TEMPERATURE_WARNING 0 IS_CONFIG_ROM 0 IS_DEFAULT_FAMILY 0 IS_HARDCOPY_FAMILY 0 IS_HBGA_PACKAGE 0 IS_HIGH_CURRENT_PART 0 IS_LOW_POWER_PART 0 IS_SDM_ONLY_PACKAGE 0 LVDS_IO 1 M10K_MEMORY 1 M144K_MEMORY 1 M20K_MEMORY 0 M4K_MEMORY 0 M512_MEMORY 0 M9K_MEMORY 0 MLAB_MEMORY 1 MRAM_MEMORY 0 NOT_LISTED 0 NOT_MIGRATABLE 0 NO_FITTER_DELAY_CACHE_GENERATED 0 NO_PIN_OUT 0 NO_POF 0 NO_RPE_SUPPORT 0 NO_SUPPORT_FOR_LOGICLOCK_CONTENT_BACK_ANNOTATION 1 NO_SUPPORT_FOR_STA_CLOCK_UNCERTAINTY_CHECK 0 NO_TDC_SUPPORT 0 POSTFIT_BAK_DATABASE_EXPORT_ENABLED 1 POSTMAP_BAK_DATABASE_EXPORT_ENABLED 1 PROGRAMMER_SUPPORT 1 QFIT_IN_DEVELOPMENT 0 QMAP_IN_DEVELOPMENT 0 RAM_LOGICAL_NAME_CHECKING_IN_CUT_ENABLED 1 REPORTS_METASTABILITY_MTBF 1 REQUIRES_INSTALLATION_PATCH 0 REQUIRES_LIST_OF_TEMPERATURE_AND_VOLTAGE_OPERATING_CONDITIONS 1 RESERVES_SIGNAL_PROBE_PINS 0 RESOLVE_MAX_FANOUT_EARLY 1 RESOLVE_MAX_FANOUT_LATE 0 RESPECTS_FIXED_SIZED_LOCKED_LOCATION_LOGICLOCK 1 RESTRICTED_USER_SELECTION 0 RISEFALL_SUPPORT_IS_HIDDEN 0 SHOW_HIDDEN_FAMILY_IN_PROGRAMMER 0 STRICT_TIMING_DB_CHECKS 1 SUPPORTS_ADDITIONAL_OPTIONS_FOR_UNUSED_IO 1 SUPPORTS_CRC 1 SUPPORTS_DIFFERENTIAL_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_DSP_BALANCING_BACK_ANNOTATION 0 SUPPORTS_GENERATION_OF_EARLY_POWER_ESTIMATOR_FILE 1 SUPPORTS_GLOBAL_SIGNAL_BACK_ANNOTATION 1 SUPPORTS_MAC_CHAIN_OUT_ADDER 1 SUPPORTS_RAM_PACKING_BACK_ANNOTATION 0 SUPPORTS_REG_PACKING_BACK_ANNOTATION 0 SUPPORTS_SIGNALPROBE_REGISTER_PIPELINING 1 SUPPORTS_SINGLE_ENDED_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_USER_MANUAL_LOGIC_DUPLICATION 1 TMV_RUN_CUSTOMIZABLE_VIEWER 1 TMV_RUN_INTERNAL_DETAILS 1 TMV_RUN_INTERNAL_DETAILS_ON_IO 0 TMV_RUN_INTERNAL_DETAILS_ON_IOBUF 1 TMV_RUN_INTERNAL_DETAILS_ON_LCELL 0 TMV_RUN_INTERNAL_DETAILS_ON_LRAM 0 TRANSCEIVER_3G_BLOCK 1 TRANSCEIVER_6G_BLOCK 1 USES_ACV_FOR_FLED 1 USES_ADB_FOR_BACK_ANNOTATION 1 USES_ALTERA_LNSIM 0 USES_ASIC_ROUTING_POWER_CALCULATOR 0 USES_DATA_DRIVEN_PLL_COMPUTATION_UTIL 1 USES_DEV 1 USES_ICP_FOR_ECO_FITTER 0 USES_LIBERTY_TIMING 0 USES_POWER_SIGNAL_ACTIVITIES 1 USES_THIRD_GENERATION_TIMING_MODELS_TIS 1 USES_U2B2_TIMING_MODELS 0 USE_ADVANCED_IO_POWER_BY_DEFAULT 1 USE_ADVANCED_IO_TIMING_BY_DEFAULT 1 USE_BASE_FAMILY_DDB_PATH 0 USE_OCT_AUTO_CALIBRATION 1 USE_RELAX_IO_ASSIGNMENT_RULES 0 USE_RISEFALL_ONLY 1 USE_SEPARATE_LIST_FOR_TECH_MIGRATION 0 USE_SINGLE_COMPILER_PASS_PLL_MIF_FILE_WRITER 1 USE_TITAN_IO_BASED_IO_REGISTER_PACKER_UTIL 1 USING_28NM_OR_OLDER_TIMING_METHODOLOGY 1 WYSIWYG_BUS_WIDTH_CHECKING_IN_CUT_ENABLED 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Automatic Switchover + + + + + + + Create an adjpllin signal to connect with an upstream PLL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/fmcjesdadc1/a5gt/system_constr.sdc b/projects/fmcjesdadc1/a5gt/system_constr.sdc new file mode 100755 index 000000000..5a9ce1ef8 --- /dev/null +++ b/projects/fmcjesdadc1/a5gt/system_constr.sdc @@ -0,0 +1,36 @@ +################################################################################ +################################################################################ + +create_clock -period "10.000 ns" -name n_clk_100m [get_ports {sys_clk}] +create_clock -period "4.000 ns" -name n_clk_250m [get_ports {ref_clk}] +create_clock -period "8.000 ns" -name n_eth_rx_clk_125m [get_ports {eth_rx_clk}] +create_clock -period "8.000 ns" -name n_eth_tx_clk_125m [get_nets {eth_tx_clk}] + +derive_pll_clocks +derive_clock_uncertainty + +set clk_100m [get_clocks {i_fmcjesdadc1|sys_pll|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] +set clk_166m [get_clocks {i_fmcjesdadc1|sys_pll|altera_pll_i|general[1].gpll~PLL_OUTPUT_COUNTER|divclk}] +set clk_125m [get_clocks {i_fmcjesdadc1|sys_pll|altera_pll_i|general[2].gpll~PLL_OUTPUT_COUNTER|divclk}] +set clk_25m [get_clocks {i_fmcjesdadc1|sys_pll|altera_pll_i|general[3].gpll~PLL_OUTPUT_COUNTER|divclk}] +set clk_2m5 [get_clocks {i_fmcjesdadc1|sys_pll|altera_pll_i|general[4].gpll~PLL_OUTPUT_COUNTER|divclk}] +set clk_rxlink [get_clocks {i_fmcjesdadc1|sys_jesd204b_s1_pll|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] + +set_false_path -from {sys_resetn} -to * +set_false_path -from $clk_100m -to $clk_166m +set_false_path -from $clk_100m -to $clk_rxlink +set_false_path -from $clk_166m -to $clk_100m +set_false_path -from $clk_166m -to $clk_rxlink +set_false_path -from $clk_rxlink -to $clk_100m +set_false_path -from $clk_rxlink -to $clk_166m + +set_false_path -from $clk_125m -to $clk_25m +set_false_path -from $clk_125m -to $clk_2m5 +set_false_path -from $clk_25m -to $clk_125m +set_false_path -from $clk_25m -to $clk_2m5 +set_false_path -from $clk_2m5 -to $clk_125m +set_false_path -from $clk_2m5 -to $clk_25m + +################################################################################ +################################################################################ + diff --git a/projects/fmcjesdadc1/a5gt/system_project.tcl b/projects/fmcjesdadc1/a5gt/system_project.tcl new file mode 100755 index 000000000..2f33f1e1d --- /dev/null +++ b/projects/fmcjesdadc1/a5gt/system_project.tcl @@ -0,0 +1,859 @@ +################################################################################ +################################################################################ + +source ../../scripts/adi_env.tcl +project_new fmcjesdadc1 -overwrite + +set_global_assignment -name FAMILY "Arria V" +set_global_assignment -name DEVICE 5AGTFD7K3F40I5 +set_global_assignment -name TOP_LEVEL_ENTITY fmcjesdadc1_top +set_global_assignment -name SDC_FILE fmcjesdadc1.sdc +set_global_assignment -name QIP_FILE fmcjesdadc1/synthesis/fmcjesdadc1.qip +set_global_assignment -name VERILOG_FILE $ad_hdl_dir/library/common/altera/ad_jesd_align.v +set_global_assignment -name VERILOG_FILE $ad_hdl_dir/library/common/altera/ad_xcvr_rx_rst.v +set_global_assignment -name VERILOG_FILE ../common/fmcjesdadc1_spi.v +set_global_assignment -name VERILOG_FILE fmcjesdadc1_top.v + +# clocks and resets + +set_location_assignment PIN_C34 -to sys_clk +set_location_assignment PIN_D34 -to "sys_clk(n)" +set_instance_assignment -name IO_STANDARD LVDS -to sys_clk +set_instance_assignment -name INPUT_TERMINATION DIFFERENTIAL -to sys_clk -disable + +set_location_assignment PIN_L6 -to sys_resetn +set_instance_assignment -name IO_STANDARD "2.5 V" -to sys_resetn + +# reference clock + +set_location_assignment PIN_AB9 -to ref_clk +set_location_assignment PIN_AB8 -to "ref_clk(n)" +set_instance_assignment -name IO_STANDARD "1.5-V PCML" -to ref_clk +set_instance_assignment -name XCVR_REFCLK_PIN_TERMINATION AC_COUPLING -to ref_clk +set_instance_assignment -name XCVR_IO_PIN_TERMINATION 100_OHMS -to ref_clk + +# lane data + +set_location_assignment PIN_AE1 -to rx_data[0] +set_location_assignment PIN_AE2 -to "rx_data[0](n)" +set_location_assignment PIN_AA1 -to rx_data[1] +set_location_assignment PIN_AA2 -to "rx_data[1](n)" +set_location_assignment PIN_U1 -to rx_data[2] +set_location_assignment PIN_U2 -to "rx_data[2](n)" +set_location_assignment PIN_R1 -to rx_data[3] +set_location_assignment PIN_R2 -to "rx_data[3](n)" +set_instance_assignment -name IO_STANDARD "1.5-V PCML" -to rx_data[0] +set_instance_assignment -name IO_STANDARD "1.5-V PCML" -to rx_data[1] +set_instance_assignment -name IO_STANDARD "1.5-V PCML" -to rx_data[2] +set_instance_assignment -name IO_STANDARD "1.5-V PCML" -to rx_data[3] +set_instance_assignment -name XCVR_IO_PIN_TERMINATION 100_OHMS -to rx_data[0] +set_instance_assignment -name XCVR_IO_PIN_TERMINATION 100_OHMS -to rx_data[1] +set_instance_assignment -name XCVR_IO_PIN_TERMINATION 100_OHMS -to rx_data[2] +set_instance_assignment -name XCVR_IO_PIN_TERMINATION 100_OHMS -to rx_data[3] + +# jesd signals + +set_location_assignment PIN_AD25 -to rx_sync +set_instance_assignment -name IO_STANDARD "2.5 V" -to rx_sync + +set_location_assignment PIN_AC24 -to rx_sysref +set_instance_assignment -name IO_STANDARD "2.5 V" -to rx_sysref + +# spi + +set_location_assignment PIN_AG27 -to spi_csn +set_location_assignment PIN_AH27 -to spi_clk +set_location_assignment PIN_AD24 -to spi_sdio + +set_instance_assignment -name IO_STANDARD "2.5 V" -to spi_csn +set_instance_assignment -name IO_STANDARD "2.5 V" -to spi_clk +set_instance_assignment -name IO_STANDARD "2.5 V" -to spi_sdio + +# ddr3 + +set_location_assignment PIN_B31 -to ddr3_a[0] +set_location_assignment PIN_A30 -to ddr3_a[1] +set_location_assignment PIN_A31 -to ddr3_a[2] +set_location_assignment PIN_A32 -to ddr3_a[3] +set_location_assignment PIN_A33 -to ddr3_a[4] +set_location_assignment PIN_B33 -to ddr3_a[5] +set_location_assignment PIN_H31 -to ddr3_a[6] +set_location_assignment PIN_J31 -to ddr3_a[7] +set_location_assignment PIN_C31 -to ddr3_a[8] +set_location_assignment PIN_D31 -to ddr3_a[9] +set_location_assignment PIN_C32 -to ddr3_a[10] +set_location_assignment PIN_D32 -to ddr3_a[11] +set_location_assignment PIN_N31 -to ddr3_a[12] +set_location_assignment PIN_P31 -to ddr3_a[13] +set_location_assignment PIN_M32 -to ddr3_ba[0] +set_location_assignment PIN_N32 -to ddr3_ba[1] +set_location_assignment PIN_J34 -to ddr3_ba[2] +set_location_assignment PIN_B30 -to ddr3_clk_p +set_location_assignment PIN_C30 -to ddr3_clk_n +set_location_assignment PIN_E31 -to ddr3_cke +set_location_assignment PIN_L34 -to ddr3_cs_n +set_location_assignment PIN_K34 -to ddr3_ras_n +set_location_assignment PIN_L33 -to ddr3_cas_n +set_location_assignment PIN_M33 -to ddr3_we_n +set_location_assignment PIN_G30 -to ddr3_reset_n +set_location_assignment PIN_L31 -to ddr3_odt +set_location_assignment PIN_F33 -to ddr3_rzq + +set_location_assignment PIN_N30 -to ddr3_dqs_p[0] +set_location_assignment PIN_P30 -to ddr3_dqs_n[0] +set_location_assignment PIN_R29 -to ddr3_dqs_p[1] +set_location_assignment PIN_T29 -to ddr3_dqs_n[1] +set_location_assignment PIN_J30 -to ddr3_dm[0] +set_location_assignment PIN_J29 -to ddr3_dm[1] +set_location_assignment PIN_B28 -to ddr3_dq[0] +set_location_assignment PIN_C29 -to ddr3_dq[1] +set_location_assignment PIN_R30 -to ddr3_dq[2] +set_location_assignment PIN_A29 -to ddr3_dq[3] +set_location_assignment PIN_A28 -to ddr3_dq[4] +set_location_assignment PIN_L30 -to ddr3_dq[5] +set_location_assignment PIN_D30 -to ddr3_dq[6] +set_location_assignment PIN_D29 -to ddr3_dq[7] +set_location_assignment PIN_L28 -to ddr3_dq[8] +set_location_assignment PIN_M28 -to ddr3_dq[9] +set_location_assignment PIN_H28 -to ddr3_dq[10] +set_location_assignment PIN_C28 -to ddr3_dq[11] +set_location_assignment PIN_D28 -to ddr3_dq[12] +set_location_assignment PIN_F28 -to ddr3_dq[13] +set_location_assignment PIN_M29 -to ddr3_dq[14] +set_location_assignment PIN_N29 -to ddr3_dq[15] + +set_location_assignment PIN_R28 -to ddr3_dqs_p[2] +set_location_assignment PIN_T28 -to ddr3_dqs_n[2] +set_location_assignment PIN_M26 -to ddr3_dqs_p[3] +set_location_assignment PIN_N26 -to ddr3_dqs_n[3] +set_location_assignment PIN_K27 -to ddr3_dm[2] +set_location_assignment PIN_J26 -to ddr3_dm[3] +set_location_assignment PIN_P27 -to ddr3_dq[16] +set_location_assignment PIN_R27 -to ddr3_dq[17] +set_location_assignment PIN_H27 -to ddr3_dq[18] +set_location_assignment PIN_B27 -to ddr3_dq[19] +set_location_assignment PIN_C27 -to ddr3_dq[20] +set_location_assignment PIN_E27 -to ddr3_dq[21] +set_location_assignment PIN_M27 -to ddr3_dq[22] +set_location_assignment PIN_N27 -to ddr3_dq[23] +set_location_assignment PIN_C26 -to ddr3_dq[24] +set_location_assignment PIN_D26 -to ddr3_dq[25] +set_location_assignment PIN_K25 -to ddr3_dq[26] +set_location_assignment PIN_R26 -to ddr3_dq[27] +set_location_assignment PIN_T27 -to ddr3_dq[28] +set_location_assignment PIN_A26 -to ddr3_dq[29] +set_location_assignment PIN_F26 -to ddr3_dq[30] +set_location_assignment PIN_G26 -to ddr3_dq[31] + +set_location_assignment PIN_A20 -to ddr3_dqs_p[4] +set_location_assignment PIN_B21 -to ddr3_dqs_n[4] +set_location_assignment PIN_C23 -to ddr3_dqs_p[5] +set_location_assignment PIN_D23 -to ddr3_dqs_n[5] +set_location_assignment PIN_M21 -to ddr3_dm[4] +set_location_assignment PIN_B22 -to ddr3_dm[5] +set_location_assignment PIN_D20 -to ddr3_dq[32] +set_location_assignment PIN_H21 -to ddr3_dq[33] +set_location_assignment PIN_D21 -to ddr3_dq[34] +set_location_assignment PIN_J21 -to ddr3_dq[35] +set_location_assignment PIN_A21 -to ddr3_dq[36] +set_location_assignment PIN_G21 -to ddr3_dq[37] +set_location_assignment PIN_A22 -to ddr3_dq[38] +set_location_assignment PIN_C20 -to ddr3_dq[39] +set_location_assignment PIN_A23 -to ddr3_dq[40] +set_location_assignment PIN_E22 -to ddr3_dq[41] +set_location_assignment PIN_L22 -to ddr3_dq[42] +set_location_assignment PIN_C22 -to ddr3_dq[43] +set_location_assignment PIN_N22 -to ddr3_dq[44] +set_location_assignment PIN_F22 -to ddr3_dq[45] +set_location_assignment PIN_P22 -to ddr3_dq[46] +set_location_assignment PIN_J22 -to ddr3_dq[47] + +set_location_assignment PIN_D24 -to ddr3_dqs_p[6] +set_location_assignment PIN_E24 -to ddr3_dqs_n[6] +set_location_assignment PIN_A25 -to ddr3_dqs_p[7] +set_location_assignment PIN_B25 -to ddr3_dqs_n[7] +set_location_assignment PIN_J23 -to ddr3_dm[6] +set_location_assignment PIN_D25 -to ddr3_dm[7] +set_location_assignment PIN_C24 -to ddr3_dq[48] +set_location_assignment PIN_M23 -to ddr3_dq[49] +set_location_assignment PIN_B24 -to ddr3_dq[50] +set_location_assignment PIN_R23 -to ddr3_dq[51] +set_location_assignment PIN_G24 -to ddr3_dq[52] +set_location_assignment PIN_G23 -to ddr3_dq[53] +set_location_assignment PIN_F24 -to ddr3_dq[54] +set_location_assignment PIN_F23 -to ddr3_dq[55] +set_location_assignment PIN_R24 -to ddr3_dq[56] +set_location_assignment PIN_G25 -to ddr3_dq[57] +set_location_assignment PIN_T26 -to ddr3_dq[58] +set_location_assignment PIN_E25 -to ddr3_dq[59] +set_location_assignment PIN_N24 -to ddr3_dq[60] +set_location_assignment PIN_K24 -to ddr3_dq[61] +set_location_assignment PIN_T25 -to ddr3_dq[62] +set_location_assignment PIN_P24 -to ddr3_dq[63] + +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[0] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[1] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[2] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[3] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[4] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[5] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[6] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[7] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[8] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[9] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[10] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[11] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[12] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[13] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_ba[0] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_ba[1] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_ba[2] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_clk_p +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_clk_n +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_cke +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_cs_n +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_ras_n +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_cas_n +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_we_n +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_odt +set_instance_assignment -name IO_STANDARD "1.5 V" -to ddr3_reset_n +set_instance_assignment -name IO_STANDARD "1.5 V" -to ddr3_rzq + +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_p[0] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_n[0] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_p[1] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_n[1] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dm[0] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dm[1] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[0] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[1] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[2] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[3] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[4] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[5] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[6] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[7] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[8] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[9] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[10] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[11] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[12] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[13] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[14] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[15] + +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_p[2] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_n[2] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_p[3] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_n[3] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dm[2] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dm[3] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[16] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[17] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[18] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[19] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[20] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[21] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[22] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[23] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[24] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[25] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[26] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[27] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[28] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[29] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[30] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[31] + +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_p[4] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_n[4] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_p[5] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_n[5] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dm[4] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dm[5] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[32] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[33] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[34] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[35] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[36] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[37] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[38] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[39] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[40] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[41] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[42] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[43] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[44] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[45] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[46] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[47] + +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_p[6] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_n[6] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_p[7] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_n[7] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dm[6] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dm[7] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[48] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[49] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[50] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[51] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[52] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[53] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[54] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[55] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[56] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[57] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[58] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[59] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[60] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[61] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[62] +set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[63] + +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[0] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[1] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[2] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[3] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[4] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[5] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[6] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[7] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[8] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[9] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[10] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[11] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[12] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[13] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_ba[0] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_ba[1] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_ba[2] +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_cke +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_cs_n +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_ras_n +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_cas_n +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_we_n +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_reset_n +set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_odt + +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dm[0] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dm[1] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dq[0] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dq[1] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dq[2] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dq[3] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dq[4] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dq[5] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dq[6] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dq[7] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dq[8] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dq[9] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dq[10] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dq[11] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dq[12] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dq[13] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dq[14] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dq[15] -tag __ddr3x64_example_if0_p0 + +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dm[2] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dm[3] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dq[16] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dq[17] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dq[18] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dq[19] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dq[20] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dq[21] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dq[22] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dq[23] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dq[24] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dq[25] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dq[26] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dq[27] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dq[28] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dq[29] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dq[30] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dq[31] -tag __ddr3x64_example_if0_p0 + +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to ddr3_clk_p +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to ddr3_clk_n + +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[0] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[0] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[1] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[1] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[0] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[0] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[1] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[1] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dm[0] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dm[1] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[0] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[1] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[2] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[3] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[4] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[5] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[6] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[7] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[8] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[9] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[10] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[11] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[12] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[13] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[14] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[15] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[0] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[1] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[2] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[3] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[4] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[5] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[6] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[7] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[8] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[9] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[10] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[11] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[12] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[13] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[14] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[15] + +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[2] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[2] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[3] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[3] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[2] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[2] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[3] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[3] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dm[2] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dm[3] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[16] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[17] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[18] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[19] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[20] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[21] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[22] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[23] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[24] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[25] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[26] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[27] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[28] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[29] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[30] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[31] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[16] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[17] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[18] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[19] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[20] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[21] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[22] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[23] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[24] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[25] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[26] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[27] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[28] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[29] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[30] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[31] + +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[4] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[4] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[5] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[5] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[4] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[4] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[5] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[5] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dm[4] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dm[5] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[32] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[33] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[34] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[35] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[36] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[37] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[38] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[39] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[40] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[41] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[42] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[43] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[44] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[45] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[46] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[47] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[32] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[33] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[34] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[35] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[36] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[37] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[38] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[39] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[40] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[41] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[42] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[43] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[44] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[45] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[46] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[47] + +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[6] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[6] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[7] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[7] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[6] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[6] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[7] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[7] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dm[6] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dm[7] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[48] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[49] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[50] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[51] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[52] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[53] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[54] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[55] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[56] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[57] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[58] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[59] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[60] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[61] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[62] +set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[63] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[48] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[49] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[50] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[51] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[52] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[53] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[54] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[55] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[56] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[57] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[58] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[59] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[60] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[61] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[62] +set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[63] + +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[0] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[1] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[2] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[3] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[4] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[5] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[6] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[7] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[8] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[9] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[10] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[11] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[12] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[13] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_ba[0] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_ba[1] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_ba[2] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_clk_p +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_clk_n +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_cke +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_cs_n +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_ras_n +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_cas_n +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_we_n +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_reset_n +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_odt + +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_p[0] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_n[0] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_p[1] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_n[1] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dm[0] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dm[1] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[0] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[1] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[2] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[3] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[4] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[5] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[6] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[7] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[8] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[9] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[10] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[11] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[12] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[13] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[14] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[15] + +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_p[2] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_n[2] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_p[3] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_n[3] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dm[2] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dm[3] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[16] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[17] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[18] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[19] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[20] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[21] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[22] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[23] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[24] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[25] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[26] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[27] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[28] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[29] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[30] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[31] + +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_p[4] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_n[4] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_p[5] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_n[5] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dm[4] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dm[5] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[32] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[33] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[34] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[35] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[36] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[37] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[38] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[39] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[40] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[41] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[42] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[43] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[44] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[45] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[46] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[47] + +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_p[6] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_n[6] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_p[7] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_n[7] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dm[6] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dm[7] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[48] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[49] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[50] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[51] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[52] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[53] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[54] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[55] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[56] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[57] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[58] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[59] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[60] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[61] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[62] +set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[63] + +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dqs_p[0] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dqs_n[0] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dqs_p[1] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dqs_n[1] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dm[0] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dm[1] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[0] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[1] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[2] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[3] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[4] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[5] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[6] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[7] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[8] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[9] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[10] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[11] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[12] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[13] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[14] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[15] -tag __ddr3x64_example_if0_p0 + +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dqs_p[2] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dqs_n[2] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dqs_p[3] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dqs_n[3] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dm[2] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dm[3] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[16] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[17] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[18] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[19] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[20] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[21] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[22] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[23] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[24] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[25] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[26] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[27] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[28] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[29] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[30] -tag __ddr3x64_example_if0_p0 +set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[31] -tag __ddr3x64_example_if0_p0 + +set_instance_assignment -name ENABLE_BENEFICIAL_SKEW_OPTIMIZATION_FOR_NON_GLOBAL_CLOCKS ON -to i_fmcjesdadc1|sys_ddr3_cntrl + +set_instance_assignment -name GLOBAL_SIGNAL "DUAL-REGIONAL CLOCK" -to i_fmcjesdadc1|sys_ddr3_cntrl|pll0|pll_addr_cmd_clk +set_instance_assignment -name GLOBAL_SIGNAL "DUAL-REGIONAL CLOCK" -to i_fmcjesdadc1|sys_ddr3_cntrl|pll0|pll_avl_clk +set_instance_assignment -name GLOBAL_SIGNAL "DUAL-REGIONAL CLOCK" -to i_fmcjesdadc1|sys_ddr3_cntrl|pll0|pll_config_clk +set_instance_assignment -name GLOBAL_SIGNAL "GLOBAL CLOCK" -to i_fmcjesdadc1|sys_ddr3_cntrl|pll0|pll_afi_clk +set_instance_assignment -name GLOBAL_SIGNAL "GLOBAL CLOCK" -to i_fmcjesdadc1|sys_ddr3_cntrl|pll0|pll_hr_clk + +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uio_pads|dq_ddio[0].read_capture_clk_buffer +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uio_pads|dq_ddio[1].read_capture_clk_buffer +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uio_pads|dq_ddio[2].read_capture_clk_buffer +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uio_pads|dq_ddio[3].read_capture_clk_buffer +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uio_pads|dq_ddio[4].read_capture_clk_buffer +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uio_pads|dq_ddio[5].read_capture_clk_buffer +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uio_pads|dq_ddio[6].read_capture_clk_buffer +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uio_pads|dq_ddio[7].read_capture_clk_buffer +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_wraddress[0] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_wraddress[1] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_wraddress[2] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_wraddress[3] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_wraddress[4] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_wraddress[5] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_wraddress[6] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_wraddress[7] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_write_side[0] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_write_side[1] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_write_side[2] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_write_side[3] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_write_side[4] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_write_side[5] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_write_side[6] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_write_side[7] +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|ureset|phy_reset_mem_stable_n +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|ureset|phy_reset_n +set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|s0|sequencer_rw_mgr_inst|rw_mgr_inst|rw_mgr_core_inst|rw_soft_reset_n + +# ethernet interface + +set_location_assignment PIN_M14 -to eth_rx_clk +set_location_assignment PIN_N14 -to eth_rx_data[0] +set_location_assignment PIN_N15 -to eth_rx_data[1] +set_location_assignment PIN_P15 -to eth_rx_data[2] +set_location_assignment PIN_B9 -to eth_rx_data[3] +set_location_assignment PIN_C9 -to eth_rx_cntrl[4] +set_location_assignment PIN_K18 -to eth_tx_clk_out[5] +set_location_assignment PIN_L18 -to eth_tx_data[0] +set_location_assignment PIN_R11 -to eth_tx_data[1] +set_location_assignment PIN_T11 -to eth_tx_data[2] +set_location_assignment PIN_H9 -to eth_tx_data[3] +set_location_assignment PIN_J9 -to eth_tx_cntrl +set_location_assignment PIN_F7 -to eth_mdc +set_location_assignment PIN_G7 -to eth_mdio_i +set_location_assignment PIN_F9 -to eth_mdio_o +set_location_assignment PIN_G9 -to eth_mdio_t + +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_rx_clk +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_rx_data[0] +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_rx_data[1] +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_rx_data[2] +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_rx_data[3] +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_rx_cntrl[4] +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_tx_clk_out[5] +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_tx_data[0] +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_tx_data[1] +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_tx_data[2] +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_tx_data[3] +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_tx_cntrl +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_mdc +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_mdio_i +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_mdio_o +set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_mdio_t + +# leds + +set_location_assignment PIN_M19 -to led_grn[0] +set_location_assignment PIN_L19 -to led_grn[1] +set_location_assignment PIN_K19 -to led_grn[2] +set_location_assignment PIN_J19 -to led_grn[3] +set_location_assignment PIN_K20 -to led_grn[4] +set_location_assignment PIN_J20 -to led_grn[5] +set_location_assignment PIN_T20 -to led_grn[6] +set_location_assignment PIN_R20 -to led_grn[7] +set_location_assignment PIN_N20 -to led_red[0] +set_location_assignment PIN_C15 -to led_red[1] +set_location_assignment PIN_AL28 -to led_red[2] +set_location_assignment PIN_F11 -to led_red[3] +set_location_assignment PIN_AJ31 -to led_red[4] +set_location_assignment PIN_AN34 -to led_red[5] +set_location_assignment PIN_AJ34 -to led_red[6] +set_location_assignment PIN_AK33 -to led_red[7] +set_location_assignment PIN_D6 -to push_buttons[0] +set_location_assignment PIN_C6 -to push_buttons[1] +set_location_assignment PIN_K7 -to push_buttons[2] +set_location_assignment PIN_C8 -to dip_switches[0] +set_location_assignment PIN_D8 -to dip_switches[1] +set_location_assignment PIN_E7 -to dip_switches[2] +set_location_assignment PIN_E6 -to dip_switches[3] +set_location_assignment PIN_G8 -to dip_switches[4] +set_location_assignment PIN_F8 -to dip_switches[5] +set_location_assignment PIN_D15 -to dip_switches[6] +set_location_assignment PIN_G11 -to dip_switches[7] + +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_grn[0] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_grn[1] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_grn[2] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_grn[3] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_grn[4] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_grn[5] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_grn[6] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_grn[7] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_red[0] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_red[1] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_red[2] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_red[3] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_red[4] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_red[5] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_red[6] +set_instance_assignment -name IO_STANDARD "2.5 V" -to led_red[7] +set_instance_assignment -name IO_STANDARD "2.5 V" -to push_buttons[0] +set_instance_assignment -name IO_STANDARD "2.5 V" -to push_buttons[1] +set_instance_assignment -name IO_STANDARD "2.5 V" -to push_buttons[2] +set_instance_assignment -name IO_STANDARD "2.5 V" -to dip_switches[0] +set_instance_assignment -name IO_STANDARD "2.5 V" -to dip_switches[1] +set_instance_assignment -name IO_STANDARD "2.5 V" -to dip_switches[2] +set_instance_assignment -name IO_STANDARD "2.5 V" -to dip_switches[3] +set_instance_assignment -name IO_STANDARD "2.5 V" -to dip_switches[4] +set_instance_assignment -name IO_STANDARD "2.5 V" -to dip_switches[5] +set_instance_assignment -name IO_STANDARD "2.5 V" -to dip_switches[6] +set_instance_assignment -name IO_STANDARD "2.5 V" -to dip_switches[7] + + +# globals + +set_global_assignment -name SYNCHRONIZER_IDENTIFICATION AUTO +set_global_assignment -name ENABLE_ADVANCED_IO_TIMING ON +set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER ON +set_global_assignment -name TIMEQUEST_REPORT_SCRIPT fmcjesdadc1_sta.tcl +set_global_assignment -name ON_CHIP_BITSTREAM_DECOMPRESSION OFF + +project_close + +################################################################################ +################################################################################ diff --git a/projects/fmcjesdadc1/a5gt/system_timing.tcl b/projects/fmcjesdadc1/a5gt/system_timing.tcl new file mode 100755 index 000000000..5209aa9e9 --- /dev/null +++ b/projects/fmcjesdadc1/a5gt/system_timing.tcl @@ -0,0 +1,23 @@ +################################################################################ +################################################################################ + +package require ::quartus::flow +project_open fmcjesdadc1 +execute_module -tool fit + +create_timing_netlist +read_sdc fmcjesdadc1.sdc +update_timing_netlist + +report_timing -detail summary -npaths 20 -file timing_summary.rpt +report_timing -detail path_only -npaths 20 -file timing.rpt +report_path -npaths 20 -file timing_paths.rpt +report_sdc -ignored -file timing_sdc.rpt +report_clocks -file timing_clocks.rpt +report_ucp -file timing_ucp.rpt + +check_timing -file timing_design.rpt +create_timing_summary -file timing_design_summary.rpt + +################################################################################ +################################################################################ diff --git a/projects/fmcjesdadc1/a5gt/system_top.v b/projects/fmcjesdadc1/a5gt/system_top.v new file mode 100755 index 000000000..bf4f8107b --- /dev/null +++ b/projects/fmcjesdadc1/a5gt/system_top.v @@ -0,0 +1,372 @@ +// *************************************************************************** +// *************************************************************************** +// Copyright 2011(c) Analog Devices, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// - Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the +// distribution. +// - Neither the name of Analog Devices, Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// - The use of this software may or may not infringe the patent rights +// of one or more patent holders. This license does not release you +// from the requirement that you obtain separate licenses from these +// patent holders to use this software. +// - Use of the software either in source or binary form, must be run +// on or directly connected to an Analog Devices Inc. component. +// +// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +// INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE ARE DISCLAIMED. +// +// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY +// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// *************************************************************************** +// *************************************************************************** + +`timescale 1ns/100ps + +module fmcjesdadc1_top ( + + // clock and resets + + sys_clk, + sys_resetn, + + // ddr3 + + ddr3_a, + ddr3_ba, + ddr3_clk_p, + ddr3_clk_n, + ddr3_cke, + ddr3_cs_n, + ddr3_dm, + ddr3_ras_n, + ddr3_cas_n, + ddr3_we_n, + ddr3_reset_n, + ddr3_dq, + ddr3_dqs_p, + ddr3_dqs_n, + ddr3_odt, + ddr3_rzq, + + // ethernet + + eth_rx_clk, + eth_rx_data, + eth_rx_cntrl, + eth_tx_clk_out, + eth_tx_data, + eth_tx_cntrl, + eth_mdc, + eth_mdio_i, + eth_mdio_o, + eth_mdio_t, + + // board gpio + + led_grn, + led_red, + push_buttons, + dip_switches, + + // lane interface + + ref_clk, + rx_data, + rx_sync, + rx_sysref, + + // spi + + spi_csn, + spi_clk, + spi_sdio); + + // clock and resets + + input sys_clk; + input sys_resetn; + + // ddr3 + + output [ 13:0] ddr3_a; + output [ 2:0] ddr3_ba; + output ddr3_clk_p; + output ddr3_clk_n; + output ddr3_cke; + output ddr3_cs_n; + output [ 7:0] ddr3_dm; + output ddr3_ras_n; + output ddr3_cas_n; + output ddr3_we_n; + output ddr3_reset_n; + inout [ 63:0] ddr3_dq; + inout [ 7:0] ddr3_dqs_p; + inout [ 7:0] ddr3_dqs_n; + output ddr3_odt; + input ddr3_rzq; + + // ethernet + + input eth_rx_clk; + input [ 3:0] eth_rx_data; + input eth_rx_cntrl; + output eth_tx_clk_out; + output [ 3:0] eth_tx_data; + output eth_tx_cntrl; + output eth_mdc; + input eth_mdio_i; + output eth_mdio_o; + output eth_mdio_t; + + // board gpio + + output [ 7:0] led_grn; + output [ 7:0] led_red; + input [ 2:0] push_buttons; + input [ 7:0] dip_switches; + + // lane interface + + input ref_clk; + input [ 3:0] rx_data; + output rx_sync; + output rx_sysref; + + // spi + + output spi_csn; + output spi_clk; + inout spi_sdio; + + // internal registers + + reg rx_sysref_m1 = 'd0; + reg rx_sysref_m2 = 'd0; + reg rx_sysref_m3 = 'd0; + reg rx_sysref = 'd0; + + // internal clocks and resets + + wire sys_125m_clk; + wire sys_25m_clk; + wire sys_2m5_clk; + wire eth_tx_clk; + wire rx_clk; + wire adc0_clk; + wire adc1_clk; + + // internal signals + + wire sys_pll_locked_s; + wire eth_tx_reset_s; + wire eth_tx_mode_1g_s; + wire eth_tx_mode_10m_100m_n_s; + wire spi_csn_s; + wire spi_clk_s; + wire spi_mosi_s; + wire spi_miso_s; + wire [ 63:0] adc0_ddata_s; + wire adc0_dsync_s; + wire adc0_dovf_s; + wire adc0_dwr_s; + wire adc0_mon_valid_s; + wire [119:0] adc0_mon_data_s; + wire [ 63:0] adc1_ddata_s; + wire adc1_dsync_s; + wire adc1_dovf_s; + wire adc1_dwr_s; + wire adc1_mon_valid_s; + wire [119:0] adc1_mon_data_s; + wire [ 3:0] rx_ip_sof_s; + wire [127:0] rx_ip_data_s; + wire [127:0] rx_data_s; + wire rx_sw_rstn_s; + wire rx_sysref_s; + wire rx_err_s; + wire rx_ready_s; + wire [ 3:0] rx_rst_state_s; + wire rx_lane_aligned_s; + wire [ 3:0] rx_analog_reset_s; + wire [ 3:0] rx_digital_reset_s; + wire [ 3:0] rx_cdr_locked_s; + wire [ 3:0] rx_cal_busy_s; + wire rx_pll_locked_s; + wire [ 15:0] rx_xcvr_status_s; + + // ethernet transmit clock + + assign eth_tx_clk = (eth_tx_mode_1g_s == 1'b1) ? sys_125m_clk : + (eth_tx_mode_10m_100m_n_s == 1'b0) ? sys_25m_clk : sys_2m5_clk; + + altddio_out #(.width(1)) i_eth_tx_clk_out ( + .aset (1'b0), + .sset (1'b0), + .sclr (1'b0), + .oe (1'b1), + .oe_out (), + .datain_h (1'b1), + .datain_l (1'b0), + .outclocken (1'b1), + .aclr (eth_tx_reset_s), + .outclock (eth_tx_clk), + .dataout (eth_tx_clk_out)); + + assign eth_tx_reset_s = ~sys_pll_locked_s; + + always @(posedge rx_clk) begin + rx_sysref_m1 <= rx_sysref_s; + rx_sysref_m2 <= rx_sysref_m1; + rx_sysref_m3 <= rx_sysref_m2; + rx_sysref <= rx_sysref_m2 & ~rx_sysref_m3; + end + + genvar n; + generate + for (n = 0; n < 4; n = n + 1) begin: g_align_1 + ad_jesd_align i_jesd_align ( + .rx_clk (rx_clk), + .rx_sof (rx_ip_sof_s), + .rx_ip_data (rx_ip_data_s[n*32+31:n*32]), + .rx_data (rx_data_s[n*32+31:n*32])); + end + endgenerate + + assign rx_xcvr_status_s[15:14] = 2'd0; + assign rx_xcvr_status_s[13:13] = rx_ready_s; + assign rx_xcvr_status_s[12:12] = rx_pll_locked_s; + assign rx_xcvr_status_s[11: 8] = rx_rst_state_s; + assign rx_xcvr_status_s[ 7: 4] = rx_cdr_locked_s; + assign rx_xcvr_status_s[ 3: 0] = rx_cal_busy_s; + + ad_xcvr_rx_rst #(.NUM_OF_LANES (4)) i_xcvr_rx_rst ( + .rx_clk (rx_clk), + .rx_rstn (sys_resetn), + .rx_sw_rstn (rx_sw_rstn_s), + .rx_pll_locked (rx_pll_locked_s), + .rx_cal_busy (rx_cal_busy_s), + .rx_cdr_locked (rx_cdr_locked_s), + .rx_analog_reset (rx_analog_reset_s), + .rx_digital_reset (rx_digital_reset_s), + .rx_ready (rx_ready_s), + .rx_rst_state (rx_rst_state_s)); + + fmcjesdadc1_spi i_fmcjesdadc1_spi ( + .sys_clk (sys_clk), + .spi4_csn (spi_csn_s), + .spi4_clk (spi_clk_s), + .spi4_mosi (spi_mosi_s), + .spi4_miso (spi_miso_s), + .spi3_csn (spi_csn), + .spi3_clk (spi_clk), + .spi3_sdio (spi_sdio)); + + fmcjesdadc1 i_fmcjesdadc1 ( + .sys_clk_clk (sys_clk), + .sys_reset_reset_n (sys_resetn), + .sys_125m_clk_clk (sys_125m_clk), + .sys_25m_clk_clk (sys_25m_clk), + .sys_2m5_clk_clk (sys_2m5_clk), + .sys_pll_locked_export (sys_pll_locked_s), + .sys_ddr3_phy_mem_a (ddr3_a), + .sys_ddr3_phy_mem_ba (ddr3_ba), + .sys_ddr3_phy_mem_ck (ddr3_clk_p), + .sys_ddr3_phy_mem_ck_n (ddr3_clk_n), + .sys_ddr3_phy_mem_cke (ddr3_cke), + .sys_ddr3_phy_mem_cs_n (ddr3_cs_n), + .sys_ddr3_phy_mem_dm (ddr3_dm), + .sys_ddr3_phy_mem_ras_n (ddr3_ras_n), + .sys_ddr3_phy_mem_cas_n (ddr3_cas_n), + .sys_ddr3_phy_mem_we_n (ddr3_we_n), + .sys_ddr3_phy_mem_reset_n (ddr3_reset_n), + .sys_ddr3_phy_mem_dq (ddr3_dq), + .sys_ddr3_phy_mem_dqs (ddr3_dqs_p), + .sys_ddr3_phy_mem_dqs_n (ddr3_dqs_n), + .sys_ddr3_phy_mem_odt (ddr3_odt), + .sys_ddr3_oct_rzqin (ddr3_rzq), + .sys_ethernet_tx_clk_clk (eth_tx_clk), + .sys_ethernet_rx_clk_clk (eth_rx_clk), + .sys_ethernet_status_set_10 (), + .sys_ethernet_status_set_1000 (), + .sys_ethernet_status_eth_mode (eth_tx_mode_1g_s), + .sys_ethernet_status_ena_10 (eth_tx_mode_10m_100m_n_s), + .sys_ethernet_rgmii_rgmii_in (eth_rx_data), + .sys_ethernet_rgmii_rgmii_out (eth_tx_data), + .sys_ethernet_rgmii_rx_control (eth_rx_cntrl), + .sys_ethernet_rgmii_tx_control (eth_tx_cntrl), + .sys_ethernet_mdio_mdc (eth_mdc), + .sys_ethernet_mdio_mdio_in (eth_mdio_i), + .sys_ethernet_mdio_mdio_out (eth_mdio_o), + .sys_ethernet_mdio_mdio_oen (eth_mdio_t), + .sys_gpio_in_port ({rx_xcvr_status_s, 5'd0, push_buttons, dip_switches}), + .sys_gpio_out_port ({14'd0, rx_sw_rstn_s, rx_sysref_s, led_grn, led_red}), + .sys_spi_MISO (spi_miso_s), + .sys_spi_MOSI (spi_mosi_s), + .sys_spi_SCLK (spi_clk_s), + .sys_spi_SS_n (spi_csn_s), + .axi_ad9250_0_xcvr_clk_clk (rx_clk), + .axi_ad9250_0_xcvr_data_data (rx_data_s[63:0]), + .axi_ad9250_0_adc_clock_clk (adc0_clk), + .axi_ad9250_0_adc_dma_if_ddata (adc0_ddata_s), + .axi_ad9250_0_adc_dma_if_dsync (adc0_dsync_s), + .axi_ad9250_0_adc_dma_if_dovf (adc0_dovf_s), + .axi_ad9250_0_adc_dma_if_dunf (1'b0), + .axi_ad9250_0_adc_dma_if_dwr (adc0_dwr_s), + .axi_ad9250_0_adc_mon_if_valid (adc0_mon_valid_s), + .axi_ad9250_0_adc_mon_if_data (adc0_mon_data_s), + .axi_dmac_0_fifo_wr_clock_clk (adc0_clk), + .axi_dmac_0_fifo_wr_if_ovf (adc0_dovf_s), + .axi_dmac_0_fifo_wr_if_wren (adc0_dwr_s), + .axi_dmac_0_fifo_wr_if_data (adc0_ddata_s), + .axi_dmac_0_fifo_wr_if_sync (adc0_dsync_s), + .axi_ad9250_1_xcvr_clk_clk (rx_clk), + .axi_ad9250_1_xcvr_data_data (rx_data_s[127:64]), + .axi_ad9250_1_adc_clock_clk (adc1_clk), + .axi_ad9250_1_adc_dma_if_ddata (adc1_ddata_s), + .axi_ad9250_1_adc_dma_if_dsync (adc1_dsync_s), + .axi_ad9250_1_adc_dma_if_dovf (adc1_dovf_s), + .axi_ad9250_1_adc_dma_if_dunf (1'b0), + .axi_ad9250_1_adc_dma_if_dwr (adc1_dwr_s), + .axi_ad9250_1_adc_mon_if_valid (adc1_mon_valid_s), + .axi_ad9250_1_adc_mon_if_data (adc1_mon_data_s), + .axi_dmac_1_fifo_wr_clock_clk (adc1_clk), + .axi_dmac_1_fifo_wr_if_ovf (adc1_dovf_s), + .axi_dmac_1_fifo_wr_if_wren (adc1_dwr_s), + .axi_dmac_1_fifo_wr_if_data (adc1_ddata_s), + .axi_dmac_1_fifo_wr_if_sync (adc1_dsync_s), + .sys_jesd204b_s1_rx_link_data (rx_ip_data_s), + .sys_jesd204b_s1_rx_link_valid (), + .sys_jesd204b_s1_rx_link_ready (1'b1), + .sys_jesd204b_s1_lane_aligned_all_export (rx_lane_aligned_s), + .sys_jesd204b_s1_sysref_export (rx_sysref), + .sys_jesd204b_s1_rx_ferr_export (rx_err_s), + .sys_jesd204b_s1_lane_aligned_export (rx_lane_aligned_s), + .sys_jesd204b_s1_sync_n_export (rx_sync), + .sys_jesd204b_s1_rx_sof_export (rx_ip_sof_s), + .sys_jesd204b_s1_rx_xcvr_data_rx_serial_data (rx_data), + .sys_jesd204b_s1_rx_analogreset_rx_analogreset (rx_analog_reset_s), + .sys_jesd204b_s1_rx_digitalreset_rx_digitalreset (rx_digital_reset_s), + .sys_jesd204b_s1_locked_export (rx_cdr_locked_s), + .sys_jesd204b_s1_rx_cal_busy_export (rx_cal_busy_s), + .sys_jesd204b_s1_ref_clk_clk (ref_clk), + .sys_jesd204b_s1_rx_clk_clk (rx_clk), + .sys_jesd204b_s1_pll_locked_export (rx_pll_locked_s)); + +endmodule + +// *************************************************************************** +// *************************************************************************** diff --git a/projects/fmcjesdadc1/common/fmcjesdadc1_spi.v b/projects/fmcjesdadc1/common/fmcjesdadc1_spi.v new file mode 100644 index 000000000..4000907b8 --- /dev/null +++ b/projects/fmcjesdadc1/common/fmcjesdadc1_spi.v @@ -0,0 +1,150 @@ +// *************************************************************************** +// *************************************************************************** +// Copyright 2011(c) Analog Devices, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// - Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the +// distribution. +// - Neither the name of Analog Devices, Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// - The use of this software may or may not infringe the patent rights +// of one or more patent holders. This license does not release you +// from the requirement that you obtain separate licenses from these +// patent holders to use this software. +// - Use of the software either in source or binary form, must be run +// on or directly connected to an Analog Devices Inc. component. +// +// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +// INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE ARE DISCLAIMED. +// +// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY +// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** + +`timescale 1ns/100ps + +module fmcjesdadc1_spi ( + + // master clock + + sys_clk, + + // 4-wire spi interface + + spi4_csn, + spi4_clk, + spi4_mosi, + spi4_miso, + + // 3-wire spi interface + + spi3_csn, + spi3_clk, + spi3_sdio); + + // parameters + + localparam FMC27X_CPLD = 8'h00; + localparam FMC27X_AD9517 = 8'h84; + localparam FMC27X_AD9250_0 = 8'h80; + localparam FMC27X_AD9250_1 = 8'h81; + localparam FMC27X_AD9129_0 = 8'h82; + localparam FMC27X_AD9129_1 = 8'h83; + + // master clock + + input sys_clk; + + // 4-wire spi interface + + input spi4_csn; + input spi4_clk; + input spi4_mosi; + output spi4_miso; + + // 3-wire spi interface + + output spi3_csn; + output spi3_clk; + inout spi3_sdio; + + // internal registers + + reg spi4_clk_d = 'd0; + reg spi4_csn_d = 'd0; + reg [ 5:0] spi4_clkcnt = 'd0; + reg [ 6:0] spi4_bitcnt = 'd0; + reg [ 7:0] spi4_devid = 'd0; + reg spi4_rwn = 'd0; + reg spi3_enable = 'd0; + + // pass through most of the stuff (no need to change clock or miso or mosi) + + assign spi4_miso = spi3_sdio; + assign spi3_csn = spi4_csn; + assign spi3_clk = spi4_clk; + assign spi3_sdio = ((spi4_csn == 1'b0) && (spi3_enable == 1'b1)) ? 1'bz : spi4_mosi; + + // the spi4 format is a preamble that selects a particular device, so all we need + // to do is collect the first 8 bits, then control the tristate based on the + // device's address and data widths. the details of the spi formats can be found + // in the data sheet of the devices. + + always @(posedge sys_clk) begin + spi4_clk_d <= spi4_clk; + spi4_csn_d <= spi4_csn; + if ((spi4_clk == 1'b1) && (spi4_clk_d == 1'b0)) begin + spi4_clkcnt <= 6'd0; + end else begin + spi4_clkcnt <= spi4_clkcnt + 1'b1; + end + if ((spi4_csn == 1'b1) && (spi4_csn_d == 1'b0)) begin + spi4_bitcnt <= 7'd0; + spi4_devid <= 8'd0; + spi4_rwn <= 1'd0; + end else if ((spi4_clk == 1'b1) && (spi4_clk_d == 1'b0)) begin + spi4_bitcnt <= spi4_bitcnt + 1'b1; + if (spi4_bitcnt < 8) begin + spi4_devid <= {spi4_devid[6:0], spi4_mosi}; + end + if (spi4_bitcnt == 8) begin + spi4_rwn <= spi4_mosi; + end + end + if (spi4_csn == 1'b0) begin + if ((spi4_devid == FMC27X_CPLD) || (spi4_devid == FMC27X_AD9129_0) || + (spi4_devid == FMC27X_AD9129_1)) begin + if ((spi4_bitcnt == 16) && (spi4_clkcnt == 8)) begin + spi3_enable <= spi4_rwn; + end + end else if ((spi4_devid == FMC27X_AD9517) || (spi4_devid == FMC27X_AD9250_0) || + (spi4_devid == FMC27X_AD9250_1)) begin + if ((spi4_bitcnt == 24) && (spi4_clkcnt == 8)) begin + spi3_enable <= spi4_rwn; + end + end + end else begin + spi3_enable <= 1'b0; + end + end + +endmodule + +// *************************************************************************** +// *************************************************************************** From 04df908fbfd6bf0bcc775d93240b9ee35042f17b Mon Sep 17 00:00:00 2001 From: Rejeesh Kutty Date: Tue, 1 Apr 2014 12:01:57 -0400 Subject: [PATCH 04/18] altera-fmcjesdadc1 initial checkin --- projects/fmcjesdadc1/a5gt/system_bd.qsys | 2 +- projects/fmcjesdadc1/a5gt/system_constr.sdc | 16 +- projects/fmcjesdadc1/a5gt/system_project.tcl | 802 +------------------ projects/fmcjesdadc1/a5gt/system_timing.tcl | 18 +- projects/fmcjesdadc1/a5gt/system_top.v | 4 +- 5 files changed, 19 insertions(+), 823 deletions(-) diff --git a/projects/fmcjesdadc1/a5gt/system_bd.qsys b/projects/fmcjesdadc1/a5gt/system_bd.qsys index d1b19629f..21571d98d 100755 --- a/projects/fmcjesdadc1/a5gt/system_bd.qsys +++ b/projects/fmcjesdadc1/a5gt/system_bd.qsys @@ -528,7 +528,7 @@ - + diff --git a/projects/fmcjesdadc1/a5gt/system_constr.sdc b/projects/fmcjesdadc1/a5gt/system_constr.sdc index 5a9ce1ef8..2d5cd6c5d 100755 --- a/projects/fmcjesdadc1/a5gt/system_constr.sdc +++ b/projects/fmcjesdadc1/a5gt/system_constr.sdc @@ -1,5 +1,3 @@ -################################################################################ -################################################################################ create_clock -period "10.000 ns" -name n_clk_100m [get_ports {sys_clk}] create_clock -period "4.000 ns" -name n_clk_250m [get_ports {ref_clk}] @@ -9,12 +7,12 @@ create_clock -period "8.000 ns" -name n_eth_tx_clk_125m [get_nets {eth_tx_clk}] derive_pll_clocks derive_clock_uncertainty -set clk_100m [get_clocks {i_fmcjesdadc1|sys_pll|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] -set clk_166m [get_clocks {i_fmcjesdadc1|sys_pll|altera_pll_i|general[1].gpll~PLL_OUTPUT_COUNTER|divclk}] -set clk_125m [get_clocks {i_fmcjesdadc1|sys_pll|altera_pll_i|general[2].gpll~PLL_OUTPUT_COUNTER|divclk}] -set clk_25m [get_clocks {i_fmcjesdadc1|sys_pll|altera_pll_i|general[3].gpll~PLL_OUTPUT_COUNTER|divclk}] -set clk_2m5 [get_clocks {i_fmcjesdadc1|sys_pll|altera_pll_i|general[4].gpll~PLL_OUTPUT_COUNTER|divclk}] -set clk_rxlink [get_clocks {i_fmcjesdadc1|sys_jesd204b_s1_pll|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] +set clk_100m [get_clocks {i_system|sys_pll|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] +set clk_166m [get_clocks {i_system|sys_pll|altera_pll_i|general[1].gpll~PLL_OUTPUT_COUNTER|divclk}] +set clk_125m [get_clocks {i_system|sys_pll|altera_pll_i|general[2].gpll~PLL_OUTPUT_COUNTER|divclk}] +set clk_25m [get_clocks {i_system|sys_pll|altera_pll_i|general[3].gpll~PLL_OUTPUT_COUNTER|divclk}] +set clk_2m5 [get_clocks {i_system|sys_pll|altera_pll_i|general[4].gpll~PLL_OUTPUT_COUNTER|divclk}] +set clk_rxlink [get_clocks {i_system|sys_jesd204b_s1_pll|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] set_false_path -from {sys_resetn} -to * set_false_path -from $clk_100m -to $clk_166m @@ -31,6 +29,4 @@ set_false_path -from $clk_25m -to $clk_2m5 set_false_path -from $clk_2m5 -to $clk_125m set_false_path -from $clk_2m5 -to $clk_25m -################################################################################ -################################################################################ diff --git a/projects/fmcjesdadc1/a5gt/system_project.tcl b/projects/fmcjesdadc1/a5gt/system_project.tcl index 2f33f1e1d..3985df9f5 100755 --- a/projects/fmcjesdadc1/a5gt/system_project.tcl +++ b/projects/fmcjesdadc1/a5gt/system_project.tcl @@ -1,28 +1,18 @@ -################################################################################ -################################################################################ source ../../scripts/adi_env.tcl -project_new fmcjesdadc1 -overwrite +project_new fmcjesdadc1_a5gt -overwrite set_global_assignment -name FAMILY "Arria V" set_global_assignment -name DEVICE 5AGTFD7K3F40I5 -set_global_assignment -name TOP_LEVEL_ENTITY fmcjesdadc1_top -set_global_assignment -name SDC_FILE fmcjesdadc1.sdc -set_global_assignment -name QIP_FILE fmcjesdadc1/synthesis/fmcjesdadc1.qip +set_global_assignment -name TOP_LEVEL_ENTITY system_top +set_global_assignment -name SDC_FILE system_constr.sdc +set_global_assignment -name QSYS_FILE system_bd.qsys set_global_assignment -name VERILOG_FILE $ad_hdl_dir/library/common/altera/ad_jesd_align.v set_global_assignment -name VERILOG_FILE $ad_hdl_dir/library/common/altera/ad_xcvr_rx_rst.v set_global_assignment -name VERILOG_FILE ../common/fmcjesdadc1_spi.v -set_global_assignment -name VERILOG_FILE fmcjesdadc1_top.v +set_global_assignment -name VERILOG_FILE system_top.v -# clocks and resets - -set_location_assignment PIN_C34 -to sys_clk -set_location_assignment PIN_D34 -to "sys_clk(n)" -set_instance_assignment -name IO_STANDARD LVDS -to sys_clk -set_instance_assignment -name INPUT_TERMINATION DIFFERENTIAL -to sys_clk -disable - -set_location_assignment PIN_L6 -to sys_resetn -set_instance_assignment -name IO_STANDARD "2.5 V" -to sys_resetn +source $ad_hdl_dir/projects/common/a5gt/a5gt_system_assign.tcl # reference clock @@ -69,782 +59,6 @@ set_instance_assignment -name IO_STANDARD "2.5 V" -to spi_csn set_instance_assignment -name IO_STANDARD "2.5 V" -to spi_clk set_instance_assignment -name IO_STANDARD "2.5 V" -to spi_sdio -# ddr3 - -set_location_assignment PIN_B31 -to ddr3_a[0] -set_location_assignment PIN_A30 -to ddr3_a[1] -set_location_assignment PIN_A31 -to ddr3_a[2] -set_location_assignment PIN_A32 -to ddr3_a[3] -set_location_assignment PIN_A33 -to ddr3_a[4] -set_location_assignment PIN_B33 -to ddr3_a[5] -set_location_assignment PIN_H31 -to ddr3_a[6] -set_location_assignment PIN_J31 -to ddr3_a[7] -set_location_assignment PIN_C31 -to ddr3_a[8] -set_location_assignment PIN_D31 -to ddr3_a[9] -set_location_assignment PIN_C32 -to ddr3_a[10] -set_location_assignment PIN_D32 -to ddr3_a[11] -set_location_assignment PIN_N31 -to ddr3_a[12] -set_location_assignment PIN_P31 -to ddr3_a[13] -set_location_assignment PIN_M32 -to ddr3_ba[0] -set_location_assignment PIN_N32 -to ddr3_ba[1] -set_location_assignment PIN_J34 -to ddr3_ba[2] -set_location_assignment PIN_B30 -to ddr3_clk_p -set_location_assignment PIN_C30 -to ddr3_clk_n -set_location_assignment PIN_E31 -to ddr3_cke -set_location_assignment PIN_L34 -to ddr3_cs_n -set_location_assignment PIN_K34 -to ddr3_ras_n -set_location_assignment PIN_L33 -to ddr3_cas_n -set_location_assignment PIN_M33 -to ddr3_we_n -set_location_assignment PIN_G30 -to ddr3_reset_n -set_location_assignment PIN_L31 -to ddr3_odt -set_location_assignment PIN_F33 -to ddr3_rzq - -set_location_assignment PIN_N30 -to ddr3_dqs_p[0] -set_location_assignment PIN_P30 -to ddr3_dqs_n[0] -set_location_assignment PIN_R29 -to ddr3_dqs_p[1] -set_location_assignment PIN_T29 -to ddr3_dqs_n[1] -set_location_assignment PIN_J30 -to ddr3_dm[0] -set_location_assignment PIN_J29 -to ddr3_dm[1] -set_location_assignment PIN_B28 -to ddr3_dq[0] -set_location_assignment PIN_C29 -to ddr3_dq[1] -set_location_assignment PIN_R30 -to ddr3_dq[2] -set_location_assignment PIN_A29 -to ddr3_dq[3] -set_location_assignment PIN_A28 -to ddr3_dq[4] -set_location_assignment PIN_L30 -to ddr3_dq[5] -set_location_assignment PIN_D30 -to ddr3_dq[6] -set_location_assignment PIN_D29 -to ddr3_dq[7] -set_location_assignment PIN_L28 -to ddr3_dq[8] -set_location_assignment PIN_M28 -to ddr3_dq[9] -set_location_assignment PIN_H28 -to ddr3_dq[10] -set_location_assignment PIN_C28 -to ddr3_dq[11] -set_location_assignment PIN_D28 -to ddr3_dq[12] -set_location_assignment PIN_F28 -to ddr3_dq[13] -set_location_assignment PIN_M29 -to ddr3_dq[14] -set_location_assignment PIN_N29 -to ddr3_dq[15] - -set_location_assignment PIN_R28 -to ddr3_dqs_p[2] -set_location_assignment PIN_T28 -to ddr3_dqs_n[2] -set_location_assignment PIN_M26 -to ddr3_dqs_p[3] -set_location_assignment PIN_N26 -to ddr3_dqs_n[3] -set_location_assignment PIN_K27 -to ddr3_dm[2] -set_location_assignment PIN_J26 -to ddr3_dm[3] -set_location_assignment PIN_P27 -to ddr3_dq[16] -set_location_assignment PIN_R27 -to ddr3_dq[17] -set_location_assignment PIN_H27 -to ddr3_dq[18] -set_location_assignment PIN_B27 -to ddr3_dq[19] -set_location_assignment PIN_C27 -to ddr3_dq[20] -set_location_assignment PIN_E27 -to ddr3_dq[21] -set_location_assignment PIN_M27 -to ddr3_dq[22] -set_location_assignment PIN_N27 -to ddr3_dq[23] -set_location_assignment PIN_C26 -to ddr3_dq[24] -set_location_assignment PIN_D26 -to ddr3_dq[25] -set_location_assignment PIN_K25 -to ddr3_dq[26] -set_location_assignment PIN_R26 -to ddr3_dq[27] -set_location_assignment PIN_T27 -to ddr3_dq[28] -set_location_assignment PIN_A26 -to ddr3_dq[29] -set_location_assignment PIN_F26 -to ddr3_dq[30] -set_location_assignment PIN_G26 -to ddr3_dq[31] - -set_location_assignment PIN_A20 -to ddr3_dqs_p[4] -set_location_assignment PIN_B21 -to ddr3_dqs_n[4] -set_location_assignment PIN_C23 -to ddr3_dqs_p[5] -set_location_assignment PIN_D23 -to ddr3_dqs_n[5] -set_location_assignment PIN_M21 -to ddr3_dm[4] -set_location_assignment PIN_B22 -to ddr3_dm[5] -set_location_assignment PIN_D20 -to ddr3_dq[32] -set_location_assignment PIN_H21 -to ddr3_dq[33] -set_location_assignment PIN_D21 -to ddr3_dq[34] -set_location_assignment PIN_J21 -to ddr3_dq[35] -set_location_assignment PIN_A21 -to ddr3_dq[36] -set_location_assignment PIN_G21 -to ddr3_dq[37] -set_location_assignment PIN_A22 -to ddr3_dq[38] -set_location_assignment PIN_C20 -to ddr3_dq[39] -set_location_assignment PIN_A23 -to ddr3_dq[40] -set_location_assignment PIN_E22 -to ddr3_dq[41] -set_location_assignment PIN_L22 -to ddr3_dq[42] -set_location_assignment PIN_C22 -to ddr3_dq[43] -set_location_assignment PIN_N22 -to ddr3_dq[44] -set_location_assignment PIN_F22 -to ddr3_dq[45] -set_location_assignment PIN_P22 -to ddr3_dq[46] -set_location_assignment PIN_J22 -to ddr3_dq[47] - -set_location_assignment PIN_D24 -to ddr3_dqs_p[6] -set_location_assignment PIN_E24 -to ddr3_dqs_n[6] -set_location_assignment PIN_A25 -to ddr3_dqs_p[7] -set_location_assignment PIN_B25 -to ddr3_dqs_n[7] -set_location_assignment PIN_J23 -to ddr3_dm[6] -set_location_assignment PIN_D25 -to ddr3_dm[7] -set_location_assignment PIN_C24 -to ddr3_dq[48] -set_location_assignment PIN_M23 -to ddr3_dq[49] -set_location_assignment PIN_B24 -to ddr3_dq[50] -set_location_assignment PIN_R23 -to ddr3_dq[51] -set_location_assignment PIN_G24 -to ddr3_dq[52] -set_location_assignment PIN_G23 -to ddr3_dq[53] -set_location_assignment PIN_F24 -to ddr3_dq[54] -set_location_assignment PIN_F23 -to ddr3_dq[55] -set_location_assignment PIN_R24 -to ddr3_dq[56] -set_location_assignment PIN_G25 -to ddr3_dq[57] -set_location_assignment PIN_T26 -to ddr3_dq[58] -set_location_assignment PIN_E25 -to ddr3_dq[59] -set_location_assignment PIN_N24 -to ddr3_dq[60] -set_location_assignment PIN_K24 -to ddr3_dq[61] -set_location_assignment PIN_T25 -to ddr3_dq[62] -set_location_assignment PIN_P24 -to ddr3_dq[63] - -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[0] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[1] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[2] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[3] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[4] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[5] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[6] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[7] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[8] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[9] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[10] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[11] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[12] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_a[13] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_ba[0] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_ba[1] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_ba[2] -set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_clk_p -set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_clk_n -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_cke -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_cs_n -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_ras_n -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_cas_n -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_we_n -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_odt -set_instance_assignment -name IO_STANDARD "1.5 V" -to ddr3_reset_n -set_instance_assignment -name IO_STANDARD "1.5 V" -to ddr3_rzq - -set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_p[0] -set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_n[0] -set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_p[1] -set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_n[1] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dm[0] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dm[1] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[0] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[1] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[2] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[3] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[4] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[5] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[6] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[7] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[8] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[9] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[10] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[11] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[12] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[13] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[14] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[15] - -set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_p[2] -set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_n[2] -set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_p[3] -set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_n[3] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dm[2] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dm[3] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[16] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[17] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[18] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[19] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[20] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[21] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[22] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[23] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[24] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[25] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[26] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[27] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[28] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[29] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[30] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[31] - -set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_p[4] -set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_n[4] -set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_p[5] -set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_n[5] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dm[4] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dm[5] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[32] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[33] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[34] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[35] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[36] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[37] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[38] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[39] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[40] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[41] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[42] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[43] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[44] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[45] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[46] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[47] - -set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_p[6] -set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_n[6] -set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_p[7] -set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.5-V SSTL CLASS I" -to ddr3_dqs_n[7] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dm[6] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dm[7] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[48] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[49] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[50] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[51] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[52] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[53] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[54] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[55] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[56] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[57] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[58] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[59] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[60] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[61] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[62] -set_instance_assignment -name IO_STANDARD "SSTL-15 CLASS I" -to ddr3_dq[63] - -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[2] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[3] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[4] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[5] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[6] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[7] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[8] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[9] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[10] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[11] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[12] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_a[13] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_ba[0] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_ba[1] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_ba[2] -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_cke -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_cs_n -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_ras_n -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_cas_n -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_we_n -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_reset_n -set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to ddr3_odt - -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dm[0] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dm[1] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dq[0] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dq[1] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dq[2] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dq[3] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dq[4] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dq[5] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dq[6] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[0] -to ddr3_dq[7] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dq[8] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dq[9] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dq[10] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dq[11] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dq[12] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dq[13] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dq[14] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[1] -to ddr3_dq[15] -tag __ddr3x64_example_if0_p0 - -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dm[2] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dm[3] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dq[16] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dq[17] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dq[18] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dq[19] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dq[20] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dq[21] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dq[22] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[2] -to ddr3_dq[23] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dq[24] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dq[25] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dq[26] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dq[27] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dq[28] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dq[29] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dq[30] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name DQ_GROUP 9 -from ddr3_dqs_p[3] -to ddr3_dq[31] -tag __ddr3x64_example_if0_p0 - -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to ddr3_clk_p -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITHOUT CALIBRATION" -to ddr3_clk_n - -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[0] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[0] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[1] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[1] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[0] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[0] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[1] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[1] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dm[0] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dm[1] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[0] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[1] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[2] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[3] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[4] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[5] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[6] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[7] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[8] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[9] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[10] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[11] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[12] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[13] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[14] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[15] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[0] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[1] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[2] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[3] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[4] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[5] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[6] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[7] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[8] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[9] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[10] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[11] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[12] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[13] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[14] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[15] - -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[2] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[2] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[3] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[3] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[2] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[2] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[3] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[3] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dm[2] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dm[3] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[16] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[17] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[18] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[19] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[20] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[21] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[22] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[23] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[24] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[25] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[26] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[27] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[28] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[29] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[30] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[31] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[16] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[17] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[18] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[19] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[20] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[21] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[22] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[23] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[24] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[25] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[26] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[27] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[28] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[29] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[30] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[31] - -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[4] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[4] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[5] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[5] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[4] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[4] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[5] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[5] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dm[4] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dm[5] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[32] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[33] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[34] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[35] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[36] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[37] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[38] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[39] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[40] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[41] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[42] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[43] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[44] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[45] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[46] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[47] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[32] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[33] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[34] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[35] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[36] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[37] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[38] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[39] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[40] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[41] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[42] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[43] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[44] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[45] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[46] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[47] - -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[6] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[6] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[7] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[7] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[6] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[6] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_p[7] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dqs_n[7] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dm[6] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dm[7] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[48] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[49] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[50] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[51] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[52] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[53] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[54] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[55] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[56] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[57] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[58] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[59] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[60] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[61] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[62] -set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION" -to ddr3_dq[63] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[48] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[49] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[50] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[51] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[52] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[53] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[54] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[55] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[56] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[57] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[58] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[59] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[60] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[61] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[62] -set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION" -to ddr3_dq[63] - -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[0] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[1] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[2] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[3] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[4] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[5] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[6] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[7] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[8] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[9] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[10] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[11] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[12] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_a[13] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_ba[0] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_ba[1] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_ba[2] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_clk_p -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_clk_n -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_cke -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_cs_n -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_ras_n -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_cas_n -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_we_n -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_reset_n -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_odt - -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_p[0] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_n[0] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_p[1] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_n[1] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dm[0] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dm[1] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[0] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[1] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[2] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[3] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[4] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[5] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[6] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[7] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[8] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[9] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[10] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[11] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[12] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[13] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[14] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[15] - -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_p[2] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_n[2] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_p[3] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_n[3] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dm[2] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dm[3] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[16] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[17] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[18] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[19] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[20] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[21] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[22] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[23] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[24] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[25] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[26] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[27] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[28] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[29] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[30] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[31] - -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_p[4] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_n[4] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_p[5] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_n[5] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dm[4] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dm[5] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[32] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[33] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[34] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[35] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[36] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[37] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[38] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[39] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[40] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[41] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[42] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[43] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[44] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[45] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[46] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[47] - -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_p[6] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_n[6] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_p[7] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dqs_n[7] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dm[6] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dm[7] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[48] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[49] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[50] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[51] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[52] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[53] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[54] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[55] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[56] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[57] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[58] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[59] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[60] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[61] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[62] -set_instance_assignment -name PACKAGE_SKEW_COMPENSATION ON -to ddr3_dq[63] - -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dqs_p[0] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dqs_n[0] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dqs_p[1] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dqs_n[1] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dm[0] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dm[1] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[0] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[1] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[2] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[3] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[4] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[5] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[6] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[7] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[8] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[9] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[10] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[11] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[12] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[13] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[14] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[15] -tag __ddr3x64_example_if0_p0 - -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dqs_p[2] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dqs_n[2] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dqs_p[3] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dqs_n[3] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dm[2] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dm[3] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[16] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[17] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[18] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[19] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[20] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[21] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[22] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[23] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[24] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[25] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[26] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[27] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[28] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[29] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[30] -tag __ddr3x64_example_if0_p0 -set_instance_assignment -name MEM_INTERFACE_DELAY_CHAIN_CONFIG FLEXIBLE_TIMING -to ddr3_dq[31] -tag __ddr3x64_example_if0_p0 - -set_instance_assignment -name ENABLE_BENEFICIAL_SKEW_OPTIMIZATION_FOR_NON_GLOBAL_CLOCKS ON -to i_fmcjesdadc1|sys_ddr3_cntrl - -set_instance_assignment -name GLOBAL_SIGNAL "DUAL-REGIONAL CLOCK" -to i_fmcjesdadc1|sys_ddr3_cntrl|pll0|pll_addr_cmd_clk -set_instance_assignment -name GLOBAL_SIGNAL "DUAL-REGIONAL CLOCK" -to i_fmcjesdadc1|sys_ddr3_cntrl|pll0|pll_avl_clk -set_instance_assignment -name GLOBAL_SIGNAL "DUAL-REGIONAL CLOCK" -to i_fmcjesdadc1|sys_ddr3_cntrl|pll0|pll_config_clk -set_instance_assignment -name GLOBAL_SIGNAL "GLOBAL CLOCK" -to i_fmcjesdadc1|sys_ddr3_cntrl|pll0|pll_afi_clk -set_instance_assignment -name GLOBAL_SIGNAL "GLOBAL CLOCK" -to i_fmcjesdadc1|sys_ddr3_cntrl|pll0|pll_hr_clk - -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uio_pads|dq_ddio[0].read_capture_clk_buffer -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uio_pads|dq_ddio[1].read_capture_clk_buffer -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uio_pads|dq_ddio[2].read_capture_clk_buffer -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uio_pads|dq_ddio[3].read_capture_clk_buffer -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uio_pads|dq_ddio[4].read_capture_clk_buffer -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uio_pads|dq_ddio[5].read_capture_clk_buffer -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uio_pads|dq_ddio[6].read_capture_clk_buffer -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uio_pads|dq_ddio[7].read_capture_clk_buffer -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_wraddress[0] -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_wraddress[1] -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_wraddress[2] -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_wraddress[3] -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_wraddress[4] -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_wraddress[5] -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_wraddress[6] -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_wraddress[7] -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_write_side[0] -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_write_side[1] -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_write_side[2] -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_write_side[3] -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_write_side[4] -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_write_side[5] -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_write_side[6] -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|uread_datapath|reset_n_fifo_write_side[7] -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|ureset|phy_reset_mem_stable_n -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|p0|umemphy|ureset|phy_reset_n -set_instance_assignment -name GLOBAL_SIGNAL OFF -to i_fmcjesdadc1|sys_ddr3_cntrl|s0|sequencer_rw_mgr_inst|rw_mgr_inst|rw_mgr_core_inst|rw_soft_reset_n - -# ethernet interface - -set_location_assignment PIN_M14 -to eth_rx_clk -set_location_assignment PIN_N14 -to eth_rx_data[0] -set_location_assignment PIN_N15 -to eth_rx_data[1] -set_location_assignment PIN_P15 -to eth_rx_data[2] -set_location_assignment PIN_B9 -to eth_rx_data[3] -set_location_assignment PIN_C9 -to eth_rx_cntrl[4] -set_location_assignment PIN_K18 -to eth_tx_clk_out[5] -set_location_assignment PIN_L18 -to eth_tx_data[0] -set_location_assignment PIN_R11 -to eth_tx_data[1] -set_location_assignment PIN_T11 -to eth_tx_data[2] -set_location_assignment PIN_H9 -to eth_tx_data[3] -set_location_assignment PIN_J9 -to eth_tx_cntrl -set_location_assignment PIN_F7 -to eth_mdc -set_location_assignment PIN_G7 -to eth_mdio_i -set_location_assignment PIN_F9 -to eth_mdio_o -set_location_assignment PIN_G9 -to eth_mdio_t - -set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_rx_clk -set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_rx_data[0] -set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_rx_data[1] -set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_rx_data[2] -set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_rx_data[3] -set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_rx_cntrl[4] -set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_tx_clk_out[5] -set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_tx_data[0] -set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_tx_data[1] -set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_tx_data[2] -set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_tx_data[3] -set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_tx_cntrl -set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_mdc -set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_mdio_i -set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_mdio_o -set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_mdio_t - -# leds - -set_location_assignment PIN_M19 -to led_grn[0] -set_location_assignment PIN_L19 -to led_grn[1] -set_location_assignment PIN_K19 -to led_grn[2] -set_location_assignment PIN_J19 -to led_grn[3] -set_location_assignment PIN_K20 -to led_grn[4] -set_location_assignment PIN_J20 -to led_grn[5] -set_location_assignment PIN_T20 -to led_grn[6] -set_location_assignment PIN_R20 -to led_grn[7] -set_location_assignment PIN_N20 -to led_red[0] -set_location_assignment PIN_C15 -to led_red[1] -set_location_assignment PIN_AL28 -to led_red[2] -set_location_assignment PIN_F11 -to led_red[3] -set_location_assignment PIN_AJ31 -to led_red[4] -set_location_assignment PIN_AN34 -to led_red[5] -set_location_assignment PIN_AJ34 -to led_red[6] -set_location_assignment PIN_AK33 -to led_red[7] -set_location_assignment PIN_D6 -to push_buttons[0] -set_location_assignment PIN_C6 -to push_buttons[1] -set_location_assignment PIN_K7 -to push_buttons[2] -set_location_assignment PIN_C8 -to dip_switches[0] -set_location_assignment PIN_D8 -to dip_switches[1] -set_location_assignment PIN_E7 -to dip_switches[2] -set_location_assignment PIN_E6 -to dip_switches[3] -set_location_assignment PIN_G8 -to dip_switches[4] -set_location_assignment PIN_F8 -to dip_switches[5] -set_location_assignment PIN_D15 -to dip_switches[6] -set_location_assignment PIN_G11 -to dip_switches[7] - -set_instance_assignment -name IO_STANDARD "2.5 V" -to led_grn[0] -set_instance_assignment -name IO_STANDARD "2.5 V" -to led_grn[1] -set_instance_assignment -name IO_STANDARD "2.5 V" -to led_grn[2] -set_instance_assignment -name IO_STANDARD "2.5 V" -to led_grn[3] -set_instance_assignment -name IO_STANDARD "2.5 V" -to led_grn[4] -set_instance_assignment -name IO_STANDARD "2.5 V" -to led_grn[5] -set_instance_assignment -name IO_STANDARD "2.5 V" -to led_grn[6] -set_instance_assignment -name IO_STANDARD "2.5 V" -to led_grn[7] -set_instance_assignment -name IO_STANDARD "2.5 V" -to led_red[0] -set_instance_assignment -name IO_STANDARD "2.5 V" -to led_red[1] -set_instance_assignment -name IO_STANDARD "2.5 V" -to led_red[2] -set_instance_assignment -name IO_STANDARD "2.5 V" -to led_red[3] -set_instance_assignment -name IO_STANDARD "2.5 V" -to led_red[4] -set_instance_assignment -name IO_STANDARD "2.5 V" -to led_red[5] -set_instance_assignment -name IO_STANDARD "2.5 V" -to led_red[6] -set_instance_assignment -name IO_STANDARD "2.5 V" -to led_red[7] -set_instance_assignment -name IO_STANDARD "2.5 V" -to push_buttons[0] -set_instance_assignment -name IO_STANDARD "2.5 V" -to push_buttons[1] -set_instance_assignment -name IO_STANDARD "2.5 V" -to push_buttons[2] -set_instance_assignment -name IO_STANDARD "2.5 V" -to dip_switches[0] -set_instance_assignment -name IO_STANDARD "2.5 V" -to dip_switches[1] -set_instance_assignment -name IO_STANDARD "2.5 V" -to dip_switches[2] -set_instance_assignment -name IO_STANDARD "2.5 V" -to dip_switches[3] -set_instance_assignment -name IO_STANDARD "2.5 V" -to dip_switches[4] -set_instance_assignment -name IO_STANDARD "2.5 V" -to dip_switches[5] -set_instance_assignment -name IO_STANDARD "2.5 V" -to dip_switches[6] -set_instance_assignment -name IO_STANDARD "2.5 V" -to dip_switches[7] - - # globals set_global_assignment -name SYNCHRONIZER_IDENTIFICATION AUTO @@ -853,7 +67,5 @@ set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER ON set_global_assignment -name TIMEQUEST_REPORT_SCRIPT fmcjesdadc1_sta.tcl set_global_assignment -name ON_CHIP_BITSTREAM_DECOMPRESSION OFF -project_close +execute_flow --compile -################################################################################ -################################################################################ diff --git a/projects/fmcjesdadc1/a5gt/system_timing.tcl b/projects/fmcjesdadc1/a5gt/system_timing.tcl index 5209aa9e9..9f27fc610 100755 --- a/projects/fmcjesdadc1/a5gt/system_timing.tcl +++ b/projects/fmcjesdadc1/a5gt/system_timing.tcl @@ -1,23 +1,11 @@ -################################################################################ -################################################################################ package require ::quartus::flow -project_open fmcjesdadc1 +project_open fmcjesdadc1_a5gt execute_module -tool fit create_timing_netlist -read_sdc fmcjesdadc1.sdc +read_sdc system_constr.sdc update_timing_netlist -report_timing -detail summary -npaths 20 -file timing_summary.rpt -report_timing -detail path_only -npaths 20 -file timing.rpt -report_path -npaths 20 -file timing_paths.rpt -report_sdc -ignored -file timing_sdc.rpt -report_clocks -file timing_clocks.rpt -report_ucp -file timing_ucp.rpt - -check_timing -file timing_design.rpt -create_timing_summary -file timing_design_summary.rpt +report_timing -detail path_only -npaths 20 -file timing_impl.log -################################################################################ -################################################################################ diff --git a/projects/fmcjesdadc1/a5gt/system_top.v b/projects/fmcjesdadc1/a5gt/system_top.v index bf4f8107b..193ac3558 100755 --- a/projects/fmcjesdadc1/a5gt/system_top.v +++ b/projects/fmcjesdadc1/a5gt/system_top.v @@ -37,7 +37,7 @@ `timescale 1ns/100ps -module fmcjesdadc1_top ( +module system_top ( // clock and resets @@ -275,7 +275,7 @@ module fmcjesdadc1_top ( .spi3_clk (spi_clk), .spi3_sdio (spi_sdio)); - fmcjesdadc1 i_fmcjesdadc1 ( + system i_system ( .sys_clk_clk (sys_clk), .sys_reset_reset_n (sys_resetn), .sys_125m_clk_clk (sys_125m_clk), From 2472d61daf35d387b11e6acc977afb5dc54568c8 Mon Sep 17 00:00:00 2001 From: Rejeesh Kutty Date: Tue, 1 Apr 2014 15:06:33 -0400 Subject: [PATCH 05/18] ad_gt_es: status asserted early for latency --- library/common/ad_gt_es.v | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/library/common/ad_gt_es.v b/library/common/ad_gt_es.v index 85cc157b4..5bae4dbbb 100644 --- a/library/common/ad_gt_es.v +++ b/library/common/ad_gt_es.v @@ -131,6 +131,8 @@ module ad_gt_es ( // state machine parameter ES_FSM_IDLE = 6'h00; + parameter ES_FSM_STATUS = 6'h30; + parameter ES_FSM_INIT = 6'h31; parameter ES_FSM_CTRLINIT_READ = 6'h01; parameter ES_FSM_CTRLINIT_RRDY = 6'h02; parameter ES_FSM_CTRLINIT_WRITE = 6'h03; @@ -451,15 +453,25 @@ module ad_gt_es ( end else begin case (es_fsm) ES_FSM_IDLE: begin // idle - if (es_start == 1'b0) begin + if (es_start == 1'b1) begin + es_fsm <= ES_FSM_STATUS; + end else begin es_fsm <= ES_FSM_IDLE; - end else if (es_init == 1'b1) begin + end + end + + ES_FSM_STATUS: begin // set status + es_fsm <= ES_FSM_INIT; + end + + ES_FSM_INIT: begin // initialize + if (es_init == 1'b1) begin es_fsm <= ES_FSM_CTRLINIT_READ; end else begin es_fsm <= ES_FSM_HOFFSET_READ; end end - + ES_FSM_CTRLINIT_READ: begin // control read es_fsm <= ES_FSM_CTRLINIT_RRDY; end From 80e50518941c5b2ad760fa1758842121e7d53304 Mon Sep 17 00:00:00 2001 From: Rejeesh Kutty Date: Tue, 1 Apr 2014 15:14:28 -0400 Subject: [PATCH 06/18] axi_jesd_gt: initial checkin --- library/axi_jesd_gt/axi_jesd_gt.v | 707 +++++++++++++++++++++++++ library/axi_jesd_gt/axi_jesd_gt_ip.tcl | 23 + 2 files changed, 730 insertions(+) create mode 100644 library/axi_jesd_gt/axi_jesd_gt.v create mode 100644 library/axi_jesd_gt/axi_jesd_gt_ip.tcl diff --git a/library/axi_jesd_gt/axi_jesd_gt.v b/library/axi_jesd_gt/axi_jesd_gt.v new file mode 100644 index 000000000..af702f182 --- /dev/null +++ b/library/axi_jesd_gt/axi_jesd_gt.v @@ -0,0 +1,707 @@ +// *************************************************************************** +// *************************************************************************** +// Copyright 2011(c) Analog Devices, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// - Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the +// distribution. +// - Neither the name of Analog Devices, Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// - The use of this software may or may not infringe the patent rights +// of one or more patent holders. This license does not release you +// from the requirement that you obtain separate licenses from these +// patent holders to use this software. +// - Use of the software either in source or binary form, must be run +// on or directly connected to an Analog Devices Inc. component. +// +// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +// INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE ARE DISCLAIMED. +// +// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY +// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// *************************************************************************** +// *************************************************************************** + +`timescale 1ns/100ps + +module axi_jesd_gt ( + + // physical interface + + ref_clk_q, + ref_clk_c, + + rx_data_p, + rx_data_n, + rx_sync, + rx_sysref, + rx_ext_sysref, + + tx_data_p, + tx_data_n, + tx_sync, + tx_sysref, + tx_ext_sysref, + + // core interface + + rx_rst, + rx_clk, + rx_data, + rx_gt_charisk, + rx_gt_disperr, + rx_gt_notintable, + rx_gt_data, + rx_rst_done, + rx_ip_comma_align, + rx_ip_sync, + rx_ip_sof, + rx_ip_data, + + tx_rst, + tx_clk, + tx_data, + tx_gt_charisk, + tx_gt_data, + tx_rst_done, + tx_ip_sync, + tx_ip_sof, + tx_ip_data, + + // axi interface + + s_axi_aclk, + s_axi_aresetn, + s_axi_awvalid, + s_axi_awaddr, + s_axi_awready, + s_axi_wvalid, + s_axi_wdata, + s_axi_wstrb, + s_axi_wready, + s_axi_bvalid, + s_axi_bresp, + s_axi_bready, + s_axi_arvalid, + s_axi_araddr, + s_axi_arready, + s_axi_rvalid, + s_axi_rdata, + s_axi_rresp, + s_axi_rready, + + // master interface + + m_axi_aclk, + m_axi_aresetn, + m_axi_awvalid, + m_axi_awaddr, + m_axi_awprot, + m_axi_awready, + m_axi_wvalid, + m_axi_wdata, + m_axi_wstrb, + m_axi_wready, + m_axi_bvalid, + m_axi_bresp, + m_axi_bready, + m_axi_arvalid, + m_axi_araddr, + m_axi_arprot, + m_axi_arready, + m_axi_rvalid, + m_axi_rdata, + m_axi_rresp, + m_axi_rready, + + // drp clock + + drp_clk, + + // es debug interface + + es_dbg_data, + es_dbg_trigger, + + // jesd debug interface + + rx_mon_data, + rx_mon_trigger, + + tx_mon_data, + tx_mon_trigger); + + parameter PCORE_ID = 0; + parameter PCORE_DEVICE_TYPE = 0; + parameter PCORE_NUM_OF_LANES = 4; + parameter PCORE_QPLL_REFCLK_DIV = 1; + parameter PCORE_QPLL_CFG = 27'h0680181; + parameter PCORE_QPLL_FBDIV_RATIO = 1'b1; + parameter PCORE_QPLL_FBDIV = 10'b0000110000; + parameter PCORE_CPLL_FBDIV = 2; + parameter PCORE_RX_OUT_DIV = 1; + parameter PCORE_TX_OUT_DIV = 1; + parameter PCORE_RX_CLK25_DIV = 20; + parameter PCORE_TX_CLK25_DIV = 20; + parameter PCORE_PMA_RSV = 32'h001E7080; + parameter PCORE_RX_CDR_CFG = 72'h0b000023ff10400020; + parameter C_S_AXI_MIN_SIZE = 32'hffff; + parameter C_BASEADDR = 32'h00000000; + parameter C_HIGHADDR = 32'hffffffff; + + // physical interface + + input ref_clk_q; + input ref_clk_c; + + input [((PCORE_NUM_OF_LANES* 1)-1):0] rx_data_p; + input [((PCORE_NUM_OF_LANES* 1)-1):0] rx_data_n; + output rx_sync; + output rx_sysref; + input rx_ext_sysref; + + output [((PCORE_NUM_OF_LANES* 1)-1):0] tx_data_p; + output [((PCORE_NUM_OF_LANES* 1)-1):0] tx_data_n; + input tx_sync; + output tx_sysref; + input tx_ext_sysref; + + // core interface + + output rx_rst; + output rx_clk; + output [((PCORE_NUM_OF_LANES*32)-1):0] rx_data; + output [((PCORE_NUM_OF_LANES* 4)-1):0] rx_gt_charisk; + output [((PCORE_NUM_OF_LANES* 4)-1):0] rx_gt_disperr; + output [((PCORE_NUM_OF_LANES* 4)-1):0] rx_gt_notintable; + output [((PCORE_NUM_OF_LANES*32)-1):0] rx_gt_data; + output rx_rst_done; + input rx_ip_comma_align; + input rx_ip_sync; + input [ 3:0] rx_ip_sof; + input [((PCORE_NUM_OF_LANES*32)-1):0] rx_ip_data; + + output tx_rst; + output tx_clk; + input [((PCORE_NUM_OF_LANES*32)-1):0] tx_data; + input [((PCORE_NUM_OF_LANES* 4)-1):0] tx_gt_charisk; + input [((PCORE_NUM_OF_LANES*32)-1):0] tx_gt_data; + output tx_rst_done; + output tx_ip_sync; + input [ 3:0] tx_ip_sof; + output [((PCORE_NUM_OF_LANES*32)-1):0] tx_ip_data; + + // axi interface + + input s_axi_aclk; + input s_axi_aresetn; + input s_axi_awvalid; + input [ 31:0] s_axi_awaddr; + output s_axi_awready; + input s_axi_wvalid; + input [ 31:0] s_axi_wdata; + input [ 3:0] s_axi_wstrb; + output s_axi_wready; + output s_axi_bvalid; + output [ 1:0] s_axi_bresp; + input s_axi_bready; + input s_axi_arvalid; + input [ 31:0] s_axi_araddr; + output s_axi_arready; + output s_axi_rvalid; + output [ 31:0] s_axi_rdata; + output [ 1:0] s_axi_rresp; + input s_axi_rready; + + // master interface + + input m_axi_aclk; + input m_axi_aresetn; + output m_axi_awvalid; + output [ 31:0] m_axi_awaddr; + output [ 2:0] m_axi_awprot; + input m_axi_awready; + output m_axi_wvalid; + output [ 31:0] m_axi_wdata; + output [ 3:0] m_axi_wstrb; + input m_axi_wready; + input m_axi_bvalid; + input [ 1:0] m_axi_bresp; + output m_axi_bready; + output m_axi_arvalid; + output [ 31:0] m_axi_araddr; + output [ 2:0] m_axi_arprot; + input m_axi_arready; + input m_axi_rvalid; + input [ 31:0] m_axi_rdata; + input [ 1:0] m_axi_rresp; + output m_axi_rready; + + // drp clock + + input drp_clk; + + // es debug interface + + output [275:0] es_dbg_data; + output [ 7:0] es_dbg_trigger; + + // jesd debug interface + + output [((PCORE_NUM_OF_LANES*82)+5):0] rx_mon_data; + output [((PCORE_NUM_OF_LANES* 1)+1):0] rx_mon_trigger; + + output [((PCORE_NUM_OF_LANES*36)+5):0] tx_mon_data; + output [ 5:0] tx_mon_trigger; + + // reset and clocks + + wire gt_pll_rst; + wire gt_rx_rst; + wire gt_tx_rst; + wire qpll_clk_0; + wire qpll_ref_clk_0; + wire qpll_clk_1; + wire qpll_ref_clk_1; + wire [ 7:0] qpll_clk; + wire [ 7:0] qpll_ref_clk; + wire [((PCORE_NUM_OF_LANES* 1)-1):0] rx_out_clk; + wire [((PCORE_NUM_OF_LANES* 1)-1):0] tx_out_clk; + wire axi_rstn; + wire axi_clk; + wire up_rstn; + wire up_clk; + wire drp_rst; + + // internal signals + + wire [ 8:0] up_status_extn_s; + wire [ 8:0] rx_rst_done_extn_s; + wire [ 8:0] rx_pll_locked_extn_s; + wire [ 8:0] tx_rst_done_extn_s; + wire [ 8:0] tx_pll_locked_extn_s; + wire [((PCORE_NUM_OF_LANES* 1)-1):0] rx_mon_trigger_s; + wire [((PCORE_NUM_OF_LANES*50)-1):0] rx_mon_data_s; + wire [ 15:0] drp_rdata_gt_s[15:0]; + wire drp_ready_gt_s[15:0]; + wire [ 7:0] drp_rx_rate_gt_s[15:0]; + wire qpll_locked_0_s; + wire qpll_locked_1_s; + wire [ 7:0] qpll_locked_s; + wire [((PCORE_NUM_OF_LANES* 1)-1):0] rx_rst_done_s; + wire [((PCORE_NUM_OF_LANES* 1)-1):0] rx_pll_locked_s; + wire [((PCORE_NUM_OF_LANES* 1)-1):0] tx_rst_done_s; + wire [((PCORE_NUM_OF_LANES* 1)-1):0] tx_pll_locked_s; + wire up_cpll_pd_s; + wire [ 1:0] up_rx_sys_clk_sel_s; + wire [ 2:0] up_rx_out_clk_sel_s; + wire [ 1:0] up_tx_sys_clk_sel_s; + wire [ 2:0] up_tx_out_clk_sel_s; + wire drp_sel_s; + wire drp_wr_s; + wire [ 11:0] drp_addr_s; + wire [ 15:0] drp_wdata_s; + wire [ 15:0] drp_rdata_s; + wire drp_ready_s; + wire [ 7:0] drp_lanesel_s; + wire [ 7:0] drp_rx_rate_s; + wire es_sel_s; + wire es_wr_s; + wire [ 11:0] es_addr_s; + wire [ 15:0] es_wdata_s; + wire [ 15:0] es_rdata_s; + wire es_ready_s; + wire es_start_s; + wire es_stop_s; + wire es_init_s; + wire [ 15:0] es_sdata0_s; + wire [ 15:0] es_sdata1_s; + wire [ 15:0] es_sdata2_s; + wire [ 15:0] es_sdata3_s; + wire [ 15:0] es_sdata4_s; + wire [ 15:0] es_qdata0_s; + wire [ 15:0] es_qdata1_s; + wire [ 15:0] es_qdata2_s; + wire [ 15:0] es_qdata3_s; + wire [ 15:0] es_qdata4_s; + wire [ 4:0] es_prescale_s; + wire [ 11:0] es_hoffset_min_s; + wire [ 11:0] es_hoffset_max_s; + wire [ 11:0] es_hoffset_step_s; + wire [ 7:0] es_voffset_min_s; + wire [ 7:0] es_voffset_max_s; + wire [ 7:0] es_voffset_step_s; + wire [ 31:0] es_start_addr_s; + wire es_dmaerr_s; + wire es_status_s; + wire up_sel_s; + wire up_wr_s; + wire [ 13:0] up_addr_s; + wire [ 31:0] up_wdata_s; + wire [ 31:0] up_rdata_s; + wire up_ack_s; + + // debug interface + + assign rx_mon_data = {rx_sync, rx_sysref, rx_ip_sof, rx_ip_data, rx_mon_data_s}; + assign rx_mon_trigger = {rx_sync, rx_sysref, rx_mon_trigger_s}; + + assign tx_mon_data = {tx_sync, tx_sysref, tx_ip_sof, tx_gt_charisk, tx_gt_data}; + assign tx_mon_trigger = {tx_sync, tx_sysref, tx_ip_sof}; + + // signal name changes + + assign axi_rstn = m_axi_aresetn; + assign axi_clk = m_axi_aclk; + assign up_rstn = s_axi_aresetn; + assign up_clk = s_axi_aclk; + + // drp is simply over-defined to avoid errors with singluar entries + + assign up_status_extn_s = 9'hff; + assign rx_rst_done_extn_s = {up_status_extn_s[8:PCORE_NUM_OF_LANES], rx_rst_done_s}; + assign rx_pll_locked_extn_s = {up_status_extn_s[8:PCORE_NUM_OF_LANES], rx_pll_locked_s}; + assign tx_rst_done_extn_s = {up_status_extn_s[8:PCORE_NUM_OF_LANES], tx_rst_done_s}; + assign tx_pll_locked_extn_s = {up_status_extn_s[8:PCORE_NUM_OF_LANES], tx_pll_locked_s}; + + assign rx_rst_done = | rx_rst_done_s; + assign tx_rst_done = | tx_rst_done_s; + + assign drp_rdata_s = drp_rdata_gt_s[15] | drp_rdata_gt_s[14] | + drp_rdata_gt_s[13] | drp_rdata_gt_s[12] | + drp_rdata_gt_s[11] | drp_rdata_gt_s[10] | + drp_rdata_gt_s[ 9] | drp_rdata_gt_s[ 8] | + drp_rdata_gt_s[ 7] | drp_rdata_gt_s[ 6] | + drp_rdata_gt_s[ 5] | drp_rdata_gt_s[ 4] | + drp_rdata_gt_s[ 3] | drp_rdata_gt_s[ 2] | + drp_rdata_gt_s[ 1] | drp_rdata_gt_s[ 0]; + + assign drp_ready_s = drp_ready_gt_s[15] | drp_ready_gt_s[14] | + drp_ready_gt_s[13] | drp_ready_gt_s[12] | + drp_ready_gt_s[11] | drp_ready_gt_s[10] | + drp_ready_gt_s[ 9] | drp_ready_gt_s[ 8] | + drp_ready_gt_s[ 7] | drp_ready_gt_s[ 6] | + drp_ready_gt_s[ 5] | drp_ready_gt_s[ 4] | + drp_ready_gt_s[ 3] | drp_ready_gt_s[ 2] | + drp_ready_gt_s[ 1] | drp_ready_gt_s[ 0]; + + assign drp_rx_rate_s = drp_rx_rate_gt_s[15] | drp_rx_rate_gt_s[14] | + drp_rx_rate_gt_s[13] | drp_rx_rate_gt_s[12] | + drp_rx_rate_gt_s[11] | drp_rx_rate_gt_s[10] | + drp_rx_rate_gt_s[ 9] | drp_rx_rate_gt_s[ 8] | + drp_rx_rate_gt_s[ 7] | drp_rx_rate_gt_s[ 6] | + drp_rx_rate_gt_s[ 5] | drp_rx_rate_gt_s[ 4] | + drp_rx_rate_gt_s[ 3] | drp_rx_rate_gt_s[ 2] | + drp_rx_rate_gt_s[ 1] | drp_rx_rate_gt_s[ 0]; + + assign tx_ip_data = tx_data; + + // clock buffers + + BUFG i_bufg_rx_clk ( + .I (rx_out_clk[0]), + .O (rx_clk)); + + BUFG i_bufg_tx_clk ( + .I (tx_out_clk[0]), + .O (tx_clk)); + + // transceivers + + assign qpll_clk = {{4{qpll_clk_1}}, {4{qpll_clk_0}}}; + assign qpll_ref_clk = {{4{qpll_ref_clk_1}}, {4{qpll_ref_clk_0}}}; + assign qpll_locked_s = {{4{qpll_locked_1_s}}, {4{qpll_locked_0_s}}}; + + ad_gt_common_1 #( + .DRP_ID (14), + .QPLL_REFCLK_DIV (PCORE_QPLL_REFCLK_DIV), + .QPLL_CFG (PCORE_QPLL_CFG), + .QPLL_FBDIV_RATIO (PCORE_QPLL_FBDIV_RATIO), + .QPLL_FBDIV (PCORE_QPLL_FBDIV)) + i_gt_common_1 ( + .rst (gt_pll_rst), + .ref_clk (ref_clk_q), + .qpll_clk (qpll_clk_0), + .qpll_ref_clk (qpll_ref_clk_0), + .qpll_locked (qpll_locked_0_s), + .drp_clk (drp_clk), + .drp_sel (drp_sel_s), + .drp_addr (drp_addr_s), + .drp_wr (drp_wr_s), + .drp_wdata (drp_wdata_s), + .drp_rdata (drp_rdata_gt_s[14]), + .drp_ready (drp_ready_gt_s[14]), + .drp_lanesel (drp_lanesel_s), + .drp_rx_rate (drp_rx_rate_gt_s[14])); + + ad_gt_common_1 #( + .DRP_ID (15), + .QPLL_REFCLK_DIV (PCORE_QPLL_REFCLK_DIV), + .QPLL_CFG (PCORE_QPLL_CFG), + .QPLL_FBDIV_RATIO (PCORE_QPLL_FBDIV_RATIO), + .QPLL_FBDIV (PCORE_QPLL_FBDIV)) + i_gt_common_2 ( + .rst (gt_pll_rst), + .ref_clk (ref_clk_q), + .qpll_clk (qpll_clk_1), + .qpll_ref_clk (qpll_ref_clk_1), + .qpll_locked (qpll_locked_1_s), + .drp_clk (drp_clk), + .drp_sel (drp_sel_s), + .drp_addr (drp_addr_s), + .drp_wr (drp_wr_s), + .drp_wdata (drp_wdata_s), + .drp_rdata (drp_rdata_gt_s[15]), + .drp_ready (drp_ready_gt_s[15]), + .drp_lanesel (drp_lanesel_s), + .drp_rx_rate (drp_rx_rate_gt_s[15])); + + genvar n; + generate + for (n = 0; n < PCORE_NUM_OF_LANES; n = n + 1) begin: g_lane_1 + + ad_jesd_align i_jesd_align ( + .rx_clk (rx_clk), + .rx_sof (rx_ip_sof), + .rx_ip_data (rx_ip_data[n*32+31:n*32]), + .rx_data (rx_data[n*32+31:n*32])); + + ad_gt_channel_1 #( + .DRP_ID (n), + .CPLL_FBDIV (PCORE_CPLL_FBDIV), + .RX_OUT_DIV (PCORE_RX_OUT_DIV), + .TX_OUT_DIV (PCORE_TX_OUT_DIV), + .RX_CLK25_DIV (PCORE_RX_CLK25_DIV), + .TX_CLK25_DIV (PCORE_TX_CLK25_DIV), + .PMA_RSV (PCORE_PMA_RSV), + .RX_CDR_CFG (PCORE_RX_CDR_CFG)) + i_gt_channel_1 ( + .ref_clk (ref_clk_c), + .cpll_pd (up_cpll_pd_s), + .cpll_rst (gt_pll_rst), + .qpll_clk (qpll_clk[n]), + .qpll_ref_clk (qpll_ref_clk[n]), + .qpll_locked (qpll_locked_s[n]), + .rx_rst (gt_rx_rst), + .rx_p (rx_data_p[n]), + .rx_n (rx_data_n[n]), + .rx_sys_clk_sel (up_rx_sys_clk_sel_s), + .rx_out_clk_sel (up_rx_out_clk_sel_s), + .rx_out_clk (rx_out_clk[n]), + .rx_rst_done (rx_rst_done_s[n]), + .rx_pll_locked (rx_pll_locked_s[n]), + .rx_clk (rx_clk), + .rx_charisk (rx_gt_charisk[n*4+3:n*4]), + .rx_disperr (rx_gt_disperr[n*4+3:n*4]), + .rx_notintable (rx_gt_notintable[n*4+3:n*4]), + .rx_data (rx_gt_data[n*32+31:n*32]), + .rx_comma_align_enb (rx_ip_comma_align), + .tx_rst (gt_tx_rst), + .tx_p (tx_data_p[n]), + .tx_n (tx_data_n[n]), + .tx_sys_clk_sel (up_tx_sys_clk_sel_s), + .tx_out_clk_sel (up_tx_out_clk_sel_s), + .tx_out_clk (tx_out_clk[n]), + .tx_rst_done (tx_rst_done_s[n]), + .tx_pll_locked (tx_pll_locked_s[n]), + .tx_clk (tx_clk), + .tx_charisk (tx_gt_charisk[n*4+3:n*4]), + .tx_data (tx_gt_data[n*32+31:n*32]), + .drp_clk (drp_clk), + .drp_sel (drp_sel_s), + .drp_addr (drp_addr_s), + .drp_wr (drp_wr_s), + .drp_wdata (drp_wdata_s), + .drp_rdata (drp_rdata_gt_s[n]), + .drp_ready (drp_ready_gt_s[n]), + .drp_lanesel (drp_lanesel_s), + .drp_rx_rate (drp_rx_rate_gt_s[n]), + .rx_mon_trigger (rx_mon_trigger_s[n]), + .rx_mon_data (rx_mon_data_s[n*50+49:n*50])); + end + endgenerate + + // eye scan + + ad_gt_es #(.GTH_GTX_N(0)) i_gt_es ( + .drp_rst (drp_rst), + .drp_clk (drp_clk), + .es_sel (es_sel_s), + .es_wr (es_wr_s), + .es_addr (es_addr_s), + .es_wdata (es_wdata_s), + .es_rdata (es_rdata_s), + .es_ready (es_ready_s), + .axi_rstn (axi_rstn), + .axi_clk (axi_clk), + .axi_awvalid (m_axi_awvalid), + .axi_awaddr (m_axi_awaddr), + .axi_awprot (m_axi_awprot), + .axi_awready (m_axi_awready), + .axi_wvalid (m_axi_wvalid), + .axi_wdata (m_axi_wdata), + .axi_wstrb (m_axi_wstrb), + .axi_wready (m_axi_wready), + .axi_bvalid (m_axi_bvalid), + .axi_bresp (m_axi_bresp), + .axi_bready (m_axi_bready), + .axi_arvalid (m_axi_arvalid), + .axi_araddr (m_axi_araddr), + .axi_arprot (m_axi_arprot), + .axi_arready (m_axi_arready), + .axi_rvalid (m_axi_rvalid), + .axi_rdata (m_axi_rdata), + .axi_rresp (m_axi_rresp), + .axi_rready (m_axi_rready), + .es_start (es_start_s), + .es_stop (es_stop_s), + .es_init (es_init_s), + .es_sdata0 (es_sdata0_s), + .es_sdata1 (es_sdata1_s), + .es_sdata2 (es_sdata2_s), + .es_sdata3 (es_sdata3_s), + .es_sdata4 (es_sdata4_s), + .es_qdata0 (es_qdata0_s), + .es_qdata1 (es_qdata1_s), + .es_qdata2 (es_qdata2_s), + .es_qdata3 (es_qdata3_s), + .es_qdata4 (es_qdata4_s), + .es_prescale (es_prescale_s), + .es_hoffset_min (es_hoffset_min_s), + .es_hoffset_max (es_hoffset_max_s), + .es_hoffset_step (es_hoffset_step_s), + .es_voffset_min (es_voffset_min_s), + .es_voffset_max (es_voffset_max_s), + .es_voffset_step (es_voffset_step_s), + .es_start_addr (es_start_addr_s), + .es_dmaerr (es_dmaerr_s), + .es_status (es_status_s), + .es_dbg_trigger (es_dbg_trigger), + .es_dbg_data (es_dbg_data)); + + // processor + + up_gt #(.PCORE_ID(PCORE_ID)) i_up_gt ( + .gt_pll_rst (gt_pll_rst), + .gt_rx_rst (gt_rx_rst), + .gt_tx_rst (gt_tx_rst), + .up_cpll_pd (up_cpll_pd_s), + .up_rx_sys_clk_sel (up_rx_sys_clk_sel_s), + .up_rx_out_clk_sel (up_rx_out_clk_sel_s), + .up_tx_sys_clk_sel (up_tx_sys_clk_sel_s), + .up_tx_out_clk_sel (up_tx_out_clk_sel_s), + .rx_clk (rx_clk), + .rx_rst (rx_rst), + .rx_ext_sysref (rx_ext_sysref), + .rx_sysref (rx_sysref), + .rx_ip_sync (rx_ip_sync), + .rx_sync (rx_sync), + .rx_rst_done (rx_rst_done_extn_s[7:0]), + .rx_pll_locked (rx_pll_locked_extn_s[7:0]), + .rx_error (1'd0), + .tx_clk (tx_clk), + .tx_rst (tx_rst), + .tx_ext_sysref (tx_ext_sysref), + .tx_sysref (tx_sysref), + .tx_sync (tx_sync), + .tx_ip_sync (tx_ip_sync), + .tx_rst_done (tx_rst_done_extn_s[7:0]), + .tx_pll_locked (tx_pll_locked_extn_s[7:0]), + .tx_error (1'd0), + .drp_clk (drp_clk), + .drp_rst (drp_rst), + .drp_sel (drp_sel_s), + .drp_wr (drp_wr_s), + .drp_addr (drp_addr_s), + .drp_wdata (drp_wdata_s), + .drp_rdata (drp_rdata_s), + .drp_ready (drp_ready_s), + .drp_lanesel (drp_lanesel_s), + .drp_rx_rate (drp_rx_rate_s), + .es_sel (es_sel_s), + .es_wr (es_wr_s), + .es_addr (es_addr_s), + .es_wdata (es_wdata_s), + .es_rdata (es_rdata_s), + .es_ready (es_ready_s), + .es_start (es_start_s), + .es_stop (es_stop_s), + .es_init (es_init_s), + .es_prescale (es_prescale_s), + .es_voffset_step (es_voffset_step_s), + .es_voffset_max (es_voffset_max_s), + .es_voffset_min (es_voffset_min_s), + .es_hoffset_max (es_hoffset_max_s), + .es_hoffset_min (es_hoffset_min_s), + .es_hoffset_step (es_hoffset_step_s), + .es_start_addr (es_start_addr_s), + .es_sdata0 (es_sdata0_s), + .es_sdata1 (es_sdata1_s), + .es_sdata2 (es_sdata2_s), + .es_sdata3 (es_sdata3_s), + .es_sdata4 (es_sdata4_s), + .es_qdata0 (es_qdata0_s), + .es_qdata1 (es_qdata1_s), + .es_qdata2 (es_qdata2_s), + .es_qdata3 (es_qdata3_s), + .es_qdata4 (es_qdata4_s), + .es_dmaerr (es_dmaerr_s), + .es_status (es_status_s), + .up_rstn (up_rstn), + .up_clk (up_clk), + .up_sel (up_sel_s), + .up_wr (up_wr_s), + .up_addr (up_addr_s), + .up_wdata (up_wdata_s), + .up_rdata (up_rdata_s), + .up_ack (up_ack_s)); + + // axi interface + + up_axi #( + .PCORE_BASEADDR (C_BASEADDR), + .PCORE_HIGHADDR (C_HIGHADDR)) + i_up_axi ( + .up_rstn (up_rstn), + .up_clk (up_clk), + .up_axi_awvalid (s_axi_awvalid), + .up_axi_awaddr (s_axi_awaddr), + .up_axi_awready (s_axi_awready), + .up_axi_wvalid (s_axi_wvalid), + .up_axi_wdata (s_axi_wdata), + .up_axi_wstrb (s_axi_wstrb), + .up_axi_wready (s_axi_wready), + .up_axi_bvalid (s_axi_bvalid), + .up_axi_bresp (s_axi_bresp), + .up_axi_bready (s_axi_bready), + .up_axi_arvalid (s_axi_arvalid), + .up_axi_araddr (s_axi_araddr), + .up_axi_arready (s_axi_arready), + .up_axi_rvalid (s_axi_rvalid), + .up_axi_rresp (s_axi_rresp), + .up_axi_rdata (s_axi_rdata), + .up_axi_rready (s_axi_rready), + .up_sel (up_sel_s), + .up_wr (up_wr_s), + .up_addr (up_addr_s), + .up_wdata (up_wdata_s), + .up_rdata (up_rdata_s), + .up_ack (up_ack_s)); + +endmodule + +// *************************************************************************** +// *************************************************************************** diff --git a/library/axi_jesd_gt/axi_jesd_gt_ip.tcl b/library/axi_jesd_gt/axi_jesd_gt_ip.tcl new file mode 100644 index 000000000..9000685c0 --- /dev/null +++ b/library/axi_jesd_gt/axi_jesd_gt_ip.tcl @@ -0,0 +1,23 @@ +# ip + +source ../scripts/adi_env.tcl +source $ad_hdl_dir/library/scripts/adi_ip.tcl + +adi_ip_create axi_jesd_gt +adi_ip_files axi_jesd_gt [list \ + "$ad_hdl_dir/library/common/ad_gt_common_1.v" \ + "$ad_hdl_dir/library/common/ad_gt_channel_1.v" \ + "$ad_hdl_dir/library/common/ad_gt_es.v" \ + "$ad_hdl_dir/library/common/ad_jesd_align.v" \ + "$ad_hdl_dir/library/common/ad_rst.v" \ + "$ad_hdl_dir/library/common/up_axi.v" \ + "$ad_hdl_dir/library/common/up_xfer_cntrl.v" \ + "$ad_hdl_dir/library/common/up_xfer_status.v" \ + "$ad_hdl_dir/library/common/up_drp_cntrl.v" \ + "$ad_hdl_dir/library/common/up_gt.v" \ + "axi_jesd_gt.v" ] + +adi_ip_properties axi_jesd_gt + +ipx::save_core [ipx::current_core] + From e85153b5ddc0aee9b9c109baa702db2718dfbec4 Mon Sep 17 00:00:00 2001 From: Rejeesh Kutty Date: Tue, 1 Apr 2014 21:11:32 -0400 Subject: [PATCH 07/18] altera hal version --- library/axi_ad9250/axi_ad9250_pnmon.v | 2 +- projects/fmcjesdadc1/a5gt/system_constr.sdc | 12 ++++++------ projects/fmcjesdadc1/a5gt/system_project.tcl | 8 ++++++-- projects/fmcjesdadc1/a5gt/system_top.v | 14 ++++++++++---- 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/library/axi_ad9250/axi_ad9250_pnmon.v b/library/axi_ad9250/axi_ad9250_pnmon.v index 50d35ed12..701b41de3 100755 --- a/library/axi_ad9250/axi_ad9250_pnmon.v +++ b/library/axi_ad9250/axi_ad9250_pnmon.v @@ -177,7 +177,7 @@ module axi_ad9250_pnmon ( // if oos is de-asserted, any spurious mismatches sets the error register. // ideally, processor should make sure both oos == 0x0 and err == 0x0. - assign adc_pn_data_in_s = {~adc_data[27], adc_data[26:14], ~adc_data[13], adc_data[12:0]}; + assign adc_pn_data_in_s = {~adc_data[13], adc_data[12:0], ~adc_data[27], adc_data[26:14]}; assign adc_pn_match_d_1_s = (adc_pn_data_in_s[27:14] == adc_pn_data[27:14]) ? 1'b1 : 1'b0; assign adc_pn_match_d_0_s = (adc_pn_data_in_s[13: 0] == adc_pn_data[13: 0]) ? 1'b1 : 1'b0; assign adc_pn_match_z_s = (adc_pn_data_in_s == 28'd0) ? 1'b0 : 1'b1; diff --git a/projects/fmcjesdadc1/a5gt/system_constr.sdc b/projects/fmcjesdadc1/a5gt/system_constr.sdc index 2d5cd6c5d..824fab80f 100755 --- a/projects/fmcjesdadc1/a5gt/system_constr.sdc +++ b/projects/fmcjesdadc1/a5gt/system_constr.sdc @@ -7,12 +7,12 @@ create_clock -period "8.000 ns" -name n_eth_tx_clk_125m [get_nets {eth_tx_clk}] derive_pll_clocks derive_clock_uncertainty -set clk_100m [get_clocks {i_system|sys_pll|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] -set clk_166m [get_clocks {i_system|sys_pll|altera_pll_i|general[1].gpll~PLL_OUTPUT_COUNTER|divclk}] -set clk_125m [get_clocks {i_system|sys_pll|altera_pll_i|general[2].gpll~PLL_OUTPUT_COUNTER|divclk}] -set clk_25m [get_clocks {i_system|sys_pll|altera_pll_i|general[3].gpll~PLL_OUTPUT_COUNTER|divclk}] -set clk_2m5 [get_clocks {i_system|sys_pll|altera_pll_i|general[4].gpll~PLL_OUTPUT_COUNTER|divclk}] -set clk_rxlink [get_clocks {i_system|sys_jesd204b_s1_pll|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] +set clk_100m [get_clocks {i_system_bd|sys_pll|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] +set clk_166m [get_clocks {i_system_bd|sys_pll|altera_pll_i|general[1].gpll~PLL_OUTPUT_COUNTER|divclk}] +set clk_125m [get_clocks {i_system_bd|sys_pll|altera_pll_i|general[2].gpll~PLL_OUTPUT_COUNTER|divclk}] +set clk_25m [get_clocks {i_system_bd|sys_pll|altera_pll_i|general[3].gpll~PLL_OUTPUT_COUNTER|divclk}] +set clk_2m5 [get_clocks {i_system_bd|sys_pll|altera_pll_i|general[4].gpll~PLL_OUTPUT_COUNTER|divclk}] +set clk_rxlink [get_clocks {i_system_bd|sys_jesd204b_s1_pll|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] set_false_path -from {sys_resetn} -to * set_false_path -from $clk_100m -to $clk_166m diff --git a/projects/fmcjesdadc1/a5gt/system_project.tcl b/projects/fmcjesdadc1/a5gt/system_project.tcl index 3985df9f5..b546a2583 100755 --- a/projects/fmcjesdadc1/a5gt/system_project.tcl +++ b/projects/fmcjesdadc1/a5gt/system_project.tcl @@ -1,4 +1,6 @@ +load_package flow + source ../../scripts/adi_env.tcl project_new fmcjesdadc1_a5gt -overwrite @@ -7,6 +9,7 @@ set_global_assignment -name DEVICE 5AGTFD7K3F40I5 set_global_assignment -name TOP_LEVEL_ENTITY system_top set_global_assignment -name SDC_FILE system_constr.sdc set_global_assignment -name QSYS_FILE system_bd.qsys +set_global_assignment -name QIP_FILE system_adc_mon.qip set_global_assignment -name VERILOG_FILE $ad_hdl_dir/library/common/altera/ad_jesd_align.v set_global_assignment -name VERILOG_FILE $ad_hdl_dir/library/common/altera/ad_xcvr_rx_rst.v set_global_assignment -name VERILOG_FILE ../common/fmcjesdadc1_spi.v @@ -64,8 +67,9 @@ set_instance_assignment -name IO_STANDARD "2.5 V" -to spi_sdio set_global_assignment -name SYNCHRONIZER_IDENTIFICATION AUTO set_global_assignment -name ENABLE_ADVANCED_IO_TIMING ON set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER ON -set_global_assignment -name TIMEQUEST_REPORT_SCRIPT fmcjesdadc1_sta.tcl +set_global_assignment -name TIMEQUEST_DO_REPORT_TIMING ON +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL ON set_global_assignment -name ON_CHIP_BITSTREAM_DECOMPRESSION OFF -execute_flow --compile +execute_flow -compile diff --git a/projects/fmcjesdadc1/a5gt/system_top.v b/projects/fmcjesdadc1/a5gt/system_top.v index 193ac3558..47c0a1209 100755 --- a/projects/fmcjesdadc1/a5gt/system_top.v +++ b/projects/fmcjesdadc1/a5gt/system_top.v @@ -185,13 +185,13 @@ module system_top ( wire adc0_dovf_s; wire adc0_dwr_s; wire adc0_mon_valid_s; - wire [119:0] adc0_mon_data_s; + wire [ 55:0] adc0_mon_data_s; wire [ 63:0] adc1_ddata_s; wire adc1_dsync_s; wire adc1_dovf_s; wire adc1_dwr_s; wire adc1_mon_valid_s; - wire [119:0] adc1_mon_data_s; + wire [ 55:0] adc1_mon_data_s; wire [ 3:0] rx_ip_sof_s; wire [127:0] rx_ip_data_s; wire [127:0] rx_data_s; @@ -246,13 +246,19 @@ module system_top ( end endgenerate - assign rx_xcvr_status_s[15:14] = 2'd0; + assign rx_xcvr_status_s[15:15] = 1'd0; + assign rx_xcvr_status_s[14:14] = rx_sync; assign rx_xcvr_status_s[13:13] = rx_ready_s; assign rx_xcvr_status_s[12:12] = rx_pll_locked_s; assign rx_xcvr_status_s[11: 8] = rx_rst_state_s; assign rx_xcvr_status_s[ 7: 4] = rx_cdr_locked_s; assign rx_xcvr_status_s[ 3: 0] = rx_cal_busy_s; + system_adc_mon i_adc_mon ( + .acq_clk (rx_clk), + .acq_data_in ({adc1_mon_data_s, adc0_mon_data_s}), + .acq_trigger_in ({adc1_mon_valid_s, adc0_mon_valid_s})); + ad_xcvr_rx_rst #(.NUM_OF_LANES (4)) i_xcvr_rx_rst ( .rx_clk (rx_clk), .rx_rstn (sys_resetn), @@ -275,7 +281,7 @@ module system_top ( .spi3_clk (spi_clk), .spi3_sdio (spi_sdio)); - system i_system ( + system_bd i_system_bd ( .sys_clk_clk (sys_clk), .sys_reset_reset_n (sys_resetn), .sys_125m_clk_clk (sys_125m_clk), From f8f2684b7ea970a4a83d81c087cdda2037c657b6 Mon Sep 17 00:00:00 2001 From: Rejeesh Kutty Date: Wed, 2 Apr 2014 16:45:41 -0400 Subject: [PATCH 08/18] up_gt: eyescan delay bug fix --- library/common/up_gt.v | 46 +++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/library/common/up_gt.v b/library/common/up_gt.v index bbbf7ef36..7031b1469 100644 --- a/library/common/up_gt.v +++ b/library/common/up_gt.v @@ -303,12 +303,10 @@ module up_gt ( reg es_ready = 'd0; reg [15:0] drp_rdata_int = 'd0; reg drp_ready_int = 'd0; - reg es_start_m1 = 'd0; - reg es_start_m2 = 'd0; - reg es_start_m3 = 'd0; - reg es_stop_m1 = 'd0; - reg es_stop_m2 = 'd0; - reg es_stop_m3 = 'd0; + reg es_start_d1 = 'd0; + reg es_start_d2 = 'd0; + reg es_stop_d1 = 'd0; + reg es_stop_d2 = 'd0; reg es_start = 'd0; reg es_stop = 'd0; @@ -335,6 +333,8 @@ module up_gt ( wire [15:0] up_drp_rdata_s; wire up_drp_status_s; wire [ 7:0] up_drp_rx_rate_s; + wire es_start_s; + wire es_stop_s; wire up_es_dmaerr_s; wire up_es_status_s; @@ -711,32 +711,30 @@ module up_gt ( always @(posedge drp_clk) begin if (drp_rst == 1'b1) begin - es_start_m1 <= 'd0; - es_start_m2 <= 'd0; - es_start_m3 <= 'd0; - es_stop_m1 <= 'd0; - es_stop_m2 <= 'd0; - es_stop_m3 <= 'd0; + es_start_d1 <= 'd0; + es_start_d2 <= 'd0; + es_stop_d1 <= 'd0; + es_stop_d2 <= 'd0; es_start <= 'd0; es_stop <= 'd0; end else begin - es_start_m1 <= up_es_start; - es_start_m2 <= es_start_m1; - es_start_m3 <= es_start_m2; - es_stop_m1 <= up_es_stop; - es_stop_m2 <= es_stop_m1; - es_stop_m3 <= es_stop_m2; - es_start <= es_start_m2 & ~es_start_m3; - es_stop <= es_stop_m2 & ~es_stop_m3; + es_start_d1 <= es_start_s; + es_start_d2 <= es_start_d1; + es_stop_d1 <= es_stop_s; + es_stop_d2 <= es_stop_d1; + es_start <= es_start_d1 & ~es_start_d2; + es_stop <= es_stop_d1 & ~es_stop_d2; end end // es control & status - up_xfer_cntrl #(.DATA_WIDTH(258)) i_es_xfer_cntrl ( + up_xfer_cntrl #(.DATA_WIDTH(260)) i_es_xfer_cntrl ( .up_rstn (up_rstn), .up_clk (up_clk), - .up_data_cntrl ({ up_es_init, + .up_data_cntrl ({ up_es_start, + up_es_stop, + up_es_init, up_es_prescale, up_es_voffset_step, up_es_voffset_max, @@ -757,7 +755,9 @@ module up_gt ( up_es_qdata4}), .d_rst (drp_rst), .d_clk (drp_clk), - .d_data_cntrl ({ es_init, + .d_data_cntrl ({ es_start_s, + es_stop_s, + es_init, es_prescale, es_voffset_step, es_voffset_max, From d0a8b4a63c0f393fd0e65614506f9d83a38c4355 Mon Sep 17 00:00:00 2001 From: Adrian Costina Date: Thu, 3 Apr 2014 15:59:33 +0300 Subject: [PATCH 09/18] kc705,common: Mem_interconnect maximize performance For FMCOMMS1, when both the ADC and DAC DMAs are active, the system was unstable. With this fix, it the system seems to be stable. --- projects/common/kc705/kc705_system_bd.tcl | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/common/kc705/kc705_system_bd.tcl b/projects/common/kc705/kc705_system_bd.tcl index 0445e7af6..026fee2ec 100644 --- a/projects/common/kc705/kc705_system_bd.tcl +++ b/projects/common/kc705/kc705_system_bd.tcl @@ -118,6 +118,7 @@ set_property -dict [list CONFIG.NUM_SI {8}] $axi_mem_interconnect set_property -dict [list CONFIG.NUM_MI {1}] $axi_mem_interconnect set_property -dict [list CONFIG.ENABLE_ADVANCED_OPTIONS {1}] $axi_mem_interconnect set_property -dict [list CONFIG.XBAR_DATA_WIDTH {512}] $axi_mem_interconnect +set_property -dict [list CONFIG.STRATEGY {2}] $axi_mem_interconnect # instance: default peripherals From 12e5cc91bd826e32d7cfb3588d5a487ca37ab6d2 Mon Sep 17 00:00:00 2001 From: Rejeesh Kutty Date: Wed, 2 Apr 2014 10:52:37 -0400 Subject: [PATCH 10/18] make signaltap/timing part of the flow --- projects/fmcjesdadc1/a5gt/system_project.tcl | 2 +- projects/fmcjesdadc1/a5gt/system_timing.tcl | 8 -------- projects/fmcjesdadc1/a5gt/system_top.v | 15 ++++++++++----- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/projects/fmcjesdadc1/a5gt/system_project.tcl b/projects/fmcjesdadc1/a5gt/system_project.tcl index b546a2583..36d8fcc1e 100755 --- a/projects/fmcjesdadc1/a5gt/system_project.tcl +++ b/projects/fmcjesdadc1/a5gt/system_project.tcl @@ -9,7 +9,6 @@ set_global_assignment -name DEVICE 5AGTFD7K3F40I5 set_global_assignment -name TOP_LEVEL_ENTITY system_top set_global_assignment -name SDC_FILE system_constr.sdc set_global_assignment -name QSYS_FILE system_bd.qsys -set_global_assignment -name QIP_FILE system_adc_mon.qip set_global_assignment -name VERILOG_FILE $ad_hdl_dir/library/common/altera/ad_jesd_align.v set_global_assignment -name VERILOG_FILE $ad_hdl_dir/library/common/altera/ad_xcvr_rx_rst.v set_global_assignment -name VERILOG_FILE ../common/fmcjesdadc1_spi.v @@ -69,6 +68,7 @@ set_global_assignment -name ENABLE_ADVANCED_IO_TIMING ON set_global_assignment -name USE_TIMEQUEST_TIMING_ANALYZER ON set_global_assignment -name TIMEQUEST_DO_REPORT_TIMING ON set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL ON +set_global_assignment -name TIMEQUEST_REPORT_SCRIPT system_timing.tcl set_global_assignment -name ON_CHIP_BITSTREAM_DECOMPRESSION OFF execute_flow -compile diff --git a/projects/fmcjesdadc1/a5gt/system_timing.tcl b/projects/fmcjesdadc1/a5gt/system_timing.tcl index 9f27fc610..e1f355d44 100755 --- a/projects/fmcjesdadc1/a5gt/system_timing.tcl +++ b/projects/fmcjesdadc1/a5gt/system_timing.tcl @@ -1,11 +1,3 @@ -package require ::quartus::flow -project_open fmcjesdadc1_a5gt -execute_module -tool fit - -create_timing_netlist -read_sdc system_constr.sdc -update_timing_netlist - report_timing -detail path_only -npaths 20 -file timing_impl.log diff --git a/projects/fmcjesdadc1/a5gt/system_top.v b/projects/fmcjesdadc1/a5gt/system_top.v index 47c0a1209..b7722d8dc 100755 --- a/projects/fmcjesdadc1/a5gt/system_top.v +++ b/projects/fmcjesdadc1/a5gt/system_top.v @@ -235,6 +235,16 @@ module system_top ( rx_sysref <= rx_sysref_m2 & ~rx_sysref_m3; end + sld_signaltap #( + .sld_data_bits (112), + .sld_mem_address_bits (10), + .sld_sample_depth (1024), + .sld_trigger_bits (2)) + i_signaltap ( + .acq_clk (rx_clk), + .acq_data_in ({rx_sysref, rx_sync, adc1_mon_data_s, adc0_mon_data_s}), + .acq_trigger_in ({rx_sysref, rx_sync})); + genvar n; generate for (n = 0; n < 4; n = n + 1) begin: g_align_1 @@ -254,11 +264,6 @@ module system_top ( assign rx_xcvr_status_s[ 7: 4] = rx_cdr_locked_s; assign rx_xcvr_status_s[ 3: 0] = rx_cal_busy_s; - system_adc_mon i_adc_mon ( - .acq_clk (rx_clk), - .acq_data_in ({adc1_mon_data_s, adc0_mon_data_s}), - .acq_trigger_in ({adc1_mon_valid_s, adc0_mon_valid_s})); - ad_xcvr_rx_rst #(.NUM_OF_LANES (4)) i_xcvr_rx_rst ( .rx_clk (rx_clk), .rx_rstn (sys_resetn), From 04ab34c8edd584c829b02c9de730c95591a71d1c Mon Sep 17 00:00:00 2001 From: Rejeesh Kutty Date: Wed, 2 Apr 2014 10:53:45 -0400 Subject: [PATCH 11/18] a5gt: ethernet assignments --- projects/common/a5gt/a5gt_system_assign.tcl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/common/a5gt/a5gt_system_assign.tcl b/projects/common/a5gt/a5gt_system_assign.tcl index 98347fcf5..f881a1065 100755 --- a/projects/common/a5gt/a5gt_system_assign.tcl +++ b/projects/common/a5gt/a5gt_system_assign.tcl @@ -697,8 +697,8 @@ set_location_assignment PIN_N14 -to eth_rx_data[0] set_location_assignment PIN_N15 -to eth_rx_data[1] set_location_assignment PIN_P15 -to eth_rx_data[2] set_location_assignment PIN_B9 -to eth_rx_data[3] -set_location_assignment PIN_C9 -to eth_rx_cntrl[4] -set_location_assignment PIN_K18 -to eth_tx_clk_out[5] +set_location_assignment PIN_C9 -to eth_rx_cntrl +set_location_assignment PIN_K18 -to eth_tx_clk_out set_location_assignment PIN_L18 -to eth_tx_data[0] set_location_assignment PIN_R11 -to eth_tx_data[1] set_location_assignment PIN_T11 -to eth_tx_data[2] From 6a19b34a00b7dcb8698d29a10642a87c217baa5a Mon Sep 17 00:00:00 2001 From: Rejeesh Kutty Date: Thu, 3 Apr 2014 20:49:30 -0400 Subject: [PATCH 12/18] a5gt: added tightly coupled memory --- projects/fmcjesdadc1/a5gt/system_bd.qsys | 245 +++++++++++++------ projects/fmcjesdadc1/a5gt/system_project.tcl | 2 +- projects/fmcjesdadc1/a5gt/system_top.v | 17 +- 3 files changed, 183 insertions(+), 81 deletions(-) diff --git a/projects/fmcjesdadc1/a5gt/system_bd.qsys b/projects/fmcjesdadc1/a5gt/system_bd.qsys index 21571d98d..f4e026309 100755 --- a/projects/fmcjesdadc1/a5gt/system_bd.qsys +++ b/projects/fmcjesdadc1/a5gt/system_bd.qsys @@ -16,7 +16,7 @@ { datum baseAddress { - value = "86037728"; + value = "86041824"; type = "String"; } } @@ -37,7 +37,7 @@ { datum _sortIndex { - value = "17"; + value = "18"; type = "int"; } datum sopceditor_expanded @@ -50,7 +50,7 @@ { datum _sortIndex { - value = "19"; + value = "20"; type = "int"; } datum sopceditor_expanded @@ -63,7 +63,7 @@ { datum _sortIndex { - value = "18"; + value = "19"; type = "int"; } datum sopceditor_expanded @@ -76,7 +76,7 @@ { datum _sortIndex { - value = "20"; + value = "21"; type = "int"; } datum sopceditor_expanded @@ -89,7 +89,7 @@ { datum baseAddress { - value = "86037712"; + value = "86041808"; type = "String"; } } @@ -97,7 +97,7 @@ { datum baseAddress { - value = "86036480"; + value = "86040576"; type = "String"; } } @@ -105,7 +105,7 @@ { datum baseAddress { - value = "86037720"; + value = "86041816"; type = "String"; } } @@ -113,7 +113,7 @@ { datum baseAddress { - value = "86037504"; + value = "86041600"; type = "String"; } } @@ -121,7 +121,7 @@ { datum baseAddress { - value = "86037568"; + value = "86041664"; type = "String"; } } @@ -142,7 +142,15 @@ } datum baseAddress { - value = "86034432"; + value = "86038528"; + type = "String"; + } + } + element sys_jesd204b_s1_connect.s0 + { + datum baseAddress + { + value = "67108864"; type = "String"; } } @@ -167,19 +175,11 @@ type = "String"; } } - element sys_jesd204b_s1_connect.s0 + element sys_gpio.s1 { datum baseAddress { - value = "67108864"; - type = "String"; - } - } - element sys_timer.s1 - { - datum baseAddress - { - value = "86037664"; + value = "86041792"; type = "String"; } } @@ -191,6 +191,14 @@ type = "String"; } } + element sys_tcm_mem.s1 + { + datum baseAddress + { + value = "86032384"; + type = "String"; + } + } element sys_int_mem.s1 { datum _lockedAddress @@ -204,11 +212,19 @@ type = "String"; } } - element sys_gpio.s1 + element sys_timer.s1 { datum baseAddress { - value = "86037696"; + value = "86041760"; + type = "String"; + } + } + element sys_tcm_mem.s2 + { + datum baseAddress + { + value = "86032384"; type = "String"; } } @@ -233,14 +249,6 @@ type = "String"; } } - element axi_ad9250_1.s_axi - { - datum baseAddress - { - value = "85983232"; - type = "String"; - } - } element axi_dmac_0.s_axi { datum baseAddress @@ -249,11 +257,19 @@ type = "String"; } } + element axi_ad9250_1.s_axi + { + datum baseAddress + { + value = "85983232"; + type = "String"; + } + } element sys_spi.spi_control_port { datum baseAddress { - value = "86037632"; + value = "86041728"; type = "String"; } } @@ -282,7 +298,7 @@ { datum _sortIndex { - value = "4"; + value = "5"; type = "int"; } datum sopceditor_expanded @@ -295,7 +311,7 @@ { datum _sortIndex { - value = "6"; + value = "7"; type = "int"; } } @@ -303,7 +319,7 @@ { datum _sortIndex { - value = "16"; + value = "17"; type = "int"; } } @@ -311,7 +327,7 @@ { datum _sortIndex { - value = "5"; + value = "6"; type = "int"; } datum sopceditor_expanded @@ -324,7 +340,7 @@ { datum _sortIndex { - value = "7"; + value = "8"; type = "int"; } datum sopceditor_expanded @@ -337,7 +353,7 @@ { datum _sortIndex { - value = "10"; + value = "11"; type = "int"; } datum sopceditor_expanded @@ -350,7 +366,7 @@ { datum _sortIndex { - value = "8"; + value = "9"; type = "int"; } datum sopceditor_expanded @@ -363,7 +379,7 @@ { datum _sortIndex { - value = "9"; + value = "10"; type = "int"; } datum sopceditor_expanded @@ -376,7 +392,7 @@ { datum _sortIndex { - value = "14"; + value = "15"; type = "int"; } datum sopceditor_expanded @@ -389,7 +405,7 @@ { datum _sortIndex { - value = "13"; + value = "14"; type = "int"; } datum sopceditor_expanded @@ -415,7 +431,7 @@ { datum _sortIndex { - value = "25"; + value = "26"; type = "int"; } } @@ -423,7 +439,7 @@ { datum _sortIndex { - value = "24"; + value = "25"; type = "int"; } } @@ -431,7 +447,7 @@ { datum _sortIndex { - value = "22"; + value = "23"; type = "int"; } } @@ -439,7 +455,7 @@ { datum _sortIndex { - value = "21"; + value = "22"; type = "int"; } } @@ -447,7 +463,7 @@ { datum _sortIndex { - value = "23"; + value = "24"; type = "int"; } } @@ -468,7 +484,7 @@ { datum _sortIndex { - value = "15"; + value = "16"; type = "int"; } datum sopceditor_expanded @@ -477,11 +493,19 @@ type = "boolean"; } } + element sys_tcm_mem + { + datum _sortIndex + { + value = "4"; + type = "int"; + } + } element sys_timer { datum _sortIndex { - value = "12"; + value = "13"; type = "int"; } datum sopceditor_expanded @@ -494,7 +518,7 @@ { datum _sortIndex { - value = "11"; + value = "12"; type = "int"; } datum sopceditor_expanded @@ -519,16 +543,16 @@ } ]]> - + - + - + fmcjesdadc1_a5gt.qpf @@ -756,7 +780,7 @@ - + @@ -992,7 +1016,7 @@ - + @@ -1034,7 +1058,7 @@ - + @@ -1043,7 +1067,7 @@ - + @@ -1059,26 +1083,26 @@ - + - + - ]]> - ]]> + ]]> + ]]> ADDRESS_STALL 1 ADVANCED_INFO 0 ANY_QFP 0 CELL_LEVEL_BACK_ANNOTATION_DISABLED 0 COMPILER_SUPPORT 1 DSP 1 DSP_SHIFTER_BLOCK 0 DUMP_ASM_LAB_BITS_FOR_POWER 0 EMUL 0 ENABLE_ADVANCED_IO_ANALYSIS_GUI_FEATURES 1 ENABLE_PIN_PLANNER 0 ENGINEERING_SAMPLE 0 EPCS 1 ESB 0 FAKE1 0 FAKE2 0 FAKE3 0 FAMILY_LEVEL_INSTALLATION_ONLY 0 FASTEST 0 FINAL_TIMING_MODEL 0 FITTER_USE_FALLING_EDGE_DELAY 1 GENERATE_DC_ON_CURRENT_WARNING_FOR_INTERNAL_CLAMPING_DIODE 1 HARDCOPY 0 HAS_18_BIT_MULTS 1 HAS_ACE_SUPPORT 1 HAS_ACTIVE_PARALLEL_FLASH_SUPPORT 0 HAS_ADJUSTABLE_OUTPUT_IO_TIMING_MEAS_POINT 1 HAS_ADVANCED_IO_INVERTED_CORNER 1 HAS_ADVANCED_IO_POWER_SUPPORT 1 HAS_ADVANCED_IO_TIMING_SUPPORT 1 HAS_ALM_SUPPORT 1 HAS_ATOM_AND_ROUTING_POWER_MODELED_TOGETHER 0 HAS_AUTO_DERIVE_CLOCK_UNCERTAINTY_SUPPORT 1 HAS_AUTO_FIT_SUPPORT 1 HAS_BALANCED_OPT_TECHNIQUE_SUPPORT 1 HAS_BENEFICIAL_SKEW_SUPPORT 0 HAS_BITLEVEL_DRIVE_STRENGTH_CONTROL 1 HAS_BSDL_FILE_GENERATION 1 HAS_CDB_RE_NETWORK_PRESERVATION_SUPPORT 0 HAS_CGA_SUPPORT 1 HAS_CHECK_NETLIST_SUPPORT 1 HAS_CLOCK_REGION_CHECKER_ENABLED 1 HAS_CORE_JUNCTION_TEMP_DERATING 0 HAS_CROSSTALK_SUPPORT 0 HAS_CUSTOM_REGION_SUPPORT 1 HAS_DAP_JTAG_FROM_HPS 0 HAS_DATA_DRIVEN_ACVQ_HSSI_SUPPORT 1 HAS_DDB_FDI_SUPPORT 1 HAS_DESIGN_ANALYZER_SUPPORT 1 HAS_DETAILED_IO_RAIL_POWER_MODEL 1 HAS_DETAILED_LEIM_STATIC_POWER_MODEL 0 HAS_DETAILED_LE_POWER_MODEL 1 HAS_DETAILED_ROUTING_MUX_STATIC_POWER_MODEL 0 HAS_DETAILED_THERMAL_CIRCUIT_PARAMETER_SUPPORT 1 HAS_DEVICE_MIGRATION_SUPPORT 1 HAS_DIAGONAL_MIGRATION_SUPPORT 0 HAS_EMIF_TOOLKIT_SUPPORT 1 HAS_ERROR_DETECTION_SUPPORT 1 HAS_FAMILY_VARIANT_MIGRATION_SUPPORT 0 HAS_FANOUT_FREE_NODE_SUPPORT 1 HAS_FAST_FIT_SUPPORT 1 HAS_FITTER_EARLY_TIMING_ESTIMATE_SUPPORT 0 HAS_FITTER_ECO_SUPPORT 1 HAS_FIT_NETLIST_OPT_RETIME_SUPPORT 1 HAS_FIT_NETLIST_OPT_SUPPORT 1 HAS_FORMAL_VERIFICATION_SUPPORT 1 HAS_FPGA_XCHANGE_SUPPORT 1 HAS_FSAC_LUTRAM_REGISTER_PACKING_SUPPORT 1 HAS_FULL_DAT_MIN_TIMING_SUPPORT 1 HAS_FULL_INCREMENTAL_DESIGN_SUPPORT 1 HAS_FUNCTIONAL_SIMULATION_SUPPORT 0 HAS_FUNCTIONAL_VERILOG_SIMULATION_SUPPORT 1 HAS_FUNCTIONAL_VHDL_SIMULATION_SUPPORT 1 HAS_GLITCH_FILTERING_SUPPORT 1 HAS_HARDCOPYII_SUPPORT 0 HAS_HC_READY_SUPPORT 0 HAS_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_HOLD_TIME_AVOIDANCE_ACROSS_CLOCK_SPINE_SUPPORT 1 HAS_HSPICE_WRITER_SUPPORT 1 HAS_HSSI_POWER_CALCULATOR 1 HAS_IBISO_WRITER_SUPPORT 0 HAS_ICD_DATA_IP 0 HAS_INCREMENTAL_DAT_SUPPORT 1 HAS_INCREMENTAL_SYNTHESIS_SUPPORT 1 HAS_INTERFACE_PLANNER_SUPPORT 1 HAS_IO_ASSIGNMENT_ANALYSIS_SUPPORT 1 HAS_IO_DECODER 1 HAS_IO_PLACEMENT_OPTIMIZATION_SUPPORT 1 HAS_IO_SMART_RECOMPILE_SUPPORT 0 HAS_JITTER_SUPPORT 1 HAS_JTAG_SLD_HUB_SUPPORT 1 HAS_LIMITED_TCL_FITTER_SUPPORT 1 HAS_LOGICAL_FLOORPLANNER_SUPPORT 0 HAS_LOGIC_LOCK_SUPPORT 1 HAS_MICROPROCESSOR 0 HAS_MIF_SMART_COMPILE_SUPPORT 1 HAS_MINMAX_TIMING_MODELING_SUPPORT 1 HAS_MIN_TIMING_ANALYSIS_SUPPORT 1 HAS_MUX_RESTRUCTURE_SUPPORT 1 HAS_NEW_HC_FLOW_SUPPORT 0 HAS_NEW_SERDES_MAX_RESOURCE_COUNT_REPORTING_SUPPORT 0 HAS_NEW_VPR_SUPPORT 1 HAS_NONSOCKET_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_NO_HARDBLOCK_PARTITION_SUPPORT 0 HAS_NO_JTAG_USERCODE_SUPPORT 0 HAS_OPERATING_SETTINGS_AND_CONDITIONS_REPORTING_SUPPORT 1 HAS_PAD_LOCATION_ASSIGNMENT_SUPPORT 0 HAS_PARTIAL_RECONFIG_SUPPORT 1 HAS_PASSIVE_PARALLEL_SUPPORT 0 HAS_PHYSICAL_NETLIST_OUTPUT 0 HAS_PHYSICAL_ROUTING_SUPPORT 1 HAS_PIN_SPECIFIC_VOLTAGE_SUPPORT 1 HAS_PLDM_REF_SUPPORT 0 HAS_POWER_BINNING_LIMITS_DATA 1 HAS_POWER_ESTIMATION_SUPPORT 1 HAS_PRELIMINARY_CLOCK_UNCERTAINTY_NUMBERS 0 HAS_PRE_FITTER_FPP_SUPPORT 1 HAS_PRE_FITTER_LUTRAM_NETLIST_CHECKER_ENABLED 1 HAS_PVA_SUPPORT 1 HAS_RAPID_RECOMPILE_SUPPORT 0 HAS_RCF_SUPPORT 1 HAS_RCF_SUPPORT_FOR_DEBUGGING 0 HAS_RED_BLACK_SEPARATION_SUPPORT 0 HAS_RE_LEVEL_TIMING_GRAPH_SUPPORT 1 HAS_RISEFALL_DELAY_SUPPORT 1 HAS_SIGNAL_PROBE_SUPPORT 1 HAS_SIGNAL_TAP_SUPPORT 1 HAS_SIMULATOR_SUPPORT 0 HAS_SPLIT_IO_SUPPORT 1 HAS_SPLIT_LC_SUPPORT 1 HAS_STRICT_PRESERVATION_SUPPORT 0 HAS_SYNTH_FSYN_NETLIST_OPT_SUPPORT 1 HAS_SYNTH_NETLIST_OPT_RETIME_SUPPORT 0 HAS_SYNTH_NETLIST_OPT_SUPPORT 1 HAS_TCL_FITTER_SUPPORT 0 HAS_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_TEMPLATED_REGISTER_PACKING_SUPPORT 1 HAS_TIME_BORROWING_SUPPORT 0 HAS_TIMING_DRIVEN_SYNTHESIS_SUPPORT 1 HAS_TIMING_INFO_SUPPORT 1 HAS_TIMING_OPERATING_CONDITIONS 1 HAS_TIMING_SIMULATION_SUPPORT 0 HAS_TITAN_BASED_MAC_REGISTER_PACKER_SUPPORT 1 HAS_U2B2_SUPPORT 0 HAS_USER_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_USE_FITTER_INFO_SUPPORT 0 HAS_VCCPD_POWER_RAIL 1 HAS_VERTICAL_MIGRATION_SUPPORT 1 HAS_VIEWDRAW_SYMBOL_SUPPORT 0 HAS_VIO_SUPPORT 1 HAS_VIRTUAL_DEVICES 0 HAS_WYSIWYG_DFFEAS_SUPPORT 1 HAS_XIBISO_WRITER_SUPPORT 1 IFP_USE_LEGACY_IO_CHECKER 1 INCREMENTAL_DESIGN_SUPPORTS_COMPATIBLE_CONSTRAINTS 0 INSTALLED 0 INTERNAL_POF_SUPPORT_ENABLED 0 INTERNAL_USE_ONLY 0 ISSUE_MILITARY_TEMPERATURE_WARNING 0 IS_CONFIG_ROM 0 IS_DEFAULT_FAMILY 0 IS_HARDCOPY_FAMILY 0 IS_HBGA_PACKAGE 0 IS_HIGH_CURRENT_PART 0 IS_LOW_POWER_PART 0 IS_SDM_ONLY_PACKAGE 0 LVDS_IO 1 M10K_MEMORY 1 M144K_MEMORY 1 M20K_MEMORY 0 M4K_MEMORY 0 M512_MEMORY 0 M9K_MEMORY 0 MLAB_MEMORY 1 MRAM_MEMORY 0 NOT_LISTED 0 NOT_MIGRATABLE 0 NO_FITTER_DELAY_CACHE_GENERATED 0 NO_PIN_OUT 0 NO_POF 0 NO_RPE_SUPPORT 0 NO_SUPPORT_FOR_LOGICLOCK_CONTENT_BACK_ANNOTATION 1 NO_SUPPORT_FOR_STA_CLOCK_UNCERTAINTY_CHECK 0 NO_TDC_SUPPORT 0 POSTFIT_BAK_DATABASE_EXPORT_ENABLED 1 POSTMAP_BAK_DATABASE_EXPORT_ENABLED 1 PROGRAMMER_SUPPORT 1 QFIT_IN_DEVELOPMENT 0 QMAP_IN_DEVELOPMENT 0 RAM_LOGICAL_NAME_CHECKING_IN_CUT_ENABLED 1 REPORTS_METASTABILITY_MTBF 1 REQUIRES_INSTALLATION_PATCH 0 REQUIRES_LIST_OF_TEMPERATURE_AND_VOLTAGE_OPERATING_CONDITIONS 1 RESERVES_SIGNAL_PROBE_PINS 0 RESOLVE_MAX_FANOUT_EARLY 1 RESOLVE_MAX_FANOUT_LATE 0 RESPECTS_FIXED_SIZED_LOCKED_LOCATION_LOGICLOCK 1 RESTRICTED_USER_SELECTION 0 RISEFALL_SUPPORT_IS_HIDDEN 0 SHOW_HIDDEN_FAMILY_IN_PROGRAMMER 0 STRICT_TIMING_DB_CHECKS 1 SUPPORTS_ADDITIONAL_OPTIONS_FOR_UNUSED_IO 1 SUPPORTS_CRC 1 SUPPORTS_DIFFERENTIAL_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_DSP_BALANCING_BACK_ANNOTATION 0 SUPPORTS_GENERATION_OF_EARLY_POWER_ESTIMATOR_FILE 1 SUPPORTS_GLOBAL_SIGNAL_BACK_ANNOTATION 1 SUPPORTS_MAC_CHAIN_OUT_ADDER 1 SUPPORTS_RAM_PACKING_BACK_ANNOTATION 0 SUPPORTS_REG_PACKING_BACK_ANNOTATION 0 SUPPORTS_SIGNALPROBE_REGISTER_PIPELINING 1 SUPPORTS_SINGLE_ENDED_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_USER_MANUAL_LOGIC_DUPLICATION 1 TMV_RUN_CUSTOMIZABLE_VIEWER 1 TMV_RUN_INTERNAL_DETAILS 1 TMV_RUN_INTERNAL_DETAILS_ON_IO 0 TMV_RUN_INTERNAL_DETAILS_ON_IOBUF 1 TMV_RUN_INTERNAL_DETAILS_ON_LCELL 0 TMV_RUN_INTERNAL_DETAILS_ON_LRAM 0 TRANSCEIVER_3G_BLOCK 1 TRANSCEIVER_6G_BLOCK 1 USES_ACV_FOR_FLED 1 USES_ADB_FOR_BACK_ANNOTATION 1 USES_ALTERA_LNSIM 0 USES_ASIC_ROUTING_POWER_CALCULATOR 0 USES_DATA_DRIVEN_PLL_COMPUTATION_UTIL 1 USES_DEV 1 USES_ICP_FOR_ECO_FITTER 0 USES_LIBERTY_TIMING 0 USES_POWER_SIGNAL_ACTIVITIES 1 USES_THIRD_GENERATION_TIMING_MODELS_TIS 1 USES_U2B2_TIMING_MODELS 0 USE_ADVANCED_IO_POWER_BY_DEFAULT 1 USE_ADVANCED_IO_TIMING_BY_DEFAULT 1 USE_BASE_FAMILY_DDB_PATH 0 USE_OCT_AUTO_CALIBRATION 1 USE_RELAX_IO_ASSIGNMENT_RULES 0 USE_RISEFALL_ONLY 1 USE_SEPARATE_LIST_FOR_TECH_MIGRATION 0 USE_SINGLE_COMPILER_PASS_PLL_MIF_FILE_WRITER 1 USE_TITAN_IO_BASED_IO_REGISTER_PACKER_UTIL 1 USING_28NM_OR_OLDER_TIMING_METHODOLOGY 1 WYSIWYG_BUS_WIDTH_CHECKING_IN_CUT_ENABLED 1 - + ]]> - + ]]> @@ -1419,7 +1443,7 @@ - + - + - + - + @@ -1994,6 +2018,33 @@ + + + + + + + + + + + + + + + + + + + + $${FILENAME}_sys_tcm_mem + + ADDRESS_STALL 1 ADVANCED_INFO 0 ANY_QFP 0 CELL_LEVEL_BACK_ANNOTATION_DISABLED 0 COMPILER_SUPPORT 1 DSP 1 DSP_SHIFTER_BLOCK 0 DUMP_ASM_LAB_BITS_FOR_POWER 0 EMUL 0 ENABLE_ADVANCED_IO_ANALYSIS_GUI_FEATURES 1 ENABLE_PIN_PLANNER 0 ENGINEERING_SAMPLE 0 EPCS 1 ESB 0 FAKE1 0 FAKE2 0 FAKE3 0 FAMILY_LEVEL_INSTALLATION_ONLY 0 FASTEST 0 FINAL_TIMING_MODEL 0 FITTER_USE_FALLING_EDGE_DELAY 1 GENERATE_DC_ON_CURRENT_WARNING_FOR_INTERNAL_CLAMPING_DIODE 1 HARDCOPY 0 HAS_18_BIT_MULTS 1 HAS_ACE_SUPPORT 1 HAS_ACTIVE_PARALLEL_FLASH_SUPPORT 0 HAS_ADJUSTABLE_OUTPUT_IO_TIMING_MEAS_POINT 1 HAS_ADVANCED_IO_INVERTED_CORNER 1 HAS_ADVANCED_IO_POWER_SUPPORT 1 HAS_ADVANCED_IO_TIMING_SUPPORT 1 HAS_ALM_SUPPORT 1 HAS_ATOM_AND_ROUTING_POWER_MODELED_TOGETHER 0 HAS_AUTO_DERIVE_CLOCK_UNCERTAINTY_SUPPORT 1 HAS_AUTO_FIT_SUPPORT 1 HAS_BALANCED_OPT_TECHNIQUE_SUPPORT 1 HAS_BENEFICIAL_SKEW_SUPPORT 0 HAS_BITLEVEL_DRIVE_STRENGTH_CONTROL 1 HAS_BSDL_FILE_GENERATION 1 HAS_CDB_RE_NETWORK_PRESERVATION_SUPPORT 0 HAS_CGA_SUPPORT 1 HAS_CHECK_NETLIST_SUPPORT 1 HAS_CLOCK_REGION_CHECKER_ENABLED 1 HAS_CORE_JUNCTION_TEMP_DERATING 0 HAS_CROSSTALK_SUPPORT 0 HAS_CUSTOM_REGION_SUPPORT 1 HAS_DAP_JTAG_FROM_HPS 0 HAS_DATA_DRIVEN_ACVQ_HSSI_SUPPORT 1 HAS_DDB_FDI_SUPPORT 1 HAS_DESIGN_ANALYZER_SUPPORT 1 HAS_DETAILED_IO_RAIL_POWER_MODEL 1 HAS_DETAILED_LEIM_STATIC_POWER_MODEL 0 HAS_DETAILED_LE_POWER_MODEL 1 HAS_DETAILED_ROUTING_MUX_STATIC_POWER_MODEL 0 HAS_DETAILED_THERMAL_CIRCUIT_PARAMETER_SUPPORT 1 HAS_DEVICE_MIGRATION_SUPPORT 1 HAS_DIAGONAL_MIGRATION_SUPPORT 0 HAS_EMIF_TOOLKIT_SUPPORT 1 HAS_ERROR_DETECTION_SUPPORT 1 HAS_FAMILY_VARIANT_MIGRATION_SUPPORT 0 HAS_FANOUT_FREE_NODE_SUPPORT 1 HAS_FAST_FIT_SUPPORT 1 HAS_FITTER_EARLY_TIMING_ESTIMATE_SUPPORT 0 HAS_FITTER_ECO_SUPPORT 1 HAS_FIT_NETLIST_OPT_RETIME_SUPPORT 1 HAS_FIT_NETLIST_OPT_SUPPORT 1 HAS_FORMAL_VERIFICATION_SUPPORT 1 HAS_FPGA_XCHANGE_SUPPORT 1 HAS_FSAC_LUTRAM_REGISTER_PACKING_SUPPORT 1 HAS_FULL_DAT_MIN_TIMING_SUPPORT 1 HAS_FULL_INCREMENTAL_DESIGN_SUPPORT 1 HAS_FUNCTIONAL_SIMULATION_SUPPORT 0 HAS_FUNCTIONAL_VERILOG_SIMULATION_SUPPORT 1 HAS_FUNCTIONAL_VHDL_SIMULATION_SUPPORT 1 HAS_GLITCH_FILTERING_SUPPORT 1 HAS_HARDCOPYII_SUPPORT 0 HAS_HC_READY_SUPPORT 0 HAS_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_HOLD_TIME_AVOIDANCE_ACROSS_CLOCK_SPINE_SUPPORT 1 HAS_HSPICE_WRITER_SUPPORT 1 HAS_HSSI_POWER_CALCULATOR 1 HAS_IBISO_WRITER_SUPPORT 0 HAS_ICD_DATA_IP 0 HAS_INCREMENTAL_DAT_SUPPORT 1 HAS_INCREMENTAL_SYNTHESIS_SUPPORT 1 HAS_INTERFACE_PLANNER_SUPPORT 1 HAS_IO_ASSIGNMENT_ANALYSIS_SUPPORT 1 HAS_IO_DECODER 1 HAS_IO_PLACEMENT_OPTIMIZATION_SUPPORT 1 HAS_IO_SMART_RECOMPILE_SUPPORT 0 HAS_JITTER_SUPPORT 1 HAS_JTAG_SLD_HUB_SUPPORT 1 HAS_LIMITED_TCL_FITTER_SUPPORT 1 HAS_LOGICAL_FLOORPLANNER_SUPPORT 0 HAS_LOGIC_LOCK_SUPPORT 1 HAS_MICROPROCESSOR 0 HAS_MIF_SMART_COMPILE_SUPPORT 1 HAS_MINMAX_TIMING_MODELING_SUPPORT 1 HAS_MIN_TIMING_ANALYSIS_SUPPORT 1 HAS_MUX_RESTRUCTURE_SUPPORT 1 HAS_NEW_HC_FLOW_SUPPORT 0 HAS_NEW_SERDES_MAX_RESOURCE_COUNT_REPORTING_SUPPORT 0 HAS_NEW_VPR_SUPPORT 1 HAS_NONSOCKET_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_NO_HARDBLOCK_PARTITION_SUPPORT 0 HAS_NO_JTAG_USERCODE_SUPPORT 0 HAS_OPERATING_SETTINGS_AND_CONDITIONS_REPORTING_SUPPORT 1 HAS_PAD_LOCATION_ASSIGNMENT_SUPPORT 0 HAS_PARTIAL_RECONFIG_SUPPORT 1 HAS_PASSIVE_PARALLEL_SUPPORT 0 HAS_PHYSICAL_NETLIST_OUTPUT 0 HAS_PHYSICAL_ROUTING_SUPPORT 1 HAS_PIN_SPECIFIC_VOLTAGE_SUPPORT 1 HAS_PLDM_REF_SUPPORT 0 HAS_POWER_BINNING_LIMITS_DATA 1 HAS_POWER_ESTIMATION_SUPPORT 1 HAS_PRELIMINARY_CLOCK_UNCERTAINTY_NUMBERS 0 HAS_PRE_FITTER_FPP_SUPPORT 1 HAS_PRE_FITTER_LUTRAM_NETLIST_CHECKER_ENABLED 1 HAS_PVA_SUPPORT 1 HAS_RAPID_RECOMPILE_SUPPORT 0 HAS_RCF_SUPPORT 1 HAS_RCF_SUPPORT_FOR_DEBUGGING 0 HAS_RED_BLACK_SEPARATION_SUPPORT 0 HAS_RE_LEVEL_TIMING_GRAPH_SUPPORT 1 HAS_RISEFALL_DELAY_SUPPORT 1 HAS_SIGNAL_PROBE_SUPPORT 1 HAS_SIGNAL_TAP_SUPPORT 1 HAS_SIMULATOR_SUPPORT 0 HAS_SPLIT_IO_SUPPORT 1 HAS_SPLIT_LC_SUPPORT 1 HAS_STRICT_PRESERVATION_SUPPORT 0 HAS_SYNTH_FSYN_NETLIST_OPT_SUPPORT 1 HAS_SYNTH_NETLIST_OPT_RETIME_SUPPORT 0 HAS_SYNTH_NETLIST_OPT_SUPPORT 1 HAS_TCL_FITTER_SUPPORT 0 HAS_TECHNOLOGY_MIGRATION_SUPPORT 0 HAS_TEMPLATED_REGISTER_PACKING_SUPPORT 1 HAS_TIME_BORROWING_SUPPORT 0 HAS_TIMING_DRIVEN_SYNTHESIS_SUPPORT 1 HAS_TIMING_INFO_SUPPORT 1 HAS_TIMING_OPERATING_CONDITIONS 1 HAS_TIMING_SIMULATION_SUPPORT 0 HAS_TITAN_BASED_MAC_REGISTER_PACKER_SUPPORT 1 HAS_U2B2_SUPPORT 0 HAS_USER_HIGH_SPEED_LOW_POWER_TILE_SUPPORT 0 HAS_USE_FITTER_INFO_SUPPORT 0 HAS_VCCPD_POWER_RAIL 1 HAS_VERTICAL_MIGRATION_SUPPORT 1 HAS_VIEWDRAW_SYMBOL_SUPPORT 0 HAS_VIO_SUPPORT 1 HAS_VIRTUAL_DEVICES 0 HAS_WYSIWYG_DFFEAS_SUPPORT 1 HAS_XIBISO_WRITER_SUPPORT 1 IFP_USE_LEGACY_IO_CHECKER 1 INCREMENTAL_DESIGN_SUPPORTS_COMPATIBLE_CONSTRAINTS 0 INSTALLED 0 INTERNAL_POF_SUPPORT_ENABLED 0 INTERNAL_USE_ONLY 0 ISSUE_MILITARY_TEMPERATURE_WARNING 0 IS_CONFIG_ROM 0 IS_DEFAULT_FAMILY 0 IS_HARDCOPY_FAMILY 0 IS_HBGA_PACKAGE 0 IS_HIGH_CURRENT_PART 0 IS_LOW_POWER_PART 0 IS_SDM_ONLY_PACKAGE 0 LVDS_IO 1 M10K_MEMORY 1 M144K_MEMORY 1 M20K_MEMORY 0 M4K_MEMORY 0 M512_MEMORY 0 M9K_MEMORY 0 MLAB_MEMORY 1 MRAM_MEMORY 0 NOT_LISTED 0 NOT_MIGRATABLE 0 NO_FITTER_DELAY_CACHE_GENERATED 0 NO_PIN_OUT 0 NO_POF 0 NO_RPE_SUPPORT 0 NO_SUPPORT_FOR_LOGICLOCK_CONTENT_BACK_ANNOTATION 1 NO_SUPPORT_FOR_STA_CLOCK_UNCERTAINTY_CHECK 0 NO_TDC_SUPPORT 0 POSTFIT_BAK_DATABASE_EXPORT_ENABLED 1 POSTMAP_BAK_DATABASE_EXPORT_ENABLED 1 PROGRAMMER_SUPPORT 1 QFIT_IN_DEVELOPMENT 0 QMAP_IN_DEVELOPMENT 0 RAM_LOGICAL_NAME_CHECKING_IN_CUT_ENABLED 1 REPORTS_METASTABILITY_MTBF 1 REQUIRES_INSTALLATION_PATCH 0 REQUIRES_LIST_OF_TEMPERATURE_AND_VOLTAGE_OPERATING_CONDITIONS 1 RESERVES_SIGNAL_PROBE_PINS 0 RESOLVE_MAX_FANOUT_EARLY 1 RESOLVE_MAX_FANOUT_LATE 0 RESPECTS_FIXED_SIZED_LOCKED_LOCATION_LOGICLOCK 1 RESTRICTED_USER_SELECTION 0 RISEFALL_SUPPORT_IS_HIDDEN 0 SHOW_HIDDEN_FAMILY_IN_PROGRAMMER 0 STRICT_TIMING_DB_CHECKS 1 SUPPORTS_ADDITIONAL_OPTIONS_FOR_UNUSED_IO 1 SUPPORTS_CRC 1 SUPPORTS_DIFFERENTIAL_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_DSP_BALANCING_BACK_ANNOTATION 0 SUPPORTS_GENERATION_OF_EARLY_POWER_ESTIMATOR_FILE 1 SUPPORTS_GLOBAL_SIGNAL_BACK_ANNOTATION 1 SUPPORTS_MAC_CHAIN_OUT_ADDER 1 SUPPORTS_RAM_PACKING_BACK_ANNOTATION 0 SUPPORTS_REG_PACKING_BACK_ANNOTATION 0 SUPPORTS_SIGNALPROBE_REGISTER_PIPELINING 1 SUPPORTS_SINGLE_ENDED_AIOT_BOARD_TRACE_MODEL 1 SUPPORTS_USER_MANUAL_LOGIC_DUPLICATION 1 TMV_RUN_CUSTOMIZABLE_VIEWER 1 TMV_RUN_INTERNAL_DETAILS 1 TMV_RUN_INTERNAL_DETAILS_ON_IO 0 TMV_RUN_INTERNAL_DETAILS_ON_IOBUF 1 TMV_RUN_INTERNAL_DETAILS_ON_LCELL 0 TMV_RUN_INTERNAL_DETAILS_ON_LRAM 0 TRANSCEIVER_3G_BLOCK 1 TRANSCEIVER_6G_BLOCK 1 USES_ACV_FOR_FLED 1 USES_ADB_FOR_BACK_ANNOTATION 1 USES_ALTERA_LNSIM 0 USES_ASIC_ROUTING_POWER_CALCULATOR 0 USES_DATA_DRIVEN_PLL_COMPUTATION_UTIL 1 USES_DEV 1 USES_ICP_FOR_ECO_FITTER 0 USES_LIBERTY_TIMING 0 USES_POWER_SIGNAL_ACTIVITIES 1 USES_THIRD_GENERATION_TIMING_MODELS_TIS 1 USES_U2B2_TIMING_MODELS 0 USE_ADVANCED_IO_POWER_BY_DEFAULT 1 USE_ADVANCED_IO_TIMING_BY_DEFAULT 1 USE_BASE_FAMILY_DDB_PATH 0 USE_OCT_AUTO_CALIBRATION 1 USE_RELAX_IO_ASSIGNMENT_RULES 0 USE_RISEFALL_ONLY 1 USE_SEPARATE_LIST_FOR_TECH_MIGRATION 0 USE_SINGLE_COMPILER_PASS_PLL_MIF_FILE_WRITER 1 USE_TITAN_IO_BASED_IO_REGISTER_PACKER_UTIL 1 USING_28NM_OR_OLDER_TIMING_METHODOLOGY 1 WYSIWYG_BUS_WIDTH_CHECKING_IN_CUT_ENABLED 1 + - + - + @@ -2085,7 +2136,7 @@ start="sys_cpu.data_master" end="sys_uart.avalon_jtag_slave"> - + - + @@ -2119,7 +2170,7 @@ start="sys_cpu.data_master" end="sys_id.control_slave"> - + - + - + - + - + - + @@ -2526,7 +2577,7 @@ start="sys_cpu.data_master" end="sys_ddr3_cpuconnect.cntl"> - + + + + + + + + + + + + + + + diff --git a/projects/fmcjesdadc1/a5gt/system_project.tcl b/projects/fmcjesdadc1/a5gt/system_project.tcl index 36d8fcc1e..4a66e0ea5 100755 --- a/projects/fmcjesdadc1/a5gt/system_project.tcl +++ b/projects/fmcjesdadc1/a5gt/system_project.tcl @@ -5,7 +5,7 @@ source ../../scripts/adi_env.tcl project_new fmcjesdadc1_a5gt -overwrite set_global_assignment -name FAMILY "Arria V" -set_global_assignment -name DEVICE 5AGTFD7K3F40I5 +set_global_assignment -name DEVICE 5AGTFD7K3F40I3 set_global_assignment -name TOP_LEVEL_ENTITY system_top set_global_assignment -name SDC_FILE system_constr.sdc set_global_assignment -name QSYS_FILE system_bd.qsys diff --git a/projects/fmcjesdadc1/a5gt/system_top.v b/projects/fmcjesdadc1/a5gt/system_top.v index b7722d8dc..c695eedef 100755 --- a/projects/fmcjesdadc1/a5gt/system_top.v +++ b/projects/fmcjesdadc1/a5gt/system_top.v @@ -236,10 +236,23 @@ module system_top ( end sld_signaltap #( - .sld_data_bits (112), + .sld_advanced_trigger_entity ("basic,1,"), + .sld_data_bits (114), + .sld_data_bit_cntr_bits (8), + .sld_enable_advanced_trigger (0), .sld_mem_address_bits (10), + .sld_node_crc_bits (32), + .sld_node_crc_hiword (10311), + .sld_node_crc_loword (14297), + .sld_node_info (1076736), + .sld_ram_block_type ("AUTO"), .sld_sample_depth (1024), - .sld_trigger_bits (2)) + .sld_storage_qualifier_gap_record (0), + .sld_storage_qualifier_mode ("OFF"), + .sld_trigger_bits (2), + .sld_trigger_in_enabled (0), + .sld_trigger_level (1), + .sld_trigger_level_pipeline (1)) i_signaltap ( .acq_clk (rx_clk), .acq_data_in ({rx_sysref, rx_sync, adc1_mon_data_s, adc0_mon_data_s}), From 33979fc533a410f7459a6a8389bb01a97e21aafc Mon Sep 17 00:00:00 2001 From: Rejeesh Kutty Date: Fri, 4 Apr 2014 13:49:53 -0400 Subject: [PATCH 13/18] fixes to improve timing - fifo for clock domain transfers --- projects/fmcjesdadc1/a5gt/system_bd.qsys | 54 ++++++++++++------------ 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/projects/fmcjesdadc1/a5gt/system_bd.qsys b/projects/fmcjesdadc1/a5gt/system_bd.qsys index f4e026309..8d829b15d 100755 --- a/projects/fmcjesdadc1/a5gt/system_bd.qsys +++ b/projects/fmcjesdadc1/a5gt/system_bd.qsys @@ -146,14 +146,6 @@ type = "String"; } } - element sys_jesd204b_s1_connect.s0 - { - datum baseAddress - { - value = "67108864"; - type = "String"; - } - } element sys_ddr3_interconnect.s0 { datum _lockedAddress @@ -175,19 +167,11 @@ type = "String"; } } - element sys_gpio.s1 + element sys_jesd204b_s1_connect.s0 { datum baseAddress { - value = "86041792"; - type = "String"; - } - } - element sys_ethernet_desc_mem.s1 - { - datum baseAddress - { - value = "0"; + value = "67108864"; type = "String"; } } @@ -199,6 +183,14 @@ type = "String"; } } + element sys_timer.s1 + { + datum baseAddress + { + value = "86041760"; + type = "String"; + } + } element sys_int_mem.s1 { datum _lockedAddress @@ -212,19 +204,19 @@ type = "String"; } } - element sys_timer.s1 + element sys_ethernet_desc_mem.s1 { datum baseAddress { - value = "86041760"; + value = "0"; type = "String"; } } - element sys_tcm_mem.s2 + element sys_gpio.s1 { datum baseAddress { - value = "86032384"; + value = "86041792"; type = "String"; } } @@ -241,6 +233,14 @@ type = "String"; } } + element sys_tcm_mem.s2 + { + datum baseAddress + { + value = "86032384"; + type = "String"; + } + } element axi_ad9250_0.s_axi { datum baseAddress @@ -542,7 +542,7 @@ } } ]]> - + @@ -551,7 +551,7 @@ - + fmcjesdadc1_a5gt.qpf @@ -1016,7 +1016,7 @@ - + @@ -2728,7 +2728,7 @@ - - + + From 4116247fc049a104f5b4df556bf2743a9140cba4 Mon Sep 17 00:00:00 2001 From: rejeesh kutty Date: Fri, 4 Apr 2014 16:30:28 -0400 Subject: [PATCH 14/18] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 903488720..d913aa267 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,8 @@ hdl Analog Devices HDL libraries and projects -http://wiki.analog.com/resources/fpga/docs/hdl/github +First time users, it is highly recommended to go through our HDL user guide at the following url: + +http://wiki.analog.com/resources/fpga/docs/hdl -http://wiki.analog.com/resources/fpga/docs/hdl/regmap From 5b0e37b97a1e21b8be0fd3ff75bbc643ff5e5b51 Mon Sep 17 00:00:00 2001 From: Istvan Csomortani Date: Mon, 7 Apr 2014 15:02:38 +0300 Subject: [PATCH 15/18] adi_project.tcl : Modify implementation strategy - Change implementation strategy to Performance Explore. At some projects, this could prevent timing issues, it not increase the overall implementation time in a dramatic way. --- projects/scripts/adi_project.tcl | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/scripts/adi_project.tcl b/projects/scripts/adi_project.tcl index 0e7a6820a..1067bd128 100644 --- a/projects/scripts/adi_project.tcl +++ b/projects/scripts/adi_project.tcl @@ -88,6 +88,7 @@ proc adi_project_run {project_name} { set_property STEPS.PHYS_OPT_DESIGN.IS_ENABLED true [get_runs impl_1] set_property STEPS.PHYS_OPT_DESIGN.ARGS.DIRECTIVE Explore [get_runs impl_1] + set_property STRATEGY "Performance_Explore" [get_runs impl_1] launch_runs impl_1 -to_step write_bitstream wait_on_run impl_1 From 8bebc5e3d40686a4ce7f0f3ebe0de83067f3a499 Mon Sep 17 00:00:00 2001 From: Rejeesh Kutty Date: Mon, 7 Apr 2014 13:01:10 -0400 Subject: [PATCH 16/18] ad9671: initial checkin --- library/axi_ad9671/axi_ad9671.v | 425 ++++++++++++++++++++++++ library/axi_ad9671/axi_ad9671_channel.v | 182 ++++++++++ library/axi_ad9671/axi_ad9671_if.v | 158 +++++++++ library/axi_ad9671/axi_ad9671_ip.tcl | 26 ++ library/axi_ad9671/axi_ad9671_pnmon.v | 251 ++++++++++++++ 5 files changed, 1042 insertions(+) create mode 100755 library/axi_ad9671/axi_ad9671.v create mode 100755 library/axi_ad9671/axi_ad9671_channel.v create mode 100755 library/axi_ad9671/axi_ad9671_if.v create mode 100755 library/axi_ad9671/axi_ad9671_ip.tcl create mode 100755 library/axi_ad9671/axi_ad9671_pnmon.v diff --git a/library/axi_ad9671/axi_ad9671.v b/library/axi_ad9671/axi_ad9671.v new file mode 100755 index 000000000..5549dcbb6 --- /dev/null +++ b/library/axi_ad9671/axi_ad9671.v @@ -0,0 +1,425 @@ +// *************************************************************************** +// *************************************************************************** +// Copyright 2011(c) Analog Devices, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// - Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the +// distribution. +// - Neither the name of Analog Devices, Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// - The use of this software may or may not infringe the patent rights +// of one or more patent holders. This license does not release you +// from the requirement that you obtain separate licenses from these +// patent holders to use this software. +// - Use of the software either in source or binary form, must be run +// on or directly connected to an Analog Devices Inc. component. +// +// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +// INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE ARE DISCLAIMED. +// +// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY +// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** + +`timescale 1ns/100ps + +module axi_ad9671 ( + + // jesd interface + // rx_clk is (line-rate/40) + + rx_clk, + rx_data, + + // dma interface + + adc_clk, + adc_dwr, + adc_ddata, + adc_dsync, + adc_dovf, + adc_dunf, + + // axi interface + + s_axi_aclk, + s_axi_aresetn, + s_axi_awvalid, + s_axi_awaddr, + s_axi_awready, + s_axi_wvalid, + s_axi_wdata, + s_axi_wstrb, + s_axi_wready, + s_axi_bvalid, + s_axi_bresp, + s_axi_bready, + s_axi_arvalid, + s_axi_araddr, + s_axi_arready, + s_axi_rvalid, + s_axi_rresp, + s_axi_rdata, + s_axi_rready, + + // debug signals + + adc_mon_valid, + adc_mon_data); + + parameter PCORE_ID = 0; + parameter PCORE_DEVICE_TYPE = 0; + parameter PCORE_4L_2L_N = 1; + parameter PCORE_IODELAY_GROUP = "adc_if_delay_group"; + parameter C_S_AXI_MIN_SIZE = 32'hffff; + parameter C_BASEADDR = 32'hffffffff; + parameter C_HIGHADDR = 32'h00000000; + + // jesd interface + // rx_clk is the jesd clock (ref_clk/2) + + input rx_clk; + input [(64*PCORE_4L_2L_N)+63:0] rx_data; + + // dma interface + + output adc_clk; + output adc_dwr; + output [127:0] adc_ddata; + output adc_dsync; + input adc_dovf; + input adc_dunf; + + // axi interface + + input s_axi_aclk; + input s_axi_aresetn; + input s_axi_awvalid; + input [ 31:0] s_axi_awaddr; + output s_axi_awready; + input s_axi_wvalid; + input [ 31:0] s_axi_wdata; + input [ 3:0] s_axi_wstrb; + output s_axi_wready; + output s_axi_bvalid; + output [ 1:0] s_axi_bresp; + input s_axi_bready; + input s_axi_arvalid; + input [ 31:0] s_axi_araddr; + output s_axi_arready; + output s_axi_rvalid; + output [ 1:0] s_axi_rresp; + output [ 31:0] s_axi_rdata; + input s_axi_rready; + + // debug signals + + output adc_mon_valid; + output [127:0] adc_mon_data; + + // internal registers + + reg [ 2:0] adc_data_cnt = 'd0; + reg adc_dwr = 'd0; + reg adc_dsync = 'd0; + reg [127:0] adc_ddata = 'd0; + reg up_adc_status_pn_err = 'd0; + reg up_adc_status_pn_oos = 'd0; + reg up_adc_status_or = 'd0; + reg up_ack = 'd0; + reg [ 31:0] up_rdata = 'd0; + + // internal clocks & resets + + wire adc_rst; + wire up_rstn; + wire up_clk; + + // internal signals + + wire adc_status_s; + wire adc_valid_s; + wire [ 15:0] adc_data_s[7:0]; + wire [ 7:0] adc_or_s; + wire [ 7:0] adc_dfmt_valid_s; + wire [ 15:0] adc_dfmt_data_s[7:0]; + wire [ 7:0] adc_enable_s; + wire [ 7:0] up_adc_pn_err_s; + wire [ 7:0] up_adc_pn_oos_s; + wire [ 7:0] up_adc_or_s; + wire [ 31:0] up_adc_channel_rdata_s[7:0]; + wire [ 7:0] up_adc_channel_ack_s; + wire up_sel_s; + wire up_wr_s; + wire [ 13:0] up_addr_s; + wire [ 31:0] up_wdata_s; + wire [ 31:0] up_adc_common_rdata_s; + wire up_adc_common_ack_s; + + // signal name changes + + assign up_clk = s_axi_aclk; + assign up_rstn = s_axi_aresetn; + + // monitor signals + + assign adc_mon_valid = 1'b1; + assign adc_mon_data[ 15: 0] = adc_dfmt_data_s[0]; + assign adc_mon_data[ 31: 16] = adc_dfmt_data_s[1]; + assign adc_mon_data[ 47: 32] = adc_dfmt_data_s[2]; + assign adc_mon_data[ 63: 48] = adc_dfmt_data_s[3]; + assign adc_mon_data[ 79: 64] = adc_dfmt_data_s[4]; + assign adc_mon_data[ 95: 80] = adc_dfmt_data_s[5]; + assign adc_mon_data[111: 96] = adc_dfmt_data_s[6]; + assign adc_mon_data[127:112] = adc_dfmt_data_s[7]; + + // adc channels - dma interface + + always @(posedge adc_clk) begin + if (adc_dfmt_valid_s == 8'hff) begin + adc_data_cnt <= adc_data_cnt + 1'b1; + case (adc_enable_s) + 8'b11111111: begin + adc_dwr <= 1'b1; + adc_dsync <= 1'b1; + adc_ddata <= {adc_dfmt_data_s[7], + adc_dfmt_data_s[6], + adc_dfmt_data_s[5], + adc_dfmt_data_s[4], + adc_dfmt_data_s[3], + adc_dfmt_data_s[2], + adc_dfmt_data_s[1], + adc_dfmt_data_s[0]}; + end + 8'b10000000: begin + adc_dwr <= (& adc_data_cnt); + adc_dsync <= 1'b1; + adc_ddata <= {adc_dfmt_data_s[0], adc_ddata[127:16]}; + end + 8'b01000000: begin + adc_dwr <= (& adc_data_cnt); + adc_dsync <= 1'b1; + adc_ddata <= {adc_dfmt_data_s[1], adc_ddata[127:16]}; + end + 8'b00100000: begin + adc_dwr <= (& adc_data_cnt); + adc_dsync <= 1'b1; + adc_ddata <= {adc_dfmt_data_s[2], adc_ddata[127:16]}; + end + 8'b00010000: begin + adc_dwr <= (& adc_data_cnt); + adc_dsync <= 1'b1; + adc_ddata <= {adc_dfmt_data_s[3], adc_ddata[127:16]}; + end + 8'b00001000: begin + adc_dwr <= (& adc_data_cnt); + adc_dsync <= 1'b1; + adc_ddata <= {adc_dfmt_data_s[4], adc_ddata[127:16]}; + end + 8'b00000100: begin + adc_dwr <= (& adc_data_cnt); + adc_dsync <= 1'b1; + adc_ddata <= {adc_dfmt_data_s[5], adc_ddata[127:16]}; + end + 8'b00000010: begin + adc_dwr <= (& adc_data_cnt); + adc_dsync <= 1'b1; + adc_ddata <= {adc_dfmt_data_s[6], adc_ddata[127:16]}; + end + 8'b00000001: begin + adc_dwr <= (& adc_data_cnt); + adc_dsync <= 1'b1; + adc_ddata <= {adc_dfmt_data_s[7], adc_ddata[127:16]}; + end + default: begin + adc_dwr <= 1'b1; + adc_dsync <= 1'b1; + adc_ddata <= {8{16'hdead}}; + end + endcase + end else begin + adc_data_cnt <= adc_data_cnt; + adc_dwr <= 1'b0; + adc_dsync <= 1'b0; + adc_ddata <= 128'd0; + end + end + + // processor read interface + + always @(negedge up_rstn or posedge up_clk) begin + if (up_rstn == 0) begin + up_adc_status_pn_err <= 'd0; + up_adc_status_pn_oos <= 'd0; + up_adc_status_or <= 'd0; + up_ack <= 'd0; + up_rdata <= 'd0; + end else begin + up_adc_status_pn_err <= | up_adc_pn_err_s; + up_adc_status_pn_oos <= | up_adc_pn_oos_s; + up_adc_status_or <= | up_adc_or_s; + up_ack <= up_adc_common_ack_s | (| up_adc_channel_ack_s); + up_rdata <= up_adc_common_rdata_s | + up_adc_channel_rdata_s[0] | + up_adc_channel_rdata_s[1] | + up_adc_channel_rdata_s[2] | + up_adc_channel_rdata_s[3] | + up_adc_channel_rdata_s[4] | + up_adc_channel_rdata_s[5] | + up_adc_channel_rdata_s[6] | + up_adc_channel_rdata_s[7]; + end + end + + // main (device interface) + + axi_ad9671_if #(.PCORE_4L_2L_N(PCORE_4L_2L_N)) i_if ( + .rx_clk (rx_clk), + .rx_data (rx_data), + .adc_clk (adc_clk), + .adc_rst (adc_rst), + .adc_valid (adc_valid_s), + .adc_data_a (adc_data_s[0]), + .adc_or_a (adc_or_s[0]), + .adc_data_b (adc_data_s[1]), + .adc_or_b (adc_or_s[1]), + .adc_data_c (adc_data_s[2]), + .adc_or_c (adc_or_s[2]), + .adc_data_d (adc_data_s[3]), + .adc_or_d (adc_or_s[3]), + .adc_data_e (adc_data_s[4]), + .adc_or_e (adc_or_s[4]), + .adc_data_f (adc_data_s[5]), + .adc_or_f (adc_or_s[5]), + .adc_data_g (adc_data_s[6]), + .adc_or_g (adc_or_s[6]), + .adc_data_h (adc_data_s[7]), + .adc_or_h (adc_or_s[7]), + .adc_status (adc_status_s)); + + // channels + + genvar n; + generate + for (n = 0; n < 8; n = n + 1) begin: g_channel + axi_ad9671_channel #(.CHID(n)) i_channel ( + .adc_clk (adc_clk), + .adc_rst (adc_rst), + .adc_valid (adc_valid_s), + .adc_data (adc_data_s[n]), + .adc_or (adc_or_s[n]), + .adc_dfmt_valid (adc_dfmt_valid_s[n]), + .adc_dfmt_data (adc_dfmt_data_s[n]), + .adc_enable (adc_enable_s[n]), + .up_adc_pn_err (up_adc_pn_err_s[n]), + .up_adc_pn_oos (up_adc_pn_oos_s[n]), + .up_adc_or (up_adc_or_s[n]), + .up_rstn (up_rstn), + .up_clk (up_clk), + .up_sel (up_sel_s), + .up_wr (up_wr_s), + .up_addr (up_addr_s), + .up_wdata (up_wdata_s), + .up_rdata (up_adc_channel_rdata_s[n]), + .up_ack (up_adc_channel_ack_s[n])); + end + endgenerate + + // common processor control + + up_adc_common #(.PCORE_ID(PCORE_ID)) i_up_adc_common ( + .mmcm_rst (), + .adc_clk (adc_clk), + .adc_rst (adc_rst), + .adc_r1_mode (), + .adc_ddr_edgesel (), + .adc_pin_mode (), + .adc_status (adc_status_s), + .adc_status_pn_err (up_adc_status_pn_err), + .adc_status_pn_oos (up_adc_status_pn_oos), + .adc_status_or (up_adc_status_or), + .adc_status_ovf (adc_dovf), + .adc_status_unf (adc_dunf), + .adc_clk_ratio (32'd1), + .delay_clk (1'b0), + .delay_rst (), + .delay_sel (), + .delay_rwn (), + .delay_addr (), + .delay_wdata (), + .delay_rdata (5'd0), + .delay_ack_t (1'b0), + .delay_locked (1'b0), + .drp_clk (1'd0), + .drp_rst (), + .drp_sel (), + .drp_wr (), + .drp_addr (), + .drp_wdata (), + .drp_rdata (16'd0), + .drp_ready (1'd0), + .drp_locked (1'd0), + .up_usr_chanmax (), + .adc_usr_chanmax (8'd7), + .dma_bw (32'd128), + .up_rstn (up_rstn), + .up_clk (up_clk), + .up_sel (up_sel_s), + .up_wr (up_wr_s), + .up_addr (up_addr_s), + .up_wdata (up_wdata_s), + .up_rdata (up_adc_common_rdata_s), + .up_ack (up_adc_common_ack_s)); + + // up bus interface + + up_axi #( + .PCORE_BASEADDR (C_BASEADDR), + .PCORE_HIGHADDR (C_HIGHADDR)) + i_up_axi ( + .up_rstn (up_rstn), + .up_clk (up_clk), + .up_axi_awvalid (s_axi_awvalid), + .up_axi_awaddr (s_axi_awaddr), + .up_axi_awready (s_axi_awready), + .up_axi_wvalid (s_axi_wvalid), + .up_axi_wdata (s_axi_wdata), + .up_axi_wstrb (s_axi_wstrb), + .up_axi_wready (s_axi_wready), + .up_axi_bvalid (s_axi_bvalid), + .up_axi_bresp (s_axi_bresp), + .up_axi_bready (s_axi_bready), + .up_axi_arvalid (s_axi_arvalid), + .up_axi_araddr (s_axi_araddr), + .up_axi_arready (s_axi_arready), + .up_axi_rvalid (s_axi_rvalid), + .up_axi_rresp (s_axi_rresp), + .up_axi_rdata (s_axi_rdata), + .up_axi_rready (s_axi_rready), + .up_sel (up_sel_s), + .up_wr (up_wr_s), + .up_addr (up_addr_s), + .up_wdata (up_wdata_s), + .up_rdata (up_rdata), + .up_ack (up_ack)); + +endmodule + +// *************************************************************************** +// *************************************************************************** diff --git a/library/axi_ad9671/axi_ad9671_channel.v b/library/axi_ad9671/axi_ad9671_channel.v new file mode 100755 index 000000000..efb122351 --- /dev/null +++ b/library/axi_ad9671/axi_ad9671_channel.v @@ -0,0 +1,182 @@ +// *************************************************************************** +// *************************************************************************** +// Copyright 2011(c) Analog Devices, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// - Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the +// distribution. +// - Neither the name of Analog Devices, Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// - The use of this software may or may not infringe the patent rights +// of one or more patent holders. This license does not release you +// from the requirement that you obtain separate licenses from these +// patent holders to use this software. +// - Use of the software either in source or binary form, must be run +// on or directly connected to an Analog Devices Inc. component. +// +// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +// INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE ARE DISCLAIMED. +// +// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY +// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// ADC channel- + +`timescale 1ns/100ps + +module axi_ad9671_channel ( + + // adc interface + + adc_clk, + adc_rst, + adc_valid, + adc_data, + adc_or, + + // channel interface + + adc_dfmt_valid, + adc_dfmt_data, + adc_enable, + up_adc_pn_err, + up_adc_pn_oos, + up_adc_or, + + // processor interface + + up_rstn, + up_clk, + up_sel, + up_wr, + up_addr, + up_wdata, + up_rdata, + up_ack); + + // parameters + + parameter CHID = 0; + + // adc interface + + input adc_clk; + input adc_rst; + input adc_valid; + input [15:0] adc_data; + input adc_or; + + // channel interface + + output adc_dfmt_valid; + output [15:0] adc_dfmt_data; + output adc_enable; + output up_adc_pn_err; + output up_adc_pn_oos; + output up_adc_or; + + // processor interface + + input up_rstn; + input up_clk; + input up_sel; + input up_wr; + input [13:0] up_addr; + input [31:0] up_wdata; + output [31:0] up_rdata; + output up_ack; + + // internal signals + + wire adc_dfmt_se_s; + wire adc_dfmt_type_s; + wire adc_dfmt_enable_s; + wire adc_pn_type_s; + wire adc_pn_err_s; + wire adc_pn_oos_s; + + // instantiations + + axi_ad9671_pnmon i_pnmon ( + .adc_clk (adc_clk), + .adc_valid (adc_valid), + .adc_data (adc_data), + .adc_pn_oos (adc_pn_oos_s), + .adc_pn_err (adc_pn_err_s), + .adc_pn_type (adc_pn_type_s)); + + ad_datafmt #(.DATA_WIDTH(16)) i_ad_datafmt ( + .clk (adc_clk), + .valid (adc_valid), + .data (adc_data), + .valid_out (adc_dfmt_valid), + .data_out (adc_dfmt_data), + .dfmt_enable (adc_dfmt_enable_s), + .dfmt_type (adc_dfmt_type_s), + .dfmt_se (adc_dfmt_se_s)); + + up_adc_channel #(.PCORE_ADC_CHID(CHID)) i_up_adc_channel ( + .adc_clk (adc_clk), + .adc_rst (adc_rst), + .adc_enable (adc_enable), + .adc_pn_sel (), + .adc_iqcor_enb (), + .adc_dcfilt_enb (), + .adc_dfmt_se (adc_dfmt_se_s), + .adc_dfmt_type (adc_dfmt_type_s), + .adc_dfmt_enable (adc_dfmt_enable_s), + .adc_pn_type (adc_pn_type_s), + .adc_dcfilt_offset (), + .adc_dcfilt_coeff (), + .adc_iqcor_coeff_1 (), + .adc_iqcor_coeff_2 (), + .adc_pn_err (adc_pn_err_s), + .adc_pn_oos (adc_pn_oos_s), + .adc_or (adc_or), + .up_adc_pn_err (up_adc_pn_err), + .up_adc_pn_oos (up_adc_pn_oos), + .up_adc_or (up_adc_or), + .up_usr_datatype_be (), + .up_usr_datatype_signed (), + .up_usr_datatype_shift (), + .up_usr_datatype_total_bits (), + .up_usr_datatype_bits (), + .up_usr_decimation_m (), + .up_usr_decimation_n (), + .adc_usr_datatype_be (1'b0), + .adc_usr_datatype_signed (1'b1), + .adc_usr_datatype_shift (8'd0), + .adc_usr_datatype_total_bits (8'd16), + .adc_usr_datatype_bits (8'd16), + .adc_usr_decimation_m (16'd1), + .adc_usr_decimation_n (16'd1), + .up_rstn (up_rstn), + .up_clk (up_clk), + .up_sel (up_sel), + .up_wr (up_wr), + .up_addr (up_addr), + .up_wdata (up_wdata), + .up_rdata (up_rdata), + .up_ack (up_ack)); + +endmodule + +// *************************************************************************** +// *************************************************************************** + diff --git a/library/axi_ad9671/axi_ad9671_if.v b/library/axi_ad9671/axi_ad9671_if.v new file mode 100755 index 000000000..b05003a6a --- /dev/null +++ b/library/axi_ad9671/axi_ad9671_if.v @@ -0,0 +1,158 @@ +// *************************************************************************** +// *************************************************************************** +// Copyright 2011(c) Analog Devices, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// - Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the +// distribution. +// - Neither the name of Analog Devices, Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// - The use of this software may or may not infringe the patent rights +// of one or more patent holders. This license does not release you +// from the requirement that you obtain separate licenses from these +// patent holders to use this software. +// - Use of the software either in source or binary form, must be run +// on or directly connected to an Analog Devices Inc. component. +// +// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +// INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE ARE DISCLAIMED. +// +// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY +// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// This is the LVDS/DDR interface + +`timescale 1ns/100ps + +module axi_ad9671_if ( + + // jesd interface + // rx_clk is (line-rate/40) + + rx_clk, + rx_data, + + // adc data output + + adc_clk, + adc_rst, + adc_valid, + adc_data_a, + adc_or_a, + adc_data_b, + adc_or_b, + adc_data_c, + adc_or_c, + adc_data_d, + adc_or_d, + adc_data_e, + adc_or_e, + adc_data_f, + adc_or_f, + adc_data_g, + adc_or_g, + adc_data_h, + adc_or_h, + adc_status); + + // parameters + + parameter PCORE_4L_2L_N = 1; + + // jesd interface + // rx_clk is (line-rate/40) + + input rx_clk; + input [(64*PCORE_4L_2L_N)+63:0] rx_data; + + // adc data output + + output adc_clk; + input adc_rst; + output adc_valid; + output [ 15:0] adc_data_a; + output adc_or_a; + output [ 15:0] adc_data_b; + output adc_or_b; + output [ 15:0] adc_data_c; + output adc_or_c; + output [ 15:0] adc_data_d; + output adc_or_d; + output [ 15:0] adc_data_e; + output adc_or_e; + output [ 15:0] adc_data_f; + output adc_or_f; + output [ 15:0] adc_data_g; + output adc_or_g; + output [ 15:0] adc_data_h; + output adc_or_h; + output adc_status; + + // internal registers + + reg int_valid = 'd0; + reg [127:0] int_data = 'd0; + reg adc_status = 'd0; + + // adc clock & valid + + assign adc_clk = rx_clk; + assign adc_valid = int_valid; + + assign adc_or_a = 'd0; + assign adc_or_b = 'd0; + assign adc_or_c = 'd0; + assign adc_or_d = 'd0; + assign adc_or_e = 'd0; + assign adc_or_f = 'd0; + assign adc_or_g = 'd0; + assign adc_or_h = 'd0; + + assign adc_data_a = {int_data[ 7: 0], int_data[ 15: 8]}; + assign adc_data_b = {int_data[ 23: 16], int_data[ 31: 24]}; + assign adc_data_c = {int_data[ 39: 32], int_data[ 47: 40]}; + assign adc_data_d = {int_data[ 55: 48], int_data[ 63: 56]}; + assign adc_data_e = {int_data[ 71: 64], int_data[ 79: 72]}; + assign adc_data_f = {int_data[ 87: 80], int_data[ 95: 88]}; + assign adc_data_g = {int_data[103: 96], int_data[111:104]}; + assign adc_data_h = {int_data[119:112], int_data[127:120]}; + + always @(posedge rx_clk) begin + if (PCORE_4L_2L_N == 1'b1) begin + int_valid <= 1'b1; + int_data <= rx_data; + end else begin + int_valid <= ~int_valid; + int_data <= {rx_data[63:0], int_data[127:64]}; + end + end + + always @(posedge rx_clk) begin + if (adc_rst == 1'b1) begin + adc_status <= 1'b0; + end else begin + adc_status <= 1'b1; + end + end + +endmodule + +// *************************************************************************** +// *************************************************************************** + diff --git a/library/axi_ad9671/axi_ad9671_ip.tcl b/library/axi_ad9671/axi_ad9671_ip.tcl new file mode 100755 index 000000000..35b1da4e0 --- /dev/null +++ b/library/axi_ad9671/axi_ad9671_ip.tcl @@ -0,0 +1,26 @@ +# ip + +source ../scripts/adi_env.tcl +source $ad_hdl_dir/library/scripts/adi_ip.tcl + +adi_ip_create axi_ad9671 +adi_ip_files axi_ad9671 [list \ + "$ad_hdl_dir/library/common/ad_rst.v" \ + "$ad_hdl_dir/library/common/ad_datafmt.v" \ + "$ad_hdl_dir/library/common/up_axi.v" \ + "$ad_hdl_dir/library/common/up_xfer_cntrl.v" \ + "$ad_hdl_dir/library/common/up_xfer_status.v" \ + "$ad_hdl_dir/library/common/up_clock_mon.v" \ + "$ad_hdl_dir/library/common/up_drp_cntrl.v" \ + "$ad_hdl_dir/library/common/up_delay_cntrl.v" \ + "$ad_hdl_dir/library/common/up_adc_common.v" \ + "$ad_hdl_dir/library/common/up_adc_channel.v" \ + "axi_ad9671_pnmon.v" \ + "axi_ad9671_channel.v" \ + "axi_ad9671_if.v" \ + "axi_ad9671.v" ] + +adi_ip_properties axi_ad9671 + +ipx::save_core [ipx::current_core] + diff --git a/library/axi_ad9671/axi_ad9671_pnmon.v b/library/axi_ad9671/axi_ad9671_pnmon.v new file mode 100755 index 000000000..0497b3856 --- /dev/null +++ b/library/axi_ad9671/axi_ad9671_pnmon.v @@ -0,0 +1,251 @@ +// *************************************************************************** +// *************************************************************************** +// Copyright 2011(c) Analog Devices, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// - Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the +// distribution. +// - Neither the name of Analog Devices, Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// - The use of this software may or may not infringe the patent rights +// of one or more patent holders. This license does not release you +// from the requirement that you obtain separate licenses from these +// patent holders to use this software. +// - Use of the software either in source or binary form, must be run +// on or directly connected to an Analog Devices Inc. component. +// +// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +// INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE ARE DISCLAIMED. +// +// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY +// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// PN monitors + +`timescale 1ns/100ps + +module axi_ad9671_pnmon ( + + // adc interface + + adc_clk, + adc_valid, + adc_data, + + // pn out of sync and error + + adc_pn_oos, + adc_pn_err, + + // processor interface PN9 (0x0), PN23 (0x1) + + adc_pn_type); + + // adc interface + + input adc_clk; + input adc_valid; + input [15:0] adc_data; + + // pn out of sync and error + + output adc_pn_oos; + output adc_pn_err; + + // processor interface PN9 (0x0), PN23 (0x1) + + input adc_pn_type; + + // internal registers + + reg adc_pn_en = 'd0; + reg [15:0] adc_data_d = 'd0; + reg [31:0] adc_pn_data = 'd0; + reg adc_pn_valid = 'd0; + reg adc_pn_match_d_1 = 'd0; + reg adc_pn_match_d_0 = 'd0; + reg adc_pn_match_z = 'd0; + reg adc_pn_err = 'd0; + reg [ 6:0] adc_pn_oos_count = 'd0; + reg adc_pn_oos = 'd0; + + // internal signals + + wire adc_pn_valid_s; + wire [31:0] adc_pn_data_in_s; + wire adc_pn_match_d_1_s; + wire adc_pn_match_d_0_s; + wire adc_pn_match_z_s; + wire adc_pn_match_s; + wire [31:0] adc_pn_data_s; + wire adc_pn_update_s; + wire adc_pn_err_s; + + // PN23 function + + function [31:0] pn23; + input [31:0] din; + reg [31:0] dout; + begin + dout[31] = din[22] ^ din[17]; + dout[30] = din[21] ^ din[16]; + dout[29] = din[20] ^ din[15]; + dout[28] = din[19] ^ din[14]; + dout[27] = din[18] ^ din[13]; + dout[26] = din[17] ^ din[12]; + dout[25] = din[16] ^ din[11]; + dout[24] = din[15] ^ din[10]; + dout[23] = din[14] ^ din[ 9]; + dout[22] = din[13] ^ din[ 8]; + dout[21] = din[12] ^ din[ 7]; + dout[20] = din[11] ^ din[ 6]; + dout[19] = din[10] ^ din[ 5]; + dout[18] = din[ 9] ^ din[ 4]; + dout[17] = din[ 8] ^ din[ 3]; + dout[16] = din[ 7] ^ din[ 2]; + dout[15] = din[ 6] ^ din[ 1]; + dout[14] = din[ 5] ^ din[ 0]; + dout[13] = din[ 4] ^ din[22] ^ din[17]; + dout[12] = din[ 3] ^ din[21] ^ din[16]; + dout[11] = din[ 2] ^ din[20] ^ din[15]; + dout[10] = din[ 1] ^ din[19] ^ din[14]; + dout[ 9] = din[ 0] ^ din[18] ^ din[13]; + dout[ 8] = din[22] ^ din[12]; + dout[ 7] = din[21] ^ din[11]; + dout[ 6] = din[20] ^ din[10]; + dout[ 5] = din[19] ^ din[ 9]; + dout[ 4] = din[18] ^ din[ 8]; + dout[ 3] = din[17] ^ din[ 7]; + dout[ 2] = din[16] ^ din[ 6]; + dout[ 1] = din[15] ^ din[ 5]; + dout[ 0] = din[14] ^ din[ 4]; + pn23 = dout; + end + endfunction + + // PN9 function + + function [31:0] pn9; + input [31:0] din; + reg [31:0] dout; + begin + dout[31] = din[ 8] ^ din[ 4]; + dout[30] = din[ 7] ^ din[ 3]; + dout[29] = din[ 6] ^ din[ 2]; + dout[28] = din[ 5] ^ din[ 1]; + dout[27] = din[ 4] ^ din[ 0]; + dout[26] = din[ 3] ^ din[ 8] ^ din[ 4]; + dout[25] = din[ 2] ^ din[ 7] ^ din[ 3]; + dout[24] = din[ 1] ^ din[ 6] ^ din[ 2]; + dout[23] = din[ 0] ^ din[ 5] ^ din[ 1]; + dout[22] = din[ 8] ^ din[ 0]; + dout[21] = din[ 7] ^ din[ 8] ^ din[ 4]; + dout[20] = din[ 6] ^ din[ 7] ^ din[ 3]; + dout[19] = din[ 5] ^ din[ 6] ^ din[ 2]; + dout[18] = din[ 4] ^ din[ 5] ^ din[ 1]; + dout[17] = din[ 3] ^ din[ 4] ^ din[ 0]; + dout[16] = din[ 2] ^ din[ 3] ^ din[ 8] ^ din[ 4]; + dout[15] = din[ 1] ^ din[ 2] ^ din[ 7] ^ din[ 3]; + dout[14] = din[ 0] ^ din[ 1] ^ din[ 6] ^ din[ 2]; + dout[13] = din[ 8] ^ din[ 0] ^ din[ 4] ^ din[ 5] ^ din[ 1]; + dout[12] = din[ 7] ^ din[ 8] ^ din[ 3] ^ din[ 0]; + dout[11] = din[ 6] ^ din[ 7] ^ din[ 2] ^ din[ 8] ^ din[ 4]; + dout[10] = din[ 5] ^ din[ 6] ^ din[ 1] ^ din[ 7] ^ din[ 3]; + dout[ 9] = din[ 4] ^ din[ 5] ^ din[ 0] ^ din[ 6] ^ din[ 2]; + dout[ 8] = din[ 3] ^ din[ 8] ^ din[ 5] ^ din[ 1]; + dout[ 7] = din[ 2] ^ din[ 4] ^ din[ 7] ^ din[ 0]; + dout[ 6] = din[ 1] ^ din[ 3] ^ din[ 6] ^ din[ 8] ^ din[ 4]; + dout[ 5] = din[ 0] ^ din[ 2] ^ din[ 5] ^ din[ 7] ^ din[ 3]; + dout[ 4] = din[ 8] ^ din[ 1] ^ din[ 6] ^ din[ 2]; + dout[ 3] = din[ 7] ^ din[ 0] ^ din[ 5] ^ din[ 1]; + dout[ 2] = din[ 6] ^ din[ 8] ^ din[ 0]; + dout[ 1] = din[ 5] ^ din[ 7] ^ din[ 8] ^ din[ 4]; + dout[ 0] = din[ 4] ^ din[ 6] ^ din[ 7] ^ din[ 3]; + pn9 = dout; + end + endfunction + + // pn sequence checking algorithm is commonly used in most applications. + // if oos is asserted (pn is out of sync): + // the next sequence is generated from the incoming data. + // if 16 sequences match consecutively, oos is cleared (de-asserted). + // if oos is de-asserted (pn is in sync) + // the next sequence is generated from the current sequence. + // if 64 sequences mismatch consecutively, oos is set (asserted). + // if oos is de-asserted, any spurious mismatches sets the error register. + // ideally, processor should make sure both oos == 0x0 and err == 0x0. + + assign adc_pn_valid_s = adc_valid & adc_pn_en; + assign adc_pn_data_in_s = {~adc_data[15], adc_data[14:0], ~adc_data_d[15], adc_data_d[14:0]}; + assign adc_pn_match_d_1_s = (adc_pn_data_in_s[31:16] == adc_pn_data[31:16]) ? 1'b1 : 1'b0; + assign adc_pn_match_d_0_s = (adc_pn_data_in_s[15: 0] == adc_pn_data[15: 0]) ? 1'b1 : 1'b0; + assign adc_pn_match_z_s = (adc_pn_data_in_s == 32'd0) ? 1'b0 : 1'b1; + assign adc_pn_match_s = adc_pn_match_d_1 & adc_pn_match_d_0 & adc_pn_match_z; + assign adc_pn_data_s = (adc_pn_oos == 1'b1) ? adc_pn_data_in_s : adc_pn_data; + assign adc_pn_update_s = ~(adc_pn_oos ^ adc_pn_match_s); + assign adc_pn_err_s = ~(adc_pn_oos | adc_pn_match_s); + + // pn running sequence + + always @(posedge adc_clk) begin + if (adc_valid == 1'b1) begin + adc_pn_en <= ~adc_pn_en; + adc_data_d <= adc_data; + end + end + + always @(posedge adc_clk) begin + if (adc_pn_valid_s == 1'b1) begin + if (adc_pn_type == 1'b0) begin + adc_pn_data <= pn9(adc_pn_data_s); + end else begin + adc_pn_data <= pn23(adc_pn_data_s); + end + end + end + + // pn oos and counters (64 to clear and set). + + always @(posedge adc_clk) begin + adc_pn_valid <= adc_pn_valid_s; + adc_pn_match_d_1 <= adc_pn_match_d_1_s; + adc_pn_match_d_0 <= adc_pn_match_d_0_s; + adc_pn_match_z <= adc_pn_match_z_s; + adc_pn_err <= adc_pn_valid & adc_pn_err_s; + if (adc_pn_valid == 1'b1) begin + if (adc_pn_update_s == 1'b1) begin + if (adc_pn_oos_count >= 16) begin + adc_pn_oos_count <= 'd0; + adc_pn_oos <= ~adc_pn_oos; + end else begin + adc_pn_oos_count <= adc_pn_oos_count + 1'b1; + adc_pn_oos <= adc_pn_oos; + end + end else begin + adc_pn_oos_count <= 'd0; + adc_pn_oos <= adc_pn_oos; + end + end + end + +endmodule + +// *************************************************************************** +// *************************************************************************** + From e73952a6944aca94b139a1fa551fd25a87528ccc Mon Sep 17 00:00:00 2001 From: Istvan Csomortani Date: Wed, 9 Apr 2014 17:34:40 +0300 Subject: [PATCH 17/18] ad9467 : initial checkin --- library/axi_ad9467/axi_ad9467.v | 312 ++++++++++++++ library/axi_ad9467/axi_ad9467_channel.v | 166 ++++++++ library/axi_ad9467/axi_ad9467_if.v | 403 +++++++++++++++++++ library/axi_ad9467/axi_ad9467_ip.tcl | 25 ++ library/axi_ad9467/axi_ad9467_pnmon.v | 264 ++++++++++++ projects/ad9467_fmc/common/ad9467_bd.tcl | 219 ++++++++++ projects/ad9467_fmc/common/ad9467_spi.v | 107 +++++ projects/ad9467_fmc/kc705/system_bd.tcl | 3 + projects/ad9467_fmc/kc705/system_constr.xdc | 37 ++ projects/ad9467_fmc/kc705/system_project.tcl | 14 + projects/ad9467_fmc/kc705/system_top.v | 261 ++++++++++++ projects/ad9467_fmc/zed/system_bd.tcl | 3 + projects/ad9467_fmc/zed/system_constr.xdc | 37 ++ projects/ad9467_fmc/zed/system_project.tcl | 14 + projects/ad9467_fmc/zed/system_top.v | 265 ++++++++++++ 15 files changed, 2130 insertions(+) create mode 100644 library/axi_ad9467/axi_ad9467.v create mode 100644 library/axi_ad9467/axi_ad9467_channel.v create mode 100644 library/axi_ad9467/axi_ad9467_if.v create mode 100644 library/axi_ad9467/axi_ad9467_ip.tcl create mode 100644 library/axi_ad9467/axi_ad9467_pnmon.v create mode 100644 projects/ad9467_fmc/common/ad9467_bd.tcl create mode 100644 projects/ad9467_fmc/common/ad9467_spi.v create mode 100644 projects/ad9467_fmc/kc705/system_bd.tcl create mode 100644 projects/ad9467_fmc/kc705/system_constr.xdc create mode 100644 projects/ad9467_fmc/kc705/system_project.tcl create mode 100644 projects/ad9467_fmc/kc705/system_top.v create mode 100644 projects/ad9467_fmc/zed/system_bd.tcl create mode 100644 projects/ad9467_fmc/zed/system_constr.xdc create mode 100644 projects/ad9467_fmc/zed/system_project.tcl create mode 100644 projects/ad9467_fmc/zed/system_top.v diff --git a/library/axi_ad9467/axi_ad9467.v b/library/axi_ad9467/axi_ad9467.v new file mode 100644 index 000000000..0b7b09595 --- /dev/null +++ b/library/axi_ad9467/axi_ad9467.v @@ -0,0 +1,312 @@ +// *************************************************************************** +// *************************************************************************** +// Copyright 2013(c) Analog Devices, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// - Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the +// distribution. +// - Neither the name of Analog Devices, Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// - The use of this software may or may not infringe the patent rights +// of one or more patent holders. This license does not release you +// from the requirement that you obtain separate licenses from these +// patent holders to use this software. +// - Use of the software either in source or binary form, must be run +// on or directly connected to an Analog Devices Inc. component. +// +// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +// INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE ARE DISCLAIMED. +// +// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY +// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** + +`timescale 1ns/1ns + +module axi_ad9467( + + // physical interface + + adc_clk_in_p, + adc_clk_in_n, + adc_data_in_p, + adc_data_in_n, + adc_data_or_p, + adc_data_or_n, + + // delay_clock + + delay_clk, + + // dma interface + + adc_clk, + adc_dwr, + adc_ddata, + adc_doverflow, + + // axi interface + + s_axi_aclk, + s_axi_aresetn, + s_axi_awvalid, + s_axi_awaddr, + s_axi_awready, + s_axi_wvalid, + s_axi_wdata, + s_axi_wstrb, + s_axi_wready, + s_axi_bvalid, + s_axi_bresp, + s_axi_bready, + s_axi_arvalid, + s_axi_araddr, + s_axi_arready, + s_axi_rvalid, + s_axi_rresp, + s_axi_rdata, + s_axi_rready +); + + // parameters + + parameter PCORE_ID = 0; + parameter PCORE_BUFTYPE = 0; + parameter PCORE_IODELAY_GROUP = "dev_if_delay_group"; + parameter C_S_AXI_MIN_SIZE = 32'hffff; + parameter C_BASEADDR = 32'hffffffff; + parameter C_HIGHADDR = 32'h00000000; + + // physical interface + + input adc_clk_in_p; + input adc_clk_in_n; + input [ 7:0] adc_data_in_p; + input [ 7:0] adc_data_in_n; + input adc_data_or_p; + input adc_data_or_n; + + // delay clk + + input delay_clk; + + // dma interface + + output adc_clk; + output adc_dwr; + output [15:0] adc_ddata; + input adc_doverflow; + + // axi interface + + input s_axi_aclk; + input s_axi_aresetn; + input s_axi_awvalid; + input [31:0] s_axi_awaddr; + output s_axi_awready; + input s_axi_wvalid; + input [31:0] s_axi_wdata; + input [ 3:0] s_axi_wstrb; + output s_axi_wready; + output s_axi_bvalid; + output [ 1:0] s_axi_bresp; + input s_axi_bready; + input s_axi_arvalid; + input [31:0] s_axi_araddr; + output s_axi_arready; + output s_axi_rvalid; + output [ 1:0] s_axi_rresp; + output [31:0] s_axi_rdata; + input s_axi_rready; + + // internal registers + reg [31:0] up_rdata = 32'b0; + reg up_ack = 1'b0; + + // internal clock and resets + wire up_clk; + wire up_rstn; + wire adc_rst; + wire adc_clk; + + // internal signals + wire up_sel_s; + wire up_wr_s; + wire [13:0] up_addr_s; + wire [31:0] up_wdata_s; + wire [15:0] adc_data_if_s; + wire adc_or_s; + wire up_adc_or_s; + wire adc_ddr_edgesel_s; + wire delay_sel_s; + wire delay_rwn_s; + wire [ 7:0] delay_addr_s; + wire [ 4:0] delay_wdata_s; + wire delay_rst; + wire delay_ack_s; + wire [ 4:0] delay_rdata_s; + wire delay_locked_s; + wire adc_pn_oos_s; + wire adc_pn_err_s; + wire [31:0] up_rdata_common; + wire [31:0] up_rdata_channel; + wire up_ack_common; + wire up_ack_channel; + wire adc_pn_type_s; + wire [15:0] adc_channel_data_s; + wire adc_enable_s; + + assign up_clk = s_axi_aclk; + assign up_rstn = s_axi_aresetn; + assign adc_dwr = 1'b1; + assign adc_ddata = adc_data_if_s; + + // processor read interface + always @(negedge up_rstn or posedge up_clk) begin + if (up_rstn == 0) begin + up_rdata <= 32'd0; + up_ack <= 1'd0; + end else begin + up_rdata <= up_rdata_channel | up_rdata_common; + up_ack <= up_ack_channel | up_ack_common; + end + end + + // ADC data interface + axi_ad9467_if #( + .PCORE_BUFTYPE (PCORE_BUFTYPE), + .PCORE_IODELAY_GROUP (PCORE_IODELAY_GROUP)) + i_if ( + .adc_clk_in_p (adc_clk_in_p), + .adc_clk_in_n (adc_clk_in_n), + .adc_data_in_p (adc_data_in_p), + .adc_data_in_n (adc_data_in_n), + .adc_data_or_p (adc_data_or_p), + .adc_data_or_n (adc_data_or_n), + .adc_clk (adc_clk), + .adc_data (adc_data_if_s), + .adc_or (adc_or_s), + .adc_ddr_edgesel (adc_ddr_edgesel_s), + .delay_sel (delay_sel_s), + .delay_rwn (delay_rwn_s), + .delay_addr (delay_addr_s), + .delay_wdata (delay_wdata_s), + .delay_clk (delay_clk), + .delay_ack (delay_ack_s), + .delay_rst (delay_rst), + .delay_rdata (delay_rdata_s), + .delay_locked (delay_locked_s)); + + // channel + axi_ad9467_channel #(.CHID(0)) i_channel ( + .adc_clk(adc_clk), + .adc_rst(adc_rst), + .adc_data(adc_data_if_s), + .adc_or(adc_or_s), + .adc_dfmt_data(adc_channel_data_s), + .adc_enable(adc_enable_s), + .up_adc_pn_err(adc_pn_err_s), + .up_adc_pn_oos(adc_pn_oos_s), + .up_adc_or(up_adc_or_s), + .up_rstn(up_rstn), + .up_clk(up_clk), + .up_sel(up_sel_s), + .up_wr(up_wr_s), + .up_addr(up_addr_s), + .up_wdata(up_wdata_s), + .up_rdata(up_rdata_channel), + .up_ack(up_ack_channel)); + + // common processor control + up_adc_common #(.PCORE_ID(PCORE_ID)) + i_up_adc_common( + .mmcm_rst(), + .delay_clk(delay_clk), + .delay_ack_t(delay_ack_s), + .delay_locked(delay_locked_s), + .delay_rst(delay_rst), + .delay_sel(delay_sel_s), + .delay_rwn(delay_rwn_s), + .delay_addr(delay_addr_s), + .delay_wdata(delay_wdata_s), + .delay_rdata(delay_rdata_s), + .adc_clk(adc_clk), + .adc_rst(adc_rst), + .adc_r1_mode(), + .adc_ddr_edgesel(adc_ddr_edgesel_s), + .adc_pin_mode(), + .adc_status(1'b1), + .adc_status_pn_err(adc_pn_err_s), + .adc_status_pn_oos(adc_pn_oos_s), + .adc_status_or(up_adc_or_s), + .adc_clk_ratio(32'b1), + .adc_status_ovf(adc_doverflow), + .adc_status_unf(1'b0), + .drp_clk(1'b0), + .drp_rdata(16'b0), + .drp_rst(), + .drp_sel(), + .drp_wr(), + .drp_addr(), + .drp_wdata(), + .drp_ready(1'b0), + .drp_locked(1'b1), + .up_rstn(up_rstn), + .up_clk(up_clk), + .up_sel(up_sel_s), + .up_wr(up_wr_s), + .up_addr(up_addr_s), + .up_wdata(up_wdata_s), + .up_rdata(up_rdata_common), + .up_ack(up_ack_common), + .up_usr_chanmax(), + .adc_usr_chanmax(8'b0)); + + // axi interface + up_axi #( + .PCORE_BASEADDR (C_BASEADDR), + .PCORE_HIGHADDR (C_HIGHADDR)) + i_up_axi ( + .up_rstn (up_rstn), + .up_clk (up_clk), + .up_axi_awvalid (s_axi_awvalid), + .up_axi_awaddr (s_axi_awaddr), + .up_axi_awready (s_axi_awready), + .up_axi_wvalid (s_axi_wvalid), + .up_axi_wdata (s_axi_wdata), + .up_axi_wstrb (s_axi_wstrb), + .up_axi_wready (s_axi_wready), + .up_axi_bvalid (s_axi_bvalid), + .up_axi_bresp (s_axi_bresp), + .up_axi_bready (s_axi_bready), + .up_axi_arvalid (s_axi_arvalid), + .up_axi_araddr (s_axi_araddr), + .up_axi_arready (s_axi_arready), + .up_axi_rvalid (s_axi_rvalid), + .up_axi_rresp (s_axi_rresp), + .up_axi_rdata (s_axi_rdata), + .up_axi_rready (s_axi_rready), + .up_sel (up_sel_s), + .up_wr (up_wr_s), + .up_addr (up_addr_s), + .up_wdata (up_wdata_s), + .up_rdata (up_rdata), + .up_ack (up_ack)); + +endmodule diff --git a/library/axi_ad9467/axi_ad9467_channel.v b/library/axi_ad9467/axi_ad9467_channel.v new file mode 100644 index 000000000..f8516571b --- /dev/null +++ b/library/axi_ad9467/axi_ad9467_channel.v @@ -0,0 +1,166 @@ +// *************************************************************************** +// *************************************************************************** +// Copyright 2013(c) Analog Devices, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// - Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the +// distribution. +// - Neither the name of Analog Devices, Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// - The use of this software may or may not infringe the patent rights +// of one or more patent holders. This license does not release you +// from the requirement that you obtain separate licenses from these +// patent holders to use this software. +// - Use of the software either in source or binary form, must be run +// on or directly connected to an Analog Devices Inc. component. +// +// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +// INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE ARE DISCLAIMED. +// +// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY +// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** + +`timescale 1ns/1ns + +//------------------------------------------------------------------------------ +//----------- Module Declaration ----------------------------------------------- +//------------------------------------------------------------------------------ +module axi_ad9467_channel( + + // adc interface + adc_clk, + adc_rst, + adc_data, + adc_or, + + // channel interface + adc_dfmt_data, + adc_enable, + up_adc_pn_err, + up_adc_pn_oos, + up_adc_or, + + // processor interface + up_rstn, + up_clk, + up_sel, + up_wr, + up_addr, + up_wdata, + up_rdata, + up_ack); + + // core parameter + parameter CHID = 0; + + // adc interface + input adc_clk; + input adc_rst; + input [15:0] adc_data; + input adc_or; + + // channel interface + output [15:0] adc_dfmt_data; + output adc_enable; + output up_adc_pn_err; + output up_adc_pn_oos; + output up_adc_or; + + // processor interface + input up_rstn; + input up_clk; + input up_sel; + input up_wr; + input [13:0] up_addr; + input [31:0] up_wdata; + output [31:0] up_rdata; + output up_ack; + + wire adc_pn_err_s; + wire adc_pn_oos_s; + wire adc_pn_type_s; + wire adc_dfmt_enable_s; + wire adc_dfmt_type_s; + wire adc_dfmt_se_s; + + // PN sequence monitor + axi_ad9467_pnmon i_axi_ad9467_pnmon ( + .adc_clk (adc_clk), + .adc_data (adc_data), + .adc_pn_oos (adc_pn_oos_s), + .adc_pn_err (adc_pn_err_s), + .up_pn_type (adc_pn_type_s)); + + ad_datafmt #(.DATA_WIDTH(16)) i_datafmt ( + .clk(adc_clk), + .valid(1'b1), + .data(adc_data), + .valid_out(), + .data_out(adc_dfmt_data), + .dfmt_enable(adc_dfmt_enable_s), + .dfmt_type(adc_dfmt_type_s), + .dfmt_se(adc_dfmt_se_s)); + + // adc channel control + up_adc_channel #(.PCORE_ADC_CHID(0)) i_up_adc_channel ( + .adc_clk (adc_clk), + .adc_rst (adc_rst), + .adc_enable (adc_enable), + .adc_pn_sel (), + .adc_iqcor_enb (), + .adc_dcfilt_enb (), + .adc_dfmt_se (adc_dfmt_se_s), + .adc_dfmt_type (adc_dfmt_type_s), + .adc_dfmt_enable (adc_dfmt_enable_s), + .adc_pn_type (adc_pn_type_s), + .adc_dcfilt_offset (), + .adc_dcfilt_coeff (), + .adc_iqcor_coeff_1 (), + .adc_iqcor_coeff_2 (), + .adc_pn_err (adc_pn_err_s), + .adc_pn_oos (adc_pn_oos_s), + .adc_or (adc_or), + .up_adc_pn_err (up_adc_pn_err), + .up_adc_pn_oos (up_adc_pn_oos), + .up_adc_or (up_adc_or), + .up_usr_datatype_be (), + .up_usr_datatype_signed (), + .up_usr_datatype_shift (), + .up_usr_datatype_total_bits (), + .up_usr_datatype_bits (), + .up_usr_decimation_m (), + .up_usr_decimation_n (), + .adc_usr_datatype_be (1'b0), + .adc_usr_datatype_signed (1'b1), + .adc_usr_datatype_shift (8'd0), + .adc_usr_datatype_total_bits (8'd16), + .adc_usr_datatype_bits (8'd16), + .adc_usr_decimation_m (16'd1), + .adc_usr_decimation_n (16'd1), + .up_rstn (up_rstn), + .up_clk (up_clk), + .up_sel (up_sel), + .up_wr (up_wr), + .up_addr (up_addr), + .up_wdata (up_wdata), + .up_rdata (up_rdata), + .up_ack (up_ack)); + +endmodule diff --git a/library/axi_ad9467/axi_ad9467_if.v b/library/axi_ad9467/axi_ad9467_if.v new file mode 100644 index 000000000..131817ba8 --- /dev/null +++ b/library/axi_ad9467/axi_ad9467_if.v @@ -0,0 +1,403 @@ +// *************************************************************************** +// *************************************************************************** +// Copyright 2011(c) Analog Devices, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// - Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the +// distribution. +// - Neither the name of Analog Devices, Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// - The use of this software may or may not infringe the patent rights +// of one or more patent holders. This license does not release you +// from the requirement that you obtain separate licenses from these +// patent holders to use this software. +// - Use of the software either in source or binary form, must be run +// on or directly connected to an Analog Devices Inc. component. +// +// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR +// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// +// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +// USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// This is the LVDS/DDR interface + +`timescale 1ns/100ps + +module axi_ad9467_if ( + + // adc interface (clk, data, over-range) + adc_clk_in_p, + adc_clk_in_n, + adc_data_in_p, + adc_data_in_n, + adc_data_or_p, + adc_data_or_n, + + // interface outputs + adc_clk, + adc_data, + adc_or, + + adc_ddr_edgesel, + + // delay control signals + delay_sel, + delay_rwn, + delay_addr, + delay_wdata, + delay_clk, + delay_ack, + delay_rst, + delay_rdata, + delay_locked); + + // This parameter controls the buffer type based on the target device. + parameter PCORE_BUFTYPE = 0; + parameter C_DEVICE_7SERIES = 0; + parameter C_DEVICE_VIRTEX6 = 1; + + + parameter PCORE_IODELAY_GROUP = "dev_if_delay_group"; + + // adc interface (clk, data, over-range) + input adc_clk_in_p; + input adc_clk_in_n; + input [ 7:0] adc_data_in_p; + input [ 7:0] adc_data_in_n; + input adc_data_or_p; + input adc_data_or_n; + + // interface outputs + output adc_clk; + output [15:0] adc_data; + output adc_or; + + input adc_ddr_edgesel; + + // delay control signals + input delay_sel; + input delay_rwn; + input [ 7:0] delay_addr; + input [ 4:0] delay_wdata; + input delay_clk; + input delay_rst; + output delay_ack; + output [ 4:0] delay_rdata; + output delay_locked; + + reg [ 7:0] adc_data_p = 'd0; + reg [ 7:0] adc_data_n = 'd0; + reg [ 7:0] adc_data_n_d = 'd0; + reg [ 7:0] adc_dmux_a = 'd0; + reg [ 7:0] adc_dmux_b = 'd0; + reg [15:0] adc_data = 'd0; + reg adc_or_p = 'd0; + reg adc_or_n = 'd0; + reg adc_or = 'd0; + reg [ 8:0] delay_ld = 'd0; + reg delay_ack = 'd0; + reg [ 4:0] delay_rdata = 'd0; + + wire [ 4:0] delay_rdata_s[8:0]; + wire [ 7:0] adc_data_ibuf_s; + wire [ 7:0] adc_data_idelay_s; + wire [ 7:0] adc_data_p_s; + wire [ 7:0] adc_data_n_s; + wire adc_or_ibuf_s; + wire adc_or_idelay_s; + wire adc_or_p_s; + wire adc_or_n_s; + wire adc_clk_ibuf_s; + + genvar l_inst; + + // The adc data is 8bits ddr, and here it is demuxed to 16bits. + // The samples may be selected to be either positive first, + // or negative first. + + always @(posedge adc_clk) begin + adc_data_p <= adc_data_p_s; + adc_data_n <= adc_data_n_s; + adc_data_n_d <= adc_data_n; + adc_dmux_a <= (adc_ddr_edgesel == 1'b1) ? adc_data_n : adc_data_p; + adc_dmux_b <= (adc_ddr_edgesel == 1'b1) ? adc_data_p : adc_data_n_d; + adc_data[15] <= adc_dmux_b[7]; + adc_data[14] <= adc_dmux_a[7]; + adc_data[13] <= adc_dmux_b[6]; + adc_data[12] <= adc_dmux_a[6]; + adc_data[11] <= adc_dmux_b[5]; + adc_data[10] <= adc_dmux_a[5]; + adc_data[ 9] <= adc_dmux_b[4]; + adc_data[ 8] <= adc_dmux_a[4]; + adc_data[ 7] <= adc_dmux_b[3]; + adc_data[ 6] <= adc_dmux_a[3]; + adc_data[ 5] <= adc_dmux_b[2]; + adc_data[ 4] <= adc_dmux_a[2]; + adc_data[ 3] <= adc_dmux_b[1]; + adc_data[ 2] <= adc_dmux_a[1]; + adc_data[ 1] <= adc_dmux_b[0]; + adc_data[ 0] <= adc_dmux_a[0]; + adc_or_p <= adc_or_p_s; + adc_or_n <= adc_or_n_s; + if ((adc_or_p == 1'b1) || (adc_or_n == 1'b1)) begin + adc_or <= 1'b1; + end else begin + adc_or <= 1'b0; + end + end + + // The delay write interface, each delay element can be individually + // addressed, and a delay value can be directly loaded (no INC/DEC stuff) + + always @(posedge delay_clk) begin + if ((delay_sel == 1'b1) && (delay_rwn == 1'b0)) begin + case (delay_addr) + 8'd8 : delay_ld <= 9'h100; + 8'd7 : delay_ld <= 9'h080; + 8'd6 : delay_ld <= 9'h040; + 8'd5 : delay_ld <= 9'h020; + 8'd4 : delay_ld <= 9'h010; + 8'd3 : delay_ld <= 9'h008; + 8'd2 : delay_ld <= 9'h004; + 8'd1 : delay_ld <= 9'h002; + 8'd0 : delay_ld <= 9'h001; + default: delay_ld <= 9'h000; + endcase + end else begin + delay_ld <= 9'h000; + end + end + + + // delay read interface, a delay ack toggle is used to transfer data to the + // processor side- delay locked is independently transferred + + always @(posedge delay_clk) begin + case (delay_addr) + 8'd8 : delay_rdata <= delay_rdata_s[8]; + 8'd7 : delay_rdata <= delay_rdata_s[7]; + 8'd6 : delay_rdata <= delay_rdata_s[6]; + 8'd5 : delay_rdata <= delay_rdata_s[5]; + 8'd4 : delay_rdata <= delay_rdata_s[4]; + 8'd3 : delay_rdata <= delay_rdata_s[3]; + 8'd2 : delay_rdata <= delay_rdata_s[2]; + 8'd1 : delay_rdata <= delay_rdata_s[1]; + 8'd0 : delay_rdata <= delay_rdata_s[0]; + default: delay_rdata <= 5'd0; + endcase + if (delay_sel == 1'b1) begin + delay_ack <= ~delay_ack; + end + end + + // The data interface, data signals goes through a LVDS input buffer, then + // a delay element (1/32th of a 200MHz clock) and finally an input DDR demux. + + generate + for (l_inst = 0; l_inst <= 7; l_inst = l_inst + 1) begin : g_adc_if + + IBUFDS i_data_ibuf ( + .I (adc_data_in_p[l_inst]), + .IB (adc_data_in_n[l_inst]), + .O (adc_data_ibuf_s[l_inst])); + + if (PCORE_BUFTYPE == C_DEVICE_VIRTEX6) begin + (* IODELAY_GROUP = PCORE_IODELAY_GROUP *) + IODELAYE1 #( + .CINVCTRL_SEL ("FALSE"), + .DELAY_SRC ("I"), + .HIGH_PERFORMANCE_MODE ("TRUE"), + .IDELAY_TYPE ("VAR_LOADABLE"), + .IDELAY_VALUE (0), + .ODELAY_TYPE ("FIXED"), + .ODELAY_VALUE (0), + .REFCLK_FREQUENCY (200.0), + .SIGNAL_PATTERN ("DATA")) + i_data_idelay ( + .T (1'b1), + .CE (1'b0), + .INC (1'b0), + .CLKIN (1'b0), + .DATAIN (1'b0), + .ODATAIN (1'b0), + .CINVCTRL (1'b0), + .C (delay_clk), + .IDATAIN (adc_data_ibuf_s[l_inst]), + .DATAOUT (adc_data_idelay_s[l_inst]), + .RST (delay_ld[l_inst]), + .CNTVALUEIN (delay_wdata), + .CNTVALUEOUT (delay_rdata_s[l_inst])); + end else begin + (* IODELAY_GROUP = PCORE_IODELAY_GROUP *) + IDELAYE2 #( + .CINVCTRL_SEL ("FALSE"), + .DELAY_SRC ("IDATAIN"), + .HIGH_PERFORMANCE_MODE ("FALSE"), + .IDELAY_TYPE ("VAR_LOAD"), + .IDELAY_VALUE (0), + .REFCLK_FREQUENCY (200.0), + .PIPE_SEL ("FALSE"), + .SIGNAL_PATTERN ("DATA")) + i_data_idelay ( + .CE (1'b0), + .INC (1'b0), + .DATAIN (1'b0), + .LDPIPEEN (1'b0), + .CINVCTRL (1'b0), + .REGRST (1'b0), + .C (delay_clk), + .IDATAIN (adc_data_ibuf_s[l_inst]), + .DATAOUT (adc_data_idelay_s[l_inst]), + .LD (delay_ld[l_inst]), + .CNTVALUEIN (delay_wdata), + .CNTVALUEOUT (delay_rdata_s[l_inst])); + end + + IDDR #( + .INIT_Q1 (1'b0), + .INIT_Q2 (1'b0), + .DDR_CLK_EDGE ("SAME_EDGE_PIPELINED"), + .SRTYPE ("ASYNC")) + i_data_ddr ( + .CE (1'b1), + .R (1'b0), + .S (1'b0), + .C (adc_clk), + .D (adc_data_idelay_s[l_inst]), + .Q1 (adc_data_p_s[l_inst]), + .Q2 (adc_data_n_s[l_inst])); + + end + endgenerate + + // The over-range interface, it follows a similar path as the data signals. + + IBUFDS i_or_ibuf ( + .I (adc_data_or_p), + .IB (adc_data_or_n), + .O (adc_or_ibuf_s)); + + generate + if (PCORE_BUFTYPE == C_DEVICE_VIRTEX6) begin + (* IODELAY_GROUP = PCORE_IODELAY_GROUP *) + IODELAYE1 #( + .CINVCTRL_SEL ("FALSE"), + .DELAY_SRC ("I"), + .HIGH_PERFORMANCE_MODE ("TRUE"), + .IDELAY_TYPE ("VAR_LOADABLE"), + .IDELAY_VALUE (0), + .ODELAY_TYPE ("FIXED"), + .ODELAY_VALUE (0), + .REFCLK_FREQUENCY (200.0), + .SIGNAL_PATTERN ("DATA")) + i_or_idelay ( + .T (1'b1), + .CE (1'b0), + .INC (1'b0), + .CLKIN (1'b0), + .DATAIN (1'b0), + .ODATAIN (1'b0), + .CINVCTRL (1'b0), + .C (delay_clk), + .IDATAIN (adc_or_ibuf_s), + .DATAOUT (adc_or_idelay_s), + .RST (delay_ld[8]), + .CNTVALUEIN (delay_wdata), + .CNTVALUEOUT (delay_rdata_s[8])); + end else begin + (* IODELAY_GROUP = PCORE_IODELAY_GROUP *) + IDELAYE2 #( + .CINVCTRL_SEL ("FALSE"), + .DELAY_SRC ("IDATAIN"), + .HIGH_PERFORMANCE_MODE ("FALSE"), + .IDELAY_TYPE ("VAR_LOAD"), + .IDELAY_VALUE (0), + .REFCLK_FREQUENCY (200.0), + .PIPE_SEL ("FALSE"), + .SIGNAL_PATTERN ("DATA")) + i_or_idelay ( + .CE (1'b0), + .INC (1'b0), + .DATAIN (1'b0), + .LDPIPEEN (1'b0), + .CINVCTRL (1'b0), + .REGRST (1'b0), + .C (delay_clk), + .IDATAIN (adc_or_ibuf_s), + .DATAOUT (adc_or_idelay_s), + .LD (delay_ld[8]), + .CNTVALUEIN (delay_wdata), + .CNTVALUEOUT (delay_rdata_s[8])); + end + endgenerate + + IDDR #( + .INIT_Q1 (1'b0), + .INIT_Q2 (1'b0), + .DDR_CLK_EDGE ("SAME_EDGE_PIPELINED"), + .SRTYPE ("ASYNC")) + i_or_ddr ( + .CE (1'b1), + .R (1'b0), + .S (1'b0), + .C (adc_clk), + .D (adc_or_idelay_s), + .Q1 (adc_or_p_s), + .Q2 (adc_or_n_s)); + + // The clock path is a simple clock buffer after a LVDS input buffer. + // It is possible for this logic to be replaced with a OSERDES based data capture. + // The reason for such a simple interface here is because this reference design + // is used for various boards (native fmc and/or evaluation boards). The pinouts + // of the FPGA - ADC interface is probably do not allow a OSERDES placement. + + IBUFGDS i_clk_ibuf ( + .I (adc_clk_in_p), + .IB (adc_clk_in_n), + .O (adc_clk_ibuf_s)); + + generate + if (PCORE_BUFTYPE == C_DEVICE_VIRTEX6) begin + BUFR #(.BUFR_DIVIDE ("BYPASS")) i_clk_gbuf ( + .CLR (1'b0), + .CE (1'b1), + .I (adc_clk_ibuf_s), + .O (adc_clk)); + end else begin + BUFG i_clk_gbuf ( + .I (adc_clk_ibuf_s), + .O (adc_clk)); + end + endgenerate + + // The delay controller. Refer to Xilinx doc. for details. + // The GROUP directive controls which delay elements this is associated with. + + (* IODELAY_GROUP = PCORE_IODELAY_GROUP *) + IDELAYCTRL i_delay_ctrl ( + .RST (delay_rst), + .REFCLK (delay_clk), + .RDY (delay_locked)); + +endmodule + +// *************************************************************************** +// *************************************************************************** diff --git a/library/axi_ad9467/axi_ad9467_ip.tcl b/library/axi_ad9467/axi_ad9467_ip.tcl new file mode 100644 index 000000000..3b2345dbf --- /dev/null +++ b/library/axi_ad9467/axi_ad9467_ip.tcl @@ -0,0 +1,25 @@ +# ip + +source ../scripts/adi_env.tcl +source $ad_hdl_dir/library/scripts/adi_ip.tcl + +adi_ip_create axi_ad9467 +adi_ip_files axi_ad9467 [list \ + "$ad_hdl_dir/library/common/ad_rst.v" \ + "$ad_hdl_dir/library/common/ad_datafmt.v" \ + "$ad_hdl_dir/library/common/up_xfer_status.v" \ + "$ad_hdl_dir/library/common/up_xfer_cntrl.v" \ + "$ad_hdl_dir/library/common/up_clock_mon.v" \ + "$ad_hdl_dir/library/common/up_delay_cntrl.v" \ + "$ad_hdl_dir/library/common/up_drp_cntrl.v" \ + "$ad_hdl_dir/library/common/up_adc_common.v" \ + "$ad_hdl_dir/library/common/up_adc_channel.v" \ + "$ad_hdl_dir/library/common/up_axi.v" \ + "axi_ad9467_pnmon.v" \ + "axi_ad9467_if.v" \ + "axi_ad9467_channel.v" \ + "axi_ad9467.v"] + +adi_ip_properties axi_ad9467 + +ipx::save_core [ipx::current_core] diff --git a/library/axi_ad9467/axi_ad9467_pnmon.v b/library/axi_ad9467/axi_ad9467_pnmon.v new file mode 100644 index 000000000..cda889eed --- /dev/null +++ b/library/axi_ad9467/axi_ad9467_pnmon.v @@ -0,0 +1,264 @@ +// *************************************************************************** +// *************************************************************************** +// Copyright 2011(c) Analog Devices, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// - Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the +// distribution. +// - Neither the name of Analog Devices, Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// - The use of this software may or may not infringe the patent rights +// of one or more patent holders. This license does not release you +// from the requirement that you obtain separate licenses from these +// patent holders to use this software. +// - Use of the software either in source or binary form, must be run +// on or directly connected to an Analog Devices Inc. component. +// +// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +// INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE ARE DISCLAIMED. +// +// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY +// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// PN monitors + +`timescale 1ns/100ps + +module axi_ad9467_pnmon ( + + // adc interface + adc_clk, + adc_data, + + // pn out of sync and error + adc_pn_oos, + adc_pn_err, + + // processor interface PN9 (0x0), PN23 (0x1) + up_pn_type); + + // adc interface + input adc_clk; + input [15:0] adc_data; + + // pn out of sync and error + output adc_pn_oos; + output adc_pn_err; + + // processor interface PN9 (0x0), PN23 (0x1) + input up_pn_type; + + reg adc_pn_type_m1 = 'd0; + reg adc_pn_type_m2 = 'd0; + reg adc_pn_type = 'd0; + reg adc_pn_en = 'd0; + reg [15:0] adc_data_d = 'd0; + reg [31:0] adc_pn_data = 'd0; + reg adc_pn_en_d = 'd0; + reg adc_pn_match = 'd0; + reg [ 6:0] adc_pn_oos_count = 'd0; + reg adc_pn_oos = 'd0; + reg [ 4:0] adc_pn_err_count = 'd0; + reg adc_pn_err = 'd0; + + wire [31:0] adc_pn_data_in_s; + wire adc_pn_match0_s; + wire adc_pn_match1_s; + wire adc_pn_match2_s; + wire adc_pn_match_s; + wire [31:0] adc_pn_data_s; + wire adc_pn_err_s; + + // PN23 function + + function [31:0] pn23; + input [31:0] din; + reg [31:0] dout; + begin + dout[31] = din[22] ^ din[17]; + dout[30] = din[21] ^ din[16]; + dout[29] = din[20] ^ din[15]; + dout[28] = din[19] ^ din[14]; + dout[27] = din[18] ^ din[13]; + dout[26] = din[17] ^ din[12]; + dout[25] = din[16] ^ din[11]; + dout[24] = din[15] ^ din[10]; + dout[23] = din[14] ^ din[ 9]; + dout[22] = din[13] ^ din[ 8]; + dout[21] = din[12] ^ din[ 7]; + dout[20] = din[11] ^ din[ 6]; + dout[19] = din[10] ^ din[ 5]; + dout[18] = din[ 9] ^ din[ 4]; + dout[17] = din[ 8] ^ din[ 3]; + dout[16] = din[ 7] ^ din[ 2]; + dout[15] = din[ 6] ^ din[ 1]; + dout[14] = din[ 5] ^ din[ 0]; + dout[13] = din[ 4] ^ din[22] ^ din[17]; + dout[12] = din[ 3] ^ din[21] ^ din[16]; + dout[11] = din[ 2] ^ din[20] ^ din[15]; + dout[10] = din[ 1] ^ din[19] ^ din[14]; + dout[ 9] = din[ 0] ^ din[18] ^ din[13]; + dout[ 8] = din[22] ^ din[12]; + dout[ 7] = din[21] ^ din[11]; + dout[ 6] = din[20] ^ din[10]; + dout[ 5] = din[19] ^ din[ 9]; + dout[ 4] = din[18] ^ din[ 8]; + dout[ 3] = din[17] ^ din[ 7]; + dout[ 2] = din[16] ^ din[ 6]; + dout[ 1] = din[15] ^ din[ 5]; + dout[ 0] = din[14] ^ din[ 4]; + pn23 = dout; + end + endfunction + + // PN9 function + + function [31:0] pn9; + input [31:0] din; + reg [31:0] dout; + begin + dout[31] = din[ 8] ^ din[ 4]; + dout[30] = din[ 7] ^ din[ 3]; + dout[29] = din[ 6] ^ din[ 2]; + dout[28] = din[ 5] ^ din[ 1]; + dout[27] = din[ 4] ^ din[ 0]; + dout[26] = din[ 3] ^ din[ 8] ^ din[ 4]; + dout[25] = din[ 2] ^ din[ 7] ^ din[ 3]; + dout[24] = din[ 1] ^ din[ 6] ^ din[ 2]; + dout[23] = din[ 0] ^ din[ 5] ^ din[ 1]; + dout[22] = din[ 8] ^ din[ 0]; + dout[21] = din[ 7] ^ din[ 8] ^ din[ 4]; + dout[20] = din[ 6] ^ din[ 7] ^ din[ 3]; + dout[19] = din[ 5] ^ din[ 6] ^ din[ 2]; + dout[18] = din[ 4] ^ din[ 5] ^ din[ 1]; + dout[17] = din[ 3] ^ din[ 4] ^ din[ 0]; + dout[16] = din[ 2] ^ din[ 3] ^ din[ 8] ^ din[ 4]; + dout[15] = din[ 1] ^ din[ 2] ^ din[ 7] ^ din[ 3]; + dout[14] = din[ 0] ^ din[ 1] ^ din[ 6] ^ din[ 2]; + dout[13] = din[ 8] ^ din[ 0] ^ din[ 4] ^ din[ 5] ^ din[ 1]; + dout[12] = din[ 7] ^ din[ 8] ^ din[ 3] ^ din[ 0]; + dout[11] = din[ 6] ^ din[ 7] ^ din[ 2] ^ din[ 8] ^ din[ 4]; + dout[10] = din[ 5] ^ din[ 6] ^ din[ 1] ^ din[ 7] ^ din[ 3]; + dout[ 9] = din[ 4] ^ din[ 5] ^ din[ 0] ^ din[ 6] ^ din[ 2]; + dout[ 8] = din[ 3] ^ din[ 8] ^ din[ 5] ^ din[ 1]; + dout[ 7] = din[ 2] ^ din[ 4] ^ din[ 7] ^ din[ 0]; + dout[ 6] = din[ 1] ^ din[ 3] ^ din[ 6] ^ din[ 8] ^ din[ 4]; + dout[ 5] = din[ 0] ^ din[ 2] ^ din[ 5] ^ din[ 7] ^ din[ 3]; + dout[ 4] = din[ 8] ^ din[ 1] ^ din[ 6] ^ din[ 2]; + dout[ 3] = din[ 7] ^ din[ 0] ^ din[ 5] ^ din[ 1]; + dout[ 2] = din[ 6] ^ din[ 8] ^ din[ 0]; + dout[ 1] = din[5] ^ din[7] ^ din[8] ^ din[4]; + dout[ 0] = din[4] ^ din[6] ^ din[7] ^ din[3]; + pn9 = dout; + end + endfunction + + // This PN sequence checking algorithm is commonly used is most applications. + // It is a simple function generated based on the OOS status. + // If OOS is asserted (PN is OUT of sync): + // The next sequence is generated from the incoming data. + // If 16 sequences match CONSECUTIVELY, OOS is cleared (de-asserted). + // If OOS is de-asserted (PN is IN sync) + // The next sequence is generated from the current sequence. + // If 64 sequences mismatch CONSECUTIVELY, OOS is set (asserted). + // If OOS is de-asserted, any spurious mismatches sets the ERROR register. + // Ideally, processor should make sure both OOS == 0x0 AND ERR == 0x0. + + assign adc_pn_data_in_s[31:16] = {~adc_data_d[15], adc_data_d[14:0]}; + assign adc_pn_data_in_s[15:0] = {~adc_data[15], adc_data[14:0]}; + assign adc_pn_match0_s = (adc_pn_data_in_s[31:16] == adc_pn_data[31:16]) ? 1'b1 : 1'b0; + assign adc_pn_match1_s = (adc_pn_data_in_s[15:0] == adc_pn_data[15:0]) ? 1'b1 : 1'b0; + assign adc_pn_match2_s = ((adc_data == 16'd0) && (adc_data_d == 16'd0)) ? 1'b0 : 1'b1; + assign adc_pn_match_s = adc_pn_match0_s & adc_pn_match1_s & adc_pn_match2_s; + assign adc_pn_data_s = (adc_pn_oos == 1'b1) ? adc_pn_data_in_s : adc_pn_data; + assign adc_pn_err_s = ~(adc_pn_oos | adc_pn_match); + + // PN running sequence + + always @(posedge adc_clk) begin + adc_pn_type_m1 <= up_pn_type; + adc_pn_type_m2 <= adc_pn_type_m1; + adc_pn_type <= adc_pn_type_m2; + adc_pn_en <= ~adc_pn_en; + adc_data_d <= adc_data; + if (adc_pn_en == 1'b1) begin + if (adc_pn_type == 1'b0) begin + adc_pn_data <= pn9(adc_pn_data_s); + end else begin + adc_pn_data <= pn23(adc_pn_data_s); + end + end + end + + // PN OOS and counters (16 to clear, 64 to set). These numbers are actually determined + // based on BER parameters set by the system (usually in network applications). + + always @(posedge adc_clk) begin + adc_pn_en_d <= adc_pn_en; + adc_pn_match <= adc_pn_match_s; + if (adc_pn_en_d == 1'b1) begin + if (adc_pn_oos == 1'b1) begin + if (adc_pn_match == 1'b1) begin + if (adc_pn_oos_count >= 16) begin + adc_pn_oos_count <= 'd0; + adc_pn_oos <= 'd0; + end else begin + adc_pn_oos_count <= adc_pn_oos_count + 1'b1; + adc_pn_oos <= 'd1; + end + end else begin + adc_pn_oos_count <= 'd0; + adc_pn_oos <= 'd1; + end + end else begin + if (adc_pn_match == 1'b0) begin + if (adc_pn_oos_count >= 64) begin + adc_pn_oos_count <= 'd0; + adc_pn_oos <= 'd1; + end else begin + adc_pn_oos_count <= adc_pn_oos_count + 1'b1; + adc_pn_oos <= 'd0; + end + end else begin + adc_pn_oos_count <= 'd0; + adc_pn_oos <= 'd0; + end + end + end + end + + // The error state is streched to multiple adc clocks such that processor + // has enough time to sample the error condition. + + always @(posedge adc_clk) begin + if (adc_pn_en_d == 1'b1) begin + if (adc_pn_err_s == 1'b1) begin + adc_pn_err_count <= 5'h10; + end else if (adc_pn_err_count[4] == 1'b1) begin + adc_pn_err_count <= adc_pn_err_count + 1'b1; + end + end + adc_pn_err <= adc_pn_err_count[4]; + end + +endmodule + +// *************************************************************************** +// *************************************************************************** + diff --git a/projects/ad9467_fmc/common/ad9467_bd.tcl b/projects/ad9467_fmc/common/ad9467_bd.tcl new file mode 100644 index 000000000..44f9189c9 --- /dev/null +++ b/projects/ad9467_fmc/common/ad9467_bd.tcl @@ -0,0 +1,219 @@ + +# ad9467 + +set adc_clk_in_p [create_bd_port -dir I adc_clk_in_p] +set adc_clk_in_n [create_bd_port -dir I adc_clk_in_n] +set adc_data_or_p [create_bd_port -dir I adc_data_or_p] +set adc_data_or_n [create_bd_port -dir I adc_data_or_n] +set adc_data_in_n [create_bd_port -dir I -from 7 -to 0 adc_data_in_n] +set adc_data_in_p [create_bd_port -dir I -from 7 -to 0 adc_data_in_p] + +set spi_csn_i [create_bd_port -dir I spi_csn_i] +set spi_csn_o [create_bd_port -dir O -from 1 -to 0 spi_csn_o] +set spi_clk_i [create_bd_port -dir I spi_clk_i] +set spi_clk_o [create_bd_port -dir O spi_clk_o] +set spi_sdo_o [create_bd_port -dir O spi_sdo_o] +set spi_sdo_i [create_bd_port -dir I spi_sdo_i] +set spi_sdi_i [create_bd_port -dir I spi_sdi_i] + +# adc peripheral + +set axi_ad9467 [create_bd_cell -type ip -vlnv analog.com:user:axi_ad9467:1.0 axi_ad9467] + +set axi_ad9467_dma [create_bd_cell -type ip -vlnv analog.com:user:axi_dmac:1.0 axi_ad9467_dma] +set_property -dict [list CONFIG.C_DMA_TYPE_SRC {2}] $axi_ad9467_dma +set_property -dict [list CONFIG.C_DMA_TYPE_DEST {0}] $axi_ad9467_dma +set_property -dict [list CONFIG.C_CYCLIC {0}] $axi_ad9467_dma +set_property -dict [list CONFIG.C_SYNC_TRANSFER_START {0}] $axi_ad9467_dma +set_property -dict [list CONFIG.C_AXI_SLICE_SRC {0}] $axi_ad9467_dma +set_property -dict [list CONFIG.C_AXI_SLICE_DEST {0}] $axi_ad9467_dma +set_property -dict [list CONFIG.C_CLKS_ASYNC_DEST_REQ {1}] $axi_ad9467_dma +set_property -dict [list CONFIG.C_CLKS_ASYNC_SRC_DEST {1}] $axi_ad9467_dma +set_property -dict [list CONFIG.C_CLKS_ASYNC_REQ_SRC {1}] $axi_ad9467_dma +set_property -dict [list CONFIG.C_2D_TRANSFER {0}] $axi_ad9467_dma +set_property -dict [list CONFIG.C_DMA_DATA_WIDTH_SRC {16}] $axi_ad9467_dma +set_property -dict [list CONFIG.C_DMA_DATA_WIDTH_DEST {64}] $axi_ad9467_dma + +if {$sys_zynq == 1} { + set axi_ad9467_dma_interconnect [create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 axi_ad9467_dma_interconnect] + set_property -dict [list CONFIG.NUM_MI {1}] $axi_ad9467_dma_interconnect +} + +# spi +if {$sys_zynq == 0} { + set axi_ad9467_spi [create_bd_cell -type ip -vlnv xilinx.com:ip:axi_quad_spi:3.1 axi_ad9467_spi] + set_property -dict [list CONFIG.C_USE_STARTUP {0}] $axi_ad9467_spi + set_property -dict [list CONFIG.C_NUM_SS_BITS {2}] $axi_ad9467_spi + set_property -dict [list CONFIG.C_SCK_RATIO {8}] $axi_ad9467_spi +} else { + set_property -dict [list CONFIG.PCW_SPI0_PERIPHERAL_ENABLE {1}] $sys_ps7 + set_property -dict [list CONFIG.PCW_SPI0_SPI0_IO {EMIO}] $sys_ps7 +} + +# additions to default configuration +if {$sys_zynq == 0} { + set_property -dict [list CONFIG.NUM_MI {10}] $axi_cpu_interconnect +} else { + set_property -dict [list CONFIG.NUM_MI {9}] $axi_cpu_interconnect +} + +if {$sys_zynq == 0} { + set_property -dict [list CONFIG.NUM_PORTS {6}] $sys_concat_intc + set_property -dict [list CONFIG.NUM_SI {9}] $axi_mem_interconnect +} + +# clock for ila +if {$sys_zynq == 1} { + set_property -dict [list CONFIG.PCW_USE_S_AXI_HP1 {1}] $sys_ps7 + set_property -dict [list CONFIG.PCW_EN_CLK2_PORT {1}] $sys_ps7 + set_property -dict [list CONFIG.PCW_EN_RST2_PORT {1}] $sys_ps7 + set_property -dict [list CONFIG.PCW_FPGA2_PERIPHERAL_FREQMHZ {125.0}] $sys_ps7 + + set_property LEFT 31 [get_bd_ports GPIO_I] + set_property LEFT 31 [get_bd_ports GPIO_O] + set_property LEFT 31 [get_bd_ports GPIO_T] + + set sys_ila_clk_source [get_bd_pins sys_ps7/FCLK_CLK2] + + connect_bd_net -net sys_ila_clk $sys_ila_clk_source +} else { + set ila_clkgen [create_bd_cell -type ip -vlnv xilinx.com:ip:clk_wiz:5.1 ila_clkgen] + set_property -dict [list CONFIG.PRIM_IN_FREQ {200}] $ila_clkgen + set_property -dict [list CONFIG.CLKOUT1_REQUESTED_OUT_FREQ {125}] $ila_clkgen + set_property -dict [list CONFIG.USE_LOCKED {false}] $ila_clkgen + set_property -dict [list CONFIG.USE_RESET {false}] $ila_clkgen + + connect_bd_net -net sys_200m_clk [get_bd_pins ila_clkgen/clk_in1] + + set sys_ila_clk_source [get_bd_pins ila_clkgen/clk_out1] + connect_bd_net -net sys_ila_clk $sys_ila_clk_source +} + +# connections (spi) +if {$sys_zynq == 0} { + connect_bd_net -net spi_csn_i [get_bd_ports spi_csn_i] [get_bd_pins axi_ad9467_spi/ss_i] + connect_bd_net -net spi_csn_o [get_bd_ports spi_csn_o] [get_bd_pins axi_ad9467_spi/ss_o] + connect_bd_net -net spi_sclk_i [get_bd_ports spi_clk_i] [get_bd_pins axi_ad9467_spi/sck_i] + connect_bd_net -net spi_sclk_o [get_bd_ports spi_clk_o] [get_bd_pins axi_ad9467_spi/sck_o] + connect_bd_net -net spi_mosi_i [get_bd_ports spi_sdo_i] [get_bd_pins axi_ad9467_spi/io0_i] + connect_bd_net -net spi_mosi_o [get_bd_ports spi_sdo_o] [get_bd_pins axi_ad9467_spi/io0_o] + connect_bd_net -net spi_miso_i [get_bd_ports spi_sdi_i] [get_bd_pins axi_ad9467_spi/io1_i] + + delete_bd_objs [get_bd_nets sys_concat_intc_din_2] + delete_bd_objs [get_bd_ports unc_int2] +} else { + set sys_spi_csn_concat [create_bd_cell -type ip -vlnv xilinx.com:ip:xlconcat:1.0 sys_spi_csn_concat] + set_property -dict [list CONFIG.NUM_PORTS {2}] $sys_spi_csn_concat + + connect_bd_net -net spi_csn0 [get_bd_pins sys_spi_csn_concat/In1] [get_bd_pins sys_ps7/SPI0_SS_O] + connect_bd_net -net spi_csn1 [get_bd_pins sys_spi_csn_concat/In0] [get_bd_pins sys_ps7/SPI0_SS1_O] + connect_bd_net -net spi_csn_o [get_bd_ports spi_csn_o] [get_bd_pins sys_spi_csn_concat/dout] + connect_bd_net -net spi_csn_i [get_bd_ports spi_csn_i] [get_bd_pins sys_ps7/SPI0_SS_I] + connect_bd_net -net spi_sclk_i [get_bd_ports spi_clk_i] [get_bd_pins sys_ps7/SPI0_SCLK_I] + connect_bd_net -net spi_sclk_o [get_bd_ports spi_clk_o] [get_bd_pins sys_ps7/SPI0_SCLK_O] + connect_bd_net -net spi_mosi_i [get_bd_ports spi_sdo_i] [get_bd_pins sys_ps7/SPI0_MOSI_I] + connect_bd_net -net spi_mosi_o [get_bd_ports spi_sdo_o] [get_bd_pins sys_ps7/SPI0_MOSI_O] + connect_bd_net -net spi_miso_i [get_bd_ports spi_sdi_i] [get_bd_pins sys_ps7/SPI0_MISO_I] +} + +# connections (ad9467) +connect_bd_net -net axi_ad9467_adc_clk_in_n [get_bd_ports adc_clk_in_p] [get_bd_pins axi_ad9467/adc_clk_in_p] +connect_bd_net -net axi_ad9467_adc_clk_in_p [get_bd_ports adc_clk_in_n] [get_bd_pins axi_ad9467/adc_clk_in_n] +connect_bd_net -net axi_ad9467_adc_data_in_n [get_bd_ports adc_data_in_n] [get_bd_pins axi_ad9467/adc_data_in_n] +connect_bd_net -net axi_ad9467_adc_data_in_p [get_bd_ports adc_data_in_p] [get_bd_pins axi_ad9467/adc_data_in_p] +connect_bd_net -net axi_ad9467_adc_data_or_n [get_bd_ports adc_data_or_p] [get_bd_pins axi_ad9467/adc_data_or_p] +connect_bd_net -net axi_ad9467_adc_data_or_p [get_bd_ports adc_data_or_n] [get_bd_pins axi_ad9467/adc_data_or_n] + +set adc_250m_clk_source [get_bd_pins axi_ad9467/adc_clk] + +connect_bd_net -net adc_250m_clk [get_bd_pins axi_ad9467_dma/fifo_wr_clk] $adc_250m_clk_source +connect_bd_net -net sys_200m_clk [get_bd_pins axi_ad9467/delay_clk] + +connect_bd_net -net axi_ad9467_dma_dwr [get_bd_pins axi_ad9467/adc_dwr] [get_bd_pins axi_ad9467_dma/fifo_wr_en] +connect_bd_net -net axi_ad9467_dma_ddata [get_bd_pins axi_ad9467/adc_ddata] [get_bd_pins axi_ad9467_dma/fifo_wr_din] +connect_bd_net -net axi_ad9467_dma_dovf [get_bd_pins axi_ad9467/adc_doverflow] [get_bd_pins axi_ad9467_dma/fifo_wr_overflow] + +connect_bd_net -net axi_ad9467_dma_irq [get_bd_pins axi_ad9467_dma/irq] [get_bd_pins sys_concat_intc/In2] +# interconnect (cpu) +connect_bd_net -net sys_100m_clk [get_bd_pins axi_cpu_interconnect/M07_ACLK] [get_bd_pins $sys_100m_clk_source] +connect_bd_net -net sys_100m_clk [get_bd_pins axi_cpu_interconnect/M08_ACLK] [get_bd_pins $sys_100m_clk_source] +connect_bd_net -net sys_100m_resetn [get_bd_pins axi_cpu_interconnect/M07_ARESETN] [get_bd_pins $sys_100m_resetn_source] +connect_bd_net -net sys_100m_resetn [get_bd_pins axi_cpu_interconnect/M08_ARESETN] [get_bd_pins $sys_100m_resetn_source] + +connect_bd_net -net sys_100m_clk [get_bd_pins axi_ad9467/s_axi_aclk] +connect_bd_net -net sys_100m_clk [get_bd_pins axi_ad9467_dma/s_axi_aclk] +connect_bd_net -net sys_100m_resetn [get_bd_pins axi_ad9467/s_axi_aresetn] +connect_bd_net -net sys_100m_resetn [get_bd_pins axi_ad9467_dma/s_axi_aresetn] + +connect_bd_intf_net -intf_net axi_cpu_interconnect_m07 [get_bd_intf_pins axi_cpu_interconnect/M07_AXI] [get_bd_intf_pins axi_ad9467_dma/s_axi] +connect_bd_intf_net -intf_net axi_cpu_interconnect_m08 [get_bd_intf_pins axi_cpu_interconnect/M08_AXI] [get_bd_intf_pins axi_ad9467/s_axi] + +if {$sys_zynq == 0} { + connect_bd_intf_net -intf_net axi_cpu_interconnect_m09_axi [get_bd_intf_pins axi_cpu_interconnect/M09_AXI] [get_bd_intf_pins axi_ad9467_spi/axi_lite] + + connect_bd_net -net sys_100m_clk [get_bd_pins axi_cpu_interconnect/M09_ACLK] $sys_100m_clk_source + connect_bd_net -net sys_100m_clk [get_bd_pins axi_ad9467_spi/s_axi_aclk] + connect_bd_net -net sys_100m_clk [get_bd_pins axi_ad9467_spi/ext_spi_clk] + connect_bd_net -net sys_100m_resetn [get_bd_pins axi_cpu_interconnect/M09_ARESETN] $sys_100m_resetn_source + connect_bd_net -net sys_100m_resetn [get_bd_pins axi_ad9467_spi/s_axi_aresetn] + + connect_bd_net -net axi_ad9467_spi_irq [get_bd_pins axi_ad9467_spi/ip2intc_irpt] [get_bd_pins sys_concat_intc/In5] +} + +# interconnect (mem/adc) +if {$sys_zynq == 0} { + connect_bd_intf_net -intf_net axi_mem_interconnect_s08_axi [get_bd_intf_pins axi_mem_interconnect/S08_AXI] [get_bd_intf_pins axi_ad9467_dma/m_dest_axi] + connect_bd_net -net sys_200m_clk [get_bd_pins axi_mem_interconnect/S08_ACLK] $sys_200m_clk_source + connect_bd_net -net sys_200m_clk [get_bd_pins axi_ad9467_dma/m_dest_axi_aclk] + connect_bd_net -net sys_200m_resetn [get_bd_pins axi_mem_interconnect/S08_ARESETN] $sys_200m_resetn_source + connect_bd_net -net sys_200m_resetn [get_bd_pins axi_ad9467_dma/m_dest_axi_aresetn] +} else { + connect_bd_intf_net -intf_net axi_ad9467_dma_interconnect_s0 [get_bd_intf_pins axi_ad9467_dma_interconnect/S00_AXI] [get_bd_intf_pins axi_ad9467_dma/m_dest_axi] + connect_bd_intf_net -intf_net axi_ad9467_dma_interconnect_m00_axi [get_bd_intf_pins axi_ad9467_dma_interconnect/M00_AXI] [get_bd_intf_pins sys_ps7/S_AXI_HP1] + + connect_bd_net -net sys_200m_clk [get_bd_pins axi_ad9467_dma_interconnect/S00_ACLK] $sys_200m_clk_source + connect_bd_net -net sys_200m_clk [get_bd_pins axi_ad9467_dma/m_dest_axi_aclk] + connect_bd_net -net sys_200m_clk [get_bd_pins sys_ps7/S_AXI_HP1_ACLK] + connect_bd_net -net sys_200m_clk [get_bd_pins axi_ad9467_dma_interconnect/ACLK] $sys_200m_clk_source + connect_bd_net -net sys_200m_clk [get_bd_pins axi_ad9467_dma_interconnect/M00_ACLK] $sys_200m_clk_source + connect_bd_net -net sys_100m_resetn [get_bd_pins axi_ad9467_dma_interconnect/ARESETN] $sys_100m_resetn_source + connect_bd_net -net sys_100m_resetn [get_bd_pins axi_ad9467_dma_interconnect/M00_ARESETN] $sys_100m_resetn_source + connect_bd_net -net sys_100m_resetn [get_bd_pins axi_ad9467_dma/m_dest_axi_aresetn] + connect_bd_net -net sys_100m_resetn [get_bd_pins axi_ad9467_dma_interconnect/S00_ARESETN] $sys_100m_resetn_source +} + +# ila (with fifo to prevent timing failure) +set ila_fifo [create_bd_cell -type ip -vlnv xilinx.com:ip:fifo_generator:11.0 ila_fifo] +set_property -dict [list CONFIG.Fifo_Implementation {Independent_Clocks_Block_RAM}] $ila_fifo +set_property -dict [list CONFIG.Input_Data_Width {16}] $ila_fifo +set_property -dict [list CONFIG.Input_Depth {128}] $ila_fifo +set_property -dict [list CONFIG.Output_Data_Width {32}] $ila_fifo +set_property -dict [list CONFIG.Overflow_Flag {true}] $ila_fifo +set_property -dict [list CONFIG.Reset_Pin {false}] $ila_fifo + +set ila_ad9467_mon [create_bd_cell -type ip -vlnv xilinx.com:ip:ila:3.0 ila_ad9467_mon] +set_property -dict [list CONFIG.C_NUM_OF_PROBES {1}] $ila_ad9467_mon +set_property -dict [list CONFIG.C_PROBE0_WIDTH {32}] $ila_ad9467_mon + +set ila_constant_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconstant:1.0 ila_constant_1] + +connect_bd_net -net axi_ad9467_dma_ddata [get_bd_pins ila_fifo/din] [get_bd_pins axi_ad9467/adc_ddata] +connect_bd_net -net adc_250m_clk [get_bd_pins axi_ad9467/adc_clk] [get_bd_pins ila_fifo/wr_clk] +connect_bd_net -net sys_ila_clk [get_bd_pins ila_fifo/rd_clk] [get_bd_pins ila_ad9467_mon/clk] +connect_bd_net -net xlconstant_0_const [get_bd_pins ila_fifo/rd_en] [get_bd_pins ila_fifo/wr_en] [get_bd_pins ila_constant_1/const] + +connect_bd_net -net ila_fifo_dout [get_bd_pins ila_fifo/dout] [get_bd_pins ila_ad9467_mon/probe0] +# address mapping + +create_bd_addr_seg -range 0x00010000 -offset 0x44A00000 $sys_addr_cntrl_space [get_bd_addr_segs axi_ad9467/s_axi/axi_lite] SEG_data_ad9467_core +create_bd_addr_seg -range 0x00010000 -offset 0x44A30000 $sys_addr_cntrl_space [get_bd_addr_segs axi_ad9467_dma/s_axi/axi_lite] SEG_data_ad9467_dma + +if {$sys_zynq == 0} { + create_bd_addr_seg -range 0x00010000 -offset 0x44A70000 $sys_addr_cntrl_space [get_bd_addr_segs axi_ad9467_spi/axi_lite/Reg] SEG_data_ad9467_spi +} + +if {$sys_zynq == 0} { + create_bd_addr_seg -range $sys_mem_size -offset 0x00000000 [get_bd_addr_spaces axi_ad9467_dma/m_dest_axi] [get_bd_addr_segs axi_ddr_cntrl/memmap/memaddr] SEG_axi_ddr_cntrl +} else { + create_bd_addr_seg -range $sys_mem_size -offset 0x00000000 [get_bd_addr_spaces axi_ad9467_dma/m_dest_axi] [get_bd_addr_segs sys_ps7/S_AXI_HP1/HP1_DDR_LOWOCM] SEG_sys_ps7_hp1_ddr_lowocm +} diff --git a/projects/ad9467_fmc/common/ad9467_spi.v b/projects/ad9467_fmc/common/ad9467_spi.v new file mode 100644 index 000000000..ec8768afd --- /dev/null +++ b/projects/ad9467_fmc/common/ad9467_spi.v @@ -0,0 +1,107 @@ +// *************************************************************************** +// *************************************************************************** +// Copyright 2011(c) Analog Devices, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// - Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the +// distribution. +// - Neither the name of Analog Devices, Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// - The use of this software may or may not infringe the patent rights +// of one or more patent holders. This license does not release you +// from the requirement that you obtain separate licenses from these +// patent holders to use this software. +// - Use of the software either in source or binary form, must be run +// on or directly connected to an Analog Devices Inc. component. +// +// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +// INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE ARE DISCLAIMED. +// +// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY +// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// *************************************************************************** +// *************************************************************************** + +`timescale 1ns/100ps + +module ad9467_spi ( + + spi_csn, + spi_clk, + spi_mosi, + spi_miso, + + spi_sdio); + + // 4 wire + + input [ 1:0] spi_csn; + input spi_clk; + input spi_mosi; + output spi_miso; + + // 3 wire + + inout spi_sdio; + + // internal registers + + reg [ 5:0] spi_count = 'd0; + reg spi_rd_wr_n = 'd0; + reg spi_enable = 'd0; + + // internal signals + + wire spi_csn_s; + wire spi_enable_s; + + // check on rising edge and change on falling edge + + assign spi_csn_s = & spi_csn; + assign spi_enable_s = spi_enable & ~spi_csn_s; + + always @(posedge spi_clk or posedge spi_csn_s) begin + if (spi_csn_s == 1'b1) begin + spi_count <= 6'd0; + spi_rd_wr_n <= 1'd0; + end else begin + spi_count <= spi_count + 1'b1; + if (spi_count == 6'd0) begin + spi_rd_wr_n <= spi_mosi; + end + end + end + + always @(negedge spi_clk or posedge spi_csn_s) begin + if (spi_csn_s == 1'b1) begin + spi_enable <= 1'b0; + end else begin + if (spi_count == 6'd16) begin + spi_enable <= spi_rd_wr_n; + end + end + end + + // io butter + + IOBUF i_iobuf_sdio ( + .T (spi_enable_s), + .I (spi_mosi), + .O (spi_miso), + .IO (spi_sdio)); + +endmodule + diff --git a/projects/ad9467_fmc/kc705/system_bd.tcl b/projects/ad9467_fmc/kc705/system_bd.tcl new file mode 100644 index 000000000..aa4089212 --- /dev/null +++ b/projects/ad9467_fmc/kc705/system_bd.tcl @@ -0,0 +1,3 @@ + +source $ad_hdl_dir/projects/common/kc705/kc705_system_bd.tcl +source ../common/ad9467_bd.tcl diff --git a/projects/ad9467_fmc/kc705/system_constr.xdc b/projects/ad9467_fmc/kc705/system_constr.xdc new file mode 100644 index 000000000..8406a49fe --- /dev/null +++ b/projects/ad9467_fmc/kc705/system_constr.xdc @@ -0,0 +1,37 @@ + +# ad9467 + +set_property -dict {PACKAGE_PIN AF22 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_clk_in_p] ; ## FMC_LPC_CLK0_M2C_P +set_property -dict {PACKAGE_PIN AG23 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_clk_in_n] ; ## FMC_LPC_CLK0_M2C_N +set_property -dict {PACKAGE_PIN AJ22 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_or_p] ; ## FMC_LPC_LA08_P +set_property -dict {PACKAGE_PIN AJ23 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_or_n] ; ## FMC_LPC_LA08_N +set_property -dict {PACKAGE_PIN AE24 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_n[0]] ; ## FMC_LPC_LA00_CC_N +set_property -dict {PACKAGE_PIN AD23 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_p[0]] ; ## FMC_LPC_LA00_CC_P +set_property -dict {PACKAGE_PIN AE23 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_p[1]] ; ## FMC_LPC_LA01_CC_P +set_property -dict {PACKAGE_PIN AF23 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_n[1]] ; ## FMC_LPC_LA01_CC_N +set_property -dict {PACKAGE_PIN AF20 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_p[2]] ; ## FMC_LPC_LA02_P +set_property -dict {PACKAGE_PIN AF21 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_n[2]] ; ## FMC_LPC_LA02_N +set_property -dict {PACKAGE_PIN AG20 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_p[3]] ; ## FMC_LPC_LA03_P +set_property -dict {PACKAGE_PIN AH20 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_n[3]] ; ## FMC_LPC_LA03_N +set_property -dict {PACKAGE_PIN AH21 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_p[4]] ; ## FMC_LPC_LA04_P +set_property -dict {PACKAGE_PIN AJ21 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_n[4]] ; ## FMC_LPC_LA04_N +set_property -dict {PACKAGE_PIN AG22 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_p[5]] ; ## FMC_LPC_LA05_P +set_property -dict {PACKAGE_PIN AH22 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_n[5]] ; ## FMC_LPC_LA05_N +set_property -dict {PACKAGE_PIN AK20 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_p[6]] ; ## FMC_LPC_LA06_P +set_property -dict {PACKAGE_PIN AK21 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_n[6]] ; ## FMC_LPC_LA06_N +set_property -dict {PACKAGE_PIN AG25 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_p[7]] ; ## FMC_LPC_LA07_P +set_property -dict {PACKAGE_PIN AH25 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_n[7]] ; ## FMC_LPC_LA07_N + +## spi + +set_property -dict {PACKAGE_PIN AC30 IOSTANDARD LVCMOS25} [get_ports spi_csn_adc] ; ## FMC_LPC_LA33_N +set_property -dict {PACKAGE_PIN AC29 IOSTANDARD LVCMOS25} [get_ports spi_csn_clk] ; ## FMC_LPC_LA33_P +set_property -dict {PACKAGE_PIN AA30 IOSTANDARD LVCMOS25} [get_ports spi_clk] ; ## FMC_LPC_LA32_N +set_property -dict {PACKAGE_PIN Y30 IOSTANDARD LVCMOS25} [get_ports spi_sdio] ; ## FMC_LPC_LA32_P + +# clocks +create_clock -name adc_clk -period 4.00 [get_ports adc_clk_in_p] + +set_clock_groups -asynchronous -group {adc_clk} + + diff --git a/projects/ad9467_fmc/kc705/system_project.tcl b/projects/ad9467_fmc/kc705/system_project.tcl new file mode 100644 index 000000000..a59b76ba0 --- /dev/null +++ b/projects/ad9467_fmc/kc705/system_project.tcl @@ -0,0 +1,14 @@ +# load script +source ../../scripts/adi_env.tcl +source $ad_hdl_dir/projects/scripts/adi_project.tcl + +set project_name ad9467_fmc_kc705 + +adi_project_create $project_name + +adi_project_files $project_name [list "../common/ad9467_spi.v" \ + "system_top.v" \ + "system_constr.xdc" \ + "$ad_hdl_dir/projects/common/kc705/kc705_system_constr.xdc"] + +adi_project_run $project_name diff --git a/projects/ad9467_fmc/kc705/system_top.v b/projects/ad9467_fmc/kc705/system_top.v new file mode 100644 index 000000000..424450c99 --- /dev/null +++ b/projects/ad9467_fmc/kc705/system_top.v @@ -0,0 +1,261 @@ +// *************************************************************************** +// *************************************************************************** +// Copyright 2011(c) Analog Devices, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// - Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the +// distribution. +// - Neither the name of Analog Devices, Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// - The use of this software may or may not infringe the patent rights +// of one or more patent holders. This license does not release you +// from the requirement that you obtain separate licenses from these +// patent holders to use this software. +// - Use of the software either in source or binary form, must be run +// on or directly connected to an Analog Devices Inc. component. +// +// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +// INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE ARE DISCLAIMED. +// +// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY +// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** + +`timescale 1ns/100ps + +module system_top ( + sys_rst, + sys_clk_p, + sys_clk_n, + + uart_sin, + uart_sout, + + ddr3_1_n, + ddr3_1_p, + ddr3_reset_n, + ddr3_addr, + ddr3_ba, + ddr3_cas_n, + ddr3_ras_n, + ddr3_we_n, + ddr3_ck_n, + ddr3_ck_p, + ddr3_cke, + ddr3_cs_n, + ddr3_dm, + ddr3_dq, + ddr3_dqs_n, + ddr3_dqs_p, + ddr3_odt, + + mdio_mdc, + mdio_mdio_io, + mii_rst_n, + mii_col, + mii_crs, + mii_rx_clk, + mii_rx_er, + mii_rx_dv, + mii_rxd, + mii_tx_clk, + mii_tx_en, + mii_txd, + + fan_pwm, + + gpio_lcd, + gpio_led, + gpio_sw, + + iic_rstn, + iic_scl, + iic_sda, + + hdmi_out_clk, + hdmi_hsync, + hdmi_vsync, + hdmi_data_e, + hdmi_data, + + spdif, + + adc_clk_in_n, + adc_clk_in_p, + adc_data_in_n, + adc_data_in_p, + adc_data_or_n, + adc_data_or_p, + spi_clk, + spi_csn_adc, + spi_csn_clk, + spi_sdio +); + +input sys_rst; +input sys_clk_p; +input sys_clk_n; + +input uart_sin; +output uart_sout; + +output [ 2:0] ddr3_1_n; +output [ 1:0] ddr3_1_p; +output ddr3_reset_n; +output [13:0] ddr3_addr; +output [ 2:0] ddr3_ba; +output ddr3_cas_n; +output ddr3_ras_n; +output ddr3_we_n; +output [ 0:0] ddr3_ck_n; +output [ 0:0] ddr3_ck_p; +output [ 0:0] ddr3_cke; +output [ 0:0] ddr3_cs_n; +output [ 7:0] ddr3_dm; +inout [63:0] ddr3_dq; +inout [ 7:0] ddr3_dqs_n; +inout [ 7:0] ddr3_dqs_p; +output [ 0:0] ddr3_odt; + +output mdio_mdc; +inout mdio_mdio_io; +output mii_rst_n; +input mii_col; +input mii_crs; +input mii_rx_clk; +input mii_rx_er; +input mii_rx_dv; +input [ 3:0] mii_rxd; +input mii_tx_clk; +output mii_tx_en; +output [ 3:0] mii_txd; + +output fan_pwm; + +inout [ 6:0] gpio_lcd; +inout [ 7:0] gpio_led; +inout [ 8:0] gpio_sw; + +output iic_rstn; +inout iic_scl; +inout iic_sda; + +output hdmi_out_clk; +output hdmi_hsync; +output hdmi_vsync; +output hdmi_data_e; +output [15:0] hdmi_data; + +output spdif; + +input adc_clk_in_n; +input adc_clk_in_p; +input [ 7:0] adc_data_in_n; +input [ 7:0] adc_data_in_p; +input adc_data_or_n; +input adc_data_or_p; +output spi_clk; +output spi_csn_adc; +output spi_csn_clk; +inout spi_sdio; + +// internal signals +wire [ 1:0] spi_csn; +wire spi_miso; +wire spi_mosi; + +assign spi_csn_adc = spi_csn[0]; +assign spi_csn_clk = spi_csn[1]; + +ad9467_spi i_spi ( + .spi_csn(spi_csn), + .spi_clk(spi_clk), + .spi_mosi(spi_mosi), + .spi_miso(spi_miso), + .spi_sdio(spi_sdio) + ); + +system_wrapper i_system_wrapper ( + .ddr3_1_n (ddr3_1_n), + .ddr3_1_p (ddr3_1_p), + .ddr3_addr (ddr3_addr), + .ddr3_ba (ddr3_ba), + .ddr3_cas_n (ddr3_cas_n), + .ddr3_ck_n (ddr3_ck_n), + .ddr3_ck_p (ddr3_ck_p), + .ddr3_cke (ddr3_cke), + .ddr3_cs_n (ddr3_cs_n), + .ddr3_dm (ddr3_dm), + .ddr3_dq (ddr3_dq), + .ddr3_dqs_n (ddr3_dqs_n), + .ddr3_dqs_p (ddr3_dqs_p), + .ddr3_odt (ddr3_odt), + .ddr3_ras_n (ddr3_ras_n), + .ddr3_reset_n (ddr3_reset_n), + .ddr3_we_n (ddr3_we_n), + .fan_pwm (fan_pwm), + .gpio_lcd_tri_io (gpio_lcd), + .gpio_led_tri_io (gpio_led), + .gpio_sw_tri_io (gpio_sw), + .hdmi_data (hdmi_data), + .hdmi_data_e (hdmi_data_e), + .hdmi_hsync (hdmi_hsync), + .hdmi_out_clk (hdmi_out_clk), + .hdmi_vsync (hdmi_vsync), + .iic_main_scl_io (iic_scl), + .iic_main_sda_io (iic_sda), + .iic_rstn (iic_rstn), + .mdio_mdc (mdio_mdc), + .mdio_mdio_io (mdio_mdio_io), + .mii_col (mii_col), + .mii_crs (mii_crs), + .mii_rst_n (mii_rst_n), + .mii_rx_clk (mii_rx_clk), + .mii_rx_dv (mii_rx_dv), + .mii_rx_er (mii_rx_er), + .mii_rxd (mii_rxd), + .mii_tx_clk (mii_tx_clk), + .mii_tx_en (mii_tx_en), + .mii_txd (mii_txd), + .spdif (spdif), + .sys_clk_n (sys_clk_n), + .sys_clk_p (sys_clk_p), + .sys_rst (sys_rst), + .uart_sin (uart_sin), + .uart_sout (uart_sout), + .unc_int0 (1'b0), + .unc_int3 (1'b0), + .adc_clk_in_n(adc_clk_in_n), + .adc_clk_in_p(adc_clk_in_p), + .adc_data_in_n(adc_data_in_n), + .adc_data_in_p(adc_data_in_p), + .adc_data_or_n(adc_data_or_n), + .adc_data_or_p(adc_data_or_p), + .spi_clk_i(1'b0), + .spi_clk_o(spi_clk), + .spi_csn_i(1'b1), + .spi_csn_o(spi_csn), + .spi_sdi_i(spi_miso), + .spi_sdo_i(1'b0), + .spi_sdo_o(spi_mosi)); + +endmodule + +// *************************************************************************** +// *************************************************************************** diff --git a/projects/ad9467_fmc/zed/system_bd.tcl b/projects/ad9467_fmc/zed/system_bd.tcl new file mode 100644 index 000000000..a96cd763d --- /dev/null +++ b/projects/ad9467_fmc/zed/system_bd.tcl @@ -0,0 +1,3 @@ + +source $ad_hdl_dir/projects/common/zed/zed_system_bd.tcl +source ../common/ad9467_bd.tcl diff --git a/projects/ad9467_fmc/zed/system_constr.xdc b/projects/ad9467_fmc/zed/system_constr.xdc new file mode 100644 index 000000000..444a99fed --- /dev/null +++ b/projects/ad9467_fmc/zed/system_constr.xdc @@ -0,0 +1,37 @@ + +# ad9467 + +set_property -dict {PACKAGE_PIN L18 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_clk_in_p] ; ## FMC_LPC_CLK0_M2C_P +set_property -dict {PACKAGE_PIN L19 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_clk_in_n] ; ## FMC_LPC_CLK0_M2C_N +set_property -dict {PACKAGE_PIN J21 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_or_p] ; ## FMC_LPC_LA08_P +set_property -dict {PACKAGE_PIN J22 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_or_n] ; ## FMC_LPC_LA08_N +set_property -dict {PACKAGE_PIN M20 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_n[0]] ; ## FMC_LPC_LA00_CC_N +set_property -dict {PACKAGE_PIN M19 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_p[0]] ; ## FMC_LPC_LA00_CC_P +set_property -dict {PACKAGE_PIN N19 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_p[1]] ; ## FMC_LPC_LA01_CC_P +set_property -dict {PACKAGE_PIN N20 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_n[1]] ; ## FMC_LPC_LA01_CC_N +set_property -dict {PACKAGE_PIN P17 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_p[2]] ; ## FMC_LPC_LA02_P +set_property -dict {PACKAGE_PIN P18 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_n[2]] ; ## FMC_LPC_LA02_N +set_property -dict {PACKAGE_PIN N22 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_p[3]] ; ## FMC_LPC_LA03_P +set_property -dict {PACKAGE_PIN P22 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_n[3]] ; ## FMC_LPC_LA03_N +set_property -dict {PACKAGE_PIN M21 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_p[4]] ; ## FMC_LPC_LA04_P +set_property -dict {PACKAGE_PIN M22 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_n[4]] ; ## FMC_LPC_LA04_N +set_property -dict {PACKAGE_PIN J18 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_p[5]] ; ## FMC_LPC_LA05_P +set_property -dict {PACKAGE_PIN K18 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_n[5]] ; ## FMC_LPC_LA05_N +set_property -dict {PACKAGE_PIN L21 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_p[6]] ; ## FMC_LPC_LA06_P +set_property -dict {PACKAGE_PIN L22 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_n[6]] ; ## FMC_LPC_LA06_N +set_property -dict {PACKAGE_PIN T16 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_p[7]] ; ## FMC_LPC_LA07_P +set_property -dict {PACKAGE_PIN T17 IOSTANDARD LVDS_25 DIFF_TERM TRUE} [get_ports adc_data_in_n[7]] ; ## FMC_LPC_LA07_N + +## spi + +set_property -dict {PACKAGE_PIN B22 IOSTANDARD LVCMOS25} [get_ports spi_csn_adc] ; ## FMC_LPC_LA33_N +set_property -dict {PACKAGE_PIN B21 IOSTANDARD LVCMOS25} [get_ports spi_csn_clk] ; ## FMC_LPC_LA33_P +set_property -dict {PACKAGE_PIN A22 IOSTANDARD LVCMOS25} [get_ports spi_clk] ; ## FMC_LPC_LA32_N +set_property -dict {PACKAGE_PIN A21 IOSTANDARD LVCMOS25} [get_ports spi_sdio] ; ## FMC_LPC_LA32_P + +# clocks +create_clock -name adc_clk -period 4.00 [get_ports adc_clk_in_p] + +set_clock_groups -asynchronous -group {adc_clk} + + diff --git a/projects/ad9467_fmc/zed/system_project.tcl b/projects/ad9467_fmc/zed/system_project.tcl new file mode 100644 index 000000000..40df1ec55 --- /dev/null +++ b/projects/ad9467_fmc/zed/system_project.tcl @@ -0,0 +1,14 @@ +# load script +source ../../scripts/adi_env.tcl +source $ad_hdl_dir/projects/scripts/adi_project.tcl + +set project_name ad9467_fmc_zed + +adi_project_create $project_name + +adi_project_files $project_name [list "../common/ad9467_spi.v" \ + "system_top.v" \ + "system_constr.xdc" \ + "$ad_hdl_dir/projects/common/zed/zed_system_constr.xdc"] + +adi_project_run $project_name diff --git a/projects/ad9467_fmc/zed/system_top.v b/projects/ad9467_fmc/zed/system_top.v new file mode 100644 index 000000000..2f2f29f72 --- /dev/null +++ b/projects/ad9467_fmc/zed/system_top.v @@ -0,0 +1,265 @@ +// *************************************************************************** +// *************************************************************************** +// Copyright 2011(c) Analog Devices, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// - Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the +// distribution. +// - Neither the name of Analog Devices, Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// - The use of this software may or may not infringe the patent rights +// of one or more patent holders. This license does not release you +// from the requirement that you obtain separate licenses from these +// patent holders to use this software. +// - Use of the software either in source or binary form, must be run +// on or directly connected to an Analog Devices Inc. component. +// +// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +// INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE ARE DISCLAIMED. +// +// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY +// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** +// *************************************************************************** + +`timescale 1ns/100ps + +module system_top ( + DDR_addr, + DDR_ba, + DDR_cas_n, + DDR_ck_n, + DDR_ck_p, + DDR_cke, + DDR_cs_n, + DDR_dm, + DDR_dq, + DDR_dqs_n, + DDR_dqs_p, + DDR_odt, + DDR_ras_n, + DDR_reset_n, + DDR_we_n, + + FIXED_IO_ddr_vrn, + FIXED_IO_ddr_vrp, + FIXED_IO_mio, + FIXED_IO_ps_clk, + FIXED_IO_ps_porb, + FIXED_IO_ps_srstb, + + gpio_bd, + + hdmi_out_clk, + hdmi_vsync, + hdmi_hsync, + hdmi_data_e, + hdmi_data, + + i2s_mclk, + i2s_bclk, + i2s_lrclk, + i2s_sdata_out, + i2s_sdata_in, + + spdif, + + iic_scl, + iic_sda, + iic_mux_scl, + iic_mux_sda, + + otg_vbusoc, + + adc_clk_in_n, + adc_clk_in_p, + adc_data_in_n, + adc_data_in_p, + adc_data_or_n, + adc_data_or_p, + spi_clk, + spi_csn_adc, + spi_csn_clk, + spi_sdio +); + +inout [14:0] DDR_addr; +inout [ 2:0] DDR_ba; +inout DDR_cas_n; +inout DDR_ck_n; +inout DDR_ck_p; +inout DDR_cke; +inout DDR_cs_n; +inout [ 3:0] DDR_dm; +inout [31:0] DDR_dq; +inout [ 3:0] DDR_dqs_n; +inout [ 3:0] DDR_dqs_p; +inout DDR_odt; +inout DDR_ras_n; +inout DDR_reset_n; +inout DDR_we_n; + + +inout FIXED_IO_ddr_vrn; +inout FIXED_IO_ddr_vrp; +inout [53:0] FIXED_IO_mio; +inout FIXED_IO_ps_clk; +inout FIXED_IO_ps_porb; +inout FIXED_IO_ps_srstb; + +inout [31:0] gpio_bd; + +output hdmi_out_clk; +output hdmi_vsync; +output hdmi_hsync; +output hdmi_data_e; +output [15:0] hdmi_data; + +output spdif; + +output i2s_mclk; +output i2s_bclk; +output i2s_lrclk; +output i2s_sdata_out; +input i2s_sdata_in; + + +inout iic_scl; +inout iic_sda; +inout [ 1:0] iic_mux_scl; +inout [ 1:0] iic_mux_sda; + +input otg_vbusoc; + +input adc_clk_in_n; +input adc_clk_in_p; +input [ 7:0] adc_data_in_n; +input [ 7:0] adc_data_in_p; +input adc_data_or_n; +input adc_data_or_p; +output spi_clk; +output spi_csn_adc; +output spi_csn_clk; +inout spi_sdio; + +// internal signals +wire [ 1:0] spi_csn; +wire spi_miso; +wire spi_mosi; +wire [31:0] gpio_i; +wire [31:0] gpio_o; +wire [31:0] gpio_t; +wire [ 1:0] iic_mux_scl_i_s; +wire [ 1:0] iic_mux_scl_o_s; +wire iic_mux_scl_t_s; +wire [ 1:0] iic_mux_sda_i_s; +wire [ 1:0] iic_mux_sda_o_s; +wire iic_mux_sda_t_s; + +// instantiations + +genvar n; +generate +for (n = 0; n <= 31; n = n + 1) begin: g_iobuf_gpio_bd +IOBUF i_iobuf_gpio_bd ( + .I (gpio_o[n]), + .O (gpio_i[n]), + .T (gpio_t[n]), + .IO (gpio_bd[n])); +end +endgenerate + +IOBUF i_iic_mux_scl_0 (.I(iic_mux_scl_o_s[0]), .O(iic_mux_scl_i_s[0]), .T(iic_mux_scl_t_s), .IO(iic_mux_scl[0])); +IOBUF i_iic_mux_scl_1 (.I(iic_mux_scl_o_s[1]), .O(iic_mux_scl_i_s[1]), .T(iic_mux_scl_t_s), .IO(iic_mux_scl[1])); +IOBUF i_iic_mux_sda_0 (.I(iic_mux_sda_o_s[0]), .O(iic_mux_sda_i_s[0]), .T(iic_mux_sda_t_s), .IO(iic_mux_sda[0])); +IOBUF i_iic_mux_sda_1 (.I(iic_mux_sda_o_s[1]), .O(iic_mux_sda_i_s[1]), .T(iic_mux_sda_t_s), .IO(iic_mux_sda[1])); + +assign spi_csn_adc = spi_csn[0]; +assign spi_csn_clk = spi_csn[1]; + +ad9467_spi i_spi ( + .spi_csn(spi_csn), + .spi_clk(spi_clk), + .spi_mosi(spi_mosi), + .spi_miso(spi_miso), + .spi_sdio(spi_sdio) + ); + +system_wrapper i_system_wrapper ( + .DDR_addr(DDR_addr), + .DDR_ba(DDR_ba), + .DDR_cas_n(DDR_cas_n), + .DDR_ck_n(DDR_ck_n), + .DDR_ck_p(DDR_ck_p), + .DDR_cke(DDR_cke), + .DDR_cs_n(DDR_cs_n), + .DDR_dm(DDR_dm), + .DDR_dq(DDR_dq), + .DDR_dqs_n(DDR_dqs_n), + .DDR_dqs_p(DDR_dqs_p), + .DDR_odt(DDR_odt), + .DDR_ras_n(DDR_ras_n), + .DDR_reset_n(DDR_reset_n), + .DDR_we_n(DDR_we_n), + .FIXED_IO_ddr_vrn (FIXED_IO_ddr_vrn), + .FIXED_IO_ddr_vrp (FIXED_IO_ddr_vrp), + .FIXED_IO_mio (FIXED_IO_mio), + .FIXED_IO_ps_clk (FIXED_IO_ps_clk), + .FIXED_IO_ps_porb (FIXED_IO_ps_porb), + .FIXED_IO_ps_srstb (FIXED_IO_ps_srstb), + .GPIO_I (gpio_i), + .GPIO_O (gpio_o), + .GPIO_T (gpio_t), + .hdmi_data (hdmi_data), + .hdmi_data_e (hdmi_data_e), + .hdmi_hsync (hdmi_hsync), + .hdmi_out_clk (hdmi_out_clk), + .hdmi_vsync (hdmi_vsync), + .i2s_bclk (i2s_bclk), + .i2s_lrclk (i2s_lrclk), + .i2s_mclk (i2s_mclk), + .i2s_sdata_in (i2s_sdata_in), + .i2s_sdata_out (i2s_sdata_out), + .iic_fmc_scl_io (iic_scl), + .iic_fmc_sda_io (iic_sda), + .iic_mux_scl_I (iic_mux_scl_i_s), + .iic_mux_scl_O (iic_mux_scl_o_s), + .iic_mux_scl_T (iic_mux_scl_t_s), + .iic_mux_sda_I (iic_mux_sda_i_s), + .iic_mux_sda_O (iic_mux_sda_o_s), + .iic_mux_sda_T (iic_mux_sda_t_s), + .otg_vbusoc (otg_vbusoc), + .spdif (spdif), + .adc_clk_in_n(adc_clk_in_n), + .adc_clk_in_p(adc_clk_in_p), + .adc_data_in_n(adc_data_in_n), + .adc_data_in_p(adc_data_in_p), + .adc_data_or_n(adc_data_or_n), + .adc_data_or_p(adc_data_or_p), + .spi_clk_i(1'b0), + .spi_clk_o(spi_clk), + .spi_csn_i(1'b1), + .spi_csn_o(spi_csn), + .spi_sdi_i(spi_miso), + .spi_sdo_i(1'b0), + .spi_sdo_o(spi_mosi)); + +endmodule + +// *************************************************************************** +// *************************************************************************** From fbfd658f0dab876910573ec427a474145e92f6af Mon Sep 17 00:00:00 2001 From: Rejeesh Kutty Date: Wed, 9 Apr 2014 15:58:12 -0400 Subject: [PATCH 18/18] zc706: added pl ddr3 mig --- projects/common/zc706/zc706_system_mig.prj | 202 +++++++++++++++++++++ 1 file changed, 202 insertions(+) create mode 100644 projects/common/zc706/zc706_system_mig.prj diff --git a/projects/common/zc706/zc706_system_mig.prj b/projects/common/zc706/zc706_system_mig.prj new file mode 100644 index 000000000..2ea2c1e95 --- /dev/null +++ b/projects/common/zc706/zc706_system_mig.prj @@ -0,0 +1,202 @@ + + + + system_axi_ddr_cntrl_0 + 1 + 1 + OFF + 1024 + ON + Disabled + xc7z045-ffg900/-2 + 2.0 + Differential + Use System Clock + ACTIVE HIGH + FALSE + 0 + 50 Ohms + 1 + + DDR3_SDRAM/SODIMMs/MT8JTF12864HZ-1G6 + 1250 + 2.0V + 4:1 + 200 + 0 + 1.000 + 1 + 1 + 1 + 1 + 64 + 1 + 1 + Disabled + Normal + FALSE + + 14 + 10 + 3 + 1.5V + 1073741824 + BANK_ROW_COLUMN + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8 - Fixed + Sequential + 11 + Normal + No + Slow Exit + Enable + RZQ/7 + Disable + Enable + RZQ/6 + 0 + Disabled + Enabled + Output Buffer Enabled + Full Array + 8 + Enabled + Normal + Dynamic ODT off + AXI + + RD_PRI_REG + 30 + 512 + 4 + 1 + + + +