diff --git a/designs/vivado/scalp_safe_firmware/2020.2/src/constrs/debug.xdc b/designs/vivado/scalp_safe_firmware/2020.2/src/constrs/debug.xdc index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b529727ce2e701912a1bc9839815616ae3f4f86f 100644 --- a/designs/vivado/scalp_safe_firmware/2020.2/src/constrs/debug.xdc +++ b/designs/vivado/scalp_safe_firmware/2020.2/src/constrs/debug.xdc @@ -0,0 +1,42 @@ +create_debug_core u_ila_0 ila +set_property ALL_PROBE_SAME_MU true [get_debug_cores u_ila_0] +set_property ALL_PROBE_SAME_MU_CNT 1 [get_debug_cores u_ila_0] +set_property C_ADV_TRIGGER false [get_debug_cores u_ila_0] +set_property C_DATA_DEPTH 1024 [get_debug_cores u_ila_0] +set_property C_EN_STRG_QUAL false [get_debug_cores u_ila_0] +set_property C_INPUT_PIPE_STAGES 0 [get_debug_cores u_ila_0] +set_property C_TRIGIN_EN false [get_debug_cores u_ila_0] +set_property C_TRIGOUT_EN false [get_debug_cores u_ila_0] +set_property port_width 1 [get_debug_ports u_ila_0/clk] +connect_debug_port u_ila_0/clk [get_nets [list ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/processing_system7_0/inst/FCLK_CLK0]] +set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe0] +set_property port_width 12 [get_debug_ports u_ila_0/probe0] +connect_debug_port u_ila_0/probe0 [get_nets [list {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrAddrxD[0]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrAddrxD[1]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrAddrxD[2]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrAddrxD[3]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrAddrxD[4]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrAddrxD[5]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrAddrxD[6]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrAddrxD[7]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrAddrxD[8]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrAddrxD[9]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrAddrxD[10]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrAddrxD[11]}]] +create_debug_port u_ila_0 probe +set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe1] +set_property port_width 32 [get_debug_ports u_ila_0/probe1] +connect_debug_port u_ila_0/probe1 [get_nets [list {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[0]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[1]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[2]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[3]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[4]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[5]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[6]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[7]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[8]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[9]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[10]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[11]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[12]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[13]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[14]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[15]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[16]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[17]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[18]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[19]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[20]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[21]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[22]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[23]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[24]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[25]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[26]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[27]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[28]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[29]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[30]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[31]}]] +create_debug_port u_ila_0 probe +set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe2] +set_property port_width 32 [get_debug_ports u_ila_0/probe2] +connect_debug_port u_ila_0/probe2 [get_nets [list {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[0]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[1]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[2]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[3]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[4]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[5]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[6]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[7]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[8]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[9]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[10]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[11]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[12]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[13]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[14]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[15]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[16]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[17]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[18]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[19]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[20]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[21]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[22]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[23]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[24]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[25]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[26]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[27]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[28]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[29]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[30]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[31]}]] +create_debug_port u_ila_0 probe +set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe3] +set_property port_width 32 [get_debug_ports u_ila_0/probe3] +connect_debug_port u_ila_0/probe3 [get_nets [list {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[0]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[1]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[2]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[3]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[4]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[5]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[6]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[7]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[8]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[9]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[10]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[11]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[12]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[13]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[14]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[15]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[16]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[17]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[18]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[19]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[20]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[21]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[22]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[23]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[24]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[25]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[26]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[27]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[28]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[29]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[30]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[31]}]] +create_debug_port u_ila_0 probe +set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe4] +set_property port_width 12 [get_debug_ports u_ila_0/probe4] +connect_debug_port u_ila_0/probe4 [get_nets [list {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdAddrxD[0]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdAddrxD[1]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdAddrxD[2]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdAddrxD[3]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdAddrxD[4]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdAddrxD[5]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdAddrxD[6]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdAddrxD[7]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdAddrxD[8]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdAddrxD[9]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdAddrxD[10]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdAddrxD[11]}]] +create_debug_port u_ila_0 probe +set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe5] +set_property port_width 1 [get_debug_ports u_ila_0/probe5] +connect_debug_port u_ila_0/probe5 [get_nets [list ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdValidxS]] +create_debug_port u_ila_0 probe +set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe6] +set_property port_width 1 [get_debug_ports u_ila_0/probe6] +connect_debug_port u_ila_0/probe6 [get_nets [list ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrValidxS]] +set_property C_CLK_INPUT_FREQ_HZ 300000000 [get_debug_cores dbg_hub] +set_property C_ENABLE_CLK_DIVIDER false [get_debug_cores dbg_hub] +set_property C_USER_SCAN_CHAIN 1 [get_debug_cores dbg_hub] +connect_debug_port dbg_hub/clk [get_nets PSSysClkxC] diff --git a/designs/vivado/scalp_safe_firmware/2020.2/src/constrs/scalp_safe_firmware.xdc b/designs/vivado/scalp_safe_firmware/2020.2/src/constrs/scalp_safe_firmware.xdc index dcd34d94609d8c00b9c6db15e06d95b2eca5ebe9..1c6f11890dceff8dec33e552c46327b64189a891 100644 --- a/designs/vivado/scalp_safe_firmware/2020.2/src/constrs/scalp_safe_firmware.xdc +++ b/designs/vivado/scalp_safe_firmware/2020.2/src/constrs/scalp_safe_firmware.xdc @@ -250,3 +250,4 @@ set_operating_conditions -airflow 0 -heatsink none -board small + diff --git a/designs/vivado/scalp_safe_firmware/2020.2/src/constrs/timing_constraints.xdc b/designs/vivado/scalp_safe_firmware/2020.2/src/constrs/timing_constraints.xdc index 3a458f2af5014e25fd7a09250af52e68a786475c..4e6bc99bf0860f3bb0b41de5d77703375e7c0b6b 100644 --- a/designs/vivado/scalp_safe_firmware/2020.2/src/constrs/timing_constraints.xdc +++ b/designs/vivado/scalp_safe_firmware/2020.2/src/constrs/timing_constraints.xdc @@ -30,3 +30,4 @@ create_clock -period 8.000 -waveform {0.000 4.000} [get_ports PSClkxCIO] + diff --git a/designs/vivado/scalp_safe_firmware/2020.2/src/hdl/scalp_safe_firmware.vhd b/designs/vivado/scalp_safe_firmware/2020.2/src/hdl/scalp_safe_firmware.vhd index 1c4f13e6907d2ec7ea0f0ae997cea7a8677ded63..1443b87f34c75e61c4ce95e224722d7c9d0d11ec 100644 --- a/designs/vivado/scalp_safe_firmware/2020.2/src/hdl/scalp_safe_firmware.vhd +++ b/designs/vivado/scalp_safe_firmware/2020.2/src/hdl/scalp_safe_firmware.vhd @@ -15,7 +15,7 @@ -- Tool version: 2020.2 -- Description: scalp_firmware -- --- Last update: 2021-03-12 +-- Last update: 2021-03-22 -- --------------------------------------------------------------------------------- @@ -276,29 +276,33 @@ architecture arch of scalp_safe_firmware is -- Signals -- Clocks -- Processing system clock - signal PSSysClkxC : std_logic := '0'; + signal PSSysClkxC : std_logic := '0'; -- Resets -- Processing system reset - signal PSSysResetxR : std_logic := '0'; + signal PSSysResetxR : std_logic := '0'; -- Scalp Axi Lite interface and IRQ - signal InterruptxS : std_ulogic := '0'; - signal RdAddrxD : std_ulogic_vector((C_AXI_ADDR_SIZE - 1) downto 0) := (others => '0'); - signal RdDataxD : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal RdValidxS : std_ulogic := '0'; - signal WrAddrxD : std_ulogic_vector((C_AXI_ADDR_SIZE - 1) downto 0) := (others => '0'); - signal WrDataxD : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal WrValidxS : std_ulogic := '0'; + signal InterruptxS : std_ulogic := '0'; + signal RdAddrxD : std_ulogic_vector((C_AXI_ADDR_SIZE - 1) downto 0) := (others => '0'); + signal RdDataxD : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + signal RdValidxS : std_ulogic := '0'; + signal WrAddrxD : std_ulogic_vector((C_AXI_ADDR_SIZE - 1) downto 0) := (others => '0'); + signal WrDataxD : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + signal WrValidxS : std_ulogic := '0'; -- Zynq Reg Bank - signal CtrlRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal CtrlRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + signal CtrlRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + signal CtrlRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); -- RGB Leds - signal Led12V5RxS : std_ulogic := '0'; - signal Led12V5GxS : std_ulogic := '0'; - signal Led12V5BxS : std_ulogic := '0'; - signal Led22V5RxS : std_ulogic := '0'; - signal Led22V5GxS : std_ulogic := '0'; - signal Led22V5BxS : std_ulogic := '0'; - + signal Led12V5RxS : std_ulogic := '0'; + signal Led12V5GxS : std_ulogic := '0'; + signal Led12V5BxS : std_ulogic := '0'; + signal Led22V5RxS : std_ulogic := '0'; + signal Led22V5GxS : std_ulogic := '0'; + signal Led22V5BxS : std_ulogic := '0'; + -- RgbLeds Ctrl Port + signal RgbLedsCtrlPortxD : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + + -- RGB Leds Enum + type t_rgb_leds is (E_LED1_R, E_LED1_G, E_LED1_B, E_LED2_R, E_LED2_G, E_LED2_B); -- Attributes attribute mark_debug : string; @@ -353,7 +357,8 @@ begin RdValidxSO => RdValidxS, WrAddrxDO => WrAddrxD, WrDataxDO => WrDataxD, - WrValidxSO => WrValidxS); + WrValidxSO => WrValidxS, + RgbLedsCtrlPortxDO => RgbLedsCtrlPortxD); end block ProcessingSystemxB; @@ -363,12 +368,12 @@ begin EntityIOxB : block is begin - Led12V5RxAS : Led12V5RxSO <= Led12V5RxS; - Led12V5GxAS : Led12V5GxSO <= Led12V5GxS; - Led12V5BxAS : Led12V5BxSO <= Led12V5BxS; - Led22V5RxAS : Led22V5RxSO <= Led22V5RxS; - Led22V5GxAS : Led22V5GxSO <= Led22V5GxS; - Led22V5BxAS : Led22V5BxSO <= Led22V5BxS; + Led12V5RxAS : Led12V5RxSO <= RgbLedsCtrlPortxD(0); + Led12V5GxAS : Led12V5GxSO <= RgbLedsCtrlPortxD(1); + Led12V5BxAS : Led12V5BxSO <= RgbLedsCtrlPortxD(2); + Led22V5RxAS : Led22V5RxSO <= RgbLedsCtrlPortxD(3); + Led22V5GxAS : Led22V5GxSO <= RgbLedsCtrlPortxD(4); + Led22V5BxAS : Led22V5BxSO <= RgbLedsCtrlPortxD(5); end block EntityIOxB; diff --git a/designs/vivado/scalp_user_firmware/2020.2/src/constrs/debug.xdc b/designs/vivado/scalp_user_firmware/2020.2/src/constrs/debug.xdc index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c3376ce2522cf4c1ea2cd1b345d8002c9d2994b0 100644 --- a/designs/vivado/scalp_user_firmware/2020.2/src/constrs/debug.xdc +++ b/designs/vivado/scalp_user_firmware/2020.2/src/constrs/debug.xdc @@ -0,0 +1,42 @@ +create_debug_core u_ila_0 ila +set_property ALL_PROBE_SAME_MU true [get_debug_cores u_ila_0] +set_property ALL_PROBE_SAME_MU_CNT 1 [get_debug_cores u_ila_0] +set_property C_ADV_TRIGGER false [get_debug_cores u_ila_0] +set_property C_DATA_DEPTH 1024 [get_debug_cores u_ila_0] +set_property C_EN_STRG_QUAL false [get_debug_cores u_ila_0] +set_property C_INPUT_PIPE_STAGES 0 [get_debug_cores u_ila_0] +set_property C_TRIGIN_EN false [get_debug_cores u_ila_0] +set_property C_TRIGOUT_EN false [get_debug_cores u_ila_0] +set_property port_width 1 [get_debug_ports u_ila_0/clk] +connect_debug_port u_ila_0/clk [get_nets [list ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/processing_system7_0/inst/FCLK_CLK0]] +set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe0] +set_property port_width 32 [get_debug_ports u_ila_0/probe0] +connect_debug_port u_ila_0/probe0 [get_nets [list {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[0]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[1]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[2]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[3]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[4]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[5]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[6]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[7]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[8]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[9]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[10]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[11]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[12]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[13]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[14]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[15]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[16]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[17]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[18]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[19]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[20]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[21]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[22]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[23]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[24]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[25]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[26]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[27]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[28]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[29]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[30]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrDataxD[31]}]] +create_debug_port u_ila_0 probe +set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe1] +set_property port_width 12 [get_debug_ports u_ila_0/probe1] +connect_debug_port u_ila_0/probe1 [get_nets [list {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdAddrxD[0]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdAddrxD[1]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdAddrxD[2]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdAddrxD[3]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdAddrxD[4]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdAddrxD[5]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdAddrxD[6]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdAddrxD[7]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdAddrxD[8]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdAddrxD[9]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdAddrxD[10]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdAddrxD[11]}]] +create_debug_port u_ila_0 probe +set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe2] +set_property port_width 12 [get_debug_ports u_ila_0/probe2] +connect_debug_port u_ila_0/probe2 [get_nets [list {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrAddrxD[0]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrAddrxD[1]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrAddrxD[2]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrAddrxD[3]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrAddrxD[4]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrAddrxD[5]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrAddrxD[6]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrAddrxD[7]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrAddrxD[8]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrAddrxD[9]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrAddrxD[10]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrAddrxD[11]}]] +create_debug_port u_ila_0 probe +set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe3] +set_property port_width 32 [get_debug_ports u_ila_0/probe3] +connect_debug_port u_ila_0/probe3 [get_nets [list {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[0]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[1]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[2]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[3]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[4]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[5]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[6]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[7]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[8]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[9]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[10]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[11]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[12]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[13]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[14]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[15]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[16]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[17]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[18]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[19]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[20]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[21]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[22]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[23]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[24]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[25]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[26]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[27]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[28]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[29]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[30]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RgbLedsCtrlPortxDP[31]}]] +create_debug_port u_ila_0 probe +set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe4] +set_property port_width 32 [get_debug_ports u_ila_0/probe4] +connect_debug_port u_ila_0/probe4 [get_nets [list {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[0]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[1]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[2]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[3]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[4]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[5]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[6]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[7]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[8]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[9]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[10]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[11]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[12]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[13]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[14]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[15]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[16]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[17]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[18]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[19]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[20]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[21]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[22]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[23]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[24]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[25]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[26]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[27]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[28]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[29]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[30]} {ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdDataxD[31]}]] +create_debug_port u_ila_0 probe +set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe5] +set_property port_width 1 [get_debug_ports u_ila_0/probe5] +connect_debug_port u_ila_0/probe5 [get_nets [list ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/RdValidxS]] +create_debug_port u_ila_0 probe +set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe6] +set_property port_width 1 [get_debug_ports u_ila_0/probe6] +connect_debug_port u_ila_0/probe6 [get_nets [list ProcessingSystemxB.ZynqxI/ScalpZynqPSxI/scalp_safe_firmware_0/U0/WrValidxS]] +set_property C_CLK_INPUT_FREQ_HZ 300000000 [get_debug_cores dbg_hub] +set_property C_ENABLE_CLK_DIVIDER false [get_debug_cores dbg_hub] +set_property C_USER_SCAN_CHAIN 1 [get_debug_cores dbg_hub] +connect_debug_port dbg_hub/clk [get_nets PSSysClkxC] diff --git a/designs/vivado/scalp_user_firmware/2020.2/src/constrs/scalp_user_firmware.xdc b/designs/vivado/scalp_user_firmware/2020.2/src/constrs/scalp_user_firmware.xdc index dcd34d94609d8c00b9c6db15e06d95b2eca5ebe9..1c6f11890dceff8dec33e552c46327b64189a891 100644 --- a/designs/vivado/scalp_user_firmware/2020.2/src/constrs/scalp_user_firmware.xdc +++ b/designs/vivado/scalp_user_firmware/2020.2/src/constrs/scalp_user_firmware.xdc @@ -250,3 +250,4 @@ set_operating_conditions -airflow 0 -heatsink none -board small + diff --git a/designs/vivado/scalp_user_firmware/2020.2/src/constrs/timing_constraints.xdc b/designs/vivado/scalp_user_firmware/2020.2/src/constrs/timing_constraints.xdc index 3a458f2af5014e25fd7a09250af52e68a786475c..4e6bc99bf0860f3bb0b41de5d77703375e7c0b6b 100644 --- a/designs/vivado/scalp_user_firmware/2020.2/src/constrs/timing_constraints.xdc +++ b/designs/vivado/scalp_user_firmware/2020.2/src/constrs/timing_constraints.xdc @@ -30,3 +30,4 @@ create_clock -period 8.000 -waveform {0.000 4.000} [get_ports PSClkxCIO] + diff --git a/designs/vivado/scalp_user_firmware/2020.2/src/hdl/scalp_user_firmware.vhd b/designs/vivado/scalp_user_firmware/2020.2/src/hdl/scalp_user_firmware.vhd index 753b96c9a33de0ca7668bbf5627eadbe9e40e32d..0d7fe3062c09add697f5fef9e80151a3044ce3b3 100644 --- a/designs/vivado/scalp_user_firmware/2020.2/src/hdl/scalp_user_firmware.vhd +++ b/designs/vivado/scalp_user_firmware/2020.2/src/hdl/scalp_user_firmware.vhd @@ -15,7 +15,7 @@ -- Tool version: 2020.2 -- Description: scalp_user_firmware -- --- Last update: 2021-03-17 +-- Last update: 2021-03-24 -- --------------------------------------------------------------------------------- @@ -275,28 +275,23 @@ architecture arch of scalp_user_firmware is -- Signals -- Clocks -- Processing system clock - signal PSSysClkxC : std_logic := '0'; + signal PSSysClkxC : std_logic := '0'; -- Resets -- Processing system reset - signal PSSysResetxR : std_logic := '0'; + signal PSSysResetxR : std_logic := '0'; -- Scalp Axi Lite interface and IRQ - signal InterruptxS : std_ulogic := '0'; - signal RdAddrxD : std_ulogic_vector((C_AXI_ADDR_SIZE - 1) downto 0) := (others => '0'); - signal RdDataxD : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal RdValidxS : std_ulogic := '0'; - signal WrAddrxD : std_ulogic_vector((C_AXI_ADDR_SIZE - 1) downto 0) := (others => '0'); - signal WrDataxD : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal WrValidxS : std_ulogic := '0'; + signal InterruptxS : std_ulogic := '0'; + signal RdAddrxD : std_ulogic_vector((C_AXI_ADDR_SIZE - 1) downto 0) := (others => '0'); + signal RdDataxD : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + signal RdValidxS : std_ulogic := '0'; + signal WrAddrxD : std_ulogic_vector((C_AXI_ADDR_SIZE - 1) downto 0) := (others => '0'); + signal WrDataxD : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + signal WrValidxS : std_ulogic := '0'; -- Zynq Reg Bank - signal CtrlRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal CtrlRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + signal CtrlRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + signal CtrlRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); -- RGB Leds - signal Led12V5RxS : std_ulogic := '0'; - signal Led12V5GxS : std_ulogic := '0'; - signal Led12V5BxS : std_ulogic := '0'; - signal Led22V5RxS : std_ulogic := '0'; - signal Led22V5GxS : std_ulogic := '0'; - signal Led22V5BxS : std_ulogic := '0'; + signal RgbLedsCtrlPortxD : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); -- Attributes @@ -352,7 +347,8 @@ begin RdValidxSO => RdValidxS, WrAddrxDO => WrAddrxD, WrDataxDO => WrDataxD, - WrValidxSO => WrValidxS); + WrValidxSO => WrValidxS, + RgbLedsCtrlPortxDO => RgbLedsCtrlPortxD); end block ProcessingSystemxB; @@ -362,12 +358,12 @@ begin EntityIOxB : block is begin - Led12V5RxAS : Led12V5RxSO <= Led12V5RxS; - Led12V5GxAS : Led12V5GxSO <= Led12V5GxS; - Led12V5BxAS : Led12V5BxSO <= Led12V5BxS; - Led22V5RxAS : Led22V5RxSO <= Led22V5RxS; - Led22V5GxAS : Led22V5GxSO <= Led22V5GxS; - Led22V5BxAS : Led22V5BxSO <= Led22V5BxS; + Led12V5RxAS : Led12V5RxSO <= RgbLedsCtrlPortxD(0); + Led12V5GxAS : Led12V5GxSO <= RgbLedsCtrlPortxD(1); + Led12V5BxAS : Led12V5BxSO <= RgbLedsCtrlPortxD(2); + Led22V5RxAS : Led22V5RxSO <= RgbLedsCtrlPortxD(3); + Led22V5GxAS : Led22V5GxSO <= RgbLedsCtrlPortxD(4); + Led22V5BxAS : Led22V5BxSO <= RgbLedsCtrlPortxD(5); end block EntityIOxB; diff --git a/ips/hw/scalp_safe_firmware_reg_bank/component.xml b/ips/hw/scalp_safe_firmware_reg_bank/component.xml new file mode 100644 index 0000000000000000000000000000000000000000..def71d6ec64180c72f8e5a117b71d5406ec78b76 --- /dev/null +++ b/ips/hw/scalp_safe_firmware_reg_bank/component.xml @@ -0,0 +1,829 @@ +<?xml version="1.0" encoding="UTF-8"?> +<spirit:component xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <spirit:vendor>hepia.ch</spirit:vendor> + <spirit:library>user</spirit:library> + <spirit:name>scalp_safe_firmware_reg_bank</spirit:name> + <spirit:version>1.3</spirit:version> + <spirit:busInterfaces> + <spirit:busInterface> + <spirit:name>SAXILitexDIO</spirit:name> + <spirit:displayName>SAXILitexDIO</spirit:displayName> + <spirit:busType spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="aximm" spirit:version="1.0"/> + <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="aximm_rtl" spirit:version="1.0"/> + <spirit:slave> + <spirit:memoryMapRef spirit:memoryMapRef="SAXILitexDIO"/> + </spirit:slave> + <spirit:portMaps> + <spirit:portMap> + <spirit:logicalPort> + <spirit:name>RREADY</spirit:name> + </spirit:logicalPort> + <spirit:physicalPort> + <spirit:name>SAxiRReadyxSI</spirit:name> + </spirit:physicalPort> + </spirit:portMap> + <spirit:portMap> + <spirit:logicalPort> + <spirit:name>BVALID</spirit:name> + </spirit:logicalPort> + <spirit:physicalPort> + <spirit:name>SAxiBValidxSO</spirit:name> + </spirit:physicalPort> + </spirit:portMap> + <spirit:portMap> + <spirit:logicalPort> + <spirit:name>BREADY</spirit:name> + </spirit:logicalPort> + <spirit:physicalPort> + <spirit:name>SAxiBReadyxSI</spirit:name> + </spirit:physicalPort> + </spirit:portMap> + <spirit:portMap> + <spirit:logicalPort> + <spirit:name>AWVALID</spirit:name> + </spirit:logicalPort> + <spirit:physicalPort> + <spirit:name>SAxiAWValidxSI</spirit:name> + </spirit:physicalPort> + </spirit:portMap> + <spirit:portMap> + <spirit:logicalPort> + <spirit:name>AWREADY</spirit:name> + </spirit:logicalPort> + <spirit:physicalPort> + <spirit:name>SAxiAWReadyxSO</spirit:name> + </spirit:physicalPort> + </spirit:portMap> + <spirit:portMap> + <spirit:logicalPort> + <spirit:name>WDATA</spirit:name> + </spirit:logicalPort> + <spirit:physicalPort> + <spirit:name>SAxiWDataxDI</spirit:name> + </spirit:physicalPort> + </spirit:portMap> + <spirit:portMap> + <spirit:logicalPort> + <spirit:name>RRESP</spirit:name> + </spirit:logicalPort> + <spirit:physicalPort> + <spirit:name>SAxiRRespxDO</spirit:name> + </spirit:physicalPort> + </spirit:portMap> + <spirit:portMap> + <spirit:logicalPort> + <spirit:name>RVALID</spirit:name> + </spirit:logicalPort> + <spirit:physicalPort> + <spirit:name>SAxiRValidxSO</spirit:name> + </spirit:physicalPort> + </spirit:portMap> + <spirit:portMap> + <spirit:logicalPort> + <spirit:name>ARADDR</spirit:name> + </spirit:logicalPort> + <spirit:physicalPort> + <spirit:name>SAxiARAddrxDI</spirit:name> + </spirit:physicalPort> + </spirit:portMap> + <spirit:portMap> + <spirit:logicalPort> + <spirit:name>ARREADY</spirit:name> + </spirit:logicalPort> + <spirit:physicalPort> + <spirit:name>SAxiARReadyxSO</spirit:name> + </spirit:physicalPort> + </spirit:portMap> + <spirit:portMap> + <spirit:logicalPort> + <spirit:name>AWADDR</spirit:name> + </spirit:logicalPort> + <spirit:physicalPort> + <spirit:name>SAxiAWAddrxDI</spirit:name> + </spirit:physicalPort> + </spirit:portMap> + <spirit:portMap> + <spirit:logicalPort> + <spirit:name>WVALID</spirit:name> + </spirit:logicalPort> + <spirit:physicalPort> + <spirit:name>SAxiWValidxSI</spirit:name> + </spirit:physicalPort> + </spirit:portMap> + <spirit:portMap> + <spirit:logicalPort> + <spirit:name>WREADY</spirit:name> + </spirit:logicalPort> + <spirit:physicalPort> + <spirit:name>SAxiWReadyxSO</spirit:name> + </spirit:physicalPort> + </spirit:portMap> + <spirit:portMap> + <spirit:logicalPort> + <spirit:name>ARVALID</spirit:name> + </spirit:logicalPort> + <spirit:physicalPort> + <spirit:name>SAxiARValidxSI</spirit:name> + </spirit:physicalPort> + </spirit:portMap> + <spirit:portMap> + <spirit:logicalPort> + <spirit:name>WSTRB</spirit:name> + </spirit:logicalPort> + <spirit:physicalPort> + <spirit:name>SAxiWStrbxDI</spirit:name> + </spirit:physicalPort> + </spirit:portMap> + <spirit:portMap> + <spirit:logicalPort> + <spirit:name>BRESP</spirit:name> + </spirit:logicalPort> + <spirit:physicalPort> + <spirit:name>SAxiBRespxDO</spirit:name> + </spirit:physicalPort> + </spirit:portMap> + <spirit:portMap> + <spirit:logicalPort> + <spirit:name>RDATA</spirit:name> + </spirit:logicalPort> + <spirit:physicalPort> + <spirit:name>SAxiRDataxDO</spirit:name> + </spirit:physicalPort> + </spirit:portMap> + </spirit:portMaps> + <spirit:parameters> + <spirit:parameter> + <spirit:name>NUM_READ_OUTSTANDING</spirit:name> + <spirit:value spirit:id="BUSIFPARAM_VALUE.SAXILITEXDIO.NUM_READ_OUTSTANDING"/> + </spirit:parameter> + <spirit:parameter> + <spirit:name>NUM_WRITE_OUTSTANDING</spirit:name> + <spirit:value spirit:id="BUSIFPARAM_VALUE.SAXILITEXDIO.NUM_WRITE_OUTSTANDING"/> + </spirit:parameter> + </spirit:parameters> + </spirit:busInterface> + <spirit:busInterface> + <spirit:name>SAXILiteClkxCI</spirit:name> + <spirit:displayName>SAXILiteClkxCI</spirit:displayName> + <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock" spirit:version="1.0"/> + <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="clock_rtl" spirit:version="1.0"/> + <spirit:slave/> + <spirit:portMaps> + <spirit:portMap> + <spirit:logicalPort> + <spirit:name>CLK</spirit:name> + </spirit:logicalPort> + <spirit:physicalPort> + <spirit:name>SAxiClkxCI</spirit:name> + </spirit:physicalPort> + </spirit:portMap> + </spirit:portMaps> + <spirit:parameters> + <spirit:parameter> + <spirit:name>FREQ_HZ</spirit:name> + <spirit:value spirit:id="BUSIFPARAM_VALUE.SAXILITECLKXCI.FREQ_HZ"/> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ASSOCIATED_BUSIF</spirit:name> + <spirit:value spirit:id="BUSIFPARAM_VALUE.SAXILITECLKXCI.ASSOCIATED_BUSIF">SAXILitexDIO</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>ASSOCIATED_RESET</spirit:name> + <spirit:value spirit:id="BUSIFPARAM_VALUE.SAXILITECLKXCI.ASSOCIATED_RESET">SAxiLiteRstxRANI:SAxiRstxRANI</spirit:value> + </spirit:parameter> + </spirit:parameters> + </spirit:busInterface> + <spirit:busInterface> + <spirit:name>SAxiLiteRstxRANI</spirit:name> + <spirit:displayName>SAxiLiteRstxRANI</spirit:displayName> + <spirit:busType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="reset" spirit:version="1.0"/> + <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="signal" spirit:name="reset_rtl" spirit:version="1.0"/> + <spirit:slave/> + <spirit:portMaps> + <spirit:portMap> + <spirit:logicalPort> + <spirit:name>RST</spirit:name> + </spirit:logicalPort> + <spirit:physicalPort> + <spirit:name>SAxiRstxRANI</spirit:name> + </spirit:physicalPort> + </spirit:portMap> + </spirit:portMaps> + </spirit:busInterface> + </spirit:busInterfaces> + <spirit:memoryMaps> + <spirit:memoryMap> + <spirit:name>SAXILitexDIO</spirit:name> + <spirit:addressBlock> + <spirit:name>SAXILiteAddr</spirit:name> + <spirit:displayName>SAXILiteAddr</spirit:displayName> + <spirit:baseAddress spirit:format="long">0</spirit:baseAddress> + <spirit:range spirit:format="long">4K</spirit:range> + <spirit:width spirit:format="long">0</spirit:width> + </spirit:addressBlock> + </spirit:memoryMap> + </spirit:memoryMaps> + <spirit:model> + <spirit:views> + <spirit:view> + <spirit:name>xilinx_anylanguagesynthesis</spirit:name> + <spirit:displayName>Synthesis</spirit:displayName> + <spirit:envIdentifier>:vivado.xilinx.com:synthesis</spirit:envIdentifier> + <spirit:language>VHDL-2008</spirit:language> + <spirit:modelName>scalp_safe_firmware_reg_bank</spirit:modelName> + <spirit:fileSetRef> + <spirit:localName>xilinx_anylanguagesynthesis_view_fileset</spirit:localName> + </spirit:fileSetRef> + <spirit:parameters> + <spirit:parameter> + <spirit:name>viewChecksum</spirit:name> + <spirit:value>36589b1c</spirit:value> + </spirit:parameter> + </spirit:parameters> + </spirit:view> + <spirit:view> + <spirit:name>xilinx_anylanguagebehavioralsimulation</spirit:name> + <spirit:displayName>Simulation</spirit:displayName> + <spirit:envIdentifier>:vivado.xilinx.com:simulation</spirit:envIdentifier> + <spirit:language>VHDL-2008</spirit:language> + <spirit:modelName>scalp_safe_firmware_reg_bank</spirit:modelName> + <spirit:fileSetRef> + <spirit:localName>xilinx_anylanguagebehavioralsimulation_view_fileset</spirit:localName> + </spirit:fileSetRef> + <spirit:parameters> + <spirit:parameter> + <spirit:name>viewChecksum</spirit:name> + <spirit:value>36589b1c</spirit:value> + </spirit:parameter> + </spirit:parameters> + </spirit:view> + <spirit:view> + <spirit:name>xilinx_xpgui</spirit:name> + <spirit:displayName>UI Layout</spirit:displayName> + <spirit:envIdentifier>:vivado.xilinx.com:xgui.ui</spirit:envIdentifier> + <spirit:fileSetRef> + <spirit:localName>xilinx_xpgui_view_fileset</spirit:localName> + </spirit:fileSetRef> + <spirit:parameters> + <spirit:parameter> + <spirit:name>viewChecksum</spirit:name> + <spirit:value>94c74469</spirit:value> + </spirit:parameter> + </spirit:parameters> + </spirit:view> + </spirit:views> + <spirit:ports> + <spirit:port> + <spirit:name>SAxiClkxCI</spirit:name> + <spirit:wire> + <spirit:direction>in</spirit:direction> + <spirit:wireTypeDefs> + <spirit:wireTypeDef> + <spirit:typeName>std_ulogic</spirit:typeName> + <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> + <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> + </spirit:wireTypeDef> + </spirit:wireTypeDefs> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:name>SAxiRstxRANI</spirit:name> + <spirit:wire> + <spirit:direction>in</spirit:direction> + <spirit:wireTypeDefs> + <spirit:wireTypeDef> + <spirit:typeName>std_ulogic</spirit:typeName> + <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> + <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> + </spirit:wireTypeDef> + </spirit:wireTypeDefs> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:name>SAxiARAddrxDI</spirit:name> + <spirit:wire> + <spirit:direction>in</spirit:direction> + <spirit:vector> + <spirit:left spirit:format="long" spirit:resolve="dependent" spirit:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_AXI4_ARADDR_SIZE')) - 1)">31</spirit:left> + <spirit:right spirit:format="long">0</spirit:right> + </spirit:vector> + <spirit:wireTypeDefs> + <spirit:wireTypeDef> + <spirit:typeName>std_ulogic_vector</spirit:typeName> + <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> + <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> + </spirit:wireTypeDef> + </spirit:wireTypeDefs> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:name>SAxiARValidxSI</spirit:name> + <spirit:wire> + <spirit:direction>in</spirit:direction> + <spirit:wireTypeDefs> + <spirit:wireTypeDef> + <spirit:typeName>std_ulogic</spirit:typeName> + <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> + <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> + </spirit:wireTypeDef> + </spirit:wireTypeDefs> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:name>SAxiARReadyxSO</spirit:name> + <spirit:wire> + <spirit:direction>out</spirit:direction> + <spirit:wireTypeDefs> + <spirit:wireTypeDef> + <spirit:typeName>std_ulogic</spirit:typeName> + <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> + <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> + </spirit:wireTypeDef> + </spirit:wireTypeDefs> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:name>SAxiRDataxDO</spirit:name> + <spirit:wire> + <spirit:direction>out</spirit:direction> + <spirit:vector> + <spirit:left spirit:format="long" spirit:resolve="dependent" spirit:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_AXI4_RDATA_SIZE')) - 1)">31</spirit:left> + <spirit:right spirit:format="long">0</spirit:right> + </spirit:vector> + <spirit:wireTypeDefs> + <spirit:wireTypeDef> + <spirit:typeName>std_ulogic_vector</spirit:typeName> + <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> + <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> + </spirit:wireTypeDef> + </spirit:wireTypeDefs> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:name>SAxiRRespxDO</spirit:name> + <spirit:wire> + <spirit:direction>out</spirit:direction> + <spirit:vector> + <spirit:left spirit:format="long" spirit:resolve="dependent" spirit:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_AXI4_RRESP_SIZE')) - 1)">1</spirit:left> + <spirit:right spirit:format="long">0</spirit:right> + </spirit:vector> + <spirit:wireTypeDefs> + <spirit:wireTypeDef> + <spirit:typeName>std_ulogic_vector</spirit:typeName> + <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> + <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> + </spirit:wireTypeDef> + </spirit:wireTypeDefs> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:name>SAxiRValidxSO</spirit:name> + <spirit:wire> + <spirit:direction>out</spirit:direction> + <spirit:wireTypeDefs> + <spirit:wireTypeDef> + <spirit:typeName>std_ulogic</spirit:typeName> + <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> + <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> + </spirit:wireTypeDef> + </spirit:wireTypeDefs> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:name>SAxiRReadyxSI</spirit:name> + <spirit:wire> + <spirit:direction>in</spirit:direction> + <spirit:wireTypeDefs> + <spirit:wireTypeDef> + <spirit:typeName>std_ulogic</spirit:typeName> + <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> + <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> + </spirit:wireTypeDef> + </spirit:wireTypeDefs> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:name>SAxiAWAddrxDI</spirit:name> + <spirit:wire> + <spirit:direction>in</spirit:direction> + <spirit:vector> + <spirit:left spirit:format="long" spirit:resolve="dependent" spirit:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_AXI4_AWADDR_SIZE')) - 1)">31</spirit:left> + <spirit:right spirit:format="long">0</spirit:right> + </spirit:vector> + <spirit:wireTypeDefs> + <spirit:wireTypeDef> + <spirit:typeName>std_ulogic_vector</spirit:typeName> + <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> + <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> + </spirit:wireTypeDef> + </spirit:wireTypeDefs> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:name>SAxiAWValidxSI</spirit:name> + <spirit:wire> + <spirit:direction>in</spirit:direction> + <spirit:wireTypeDefs> + <spirit:wireTypeDef> + <spirit:typeName>std_ulogic</spirit:typeName> + <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> + <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> + </spirit:wireTypeDef> + </spirit:wireTypeDefs> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:name>SAxiAWReadyxSO</spirit:name> + <spirit:wire> + <spirit:direction>out</spirit:direction> + <spirit:wireTypeDefs> + <spirit:wireTypeDef> + <spirit:typeName>std_ulogic</spirit:typeName> + <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> + <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> + </spirit:wireTypeDef> + </spirit:wireTypeDefs> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:name>SAxiWDataxDI</spirit:name> + <spirit:wire> + <spirit:direction>in</spirit:direction> + <spirit:vector> + <spirit:left spirit:format="long" spirit:resolve="dependent" spirit:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_AXI4_WDATA_SIZE')) - 1)">31</spirit:left> + <spirit:right spirit:format="long">0</spirit:right> + </spirit:vector> + <spirit:wireTypeDefs> + <spirit:wireTypeDef> + <spirit:typeName>std_ulogic_vector</spirit:typeName> + <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> + <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> + </spirit:wireTypeDef> + </spirit:wireTypeDefs> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:name>SAxiWStrbxDI</spirit:name> + <spirit:wire> + <spirit:direction>in</spirit:direction> + <spirit:vector> + <spirit:left spirit:format="long" spirit:resolve="dependent" spirit:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_AXI4_WSTRB_SIZE')) - 1)">3</spirit:left> + <spirit:right spirit:format="long">0</spirit:right> + </spirit:vector> + <spirit:wireTypeDefs> + <spirit:wireTypeDef> + <spirit:typeName>std_ulogic_vector</spirit:typeName> + <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> + <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> + </spirit:wireTypeDef> + </spirit:wireTypeDefs> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:name>SAxiWValidxSI</spirit:name> + <spirit:wire> + <spirit:direction>in</spirit:direction> + <spirit:wireTypeDefs> + <spirit:wireTypeDef> + <spirit:typeName>std_ulogic</spirit:typeName> + <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> + <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> + </spirit:wireTypeDef> + </spirit:wireTypeDefs> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:name>SAxiWReadyxSO</spirit:name> + <spirit:wire> + <spirit:direction>out</spirit:direction> + <spirit:wireTypeDefs> + <spirit:wireTypeDef> + <spirit:typeName>std_ulogic</spirit:typeName> + <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> + <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> + </spirit:wireTypeDef> + </spirit:wireTypeDefs> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:name>SAxiBRespxDO</spirit:name> + <spirit:wire> + <spirit:direction>out</spirit:direction> + <spirit:vector> + <spirit:left spirit:format="long" spirit:resolve="dependent" spirit:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_AXI4_BRESP_SIZE')) - 1)">1</spirit:left> + <spirit:right spirit:format="long">0</spirit:right> + </spirit:vector> + <spirit:wireTypeDefs> + <spirit:wireTypeDef> + <spirit:typeName>std_ulogic_vector</spirit:typeName> + <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> + <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> + </spirit:wireTypeDef> + </spirit:wireTypeDefs> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:name>SAxiBValidxSO</spirit:name> + <spirit:wire> + <spirit:direction>out</spirit:direction> + <spirit:wireTypeDefs> + <spirit:wireTypeDef> + <spirit:typeName>std_ulogic</spirit:typeName> + <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> + <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> + </spirit:wireTypeDef> + </spirit:wireTypeDefs> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:name>SAxiBReadyxSI</spirit:name> + <spirit:wire> + <spirit:direction>in</spirit:direction> + <spirit:wireTypeDefs> + <spirit:wireTypeDef> + <spirit:typeName>std_ulogic</spirit:typeName> + <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> + <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> + </spirit:wireTypeDef> + </spirit:wireTypeDefs> + </spirit:wire> + </spirit:port> + <spirit:port> + <spirit:name>RgbLedsCtrlPortxDO</spirit:name> + <spirit:wire> + <spirit:direction>out</spirit:direction> + <spirit:vector> + <spirit:left spirit:format="long" spirit:resolve="dependent" spirit:dependency="(spirit:decode(id('MODELPARAM_VALUE.C_AXI4_DATA_SIZE')) - 1)">31</spirit:left> + <spirit:right spirit:format="long">0</spirit:right> + </spirit:vector> + <spirit:wireTypeDefs> + <spirit:wireTypeDef> + <spirit:typeName>std_ulogic_vector</spirit:typeName> + <spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef> + <spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef> + </spirit:wireTypeDef> + </spirit:wireTypeDefs> + </spirit:wire> + </spirit:port> + </spirit:ports> + <spirit:modelParameters> + <spirit:modelParameter xsi:type="spirit:nameValueTypeType" spirit:dataType="integer"> + <spirit:name>C_AXI4_ARADDR_SIZE</spirit:name> + <spirit:displayName>C Axi4 Araddr Size</spirit:displayName> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_AXI4_ARADDR_SIZE" spirit:minimum="0" spirit:maximum="32" spirit:rangeType="long">32</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="integer"> + <spirit:name>C_AXI4_RDATA_SIZE</spirit:name> + <spirit:displayName>C Axi4 Rdata Size</spirit:displayName> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_AXI4_RDATA_SIZE" spirit:minimum="0" spirit:maximum="32" spirit:rangeType="long">32</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="integer"> + <spirit:name>C_AXI4_RRESP_SIZE</spirit:name> + <spirit:displayName>C Axi4 Rresp Size</spirit:displayName> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_AXI4_RRESP_SIZE" spirit:minimum="0" spirit:maximum="2" spirit:rangeType="long">2</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="integer"> + <spirit:name>C_AXI4_AWADDR_SIZE</spirit:name> + <spirit:displayName>C Axi4 Awaddr Size</spirit:displayName> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_AXI4_AWADDR_SIZE" spirit:minimum="0" spirit:maximum="32" spirit:rangeType="long">32</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="integer"> + <spirit:name>C_AXI4_WDATA_SIZE</spirit:name> + <spirit:displayName>C Axi4 Wdata Size</spirit:displayName> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_AXI4_WDATA_SIZE" spirit:minimum="0" spirit:maximum="32" spirit:rangeType="long">32</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="integer"> + <spirit:name>C_AXI4_WSTRB_SIZE</spirit:name> + <spirit:displayName>C Axi4 Wstrb Size</spirit:displayName> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_AXI4_WSTRB_SIZE" spirit:minimum="0" spirit:maximum="4" spirit:rangeType="long">4</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="integer"> + <spirit:name>C_AXI4_BRESP_SIZE</spirit:name> + <spirit:displayName>C Axi4 Bresp Size</spirit:displayName> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_AXI4_BRESP_SIZE" spirit:minimum="0" spirit:maximum="2" spirit:rangeType="long">2</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="integer"> + <spirit:name>C_AXI4_ADDR_SIZE</spirit:name> + <spirit:displayName>C Axi4 Addr Size</spirit:displayName> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_AXI4_ADDR_SIZE" spirit:minimum="0" spirit:maximum="32" spirit:rangeType="long">12</spirit:value> + </spirit:modelParameter> + <spirit:modelParameter spirit:dataType="integer"> + <spirit:name>C_AXI4_DATA_SIZE</spirit:name> + <spirit:displayName>C Axi4 Data Size</spirit:displayName> + <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="MODELPARAM_VALUE.C_AXI4_DATA_SIZE" spirit:minimum="0" spirit:maximum="32" spirit:rangeType="long">32</spirit:value> + </spirit:modelParameter> + </spirit:modelParameters> + </spirit:model> + <spirit:fileSets> + <spirit:fileSet> + <spirit:name>xilinx_anylanguagesynthesis_view_fileset</spirit:name> + <spirit:file> + <spirit:name>src/hdl/scalp_safe_firmware_reg_bank.vhd</spirit:name> + <spirit:userFileType>vhdlSource-2008</spirit:userFileType> + <spirit:userFileType>CHECKSUM_36589b1c</spirit:userFileType> + </spirit:file> + </spirit:fileSet> + <spirit:fileSet> + <spirit:name>xilinx_anylanguagebehavioralsimulation_view_fileset</spirit:name> + <spirit:file> + <spirit:name>src/hdl/scalp_safe_firmware_reg_bank.vhd</spirit:name> + <spirit:userFileType>vhdlSource-2008</spirit:userFileType> + </spirit:file> + </spirit:fileSet> + <spirit:fileSet> + <spirit:name>xilinx_xpgui_view_fileset</spirit:name> + <spirit:file> + <spirit:name>xgui/scalp_safe_firmware_reg_bank_v1_3.tcl</spirit:name> + <spirit:fileType>tclSource</spirit:fileType> + <spirit:userFileType>CHECKSUM_94c74469</spirit:userFileType> + <spirit:userFileType>XGUI_VERSION_2</spirit:userFileType> + </spirit:file> + </spirit:fileSet> + </spirit:fileSets> + <spirit:description>scalp_safe_firmware_reg_bank_v1_3</spirit:description> + <spirit:parameters> + <spirit:parameter> + <spirit:name>C_AXI4_ARADDR_SIZE</spirit:name> + <spirit:displayName>C Axi4 Araddr Size</spirit:displayName> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="PARAM_VALUE.C_AXI4_ARADDR_SIZE" spirit:minimum="0" spirit:maximum="32" spirit:rangeType="long">32</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>C_AXI4_RDATA_SIZE</spirit:name> + <spirit:displayName>C Axi4 Rdata Size</spirit:displayName> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="PARAM_VALUE.C_AXI4_RDATA_SIZE" spirit:minimum="0" spirit:maximum="32" spirit:rangeType="long">32</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>C_AXI4_RRESP_SIZE</spirit:name> + <spirit:displayName>C Axi4 Rresp Size</spirit:displayName> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="PARAM_VALUE.C_AXI4_RRESP_SIZE" spirit:minimum="0" spirit:maximum="2" spirit:rangeType="long">2</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>C_AXI4_AWADDR_SIZE</spirit:name> + <spirit:displayName>C Axi4 Awaddr Size</spirit:displayName> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="PARAM_VALUE.C_AXI4_AWADDR_SIZE" spirit:minimum="0" spirit:maximum="32" spirit:rangeType="long">32</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>C_AXI4_WDATA_SIZE</spirit:name> + <spirit:displayName>C Axi4 Wdata Size</spirit:displayName> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="PARAM_VALUE.C_AXI4_WDATA_SIZE" spirit:minimum="0" spirit:maximum="32" spirit:rangeType="long">32</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>C_AXI4_WSTRB_SIZE</spirit:name> + <spirit:displayName>C Axi4 Wstrb Size</spirit:displayName> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="PARAM_VALUE.C_AXI4_WSTRB_SIZE" spirit:minimum="0" spirit:maximum="4" spirit:rangeType="long">4</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>C_AXI4_BRESP_SIZE</spirit:name> + <spirit:displayName>C Axi4 Bresp Size</spirit:displayName> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="PARAM_VALUE.C_AXI4_BRESP_SIZE" spirit:minimum="0" spirit:maximum="2" spirit:rangeType="long">2</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>C_AXI4_ADDR_SIZE</spirit:name> + <spirit:displayName>C Axi4 Addr Size</spirit:displayName> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="PARAM_VALUE.C_AXI4_ADDR_SIZE" spirit:minimum="0" spirit:maximum="32" spirit:rangeType="long">12</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>C_AXI4_DATA_SIZE</spirit:name> + <spirit:displayName>C Axi4 Data Size</spirit:displayName> + <spirit:value spirit:format="long" spirit:resolve="user" spirit:id="PARAM_VALUE.C_AXI4_DATA_SIZE" spirit:minimum="0" spirit:maximum="32" spirit:rangeType="long">32</spirit:value> + </spirit:parameter> + <spirit:parameter> + <spirit:name>Component_Name</spirit:name> + <spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.Component_Name" spirit:order="1">scalp_safe_firmware_reg_bank_v1_0</spirit:value> + </spirit:parameter> + </spirit:parameters> + <spirit:vendorExtensions> + <xilinx:coreExtensions> + <xilinx:supportedFamilies> + <xilinx:family xilinx:lifeCycle="Production">virtex7</xilinx:family> + <xilinx:family xilinx:lifeCycle="Production">qvirtex7</xilinx:family> + <xilinx:family xilinx:lifeCycle="Production">kintex7</xilinx:family> + <xilinx:family xilinx:lifeCycle="Production">kintex7l</xilinx:family> + <xilinx:family xilinx:lifeCycle="Production">qkintex7</xilinx:family> + <xilinx:family xilinx:lifeCycle="Production">qkintex7l</xilinx:family> + <xilinx:family xilinx:lifeCycle="Production">akintex7</xilinx:family> + <xilinx:family xilinx:lifeCycle="Production">artix7</xilinx:family> + <xilinx:family xilinx:lifeCycle="Production">artix7l</xilinx:family> + <xilinx:family xilinx:lifeCycle="Production">aartix7</xilinx:family> + <xilinx:family xilinx:lifeCycle="Production">qartix7</xilinx:family> + <xilinx:family xilinx:lifeCycle="Production">zynq</xilinx:family> + <xilinx:family xilinx:lifeCycle="Production">qzynq</xilinx:family> + <xilinx:family xilinx:lifeCycle="Production">azynq</xilinx:family> + <xilinx:family xilinx:lifeCycle="Production">spartan7</xilinx:family> + <xilinx:family xilinx:lifeCycle="Production">aspartan7</xilinx:family> + <xilinx:family xilinx:lifeCycle="Production">zynquplus</xilinx:family> + <xilinx:family xilinx:lifeCycle="Production">virtexuplus</xilinx:family> + <xilinx:family xilinx:lifeCycle="Production">virtexuplusHBM</xilinx:family> + <xilinx:family xilinx:lifeCycle="Production">virtexuplus58g</xilinx:family> + <xilinx:family xilinx:lifeCycle="Production">kintexuplus</xilinx:family> + </xilinx:supportedFamilies> + <xilinx:taxonomies> + <xilinx:taxonomy>/UserIP</xilinx:taxonomy> + </xilinx:taxonomies> + <xilinx:displayName>scalp_safe_firmware_reg_bank_v1_3</xilinx:displayName> + <xilinx:definitionSource>package_project</xilinx:definitionSource> + <xilinx:vendorDisplayName>Hepia</xilinx:vendorDisplayName> + <xilinx:vendorURL>https://hepia.hesge.ch</xilinx:vendorURL> + <xilinx:coreRevision>7</xilinx:coreRevision> + <xilinx:coreCreationDateTime>2021-03-24T07:44:46Z</xilinx:coreCreationDateTime> + <xilinx:tags> + <xilinx:tag xilinx:name="ui.data.coregen.dd@49b781e1_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@195ee68f_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@68e4c31b_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@1482c729_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@1ac0af4f_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@6eb017f0_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@40b61904_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@477352f4_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@70a2bfee_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@5f9f9d15_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@250e23ee_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@4d4afc98_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@61a2dfba_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@1dc5e976_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@298cee3b_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@25b6d795_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@35c19c10_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@6eb923e0_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@6f8ea2ce_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@7b7bb1ef_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@39b7c6df_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@4a866db_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@149fcae2_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@2e1004d8_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@8d1128f_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@25de9025_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@c3dddd_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@ff69cba_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@19532150_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@20f5298a_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@326d4a65_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@4d8aec0_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@3a4f6ccc_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@43ae5f0e_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@42a5ce10_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@de6c3c1_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@af2935e_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@39240b6e_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@d6f9cd8_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@7e62fd3f_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@74a9862b_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@5575a5ec_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@7a4a356a_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@596f48c5_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@587847bb_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@6697005_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@7d9c2f6c_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@72b2cf03_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@658960ab_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@4071e369_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@130b2d4f_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@7be464a7_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@111d0d30_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@27eaca8d_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@4b8238f_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@4dfc8eb5_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@91f0e9a_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@6759d65f_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@12be62dc_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@5820b5c5_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@2541b5e1_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@64829d7a_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@596fde5e_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@39b81f99_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@39866f87_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@2ccc2280_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@3568bd85_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@6032bbdb_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@5ef8ed4b_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@46575fa1_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@7f0c11d1_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@7bc6b3c_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@39d84867_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@8ba5e50_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@bf48998_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@157ae763_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@26b8b58e_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@647dea0d_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@3cfe8cb9_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@43ee3217_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@71b5869a_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@286c1768_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@14ffa629_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@777f123d_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@f7dd20f_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@31302a78_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + <xilinx:tag xilinx:name="ui.data.coregen.dd@66b44348_ARCHIVE_LOCATION">/home/jo/Documents/Projets/Hepia/scalp_project/scalp_firmware/ips/hw/scalp_safe_firmware_reg_bank</xilinx:tag> + </xilinx:tags> + </xilinx:coreExtensions> + <xilinx:packagingInfo> + <xilinx:xilinxVersion>2020.2</xilinx:xilinxVersion> + <xilinx:checksum xilinx:scope="busInterfaces" xilinx:value="4fdaa825"/> + <xilinx:checksum xilinx:scope="memoryMaps" xilinx:value="52eda4f8"/> + <xilinx:checksum xilinx:scope="fileGroups" xilinx:value="5a1e57be"/> + <xilinx:checksum xilinx:scope="ports" xilinx:value="936357a2"/> + <xilinx:checksum xilinx:scope="hdlParameters" xilinx:value="d2e1fb7a"/> + <xilinx:checksum xilinx:scope="parameters" xilinx:value="731c1610"/> + </xilinx:packagingInfo> + </spirit:vendorExtensions> +</spirit:component> diff --git a/ips/hw/scalp_safe_firmware_reg_bank/src/hdl/scalp_safe_firmware_reg_bank.vhd b/ips/hw/scalp_safe_firmware_reg_bank/src/hdl/scalp_safe_firmware_reg_bank.vhd new file mode 100644 index 0000000000000000000000000000000000000000..8b7da3cbc14cb325904343c8f2fadbf7d0bfd84a --- /dev/null +++ b/ips/hw/scalp_safe_firmware_reg_bank/src/hdl/scalp_safe_firmware_reg_bank.vhd @@ -0,0 +1,330 @@ +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; + +entity scalp_safe_firmware_reg_bank 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_AXI4_ADDR_SIZE : integer range 0 to 32 := 12; + C_AXI4_DATA_SIZE : integer range 0 to 32 := 32); + + port ( + -- Clock and reset + SAxiClkxCI : in std_ulogic; + SAxiRstxRANI : in std_ulogic; + -- AXI4 Lite + -- Read Channel + -- Read Address Channel + SAxiARAddrxDI : in std_ulogic_vector((C_AXI4_ARADDR_SIZE - 1) downto 0); + SAxiARValidxSI : in std_ulogic; + SAxiARReadyxSO : out std_ulogic; + -- Read Data Channel + SAxiRDataxDO : out std_ulogic_vector((C_AXI4_RDATA_SIZE - 1) downto 0); + SAxiRRespxDO : out std_ulogic_vector((C_AXI4_RRESP_SIZE - 1) downto 0); + SAxiRValidxSO : out std_ulogic; + SAxiRReadyxSI : in std_ulogic; + -- Write Channel + -- Write Address Channel + SAxiAWAddrxDI : in std_ulogic_vector((C_AXI4_AWADDR_SIZE - 1) downto 0); + SAxiAWValidxSI : in std_ulogic; + SAxiAWReadyxSO : out std_ulogic; + -- Write Data Channel + SAxiWDataxDI : in std_ulogic_vector((C_AXI4_WDATA_SIZE - 1) downto 0); + SAxiWStrbxDI : in std_ulogic_vector((C_AXI4_WSTRB_SIZE - 1) downto 0); + SAxiWValidxSI : in std_ulogic; + SAxiWReadyxSO : out std_ulogic; + -- Write Response Channel + SAxiBRespxDO : out std_ulogic_vector((C_AXI4_BRESP_SIZE - 1) downto 0); + SAxiBValidxSO : out std_ulogic; + SAxiBReadyxSI : in std_ulogic; + -- Register Access IO + RgbLedsCtrlPortxDO : out std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0)); + +end scalp_safe_firmware_reg_bank; + +architecture behavioral of scalp_safe_firmware_reg_bank is + + -- Constants + constant C_AXI4_RRESP_OKAY : std_ulogic_vector((C_AXI4_RRESP_SIZE - 1) downto 0) := "00"; + constant C_AXI4_RRESP_EXOKAY : std_ulogic_vector((C_AXI4_RRESP_SIZE - 1) downto 0) := "01"; + constant C_AXI4_RRESP_SLVERR : std_ulogic_vector((C_AXI4_RRESP_SIZE - 1) downto 0) := "10"; + constant C_AXI4_RRESP_DECERR : std_ulogic_vector((C_AXI4_RRESP_SIZE - 1) downto 0) := "11"; + constant C_AXI4_BRESP_OKAY : std_logic_vector((C_AXI4_BRESP_SIZE - 1) downto 0) := "00"; + constant C_AXI4_BRESP_EXOKAY : std_logic_vector((C_AXI4_BRESP_SIZE - 1) downto 0) := "01"; + constant C_AXI4_BRESP_SLVERR : std_logic_vector((C_AXI4_BRESP_SIZE - 1) downto 0) := "10"; + constant C_AXI4_BRESP_DECERR : std_logic_vector((C_AXI4_BRESP_SIZE - 1) downto 0) := "11"; + + -- Signals + -- Clock and reset + signal SAxiClkxC : std_ulogic := '0'; + signal SAxiRstxRAN : std_ulogic := '0'; + -- AXI4 Lite + signal SAxiARReadyxS : std_ulogic := '0'; + signal SAxiRValidxS : std_ulogic := '0'; + signal SAxiBValidxS : std_ulogic := '0'; + signal SAxiWReadyxS : std_ulogic := '0'; + signal SAxiAWReadyxS : std_ulogic := '0'; + signal WrAddrxDN : std_ulogic_vector((C_AXI4_ADDR_SIZE - 1) downto 0) := (others => '0'); + signal WrAddrxDP : std_ulogic_vector((C_AXI4_ADDR_SIZE - 1) downto 0) := (others => '0'); + -- Signals of access to the register bank + signal RdAddrxD : std_ulogic_vector((C_AXI4_ADDR_SIZE - 1) downto 0) := (others => '0'); + signal RdDataxD : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + signal RdValidxS : std_ulogic := '0'; + signal WrAddrxD : std_ulogic_vector((C_AXI4_ADDR_SIZE - 1) downto 0) := (others => '0'); + signal WrDataxD : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + signal WrValidxS : std_ulogic := '0'; + -- Registers list + signal RgbLedsCtrlPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := x"00000000"; + signal RgbLedsCtrlPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := x"00000000"; + + -- Attributes + attribute mark_debug : string; + attribute keep : string; + -- + attribute mark_debug of RdAddrxD : signal is "true"; + attribute keep of RdAddrxD : signal is "true"; + attribute mark_debug of RdDataxD : signal is "true"; + attribute keep of RdDataxD : signal is "true"; + attribute mark_debug of RdValidxS : signal is "true"; + attribute keep of RdValidxS : signal is "true"; + attribute mark_debug of WrAddrxD : signal is "true"; + attribute keep of WrAddrxD : signal is "true"; + attribute mark_debug of WrDataxD : signal is "true"; + attribute keep of WrDataxD : signal is "true"; + attribute mark_debug of WrValidxS : signal is "true"; + attribute keep of WrValidxS : signal is "true"; + attribute mark_debug of RgbLedsCtrlPortxDP : signal is "true"; + attribute keep of RgbLedsCtrlPortxDP : signal is "true"; + +begin + + assert C_AXI4_RDATA_SIZE = C_AXI4_DATA_SIZE + report "RDATA and DATA vectors must be the same" severity failure; + + assert C_AXI4_ARADDR_SIZE >= C_AXI4_ADDR_SIZE + report "ARADDR and ADDR vectors must be the same" severity failure; + + assert C_AXI4_WDATA_SIZE = C_AXI4_DATA_SIZE + report "WDATA and DATA vectors must be the same" severity failure; + + assert C_AXI4_AWADDR_SIZE >= C_AXI4_ADDR_SIZE + report "AWADDR and ADDR vectors must be the same" severity failure; + + EntityIOxB : block is + begin -- block EntityIOxB + + -- Clock and reset + SAxiClkxAS : SAxiClkxC <= SAxiClkxCI; + SAxiRstxAS : SAxiRstxRAN <= SAxiRstxRANI; + -- Read Channel + SAxiARReadyxAS : SAxiARReadyxSO <= SAxiARReadyxS; + SAxiRValidxAS : SAxiRValidxSO <= SAxiRValidxS; + SAxiRDataxAS : SAxiRDataxDO <= RdDataxD; + RdValidxAS : RdValidxS <= SAxiARValidxSI; + RdAddrxAS : RdAddrxD((C_AXI4_ADDR_SIZE - 1) downto 0) <= SAxiARAddrxDI((C_AXI4_ADDR_SIZE - 1) downto 0); + SAxiRRespxAS : SAxiRRespxDO <= C_AXI4_RRESP_OKAY; + -- Write Channel + SAxiBRespxAS : SAxiBRespxDO <= C_AXI4_BRESP_OKAY; + SAxiBValidxAS : SAxiBValidxSO <= SAxiBValidxS; + SAxiWReadyxAS : SAxiWReadyxSO <= SAxiWReadyxS; + SAxiAWReadyxAS : SAxiAWReadyxSO <= SAxiAWReadyxS; + WrValidxAS : WrValidxS <= SAxiWValidxSI; + WrDataxAS : WrDataxD <= SAxiWDataxDI; + WrAddrOutxAS : WrAddrxD <= WrAddrxDP; + WrAddrxAS : WrAddrxDN((C_AXI4_ADDR_SIZE - 1) downto 0) <= SAxiAWAddrxDI((C_AXI4_ADDR_SIZE - 1) downto 0) when + SAxiAWValidxSI = '1' else + WrAddrxDP((C_AXI4_ADDR_SIZE - 1) downto 0); + RgbLedsCtrlPortxAS : RgbLedsCtrlPortxDO <= RgbLedsCtrlPortxDP; + + end block EntityIOxB; + + AXI4LitexB : block is + begin -- block AXI4LitexB + + ReadChannelxB : block is + begin -- block ReadChannelxB + + ReadAddrChanxP : process (SAxiClkxC, SAxiRstxRAN) is + + variable StateAfterResetxS : boolean := true; + + begin -- process ReadAddrChanxP + if SAxiRstxRAN = '0' then + SAxiARReadyxS <= '0'; + StateAfterResetxS := true; + elsif rising_edge(SAxiClkxC) then + if StateAfterResetxS = true then + SAxiARReadyxS <= '1'; + StateAfterResetxS := false; + else + SAxiARReadyxS <= SAxiARReadyxS; + end if; + + if SAxiARValidxSI = '1' then + SAxiARReadyxS <= '0'; + end if; + + if SAxiARReadyxS <= '0' and SAxiRReadyxSI = '1' then + SAxiARReadyxS <= '1'; + end if; + end if; + end process ReadAddrChanxP; + + ReadDataChanxP : process (SAxiClkxC, SAxiRstxRAN) is + begin -- process ReadDataChanxP + if SAxiRstxRAN = '0' then + SAxiRValidxS <= '0'; + elsif rising_edge(SAxiClkxC) then + SAxiRValidxS <= SAxiRValidxS; + + if SAxiARValidxSI = '1' and SAxiARReadyxS = '1' then + SAxiRValidxS <= '1'; + end if; + + if SAxiRValidxS = '1' and SAxiRReadyxSI = '1' then + SAxiRValidxS <= '0'; + end if; + end if; + end process ReadDataChanxP; + + end block ReadChannelxB; + + WriteChannelxB : block is + begin --block WriteChannelxB + + WrAddrRegxP : process (SAxiClkxC, SAxiRstxRAN) is + begin -- process WrAddrRegxP + if SAxiRstxRAN = '0' then + WrAddrxDP <= (others => '0'); + elsif rising_edge(SAxiClkxC) then + WrAddrxDP <= WrAddrxDN; + end if; + end process WrAddrRegxP; + + WriteAddrChanxP : process (SAxiClkxC, SAxiRstxRAN) is + + variable StateAfterResetxS : boolean := true; + + begin -- process WriteAddrChanxP + if SAxiRstxRAN = '0' then + SAxiAWReadyxS <= '0'; + StateAfterResetxS := true; + elsif rising_edge(SAxiClkxC) then + if StateAfterResetxS = true then + SAxiAWReadyxS <= '1'; + StateAfterResetxS := false; + else + SAxiAWReadyxS <= SAxiAWReadyxS; + end if; + + if SAxiAWValidxSI = '1' then + SAxiAWReadyxS <= '0'; + end if; + + if SAxiWValidxSI = '1' then + SAxiAWReadyxS <= '1'; + end if; + end if; + end process WriteAddrChanxP; + + WriteDataChanxP : process (SAxiClkxC, SAxiRstxRAN) is + begin -- process WriteDataChanxP + if SAxiRstxRAN = '0' then + SAxiWReadyxS <= '0'; + elsif rising_edge(SAxiClkxCI) then + SAxiWReadyxS <= SAxiWReadyxS; + + if SAxiAWValidxSI = '1' and SAxiAWReadyxS = '1' then + SAxiWReadyxS <= '1'; + end if; + + if SAxiWValidxSI = '1' and SAxiWReadyxS = '1' then + SAxiWReadyxS <= '0'; + end if; + end if; + end process WriteDataChanxP; + + WriteRespChanxP : process (SAxiClkxC, SAxiRstxRAN) is + begin -- process WriteRespChanxP + if SAxiRstxRAN = '0' then + SAxiBValidxS <= '0'; + elsif rising_edge(SAxiClkxC) then + SAxiBValidxS <= SAxiBValidxS; + + if SAxiWValidxSI = '1' and SAxiWReadyxS = '1' then + SAxiBValidxS <= '1'; + end if; + + if SAxiBValidxS = '1' and SAxiBReadyxSI = '1' then + SAxiBValidxS <= '0'; + end if; + end if; + end process WriteRespChanxP; + + end block WriteChannelxB; + + end block AXI4LitexB; + + ScalpSafeFirmwareRegBankxB : block is + begin -- block ScalpSafeFirmwareRegBankxB + + WriteRegPortxP : process (WrAddrxD, WrDataxD, WrValidxS, + RgbLedsCtrlPortxDP) is + begin -- process WriteRegPortxP + RgbLedsCtrlPortxDN <= RgbLedsCtrlPortxDP; + + if WrValidxS = '1' then + case WrAddrxD is + when x"000" => RgbLedsCtrlPortxDN <= WrDataxD; + when x"004" => RgbLedsCtrlPortxDN <= RgbLedsCtrlPortxDP or WrDataxD; + when x"008" => RgbLedsCtrlPortxDN <= RgbLedsCtrlPortxDP and not WrDataxD; + + when others => null; + end case; + end if; + end process WriteRegPortxP; + + ReadRegPortxP : process (SAxiClkxC, SAxiRstxRAN) is + begin -- process ReadRegPortxP + if SAxiRstxRAN = '0' then + RdDataxD <= (others => '0'); + elsif rising_edge(SAxiClkxC) then + RdDataxD <= (others => '0'); + + if RdValidxS = '1' then + case RdAddrxD is + when x"000" => RdDataxD <= RgbLedsCtrlPortxDP; + + when others => RdDataxD <= (others => '0'); + end case; + end if; + end if; + end process ReadRegPortxP; + + UpdateRegBankxP : process (SAxiClkxC, SAxiRstxRAN) is + begin -- process UpdateRegBankxP + if SAxiRstxRAN = '0' then + RgbLedsCtrlPortxDP <= x"00000000"; + + elsif rising_edge(SAxiClkxC) then + RgbLedsCtrlPortxDP <= RgbLedsCtrlPortxDN; + + end if; + end process UpdateRegBankxP; + + end block ScalpSafeFirmwareRegBankxB; + +end behavioral; diff --git a/ips/hw/scalp_safe_firmware_reg_bank/src/sim/tb_scalp_safe_firmware_reg_bank.vhd b/ips/hw/scalp_safe_firmware_reg_bank/src/sim/tb_scalp_safe_firmware_reg_bank.vhd new file mode 100644 index 0000000000000000000000000000000000000000..b79826711d2c351d1fa9a8bfef7bdd6b1f4a1d44 --- /dev/null +++ b/ips/hw/scalp_safe_firmware_reg_bank/src/sim/tb_scalp_safe_firmware_reg_bank.vhd @@ -0,0 +1,34 @@ +---------------------------------------------------------------------------------- +-- _ _ +-- | |_ ___ _ __(_)__ _ +-- | ' \/ -_) '_ \ / _` | +-- |_||_\___| .__/_\__,_| +-- |_| +-- +---------------------------------------------------------------------------------- +-- +-- Company: hepia +-- Author: Joachim Schmidt <joachim.schmidt@hesge.ch +-- +-- Module Name: tb_scalp_safe_firmware_reg_bank - arch +-- Target Device: hepia-cores.ch:scalp_node:part0:0.1 xc7z015clg485-2 +-- Tool version: 2020.2 +-- Description: Testbench for scalp_safe_firmware_reg_bank +-- +-- Last update: 2021-03-22 08:20:36 +-- +--------------------------------------------------------------------------------- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity tb_scalp_safe_firmware_reg_bank is +end tb_scalp_safe_firmware_reg_bank; + + +architecture behavioral of tb_scalp_safe_firmware_reg_bank is + +begin + +end behavioral; diff --git a/ips/hw/scalp_safe_firmware_reg_bank/xgui/scalp_safe_firmware_reg_bank_v1_0.tcl b/ips/hw/scalp_safe_firmware_reg_bank/xgui/scalp_safe_firmware_reg_bank_v1_0.tcl new file mode 100644 index 0000000000000000000000000000000000000000..72aafc830843c18e0a8d96f97b156397b4081a38 --- /dev/null +++ b/ips/hw/scalp_safe_firmware_reg_bank/xgui/scalp_safe_firmware_reg_bank_v1_0.tcl @@ -0,0 +1,145 @@ +# Definitional proc to organize widgets for parameters. +proc init_gui { IPINST } { + ipgui::add_param $IPINST -name "Component_Name" + #Adding Page + set Page_0 [ipgui::add_page $IPINST -name "Page 0"] + ipgui::add_param $IPINST -name "C_AXI4_ADDR_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_ARADDR_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_AWADDR_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_BRESP_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_DATA_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_RDATA_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_RRESP_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_WDATA_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_WSTRB_SIZE" -parent ${Page_0} + + +} + +proc update_PARAM_VALUE.C_AXI4_ADDR_SIZE { PARAM_VALUE.C_AXI4_ADDR_SIZE } { + # Procedure called to update C_AXI4_ADDR_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_ADDR_SIZE { PARAM_VALUE.C_AXI4_ADDR_SIZE } { + # Procedure called to validate C_AXI4_ADDR_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_ARADDR_SIZE { PARAM_VALUE.C_AXI4_ARADDR_SIZE } { + # Procedure called to update C_AXI4_ARADDR_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_ARADDR_SIZE { PARAM_VALUE.C_AXI4_ARADDR_SIZE } { + # Procedure called to validate C_AXI4_ARADDR_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_AWADDR_SIZE { PARAM_VALUE.C_AXI4_AWADDR_SIZE } { + # Procedure called to update C_AXI4_AWADDR_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_AWADDR_SIZE { PARAM_VALUE.C_AXI4_AWADDR_SIZE } { + # Procedure called to validate C_AXI4_AWADDR_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_BRESP_SIZE { PARAM_VALUE.C_AXI4_BRESP_SIZE } { + # Procedure called to update C_AXI4_BRESP_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_BRESP_SIZE { PARAM_VALUE.C_AXI4_BRESP_SIZE } { + # Procedure called to validate C_AXI4_BRESP_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_DATA_SIZE { PARAM_VALUE.C_AXI4_DATA_SIZE } { + # Procedure called to update C_AXI4_DATA_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_DATA_SIZE { PARAM_VALUE.C_AXI4_DATA_SIZE } { + # Procedure called to validate C_AXI4_DATA_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_RDATA_SIZE { PARAM_VALUE.C_AXI4_RDATA_SIZE } { + # Procedure called to update C_AXI4_RDATA_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_RDATA_SIZE { PARAM_VALUE.C_AXI4_RDATA_SIZE } { + # Procedure called to validate C_AXI4_RDATA_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_RRESP_SIZE { PARAM_VALUE.C_AXI4_RRESP_SIZE } { + # Procedure called to update C_AXI4_RRESP_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_RRESP_SIZE { PARAM_VALUE.C_AXI4_RRESP_SIZE } { + # Procedure called to validate C_AXI4_RRESP_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_WDATA_SIZE { PARAM_VALUE.C_AXI4_WDATA_SIZE } { + # Procedure called to update C_AXI4_WDATA_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_WDATA_SIZE { PARAM_VALUE.C_AXI4_WDATA_SIZE } { + # Procedure called to validate C_AXI4_WDATA_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_WSTRB_SIZE { PARAM_VALUE.C_AXI4_WSTRB_SIZE } { + # Procedure called to update C_AXI4_WSTRB_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_WSTRB_SIZE { PARAM_VALUE.C_AXI4_WSTRB_SIZE } { + # Procedure called to validate C_AXI4_WSTRB_SIZE + return true +} + + +proc update_MODELPARAM_VALUE.C_AXI4_ARADDR_SIZE { MODELPARAM_VALUE.C_AXI4_ARADDR_SIZE PARAM_VALUE.C_AXI4_ARADDR_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_ARADDR_SIZE}] ${MODELPARAM_VALUE.C_AXI4_ARADDR_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_RDATA_SIZE { MODELPARAM_VALUE.C_AXI4_RDATA_SIZE PARAM_VALUE.C_AXI4_RDATA_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_RDATA_SIZE}] ${MODELPARAM_VALUE.C_AXI4_RDATA_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_RRESP_SIZE { MODELPARAM_VALUE.C_AXI4_RRESP_SIZE PARAM_VALUE.C_AXI4_RRESP_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_RRESP_SIZE}] ${MODELPARAM_VALUE.C_AXI4_RRESP_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_AWADDR_SIZE { MODELPARAM_VALUE.C_AXI4_AWADDR_SIZE PARAM_VALUE.C_AXI4_AWADDR_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_AWADDR_SIZE}] ${MODELPARAM_VALUE.C_AXI4_AWADDR_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_WDATA_SIZE { MODELPARAM_VALUE.C_AXI4_WDATA_SIZE PARAM_VALUE.C_AXI4_WDATA_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_WDATA_SIZE}] ${MODELPARAM_VALUE.C_AXI4_WDATA_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_WSTRB_SIZE { MODELPARAM_VALUE.C_AXI4_WSTRB_SIZE PARAM_VALUE.C_AXI4_WSTRB_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_WSTRB_SIZE}] ${MODELPARAM_VALUE.C_AXI4_WSTRB_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_BRESP_SIZE { MODELPARAM_VALUE.C_AXI4_BRESP_SIZE PARAM_VALUE.C_AXI4_BRESP_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_BRESP_SIZE}] ${MODELPARAM_VALUE.C_AXI4_BRESP_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_ADDR_SIZE { MODELPARAM_VALUE.C_AXI4_ADDR_SIZE PARAM_VALUE.C_AXI4_ADDR_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_ADDR_SIZE}] ${MODELPARAM_VALUE.C_AXI4_ADDR_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_DATA_SIZE { MODELPARAM_VALUE.C_AXI4_DATA_SIZE PARAM_VALUE.C_AXI4_DATA_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_DATA_SIZE}] ${MODELPARAM_VALUE.C_AXI4_DATA_SIZE} +} + diff --git a/ips/hw/scalp_safe_firmware_reg_bank/xgui/scalp_safe_firmware_reg_bank_v1_1.tcl b/ips/hw/scalp_safe_firmware_reg_bank/xgui/scalp_safe_firmware_reg_bank_v1_1.tcl new file mode 100644 index 0000000000000000000000000000000000000000..72aafc830843c18e0a8d96f97b156397b4081a38 --- /dev/null +++ b/ips/hw/scalp_safe_firmware_reg_bank/xgui/scalp_safe_firmware_reg_bank_v1_1.tcl @@ -0,0 +1,145 @@ +# Definitional proc to organize widgets for parameters. +proc init_gui { IPINST } { + ipgui::add_param $IPINST -name "Component_Name" + #Adding Page + set Page_0 [ipgui::add_page $IPINST -name "Page 0"] + ipgui::add_param $IPINST -name "C_AXI4_ADDR_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_ARADDR_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_AWADDR_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_BRESP_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_DATA_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_RDATA_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_RRESP_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_WDATA_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_WSTRB_SIZE" -parent ${Page_0} + + +} + +proc update_PARAM_VALUE.C_AXI4_ADDR_SIZE { PARAM_VALUE.C_AXI4_ADDR_SIZE } { + # Procedure called to update C_AXI4_ADDR_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_ADDR_SIZE { PARAM_VALUE.C_AXI4_ADDR_SIZE } { + # Procedure called to validate C_AXI4_ADDR_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_ARADDR_SIZE { PARAM_VALUE.C_AXI4_ARADDR_SIZE } { + # Procedure called to update C_AXI4_ARADDR_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_ARADDR_SIZE { PARAM_VALUE.C_AXI4_ARADDR_SIZE } { + # Procedure called to validate C_AXI4_ARADDR_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_AWADDR_SIZE { PARAM_VALUE.C_AXI4_AWADDR_SIZE } { + # Procedure called to update C_AXI4_AWADDR_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_AWADDR_SIZE { PARAM_VALUE.C_AXI4_AWADDR_SIZE } { + # Procedure called to validate C_AXI4_AWADDR_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_BRESP_SIZE { PARAM_VALUE.C_AXI4_BRESP_SIZE } { + # Procedure called to update C_AXI4_BRESP_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_BRESP_SIZE { PARAM_VALUE.C_AXI4_BRESP_SIZE } { + # Procedure called to validate C_AXI4_BRESP_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_DATA_SIZE { PARAM_VALUE.C_AXI4_DATA_SIZE } { + # Procedure called to update C_AXI4_DATA_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_DATA_SIZE { PARAM_VALUE.C_AXI4_DATA_SIZE } { + # Procedure called to validate C_AXI4_DATA_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_RDATA_SIZE { PARAM_VALUE.C_AXI4_RDATA_SIZE } { + # Procedure called to update C_AXI4_RDATA_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_RDATA_SIZE { PARAM_VALUE.C_AXI4_RDATA_SIZE } { + # Procedure called to validate C_AXI4_RDATA_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_RRESP_SIZE { PARAM_VALUE.C_AXI4_RRESP_SIZE } { + # Procedure called to update C_AXI4_RRESP_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_RRESP_SIZE { PARAM_VALUE.C_AXI4_RRESP_SIZE } { + # Procedure called to validate C_AXI4_RRESP_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_WDATA_SIZE { PARAM_VALUE.C_AXI4_WDATA_SIZE } { + # Procedure called to update C_AXI4_WDATA_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_WDATA_SIZE { PARAM_VALUE.C_AXI4_WDATA_SIZE } { + # Procedure called to validate C_AXI4_WDATA_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_WSTRB_SIZE { PARAM_VALUE.C_AXI4_WSTRB_SIZE } { + # Procedure called to update C_AXI4_WSTRB_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_WSTRB_SIZE { PARAM_VALUE.C_AXI4_WSTRB_SIZE } { + # Procedure called to validate C_AXI4_WSTRB_SIZE + return true +} + + +proc update_MODELPARAM_VALUE.C_AXI4_ARADDR_SIZE { MODELPARAM_VALUE.C_AXI4_ARADDR_SIZE PARAM_VALUE.C_AXI4_ARADDR_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_ARADDR_SIZE}] ${MODELPARAM_VALUE.C_AXI4_ARADDR_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_RDATA_SIZE { MODELPARAM_VALUE.C_AXI4_RDATA_SIZE PARAM_VALUE.C_AXI4_RDATA_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_RDATA_SIZE}] ${MODELPARAM_VALUE.C_AXI4_RDATA_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_RRESP_SIZE { MODELPARAM_VALUE.C_AXI4_RRESP_SIZE PARAM_VALUE.C_AXI4_RRESP_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_RRESP_SIZE}] ${MODELPARAM_VALUE.C_AXI4_RRESP_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_AWADDR_SIZE { MODELPARAM_VALUE.C_AXI4_AWADDR_SIZE PARAM_VALUE.C_AXI4_AWADDR_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_AWADDR_SIZE}] ${MODELPARAM_VALUE.C_AXI4_AWADDR_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_WDATA_SIZE { MODELPARAM_VALUE.C_AXI4_WDATA_SIZE PARAM_VALUE.C_AXI4_WDATA_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_WDATA_SIZE}] ${MODELPARAM_VALUE.C_AXI4_WDATA_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_WSTRB_SIZE { MODELPARAM_VALUE.C_AXI4_WSTRB_SIZE PARAM_VALUE.C_AXI4_WSTRB_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_WSTRB_SIZE}] ${MODELPARAM_VALUE.C_AXI4_WSTRB_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_BRESP_SIZE { MODELPARAM_VALUE.C_AXI4_BRESP_SIZE PARAM_VALUE.C_AXI4_BRESP_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_BRESP_SIZE}] ${MODELPARAM_VALUE.C_AXI4_BRESP_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_ADDR_SIZE { MODELPARAM_VALUE.C_AXI4_ADDR_SIZE PARAM_VALUE.C_AXI4_ADDR_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_ADDR_SIZE}] ${MODELPARAM_VALUE.C_AXI4_ADDR_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_DATA_SIZE { MODELPARAM_VALUE.C_AXI4_DATA_SIZE PARAM_VALUE.C_AXI4_DATA_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_DATA_SIZE}] ${MODELPARAM_VALUE.C_AXI4_DATA_SIZE} +} + diff --git a/ips/hw/scalp_safe_firmware_reg_bank/xgui/scalp_safe_firmware_reg_bank_v1_2.tcl b/ips/hw/scalp_safe_firmware_reg_bank/xgui/scalp_safe_firmware_reg_bank_v1_2.tcl new file mode 100644 index 0000000000000000000000000000000000000000..72aafc830843c18e0a8d96f97b156397b4081a38 --- /dev/null +++ b/ips/hw/scalp_safe_firmware_reg_bank/xgui/scalp_safe_firmware_reg_bank_v1_2.tcl @@ -0,0 +1,145 @@ +# Definitional proc to organize widgets for parameters. +proc init_gui { IPINST } { + ipgui::add_param $IPINST -name "Component_Name" + #Adding Page + set Page_0 [ipgui::add_page $IPINST -name "Page 0"] + ipgui::add_param $IPINST -name "C_AXI4_ADDR_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_ARADDR_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_AWADDR_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_BRESP_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_DATA_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_RDATA_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_RRESP_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_WDATA_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_WSTRB_SIZE" -parent ${Page_0} + + +} + +proc update_PARAM_VALUE.C_AXI4_ADDR_SIZE { PARAM_VALUE.C_AXI4_ADDR_SIZE } { + # Procedure called to update C_AXI4_ADDR_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_ADDR_SIZE { PARAM_VALUE.C_AXI4_ADDR_SIZE } { + # Procedure called to validate C_AXI4_ADDR_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_ARADDR_SIZE { PARAM_VALUE.C_AXI4_ARADDR_SIZE } { + # Procedure called to update C_AXI4_ARADDR_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_ARADDR_SIZE { PARAM_VALUE.C_AXI4_ARADDR_SIZE } { + # Procedure called to validate C_AXI4_ARADDR_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_AWADDR_SIZE { PARAM_VALUE.C_AXI4_AWADDR_SIZE } { + # Procedure called to update C_AXI4_AWADDR_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_AWADDR_SIZE { PARAM_VALUE.C_AXI4_AWADDR_SIZE } { + # Procedure called to validate C_AXI4_AWADDR_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_BRESP_SIZE { PARAM_VALUE.C_AXI4_BRESP_SIZE } { + # Procedure called to update C_AXI4_BRESP_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_BRESP_SIZE { PARAM_VALUE.C_AXI4_BRESP_SIZE } { + # Procedure called to validate C_AXI4_BRESP_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_DATA_SIZE { PARAM_VALUE.C_AXI4_DATA_SIZE } { + # Procedure called to update C_AXI4_DATA_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_DATA_SIZE { PARAM_VALUE.C_AXI4_DATA_SIZE } { + # Procedure called to validate C_AXI4_DATA_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_RDATA_SIZE { PARAM_VALUE.C_AXI4_RDATA_SIZE } { + # Procedure called to update C_AXI4_RDATA_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_RDATA_SIZE { PARAM_VALUE.C_AXI4_RDATA_SIZE } { + # Procedure called to validate C_AXI4_RDATA_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_RRESP_SIZE { PARAM_VALUE.C_AXI4_RRESP_SIZE } { + # Procedure called to update C_AXI4_RRESP_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_RRESP_SIZE { PARAM_VALUE.C_AXI4_RRESP_SIZE } { + # Procedure called to validate C_AXI4_RRESP_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_WDATA_SIZE { PARAM_VALUE.C_AXI4_WDATA_SIZE } { + # Procedure called to update C_AXI4_WDATA_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_WDATA_SIZE { PARAM_VALUE.C_AXI4_WDATA_SIZE } { + # Procedure called to validate C_AXI4_WDATA_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_WSTRB_SIZE { PARAM_VALUE.C_AXI4_WSTRB_SIZE } { + # Procedure called to update C_AXI4_WSTRB_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_WSTRB_SIZE { PARAM_VALUE.C_AXI4_WSTRB_SIZE } { + # Procedure called to validate C_AXI4_WSTRB_SIZE + return true +} + + +proc update_MODELPARAM_VALUE.C_AXI4_ARADDR_SIZE { MODELPARAM_VALUE.C_AXI4_ARADDR_SIZE PARAM_VALUE.C_AXI4_ARADDR_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_ARADDR_SIZE}] ${MODELPARAM_VALUE.C_AXI4_ARADDR_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_RDATA_SIZE { MODELPARAM_VALUE.C_AXI4_RDATA_SIZE PARAM_VALUE.C_AXI4_RDATA_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_RDATA_SIZE}] ${MODELPARAM_VALUE.C_AXI4_RDATA_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_RRESP_SIZE { MODELPARAM_VALUE.C_AXI4_RRESP_SIZE PARAM_VALUE.C_AXI4_RRESP_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_RRESP_SIZE}] ${MODELPARAM_VALUE.C_AXI4_RRESP_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_AWADDR_SIZE { MODELPARAM_VALUE.C_AXI4_AWADDR_SIZE PARAM_VALUE.C_AXI4_AWADDR_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_AWADDR_SIZE}] ${MODELPARAM_VALUE.C_AXI4_AWADDR_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_WDATA_SIZE { MODELPARAM_VALUE.C_AXI4_WDATA_SIZE PARAM_VALUE.C_AXI4_WDATA_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_WDATA_SIZE}] ${MODELPARAM_VALUE.C_AXI4_WDATA_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_WSTRB_SIZE { MODELPARAM_VALUE.C_AXI4_WSTRB_SIZE PARAM_VALUE.C_AXI4_WSTRB_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_WSTRB_SIZE}] ${MODELPARAM_VALUE.C_AXI4_WSTRB_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_BRESP_SIZE { MODELPARAM_VALUE.C_AXI4_BRESP_SIZE PARAM_VALUE.C_AXI4_BRESP_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_BRESP_SIZE}] ${MODELPARAM_VALUE.C_AXI4_BRESP_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_ADDR_SIZE { MODELPARAM_VALUE.C_AXI4_ADDR_SIZE PARAM_VALUE.C_AXI4_ADDR_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_ADDR_SIZE}] ${MODELPARAM_VALUE.C_AXI4_ADDR_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_DATA_SIZE { MODELPARAM_VALUE.C_AXI4_DATA_SIZE PARAM_VALUE.C_AXI4_DATA_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_DATA_SIZE}] ${MODELPARAM_VALUE.C_AXI4_DATA_SIZE} +} + diff --git a/ips/hw/scalp_safe_firmware_reg_bank/xgui/scalp_safe_firmware_reg_bank_v1_3.tcl b/ips/hw/scalp_safe_firmware_reg_bank/xgui/scalp_safe_firmware_reg_bank_v1_3.tcl new file mode 100644 index 0000000000000000000000000000000000000000..72aafc830843c18e0a8d96f97b156397b4081a38 --- /dev/null +++ b/ips/hw/scalp_safe_firmware_reg_bank/xgui/scalp_safe_firmware_reg_bank_v1_3.tcl @@ -0,0 +1,145 @@ +# Definitional proc to organize widgets for parameters. +proc init_gui { IPINST } { + ipgui::add_param $IPINST -name "Component_Name" + #Adding Page + set Page_0 [ipgui::add_page $IPINST -name "Page 0"] + ipgui::add_param $IPINST -name "C_AXI4_ADDR_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_ARADDR_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_AWADDR_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_BRESP_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_DATA_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_RDATA_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_RRESP_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_WDATA_SIZE" -parent ${Page_0} + ipgui::add_param $IPINST -name "C_AXI4_WSTRB_SIZE" -parent ${Page_0} + + +} + +proc update_PARAM_VALUE.C_AXI4_ADDR_SIZE { PARAM_VALUE.C_AXI4_ADDR_SIZE } { + # Procedure called to update C_AXI4_ADDR_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_ADDR_SIZE { PARAM_VALUE.C_AXI4_ADDR_SIZE } { + # Procedure called to validate C_AXI4_ADDR_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_ARADDR_SIZE { PARAM_VALUE.C_AXI4_ARADDR_SIZE } { + # Procedure called to update C_AXI4_ARADDR_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_ARADDR_SIZE { PARAM_VALUE.C_AXI4_ARADDR_SIZE } { + # Procedure called to validate C_AXI4_ARADDR_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_AWADDR_SIZE { PARAM_VALUE.C_AXI4_AWADDR_SIZE } { + # Procedure called to update C_AXI4_AWADDR_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_AWADDR_SIZE { PARAM_VALUE.C_AXI4_AWADDR_SIZE } { + # Procedure called to validate C_AXI4_AWADDR_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_BRESP_SIZE { PARAM_VALUE.C_AXI4_BRESP_SIZE } { + # Procedure called to update C_AXI4_BRESP_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_BRESP_SIZE { PARAM_VALUE.C_AXI4_BRESP_SIZE } { + # Procedure called to validate C_AXI4_BRESP_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_DATA_SIZE { PARAM_VALUE.C_AXI4_DATA_SIZE } { + # Procedure called to update C_AXI4_DATA_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_DATA_SIZE { PARAM_VALUE.C_AXI4_DATA_SIZE } { + # Procedure called to validate C_AXI4_DATA_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_RDATA_SIZE { PARAM_VALUE.C_AXI4_RDATA_SIZE } { + # Procedure called to update C_AXI4_RDATA_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_RDATA_SIZE { PARAM_VALUE.C_AXI4_RDATA_SIZE } { + # Procedure called to validate C_AXI4_RDATA_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_RRESP_SIZE { PARAM_VALUE.C_AXI4_RRESP_SIZE } { + # Procedure called to update C_AXI4_RRESP_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_RRESP_SIZE { PARAM_VALUE.C_AXI4_RRESP_SIZE } { + # Procedure called to validate C_AXI4_RRESP_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_WDATA_SIZE { PARAM_VALUE.C_AXI4_WDATA_SIZE } { + # Procedure called to update C_AXI4_WDATA_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_WDATA_SIZE { PARAM_VALUE.C_AXI4_WDATA_SIZE } { + # Procedure called to validate C_AXI4_WDATA_SIZE + return true +} + +proc update_PARAM_VALUE.C_AXI4_WSTRB_SIZE { PARAM_VALUE.C_AXI4_WSTRB_SIZE } { + # Procedure called to update C_AXI4_WSTRB_SIZE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_AXI4_WSTRB_SIZE { PARAM_VALUE.C_AXI4_WSTRB_SIZE } { + # Procedure called to validate C_AXI4_WSTRB_SIZE + return true +} + + +proc update_MODELPARAM_VALUE.C_AXI4_ARADDR_SIZE { MODELPARAM_VALUE.C_AXI4_ARADDR_SIZE PARAM_VALUE.C_AXI4_ARADDR_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_ARADDR_SIZE}] ${MODELPARAM_VALUE.C_AXI4_ARADDR_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_RDATA_SIZE { MODELPARAM_VALUE.C_AXI4_RDATA_SIZE PARAM_VALUE.C_AXI4_RDATA_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_RDATA_SIZE}] ${MODELPARAM_VALUE.C_AXI4_RDATA_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_RRESP_SIZE { MODELPARAM_VALUE.C_AXI4_RRESP_SIZE PARAM_VALUE.C_AXI4_RRESP_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_RRESP_SIZE}] ${MODELPARAM_VALUE.C_AXI4_RRESP_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_AWADDR_SIZE { MODELPARAM_VALUE.C_AXI4_AWADDR_SIZE PARAM_VALUE.C_AXI4_AWADDR_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_AWADDR_SIZE}] ${MODELPARAM_VALUE.C_AXI4_AWADDR_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_WDATA_SIZE { MODELPARAM_VALUE.C_AXI4_WDATA_SIZE PARAM_VALUE.C_AXI4_WDATA_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_WDATA_SIZE}] ${MODELPARAM_VALUE.C_AXI4_WDATA_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_WSTRB_SIZE { MODELPARAM_VALUE.C_AXI4_WSTRB_SIZE PARAM_VALUE.C_AXI4_WSTRB_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_WSTRB_SIZE}] ${MODELPARAM_VALUE.C_AXI4_WSTRB_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_BRESP_SIZE { MODELPARAM_VALUE.C_AXI4_BRESP_SIZE PARAM_VALUE.C_AXI4_BRESP_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_BRESP_SIZE}] ${MODELPARAM_VALUE.C_AXI4_BRESP_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_ADDR_SIZE { MODELPARAM_VALUE.C_AXI4_ADDR_SIZE PARAM_VALUE.C_AXI4_ADDR_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_ADDR_SIZE}] ${MODELPARAM_VALUE.C_AXI4_ADDR_SIZE} +} + +proc update_MODELPARAM_VALUE.C_AXI4_DATA_SIZE { MODELPARAM_VALUE.C_AXI4_DATA_SIZE PARAM_VALUE.C_AXI4_DATA_SIZE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_AXI4_DATA_SIZE}] ${MODELPARAM_VALUE.C_AXI4_DATA_SIZE} +} + diff --git a/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/lin64/.gitignore b/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/lin64/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..91871832b556214a85269ecaf5c11f88b3285b6f --- /dev/null +++ b/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/lin64/.gitignore @@ -0,0 +1,23 @@ +################################################################################## +# _ _ +# | |_ ___ _ __(_)__ _ +# | ' \/ -_) '_ \ / _` | +# |_||_\___| .__/_\__,_| +# |_| +# +################################################################################## +# +# Company: hepia +# Author: Joachim Schmidt <joachim.schmidt@hesge.ch +# +# Project Name: scalp_safe_firmware_reg_bank +# Target Device: hepia-cores.ch:scalp_node:part0:0.1 xc7z015clg485-2 +# Tool version: 2020.2 +# Description: Git ignore file +# +# Last update: 2021-03-22 08:20:36 +# +################################################################################## + +# Ignore generated project directory +scalp_safe_firmware_reg_bank diff --git a/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/lin64/.scripts/.prompt_colors.tcl b/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/lin64/.scripts/.prompt_colors.tcl new file mode 100644 index 0000000000000000000000000000000000000000..c8b8b9157e0187475ad4c1a377b1678fae443c98 --- /dev/null +++ b/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/lin64/.scripts/.prompt_colors.tcl @@ -0,0 +1,47 @@ +################################################################################## +# _ _ +# | |_ ___ _ __(_)__ _ +# | ' \/ -_) '_ \ / _` | +# |_||_\___| .__/_\__,_| +# |_| +# +################################################################################## +# +# Company: hepia +# Author: Joachim Schmidt <joachim.schmidt@hesge.ch +# +# Project Name: scalp_safe_firmware_reg_bank +# Target Device: hepia-cores.ch:scalp_node:part0:0.1 xc7z015clg485-2 +# Tool version: 2020.2 +# Description: Console color print utility +# +# Last update: 2021-03-22 08:20:36 +# +################################################################################## + +# Try to set a variable with an execution command +# If the command fails, set the variable to an empty string +# cmd - The command to be executed +# return The variable to be set +proc try_setexec {cmd} { + set code [catch { set var [exec {*}$cmd] } ] + if { $code != 0 } { set var "" } + + return ${var} +} + +# Text attributes +set RESET [try_setexec "tput sgr0"] +set BOLD [try_setexec "tput bold"] +set ITALIC [try_setexec "tput sitm"] +set BLINK [try_setexec "tput blink"] +set HIGHL [try_setexec "tput smso"] + +# Text colors +set RED [try_setexec "tput setaf 1"] +set GREEN [try_setexec "tput setaf 2"] +set YELLOW [try_setexec "tput setaf 3"] +set BLUE [try_setexec "tput setaf 4"] +set MAGENTA [try_setexec "tput setaf 5"] +set CYAN [try_setexec "tput setaf 6"] +set WHITE [try_setexec "tput setaf 7"] diff --git a/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/lin64/.scripts/clean_prj_scalp_safe_firmware_reg_bank.sh b/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/lin64/.scripts/clean_prj_scalp_safe_firmware_reg_bank.sh new file mode 100755 index 0000000000000000000000000000000000000000..807998fb56c3377767426eac842eb77295d25175 --- /dev/null +++ b/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/lin64/.scripts/clean_prj_scalp_safe_firmware_reg_bank.sh @@ -0,0 +1,35 @@ +#!/bin/sh + +################################################################################## +# _ _ +# | |_ ___ _ __(_)__ _ +# | ' \/ -_) '_ \ / _` | +# |_||_\___| .__/_\__,_| +# |_| +# +################################################################################## +# +# Company: hepia +# Author: Joachim Schmidt <joachim.schmidt@hesge.ch +# +# Project Name: scalp_safe_firmware_reg_bank +# Target Device: hepia-cores.ch:scalp_node:part0:0.1 xc7z015clg485-2 +# Tool version: 2020.2 +# Description: Cleanup project directory +# +# Last update: 2021-03-22 08:20:36 +# +################################################################################## + +echo "> Cleanup project directory..." + +PRJ_DIR=.. + +# Clean current directory +rm -rf ${PRJ_DIR}/.Xil/ 2> /dev/null + +# Remove generated project directory +rm -rf ${PRJ_DIR}/scalp_safe_firmware_reg_bank/ 2> /dev/null + +echo "> Done" + diff --git a/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/lin64/.scripts/create_prj_scalp_safe_firmware_reg_bank.sh b/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/lin64/.scripts/create_prj_scalp_safe_firmware_reg_bank.sh new file mode 100755 index 0000000000000000000000000000000000000000..165e9ac095f2b8884d1091d36bf6ba509f7f08d3 --- /dev/null +++ b/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/lin64/.scripts/create_prj_scalp_safe_firmware_reg_bank.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +################################################################################## +# _ _ +# | |_ ___ _ __(_)__ _ +# | ' \/ -_) '_ \ / _` | +# |_||_\___| .__/_\__,_| +# |_| +# +################################################################################## +# +# Company: hepia +# Author: Joachim Schmidt <joachim.schmidt@hesge.ch +# +# Project Name: scalp_safe_firmware_reg_bank +# Target Device: hepia-cores.ch:scalp_node:part0:0.1 xc7z015clg485-2 +# Tool version: 2020.2 +# Description: Create Vivado project +# +# Last update: 2021-03-22 08:20:36 +# +################################################################################## + +echo "> Create Vivado project..." +vivado -nojournal -nolog -mode tcl -source create_prj_scalp_safe_firmware_reg_bank.tcl -notrace +echo "> Done" + diff --git a/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/lin64/.scripts/create_prj_scalp_safe_firmware_reg_bank.tcl b/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/lin64/.scripts/create_prj_scalp_safe_firmware_reg_bank.tcl new file mode 100644 index 0000000000000000000000000000000000000000..ddc8ab91cd485a26b4b6164bdd453fcb7e21e57b --- /dev/null +++ b/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/lin64/.scripts/create_prj_scalp_safe_firmware_reg_bank.tcl @@ -0,0 +1,154 @@ +################################################################################## +# _ _ +# | |_ ___ _ __(_)__ _ +# | ' \/ -_) '_ \ / _` | +# |_||_\___| .__/_\__,_| +# |_| +# +################################################################################## +# +# Company: hepia +# Author: Joachim Schmidt <joachim.schmidt@hesge.ch +# +# Project Name: scalp_safe_firmware_reg_bank +# Target Device: hepia-cores.ch:scalp_node:part0:0.1 xc7z015clg485-2 +# Tool version: 2020.2 +# Description: TCL script for re-creating Vivado project 'scalp_safe_firmware_reg_bank' +# +# Last update: 2021-03-22 08:20:36 +# +################################################################################## + +# Include files +source utils.tcl + +set PRJ_DIR ".." +set prj_name "scalp_safe_firmware_reg_bank" +set PKG_DIR "${PRJ_DIR}/../../../../../packages" +set SOC_DIR "${PRJ_DIR}/../../../../../soc/" + +# Set project type +set PRJ_TYPE "COMP_PRJ_TYPE" + +# Create a variable to store the start time +set start_time [clock format [clock seconds] -format {%b. %d, %Y %I:%M:%S %p}] + +# Set the original project directory path for adding/importing sources in the new project +set src_dir "${PRJ_DIR}/../src" +set ip_dir "${PRJ_DIR}/../../../../../ips/hw" +set periph_dir "${PRJ_DIR}/../../../../../peripherals/hw" +set comp_dir "${ip_dir}/$prj_name" +set comp_src_dir "${comp_dir}/src" +set pkg_src_dir "${PKG_DIR}/hw" +set soc_src_dir "${SOC_DIR}/hw" +print_status "Set directory paths" "OK" + +# Create the project +create_project $prj_name ${PRJ_DIR}/$prj_name -part xc7z015clg485-2 +set_property board_part hepia-cores.ch:scalp_node:part0:0.1 [current_project] +set_property target_language VHDL [current_project] +print_status "Create project" "OK" + +# Map the IP Repository so that custom IP is included +set_property ip_repo_paths [list $ip_dir $periph_dir] [current_fileset] +update_ip_catalog + +#---------------------------------------------------------------- +# Add project sources +#---------------------------------------------------------------- + +# Get HDL source files directory +if {$PRJ_TYPE == "DESIGN_PRJ_TYPE"} { + set hdl_src_dir "${src_dir}/hdl" + set sim_src_dir "${src_dir}/sim" +} elseif {$PRJ_TYPE == "COMP_PRJ_TYPE"} { + # components sources are stored in an external directory + set hdl_src_dir "${comp_src_dir}/hdl" + set sim_src_dir "${comp_src_dir}/sim" +} + +# add HDL source files +set vhdl_src_file_list [findFiles $hdl_src_dir *.vhd] +set verilog_src_file_list [findFiles $hdl_src_dir *.v] +set system_verilog_src_file_list [findFiles $hdl_src_dir *.sv] +set hdl_src_file_list [list {*}$vhdl_src_file_list {*}$verilog_src_file_list {*}$system_verilog_src_file_list] + +if {$hdl_src_file_list != ""} { + add_files -norecurse $hdl_src_file_list +} else { + print_status "No sources to be added" "WARNING" +} + +# Set VHDL version +foreach j $vhdl_src_file_list { + set_property file_type {VHDL 2008} [get_files $j] + print_status "VHDL 2008 mode configured for the file $j" "OK" +} +print_status "VHDL 2008 mode configured for project sources" "OK" + +# Add constraint files and IPs source files +if {$PRJ_TYPE == "DESIGN_PRJ_TYPE"} { + # add the constraints file (XDC) + add_files -fileset constrs_1 -norecurse $src_dir/constrs/${prj_name}.xdc + set_property is_enabled true [get_files $src_dir/constrs/${prj_name}.xdc] + + # add IPs source files + +} elseif {$PRJ_TYPE == "COMP_PRJ_TYPE"} { + # add IPs source files + + # add IP-XACT source file + #add_files -norecurse $comp_dir/component.xml +} +print_status "Add project sources" "OK" + +# Set packages libraries if any +#set_property library library_name [get_files $src_dir/hdl/package_name.vhd] +#update_compile_order -fileset sources_1 + +# Create the IP Integrator portion of the design +#create_bd_design "axi_design" +#update_compile_order -fileset sources_1 + +# launch the TCL script to generate the IPI design +source $src_dir/ipi_tcl/${prj_name}_ipi.tcl +print_status "Add IPI design" "OK" + +# Set the top level design +set_property top $prj_name [current_fileset] +update_compile_order -fileset sources_1 + +# Add simulation sources +set vhdl_sim_file_list [findFiles $sim_src_dir *.vhd] +set verilog_sim_file_list [findFiles $sim_src_dir *.v] +set system_verilog_sim_file_list [findFiles $sim_src_dir *.sv] +set hdl_sim_file_list [list {*}$vhdl_sim_file_list {*}$verilog_sim_file_list {*}$system_verilog_sim_file_list] + +if {$hdl_sim_file_list != ""} { + add_files -fileset sim_1 -norecurse $hdl_sim_file_list + update_compile_order -fileset sim_1 + print_status "Add simulation sources" "OK" +} else { + print_status "No simulation sources to be added" "WARNING" +} + +foreach j $vhdl_sim_file_list { + set_property file_type {VHDL 2008} [get_files $j] + print_status "VHDL 2008 mode configured for the file $j" "OK" +} +print_status "VHDL 2008 mode configured for simulation sources" "OK" + +# Add packages sources + + +# Add SoC wrapper sources files + + +# Set the completion time +set end_time [clock format [clock seconds] -format {%b. %d, %Y %I:%M:%S %p}] + +# Display the start and end time to the screen +puts $start_time +puts $end_time + +exit diff --git a/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/lin64/.scripts/open_prj_scalp_safe_firmware_reg_bank.sh b/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/lin64/.scripts/open_prj_scalp_safe_firmware_reg_bank.sh new file mode 100755 index 0000000000000000000000000000000000000000..529c212b0949044dd2a27f43a1569ebe421601f6 --- /dev/null +++ b/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/lin64/.scripts/open_prj_scalp_safe_firmware_reg_bank.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +################################################################################## +# _ _ +# | |_ ___ _ __(_)__ _ +# | ' \/ -_) '_ \ / _` | +# |_||_\___| .__/_\__,_| +# |_| +# +################################################################################## +# +# Company: hepia +# Author: Joachim Schmidt <joachim.schmidt@hesge.ch +# +# Project Name: scalp_safe_firmware_reg_bank +# Target Device: hepia-cores.ch:scalp_node:part0:0.1 xc7z015clg485-2 +# Tool version: 2020.2 +# Description: Open Vivado project GUI +# +# Last update: 2021-03-22 08:20:36 +# +################################################################################## + +echo "> Open Vivado GUI..." +vivado -nojournal -nolog -notrace ../scalp_safe_firmware_reg_bank/scalp_safe_firmware_reg_bank.xpr diff --git a/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/lin64/.scripts/utils.tcl b/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/lin64/.scripts/utils.tcl new file mode 100644 index 0000000000000000000000000000000000000000..82a2569612bb673bac2375c4df13de8dd2505c0c --- /dev/null +++ b/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/lin64/.scripts/utils.tcl @@ -0,0 +1,62 @@ +################################################################################## +# _ _ +# | |_ ___ _ __(_)__ _ +# | ' \/ -_) '_ \ / _` | +# |_||_\___| .__/_\__,_| +# |_| +# +################################################################################## +# +# Company: hepia +# Author: Joachim Schmidt <joachim.schmidt@hesge.ch +# +# Project Name: scalp_safe_firmware_reg_bank +# Target Device: hepia-cores.ch:scalp_node:part0:0.1 xc7z015clg485-2 +# Tool version: 2020.2 +# Description: Project management utilities +# +# Last update: 2021-03-22 08:20:36 +# +################################################################################## + +# findFiles +# basedir - the directory to start looking in +# pattern - A pattern, as defined by the glob command, that the files must match +proc findFiles { basedir pattern } { + + # Fix the directory name, this ensures the directory name is in the + # native format for the platform and contains a final directory seperator + set basedir [string trimright [file join [file normalize $basedir] { }]] + set fileList {} + + # Look in the current directory for matching files, -type {f r} + # means ony readable normal files are looked at, -nocomplain stops + # an error being thrown if the returned list is empty + foreach fileName [glob -nocomplain -type {f r} -path $basedir $pattern] { + lappend fileList $fileName + } + + # Now look for any sub direcories in the current directory + foreach dirName [glob -nocomplain -type {d r} -path $basedir *] { + # Recusively call the routine on the sub directory and append any + # new files to the results + set subDirList [findFiles $dirName $pattern] + if { [llength $subDirList] > 0 } { + foreach subDirFile $subDirList { + lappend fileList $subDirFile + } + } + } + return $fileList +} + + +# Print a progress status +# str The string describing the current status +# status The status as a string (eg. "OK", "FAILED") +proc print_status {str status} { + set MAX_STR_LENGTH 70 + source .prompt_colors.tcl + puts "${CYAN}>${YELLOW} $str [string repeat " " [expr {$MAX_STR_LENGTH - [string length $str]}]]\[${GREEN}${status}${YELLOW}\]${RESET}" +} + diff --git a/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/lin64/setup.sh b/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/lin64/setup.sh new file mode 100755 index 0000000000000000000000000000000000000000..f59c565299ccd63022cb78e682994fba3acc8c44 --- /dev/null +++ b/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/lin64/setup.sh @@ -0,0 +1,28 @@ +################################################################################## +# _ _ +# | |_ ___ _ __(_)__ _ +# | ' \/ -_) '_ \ / _` | +# |_||_\___| .__/_\__,_| +# |_| +# +################################################################################## +# +# Company: hepia +# Author: Joachim Schmidt <joachim.schmidt@hesge.ch +# +# Project Name: scalp_safe_firmware_reg_bank +# Target Device: hepia-cores.ch:scalp_node:part0:0.1 xc7z015clg485-2 +# Tool version: 2020.2 +# Description: TCL script creating aliases for Vivado project management scripts +# +# Last update: 2021-03-22 08:20:36 +# +################################################################################## + +# Create aliases +alias create_project='cd .scripts && ./create_prj_scalp_safe_firmware_reg_bank.sh && cd ..' +alias clean_project='cd .scripts && ./clean_prj_scalp_safe_firmware_reg_bank.sh && cd ..' +alias export_hw='cd .scripts && ./export_hw_scalp_safe_firmware_reg_bank.sh && cd ..' +alias gen_bitstream='cd .scripts && ./gen_bitstream_scalp_safe_firmware_reg_bank.sh && cd ..' +alias load_bitstream='cd .scripts && ./load_bitstream_scalp_safe_firmware_reg_bank.sh && cd ..' +alias open_gui='cd .scripts && ./open_prj_scalp_safe_firmware_reg_bank.sh && cd ..' diff --git a/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/src/ipi_tcl/scalp_safe_firmware_reg_bank_ipi.tcl b/ips/vivado/scalp_safe_firmware_reg_bank/2020.2/src/ipi_tcl/scalp_safe_firmware_reg_bank_ipi.tcl new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/soc/hw/scalp_zynqps/src/hdl/scalp_zynqps_wrapper.vhd b/soc/hw/scalp_zynqps/src/hdl/scalp_zynqps_wrapper.vhd index d0d7351b9a50d3f247719e2ecf14b703fc9aad5d..ba0f4dbe83261e7c93f84a5b84369eee256acfb4 100644 --- a/soc/hw/scalp_zynqps/src/hdl/scalp_zynqps_wrapper.vhd +++ b/soc/hw/scalp_zynqps/src/hdl/scalp_zynqps_wrapper.vhd @@ -15,7 +15,7 @@ -- Tool version: 2020.2 -- Description: scalp_zynqps_wrapper -- --- Last update: 2020-11-08 +-- Last update: 2021-03-22 -- --------------------------------------------------------------------------------- @@ -66,7 +66,8 @@ entity scalp_zynqps_wrapper is RdValidxSO : out std_logic; WrAddrxDO : out std_logic_vector (11 downto 0); WrDataxDO : out std_logic_vector (31 downto 0); - WrValidxSO : out std_logic); + WrValidxSO : out std_logic; + RgbLedsCtrlPortxDO : out std_logic_vector (31 downto 0)); end scalp_zynqps_wrapper; @@ -109,6 +110,7 @@ begin RdValidxSO => RdValidxSO, WrAddrxDO => WrAddrxDO, WrDataxDO => WrDataxDO, - WrValidxSO => WrValidxSO); + WrValidxSO => WrValidxSO, + RgbLedsCtrlPortxDO => RgbLedsCtrlPortxDO); end arch; diff --git a/soc/vivado/scalp_zynqps/2020.2/src/ipi_tcl/scalp_zynqps_ipi.tcl b/soc/vivado/scalp_zynqps/2020.2/src/ipi_tcl/scalp_zynqps_ipi.tcl index b5395358b3a298bd95ce9bf1c53c87803a4fbdc8..b38d8c4bdeb03260b6f25e9bd293a6229ee787f4 100644 --- a/soc/vivado/scalp_zynqps/2020.2/src/ipi_tcl/scalp_zynqps_ipi.tcl +++ b/soc/vivado/scalp_zynqps/2020.2/src/ipi_tcl/scalp_zynqps_ipi.tcl @@ -127,6 +127,7 @@ xilinx.com:ip:xlconcat:2.1\ xilinx.com:ip:processing_system7:5.5\ xilinx.com:ip:proc_sys_reset:5.0\ hepia.hesge.ch:user:scalp_axi4lite:1.2\ +hepia.ch:user:scalp_safe_firmware_reg_bank:1.3\ xilinx.com:ip:util_vector_logic:2.0\ xilinx.com:ip:vio:3.0\ " @@ -207,6 +208,7 @@ proc create_root_design { parentCell } { set RdAddrxDO [ create_bd_port -dir O -from 11 -to 0 RdAddrxDO ] set RdDataxDI [ create_bd_port -dir I -from 31 -to 0 RdDataxDI ] set RdValidxSO [ create_bd_port -dir O RdValidxSO ] + set RgbLedsCtrlPortxDO [ create_bd_port -dir O -from 31 -to 0 RgbLedsCtrlPortxDO ] set Spi1MOSIxSO [ create_bd_port -dir O Spi1MOSIxSO ] set Spi1SSxSO [ create_bd_port -dir O Spi1SSxSO ] set Spi1SclkxCO [ create_bd_port -dir O Spi1SclkxCO ] @@ -673,7 +675,7 @@ proc create_root_design { parentCell } { # 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 -dict [ list \ - CONFIG.NUM_MI {1} \ + CONFIG.NUM_MI {2} \ ] $ps7_0_axi_periph # Create instance: rst_ps7_0_125M, and set properties @@ -682,6 +684,9 @@ proc create_root_design { parentCell } { # Create instance: scalp_axi4lite_0, and set properties set scalp_axi4lite_0 [ create_bd_cell -type ip -vlnv hepia.hesge.ch:user:scalp_axi4lite:1.2 scalp_axi4lite_0 ] + # Create instance: scalp_safe_firmware_0, and set properties + set scalp_safe_firmware_0 [ create_bd_cell -type ip -vlnv hepia.ch:user:scalp_safe_firmware_reg_bank:1.3 scalp_safe_firmware_0 ] + # Create instance: util_vector_logic_0, and set properties set util_vector_logic_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:util_vector_logic:2.0 util_vector_logic_0 ] set_property -dict [ list \ @@ -710,6 +715,7 @@ proc create_root_design { parentCell } { 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_axi4lite_0/SAXILitexDIO] + 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 scalp_safe_firmware_0/SAXILitexDIO] # Create port connections connect_bd_net -net InterruptxSI_0_1 [get_bd_ports InterruptxSI] [get_bd_pins scalp_axi4lite_0/InterruptxSI] @@ -717,24 +723,26 @@ proc create_root_design { parentCell } { 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 gnd_constant_dout [get_bd_pins gnd_constant/dout] [get_bd_pins processing_system7_0/SPI1_MISO_I] [get_bd_pins processing_system7_0/SPI1_MOSI_I] [get_bd_pins processing_system7_0/SPI1_SCLK_I] [get_bd_pins processing_system7_0/SPI1_SS_I] connect_bd_net -net irq_xlconcat_dout [get_bd_pins irq_xlconcat/dout] [get_bd_pins processing_system7_0/IRQ_F2P] - connect_bd_net -net processing_system7_0_FCLK_CLK0 [get_bd_ports FclkClk0xCO] [get_bd_pins processing_system7_0/FCLK_CLK0] [get_bd_pins processing_system7_0/M_AXI_GP0_ACLK] [get_bd_pins ps7_0_axi_periph/ACLK] [get_bd_pins ps7_0_axi_periph/M00_ACLK] [get_bd_pins ps7_0_axi_periph/S00_ACLK] [get_bd_pins rst_ps7_0_125M/slowest_sync_clk] [get_bd_pins scalp_axi4lite_0/SAxiClkxCI] [get_bd_pins vio_0/clk] + connect_bd_net -net processing_system7_0_FCLK_CLK0 [get_bd_ports FclkClk0xCO] [get_bd_pins processing_system7_0/FCLK_CLK0] [get_bd_pins processing_system7_0/M_AXI_GP0_ACLK] [get_bd_pins ps7_0_axi_periph/ACLK] [get_bd_pins ps7_0_axi_periph/M00_ACLK] [get_bd_pins ps7_0_axi_periph/M01_ACLK] [get_bd_pins ps7_0_axi_periph/S00_ACLK] [get_bd_pins rst_ps7_0_125M/slowest_sync_clk] [get_bd_pins scalp_axi4lite_0/SAxiClkxCI] [get_bd_pins scalp_safe_firmware_0/SAxiClkxCI] [get_bd_pins vio_0/clk] 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 util_vector_logic_1/Op1] connect_bd_net -net processing_system7_0_SPI1_MOSI_O [get_bd_ports Spi1MOSIxSO] [get_bd_pins processing_system7_0/SPI1_MOSI_O] connect_bd_net -net processing_system7_0_SPI1_SCLK_O [get_bd_ports Spi1SclkxCO] [get_bd_pins processing_system7_0/SPI1_SCLK_O] connect_bd_net -net processing_system7_0_SPI1_SS_O [get_bd_ports Spi1SSxSO] [get_bd_pins processing_system7_0/SPI1_SS_O] - connect_bd_net -net rst_ps7_0_125M_peripheral_aresetn [get_bd_pins ps7_0_axi_periph/ARESETN] [get_bd_pins ps7_0_axi_periph/M00_ARESETN] [get_bd_pins ps7_0_axi_periph/S00_ARESETN] [get_bd_pins rst_ps7_0_125M/peripheral_aresetn] [get_bd_pins scalp_axi4lite_0/SAxiResetxRANI] + connect_bd_net -net rst_ps7_0_125M_peripheral_aresetn [get_bd_pins ps7_0_axi_periph/ARESETN] [get_bd_pins ps7_0_axi_periph/M00_ARESETN] [get_bd_pins ps7_0_axi_periph/M01_ARESETN] [get_bd_pins ps7_0_axi_periph/S00_ARESETN] [get_bd_pins rst_ps7_0_125M/peripheral_aresetn] [get_bd_pins scalp_axi4lite_0/SAxiResetxRANI] [get_bd_pins scalp_safe_firmware_0/SAxiRstxRANI] connect_bd_net -net scalp_axi4lite_0_InterruptxSO [get_bd_pins irq_xlconcat/In0] [get_bd_pins scalp_axi4lite_0/InterruptxSO] connect_bd_net -net scalp_axi4lite_0_RdAddrxDO [get_bd_ports RdAddrxDO] [get_bd_pins scalp_axi4lite_0/RdAddrxDO] connect_bd_net -net scalp_axi4lite_0_RdValidxSO [get_bd_ports RdValidxSO] [get_bd_pins scalp_axi4lite_0/RdValidxSO] connect_bd_net -net scalp_axi4lite_0_WrAddrxDO [get_bd_ports WrAddrxDO] [get_bd_pins scalp_axi4lite_0/WrAddrxDO] connect_bd_net -net scalp_axi4lite_0_WrDataxDO [get_bd_ports WrDataxDO] [get_bd_pins scalp_axi4lite_0/WrDataxDO] connect_bd_net -net scalp_axi4lite_0_WrValidxSO [get_bd_ports WrValidxSO] [get_bd_pins scalp_axi4lite_0/WrValidxSO] + connect_bd_net -net scalp_safe_firmware_0_RgbLedsCtrlPortxDO [get_bd_ports RgbLedsCtrlPortxDO] [get_bd_pins scalp_safe_firmware_0/RgbLedsCtrlPortxDO] connect_bd_net -net util_vector_logic_0_Res [get_bd_ports FclkReset0xRO] [get_bd_pins util_vector_logic_0/Res] connect_bd_net -net util_vector_logic_1_Res [get_bd_pins util_vector_logic_0/Op1] [get_bd_pins util_vector_logic_1/Res] connect_bd_net -net vio_0_probe_out0 [get_bd_pins util_vector_logic_0/Op2] [get_bd_pins vio_0/probe_out0] # Create address segments assign_bd_address -offset 0x43C00000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs scalp_axi4lite_0/SAXILitexDIO/SAXILiteAddr] -force + assign_bd_address -offset 0x43C10000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs scalp_safe_firmware_0/SAXILitexDIO/SAXILiteAddr] -force # Restore current instance diff --git a/tools/config/scalp_safe_firmware_reg_bank.json b/tools/config/scalp_safe_firmware_reg_bank.json new file mode 100644 index 0000000000000000000000000000000000000000..5a26b50bb554447c5e01a97a6c46988878c0aaf5 --- /dev/null +++ b/tools/config/scalp_safe_firmware_reg_bank.json @@ -0,0 +1,18 @@ +{ + "author" : { + "name" : "Joachim Schmidt", + "email" : "<joachim.schmidt@hesge.ch" + }, + "project" : { + "name" : "scalp_safe_firmware_reg_bank", + "type" : "COMP_PRJ_TYPE", + "category" : "IPS", + "vivado_version" : "2020.2", + "target_language" : "VHDL", + "vhdl_version" : "VHDL 2008" + }, + "hardware" : { + "part_name" : "xc7z015clg485-2", + "board_name" : "hepia-cores.ch:scalp_node:part0:0.1" + } +} diff --git a/tools/vivado_prj_creator b/tools/vivado_prj_creator index 14d2222cde0a7162b79d24f1bb0631795438af48..fa43241310c21f2e6872cb09d6daf0e27e373f72 160000 --- a/tools/vivado_prj_creator +++ b/tools/vivado_prj_creator @@ -1 +1 @@ -Subproject commit 14d2222cde0a7162b79d24f1bb0631795438af48 +Subproject commit fa43241310c21f2e6872cb09d6daf0e27e373f72