From d5b631e49bc810a552eb6ac0f57b943e74525243 Mon Sep 17 00:00:00 2001 From: Joachim Schmidt <joachim.schmidt@hesge.ch> Date: Wed, 13 Mar 2024 10:43:09 +0100 Subject: [PATCH] Adding some design files. --- design_files/debug.xdc | 0 design_files/scalp_firmware.xdc | 251 +++++++ design_files/scalp_safe_design.vhd | 438 +++++++++++++ design_files/scalp_zynqps.vhd | 177 +++++ design_files/scalp_zynqps_ipi.tcl | 985 ++++++++++++++++++++++++++++ design_files/timing_constraints.xdc | 31 + 6 files changed, 1882 insertions(+) create mode 100644 design_files/debug.xdc create mode 100644 design_files/scalp_firmware.xdc create mode 100644 design_files/scalp_safe_design.vhd create mode 100644 design_files/scalp_zynqps.vhd create mode 100644 design_files/scalp_zynqps_ipi.tcl create mode 100644 design_files/timing_constraints.xdc diff --git a/design_files/debug.xdc b/design_files/debug.xdc new file mode 100644 index 0000000..e69de29 diff --git a/design_files/scalp_firmware.xdc b/design_files/scalp_firmware.xdc new file mode 100644 index 0000000..ef0aa1c --- /dev/null +++ b/design_files/scalp_firmware.xdc @@ -0,0 +1,251 @@ +############################################################################ +# Programmable Logic placement constraints # +############################################################################ + +##### USB interface (bank 13) ##### +# USB_VBUS_PWRFAULT_i +set_property PACKAGE_PIN AA19 [get_ports UsbVbusPwrFaultxSI] +set_property IOSTANDARD LVCMOS25 [get_ports UsbVbusPwrFaultxSI] + +##### PLL interface (banks 35 and 34) ##### +# PLL_2V5_CLKuWire_o +set_property PACKAGE_PIN G8 [get_ports Pll2V5ClkuWirexCO] +set_property IOSTANDARD LVCMOS25 [get_ports Pll2V5ClkuWirexCO] +# PLL_2V5_DATAuWire_o +set_property PACKAGE_PIN G7 [get_ports Pll2V5DatauWirexSO] +set_property IOSTANDARD LVCMOS25 [get_ports Pll2V5DatauWirexSO] +# PLL_2V5_LEuWire_o +set_property PACKAGE_PIN G6 [get_ports Pll2V5LEuWirexSO] +set_property IOSTANDARD LVCMOS25 [get_ports Pll2V5LEuWirexSO] +# PLL_2V5_GOE_o +set_property PACKAGE_PIN F6 [get_ports Pll2V5GOExSO] +set_property IOSTANDARD LVCMOS25 [get_ports Pll2V5GOExSO] +# PLL_2V5_LD_i +set_property PACKAGE_PIN H6 [get_ports Pll2V5LDxSI] +set_property IOSTANDARD LVCMOS25 [get_ports Pll2V5LDxSI] +# PLL_2V5_SYNC_n_o +set_property PACKAGE_PIN H5 [get_ports Pll2V5SyncxSO] +set_property IOSTANDARD LVCMOS25 [get_ports Pll2V5SyncxSO] +# PLL_2V5_CLKIN0_LOS_i (bank 34) +set_property PACKAGE_PIN J3 [get_ports Pll2V5ClkIn0LOSxSI] +set_property IOSTANDARD LVCMOS25 [get_ports Pll2V5ClkIn0LOSxSI] +# PLL_2V5_CLKIN1_LOS_i (bank 34) +set_property PACKAGE_PIN K2 [get_ports Pll2V5ClkIn1LOSxSI] +set_property IOSTANDARD LVCMOS25 [get_ports Pll2V5ClkIn1LOSxSI] + +##### GTP interfaces (bank 112) ##### +#set_property PACKAGE_PIN U9 [get_ports GTPRefClk0PxCI] +#set_property PACKAGE_PIN V9 [get_ports GTPRefClk0NxCI] +#set_property PACKAGE_PIN "U5" [get_ports "GTPRefClk1PxCI"] +#set_property PACKAGE_PIN "V5" [get_ports "GTPRefClk1NxCI"] +#set_property PACKAGE_PIN Y8 [get_ports GTPFromNorthNxSI] +#set_property PACKAGE_PIN W8 [get_ports GTPFromNorthPxSI] +#set_property PACKAGE_PIN Y4 [get_ports GTPToNorthNxSO] +#set_property PACKAGE_PIN W4 [get_ports GTPToNorthPxSO] +#set_property PACKAGE_PIN AB7 [get_ports GTPFromSouthNxSI] +#set_property PACKAGE_PIN AA7 [get_ports GTPFromSouthPxSI] +#set_property PACKAGE_PIN AB3 [get_ports GTPToSouthNxSO] +#set_property PACKAGE_PIN AA3 [get_ports GTPToSouthPxSO] +#set_property PACKAGE_PIN AB9 [get_ports GTPFromEastNxSI] +#set_property PACKAGE_PIN AA9 [get_ports GTPFromEastPxSI] +#set_property PACKAGE_PIN AB5 [get_ports GTPToEastNxSO] +#set_property PACKAGE_PIN AA5 [get_ports GTPToEastPxSO] +#set_property PACKAGE_PIN Y6 [get_ports GTPFromWestNxSI] +#set_property PACKAGE_PIN W6 [get_ports GTPFromWestPxSI] +#set_property PACKAGE_PIN Y2 [get_ports GTPToWestNxSO] +#set_property PACKAGE_PIN W2 [get_ports GTPToWestPxSO] + +##### LVDS links towards edge connectors ##### +# North (bank 35) +#set_property PACKAGE_PIN "E8" [get_ports "LVDS2V5North7PxSIO"] +#set_property PACKAGE_PIN "D8" [get_ports "LVDS2V5North7NxSIO"] +#set_property PACKAGE_PIN "D7" [get_ports "LVDS2V5North6PxSIO"] +#set_property PACKAGE_PIN "D6" [get_ports "LVDS2V5North6NxSIO"] +#set_property PACKAGE_PIN "C8" [get_ports "LVDS2V5North5PxSIO"] +#set_property PACKAGE_PIN "B8" [get_ports "LVDS2V5North5NxSIO"] +#set_property PACKAGE_PIN "B7" [get_ports "LVDS2V5North4PxSIO"] +#set_property PACKAGE_PIN "B6" [get_ports "LVDS2V5North4NxSIO"] +#set_property PACKAGE_PIN "A7" [get_ports "LVDS2V5North3PxSIO"] +#set_property PACKAGE_PIN "A6" [get_ports "LVDS2V5North3NxSIO"] +#set_property PACKAGE_PIN "A5" [get_ports "LVDS2V5North2PxSIO"] +#set_property PACKAGE_PIN "A4" [get_ports "LVDS2V5North2NxSIO"] +#set_property PACKAGE_PIN "B2" [get_ports "LVDS2V5North1PxSIO"] +#set_property PACKAGE_PIN "B1" [get_ports "LVDS2V5North1NxSIO"] +#set_property PACKAGE_PIN "A2" [get_ports "LVDS2V5North0PxSIO"] +#set_property PACKAGE_PIN "A1" [get_ports "LVDS2V5North0NxSIO"] +# South (bank 13) +#set_property PACKAGE_PIN "V15" [get_ports "LVDS2V5South7PxSIO"] +#set_property PACKAGE_PIN "W15" [get_ports "LVDS2V5South7NxSIO"] +#set_property PACKAGE_PIN "AB13" [get_ports "LVDS2V5South6PxSIO"] +#set_property PACKAGE_PIN "AB14" [get_ports "LVDS2V5South6NxSIO"] +#set_property PACKAGE_PIN "V13" [get_ports "LVDS2V5South5PxSIO"] +#set_property PACKAGE_PIN "V14" [get_ports "LVDS2V5South5NxSIO"] +#set_property PACKAGE_PIN "Y12" [get_ports "LVDS2V5South4PxSIO"] +#set_property PACKAGE_PIN "Y13" [get_ports "LVDS2V5South4NxSIO"] +#set_property PACKAGE_PIN "AA12" [get_ports "LVDS2V5South3PxSIO"] +#set_property PACKAGE_PIN "AB12" [get_ports "LVDS2V5South3NxSIO"] +#set_property PACKAGE_PIN "W12" [get_ports "LVDS2V5South2PxSIO"] +#set_property PACKAGE_PIN "W13" [get_ports "LVDS2V5South2NxSIO"] +#set_property PACKAGE_PIN "AA11" [get_ports "LVDS2V5South1PxSIO"] +#set_property PACKAGE_PIN "AB11" [get_ports "LVDS2V5South1NxSIO"] +#set_property PACKAGE_PIN "V11" [get_ports "LVDS2V5South0PxSIO"] +#set_property PACKAGE_PIN "W11" [get_ports "LVDS2V5South0NxSIO"] +# East (bank 13) +#set_property PACKAGE_PIN "V16" [get_ports "LVDS2V5East7PxSIO"] +#set_property PACKAGE_PIN "W16" [get_ports "LVDS2V5East7NxSIO"] +#set_property PACKAGE_PIN "W17" [get_ports "LVDS2V5East6PxSIO"] +#set_property PACKAGE_PIN "Y17" [get_ports "LVDS2V5East6NxSIO"] +#set_property PACKAGE_PIN "U13" [get_ports "LVDS2V5East5PxSIO"] +#set_property PACKAGE_PIN "U14" [get_ports "LVDS2V5East5NxSIO"] +#set_property PACKAGE_PIN "V18" [get_ports "LVDS2V5East4PxSIO"] +#set_property PACKAGE_PIN "W18" [get_ports "LVDS2V5East4NxSIO"] +#set_property PACKAGE_PIN "U11" [get_ports "LVDS2V5East3PxSIO"] +#set_property PACKAGE_PIN "U12" [get_ports "LVDS2V5East3NxSIO"] +#set_property PACKAGE_PIN "U19" [get_ports "LVDS2V5East2PxSIO"] +#set_property PACKAGE_PIN "V19" [get_ports "LVDS2V5East2NxSIO"] +#set_property PACKAGE_PIN "R17" [get_ports "LVDS2V5East1PxSIO"] +#set_property PACKAGE_PIN "T17" [get_ports "LVDS2V5East1NxSIO"] +#set_property PACKAGE_PIN "U17" [get_ports "LVDS2V5East0PxSIO"] +#set_property PACKAGE_PIN "U18" [get_ports "LVDS2V5East0NxSIO"] +# West (bank 35) +#set_property PACKAGE_PIN "H4" [get_ports "LVDS2V5West7PxSIO"] +#set_property PACKAGE_PIN "H3" [get_ports "LVDS2V5West7NxSIO"] +#set_property PACKAGE_PIN "H1" [get_ports "LVDS2V5West6PxSIO"] +#set_property PACKAGE_PIN "G1" [get_ports "LVDS2V5West6NxSIO"] +#set_property PACKAGE_PIN "G3" [get_ports "LVDS2V5West5PxSIO"] +#set_property PACKAGE_PIN "G2" [get_ports "LVDS2V5West5NxSIO"] +#set_property PACKAGE_PIN "F2" [get_ports "LVDS2V5West4PxSIO"] +#set_property PACKAGE_PIN "F1" [get_ports "LVDS2V5West4NxSIO"] +#set_property PACKAGE_PIN "G4" [get_ports "LVDS2V5West3PxSIO"] +#set_property PACKAGE_PIN "F4" [get_ports "LVDS2V5West3NxSIO"] +#set_property PACKAGE_PIN "E2" [get_ports "LVDS2V5West2PxSIO"] +#set_property PACKAGE_PIN "D2" [get_ports "LVDS2V5West2NxSIO"] +#set_property PACKAGE_PIN "E4" [get_ports "LVDS2V5West1PxSIO"] +#set_property PACKAGE_PIN "E3" [get_ports "LVDS2V5West1NxSIO"] +#set_property PACKAGE_PIN "D1" [get_ports "LVDS2V5West0PxSIO"] +#set_property PACKAGE_PIN "C1" [get_ports "LVDS2V5West0NxSIO"] + +##### LVDS links towards top-bottom connectors ##### +# Top (bank 34) +#set_property PACKAGE_PIN "J8" [get_ports "LVDS2V5Top7PxSIO"] +#set_property PACKAGE_PIN "K8" [get_ports "LVDS2V5Top7NxSIO"] +#set_property PACKAGE_PIN "K7" [get_ports "LVDS2V5Top6PxSIO"] +#set_property PACKAGE_PIN "L7" [get_ports "LVDS2V5Top6NxSIO"] +#set_property PACKAGE_PIN "N8" [get_ports "LVDS2V5Top5PxSIO"] +#set_property PACKAGE_PIN "P8" [get_ports "LVDS2V5Top5NxSIO"] +#set_property PACKAGE_PIN "M8" [get_ports "LVDS2V5Top4PxSIO"] +#set_property PACKAGE_PIN "M7" [get_ports "LVDS2V5Top4NxSIO"] +#set_property PACKAGE_PIN "L6" [get_ports "LVDS2V5Top3PxSIO"] +#set_property PACKAGE_PIN "M6" [get_ports "LVDS2V5Top3NxSIO"] +#set_property PACKAGE_PIN "J7" [get_ports "LVDS2V5Top2PxSIO"] +#set_property PACKAGE_PIN "J6" [get_ports "LVDS2V5Top2NxSIO"] +#set_property PACKAGE_PIN "J5" [get_ports "LVDS2V5Top1PxSIO"] +#set_property PACKAGE_PIN "K5" [get_ports "LVDS2V5Top1NxSIO"] +#set_property PACKAGE_PIN "J2" [get_ports "LVDS2V5Top0PxSIO"] +#set_property PACKAGE_PIN "J1" [get_ports "LVDS2V5Top0NxSIO"] +# Bottom (bank 34) +#set_property PACKAGE_PIN "N6" [get_ports "LVDS2V5Bottom7PxSIO"] +#set_property PACKAGE_PIN "N5" [get_ports "LVDS2V5Bottom7NxSIO"] +#set_property PACKAGE_PIN "P6" [get_ports "LVDS2V5Bottom6PxSIO"] +#set_property PACKAGE_PIN "P5" [get_ports "LVDS2V5Bottom6NxSIO"] +#set_property PACKAGE_PIN "R5" [get_ports "LVDS2V5Bottom5PxSIO"] +#set_property PACKAGE_PIN "R4" [get_ports "LVDS2V5Bottom5NxSIO"] +#set_property PACKAGE_PIN "R3" [get_ports "LVDS2V5Bottom4PxSIO"] +#set_property PACKAGE_PIN "R2" [get_ports "LVDS2V5Bottom4NxSIO"] +#set_property PACKAGE_PIN "P3" [get_ports "LVDS2V5Bottom3PxSIO"] +#set_property PACKAGE_PIN "P2" [get_ports "LVDS2V5Bottom3NxSIO"] +#set_property PACKAGE_PIN "N1" [get_ports "LVDS2V5Bottom2PxSIO"] +#set_property PACKAGE_PIN "P1" [get_ports "LVDS2V5Bottom2NxSIO"] +#set_property PACKAGE_PIN "N4" [get_ports "LVDS2V5Bottom1PxSIO"] +#set_property PACKAGE_PIN "N3" [get_ports "LVDS2V5Bottom1NxSIO"] +#set_property PACKAGE_PIN "M2" [get_ports "LVDS2V5Bottom0PxSIO"] +#set_property PACKAGE_PIN "M1" [get_ports "LVDS2V5Bottom0NxSIO"] + +##### Switches (banks 34) ##### +set_property PACKAGE_PIN "L4" [get_ports "SwitchesxDI[0]"] +set_property IOSTANDARD LVCMOS25 [get_ports "SwitchesxDI[0]"] +set_property PACKAGE_PIN "T1" [get_ports "SwitchesxDI[1]"] +set_property IOSTANDARD LVCMOS25 [get_ports "SwitchesxDI[1]"] + +##### RGB LEDs (banks 34 and 13) ##### +# LED1_2V5_R_o (bank 34) +set_property PACKAGE_PIN L2 [get_ports Led12V5RxSO] +set_property IOSTANDARD LVCMOS25 [get_ports Led12V5RxSO] +# LED1_2V5_G_o (bank 34) +set_property PACKAGE_PIN L1 [get_ports Led12V5GxSO] +set_property IOSTANDARD LVCMOS25 [get_ports Led12V5GxSO] +# LED1_2V5_B_o (bank 34) +set_property PACKAGE_PIN R8 [get_ports Led12V5BxSO] +set_property IOSTANDARD LVCMOS25 [get_ports Led12V5BxSO] +# LED2_2V5_R_o (bank 13) +set_property PACKAGE_PIN T16 [get_ports Led22V5RxSO] +set_property IOSTANDARD LVCMOS25 [get_ports Led22V5RxSO] +# LED2_2V5_G_o (bank 13) +set_property PACKAGE_PIN U16 [get_ports Led22V5GxSO] +set_property IOSTANDARD LVCMOS25 [get_ports Led22V5GxSO] +# LED2_2V5_B_o (bank 13) +set_property PACKAGE_PIN AA20 [get_ports Led22V5BxSO] +set_property IOSTANDARD LVCMOS25 [get_ports Led22V5BxSO] + +##### Self reset (bank 34) ##### +set_property PACKAGE_PIN H8 [get_ports SelfRstxRNO] +set_property IOSTANDARD LVCMOS25 [get_ports SelfRstxRNO] + +##### Clock dedicated pins (Multi-region) ##### +# Bank 35 +#set_property PACKAGE_PIN "D5" [get_ports "PLLClk2V5LocalPxCI"] +#set_property PACKAGE_PIN "C4" [get_ports "PLLClk2V5LocalNxCI"] +#set_property PACKAGE_PIN "B4" [get_ports "PLLClk2V5NorthPxCI"] +#set_property PACKAGE_PIN "B3" [get_ports "PLLClk2V5NorthNxCI"] +# Bank 34 +#set_property PACKAGE_PIN "T2" [get_ports "PLLClk2V5TopxCI"] +#set_property PACKAGE_PIN "L5" [get_ports "PLLClk2V5BottomxCI"] +# Bank 13 +#set_property PACKAGE_PIN "Y14" [get_ports "PLLClk2V5SouthPxCI"] +#set_property PACKAGE_PIN "Y15" [get_ports "PLLClk2V5SouthNxCI"] +#set_property PACKAGE_PIN "Y18" [get_ports "Clk2V5RecoveryPxCO"] +#set_property PACKAGE_PIN "Y19" [get_ports "Clk2V5RecoveryNxCO"] + +##### Clock dedicated pins (Single-region) ##### +# Bank 35 +#set_property PACKAGE_PIN "C6" [get_ports "Clk2V5NorthPxCI"] +#set_property PACKAGE_PIN "C5" [get_ports "Clk2V5NorthNxCI"] +#set_property PACKAGE_PIN "D3" [get_ports "Clk2V5WestPxCI"] +#set_property PACKAGE_PIN "C3" [get_ports "Clk2V5WestNxCI"] +# Bank 34 +#set_property PACKAGE_PIN "K4" [get_ports "Clk2V5TopPxCI"] +#set_property PACKAGE_PIN "K3" [get_ports "Clk2V5TopNxCI"] +#set_property PACKAGE_PIN "U2" [get_ports "Clk2V5BottomPxCI"] +#set_property PACKAGE_PIN "U1" [get_ports "Clk2V5BottomNxCI"] +# Bank 13 +#set_property PACKAGE_PIN "AA14" [get_ports "Clk2V5SouthPxCI"] +#set_property PACKAGE_PIN "AA15" [get_ports "Clk2V5SouthNxCI"] +#set_property PACKAGE_PIN "AA16" [get_ports "Clk2V5EastPxCI"] +#set_property PACKAGE_PIN "AA17" [get_ports "Clk2V5EastNxCI"] + +##### Clock outputs ##### +## Bank 35 +#set_property PACKAGE_PIN "F7" [get_ports "Clk2V5NorthPxCO"] +#set_property PACKAGE_PIN "E7" [get_ports "Clk2V5NorthNxCO"] +#set_property PACKAGE_PIN "F5" [get_ports "Clk2V5WestPxCO"] +#set_property PACKAGE_PIN "E5" [get_ports "Clk2V5WestNxCO"] +# Bank 34 +#set_property PACKAGE_PIN "P7" [get_ports "Clk2V5TopPxCO"] +#set_property PACKAGE_PIN "R7" [get_ports "Clk2V5TopNxCO"] +#set_property PACKAGE_PIN "M4" [get_ports "Clk2V5BottomPxCO"] +#set_property PACKAGE_PIN "M3" [get_ports "Clk2V5BottomNxCO"] +# Bank 13 +#set_property PACKAGE_PIN "AB16" [get_ports "Clk2V5SouthPxCO"] +#set_property PACKAGE_PIN "AB17" [get_ports "Clk2V5SouthNxCO"] +#set_property PACKAGE_PIN "AB21" [get_ports "Clk2V5EastPxCO"] +#set_property PACKAGE_PIN "AB22" [get_ports "Clk2V5EastNxCO"] + +############################################################################ +# Other constraints # +############################################################################ + +##### Operating conditions (for XPE report) ##### +# Extended grade (as for -2 speed grade) and maximum consumption estimation +set_operating_conditions -grade extended -process maximum +# 4'' by 4'' PCB, no heatsink, no air flow +set_operating_conditions -airflow 0 -heatsink none -board small diff --git a/design_files/scalp_safe_design.vhd b/design_files/scalp_safe_design.vhd new file mode 100644 index 0000000..3e7f4ba --- /dev/null +++ b/design_files/scalp_safe_design.vhd @@ -0,0 +1,438 @@ +---------------------------------------------------------------------------------- +-- _ _ +-- | |_ ___ _ __(_)__ _ +-- | ' \/ -_) '_ \ / _` | +-- |_||_\___| .__/_\__,_| +-- |_| +-- +---------------------------------------------------------------------------------- +-- +-- Company: hepia +-- Author: Joachim Schmidt <joachim.schmidt@hesge.ch> +-- +-- Module Name: scalp_user_design - arch +-- Target Device: hepia-cores.ch:scalp_node:part0:0.2 xc7z015clg485-2 +-- Tool version: 2023.2 +-- Description: scalp_user_design +-- +-- Last update: 2024-03-13 +-- +--------------------------------------------------------------------------------- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +-- use ieee.math_real.all; +use ieee.math_real."ceil"; +use ieee.math_real."log2"; +-- use ieee.std_logic_unsigned.all; +-- use ieee.std_logic_arith.all; +-- use ieee.std_logic_misc.all; + +library unisim; +use unisim.vcomponents.all; + +library axi_lib; +use axi_lib.scalp_axi_pkg.all; + +entity scalp_user_design is + + generic ( + C_USE_IBERT : boolean := false; + C_DEBUG_MODE : boolean := false; + C_GPIO_SWITCHES_SIZE : integer range 0 to 32 := 2); + + port ( + ----------------------------------------------------------------------- + -- Names defined and not described in the constraint file. + ----------------------------------------------------------------------- + -- Zynq FIXED_IO + PSClkxCIO : inout std_logic; + PSSRstxRNIO : inout std_logic; + PSPorxSNIO : inout std_logic; + -- DDR interface + DDRClkxCNIO : inout std_logic; + DDRClkxCPIO : inout std_logic; + DDRDRstxRNIO : inout std_logic; + DDRCasxSNIO : inout std_logic; + DDRCkexSIO : inout std_logic; + DDRCsxSNIO : inout std_logic; + DDROdtxSIO : inout std_logic; + DDRRasxSNIO : inout std_logic; + DDRWexSNIO : inout std_logic; + DDRBankAddrxDIO : inout std_logic_vector(2 downto 0); + DDRAddrxDIO : inout std_logic_vector(14 downto 0); + DDRVrxSNIO : inout std_logic; + DDRVrxSPIO : inout std_logic; + DDRDmxDIO : inout std_logic_vector(3 downto 0); + DDRDqxDIO : inout std_logic_vector(31 downto 0); + DDRDqsxDNIO : inout std_logic_vector(3 downto 0); + DDRDqsxDPIO : inout std_logic_vector(3 downto 0); + -- MIO Interface + MIOxDIO : inout std_logic_vector(53 downto 0); + ----------------------------------------------------------------------- + -- USB signals + UsbVbusPwrFaultxSI : in std_logic; + -- PLL interface + Pll2V5ClkuWirexCO : out std_logic; -- Clock (from SPI1_SCLK) + Pll2V5DatauWirexSO : out std_logic; -- Data (from SPI1_MOSI) + Pll2V5LEuWirexSO : out std_logic; -- Latch enable (from SPI1_SS) + Pll2V5GOExSO : out std_logic; -- Global Output Enable + Pll2V5LDxSI : in std_logic; -- Lock Detect + Pll2V5SyncxSO : out std_logic; -- Sync + Pll2V5ClkIn0LOSxSI : in std_logic; -- FPGA clock Loss of Sync + Pll2V5ClkIn1LOSxSI : in std_logic; -- External oscillator Loss of Sync + -- GTP interfaces + -- Clocks + -- GTPRefClk0PxCI : in std_logic; + -- GTPRefClk0NxCI : in std_logic; + -- GTPRefClk1PxCI : in std_logic; + -- GTPRefClk1NxCI : in std_logic; + -- North + -- GTPFromNorthPxSI : in std_logic; + -- GTPFromNorthNxSI : in std_logic; + -- GTPToNorthPxSO : out std_logic; + -- GTPToNorthNxSO : out std_logic; + -- East + -- GTPFromEastPxSI : in std_logic; + -- GTPFromEastNxSI : in std_logic; + -- GTPToEastPxSO : out std_logic; + -- GTPToEastNxSO : out std_logic; + -- South + -- GTPFromSouthPxSI : in std_logic; + -- GTPFromSouthNxSI : in std_logic; + -- GTPToSouthPxSO : out std_logic; + -- GTPToSouthNxSO : out std_logic; + -- West + -- GTPFromWestPxSI : in std_logic; + -- GTPFromWestNxSI : in std_logic; + -- GTPToWestPxSO : out std_logic; + -- GTPToWestNxSO : out std_logic; + -- LVDS links towards edge connectors + -- North + -- LVDS2V5North0PxSIO : inout std_logic; + -- LVDS2V5North0NxSIO : inout std_logic; + -- LVDS2V5North1PxSIO : inout std_logic; + -- LVDS2V5North1NxSIO : inout std_logic; + -- LVDS2V5North2PxSIO : inout std_logic; + -- LVDS2V5North2NxSIO : inout std_logic; + -- LVDS2V5North3PxSIO : inout std_logic; + -- LVDS2V5North3NxSIO : inout std_logic; + -- LVDS2V5North4PxSIO : inout std_logic; + -- LVDS2V5North4NxSIO : inout std_logic; + -- LVDS2V5North5PxSIO : inout std_logic; + -- LVDS2V5North5NxSIO : inout std_logic; + -- LVDS2V5North6PxSIO : inout std_logic; + -- LVDS2V5North6NxSIO : inout std_logic; + -- LVDS2V5North7PxSIO : inout std_logic; + -- LVDS2V5North7NxSIO : inout std_logic; + -- South + -- LVDS2V5South0PxSIO : inout std_logic; + -- LVDS2V5South0NxSIO : inout std_logic; + -- LVDS2V5South1PxSIO : inout std_logic; + -- LVDS2V5South1NxSIO : inout std_logic; + -- LVDS2V5South2PxSIO : inout std_logic; + -- LVDS2V5South2NxSIO : inout std_logic; + -- LVDS2V5South3PxSIO : inout std_logic; + -- LVDS2V5South3NxSIO : inout std_logic; + -- LVDS2V5South4PxSIO : inout std_logic; + -- LVDS2V5South4NxSIO : inout std_logic; + -- LVDS2V5South5PxSIO : inout std_logic; + -- LVDS2V5South5NxSIO : inout std_logic; + -- LVDS2V5South6PxSIO : inout std_logic; + -- LVDS2V5South6NxSIO : inout std_logic; + -- LVDS2V5South7PxSIO : inout std_logic; + -- LVDS2V5South7NxSIO : inout std_logic; + -- East + -- LVDS2V5East0PxSIO : inout std_logic; + -- LVDS2V5East0NxSIO : inout std_logic; + -- LVDS2V5East1PxSIO : inout std_logic; + -- LVDS2V5East1NxSIO : inout std_logic; + -- LVDS2V5East2PxSIO : inout std_logic; + -- LVDS2V5East2NxSIO : inout std_logic; + -- LVDS2V5East3PxSIO : inout std_logic; + -- LVDS2V5East3NxSIO : inout std_logic; + -- LVDS2V5East4PxSIO : inout std_logic; + -- LVDS2V5East4NxSIO : inout std_logic; + -- LVDS2V5East5PxSIO : inout std_logic; + -- LVDS2V5East5NxSIO : inout std_logic; + -- LVDS2V5East6PxSIO : inout std_logic; + -- LVDS2V5East6NxSIO : inout std_logic; + -- LVDS2V5East7PxSIO : inout std_logic; + -- LVDS2V5East7NxSIO : inout std_logic; + -- West + -- LVDS2V5West0PxSIO : inout std_logic; + -- LVDS2V5West0NxSIO : inout std_logic; + -- LVDS2V5West1PxSIO : inout std_logic; + -- LVDS2V5West1NxSIO : inout std_logic; + -- LVDS2V5West2PxSIO : inout std_logic; + -- LVDS2V5West2NxSIO : inout std_logic; + -- LVDS2V5West3PxSIO : inout std_logic; + -- LVDS2V5West3NxSIO : inout std_logic; + -- LVDS2V5West4PxSIO : inout std_logic; + -- LVDS2V5West4NxSIO : inout std_logic; + -- LVDS2V5West5PxSIO : inout std_logic; + -- LVDS2V5West5NxSIO : inout std_logic; + -- LVDS2V5West6PxSIO : inout std_logic; + -- LVDS2V5West6NxSIO : inout std_logic; + -- LVDS2V5West7PxSIO : inout std_logic; + -- LVDS2V5West7NxSIO : inout std_logic; + -- LVDS links towards top-bottom connectors + -- Top + -- LVDS2V5Top0PxSIO : inout std_logic; + -- LVDS2V5Top0NxSIO : inout std_logic; + -- LVDS2V5Top1PxSIO : inout std_logic; + -- LVDS2V5Top1NxSIO : inout std_logic; + -- LVDS2V5Top2PxSIO : inout std_logic; + -- LVDS2V5Top2NxSIO : inout std_logic; + -- LVDS2V5Top3PxSIO : inout std_logic; + -- LVDS2V5Top3NxSIO : inout std_logic; + -- LVDS2V5Top4PxSIO : inout std_logic; + -- LVDS2V5Top4NxSIO : inout std_logic; + -- LVDS2V5Top5PxSIO : inout std_logic; + -- LVDS2V5Top5NxSIO : inout std_logic; + -- LVDS2V5Top6PxSIO : inout std_logic; + -- LVDS2V5Top6NxSIO : inout std_logic; + -- LVDS2V5Top7PxSIO : inout std_logic; + -- LVDS2V5Top7NxSIO : inout std_logic; + -- Bottom + -- LVDS2V5Bottom0PxSIO : inout std_logic; + -- LVDS2V5Bottom0NxSIO : inout std_logic; + -- LVDS2V5Bottom1PxSIO : inout std_logic; + -- LVDS2V5Bottom1NxSIO : inout std_logic; + -- LVDS2V5Bottom2PxSIO : inout std_logic; + -- LVDS2V5Bottom2NxSIO : inout std_logic; + -- LVDS2V5Bottom3PxSIO : inout std_logic; + -- LVDS2V5Bottom3NxSIO : inout std_logic; + -- LVDS2V5Bottom4PxSIO : inout std_logic; + -- LVDS2V5Bottom4NxSIO : inout std_logic; + -- LVDS2V5Bottom5PxSIO : inout std_logic; + -- LVDS2V5Bottom5NxSIO : inout std_logic; + -- LVDS2V5Bottom6PxSIO : inout std_logic; + -- LVDS2V5Bottom6NxSIO : inout std_logic; + -- LVDS2V5Bottom7PxSIO : inout std_logic; + -- LVDS2V5Bottom7NxSIO : inout std_logic; + -- Switches + SwitchesxDI : in std_logic_vector((C_GPIO_SWITCHES_SIZE - 1) downto 0); + -- RGB LEDs + Led12V5RxSO : out std_logic; + Led12V5GxSO : out std_logic; + Led12V5BxSO : out std_logic; + Led22V5RxSO : out std_logic; + Led22V5GxSO : out std_logic; + Led22V5BxSO : out std_logic; + -- Self reset (connected to PS_SRSTB) + SelfRstxRNO : out std_logic); + -- Clocks from PLLs (connected to MRCC pins) + -- Local + -- PLLClk2V5LocalPxCI : in std_logic; + -- PLLClk2V5LocalNxCI : in std_logic; + -- -- North + -- PLLClk2V5NorthPxCI : in std_logic; + -- PLLClk2V5NorthNxCI : in std_logic; + -- -- South + -- PLLClk2V5SouthPxCI : in std_logic; + -- PLLClk2V5SouthNxCI : in std_logic; + -- -- Top + -- PLLClk2V5TopxCI : in std_logic; -- Single-ended + -- -- Bottom + -- PLLClk2V5BottomxCI : in std_logic; -- Single-ended + -- -- Clocks to/from neighbours + -- -- North + -- Clk2V5NorthPxCI : in std_logic; + -- Clk2V5NorthNxCI : in std_logic; + -- Clk2V5NorthPxCO : out std_logic; + -- Clk2V5NorthNxCO : out std_logic; + -- -- South + -- Clk2V5SouthPxCI : in std_logic; + -- Clk2V5SouthNxCI : in std_logic; + -- Clk2V5SouthPxCO : out std_logic; + -- Clk2V5SouthNxCO : out std_logic; + -- -- East + -- Clk2V5EastPxCI : in std_logic; + -- Clk2V5EastNxCI : in std_logic; + -- Clk2V5EastPxCO : out std_logic; + -- Clk2V5EastNxCO : out std_logic; + -- -- West + -- Clk2V5WestPxCI : in std_logic; + -- Clk2V5WestNxCI : in std_logic; + -- Clk2V5WestPxCO : out std_logic; + -- Clk2V5WestNxCO : out std_logic; + -- -- Top + -- Clk2V5TopPxCI : in std_logic; + -- Clk2V5TopNxCI : in std_logic; + -- Clk2V5TopPxCO : out std_logic; + -- Clk2V5TopNxCO : out std_logic; + -- -- Bottom + -- Clk2V5BottomPxCI : in std_logic; + -- Clk2V5BottomNxCI : in std_logic; + -- Clk2V5BottomPxCO : out std_logic; + -- Clk2V5BottomNxCO : out std_logic; + -- -- Recovery + -- Clk2V5RecoveryPxCO : out std_logic; + -- Clk2V5RecoveryNxCO : out std_logic); + +end scalp_user_design; + +architecture arch of scalp_user_design is + + -- Constants + constant C_REGS_DATA_SIZE : integer range 0 to 32 := 32; + constant C_REGS_ADDR_SIZE : integer := 4096; + constant C_REGS_ADDR_BIT_SIZE : integer range 0 to 32 := integer(ceil(log2(real(C_REGS_ADDR_SIZE)))); + constant C_AXI4_ARADDR_SIZE : integer range 0 to 32 := 32; + constant C_AXI4_RDATA_SIZE : integer range 0 to 32 := 32; + constant C_AXI4_RRESP_SIZE : integer range 0 to 2 := 2; + constant C_AXI4_AWADDR_SIZE : integer range 0 to 32 := 32; + constant C_AXI4_WDATA_SIZE : integer range 0 to 32 := 32; + constant C_AXI4_WSTRB_SIZE : integer range 0 to 4 := 4; + constant C_AXI4_BRESP_SIZE : integer range 0 to 2 := 2; + -- Scalp PWM + constant C_PWM_SIZE : integer := 8; + constant C_CLK_CNT_LEN : positive := 256; + + -- Components + component scalp_zynqps_wrapper is + generic ( + C_AXI4_ARADDR_SIZE : integer range 0 to 32; + C_AXI4_RDATA_SIZE : integer range 0 to 32; + C_AXI4_RRESP_SIZE : integer range 0 to 2; + C_AXI4_AWADDR_SIZE : integer range 0 to 32; + C_AXI4_WDATA_SIZE : integer range 0 to 32; + C_AXI4_WSTRB_SIZE : integer range 0 to 4; + C_AXI4_BRESP_SIZE : integer range 0 to 2); + port ( + FIXED_IO_ps_clk : inout std_logic; + FIXED_IO_ps_porb : inout std_logic; + FIXED_IO_ps_srstb : inout std_logic; + Clk125xCO : out std_logic; + Clk125RstxRO : out std_logic; + Clk125RstxRNAO : out std_logic; + DDR_addr : inout std_logic_vector (14 downto 0); + DDR_ba : inout std_logic_vector (2 downto 0); + DDR_cas_n : inout std_logic; + DDR_ck_n : inout std_logic; + DDR_ck_p : inout std_logic; + DDR_cke : inout std_logic; + DDR_cs_n : inout std_logic; + DDR_dm : inout std_logic_vector (3 downto 0); + DDR_dq : inout std_logic_vector (31 downto 0); + DDR_dqs_n : inout std_logic_vector (3 downto 0); + DDR_dqs_p : inout std_logic_vector (3 downto 0); + DDR_odt : inout std_logic; + DDR_ras_n : inout std_logic; + DDR_reset_n : inout std_logic; + DDR_we_n : inout std_logic; + FIXED_IO_ddr_vrn : inout std_logic; + FIXED_IO_ddr_vrp : inout std_logic; + Usb0VBusPwrFaultxSI : in std_logic; + Spi1MOSIxSO : out std_logic; + Spi1SSxSO : out std_logic; + Spi1SclkxCO : out std_logic; + FIXED_IO_mio : inout std_logic_vector (53 downto 0); + GPIOSwitchesxDI : in std_logic_vector((C_GPIO_SWITCHES_SIZE - 1) downto 0); + GPIOResetBtnxRNO : out std_logic; + IDAxixCO : out t_axi_clk; + IDAxixRO : out t_axi_reset; + IDAxixDO : out t_axi_m2s; + IDAxixDI : in t_axi_s2m); + end component scalp_zynqps_wrapper; + + -- Signals + -- Clocks + -- Processing system clock + signal Clk125xC : std_logic := '0'; + -- Resets + -- Processing system reset + signal Clk125RstxR : std_logic := '0'; + signal Clk125RstxRNA : std_logic := '1'; + -- Firmware ID + signal IDAxixC : t_axi_clk := C_AXI_IDLE_CLK; + signal IDAxixR : t_axi_reset := C_AXI_IDLE_RESET; + signal IDAxiM2SxD : t_axi_m2s := C_AXI_IDLE_M2S; + signal IDAxiS2MxD : t_axi_s2m := C_AXI_IDLE_S2M; + -- GPIO Switches + signal GPIOSwitchesxD : std_logic_vector((C_GPIO_SWITCHES_SIZE - 1) downto 0) := (others => '0'); + + -- Attributes + attribute mark_debug : string; + attribute keep : string; + -- Clocks + attribute keep of Clk125xC : signal is "true"; + -- Firmware ID + -- attribute mark_debug of IDAxiM2SxD : signal is "true"; + -- attribute keep of IDAxiM2SxD : signal is "true"; + -- attribute mark_debug of IDAxiS2MxD : signal is "true"; + -- attribute keep of IDAxiS2MxD : signal is "true"; + -- GPIO Switches + -- attribute mark_debug of GPIOSwitchesxD : signal is "true"; + -- attribute keep of GPIOSwitchesxD : signal is "true"; + +begin + + PSxB : block is + begin -- block PSxB + + ZynqxI : entity work.scalp_zynqps_wrapper + generic map ( + C_AXI4_ARADDR_SIZE => C_AXI4_ARADDR_SIZE, + C_AXI4_RDATA_SIZE => C_AXI4_RDATA_SIZE, + C_AXI4_RRESP_SIZE => C_AXI4_RRESP_SIZE, + C_AXI4_AWADDR_SIZE => C_AXI4_AWADDR_SIZE, + C_AXI4_WDATA_SIZE => C_AXI4_WDATA_SIZE, + C_AXI4_WSTRB_SIZE => C_AXI4_WSTRB_SIZE, + C_AXI4_BRESP_SIZE => C_AXI4_BRESP_SIZE) + port map ( + FIXED_IO_ps_clk => PSClkxCIO, + FIXED_IO_ps_porb => PSPorxSNIO, + FIXED_IO_ps_srstb => PSSRstxRNIO, + -- Clk and rst (125Mhz) + Clk125xCO => Clk125xC, + Clk125RstxRO => Clk125RstxR, + Clk125RstxRNAO => Clk125RstxRNA, + -- DDR interface + DDR_addr => DDRAddrxDIO, + DDR_ba => DDRBankAddrxDIO, + DDR_cas_n => DDRCasxSNIO, + DDR_ck_n => DDRClkxCNIO, + DDR_ck_p => DDRClkxCPIO, + DDR_cke => DDRCkexSIO, + DDR_cs_n => DDRCsxSNIO, + DDR_dm => DDRDmxDIO, + DDR_dq => DDRDqxDIO, + DDR_dqs_n => DDRDqsxDNIO, + DDR_dqs_p => DDRDqsxDPIO, + DDR_odt => DDROdtxSIO, + DDR_ras_n => DDRRasxSNIO, + DDR_reset_n => DDRDRstxRNIO, + DDR_we_n => DDRWexSNIO, + FIXED_IO_ddr_vrn => DDRVrxSNIO, + FIXED_IO_ddr_vrp => DDRVrxSPIO, + -- USB interface + Usb0VBusPwrFaultxSI => UsbVbusPwrFaultxSI, + -- SPI1 used as uWire master. Clk, Data and LE signals are outputs + -- SPI1 inputs are unused. Clk is connected to SCLK, Data to MOSI and LE to SS + Spi1MOSIxSO => Pll2V5DatauWirexSO, + Spi1SSxSO => Pll2V5LEuWirexSO, + Spi1SclkxCO => Pll2V5ClkuWirexCO, + -- MIO + FIXED_IO_mio => MIOxDIO, + -- GPIOs + GPIOSwitchesxDI => GPIOSwitchesxD, + GPIOResetBtnxRNO => SelfRstxRNO, + -- Firmware ID + IDAxixCO => IDAxixC, + IDAxixRO => IDAxixR, + IDAxixDO => IDAxiM2SxD, + IDAxixDI => IDAxiS2MxD); + + end block PSxB; + + PLxB : block is + begin -- block PLxB + + + + end block PLxB; + +end arch; diff --git a/design_files/scalp_zynqps.vhd b/design_files/scalp_zynqps.vhd new file mode 100644 index 0000000..98ee6db --- /dev/null +++ b/design_files/scalp_zynqps.vhd @@ -0,0 +1,177 @@ +---------------------------------------------------------------------------------- +-- _ _ +-- | |_ ___ _ __(_)__ _ +-- | ' \/ -_) '_ \ / _` | +-- |_||_\___| .__/_\__,_| +-- |_| +-- +---------------------------------------------------------------------------------- +-- +-- Company: hepia +-- Author: Joachim Schmidt <joachim.schmidt@hesge.ch> +-- +-- Module Name: scalp_zynqps_wrapper - arch +-- Target Device: hepia-cores.ch:scalp_node:part0:0.2 xc7z015clg485-2 +-- Tool version: 2023.2 +-- Description: scalp_zynqps_wrapper +-- +-- Last update: 2024-03-13 +-- +--------------------------------------------------------------------------------- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +-- use ieee.std_logic_unsigned.all; +-- use ieee.std_logic_arith.all; +-- use ieee.std_logic_misc.all; + +library unisim; +use unisim.vcomponents.all; + +library axi_lib; +use axi_lib.scalp_axi_pkg.all; + +entity scalp_zynqps_wrapper is + + generic ( + C_AXI4_ARADDR_SIZE : integer range 0 to 32 := 32; + C_AXI4_RDATA_SIZE : integer range 0 to 32 := 32; + C_AXI4_RRESP_SIZE : integer range 0 to 2 := 2; + C_AXI4_AWADDR_SIZE : integer range 0 to 32 := 32; + C_AXI4_WDATA_SIZE : integer range 0 to 32 := 32; + C_AXI4_WSTRB_SIZE : integer range 0 to 4 := 4; + C_AXI4_BRESP_SIZE : integer range 0 to 2 := 2; + C_GPIO_SWITCHES_SIZE : integer range 0 to 32 := 2); + + port ( + -- Processor interface + FIXED_IO_ps_clk : inout std_logic; + FIXED_IO_ps_porb : inout std_logic; + FIXED_IO_ps_srstb : inout std_logic; + Clk125xCO : out std_logic; + Clk125RstxRO : out std_logic; + Clk125RstxRNAO : out std_logic; + -- DDR interface + DDR_addr : inout std_logic_vector (14 downto 0); + DDR_ba : inout std_logic_vector (2 downto 0); + DDR_cas_n : inout std_logic; + DDR_ck_n : inout std_logic; + DDR_ck_p : inout std_logic; + DDR_cke : inout std_logic; + DDR_cs_n : inout std_logic; + DDR_dm : inout std_logic_vector (3 downto 0); + DDR_dq : inout std_logic_vector (31 downto 0); + DDR_dqs_n : inout std_logic_vector (3 downto 0); + DDR_dqs_p : inout std_logic_vector (3 downto 0); + DDR_odt : inout std_logic; + DDR_ras_n : inout std_logic; + DDR_reset_n : inout std_logic; + DDR_we_n : inout std_logic; + FIXED_IO_ddr_vrn : inout std_logic; + FIXED_IO_ddr_vrp : inout std_logic; + -- USB interface + Usb0VBusPwrFaultxSI : in std_logic; + -- SPI1 used as uWire master. Clk, Data and LE signals are outputs + -- SPI1 inputs are unused. Clk is connected to SCLK, Data to MOSI and LE to SS + Spi1MOSIxSO : out std_logic; + Spi1SSxSO : out std_logic; + Spi1SclkxCO : out std_logic; + -- MIO + FIXED_IO_mio : inout std_logic_vector (53 downto 0); + -- GPIOs + GPIOSwitchesxDI : in std_logic_vector((C_GPIO_SWITCHES_SIZE - 1) downto 0); + GPIOResetBtnxRNO : out std_logic; + -- Scalp ID AXI interface + (clk and rst) + IDAxixCO : out t_axi_clk; + IDAxixRO : out t_axi_reset; + IDAxixDO : out t_axi_m2s; + IDAxixDI : in t_axi_s2m); + +end scalp_zynqps_wrapper; + +architecture arch of scalp_zynqps_wrapper is + + -- Signals + signal IDAxixC : t_axi_clk := C_AXI_IDLE_CLK; + signal IDAxixR : t_axi_reset := C_AXI_IDLE_RESET; + signal IDAxiOutxD : t_axi_m2s := C_AXI_IDLE_M2S; + signal IDAxiInxD : t_axi_s2m := C_AXI_IDLE_S2M; + signal GPIOResetBtnxR : std_logic := '0'; + +begin + + PlatformxB : block is + begin -- block PlatformxB + + IDAxiClkxAS : IDAxixCO <= IDAxixC; + IDAxiRstxAS : IDAxixRO <= IDAxixR; + IDAxiOutxAS : IDAxixDO <= IDAxiOutxD; + IDAxiInxAS : IDAxiInxD <= IDAxixDI; + GPIOResetBtnxAS : GPIOResetBtnxRNO <= not GPIOResetBtnxR; + + ScalpZynqPSxI : entity work.scalp_zynqps + port map ( + --------------------------------------------------------------- + -- DDR3 Interface + --------------------------------------------------------------- + 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, + Clk125xCO => Clk125xCO, + Clk125RstxRO(0) => Clk125RstxRO, + Clk125RstxRNAO(0) => Clk125RstxRNAO, + Spi1MOSIxSO => Spi1MOSIxSO, + Spi1SSxSO => Spi1SSxSO, + Spi1SclkxCO => Spi1SclkxCO, + Usb0VBusPwrFaultxSI => Usb0VBusPwrFaultxSI, + --------------------------------------------------------------- + -- GPIOs + --------------------------------------------------------------- + GPIOSwitchesxDI_tri_i((C_GPIO_SWITCHES_SIZE - 1) downto 0) => GPIOSwitchesxDI((C_GPIO_SWITCHES_SIZE - 1) downto 0), + GPIOResetBtnxDO_tri_o(0) => GPIOResetBtnxR, + --------------------------------------------------------------- + -- ID Axi Interface + --------------------------------------------------------------- + SAxiMstClkxCO => IDAxixC.ClkxC, + SAxiMstRstxRANO => IDAxixR.ResetxRAN, + aximm_mst_if_araddr => IDAxiOutxD.ARAddrxD, + aximm_mst_if_arready => IDAxiInxD.RdxD.ARReadyxS, + aximm_mst_if_arvalid => IDAxiOutxD.ARValidxS, + aximm_mst_if_awaddr => IDAxiOutxD.AWAddrxD, + aximm_mst_if_awready => IDAxiInxD.WrxD.AWReadyxS, + aximm_mst_if_awvalid => IDAxiOutxD.AWValidxS, + aximm_mst_if_bready => IDAxiOutxD.BReadyxS, + aximm_mst_if_bresp => IDAxiInxD.WrxD.BRespxD, + aximm_mst_if_bvalid => IDAxiInxD.WrxD.BValidxS, + aximm_mst_if_rdata => IDAxiInxD.RdxD.RDataxD, + aximm_mst_if_rready => IDAxiOutxD.RReadyxS, + aximm_mst_if_rresp => IDAxiInxD.RdxD.RRespxD, + aximm_mst_if_rvalid => IDAxiInxD.RdxD.RValidxS, + aximm_mst_if_wdata => IDAxiOutxD.WDataxD, + aximm_mst_if_wready => IDAxiInxD.WrxD.WReadyxS, + aximm_mst_if_wstrb => IDAxiOutxD.WStrbxD, + aximm_mst_if_wvalid => IDAxiOutxD.WValidxS); + + end block PlatformxB; + +end arch; diff --git a/design_files/scalp_zynqps_ipi.tcl b/design_files/scalp_zynqps_ipi.tcl new file mode 100644 index 0000000..0fff7ce --- /dev/null +++ b/design_files/scalp_zynqps_ipi.tcl @@ -0,0 +1,985 @@ + +################################################################ +# This is a generated script based on design: scalp_zynqps +# +# Though there are limitations about the generated script, +# the main purpose of this utility is to make learning +# IP Integrator Tcl commands easier. +################################################################ + +namespace eval _tcl { +proc get_script_folder {} { + set script_path [file normalize [info script]] + set script_folder [file dirname $script_path] + return $script_folder +} +} +variable script_folder +set script_folder [_tcl::get_script_folder] + +################################################################ +# Check if script is running in correct Vivado version. +################################################################ +set scripts_vivado_version 2023.2 +set current_vivado_version [version -short] + +if { [string first $scripts_vivado_version $current_vivado_version] == -1 } { + puts "" + if { [string compare $scripts_vivado_version $current_vivado_version] > 0 } { + catch {common::send_gid_msg -ssname BD::TCL -id 2042 -severity "ERROR" " This script was generated using Vivado <$scripts_vivado_version> and is being run in <$current_vivado_version> of Vivado. Sourcing the script failed since it was created with a future version of Vivado."} + + } else { + catch {common::send_gid_msg -ssname BD::TCL -id 2041 -severity "ERROR" "This script was generated using Vivado <$scripts_vivado_version> and is being run in <$current_vivado_version> of Vivado. Please run the script in Vivado <$scripts_vivado_version> then open the design in Vivado <$current_vivado_version>. Upgrade the design by running \"Tools => Report => Report IP Status...\", then run write_bd_tcl to create an updated script."} + + } + + return 1 +} + +################################################################ +# START +################################################################ + +# To test this script, run the following commands from Vivado Tcl console: +# source scalp_zynqps_script.tcl + +# If there is no project opened, this script will create a +# project, but make sure you do not have an existing project +# <./myproj/project_1.xpr> in the current working folder. + +set list_projs [get_projects -quiet] +if { $list_projs eq "" } { + create_project project_1 myproj -part xc7z015clg485-2 + set_property BOARD_PART hepia-cores.ch:scalp_node:part0:0.2 [current_project] +} + + +# CHANGE DESIGN NAME HERE +variable design_name +set design_name scalp_zynqps + +# This script was generated for a remote BD. To create a non-remote design, +# change the variable <run_remote_bd_flow> to <0>. + +set run_remote_bd_flow 1 +if { $run_remote_bd_flow == 1 } { + # Set the reference directory for source file relative paths (by default + # the value is script directory path) + set origin_dir . + + # Use origin directory path location variable, if specified in the tcl shell + if { [info exists ::origin_dir_loc] } { + set origin_dir $::origin_dir_loc + } + + set str_bd_folder [file normalize ${origin_dir}] + set str_bd_filepath ${str_bd_folder}/${design_name}/${design_name}.bd + + # Check if remote design exists on disk + if { [file exists $str_bd_filepath ] == 1 } { + catch {common::send_gid_msg -ssname BD::TCL -id 2030 -severity "ERROR" "The remote BD file path <$str_bd_filepath> already exists!"} + common::send_gid_msg -ssname BD::TCL -id 2031 -severity "INFO" "To create a non-remote BD, change the variable <run_remote_bd_flow> to <0>." + common::send_gid_msg -ssname BD::TCL -id 2032 -severity "INFO" "Also make sure there is no design <$design_name> existing in your current project." + + return 1 + } + + # Check if design exists in memory + set list_existing_designs [get_bd_designs -quiet $design_name] + if { $list_existing_designs ne "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2033 -severity "ERROR" "The design <$design_name> already exists in this project! Will not create the remote BD <$design_name> at the folder <$str_bd_folder>."} + + common::send_gid_msg -ssname BD::TCL -id 2034 -severity "INFO" "To create a non-remote BD, change the variable <run_remote_bd_flow> to <0> or please set a different value to variable <design_name>." + + return 1 + } + + # Check if design exists on disk within project + set list_existing_designs [get_files -quiet */${design_name}.bd] + if { $list_existing_designs ne "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2035 -severity "ERROR" "The design <$design_name> already exists in this project at location: + $list_existing_designs"} + catch {common::send_gid_msg -ssname BD::TCL -id 2036 -severity "ERROR" "Will not create the remote BD <$design_name> at the folder <$str_bd_folder>."} + + common::send_gid_msg -ssname BD::TCL -id 2037 -severity "INFO" "To create a non-remote BD, change the variable <run_remote_bd_flow> to <0> or please set a different value to variable <design_name>." + + return 1 + } + + # Now can create the remote BD + # NOTE - usage of <-dir> will create <$str_bd_folder/$design_name/$design_name.bd> + create_bd_design -dir $str_bd_folder $design_name +} else { + + # Create regular design + if { [catch {create_bd_design $design_name} errmsg] } { + common::send_gid_msg -ssname BD::TCL -id 2038 -severity "INFO" "Please set a different value to variable <design_name>." + + return 1 + } +} + +current_bd_design $design_name + +set bCheckIPsPassed 1 +################################################################## +# CHECK IPs +################################################################## +set bCheckIPs 1 +if { $bCheckIPs == 1 } { + set list_check_ips "\ +xilinx.com:ip:xlconstant:1.1\ +xilinx.com:ip:processing_system7:5.5\ +xilinx.com:ip:proc_sys_reset:5.0\ +xilinx.com:ip:clk_wiz:6.0\ +hepia.hesge.ch:user:scalp_axi_link:1.0\ +xilinx.com:ip:axi_gpio:2.0\ +xilinx.com:ip:axi_intc:4.1\ +xilinx.com:ip:xlconcat:2.1\ +xilinx.com:ip:system_ila:1.1\ +" + + set list_ips_missing "" + common::send_gid_msg -ssname BD::TCL -id 2011 -severity "INFO" "Checking if the following IPs exist in the project's IP catalog: $list_check_ips ." + + foreach ip_vlnv $list_check_ips { + set ip_obj [get_ipdefs -all $ip_vlnv] + if { $ip_obj eq "" } { + lappend list_ips_missing $ip_vlnv + } + } + + if { $list_ips_missing ne "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2012 -severity "ERROR" "The following IPs are not found in the IP Catalog:\n $list_ips_missing\n\nResolution: Please add the repository containing the IP(s) to the project." } + set bCheckIPsPassed 0 + } + +} + +if { $bCheckIPsPassed != 1 } { + common::send_gid_msg -ssname BD::TCL -id 2023 -severity "WARNING" "Will not continue with creation of design due to the error(s) above." + return 3 +} + +################################################################## +# DESIGN PROCs +################################################################## + + + +# Procedure to create entire design; Provide argument to make +# procedure reusable. If parentCell is "", will use root. +proc create_root_design { parentCell } { + + variable script_folder + variable design_name + + if { $parentCell eq "" } { + set parentCell [get_bd_cells /] + } + + # Get object for parentCell + set parentObj [get_bd_cells $parentCell] + if { $parentObj == "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2090 -severity "ERROR" "Unable to find parent cell <$parentCell>!"} + return + } + + # Make sure parentObj is hier blk + set parentType [get_property TYPE $parentObj] + if { $parentType ne "hier" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2091 -severity "ERROR" "Parent <$parentObj> has TYPE = <$parentType>. Expected to be <hier>."} + return + } + + # Save current instance; Restore later + set oldCurInst [current_bd_instance .] + + # Set parent object as current + current_bd_instance $parentObj + + + # Create interface ports + set DDR [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:ddrx_rtl:1.0 DDR ] + + set FIXED_IO [ create_bd_intf_port -mode Master -vlnv xilinx.com:display_processing_system7:fixedio_rtl:1.0 FIXED_IO ] + + set aximm_mst_if [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:aximm_rtl:1.0 aximm_mst_if ] + set_property -dict [ list \ + CONFIG.ADDR_WIDTH {32} \ + CONFIG.DATA_WIDTH {32} \ + CONFIG.HAS_BURST {0} \ + CONFIG.HAS_CACHE {0} \ + CONFIG.HAS_LOCK {0} \ + CONFIG.HAS_PROT {0} \ + CONFIG.HAS_QOS {0} \ + CONFIG.HAS_REGION {0} \ + CONFIG.PROTOCOL {AXI4LITE} \ + ] $aximm_mst_if + + set GPIOSwitchesxDI [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:gpio_rtl:1.0 GPIOSwitchesxDI ] + + set GPIOResetBtnxDO [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:gpio_rtl:1.0 GPIOResetBtnxDO ] + + + # Create ports + set Clk125xCO [ create_bd_port -dir O -type clk Clk125xCO ] + set_property -dict [ list \ + CONFIG.FREQ_HZ {125000000} \ + ] $Clk125xCO + set Spi1MOSIxSO [ create_bd_port -dir O Spi1MOSIxSO ] + set Spi1SSxSO [ create_bd_port -dir O Spi1SSxSO ] + set Spi1SclkxCO [ create_bd_port -dir O Spi1SclkxCO ] + set Usb0VBusPwrFaultxSI [ create_bd_port -dir I Usb0VBusPwrFaultxSI ] + set Clk125RstxRNAO [ create_bd_port -dir O -from 0 -to 0 -type rst Clk125RstxRNAO ] + set Clk125RstxRO [ create_bd_port -dir O -from 0 -to 0 -type rst Clk125RstxRO ] + set SAxiMstClkxCO [ create_bd_port -dir O -type clk SAxiMstClkxCO ] + set_property -dict [ list \ + CONFIG.ASSOCIATED_BUSIF {aximm_mst_if} \ + ] $SAxiMstClkxCO + set_property CONFIG.ASSOCIATED_BUSIF.VALUE_SRC DEFAULT $SAxiMstClkxCO + + set SAxiMstRstxRANO [ create_bd_port -dir O -type rst SAxiMstRstxRANO ] + + # Create instance: gnd_constant, and set properties + set gnd_constant [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconstant:1.1 gnd_constant ] + set_property CONFIG.CONST_VAL {0} $gnd_constant + + + # Create instance: processing_system7_0, and set properties + set processing_system7_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:processing_system7:5.5 processing_system7_0 ] + set_property -dict [list \ + CONFIG.PCW_ACT_APU_PERIPHERAL_FREQMHZ {750.000000} \ + CONFIG.PCW_ACT_CAN0_PERIPHERAL_FREQMHZ {23.8095} \ + CONFIG.PCW_ACT_CAN1_PERIPHERAL_FREQMHZ {23.8095} \ + CONFIG.PCW_ACT_CAN_PERIPHERAL_FREQMHZ {97.222221} \ + CONFIG.PCW_ACT_DCI_PERIPHERAL_FREQMHZ {10.204082} \ + CONFIG.PCW_ACT_ENET0_PERIPHERAL_FREQMHZ {125.000000} \ + CONFIG.PCW_ACT_ENET1_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_FPGA0_PERIPHERAL_FREQMHZ {125.000000} \ + CONFIG.PCW_ACT_FPGA1_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_FPGA2_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_FPGA3_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_I2C_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_ACT_PCAP_PERIPHERAL_FREQMHZ {194.444443} \ + CONFIG.PCW_ACT_QSPI_PERIPHERAL_FREQMHZ {134.615387} \ + CONFIG.PCW_ACT_SDIO_PERIPHERAL_FREQMHZ {97.222221} \ + CONFIG.PCW_ACT_SMC_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_SPI_PERIPHERAL_FREQMHZ {159.090912} \ + CONFIG.PCW_ACT_TPIU_PERIPHERAL_FREQMHZ {200.000000} \ + CONFIG.PCW_ACT_TTC0_CLK0_PERIPHERAL_FREQMHZ {125.000000} \ + CONFIG.PCW_ACT_TTC0_CLK1_PERIPHERAL_FREQMHZ {125.000000} \ + CONFIG.PCW_ACT_TTC0_CLK2_PERIPHERAL_FREQMHZ {125.000000} \ + CONFIG.PCW_ACT_TTC1_CLK0_PERIPHERAL_FREQMHZ {125.000000} \ + CONFIG.PCW_ACT_TTC1_CLK1_PERIPHERAL_FREQMHZ {125.000000} \ + CONFIG.PCW_ACT_TTC1_CLK2_PERIPHERAL_FREQMHZ {125.000000} \ + CONFIG.PCW_ACT_TTC_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_ACT_UART_PERIPHERAL_FREQMHZ {97.222221} \ + CONFIG.PCW_ACT_USB0_PERIPHERAL_FREQMHZ {60} \ + CONFIG.PCW_ACT_USB1_PERIPHERAL_FREQMHZ {60} \ + CONFIG.PCW_ACT_WDT_PERIPHERAL_FREQMHZ {125.000000} \ + CONFIG.PCW_APU_CLK_RATIO_ENABLE {6:2:1} \ + CONFIG.PCW_APU_PERIPHERAL_FREQMHZ {750} \ + CONFIG.PCW_CAN0_PERIPHERAL_CLKSRC {External} \ + CONFIG.PCW_CAN0_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_CAN1_BASEADDR {0xE0009000} \ + CONFIG.PCW_CAN1_CAN1_IO {MIO 52 .. 53} \ + CONFIG.PCW_CAN1_GRP_CLK_ENABLE {0} \ + CONFIG.PCW_CAN1_HIGHADDR {0xE0009FFF} \ + CONFIG.PCW_CAN1_PERIPHERAL_CLKSRC {External} \ + CONFIG.PCW_CAN1_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_CAN_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_CAN_PERIPHERAL_FREQMHZ {100} \ + CONFIG.PCW_CAN_PERIPHERAL_VALID {1} \ + CONFIG.PCW_CLK0_FREQ {125000000} \ + CONFIG.PCW_CLK1_FREQ {10000000} \ + CONFIG.PCW_CLK2_FREQ {10000000} \ + CONFIG.PCW_CLK3_FREQ {10000000} \ + CONFIG.PCW_CORE0_FIQ_INTR {0} \ + CONFIG.PCW_CORE0_IRQ_INTR {0} \ + CONFIG.PCW_CORE1_FIQ_INTR {0} \ + CONFIG.PCW_CORE1_IRQ_INTR {0} \ + CONFIG.PCW_CPU_CPU_6X4X_MAX_RANGE {767} \ + CONFIG.PCW_CPU_PERIPHERAL_CLKSRC {ARM PLL} \ + CONFIG.PCW_CRYSTAL_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_DCI_PERIPHERAL_CLKSRC {DDR PLL} \ + CONFIG.PCW_DCI_PERIPHERAL_FREQMHZ {10.159} \ + CONFIG.PCW_DDR_PERIPHERAL_CLKSRC {DDR PLL} \ + CONFIG.PCW_DDR_RAM_BASEADDR {0x00100000} \ + CONFIG.PCW_DDR_RAM_HIGHADDR {0x0FFFFFFF} \ + CONFIG.PCW_DM_WIDTH {4} \ + CONFIG.PCW_DQS_WIDTH {4} \ + CONFIG.PCW_DQ_WIDTH {32} \ + CONFIG.PCW_ENET0_BASEADDR {0xE000B000} \ + CONFIG.PCW_ENET0_ENET0_IO {MIO 16 .. 27} \ + CONFIG.PCW_ENET0_GRP_MDIO_ENABLE {0} \ + CONFIG.PCW_ENET0_HIGHADDR {0xE000BFFF} \ + CONFIG.PCW_ENET0_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_ENET0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_ENET0_PERIPHERAL_FREQMHZ {1000 Mbps} \ + CONFIG.PCW_ENET0_RESET_ENABLE {0} \ + CONFIG.PCW_ENET1_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_ENET1_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_ENET_RESET_ENABLE {1} \ + CONFIG.PCW_ENET_RESET_POLARITY {Active Low} \ + CONFIG.PCW_ENET_RESET_SELECT {Share reset pin} \ + CONFIG.PCW_EN_4K_TIMER {0} \ + CONFIG.PCW_EN_CAN0 {0} \ + CONFIG.PCW_EN_CAN1 {1} \ + CONFIG.PCW_EN_CLK0_PORT {1} \ + CONFIG.PCW_EN_CLK1_PORT {0} \ + CONFIG.PCW_EN_CLK2_PORT {0} \ + CONFIG.PCW_EN_CLK3_PORT {0} \ + CONFIG.PCW_EN_CLKTRIG0_PORT {0} \ + CONFIG.PCW_EN_CLKTRIG1_PORT {0} \ + CONFIG.PCW_EN_CLKTRIG2_PORT {0} \ + CONFIG.PCW_EN_CLKTRIG3_PORT {0} \ + CONFIG.PCW_EN_DDR {1} \ + CONFIG.PCW_EN_EMIO_CAN0 {0} \ + CONFIG.PCW_EN_EMIO_CAN1 {0} \ + CONFIG.PCW_EN_EMIO_CD_SDIO0 {0} \ + CONFIG.PCW_EN_EMIO_CD_SDIO1 {0} \ + CONFIG.PCW_EN_EMIO_ENET0 {0} \ + CONFIG.PCW_EN_EMIO_ENET1 {0} \ + CONFIG.PCW_EN_EMIO_GPIO {0} \ + CONFIG.PCW_EN_EMIO_I2C0 {0} \ + CONFIG.PCW_EN_EMIO_I2C1 {0} \ + CONFIG.PCW_EN_EMIO_MODEM_UART0 {0} \ + CONFIG.PCW_EN_EMIO_MODEM_UART1 {0} \ + CONFIG.PCW_EN_EMIO_PJTAG {0} \ + CONFIG.PCW_EN_EMIO_SDIO0 {0} \ + CONFIG.PCW_EN_EMIO_SDIO1 {0} \ + CONFIG.PCW_EN_EMIO_SPI0 {0} \ + CONFIG.PCW_EN_EMIO_SPI1 {1} \ + CONFIG.PCW_EN_EMIO_SRAM_INT {0} \ + CONFIG.PCW_EN_EMIO_TRACE {0} \ + CONFIG.PCW_EN_EMIO_TTC0 {0} \ + CONFIG.PCW_EN_EMIO_TTC1 {0} \ + CONFIG.PCW_EN_EMIO_UART0 {0} \ + CONFIG.PCW_EN_EMIO_UART1 {0} \ + CONFIG.PCW_EN_EMIO_WDT {0} \ + CONFIG.PCW_EN_EMIO_WP_SDIO0 {0} \ + CONFIG.PCW_EN_EMIO_WP_SDIO1 {0} \ + CONFIG.PCW_EN_ENET0 {1} \ + CONFIG.PCW_EN_ENET1 {0} \ + CONFIG.PCW_EN_GPIO {1} \ + CONFIG.PCW_EN_I2C0 {1} \ + CONFIG.PCW_EN_I2C1 {0} \ + CONFIG.PCW_EN_MODEM_UART0 {0} \ + CONFIG.PCW_EN_MODEM_UART1 {0} \ + CONFIG.PCW_EN_PJTAG {0} \ + CONFIG.PCW_EN_PTP_ENET0 {0} \ + CONFIG.PCW_EN_PTP_ENET1 {0} \ + CONFIG.PCW_EN_QSPI {1} \ + CONFIG.PCW_EN_RST0_PORT {1} \ + CONFIG.PCW_EN_RST1_PORT {0} \ + CONFIG.PCW_EN_RST2_PORT {0} \ + CONFIG.PCW_EN_RST3_PORT {0} \ + CONFIG.PCW_EN_SDIO0 {0} \ + CONFIG.PCW_EN_SDIO1 {1} \ + CONFIG.PCW_EN_SMC {0} \ + CONFIG.PCW_EN_SPI0 {1} \ + CONFIG.PCW_EN_SPI1 {1} \ + CONFIG.PCW_EN_TRACE {0} \ + CONFIG.PCW_EN_TTC0 {0} \ + CONFIG.PCW_EN_TTC1 {0} \ + CONFIG.PCW_EN_UART0 {1} \ + CONFIG.PCW_EN_UART1 {1} \ + CONFIG.PCW_EN_USB0 {1} \ + CONFIG.PCW_EN_USB1 {0} \ + CONFIG.PCW_EN_WDT {0} \ + CONFIG.PCW_FCLK0_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_FCLK1_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_FCLK2_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_FCLK3_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_FCLK_CLK0_BUF {TRUE} \ + CONFIG.PCW_FPGA0_PERIPHERAL_FREQMHZ {125} \ + CONFIG.PCW_FPGA1_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_FPGA2_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_FPGA3_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_FPGA_FCLK0_ENABLE {1} \ + CONFIG.PCW_GP0_EN_MODIFIABLE_TXN {1} \ + CONFIG.PCW_GP0_NUM_READ_THREADS {4} \ + CONFIG.PCW_GP0_NUM_WRITE_THREADS {4} \ + CONFIG.PCW_GP1_EN_MODIFIABLE_TXN {1} \ + CONFIG.PCW_GP1_NUM_READ_THREADS {4} \ + CONFIG.PCW_GP1_NUM_WRITE_THREADS {4} \ + CONFIG.PCW_GPIO_BASEADDR {0xE000A000} \ + CONFIG.PCW_GPIO_EMIO_GPIO_ENABLE {0} \ + CONFIG.PCW_GPIO_HIGHADDR {0xE000AFFF} \ + CONFIG.PCW_GPIO_MIO_GPIO_ENABLE {1} \ + CONFIG.PCW_GPIO_MIO_GPIO_IO {MIO} \ + CONFIG.PCW_GPIO_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_I2C0_BASEADDR {0xE0004000} \ + CONFIG.PCW_I2C0_GRP_INT_ENABLE {0} \ + CONFIG.PCW_I2C0_HIGHADDR {0xE0004FFF} \ + CONFIG.PCW_I2C0_I2C0_IO {MIO 50 .. 51} \ + CONFIG.PCW_I2C0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_I2C0_RESET_ENABLE {0} \ + CONFIG.PCW_I2C1_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_I2C_PERIPHERAL_FREQMHZ {125.000000} \ + CONFIG.PCW_I2C_RESET_ENABLE {1} \ + CONFIG.PCW_I2C_RESET_POLARITY {Active Low} \ + CONFIG.PCW_I2C_RESET_SELECT {Share reset pin} \ + CONFIG.PCW_IMPORT_BOARD_PRESET {None} \ + CONFIG.PCW_INCLUDE_ACP_TRANS_CHECK {0} \ + CONFIG.PCW_IRQ_F2P_INTR {1} \ + CONFIG.PCW_IRQ_F2P_MODE {DIRECT} \ + CONFIG.PCW_MIO_0_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_0_PULLUP {enabled} \ + CONFIG.PCW_MIO_0_SLEW {slow} \ + CONFIG.PCW_MIO_10_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_10_PULLUP {enabled} \ + CONFIG.PCW_MIO_10_SLEW {slow} \ + CONFIG.PCW_MIO_11_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_11_PULLUP {enabled} \ + CONFIG.PCW_MIO_11_SLEW {slow} \ + CONFIG.PCW_MIO_12_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_12_PULLUP {enabled} \ + CONFIG.PCW_MIO_12_SLEW {slow} \ + CONFIG.PCW_MIO_13_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_13_PULLUP {enabled} \ + CONFIG.PCW_MIO_13_SLEW {slow} \ + CONFIG.PCW_MIO_14_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_14_PULLUP {enabled} \ + CONFIG.PCW_MIO_14_SLEW {slow} \ + CONFIG.PCW_MIO_15_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_15_PULLUP {enabled} \ + CONFIG.PCW_MIO_15_SLEW {slow} \ + CONFIG.PCW_MIO_16_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_16_PULLUP {enabled} \ + CONFIG.PCW_MIO_16_SLEW {slow} \ + CONFIG.PCW_MIO_17_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_17_PULLUP {enabled} \ + CONFIG.PCW_MIO_17_SLEW {slow} \ + CONFIG.PCW_MIO_18_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_18_PULLUP {enabled} \ + CONFIG.PCW_MIO_18_SLEW {slow} \ + CONFIG.PCW_MIO_19_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_19_PULLUP {enabled} \ + CONFIG.PCW_MIO_19_SLEW {slow} \ + CONFIG.PCW_MIO_1_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_1_PULLUP {enabled} \ + CONFIG.PCW_MIO_1_SLEW {slow} \ + CONFIG.PCW_MIO_20_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_20_PULLUP {enabled} \ + CONFIG.PCW_MIO_20_SLEW {slow} \ + CONFIG.PCW_MIO_21_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_21_PULLUP {enabled} \ + CONFIG.PCW_MIO_21_SLEW {slow} \ + CONFIG.PCW_MIO_22_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_22_PULLUP {enabled} \ + CONFIG.PCW_MIO_22_SLEW {slow} \ + CONFIG.PCW_MIO_23_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_23_PULLUP {enabled} \ + CONFIG.PCW_MIO_23_SLEW {slow} \ + CONFIG.PCW_MIO_24_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_24_PULLUP {enabled} \ + CONFIG.PCW_MIO_24_SLEW {slow} \ + CONFIG.PCW_MIO_25_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_25_PULLUP {enabled} \ + CONFIG.PCW_MIO_25_SLEW {slow} \ + CONFIG.PCW_MIO_26_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_26_PULLUP {enabled} \ + CONFIG.PCW_MIO_26_SLEW {slow} \ + CONFIG.PCW_MIO_27_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_27_PULLUP {enabled} \ + CONFIG.PCW_MIO_27_SLEW {slow} \ + CONFIG.PCW_MIO_28_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_28_PULLUP {enabled} \ + CONFIG.PCW_MIO_28_SLEW {slow} \ + CONFIG.PCW_MIO_29_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_29_PULLUP {enabled} \ + CONFIG.PCW_MIO_29_SLEW {slow} \ + CONFIG.PCW_MIO_2_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_2_SLEW {slow} \ + CONFIG.PCW_MIO_30_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_30_PULLUP {enabled} \ + CONFIG.PCW_MIO_30_SLEW {slow} \ + CONFIG.PCW_MIO_31_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_31_PULLUP {enabled} \ + CONFIG.PCW_MIO_31_SLEW {slow} \ + CONFIG.PCW_MIO_32_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_32_PULLUP {enabled} \ + CONFIG.PCW_MIO_32_SLEW {slow} \ + CONFIG.PCW_MIO_33_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_33_PULLUP {enabled} \ + CONFIG.PCW_MIO_33_SLEW {slow} \ + CONFIG.PCW_MIO_34_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_34_PULLUP {enabled} \ + CONFIG.PCW_MIO_34_SLEW {slow} \ + CONFIG.PCW_MIO_35_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_35_PULLUP {enabled} \ + CONFIG.PCW_MIO_35_SLEW {slow} \ + CONFIG.PCW_MIO_36_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_36_PULLUP {enabled} \ + CONFIG.PCW_MIO_36_SLEW {slow} \ + CONFIG.PCW_MIO_37_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_37_PULLUP {enabled} \ + CONFIG.PCW_MIO_37_SLEW {slow} \ + CONFIG.PCW_MIO_38_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_38_PULLUP {enabled} \ + CONFIG.PCW_MIO_38_SLEW {slow} \ + CONFIG.PCW_MIO_39_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_39_PULLUP {enabled} \ + CONFIG.PCW_MIO_39_SLEW {slow} \ + CONFIG.PCW_MIO_3_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_3_SLEW {slow} \ + CONFIG.PCW_MIO_40_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_40_PULLUP {enabled} \ + CONFIG.PCW_MIO_40_SLEW {slow} \ + CONFIG.PCW_MIO_41_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_41_PULLUP {enabled} \ + CONFIG.PCW_MIO_41_SLEW {slow} \ + CONFIG.PCW_MIO_42_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_42_PULLUP {enabled} \ + CONFIG.PCW_MIO_42_SLEW {slow} \ + CONFIG.PCW_MIO_43_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_43_PULLUP {enabled} \ + CONFIG.PCW_MIO_43_SLEW {slow} \ + CONFIG.PCW_MIO_44_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_44_PULLUP {enabled} \ + CONFIG.PCW_MIO_44_SLEW {slow} \ + CONFIG.PCW_MIO_45_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_45_PULLUP {enabled} \ + CONFIG.PCW_MIO_45_SLEW {slow} \ + CONFIG.PCW_MIO_46_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_46_PULLUP {enabled} \ + CONFIG.PCW_MIO_46_SLEW {slow} \ + CONFIG.PCW_MIO_47_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_47_PULLUP {enabled} \ + CONFIG.PCW_MIO_47_SLEW {slow} \ + CONFIG.PCW_MIO_48_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_48_PULLUP {enabled} \ + CONFIG.PCW_MIO_48_SLEW {slow} \ + CONFIG.PCW_MIO_49_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_49_PULLUP {enabled} \ + CONFIG.PCW_MIO_49_SLEW {slow} \ + CONFIG.PCW_MIO_4_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_4_SLEW {slow} \ + CONFIG.PCW_MIO_50_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_50_PULLUP {enabled} \ + CONFIG.PCW_MIO_50_SLEW {slow} \ + CONFIG.PCW_MIO_51_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_51_PULLUP {enabled} \ + CONFIG.PCW_MIO_51_SLEW {slow} \ + CONFIG.PCW_MIO_52_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_52_PULLUP {enabled} \ + CONFIG.PCW_MIO_52_SLEW {slow} \ + CONFIG.PCW_MIO_53_IOTYPE {LVCMOS 2.5V} \ + CONFIG.PCW_MIO_53_PULLUP {enabled} \ + CONFIG.PCW_MIO_53_SLEW {slow} \ + CONFIG.PCW_MIO_5_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_5_SLEW {slow} \ + CONFIG.PCW_MIO_6_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_6_SLEW {slow} \ + CONFIG.PCW_MIO_7_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_7_SLEW {slow} \ + CONFIG.PCW_MIO_8_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_8_SLEW {slow} \ + CONFIG.PCW_MIO_9_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_9_PULLUP {enabled} \ + CONFIG.PCW_MIO_9_SLEW {slow} \ + CONFIG.PCW_MIO_PRIMITIVE {54} \ + CONFIG.PCW_MIO_TREE_PERIPHERALS {GPIO#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#GPIO#GPIO#SD 1#SD 1#SD 1#SD 1#SD 1#SD 1#SD 1#Enet 0#Enet 0#Enet 0#Enet\ +0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#SPI 0#SPI 0#SPI 0#GPIO#GPIO#SPI 0#UART 0#UART 0#UART 1#UART 1#I2C 0#I2C\ +0#CAN 1#CAN 1} \ + CONFIG.PCW_MIO_TREE_SIGNALS {gpio[0]#qspi0_ss_b#qspi0_io[0]#qspi0_io[1]#qspi0_io[2]#qspi0_io[3]/HOLD_B#qspi0_sclk#gpio[7]#gpio[8]#cd#data[0]#cmd#clk#data[1]#data[2]#data[3]#tx_clk#txd[0]#txd[1]#txd[2]#txd[3]#tx_ctl#rx_clk#rxd[0]#rxd[1]#rxd[2]#rxd[3]#rx_ctl#data[4]#dir#stp#nxt#data[0]#data[1]#data[2]#data[3]#clk#data[5]#data[6]#data[7]#sclk#miso#ss[0]#gpio[43]#gpio[44]#mosi#rx#tx#tx#rx#scl#sda#tx#rx}\ +\ + CONFIG.PCW_NAND_CYCLES_T_AR {1} \ + CONFIG.PCW_NAND_CYCLES_T_CLR {1} \ + CONFIG.PCW_NAND_CYCLES_T_RC {11} \ + CONFIG.PCW_NAND_CYCLES_T_REA {1} \ + CONFIG.PCW_NAND_CYCLES_T_RR {1} \ + CONFIG.PCW_NAND_CYCLES_T_WC {11} \ + CONFIG.PCW_NAND_CYCLES_T_WP {1} \ + CONFIG.PCW_NOR_CS0_T_CEOE {1} \ + CONFIG.PCW_NOR_CS0_T_PC {1} \ + CONFIG.PCW_NOR_CS0_T_RC {11} \ + CONFIG.PCW_NOR_CS0_T_TR {1} \ + CONFIG.PCW_NOR_CS0_T_WC {11} \ + CONFIG.PCW_NOR_CS0_T_WP {1} \ + CONFIG.PCW_NOR_CS0_WE_TIME {0} \ + CONFIG.PCW_NOR_CS1_T_CEOE {1} \ + CONFIG.PCW_NOR_CS1_T_PC {1} \ + CONFIG.PCW_NOR_CS1_T_RC {11} \ + CONFIG.PCW_NOR_CS1_T_TR {1} \ + CONFIG.PCW_NOR_CS1_T_WC {11} \ + CONFIG.PCW_NOR_CS1_T_WP {1} \ + CONFIG.PCW_NOR_CS1_WE_TIME {0} \ + CONFIG.PCW_NOR_SRAM_CS0_T_CEOE {1} \ + CONFIG.PCW_NOR_SRAM_CS0_T_PC {1} \ + CONFIG.PCW_NOR_SRAM_CS0_T_RC {11} \ + CONFIG.PCW_NOR_SRAM_CS0_T_TR {1} \ + CONFIG.PCW_NOR_SRAM_CS0_T_WC {11} \ + CONFIG.PCW_NOR_SRAM_CS0_T_WP {1} \ + CONFIG.PCW_NOR_SRAM_CS0_WE_TIME {0} \ + CONFIG.PCW_NOR_SRAM_CS1_T_CEOE {1} \ + CONFIG.PCW_NOR_SRAM_CS1_T_PC {1} \ + CONFIG.PCW_NOR_SRAM_CS1_T_RC {11} \ + CONFIG.PCW_NOR_SRAM_CS1_T_TR {1} \ + CONFIG.PCW_NOR_SRAM_CS1_T_WC {11} \ + CONFIG.PCW_NOR_SRAM_CS1_T_WP {1} \ + CONFIG.PCW_NOR_SRAM_CS1_WE_TIME {0} \ + CONFIG.PCW_OVERRIDE_BASIC_CLOCK {0} \ + CONFIG.PCW_P2F_CAN1_INTR {0} \ + CONFIG.PCW_P2F_ENET0_INTR {0} \ + CONFIG.PCW_P2F_GPIO_INTR {0} \ + CONFIG.PCW_P2F_I2C0_INTR {0} \ + CONFIG.PCW_P2F_QSPI_INTR {0} \ + CONFIG.PCW_P2F_SDIO1_INTR {0} \ + CONFIG.PCW_P2F_SPI0_INTR {0} \ + CONFIG.PCW_P2F_SPI1_INTR {0} \ + CONFIG.PCW_P2F_UART0_INTR {0} \ + CONFIG.PCW_P2F_UART1_INTR {0} \ + CONFIG.PCW_P2F_USB0_INTR {0} \ + CONFIG.PCW_PACKAGE_DDR_BOARD_DELAY0 {0.075} \ + CONFIG.PCW_PACKAGE_DDR_BOARD_DELAY1 {0.070} \ + CONFIG.PCW_PACKAGE_DDR_BOARD_DELAY2 {0.077} \ + CONFIG.PCW_PACKAGE_DDR_BOARD_DELAY3 {0.094} \ + CONFIG.PCW_PACKAGE_DDR_DQS_TO_CLK_DELAY_0 {-0.000} \ + CONFIG.PCW_PACKAGE_DDR_DQS_TO_CLK_DELAY_1 {-0.001} \ + CONFIG.PCW_PACKAGE_DDR_DQS_TO_CLK_DELAY_2 {0.004} \ + CONFIG.PCW_PACKAGE_DDR_DQS_TO_CLK_DELAY_3 {-0.035} \ + CONFIG.PCW_PACKAGE_NAME {clg485} \ + CONFIG.PCW_PCAP_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_PCAP_PERIPHERAL_FREQMHZ {200} \ + CONFIG.PCW_PERIPHERAL_BOARD_PRESET {part0} \ + CONFIG.PCW_PJTAG_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_PLL_BYPASSMODE_ENABLE {0} \ + CONFIG.PCW_PRESET_BANK0_VOLTAGE {LVCMOS 3.3V} \ + CONFIG.PCW_PRESET_BANK1_VOLTAGE {LVCMOS 2.5V} \ + CONFIG.PCW_PS7_SI_REV {PRODUCTION} \ + CONFIG.PCW_QSPI_GRP_FBCLK_ENABLE {0} \ + CONFIG.PCW_QSPI_GRP_IO1_ENABLE {0} \ + CONFIG.PCW_QSPI_GRP_SINGLE_SS_ENABLE {1} \ + CONFIG.PCW_QSPI_GRP_SINGLE_SS_IO {MIO 1 .. 6} \ + CONFIG.PCW_QSPI_GRP_SS1_ENABLE {0} \ + CONFIG.PCW_QSPI_INTERNAL_HIGHADDRESS {0xFCFFFFFF} \ + CONFIG.PCW_QSPI_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_QSPI_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_QSPI_PERIPHERAL_FREQMHZ {133} \ + CONFIG.PCW_QSPI_QSPI_IO {MIO 1 .. 6} \ + CONFIG.PCW_SD0_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_SD1_GRP_CD_ENABLE {1} \ + CONFIG.PCW_SD1_GRP_CD_IO {MIO 9} \ + CONFIG.PCW_SD1_GRP_POW_ENABLE {0} \ + CONFIG.PCW_SD1_GRP_WP_ENABLE {0} \ + CONFIG.PCW_SD1_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_SD1_SD1_IO {MIO 10 .. 15} \ + CONFIG.PCW_SDIO1_BASEADDR {0xE0101000} \ + CONFIG.PCW_SDIO1_HIGHADDR {0xE0101FFF} \ + CONFIG.PCW_SDIO_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_SDIO_PERIPHERAL_FREQMHZ {100} \ + CONFIG.PCW_SDIO_PERIPHERAL_VALID {1} \ + CONFIG.PCW_SINGLE_QSPI_DATA_MODE {x4} \ + CONFIG.PCW_SMC_CYCLE_T0 {NA} \ + CONFIG.PCW_SMC_CYCLE_T1 {NA} \ + CONFIG.PCW_SMC_CYCLE_T2 {NA} \ + CONFIG.PCW_SMC_CYCLE_T3 {NA} \ + CONFIG.PCW_SMC_CYCLE_T4 {NA} \ + CONFIG.PCW_SMC_CYCLE_T5 {NA} \ + CONFIG.PCW_SMC_CYCLE_T6 {NA} \ + CONFIG.PCW_SMC_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_SMC_PERIPHERAL_VALID {0} \ + CONFIG.PCW_SPI0_BASEADDR {0xE0006000} \ + CONFIG.PCW_SPI0_GRP_SS1_ENABLE {0} \ + CONFIG.PCW_SPI0_GRP_SS2_ENABLE {0} \ + CONFIG.PCW_SPI0_HIGHADDR {0xE0006FFF} \ + CONFIG.PCW_SPI0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_SPI0_SPI0_IO {MIO 40 .. 45} \ + CONFIG.PCW_SPI1_BASEADDR {0xE0007000} \ + CONFIG.PCW_SPI1_HIGHADDR {0xE0007FFF} \ + CONFIG.PCW_SPI1_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_SPI1_SPI1_IO {EMIO} \ + CONFIG.PCW_SPI_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_SPI_PERIPHERAL_FREQMHZ {166.666666} \ + CONFIG.PCW_SPI_PERIPHERAL_VALID {1} \ + CONFIG.PCW_S_AXI_HP0_DATA_WIDTH {64} \ + CONFIG.PCW_S_AXI_HP1_DATA_WIDTH {64} \ + CONFIG.PCW_S_AXI_HP2_DATA_WIDTH {64} \ + CONFIG.PCW_S_AXI_HP3_DATA_WIDTH {64} \ + CONFIG.PCW_TPIU_PERIPHERAL_CLKSRC {External} \ + CONFIG.PCW_TRACE_INTERNAL_WIDTH {2} \ + CONFIG.PCW_TRACE_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_TTC0_CLK0_PERIPHERAL_CLKSRC {CPU_1X} \ + CONFIG.PCW_TTC0_CLK0_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_TTC0_CLK1_PERIPHERAL_CLKSRC {CPU_1X} \ + CONFIG.PCW_TTC0_CLK1_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_TTC0_CLK2_PERIPHERAL_CLKSRC {CPU_1X} \ + CONFIG.PCW_TTC0_CLK2_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_TTC0_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_TTC1_CLK0_PERIPHERAL_CLKSRC {CPU_1X} \ + CONFIG.PCW_TTC1_CLK0_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_TTC1_CLK1_PERIPHERAL_CLKSRC {CPU_1X} \ + CONFIG.PCW_TTC1_CLK1_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_TTC1_CLK2_PERIPHERAL_CLKSRC {CPU_1X} \ + CONFIG.PCW_TTC1_CLK2_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_TTC1_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_UART0_BASEADDR {0xE0000000} \ + CONFIG.PCW_UART0_BAUD_RATE {115200} \ + CONFIG.PCW_UART0_GRP_FULL_ENABLE {0} \ + CONFIG.PCW_UART0_HIGHADDR {0xE0000FFF} \ + CONFIG.PCW_UART0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_UART0_UART0_IO {MIO 46 .. 47} \ + CONFIG.PCW_UART1_BASEADDR {0xE0001000} \ + CONFIG.PCW_UART1_BAUD_RATE {115200} \ + CONFIG.PCW_UART1_GRP_FULL_ENABLE {0} \ + CONFIG.PCW_UART1_HIGHADDR {0xE0001FFF} \ + CONFIG.PCW_UART1_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_UART1_UART1_IO {MIO 48 .. 49} \ + CONFIG.PCW_UART_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_UART_PERIPHERAL_FREQMHZ {100} \ + CONFIG.PCW_UART_PERIPHERAL_VALID {1} \ + CONFIG.PCW_UIPARAM_ACT_DDR_FREQ_MHZ {500.000000} \ + CONFIG.PCW_UIPARAM_DDR_ADV_ENABLE {0} \ + CONFIG.PCW_UIPARAM_DDR_AL {0} \ + CONFIG.PCW_UIPARAM_DDR_BL {8} \ + CONFIG.PCW_UIPARAM_DDR_BOARD_DELAY0 {0.25} \ + CONFIG.PCW_UIPARAM_DDR_BOARD_DELAY1 {0.25} \ + CONFIG.PCW_UIPARAM_DDR_BOARD_DELAY2 {0.25} \ + CONFIG.PCW_UIPARAM_DDR_BOARD_DELAY3 {0.25} \ + CONFIG.PCW_UIPARAM_DDR_BUS_WIDTH {16 Bit} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_0_LENGTH_MM {0} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_0_PACKAGE_LENGTH {76.428} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_0_PROPOGATION_DELAY {160} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_1_LENGTH_MM {0} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_1_PACKAGE_LENGTH {76.428} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_1_PROPOGATION_DELAY {160} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_2_LENGTH_MM {0} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_2_PACKAGE_LENGTH {76.428} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_2_PROPOGATION_DELAY {160} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_3_LENGTH_MM {0} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_3_PACKAGE_LENGTH {76.428} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_3_PROPOGATION_DELAY {160} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_STOP_EN {0} \ + CONFIG.PCW_UIPARAM_DDR_DQS_0_LENGTH_MM {0} \ + CONFIG.PCW_UIPARAM_DDR_DQS_0_PACKAGE_LENGTH {76.687} \ + CONFIG.PCW_UIPARAM_DDR_DQS_0_PROPOGATION_DELAY {160} \ + CONFIG.PCW_UIPARAM_DDR_DQS_1_LENGTH_MM {0} \ + CONFIG.PCW_UIPARAM_DDR_DQS_1_PACKAGE_LENGTH {77.8025} \ + CONFIG.PCW_UIPARAM_DDR_DQS_1_PROPOGATION_DELAY {160} \ + CONFIG.PCW_UIPARAM_DDR_DQS_2_LENGTH_MM {0} \ + CONFIG.PCW_UIPARAM_DDR_DQS_2_PACKAGE_LENGTH {72.8405} \ + CONFIG.PCW_UIPARAM_DDR_DQS_2_PROPOGATION_DELAY {160} \ + CONFIG.PCW_UIPARAM_DDR_DQS_3_LENGTH_MM {0} \ + CONFIG.PCW_UIPARAM_DDR_DQS_3_PACKAGE_LENGTH {111.904} \ + CONFIG.PCW_UIPARAM_DDR_DQS_3_PROPOGATION_DELAY {160} \ + CONFIG.PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_0 {0.0} \ + CONFIG.PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_1 {0.0} \ + CONFIG.PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_2 {0.0} \ + CONFIG.PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_3 {0.0} \ + CONFIG.PCW_UIPARAM_DDR_DQ_0_LENGTH_MM {0} \ + CONFIG.PCW_UIPARAM_DDR_DQ_0_PACKAGE_LENGTH {73.119} \ + CONFIG.PCW_UIPARAM_DDR_DQ_0_PROPOGATION_DELAY {160} \ + CONFIG.PCW_UIPARAM_DDR_DQ_1_LENGTH_MM {0} \ + CONFIG.PCW_UIPARAM_DDR_DQ_1_PACKAGE_LENGTH {63.8935} \ + CONFIG.PCW_UIPARAM_DDR_DQ_1_PROPOGATION_DELAY {160} \ + CONFIG.PCW_UIPARAM_DDR_DQ_2_LENGTH_MM {0} \ + CONFIG.PCW_UIPARAM_DDR_DQ_2_PACKAGE_LENGTH {77.045} \ + CONFIG.PCW_UIPARAM_DDR_DQ_2_PROPOGATION_DELAY {160} \ + CONFIG.PCW_UIPARAM_DDR_DQ_3_LENGTH_MM {0} \ + CONFIG.PCW_UIPARAM_DDR_DQ_3_PACKAGE_LENGTH {111.903} \ + CONFIG.PCW_UIPARAM_DDR_DQ_3_PROPOGATION_DELAY {160} \ + CONFIG.PCW_UIPARAM_DDR_ECC {Disabled} \ + CONFIG.PCW_UIPARAM_DDR_ENABLE {1} \ + CONFIG.PCW_UIPARAM_DDR_FREQ_MHZ {500} \ + CONFIG.PCW_UIPARAM_DDR_HIGH_TEMP {Normal (0-85)} \ + CONFIG.PCW_UIPARAM_DDR_MEMORY_TYPE {DDR 3 (Low Voltage)} \ + CONFIG.PCW_UIPARAM_DDR_PARTNO {MT41K128M16 JT-125} \ + CONFIG.PCW_UIPARAM_DDR_TRAIN_DATA_EYE {1} \ + CONFIG.PCW_UIPARAM_DDR_TRAIN_READ_GATE {1} \ + CONFIG.PCW_UIPARAM_DDR_TRAIN_WRITE_LEVEL {1} \ + CONFIG.PCW_UIPARAM_DDR_USE_INTERNAL_VREF {0} \ + CONFIG.PCW_UIPARAM_GENERATE_SUMMARY {NA} \ + CONFIG.PCW_USB0_BASEADDR {0xE0102000} \ + CONFIG.PCW_USB0_HIGHADDR {0xE0102fff} \ + CONFIG.PCW_USB0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_USB0_RESET_ENABLE {0} \ + CONFIG.PCW_USB0_USB0_IO {MIO 28 .. 39} \ + CONFIG.PCW_USB1_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_USB_RESET_ENABLE {1} \ + CONFIG.PCW_USB_RESET_POLARITY {Active Low} \ + CONFIG.PCW_USB_RESET_SELECT {Share reset pin} \ + CONFIG.PCW_USE_AXI_FABRIC_IDLE {0} \ + CONFIG.PCW_USE_AXI_NONSECURE {0} \ + CONFIG.PCW_USE_CORESIGHT {0} \ + CONFIG.PCW_USE_CROSS_TRIGGER {0} \ + CONFIG.PCW_USE_CR_FABRIC {1} \ + CONFIG.PCW_USE_DDR_BYPASS {0} \ + CONFIG.PCW_USE_DEBUG {0} \ + CONFIG.PCW_USE_DMA0 {0} \ + CONFIG.PCW_USE_DMA1 {0} \ + CONFIG.PCW_USE_DMA2 {0} \ + CONFIG.PCW_USE_DMA3 {0} \ + CONFIG.PCW_USE_EXPANDED_IOP {0} \ + CONFIG.PCW_USE_FABRIC_INTERRUPT {1} \ + CONFIG.PCW_USE_HIGH_OCM {0} \ + CONFIG.PCW_USE_M_AXI_GP0 {1} \ + CONFIG.PCW_USE_M_AXI_GP1 {0} \ + CONFIG.PCW_USE_PROC_EVENT_BUS {0} \ + CONFIG.PCW_USE_PS_SLCR_REGISTERS {0} \ + CONFIG.PCW_USE_S_AXI_ACP {0} \ + CONFIG.PCW_USE_S_AXI_GP0 {0} \ + CONFIG.PCW_USE_S_AXI_GP1 {0} \ + CONFIG.PCW_USE_S_AXI_HP0 {0} \ + CONFIG.PCW_USE_S_AXI_HP1 {0} \ + CONFIG.PCW_USE_S_AXI_HP2 {0} \ + CONFIG.PCW_USE_S_AXI_HP3 {0} \ + CONFIG.PCW_USE_TRACE {0} \ + CONFIG.PCW_VALUE_SILVERSION {3} \ + CONFIG.PCW_WDT_PERIPHERAL_CLKSRC {CPU_1X} \ + CONFIG.PCW_WDT_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_WDT_PERIPHERAL_ENABLE {0} \ + ] $processing_system7_0 + + + # Create instance: rst_ps7_0_125M, and set properties + set rst_ps7_0_125M [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_ps7_0_125M ] + + # Create instance: sys_clock, and set properties + set sys_clock [ create_bd_cell -type ip -vlnv xilinx.com:ip:clk_wiz:6.0 sys_clock ] + set_property -dict [list \ + CONFIG.CLKIN1_JITTER_PS {80.0} \ + CONFIG.CLKOUT1_JITTER {124.615} \ + CONFIG.CLKOUT1_PHASE_ERROR {96.948} \ + CONFIG.CLKOUT1_REQUESTED_OUT_FREQ {100} \ + CONFIG.CLKOUT1_USED {true} \ + CONFIG.CLKOUT2_JITTER {119.348} \ + CONFIG.CLKOUT2_PHASE_ERROR {96.948} \ + CONFIG.CLKOUT2_REQUESTED_OUT_FREQ {125} \ + CONFIG.CLKOUT2_USED {true} \ + CONFIG.CLKOUT3_JITTER {119.348} \ + CONFIG.CLKOUT3_PHASE_ERROR {96.948} \ + CONFIG.CLKOUT3_REQUESTED_OUT_FREQ {100.000} \ + CONFIG.CLKOUT3_USED {false} \ + CONFIG.CLKOUT4_JITTER {109.241} \ + CONFIG.CLKOUT4_PHASE_ERROR {96.948} \ + CONFIG.CLKOUT4_REQUESTED_OUT_FREQ {100.000} \ + CONFIG.CLKOUT4_USED {false} \ + CONFIG.CLK_OUT1_PORT {clk_100} \ + CONFIG.CLK_OUT2_PORT {clk_125} \ + CONFIG.CLK_OUT3_PORT {clk_out3} \ + CONFIG.CLK_OUT4_PORT {clk_out4} \ + CONFIG.MMCM_CLKFBOUT_MULT_F {8.000} \ + CONFIG.MMCM_CLKIN1_PERIOD {8.000} \ + CONFIG.MMCM_CLKOUT0_DIVIDE_F {10.000} \ + CONFIG.MMCM_CLKOUT1_DIVIDE {8} \ + CONFIG.MMCM_CLKOUT2_DIVIDE {1} \ + CONFIG.MMCM_CLKOUT3_DIVIDE {1} \ + CONFIG.NUM_OUT_CLKS {2} \ + CONFIG.PRIM_SOURCE {Global_buffer} \ + CONFIG.RESET_PORT {resetn} \ + CONFIG.RESET_TYPE {ACTIVE_LOW} \ + ] $sys_clock + + + # Create instance: scalp_axi_link_scalpid, and set properties + set scalp_axi_link_scalpid [ create_bd_cell -type ip -vlnv hepia.hesge.ch:user:scalp_axi_link:1.0 scalp_axi_link_scalpid ] + + # Create instance: ps7_0_axi_periph, and set properties + set ps7_0_axi_periph [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 ps7_0_axi_periph ] + set_property CONFIG.NUM_MI {4} $ps7_0_axi_periph + + + # Create instance: axi_gpio_switches, and set properties + set axi_gpio_switches [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_gpio:2.0 axi_gpio_switches ] + set_property -dict [list \ + CONFIG.C_ALL_INPUTS {1} \ + CONFIG.C_GPIO_WIDTH {2} \ + CONFIG.C_INTERRUPT_PRESENT {1} \ + ] $axi_gpio_switches + + + # Create instance: axi_intc_0, and set properties + set axi_intc_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_intc:4.1 axi_intc_0 ] + set_property CONFIG.C_IRQ_CONNECTION {1} $axi_intc_0 + + + # Create instance: xlconcat_0, and set properties + set xlconcat_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconcat:2.1 xlconcat_0 ] + set_property CONFIG.NUM_PORTS {1} $xlconcat_0 + + + # Create instance: axi_gpio_reset_btn, and set properties + set axi_gpio_reset_btn [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_gpio:2.0 axi_gpio_reset_btn ] + set_property -dict [list \ + CONFIG.C_ALL_INPUTS {0} \ + CONFIG.C_ALL_OUTPUTS {1} \ + CONFIG.C_GPIO_WIDTH {1} \ + CONFIG.C_INTERRUPT_PRESENT {0} \ + ] $axi_gpio_reset_btn + + + # Create instance: system_ila_0, and set properties + set system_ila_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:system_ila:1.1 system_ila_0 ] + set_property -dict [list \ + CONFIG.C_MON_TYPE {NATIVE} \ + CONFIG.C_NUM_OF_PROBES {2} \ + CONFIG.C_PROBE0_TYPE {0} \ + CONFIG.C_PROBE1_TYPE {0} \ + ] $system_ila_0 + + + # Create interface connections + connect_bd_intf_net -intf_net axi_gpio_0_GPIO [get_bd_intf_ports GPIOSwitchesxDI] [get_bd_intf_pins axi_gpio_switches/GPIO] + connect_bd_intf_net -intf_net axi_gpio_reset_btn_GPIO [get_bd_intf_ports GPIOResetBtnxDO] [get_bd_intf_pins axi_gpio_reset_btn/GPIO] + connect_bd_intf_net -intf_net processing_system7_0_DDR [get_bd_intf_ports DDR] [get_bd_intf_pins processing_system7_0/DDR] + connect_bd_intf_net -intf_net processing_system7_0_FIXED_IO [get_bd_intf_ports FIXED_IO] [get_bd_intf_pins processing_system7_0/FIXED_IO] + connect_bd_intf_net -intf_net processing_system7_0_M_AXI_GP0 [get_bd_intf_pins processing_system7_0/M_AXI_GP0] [get_bd_intf_pins ps7_0_axi_periph/S00_AXI] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M00_AXI [get_bd_intf_pins ps7_0_axi_periph/M00_AXI] [get_bd_intf_pins scalp_axi_link_scalpid/aximm_slv_if] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M01_AXI [get_bd_intf_pins ps7_0_axi_periph/M01_AXI] [get_bd_intf_pins axi_intc_0/s_axi] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M02_AXI [get_bd_intf_pins ps7_0_axi_periph/M02_AXI] [get_bd_intf_pins axi_gpio_switches/S_AXI] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M03_AXI [get_bd_intf_pins ps7_0_axi_periph/M03_AXI] [get_bd_intf_pins axi_gpio_reset_btn/S_AXI] + connect_bd_intf_net -intf_net scalp_axi_link_0_aximm_mst_if [get_bd_intf_ports aximm_mst_if] [get_bd_intf_pins scalp_axi_link_scalpid/aximm_mst_if] + + # Create port connections + connect_bd_net -net USB0_VBUS_PWRFAULT_0_1 [get_bd_ports Usb0VBusPwrFaultxSI] [get_bd_pins processing_system7_0/USB0_VBUS_PWRFAULT] + connect_bd_net -net axi_gpio_0_ip2intc_irpt [get_bd_pins axi_gpio_switches/ip2intc_irpt] [get_bd_pins xlconcat_0/In0] [get_bd_pins system_ila_0/probe0] + set_property HDL_ATTRIBUTE.DEBUG {true} [get_bd_nets axi_gpio_0_ip2intc_irpt] + connect_bd_net -net axi_intc_0_irq [get_bd_pins axi_intc_0/irq] [get_bd_pins processing_system7_0/IRQ_F2P] [get_bd_pins system_ila_0/probe1] + set_property HDL_ATTRIBUTE.DEBUG {true} [get_bd_nets axi_intc_0_irq] + connect_bd_net -net gnd_constant_dout [get_bd_pins gnd_constant/dout] [get_bd_pins processing_system7_0/SPI1_SCLK_I] [get_bd_pins processing_system7_0/SPI1_MOSI_I] [get_bd_pins processing_system7_0/SPI1_MISO_I] [get_bd_pins processing_system7_0/SPI1_SS_I] + connect_bd_net -net processing_system7_0_FCLK_CLK0 [get_bd_pins processing_system7_0/FCLK_CLK0] [get_bd_pins sys_clock/clk_in1] + connect_bd_net -net processing_system7_0_FCLK_RESET0_N [get_bd_pins processing_system7_0/FCLK_RESET0_N] [get_bd_pins rst_ps7_0_125M/ext_reset_in] [get_bd_pins sys_clock/resetn] + connect_bd_net -net processing_system7_0_SPI1_MOSI_O [get_bd_pins processing_system7_0/SPI1_MOSI_O] [get_bd_ports Spi1MOSIxSO] + connect_bd_net -net processing_system7_0_SPI1_SCLK_O [get_bd_pins processing_system7_0/SPI1_SCLK_O] [get_bd_ports Spi1SclkxCO] + connect_bd_net -net processing_system7_0_SPI1_SS_O [get_bd_pins processing_system7_0/SPI1_SS_O] [get_bd_ports Spi1SSxSO] + connect_bd_net -net rst_ps7_0_125M_peripheral_aresetn [get_bd_pins rst_ps7_0_125M/peripheral_aresetn] [get_bd_ports Clk125RstxRNAO] [get_bd_pins ps7_0_axi_periph/S00_ARESETN] [get_bd_pins ps7_0_axi_periph/M00_ARESETN] [get_bd_pins ps7_0_axi_periph/ARESETN] [get_bd_pins scalp_axi_link_scalpid/SAxiSlvRstxRANI] [get_bd_pins axi_gpio_switches/s_axi_aresetn] [get_bd_pins axi_intc_0/s_axi_aresetn] [get_bd_pins ps7_0_axi_periph/M01_ARESETN] [get_bd_pins ps7_0_axi_periph/M02_ARESETN] [get_bd_pins ps7_0_axi_periph/M03_ARESETN] [get_bd_pins axi_gpio_reset_btn/s_axi_aresetn] + connect_bd_net -net rst_ps7_0_125M_peripheral_reset [get_bd_pins rst_ps7_0_125M/peripheral_reset] [get_bd_ports Clk125RstxRO] + connect_bd_net -net scalp_axi_link_0_SAxiMstClkxCO [get_bd_pins scalp_axi_link_scalpid/SAxiMstClkxCO] [get_bd_ports SAxiMstClkxCO] + connect_bd_net -net scalp_axi_link_0_SAxiMstRstxRANO [get_bd_pins scalp_axi_link_scalpid/SAxiMstRstxRANO] [get_bd_ports SAxiMstRstxRANO] + connect_bd_net -net sys_clock_clk_125 [get_bd_pins sys_clock/clk_125] [get_bd_ports Clk125xCO] [get_bd_pins rst_ps7_0_125M/slowest_sync_clk] [get_bd_pins ps7_0_axi_periph/ACLK] [get_bd_pins processing_system7_0/M_AXI_GP0_ACLK] [get_bd_pins ps7_0_axi_periph/S00_ACLK] [get_bd_pins ps7_0_axi_periph/M00_ACLK] [get_bd_pins scalp_axi_link_scalpid/SAxiSlvClkxCI] [get_bd_pins axi_gpio_switches/s_axi_aclk] [get_bd_pins axi_intc_0/s_axi_aclk] [get_bd_pins ps7_0_axi_periph/M01_ACLK] [get_bd_pins ps7_0_axi_periph/M02_ACLK] [get_bd_pins ps7_0_axi_periph/M03_ACLK] [get_bd_pins axi_gpio_reset_btn/s_axi_aclk] [get_bd_pins system_ila_0/clk] + connect_bd_net -net sys_clock_locked [get_bd_pins sys_clock/locked] [get_bd_pins rst_ps7_0_125M/dcm_locked] + connect_bd_net -net xlconcat_0_dout [get_bd_pins xlconcat_0/dout] [get_bd_pins axi_intc_0/intr] + + # Create address segments + assign_bd_address -offset 0x41200000 -range 0x00010000 -with_name SEG_axi_gpio_0_Reg -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs axi_gpio_switches/S_AXI/Reg] -force + assign_bd_address -offset 0x41210000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs axi_gpio_reset_btn/S_AXI/Reg] -force + assign_bd_address -offset 0x41800000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs axi_intc_0/S_AXI/Reg] -force + assign_bd_address -offset 0x43C00000 -range 0x00001000 -with_name SEG_scalp_axi_link_0_Reg -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs scalp_axi_link_scalpid/aximm_slv_if/Reg] -force + + + # Restore current instance + current_bd_instance $oldCurInst + + # Create PFM attributes + set_property PFM_NAME {hepia:scalp:scalp_zynq_safe_pltfm:1.0} [get_files [current_bd_design].bd] + set_property PFM.AXI_PORT {M_AXI_GP1 {memport "M_AXI_GP" sptag "" memory "" is_range "false"} S_AXI_HP0 {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP1 {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP2 {memport "S_AXI_HP" sptag "" memory "" is_range "false"} S_AXI_HP3 {memport "S_AXI_HP" sptag "" memory "" is_range "false"}} [get_bd_cells /processing_system7_0] + set_property PFM.CLOCK {clk_125 {id "2" is_default "true" proc_sys_reset "/rst_ps7_0_125M" status "fixed" freq_hz "125000000"}} [get_bd_cells /sys_clock] + set_property PFM.AXI_PORT {M04_AXI { memport "M_AXI_GP" sptag "" memory "" is_range "false" } M05_AXI { memport "M_AXI_GP" sptag "" memory "" is_range "false" } M06_AXI { memport "M_AXI_GP" sptag "" memory "" is_range "false" } M07_AXI { memport "M_AXI_GP" sptag "" memory "" is_range "false" } M08_AXI { memport "M_AXI_GP" sptag "" memory "" is_range "false" } } [get_bd_cells /ps7_0_axi_periph] + + + validate_bd_design + save_bd_design +} +# End of create_root_design() + + +################################################################## +# MAIN FLOW +################################################################## + +create_root_design "" + + diff --git a/design_files/timing_constraints.xdc b/design_files/timing_constraints.xdc new file mode 100644 index 0000000..4ce41c8 --- /dev/null +++ b/design_files/timing_constraints.xdc @@ -0,0 +1,31 @@ +############################################################################ +# Timing constraints # +############################################################################ + +##### PS_CLK (125 MHz) ##### +create_clock -period 8.000 -waveform {0.000 4.000} [get_ports PSClkxCIO] + +##### GTP reference clocks (125 MHz) ##### +#create_clock -period 8.000 -waveform {0.000 4.000} [get_nets GTPRefClk0PxCI] +#create_clock -period 8.000 -waveform {0.000 4.000} [get_nets GTPRefClk1xC] + +##### Clocks from PLLs (125 MHz) ##### +#create_clock -period 8.000 -waveform {0.000 4.000} [get_nets {PLL_Clk_in_Local}] +#create_clock -period 8.000 -waveform {0.000 4.000} [get_nets {PLL_Clk_in_North}] +#create_clock -period 8.000 -waveform {0.000 4.000} [get_nets {PLL_Clk_in_South}] +#create_clock -period 8.000 -waveform {0.000 4.000} [get_nets {PLL_Clk_in_Top}] +#create_clock -period 8.000 -waveform {0.000 4.000} [get_nets {PLL_Clk_in_Bottom}] + +##### Clocks from neighbours (125 MHz) ##### +#create_clock -period 8.000 -waveform {0.000 4.000} [get_nets {Clk_in_North}] +#create_clock -period 8.000 -waveform {0.000 4.000} [get_nets {Clk_in_South}] +#create_clock -period 8.000 -waveform {0.000 4.000} [get_nets {Clk_in_East}] +#create_clock -period 8.000 -waveform {0.000 4.000} [get_nets {Clk_in_West}] +#create_clock -period 8.000 -waveform {0.000 4.000} [get_nets {Clk_in_Top}] +#create_clock -period 8.000 -waveform {0.000 4.000} [get_nets {Clk_in_Bottom}] + +# Output delays +#create_clock -name clk_125 -period 8.000 [get_nets sys_clock_clk_125] +#set_output_delay 1.000 -clock [get_clocks clk_125] [get_ports Led12V5RxSO] +#set_output_delay 1.000 -clock [get_clocks clk_125] [get_ports Led12V5RxSO] +#set_output_delay 1.000 -clock [get_clocks clk_125] [get_ports Led12V5RxSO] -- GitLab