mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Got fpga synthesis running from scripts.
This commit is contained in:
parent
96926877c4
commit
6a228ade04
286
fpga/constraints/constraints.xdc
Normal file
286
fpga/constraints/constraints.xdc
Normal file
@ -0,0 +1,286 @@
|
||||
# The main clocks are all autogenerated by the Xilinx IP
|
||||
# mmcm_clkout1 is the 22Mhz clock from the DDR4 IP used to drive wally and the AHBLite Bus.
|
||||
# mmcm_clkout0 is the clock output of the DDR4 memory interface / 4.
|
||||
# This clock is not used by wally or the AHBLite Bus. However it is used by the AXI BUS on the DD4 IP.
|
||||
|
||||
# generate 1 clock for the slow speed SD Card hardware. However we need to time at the mmcm_clkout1
|
||||
# clock speed.
|
||||
|
||||
#create_generated_clock -name r_fd_Q -source [get_pins wallypipelinedsoc/uncore/sdc.SDC/sd_top/slow_clk_divider/toggle_flip_flop/i_CLK] -divide_by 50 [get_pins wrapper_i/wallypipelinedsocwra_0/inst/wallypipelinedsoc/uncore/sdc.SDC/sd_top/slow_clk_divider/toggle_flip_flop/r_fd_Q]
|
||||
|
||||
#create_clock -period 4.000 [get_ports default_250mhz_clk1_0_p]
|
||||
|
||||
|
||||
create_generated_clock -name CLKDiv64_Gen -source [get_pins wallypipelinedsoc/uncore/sdc.SDC/sd_top/slow_clk_divider/clkMux/I0] -multiply_by 1 [get_pins wallypipelinedsoc/uncore/sdc.SDC/sd_top/slow_clk_divider/clkMux/O]
|
||||
|
||||
|
||||
|
||||
#create_generated_clock -name mmcm_clkout1_Gen -source [get_pins wrapper_i/wallypipelinedsocwra_0/inst/wallypipelinedsoc/uncore/sdc.SDC/sd_top/slow_clk_divider/clkMux/I0] -divide_by 1 -add -master_clock mmcm_clkout1 [get_pins wrapper_i/wallypipelinedsocwra_0/inst/wallypipelinedsoc/uncore/sdc.SDC/sd_top/slow_clk_divider/clkMux/O]
|
||||
|
||||
#create_generated_clock -name CLKDiv64_Gen -source [get_pins wrapper_i/wallypipelinedsocwra_0/inst/wallypipelinedsoc/uncore/sdc.SDC/sd_top/slow_clk_divider/clkMux/I1] -divide_by 1 -add -master_clock mmcm_clkout1_Gen [get_pins wrapper_i/wallypipelinedsocwra_0/inst/wallypipelinedsoc/uncore/sdc.SDC/sd_top/slow_clk_divider/clkMux/O]
|
||||
|
||||
|
||||
|
||||
#create_generated_clock -name mmcm_clkout1_Gen_slow -source [get_pins wrapper_i/wallypipelinedsocwra_0/inst/wallypipelinedsoc/uncore/sdc.SDC/sd_top/slow_clk_divider/clkMux/I0] -divide_by 8 -add -master_clock mmcm_clkout1 [get_pins wrapper_i/wallypipelinedsocwra_0/inst/wallypipelinedsoc/uncore/sdc.SDC/sd_top/slow_clk_divider/clkMux/O]
|
||||
|
||||
#create_generated_clock -name CLKDiv64_Gen_slow -source [get_pins wrapper_i/wallypipelinedsocwra_0/inst/wallypipelinedsoc/uncore/sdc.SDC/sd_top/slow_clk_divider/clkMux/I1] -divide_by 8 -add -master_clock mmcm_clkout1_Gen_slow [get_pins wrapper_i/wallypipelinedsocwra_0/inst/wallypipelinedsoc/uncore/sdc.SDC/sd_top/slow_clk_divider/clkMux/O]
|
||||
|
||||
#set_clock_groups -logically_exclusive -group [get_clocks -include_generated_clocks mmcm_clkout1_Gen] -group [get_clocks -include_generated_clocks CLKDiv64_Gen]
|
||||
#set_clock_groups -logically_exclusive -group [get_clocks -include_generated_clocks mmcm_clkout1_Gen] -group [get_clocks -include_generated_clocks CLKDiv64_Gen_slow]
|
||||
|
||||
|
||||
##### GPI ####
|
||||
set_property PACKAGE_PIN BB24 [get_ports {GPI[0]}]
|
||||
set_property PACKAGE_PIN BF22 [get_ports {GPI[1]}]
|
||||
set_property PACKAGE_PIN BD23 [get_ports {GPI[2]}]
|
||||
set_property PACKAGE_PIN BE23 [get_ports {GPI[3]}]
|
||||
set_property IOSTANDARD LVCMOS18 [get_ports {GPI[3]}]
|
||||
set_property IOSTANDARD LVCMOS18 [get_ports {GPI[2]}]
|
||||
set_property IOSTANDARD LVCMOS18 [get_ports {GPI[1]}]
|
||||
set_property IOSTANDARD LVCMOS18 [get_ports {GPI[0]}]
|
||||
set_input_delay -clock [get_clocks mmcm_clkout1] -min -add_delay 2.000 [get_ports {GPI[*]}]
|
||||
set_input_delay -clock [get_clocks mmcm_clkout1] -max -add_delay 2.000 [get_ports {GPI[*]}]
|
||||
set_max_delay -from [get_ports {GPI[*]}] 10.000
|
||||
|
||||
##### GPO ####
|
||||
set_property PACKAGE_PIN AT32 [get_ports {GPO[0]}]
|
||||
set_property PACKAGE_PIN AV34 [get_ports {GPO[1]}]
|
||||
set_property PACKAGE_PIN AY30 [get_ports {GPO[2]}]
|
||||
set_property PACKAGE_PIN BF32 [get_ports {GPO[4]}]
|
||||
set_property PACKAGE_PIN BB32 [get_ports {GPO[3]}]
|
||||
set_property IOSTANDARD LVCMOS12 [get_ports {GPO[4]}]
|
||||
set_property IOSTANDARD LVCMOS12 [get_ports {GPO[3]}]
|
||||
set_property IOSTANDARD LVCMOS12 [get_ports {GPO[2]}]
|
||||
set_property IOSTANDARD LVCMOS12 [get_ports {GPO[1]}]
|
||||
set_property IOSTANDARD LVCMOS12 [get_ports {GPO[0]}]
|
||||
set_max_delay -to [get_ports {GPO[*]}] 10.000
|
||||
set_output_delay -clock [get_clocks mmcm_clkout1] -min -add_delay 0.000 [get_ports {GPO[*]}]
|
||||
set_output_delay -clock [get_clocks mmcm_clkout1] -max -add_delay 0.000 [get_ports {GPO[*]}]
|
||||
|
||||
|
||||
##### UART #####
|
||||
set_property PACKAGE_PIN AW25 [get_ports UARTSin]
|
||||
set_property PACKAGE_PIN BB21 [get_ports UARTSout]
|
||||
set_max_delay -from [get_ports UARTSin] 10.000
|
||||
set_max_delay -to [get_ports UARTSout] 10.000
|
||||
set_property IOSTANDARD LVCMOS18 [get_ports UARTSin]
|
||||
set_property IOSTANDARD LVCMOS18 [get_ports UARTSout]
|
||||
set_property DRIVE 6 [get_ports UARTSout]
|
||||
set_input_delay -clock [get_clocks mmcm_clkout1] -min -add_delay 2.000 [get_ports UARTSin]
|
||||
set_input_delay -clock [get_clocks mmcm_clkout1] -max -add_delay 2.000 [get_ports UARTSin]
|
||||
set_output_delay -clock [get_clocks mmcm_clkout1] -min -add_delay 0.000 [get_ports UARTSout]
|
||||
set_output_delay -clock [get_clocks mmcm_clkout1] -max -add_delay 0.000 [get_ports UARTSout]
|
||||
|
||||
|
||||
##### reset #####
|
||||
set_input_delay -clock [get_clocks default_250mhz_clk1_0_p] -min -add_delay 2.000 [get_ports reset]
|
||||
set_input_delay -clock [get_clocks default_250mhz_clk1_0_p] -max -add_delay 2.000 [get_ports reset]
|
||||
set_input_delay -clock [get_clocks mmcm_clkout0] -min -add_delay 0.000 [get_ports reset]
|
||||
set_input_delay -clock [get_clocks mmcm_clkout0] -max -add_delay 0.000 [get_ports reset]
|
||||
set_input_delay -clock [get_clocks mmcm_clkout1] -min -add_delay 0.000 [get_ports reset]
|
||||
set_input_delay -clock [get_clocks mmcm_clkout1] -max -add_delay 0.000 [get_ports reset]
|
||||
set_max_delay -from [get_ports reset] 15.000
|
||||
set_false_path -from [get_ports reset]
|
||||
|
||||
|
||||
|
||||
##### cpu_reset #####
|
||||
set_property PACKAGE_PIN AV36 [get_ports {cpu_reset}]
|
||||
set_property IOSTANDARD LVCMOS12 [get_ports {cpu_reset}]
|
||||
set_output_delay -clock [get_clocks mmcm_clkout1] -min -add_delay 0.000 [get_ports {cpu_reset}]
|
||||
set_output_delay -clock [get_clocks mmcm_clkout1] -max -add_delay 0.000 [get_ports {cpu_reset}]
|
||||
|
||||
|
||||
##### calib #####
|
||||
set_property PACKAGE_PIN BA37 [get_ports calib]
|
||||
set_property IOSTANDARD LVCMOS12 [get_ports calib]
|
||||
set_output_delay -clock [get_clocks mmcm_clkout1] -min -add_delay 0.000 [get_ports calib]
|
||||
set_output_delay -clock [get_clocks mmcm_clkout1] -max -add_delay 20.000 [get_ports calib]
|
||||
set_max_delay -from [get_pins xlnx_ddr4_c0/inst/u_ddr4_mem_intfc/u_ddr_cal_top/calDone_gated_reg/C] -to [get_ports calib] 50.000
|
||||
|
||||
|
||||
##### ahblite_resetn #####
|
||||
set_property PACKAGE_PIN AU37 [get_ports {ahblite_resetn}]
|
||||
set_property IOSTANDARD LVCMOS12 [get_ports {ahblite_resetn}]
|
||||
set_output_delay -clock [get_clocks mmcm_clkout1] -min -add_delay 0.000 [get_ports {ahblite_resetn}]
|
||||
set_output_delay -clock [get_clocks mmcm_clkout1] -max -add_delay 0.000 [get_ports {ahblite_resetn}]
|
||||
|
||||
|
||||
##### south_rst #####
|
||||
set_property PACKAGE_PIN BE22 [get_ports south_rst]
|
||||
set_property IOSTANDARD LVCMOS18 [get_ports south_rst]
|
||||
set_input_delay -clock [get_clocks mmcm_clkout1] -min -add_delay 2.000 [get_ports south_rst]
|
||||
set_input_delay -clock [get_clocks mmcm_clkout1] -max -add_delay 2.000 [get_ports south_rst]
|
||||
|
||||
|
||||
##### SD Card I/O #####
|
||||
set_property PACKAGE_PIN AY14 [get_ports {SDCDat[3]}]
|
||||
set_property IOSTANDARD LVCMOS18 [get_ports {SDCDat[3]}]
|
||||
set_property IOSTANDARD LVCMOS18 [get_ports {SDCDat[2]}]
|
||||
set_property IOSTANDARD LVCMOS18 [get_ports {SDCDat[1]}]
|
||||
set_property IOSTANDARD LVCMOS18 [get_ports {SDCDat[0]}]
|
||||
set_property PACKAGE_PIN AU16 [get_ports {SDCDat[2]}]
|
||||
set_property PACKAGE_PIN AV16 [get_ports {SDCDat[1]}]
|
||||
set_property PACKAGE_PIN AW15 [get_ports {SDCDat[0]}]
|
||||
set_property IOSTANDARD LVCMOS18 [get_ports SDCCLK]
|
||||
set_property IOSTANDARD LVCMOS18 [get_ports {SDCCmd}]
|
||||
set_property PACKAGE_PIN AV15 [get_ports SDCCLK]
|
||||
set_property PACKAGE_PIN AY15 [get_ports {SDCCmd}]
|
||||
set_property PULLUP true [get_ports {SDCDat[3]}]
|
||||
set_property PULLUP true [get_ports {SDCDat[2]}]
|
||||
set_property PULLUP true [get_ports {SDCDat[1]}]
|
||||
set_property PULLUP true [get_ports {SDCDat[0]}]
|
||||
set_property PULLUP true [get_ports {SDCCmd}]
|
||||
|
||||
|
||||
set_input_delay -clock [get_clocks CLKDiv64_Gen] -min -add_delay 2.500 [get_ports {SDCDat[*]}]
|
||||
set_input_delay -clock [get_clocks CLKDiv64_Gen] -max -add_delay 21.000 [get_ports {SDCDat[*]}]
|
||||
|
||||
set_input_delay -clock [get_clocks CLKDiv64_Gen] -min -add_delay 2.500 [get_ports {SDCCmd}]
|
||||
set_input_delay -clock [get_clocks CLKDiv64_Gen] -max -add_delay 14.000 [get_ports {SDCCmd}]
|
||||
|
||||
|
||||
set_output_delay -clock [get_clocks CLKDiv64_Gen] -min -add_delay 2.000 [get_ports {SDCCmd}]
|
||||
set_output_delay -clock [get_clocks CLKDiv64_Gen] -max -add_delay 6.000 [get_ports {SDCCmd}]
|
||||
|
||||
set_output_delay -clock [get_clocks CLKDiv64_Gen] 0.000 [get_ports SDCCLK]
|
||||
|
||||
|
||||
|
||||
set_property DCI_CASCADE {64} [get_iobanks 65]
|
||||
set_property INTERNAL_VREF 0.9 [get_iobanks 65]
|
||||
|
||||
|
||||
set_property PACKAGE_PIN E13 [get_ports c0_ddr4_act_n]
|
||||
set_property PACKAGE_PIN D14 [get_ports {c0_ddr4_adr[0]}]
|
||||
set_property PACKAGE_PIN C12 [get_ports {c0_ddr4_adr[10]}]
|
||||
set_property PACKAGE_PIN B13 [get_ports {c0_ddr4_adr[11]}]
|
||||
set_property PACKAGE_PIN C13 [get_ports {c0_ddr4_adr[12]}]
|
||||
set_property PACKAGE_PIN D15 [get_ports {c0_ddr4_adr[13]}]
|
||||
set_property PACKAGE_PIN H14 [get_ports {c0_ddr4_adr[14]}]
|
||||
set_property PACKAGE_PIN H15 [get_ports {c0_ddr4_adr[15]}]
|
||||
set_property PACKAGE_PIN F15 [get_ports {c0_ddr4_adr[16]}]
|
||||
set_property PACKAGE_PIN B15 [get_ports {c0_ddr4_adr[1]}]
|
||||
set_property PACKAGE_PIN B16 [get_ports {c0_ddr4_adr[2]}]
|
||||
set_property PACKAGE_PIN C14 [get_ports {c0_ddr4_adr[3]}]
|
||||
set_property PACKAGE_PIN C15 [get_ports {c0_ddr4_adr[4]}]
|
||||
set_property PACKAGE_PIN A13 [get_ports {c0_ddr4_adr[5]}]
|
||||
set_property PACKAGE_PIN A14 [get_ports {c0_ddr4_adr[6]}]
|
||||
set_property PACKAGE_PIN A15 [get_ports {c0_ddr4_adr[7]}]
|
||||
set_property PACKAGE_PIN A16 [get_ports {c0_ddr4_adr[8]}]
|
||||
set_property PACKAGE_PIN B12 [get_ports {c0_ddr4_adr[9]}]
|
||||
set_property PACKAGE_PIN G15 [get_ports {c0_ddr4_ba[0]}]
|
||||
set_property PACKAGE_PIN G13 [get_ports {c0_ddr4_ba[1]}]
|
||||
set_property PACKAGE_PIN H13 [get_ports {c0_ddr4_bg[0]}]
|
||||
set_property PACKAGE_PIN F14 [get_ports {c0_ddr4_ck_t[0]}]
|
||||
set_property PACKAGE_PIN E14 [get_ports {c0_ddr4_ck_c[0]}]
|
||||
set_property PACKAGE_PIN A10 [get_ports {c0_ddr4_cke[0]}]
|
||||
set_property PACKAGE_PIN F13 [get_ports {c0_ddr4_cs_n[0]}]
|
||||
set_property PACKAGE_PIN F11 [get_ports {c0_ddr4_dq[0]}]
|
||||
set_property PACKAGE_PIN M18 [get_ports {c0_ddr4_dq[10]}]
|
||||
set_property PACKAGE_PIN M17 [get_ports {c0_ddr4_dq[11]}]
|
||||
set_property PACKAGE_PIN N19 [get_ports {c0_ddr4_dq[12]}]
|
||||
set_property PACKAGE_PIN N18 [get_ports {c0_ddr4_dq[13]}]
|
||||
set_property PACKAGE_PIN N17 [get_ports {c0_ddr4_dq[14]}]
|
||||
set_property PACKAGE_PIN M16 [get_ports {c0_ddr4_dq[15]}]
|
||||
set_property PACKAGE_PIN L16 [get_ports {c0_ddr4_dq[16]}]
|
||||
set_property PACKAGE_PIN K16 [get_ports {c0_ddr4_dq[17]}]
|
||||
set_property PACKAGE_PIN L18 [get_ports {c0_ddr4_dq[18]}]
|
||||
set_property PACKAGE_PIN K18 [get_ports {c0_ddr4_dq[19]}]
|
||||
set_property PACKAGE_PIN E11 [get_ports {c0_ddr4_dq[1]}]
|
||||
set_property PACKAGE_PIN J17 [get_ports {c0_ddr4_dq[20]}]
|
||||
set_property PACKAGE_PIN H17 [get_ports {c0_ddr4_dq[21]}]
|
||||
set_property PACKAGE_PIN H19 [get_ports {c0_ddr4_dq[22]}]
|
||||
set_property PACKAGE_PIN H18 [get_ports {c0_ddr4_dq[23]}]
|
||||
set_property PACKAGE_PIN F19 [get_ports {c0_ddr4_dq[24]}]
|
||||
set_property PACKAGE_PIN F18 [get_ports {c0_ddr4_dq[25]}]
|
||||
set_property PACKAGE_PIN E19 [get_ports {c0_ddr4_dq[26]}]
|
||||
set_property PACKAGE_PIN E18 [get_ports {c0_ddr4_dq[27]}]
|
||||
set_property PACKAGE_PIN G20 [get_ports {c0_ddr4_dq[28]}]
|
||||
set_property PACKAGE_PIN F20 [get_ports {c0_ddr4_dq[29]}]
|
||||
set_property PACKAGE_PIN F10 [get_ports {c0_ddr4_dq[2]}]
|
||||
set_property PACKAGE_PIN E17 [get_ports {c0_ddr4_dq[30]}]
|
||||
set_property PACKAGE_PIN D16 [get_ports {c0_ddr4_dq[31]}]
|
||||
set_property PACKAGE_PIN D17 [get_ports {c0_ddr4_dq[32]}]
|
||||
set_property PACKAGE_PIN C17 [get_ports {c0_ddr4_dq[33]}]
|
||||
set_property PACKAGE_PIN C19 [get_ports {c0_ddr4_dq[34]}]
|
||||
set_property PACKAGE_PIN C18 [get_ports {c0_ddr4_dq[35]}]
|
||||
set_property PACKAGE_PIN D20 [get_ports {c0_ddr4_dq[36]}]
|
||||
set_property PACKAGE_PIN D19 [get_ports {c0_ddr4_dq[37]}]
|
||||
set_property PACKAGE_PIN C20 [get_ports {c0_ddr4_dq[38]}]
|
||||
set_property PACKAGE_PIN B20 [get_ports {c0_ddr4_dq[39]}]
|
||||
set_property PACKAGE_PIN F9 [get_ports {c0_ddr4_dq[3]}]
|
||||
set_property PACKAGE_PIN N23 [get_ports {c0_ddr4_dq[40]}]
|
||||
set_property PACKAGE_PIN M23 [get_ports {c0_ddr4_dq[41]}]
|
||||
set_property PACKAGE_PIN R21 [get_ports {c0_ddr4_dq[42]}]
|
||||
set_property PACKAGE_PIN P21 [get_ports {c0_ddr4_dq[43]}]
|
||||
set_property PACKAGE_PIN R22 [get_ports {c0_ddr4_dq[44]}]
|
||||
set_property PACKAGE_PIN P22 [get_ports {c0_ddr4_dq[45]}]
|
||||
set_property PACKAGE_PIN T23 [get_ports {c0_ddr4_dq[46]}]
|
||||
set_property PACKAGE_PIN R23 [get_ports {c0_ddr4_dq[47]}]
|
||||
set_property PACKAGE_PIN K24 [get_ports {c0_ddr4_dq[48]}]
|
||||
set_property PACKAGE_PIN J24 [get_ports {c0_ddr4_dq[49]}]
|
||||
set_property PACKAGE_PIN H12 [get_ports {c0_ddr4_dq[4]}]
|
||||
set_property PACKAGE_PIN M21 [get_ports {c0_ddr4_dq[50]}]
|
||||
set_property PACKAGE_PIN L21 [get_ports {c0_ddr4_dq[51]}]
|
||||
set_property PACKAGE_PIN K21 [get_ports {c0_ddr4_dq[52]}]
|
||||
set_property PACKAGE_PIN J21 [get_ports {c0_ddr4_dq[53]}]
|
||||
set_property PACKAGE_PIN K22 [get_ports {c0_ddr4_dq[54]}]
|
||||
set_property PACKAGE_PIN J22 [get_ports {c0_ddr4_dq[55]}]
|
||||
set_property PACKAGE_PIN H23 [get_ports {c0_ddr4_dq[56]}]
|
||||
set_property PACKAGE_PIN H22 [get_ports {c0_ddr4_dq[57]}]
|
||||
set_property PACKAGE_PIN E23 [get_ports {c0_ddr4_dq[58]}]
|
||||
set_property PACKAGE_PIN E22 [get_ports {c0_ddr4_dq[59]}]
|
||||
set_property PACKAGE_PIN G12 [get_ports {c0_ddr4_dq[5]}]
|
||||
set_property PACKAGE_PIN F21 [get_ports {c0_ddr4_dq[60]}]
|
||||
set_property PACKAGE_PIN E21 [get_ports {c0_ddr4_dq[61]}]
|
||||
set_property PACKAGE_PIN F24 [get_ports {c0_ddr4_dq[62]}]
|
||||
set_property PACKAGE_PIN F23 [get_ports {c0_ddr4_dq[63]}]
|
||||
set_property PACKAGE_PIN E9 [get_ports {c0_ddr4_dq[6]}]
|
||||
set_property PACKAGE_PIN D9 [get_ports {c0_ddr4_dq[7]}]
|
||||
set_property PACKAGE_PIN R19 [get_ports {c0_ddr4_dq[8]}]
|
||||
set_property PACKAGE_PIN P19 [get_ports {c0_ddr4_dq[9]}]
|
||||
set_property PACKAGE_PIN D11 [get_ports {c0_ddr4_dqs_t[0]}]
|
||||
set_property PACKAGE_PIN D10 [get_ports {c0_ddr4_dqs_c[0]}]
|
||||
set_property PACKAGE_PIN P17 [get_ports {c0_ddr4_dqs_t[1]}]
|
||||
set_property PACKAGE_PIN P16 [get_ports {c0_ddr4_dqs_c[1]}]
|
||||
set_property PACKAGE_PIN K19 [get_ports {c0_ddr4_dqs_t[2]}]
|
||||
set_property PACKAGE_PIN J19 [get_ports {c0_ddr4_dqs_c[2]}]
|
||||
set_property PACKAGE_PIN F16 [get_ports {c0_ddr4_dqs_t[3]}]
|
||||
set_property PACKAGE_PIN E16 [get_ports {c0_ddr4_dqs_c[3]}]
|
||||
set_property PACKAGE_PIN A19 [get_ports {c0_ddr4_dqs_t[4]}]
|
||||
set_property PACKAGE_PIN A18 [get_ports {c0_ddr4_dqs_c[4]}]
|
||||
set_property PACKAGE_PIN N22 [get_ports {c0_ddr4_dqs_t[5]}]
|
||||
set_property PACKAGE_PIN M22 [get_ports {c0_ddr4_dqs_c[5]}]
|
||||
set_property PACKAGE_PIN M20 [get_ports {c0_ddr4_dqs_t[6]}]
|
||||
set_property PACKAGE_PIN L20 [get_ports {c0_ddr4_dqs_c[6]}]
|
||||
set_property PACKAGE_PIN H24 [get_ports {c0_ddr4_dqs_t[7]}]
|
||||
set_property PACKAGE_PIN G23 [get_ports {c0_ddr4_dqs_c[7]}]
|
||||
set_property PACKAGE_PIN C8 [get_ports {c0_ddr4_odt[0]}]
|
||||
set_property PACKAGE_PIN N20 [get_ports c0_ddr4_reset_n]
|
||||
|
||||
|
||||
set_property PACKAGE_PIN G11 [get_ports {c0_ddr4_dm_dbi_n[0]}]
|
||||
set_property PACKAGE_PIN R18 [get_ports {c0_ddr4_dm_dbi_n[1]}]
|
||||
set_property PACKAGE_PIN K17 [get_ports {c0_ddr4_dm_dbi_n[2]}]
|
||||
set_property PACKAGE_PIN G18 [get_ports {c0_ddr4_dm_dbi_n[3]}]
|
||||
set_property PACKAGE_PIN B18 [get_ports {c0_ddr4_dm_dbi_n[4]}]
|
||||
set_property PACKAGE_PIN P20 [get_ports {c0_ddr4_dm_dbi_n[5]}]
|
||||
set_property PACKAGE_PIN L23 [get_ports {c0_ddr4_dm_dbi_n[6]}]
|
||||
set_property PACKAGE_PIN G22 [get_ports {c0_ddr4_dm_dbi_n[7]}]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
set_max_delay -datapath_only -from [get_pins wrapper_i/ddr4_0/inst/u_ddr4_mem_intfc/u_ddr_cal_top/calDone_gated_reg/C] -to [get_pins wrapper_i/proc_sys_reset_0/U0/EXT_LPF/lpf_int_reg/D] 10.000
|
||||
|
||||
|
||||
set_output_delay -clock [get_clocks mmcm_clkout1] -min -add_delay 0.000 [get_ports c0_ddr4_reset_n]
|
||||
set_output_delay -clock [get_clocks mmcm_clkout1] -max -add_delay 20.000 [get_ports c0_ddr4_reset_n]
|
||||
|
||||
|
||||
|
||||
set_max_delay -from [get_pins {xlnx_ddr4_c0/inst/u_ddr4_mem_intfc/u_ddr_cal_top/cal_RESET_n_reg[0]/C}] -to [get_ports c0_ddr4_reset_n] 50.000
|
||||
|
||||
|
76
fpga/generator/wally.tcl
Normal file
76
fpga/generator/wally.tcl
Normal file
@ -0,0 +1,76 @@
|
||||
# start by reading in all the IP blocks generated by vivado
|
||||
|
||||
set partNumber xcvu9p-flga2104-2L-e
|
||||
set boardName xilinx.com:vcu118:part0:2.4
|
||||
|
||||
set ipName WallyFPGA
|
||||
|
||||
create_project $ipName . -force -part $partNumber
|
||||
set_property board_part $boardName [current_project]
|
||||
|
||||
read_ip IP/xlnx_proc_sys_reset.srcs/sources_1/ip/xlnx_proc_sys_reset/xlnx_proc_sys_reset.xci
|
||||
read_ip IP/xlnx_ahblite_axi_bridge.srcs/sources_1/ip/xlnx_ahblite_axi_bridge/xlnx_ahblite_axi_bridge.xci
|
||||
read_ip IP/xlnx_axi_clock_converter.srcs/sources_1/ip/xlnx_axi_clock_converter/xlnx_axi_clock_converter.xci
|
||||
read_ip IP/xlnx_ddr4.srcs/sources_1/ip/xlnx_ddr4/xlnx_ddr4.xci
|
||||
|
||||
|
||||
read_verilog -sv [glob -type f ../../wally-pipelined/src/*/*.sv ../../wally-pipelined/src/*/*/*.sv]
|
||||
read_verilog {../src/fpgaTop.v}
|
||||
|
||||
set_property include_dirs {../../wally-pipelined/config/fpga ../../wally-pipelined/config/shared} [current_fileset]
|
||||
|
||||
# contrainsts generated by the IP blocks
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_ddr4.gen/sources_1/ip/xlnx_ddr4/ip_1/par/xlnx_ddr4_phy_ooc.xdc
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_ddr4.gen/sources_1/ip/xlnx_ddr4/bd_0/ip/ip_2/bd_1ba7_ilmb_0.xdc
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_ddr4.gen/sources_1/ip/xlnx_ddr4/bd_0/ip/ip_10/bd_1ba7_iomodule_0_0_board.xdc
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_ddr4.gen/sources_1/ip/xlnx_ddr4/bd_0/ip/ip_1/bd_1ba7_rst_0_0_board.xdc
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_ddr4.gen/sources_1/ip/xlnx_ddr4/bd_0/ip/ip_1/bd_1ba7_rst_0_0.xdc
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_ddr4.gen/sources_1/ip/xlnx_ddr4/bd_0/ip/ip_0/bd_1ba7_microblaze_I_0_ooc_debug.xdc
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_ddr4.gen/sources_1/ip/xlnx_ddr4/bd_0/ip/ip_0/bd_1ba7_microblaze_I_0.xdc
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_ddr4.gen/sources_1/ip/xlnx_ddr4/bd_0/ip/ip_9/bd_1ba7_second_lmb_bram_I_0_ooc.xdc
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_ddr4.gen/sources_1/ip/xlnx_ddr4/bd_0/ip/ip_6/bd_1ba7_lmb_bram_I_0_ooc.xdc
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_ddr4.gen/sources_1/ip/xlnx_ddr4/bd_0/ip/ip_3/bd_1ba7_dlmb_0.xdc
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_ddr4.gen/sources_1/ip/xlnx_ddr4/bd_0/bd_1ba7_ooc.xdc
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_ddr4.gen/sources_1/ip/xlnx_ddr4/ip_0/xlnx_ddr4_microblaze_mcs_board.xdc
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_ddr4.gen/sources_1/ip/xlnx_ddr4/ip_0/xlnx_ddr4_microblaze_mcs_ooc.xdc
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_ddr4.gen/sources_1/ip/xlnx_ddr4/xlnx_ddr4_board.xdc
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_ddr4.gen/sources_1/ip/xlnx_ddr4/par/xlnx_ddr4.xdc
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_axi_clock_converter.gen/sources_1/ip/xlnx_axi_clock_converter/xlnx_axi_clock_converter_ooc.xdc
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_axi_clock_converter.gen/sources_1/ip/xlnx_axi_clock_converter/xlnx_axi_clock_converter_clocks.xdc
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_ahblite_axi_bridge.runs/xlnx_ahblite_axi_bridge_synth_1/dont_touch.xdc
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_ahblite_axi_bridge.gen/sources_1/ip/xlnx_ahblite_axi_bridge/xlnx_ahblite_axi_bridge_ooc.xdc
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_proc_sys_reset.runs/xlnx_proc_sys_reset_synth_1/dont_touch.xdc
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_proc_sys_reset.gen/sources_1/ip/xlnx_proc_sys_reset/xlnx_proc_sys_reset_ooc.xdc
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_proc_sys_reset.gen/sources_1/ip/xlnx_proc_sys_reset/xlnx_proc_sys_reset.xdc
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_proc_sys_reset.gen/sources_1/ip/xlnx_proc_sys_reset/xlnx_proc_sys_reset_board.xdc
|
||||
#add_files -fileset constrs_1 -norecurse IP/xlnx_axi_clock_converter.runs/xlnx_axi_clock_converter_synth_1/.Xil/xlnx_axi_clock_converter_propImpl.xdc
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_axi_clock_converter.runs/xlnx_axi_clock_converter_synth_1/dont_touch.xdc
|
||||
#add_files -fileset constrs_1 -norecurse IP/xlnx_ddr4.runs/xlnx_ddr4_synth_1/.Xil/xlnx_ddr4_propImpl.xdc
|
||||
add_files -fileset constrs_1 -norecurse IP/xlnx_ddr4.runs/xlnx_ddr4_synth_1/dont_touch.xdc
|
||||
|
||||
# constraints for wally top level
|
||||
add_files -fileset constrs_1 -norecurse ../constraints/constraints.xdc
|
||||
|
||||
# define top level
|
||||
set_property top fpgaTop [current_fileset]
|
||||
|
||||
update_compile_order -fileset sources_1
|
||||
|
||||
# this is elaboration not synthesis.
|
||||
synth_design -rtl -name rtl_1
|
||||
|
||||
# this does synthesis? wtf?
|
||||
launch_runs synth_1 -jobs 4
|
||||
|
||||
wait_on_run synth_1
|
||||
open_run synth_1
|
||||
|
||||
exec mkdir -p reports/
|
||||
exec rm -rf reports/*
|
||||
|
||||
check_timing -verbose -file reports/check_timing.rpt
|
||||
report_timing -max_paths 10 -nworst 10 -delay_type max -sort_by slack -file reports/timing_WORST_10.rpt
|
||||
report_timing -nworst 1 -delay_type max -sort_by group -file reports/timing.rpt
|
||||
report_utilization -hierarchical -file reports/utilization.rpt
|
||||
report_cdc -file reports/cdc.rpt
|
||||
report_clock_interaction -file reports/clock_interaction.rpt
|
@ -11,7 +11,7 @@ set_property board_part $boardName [current_project]
|
||||
|
||||
create_ip -name axi_clock_converter -vendor xilinx.com -library ip -module_name $ipName
|
||||
|
||||
set_property -dict [list CONFIG.ACLK_ASYNC {1} CONFIG.PROTOCOL {AXI4} CONFIG.ADDR_WIDTH {31} CONFIG.DATA_WIDTH {64} CONFIG.ID_WIDTH {4}] [get_ips $ipName]
|
||||
set_property -dict [list CONFIG.ACLK_ASYNC {1} CONFIG.PROTOCOL {AXI4} CONFIG.ADDR_WIDTH {32} CONFIG.DATA_WIDTH {64} CONFIG.ID_WIDTH {4}] [get_ips $ipName]
|
||||
|
||||
generate_target {instantiation_template} [get_files ./$ipName.srcs/sources_1/ip/$ipName/$ipName.xci]
|
||||
generate_target all [get_files ./$ipName.srcs/sources_1/ip/$ipName/$ipName.xci]
|
||||
|
@ -69,7 +69,8 @@ module fpgaTop
|
||||
wire peripheral_reset;
|
||||
wire interconnect_aresetn;
|
||||
wire peripheral_aresetn;
|
||||
|
||||
wire mb_reset;
|
||||
|
||||
wire [`AHBW-1:0] HRDATAEXT;
|
||||
wire HREADYEXT;
|
||||
wire HRESPEXT;
|
||||
@ -130,12 +131,17 @@ module fpgaTop
|
||||
wire m_axi_rlast;
|
||||
wire m_axi_rready;
|
||||
|
||||
wire [3:0] BUS_axi_arregion;
|
||||
wire [3:0] BUS_axi_arqos;
|
||||
wire [3:0] BUS_axi_awregion;
|
||||
wire [3:0] BUS_axi_awqos;
|
||||
|
||||
wire [3:0] BUS_axi_awid;
|
||||
wire [7:0] BUS_axi_awlen;
|
||||
wire [2:0] BUS_axi_awsize;
|
||||
wire [1:0] BUS_axi_awburst;
|
||||
wire [3:0] BUS_axi_awcache;
|
||||
wire [31:0] BUS_axi_awaddr;
|
||||
wire [30:0] BUS_axi_awaddr;
|
||||
wire [2:0] BUS_axi_awprot;
|
||||
wire BUS_axi_awvalid;
|
||||
wire BUS_axi_awready;
|
||||
@ -156,7 +162,7 @@ module fpgaTop
|
||||
wire [2:0] BUS_axi_arprot;
|
||||
wire [3:0] BUS_axi_arcache;
|
||||
wire BUS_axi_arvalid;
|
||||
wire [31:0] BUS_axi_araddr;
|
||||
wire [30:0] BUS_axi_araddr;
|
||||
wire BUS_axi_arlock;
|
||||
wire BUS_axi_arready;
|
||||
wire [3:0] BUS_axi_rid;
|
||||
@ -189,16 +195,16 @@ module fpgaTop
|
||||
IOBUF iobufSDCMD(.T(~SDCCmdOE), // iobuf's T is active low
|
||||
.I(SDCCmdIn),
|
||||
.O(SDCCmdOut),
|
||||
.IO(SDCmd));
|
||||
.IO(SDCCmd));
|
||||
|
||||
// reset controller XILINX IP
|
||||
wrapper_proc_sys_reset_0_0 wrapper_proc_sys_reset_0_0
|
||||
xlnx_proc_sys_reset xlnx_proc_sys_reset_0
|
||||
(.slowest_sync_clk(CPUCLK),
|
||||
.ext_reset_in(c0_ddr4_ui_clk_sync_rst),
|
||||
.aux_reset_in(south_rst),
|
||||
.mb_debug_sys_rst(1'b0),
|
||||
.dcm_locked(c0_init_calib_complete),
|
||||
//.mb_reset, //open
|
||||
.mb_reset(mb_reset), //open
|
||||
.bus_struct_reset(bus_struct_reset),
|
||||
.peripheral_reset(peripheral_reset), //open
|
||||
.interconnect_aresetn(interconnect_aresetn), //open
|
||||
@ -208,7 +214,7 @@ module fpgaTop
|
||||
// wally
|
||||
wallypipelinedsoc wallypipelinedsoc
|
||||
(.clk(CPUCLK),
|
||||
.reset(bus_struct_reset),
|
||||
.reset_ext(bus_struct_reset),
|
||||
// bus interface
|
||||
.HRDATAEXT(HRDATAEXT),
|
||||
.HREADYEXT(HREADYEXT),
|
||||
@ -237,13 +243,12 @@ module fpgaTop
|
||||
.SDCCmdIn(SDCCmdIn),
|
||||
.SDCCmdOut(SDCCmdOut),
|
||||
.SDCCmdOE(SDCCmdOE),
|
||||
|
||||
);
|
||||
.SDCCLK(SDCCLK));
|
||||
|
||||
// ahb lite to axi bridge
|
||||
xlnx_ahblite_axi_bridge xlnx_ahblite_axi_bridge_0
|
||||
(.s_ahb_hclk(CPUCLK),
|
||||
.s_ahb_hresetn(peripheral_aresetn)
|
||||
.s_ahb_hresetn(peripheral_aresetn),
|
||||
.s_ahb_hsel(HSELEXT),
|
||||
.s_ahb_haddr(HADDR),
|
||||
.s_ahb_hprot(HPROT),
|
||||
@ -300,8 +305,10 @@ module fpgaTop
|
||||
.s_axi_awsize(m_axi_awsize),
|
||||
.s_axi_awburst(m_axi_awburst),
|
||||
.s_axi_awcache(m_axi_awcache),
|
||||
.s_axi_awaddr(m_axi_awaddr),
|
||||
.s_axi_awaddr(m_axi_awaddr[30:0]),
|
||||
.s_axi_awprot(m_axi_awprot),
|
||||
.s_axi_awregion(4'b0), // this could be a bug. bridge does not have these outputs
|
||||
.s_axi_awqos(4'b0), // this could be a bug. bridge does not have these outputs
|
||||
.s_axi_awvalid(m_axi_awvalid),
|
||||
.s_axi_awready(m_axi_awready),
|
||||
.s_axi_awlock(m_axi_awlock),
|
||||
@ -319,9 +326,11 @@ module fpgaTop
|
||||
.s_axi_arsize(m_axi_arsize),
|
||||
.s_axi_arburst(m_axi_arburst),
|
||||
.s_axi_arprot(m_axi_arprot),
|
||||
.s_axi_arregion(4'b0), // this could be a bug. bridge does not have these outputs
|
||||
.s_axi_arqos(4'b0), // this could be a bug. bridge does not have these outputs
|
||||
.s_axi_arcache(m_axi_arcache),
|
||||
.s_axi_arvalid(m_axi_arvalid),
|
||||
.s_axi_araddr(m_axi_araddr),
|
||||
.s_axi_araddr(m_axi_araddr[30:0]),
|
||||
.s_axi_arlock(m_axi_arlock),
|
||||
.s_axi_arready(m_axi_arready),
|
||||
.s_axi_rid(m_axi_rid),
|
||||
@ -340,6 +349,8 @@ module fpgaTop
|
||||
.m_axi_awcache(BUS_axi_awcache),
|
||||
.m_axi_awaddr(BUS_axi_awaddr),
|
||||
.m_axi_awprot(BUS_axi_awprot),
|
||||
.m_axi_awregion(BUS_axi_awregion),
|
||||
.m_axi_awqos(BUS_axi_awqos),
|
||||
.m_axi_awvalid(BUS_axi_awvalid),
|
||||
.m_axi_awready(BUS_axi_awready),
|
||||
.m_axi_awlock(BUS_axi_awlock),
|
||||
@ -357,6 +368,8 @@ module fpgaTop
|
||||
.m_axi_arsize(BUS_axi_arsize),
|
||||
.m_axi_arburst(BUS_axi_arburst),
|
||||
.m_axi_arprot(BUS_axi_arprot),
|
||||
.m_axi_arregion(BUS_axi_arregion),
|
||||
.m_axi_arqos(BUS_axi_arqos),
|
||||
.m_axi_arcache(BUS_axi_arcache),
|
||||
.m_axi_arvalid(BUS_axi_arvalid),
|
||||
.m_axi_araddr(BUS_axi_araddr),
|
||||
@ -398,7 +411,7 @@ module fpgaTop
|
||||
|
||||
// axi
|
||||
.c0_ddr4_s_axi_awid(BUS_axi_awid),
|
||||
.c0_ddr4_s_axi_awaddr(BUS_axi_awaddr),
|
||||
.c0_ddr4_s_axi_awaddr(BUS_axi_awaddr[30:0]),
|
||||
.c0_ddr4_s_axi_awlen(BUS_axi_awlen),
|
||||
.c0_ddr4_s_axi_awsize(BUS_axi_awsize),
|
||||
.c0_ddr4_s_axi_awburst(BUS_axi_awburst),
|
||||
@ -418,7 +431,7 @@ module fpgaTop
|
||||
.c0_ddr4_s_axi_bresp(BUS_axi_bresp),
|
||||
.c0_ddr4_s_axi_bvalid(BUS_axi_bvalid),
|
||||
.c0_ddr4_s_axi_arid(BUS_axi_arid),
|
||||
.c0_ddr4_s_axi_araddr(BUS_axi_araddr),
|
||||
.c0_ddr4_s_axi_araddr(BUS_axi_araddr[30:0]),
|
||||
.c0_ddr4_s_axi_arlen(BUS_axi_arlen),
|
||||
.c0_ddr4_s_axi_arsize(BUS_axi_arsize),
|
||||
.c0_ddr4_s_axi_arburst(BUS_axi_arburst),
|
||||
|
Loading…
Reference in New Issue
Block a user