OpenCores
URL https://opencores.org/ocsvn/spi_master_slave/spi_master_slave/trunk

Subversion Repositories spi_master_slave

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 23 to Rev 24
    Reverse comparison

Rev 23 → Rev 24

/spi_master_slave/trunk/rtl/spi_master_slave/spi_loopback.ucf
0,0 → 1,115
 
#Created by Constraints Editor (xc6slx45t-csg484-3) - 2011/06/08
NET "s_clk_i" TNM_NET = s_clk_i;
TIMESPEC TS_s_clk_i = PERIOD "s_clk_i" 8 ns HIGH 50%;
#Created by Constraints Editor (xc6slx45t-csg484-3) - 2011/06/08
NET "m_clk_i" TNM_NET = m_clk_i;
TIMESPEC TS_m_clk_i = PERIOD "m_clk_i" 8 ns HIGH 50%;
NET "s_spi_sck_i" TNM_NET = s_spi_sck_i;
TIMESPEC TS_s_spi_sck_i = PERIOD "s_spi_sck_i" 30 ns HIGH 50%;
NET "m_spi_sck_o_OBUF" TNM_NET = m_spi_sck_o_OBUF;
TIMESPEC TS_m_spi_sck_o_OBUF = PERIOD "m_spi_sck_o_OBUF" 30 ns HIGH 50%;
NET "Inst_spi_master/core_n_clk" TNM_NET = Inst_spi_master/core_n_clk;
TIMESPEC TS_Inst_spi_master_core_n_clk = PERIOD "Inst_spi_master/core_n_clk" 30 ns HIGH 50%;
INST "m_di_i<0>" TNM = m_di;
INST "m_di_i<1>" TNM = m_di;
INST "m_di_i<2>" TNM = m_di;
INST "m_di_i<3>" TNM = m_di;
INST "m_di_i<4>" TNM = m_di;
INST "m_di_i<5>" TNM = m_di;
INST "m_di_i<6>" TNM = m_di;
INST "m_di_i<7>" TNM = m_di;
INST "m_di_i<8>" TNM = m_di;
INST "m_di_i<9>" TNM = m_di;
INST "m_di_i<10>" TNM = m_di;
INST "m_di_i<11>" TNM = m_di;
INST "m_di_i<12>" TNM = m_di;
INST "m_di_i<13>" TNM = m_di;
INST "m_di_i<14>" TNM = m_di;
INST "m_di_i<15>" TNM = m_di;
INST "m_di_i<16>" TNM = m_di;
INST "m_di_i<17>" TNM = m_di;
INST "m_di_i<18>" TNM = m_di;
INST "m_di_i<19>" TNM = m_di;
INST "m_di_i<20>" TNM = m_di;
INST "m_di_i<21>" TNM = m_di;
INST "m_di_i<22>" TNM = m_di;
INST "m_di_i<23>" TNM = m_di;
INST "m_di_i<24>" TNM = m_di;
INST "m_di_i<25>" TNM = m_di;
INST "m_di_i<26>" TNM = m_di;
INST "m_di_i<27>" TNM = m_di;
INST "m_di_i<28>" TNM = m_di;
INST "m_di_i<29>" TNM = m_di;
INST "m_di_i<30>" TNM = m_di;
INST "m_di_i<31>" TNM = m_di;
TIMEGRP "m_di" OFFSET = IN 8 ns VALID 8 ns BEFORE "m_clk_i" RISING;
INST "m_spi_miso_i" TNM = m_miso;
INST "s_di_i<0>" TNM = s_di;
INST "s_di_i<1>" TNM = s_di;
INST "s_di_i<2>" TNM = s_di;
INST "s_di_i<3>" TNM = s_di;
INST "s_di_i<4>" TNM = s_di;
INST "s_di_i<5>" TNM = s_di;
INST "s_di_i<6>" TNM = s_di;
INST "s_di_i<7>" TNM = s_di;
INST "s_di_i<8>" TNM = s_di;
INST "s_di_i<9>" TNM = s_di;
INST "s_di_i<10>" TNM = s_di;
INST "s_di_i<11>" TNM = s_di;
INST "s_di_i<12>" TNM = s_di;
INST "s_di_i<13>" TNM = s_di;
INST "s_di_i<14>" TNM = s_di;
INST "s_di_i<15>" TNM = s_di;
INST "s_di_i<16>" TNM = s_di;
INST "s_di_i<17>" TNM = s_di;
INST "s_di_i<18>" TNM = s_di;
INST "s_di_i<19>" TNM = s_di;
INST "s_di_i<20>" TNM = s_di;
INST "s_di_i<21>" TNM = s_di;
INST "s_di_i<22>" TNM = s_di;
INST "s_di_i<23>" TNM = s_di;
INST "s_di_i<24>" TNM = s_di;
INST "s_di_i<25>" TNM = s_di;
INST "s_di_i<26>" TNM = s_di;
INST "s_di_i<27>" TNM = s_di;
INST "s_di_i<28>" TNM = s_di;
INST "s_di_i<29>" TNM = s_di;
INST "s_di_i<30>" TNM = s_di;
INST "s_di_i<31>" TNM = s_di;
TIMEGRP "s_di" OFFSET = IN 8 ns VALID 8 ns BEFORE "s_clk_i" RISING;
INST "s_spi_mosi_i" TNM = s_mosi;
INST "m_do_o<0>" TNM = m_do;
INST "m_do_o<1>" TNM = m_do;
INST "m_do_o<2>" TNM = m_do;
INST "m_do_o<3>" TNM = m_do;
INST "m_do_o<4>" TNM = m_do;
INST "m_do_o<5>" TNM = m_do;
INST "m_do_o<6>" TNM = m_do;
INST "m_do_o<7>" TNM = m_do;
INST "m_do_o<8>" TNM = m_do;
INST "m_do_o<9>" TNM = m_do;
INST "m_do_o<10>" TNM = m_do;
INST "m_do_o<11>" TNM = m_do;
INST "m_do_o<12>" TNM = m_do;
INST "m_do_o<13>" TNM = m_do;
INST "m_do_o<14>" TNM = m_do;
INST "m_do_o<15>" TNM = m_do;
INST "m_do_o<16>" TNM = m_do;
INST "m_do_o<17>" TNM = m_do;
INST "m_do_o<18>" TNM = m_do;
INST "m_do_o<19>" TNM = m_do;
INST "m_do_o<20>" TNM = m_do;
INST "m_do_o<21>" TNM = m_do;
INST "m_do_o<22>" TNM = m_do;
INST "m_do_o<23>" TNM = m_do;
INST "m_do_o<24>" TNM = m_do;
INST "m_do_o<25>" TNM = m_do;
INST "m_do_o<26>" TNM = m_do;
INST "m_do_o<27>" TNM = m_do;
INST "m_do_o<28>" TNM = m_do;
INST "m_do_o<29>" TNM = m_do;
INST "m_do_o<30>" TNM = m_do;
INST "m_do_o<31>" TNM = m_do;
#Created by Constraints Editor (xc6slx45t-csg484-3) - 2011/06/09
INST "m_rx_bit_reg_o" TNM = m_rx_bit;
/spi_master_slave/trunk/rtl/spi_master_slave/spi_loopback_test.vhd
0,0 → 1,305
--------------------------------------------------------------------------------
-- Company:
-- Engineer: Jonny Doin
--
-- Create Date: 22:59:18 04/25/2011
-- Design Name: spi_master_slave
-- Module Name: spi_master_slave/spi_loopback_test.vhd
-- Project Name: SPI_interface
-- Target Device: Spartan-6
-- Tool versions: ISE 13.1
-- Description: Testbench to simulate the master and slave SPI interfaces. Each module can be tested
-- in a "real" environment, where the 'spi_master' exchanges data with the 'spi_slave'
-- module, simulating the internal working of each design.
-- In behavioral simulation, select a matching data width (N) and spi mode (CPOL, CPHA) for
-- both modules, and also a different clock domain for each parallel interface.
-- Different values for PREFETCH for each interface can be tested, to model the best value
-- for the pipelined memory / bus that is attached to the di/do ports.
-- To test the parallel interfaces, a simple ROM memory is simulated for each interface, with
-- 8 words of data to be sent, synchronous to each clock and flow control signals.
--
--
-- VHDL Test Bench Created by ISE for modules: 'spi_master' and 'spi_slave'
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Revision 0.10 - Implemented FIFO simulation for each interface.
-- Additional Comments:
--
-- Notes:
-- This testbench has been automatically generated using types std_logic and
-- std_logic_vector for the ports of the unit under test. Xilinx recommends
-- that these types always be used for the top-level I/O of a design in order
-- to guarantee that the testbench will bind correctly to the post-implementation
-- simulation model.
--------------------------------------------------------------------------------
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;
 
library work;
use work.all;
 
ENTITY spi_loopback_test IS
GENERIC (
N : positive := 32; -- 32bit serial word length is default
CPOL : std_logic := '0'; -- SPI mode selection (mode 0 default)
CPHA : std_logic := '1'; -- CPOL = clock polarity, CPHA = clock phase.
PREFETCH : positive := 2 -- prefetch lookahead cycles
);
END spi_loopback_test;
ARCHITECTURE behavior OF spi_loopback_test IS
 
--=========================================================
-- Component declaration for the Unit Under Test (UUT)
--=========================================================
 
COMPONENT spi_loopback
PORT(
m_clk_i : IN std_logic;
m_rst_i : IN std_logic;
m_spi_miso_i : IN std_logic;
m_di_i : IN std_logic_vector(31 downto 0);
m_wren_i : IN std_logic;
s_clk_i : IN std_logic;
s_spi_ssel_i : IN std_logic;
s_spi_sck_i : IN std_logic;
s_spi_mosi_i : IN std_logic;
s_di_i : IN std_logic_vector(31 downto 0);
s_wren_i : IN std_logic;
m_spi_ssel_o : OUT std_logic;
m_spi_sck_o : OUT std_logic;
m_spi_mosi_o : OUT std_logic;
m_di_req_o : OUT std_logic;
m_do_valid_o : OUT std_logic;
m_do_o : OUT std_logic_vector(31 downto 0);
m_do_transfer_o : OUT std_logic;
m_wren_o : OUT std_logic;
m_wren_ack_o : OUT std_logic;
m_rx_bit_reg_o : OUT std_logic;
m_state_dbg_o : OUT std_logic_vector(5 downto 0);
m_core_clk_o : OUT std_logic;
m_core_n_clk_o : OUT std_logic;
m_sh_reg_dbg_o : OUT std_logic_vector(31 downto 0);
s_spi_miso_o : OUT std_logic;
s_di_req_o : OUT std_logic;
s_do_valid_o : OUT std_logic;
s_do_o : OUT std_logic_vector(31 downto 0);
s_do_transfer_o : OUT std_logic;
s_wren_o : OUT std_logic;
s_wren_ack_o : OUT std_logic;
s_rx_bit_reg_o : OUT std_logic;
s_state_dbg_o : OUT std_logic_vector(5 downto 0)
);
END COMPONENT;
 
--=========================================================
-- constants
--=========================================================
constant fifo_memory_size : integer := 16;
--=========================================================
-- types
--=========================================================
type fifo_memory_type is array (0 to fifo_memory_size-1) of std_logic_vector (N-1 downto 0);
 
--=========================================================
-- signals to connect the instances
--=========================================================
-- internal clk and rst
signal m_clk : std_logic := '0'; -- clock domain for the master parallel interface. Must be faster than spi bus sck.
signal s_clk : std_logic := '0'; -- clock domain for the slave parallel interface. Must be faster than spi bus sck.
signal rst : std_logic := 'U';
-- spi bus wires
signal spi_sck : std_logic;
signal spi_ssel : std_logic;
signal spi_miso : std_logic;
signal spi_mosi : std_logic;
-- master parallel interface
signal di_m : std_logic_vector (N-1 downto 0) := (others => '0');
signal do_m : std_logic_vector (N-1 downto 0) := (others => 'U');
signal do_valid_m : std_logic;
signal do_transfer_m : std_logic;
signal di_req_m : std_logic;
signal wren_m : std_logic := '0';
signal wren_o_m : std_logic := 'U';
signal wren_ack_o_m : std_logic := 'U';
signal rx_bit_reg_m : std_logic;
signal state_m : std_logic_vector (5 downto 0);
signal core_clk_o_m : std_logic;
signal core_n_clk_o_m : std_logic;
signal sh_reg_m : std_logic_vector (N-1 downto 0) := (others => '0');
-- slave parallel interface
signal di_s : std_logic_vector (N-1 downto 0) := (others => '0');
signal do_s : std_logic_vector (N-1 downto 0);
signal do_valid_s : std_logic;
signal do_transfer_s : std_logic;
signal di_req_s : std_logic;
signal wren_s : std_logic := '0';
signal wren_o_s : std_logic := 'U';
signal wren_ack_o_s : std_logic := 'U';
signal rx_bit_reg_s : std_logic;
signal state_s : std_logic_vector (5 downto 0);
-- signal sh_reg_s : std_logic_vector (N-1 downto 0);
 
--=========================================================
-- Clock period definitions
--=========================================================
constant m_clk_period : time := 10 ns; -- 100MHz master parallel clock
constant s_clk_period : time := 10 ns; -- 100MHz slave parallel clock
 
BEGIN
--=========================================================
-- Component instantiation for the Unit Under Test (UUT)
--=========================================================
 
Inst_spi_loopback: spi_loopback
port map(
----------------MASTER-----------------------
m_clk_i => m_clk,
m_rst_i => rst,
m_spi_ssel_o => spi_ssel,
m_spi_sck_o => spi_sck,
m_spi_mosi_o => spi_mosi,
m_spi_miso_i => spi_miso,
m_di_req_o => di_req_m,
m_di_i => di_m,
m_wren_i => wren_m,
m_do_valid_o => do_valid_m,
m_do_o => do_m,
----- debug -----
m_do_transfer_o => do_transfer_m,
m_wren_o => wren_o_m,
m_wren_ack_o => wren_ack_o_m,
m_rx_bit_reg_o => rx_bit_reg_m,
m_state_dbg_o => state_m,
m_core_clk_o => core_clk_o_m,
m_core_n_clk_o => core_n_clk_o_m,
m_sh_reg_dbg_o => sh_reg_m,
----------------SLAVE-----------------------
s_clk_i => s_clk,
s_spi_ssel_i => spi_ssel,
s_spi_sck_i => spi_sck,
s_spi_mosi_i => spi_mosi,
s_spi_miso_o => spi_miso,
s_di_req_o => di_req_s,
s_di_i => di_s,
s_wren_i => wren_s,
s_do_valid_o => do_valid_s,
s_do_o => do_s,
----- debug -----
s_do_transfer_o => do_transfer_s,
s_wren_o => wren_o_s,
s_wren_ack_o => wren_ack_o_s,
s_rx_bit_reg_o => rx_bit_reg_s,
s_state_dbg_o => state_s
-- s_sh_reg_dbg_o => sh_reg_s
);
 
--=========================================================
-- Clock generator processes
--=========================================================
m_clk_process : process
begin
m_clk <= '0';
wait for m_clk_period/2;
m_clk <= '1';
wait for m_clk_period/2;
end process m_clk_process;
 
s_clk_process : process
begin
s_clk <= '0';
wait for s_clk_period/2;
s_clk <= '1';
wait for s_clk_period/2;
end process s_clk_process;
 
--=========================================================
-- rst_i process
--=========================================================
rst <= '0', '1' after 20 ns, '0' after 100 ns;
--=========================================================
-- Master interface process
--=========================================================
master_tx_fifo_proc: process is
variable fifo_memory : fifo_memory_type :=
(X"87654321",X"abcdef01",X"faceb007",X"10203049",X"85a5a5a5",X"7aaa5551",X"7adecabe",X"57564789",
X"12345678",X"beefbeef",X"fee1600d",X"f158ba17",X"5ee1a7e3",X"101096da",X"600ddeed",X"deaddead");
variable fifo_head : integer range 0 to fifo_memory_size-1;
begin
-- synchronous rst_i
wait until rst = '1';
wait until m_clk'event and m_clk = '1';
di_m <= (others => '0');
wren_m <= '0';
fifo_head := 0;
wait until rst = '0';
wait until di_req_m = '1'; -- wait shift register request for data
-- load next fifo contents into shift register
for cnt in 0 to (fifo_memory_size/2)-1 loop
fifo_head := cnt; -- pre-compute next pointer
wait until m_clk'event and m_clk = '1'; -- sync fifo data load at next rising edge
di_m <= fifo_memory(fifo_head); -- place data into tx_data input bus
wait until m_clk'event and m_clk = '1'; -- sync fifo data load at next rising edge
wren_m <= '1'; -- write data into spi master
wait until m_clk'event and m_clk = '1'; -- sync fifo data load at next rising edge
wait until m_clk'event and m_clk = '1'; -- sync fifo data load at next rising edge
wren_m <= '0'; -- remove write enable signal
wait until di_req_m = '1'; -- wait shift register request for data
end loop;
wait until spi_ssel = '1';
wait for 2000 ns;
for cnt in (fifo_memory_size/2) to fifo_memory_size-1 loop
fifo_head := cnt; -- pre-compute next pointer
wait until m_clk'event and m_clk = '1'; -- sync fifo data load at next rising edge
di_m <= fifo_memory(fifo_head); -- place data into tx_data input bus
wait until m_clk'event and m_clk = '1'; -- sync fifo data load at next rising edge
wren_m <= '1'; -- write data into spi master
wait until m_clk'event and m_clk = '1'; -- sync fifo data load at next rising edge
wait until m_clk'event and m_clk = '1'; -- sync fifo data load at next rising edge
wren_m <= '0'; -- remove write enable signal
wait until di_req_m = '1'; -- wait shift register request for data
end loop;
wait;
end process master_tx_fifo_proc;
 
 
--=========================================================
-- Slave interface process
--=========================================================
slave_tx_fifo_proc: process is
variable fifo_memory : fifo_memory_type :=
(X"90201031",X"97640231",X"ef55aaf1",X"babaca51",X"b00b1ee5",X"51525354",X"81828384",X"91929394",
X"be575ec5",X"2fa57410",X"cafed0ce",X"afadab0a",X"bac7ed1a",X"f05fac75",X"2acbac7e",X"12345678");
variable fifo_head : integer range 0 to fifo_memory_size-1;
begin
-- synchronous rst_i
wait until rst = '1';
wait until s_clk'event and s_clk = '1';
di_s <= (others => '0');
wren_s <= '0';
fifo_head := 0;
wait until rst = '0';
wait until di_req_s = '1'; -- wait shift register request for data
-- load next fifo contents into shift register
for cnt in 0 to fifo_memory_size-1 loop
fifo_head := cnt; -- pre-compute next pointer
wait until s_clk'event and s_clk = '1'; -- sync fifo data load at next rising edge
di_s <= fifo_memory(fifo_head); -- place data into tx_data input bus
wait until s_clk'event and s_clk = '1'; -- sync fifo data load at next rising edge
wren_s <= '1'; -- write data into shift register
wait until s_clk'event and s_clk = '1'; -- sync fifo data load at next rising edge
wait until s_clk'event and s_clk = '1'; -- sync fifo data load at next rising edge
wren_s <= '0'; -- remove write enable signal
wait until di_req_s = '1'; -- wait shift register request for data
end loop;
wait;
end process slave_tx_fifo_proc;
END ARCHITECTURE behavior;
/spi_master_slave/trunk/rtl/spi_master_slave/spi_loopback.vhd
0,0 → 1,139
----------------------------------------------------------------------------------
-- Company:
-- Engineer:
--
-- Create Date: 23:44:37 05/17/2011
-- Design Name:
-- Module Name: spi_loopback - Behavioral
-- Project Name:
-- Target Devices:
-- Tool versions:
-- Description:
-- This is a simple wrapper for the 'spi_master' and 'spi_slave' cores, to synthesize the 2 cores and
-- test them in the simulator.
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
--
----------------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
library work;
use work.all;
 
entity spi_loopback is
Generic (
N : positive := 32; -- 32bit serial word length is default
CPOL : std_logic := '0'; -- SPI mode selection (mode 0 default)
CPHA : std_logic := '1'; -- CPOL = clock polarity, CPHA = clock phase.
PREFETCH : positive := 2; -- prefetch lookahead cycles
SPI_2X_CLK_DIV : positive := 5 -- for a 100MHz sclk_i, yields a 10MHz SCK
);
Port(
----------------MASTER-----------------------
m_clk_i : IN std_logic;
m_rst_i : IN std_logic;
m_spi_ssel_o : OUT std_logic;
m_spi_sck_o : OUT std_logic;
m_spi_mosi_o : OUT std_logic;
m_spi_miso_i : IN std_logic;
m_di_req_o : OUT std_logic;
m_di_i : IN std_logic_vector(N-1 downto 0);
m_wren_i : IN std_logic;
m_do_valid_o : OUT std_logic;
m_do_o : OUT std_logic_vector(N-1 downto 0);
----- debug -----
m_do_transfer_o : OUT std_logic;
m_wren_o : OUT std_logic;
m_wren_ack_o : OUT std_logic;
m_rx_bit_reg_o : OUT std_logic;
m_state_dbg_o : OUT std_logic_vector(5 downto 0);
m_core_clk_o : OUT std_logic;
m_core_n_clk_o : OUT std_logic;
m_sh_reg_dbg_o : OUT std_logic_vector(N-1 downto 0);
----------------SLAVE-----------------------
s_clk_i : IN std_logic;
s_spi_ssel_i : IN std_logic;
s_spi_sck_i : IN std_logic;
s_spi_mosi_i : IN std_logic;
s_spi_miso_o : OUT std_logic;
s_di_req_o : OUT std_logic; -- preload lookahead data request line
s_di_i : IN std_logic_vector (N-1 downto 0) := (others => 'X'); -- parallel load data in (clocked in on rising edge of clk_i)
s_wren_i : IN std_logic := 'X'; -- user data write enable
s_do_valid_o : OUT std_logic; -- do_o data valid strobe, valid during one clk_i rising edge.
s_do_o : OUT std_logic_vector (N-1 downto 0); -- parallel output (clocked out on falling clk_i)
----- debug -----
s_do_transfer_o : OUT std_logic; -- debug: internal transfer driver
s_wren_o : OUT std_logic;
s_wren_ack_o : OUT std_logic;
s_rx_bit_reg_o : OUT std_logic;
s_state_dbg_o : OUT std_logic_vector (5 downto 0) -- debug: internal state register
-- s_sh_reg_dbg_o : OUT std_logic_vector (N-1 downto 0) -- debug: internal shift register
);
end spi_loopback;
 
architecture Structural of spi_loopback is
begin
 
--=============================================================================================
-- Component instantiation for the SPI master port
--=============================================================================================
Inst_spi_master: entity work.spi_master(rtl)
generic map (N => N, CPOL => CPOL, CPHA => CPHA, PREFETCH => PREFETCH, SPI_2X_CLK_DIV => SPI_2X_CLK_DIV)
port map(
sclk_i => m_clk_i, -- system clock is used for serial and parallel ports
pclk_i => m_clk_i,
rst_i => m_rst_i,
spi_ssel_o => m_spi_ssel_o,
spi_sck_o => m_spi_sck_o,
spi_mosi_o => m_spi_mosi_o,
spi_miso_i => m_spi_miso_i,
di_req_o => m_di_req_o,
di_i => m_di_i,
wren_i => m_wren_i,
do_valid_o => m_do_valid_o,
do_o => m_do_o,
----- debug -----
do_transfer_o => m_do_transfer_o,
wren_o => m_wren_o,
wren_ack_o => m_wren_ack_o,
rx_bit_reg_o => m_rx_bit_reg_o,
state_dbg_o => m_state_dbg_o,
core_clk_o => m_core_clk_o,
core_n_clk_o => m_core_n_clk_o,
sh_reg_dbg_o => m_sh_reg_dbg_o
);
 
--=============================================================================================
-- Component instantiation for the SPI slave port
--=============================================================================================
Inst_spi_slave: entity work.spi_slave(rtl)
generic map (N => N, CPOL => CPOL, CPHA => CPHA, PREFETCH => PREFETCH)
port map(
clk_i => s_clk_i,
spi_ssel_i => s_spi_ssel_i,
spi_sck_i => s_spi_sck_i,
spi_mosi_i => s_spi_mosi_i,
spi_miso_o => s_spi_miso_o,
di_req_o => s_di_req_o,
di_i => s_di_i,
wren_i => s_wren_i,
do_valid_o => s_do_valid_o,
do_o => s_do_o,
----- debug -----
do_transfer_o => s_do_transfer_o,
wren_o => s_wren_o,
wren_ack_o => s_wren_ack_o,
rx_bit_reg_o => s_rx_bit_reg_o,
state_dbg_o => s_state_dbg_o
-- sh_reg_dbg_o => s_sh_reg_dbg_o
);
 
end Structural;
 
 
 
/spi_master_slave/trunk/rtl/spi_master_slave/spi_slave.vhd
0,0 → 1,458
----------------------------------------------------------------------------------
-- Author: Jonny Doin, jdoin@opencores.org
--
-- Create Date: 15:36:20 05/15/2011
-- Module Name: SPI_SLAVE - RTL
-- Project Name: SPI INTERFACE
-- Target Devices: Spartan-6
-- Tool versions: ISE 13.1
-- Description:
--
-- This block is the SPI slave interface, implemented in one single entity.
-- All internal core operations are synchronous to the external SPI clock, and follows the general SPI de-facto standard.
-- The parallel read/write interface is synchronous to a supplied system master clock, 'clk_i'.
-- Synchronization for the parallel ports is provided by input data request and write enable lines, and output data valid line.
-- Fully pipelined cross-clock circuitry guarantees that no setup artifacts occur on the buffers that are accessed by the two
-- clock domains.
--
-- The block is very simple to use, and has parallel inputs and outputs that behave like a synchronous memory i/o.
-- It is parameterizable via generics for the data width ('N'), SPI mode (CPHA and CPOL), and lookahead prefetch
-- signaling ('PREFETCH').
--
-- PARALLEL WRITE INTERFACE
-- The parallel interface has a input port 'di_i' and an output port 'do_o'.
-- Parallel load is controlled using 3 signals: 'di_i', 'di_req_o' and 'wren_i'.
-- When the core needs input data, a look ahead data request strobe , 'di_req_o' is pulsed 'PREFETCH' 'spi_sck_i'
-- cycles in advance to synchronize a user pipelined memory or fifo to present the next input data at 'di_i'
-- in time to have continuous clock at the spi bus, to allow back-to-back continuous load.
-- The data request strobe on 'di_req_o' is 2 'clk_i' clock cycles long.
-- The write to 'di_i' must occur at most one 'spi_sck_i' cycle before actual load to the core shift register, to avoid
-- race conditions at the register transfer.
-- The user circuit places data at the 'di_i' port and strobes the 'wren_i' line for one rising edge of 'clk_i'.
-- For a pipelined sync RAM, a PREFETCH of 3 cycles allows an address generator to present the new adress to the RAM in one
-- cycle, and the RAM to respond in one more cycle, in time for 'di_i' to be latched by the interface one clock before transfer.
-- If the user sequencer needs a different value for PREFETCH, the generic can be altered at instantiation time.
-- The 'wren_i' write enable strobe must be valid at least one setup time before the rising edge of the last clock cycle,
-- if continuous transmission is intended.
-- When the interface is idle ('spi_ssel_i' is HIGH), the top bit of the latched 'di_i' port is presented at port 'spi_miso_o'.
--
-- PARALLEL WRITE PIPELINED SEQUENCE
-- =================================
-- __ __ __ __ __ __ __
-- clk_i __/ \__/ \__/ \__/ \__/ \__/ \__/ \... -- parallel interface clock
-- ___________
-- di_req_o ________/ \_____________________... -- 'di_req_o' asserted on rising edge of 'clk_i'
-- ______________ ___________________________...
-- di_i __old_data____X______new_data_____________... -- user circuit loads data on 'di_i' at next 'clk_i' rising edge
-- ________
-- wren_i __________________________/ \______... -- 'wren_i' enables latch on rising edge of 'clk_i'
--
--
-- PARALLEL READ INTERFACE
-- An internal buffer is used to copy the internal shift register data to drive the 'do_o' port. When a complete
-- word is received, the core shift register is transferred to the buffer, at the rising edge of the spi clock, 'spi_sck_i'.
-- The signal 'do_valid_o' is strobed 3 'clk_i' clocks after, to directly drive a synchronous memory or fifo write enable.
-- 'do_valid_o' is synchronous to the parallel interface clock, and changes only on rising edges of 'clk_i'.
-- When the interface is idle, data at the 'do_o' port holds the last word received.
--
-- PARALLEL READ PIPELINED SEQUENCE
-- ================================
-- ______ ______ ______ ______
-- clk_spi_i ___/ bit1 \______/ bitN \______/bitN-1\______/bitN-2\__... -- spi base clock
-- __ __ __ __ __ __ __ __ __
-- clk_i __/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \_... -- parallel interface clock
-- _________________ _____________________________________... -- 1) received data is transferred to 'do_buffer_reg'
-- do_o __old_data_______X__________new_data___________________... -- after last bit received, at next shift clock.
-- ____________
-- do_valid_o ________________________________/ \_________... -- 2) 'do_valid_o' strobed for 2 'clk_i' cycles
-- -- on the 3rd 'clk_i' rising edge.
--
--
-- This design was originally targeted to a Spartan-6 platform, synthesized with XST and normal constraints.
--
------------------------------ COPYRIGHT NOTICE -----------------------------------------------------------------------
--
-- This file is part of the SPI MASTER/SLAVE INTERFACE project http://opencores.org/project,spi_master_slave
--
-- Author(s): Jonny Doin, jdoin@opencores.org, jonnydoin@gmail.com
--
-- Copyright (C) 2011 Jonny Doin
-- -----------------------------
--
-- This source file may be used and distributed without restriction provided that this copyright statement is not
-- removed from the file and that any derivative work contains the original copyright notice and the associated
-- disclaimer.
--
-- This source file is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser
-- General Public License as published by the Free Software Foundation; either version 2.1 of the License, or
-- (at your option) any later version.
--
-- This source is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
-- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
-- details.
--
-- You should have received a copy of the GNU Lesser General Public License along with this source; if not, download
-- it from http://www.gnu.org/licenses/lgpl.txt
--
------------------------------ REVISION HISTORY -----------------------------------------------------------------------
--
-- 2011/05/15 v0.10.0050 [JD] created the slave logic, with 2 clock domains, from SPI_MASTER module.
-- 2011/05/15 v0.15.0055 [JD] fixed logic for starting state when CPHA='1'.
-- 2011/05/17 v0.80.0049 [JD] added explicit clock synchronization circuitry across clock boundaries.
-- 2011/05/18 v0.95.0050 [JD] clock generation circuitry, with generators for all-rising-edge clock core.
-- 2011/06/05 v0.96.0053 [JD] changed async clear to sync resets.
-- 2011/06/07 v0.97.0065 [JD] added cross-clock buffers, fixed fsm async glitches.
-- 2011/06/09 v0.97.0068 [JD] reduced control sets (resets, CE, presets) to the absolute minimum to operate, to reduce
-- synthesis LUT overhead in Spartan-6 architecture.
-- 2011/06/11 v0.97.0075 [JD] redesigned all parallel data interfacing ports, and implemented cross-clock strobe logic.
-- 2011/06/12 v0.97.0079 [JD] implemented wr_ack and di_req logic for state 0, and eliminated unnecessary registers reset.
-- 2011/06/17 v0.97.0079 [JD] implemented wr_ack and di_req logic for state 0, and eliminated unnecessary registers reset.
-- 2011/07/16 v1.11.0080 [JD] verified both spi_master and spi_slave in loopback at 50MHz SPI clock.
-- 2011/07/29 v2.00.0110 [JD] FIX: CPHA bugs:
-- - redesigned core clocking to address all CPOL and CPHA configurations.
-- - added CHANGE_EDGE to the FSM register transfer logic, to have MISO change at opposite
-- clock phases from SHIFT_EDGE.
-- Removed global signal setting at the FSM, implementing exhaustive explicit signal attributions
-- for each state, to avoid reported inference problems in some synthesis engines.
-- Streamlined port names and indentation blocks.
-- 2011/08/01 v2.01.0115 [JD] Adjusted 'do_valid_o' pulse width to be 2 'clk_i', as in the master core.
-- Simulated in iSim with the master core for continuous transmission mode.
-- 2011/08/02 v2.02.0120 [JD] Added mux for MISO at reset state, to output di(N-1) at start. This fixed a bug in first bit.
-- The master and slave cores were verified in FPGA with continuous transmission, for all SPI modes.
-- 2011/08/04 v2.02.0121 [JD] Changed minor comment bugs in the combinatorial fsm logic.
-- 2011/08/08 v2.02.0122 [JD] FIX: continuous transfer mode bug. When wren_i is not strobed prior to state 1 (last bit), the
-- sequencer goes to state 0, and then to state 'N' again. This produces a wrong bit-shift for received
-- data. The fix consists in engaging continuous transfer regardless of the user strobing write enable, and
-- sequencing from state 1 to N as long as the master clock is present. If the user does not write new
-- data, the last data word is repeated.
-- 2011/08/08 v2.02.0123 [JD] ISSUE: continuous transfer mode bug, for ignored 'di_req' cycles. Instead of repeating the last data word,
-- the slave will send (others => '0') instead.
-- 2011/08/28 v2.02.0126 [JD] ISSUE: the miso_o MUX that preloads tx_bit when slave is desselected will glitch for CPHA='1'.
-- FIX: added a registered drive for the MUX select that will transfer the tx_reg only after the first tx_reg update.
--
-----------------------------------------------------------------------------------------------------------------------
-- TODO
-- ====
--
-----------------------------------------------------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.std_logic_unsigned.all;
 
entity spi_slave is
Generic (
N : positive := 32; -- 32bit serial word length is default
CPOL : std_logic := '0'; -- SPI mode selection (mode 0 default)
CPHA : std_logic := '0'; -- CPOL = clock polarity, CPHA = clock phase.
PREFETCH : positive := 3); -- prefetch lookahead cycles
Port (
clk_i : in std_logic := 'X'; -- internal interface clock (clocks di/do registers)
spi_ssel_i : in std_logic := 'X'; -- spi bus slave select line
spi_sck_i : in std_logic := 'X'; -- spi bus sck clock (clocks the shift register core)
spi_mosi_i : in std_logic := 'X'; -- spi bus mosi input
spi_miso_o : out std_logic := 'X'; -- spi bus spi_miso_o output
di_req_o : out std_logic; -- preload lookahead data request line
di_i : in std_logic_vector (N-1 downto 0) := (others => 'X'); -- parallel load data in (clocked in on rising edge of clk_i)
wren_i : in std_logic := 'X'; -- user data write enable
wr_ack_o : out std_logic; -- write acknowledge
do_valid_o : out std_logic; -- do_o data valid strobe, valid during one clk_i rising edge.
do_o : out std_logic_vector (N-1 downto 0); -- parallel output (clocked out on falling clk_i)
--- debug ports: can be removed for the application circuit ---
do_transfer_o : out std_logic; -- debug: internal transfer driver
wren_o : out std_logic; -- debug: internal state of the wren_i pulse stretcher
rx_bit_next_o : out std_logic; -- debug: internal rx bit
state_dbg_o : out std_logic_vector (3 downto 0); -- debug: internal state register
sh_reg_dbg_o : out std_logic_vector (N-1 downto 0) -- debug: internal shift register
);
end spi_slave;
 
--================================================================================================================
-- SYNTHESIS CONSIDERATIONS
-- ========================
-- There are several output ports that are used to simulate and verify the core operation.
-- Do not map any signals to the unused ports, and the synthesis tool will remove the related interfacing
-- circuitry.
-- The same is valid for the transmit and receive ports. If the receive ports are not mapped, the
-- synthesis tool will remove the receive logic from the generated circuitry.
-- Alternatively, you can remove these ports and related circuitry once the core is verified and
-- integrated to your circuit.
--================================================================================================================
 
architecture rtl of spi_slave is
-- constants to control FlipFlop synthesis
constant SHIFT_EDGE : std_logic := (CPOL xnor CPHA); -- MOSI data is captured and shifted at this SCK edge
constant CHANGE_EDGE : std_logic := (CPOL xor CPHA); -- MISO data is updated at this SCK edge
 
------------------------------------------------------------------------------------------
-- GLOBAL RESET:
-- all signals are initialized to zero at GSR (global set/reset) by giving explicit
-- initialization values at declaration. This is needed for all Xilinx FPGAs, and
-- especially for the Spartan-6 and newer CLB architectures, where a local reset can
-- reduce the usability of the slice registers, due to the need to share the control
-- set (RESET/PRESET, CLOCK ENABLE and CLOCK) by all 8 registers in a slice.
-- By using GSR for the initialization, and reducing RESET local init to the really
-- essential, the model achieves better LUT/FF packing and CLB usability.
------------------------------------------------------------------------------------------
-- internal state signals for register and combinatorial stages
signal state_next : natural range N downto 0 := 0; -- state 0 is idle state
signal state_reg : natural range N downto 0 := 0; -- state 0 is idle state
-- shifter signals for register and combinatorial stages
signal sh_next : std_logic_vector (N-1 downto 0);
signal sh_reg : std_logic_vector (N-1 downto 0);
-- mosi and miso connections
signal rx_bit_next : std_logic; -- sample of MOSI input
signal tx_bit_next : std_logic;
signal tx_bit_reg : std_logic; -- drives MISO during sequential logic
signal preload_miso : std_logic; -- controls the MISO MUX
-- buffered di_i data signals for register and combinatorial stages
signal di_reg : std_logic_vector (N-1 downto 0);
-- internal wren_i stretcher for fsm combinatorial stage
signal wren : std_logic;
signal wr_ack_next : std_logic := '0';
signal wr_ack_reg : std_logic := '0';
-- buffered do_o data signals for register and combinatorial stages
signal do_buffer_next : std_logic_vector (N-1 downto 0);
signal do_buffer_reg : std_logic_vector (N-1 downto 0);
-- internal signal to flag transfer to do_buffer_reg
signal do_transfer_next : std_logic := '0';
signal do_transfer_reg : std_logic := '0';
-- internal input data request signal
signal di_req_next : std_logic := '0';
signal di_req_reg : std_logic := '0';
-- cross-clock do_valid_o logic
signal do_valid_next : std_logic := '0';
signal do_valid_A : std_logic := '0';
signal do_valid_B : std_logic := '0';
signal do_valid_C : std_logic := '0';
signal do_valid_D : std_logic := '0';
signal do_valid_o_reg : std_logic := '0';
-- cross-clock di_req_o logic
signal di_req_o_next : std_logic := '0';
signal di_req_o_A : std_logic := '0';
signal di_req_o_B : std_logic := '0';
signal di_req_o_C : std_logic := '0';
signal di_req_o_D : std_logic := '0';
signal di_req_o_reg : std_logic := '0';
begin
--=============================================================================================
-- GENERICS CONSTRAINTS CHECKING
--=============================================================================================
-- minimum word width is 8 bits
assert N >= 8
report "Generic parameter 'N' error: SPI shift register size needs to be 8 bits minimum"
severity FAILURE;
-- maximum prefetch lookahead check
assert PREFETCH <= N-5
report "Generic parameter 'PREFETCH' error: lookahead count out of range, needs to be N-5 maximum"
severity FAILURE;
 
--=============================================================================================
-- GENERATE BLOCKS
--=============================================================================================
 
--=============================================================================================
-- DATA INPUTS
--=============================================================================================
-- connect rx bit input
rx_bit_proc : rx_bit_next <= spi_mosi_i;
 
--=============================================================================================
-- CROSS-CLOCK PIPELINE TRANSFER LOGIC
--=============================================================================================
-- do_valid_o and di_req_o strobe output logic
-- this is a delayed pulse generator with a ripple-transfer FFD pipeline, that generates a
-- fixed-length delayed pulse for the output flags, at the parallel clock domain
out_transfer_proc : process ( clk_i, do_transfer_reg, di_req_reg,
do_valid_A, do_valid_B, do_valid_D,
di_req_o_A, di_req_o_B, di_req_o_D) is
begin
if clk_i'event and clk_i = '1' then -- clock at parallel port clock
-- do_transfer_reg -> do_valid_o_reg
do_valid_A <= do_transfer_reg; -- the input signal must be at least 2 clocks long
do_valid_B <= do_valid_A; -- feed it to a ripple chain of FFDs
do_valid_C <= do_valid_B;
do_valid_D <= do_valid_C;
do_valid_o_reg <= do_valid_next; -- registered output pulse
--------------------------------
-- di_req_reg -> di_req_o_reg
di_req_o_A <= di_req_reg; -- the input signal must be at least 2 clocks long
di_req_o_B <= di_req_o_A; -- feed it to a ripple chain of FFDs
di_req_o_C <= di_req_o_B;
di_req_o_D <= di_req_o_C;
di_req_o_reg <= di_req_o_next; -- registered output pulse
end if;
-- generate a 2-clocks pulse at the 3rd clock cycle
do_valid_next <= do_valid_A and do_valid_B and not do_valid_D;
di_req_o_next <= di_req_o_A and di_req_o_B and not di_req_o_D;
end process out_transfer_proc;
-- parallel load input registers: data register and write enable
in_transfer_proc: process (clk_i, wren_i, wr_ack_reg) is
begin
-- registered data input, input register with clock enable
if clk_i'event and clk_i = '1' then
if wren_i = '1' then
di_reg <= di_i; -- parallel data input buffer register
end if;
end if;
-- stretch wren pulse to be detected by spi fsm (ffd with sync preset and sync reset)
if clk_i'event and clk_i = '1' then
if wren_i = '1' then -- wren_i is the sync preset for wren
wren <= '1';
elsif wr_ack_reg = '1' then -- wr_ack is the sync reset for wren
wren <= '0';
end if;
end if;
end process in_transfer_proc;
 
--=============================================================================================
-- REGISTER TRANSFER PROCESSES
--=============================================================================================
-- fsm state and data registers change on spi SHIFT_EDGE
core_reg_proc : process (spi_sck_i, spi_ssel_i) is
begin
-- FFD registers clocked on SHIFT edge and cleared on idle (spi_ssel_i = 1)
-- state fsm register (fdr)
if spi_ssel_i = '1' then -- async clr
state_reg <= 0; -- state falls back to idle when slave not selected
elsif spi_sck_i'event and spi_sck_i = SHIFT_EDGE then -- on SHIFT edge, update state register
state_reg <= state_next; -- core fsm changes state with spi SHIFT clock
end if;
-- FFD registers clocked on SHIFT edge
-- rtl core registers (fd)
if spi_sck_i'event and spi_sck_i = SHIFT_EDGE then -- on fsm state change, update all core registers
sh_reg <= sh_next; -- core shift register
do_buffer_reg <= do_buffer_next; -- registered data output
do_transfer_reg <= do_transfer_next; -- cross-clock transfer flag
di_req_reg <= di_req_next; -- input data request
wr_ack_reg <= wr_ack_next; -- wren ack for data load synchronization
end if;
-- FFD registers clocked on CHANGE edge and cleared on idle (spi_ssel_i = 1)
-- miso MUX preload control register (fdp)
if spi_ssel_i = '1' then -- async preset
preload_miso <= '1'; -- miso MUX sees top bit of parallel input when slave not selected
elsif spi_sck_i'event and spi_sck_i = CHANGE_EDGE then -- on CHANGE edge, change to tx_reg output
preload_miso <= spi_ssel_i; -- miso MUX sees tx_bit_reg when it is driven by SCK
end if;
-- FFD registers clocked on CHANGE edge
-- tx_bit register (fd)
if spi_sck_i'event and spi_sck_i = CHANGE_EDGE then
tx_bit_reg <= tx_bit_next; -- update MISO driver from the MSb
end if;
end process core_reg_proc;
 
--=============================================================================================
-- COMBINATORIAL LOGIC PROCESSES
--=============================================================================================
-- state and datapath combinatorial logic
core_combi_proc : process ( sh_reg, sh_next, state_reg, tx_bit_reg, rx_bit_next, do_buffer_reg,
do_transfer_reg, di_reg, di_req_reg, wren, wr_ack_reg) is
begin
-- all output signals are assigned to (avoid latches)
sh_next <= sh_reg; -- shift register
tx_bit_next <= tx_bit_reg; -- MISO driver
do_buffer_next <= do_buffer_reg; -- output data buffer
do_transfer_next <= do_transfer_reg; -- output data flag
wr_ack_next <= wr_ack_reg; -- write enable acknowledge
di_req_next <= di_req_reg; -- data input request
state_next <= state_reg; -- fsm control state
case state_reg is
when (N) => -- deassert 'di_rdy' and stretch do_valid
wr_ack_next <= '0'; -- acknowledge data in transfer
di_req_next <= '0'; -- prefetch data request: deassert when shifting data
tx_bit_next <= sh_reg(N-1); -- output next MSbit
sh_next(N-1 downto 1) <= sh_reg(N-2 downto 0); -- shift inner bits
sh_next(0) <= rx_bit_next; -- shift in rx bit into LSb
state_next <= state_reg - 1; -- update next state at each sck pulse
when (N-1) downto (PREFETCH+3) => -- remove 'do_transfer' and shift bits
do_transfer_next <= '0'; -- reset 'do_valid' transfer signal
di_req_next <= '0'; -- prefetch data request: deassert when shifting data
wr_ack_next <= '0'; -- remove data load ack for all but the load stages
tx_bit_next <= sh_reg(N-1); -- output next MSbit
sh_next(N-1 downto 1) <= sh_reg(N-2 downto 0); -- shift inner bits
sh_next(0) <= rx_bit_next; -- shift in rx bit into LSb
state_next <= state_reg - 1; -- update next state at each sck pulse
when (PREFETCH+2) downto 3 => -- raise prefetch 'di_req_o' signal
di_req_next <= '1'; -- request data in advance to allow for pipeline delays
wr_ack_next <= '0'; -- remove data load ack for all but the load stages
tx_bit_next <= sh_reg(N-1); -- output next MSbit
sh_next(N-1 downto 1) <= sh_reg(N-2 downto 0); -- shift inner bits
sh_next(0) <= rx_bit_next; -- shift in rx bit into LSb
state_next <= state_reg - 1; -- update next state at each sck pulse
when 2 => -- transfer received data to do_buffer_reg on next cycle
di_req_next <= '1'; -- request data in advance to allow for pipeline delays
wr_ack_next <= '0'; -- remove data load ack for all but the load stages
tx_bit_next <= sh_reg(N-1); -- output next MSbit
sh_next(N-1 downto 1) <= sh_reg(N-2 downto 0); -- shift inner bits
sh_next(0) <= rx_bit_next; -- shift in rx bit into LSb
do_transfer_next <= '1'; -- signal transfer to do_buffer on next cycle
do_buffer_next <= sh_next; -- get next data directly into rx buffer
state_next <= state_reg - 1; -- update next state at each sck pulse
when 1 => -- transfer rx data to do_buffer and restart if new data is written
sh_next(0) <= rx_bit_next; -- shift in rx bit into LSb
di_req_next <= '0'; -- prefetch data request: deassert when shifting data
state_next <= N; -- next state is top bit of new data
if wren = '1' then -- load tx register if valid data present at di_reg
wr_ack_next <= '1'; -- acknowledge data in transfer
sh_next(N-1 downto 1) <= di_reg(N-2 downto 0); -- shift inner bits
tx_bit_next <= di_reg(N-1); -- first output bit comes from the MSb of parallel data
else
wr_ack_next <= '0'; -- no data reload for continuous transfer mode
sh_next(N-1 downto 1) <= (others => '0'); -- clear transmit shift register
tx_bit_next <= '0'; -- send ZERO
end if;
when 0 => -- idle state: start and end of transmission
sh_next(0) <= rx_bit_next; -- shift in rx bit into LSb
sh_next(N-1 downto 1) <= di_reg(N-2 downto 0); -- shift inner bits
tx_bit_next <= di_reg(N-1); -- first output bit comes from the MSb of parallel data
wr_ack_next <= '1'; -- acknowledge data in transfer
di_req_next <= '0'; -- prefetch data request: deassert when shifting data
do_transfer_next <= '0'; -- clear signal transfer to do_buffer
state_next <= N; -- next state is top bit of new data
when others =>
state_next <= 0; -- safe state
end case;
end process core_combi_proc;
 
--=============================================================================================
-- OUTPUT LOGIC PROCESSES
--=============================================================================================
-- data output processes
do_o_proc : do_o <= do_buffer_reg; -- do_o always available
do_valid_o_proc: do_valid_o <= do_valid_o_reg; -- copy registered do_valid_o to output
di_req_o_proc: di_req_o <= di_req_o_reg; -- copy registered di_req_o to output
wr_ack_o_proc: wr_ack_o <= wr_ack_reg; -- copy registered wr_ack_o to output
 
-----------------------------------------------------------------------------------------------
-- MISO driver process: preload top bit of parallel data to MOSI at reset
-----------------------------------------------------------------------------------------------
-- this is a MUX that selects the combinatorial next tx bit at reset, and the registered tx bit
-- at sequential operation. The mux gives us a preload of the first bit, simplifying the shifter logic.
spi_miso_o_proc: process (preload_miso, tx_bit_reg, di_reg) is
begin
if preload_miso = '1' then
spi_miso_o <= di_reg(N-1); -- copy top bit of parallel data at reset
else
spi_miso_o <= tx_bit_reg; -- copy top bit of shifter at sequential operation
end if;
end process spi_miso_o_proc;
 
--=============================================================================================
-- DEBUG LOGIC PROCESSES
--=============================================================================================
-- these signals are useful for verification, and can be deleted after debug.
do_transfer_proc: do_transfer_o <= do_transfer_reg;
state_debug_proc: state_dbg_o <= std_logic_vector(to_unsigned(state_reg, 4)); -- export internal state to debug
rx_bit_next_proc: rx_bit_next_o <= rx_bit_next;
wren_o_proc: wren_o <= wren;
sh_reg_debug_proc: sh_reg_dbg_o <= sh_reg; -- export sh_reg to debug
end architecture rtl;
 
/spi_master_slave/trunk/rtl/spi_master_slave/spi_master.vhd
0,0 → 1,620
-----------------------------------------------------------------------------------------------------------------------
-- Author: Jonny Doin, jdoin@opencores.org, jonnydoin@gmail.com
--
-- Create Date: 12:18:12 04/25/2011
-- Module Name: SPI_MASTER - RTL
-- Project Name: SPI MASTER / SLAVE INTERFACE
-- Target Devices: Spartan-6
-- Tool versions: ISE 13.1
-- Description:
--
-- This block is the SPI master interface, implemented in one single entity.
-- All internal core operations are synchronous to the 'sclk_i', and a spi base clock is generated by dividing sclk_i downto
-- a frequency that is 2x the spi SCK line frequency. The divider value is passed as a generic parameter during instantiation.
-- All parallel i/o interface operations are synchronous to the 'pclk_i' high speed clock, that can be asynchronous to the serial
-- 'sclk_i' clock.
-- For optimized use of longlines, connect 'sclk_i' and 'pclk_i' to the same global clock line.
-- Fully pipelined cross-clock circuitry guarantees that no setup artifacts occur on the buffers that are accessed by the two
-- clock domains.
-- The block is very simple to use, and has parallel inputs and outputs that behave like a synchronous memory i/o.
-- It is parameterizable via generics for the data width ('N'), SPI mode (CPHA and CPOL), lookahead prefetch signaling
-- ('PREFETCH'), and spi base clock division from sclk_i ('SPI_2X_CLK_DIV').
--
-- SPI CLOCK GENERATION
-- ====================
--
-- The clock generation for the SPI SCK is derived from the high-speed 'sclk_i' clock. The core divides this reference
-- clock to form the SPI base clock, by the 'SPI_2X_CLK_DIV' generic parameter. The user must set the divider value for the
-- SPI_2X clock, which is 2x the desired SCK frequency.
-- All registers in the core are clocked by the high-speed clocks, and clock enables are used to run the FSM and other logic
-- at lower rates. This architecture preserves FPGA clock resources like global clock buffers, and avoids path delays caused
-- by combinatorial clock dividers outputs.
-- The core has async clock domain circuitry to handle asynchronous clocks for the SPI and parallel interfaces.
--
-- PARALLEL WRITE INTERFACE
-- ========================
-- The parallel interface has an input port 'di_i' and an output port 'do_o'.
-- Parallel load is controlled using 3 signals: 'di_i', 'di_req_o' and 'wren_i'. 'di_req_o' is a look ahead data request line,
-- that is set 'PREFETCH' clock cycles in advance to synchronize a pipelined memory or fifo to present the
-- next input data at 'di_i' in time to have continuous clock at the spi bus, to allow back-to-back continuous load.
-- For a pipelined sync RAM, a PREFETCH of 2 cycles allows an address generator to present the new adress to the RAM in one
-- cycle, and the RAM to respond in one more cycle, in time for 'di_i' to be latched by the shifter.
-- If the user sequencer needs a different value for PREFETCH, the generic can be altered at instantiation time.
-- The 'wren_i' write enable strobe must be valid at least one setup time before the rising edge of the last SPI clock cycle,
-- if continuous transmission is intended. If 'wren_i' is not valid 2 SPI clock cycles after the last transmitted bit, the interface
-- enters idle state and deasserts SSEL.
-- When the interface is idle, 'wren_i' write strobe loads the data and starts transmission. 'di_req_o' will strobe when entering
-- idle state, if a previously loaded data has already been transferred.
--
-- PARALLEL WRITE SEQUENCE
-- =======================
-- __ __ __ __ __ __ __
-- pclk_i __/ \__/ \__/ \__/ \__/ \__/ \__/ \... -- parallel interface clock
-- ___________
-- di_req_o ________/ \_____________________... -- 'di_req_o' asserted on rising edge of 'pclk_i'
-- ______________ ___________________________...
-- di_i __old_data____X______new_data_____________... -- user circuit loads data on 'di_i' at next 'pclk_i' rising edge
-- _______
-- wren_i __________________________/ \_______... -- user strobes 'wren_i' for one cycle of 'pclk_i'
--
--
-- PARALLEL READ INTERFACE
-- =======================
-- An internal buffer is used to copy the internal shift register data to drive the 'do_o' port. When a complete word is received,
-- the core shift register is transferred to the buffer, at the rising edge of the spi clock, 'spi_clk'.
-- The signal 'do_valid_o' is set one 'spi_clk' clock after, to directly drive a synchronous memory or fifo write enable.
-- 'do_valid_o' is synchronous to the parallel interface clock, and changes only on rising edges of 'pclk_i'.
-- When the interface is idle, data at the 'do_o' port holds the last word received.
--
-- PARALLEL READ SEQUENCE
-- ======================
-- ______ ______ ______ ______
-- spi_clk bit1 \______/ bitN \______/bitN-1\______/bitN-2\__... -- internal spi 2x base clock
-- _ __ __ __ __ __ __ __ __
-- pclk_i \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \_... -- parallel interface clock (may be async to sclk_i)
-- _____________ _____________________________________... -- 1) rx data is transferred to 'do_buffer_reg'
-- do_o ___old_data__X__________new_data___________________... -- after last rx bit, at rising 'spi_clk'.
-- ____________
-- do_valid_o ____________________________/ \_________... -- 2) 'do_valid_o' strobed for 2 'pclk_i' cycles
-- -- on the 3rd 'pclk_i' rising edge.
--
--
-- The propagation delay of spi_sck_o and spi_mosi_o, referred to the internal clock, is balanced by similar path delays,
-- but the sampling delay of spi_miso_i imposes a setup time referred to the sck signal that limits the high frequency
-- of the interface, for full duplex operation.
--
-- This design was originally targeted to a Spartan-6 platform, synthesized with XST and normal constraints.
-- The VHDL dialect used is VHDL'93, accepted largely by all synthesis tools.
--
------------------------------ COPYRIGHT NOTICE -----------------------------------------------------------------------
--
-- This file is part of the SPI MASTER/SLAVE INTERFACE project http://opencores.org/project,spi_master_slave
--
-- Author(s): Jonny Doin, jdoin@opencores.org, jonnydoin@gmail.com
--
-- Copyright (C) 2011 Jonny Doin
-- -----------------------------
--
-- This source file may be used and distributed without restriction provided that this copyright statement is not
-- removed from the file and that any derivative work contains the original copyright notice and the associated
-- disclaimer.
--
-- This source file is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser
-- General Public License as published by the Free Software Foundation; either version 2.1 of the License, or
-- (at your option) any later version.
--
-- This source is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
-- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
-- details.
--
-- You should have received a copy of the GNU Lesser General Public License along with this source; if not, download
-- it from http://www.gnu.org/licenses/lgpl.txt
--
------------------------------ REVISION HISTORY -----------------------------------------------------------------------
--
-- 2011/04/28 v0.01.0010 [JD] shifter implemented as a sequential process. timing problems and async issues in synthesis.
-- 2011/05/01 v0.01.0030 [JD] changed original shifter design to a fully pipelined RTL fsmd. solved all synthesis issues.
-- 2011/05/05 v0.01.0034 [JD] added an internal buffer register for rx_data, to allow greater liberty in data load/store.
-- 2011/05/08 v0.10.0038 [JD] increased one state to have SSEL start one cycle before SCK. Implemented full CPOL/CPHA
-- logic, based on generics, and do_valid_o signal.
-- 2011/05/13 v0.20.0045 [JD] streamlined signal names, added PREFETCH parameter, added assertions.
-- 2011/05/17 v0.80.0049 [JD] added explicit clock synchronization circuitry across clock boundaries.
-- 2011/05/18 v0.95.0050 [JD] clock generation circuitry, with generators for all-rising-edge clock core.
-- 2011/06/05 v0.96.0053 [JD] changed async clear to sync resets.
-- 2011/06/07 v0.97.0065 [JD] added cross-clock buffers, fixed fsm async glitches.
-- 2011/06/09 v0.97.0068 [JD] reduced control sets (resets, CE, presets) to the absolute minimum to operate, to reduce
-- synthesis LUT overhead in Spartan-6 architecture.
-- 2011/06/11 v0.97.0075 [JD] redesigned all parallel data interfacing ports, and implemented cross-clock strobe logic.
-- 2011/06/12 v0.97.0079 [JD] streamlined wr_ack for all cases and eliminated unnecessary register resets.
-- 2011/06/14 v0.97.0083 [JD] (bug CPHA effect) : redesigned SCK output circuit.
-- (minor bug) : removed fsm registers from (not rst_i) chip enable.
-- 2011/06/15 v0.97.0086 [JD] removed master MISO input register, to relax MISO data setup time (to get higher speed).
-- 2011/07/09 v1.00.0095 [JD] changed all clocking scheme to use a single high-speed clock with clock enables to control lower
-- frequency sequential circuits, to preserve clocking resources and avoid path delay glitches.
-- 2011/07/10 v1.00.0098 [JD] implemented SCK clock divider circuit to generate spi clock directly from system clock.
-- 2011/07/10 v1.10.0075 [JD] verified spi_master_slave in silicon at 50MHz, 25MHz, 16.666MHz, 12.5MHz, 10MHz, 8.333MHz,
-- 7.1428MHz, 6.25MHz, 1MHz and 500kHz. The core proved very robust at all tested frequencies.
-- 2011/07/16 v1.11.0080 [JD] verified both spi_master and spi_slave in loopback at 50MHz SPI clock.
-- 2011/07/17 v1.11.0080 [JD] BUG: CPOL='1', CPHA='1' @50MHz causes MOSI to be shifted one bit earlier.
-- BUG: CPOL='0', CPHA='1' causes SCK to have one extra pulse with one sclk_i width at the end.
-- 2011/07/18 v1.12.0105 [JD] CHG: spi sck output register changed to remove glitch at last clock when CPHA='1'.
-- for CPHA='1', max spi clock is 25MHz. for CPHA= '0', max spi clock is >50MHz.
-- 2011/07/24 v1.13.0125 [JD] FIX: 'sck_ena_ce' is on half-cycle advanced to 'fsm_ce', elliminating CPHA='1' glitches.
-- Core verified for all CPOL, CPHA at up to 50MHz, simulates to over 100MHz.
-- 2011/07/29 v1.14.0130 [JD] Removed global signal setting at the FSM, implementing exhaustive explicit signal attributions
-- for each state, to avoid reported inference problems in some synthesis engines.
-- Streamlined port names and indentation blocks.
-- 2011/08/01 v1.15.0135 [JD] Fixed latch inference for spi_mosi_o driver at the fsm.
-- The master and slave cores were verified in FPGA with continuous transmission, for all SPI modes.
-- 2011/08/04 v1.15.0136 [JD] Fixed assertions (PREFETCH >= 1) and minor comment bugs.
--
-----------------------------------------------------------------------------------------------------------------------
-- TODO
-- ====
--
-----------------------------------------------------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.std_logic_unsigned.all;
 
--================================================================================================================
-- SYNTHESIS CONSIDERATIONS
-- ========================
-- There are several output ports that are used to simulate and verify the core operation.
-- Do not map any signals to the unused ports, and the synthesis tool will remove the related interfacing
-- circuitry.
-- The same is valid for the transmit and receive ports. If the receive ports are not mapped, the
-- synthesis tool will remove the receive logic from the generated circuitry.
-- Alternatively, you can remove these ports and related circuitry once the core is verified and
-- integrated to your circuit.
--================================================================================================================
 
entity spi_master is
Generic (
N : positive := 32; -- 32bit serial word length is default
CPOL : std_logic := '0'; -- SPI mode selection (mode 0 default)
CPHA : std_logic := '0'; -- CPOL = clock polarity, CPHA = clock phase.
PREFETCH : positive := 2; -- prefetch lookahead cycles
SPI_2X_CLK_DIV : positive := 5); -- for a 100MHz sclk_i, yields a 10MHz SCK
Port (
sclk_i : in std_logic := 'X'; -- high-speed serial interface system clock
pclk_i : in std_logic := 'X'; -- high-speed parallel interface system clock
rst_i : in std_logic := 'X'; -- reset core
---- serial interface ----
spi_ssel_o : out std_logic; -- spi bus slave select line
spi_sck_o : out std_logic; -- spi bus sck
spi_mosi_o : out std_logic; -- spi bus mosi output
spi_miso_i : in std_logic := 'X'; -- spi bus spi_miso_i input
---- parallel interface ----
di_req_o : out std_logic; -- preload lookahead data request line
di_i : in std_logic_vector (N-1 downto 0) := (others => 'X'); -- parallel data in (clocked on rising spi_clk after last bit)
wren_i : in std_logic := 'X'; -- user data write enable, starts transmission when interface is idle
wr_ack_o : out std_logic; -- write acknowledge
do_valid_o : out std_logic; -- do_o data valid signal, valid during one spi_clk rising edge.
do_o : out std_logic_vector (N-1 downto 0); -- parallel output (clocked on rising spi_clk after last bit)
--- debug ports: can be removed or left unconnected for the application circuit ---
sck_ena_o : out std_logic; -- debug: internal sck enable signal
sck_ena_ce_o : out std_logic; -- debug: internal sck clock enable signal
do_transfer_o : out std_logic; -- debug: internal transfer driver
wren_o : out std_logic; -- debug: internal state of the wren_i pulse stretcher
rx_bit_reg_o : out std_logic; -- debug: internal rx bit
state_dbg_o : out std_logic_vector (3 downto 0); -- debug: internal state register
core_clk_o : out std_logic;
core_n_clk_o : out std_logic;
core_ce_o : out std_logic;
core_n_ce_o : out std_logic;
sh_reg_dbg_o : out std_logic_vector (N-1 downto 0) -- debug: internal shift register
);
end spi_master;
 
--================================================================================================================
-- this architecture is a pipelined register-transfer description.
-- all signals are clocked at the rising edge of the system clock 'sclk_i'.
--================================================================================================================
architecture rtl of spi_master is
-- core clocks, generated from 'sclk_i': initialized at GSR to differential values
signal core_clk : std_logic := '0'; -- continuous core clock, positive logic
signal core_n_clk : std_logic := '1'; -- continuous core clock, negative logic
signal core_ce : std_logic := '0'; -- core clock enable, positive logic
signal core_n_ce : std_logic := '1'; -- core clock enable, negative logic
-- spi bus clock, generated from the CPOL selected core clock polarity
signal spi_2x_ce : std_logic := '1'; -- spi_2x clock enable
signal spi_clk : std_logic := '0'; -- spi bus output clock
signal spi_clk_reg : std_logic; -- output pipeline delay for spi sck (do NOT global initialize)
-- core fsm clock enables
signal fsm_ce : std_logic := '1'; -- fsm clock enable
signal sck_ena_ce : std_logic := '1'; -- SCK clock enable
signal samp_ce : std_logic := '1'; -- data sampling clock enable
--
-- GLOBAL RESET:
-- all signals are initialized to zero at GSR (global set/reset) by giving explicit
-- initialization values at declaration. This is needed for all Xilinx FPGAs, and
-- especially for the Spartan-6 and newer CLB architectures, where a async reset can
-- reduce the usability of the slice registers, due to the need to share the control
-- set (RESET/PRESET, CLOCK ENABLE and CLOCK) by all 8 registers in a slice.
-- By using GSR for the initialization, and reducing async RESET local init to the bare
-- essential, the model achieves better LUT/FF packing and CLB usability.
--
-- internal state signals for register and combinatorial stages
signal state_next : natural range N+1 downto 0 := 0;
signal state_reg : natural range N+1 downto 0 := 0;
-- shifter signals for register and combinatorial stages
signal sh_next : std_logic_vector (N-1 downto 0);
signal sh_reg : std_logic_vector (N-1 downto 0);
-- input bit sampled buffer
signal rx_bit_reg : std_logic := '0';
-- buffered di_i data signals for register and combinatorial stages
signal di_reg : std_logic_vector (N-1 downto 0);
-- internal wren_i stretcher for fsm combinatorial stage
signal wren : std_logic;
signal wr_ack_next : std_logic := '0';
signal wr_ack_reg : std_logic := '0';
-- internal SSEL enable control signals
signal ssel_ena_next : std_logic := '0';
signal ssel_ena_reg : std_logic := '0';
-- internal SCK enable control signals
signal sck_ena_next : std_logic;
signal sck_ena_reg : std_logic;
-- buffered do_o data signals for register and combinatorial stages
signal do_buffer_next : std_logic_vector (N-1 downto 0);
signal do_buffer_reg : std_logic_vector (N-1 downto 0);
-- internal signal to flag transfer to do_buffer_reg
signal do_transfer_next : std_logic := '0';
signal do_transfer_reg : std_logic := '0';
-- internal input data request signal
signal di_req_next : std_logic := '0';
signal di_req_reg : std_logic := '0';
-- cross-clock do_transfer_reg -> do_valid_o_reg pipeline
signal do_valid_A : std_logic := '0';
signal do_valid_B : std_logic := '0';
signal do_valid_C : std_logic := '0';
signal do_valid_D : std_logic := '0';
signal do_valid_next : std_logic := '0';
signal do_valid_o_reg : std_logic := '0';
-- cross-clock di_req_reg -> di_req_o_reg pipeline
signal di_req_o_A : std_logic := '0';
signal di_req_o_B : std_logic := '0';
signal di_req_o_C : std_logic := '0';
signal di_req_o_D : std_logic := '0';
signal di_req_o_next : std_logic := '1';
signal di_req_o_reg : std_logic := '1';
begin
--=============================================================================================
-- GENERICS CONSTRAINTS CHECKING
--=============================================================================================
-- minimum word width is 8 bits
assert N >= 8
report "Generic parameter 'N' (shift register size) needs to be 8 bits minimum"
severity FAILURE;
-- minimum prefetch lookahead check
assert PREFETCH >= 1
report "Generic parameter 'PREFETCH' (lookahead count) needs to be 1 minimum"
severity FAILURE;
-- maximum prefetch lookahead check
assert PREFETCH <= N-5
report "Generic parameter 'PREFETCH' (lookahead count) out of range, needs to be N-5 maximum"
severity FAILURE;
-- SPI_2X_CLK_DIV clock divider value must not be zero
assert SPI_2X_CLK_DIV > 0
report "Generic parameter 'SPI_2X_CLK_DIV' must not be zero"
severity FAILURE;
 
--=============================================================================================
-- CLOCK GENERATION
--=============================================================================================
-- In order to preserve global clocking resources, the core clocking scheme is completely based
-- on using clock enables to process the serial high-speed clock at lower rates for the core fsm,
-- the spi clock generator and the input sampling clock.
-- The clock generation block derives 2 continuous antiphase signals from the 2x spi base clock
-- for the core clocking.
-- The 2 clock phases are generated by separate and synchronous FFs, and should have only
-- differential interconnect delay skew.
-- Clock enable signals are generated with the same phase as the 2 core clocks, and these clock
-- enables are used to control clocking of all internal synchronous circuitry.
-- The clock enable phase is selected for serial input sampling, fsm clocking, and spi SCK output,
-- based on the configuration of CPOL and CPHA.
-- Each phase is selected so that all the registers can be clocked with a rising edge on all SPI
-- modes, by a single high-speed global clock, preserving clock resources and clock to data skew.
-----------------------------------------------------------------------------------------------
-- generate the 2x spi base clock enable from the serial high-speed input clock
spi_2x_ce_gen_proc: process (sclk_i) is
variable clk_cnt : integer range SPI_2X_CLK_DIV-1 downto 0 := 0;
begin
if sclk_i'event and sclk_i = '1' then
if clk_cnt = SPI_2X_CLK_DIV-1 then
spi_2x_ce <= '1';
clk_cnt := 0;
else
spi_2x_ce <= '0';
clk_cnt := clk_cnt + 1;
end if;
end if;
end process spi_2x_ce_gen_proc;
-----------------------------------------------------------------------------------------------
-- generate the core antiphase clocks and clock enables from the 2x base CE.
core_clock_gen_proc : process (sclk_i) is
begin
if sclk_i'event and sclk_i = '1' then
if spi_2x_ce = '1' then
-- generate the 2 antiphase core clocks
core_clk <= core_n_clk;
core_n_clk <= not core_n_clk;
-- generate the 2 phase core clock enables
core_ce <= core_n_clk;
core_n_ce <= not core_n_clk;
else
core_ce <= '0';
core_n_ce <= '0';
end if;
end if;
end process core_clock_gen_proc;
 
--=============================================================================================
-- GENERATE BLOCKS
--=============================================================================================
-- spi clk generator: generate spi_clk from core_clk depending on CPOL
spi_sck_cpol_0_proc: if CPOL = '0' generate
begin
spi_clk <= core_clk; -- for CPOL=0, spi clk has idle LOW
end generate;
spi_sck_cpol_1_proc: if CPOL = '1' generate
begin
spi_clk <= core_n_clk; -- for CPOL=1, spi clk has idle HIGH
end generate;
-----------------------------------------------------------------------------------------------
-- Sampling clock enable generation: generate 'samp_ce' from 'core_ce' or 'core_n_ce' depending on CPHA
-- always sample data at the half-cycle of the fsm update cell
samp_ce_cpha_0_proc: if CPHA = '0' generate
begin
samp_ce <= core_ce;
end generate;
samp_ce_cpha_1_proc: if CPHA = '1' generate
begin
samp_ce <= core_n_ce;
end generate;
-----------------------------------------------------------------------------------------------
-- FSM clock enable generation: generate 'fsm_ce' from core_ce or core_n_ce depending on CPHA
fsm_ce_cpha_0_proc: if CPHA = '0' generate
begin
fsm_ce <= core_n_ce; -- for CPHA=0, latch registers at rising edge of negative core clock enable
end generate;
fsm_ce_cpha_1_proc: if CPHA = '1' generate
begin
fsm_ce <= core_ce; -- for CPHA=1, latch registers at rising edge of positive core clock enable
end generate;
-----------------------------------------------------------------------------------------------
-- sck enable control: control sck advance phase for CPHA='1' relative to fsm clock
sck_ena_ce <= core_n_ce; -- for CPHA=1, SCK is advanced one-half cycle
--=============================================================================================
-- REGISTERED INPUTS
--=============================================================================================
-- rx bit flop: capture rx bit after SAMPLE edge of sck
rx_bit_proc : process (sclk_i, spi_miso_i) is
begin
if sclk_i'event and sclk_i = '1' then
if samp_ce = '1' then
rx_bit_reg <= spi_miso_i;
end if;
end if;
end process rx_bit_proc;
 
--=============================================================================================
-- CROSS-CLOCK PIPELINE TRANSFER LOGIC
--=============================================================================================
-- do_valid_o and di_req_o strobe output logic
-- this is a delayed pulse generator with a ripple-transfer FFD pipeline, that generates a
-- fixed-length delayed pulse for the output flags, at the parallel clock domain
out_transfer_proc : process ( pclk_i, do_transfer_reg, di_req_reg,
do_valid_A, do_valid_B, do_valid_D,
di_req_o_A, di_req_o_B, di_req_o_D ) is
begin
if pclk_i'event and pclk_i = '1' then -- clock at parallel port clock
-- do_transfer_reg -> do_valid_o_reg
do_valid_A <= do_transfer_reg; -- the input signal must be at least 2 clocks long
do_valid_B <= do_valid_A; -- feed it to a ripple chain of FFDs
do_valid_C <= do_valid_B;
do_valid_D <= do_valid_C;
do_valid_o_reg <= do_valid_next; -- registered output pulse
--------------------------------
-- di_req_reg -> di_req_o_reg
di_req_o_A <= di_req_reg; -- the input signal must be at least 2 clocks long
di_req_o_B <= di_req_o_A; -- feed it to a ripple chain of FFDs
di_req_o_C <= di_req_o_B;
di_req_o_D <= di_req_o_C;
di_req_o_reg <= di_req_o_next; -- registered output pulse
end if;
-- generate a 2-clocks pulse at the 3rd clock cycle
do_valid_next <= do_valid_A and do_valid_B and not do_valid_D;
di_req_o_next <= di_req_o_A and di_req_o_B and not di_req_o_D;
end process out_transfer_proc;
-- parallel load input registers: data register and write enable
in_transfer_proc: process ( pclk_i, wren_i, wr_ack_reg ) is
begin
-- registered data input, input register with clock enable
if pclk_i'event and pclk_i = '1' then
if wren_i = '1' then
di_reg <= di_i; -- parallel data input buffer register
end if;
end if;
-- stretch wren pulse to be detected by spi fsm (ffd with sync preset and sync reset)
if pclk_i'event and pclk_i = '1' then
if wren_i = '1' then -- wren_i is the sync preset for wren
wren <= '1';
elsif wr_ack_reg = '1' then -- wr_ack is the sync reset for wren
wren <= '0';
end if;
end if;
end process in_transfer_proc;
 
--=============================================================================================
-- REGISTER TRANSFER PROCESSES
--=============================================================================================
-- fsm state and data registers: synchronous to the spi base reference clock
core_reg_proc : process (sclk_i) is
begin
-- FF registers clocked on rising edge and cleared on sync rst_i
if sclk_i'event and sclk_i = '1' then
if rst_i = '1' then -- sync reset
state_reg <= 0; -- only provide local reset for the state machine
elsif fsm_ce = '1' then -- fsm_ce is clock enable for the fsm
state_reg <= state_next; -- state register
end if;
end if;
-- FF registers clocked synchronous to the fsm state
if sclk_i'event and sclk_i = '1' then
if fsm_ce = '1' then
sh_reg <= sh_next; -- shift register
ssel_ena_reg <= ssel_ena_next; -- spi select enable
do_buffer_reg <= do_buffer_next; -- registered output data buffer
do_transfer_reg <= do_transfer_next; -- output data transferred to buffer
di_req_reg <= di_req_next; -- input data request
wr_ack_reg <= wr_ack_next; -- write acknowledge for data load synchronization
end if;
end if;
-- FF registers clocked one-half cycle earlier than the fsm state
if sclk_i'event and sclk_i = '1' then
if sck_ena_ce = '1' then
sck_ena_reg <= sck_ena_next; -- spi clock enable: look ahead logic
end if;
end if;
end process core_reg_proc;
 
--=============================================================================================
-- COMBINATORIAL LOGIC PROCESSES
--=============================================================================================
-- state and datapath combinatorial logic
core_combi_proc : process ( sh_reg, state_reg, rx_bit_reg, ssel_ena_reg, sck_ena_reg, do_buffer_reg,
do_transfer_reg, wr_ack_reg, di_req_reg, di_reg, wren ) is
begin
sh_next <= sh_reg; -- all output signals are assigned to (avoid latches)
ssel_ena_next <= ssel_ena_reg; -- controls the slave select line
sck_ena_next <= sck_ena_reg; -- controls the clock enable of spi sck line
do_buffer_next <= do_buffer_reg; -- output data buffer
do_transfer_next <= do_transfer_reg; -- output data flag
wr_ack_next <= wr_ack_reg; -- write acknowledge
di_req_next <= di_req_reg; -- prefetch data request
spi_mosi_o <= sh_reg(N-1); -- default to avoid latch inference
state_next <= state_reg; -- next state
case state_reg is
when (N+1) => -- this state is to enable SSEL before SCK
spi_mosi_o <= sh_reg(N-1); -- shift out tx bit from the MSb
ssel_ena_next <= '1'; -- tx in progress: will assert SSEL
sck_ena_next <= '1'; -- enable SCK on next cycle (stays off on first SSEL clock cycle)
di_req_next <= '0'; -- prefetch data request: deassert when shifting data
wr_ack_next <= '0'; -- remove write acknowledge for all but the load stages
state_next <= state_reg - 1; -- update next state at each sck pulse
when (N) => -- deassert 'di_rdy' and stretch do_valid
spi_mosi_o <= sh_reg(N-1); -- shift out tx bit from the MSb
di_req_next <= '0'; -- prefetch data request: deassert when shifting data
sh_next(N-1 downto 1) <= sh_reg(N-2 downto 0); -- shift inner bits
sh_next(0) <= rx_bit_reg; -- shift in rx bit into LSb
wr_ack_next <= '0'; -- remove write acknowledge for all but the load stages
state_next <= state_reg - 1; -- update next state at each sck pulse
when (N-1) downto (PREFETCH+3) => -- remove 'do_transfer' and shift bits
spi_mosi_o <= sh_reg(N-1); -- shift out tx bit from the MSb
di_req_next <= '0'; -- prefetch data request: deassert when shifting data
do_transfer_next <= '0'; -- reset 'do_valid' transfer signal
sh_next(N-1 downto 1) <= sh_reg(N-2 downto 0); -- shift inner bits
sh_next(0) <= rx_bit_reg; -- shift in rx bit into LSb
wr_ack_next <= '0'; -- remove write acknowledge for all but the load stages
state_next <= state_reg - 1; -- update next state at each sck pulse
when (PREFETCH+2) downto 2 => -- raise prefetch 'di_req_o' signal
spi_mosi_o <= sh_reg(N-1); -- shift out tx bit from the MSb
di_req_next <= '1'; -- request data in advance to allow for pipeline delays
sh_next(N-1 downto 1) <= sh_reg(N-2 downto 0); -- shift inner bits
sh_next(0) <= rx_bit_reg; -- shift in rx bit into LSb
wr_ack_next <= '0'; -- remove write acknowledge for all but the load stages
state_next <= state_reg - 1; -- update next state at each sck pulse
when 1 => -- transfer rx data to do_buffer and restart if new data is written
spi_mosi_o <= sh_reg(N-1); -- shift out tx bit from the MSb
di_req_next <= '1'; -- request data in advance to allow for pipeline delays
do_buffer_next(N-1 downto 1) <= sh_reg(N-2 downto 0); -- shift rx data directly into rx buffer
do_buffer_next(0) <= rx_bit_reg; -- shift last rx bit into rx buffer
do_transfer_next <= '1'; -- signal transfer to do_buffer
if wren = '1' then -- load tx register if valid data present at di_i
state_next <= N; -- next state is top bit of new data
sh_next <= di_reg; -- load parallel data from di_reg into shifter
sck_ena_next <= '1'; -- SCK enabled
wr_ack_next <= '1'; -- acknowledge data in transfer
else
sck_ena_next <= '0'; -- SCK disabled: tx empty, no data to send
wr_ack_next <= '0'; -- remove write acknowledge for all but the load stages
state_next <= state_reg - 1; -- update next state at each sck pulse
end if;
when 0 => -- idle state: start and end of transmission
di_req_next <= '1'; -- will request data if shifter empty
sck_ena_next <= '0'; -- SCK disabled: tx empty, no data to send
if wren = '1' then -- load tx register if valid data present at di_i
spi_mosi_o <= di_reg(N-1); -- special case: shift out first tx bit from the MSb (look ahead)
ssel_ena_next <= '1'; -- enable interface SSEL
state_next <= N+1; -- start from idle: let one cycle for SSEL settling
sh_next <= di_reg; -- load bits from di_reg into shifter
wr_ack_next <= '1'; -- acknowledge data in transfer
else
spi_mosi_o <= sh_reg(N-1); -- shift out tx bit from the MSb
ssel_ena_next <= '0'; -- deassert SSEL: interface is idle
wr_ack_next <= '0'; -- remove write acknowledge for all but the load stages
state_next <= 0; -- when idle, keep this state
end if;
when others =>
state_next <= 0; -- state 0 is safe state
end case;
end process core_combi_proc;
 
--=============================================================================================
-- OUTPUT LOGIC PROCESSES
--=============================================================================================
-- data output processes
spi_ssel_o_proc: spi_ssel_o <= not ssel_ena_reg; -- active-low slave select line
do_o_proc: do_o <= do_buffer_reg; -- parallel data out
do_valid_o_proc: do_valid_o <= do_valid_o_reg; -- data out valid
di_req_o_proc: di_req_o <= di_req_o_reg; -- input data request for next cycle
wr_ack_o_proc: wr_ack_o <= wr_ack_reg; -- write acknowledge
-----------------------------------------------------------------------------------------------
-- SCK out logic: pipeline phase compensation for the SCK line
-----------------------------------------------------------------------------------------------
-- This is a MUX with an output register.
-- The register gives us a pipeline delay for the SCK line, pairing with the state machine moore
-- output pipeline delay for the MOSI line, and thus enabling higher SCK frequency.
spi_sck_o_gen_proc : process (sclk_i, sck_ena_reg, spi_clk, spi_clk_reg) is
begin
if sclk_i'event and sclk_i = '1' then
if sck_ena_reg = '1' then
spi_clk_reg <= spi_clk; -- copy the selected clock polarity
else
spi_clk_reg <= CPOL; -- when clock disabled, set to idle polarity
end if;
end if;
spi_sck_o <= spi_clk_reg; -- connect register to output
end process spi_sck_o_gen_proc;
 
--=============================================================================================
-- DEBUG LOGIC PROCESSES
--=============================================================================================
-- these signals are useful for verification, and can be deleted after debug.
do_transfer_proc: do_transfer_o <= do_transfer_reg;
state_dbg_proc: state_dbg_o <= std_logic_vector(to_unsigned(state_reg, 4));
rx_bit_reg_proc: rx_bit_reg_o <= rx_bit_reg;
wren_o_proc: wren_o <= wren;
sh_reg_dbg_proc: sh_reg_dbg_o <= sh_reg;
core_clk_o_proc: core_clk_o <= core_clk;
core_n_clk_o_proc: core_n_clk_o <= core_n_clk;
core_ce_o_proc: core_ce_o <= core_ce;
core_n_ce_o_proc: core_n_ce_o <= core_n_ce;
sck_ena_o_proc: sck_ena_o <= sck_ena_reg;
sck_ena_ce_o_proc: sck_ena_ce_o <= sck_ena_ce;
 
end architecture rtl;
 
/spi_master_slave/trunk/rtl/spi_master_slave/readme.txt
0,0 → 1,52
SPI_MASTER_SLAVE
================
 
 
This project was started from the need to have a robust yet simple SPI interface core
written in VHDL to use in generic FPGA-to-device interfacing.
The resulting cores generate very small and efficient circuits, that operate from very
slow SPI clocks up to over 50MHz SPI clocks.
 
 
VHDL files for spi master/slave project:
---------------------------------------
 
spi_master.vhd spi master module, can be used independently
spi_slave.vhd spi slave module, can be used independently
spi_loopback.vhd wrapper module for simulating the master and slave modules
spi_loopback_test.vhd testbench for simulating the loopback module, test master against slave
spi_loopback.ucf constraints for simulation: Spartan-6, area, LUT compression.
 
 
The original development is done in Xilinx ISE 13.1, targeted to a Spartan-6 device.
 
ISIM SIMULATION
---------------
 
VHDL simulation was done in ISIM, after Place & Route, with default constraints, for the slowest
Spartan-6 device, synthesis generated 41 slices, and the design was simulated at 25MHz spi SCK, and 100MHz for the parallel interfaces clocks.
 
SILICON VERIFICATION
--------------------
 
Design verification in silicon was done in a Digilent Atlys board, and the verification project can be found at the \trunk\syn directory, with all the required files to replicate the verification tests, including pinlock constraints for the Atlys board.
 
LICENSING
---------
 
This work is licensed as a LGPL work. If you find this licensing too restrictive for hardware, or it is not adequate for you, please get in touch with me and we can arrange a more suitable open source hardware licensing.
 
 
 
If you have any questions or usage issues with this core, please open a thread in OpenCores forum, and I will be pleased to answer.
 
If you find a bug or a design fault in the models, or if you have an issue that you like to be addressed, please open a bug/issue in the OpenCores bugtracker for this project, at
http://opencores.org/project,spi_master_slave,bugtracker.
 
 
In any case, thank you for testing and using this core.
 
 
Jonny Doin
jdoin@opencores.org
 
/spi_master_slave/trunk/rtl/spi_master_slave/grp_debouncer.vhd
0,0 → 1,204
-----------------------------------------------------------------------------------------------------------------------
-- Author: Jonny Doin, jdoin@opencores.org, jonnydoin@gmail.com
--
-- Create Date: 09:56:30 07/06/2011
-- Module Name: grp_debouncer - RTL
-- Project Name: basic functions
-- Target Devices: Spartan-6
-- Tool versions: ISE 13.1
-- Description:
--
-- This block is a generic multiple input debouncing circuit.
-- It handles multiple inputs, like mechanical switch inputs, and outputs a debounced, stable registered version of the inputs.
-- A 'new_data' one-cycle strobe is also available, to sync downstream logic.
--
-- CONCEPTUAL CIRCUIT
-- ==================
--
-- W
-- /----------------/----------------\
-- | |
-- | |
-- | ______ ______ | _____
-- | W | | W |fdr | W | W |cmp \
-- \----/---| +1 |---/----| |--/--+----/----| \
-- | | | | | \
-- ------ | | \ |
-- | | | = |-----\
-- |> R | / | |
-- ---+-- | / |
-- | CNT_VAL---| / |
-- | |____/ |
-- | |
-- \------------\ |
-- | |
-- N ____ | |
-- /-------/---)) \ ____ | |
-- | ))XOR |-----) \ | |
-- | /------))___/ )OR |-----/ |
-- | | /---)___/ |
-- | | | |
-- | | \----------\ |
-- | | N | |
-- | \--------/-----------\ +----------------------+---------\
-- | | | |
-- \---\ | | |
-- ______ | ______ | | ______ |
-- | fd | | | fd | | | |fde | |
-- [data_i]----/-----| |---/---+---/----| |---/---+----)---| |---/---+---/-----------)------------------------[data_o]
-- N | | N N | | N | | | | N | N |
-- | | | | | \---|CE | | |
-- | | | | | | | | |
-- [clk_i]----> |> | |> | | |> | | | ____ ______
-- ------ ------ | ------ | N ____ \---| \ | fd |
-- | \---/---)) \ |AND |-----| |----[strb_o]
-- | ))XOR |-----|___/ | |
-- \-------------------------/---))___/ | |
-- N | |
-- |> |
-- ------
--
--
-- PIPELINE LOGIC
-- ==============
--
-- This debouncer circuit detects edges in an input signal, and waits the signal to stabilize for the designated time
-- before transferring the stable signal to the registered output.
-- A one-clock-cyle strobe is pulsed at the output to signalize a new data available.
-- The core clock should be the system clock, to optimize use of global clock resources.
--
-- GROUP DEBOUNCING
-- ================
--
-- A change in state in any bit in the input word causes reload of the delay counter, and the output word is updated only
-- when all bits are stable for the specified period. Therefore, the grouping of signals and delay selection should match
-- behaviour of the selected signals.
--
-- RESOURCES USED
-- ==============
--
-- The number of registers inferred is: 3*N + (LOG(CNT_VAL)/LOG(2)) + 1 registers.
-- The number of LUTs inferred is roughly: ((4*N+2)/6)+2.
-- The slice distribution will vary, and depends on the control set restrictions and LUT-FF pairs resulting from map+p&r.
--
-- This design was originally targeted to a Spartan-6 platform, synthesized with XST and normal constraints.
-- Verification in silicon was done on a Digilent Atlys board with a Spartan-6 FPGA @100MHz clock.
-- The VHDL dialect used is VHDL'93, accepted largely by all synthesis tools.
--
------------------------------ COPYRIGHT NOTICE -----------------------------------------------------------------------
--
--
-- Author(s): Jonny Doin, jdoin@opencores.org, jonnydoin@gmail.com
--
-- Copyright (C) 2011 Jonny Doin
-- -----------------------------
--
-- This source file may be used and distributed without restriction provided that this copyright statement is not
-- removed from the file and that any derivative work contains the original copyright notice and the associated
-- disclaimer.
--
-- This source file is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser
-- General Public License as published by the Free Software Foundation; either version 2.1 of the License, or
-- (at your option) any later version.
--
-- This source is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
-- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
-- details.
--
-- You should have received a copy of the GNU Lesser General Public License along with this source; if not, download
-- it from http://www.gnu.org/licenses/lgpl.txt
--
------------------------------ REVISION HISTORY -----------------------------------------------------------------------
--
-- 2011/07/06 v0.01.0010 [JD] started development. verification of synthesis circuit inference.
-- 2011/07/07 v1.00.0020 [JD] verification in silicon. operation at 100MHz, tested on the Atlys board (Spartan-6 LX45).
-- 2011/08/10 v1.01.0025 [JD] added one pipeline delay to new data strobe output.
-- 2011/09/19 v1.01.0030 [JD] changed range for internal counter (cnt_reg, cnt_next) to avoid adder flipover (Altera/ModelSim).
--
-----------------------------------------------------------------------------------------------------------------------
-- TODO
-- ====
--
-- The circuit can easily be extended to have a signature of which inputs changed at the data out port.
--
-----------------------------------------------------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
entity grp_debouncer is
Generic (
N : positive := 8; -- input bus width
CNT_VAL : positive := 10000); -- clock counts for debounce period
Port (
clk_i : in std_logic := 'X'; -- system clock
data_i : in std_logic_vector (N-1 downto 0) := (others => 'X'); -- noisy input data
data_o : out std_logic_vector (N-1 downto 0); -- registered stable output data
strb_o : out std_logic -- strobe for new data available
);
end grp_debouncer;
 
architecture rtl of grp_debouncer is
-- datapath pipeline
signal reg_A, reg_B : std_logic_vector (N-1 downto 0) := (others => '0'); -- debounce edge detectors
signal reg_out : std_logic_vector (N-1 downto 0) := (others => '0'); -- registered output
signal dat_strb : std_logic := '0'; -- data transfer strobe
signal strb_reg : std_logic := '0'; -- registered strobe
signal strb_next : std_logic := '0'; -- lookahead strobe
signal dat_diff : std_logic := '0'; -- edge detector
-- debounce counter
signal cnt_reg : integer range CNT_VAL + 1 downto 0 := 0; -- debounce period counter
signal cnt_next : integer range CNT_VAL + 1 downto 0 := 0; -- combinatorial signal
begin
 
--=============================================================================================
-- DEBOUNCE COUNTER LOGIC
--=============================================================================================
-- This counter is implemented as a up-counter with reset and final count detection via compare,
-- instead of a down-counter with preset and final count detection via nonzero detection.
-- This is better for Spartan-6 and Virtex-6 CLB architecture, because it uses less control sets.
--
-- cnt_reg register transfer logic
cnt_reg_proc: process (clk_i) is
begin
if clk_i'event and clk_i = '1' then
cnt_reg <= cnt_next;
end if;
end process cnt_reg_proc;
-- cnt_next combinatorial logic
cnt_next_proc: cnt_next <= 0 when dat_diff = '1' or dat_strb = '1' else cnt_reg + 1;
-- final count combinatorial logic
final_cnt_proc: dat_strb <= '1' when cnt_reg = CNT_VAL else '0';
 
--=============================================================================================
-- DATAPATH SIGNAL PIPELINE
--=============================================================================================
-- input pipeline logic
pipeline_proc: process (clk_i) is
begin
if clk_i'event and clk_i = '1' then
-- edge detection pipeline
reg_A <= data_i;
reg_B <= reg_A;
-- new data strobe pipeline delay
strb_reg <= strb_next;
end if;
-- output data pipeline
if clk_i'event and clk_i = '1' then
if dat_strb = '1' then
reg_out <= reg_B;
end if;
end if;
end process pipeline_proc;
-- edge detector
edge_detector_proc: dat_diff <= '1' when reg_A /= reg_B else '0';
-- lookahead new data strobe
next_strobe_proc: strb_next <= '1' when ((reg_out /= reg_B) and dat_strb = '1') else '0';
--=============================================================================================
-- OUTPUT LOGIC
--=============================================================================================
-- connect output ports
data_o_proc: data_o <= reg_out;
strb_o_proc: strb_o <= strb_reg;
end rtl;
 
/spi_master_slave/trunk/syn/spi_master_atlys_top.twr
31,75 → 31,93
-----------------
All values displayed in nanoseconds (ns)
 
Setup/Hold to clock gclk_i
Setup/Hold to clock pclk_i
------------+------------+------------+------------+------------+------------------+--------+
|Max Setup to| Process |Max Hold to | Process | | Clock |
Source | clk (edge) | Corner | clk (edge) | Corner |Internal Clock(s) | Phase |
------------+------------+------------+------------+------------+------------------+--------+
btn_i<0> | 3.220(R)| SLOW | -1.908(R)| FAST |gclk_i_BUFGP | 0.000|
btn_i<1> | 2.732(R)| SLOW | -1.473(R)| FAST |gclk_i_BUFGP | 0.000|
btn_i<2> | 2.624(R)| SLOW | -1.423(R)| FAST |gclk_i_BUFGP | 0.000|
btn_i<3> | 2.466(R)| SLOW | -1.367(R)| SLOW |gclk_i_BUFGP | 0.000|
btn_i<4> | 2.808(R)| SLOW | -1.482(R)| FAST |gclk_i_BUFGP | 0.000|
btn_i<5> | 2.631(R)| SLOW | -1.435(R)| FAST |gclk_i_BUFGP | 0.000|
sw_i<0> | 4.138(R)| SLOW | -2.205(R)| FAST |gclk_i_BUFGP | 0.000|
sw_i<1> | 5.757(R)| SLOW | -3.265(R)| FAST |gclk_i_BUFGP | 0.000|
sw_i<2> | 5.825(R)| SLOW | -3.246(R)| FAST |gclk_i_BUFGP | 0.000|
sw_i<3> | 4.946(R)| SLOW | -2.785(R)| FAST |gclk_i_BUFGP | 0.000|
sw_i<4> | 3.431(R)| SLOW | -1.904(R)| FAST |gclk_i_BUFGP | 0.000|
sw_i<5> | 3.569(R)| SLOW | -2.000(R)| FAST |gclk_i_BUFGP | 0.000|
sw_i<6> | 3.411(R)| SLOW | -1.943(R)| FAST |gclk_i_BUFGP | 0.000|
sw_i<7> | 5.265(R)| SLOW | -2.971(R)| FAST |gclk_i_BUFGP | 0.000|
btn_i<0> | 3.281(R)| SLOW | -1.883(R)| FAST |pclk_i_BUFGP | 0.000|
btn_i<1> | 2.636(R)| SLOW | -1.373(R)| FAST |pclk_i_BUFGP | 0.000|
btn_i<2> | 2.349(R)| SLOW | -1.227(R)| FAST |pclk_i_BUFGP | 0.000|
btn_i<3> | 2.429(R)| SLOW | -1.296(R)| FAST |pclk_i_BUFGP | 0.000|
btn_i<4> | 2.683(R)| SLOW | -1.357(R)| FAST |pclk_i_BUFGP | 0.000|
btn_i<5> | 2.506(R)| SLOW | -1.310(R)| FAST |pclk_i_BUFGP | 0.000|
sw_i<0> | 4.238(R)| SLOW | -2.204(R)| FAST |pclk_i_BUFGP | 0.000|
sw_i<1> | 5.454(R)| SLOW | -2.988(R)| FAST |pclk_i_BUFGP | 0.000|
sw_i<2> | 5.564(R)| SLOW | -3.092(R)| FAST |pclk_i_BUFGP | 0.000|
sw_i<3> | 4.954(R)| SLOW | -2.667(R)| FAST |pclk_i_BUFGP | 0.000|
sw_i<4> | 3.356(R)| SLOW | -1.807(R)| FAST |pclk_i_BUFGP | 0.000|
sw_i<5> | 3.819(R)| SLOW | -2.067(R)| FAST |pclk_i_BUFGP | 0.000|
sw_i<6> | 3.504(R)| SLOW | -1.935(R)| FAST |pclk_i_BUFGP | 0.000|
sw_i<7> | 4.898(R)| SLOW | -2.712(R)| FAST |pclk_i_BUFGP | 0.000|
------------+------------+------------+------------+------------+------------------+--------+
 
Clock gclk_i to Pad
Clock pclk_i to Pad
------------+-----------------+------------+-----------------+------------+------------------+--------+
|Max (slowest) clk| Process |Min (fastest) clk| Process | | Clock |
Destination | (edge) to PAD | Corner | (edge) to PAD | Corner |Internal Clock(s) | Phase |
------------+-----------------+------------+-----------------+------------+------------------+--------+
dbg_o<4> | 9.886(R)| SLOW | 4.102(R)| FAST |gclk_i_BUFGP | 0.000|
dbg_o<5> | 9.856(R)| SLOW | 4.079(R)| FAST |gclk_i_BUFGP | 0.000|
dbg_o<7> | 10.279(R)| SLOW | 4.343(R)| FAST |gclk_i_BUFGP | 0.000|
dbg_o<8> | 10.485(R)| SLOW | 4.438(R)| FAST |gclk_i_BUFGP | 0.000|
dbg_o<9> | 10.661(R)| SLOW | 4.583(R)| FAST |gclk_i_BUFGP | 0.000|
dbg_o<10> | 10.595(R)| SLOW | 4.516(R)| FAST |gclk_i_BUFGP | 0.000|
dbg_o<11> | 10.797(R)| SLOW | 4.632(R)| FAST |gclk_i_BUFGP | 0.000|
led_o<0> | 10.127(R)| SLOW | 4.227(R)| FAST |gclk_i_BUFGP | 0.000|
led_o<1> | 9.955(R)| SLOW | 4.135(R)| FAST |gclk_i_BUFGP | 0.000|
led_o<2> | 10.096(R)| SLOW | 4.211(R)| FAST |gclk_i_BUFGP | 0.000|
led_o<3> | 9.531(R)| SLOW | 3.887(R)| FAST |gclk_i_BUFGP | 0.000|
led_o<4> | 10.129(R)| SLOW | 4.244(R)| FAST |gclk_i_BUFGP | 0.000|
led_o<5> | 16.930(R)| SLOW | 8.194(R)| FAST |gclk_i_BUFGP | 0.000|
led_o<6> | 12.027(R)| SLOW | 5.407(R)| FAST |gclk_i_BUFGP | 0.000|
led_o<7> | 11.196(R)| SLOW | 4.818(R)| FAST |gclk_i_BUFGP | 0.000|
m_do_o<0> | 9.636(R)| SLOW | 3.930(R)| FAST |gclk_i_BUFGP | 0.000|
m_do_o<1> | 9.683(R)| SLOW | 3.987(R)| FAST |gclk_i_BUFGP | 0.000|
m_do_o<2> | 9.651(R)| SLOW | 3.945(R)| FAST |gclk_i_BUFGP | 0.000|
m_do_o<3> | 9.718(R)| SLOW | 4.091(R)| FAST |gclk_i_BUFGP | 0.000|
m_do_o<4> | 9.623(R)| SLOW | 4.055(R)| FAST |gclk_i_BUFGP | 0.000|
m_do_o<5> | 9.875(R)| SLOW | 4.135(R)| FAST |gclk_i_BUFGP | 0.000|
m_do_o<6> | 9.742(R)| SLOW | 4.088(R)| FAST |gclk_i_BUFGP | 0.000|
m_do_o<7> | 9.568(R)| SLOW | 4.000(R)| FAST |gclk_i_BUFGP | 0.000|
m_state_o<0>| 11.544(R)| SLOW | 5.167(R)| FAST |gclk_i_BUFGP | 0.000|
m_state_o<1>| 11.702(R)| SLOW | 5.283(R)| FAST |gclk_i_BUFGP | 0.000|
m_state_o<2>| 11.667(R)| SLOW | 5.272(R)| FAST |gclk_i_BUFGP | 0.000|
m_state_o<3>| 11.707(R)| SLOW | 5.314(R)| FAST |gclk_i_BUFGP | 0.000|
spi_miso_o | 11.814(R)| SLOW | 5.115(R)| FAST |gclk_i_BUFGP | 0.000|
spi_mosi_o | 13.768(R)| SLOW | 5.317(R)| FAST |gclk_i_BUFGP | 0.000|
spi_sck_o | 11.645(R)| SLOW | 5.148(R)| FAST |gclk_i_BUFGP | 0.000|
spi_ssel_o | 12.580(R)| SLOW | 5.649(R)| FAST |gclk_i_BUFGP | 0.000|
dbg_o<4> | 10.259(R)| SLOW | 4.367(R)| FAST |pclk_i_BUFGP | 0.000|
dbg_o<5> | 10.673(R)| SLOW | 4.584(R)| FAST |pclk_i_BUFGP | 0.000|
dbg_o<7> | 11.287(R)| SLOW | 4.943(R)| FAST |pclk_i_BUFGP | 0.000|
dbg_o<8> | 10.559(R)| SLOW | 4.549(R)| FAST |pclk_i_BUFGP | 0.000|
dbg_o<9> | 11.050(R)| SLOW | 4.864(R)| FAST |pclk_i_BUFGP | 0.000|
dbg_o<11> | 11.417(R)| SLOW | 5.029(R)| FAST |pclk_i_BUFGP | 0.000|
led_o<0> | 10.269(R)| SLOW | 4.340(R)| FAST |pclk_i_BUFGP | 0.000|
led_o<1> | 10.286(R)| SLOW | 4.343(R)| FAST |pclk_i_BUFGP | 0.000|
led_o<2> | 10.086(R)| SLOW | 4.243(R)| FAST |pclk_i_BUFGP | 0.000|
led_o<3> | 9.662(R)| SLOW | 4.013(R)| FAST |pclk_i_BUFGP | 0.000|
led_o<4> | 10.628(R)| SLOW | 4.638(R)| FAST |pclk_i_BUFGP | 0.000|
led_o<5> | 16.982(R)| SLOW | 8.242(R)| FAST |pclk_i_BUFGP | 0.000|
led_o<6> | 11.879(R)| SLOW | 5.270(R)| FAST |pclk_i_BUFGP | 0.000|
led_o<7> | 11.522(R)| SLOW | 5.043(R)| FAST |pclk_i_BUFGP | 0.000|
spi_miso_o | 12.331(R)| SLOW | 5.494(R)| FAST |pclk_i_BUFGP | 0.000|
spi_mosi_o | 13.082(R)| SLOW | 5.597(R)| FAST |pclk_i_BUFGP | 0.000|
------------+-----------------+------------+-----------------+------------+------------------+--------+
 
Clock to Setup on destination clock gclk_i
Clock sclk_i to Pad
------------+-----------------+------------+-----------------+------------+------------------+--------+
|Max (slowest) clk| Process |Min (fastest) clk| Process | | Clock |
Destination | (edge) to PAD | Corner | (edge) to PAD | Corner |Internal Clock(s) | Phase |
------------+-----------------+------------+-----------------+------------+------------------+--------+
dbg_o<10> | 10.866(R)| SLOW | 4.745(R)| FAST |sclk_i_BUFGP | 0.000|
m_do_o<0> | 9.804(R)| SLOW | 4.076(R)| FAST |sclk_i_BUFGP | 0.000|
m_do_o<1> | 10.049(R)| SLOW | 4.245(R)| FAST |sclk_i_BUFGP | 0.000|
m_do_o<2> | 9.996(R)| SLOW | 4.197(R)| FAST |sclk_i_BUFGP | 0.000|
m_do_o<3> | 10.252(R)| SLOW | 4.438(R)| FAST |sclk_i_BUFGP | 0.000|
m_do_o<4> | 10.157(R)| SLOW | 4.402(R)| FAST |sclk_i_BUFGP | 0.000|
m_do_o<5> | 10.068(R)| SLOW | 4.306(R)| FAST |sclk_i_BUFGP | 0.000|
m_do_o<6> | 10.140(R)| SLOW | 4.388(R)| FAST |sclk_i_BUFGP | 0.000|
m_do_o<7> | 9.935(R)| SLOW | 4.259(R)| FAST |sclk_i_BUFGP | 0.000|
m_state_o<0>| 12.092(R)| SLOW | 5.558(R)| FAST |sclk_i_BUFGP | 0.000|
m_state_o<1>| 11.789(R)| SLOW | 5.330(R)| FAST |sclk_i_BUFGP | 0.000|
m_state_o<2>| 12.048(R)| SLOW | 5.490(R)| FAST |sclk_i_BUFGP | 0.000|
m_state_o<3>| 12.089(R)| SLOW | 5.504(R)| FAST |sclk_i_BUFGP | 0.000|
spi_mosi_o | 13.069(R)| SLOW | 5.577(R)| FAST |sclk_i_BUFGP | 0.000|
spi_sck_o | 11.491(R)| SLOW | 5.149(R)| FAST |sclk_i_BUFGP | 0.000|
spi_ssel_o | 12.854(R)| SLOW | 5.864(R)| FAST |sclk_i_BUFGP | 0.000|
------------+-----------------+------------+-----------------+------------+------------------+--------+
 
Clock to Setup on destination clock pclk_i
---------------+---------+---------+---------+---------+
| Src:Rise| Src:Fall| Src:Rise| Src:Fall|
Source Clock |Dest:Rise|Dest:Rise|Dest:Fall|Dest:Fall|
---------------+---------+---------+---------+---------+
gclk_i | 4.888| | | |
pclk_i | 5.916| | | |
sclk_i | 4.466| | | |
---------------+---------+---------+---------+---------+
 
Clock to Setup on destination clock sclk_i
---------------+---------+---------+---------+---------+
| Src:Rise| Src:Fall| Src:Rise| Src:Fall|
Source Clock |Dest:Rise|Dest:Rise|Dest:Fall|Dest:Fall|
---------------+---------+---------+---------+---------+
pclk_i | 3.370| | | |
sclk_i | 3.391| | | |
---------------+---------+---------+---------+---------+
 
Analysis completed Mon Aug 29 00:08:54 2011
 
Analysis completed Thu Sep 01 13:07:46 2011
--------------------------------------------------------------------------------
 
Trace Settings:
106,7 → 124,7
-------------------------
Trace Settings
 
Peak Memory Usage: 177 MB
Peak Memory Usage: 180 MB
 
 
 
/spi_master_slave/trunk/syn/spi_master_atlys_top.syr
104,23 → 104,23
=========================================================================
* HDL Parsing *
=========================================================================
Parsing VHDL file "C:\dropbox\Dropbox\VHDL_training\OpenCores\spimasterslave\spi_master_slave\trunk\syn\spi_slave.vhd" into library work
Parsing VHDL file "C:\dropbox\Dropbox\VHDL_training\OpenCores\spi_master_slave\spi_master_slave\trunk\syn\spi_slave.vhd" into library work
Parsing entity <spi_slave>.
Parsing architecture <rtl> of entity <spi_slave>.
WARNING:HDLCompiler:957 - "C:\dropbox\Dropbox\VHDL_training\OpenCores\spimasterslave\spi_master_slave\trunk\syn\spi_slave.vhd" Line 361: Case choice must be a locally static expression
WARNING:HDLCompiler:957 - "C:\dropbox\Dropbox\VHDL_training\OpenCores\spimasterslave\spi_master_slave\trunk\syn\spi_slave.vhd" Line 369: Case choice must be a locally static expression
WARNING:HDLCompiler:957 - "C:\dropbox\Dropbox\VHDL_training\OpenCores\spimasterslave\spi_master_slave\trunk\syn\spi_slave.vhd" Line 378: Case choice must be a locally static expression
Parsing VHDL file "C:\dropbox\Dropbox\VHDL_training\OpenCores\spimasterslave\spi_master_slave\trunk\syn\spi_master.vhd" into library work
WARNING:HDLCompiler:957 - "C:\dropbox\Dropbox\VHDL_training\OpenCores\spi_master_slave\spi_master_slave\trunk\syn\spi_slave.vhd" Line 361: Case choice must be a locally static expression
WARNING:HDLCompiler:957 - "C:\dropbox\Dropbox\VHDL_training\OpenCores\spi_master_slave\spi_master_slave\trunk\syn\spi_slave.vhd" Line 369: Case choice must be a locally static expression
WARNING:HDLCompiler:957 - "C:\dropbox\Dropbox\VHDL_training\OpenCores\spi_master_slave\spi_master_slave\trunk\syn\spi_slave.vhd" Line 378: Case choice must be a locally static expression
Parsing VHDL file "C:\dropbox\Dropbox\VHDL_training\OpenCores\spi_master_slave\spi_master_slave\trunk\syn\spi_master.vhd" into library work
Parsing entity <spi_master>.
Parsing architecture <rtl> of entity <spi_master>.
WARNING:HDLCompiler:957 - "C:\dropbox\Dropbox\VHDL_training\OpenCores\spimasterslave\spi_master_slave\trunk\syn\spi_master.vhd" Line 505: Case choice must be a locally static expression
WARNING:HDLCompiler:957 - "C:\dropbox\Dropbox\VHDL_training\OpenCores\spimasterslave\spi_master_slave\trunk\syn\spi_master.vhd" Line 513: Case choice must be a locally static expression
WARNING:HDLCompiler:957 - "C:\dropbox\Dropbox\VHDL_training\OpenCores\spimasterslave\spi_master_slave\trunk\syn\spi_master.vhd" Line 521: Case choice must be a locally static expression
WARNING:HDLCompiler:957 - "C:\dropbox\Dropbox\VHDL_training\OpenCores\spimasterslave\spi_master_slave\trunk\syn\spi_master.vhd" Line 530: Case choice must be a locally static expression
Parsing VHDL file "C:\dropbox\Dropbox\VHDL_training\OpenCores\spimasterslave\spi_master_slave\trunk\syn\grp_debouncer.vhd" into library work
WARNING:HDLCompiler:957 - "C:\dropbox\Dropbox\VHDL_training\OpenCores\spi_master_slave\spi_master_slave\trunk\syn\spi_master.vhd" Line 505: Case choice must be a locally static expression
WARNING:HDLCompiler:957 - "C:\dropbox\Dropbox\VHDL_training\OpenCores\spi_master_slave\spi_master_slave\trunk\syn\spi_master.vhd" Line 513: Case choice must be a locally static expression
WARNING:HDLCompiler:957 - "C:\dropbox\Dropbox\VHDL_training\OpenCores\spi_master_slave\spi_master_slave\trunk\syn\spi_master.vhd" Line 521: Case choice must be a locally static expression
WARNING:HDLCompiler:957 - "C:\dropbox\Dropbox\VHDL_training\OpenCores\spi_master_slave\spi_master_slave\trunk\syn\spi_master.vhd" Line 530: Case choice must be a locally static expression
Parsing VHDL file "C:\dropbox\Dropbox\VHDL_training\OpenCores\spi_master_slave\spi_master_slave\trunk\syn\grp_debouncer.vhd" into library work
Parsing entity <grp_debouncer>.
Parsing architecture <rtl> of entity <grp_debouncer>.
Parsing VHDL file "C:\dropbox\Dropbox\VHDL_training\OpenCores\spimasterslave\spi_master_slave\trunk\syn\spi_master_atlys_top.vhd" into library work
Parsing VHDL file "C:\dropbox\Dropbox\VHDL_training\OpenCores\spi_master_slave\spi_master_slave\trunk\syn\spi_master_atlys_top.vhd" into library work
Parsing entity <spi_master_atlys_top>.
Parsing architecture <rtl> of entity <spi_master_atlys_top>.
 
137,9 → 137,9
Elaborating entity <grp_debouncer> (architecture <rtl>) with generics from library <work>.
 
Elaborating entity <grp_debouncer> (architecture <rtl>) with generics from library <work>.
INFO:HDLCompiler:679 - "C:\dropbox\Dropbox\VHDL_training\OpenCores\spimasterslave\spi_master_slave\trunk\syn\spi_master_atlys_top.vhd" Line 459. Case statement is complete. others clause is never selected
INFO:HDLCompiler:679 - "C:\dropbox\Dropbox\VHDL_training\OpenCores\spimasterslave\spi_master_slave\trunk\syn\spi_master_atlys_top.vhd" Line 521. Case statement is complete. others clause is never selected
INFO:HDLCompiler:679 - "C:\dropbox\Dropbox\VHDL_training\OpenCores\spimasterslave\spi_master_slave\trunk\syn\spi_master_atlys_top.vhd" Line 571. Case statement is complete. others clause is never selected
INFO:HDLCompiler:679 - "C:\dropbox\Dropbox\VHDL_training\OpenCores\spi_master_slave\spi_master_slave\trunk\syn\spi_master_atlys_top.vhd" Line 460. Case statement is complete. others clause is never selected
INFO:HDLCompiler:679 - "C:\dropbox\Dropbox\VHDL_training\OpenCores\spi_master_slave\spi_master_slave\trunk\syn\spi_master_atlys_top.vhd" Line 522. Case statement is complete. others clause is never selected
INFO:HDLCompiler:679 - "C:\dropbox\Dropbox\VHDL_training\OpenCores\spi_master_slave\spi_master_slave\trunk\syn\spi_master_atlys_top.vhd" Line 572. Case statement is complete. others clause is never selected
 
=========================================================================
* HDL Synthesis *
146,27 → 146,27
=========================================================================
 
Synthesizing Unit <spi_master_atlys_top>.
Related source file is "c:/dropbox/dropbox/vhdl_training/opencores/spimasterslave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd".
Related source file is "c:/dropbox/dropbox/vhdl_training/opencores/spi_master_slave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd".
N = 8
CPOL = '0'
CPHA = '0'
PREFETCH = 3
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spimasterslave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 184: Output port <sh_reg_dbg_o> of the instance <Inst_spi_master_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spimasterslave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 184: Output port <sck_ena_o> of the instance <Inst_spi_master_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spimasterslave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 184: Output port <sck_ena_ce_o> of the instance <Inst_spi_master_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spimasterslave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 184: Output port <do_transfer_o> of the instance <Inst_spi_master_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spimasterslave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 184: Output port <wren_o> of the instance <Inst_spi_master_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spimasterslave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 184: Output port <rx_bit_reg_o> of the instance <Inst_spi_master_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spimasterslave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 184: Output port <core_clk_o> of the instance <Inst_spi_master_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spimasterslave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 184: Output port <core_n_clk_o> of the instance <Inst_spi_master_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spimasterslave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 184: Output port <core_ce_o> of the instance <Inst_spi_master_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spimasterslave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 184: Output port <core_n_ce_o> of the instance <Inst_spi_master_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spimasterslave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 205: Output port <sh_reg_dbg_o> of the instance <Inst_spi_slave_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spimasterslave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 205: Output port <do_transfer_o> of the instance <Inst_spi_slave_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spimasterslave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 205: Output port <wren_o> of the instance <Inst_spi_slave_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spimasterslave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 205: Output port <rx_bit_next_o> of the instance <Inst_spi_slave_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spimasterslave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 224: Output port <strb_o> of the instance <Inst_sw_debouncer> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spimasterslave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 233: Output port <strb_o> of the instance <Inst_btn_debouncer> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spi_master_slave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 185: Output port <sh_reg_dbg_o> of the instance <Inst_spi_master_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spi_master_slave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 185: Output port <sck_ena_o> of the instance <Inst_spi_master_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spi_master_slave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 185: Output port <sck_ena_ce_o> of the instance <Inst_spi_master_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spi_master_slave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 185: Output port <do_transfer_o> of the instance <Inst_spi_master_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spi_master_slave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 185: Output port <wren_o> of the instance <Inst_spi_master_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spi_master_slave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 185: Output port <rx_bit_reg_o> of the instance <Inst_spi_master_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spi_master_slave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 185: Output port <core_clk_o> of the instance <Inst_spi_master_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spi_master_slave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 185: Output port <core_n_clk_o> of the instance <Inst_spi_master_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spi_master_slave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 185: Output port <core_ce_o> of the instance <Inst_spi_master_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spi_master_slave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 185: Output port <core_n_ce_o> of the instance <Inst_spi_master_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spi_master_slave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 206: Output port <sh_reg_dbg_o> of the instance <Inst_spi_slave_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spi_master_slave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 206: Output port <do_transfer_o> of the instance <Inst_spi_slave_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spi_master_slave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 206: Output port <wren_o> of the instance <Inst_spi_slave_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spi_master_slave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 206: Output port <rx_bit_next_o> of the instance <Inst_spi_slave_port> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spi_master_slave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 225: Output port <strb_o> of the instance <Inst_sw_debouncer> is unconnected or connected to loadless signal.
INFO:Xst:3210 - "c:/dropbox/dropbox/vhdl_training/opencores/spi_master_slave/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd" line 234: Output port <strb_o> of the instance <Inst_btn_debouncer> is unconnected or connected to loadless signal.
Found 1-bit register for signal <samp_ce_gen_proc.clk_cnt>.
Found 1-bit register for signal <fsm_ce>.
Found 1-bit register for signal <fsm_ce_gen_proc.clk_cnt>.
193,7 → 193,7
| Transitions | 20 |
| Inputs | 2 |
| Outputs | 3 |
| Clock | gclk_i (rising_edge) |
| Clock | pclk_i (rising_edge) |
| Reset | spi_ssel_o (positive) |
| Reset type | synchronous |
| Reset State | st_reset |
207,7 → 207,7
| Transitions | 36 |
| Inputs | 11 |
| Outputs | 10 |
| Clock | gclk_i (rising_edge) |
| Clock | pclk_i (rising_edge) |
| Reset | clear (positive) |
| Reset type | synchronous |
| Reset State | st_reset |
222,7 → 222,7
| Transitions | 20 |
| Inputs | 5 |
| Outputs | 9 |
| Clock | gclk_i (rising_edge) |
| Clock | pclk_i (rising_edge) |
| Reset | spi_ssel_o (positive) |
| Reset type | synchronous |
| Reset State | st_reset |
230,10 → 230,10
| Encoding | Gray |
| Implementation | LUT |
-----------------------------------------------------------------------
Found 1-bit adder for signal <samp_ce_gen_proc.clk_cnt[0]_PWR_4_o_add_1_OUT<0>> created at line 276.
Found 1-bit adder for signal <fsm_ce_gen_proc.clk_cnt[0]_PWR_4_o_add_3_OUT<0>> created at line 290.
Found 8-bit comparator equal for signal <_n0380> created at line 362
Found 6-bit comparator equal for signal <_n0400> created at line 365
Found 1-bit adder for signal <samp_ce_gen_proc.clk_cnt[0]_PWR_4_o_add_1_OUT<0>> created at line 277.
Found 1-bit adder for signal <fsm_ce_gen_proc.clk_cnt[0]_PWR_4_o_add_3_OUT<0>> created at line 291.
Found 8-bit comparator equal for signal <_n0380> created at line 363
Found 6-bit comparator equal for signal <_n0400> created at line 366
Summary:
inferred 2 Adder/Subtractor(s).
inferred 71 D-type flip-flop(s).
243,7 → 243,7
Unit <spi_master_atlys_top> synthesized.
 
Synthesizing Unit <spi_master>.
Related source file is "c:/dropbox/dropbox/vhdl_training/opencores/spimasterslave/spi_master_slave/trunk/syn/spi_master.vhd".
Related source file is "c:/dropbox/dropbox/vhdl_training/opencores/spi_master_slave/spi_master_slave/trunk/syn/spi_master.vhd".
N = 8
CPOL = '0'
CPHA = '0'
291,7 → 291,7
Unit <spi_master> synthesized.
 
Synthesizing Unit <spi_slave>.
Related source file is "c:/dropbox/dropbox/vhdl_training/opencores/spimasterslave/spi_master_slave/trunk/syn/spi_slave.vhd".
Related source file is "c:/dropbox/dropbox/vhdl_training/opencores/spi_master_slave/spi_master_slave/trunk/syn/spi_slave.vhd".
N = 8
CPOL = '0'
CPHA = '0'
329,36 → 329,38
Unit <spi_slave> synthesized.
 
Synthesizing Unit <grp_debouncer_1>.
Related source file is "c:/dropbox/dropbox/vhdl_training/opencores/spimasterslave/spi_master_slave/trunk/syn/grp_debouncer.vhd".
Related source file is "c:/dropbox/dropbox/vhdl_training/opencores/spi_master_slave/spi_master_slave/trunk/syn/grp_debouncer.vhd".
N = 8
CNT_VAL = 20000
CNT_VAL = 200
Found 8-bit register for signal <reg_A>.
Found 8-bit register for signal <reg_B>.
Found 1-bit register for signal <strb_reg>.
Found 8-bit register for signal <reg_out>.
Found 15-bit register for signal <cnt_reg>.
Found 16-bit adder for signal <n0024> created at line 162.
Found 8-bit comparator not equal for signal <n0008> created at line 184
Found 8-bit comparator not equal for signal <n0010> created at line 190
Found 8-bit register for signal <cnt_reg>.
Found 9-bit adder for signal <n0026> created at line 167.
Found 8-bit comparator not equal for signal <n0009> created at line 192
Found 8-bit comparator not equal for signal <n0011> created at line 194
Summary:
inferred 1 Adder/Subtractor(s).
inferred 39 D-type flip-flop(s).
inferred 33 D-type flip-flop(s).
inferred 2 Comparator(s).
Unit <grp_debouncer_1> synthesized.
 
Synthesizing Unit <grp_debouncer_2>.
Related source file is "c:/dropbox/dropbox/vhdl_training/opencores/spimasterslave/spi_master_slave/trunk/syn/grp_debouncer.vhd".
Related source file is "c:/dropbox/dropbox/vhdl_training/opencores/spi_master_slave/spi_master_slave/trunk/syn/grp_debouncer.vhd".
N = 6
CNT_VAL = 20000
CNT_VAL = 200
Found 6-bit register for signal <reg_A>.
Found 6-bit register for signal <reg_B>.
Found 1-bit register for signal <strb_reg>.
Found 6-bit register for signal <reg_out>.
Found 15-bit register for signal <cnt_reg>.
Found 16-bit adder for signal <n0024> created at line 162.
Found 6-bit comparator not equal for signal <n0008> created at line 184
Found 6-bit comparator not equal for signal <n0010> created at line 190
Found 8-bit register for signal <cnt_reg>.
Found 9-bit adder for signal <n0026> created at line 167.
Found 6-bit comparator not equal for signal <n0009> created at line 192
Found 6-bit comparator not equal for signal <n0011> created at line 194
Summary:
inferred 1 Adder/Subtractor(s).
inferred 33 D-type flip-flop(s).
inferred 27 D-type flip-flop(s).
inferred 2 Comparator(s).
Unit <grp_debouncer_2> synthesized.
 
368,14 → 370,13
Macro Statistics
# Adders/Subtractors : 7
1-bit adder : 3
16-bit adder : 2
4-bit subtractor : 2
# Registers : 73
1-bit register : 49
15-bit register : 2
9-bit adder : 2
# Registers : 75
1-bit register : 51
4-bit register : 2
6-bit register : 4
8-bit register : 16
8-bit register : 18
# Comparators : 14
4-bit comparator greater : 8
6-bit comparator equal : 1
426,9 → 427,9
4-bit subtractor : 2
# Counters : 5
1-bit up counter : 3
15-bit up counter : 2
# Registers : 206
Flip-Flops : 206
8-bit up counter : 2
# Registers : 208
Flip-Flops : 208
# Comparators : 14
4-bit comparator greater : 8
6-bit comparator equal : 1
510,6 → 511,8
Optimizing unit <spi_master> ...
 
Optimizing unit <spi_slave> ...
WARNING:Xst:2677 - Node <Inst_sw_debouncer/strb_reg> of sequential type is unconnected in block <spi_master_atlys_top>.
WARNING:Xst:2677 - Node <Inst_btn_debouncer/strb_reg> of sequential type is unconnected in block <spi_master_atlys_top>.
WARNING:Xst:1293 - FF/Latch <fsm_ce> has a constant value of 1 in block <spi_master_atlys_top>. This FF/Latch will be trimmed during the optimization process.
WARNING:Xst:1896 - Due to other FF/Latch trimming, FF/Latch <samp_ce> has a constant value of 1 in block <spi_master_atlys_top>. This FF/Latch will be trimmed during the optimization process.
WARNING:Xst:1896 - Due to other FF/Latch trimming, FF/Latch <samp_ce_gen_proc.clk_cnt_0> has a constant value of 0 in block <spi_master_atlys_top>. This FF/Latch will be trimmed during the optimization process.
534,8 → 537,8
Final Register Report
 
Macro Statistics
# Registers : 232
Flip-Flops : 232
# Registers : 218
Flip-Flops : 218
 
=========================================================================
 
558,30 → 561,30
 
Primitive and Black Box Usage:
------------------------------
# BELS : 259
# BELS : 202
# GND : 1
# INV : 4
# LUT1 : 28
# LUT2 : 3
# LUT3 : 26
# LUT1 : 14
# LUT2 : 4
# LUT3 : 28
# LUT4 : 17
# LUT5 : 62
# LUT6 : 55
# MUXCY : 28
# LUT5 : 54
# LUT6 : 45
# MUXCY : 14
# MUXF7 : 4
# VCC : 1
# XORCY : 30
# FlipFlops/Latches : 232
# FD : 97
# XORCY : 16
# FlipFlops/Latches : 218
# FD : 84
# FD_1 : 1
# FDC : 8
# FDE : 111
# FDE : 110
# FDP_1 : 1
# FDR : 10
# FDRE : 4
# Clock Buffers : 2
# Clock Buffers : 3
# BUFG : 1
# BUFGP : 1
# BUFGP : 2
# IO Buffers : 62
# IBUF : 14
# OBUF : 48
593,23 → 596,23
 
 
Slice Logic Utilization:
Number of Slice Registers: 232 out of 54576 0%
Number of Slice LUTs: 195 out of 27288 0%
Number used as Logic: 195 out of 27288 0%
Number of Slice Registers: 218 out of 54576 0%
Number of Slice LUTs: 166 out of 27288 0%
Number used as Logic: 166 out of 27288 0%
 
Slice Logic Distribution:
Number of LUT Flip Flop pairs used: 301
Number with an unused Flip Flop: 69 out of 301 22%
Number with an unused LUT: 106 out of 301 35%
Number of fully used LUT-FF pairs: 126 out of 301 41%
Number of unique control sets: 23
Number of LUT Flip Flop pairs used: 272
Number with an unused Flip Flop: 54 out of 272 19%
Number with an unused LUT: 106 out of 272 38%
Number of fully used LUT-FF pairs: 112 out of 272 41%
Number of unique control sets: 24
 
IO Utilization:
Number of IOs: 63
Number of bonded IOBs: 63 out of 218 28%
Number of IOs: 64
Number of bonded IOBs: 64 out of 218 29%
 
Specific Feature Utilization:
Number of BUFG/BUFGCTRLs: 2 out of 16 12%
Number of BUFG/BUFGCTRLs: 3 out of 16 18%
 
---------------------------
Partition Resource Summary:
632,7 → 635,8
-----------------------------------+------------------------+-------+
Clock Signal | Clock buffer(FF name) | Load |
-----------------------------------+------------------------+-------+
gclk_i | BUFGP | 203 |
pclk_i | BUFGP | 161 |
sclk_i | BUFGP | 28 |
Inst_spi_master_port/spi_clk_reg | BUFG | 29 |
-----------------------------------+------------------------+-------+
 
644,7 → 648,7
---------------
Speed Grade: -2
 
Minimum period: 5.267ns (Maximum Frequency: 189.861MHz)
Minimum period: 5.283ns (Maximum Frequency: 189.286MHz)
Minimum input arrival time before clock: 2.083ns
Maximum output required time after clock: 7.216ns
Maximum combinational path delay: No path found
654,31 → 658,53
All values displayed in nanoseconds (ns)
 
=========================================================================
Timing constraint: Default period analysis for Clock 'gclk_i'
Clock period: 5.267ns (frequency: 189.861MHz)
Total number of paths / destination ports: 2605 / 280
Timing constraint: Default period analysis for Clock 'pclk_i'
Clock period: 5.283ns (frequency: 189.286MHz)
Total number of paths / destination ports: 1509 / 201
-------------------------------------------------------------------------
Delay: 5.267ns (Levels of Logic = 4)
Delay: 5.283ns (Levels of Logic = 4)
Source: sw_reg_5 (FF)
Destination: m_wr_st_reg_FSM_FFd4 (FF)
Source Clock: gclk_i rising
Destination Clock: gclk_i rising
Destination: btn_reg_0 (FF)
Source Clock: pclk_i rising
Destination Clock: pclk_i rising
 
Data Path: sw_reg_5 to m_wr_st_reg_FSM_FFd4
Data Path: sw_reg_5 to btn_reg_0
Gate Net
Cell:in->out fanout Delay Delay Logical Name (Net Name)
---------------------------------------- ------------
FDE:C->Q 3 0.525 1.196 sw_reg_5 (sw_reg_5)
LUT6:I1->O 2 0.254 0.834 _n038082 (_n038081)
LUT6:I4->O 8 0.250 0.944 _n038083 (_n0380)
LUT5:I4->O 1 0.254 0.682 m_wr_st_reg_FSM_FFd2-In1 (m_wr_st_reg_FSM_FFd2-In1)
LUT6:I5->O 1 0.254 0.000 m_wr_st_reg_FSM_FFd2-In2 (m_wr_st_reg_FSM_FFd2-In)
FDR:D 0.074 m_wr_st_reg_FSM_FFd2
LUT6:I4->O 3 0.250 0.766 _n038083 (_n0380)
LUT5:I4->O 6 0.254 0.876 _n0418_inv1_rstpot (_n0418_inv1_rstpot)
LUT3:I2->O 1 0.254 0.000 btn_reg_0_dpot (btn_reg_0_dpot)
FDE:D 0.074 btn_reg_0
----------------------------------------
Total 5.267ns (1.611ns logic, 3.656ns route)
(30.6% logic, 69.4% route)
Total 5.283ns (1.611ns logic, 3.672ns route)
(30.5% logic, 69.5% route)
 
=========================================================================
Timing constraint: Default period analysis for Clock 'sclk_i'
Clock period: 3.764ns (frequency: 265.675MHz)
Total number of paths / destination ports: 173 / 52
-------------------------------------------------------------------------
Delay: 3.764ns (Levels of Logic = 1)
Source: Inst_spi_master_port/state_reg_3 (FF)
Destination: Inst_spi_master_port/sh_reg_7 (FF)
Source Clock: sclk_i rising
Destination Clock: sclk_i rising
 
Data Path: Inst_spi_master_port/state_reg_3 to Inst_spi_master_port/sh_reg_7
Gate Net
Cell:in->out fanout Delay Delay Logical Name (Net Name)
---------------------------------------- ------------
FDRE:C->Q 21 0.525 1.740 Inst_spi_master_port/state_reg_3 (Inst_spi_master_port/state_reg_3)
LUT6:I1->O 8 0.254 0.943 Inst_spi_master_port/_n0278_inv1 (Inst_spi_master_port/_n0278_inv)
FDE:CE 0.302 Inst_spi_master_port/sh_reg_0
----------------------------------------
Total 3.764ns (1.081ns logic, 2.683ns route)
(28.7% logic, 71.3% route)
 
=========================================================================
Timing constraint: Default period analysis for Clock 'Inst_spi_master_port/spi_clk_reg'
Clock period: 4.344ns (frequency: 230.203MHz)
Total number of paths / destination ports: 214 / 36
694,7 → 720,7
Cell:in->out fanout Delay Delay Logical Name (Net Name)
---------------------------------------- ------------
FDC:C->Q 2 0.525 1.156 Inst_spi_slave_port/state_reg_1_1 (Inst_spi_slave_port/state_reg_1_1)
LUT6:I1->O 1 0.254 0.000 Inst_spi_slave_port/tx_bit_next3_F (N10)
LUT6:I1->O 1 0.254 0.000 Inst_spi_slave_port/tx_bit_next3_F (N14)
MUXF7:I0->O 1 0.163 0.000 Inst_spi_slave_port/tx_bit_next3 (Inst_spi_slave_port/tx_bit_next)
FD_1:D 0.074 Inst_spi_slave_port/tx_bit_reg
----------------------------------------
702,13 → 728,13
(46.8% logic, 53.2% route)
 
=========================================================================
Timing constraint: Default OFFSET IN BEFORE for Clock 'gclk_i'
Timing constraint: Default OFFSET IN BEFORE for Clock 'pclk_i'
Total number of paths / destination ports: 14 / 14
-------------------------------------------------------------------------
Offset: 2.083ns (Levels of Logic = 1)
Source: sw_i<7> (PAD)
Destination: Inst_sw_debouncer/reg_A_7 (FF)
Destination Clock: gclk_i rising
Destination Clock: pclk_i rising
 
Data Path: sw_i<7> to Inst_sw_debouncer/reg_A_7
Gate Net
721,25 → 747,24
(67.3% logic, 32.7% route)
 
=========================================================================
Timing constraint: Default OFFSET OUT AFTER for Clock 'gclk_i'
Total number of paths / destination ports: 37 / 31
Timing constraint: Default OFFSET OUT AFTER for Clock 'pclk_i'
Total number of paths / destination ports: 17 / 16
-------------------------------------------------------------------------
Offset: 7.216ns (Levels of Logic = 3)
Source: Inst_spi_master_port/state_reg_2 (FF)
Offset: 5.464ns (Levels of Logic = 2)
Source: Inst_spi_master_port/wren (FF)
Destination: spi_mosi_o (PAD)
Source Clock: gclk_i rising
Source Clock: pclk_i rising
 
Data Path: Inst_spi_master_port/state_reg_2 to spi_mosi_o
Data Path: Inst_spi_master_port/wren to spi_mosi_o
Gate Net
Cell:in->out fanout Delay Delay Logical Name (Net Name)
---------------------------------------- ------------
FDRE:C->Q 20 0.525 1.394 Inst_spi_master_port/state_reg_2 (Inst_spi_master_port/state_reg_2)
LUT2:I0->O 2 0.250 1.156 Inst_spi_master_port/spi_mosi_o_SW0 (N0)
LUT6:I1->O 2 0.254 0.725 Inst_spi_master_port/spi_mosi_o (spi_mosi_o_OBUF)
FD:C->Q 8 0.525 1.052 Inst_spi_master_port/wren (Inst_spi_master_port/wren)
LUT6:I4->O 2 0.250 0.725 Inst_spi_master_port/spi_mosi_o (spi_mosi_o_OBUF)
OBUF:I->O 2.912 spi_mosi_o_OBUF (spi_mosi_o)
----------------------------------------
Total 7.216ns (3.941ns logic, 3.275ns route)
(54.6% logic, 45.4% route)
Total 5.464ns (3.687ns logic, 1.777ns route)
(67.5% logic, 32.5% route)
 
=========================================================================
Timing constraint: Default OFFSET OUT AFTER for Clock 'Inst_spi_master_port/spi_clk_reg'
762,7 → 787,28
(69.2% logic, 30.8% route)
 
=========================================================================
Timing constraint: Default OFFSET OUT AFTER for Clock 'sclk_i'
Total number of paths / destination ports: 20 / 16
-------------------------------------------------------------------------
Offset: 7.216ns (Levels of Logic = 3)
Source: Inst_spi_master_port/state_reg_2 (FF)
Destination: spi_mosi_o (PAD)
Source Clock: sclk_i rising
 
Data Path: Inst_spi_master_port/state_reg_2 to spi_mosi_o
Gate Net
Cell:in->out fanout Delay Delay Logical Name (Net Name)
---------------------------------------- ------------
FDRE:C->Q 20 0.525 1.394 Inst_spi_master_port/state_reg_2 (Inst_spi_master_port/state_reg_2)
LUT2:I0->O 2 0.250 1.156 Inst_spi_master_port/spi_mosi_o_SW0 (N4)
LUT6:I1->O 2 0.254 0.725 Inst_spi_master_port/spi_mosi_o (spi_mosi_o_OBUF)
OBUF:I->O 2.912 spi_mosi_o_OBUF (spi_mosi_o)
----------------------------------------
Total 7.216ns (3.941ns logic, 3.275ns route)
(54.6% logic, 45.4% route)
 
=========================================================================
 
Cross Clock Domains Report:
--------------------------
 
772,29 → 818,41
Source Clock |Dest:Rise|Dest:Rise|Dest:Fall|Dest:Fall|
--------------------------------+---------+---------+---------+---------+
Inst_spi_master_port/spi_clk_reg| 3.682| | 2.224| |
gclk_i | 4.633| | 3.198| |
pclk_i | 3.012| | 2.135| |
sclk_i | 4.633| | 3.198| |
--------------------------------+---------+---------+---------+---------+
 
Clock to Setup on destination clock gclk_i
Clock to Setup on destination clock pclk_i
--------------------------------+---------+---------+---------+---------+
| Src:Rise| Src:Fall| Src:Rise| Src:Fall|
Source Clock |Dest:Rise|Dest:Rise|Dest:Fall|Dest:Fall|
--------------------------------+---------+---------+---------+---------+
Inst_spi_master_port/spi_clk_reg| 2.078| 1.855| | |
gclk_i | 5.267| | | |
Inst_spi_master_port/spi_clk_reg| 2.078| | | |
pclk_i | 5.283| | | |
sclk_i | 3.198| | | |
--------------------------------+---------+---------+---------+---------+
 
Clock to Setup on destination clock sclk_i
--------------------------------+---------+---------+---------+---------+
| Src:Rise| Src:Fall| Src:Rise| Src:Fall|
Source Clock |Dest:Rise|Dest:Rise|Dest:Fall|Dest:Fall|
--------------------------------+---------+---------+---------+---------+
Inst_spi_master_port/spi_clk_reg| | 1.855| | |
pclk_i | 3.244| | | |
sclk_i | 3.764| | | |
--------------------------------+---------+---------+---------+---------+
 
=========================================================================
 
 
Total REAL time to Xst completion: 6.00 secs
Total CPU time to Xst completion: 6.29 secs
Total CPU time to Xst completion: 6.39 secs
-->
 
Total memory usage is 188108 kilobytes
Total memory usage is 179340 kilobytes
 
Number of errors : 0 ( 0 filtered)
Number of warnings : 26 ( 0 filtered)
Number of warnings : 28 ( 0 filtered)
Number of infos : 24 ( 0 filtered)
 
/spi_master_slave/trunk/syn/spi_master_atlys_top_guide.ncd
1,3 → 1,3
XILINX-XDB 0.1 STUB 0.1 ASCII
XILINX-XDM V1.6
###3828:XlxV32DM 3fff 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###4584:XlxV32DM 3fff 11d0eNqVW9ty2zgS/ZX5gXWIO1mccpVIyo4q1mUl2aPU1hZKlmRHO46VlZVM9u+3QQAE6YAg5kHx6e6D7gbQuJBSJq9vF/n27Si/bt8uh7P8djpfPvx1ltvdn/J8eJbfFECY55MYIkVZH/HwipN+m42DBilo2E2GqKO8vWx/HDQDM696+vZFdWB/hH78V55kNcA7yR/bl+NeVmjv5dWOnn/n12G7uEa7gF3ysFmgQ79ZdWM0RCiGCFV7qH0EyAOLQYqelIF8lSs2QLBF4p9dmJfH709PUA5qdJPrKBqKo+E4Gomj0Tgai6PxOJq4xmSYJpMoFopi4SgWiWLRKBaLYvEoluhnXc7b1zfDw9sYlt28Dn1kvaWMhgjFEKHCOEzQqzaLINnlFs9lPRvGt/Ph5bTdy6/Ht1NPB96+yNfDzwssSPQ0QCDtU8LPkDcRnNv2qeblmBEgPRs5EM1Ww8J24yfpWajveDSOloWzQgNZNb3D4XCWNzAI+DpsJwPpEJvOQO8tj4XD0YFwtJnbSB4Lp2V5IpwWG0iL2XA87Kd3z2/s4bPyHW1gbsVANGGj9dxYNE0mYfNAaxw2k7CZhs0sbOZhs+jZ9t4u28vBbhHpIKVZjyKSGs8k0UwazUwHew1bkBik2F6nsUwU7RRHM0k0U0Qzs8HxwcPjg6PHB7tTJtYpjmaSaCaNZvJo5nClkeGRbA6YaCaLZvK+O4tlwt43xECDDDzIID2My0/5eLzUt5qeoWwxSM8Nsk2B+1UE6bbnrmdI/Y98jmAPe78j9/qhx9EvLzJQ2sM7vPaMXefVg2H8JfeHx9P3193h/KG5RLaV0x2Ai9y96k7s/qdOABFFRPFMFM3E0UxYSXEdQrFEHEuMDk1jiSyWyGOJIpaYxhKzqKl5+X5RJbSPZcrJ7EEmMZ5/ns7t68kAE/0NKoqn4ngqiadCnTxGU+UZdr6/w7bHyeFvNTpfYiclbnUrJo5mkmgmjWayaCaPZopoZhrNzK6RrxqWh7fvL2rJNHd8jxUNmFHYjMNmEjbTYOIoaMVBKwlaw3FZ0MqDVhG0pkFr5h8sM9NqHvcBs9q/krAdlmjYBRpwgYZd4AEXeNgFGXBBahehoWq9avObhxzgsAM86ICEHQx3gYYd0EEHLOyADTrgYQd80IEIOxCDDtKwg3TQQRZ2kNUOHvsZ8HATsqJQcHhcDZsHWuOwmYTNNJg4DlpJ0Br2zIJWHrSKoDUNWjO09ViVZaQ2zn4jChlxyEhCRrhkoIDRPnb1O2AhB/ZlKg444CEH7vVovwMRcmBfjLqvxX/hwOLpt6GADQdsJGAL5cICNh6wid4BKkJ1VYTqqgjVVRGqq0IdC/1GFjLykBG26r4xKALzWATmsQjMYxGYxyIwj0VgHovAPBYwj7se2+l77xXZmlHYjMNmEjbTsJmFzTxs7rmOGnPP8WatKGjFQSsJWmnQyoJWHrQKnt/NR9W4Evnd/Zp9GCELsAXEAmoBqwG3ZG7J3JK5JfMWmSOST0cLWU6ru8lsLOeL9WQ+W21r5XRe3d+N9zVeT6bj1Xo0XTzW4sN4uQIiNN5+Qzn8naFE/YNwPqPwYfDh8BHwSeGTiXw2Xv8xX35C+Zzl8yua7HE+T+ADTeYYPvB4P4dmc07y+f06yxdELu5G5bhCSYNtfjxfjMpP44rA3wqpf5fvu4BYvqhWsribl5/k7aySxWRWTWa3sL68erkc3yhPja0OOB3P1k8t5f1qdDvuuH4oS6/rlr52/b6NCj29XUIhKH01n61luRyP1mN5P7tfjSu5mMxWOjSMnFzCmICrXaNYf16Mt1q6reSk0tRFNbVzA+NaayYzOVqtJrczCRNn0lDK8WY9nkGR1Z6QdvwwGf/RGZSHcVlnj5xZhVt9npXtJu3O2iasZdYZydGy/GjGuKNf3kBPPslyPl2sR7ePGs9Wa6hRRJVUjesOzG6ncjW/X5Zjrb5Zjm5Xcj2XxfhO3k1Waqo+KVarWkGhamX9cXmP0nxxJwsY5U+j4m4sy9Fy+VlOZgsIk/lMMOZgA6fn0+VUnr5+Q1eT6f1GjUZXc6UK/xdd4lN6mdinJD4l9QTHHh3x6HxtmUfHPTrh0aUeXabm950OhlFVQ6NN+NWIwdxezdl7fWH11Ol54uhddQ+79DhX6s+T2WQN1Q07pFd/lfRa0LsQlS8y9ueJ/Xlil2dX7fVN/b6p890qFi6uivub26s5yv+J8xXssiswr2CXXZEsX91NyvEdHBQOYgdbBLproAriDNwZOBi2jXRz05AK575w7gvnvqAOsp2D7UiFi1R0IhWtSKWLVLpIpYtUukili1R2IpUuUqki7RtJ7QS0CVze3MB5ZAVbH42byuVSuVwql0vlcqlcLlUnl8rlUnV6Xd3cNHndiALWliFOOxMxVRPRWIqOpWhZyo6lbFmqjqVqBnvjqmbjqmbjqgYgdZA9Oth433SqaeOqadPpxKZVTRtXTRtXTRtXTRtXTQBd2KIdtuiELVzYohO2aIUtXdjShS1d2NKFLV3Ysh227IQtXdiyE7Zsha1c2MqFrVzYyoWtXNiqHbbqhK1c2KoTFuYWdoUllNWylB8n46U6oz+LfPVl++0gEwvQIV831xd1YXiqZXMu1zcI+l4Dl6XxEvYdrX6AcPVJDBeop65uCautrZjCCmvJq8W4vgSuzcVlMl1A7pO19rLu3HjW9mpRJ3A3KVY4/2OM8s0231Qfdf6rtMaQaam1q4+jxdhoVbvHGlmn+3wzgYvl5h+bqvgtuUK/rdb3GoxW5WTC883+UU720Gj/VRbH1/3x9RmyVdJ0+5/T+eFwfjueXq3q+OpU+edt/u9/oSRJJUtTjRGSLMMGU8BcY4rhqcHiVHJMNWYIsGnLqOTEtGUCME8Vxkkmk0OD9JePT07W73E0FcITSNVC9718rcGSPTXIvL5RJkKYpAZxSVONMsmSGlEiGdMIstI6lbfWMSaF0WVSaB0nMtU6LmSq/QkkMx1DMJnxrEaZhOGrYUoAUg0FwLSGGYPsmYJUQZFoyAFSDcGDqJ3BfUGijNQQE4kTrKEAKDRM4YkR1ZAggJoLfcco1TBTv6quIfQZY62FTmOitdBrTLQWuo2p0UIzVmfGoOOYaS30HDMdGLqOuQ4MfcecagjNuHYGncdC5wudx6ZDGTRLtV/oPE7rZgKcwbBoCNOmh0+AM6qHT4AzqodPgDOKar8CnFHENVSzrZvB8FFcN0sRcIl4clAXWl1NVqNLpqbjBDSZhuBPD0UKo0I51xBci7rTWcKglIiGdVXVEEFZ6TnIwD1D9VhlGBYQ1s3AL0xfDQlw9RxknEvG6xwyGArGGeKAYWP5cTxfFpPi9FMyQaUg6neFfoPuGc2358M2zR8vr/L4e3JtEWoQbhBpEG0Qu95ppNYkXNishDoS7kikI9GOxGppW0vmyzbcEuxPah0BtQnNL/ioI+A2ofkJG3ME0iY0v+HijkCv4SHBCeYHQ87O2nb7Shjm36hk4iByEDtIHKQOMpbvXg7b807/MXl1JCHy3df9y/H1wPPd2zPBNM33j8/yBEOVGYRaUM2qgQ3CDSINog1iDeINEg1KG5RBHdQI6mAOM7g3Enonolq03K6EOxLpSLQjsY7EO5LoSGlHymqJ58+7lz/lcWf+SvWgsYA5bIsf1L9QGB2dqs1bmn85Pn8h+fHtkOYvh3092hahBuEGkQbRBrEG8QYJGMMamTG0EupIuCORjkQ7EutIvCPpUXpU0ptZWy0BtQXcFkhboG2BtQXeFsT1thFk0sKohXELkxamLcxamLewgGDfL/VdgzIrqL1ZvaPUApzonBmBYNiUEyPAGUdFagXYrlPTBqlbTJJYAS4LiXrv0ZLMNy+WAdt3wo0AwVkirACbNdhJWzKr2VLU1o5sY3XpwDYwVfu/jUGhLWY2Cy11s4BzmmHYe2pBqMuAgVxiQxFAIUaAkx72mcwKcIezQ4ZVSpxaQVlMskSdZKkV6rsesgK4zswwE7he8MRaiLo0GW8Eri4cGRpN1KUws4K6FWLTQSOZ/VZ3hMIFx7iBk1z9wtcIwOMEWQEaEhMADlIQMjP8RrJ3Qq+WmvgdLfEpvUzhU2Y2GUiTJk3YWmr+Zyr+VUt8SupTMp9S+JSpzYWAzg1BLdlfeHu1qPHW0mKfktsQcJunjlFL1hnxKBMflfmUzYAy0BEjEEWwsanKx9IY9J+ZoocaB8GWh0jUJd4KmeR2BcDjDAim2FgGBWxXAE+g8uwOApUMgsmAqxSFyYDDEuLCZKAS56nJgKsnh9RkICi0SVPTSSO53wP/osQ+JfUpmU8pfMrUpgJ9SbOGUUvvo7aUxKdkPiX3KVOfMrOpwBhnScOopW7pdJVeKvEpqU/JfUrhUzYJQkXYnU8wRTC1Ijh0JzO1ItRt2x4j6rFEJKZWRIZBMLWSwnECD3ZGgFsThLYCPFHa3TKFnU0gM1spbKoCmwxSSFHYg0I9ggi7NaZc3fdNBqmADNRDBAjwZFZ/x6sgLAnK4DGnwWZUjRVOTG6gOi8NhEM101DAgUgNhKPCaFO1HP8PhC/E9g==###5060:XlxV32DM 3fff 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###3932:XlxV32DM 3fff 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###4712:XlxV32DM 3fff 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###4532:XlxV32DM 3fff 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###4840:XlxV32DM 3fff 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###5060:XlxV32DM 3fff 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###5024:XlxV32DM 3fff 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###4648:XlxV32DM 3fff 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###6412:XlxV32DM 3fff 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###4740:XlxV32DM 3fff 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###1948:XlxV32DM 3fff 784eNrNW1GSnCAQvRJ0g+jkHDnArjPzmb98beXuwQYRFRAW1K1Uamf08bp50N0ITi+e8i1G8RZKDAL1/5f+DogoGKN7HDv9CTVGyn66InvU9+WAHNX6ToAHcHA8vIJHUuvpHgrpoUfLA5pHs63vhHgYk73+t+3XmgcOeWDy2TKJBBM/9ogUGnc8s0J8x/NMepTikSgPeQT1/kmfa3iOZtDEgxn9yuEBPfDHM2ieieHxYsSjqmdQNk9k3Mt5mOXBgD4cB4qw4VgfO3t4gqU/ZCFLxIOVPGB5oIonPXtmHlUZFRwlzWaoVFlWxsRoecSOZ0yO1n68ypnAMaXyhvh2nJbzsLliVPHk5UPRJI/JVQWr0Qcb6YON9MFG+kAjfaCRPtBIH2gU88crIOPPuPOnlMf4Mx74A5V1sIQnXAdLefL0gUb68Eb68Eb68Eb68Eb6sEb6sEb6sEb6sFJ9/v37wwfJH+yBX3/wKR7j+OsvPvEBv37jEx74HL6meYkfUmgOzUD2dF9ohWOeDtwd/RekFJ3OPm/JyGbkvrs66KtvqS9qn+PcG5TPoy9N311P6ZsQXGO57fXEoGEao7OitoG51r/HvW+lC/lANqpsr1lEp30ACTS6xNPEaiGr45zUmEdnmXXEEB/HnfVMNodL3SOOgI2QdygVCmGe92w7UoHbeooUXxODdGiK7FBLwoPF4w6PCbxZORvMwg8BPLf43mHS/DNe7PjTeLbBK9tfvsJrZT28sv3lCTxG8GE9wfrDXH99/yGB7xwm1d8FD1n6GPxgvclFiyI0K0D3rp956JJeqqJeqqJeqqJedkW97AK91HcCc9GguUNI77PZtdujmYcGbx6G0NIpCAYd3Gfj0VV8n7FLx+f9EdnPVR10VZemqnOQq7LOO/VF6enDc9bf/tgmyWkx9BIvEhtXXTStTMcNwjyWvcQYkG9GLwgjiLRoHkCnPFpsRLdyzOZlVMKFLd/uVCRJ+GgrHxHbdt63HDaqhAZ6O9WZ01PaljzRMrwdiBkb02zZ0hGyYkNwZkrz9KVb92bKo57yYrBzfj3j32/5NcWJjt0PXdmlUNpgp5v3ZOiTzAuq852LxU9CKPNZTE4/zcoPp7VgJybHRBQ7UvX/vq3RhBqtRfRq11zTbB0Nvl2HZdvI4NFTvI2tDB6vzwGk7buYjgR8O7M+i/pku3OnBzskjdTM8xL+qC3YJ63ryQ+/ZaUHcda0lyEPp7+0YqYpP69RfQ/6Aw02bUI4OaU4tpnbIR/GiA/mORQSfbzOC6Rk9G0vMuw/o/ZlvQpr+wdRt5zonJ+xUrZaZSz7NHhJxjK27shYkJELzs1YWw+uzVhN4iSULQ5GXKC4LFpStlpFi7FxTbQYW3dESyqfXxMtWw/uiJY7q9pwYW1Pe3G3CuoHaNB0fXH9GFSv8szD6/kzIW2/csVdbf/8WXCq/fuqt4S66i1hX73p3ETpT9X1O8a0rrxV9rKYQlV8hYWiKor2/bw7K3nYh3Nq+am5q7qO2D34H+DDfbWsif1GKjStJdfscWZl0YSthlk0sMt5ahYN7HRemkXv3e8M+3DtE1GTqGmwDoWLd/u4O8o5P3YTthrGrrFyXewae/fFrro9ctWtcYs/YN2BN6878AeclECL85q77TeYC+okL0yuRLtr0tOqYc5hS7tdtqE3DZUXnTanh/Oai1vQvMKztbxPvMrda0bvfjQLVFmN55akZ3O+versK6saJmw1rIaB069Tq2HgBOzSanjvOVjYh6v3A/qTMtDyqlA/vxO3j8Hd60jL2/Z7LAtiV7z27dnPaBvpfl157It0b7bnYnkBdijAlvfRvG1/rOG0n57nyfLLwlxsn43NVW7IUCPcBgv4u2ysyJzVcZVZgcqsQGUWfc0vDwuZMbicB+VhY4rFXy48Utf/ZbH6D/0KGl0=###2360:XlxV32DM 3fff 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###2732:XlxV32DM 3fff a94eNq1W0uW3CoM3ZKRkDGddbwFdOozzCyjOtn7w2Aw2BKfcvWkE5cvAoQQF0l+EKDShGqa9MP/H/z/rXvS9KQF3TNZ93dKiIC+6ac2Doce+3TtCE3RUqF1LRUuBfpJRBrJ/eZgCEJ/oVVA1EbX6INwawVsK5MQ5BHnOSFasb+Hvq0t3e/otXNurVAPaYSToC5K0B7bLyHMKqw3OgTRou/HlrSsskmVGFbelbHjqlgN7vmprfvFY11vECzFSVtH+SS1vtvbryvi8A4ptdZPZn7R8qw4q12n68zvwepremrI8fbhdYmoRDmmKSdYaRjPrrFSS+k3N3c8PjtkWCkjaOVkD+L+X99pb/cRfdvkTF4Olm9YrRivlaCXa5IgSQKcL0iakhxVWam25UzbetektO0GNg2tmp4v2Z+Ke/mSHX9mVuTXOtjPFTnB491P1jMqB5M9w6XxBC929/qhw1m3298jO+tYDb99CmHlXG639rb2798fZen7a/rSrz94118Kpl9/8Y5f8Os/vIN7Vi8ncsJvpiPLOHzlj163QOLhTAnhD+cGWjFoENA2vQ/H/qxVmGxtYwcDd7+7t41jjz+yZS0EioLSIiWKgsLyKn6Oxby4bYLCfHsOwGjScNTG4NZQaWtgNLPfzswwmNntd2FlqOHlDHLBb8qPOGfgrj/Xfv/V/QtOwbPbYNnRxr1Pv1pWlvXYUxtnZutzRjncX62VIxhqm93aysEcxh2g6waTenpP1rlVJD1jfZWtvM2Ab7vZ6Fu9DErJNP1IFO24V4zYW2frhKu92/fRLp/DO3vy3qh0zI5JuTaU3pO3LyNgVcBu72m7YnFY8DvKlHJFrNn2cAPrV0glmkfRj3b1gR6NnWgVPXqJ1o8K2iZERJM4knBAB0R7JHAed2UkEPRejERG4zaSXjQNoe0AWm+0ohc9MksamiWxswQRbRLijOYuJ9RFmeO1VdPC9rrsvVbp0BLPqdt+Tikq6ZA1Lyfxmz0XvfVduEAD65MoY0gi/0gMyfOO7aKvZN4RyKFASbEeImie/FM6+SFq9J5pVB80amWNqkT4O/mZzLUELLG6CvQ9hqp2XVEWQpECWwHN29gshibaep0jU6Vkp4+MtqtHP23n1aEFY6jTQL84TXMfiZeF2Ek0ef5+pDOTn5ro6YQ2jJNyo0lXCJNcFFWikza9D+ZhAjEXsfl77pYMl7bdku608Db9D2PwN+zdzJ4Zbf8urAzu80rbwVlZEZnyRKWMTUWKDUVEinlfiwse5B5jf1GGept6t3v+EUr/Tr/X6H1Hjz9E9Tt6/hnav8vvpP0MjYYBEq0HKPTchQ27eOmiuNFzQBedi+h5AA0Zogeth9DLABqHZolDs9TnWW4nAo9WWTZtyrIuyKJhj9SJQSDJm+vjG7F1IGN68+fzlPlzW/rz253z58rbKO/Pp4Y/L721XTWZdnyQqyTElbBMV6/jMkUf+F5/Wetub9vV04i0Hm/bt4q9kiS/PbF+e5fP4akIHpzb0taWshBCq41l2tR8BDEBDe4SPEVPv2UEatfrKTLXrsv4FFnxAHoZQEOnh43oeQCNQ7PEoVni0Cz1cZZkKuzfozeEdJWW81093vuQjQ7eWznvbeJVWpeXvqdZL31zcenLo26UGR5/O+Xb8VguhmKlcoyPXDjNR65BfYlYnRKxeKGgAFICn0uhjhQmQJoXF0XAbjkmpVCxqufrF/ucBgkaHrKVGvHao8qQOXkQ0ZVeKhHMnl2kD5nJfG1aLU1Xn9nMgkuAzCVgGV0D7V3CwsaBeCXMWUgeKwH8cDZixnGhlY32iDh8aFaHgRAnwYElnZvjM7yDE6M07W0DncHKeXAe0ih75yTfMegDmumoZRBWVErPTM2WVKkx7J8/VGrGeo6KWCWDmi5VWcXTnpMzcnTVxtN/lH5KTrCuexG6njEPXZcs5nF7eX/V2GPN3UUDu4uywhJVLVqBmGSppmTUMSVTkW1LyR1W3ttOrvW0H1l9O2rTYe21W/tbPK5MsfaE7rhy2I60Rc5Ea4H30K4eel/kY64ZyuGcFQrLSF39cFuoP30CWwKDu6yaGOTbEGUVw1F7mNCxjkGJaDuAJRbLp3AoBjE70j0UgqOdSM0khWoBYAzh30JzeM4HntqoLN96Tj6dgtQh0FakoLjyTuoonz6HWdbATWzt3J5UXN1KEcSURFNCpYA7JQ1qBLBdwQGdoRc4lWNOWT4X2coTzPK52PURwciOXkZ2tHCbEXVWvSlJfbQiAm0/zB0j2PzcoH3LhGsfC9TsWT8vlQCnTyayMcrl+XB8rpbn46mEve8jgfcJKKUybbgQq6jHYEbk6BQ7mS8RYkyxHLhUVG/SRx1Xys91Kqq/QquPn6p0X98qgUrhQ6pmTcsAM2EraN7xLPqyBJUK4GfKUmJLGUD5/b2mxNRASkw1UmLqAymxT5Q4fCgtNlziMJweu1zicDlN9naJw5VU2XiJg5wqM2KdbeD5eKyyFbCpClpMp51TY71pNDtUqoBDaDNUfKCG0DSEtkOlCjiENkOFDWqosAGanFajuZTsKjITwS/PWZgI74VjfurXUFhbZSyav3mYjEVjFrSpBny3yuN2nkQNhKPyz6KxmV/h7yZWqtRPQSOU66AFzkbD1djvciSbeHWyBZPXEGNhCwu8fMyo8VlzV1i+P9KiMz6DTfbUr+2REG2h7aCnZd0z/wNQnbU/###2868:XlxV32DM 3fff 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###2844:XlxV32DM 3fff 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###2544:XlxV32DM 3fff 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###2524:XlxV32DM 3fff 9c4eNq9W0uS5CgMvRIgyZ/qc8wBetLOZe9mVdF3H9vYMjYSH5NR0REVWZXSA4QkpAeN9KYBLIw0Lj8HYwgIAJHA7J8duvUzjjgTXqQ7ljilUZV2ArYmPVTIYlL2jSO9Ix2TXKfXcbR8Sw6n7TNhRwZf+NpQELp1TbJ0Fm3Gefl+ys1wl6MVcfv9tcj2iyRs0gsmwDYHxyhvIj/ODen4/oLA+gh21T2/XUdc5BekIvS0/ptS357rXmaz4MHqJ8fKN3TCF9h1rjdpZGkvsRlpQZalPba3KjH2HEgvmsvahn2HHbhFw8E6x+UvaMleZQJbbnZZ7IG3MQMEUXZdZezVh97IEhTMO5bWVjazdH4H03sk6uNbmYllu247Inhtl9TM+bxbs4PgCZZ3XxvXa973mbWV3b1o07D8ey8mCJGmaBXBNwmkVhxvx4lx/D7d95b/uuwY3H9fZL0te2P+/v1jx6H7Ml/0/Qcm/LKEv/6DCb7cr39gcl+267/XRA6/BXcFwc0Pp5ScHDk4vIRPxD25LSCtGBL6GHLQey28OeQh7dSgB97oXNCbqnlScnUUzNOJDkyRJvB4HttLSC5nRE1im6c1JRf1M865utldHZBUHHiMEyfrdBDvqzxwvMv3i8ujd3l8XTx+Hr+hX9z9Pm27Ddcf0bf8pHskRw7gHS7cghNFlOVguOuZQ4+3TnMXeKxpNU11nJzrvCKkXL41HIbyppciiZs+hHnulubGOM35fAprzSvsFih2GSOXD3HSLu+1N/+6SFfb8UxmYp1jovnIOCPjRAF7W5c/kWw2HiTv9Ajz7p2yXUdRj7bz31dAwBj3UbL7uGO4ROyEo4j2jsZzl45GH+WYnbtL7z1N9VpOPe/1Y+D1cPX6flq9HjSvX7C2PVn7F2XlCFQxv7BXc1kruIz01cIusLDL7qOcA6F6LSl/o9OCwXEdH8vsy3ygm8CXTTZi5Jq5z8YrFMSracgefZA9bEM2C0qzrbB7ml29r24rX+fjo+P3Eh129uHRu0t4jIhrKdCJ4QHBBshVlFXcAhLSWrsvOkCmiqPNtE80IWprU6UA3Nrdc3zUwon6ZNNGutOHM99REmGbGQduFtL2tscO7ZICrSodSpSPE9IeVkmvw2NN+1AThOo/1E4HGXCDau/SVTh+/pP3hyacgYMeG3DoLP0TOFBgH8v2gYZk5rhUtHfaoAoHeF2uCYd43yPpShxkO2vzcQVEydE72qajB32h4KmXJpyDVISm+XjrvCLr1B7NwDhWXVcJDnKbFXXilTgD2wcbcHyUvqIorbWzCUoOK3AYNsJ54s0eJ8q36n5N0X7V4wwc7a4Bx3J0NaHsjeo9uupzqpzDqgtNJSquu+5qC83HOOkzp9zOyDgQtbgnhnxhoVlJn8sUXZ1MRVcnT2YyNGNgVCXXY1id5uMG0BbVyIfmEF2zyixyZq7Jy1zY2fc+ukCqHcVjaKPkK065Uznsd86vpFPR7NeLF2ml42CKUsho0gd6KfPYPlS0J3PSv7rr9ax6Y+OlMbrEnEXb5+JMuyot7WLxceesdV1dlkTXiMqoc1VofnvcXhU8ydB9HUS78akTShdEY1BzZ7KZEfXc7qVYkMuktffqM5CSHdEybN4OceRKHpuLXPuBU44vMP79Ml/O7GTV9aJ2fHXfsBpGIasyZpILg/1OaidRQseVmXIXjANB2nUJh+oTfKxV+dh517NFh7qU9pyiOT7WLE9wFByaNns02yCJuoezixNTypnTZORTCqWMsigprw2X+9iEM3JZTE3tB/C6WnDK1tX9GMWUbhZrePdr+/GcGspTcCXUkNy81t9Vj9wstlFMeQqljBoamPqgJmrI8LpcE6XzIeosoGKoqSlPEcE1TfnAXkhN1BAxjmuidFLRXoOTIoJryIa8nUtwPkWdyURwPVVlmaqiJhw8HjU1nYF0vrpQX3iUZZ/PEK8lBHcZgSsT3JGd/V5kaSb6SNXT11R2BVfB9QhYQXVRRSNUtwr7AWtapSELyTKtlaNsA2yDBtNV1eNHk22rrDSLVfzl1d3ZPRXX5ZE1+Kr76TjYoDk81KTHmiiSKHAlrZJvJfeX5UIHpV7iZzpkTLzbKaHSxDWolGv8yqeUQNZmleo28x016JRYRjMmd92FgMGMh3vp7vp2S3kXpkWP9i5M5DgKPDl8rbZrJt7I+bM666HKc5ZyX4DUW7F9fTX0tuBF+wyfj0ONZ5DJeWH2f07l5z0rlwWl3rJlTE/YvdbXZZMn7Lr5QtgN07y+LtMfX/bJB7Ek3itc3cSphF35OHhz3ssbqaQZoICBdi1rK+bfrzcldcRfmODKDoYLKZemN/WnwBUFFVUQj04NDdf05quEcHIfeovkPvQWCT70lg1+jEgrIxq7HyMa8XxK3LSuNBVSTuwBt/rY1BIbJq6wiZAjbmVbiLQSorGM2Bt4Xa6pRc8TjSX2sQGx55qIvRSNX0Ps5Qm5MmIvTxCWEXKOo73t9c/VPv8D0supfg==###2656:XlxV32DM 3fff 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###2896:XlxV32DM 3fff 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###2688:XlxV32DM 3fff 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###2896:XlxV32DM 3fff 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###2952:XlxV32DM 3fff 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###2844:XlxV32DM 3fff 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###2832:XlxV32DM 3fff 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###2612:XlxV32DM 3fff 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###2860:XlxV32DM 3fff b14eNqtW0u24ygM3RIgwPardfQCEicZ1qxGObX3dkzAAuuD7Zp0v5MS2EhX0pWQR7AQwgQAxhg/+5cf/OTBv0IIHtznZ//0M1jvwC1/wyITwugf4RXGau3yi/fB1jLMjpN/Bl/t4Kqnf/795Z+LtCV+dxAgkrvQ0sQu39/oHdJ5A/lOjlg5FR0sP8GihKS14Fat0efltZ32WP/++/e3vfnHj/nx79/w8D+v568/8IAf9+s/eLgf6+b3sqOBG/EEb8yyUTlJWJQG7mtFUv9fCe7c4YDlsjT1u2dRNH1RBB0oMuS7TKRWzfdsnj19KBJfXSHE92hWsrQvEmHFNK2XyGrFs7pAa8O4/GXDyO7i1F2SZVYv/iA8Ye+5YC98sXevsTf6D/aAxN6mlfDVftIQ63NFmvP3UbUbIIzTlgCEcUBvZQSPKGcg32pQsXw+Ik5chChYhj6dfLEMKpYZZDJW84L0/ne77n4W4evqFePuIsaHgnE+DtmOfcayT8i+8lp8BZKv2GGqnGWa3suaW/O8xSbL85JXnMMK3oHDCoXxvM50+WmSth9Eqn661ypafSICBbNlPzuaOgRB3Ke/fDS/puBhdXbDhlx6HS07+OjtEsAtuw5LECBmVJPSzGMN4BoA7Pqc/dMdAYAk+/wkKQIAfl0HRSJpKWmMgwtsOl1+B06vjIbgUMDgoeR6AkZOiQRpxe9zApB2c3MXKjzenu/lODfeyN8srXp5t4kTV5EMbItENjAdD3x5xhPFg0GIB+lEgxgP1mwkgF5Wf1r9yMwmqd+heDC86nhgHm+YyGhA+8eAFGIFxG9HlKV9I/2vUd3g8UKgrdMgE+q/tMAK5IdLKYlkWUQ/7IG4NSAqp0dN1xE1hwwfQN47VOiZwxsG1Xv1h4XugwYUnq0ani3yR8eBtfgjrkvYeFKy+UdiTV2fE7LvjyX2gPAEw+v39bT6kRleMpbffN2Z2lqPIVlr/6ahM4a5LK3GMNFlU0xXMGE6qMYm+RQ5W3M+Upd81A0dlshRt2bCc6s3/C+s3uY1Ccds0YA4cnB19oSaI++fNzeanklXd5ydGVmdGG47ZIJn/um6ujY6qudcG42178Stcrfh0fBmS/Fmt4MX7RCePaayTobT9wg1PZo76BFv4BTiaEZriwMDqhKCGCx8kZDZQK9GEoM+72CmOJi7sI/fdN9KH9snnTKxgwzDAcNwbrqXhqNrHrFWDkxjB5icCqbQDaaAOuGGN3giTUJ5BETX6AgFlDoY/fv40sGo89txEA7F6CwpVmy5p5KiFUrFU0qyEWeVuiabBiWrZOgrODHdbyiFkS0H4zAiNxaC2liQSLKe77diGbbsMaEqK9SXDk8jMS+u+051yNG6jg55IHrk+MlHbg7O6iq9Q/K+KznboJAr8FKxAOPZIW2DYSvEko1v2GuaWmiUaqGs7VKALf8NRF92J0/JEawsdp9slS3xAMgaCscf/l4uS+OkDah6YLVdqgfTea/Tj7bqXifZ7I5tFmv+7KUec/EQVfvjAe2PjKfajj1qacyQ5Rhouu8X+jXd3C8kXc9Y13U//+YkXee9NF3HjjbpJqnfyMqN1iQt6xlUPUtVPpyr8h+IIkbXVCoj3+EHtRB2TLcchOuSgQwlDrVMhhJKghgcHErzelmvn8YKZT1cvkJidUKaMV4Agf3Srg/1dJfAFAuFvbLP1sbxZegiPFGf0NwqUN4d3+a328VvV7Kjm3OWufxd2/Of4RWWWtoiEdAoi4TQPOxikDSPkKd4VbzrPR/ExVRwURpGL0REo92RlMhGBqbbL2ovNNrTKvajaWYblLIXEQsFsa7bm5MGmN2UuHKkxx4NTpxj7TsgXZGV6578/05iaTuJJRygNsCOAdWFrTYGhEkBbMSStMN4CRNjxkRJrdGi1DrXFH/xpk9qtY0DWTb8WNT+olteaR2ubINwA1FLc3cKE9G2a9+vvi/kqultpVxN0/0ZWwX3Mxf1mma58xw7PfU7iOfRQhaUkBUu7ZP7Vu7S1aXfpgRLkzGiO+F7aAjkRE1IfiY2vTg0Qc9MpXVtIqRvzrC0fHPmyNmobfWxZEDv4w5OEWra0iZ0I7nHlfncsoMyg8StZK1dTT3x2jvg9wmVsKFybsoas9Tq4wFM4ilsq2LSCsWQcr5TiVR/d71HIKFM7hHglXLtSk2j9PtHM41ywV/35Ub0W6K+N3l6eO7nbBdCn5+GC9LS42MjUekpcpEoEhknMF1FfuI2r9tP3FKTq0naf+cL62leXrpvzjVLN3OuVaFP5bRQrH2mpFa0xpZOqoVV2ji3q5VOdKaNhTgK2jhUvl3wj1j8o2T4sPnHbBseO+x5LBUVOcS7A7EsNl/DnHvipMbhc51y9d3ZWXCUW5VZcHMgr8d9HGZ3oNlFPNCF7I/kTRfyAlJdQaq9tE+pK8rtTETzG3eoEe8jz2lBHTpwTVUho4Yfkex/ItU02SG+r8Fw7L3J5hdep9/Wx0M85djXD7141b5+6MdZKHj1F/Zp2lgJr2jQY27wOowUgyl5pWEIA/lty4T4xKAwhHySPj6RpXu/JZpQXgYxLw8cK1BWWnKyI63emjy6v1jy+SPpL1ZhUCEN5VYMSmJ++ikj2UrtZRsRfXN6zSeG4hPxEvvxhf2UGI7mUsb6sjbe36tDyNTz7IU5Tz8tc5U4XTh6pn3bJ6sRjY+Mvp7bfe6nR/jXDc0guFxhcLHXSoc7OdUtvjN77bKtOjsnVk6t4tEWs4QLxm36dsm8N9Rvm5p+24vrKgdxPoj6Ojevs+3XueSXzG0V6ZC0Z6X7vvylqkg8XOrUKvL4N809WnNCvO6aqvofWR/M7w==###2980:XlxV32DM 3fff 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###3576:XlxV32DM 3fff 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###580:XlxV32DM 3b8 22ceNq9Ujt2HDEMu0wOQIr6chqXKVzER5Aoqcx7W++buweUncaO2xSCqCEJgtgtsWmpOH1rjUOrkdY9tVnSTjgs2tvQbkEHNR2RdFQc1Bl6bSy1mXTK0FlxRtNFWxe41ki6LOsOpjslZaIF4AYIBSAGiB4VBhiAGSVcO2CKcqAJ4AoQfyb0hkKADr4wPJoZsIeyhAAYIBUDaYQMjhkEsSCbBM80gwO+pY0oE+pyAFUWjMwJCnIHFAFzaZhWe7p+clnX/eRiis/gU7YdNW3TzFtLhmeY3QrONO0L/qSioxWdC/sPjOeFAamDMQ+fB8+4EshqQKImbFeLfR6VfBJcLKiJzbUfxXt9LhQvzBryVqlfFAfPolGk/E3FHJDCEqcnwDWhqpKiUrh+xCK6t9+sZtdrhOfx+bow6PlYdP2OaPILwui6/53g7xLhu4Rc9+3S5EMaVlHBTxbxr3AXv0ib/1fa/fLy6/kGXrreoIavB5M/HszvL9us9dxV97nbx23u84mWu41oErnnJwru/InO0icqvvqJmhtwouE2XJDxB7lk/R8=
###3956:XlxV32DM 3fef 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###5368:XlxV32DM 3fe6 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###4980:XlxV32DM 3fff 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###4076:XlxV32DM 3fff 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###5096:XlxV32DM 3fff 13d0eNq1W02S5CoOvsw7gPm1SUfv5xQVAQZH9GZq0cuOd/cBIYGM7cyqzp5FlTOFDUjWH5+Uj+kx/f5H6e2hol7/q4x+CGnWf1SaHmK2+YOOD6uWQlGPFNefe3hMj/WnmFK5fqpFl+u/v8ws84f59w/h9sce1h/CT3gVeJV4VXjV5fqxp/y0jnt+Wv6Gu/Pc649CUVrmMeFMH8vrrR8xwCNLJqvfcOfmyxOpXD+iKQ8toT6kMyebWz/yX96kjEQVj23J1AXu9Yw6Z+oM80daVtGWYtvSTGMSt7QBWRF5quQNmMtbaHtRWlXZlCnLmMBHstjqKplCq7i+A5hu34EciKwrWUwaNrzhMvkDLqNpmehIWBGFtYGwdg0C2PuTRVi7AmoiagRh7RJmatREq0hcRSxtBzsIMkoQOnuizB5hTSc741VWEaaI7Oa8aFSwqMXtlzdUtl/eat5+/svPqLrsxxZwJAC1zvQRLepGpdbNfOwGhZCp/waxLI+spg/zEOJ3NoOs9FqsYBgmVOUXU1w/0w7av5cX+o8y9qG2bc3fRf8ey3fZv4fyXdXHdCNnyeTvpt+2l++p2paY8NqnjctaCH3eOANB4Z1ghZ9CeLyClYYqt6KrzcoVWnnYq5WbXaCVmx2t3K8/N9sWkmXlbe7fXfm+9O9lI5uDfWy+k4tcttC/Zzl8Zn0BbxGEL6wrvjFP7kef3M+GG9O37idzWgY0nzDghJsYOdUJJ3TIGTKAO9UrclI2LGn+QjB8/kjzT+P8bmKSZJLy63Eh1xaqkjoIyI4CSiQg9Sf+uWg4eg2LXkNUN0rOL39Ae7bNazRPY8gFhuacYh/D+fzBVPOt1dN4MNWsq80D07DDYVeG66yi76aYf7YBIJMHLU/NhTy1mKPqHmpMsTymzPSQBc4+0g5k08lbudkAVTNqc4zBMmpzjN4zKjlGEfi8eY877Nw7RrWZOoEXqg4386FRBNUNZe0QjxxlHpG8kEQvtDEvtFWrZ0Ya3NFIw3w00jCoXkjrwVrDcrTWUKx1q+5oA5/3CdFl/Zmqb9qXeknoZ/TgZ7J7QT8TR+uw4trPDCzIgYWT9WxHFuTy1OFEMfiHbLaww3l7ak7I543bEVGO06Ifm8OfT8sUO2LyFGVX7GZDMLrgaNFDyGYCamehFqP9SKBym+tklrIEcguxJl4fG+QYm+lklsl0K9HVpLZqEKGTi0nVUBsco7Zg7TdGpcRMhJlRW2IW2HItMRN+YdRsUvkv246RIdtOeMhHINtRaDvxue2EwXbSC9tZBttxg+1kxf2M1Uxij/hZUvk7i/iifO/b2My6hvpqLw1pWUZDWm4MaeCnGsoTQxr4kQM/xRC7IRUxDxrvaIfzKRAmtsOrwMdN/cZ0f9UV8/suwqH33U8FQG26QSkzUJseOT5D0zmKYEBt+kmpPVBJl9vBoXxgik9JbNljS22N3DoVbo4Tj8Bwczuo0JkBqHm9aGskyAJ9+CxoT9qsUZsT1+avuujPfEZAX2N5iphTR3goLxhvHOQyveMgYYeXDnJ/a9p9TPfw+Dqnt9z5NE6LWdcc33DnOQVFb5qF3L2pCKqTue+lk1GWHffUupO7X6+aaeokEAzycL3uGBwmFhy2tuTOz4414NAsAWcJOEvAWSgAtVSnjMJWslbB7LTFOPEcs6VRhV7vFxtoeT4oDVpuUMv3/4+W7/ONljs6dkT1B3oD41da7tRb07obLXfyrWn9jZY78efT/hKJMJws5K7lcrKdzLR8n4i8MC2Xk+9kruU76meeBLQ6D9erw6tnWr6TveVRruUQfmmWgLMEnCXgLKTlctr6LFzLd7LPfDfTcjmlTudaLlXJ6qV6bA85k57bqud26nr+NKEPQ1KyXJ66Q4uk2WpivVTjiWLIRGQlq0MCckhYxJCwaEpYsg0Gboo7miJbIhEKguAHRzn0AJ6YC0Ped27Pn6hsWen2EQHpUEx06wCa2AaaEFaCA2Y9gSY/FWCQ+TDjylqW52B01HduzHDUzqAEO2AILAezQw6mrkETuXLMAdIWe5UMOntKtRaWas1DMrgMyd55YaY3LdWTWg+YBzlLP538hPuinyAxF/b2gb2cwiF7/gTZTC/kfOTSDimuHBJOc5SzHzdCKa0zp6Q7DnI+LhyGhedhYX8pZzPKmaLH/lfkHEfoShB7pzMFZJlczkdtMgN7dmBPHeXqBrk29JGiLZPrfK2/nvT3uHC4O/wf5GpHxil8pr8gV6nncXp6bfE0fWQQ5ldf2zJOT4gmJRUMu9VPzOObbqfGWnsFdS4n/1cN5G+6nV9SEdiXHXE770kA+RVS5/VH8Y69WJMkG11wlM5/Ugk26nCUzoFSezbqcZTOg7qVjFwC6LPWKTQdKcsHgE2Lt6ywqVSYZBcSS/d3qrJkx1f4igJubjvfkS/faydST2x0wVEqi0hl2ajDUTqGlrSjj3ocpXNn9b64G+CrVtUcYZvOE1+m8TUTX4YfTBLVd1zsEKfUTeYR+XIdFpWKkJ1CJQhVqsCecfgMwa5SLWzU4yhBtZoO3WUU+IFimZahL4T8NHhbLjUdLO+pJJGFr3q1eJ17UimVJ+7tZVIJswScJeAsAWdpSaVu6rSAsHJGU2QYLaEAOwO4pTLE8gKvH4YbLK7TzIYdDjcwXUKti4Y9DjcoXiIIDRvkCL5bOr2i/plSUf/qG3CfAG1UURo4V6EQsgurUsAPlj7M8OGj/Mss64lV7VzA+pwWrGrnPFElq9qV116piqHowByg6FLkfT+EfeQTRDtXzphvC55vn+JKGOJKxQLDAQtsGTXLa+WQOi+UOh8hvhIeKWeWQxbMSoTHyiAUFK9Puc9zXZ7i1nqgUWNG1+HFNLr2eaxiPY/AY73Pc9RQwvn78ty9vHGSNeBpzSUYGV/yM4amsa5w5Mcd+Yl3B/75LX7kGPMpY1q2b/PzFTbSHcBg32JjuiuWLv5NNg673+9wDPMGjlHcR/V/Yj9USiXmJYW9GkrETp0P1L9SxgqKW1xS8faKkZvn1ckycvfXwjBy8/I9wGQjgoAiIl4TXncWYETbJauk1PyIqC3zURujNgQ8cioh4FqqTkXuN0oMhCSJbRz5EYIeUayXIylGbcmKnhi1gePUgwNUBMfzVmSn4lZi24qmrUQOK4m2qGS9LMkwassztGTUVgqmvhegtrKxFJ2KW0m4FQNZJ723Bd/bgu9twffW0gthaeOJpRcFky51rSzhLG1L0WzBaCZ5NPNDmDrgPxU8PeA5Jes/AjmEqY4IzRNohqBWijljD0qHXpMerDVsiCacT2PbF49L2dfU93JEa/6jsmT63HBC2tgJ6Q4JEGm6CVPhLcAV9OwwrcXtxXdYr31lRwCFsR5fsK6OrIubiBbEW6zb0UcThrS9xbocWM+HKcb69j3W5U0UDNNbrI+1BsIHfHiLdT2yHjjr4Y71A8fqJnL6/Y3IaZq7xlbMYzwpHqB3+hlyqIUMxwwTEzUXRepKSLyR0kTXyb2UYFrwxa7AY+wo1tfbRg01YxZyXRa6MuuybX7BgoehFqlCZjUJat0syniOE0Xze9OmoQBcyLispEMVOFZXJQHFjDTh1eAV+zySxavEKxZD8uvpxY++W3ku8dEqAVcJuErAVQKuEnCVgKsEXKX1oLTWsCR5ccS06J40y3haflQmY2dNVOZKR7Ho9jbaEornYabrkzrUWYocSxNn6ZGrgdLoHQOlokAZDt2bLh27N/10Wbdw4Vi3cP7YvenieleCPJQsvB1KFn4ZShbeDX2ePqzH2oXvtQskzOsa7KSGxhFPIK86pdzWfbNx5Hm/yPzs5FeVmzcyejrSiBOM+YVGxsypHDndiNMTPGn113pa/focxt9esHw4VdlpDKWeejfVAXAvG0vrT19TszChk0YgeDFUV0U7KO+4+RmpF6IWX2WaAZrI7iY0zpiJUSn/re+GqJT/GmsYlRA7pWynQqZbFg5lcjtR7r6ng8cxfCJKmY1RRJWnXk6cpLsZwkzh5gaXGeMYubeJpo2R2ynMWM/IvRXVSkZup7D69nAj4JJAwlqDEEx/pAkhx8zifbLgc3jYsmqKnfJ0h+5H31R5/Yu2zbQ+h6fGtk23XhZ8JRV8eSVXnTrUxoLvcu5Qu4Cvaiu7GgCrM46VTj7yuqy7jWXd+b6seyj8qrFbXh8LvlTgNXAiuWyym8/wxI2v9C+6Vbf1iwWrKw9SzfXqHKJOMNChcvWipmTguDpf4WXzCf+zyzd95/PK59PfA1RXcXX6UOkdhjUcQi8BtXiKPrO8RqK2F237l2HPxJszhYpvvUExNog2aI06jtkbNNdvcHvxi47lhe76Jw2iv7SB7qLsP7MSA/BfXi5+iLwCYARBKiIeignGdjp34zMjMzeuGbm5cWM4mYWIyMi90KIdI/c4A0EJeSk5cGGlXiMLUobOHyYefpAlqPYksEYIMaLyKGIf67Fx51QK9cZ4Rm3B25A4DK/GmYZISUGLUgFP77KPNTjNNFxTin58aiEWqK21VeyMSpCesXyG9rsvw3bS6p3G0B7M4WgnCHQUG22bfiPXEqAy1ltyKbsAKh02W6ID1Pa7P8vvbWVhSqGASqXklkABlcrPLYeAd4CpUvYvCcG5LGJFQd9j0DfP2879ZetKGFLPMN91mxPCdyoOXcRU+zKmLi9j6kXPVHZH7q5Xaj51gxtz3aRg/qyHRx+aFuC0ddkrZc89PP6tHh530WtizjgXBjB5jtjfAHumZezFoCYQe2oBMzc9Umpw92NTyKumnmNTWgp33SFGfbU7xL34RUJYX7eJ6NR+4Rt49NBTQ4MIaZla+ZqwEZPsAYYw2AJSbq2/Lw2HECPYsMPhHmrswoYXHO71m4kc9WTZbweq6YCfcayxpDo7VclQtJ8sd2+RjTocbW7OGDa64Ci5u+oEaXTG0e72pr6d7vaoeddU6KlCTP2sltjv7WyLI9NyOKtx4c0onRZ5hda9DQB2VEv7hv9ALgUs7ZdYJcoJ69EaaQN6W/u9H/nMX+unTecDVqgB8/r8cErululrWMv8tYap7cmxgUfyiWma3udO7gW93T3+BzK90Kg=###4872:XlxV32DM 3fff 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###4696:XlxV32DM 3fff 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###5068:XlxV32DM 3fff 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###4496:XlxV32DM 3fff 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###6960:XlxV32DM 3fff 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###1900:XlxV32DM 3fff 754eNrdWcmW4yoM/SVAErarv+N9QJWTLHvXqzr97w+MJ2wm4SF1elOVxPdKQmhAWBPSiwA7QiSQoIQghYSN+VXTC1sE7PHLfGvBfKQONEghDP6Figg1tuZTbxh6LwlfJagifUWSRq4OY7EfUQZOYq0Lm/mTRsvAQb822i1U7JFWkvk2SXrizPTQD+wQnS0+96AVKbk5W0N22v/KasOH+dbhc/DX2oo264sNK4Q0kojEiJ9xmf1X0Hg7O8oa9vaB0urdSoyg+6J4S+mbIqg7Ia6dnvvyyOl7Vx4pgB+QR1sr7s8jCZT1RkEm7SKebwNAd0U2v8MSZkUxf2+tKCl9Z1YUp+e+iuL0vauipKPmroqyteK6itJHc0hfkUPMPO7+FRtOqWrdGTX+NEsOn9uKbIjFpwJxszcutuQEG+6M0rQlp8dG0TR3Qu8lxZgekxL8jmnkdQbVnjEXx2X5XfOgzkJZoR7soRWz/wHIHzEhh+24vxOflFEn1H01eOQndKCTLDlY6dS/YsMpOwJvn0CdDfecF+M7gtftyF0TaGEXTOg7uQsGZtDLu2BgDr29C75/Gg3b8Y4uiG+fBRU0F1ZblzswTljtcA6DMQIXZiDqLGe1e6tMD8f4vG/KyMaVPthEckTmCpGIg0OaU/GVsW/KwPveABRWy4S+k6tl4B3A5dUy8B7g9mr5/rcBYTveUS3bCyvVyBzf3+lhHYEcdZPrjJ3eUUgGGoYeXIpGs1yObIigBcuSMLopRGuWbHcDWOoThyYWumOgodjfDq1Z6IaBRtYqkbXKuAcFyydhtGSg43b76OlGsizTprtDwUAjE00MtCzMnWmV4hSfCJbdYTRnd4hlCUFbiJZJn8ggmhhouc3ioYcr/Kq0KIyWLLRioaEQrZKyZRCNLLRkWYKFaGDZDfPpO7WndaytZVilCxlVtVTHltWwdLSsetkm+ypPthg/kTv7bRirJwueWmqn7xG2s66WHdNt/dAHuI+dz1dPPM1xvejNjFyr8ZDHUrpza4YdN7/mEq7V+8hwFZPb76pPjbeWSlfPRpav+1395u/T0in4+yQTvi7jygNcUc11nb1WL1XFZcrmXFwu56KayFrOYLVsrK6ay9mylq0OWa6qa99yPj973blsXqaOOi4c4Ma8na4i65mNm1Xr6bCWK6q5sWwu4cbWm64E6ym+jgteVHK5+gBXVHPVAV+pA77yO2ppxV3fVXGy/7G7F+NHFu00c7lQzcXKHU7ZXMKNnQPS3OVGNsv8+/e3pEf3IT7g+zcQfsDnrz+mKX6oX/8BqY9WfJvFf8YP7oPrJG3N7NFeIHfmN3t9jO7FRnDYCiHJXv6jCo5RjuUQrnkvEizWjHn7YSYxqMTY9pm08p2LPo2LtHORaj0XGcy3XZHx0n7k04EVyiEgDBAQ1Wb4g/HIqmcEufVG0DqEJmNdAq1mRB4t7eGKgUYWWjDQmoHdrdD8VwGsjUI5P5+w/RB7Iezy3GGbEQsD9jW8btvasuBowO3jzbV4NUsYosRGuC9lfu5JmPkmrix3ebq8cCuSnua/KPU0fNXxHHNUDJ+bwA7E0Wreg/BlhZ4ylGQ0n9fZxsnMJz4TtrYzYm9r3stpPwb5+EpcVTm/0qaSTpGli7xdxoPValO82qqr58ODpLb4kqpcTvrKKSZnkuJ2Zrub869mj2D73WCdF5uph3yt2uxXRZtV2TZLxW2WhpYRKnVem12KXbBwtQc23LF713InF/WrNuu7yGC4bbZZNU6ZbbMygdYh9NyCZLbN5tB+m82jkYUWDLRmYEMrVDM23g4dznEaLwb3HNq00KEIlXFGHNkSG43gdOulS1svXdB6/TI9eHhsUCrbDOSqncls61Xp1vs/PtwGtw==###2804:XlxV32DM 3fff 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###2800:XlxV32DM 3fff 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###2876:XlxV32DM 3fff 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###2556:XlxV32DM 3fff 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###2628:XlxV32DM 3fff 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###3096:XlxV32DM 3fff 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###2740:XlxV32DM 3fff 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###2756:XlxV32DM 3fff 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###2692:XlxV32DM 3fff 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###2820:XlxV32DM 3fff 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###2688:XlxV32DM 3fff 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###2840:XlxV32DM 3fff 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###2800:XlxV32DM 3fff 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###2828:XlxV32DM 3fff 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###2920:XlxV32DM 3fff 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###2068:XlxV32DM 19b1 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
/spi_master_slave/trunk/syn/spi_master_atlys_top.vhd
21,7 → 21,7
-- 2011/07/02 v0.01.0010 [JD] implemented a wire-through from switches to LEDs, just to test the toolchain. It worked!
-- 2011/07/03 v0.01.0020 [JD] added clock input, and a simple LED blinker for each LED.
-- 2011/07/03 v0.01.0030 [JD] added clear input, and instantiated a SPI_MASTER from my OpenCores project.
-- 2011/07/04 v0.01.0040 [JD] changed all clocks to clock enables, and use the 100MHz board gclk_i to clock all registers.
-- 2011/07/04 v0.01.0040 [JD] changed all clocks to clock enables, and use the 100MHz board pclk_i to clock all registers.
-- this change made the design go up to 288MHz, after synthesis.
-- 2011/07/07 v0.03.0050 [JD] implemented a 16pin umbilical port for the MSO2014 in the Atlys VmodBB board, and moved all
-- external monitoring pins to the VHDCI ports.
42,10 → 42,11
CPOL : std_logic := '0'; -- SPI mode selection (mode 0 default)
CPHA : std_logic := '0'; -- CPOL = clock polarity, CPHA = clock phase.
PREFETCH : positive := 3; -- prefetch lookahead cycles
CLK_PERIOD : time := 10 ns; -- clock period for gclk_i (default 100MHz)
DEBOUNCE_TIME : time := 200 us); -- switch debounce time (use 200 us for silicon, 2 us for simulation)
CLK_PERIOD : time := 10 ns; -- clock period for pclk_i (default 100MHz)
DEBOUNCE_TIME : time := 2 us); -- switch debounce time (use 200 us for silicon, 2 us for simulation)
Port (
gclk_i : in std_logic := 'X'; -- board clock input 100MHz
sclk_i : in std_logic := 'X'; -- board clock input 100MHz
pclk_i : in std_logic := 'X'; -- board clock input 100MHz
--- SPI interface ---
spi_ssel_o : out std_logic; -- spi port SSEL
spi_sck_o : out std_logic; -- spi port SCK
71,7 → 72,7
--=============================================================================================
-- Constants
--=============================================================================================
-- clock divider count values from gclk_i (100MHz board clock)
-- clock divider count values from pclk_i (100MHz board clock)
-- these constants shall not be zero
constant FSM_CE_DIV : integer := 1; -- fsm operates at 100MHz
constant SPI_2X_CLK_DIV : integer := 1; -- 50MHz SPI clock
184,8 → 185,8
Inst_spi_master_port: entity work.spi_master(rtl)
generic map (N => N, CPOL => CPOL, CPHA => CPHA, PREFETCH => PREFETCH, SPI_2X_CLK_DIV => SPI_2X_CLK_DIV)
port map(
sclk_i => gclk_i, -- system clock is used for serial and parallel ports
pclk_i => gclk_i,
sclk_i => sclk_i, -- system clock is used for serial and parallel ports
pclk_i => pclk_i,
rst_i => spi_rst_reg,
spi_ssel_o => spi_ssel,
spi_sck_o => spi_sck,
205,7 → 206,7
Inst_spi_slave_port: entity work.spi_slave(rtl)
generic map (N => N, CPOL => CPOL, CPHA => CPHA, PREFETCH => PREFETCH)
port map(
clk_i => gclk_i,
clk_i => pclk_i,
spi_ssel_i => spi_ssel, -- driven by the spi master
spi_sck_i => spi_sck, -- driven by the spi master
spi_mosi_i => spi_mosi, -- driven by the spi master
224,7 → 225,7
Inst_sw_debouncer: entity work.grp_debouncer(rtl)
generic map (N => 8, CNT_VAL => DEBOUNCE_TIME / CLK_PERIOD) -- debounce 8 inputs with selected settling time
port map(
clk_i => gclk_i, -- system clock
clk_i => pclk_i, -- system clock
data_i => sw_i, -- noisy input data
data_o => sw_data -- registered stable output data
);
233,7 → 234,7
Inst_btn_debouncer: entity work.grp_debouncer(rtl)
generic map (N => 6, CNT_VAL => DEBOUNCE_TIME / CLK_PERIOD) -- debounce 6 inputs with selected settling time
port map(
clk_i => gclk_i, -- system clock
clk_i => pclk_i, -- system clock
data_i => btn_i, -- noisy input data
data_o => btn_data -- registered stable output data
);
264,10 → 265,10
-- fsm clock enable,
-----------------------------------------------------------------------------------------------
-- generate the sampling clock enable from the 100MHz board input clock
samp_ce_gen_proc: process (gclk_i) is
samp_ce_gen_proc: process (pclk_i) is
variable clk_cnt : integer range SAMP_CE_DIV-1 downto 0 := 0;
begin
if gclk_i'event and gclk_i = '1' then
if pclk_i'event and pclk_i = '1' then
if clk_cnt = SAMP_CE_DIV-1 then
samp_ce <= '1'; -- generate a single pulse every SAMP_CE_DIV clocks
clk_cnt := 0;
278,10 → 279,10
end if;
end process samp_ce_gen_proc;
-- generate the fsm clock enable from the 100MHz board input clock
fsm_ce_gen_proc: process (gclk_i) is
fsm_ce_gen_proc: process (pclk_i) is
variable clk_cnt : integer range FSM_CE_DIV-1 downto 0 := 0;
begin
if gclk_i'event and gclk_i = '1' then
if pclk_i'event and pclk_i = '1' then
if clk_cnt = FSM_CE_DIV-1 then
fsm_ce <= '1'; -- generate a single pulse every FSM_CE_DIV clocks
clk_cnt := 0;
296,9 → 297,9
-- INPUTS LOGIC
--=============================================================================================
-- registered inputs
samp_inputs_proc: process (gclk_i) is
samp_inputs_proc: process (pclk_i) is
begin
if gclk_i'event and gclk_i = '1' then
if pclk_i'event and pclk_i = '1' then
if samp_ce = '1' then
clear <= btn_data(btUP); -- clear is button UP
leds_reg <= leds_next; -- update LEDs with spi_slave received data
310,10 → 311,10
-- REGISTER TRANSFER PROCESSES
--=============================================================================================
-- fsm state and data registers: synchronous to the system clock
fsm_reg_proc : process (gclk_i) is
fsm_reg_proc : process (pclk_i) is
begin
-- FFD registers clocked on rising edge and cleared on sync 'clear'
if gclk_i'event and gclk_i = '1' then
if pclk_i'event and pclk_i = '1' then
if clear = '1' then -- sync reset
m_wr_st_reg <= st_reset; -- only provide local reset for the state registers
else
323,7 → 324,7
end if;
end if;
-- FFD registers clocked on rising edge and cleared on ssel = '1'
if gclk_i'event and gclk_i = '1' then
if pclk_i'event and pclk_i = '1' then
if spi_ssel = '1' then -- sync reset
s_wr_st_reg <= st_reset; -- only provide local reset for the state registers
s_rd_st_reg <= st_reset;
335,7 → 336,7
end if;
end if;
-- FFD registers clocked on rising edge, with no reset
if gclk_i'event and gclk_i = '1' then
if pclk_i'event and pclk_i = '1' then
if fsm_ce = '1' then
--------- master write fsm signals -----------
spi_wren_reg_m <= spi_wren_next_m;
/spi_master_slave/trunk/syn/fuseRelaunch.cmd
1,7 → 336,7
-intstyle "ise" -incremental -lib "secureip" -o "C:/dropbox/Dropbox/VHDL_training/OpenCores/spimasterslave/spi_master_slave/trunk/syn/testbench_isim_par.exe" -prj "C:/dropbox/Dropbox/VHDL_training/OpenCores/spimasterslave/spi_master_slave/trunk/syn/testbench_par.prj" "work.testbench"
-intstyle "ise" -incremental -lib "secureip" -o "C:/dropbox/Dropbox/VHDL_training/OpenCores/spi_master_slave/spi_master_slave/trunk/syn/testbench_isim_par.exe" -prj "C:/dropbox/Dropbox/VHDL_training/OpenCores/spi_master_slave/spi_master_slave/trunk/syn/testbench_par.prj" "work.testbench"
/spi_master_slave/trunk/syn/grp_debouncer.vhd
113,6 → 113,7
-- 2011/07/06 v0.01.0010 [JD] started development. verification of synthesis circuit inference.
-- 2011/07/07 v1.00.0020 [JD] verification in silicon. operation at 100MHz, tested on the Atlys board (Spartan-6 LX45).
-- 2011/08/10 v1.01.0025 [JD] added one pipeline delay to new data strobe output.
-- 2011/09/19 v1.01.0030 [JD] changed range for internal counter (cnt_reg, cnt_next) to avoid adder flipover (Altera/ModelSim).
--
-----------------------------------------------------------------------------------------------------------------------
-- TODO
145,8 → 146,8
signal strb_next : std_logic := '0'; -- lookahead strobe
signal dat_diff : std_logic := '0'; -- edge detector
-- debounce counter
signal cnt_reg : integer range CNT_VAL downto 0 := 0; -- debounce period counter
signal cnt_next : integer range CNT_VAL downto 0 := 0; -- combinatorial signal
signal cnt_reg : integer range CNT_VAL + 1 downto 0 := 0; -- debounce period counter
signal cnt_next : integer range CNT_VAL + 1 downto 0 := 0; -- combinatorial signal
begin
 
--=============================================================================================
/spi_master_slave/trunk/syn/spi_master_atlys_top_map.psr
30,11 → 30,11
=========================================================================
---- Statistics
Number of SRLs added by SRL Inferencing | 4
Number of LUTs removed by SmartOpt Trimming | 511
Number of LUTs removed by SmartOpt Trimming | 463
Number of registers removed by SRL Inferencing | 8
Number of registers removed by Equivalence Removal | 4
 
Overall change in number of design objects | -519
Overall change in number of design objects | -471
 
 
---- Details
61,517 → 61,469
Inst_spi_slave_port/state_reg_1_1 | Equivalence Removal
Inst_spi_slave_port/state_reg_2_1 | Equivalence Removal
Inst_spi_slave_port/state_reg_2_2 | Equivalence Removal
][1017_599 | SmartOpt Trimming
][124_6 | SmartOpt Trimming
][128_7 | SmartOpt Trimming
][132_8 | SmartOpt Trimming
][139_9 | SmartOpt Trimming
][146_10 | SmartOpt Trimming
][153_11 | SmartOpt Trimming
][160_12 | SmartOpt Trimming
][167_13 | SmartOpt Trimming
][174_14 | SmartOpt Trimming
][181_15 | SmartOpt Trimming
][188_16 | SmartOpt Trimming
][195_17 | SmartOpt Trimming
][202_18 | SmartOpt Trimming
][209_19 | SmartOpt Trimming
][216_20 | SmartOpt Trimming
][225_21 | SmartOpt Trimming
][229_22 | SmartOpt Trimming
][233_23 | SmartOpt Trimming
][240_24 | SmartOpt Trimming
][247_25 | SmartOpt Trimming
][254_26 | SmartOpt Trimming
][261_27 | SmartOpt Trimming
][268_28 | SmartOpt Trimming
][275_29 | SmartOpt Trimming
][282_30 | SmartOpt Trimming
][289_31 | SmartOpt Trimming
][296_32 | SmartOpt Trimming
][303_33 | SmartOpt Trimming
][310_34 | SmartOpt Trimming
][317_35 | SmartOpt Trimming
][331_38 | SmartOpt Trimming
][340_53 | SmartOpt Trimming
][344_58 | SmartOpt Trimming
][348_63 | SmartOpt Trimming
][352_68 | SmartOpt Trimming
][356_73 | SmartOpt Trimming
][360_78 | SmartOpt Trimming
][364_83 | SmartOpt Trimming
][500_179 | SmartOpt Trimming
][504_183 | SmartOpt Trimming
][508_187 | SmartOpt Trimming
][512_191 | SmartOpt Trimming
][516_196 | SmartOpt Trimming
][520_200 | SmartOpt Trimming
][524_205 | SmartOpt Trimming
][532_216 | SmartOpt Trimming
][536_221 | SmartOpt Trimming
][540_226 | SmartOpt Trimming
][544_231 | SmartOpt Trimming
][548_236 | SmartOpt Trimming
][552_241 | SmartOpt Trimming
][556_246 | SmartOpt Trimming
][576_265 | SmartOpt Trimming
][580_269 | SmartOpt Trimming
][584_273 | SmartOpt Trimming
][588_277 | SmartOpt Trimming
][592_281 | SmartOpt Trimming
][596_285 | SmartOpt Trimming
][822_441 | SmartOpt Trimming
][827_445 | SmartOpt Trimming
][832_448 | SmartOpt Trimming
][848_460 | SmartOpt Trimming
][852_464 | SmartOpt Trimming
][856_469 | SmartOpt Trimming
][860_474 | SmartOpt Trimming
][863_475 | SmartOpt Trimming
][937_536 | SmartOpt Trimming
][940_539 | SmartOpt Trimming
][943_542 | SmartOpt Trimming
][946_545 | SmartOpt Trimming
][949_548 | SmartOpt Trimming
][952_551 | SmartOpt Trimming
][958_556 | SmartOpt Trimming
][const_100_161 | SmartOpt Trimming
][const_101_162 | SmartOpt Trimming
][const_102_163 | SmartOpt Trimming
][const_103_164 | SmartOpt Trimming
][const_104_165 | SmartOpt Trimming
][const_105_166 | SmartOpt Trimming
][const_106_167 | SmartOpt Trimming
][const_107_168 | SmartOpt Trimming
][const_108_171 | SmartOpt Trimming
][const_109_172 | SmartOpt Trimming
][const_110_177 | SmartOpt Trimming
][const_111_178 | SmartOpt Trimming
][const_112_181 | SmartOpt Trimming
][const_113_182 | SmartOpt Trimming
][const_114_185 | SmartOpt Trimming
][const_115_186 | SmartOpt Trimming
][const_116_189 | SmartOpt Trimming
][const_117_190 | SmartOpt Trimming
][const_118_194 | SmartOpt Trimming
][const_119_195 | SmartOpt Trimming
][const_120_198 | SmartOpt Trimming
][const_121_199 | SmartOpt Trimming
][const_122_203 | SmartOpt Trimming
][const_123_204 | SmartOpt Trimming
][const_124_208 | SmartOpt Trimming
][const_125_209 | SmartOpt Trimming
][const_126_214 | SmartOpt Trimming
][const_127_215 | SmartOpt Trimming
][const_128_219 | SmartOpt Trimming
][const_129_220 | SmartOpt Trimming
][const_130_224 | SmartOpt Trimming
][const_131_225 | SmartOpt Trimming
][const_132_229 | SmartOpt Trimming
][const_133_230 | SmartOpt Trimming
][const_134_234 | SmartOpt Trimming
][const_135_235 | SmartOpt Trimming
][const_136_239 | SmartOpt Trimming
][const_137_240 | SmartOpt Trimming
][const_138_244 | SmartOpt Trimming
][const_139_245 | SmartOpt Trimming
][const_140_251 | SmartOpt Trimming
][const_142_254 | SmartOpt Trimming
][const_144_258 | SmartOpt Trimming
][const_146_262 | SmartOpt Trimming
][const_148_266 | SmartOpt Trimming
][const_150_270 | SmartOpt Trimming
][const_152_274 | SmartOpt Trimming
][const_154_278 | SmartOpt Trimming
][const_156_282 | SmartOpt Trimming
][const_158_286 | SmartOpt Trimming
][const_160_287 | SmartOpt Trimming
][const_161_288 | SmartOpt Trimming
][const_162_292 | SmartOpt Trimming
][const_163_293 | SmartOpt Trimming
][const_164_294 | SmartOpt Trimming
][const_165_295 | SmartOpt Trimming
][const_166_296 | SmartOpt Trimming
][const_167_297 | SmartOpt Trimming
][const_168_298 | SmartOpt Trimming
][const_169_299 | SmartOpt Trimming
][const_170_300 | SmartOpt Trimming
][const_171_301 | SmartOpt Trimming
][const_172_302 | SmartOpt Trimming
][const_173_303 | SmartOpt Trimming
][const_174_304 | SmartOpt Trimming
][const_175_305 | SmartOpt Trimming
][const_176_306 | SmartOpt Trimming
][const_177_307 | SmartOpt Trimming
][const_179_308 | SmartOpt Trimming
][const_180_309 | SmartOpt Trimming
][const_182_310 | SmartOpt Trimming
][const_183_311 | SmartOpt Trimming
][const_185_312 | SmartOpt Trimming
][const_186_313 | SmartOpt Trimming
][const_188_314 | SmartOpt Trimming
][const_189_315 | SmartOpt Trimming
][const_191_316 | SmartOpt Trimming
][const_192_317 | SmartOpt Trimming
][const_194_318 | SmartOpt Trimming
][const_195_319 | SmartOpt Trimming
][const_197_320 | SmartOpt Trimming
][const_198_321 | SmartOpt Trimming
][const_200_322 | SmartOpt Trimming
][const_201_323 | SmartOpt Trimming
][const_203_324 | SmartOpt Trimming
][const_204_325 | SmartOpt Trimming
][const_206_326 | SmartOpt Trimming
][const_207_327 | SmartOpt Trimming
][const_209_328 | SmartOpt Trimming
][const_210_329 | SmartOpt Trimming
][const_212_330 | SmartOpt Trimming
][const_213_331 | SmartOpt Trimming
][const_215_332 | SmartOpt Trimming
][const_216_333 | SmartOpt Trimming
][const_218_334 | SmartOpt Trimming
][const_219_335 | SmartOpt Trimming
][const_221_336 | SmartOpt Trimming
][const_222_337 | SmartOpt Trimming
][const_224_338 | SmartOpt Trimming
][const_225_339 | SmartOpt Trimming
][const_226_343 | SmartOpt Trimming
][const_227_344 | SmartOpt Trimming
][const_228_345 | SmartOpt Trimming
][const_229_346 | SmartOpt Trimming
][const_230_347 | SmartOpt Trimming
][const_231_348 | SmartOpt Trimming
][const_232_349 | SmartOpt Trimming
][const_233_350 | SmartOpt Trimming
][const_234_351 | SmartOpt Trimming
][const_235_352 | SmartOpt Trimming
][const_236_353 | SmartOpt Trimming
][const_237_354 | SmartOpt Trimming
][const_239_355 | SmartOpt Trimming
][const_240_356 | SmartOpt Trimming
][const_242_357 | SmartOpt Trimming
][const_243_358 | SmartOpt Trimming
][const_245_359 | SmartOpt Trimming
][const_246_360 | SmartOpt Trimming
][const_248_361 | SmartOpt Trimming
][const_249_362 | SmartOpt Trimming
][const_24_36 | SmartOpt Trimming
][const_251_363 | SmartOpt Trimming
][const_252_364 | SmartOpt Trimming
][const_254_365 | SmartOpt Trimming
][const_255_366 | SmartOpt Trimming
][const_257_367 | SmartOpt Trimming
][const_258_368 | SmartOpt Trimming
][const_25_37 | SmartOpt Trimming
][const_260_369 | SmartOpt Trimming
][const_261_370 | SmartOpt Trimming
][const_263_371 | SmartOpt Trimming
][const_264_372 | SmartOpt Trimming
][const_266_373 | SmartOpt Trimming
][const_267_374 | SmartOpt Trimming
][const_269_375 | SmartOpt Trimming
][const_26_39 | SmartOpt Trimming
][const_270_376 | SmartOpt Trimming
][const_272_377 | SmartOpt Trimming
][const_273_378 | SmartOpt Trimming
][const_274_380 | SmartOpt Trimming
][const_275_381 | SmartOpt Trimming
][const_276_382 | SmartOpt Trimming
][const_277_383 | SmartOpt Trimming
][const_278_384 | SmartOpt Trimming
][const_279_385 | SmartOpt Trimming
][const_27_40 | SmartOpt Trimming
][const_280_386 | SmartOpt Trimming
][const_281_387 | SmartOpt Trimming
][const_282_388 | SmartOpt Trimming
][const_283_389 | SmartOpt Trimming
][const_284_390 | SmartOpt Trimming
][const_285_391 | SmartOpt Trimming
][const_286_392 | SmartOpt Trimming
][const_287_393 | SmartOpt Trimming
][const_288_396 | SmartOpt Trimming
][const_289_397 | SmartOpt Trimming
][const_28_43 | SmartOpt Trimming
][const_290_401 | SmartOpt Trimming
][const_291_402 | SmartOpt Trimming
][const_292_405 | SmartOpt Trimming
][const_293_406 | SmartOpt Trimming
][const_294_409 | SmartOpt Trimming
][const_295_410 | SmartOpt Trimming
][const_296_413 | SmartOpt Trimming
][const_297_414 | SmartOpt Trimming
][const_298_417 | SmartOpt Trimming
][const_299_418 | SmartOpt Trimming
][const_29_44 | SmartOpt Trimming
][const_300_421 | SmartOpt Trimming
][const_301_422 | SmartOpt Trimming
][const_302_425 | SmartOpt Trimming
][const_303_426 | SmartOpt Trimming
][const_304_427 | SmartOpt Trimming
][const_305_428 | SmartOpt Trimming
][const_307_429 | SmartOpt Trimming
][const_308_430 | SmartOpt Trimming
][const_30_51 | SmartOpt Trimming
][const_310_431 | SmartOpt Trimming
][const_311_432 | SmartOpt Trimming
][const_313_433 | SmartOpt Trimming
][const_314_434 | SmartOpt Trimming
][const_316_436 | SmartOpt Trimming
][const_317_440 | SmartOpt Trimming
][const_318_444 | SmartOpt Trimming
][const_319_447 | SmartOpt Trimming
][const_31_52 | SmartOpt Trimming
][const_320_449 | SmartOpt Trimming
][const_321_450 | SmartOpt Trimming
][const_323_451 | SmartOpt Trimming
][const_324_452 | SmartOpt Trimming
][const_326_453 | SmartOpt Trimming
][const_327_454 | SmartOpt Trimming
][const_329_455 | SmartOpt Trimming
][const_32_56 | SmartOpt Trimming
][const_330_456 | SmartOpt Trimming
][const_332_458 | SmartOpt Trimming
][const_333_459 | SmartOpt Trimming
][const_334_462 | SmartOpt Trimming
][const_335_463 | SmartOpt Trimming
][const_336_467 | SmartOpt Trimming
][const_337_468 | SmartOpt Trimming
][const_338_472 | SmartOpt Trimming
][const_339_473 | SmartOpt Trimming
][const_33_57 | SmartOpt Trimming
][const_340_476 | SmartOpt Trimming
][const_341_477 | SmartOpt Trimming
][const_342_479 | SmartOpt Trimming
][const_343_480 | SmartOpt Trimming
][const_345_482 | SmartOpt Trimming
][const_346_483 | SmartOpt Trimming
][const_348_484 | SmartOpt Trimming
][const_349_485 | SmartOpt Trimming
][const_34_61 | SmartOpt Trimming
][const_350_486 | SmartOpt Trimming
][const_351_487 | SmartOpt Trimming
][const_352_488 | SmartOpt Trimming
][const_353_489 | SmartOpt Trimming
][const_354_490 | SmartOpt Trimming
][const_355_491 | SmartOpt Trimming
][const_356_492 | SmartOpt Trimming
][const_357_493 | SmartOpt Trimming
][const_358_494 | SmartOpt Trimming
][const_359_495 | SmartOpt Trimming
][const_35_62 | SmartOpt Trimming
][const_360_496 | SmartOpt Trimming
][const_361_497 | SmartOpt Trimming
][const_362_498 | SmartOpt Trimming
][const_363_499 | SmartOpt Trimming
][const_364_504 | SmartOpt Trimming
][const_365_505 | SmartOpt Trimming
][const_366_509 | SmartOpt Trimming
][const_367_510 | SmartOpt Trimming
][const_368_514 | SmartOpt Trimming
][const_369_515 | SmartOpt Trimming
][const_36_66 | SmartOpt Trimming
][const_370_518 | SmartOpt Trimming
][const_371_519 | SmartOpt Trimming
][const_372_522 | SmartOpt Trimming
][const_373_523 | SmartOpt Trimming
][const_374_528 | SmartOpt Trimming
][const_375_529 | SmartOpt Trimming
][const_376_530 | SmartOpt Trimming
][const_377_531 | SmartOpt Trimming
][const_378_534 | SmartOpt Trimming
][const_379_535 | SmartOpt Trimming
][const_37_67 | SmartOpt Trimming
][const_380_537 | SmartOpt Trimming
][const_381_538 | SmartOpt Trimming
][const_383_540 | SmartOpt Trimming
][const_384_541 | SmartOpt Trimming
][const_386_543 | SmartOpt Trimming
][const_387_544 | SmartOpt Trimming
][const_389_546 | SmartOpt Trimming
][const_38_71 | SmartOpt Trimming
][const_390_547 | SmartOpt Trimming
][const_392_549 | SmartOpt Trimming
][const_393_550 | SmartOpt Trimming
][const_395_552 | SmartOpt Trimming
][const_396_553 | SmartOpt Trimming
][const_398_554 | SmartOpt Trimming
][const_399_555 | SmartOpt Trimming
][const_39_72 | SmartOpt Trimming
][const_401_557 | SmartOpt Trimming
][const_402_558 | SmartOpt Trimming
][const_405_560 | SmartOpt Trimming
][const_407_563 | SmartOpt Trimming
][const_409_566 | SmartOpt Trimming
][const_40_76 | SmartOpt Trimming
][const_411_568 | SmartOpt Trimming
][const_412_569 | SmartOpt Trimming
][const_413_570 | SmartOpt Trimming
][const_415_571 | SmartOpt Trimming
][const_416_572 | SmartOpt Trimming
][const_418_573 | SmartOpt Trimming
][const_419_574 | SmartOpt Trimming
][const_41_77 | SmartOpt Trimming
][const_421_575 | SmartOpt Trimming
][const_422_576 | SmartOpt Trimming
][const_424_577 | SmartOpt Trimming
][const_425_578 | SmartOpt Trimming
][const_427_579 | SmartOpt Trimming
][const_428_580 | SmartOpt Trimming
][const_42_81 | SmartOpt Trimming
][const_430_581 | SmartOpt Trimming
][const_431_582 | SmartOpt Trimming
][const_433_583 | SmartOpt Trimming
][const_434_584 | SmartOpt Trimming
][const_436_585 | SmartOpt Trimming
][const_437_586 | SmartOpt Trimming
][const_439_589 | SmartOpt Trimming
][const_43_82 | SmartOpt Trimming
][const_440_590 | SmartOpt Trimming
][const_442_593 | SmartOpt Trimming
][const_443_594 | SmartOpt Trimming
][const_445_597 | SmartOpt Trimming
][const_446_598 | SmartOpt Trimming
][const_449_600 | SmartOpt Trimming
][const_44_89 | SmartOpt Trimming
][const_450_602 | SmartOpt Trimming
][const_451_603 | SmartOpt Trimming
][const_453_605 | SmartOpt Trimming
][const_454_606 | SmartOpt Trimming
][const_456_607 | SmartOpt Trimming
][const_457_608 | SmartOpt Trimming
][const_458_609 | SmartOpt Trimming
][const_459_610 | SmartOpt Trimming
][const_45_90 | SmartOpt Trimming
][const_460_611 | SmartOpt Trimming
][const_461_612 | SmartOpt Trimming
][const_463_613 | SmartOpt Trimming
][const_464_614 | SmartOpt Trimming
][const_466_617 | SmartOpt Trimming
][const_467_618 | SmartOpt Trimming
][const_469_620 | SmartOpt Trimming
][const_46_93 | SmartOpt Trimming
][const_470_621 | SmartOpt Trimming
][const_472_625 | SmartOpt Trimming
][const_473_626 | SmartOpt Trimming
][const_475_629 | SmartOpt Trimming
][const_476_630 | SmartOpt Trimming
][const_478_633 | SmartOpt Trimming
][const_479_634 | SmartOpt Trimming
][const_47_94 | SmartOpt Trimming
][const_481_637 | SmartOpt Trimming
][const_482_638 | SmartOpt Trimming
][const_484_644 | SmartOpt Trimming
][const_485_645 | SmartOpt Trimming
][const_487_647 | SmartOpt Trimming
][const_488_648 | SmartOpt Trimming
][const_48_97 | SmartOpt Trimming
][const_490_650 | SmartOpt Trimming
][const_491_651 | SmartOpt Trimming
][const_493_653 | SmartOpt Trimming
][const_494_654 | SmartOpt Trimming
][const_496_656 | SmartOpt Trimming
][const_497_657 | SmartOpt Trimming
][const_499_659 | SmartOpt Trimming
][const_49_98 | SmartOpt Trimming
][const_500_660 | SmartOpt Trimming
][const_502_662 | SmartOpt Trimming
][const_503_663 | SmartOpt Trimming
][const_505_665 | SmartOpt Trimming
][const_506_666 | SmartOpt Trimming
][const_508_668 | SmartOpt Trimming
][const_509_669 | SmartOpt Trimming
][const_50_101 | SmartOpt Trimming
][const_511_671 | SmartOpt Trimming
][const_512_672 | SmartOpt Trimming
][const_514_674 | SmartOpt Trimming
][const_515_675 | SmartOpt Trimming
][const_517_677 | SmartOpt Trimming
][const_518_678 | SmartOpt Trimming
][const_51_102 | SmartOpt Trimming
][const_520_680 | SmartOpt Trimming
][const_521_681 | SmartOpt Trimming
][const_523_683 | SmartOpt Trimming
][const_524_684 | SmartOpt Trimming
][const_526_686 | SmartOpt Trimming
][const_527_687 | SmartOpt Trimming
][const_529_692 | SmartOpt Trimming
][const_52_105 | SmartOpt Trimming
][const_530_693 | SmartOpt Trimming
][const_532_695 | SmartOpt Trimming
][const_533_696 | SmartOpt Trimming
][const_535_698 | SmartOpt Trimming
][const_536_699 | SmartOpt Trimming
][const_538_701 | SmartOpt Trimming
][const_539_702 | SmartOpt Trimming
][const_53_106 | SmartOpt Trimming
][const_541_704 | SmartOpt Trimming
][const_542_705 | SmartOpt Trimming
][const_544_707 | SmartOpt Trimming
][const_545_708 | SmartOpt Trimming
][const_547_710 | SmartOpt Trimming
][const_548_711 | SmartOpt Trimming
][const_54_109 | SmartOpt Trimming
][const_550_713 | SmartOpt Trimming
][const_551_714 | SmartOpt Trimming
][const_553_716 | SmartOpt Trimming
][const_554_717 | SmartOpt Trimming
][const_556_719 | SmartOpt Trimming
][const_557_720 | SmartOpt Trimming
][const_559_722 | SmartOpt Trimming
][const_55_110 | SmartOpt Trimming
][const_560_723 | SmartOpt Trimming
][const_562_725 | SmartOpt Trimming
][const_563_726 | SmartOpt Trimming
][const_565_728 | SmartOpt Trimming
][const_566_729 | SmartOpt Trimming
][const_568_731 | SmartOpt Trimming
][const_569_732 | SmartOpt Trimming
][const_56_111 | SmartOpt Trimming
][const_571_734 | SmartOpt Trimming
][const_572_735 | SmartOpt Trimming
][const_57_112 | SmartOpt Trimming
][const_58_116 | SmartOpt Trimming
][const_59_117 | SmartOpt Trimming
][const_60_118 | SmartOpt Trimming
][const_61_119 | SmartOpt Trimming
][const_62_121 | SmartOpt Trimming
][const_63_122 | SmartOpt Trimming
][const_64_123 | SmartOpt Trimming
][const_65_124 | SmartOpt Trimming
][const_66_125 | SmartOpt Trimming
][const_67_126 | SmartOpt Trimming
][const_68_127 | SmartOpt Trimming
][const_69_128 | SmartOpt Trimming
][const_70_129 | SmartOpt Trimming
][const_71_130 | SmartOpt Trimming
][const_72_131 | SmartOpt Trimming
][const_73_132 | SmartOpt Trimming
][const_74_133 | SmartOpt Trimming
][const_75_134 | SmartOpt Trimming
][const_76_135 | SmartOpt Trimming
][const_77_136 | SmartOpt Trimming
][const_78_138 | SmartOpt Trimming
][const_79_139 | SmartOpt Trimming
][const_80_140 | SmartOpt Trimming
][const_81_141 | SmartOpt Trimming
][const_82_142 | SmartOpt Trimming
][const_83_143 | SmartOpt Trimming
][const_84_144 | SmartOpt Trimming
][const_85_145 | SmartOpt Trimming
][const_86_146 | SmartOpt Trimming
][const_87_147 | SmartOpt Trimming
][const_88_148 | SmartOpt Trimming
][const_89_149 | SmartOpt Trimming
][const_90_150 | SmartOpt Trimming
][const_91_151 | SmartOpt Trimming
][const_92_152 | SmartOpt Trimming
][const_93_153 | SmartOpt Trimming
][const_94_155 | SmartOpt Trimming
][const_95_156 | SmartOpt Trimming
][const_96_157 | SmartOpt Trimming
][const_97_158 | SmartOpt Trimming
][const_98_159 | SmartOpt Trimming
][const_99_160 | SmartOpt Trimming
][100_5 | SmartOpt Trimming
][104_6 | SmartOpt Trimming
][111_7 | SmartOpt Trimming
][118_8 | SmartOpt Trimming
][125_9 | SmartOpt Trimming
][132_10 | SmartOpt Trimming
][139_11 | SmartOpt Trimming
][148_12 | SmartOpt Trimming
][152_13 | SmartOpt Trimming
][156_14 | SmartOpt Trimming
][163_15 | SmartOpt Trimming
][170_16 | SmartOpt Trimming
][177_17 | SmartOpt Trimming
][184_18 | SmartOpt Trimming
][191_19 | SmartOpt Trimming
][205_22 | SmartOpt Trimming
][214_38 | SmartOpt Trimming
][218_43 | SmartOpt Trimming
][222_48 | SmartOpt Trimming
][226_53 | SmartOpt Trimming
][230_58 | SmartOpt Trimming
][234_63 | SmartOpt Trimming
][238_68 | SmartOpt Trimming
][246_81 | SmartOpt Trimming
][250_86 | SmartOpt Trimming
][254_91 | SmartOpt Trimming
][258_96 | SmartOpt Trimming
][262_101 | SmartOpt Trimming
][406_199 | SmartOpt Trimming
][410_204 | SmartOpt Trimming
][414_209 | SmartOpt Trimming
][418_214 | SmartOpt Trimming
][422_219 | SmartOpt Trimming
][426_224 | SmartOpt Trimming
][430_229 | SmartOpt Trimming
][450_246 | SmartOpt Trimming
][454_250 | SmartOpt Trimming
][458_253 | SmartOpt Trimming
][462_257 | SmartOpt Trimming
][466_261 | SmartOpt Trimming
][470_265 | SmartOpt Trimming
][696_419 | SmartOpt Trimming
][701_422 | SmartOpt Trimming
][706_425 | SmartOpt Trimming
][722_437 | SmartOpt Trimming
][726_442 | SmartOpt Trimming
][730_447 | SmartOpt Trimming
][734_451 | SmartOpt Trimming
][807_505 | SmartOpt Trimming
][813_510 | SmartOpt Trimming
][828_521 | SmartOpt Trimming
][887_562 | SmartOpt Trimming
][924_592 | SmartOpt Trimming
][96_4 | SmartOpt Trimming
][const_100_143 | SmartOpt Trimming
][const_101_144 | SmartOpt Trimming
][const_102_146 | SmartOpt Trimming
][const_103_147 | SmartOpt Trimming
][const_104_148 | SmartOpt Trimming
][const_105_149 | SmartOpt Trimming
][const_106_150 | SmartOpt Trimming
][const_107_151 | SmartOpt Trimming
][const_108_152 | SmartOpt Trimming
][const_109_153 | SmartOpt Trimming
][const_110_154 | SmartOpt Trimming
][const_111_155 | SmartOpt Trimming
][const_112_156 | SmartOpt Trimming
][const_113_157 | SmartOpt Trimming
][const_114_158 | SmartOpt Trimming
][const_115_159 | SmartOpt Trimming
][const_116_162 | SmartOpt Trimming
][const_117_163 | SmartOpt Trimming
][const_118_167 | SmartOpt Trimming
][const_119_168 | SmartOpt Trimming
][const_120_170 | SmartOpt Trimming
][const_121_171 | SmartOpt Trimming
][const_122_173 | SmartOpt Trimming
][const_123_174 | SmartOpt Trimming
][const_124_176 | SmartOpt Trimming
][const_125_177 | SmartOpt Trimming
][const_126_180 | SmartOpt Trimming
][const_127_181 | SmartOpt Trimming
][const_128_183 | SmartOpt Trimming
][const_129_184 | SmartOpt Trimming
][const_130_187 | SmartOpt Trimming
][const_131_188 | SmartOpt Trimming
][const_132_191 | SmartOpt Trimming
][const_133_192 | SmartOpt Trimming
][const_134_197 | SmartOpt Trimming
][const_135_198 | SmartOpt Trimming
][const_136_202 | SmartOpt Trimming
][const_137_203 | SmartOpt Trimming
][const_138_207 | SmartOpt Trimming
][const_139_208 | SmartOpt Trimming
][const_140_212 | SmartOpt Trimming
][const_141_213 | SmartOpt Trimming
][const_142_217 | SmartOpt Trimming
][const_143_218 | SmartOpt Trimming
][const_144_222 | SmartOpt Trimming
][const_145_223 | SmartOpt Trimming
][const_146_227 | SmartOpt Trimming
][const_147_228 | SmartOpt Trimming
][const_148_234 | SmartOpt Trimming
][const_150_236 | SmartOpt Trimming
][const_152_240 | SmartOpt Trimming
][const_154_244 | SmartOpt Trimming
][const_156_247 | SmartOpt Trimming
][const_158_251 | SmartOpt Trimming
][const_160_254 | SmartOpt Trimming
][const_162_258 | SmartOpt Trimming
][const_164_262 | SmartOpt Trimming
][const_166_266 | SmartOpt Trimming
][const_168_267 | SmartOpt Trimming
][const_169_268 | SmartOpt Trimming
][const_170_271 | SmartOpt Trimming
][const_171_272 | SmartOpt Trimming
][const_172_273 | SmartOpt Trimming
][const_173_274 | SmartOpt Trimming
][const_174_275 | SmartOpt Trimming
][const_175_276 | SmartOpt Trimming
][const_176_277 | SmartOpt Trimming
][const_177_278 | SmartOpt Trimming
][const_178_279 | SmartOpt Trimming
][const_179_280 | SmartOpt Trimming
][const_180_281 | SmartOpt Trimming
][const_181_282 | SmartOpt Trimming
][const_182_283 | SmartOpt Trimming
][const_183_284 | SmartOpt Trimming
][const_184_285 | SmartOpt Trimming
][const_185_286 | SmartOpt Trimming
][const_187_287 | SmartOpt Trimming
][const_188_288 | SmartOpt Trimming
][const_190_289 | SmartOpt Trimming
][const_191_290 | SmartOpt Trimming
][const_193_291 | SmartOpt Trimming
][const_194_292 | SmartOpt Trimming
][const_196_293 | SmartOpt Trimming
][const_197_294 | SmartOpt Trimming
][const_199_295 | SmartOpt Trimming
][const_200_296 | SmartOpt Trimming
][const_202_297 | SmartOpt Trimming
][const_203_298 | SmartOpt Trimming
][const_205_299 | SmartOpt Trimming
][const_206_300 | SmartOpt Trimming
][const_208_301 | SmartOpt Trimming
][const_209_302 | SmartOpt Trimming
][const_211_303 | SmartOpt Trimming
][const_212_304 | SmartOpt Trimming
][const_214_305 | SmartOpt Trimming
][const_215_306 | SmartOpt Trimming
][const_217_307 | SmartOpt Trimming
][const_218_308 | SmartOpt Trimming
][const_220_309 | SmartOpt Trimming
][const_221_310 | SmartOpt Trimming
][const_223_311 | SmartOpt Trimming
][const_224_312 | SmartOpt Trimming
][const_226_313 | SmartOpt Trimming
][const_227_314 | SmartOpt Trimming
][const_229_315 | SmartOpt Trimming
][const_230_316 | SmartOpt Trimming
][const_232_317 | SmartOpt Trimming
][const_233_318 | SmartOpt Trimming
][const_234_321 | SmartOpt Trimming
][const_235_322 | SmartOpt Trimming
][const_236_323 | SmartOpt Trimming
][const_237_324 | SmartOpt Trimming
][const_238_325 | SmartOpt Trimming
][const_239_326 | SmartOpt Trimming
][const_240_327 | SmartOpt Trimming
][const_241_328 | SmartOpt Trimming
][const_242_329 | SmartOpt Trimming
][const_243_330 | SmartOpt Trimming
][const_244_331 | SmartOpt Trimming
][const_245_332 | SmartOpt Trimming
][const_247_333 | SmartOpt Trimming
][const_248_334 | SmartOpt Trimming
][const_250_335 | SmartOpt Trimming
][const_251_336 | SmartOpt Trimming
][const_253_337 | SmartOpt Trimming
][const_254_338 | SmartOpt Trimming
][const_256_339 | SmartOpt Trimming
][const_257_340 | SmartOpt Trimming
][const_259_341 | SmartOpt Trimming
][const_260_342 | SmartOpt Trimming
][const_262_343 | SmartOpt Trimming
][const_263_344 | SmartOpt Trimming
][const_265_345 | SmartOpt Trimming
][const_266_346 | SmartOpt Trimming
][const_268_347 | SmartOpt Trimming
][const_269_348 | SmartOpt Trimming
][const_271_349 | SmartOpt Trimming
][const_272_350 | SmartOpt Trimming
][const_274_351 | SmartOpt Trimming
][const_275_352 | SmartOpt Trimming
][const_277_353 | SmartOpt Trimming
][const_278_354 | SmartOpt Trimming
][const_280_355 | SmartOpt Trimming
][const_281_356 | SmartOpt Trimming
][const_282_358 | SmartOpt Trimming
][const_283_359 | SmartOpt Trimming
][const_284_360 | SmartOpt Trimming
][const_285_361 | SmartOpt Trimming
][const_286_362 | SmartOpt Trimming
][const_287_363 | SmartOpt Trimming
][const_288_364 | SmartOpt Trimming
][const_289_365 | SmartOpt Trimming
][const_290_366 | SmartOpt Trimming
][const_291_367 | SmartOpt Trimming
][const_292_368 | SmartOpt Trimming
][const_293_369 | SmartOpt Trimming
][const_294_370 | SmartOpt Trimming
][const_295_371 | SmartOpt Trimming
][const_296_374 | SmartOpt Trimming
][const_297_375 | SmartOpt Trimming
][const_298_379 | SmartOpt Trimming
][const_299_380 | SmartOpt Trimming
][const_300_383 | SmartOpt Trimming
][const_301_384 | SmartOpt Trimming
][const_302_387 | SmartOpt Trimming
][const_303_388 | SmartOpt Trimming
][const_304_391 | SmartOpt Trimming
][const_305_392 | SmartOpt Trimming
][const_306_395 | SmartOpt Trimming
][const_307_396 | SmartOpt Trimming
][const_308_399 | SmartOpt Trimming
][const_309_400 | SmartOpt Trimming
][const_310_403 | SmartOpt Trimming
][const_311_404 | SmartOpt Trimming
][const_312_405 | SmartOpt Trimming
][const_313_406 | SmartOpt Trimming
][const_315_407 | SmartOpt Trimming
][const_316_408 | SmartOpt Trimming
][const_318_409 | SmartOpt Trimming
][const_319_410 | SmartOpt Trimming
][const_321_411 | SmartOpt Trimming
][const_322_412 | SmartOpt Trimming
][const_324_414 | SmartOpt Trimming
][const_325_418 | SmartOpt Trimming
][const_326_421 | SmartOpt Trimming
][const_327_424 | SmartOpt Trimming
][const_328_426 | SmartOpt Trimming
][const_329_427 | SmartOpt Trimming
][const_32_20 | SmartOpt Trimming
][const_331_428 | SmartOpt Trimming
][const_332_429 | SmartOpt Trimming
][const_334_430 | SmartOpt Trimming
][const_335_431 | SmartOpt Trimming
][const_337_432 | SmartOpt Trimming
][const_338_433 | SmartOpt Trimming
][const_33_21 | SmartOpt Trimming
][const_340_435 | SmartOpt Trimming
][const_341_436 | SmartOpt Trimming
][const_342_440 | SmartOpt Trimming
][const_343_441 | SmartOpt Trimming
][const_344_445 | SmartOpt Trimming
][const_345_446 | SmartOpt Trimming
][const_346_449 | SmartOpt Trimming
][const_347_450 | SmartOpt Trimming
][const_348_453 | SmartOpt Trimming
][const_349_454 | SmartOpt Trimming
][const_34_23 | SmartOpt Trimming
][const_351_456 | SmartOpt Trimming
][const_352_457 | SmartOpt Trimming
][const_354_458 | SmartOpt Trimming
][const_355_459 | SmartOpt Trimming
][const_356_460 | SmartOpt Trimming
][const_357_461 | SmartOpt Trimming
][const_358_462 | SmartOpt Trimming
][const_359_463 | SmartOpt Trimming
][const_35_24 | SmartOpt Trimming
][const_360_464 | SmartOpt Trimming
][const_361_465 | SmartOpt Trimming
][const_362_466 | SmartOpt Trimming
][const_363_467 | SmartOpt Trimming
][const_364_468 | SmartOpt Trimming
][const_365_469 | SmartOpt Trimming
][const_366_470 | SmartOpt Trimming
][const_367_471 | SmartOpt Trimming
][const_368_472 | SmartOpt Trimming
][const_369_473 | SmartOpt Trimming
][const_36_28 | SmartOpt Trimming
][const_370_479 | SmartOpt Trimming
][const_371_480 | SmartOpt Trimming
][const_372_483 | SmartOpt Trimming
][const_373_484 | SmartOpt Trimming
][const_374_487 | SmartOpt Trimming
][const_375_488 | SmartOpt Trimming
][const_376_490 | SmartOpt Trimming
][const_377_491 | SmartOpt Trimming
][const_378_493 | SmartOpt Trimming
][const_379_494 | SmartOpt Trimming
][const_37_29 | SmartOpt Trimming
][const_380_497 | SmartOpt Trimming
][const_381_498 | SmartOpt Trimming
][const_382_499 | SmartOpt Trimming
][const_383_500 | SmartOpt Trimming
][const_384_503 | SmartOpt Trimming
][const_385_504 | SmartOpt Trimming
][const_386_506 | SmartOpt Trimming
][const_387_507 | SmartOpt Trimming
][const_389_508 | SmartOpt Trimming
][const_38_36 | SmartOpt Trimming
][const_390_509 | SmartOpt Trimming
][const_392_511 | SmartOpt Trimming
][const_393_512 | SmartOpt Trimming
][const_395_513 | SmartOpt Trimming
][const_396_514 | SmartOpt Trimming
][const_398_515 | SmartOpt Trimming
][const_399_516 | SmartOpt Trimming
][const_39_37 | SmartOpt Trimming
][const_401_517 | SmartOpt Trimming
][const_402_518 | SmartOpt Trimming
][const_404_519 | SmartOpt Trimming
][const_405_520 | SmartOpt Trimming
][const_407_522 | SmartOpt Trimming
][const_408_523 | SmartOpt Trimming
][const_40_41 | SmartOpt Trimming
][const_411_524 | SmartOpt Trimming
][const_413_527 | SmartOpt Trimming
][const_415_530 | SmartOpt Trimming
][const_417_532 | SmartOpt Trimming
][const_418_533 | SmartOpt Trimming
][const_419_534 | SmartOpt Trimming
][const_41_42 | SmartOpt Trimming
][const_421_535 | SmartOpt Trimming
][const_422_536 | SmartOpt Trimming
][const_424_537 | SmartOpt Trimming
][const_425_538 | SmartOpt Trimming
][const_427_539 | SmartOpt Trimming
][const_428_540 | SmartOpt Trimming
][const_42_46 | SmartOpt Trimming
][const_430_541 | SmartOpt Trimming
][const_431_542 | SmartOpt Trimming
][const_433_543 | SmartOpt Trimming
][const_434_544 | SmartOpt Trimming
][const_436_545 | SmartOpt Trimming
][const_437_546 | SmartOpt Trimming
][const_439_547 | SmartOpt Trimming
][const_43_47 | SmartOpt Trimming
][const_440_548 | SmartOpt Trimming
][const_442_549 | SmartOpt Trimming
][const_443_550 | SmartOpt Trimming
][const_445_553 | SmartOpt Trimming
][const_446_554 | SmartOpt Trimming
][const_448_557 | SmartOpt Trimming
][const_449_558 | SmartOpt Trimming
][const_44_51 | SmartOpt Trimming
][const_451_560 | SmartOpt Trimming
][const_452_561 | SmartOpt Trimming
][const_455_563 | SmartOpt Trimming
][const_456_565 | SmartOpt Trimming
][const_457_566 | SmartOpt Trimming
][const_459_568 | SmartOpt Trimming
][const_45_52 | SmartOpt Trimming
][const_460_569 | SmartOpt Trimming
][const_462_570 | SmartOpt Trimming
][const_463_571 | SmartOpt Trimming
][const_464_572 | SmartOpt Trimming
][const_465_573 | SmartOpt Trimming
][const_466_574 | SmartOpt Trimming
][const_467_575 | SmartOpt Trimming
][const_469_576 | SmartOpt Trimming
][const_46_56 | SmartOpt Trimming
][const_470_577 | SmartOpt Trimming
][const_472_579 | SmartOpt Trimming
][const_473_580 | SmartOpt Trimming
][const_475_582 | SmartOpt Trimming
][const_476_583 | SmartOpt Trimming
][const_478_586 | SmartOpt Trimming
][const_479_587 | SmartOpt Trimming
][const_47_57 | SmartOpt Trimming
][const_481_590 | SmartOpt Trimming
][const_482_591 | SmartOpt Trimming
][const_484_593 | SmartOpt Trimming
][const_485_594 | SmartOpt Trimming
][const_487_597 | SmartOpt Trimming
][const_488_598 | SmartOpt Trimming
][const_48_61 | SmartOpt Trimming
][const_490_601 | SmartOpt Trimming
][const_491_602 | SmartOpt Trimming
][const_493_608 | SmartOpt Trimming
][const_494_609 | SmartOpt Trimming
][const_496_611 | SmartOpt Trimming
][const_497_612 | SmartOpt Trimming
][const_499_614 | SmartOpt Trimming
][const_49_62 | SmartOpt Trimming
][const_500_615 | SmartOpt Trimming
][const_502_617 | SmartOpt Trimming
][const_503_618 | SmartOpt Trimming
][const_505_620 | SmartOpt Trimming
][const_506_621 | SmartOpt Trimming
][const_508_623 | SmartOpt Trimming
][const_509_624 | SmartOpt Trimming
][const_50_66 | SmartOpt Trimming
][const_511_626 | SmartOpt Trimming
][const_512_627 | SmartOpt Trimming
][const_514_629 | SmartOpt Trimming
][const_515_630 | SmartOpt Trimming
][const_517_635 | SmartOpt Trimming
][const_518_636 | SmartOpt Trimming
][const_51_67 | SmartOpt Trimming
][const_520_638 | SmartOpt Trimming
][const_521_639 | SmartOpt Trimming
][const_523_641 | SmartOpt Trimming
][const_524_642 | SmartOpt Trimming
][const_526_644 | SmartOpt Trimming
][const_527_645 | SmartOpt Trimming
][const_529_647 | SmartOpt Trimming
][const_52_71 | SmartOpt Trimming
][const_530_648 | SmartOpt Trimming
][const_532_650 | SmartOpt Trimming
][const_533_651 | SmartOpt Trimming
][const_535_653 | SmartOpt Trimming
][const_536_654 | SmartOpt Trimming
][const_538_656 | SmartOpt Trimming
][const_539_657 | SmartOpt Trimming
][const_53_72 | SmartOpt Trimming
][const_54_79 | SmartOpt Trimming
][const_55_80 | SmartOpt Trimming
][const_56_84 | SmartOpt Trimming
][const_57_85 | SmartOpt Trimming
][const_58_89 | SmartOpt Trimming
][const_59_90 | SmartOpt Trimming
][const_60_94 | SmartOpt Trimming
][const_61_95 | SmartOpt Trimming
][const_62_99 | SmartOpt Trimming
][const_63_100 | SmartOpt Trimming
][const_64_102 | SmartOpt Trimming
][const_65_103 | SmartOpt Trimming
][const_66_107 | SmartOpt Trimming
][const_67_108 | SmartOpt Trimming
][const_68_109 | SmartOpt Trimming
][const_69_110 | SmartOpt Trimming
][const_70_112 | SmartOpt Trimming
][const_71_113 | SmartOpt Trimming
][const_72_114 | SmartOpt Trimming
][const_73_115 | SmartOpt Trimming
][const_74_116 | SmartOpt Trimming
][const_75_117 | SmartOpt Trimming
][const_76_118 | SmartOpt Trimming
][const_77_119 | SmartOpt Trimming
][const_78_120 | SmartOpt Trimming
][const_79_121 | SmartOpt Trimming
][const_80_122 | SmartOpt Trimming
][const_81_123 | SmartOpt Trimming
][const_82_124 | SmartOpt Trimming
][const_83_125 | SmartOpt Trimming
][const_84_126 | SmartOpt Trimming
][const_85_127 | SmartOpt Trimming
][const_86_129 | SmartOpt Trimming
][const_87_130 | SmartOpt Trimming
][const_88_131 | SmartOpt Trimming
][const_89_132 | SmartOpt Trimming
][const_90_133 | SmartOpt Trimming
][const_91_134 | SmartOpt Trimming
][const_92_135 | SmartOpt Trimming
][const_93_136 | SmartOpt Trimming
][const_94_137 | SmartOpt Trimming
][const_95_138 | SmartOpt Trimming
][const_96_139 | SmartOpt Trimming
][const_97_140 | SmartOpt Trimming
][const_98_141 | SmartOpt Trimming
][const_99_142 | SmartOpt Trimming
 
 
Flops added for Enable Generation
/spi_master_slave/trunk/syn/spi_test_ct.wcfg
3,7 → 3,7
<wave_state>
</wave_state>
<db_ref_list>
<db_ref path="D:/Dropbox/VHDL_training/ISE_projects/spi_ms_atlys_ct/testbench_isim_translate.wdb" id="1" type="auto">
<db_ref path="C:/dropbox/Dropbox/VHDL_training/OpenCores/spi_master_slave/spi_master_slave/trunk/syn/testbench_isim_par.wdb" id="1" type="auto">
<top_modules>
<top_module name="numeric_std" />
<top_module name="std_logic_1164" />
16,7 → 16,7
</top_modules>
</db_ref>
</db_ref_list>
<WVObjectSize size="21" />
<WVObjectSize size="22" />
<wvobject fp_name="/testbench/dbg" type="array" db_ref_id="1">
<obj_property name="ElementShortName">dbg[11:0]</obj_property>
<obj_property name="ObjectShortName">dbg[11:0]</obj_property>
26,6 → 26,10
<obj_property name="ElementShortName">sysclk</obj_property>
<obj_property name="ObjectShortName">sysclk</obj_property>
</wvobject>
<wvobject fp_name="/testbench/pclk" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">pclk</obj_property>
<obj_property name="ObjectShortName">pclk</obj_property>
</wvobject>
<wvobject fp_name="/testbench/sw_data" type="array" db_ref_id="1">
<obj_property name="ElementShortName">sw_data[7:0]</obj_property>
<obj_property name="ObjectShortName">sw_data[7:0]</obj_property>
/spi_master_slave/trunk/syn/spi_master_atlys_top.pcf
1,8 → 1,14
//! **************************************************************************
// Written by: Map O.40d on Mon Aug 29 00:08:35 2011
// Written by: Map O.40d on Thu Sep 01 13:07:27 2011
//! **************************************************************************
 
SCHEMATIC START;
COMP "dbg_o<10>" LOCATE = SITE "V13" LEVEL 1;
COMP "dbg_o<11>" LOCATE = SITE "U13" LEVEL 1;
COMP "spi_miso_o" LOCATE = SITE "V15" LEVEL 1;
COMP "spi_mosi_o" LOCATE = SITE "U15" LEVEL 1;
COMP "sw_i<0>" LOCATE = SITE "A10" LEVEL 1;
COMP "sw_i<1>" LOCATE = SITE "D14" LEVEL 1;
COMP "sw_i<2>" LOCATE = SITE "C14" LEVEL 1;
COMP "sw_i<3>" LOCATE = SITE "P15" LEVEL 1;
COMP "sw_i<4>" LOCATE = SITE "P12" LEVEL 1;
38,17 → 44,10
COMP "led_o<5>" LOCATE = SITE "D4" LEVEL 1;
COMP "led_o<6>" LOCATE = SITE "P16" LEVEL 1;
COMP "led_o<7>" LOCATE = SITE "N12" LEVEL 1;
COMP "gclk_i" LOCATE = SITE "L15" LEVEL 1;
COMP "spi_sck_o" LOCATE = SITE "V16" LEVEL 1;
COMP "s_state_o<0>" LOCATE = SITE "V9" LEVEL 1;
COMP "s_state_o<1>" LOCATE = SITE "T9" LEVEL 1;
COMP "s_state_o<2>" LOCATE = SITE "V4" LEVEL 1;
COMP "s_state_o<3>" LOCATE = SITE "T4" LEVEL 1;
COMP "dbg_o<10>" LOCATE = SITE "V13" LEVEL 1;
COMP "dbg_o<11>" LOCATE = SITE "U13" LEVEL 1;
COMP "spi_miso_o" LOCATE = SITE "V15" LEVEL 1;
COMP "spi_mosi_o" LOCATE = SITE "U15" LEVEL 1;
COMP "sw_i<0>" LOCATE = SITE "A10" LEVEL 1;
COMP "sw_i<1>" LOCATE = SITE "D14" LEVEL 1;
SCHEMATIC END;
 
/spi_master_slave/trunk/syn/spi_ms_atlys.xise
35,7 → 35,7
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="2"/>
<association xil_pn:name="PostMapSimulation" xil_pn:seqID="67"/>
<association xil_pn:name="PostRouteSimulation" xil_pn:seqID="2"/>
<association xil_pn:name="PostTranslateSimulation" xil_pn:seqID="2"/>
<association xil_pn:name="PostTranslateSimulation" xil_pn:seqID="0"/>
</file>
</files>
 
160,7 → 160,7
<property xil_pn:name="Ignore User Timing Constraints Par" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Implementation Top" xil_pn:value="Architecture|spi_master_atlys_top|behavioral" xil_pn:valueState="non-default"/>
<property xil_pn:name="Implementation Top File" xil_pn:value="spi_master_atlys_top.vhd" xil_pn:valueState="non-default"/>
<property xil_pn:name="Implementation Top Instance Path" xil_pn:value="/spi_master_atlys_top" xil_pn:valueState="non-default"/>
<property xil_pn:name="Implementation Top Instance Path" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Include 'uselib Directive in Verilog File" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Include SIMPRIM Models in Verilog File" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Include UNISIM Models in Verilog File" xil_pn:value="false" xil_pn:valueState="default"/>
363,7 → 363,7
<property xil_pn:name="PROP_PostMapSimTop" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="PROP_PostParSimTop" xil_pn:value="Architecture|testbench|behavior" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_PostSynthSimTop" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="PROP_PostXlateSimTop" xil_pn:value="Architecture|testbench|behavior" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_PostXlateSimTop" xil_pn:value="Architecture|spi_master_atlys_top|Structure" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_PreSynthesis" xil_pn:value="PreSynthesis" xil_pn:valueState="default"/>
<property xil_pn:name="PROP_intProjectCreationTimestamp" xil_pn:value="2011-07-07T09:55:20" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_intWbtProjectID" xil_pn:value="2C5BE631B69F48AB8C2F24035AF7A13B" xil_pn:valueState="non-default"/>
/spi_master_slave/trunk/syn/par_usage_statistics.html
1,32 → 1,32
<TABLE BORDER CELLSPACING=0 WIDTH='100%'>
<xtag-section name="ParStatistics">
<TR ALIGN=CENTER BGCOLOR='#99CCFF'><TD COLSPAN=1><B>Par Statistics</B></TD></TR>
<TR><TD><xtag-par-property-name>Total Non-vccgnd Signals</xtag-par-property-name>=<xtag-par-property-value>335</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Total Non-vccgnd Design Pins</xtag-par-property-name>=<xtag-par-property-value>1055</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Total Non-vccgnd Conns</xtag-par-property-name>=<xtag-par-property-value>1055</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Total Non-vccgnd Timing Constrained Conns</xtag-par-property-name>=<xtag-par-property-value>941</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Total Non-vccgnd Signals</xtag-par-property-name>=<xtag-par-property-value>306</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Total Non-vccgnd Design Pins</xtag-par-property-name>=<xtag-par-property-value>851</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Total Non-vccgnd Conns</xtag-par-property-name>=<xtag-par-property-value>851</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Total Non-vccgnd Timing Constrained Conns</xtag-par-property-name>=<xtag-par-property-value>711</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Phase 1 CPU</xtag-par-property-name>=<xtag-par-property-value>5.3 sec</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Phase 2 CPU</xtag-par-property-name>=<xtag-par-property-value>6.7 sec</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Phase 3 CPU</xtag-par-property-name>=<xtag-par-property-value>8.0 sec</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Phase 4 CPU</xtag-par-property-name>=<xtag-par-property-value>9.3 sec</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Phase 5 CPU</xtag-par-property-name>=<xtag-par-property-value>9.7 sec</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Phase 6 CPU</xtag-par-property-name>=<xtag-par-property-value>9.8 sec</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Phase 7 CPU</xtag-par-property-name>=<xtag-par-property-value>9.8 sec</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Phase 8 CPU</xtag-par-property-name>=<xtag-par-property-value>9.8 sec</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Phase 9 CPU</xtag-par-property-name>=<xtag-par-property-value>9.8 sec</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Phase 10 CPU</xtag-par-property-name>=<xtag-par-property-value>9.8 sec</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>AvgWirelenPerPin Fanout 1</xtag-par-property-name>=<xtag-par-property-value>8.0</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Phase 2 CPU</xtag-par-property-name>=<xtag-par-property-value>6.3 sec</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Phase 3 CPU</xtag-par-property-name>=<xtag-par-property-value>7.6 sec</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Phase 4 CPU</xtag-par-property-name>=<xtag-par-property-value>9.0 sec</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Phase 5 CPU</xtag-par-property-name>=<xtag-par-property-value>9.4 sec</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Phase 6 CPU</xtag-par-property-name>=<xtag-par-property-value>9.4 sec</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Phase 7 CPU</xtag-par-property-name>=<xtag-par-property-value>9.4 sec</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Phase 8 CPU</xtag-par-property-name>=<xtag-par-property-value>9.4 sec</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Phase 9 CPU</xtag-par-property-name>=<xtag-par-property-value>9.4 sec</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>Phase 10 CPU</xtag-par-property-name>=<xtag-par-property-value>9.5 sec</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>AvgWirelenPerPin Fanout 1</xtag-par-property-name>=<xtag-par-property-value>10.0</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>AvgWirelenPerPin Fanout 2</xtag-par-property-name>=<xtag-par-property-value>3.5</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>AvgWirelenPerPin Fanout 3</xtag-par-property-name>=<xtag-par-property-value>4.3</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>AvgWirelenPerPin Fanout 4</xtag-par-property-name>=<xtag-par-property-value>8.8</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>AvgWirelenPerPin Fanout 10</xtag-par-property-name>=<xtag-par-property-value>2.9</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>AvgWirelenPerPin Fanout 50</xtag-par-property-name>=<xtag-par-property-value>2.5</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>AvgWirelenPerPin Fanout 100</xtag-par-property-name>=<xtag-par-property-value>28.8</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>AvgWirelenPerPin Fanout 3</xtag-par-property-name>=<xtag-par-property-value>5.3</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>AvgWirelenPerPin Fanout 4</xtag-par-property-name>=<xtag-par-property-value>7.3</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>AvgWirelenPerPin Fanout 10</xtag-par-property-name>=<xtag-par-property-value>2.6</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>AvgWirelenPerPin Fanout 50</xtag-par-property-name>=<xtag-par-property-value>3.0</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>AvgWirelenPerPin Fanout 100</xtag-par-property-name>=<xtag-par-property-value>17.8</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>AvgWirelenPerPin Fanout 500</xtag-par-property-name>=<xtag-par-property-value>0.0</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>AvgWirelenPerPin Fanout 5000</xtag-par-property-name>=<xtag-par-property-value>0.0</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>AvgWirelenPerPin Fanout 20000</xtag-par-property-name>=<xtag-par-property-value>0.0</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>AvgWirelenPerPin Fanout 50000</xtag-par-property-name>=<xtag-par-property-value>0.0</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>AvgWirelenPerPin Fanout 100000</xtag-par-property-name>=<xtag-par-property-value>0.0</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>IRR Gamma</xtag-par-property-name>=<xtag-par-property-value>1.0238</xtag-par-property-value></TD></TR>
<TR><TD><xtag-par-property-name>IRR Gamma</xtag-par-property-name>=<xtag-par-property-value>1.0202</xtag-par-property-value></TD></TR>
</xtag-section>
</TABLE>
/spi_master_slave/trunk/syn/spi_master_atlys_top.par
1,7 → 1,7
Release 13.1 par O.40d (nt)
Copyright (c) 1995-2011 Xilinx, Inc. All rights reserved.
 
DEVELOP-W7:: Mon Aug 29 00:08:38 2011
DEVELOP-W7:: Thu Sep 01 13:07:30 2011
 
par -w -intstyle ise -ol high -xe n -mt 4 spi_master_atlys_top_map.ncd
spi_master_atlys_top.ncd spi_master_atlys_top.pcf
27,16 → 27,16
Device Utilization Summary:
 
Slice Logic Utilization:
Number of Slice Registers: 224 out of 54,576 1%
Number used as Flip Flops: 224
Number of Slice Registers: 210 out of 54,576 1%
Number used as Flip Flops: 210
Number used as Latches: 0
Number used as Latch-thrus: 0
Number used as AND/OR logics: 0
Number of Slice LUTs: 177 out of 27,288 1%
Number used as logic: 167 out of 27,288 1%
Number using O6 output only: 112
Number using O5 output only: 28
Number using O5 and O6: 27
Number of Slice LUTs: 143 out of 27,288 1%
Number used as logic: 129 out of 27,288 1%
Number using O6 output only: 79
Number using O5 output only: 15
Number using O5 and O6: 35
Number used as ROM: 0
Number used as Memory: 4 out of 6,408 1%
Number used as Dual Port RAM: 0
45,17 → 45,17
Number using O6 output only: 4
Number using O5 output only: 0
Number using O5 and O6: 0
Number used exclusively as route-thrus: 6
Number with same-slice register load: 4
Number used exclusively as route-thrus: 10
Number with same-slice register load: 8
Number with same-slice carry load: 2
Number with other load: 0
 
Slice Logic Distribution:
Number of occupied Slices: 102 out of 6,822 1%
Number of LUT Flip Flop pairs used: 272
Number with an unused Flip Flop: 64 out of 272 23%
Number with an unused LUT: 95 out of 272 34%
Number of fully used LUT-FF pairs: 113 out of 272 41%
Number of occupied Slices: 91 out of 6,822 1%
Number of LUT Flip Flop pairs used: 231
Number with an unused Flip Flop: 46 out of 231 19%
Number with an unused LUT: 88 out of 231 38%
Number of fully used LUT-FF pairs: 97 out of 231 41%
Number of slice register sites lost
to control set restrictions: 0 out of 54,576 0%
 
66,8 → 66,8
over-mapped for a non-slice resource or if Placement fails.
 
IO Utilization:
Number of bonded IOBs: 63 out of 218 28%
Number of LOCed IOBs: 47 out of 63 74%
Number of bonded IOBs: 64 out of 218 29%
Number of LOCed IOBs: 46 out of 64 71%
 
Specific Feature Utilization:
Number of RAMB16BWERs: 0 out of 116 0%
74,8 → 74,8
Number of RAMB8BWERs: 0 out of 232 0%
Number of BUFIO2/BUFIO2_2CLKs: 0 out of 32 0%
Number of BUFIO2FB/BUFIO2FB_2CLKs: 0 out of 32 0%
Number of BUFG/BUFGMUXs: 2 out of 16 12%
Number used as BUFGs: 2
Number of BUFG/BUFGMUXs: 3 out of 16 18%
Number used as BUFGs: 3
Number used as BUFGMUX: 0
Number of DCM/DCM_CLKGENs: 0 out of 8 0%
Number of ILOGIC2/ISERDES2s: 0 out of 376 0%
106,13 → 106,13
Starting Router
 
 
Phase 1 : 1133 unrouted; REAL time: 5 secs
Phase 1 : 923 unrouted; REAL time: 5 secs
 
Phase 2 : 972 unrouted; REAL time: 6 secs
Phase 2 : 776 unrouted; REAL time: 6 secs
 
Phase 3 : 282 unrouted; REAL time: 7 secs
Phase 3 : 205 unrouted; REAL time: 7 secs
 
Phase 4 : 282 unrouted; (Par is working to improve performance) REAL time: 9 secs
Phase 4 : 205 unrouted; (Par is working to improve performance) REAL time: 8 secs
 
Updating file: spi_master_atlys_top.ncd with current fully routed design.
 
148,12 → 148,15
Constraint | Check | Worst Case | Best Case | Timing | Timing
| | Slack | Achievable | Errors | Score
----------------------------------------------------------------------------------------------------------
Autotimespec constraint for clock net gcl | SETUP | N/A| 4.888ns| N/A| 0
k_i_BUFGP | HOLD | 0.378ns| | 0| 0
Autotimespec constraint for clock net pcl | SETUP | N/A| 5.916ns| N/A| 0
k_i_BUFGP | HOLD | 0.264ns| | 0| 0
----------------------------------------------------------------------------------------------------------
Autotimespec constraint for clock net Ins | SETUP | N/A| 3.948ns| N/A| 0
t_spi_master_port/spi_clk_reg_BUFG | HOLD | 0.459ns| | 0| 0
Autotimespec constraint for clock net Ins | SETUP | N/A| 3.959ns| N/A| 0
t_spi_master_port/spi_clk_reg_BUFG | HOLD | 0.439ns| | 0| 0
----------------------------------------------------------------------------------------------------------
Autotimespec constraint for clock net scl | SETUP | N/A| 3.391ns| N/A| 0
k_i_BUFGP | HOLD | 0.513ns| | 0| 0
----------------------------------------------------------------------------------------------------------
 
 
All constraints were met.
168,10 → 171,10
 
All signals are completely routed.
 
Total REAL time to PAR completion: 10 secs
Total CPU time to PAR completion: 10 secs
Total REAL time to PAR completion: 9 secs
Total CPU time to PAR completion: 9 secs
 
Peak Memory Usage: 264 MB
Peak Memory Usage: 268 MB
 
Placer: Placement generated during map.
Routing: Completed - No errors found.
/spi_master_slave/trunk/syn/spi_ms_atlys.gise
47,8 → 47,8
<file xil_pn:branch="PostRouteSimulation" xil_pn:fileType="FILE_NETGEN_REPORT" xil_pn:name="netgen/par/spi_master_atlys_top_timesim.nlf"/>
<file xil_pn:branch="PostRouteSimulation" xil_pn:fileType="FILE_SDF" xil_pn:name="netgen/par/spi_master_atlys_top_timesim.sdf"/>
<file xil_pn:branch="PostRouteSimulation" xil_pn:fileType="FILE_VHDL" xil_pn:name="netgen/par/spi_master_atlys_top_timesim.vhd"/>
<file xil_pn:branch="PostSynthSim" xil_pn:fileType="FILE_NETGEN_REPORT" xil_pn:name="netgen/synthesis/spi_master_atlys_top_synthesis.nlf"/>
<file xil_pn:branch="PostSynthSim" xil_pn:fileType="FILE_VHDL" xil_pn:name="netgen/synthesis/spi_master_atlys_top_synthesis.vhd"/>
<file xil_pn:fileType="FILE_NETGEN_REPORT" xil_pn:name="netgen/synthesis/spi_master_atlys_top_synthesis.nlf"/>
<file xil_pn:fileType="FILE_VHDL" xil_pn:name="netgen/synthesis/spi_master_atlys_top_synthesis.vhd"/>
<file xil_pn:branch="PostTranslateSimulation" xil_pn:fileType="FILE_NETGEN_REPORT" xil_pn:name="netgen/translate/spi_master_atlys_top_translate.nlf"/>
<file xil_pn:branch="PostTranslateSimulation" xil_pn:fileType="FILE_VHDL" xil_pn:name="netgen/translate/spi_master_atlys_top_translate.vhd"/>
<file xil_pn:branch="Implementation" xil_pn:fileType="FILE_BITGEN_REPORT" xil_pn:name="spi_master_atlys_top.bgn" xil_pn:subbranch="FPGAConfiguration"/>
122,7 → 122,7
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
</transform>
<transform xil_pn:end_ts="1314583834" xil_pn:in_ck="4343194839995565815" xil_pn:name="TRAN_copyAbstractToPostAbstractSimulation" xil_pn:start_ts="1314583834">
<transform xil_pn:end_ts="1314889672" xil_pn:in_ck="4343194839995565815" xil_pn:name="TRAN_copyAbstractToPostAbstractSimulation" xil_pn:start_ts="1314889672">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<status xil_pn:value="OutOfDateForInputs"/>
159,6 → 159,7
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<status xil_pn:value="OutOfDateForInputs"/>
<status xil_pn:value="OutOfDateForProperties"/>
<status xil_pn:value="OutOfDateForPredecessor"/>
<status xil_pn:value="OutOfDateForOutputs"/>
<status xil_pn:value="InputChanged"/>
172,6 → 173,7
<transform xil_pn:end_ts="1314545598" xil_pn:in_ck="7130759491340027311" xil_pn:name="TRAN_ISimulateBehavioralModel" xil_pn:prop_ck="-5414671575160791934" xil_pn:start_ts="1314545598">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<status xil_pn:value="OutOfDateForProperties"/>
<status xil_pn:value="OutOfDateForPredecessor"/>
<status xil_pn:value="OutOfDateForOutputs"/>
<status xil_pn:value="OutputChanged"/>
206,7 → 208,7
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
</transform>
<transform xil_pn:end_ts="1314587294" xil_pn:in_ck="-8247761554522826671" xil_pn:name="TRANEXT_xstsynthesize_spartan6" xil_pn:prop_ck="-8195216592062898977" xil_pn:start_ts="1314587285">
<transform xil_pn:end_ts="1314893227" xil_pn:in_ck="-8247761554522826671" xil_pn:name="TRANEXT_xstsynthesize_spartan6" xil_pn:prop_ck="-8195216592062898977" xil_pn:start_ts="1314893218">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="WarningsGenerated"/>
<status xil_pn:value="ReadyToRun"/>
226,11 → 228,11
<outfile xil_pn:name="webtalk_pn.xml"/>
<outfile xil_pn:name="xst"/>
</transform>
<transform xil_pn:end_ts="1314587294" xil_pn:in_ck="-6344801126424831697" xil_pn:name="TRAN_compileBCD2" xil_pn:prop_ck="-4068456177828066131" xil_pn:start_ts="1314587294">
<transform xil_pn:end_ts="1314889842" xil_pn:in_ck="-6344801126424831697" xil_pn:name="TRAN_compileBCD2" xil_pn:prop_ck="-4068456177828066131" xil_pn:start_ts="1314889842">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
</transform>
<transform xil_pn:end_ts="1314587297" xil_pn:in_ck="-2449764723691034422" xil_pn:name="TRANEXT_ngdbuild_FPGA" xil_pn:prop_ck="-177710677611610831" xil_pn:start_ts="1314587294">
<transform xil_pn:end_ts="1314893230" xil_pn:in_ck="-2449764723691034422" xil_pn:name="TRANEXT_ngdbuild_FPGA" xil_pn:prop_ck="-177710677611610831" xil_pn:start_ts="1314893227">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<outfile xil_pn:name="_ngo"/>
239,7 → 241,7
<outfile xil_pn:name="spi_master_atlys_top.ngd"/>
<outfile xil_pn:name="spi_master_atlys_top_ngdbuild.xrpt"/>
</transform>
<transform xil_pn:end_ts="1314587317" xil_pn:in_ck="-2449764723691034421" xil_pn:name="TRANEXT_map_spartan6" xil_pn:prop_ck="-1658770934691434356" xil_pn:start_ts="1314587297">
<transform xil_pn:end_ts="1314893249" xil_pn:in_ck="-2449764723691034421" xil_pn:name="TRANEXT_map_spartan6" xil_pn:prop_ck="-1658770934691434356" xil_pn:start_ts="1314893230">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<outfile xil_pn:name="_xmsgs/map.xmsgs"/>
253,7 → 255,7
<outfile xil_pn:name="spi_master_atlys_top_summary.xml"/>
<outfile xil_pn:name="spi_master_atlys_top_usage.xml"/>
</transform>
<transform xil_pn:end_ts="1314587335" xil_pn:in_ck="5633518429974504804" xil_pn:name="TRANEXT_par_spartan6" xil_pn:prop_ck="7846039340612803429" xil_pn:start_ts="1314587317">
<transform xil_pn:end_ts="1314893267" xil_pn:in_ck="5633518429974504804" xil_pn:name="TRANEXT_par_spartan6" xil_pn:prop_ck="7846039340612803429" xil_pn:start_ts="1314893249">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="WarningsGenerated"/>
<status xil_pn:value="ReadyToRun"/>
271,7 → 273,11
<transform xil_pn:end_ts="1314587493" xil_pn:in_ck="-5988982649231273448" xil_pn:name="TRANEXT_bitFile_spartan6" xil_pn:prop_ck="7135157351517842893" xil_pn:start_ts="1314587477">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<outfile xil_pn:name="_xmsgs/bitgen.xmsgs"/>
<status xil_pn:value="OutOfDateForInputs"/>
<status xil_pn:value="OutOfDateForOutputs"/>
<status xil_pn:value="InputChanged"/>
<status xil_pn:value="OutputChanged"/>
<status xil_pn:value="OutputRemoved"/>
<outfile xil_pn:name="spi_master_atlys_top.bgn"/>
<outfile xil_pn:name="spi_master_atlys_top.bit"/>
<outfile xil_pn:name="spi_master_atlys_top.drc"/>
280,35 → 286,25
<outfile xil_pn:name="webtalk.log"/>
<outfile xil_pn:name="webtalk_pn.xml"/>
</transform>
<transform xil_pn:end_ts="1314586528" xil_pn:in_ck="-5988982649231273448" xil_pn:name="TRAN_postParSimModel" xil_pn:prop_ck="5598892574118791338" xil_pn:start_ts="1314586521">
<transform xil_pn:end_ts="1314893294" xil_pn:in_ck="-5988982649231273448" xil_pn:name="TRAN_postParSimModel" xil_pn:prop_ck="5598892574118791338" xil_pn:start_ts="1314893286">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<status xil_pn:value="OutOfDateForInputs"/>
<status xil_pn:value="InputChanged"/>
<outfile xil_pn:name="netgen"/>
<outfile xil_pn:name="netgen/par/spi_master_atlys_top_timesim.nlf"/>
<outfile xil_pn:name="netgen/par/spi_master_atlys_top_timesim.sdf"/>
<outfile xil_pn:name="netgen/par/spi_master_atlys_top_timesim.vhd"/>
</transform>
<transform xil_pn:end_ts="1314584667" xil_pn:in_ck="-7029858421675272663" xil_pn:name="TRAN_copyPost-ParAbstractToPreSimulation" xil_pn:start_ts="1314584667">
<transform xil_pn:end_ts="1314893938" xil_pn:in_ck="-7029858421675272663" xil_pn:name="TRAN_copyPost-ParAbstractToPreSimulation" xil_pn:start_ts="1314893938">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<status xil_pn:value="OutOfDateForInputs"/>
<status xil_pn:value="OutOfDateForPredecessor"/>
<status xil_pn:value="OutOfDateForOutputs"/>
<status xil_pn:value="InputChanged"/>
<status xil_pn:value="OutputChanged"/>
<outfile xil_pn:name="netgen/par/spi_master_atlys_top_timesim.sdf"/>
<outfile xil_pn:name="netgen/par/spi_master_atlys_top_timesim.vhd"/>
<outfile xil_pn:name="spi_master_atlys_test.vhd"/>
</transform>
<transform xil_pn:end_ts="1314584674" xil_pn:in_ck="9156795390127265392" xil_pn:name="TRAN_ISimulatePostPlace&amp;RouteModelRunFuse" xil_pn:prop_ck="4831401045093024940" xil_pn:start_ts="1314584667">
<transform xil_pn:end_ts="1314893944" xil_pn:in_ck="9156795390127265392" xil_pn:name="TRAN_ISimulatePostPlace&amp;RouteModelRunFuse" xil_pn:prop_ck="4831401045093024940" xil_pn:start_ts="1314893938">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<status xil_pn:value="OutOfDateForInputs"/>
<status xil_pn:value="OutOfDateForPredecessor"/>
<status xil_pn:value="OutOfDateForOutputs"/>
<status xil_pn:value="InputChanged"/>
<status xil_pn:value="OutputChanged"/>
<outfile xil_pn:name="fuse.log"/>
<outfile xil_pn:name="isim"/>
317,10 → 313,9
<outfile xil_pn:name="testbench_par.prj"/>
<outfile xil_pn:name="xilinxsim.ini"/>
</transform>
<transform xil_pn:end_ts="1314584674" xil_pn:in_ck="7130759509275896515" xil_pn:name="TRAN_ISimulatePostPlace&amp;RouteModel" xil_pn:prop_ck="-3956543683666394319" xil_pn:start_ts="1314584674">
<transform xil_pn:end_ts="1314893945" xil_pn:in_ck="7130759509275896515" xil_pn:name="TRAN_ISimulatePostPlace&amp;RouteModel" xil_pn:prop_ck="-3956543683666394319" xil_pn:start_ts="1314893944">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<status xil_pn:value="OutOfDateForPredecessor"/>
<status xil_pn:value="OutOfDateForOutputs"/>
<status xil_pn:value="OutputChanged"/>
<outfile xil_pn:name="isim.cmd"/>
327,7 → 322,7
<outfile xil_pn:name="isim.log"/>
<outfile xil_pn:name="testbench_isim_par.wdb"/>
</transform>
<transform xil_pn:end_ts="1314587335" xil_pn:in_ck="-2449764723691034553" xil_pn:name="TRAN_postRouteTrce" xil_pn:prop_ck="445577401284416184" xil_pn:start_ts="1314587329">
<transform xil_pn:end_ts="1314893267" xil_pn:in_ck="-2449764723691034553" xil_pn:name="TRAN_postRouteTrce" xil_pn:prop_ck="445577401284416184" xil_pn:start_ts="1314893261">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<outfile xil_pn:name="_xmsgs/trce.xmsgs"/>
339,22 → 334,22
<status xil_pn:value="WarningsGenerated"/>
<status xil_pn:value="ReadyToRun"/>
<status xil_pn:value="OutOfDateForInputs"/>
<status xil_pn:value="OutOfDateForOutputs"/>
<status xil_pn:value="InputChanged"/>
<outfile xil_pn:name="netgen"/>
<outfile xil_pn:name="netgen/map/spi_master_atlys_top_map.nlf"/>
<outfile xil_pn:name="netgen/map/spi_master_atlys_top_map.sdf"/>
<outfile xil_pn:name="netgen/map/spi_master_atlys_top_map.vhd"/>
<status xil_pn:value="OutputRemoved"/>
</transform>
<transform xil_pn:end_ts="1314586512" xil_pn:in_ck="-5988982649231273316" xil_pn:name="TRAN_postXlateSimModel" xil_pn:prop_ck="4032524037721565697" xil_pn:start_ts="1314586510">
<transform xil_pn:end_ts="1314889848" xil_pn:in_ck="-5988982649231273316" xil_pn:name="TRAN_postXlateSimModel" xil_pn:prop_ck="4032524037721565697" xil_pn:start_ts="1314889846">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<status xil_pn:value="OutOfDateForInputs"/>
<status xil_pn:value="OutOfDateForOutputs"/>
<status xil_pn:value="InputChanged"/>
<status xil_pn:value="OutputChanged"/>
<outfile xil_pn:name="netgen"/>
<outfile xil_pn:name="netgen/translate/spi_master_atlys_top_translate.nlf"/>
<outfile xil_pn:name="netgen/translate/spi_master_atlys_top_translate.vhd"/>
</transform>
<transform xil_pn:end_ts="1314584431" xil_pn:in_ck="1721521412391114385" xil_pn:name="TRAN_copyPost-TranslateAbstractToPreSimulation" xil_pn:start_ts="1314584431">
<transform xil_pn:end_ts="1314889848" xil_pn:in_ck="1721521412391114385" xil_pn:name="TRAN_copyPost-TranslateAbstractToPreSimulation" xil_pn:start_ts="1314889848">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<status xil_pn:value="OutOfDateForInputs"/>
365,10 → 360,11
<outfile xil_pn:name="netgen/translate/spi_master_atlys_top_translate.vhd"/>
<outfile xil_pn:name="spi_master_atlys_test.vhd"/>
</transform>
<transform xil_pn:end_ts="1314584434" xil_pn:in_ck="1721521412391114385" xil_pn:name="TRAN_ISimulatePostTranslateModelRunFuse" xil_pn:prop_ck="4831401045093024940" xil_pn:start_ts="1314584431">
<transform xil_pn:end_ts="1314889853" xil_pn:in_ck="1721521412391114385" xil_pn:name="TRAN_ISimulatePostTranslateModelRunFuse" xil_pn:prop_ck="4831401045093024940" xil_pn:start_ts="1314889848">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<status xil_pn:value="OutOfDateForInputs"/>
<status xil_pn:value="OutOfDateForProperties"/>
<status xil_pn:value="OutOfDateForPredecessor"/>
<status xil_pn:value="OutOfDateForOutputs"/>
<status xil_pn:value="InputChanged"/>
380,9 → 376,10
<outfile xil_pn:name="testbench_translate.prj"/>
<outfile xil_pn:name="xilinxsim.ini"/>
</transform>
<transform xil_pn:end_ts="1314584435" xil_pn:in_ck="-2373432107787769551" xil_pn:name="TRAN_ISimulatePostTranslateModel" xil_pn:prop_ck="-8441040086216995160" xil_pn:start_ts="1314584434">
<transform xil_pn:end_ts="1314889853" xil_pn:in_ck="-2373432107787769551" xil_pn:name="TRAN_ISimulatePostTranslateModel" xil_pn:prop_ck="-8441040086216995160" xil_pn:start_ts="1314889853">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<status xil_pn:value="OutOfDateForProperties"/>
<status xil_pn:value="OutOfDateForPredecessor"/>
<status xil_pn:value="OutOfDateForOutputs"/>
<status xil_pn:value="OutputChanged"/>
394,10 → 391,9
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<status xil_pn:value="OutOfDateForInputs"/>
<status xil_pn:value="OutOfDateForOutputs"/>
<status xil_pn:value="InputChanged"/>
<outfile xil_pn:name="netgen"/>
<outfile xil_pn:name="netgen/synthesis/spi_master_atlys_top_synthesis.nlf"/>
<outfile xil_pn:name="netgen/synthesis/spi_master_atlys_top_synthesis.vhd"/>
<status xil_pn:value="OutputRemoved"/>
</transform>
</transforms>
 
/spi_master_slave/trunk/syn/spi_master_atlys.ucf
5,7 → 5,7
 
 
# clock pin for Atlys rev C board
NET "gclk_i" LOC = "L15"; # Bank = 1, Pin name = IO_L42P_GCLK7_M1UDM, Type = GCLK, Sch name = GCLK
#### NET "gclk_i" LOC = "L15"; # Bank = 1, Pin name = IO_L42P_GCLK7_M1UDM, Type = GCLK, Sch name = GCLK
 
# onBoard USB controller
# NET "EppAstb" LOC = "B9"; # Bank = 0, Pin name = IO_L35P_GCLK17, Sch name = U1-FLAGA
/spi_master_slave/trunk/syn/spi_master_atlys_top_map.mrp
12,7 → 12,7
Target Package : csg324
Target Speed : -2
Mapper Version : spartan6 -- $Revision: 1.55 $
Mapped Date : Mon Aug 29 00:08:18 2011
Mapped Date : Thu Sep 01 13:07:11 2011
 
Design Summary
--------------
19,16 → 19,16
Number of errors: 0
Number of warnings: 0
Slice Logic Utilization:
Number of Slice Registers: 224 out of 54,576 1%
Number used as Flip Flops: 224
Number of Slice Registers: 210 out of 54,576 1%
Number used as Flip Flops: 210
Number used as Latches: 0
Number used as Latch-thrus: 0
Number used as AND/OR logics: 0
Number of Slice LUTs: 177 out of 27,288 1%
Number used as logic: 167 out of 27,288 1%
Number using O6 output only: 112
Number using O5 output only: 28
Number using O5 and O6: 27
Number of Slice LUTs: 143 out of 27,288 1%
Number used as logic: 129 out of 27,288 1%
Number using O6 output only: 79
Number using O5 output only: 15
Number using O5 and O6: 35
Number used as ROM: 0
Number used as Memory: 4 out of 6,408 1%
Number used as Dual Port RAM: 0
37,20 → 37,20
Number using O6 output only: 4
Number using O5 output only: 0
Number using O5 and O6: 0
Number used exclusively as route-thrus: 6
Number with same-slice register load: 4
Number used exclusively as route-thrus: 10
Number with same-slice register load: 8
Number with same-slice carry load: 2
Number with other load: 0
 
Slice Logic Distribution:
Number of occupied Slices: 102 out of 6,822 1%
Number of LUT Flip Flop pairs used: 272
Number with an unused Flip Flop: 64 out of 272 23%
Number with an unused LUT: 95 out of 272 34%
Number of fully used LUT-FF pairs: 113 out of 272 41%
Number of unique control sets: 26
Number of occupied Slices: 91 out of 6,822 1%
Number of LUT Flip Flop pairs used: 231
Number with an unused Flip Flop: 46 out of 231 19%
Number with an unused LUT: 88 out of 231 38%
Number of fully used LUT-FF pairs: 97 out of 231 41%
Number of unique control sets: 27
Number of slice register sites lost
to control set restrictions: 68 out of 54,576 1%
to control set restrictions: 74 out of 54,576 1%
 
A LUT Flip Flop pair for this architecture represents one LUT paired with
one Flip Flop within a slice. A control set is a unique combination of
59,8 → 59,8
over-mapped for a non-slice resource or if Placement fails.
 
IO Utilization:
Number of bonded IOBs: 63 out of 218 28%
Number of LOCed IOBs: 47 out of 63 74%
Number of bonded IOBs: 64 out of 218 29%
Number of LOCed IOBs: 46 out of 64 71%
 
Specific Feature Utilization:
Number of RAMB16BWERs: 0 out of 116 0%
67,8 → 67,8
Number of RAMB8BWERs: 0 out of 232 0%
Number of BUFIO2/BUFIO2_2CLKs: 0 out of 32 0%
Number of BUFIO2FB/BUFIO2FB_2CLKs: 0 out of 32 0%
Number of BUFG/BUFGMUXs: 2 out of 16 12%
Number used as BUFGs: 2
Number of BUFG/BUFGMUXs: 3 out of 16 18%
Number used as BUFGs: 3
Number used as BUFGMUX: 0
Number of DCM/DCM_CLKGENs: 0 out of 8 0%
Number of ILOGIC2/ISERDES2s: 0 out of 376 0%
87,9 → 87,9
Number of STARTUPs: 0 out of 1 0%
Number of SUSPEND_SYNCs: 0 out of 1 0%
 
Average Fanout of Non-Clock Nets: 3.18
Average Fanout of Non-Clock Nets: 2.86
 
Peak Memory Usage: 298 MB
Peak Memory Usage: 301 MB
Total REAL time to MAP completion: 17 secs
Total CPU time to MAP completion (all processors): 17 secs
 
130,8 → 130,10
<spi_master_atlys_top> is equivalent to the following 2 FFs/Latches, which
will be removed : <Inst_spi_slave_port/state_reg_2_1>
<Inst_spi_slave_port/state_reg_2_2>
INFO:LIT:243 - Logical network gclk_i_BUFGP/N2 has no load.
INFO:LIT:243 - Logical network gclk_i_BUFGP/N3 has no load.
INFO:LIT:243 - Logical network pclk_i_BUFGP/N2 has no load.
INFO:LIT:243 - Logical network pclk_i_BUFGP/N3 has no load.
INFO:LIT:243 - Logical network sclk_i_BUFGP/N2 has no load.
INFO:LIT:243 - Logical network sclk_i_BUFGP/N3 has no load.
INFO:MapLib:562 - No environment variables are currently set.
INFO:LIT:244 - All of the single ended outputs in this design are using slew
rate limited output drivers. The delay on speed critical single ended outputs
142,17 → 144,17
1.260 Volts)
INFO:Map:215 - The Interim Design Summary has been generated in the MAP Report
(.mrp).
INFO:Place:834 - Only a subset of IOs are locked. Out of 63 IOs, 47 are locked
and 16 are not locked. If you would like to print the names of these IOs,
INFO:Place:834 - Only a subset of IOs are locked. Out of 64 IOs, 46 are locked
and 18 are not locked. If you would like to print the names of these IOs,
please set the environment variable XIL_PAR_DESIGN_CHECK_VERBOSE to 1.
INFO:Pack:1650 - Map created a placed design.
 
Section 4 - Removed Logic Summary
---------------------------------
2 block(s) removed
4 block(s) removed
2 block(s) optimized away
2 signal(s) removed
87 Block(s) redundant
4 signal(s) removed
58 Block(s) redundant
 
Section 5 - Removed Logic
-------------------------
167,10 → 169,14
above the place where that logic is listed in the trimming report, then locate
the lines that are least indented (begin at the leftmost edge).
 
The signal "gclk_i_BUFGP/N2" is sourceless and has been removed.
The signal "gclk_i_BUFGP/N3" is sourceless and has been removed.
Unused block "gclk_i_BUFGP/XST_GND" (ZERO) removed.
Unused block "gclk_i_BUFGP/XST_VCC" (ONE) removed.
The signal "pclk_i_BUFGP/N2" is sourceless and has been removed.
The signal "pclk_i_BUFGP/N3" is sourceless and has been removed.
The signal "sclk_i_BUFGP/N2" is sourceless and has been removed.
The signal "sclk_i_BUFGP/N3" is sourceless and has been removed.
Unused block "pclk_i_BUFGP/XST_GND" (ZERO) removed.
Unused block "pclk_i_BUFGP/XST_VCC" (ONE) removed.
Unused block "sclk_i_BUFGP/XST_GND" (ZERO) removed.
Unused block "sclk_i_BUFGP/XST_VCC" (ONE) removed.
 
Optimized Block(s):
TYPE BLOCK
179,13 → 185,6
 
Redundant Block(s):
TYPE BLOCK
LUT1 Inst_sw_debouncer/Mcount_cnt_reg_cy<13>_rt
LUT1 Inst_sw_debouncer/Mcount_cnt_reg_cy<12>_rt
LUT1 Inst_sw_debouncer/Mcount_cnt_reg_cy<11>_rt
LUT1 Inst_sw_debouncer/Mcount_cnt_reg_cy<10>_rt
LUT1 Inst_sw_debouncer/Mcount_cnt_reg_cy<9>_rt
LUT1 Inst_sw_debouncer/Mcount_cnt_reg_cy<8>_rt
LUT1 Inst_sw_debouncer/Mcount_cnt_reg_cy<7>_rt
LUT1 Inst_sw_debouncer/Mcount_cnt_reg_cy<6>_rt
LUT1 Inst_sw_debouncer/Mcount_cnt_reg_cy<5>_rt
LUT1 Inst_sw_debouncer/Mcount_cnt_reg_cy<4>_rt
192,13 → 191,6
LUT1 Inst_sw_debouncer/Mcount_cnt_reg_cy<3>_rt
LUT1 Inst_sw_debouncer/Mcount_cnt_reg_cy<2>_rt
LUT1 Inst_sw_debouncer/Mcount_cnt_reg_cy<1>_rt
LUT1 Inst_btn_debouncer/Mcount_cnt_reg_cy<13>_rt
LUT1 Inst_btn_debouncer/Mcount_cnt_reg_cy<12>_rt
LUT1 Inst_btn_debouncer/Mcount_cnt_reg_cy<11>_rt
LUT1 Inst_btn_debouncer/Mcount_cnt_reg_cy<10>_rt
LUT1 Inst_btn_debouncer/Mcount_cnt_reg_cy<9>_rt
LUT1 Inst_btn_debouncer/Mcount_cnt_reg_cy<8>_rt
LUT1 Inst_btn_debouncer/Mcount_cnt_reg_cy<7>_rt
LUT1 Inst_btn_debouncer/Mcount_cnt_reg_cy<6>_rt
LUT1 Inst_btn_debouncer/Mcount_cnt_reg_cy<5>_rt
LUT1 Inst_btn_debouncer/Mcount_cnt_reg_cy<4>_rt
205,67 → 197,52
LUT1 Inst_btn_debouncer/Mcount_cnt_reg_cy<3>_rt
LUT1 Inst_btn_debouncer/Mcount_cnt_reg_cy<2>_rt
LUT1 Inst_btn_debouncer/Mcount_cnt_reg_cy<1>_rt
LUT1 Inst_sw_debouncer/Mcount_cnt_reg_xor<14>_rt
LUT1 Inst_btn_debouncer/Mcount_cnt_reg_xor<14>_rt
INV ][1211_3_INV_0
INV ][1212_5_INV_0
INV ][335_42_INV_0
INV ][339_50_INV_0
INV ][343_55_INV_0
INV ][347_60_INV_0
INV ][351_65_INV_0
INV ][355_70_INV_0
INV ][359_75_INV_0
INV ][363_80_INV_0
INV ][395_115_INV_0
INV ][495_170_INV_0
INV ][496_174_INV_0
INV ][499_176_INV_0
INV ][515_193_INV_0
INV ][523_202_INV_0
INV ][527_207_INV_0
INV ][528_211_INV_0
INV ][531_213_INV_0
INV ][535_218_INV_0
INV ][539_223_INV_0
INV ][543_228_INV_0
INV ][547_233_INV_0
INV ][551_238_INV_0
INV ][555_243_INV_0
INV ][563_253_INV_0
INV ][567_257_INV_0
INV ][575_264_INV_0
INV ][579_268_INV_0
INV ][583_272_INV_0
INV ][587_276_INV_0
INV ][591_280_INV_0
INV ][595_284_INV_0
INV ][771_395_INV_0
INV ][775_400_INV_0
INV ][779_404_INV_0
INV ][783_408_INV_0
INV ][787_412_INV_0
INV ][791_416_INV_0
INV ][795_420_INV_0
INV ][799_424_INV_0
INV ][820_439_INV_0
INV ][825_443_INV_0
INV ][855_466_INV_0
INV ][859_471_INV_0
INV ][909_508_INV_0
INV ][917_517_INV_0
INV ][921_521_INV_0
INV ][925_527_INV_0
INV ][933_533_INV_0
INV ][966_562_INV_0
INV ][971_565_INV_0
INV ][1008_588_INV_0
INV ][1011_592_INV_0
INV ][1014_596_INV_0
INV ][1042_616_INV_0
INV ][1051_628_INV_0
INV ][1054_632_INV_0
INV ][1057_636_INV_0
LUT1 Inst_sw_debouncer/Mcount_cnt_reg_xor<7>_rt
LUT1 Inst_btn_debouncer/Mcount_cnt_reg_xor<7>_rt
INV ][241_70_INV_0
INV ][245_78_INV_0
INV ][249_83_INV_0
INV ][253_88_INV_0
INV ][257_93_INV_0
INV ][261_98_INV_0
INV ][269_106_INV_0
INV ][369_161_INV_0
INV ][373_166_INV_0
INV ][389_179_INV_0
INV ][397_186_INV_0
INV ][401_190_INV_0
INV ][402_194_INV_0
INV ][405_196_INV_0
INV ][409_201_INV_0
INV ][413_206_INV_0
INV ][417_211_INV_0
INV ][421_216_INV_0
INV ][425_221_INV_0
INV ][429_226_INV_0
INV ][453_249_INV_0
INV ][461_256_INV_0
INV ][465_260_INV_0
INV ][469_264_INV_0
INV ][645_373_INV_0
INV ][649_378_INV_0
INV ][653_382_INV_0
INV ][657_386_INV_0
INV ][661_390_INV_0
INV ][665_394_INV_0
INV ][669_398_INV_0
INV ][673_402_INV_0
INV ][694_417_INV_0
INV ][725_439_INV_0
INV ][729_444_INV_0
INV ][803_502_INV_0
INV ][836_526_INV_0
INV ][841_529_INV_0
INV ][878_552_INV_0
INV ][881_556_INV_0
INV ][918_585_INV_0
INV ][921_589_INV_0
INV ][927_596_INV_0
INV ][930_600_INV_0
 
Section 6 - IOB Properties
--------------------------
292,7 → 269,6
| dbg_o<9> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | |
| dbg_o<10> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | |
| dbg_o<11> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | |
| gclk_i | IOB | INPUT | LVCMOS25 | | | | | | |
| led_o<0> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | |
| led_o<1> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | |
| led_o<2> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | |
313,6 → 289,7
| m_state_o<1> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | |
| m_state_o<2> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | |
| m_state_o<3> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | |
| pclk_i | IOB | INPUT | LVCMOS25 | | | | | | |
| s_do_o<0> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | |
| s_do_o<1> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | |
| s_do_o<2> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | |
325,6 → 302,7
| s_state_o<1> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | |
| s_state_o<2> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | |
| s_state_o<3> | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | |
| sclk_i | IOB | INPUT | LVCMOS25 | | | | | | |
| spi_miso_o | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | |
| spi_mosi_o | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | |
| spi_sck_o | IOB | OUTPUT | LVCMOS25 | | 12 | SLOW | | | |
384,33 → 362,35
| Clock Signal | Reset Signal | Set Signal | Enable Signal | Slice Load Count | Bel Load Count |
+-----------------------------------------------------------------------------------------------------------------------------------+
| Inst_spi_master_port/spi_clk_reg_BUFG | | | | 6 | 11 |
| Inst_spi_master_port/spi_clk_reg_BUFG | | | lut1117_506 | 3 | 8 |
| Inst_spi_master_port/spi_clk_reg_BUFG | ][1209_0 | | | 2 | 2 |
| Inst_spi_master_port/spi_clk_reg_BUFG | ][IN_virtPIBox_574_736 | | | 1 | 2 |
| Inst_spi_master_port/spi_clk_reg_BUFG | | | lut1157_481 | 2 | 8 |
| Inst_spi_master_port/spi_clk_reg_BUFG | ][1041_0 | | | 2 | 2 |
| Inst_spi_master_port/spi_clk_reg_BUFG | ][IN_virtPIBox_541_658 | | | 1 | 2 |
+-----------------------------------------------------------------------------------------------------------------------------------+
| gclk_i_BUFGP | | | | 36 | 85 |
| gclk_i_BUFGP | | | GLOBAL_LOGIC1 | 1 | 4 |
| gclk_i_BUFGP | | | ][336_48 | 2 | 8 |
| gclk_i_BUFGP | | | ][496_174 | 2 | 8 |
| gclk_i_BUFGP | | | ][528_211 | 2 | 8 |
| gclk_i_BUFGP | | | ][817_437 | 3 | 4 |
| gclk_i_BUFGP | | | lut263_47 | 2 | 6 |
| gclk_i_BUFGP | | | lut350_113 | 1 | 2 |
| gclk_i_BUFGP | | | lut362_120 | 2 | 8 |
| gclk_i_BUFGP | | | lut403_137 | 2 | 8 |
| gclk_i_BUFGP | | | lut444_154 | 2 | 8 |
| gclk_i_BUFGP | | | lut649_291 | 2 | 8 |
| gclk_i_BUFGP | | | lut772_342 | 2 | 6 |
| gclk_i_BUFGP | | | lut863_379 | 2 | 8 |
| gclk_i_BUFGP | | | lut905_398 | 3 | 8 |
| gclk_i_BUFGP | | | spi_wren_reg_m | 2 | 8 |
| gclk_i_BUFGP | | | spi_wren_reg_s | 1 | 2 |
| gclk_i_BUFGP | ][1209_0 | | | 2 | 6 |
| gclk_i_BUFGP | clear | | | 2 | 4 |
| gclk_i_BUFGP | spi_rst_reg | | ][817_437 | 1 | 4 |
| pclk_i_BUFGP | | | | 28 | 67 |
| pclk_i_BUFGP | | | GLOBAL_LOGIC1 | 1 | 4 |
| pclk_i_BUFGP | | | ][210_33 | 1 | 8 |
| pclk_i_BUFGP | | | ][242_76 | 2 | 6 |
| pclk_i_BUFGP | | | ][402_194 | 2 | 8 |
| pclk_i_BUFGP | | | lut410_104 | 1 | 2 |
| pclk_i_BUFGP | | | lut422_111 | 2 | 8 |
| pclk_i_BUFGP | | | lut463_128 | 2 | 8 |
| pclk_i_BUFGP | | | lut504_145 | 2 | 8 |
| pclk_i_BUFGP | | | lut546_164 | 2 | 8 |
| pclk_i_BUFGP | | | lut710_270 | 2 | 8 |
| pclk_i_BUFGP | | | lut832_320 | 2 | 6 |
| pclk_i_BUFGP | | | spi_wren_reg_m | 1 | 8 |
| pclk_i_BUFGP | | | spi_wren_reg_s | 1 | 2 |
| pclk_i_BUFGP | ][1041_0 | | | 2 | 6 |
| pclk_i_BUFGP | clear | | | 2 | 4 |
+-----------------------------------------------------------------------------------------------------------------------------------+
| sclk_i_BUFGP | | | | 3 | 4 |
| sclk_i_BUFGP | | | ][691_415 | 3 | 4 |
| sclk_i_BUFGP | | | lut923_357 | 2 | 8 |
| sclk_i_BUFGP | | | lut965_376 | 2 | 8 |
| sclk_i_BUFGP | spi_rst_reg | | ][691_415 | 1 | 4 |
+-----------------------------------------------------------------------------------------------------------------------------------+
| ~Inst_spi_master_port/spi_clk_reg_BUFG | | | | 1 | 1 |
| ~Inst_spi_master_port/spi_clk_reg_BUFG | ][1209_0 | | | 1 | 1 |
| ~Inst_spi_master_port/spi_clk_reg_BUFG | ][1041_0 | | | 1 | 1 |
+-----------------------------------------------------------------------------------------------------------------------------------+
 
Section 13 - Utilization by Hierarchy
418,11 → 398,11
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Module | Partition | Slices* | Slice Reg | LUTs | LUTRAM | BRAM/FIFO | DSP48A1 | BUFG | BUFIO | BUFR | DCM | PLL_ADV | Full Hierarchical Name |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| spi_master_atlys_top/ | | 68/139 | 71/224 | 135/145 | 0/4 | 0/0 | 0/0 | 1/2 | 0/0 | 0/0 | 0/0 | 0/0 | spi_master_atlys_top |
| +Inst_btn_debouncer | | 14/14 | 33/33 | 1/1 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | spi_master_atlys_top/Inst_btn_debouncer |
| +Inst_spi_master_port | | 21/21 | 45/45 | 2/2 | 2/2 | 0/0 | 0/0 | 1/1 | 0/0 | 0/0 | 0/0 | 0/0 | spi_master_atlys_top/Inst_spi_master_port |
| +Inst_spi_slave_port | | 23/23 | 36/36 | 6/6 | 2/2 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | spi_master_atlys_top/Inst_spi_slave_port |
| +Inst_sw_debouncer | | 13/13 | 39/39 | 1/1 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | spi_master_atlys_top/Inst_sw_debouncer |
| spi_master_atlys_top/ | | 65/122 | 71/210 | 111/121 | 0/4 | 0/0 | 0/0 | 2/3 | 0/0 | 0/0 | 0/0 | 0/0 | spi_master_atlys_top |
| +Inst_btn_debouncer | | 9/9 | 26/26 | 1/1 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | spi_master_atlys_top/Inst_btn_debouncer |
| +Inst_spi_master_port | | 18/18 | 45/45 | 2/2 | 2/2 | 0/0 | 0/0 | 1/1 | 0/0 | 0/0 | 0/0 | 0/0 | spi_master_atlys_top/Inst_spi_master_port |
| +Inst_spi_slave_port | | 20/20 | 36/36 | 6/6 | 2/2 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | spi_master_atlys_top/Inst_spi_slave_port |
| +Inst_sw_debouncer | | 10/10 | 32/32 | 1/1 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | spi_master_atlys_top/Inst_sw_debouncer |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
* Slices can be packed with basic elements from multiple hierarchies.
/spi_master_slave/trunk/syn/spi_master_atlys_test.vhd
13,7 → 13,8
-- Constants
--=============================================================================================
-- clock period
constant CLK_PERIOD : time := 10 ns;
constant SCLK_PERIOD : time := 11 ns; -- serial high speed clock
constant PCLK_PERIOD : time := 10 ns; -- parallel high-speed clock
 
-- button definitions
constant btRESET : integer := 0; -- these are constants to use as btn_i(x)
28,7 → 29,8
--=============================================================================================
component spi_master_atlys_top
port(
gclk_i : in std_logic;
sclk_i : in std_logic;
pclk_i : in std_logic;
sw_i : in std_logic_vector(7 downto 0);
btn_i : in std_logic_vector(5 downto 0);
spi_ssel_o : out std_logic;
53,6 → 55,7
--=============================================================================================
--- clock signals ---
signal sysclk : std_logic := '0'; -- 100MHz clock
signal pclk : std_logic := '0'; -- 100MHz clock
--- switch debouncer signals ---
signal sw_data : std_logic_vector (7 downto 0) := (others => '0'); -- switch data
--- pushbutton debouncer signals ---
94,7 → 97,8
-- set debounce time to 2 us to save simulation time
Inst_spi_master_atlys_top: spi_master_atlys_top
port map(
gclk_i => sysclk,
sclk_i => sysclk,
pclk_i => pclk,
spi_ssel_o => spi_ssel,
spi_sck_o => spi_sck,
spi_mosi_o => spi_mosi,
125,14 → 129,22
--=============================================================================================
-- CLOCK GENERATION
--=============================================================================================
gclk_proc: process is
sysclk_proc: process is
begin
loop
sysclk <= not sysclk;
wait for CLK_PERIOD / 2;
wait for SCLK_PERIOD / 2;
end loop;
end process gclk_proc;
end process sysclk_proc;
 
pclk_proc: process is
begin
loop
pclk <= not pclk;
wait for PCLK_PERIOD / 2;
end loop;
end process pclk_proc;
 
--=============================================================================================
-- TEST BENCH STIMULI
--=============================================================================================
151,6 → 163,14
wait for 5 us;
sw_data <= X"55";
wait for 5 us;
sw_data <= X"AA";
wait for 5 us;
sw_data <= X"1e";
wait for 5 us;
sw_data <= X"79";
wait for 5 us;
sw_data <= X"40";
wait for 5 us;
assert false report "End Simulation" severity failure; -- stop simulation
end process tb;
-- End Test Bench
/spi_master_slave/trunk/syn/spi_master_atlys_top_map.map
12,7 → 12,7
Target Package : csg324
Target Speed : -2
Mapper Version : spartan6 -- $Revision: 1.55 $
Mapped Date : Mon Aug 29 00:08:18 2011
Mapped Date : Thu Sep 01 13:07:11 2011
 
Running global optimization...
Mapping design into LUTs...
22,55 → 22,55
INFO:Map:215 - The Interim Design Summary has been generated in the MAP Report
(.mrp).
Running timing-driven placement...
Total REAL time at the beginning of Placer: 9 secs
Total CPU time at the beginning of Placer: 9 secs
Total REAL time at the beginning of Placer: 8 secs
Total CPU time at the beginning of Placer: 8 secs
 
Phase 1.1 Initial Placement Analysis
Phase 1.1 Initial Placement Analysis (Checksum:7388cd6e) REAL time: 10 secs
Phase 1.1 Initial Placement Analysis (Checksum:41618496) REAL time: 9 secs
 
Phase 2.7 Design Feasibility Check
INFO:Place:834 - Only a subset of IOs are locked. Out of 63 IOs, 47 are locked
and 16 are not locked. If you would like to print the names of these IOs,
INFO:Place:834 - Only a subset of IOs are locked. Out of 64 IOs, 46 are locked
and 18 are not locked. If you would like to print the names of these IOs,
please set the environment variable XIL_PAR_DESIGN_CHECK_VERBOSE to 1.
Phase 2.7 Design Feasibility Check (Checksum:7388cd6e) REAL time: 10 secs
Phase 2.7 Design Feasibility Check (Checksum:41618496) REAL time: 9 secs
 
Phase 3.31 Local Placement Optimization
Phase 3.31 Local Placement Optimization (Checksum:7388cd6e) REAL time: 10 secs
Phase 3.31 Local Placement Optimization (Checksum:41618496) REAL time: 9 secs
 
Phase 4.2 Initial Placement for Architecture Specific Features
...
Phase 4.2 Initial Placement for Architecture Specific Features
(Checksum:e9015cfe) REAL time: 14 secs
(Checksum:4fd9556b) REAL time: 14 secs
 
Phase 5.36 Local Placement Optimization
Phase 5.36 Local Placement Optimization (Checksum:e9015cfe) REAL time: 14 secs
Phase 5.36 Local Placement Optimization (Checksum:4fd9556b) REAL time: 14 secs
 
Phase 6.30 Global Clock Region Assignment
Phase 6.30 Global Clock Region Assignment (Checksum:e9015cfe) REAL time: 14 secs
Phase 6.30 Global Clock Region Assignment (Checksum:4fd9556b) REAL time: 14 secs
 
Phase 7.3 Local Placement Optimization
...
Phase 7.3 Local Placement Optimization (Checksum:fcc976fb) REAL time: 15 secs
Phase 7.3 Local Placement Optimization (Checksum:7d1b7da) REAL time: 15 secs
 
Phase 8.5 Local Placement Optimization
Phase 8.5 Local Placement Optimization (Checksum:fcc976fb) REAL time: 15 secs
Phase 8.5 Local Placement Optimization (Checksum:7d1b7da) REAL time: 15 secs
 
Phase 9.8 Global Placement
..
..
Phase 9.8 Global Placement (Checksum:4a08930d) REAL time: 15 secs
...
....
Phase 9.8 Global Placement (Checksum:9b697e6f) REAL time: 15 secs
 
Phase 10.5 Local Placement Optimization
Phase 10.5 Local Placement Optimization (Checksum:4a08930d) REAL time: 15 secs
Phase 10.5 Local Placement Optimization (Checksum:9b697e6f) REAL time: 15 secs
 
Phase 11.18 Placement Optimization
Phase 11.18 Placement Optimization (Checksum:1a1797e0) REAL time: 16 secs
Phase 11.18 Placement Optimization (Checksum:fb37ccb) REAL time: 16 secs
 
Phase 12.5 Local Placement Optimization
Phase 12.5 Local Placement Optimization (Checksum:1a1797e0) REAL time: 16 secs
Phase 12.5 Local Placement Optimization (Checksum:fb37ccb) REAL time: 16 secs
 
Phase 13.34 Placement Validation
Phase 13.34 Placement Validation (Checksum:bc560c6c) REAL time: 16 secs
Phase 13.34 Placement Validation (Checksum:ce7f4163) REAL time: 16 secs
 
Total REAL time to Placer completion: 16 secs
Total CPU time to Placer completion: 16 secs
84,16 → 84,16
Number of errors: 0
Number of warnings: 0
Slice Logic Utilization:
Number of Slice Registers: 224 out of 54,576 1%
Number used as Flip Flops: 224
Number of Slice Registers: 210 out of 54,576 1%
Number used as Flip Flops: 210
Number used as Latches: 0
Number used as Latch-thrus: 0
Number used as AND/OR logics: 0
Number of Slice LUTs: 177 out of 27,288 1%
Number used as logic: 167 out of 27,288 1%
Number using O6 output only: 112
Number using O5 output only: 28
Number using O5 and O6: 27
Number of Slice LUTs: 143 out of 27,288 1%
Number used as logic: 129 out of 27,288 1%
Number using O6 output only: 79
Number using O5 output only: 15
Number using O5 and O6: 35
Number used as ROM: 0
Number used as Memory: 4 out of 6,408 1%
Number used as Dual Port RAM: 0
102,20 → 102,20
Number using O6 output only: 4
Number using O5 output only: 0
Number using O5 and O6: 0
Number used exclusively as route-thrus: 6
Number with same-slice register load: 4
Number used exclusively as route-thrus: 10
Number with same-slice register load: 8
Number with same-slice carry load: 2
Number with other load: 0
 
Slice Logic Distribution:
Number of occupied Slices: 102 out of 6,822 1%
Number of LUT Flip Flop pairs used: 272
Number with an unused Flip Flop: 64 out of 272 23%
Number with an unused LUT: 95 out of 272 34%
Number of fully used LUT-FF pairs: 113 out of 272 41%
Number of unique control sets: 26
Number of occupied Slices: 91 out of 6,822 1%
Number of LUT Flip Flop pairs used: 231
Number with an unused Flip Flop: 46 out of 231 19%
Number with an unused LUT: 88 out of 231 38%
Number of fully used LUT-FF pairs: 97 out of 231 41%
Number of unique control sets: 27
Number of slice register sites lost
to control set restrictions: 68 out of 54,576 1%
to control set restrictions: 74 out of 54,576 1%
 
A LUT Flip Flop pair for this architecture represents one LUT paired with
one Flip Flop within a slice. A control set is a unique combination of
124,8 → 124,8
over-mapped for a non-slice resource or if Placement fails.
 
IO Utilization:
Number of bonded IOBs: 63 out of 218 28%
Number of LOCed IOBs: 47 out of 63 74%
Number of bonded IOBs: 64 out of 218 29%
Number of LOCed IOBs: 46 out of 64 71%
 
Specific Feature Utilization:
Number of RAMB16BWERs: 0 out of 116 0%
132,8 → 132,8
Number of RAMB8BWERs: 0 out of 232 0%
Number of BUFIO2/BUFIO2_2CLKs: 0 out of 32 0%
Number of BUFIO2FB/BUFIO2FB_2CLKs: 0 out of 32 0%
Number of BUFG/BUFGMUXs: 2 out of 16 12%
Number used as BUFGs: 2
Number of BUFG/BUFGMUXs: 3 out of 16 18%
Number used as BUFGs: 3
Number used as BUFGMUX: 0
Number of DCM/DCM_CLKGENs: 0 out of 8 0%
Number of ILOGIC2/ISERDES2s: 0 out of 376 0%
152,9 → 152,9
Number of STARTUPs: 0 out of 1 0%
Number of SUSPEND_SYNCs: 0 out of 1 0%
 
Average Fanout of Non-Clock Nets: 3.18
Average Fanout of Non-Clock Nets: 2.86
 
Peak Memory Usage: 298 MB
Peak Memory Usage: 301 MB
Total REAL time to MAP completion: 17 secs
Total CPU time to MAP completion (all processors): 17 secs
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.