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

Subversion Repositories mod_mult_exp

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /mod_mult_exp
    from Rev 4 to Rev 5
    Reverse comparison

Rev 4 → Rev 5

/trunk/bench/vhdl/mod_exp/ModExp32bitTB.vhd
0,0 → 1,229
-----------------------------------------------------------------------
---- ----
---- Montgomery modular multiplier and exponentiator ----
---- ----
---- This file is part of the Montgomery modular multiplier ----
---- and exponentiator project ----
---- http://opencores.org/project,mod_mult_exp ----
---- ----
---- Description: ----
---- This is TestBench for the Montgomery modular exponentiator ----
---- with the 32 bit width. ----
---- It takes four nubers - base, power, modulus and Montgomery ----
---- residuum (2^(2*word_length) mod N) as the input and results ----
---- the modular exponentiation A^B mod M. ----
---- In fact input data are read through one input controlled by ----
---- the ctrl input. ----
---- To Do: ----
---- ----
---- Author(s): ----
---- - Krzysztof Gajewski, gajos@opencores.org ----
---- k.gajewski@gmail.com ----
---- ----
-----------------------------------------------------------------------
---- ----
---- Copyright (C) 2014 Authors and OPENCORES.ORG ----
---- ----
---- 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.opencores.org/lgpl.shtml ----
---- ----
-----------------------------------------------------------------------
LIBRARY ieee;
use work.properties.ALL;
USE ieee.std_logic_1164.ALL;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--USE ieee.numeric_std.ALL;
ENTITY ModExp32bitTB IS
END ModExp32bitTB;
ARCHITECTURE behavior OF ModExp32bitTB IS
-- Component Declaration for the Unit Under Test (UUT)
COMPONENT ModExp
PORT(
input : in STD_LOGIC_VECTOR(31 downto 0);
ctrl : in STD_LOGIC_VECTOR(2 downto 0);
clk : in STD_LOGIC;
reset : in STD_LOGIC;
data_in_ready : in STD_LOGIC;
ready : out STD_LOGIC;
output : out STD_LOGIC_VECTOR(31 downto 0)
);
END COMPONENT;
 
--Inputs
signal input : STD_LOGIC_VECTOR(31 downto 0) := (others => '0');
signal ctrl : STD_LOGIC_VECTOR(2 downto 0) := (others => '0');
signal clk : STD_LOGIC := '0';
signal reset : STD_LOGIC := '0';
signal data_in_ready : STD_LOGIC := '0';
 
--Outputs
signal ready : STD_LOGIC;
signal output : STD_LOGIC_VECTOR(31 downto 0);
 
-- Clock period definitions
constant clk_period : time := 10 ns;
BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: ModExp PORT MAP (
input => input,
ctrl => ctrl,
clk => clk,
reset => reset,
data_in_ready => data_in_ready,
ready => ready,
output => output
);
 
-- Clock process definitions
clk_process :process
begin
clk <= '1';
wait for clk_period/2;
clk <= '0';
wait for clk_period/2;
end process;
 
-- Stimulus process
stim_proc: process
begin
reset <= '1';
wait for 100 ns;
reset <= '0';
wait for clk_period*10;
 
---- Preparation for test case 1 -----------------
-- base = 123456789 in decimal
-- = 0x75bcd15 in hexadecimal
-- exponent = 654321 in decimal
-- = 0x9fbf1 in hexhexadecimal
-- modulus = 2147483659 in decimal
-- = 0x8000000b in hexhexadecimal
-- expected_result = 347621222 in decimal,
-- in hex 0x14b84766
-- power_mod(
-- 123456789,
-- 654321,
-- 2147483659
-- ) =
-- = 347621222
-- = 0x14b84766 in hexadecimal
-- where 484 is the residuum
--------------------------------------------------
data_in_ready <= '1';
ctrl <= mn_read_base;
input <= x"075bcd15";
wait for clk_period*2;
ctrl <= mn_read_modulus;
input <= x"8000000b";
wait for clk_period*2;
ctrl <= mn_read_exponent;
input <= x"0009fbf1";
wait for clk_period*2;
ctrl <= mn_read_residuum;
input <= x"000001e4";
wait for clk_period*2;
ctrl <= mn_count_power;
wait until ready = '1' and clk = '0';
if output /= x"14b84766" then
report "RESULT MISMATCH! Test case 1 failed" severity ERROR;
assert false severity failure;
else
report "Test case 1 successful" severity note;
end if;
ctrl <= mn_show_result;
wait for clk_period*10;
ctrl <= mn_prepare_for_data;
wait for clk_period*10;
---- Preparation for test case 2 -----------------
-- base = 17654321 in decimal
-- = 10d6231 in hexadecimal
-- exponent = 434342 in decimal
-- = 6a0a6 in hexhexadecimal
-- modulus = 2147483693 in decimal
-- = 0x8000002d in hexhexadecimal
-- expected_result = 1290319095 in decimal,
-- in hex 0x4ce8b4f7
-- power_mod(
-- 17654321,
-- 434342,
-- 2147483693
-- ) =
-- = 1290319095
-- = 0x4ce8b4f7 in hexadecimal
-- where 8100 is the residuum
--------------------------------------------------
ctrl <= mn_read_base;
input <= x"010d6231";
wait for clk_period*2;
ctrl <= mn_read_modulus;
input <= x"8000002d";
wait for clk_period*2;
ctrl <= mn_read_exponent;
input <= x"0006a0a6";
wait for clk_period*2;
ctrl <= mn_read_residuum;
input <= x"00001fa4";
wait for clk_period*2;
ctrl <= mn_count_power;
 
wait until ready = '1' and clk = '0';
if output /= x"4ce8b4f7" then
report "RESULT MISMATCH! Test case 2 failed" severity ERROR;
assert false severity failure;
else
report "Test case 2 successful" severity note;
end if;
 
ctrl <= mn_show_result;
wait for clk_period*10;
ctrl <= mn_prepare_for_data;
wait for clk_period*10;
 
assert false severity failure;
end process;
 
END;
/trunk/bench/vhdl/mod_exp/ModExp512bitTB.vhd
0,0 → 1,235
-----------------------------------------------------------------------
---- ----
---- Montgomery modular multiplier and exponentiator ----
---- ----
---- This file is part of the Montgomery modular multiplier ----
---- and exponentiator project ----
---- http://opencores.org/project,mod_mult_exp ----
---- ----
---- Description: ----
---- This is TestBench for the Montgomery modular exponentiator ----
---- with the 512 bit width. ----
---- It takes four nubers - base, power, modulus and Montgomery ----
---- residuum (2^(2*word_length) mod N) as the input and results ----
---- the modular exponentiation A^B mod M. ----
---- In fact input data are read through one input controlled by ----
---- the ctrl input. ----
---- To Do: ----
---- ----
---- Author(s): ----
---- - Krzysztof Gajewski, gajos@opencores.org ----
---- k.gajewski@gmail.com ----
---- ----
-----------------------------------------------------------------------
---- ----
---- Copyright (C) 2014 Authors and OPENCORES.ORG ----
---- ----
---- 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.opencores.org/lgpl.shtml ----
---- ----
-----------------------------------------------------------------------
LIBRARY ieee;
use work.properties.ALL;
USE ieee.std_logic_1164.ALL;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--USE ieee.numeric_std.ALL;
ENTITY ModExp512bitTB IS
END ModExp512bitTB;
ARCHITECTURE behavior OF ModExp512bitTB IS
-- Component Declaration for the Unit Under Test (UUT)
COMPONENT ModExp
PORT(
input : in STD_LOGIC_VECTOR(511 downto 0);
ctrl : in STD_LOGIC_VECTOR(2 downto 0);
clk : in STD_LOGIC;
reset : in STD_LOGIC;
data_in_ready : in STD_LOGIC;
ready : out STD_LOGIC;
output : out STD_LOGIC_VECTOR(511 downto 0)
);
END COMPONENT;
 
--Inputs
signal input : STD_LOGIC_VECTOR(511 downto 0) := (others => '0');
signal ctrl : STD_LOGIC_VECTOR(2 downto 0) := (others => '0');
signal clk : STD_LOGIC := '0';
signal reset : STD_LOGIC := '0';
signal data_in_ready : STD_LOGIC := '0';
 
--Outputs
signal ready : STD_LOGIC;
signal output : STD_LOGIC_VECTOR(511 downto 0);
 
-- Clock period definitions
constant clk_period : time := 10 ns;
BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: ModExp PORT MAP (
input => input,
ctrl => ctrl,
clk => clk,
reset => reset,
data_in_ready => data_in_ready,
ready => ready,
output => output
);
 
-- Clock process definitions
clk_process :process
begin
clk <= '1';
wait for clk_period/2;
clk <= '0';
wait for clk_period/2;
end process;
 
-- Stimulus process
stim_proc: process
begin
reset <= '1';
wait for 100 ns;
reset <= '0';
wait for clk_period*10;
 
---- Preparation for test case 1 -----------------
-- base = 409173825987017733751648542997566029938148046617392981389751408119740010106823408957031501223019018303621410623709446515603337041483208280918267736985 in decimal
-- = 0x1ffffffffffffffffffff003031300d060960864801650304020105000420f75db0d45d3189d910fc5d782745578c59481accf6f7cbf5e79bdecbe5233399 in hexadecimal
-- exponent = 4991398326204141236652697335767169457643189913066361675852469427068576791337775798287514344957972397666876518042551243608843475377858636774161719825165098 in decimal
-- = 0x5f4d7261a28d1e9c9a45059eb0ce9122f6840ec7878d2d2a87057fb15db61eac7a37af6b0cb80f0001870b2a29e350f7b052cc89f1c7fbed07926640d6926b2a in hexhexadecimal
-- modulus = 7630362531884975956392615644472323592768112181489355162005628253173318027895577525003064336256778044210380071348425604079063304117213210643679811834656203 in decimal
-- = 0x91b06f65a203bebb1cfa1b065cb2142e3771d113024a902f0829be8effe539ff6caa7c4b7f87e1913481e8c4f88a3f3e27a853179119aa029fe00e4c45a6b5cb in hexhexadecimal
-- expected_result = 1030188469358454649940099943953262093153216946958355916901057176262906329079894663437512624898962713254938994365603039233579679436863344699542897702118673 in decimal,
-- in hex 13ab74d318c919ec6faa10bea70211d4a981e7c31fc5205a8bb28e754ea59bcdd7459d6880758653918e72376c061177fdd51e72bece6815aa24001bda6ea511
-- power_mod(
-- 409173825987017733751648542997566029938148046617392981389751408119740010106823408957031501223019018303621410623709446515603337041483208280918267736985,
-- 4991398326204141236652697335767169457643189913066361675852469427068576791337775798287514344957972397666876518042551243608843475377858636774161719825165098,
-- 7630362531884975956392615644472323592768112181489355162005628253173318027895577525003064336256778044210380071348425604079063304117213210643679811834656203
-- ) =
-- = 1030188469358454649940099943953262093153216946958355916901057176262906329079894663437512624898962713254938994365603039233579679436863344699542897702118673
-- = 13ab74d318c919ec6faa10bea70211d4a981e7c31fc5205a8bb28e754ea59bcdd7459d6880758653918e72376c061177fdd51e72bece6815aa24001bda6ea511 in hexadecimal
-- where 1398454690893823236632472980512935706632382980363069616905016603014572888067778885889245016848922097099694154000460402372958600055088633374563202044624216 is the residuum
--------------------------------------------------
data_in_ready <= '1';
ctrl <= mn_read_base;
input <= x"0001ffffffffffffffffffff003031300d060960864801650304020105000420f75db0d45d3189d910fc5d782745578c59481accf6f7cbf5e79bdecbe5233399";
wait for clk_period*2;
ctrl <= mn_read_modulus;
input <= x"91b06f65a203bebb1cfa1b065cb2142e3771d113024a902f0829be8effe539ff6caa7c4b7f87e1913481e8c4f88a3f3e27a853179119aa029fe00e4c45a6b5cb";
wait for clk_period*2;
ctrl <= mn_read_exponent;
input <= x"5f4d7261a28d1e9c9a45059eb0ce9122f6840ec7878d2d2a87057fb15db61eac7a37af6b0cb80f0001870b2a29e350f7b052cc89f1c7fbed07926640d6926b2a";
wait for clk_period*2;
ctrl <= mn_read_residuum;
input <= "00011010101100111000000100001111010111001110011000001010110100001111011110111000011110111011111111011111011001111011010101010101010110010011001000010110100100100000010000100101001111011100001101111011001011010100011101100100011100101001110000101011100100101110111100101110011111101000111100101010100010000100011111010101111000100111101101011011000010111010011011000100000101001000111011010110110100001111001100001110001111111110000000011001010101111000101010101000110111011000110110110000000100010111110101011000";
wait for clk_period*2;
ctrl <= mn_count_power;
report "Please wait. It may take up ro few minutes..." severity note;
wait until ready = '1' and clk = '0';
if output /= x"13ab74d318c919ec6faa10bea70211d4a981e7c31fc5205a8bb28e754ea59bcdd7459d6880758653918e72376c061177fdd51e72bece6815aa24001bda6ea511" then
report "RESULT MISMATCH! Test case 1 failed" severity ERROR;
assert false severity failure;
else
report "Test case 1 successful" severity note;
end if;
ctrl <= mn_show_result;
wait for clk_period*10;
ctrl <= mn_prepare_for_data;
wait for clk_period*2;
 
---- Preparation for test case 2 -----------------
-- base = 3273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589431 in decimal
-- = 0x100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000037 in hexadecimal
-- exponent = 622376668989630299558359971768444342820680304013329676986135064534413345603604938346345762083389451304101819605682193623416033951320823027994905238921170 in decimal
-- = 0xbe21d214053f66c3e101fd875b531ecaccca3befca14d989ae2ffe4d6bbf1a3df0c694dc4c83af61ee3cf7c7bc97c9d6844d5d1fe428105082910c637c55fd2 in hexhexadecimal
-- modulus = 3351951982485649274893506249551461531869841455148098344430890360930446855046914914263767984168972974033957028381338463851007479808527777429670210341401251 in decimal
-- = 0x400000000000000000000000000000000000000000000000000000000302929200000000000000000000000000000000000000000000000000005af3fbdb72a3 in hexhexadecimal
-- expected_result = 1135574785903187283000914738069914842639275616893687122668359807022003618585980215260939798952644749528921700342000274265548842002316414917974647561961683 in decimal,
-- in hex 15ae92ed25cdbb29458414ad1a28fa35f5bfc311d7e1efedba753e48ccee1e9ff1d160714449bf6f85a0e3fe0784548b3c461ac5fbf28b7a1c3c83f4dff6c0d3
-- power_mod(
-- 3273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589431,
-- 622376668989630299558359971768444342820680304013329676986135064534413345603604938346345762083389451304101819605682193623416033951320823027994905238921170,
-- 3351951982485649274893506249551461531869841455148098344430890360930446855046914914263767984168972974033957028381338463851007479808527777429670210341401251
-- ) =
-- = 1135574785903187283000914738069914842639275616893687122668359807022003618585980215260939798952644749528921700342000274265548842002316414917974647561961683
-- = 15ae92ed25cdbb29458414ad1a28fa35f5bfc311d7e1efedba753e48ccee1e9ff1d160714449bf6f85a0e3fe0784548b3c461ac5fbf28b7a1c3c83f4dff6c0d3 in hexadecimal
-- where 3351951982485649274893506249551461531869841455148097408724357100071878499222574108103974817495155088879387961281773763412796138005544310585710276679277619 is the residuum
--------------------------------------------------
 
 
ctrl <= mn_read_base;
input <= x"00100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000037";
wait for clk_period*2;
ctrl <= mn_read_modulus;
input <= x"400000000000000000000000000000000000000000000000000000000302929200000000000000000000000000000000000000000000000000005af3fbdb72a3";
wait for clk_period*2;
ctrl <= mn_read_exponent;
input <= x"0be21d214053f66c3e101fd875b531ecaccca3befca14d989ae2ffe4d6bbf1a3df0c694dc4c83af61ee3cf7c7bc97c9d6844d5d1fe428105082910c637c55fd2";
wait for clk_period*2;
ctrl <= mn_read_residuum;
input <= "00111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111001010100001100110001111100000111011101010001011101111101110101100000111111010100011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100110100000000001000000110110110010000010111000001100010111100011000101010110010110110111001110000110011";
wait for clk_period*2;
ctrl <= mn_count_power;
report "Please wait. It may take up ro few minutes..." severity note;
wait until ready = '1' and clk = '0';
if output /= x"15ae92ed25cdbb29458414ad1a28fa35f5bfc311d7e1efedba753e48ccee1e9ff1d160714449bf6f85a0e3fe0784548b3c461ac5fbf28b7a1c3c83f4dff6c0d3" then
report "RESULT MISMATCH! Test case 2 failed" severity ERROR;
assert false severity failure;
else
report "Test case 2 successful" severity note;
end if;
ctrl <= mn_show_result;
wait for clk_period*10;
ctrl <= mn_prepare_for_data;
wait for clk_period*2;
assert false severity failure;
end process;
 
END;
/trunk/bench/vhdl/mod_exp/ModExp64bitTB.vhd
0,0 → 1,229
-----------------------------------------------------------------------
---- ----
---- Montgomery modular multiplier and exponentiator ----
---- ----
---- This file is part of the Montgomery modular multiplier ----
---- and exponentiator project ----
---- http://opencores.org/project,mod_mult_exp ----
---- ----
---- Description: ----
---- This is TestBench for the Montgomery modular exponentiator ----
---- with the 64 bit width. ----
---- It takes four nubers - base, power, modulus and Montgomery ----
---- residuum (2^(2*word_length) mod N) as the input and results ----
---- the modular exponentiation A^B mod M. ----
---- In fact input data are read through one input controlled by ----
---- the ctrl input. ----
---- To Do: ----
---- ----
---- Author(s): ----
---- - Krzysztof Gajewski, gajos@opencores.org ----
---- k.gajewski@gmail.com ----
---- ----
-----------------------------------------------------------------------
---- ----
---- Copyright (C) 2014 Authors and OPENCORES.ORG ----
---- ----
---- 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.opencores.org/lgpl.shtml ----
---- ----
-----------------------------------------------------------------------
LIBRARY ieee;
use work.properties.ALL;
USE ieee.std_logic_1164.ALL;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--USE ieee.numeric_std.ALL;
ENTITY ModExp64bitTB IS
END ModExp64bitTB;
ARCHITECTURE behavior OF ModExp64bitTB IS
-- Component Declaration for the Unit Under Test (UUT)
COMPONENT ModExp
PORT(
input : in STD_LOGIC_VECTOR(63 downto 0);
ctrl : in STD_LOGIC_VECTOR(2 downto 0);
clk : in STD_LOGIC;
reset : in STD_LOGIC;
data_in_ready : in STD_LOGIC;
ready : out STD_LOGIC;
output : out STD_LOGIC_VECTOR(63 downto 0)
);
END COMPONENT;
 
--Inputs
signal input : STD_LOGIC_VECTOR(63 downto 0) := (others => '0');
signal ctrl : STD_LOGIC_VECTOR(2 downto 0) := (others => '0');
signal clk : STD_LOGIC := '0';
signal reset : STD_LOGIC := '0';
signal data_in_ready : STD_LOGIC := '0';
 
--Outputs
signal ready : STD_LOGIC;
signal output : STD_LOGIC_VECTOR(63 downto 0);
 
-- Clock period definitions
constant clk_period : time := 10 ns;
BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: ModExp PORT MAP (
input => input,
ctrl => ctrl,
clk => clk,
reset => reset,
data_in_ready => data_in_ready,
ready => ready,
output => output
);
 
-- Clock process definitions
clk_process :process
begin
clk <= '1';
wait for clk_period/2;
clk <= '0';
wait for clk_period/2;
end process;
 
-- Stimulus process
stim_proc: process
begin
reset <= '1';
wait for 100 ns;
reset <= '0';
wait for clk_period*10;
 
---- Preparation for test case 1 -----------------
-- base = 816881283968894723 in decimal
-- = 0xb56253322a18703 in hexadecimal
-- exponent = 281474976710679 in decimal
-- = 0x1000000000017 in hexhexadecimal
-- modulus = 4612794175830006917 in decimal
-- = 0x4003efdd00569c85 in hexhexadecimal
-- expected_result = 1851187696912577658 in decimal,
-- in hex 19b0bd66ff0c347a
-- power_mod(
-- 816881283968894723,
-- 281474976710679,
-- 4612794175830006917
-- ) =
-- = 1851187696912577658
-- = 19b0bd66ff0c347a in hexadecimal
-- where 1762515348761952014 is the residuum
--------------------------------------------------
data_in_ready <= '1';
ctrl <= mn_read_base;
input <= x"0b56253322a18703";
wait for clk_period*2;
ctrl <= mn_read_modulus;
input <= x"4003efdd00569c85";
wait for clk_period*2;
ctrl <= mn_read_exponent;
input <= x"0001000000000017";
wait for clk_period*2;
ctrl <= mn_read_residuum;
input <= "0001100001110101101101100101111100011010001000010011111100001110";
wait for clk_period*2;
ctrl <= mn_count_power;
wait until ready = '1' and clk = '0';
if output /= x"19b0bd66ff0c347a" then
report "RESULT MISMATCH! Test case 1 failed" severity ERROR;
assert false severity failure;
else
report "Test case 1 successful" severity note;
end if;
ctrl <= mn_show_result;
wait for clk_period*10;
ctrl <= mn_prepare_for_data;
wait for clk_period*10;
---- Preparation for test case 2 -----------------
-- base = 816881283968894722 in decimal
-- = 0xb56253322a18702 in hexadecimal
-- exponent = 281474976710678 in decimal
-- = 0x1000000000016 in hexhexadecimal
-- modulus = 4612794175830006917 in decimal
-- = 0x4003efdd00569c85 in hexhexadecimal
-- expected_result = 3178815025358931436 in decimal,
-- in hex 2c1d6b6c693185ec
-- power_mod(
-- 816881283968894722,
-- 281474976710678,
-- 4612794175830006917
-- ) =
-- = 3178815025358931436
-- = 2c1d6b6c693185ec in hexadecimal
-- where 1762515348761952014 is the residuum
--------------------------------------------------
ctrl <= mn_read_base;
input <= x"0b56253322a18702";
wait for clk_period*2;
ctrl <= mn_read_modulus;
input <= x"4003efdd00569c85";
wait for clk_period*2;
ctrl <= mn_read_exponent;
input <= x"0001000000000016";
wait for clk_period*2;
ctrl <= mn_read_residuum;
input <= "0001100001110101101101100101111100011010001000010011111100001110";
wait for clk_period*2;
ctrl <= mn_count_power;
 
wait until ready = '1' and clk = '0';
if output /= x"2c1d6b6c693185ec" then
report "RESULT MISMATCH! Test case 2 failed" severity ERROR;
assert false severity failure;
else
report "Test case 2 successful" severity note;
end if;
 
ctrl <= mn_show_result;
wait for clk_period*10;
ctrl <= mn_prepare_for_data;
wait for clk_period*10;
 
assert false severity failure;
end process;
 
END;
/trunk/rtl/vhdl/commons/properties_32bit.vhd
62,45 → 62,35
 
type multiplier_states is (NOP, CALCULATE_START, STOP);
 
type finalizer_states is (FIRST_RUN, NOP,
READ_DATA_HASH_M, READ_DATA_C1, READ_DATA_N, READ_DATA_E, READ_DATA_D2, READ_DATA_CINV,
COUNT_C2, EXP_Z_C2, SAVE_EXP_Z_C2, EXP_P_C2, SAVE_EXP_P_C2, EXP_CONTROL_C2, EXP_END_C2, SAVE_EXP_MULT_C2,
COUNT_Cinv, MULT_CINV, SAVE_MULT_CINV,
COUNT_C, MULT_C, SAVE_MULT_C,
COUNT_M, EXP_Z_M, SAVE_EXP_Z_M, EXP_P_M, SAVE_EXP_P_M, EXP_CONTROL_M, EXP_END_M, SAVE_EXP_M,
MAKE_COMPARE, COMP, COMPARE_RESULT,
INFO_RESULT, SHOW_RESULT, FAIL_STATE);
type exponentiator_states is (FIRST_RUN, NOP,
READ_DATA_BASE, READ_DATA_MODULUS, READ_DATA_EXPONENT, READ_DATA_RESIDUUM,
COUNT_POWER, EXP_Z, SAVE_EXP_Z, EXP_P, SAVE_EXP_P, EXP_CONTROL, EXP_END, SAVE_EXP_MULT,
INFO_RESULT, SHOW_RESULT);
 
type fin_data_ctrl_states is (NOP, PAD_FAIL, PAD_FAIL_NOP, PAD_FAIL_DECODE,
DECODE_IN, READ_DATA, DECODE_READ, DECODE_READ_PROP, MAKE_FINALIZE, OUTPUT_DATA, INFO_STATE,
TEMPORARY_STATE, DATA_TO_OUT_PROPAGATE, DATA_TO_OUT_PROPAGATE2, MOVE_DATA, MOVE_OUTPUT_DATA);
 
---- mnemonics for finalizer
constant mn_read_hash_m : STD_LOGIC_VECTOR(7 downto 0) := "00000001";
constant mn_read_c1 : STD_LOGIC_VECTOR(7 downto 0) := "00000010";
constant mn_read_n : STD_LOGIC_VECTOR(7 downto 0) := "00000011";
constant mn_read_e : STD_LOGIC_VECTOR(7 downto 0) := "00000100";
constant mn_read_d2 : STD_LOGIC_VECTOR(7 downto 0) := "00000110";
constant mn_read_cinv : STD_LOGIC_VECTOR(7 downto 0) := "00000111";
constant mn_finalize : STD_LOGIC_VECTOR(7 downto 0) := "00001000";
constant mn_show_result : STD_LOGIC_VECTOR(7 downto 0) := "00001001";
constant mn_show_status : STD_LOGIC_VECTOR(7 downto 0) := "00001010";
constant mn_prepare_for_data : STD_LOGIC_VECTOR(7 downto 0) := "00001011";
---- mnemonics for exponentiator
constant mn_read_base : STD_LOGIC_VECTOR(2 downto 0) := "000";
constant mn_read_modulus : STD_LOGIC_VECTOR(2 downto 0) := "001";
constant mn_read_exponent : STD_LOGIC_VECTOR(2 downto 0) := "010";
constant mn_read_residuum : STD_LOGIC_VECTOR(2 downto 0) := "011";
constant mn_count_power : STD_LOGIC_VECTOR(2 downto 0) := "100";
constant mn_show_result : STD_LOGIC_VECTOR(2 downto 0) := "101";
constant mn_show_status : STD_LOGIC_VECTOR(2 downto 0) := "110";
constant mn_prepare_for_data : STD_LOGIC_VECTOR(2 downto 0) := "111";
 
---- addresses for memory data
constant addr_hashM : STD_LOGIC_VECTOR(3 downto 0) := "0000";
constant addr_c1 : STD_LOGIC_VECTOR(3 downto 0) := "0001";
constant addr_N : STD_LOGIC_VECTOR(3 downto 0) := "0010";
constant addr_E : STD_LOGIC_VECTOR(3 downto 0) := "0011";
constant addr_d2 : STD_LOGIC_VECTOR(3 downto 0) := "0100";
constant addr_c2 : STD_LOGIC_VECTOR(3 downto 0) := "0101";
constant addr_c : STD_LOGIC_VECTOR(3 downto 0) := "0110";
constant addr_hashMc : STD_LOGIC_VECTOR(3 downto 0) := "0111";
constant addr_cinv : STD_LOGIC_VECTOR(3 downto 0) := "1000";
constant addr_one : STD_LOGIC_VECTOR(3 downto 0) := "1001";
constant addr_unused : STD_LOGIC_VECTOR(3 downto 0) := "1101";
constant addr_z : STD_LOGIC_VECTOR(3 downto 0) := "1110";
constant addr_p : STD_LOGIC_VECTOR(3 downto 0) := "1111";
constant addr_base : STD_LOGIC_VECTOR(3 downto 0) := "0000";
constant addr_modulus : STD_LOGIC_VECTOR(3 downto 0) := "0010";
constant addr_exponent : STD_LOGIC_VECTOR(3 downto 0) := "0100";
constant addr_power : STD_LOGIC_VECTOR(3 downto 0) := "0101";
constant addr_residuum : STD_LOGIC_VECTOR(3 downto 0) := "1000";
constant addr_one : STD_LOGIC_VECTOR(3 downto 0) := "1001";
constant addr_unused : STD_LOGIC_VECTOR(3 downto 0) := "1101";
constant addr_z : STD_LOGIC_VECTOR(3 downto 0) := "1110";
constant addr_p : STD_LOGIC_VECTOR(3 downto 0) := "1111";
 
---- help_statuses_for_clarity
constant stat_all_data_readed : STD_LOGIC_VECTOR(5 downto 0) := "111111";
/trunk/rtl/vhdl/commons/properties_64bit.vhd
62,45 → 62,35
 
type multiplier_states is (NOP, CALCULATE_START, STOP);
 
type finalizer_states is (FIRST_RUN, NOP,
READ_DATA_HASH_M, READ_DATA_C1, READ_DATA_N, READ_DATA_E, READ_DATA_D2, READ_DATA_CINV,
COUNT_C2, EXP_Z_C2, SAVE_EXP_Z_C2, EXP_P_C2, SAVE_EXP_P_C2, EXP_CONTROL_C2, EXP_END_C2, SAVE_EXP_MULT_C2,
COUNT_Cinv, MULT_CINV, SAVE_MULT_CINV,
COUNT_C, MULT_C, SAVE_MULT_C,
COUNT_M, EXP_Z_M, SAVE_EXP_Z_M, EXP_P_M, SAVE_EXP_P_M, EXP_CONTROL_M, EXP_END_M, SAVE_EXP_M,
MAKE_COMPARE, COMP, COMPARE_RESULT,
INFO_RESULT, SHOW_RESULT, FAIL_STATE);
type exponentiator_states is (FIRST_RUN, NOP,
READ_DATA_BASE, READ_DATA_MODULUS, READ_DATA_EXPONENT, READ_DATA_RESIDUUM,
COUNT_POWER, EXP_Z, SAVE_EXP_Z, EXP_P, SAVE_EXP_P, EXP_CONTROL, EXP_END, SAVE_EXP_MULT,
INFO_RESULT, SHOW_RESULT);
 
type fin_data_ctrl_states is (NOP, PAD_FAIL, PAD_FAIL_NOP, PAD_FAIL_DECODE,
DECODE_IN, READ_DATA, DECODE_READ, DECODE_READ_PROP, MAKE_FINALIZE, OUTPUT_DATA, INFO_STATE,
TEMPORARY_STATE, DATA_TO_OUT_PROPAGATE, DATA_TO_OUT_PROPAGATE2, MOVE_DATA, MOVE_OUTPUT_DATA);
 
---- mnemonics for finalizer
constant mn_read_hash_m : STD_LOGIC_VECTOR(7 downto 0) := "00000001";
constant mn_read_c1 : STD_LOGIC_VECTOR(7 downto 0) := "00000010";
constant mn_read_n : STD_LOGIC_VECTOR(7 downto 0) := "00000011";
constant mn_read_e : STD_LOGIC_VECTOR(7 downto 0) := "00000100";
constant mn_read_d2 : STD_LOGIC_VECTOR(7 downto 0) := "00000110";
constant mn_read_cinv : STD_LOGIC_VECTOR(7 downto 0) := "00000111";
constant mn_finalize : STD_LOGIC_VECTOR(7 downto 0) := "00001000";
constant mn_show_result : STD_LOGIC_VECTOR(7 downto 0) := "00001001";
constant mn_show_status : STD_LOGIC_VECTOR(7 downto 0) := "00001010";
constant mn_prepare_for_data : STD_LOGIC_VECTOR(7 downto 0) := "00001011";
---- mnemonics for exponentiator
constant mn_read_base : STD_LOGIC_VECTOR(2 downto 0) := "000";
constant mn_read_modulus : STD_LOGIC_VECTOR(2 downto 0) := "001";
constant mn_read_exponent : STD_LOGIC_VECTOR(2 downto 0) := "010";
constant mn_read_residuum : STD_LOGIC_VECTOR(2 downto 0) := "011";
constant mn_count_power : STD_LOGIC_VECTOR(2 downto 0) := "100";
constant mn_show_result : STD_LOGIC_VECTOR(2 downto 0) := "101";
constant mn_show_status : STD_LOGIC_VECTOR(2 downto 0) := "110";
constant mn_prepare_for_data : STD_LOGIC_VECTOR(2 downto 0) := "111";
 
---- addresses for memory data
constant addr_hashM : STD_LOGIC_VECTOR(3 downto 0) := "0000";
constant addr_c1 : STD_LOGIC_VECTOR(3 downto 0) := "0001";
constant addr_N : STD_LOGIC_VECTOR(3 downto 0) := "0010";
constant addr_E : STD_LOGIC_VECTOR(3 downto 0) := "0011";
constant addr_d2 : STD_LOGIC_VECTOR(3 downto 0) := "0100";
constant addr_c2 : STD_LOGIC_VECTOR(3 downto 0) := "0101";
constant addr_c : STD_LOGIC_VECTOR(3 downto 0) := "0110";
constant addr_hashMc : STD_LOGIC_VECTOR(3 downto 0) := "0111";
constant addr_cinv : STD_LOGIC_VECTOR(3 downto 0) := "1000";
constant addr_one : STD_LOGIC_VECTOR(3 downto 0) := "1001";
constant addr_unused : STD_LOGIC_VECTOR(3 downto 0) := "1101";
constant addr_z : STD_LOGIC_VECTOR(3 downto 0) := "1110";
constant addr_p : STD_LOGIC_VECTOR(3 downto 0) := "1111";
constant addr_base : STD_LOGIC_VECTOR(3 downto 0) := "0000";
constant addr_modulus : STD_LOGIC_VECTOR(3 downto 0) := "0010";
constant addr_exponent : STD_LOGIC_VECTOR(3 downto 0) := "0100";
constant addr_power : STD_LOGIC_VECTOR(3 downto 0) := "0101";
constant addr_residuum : STD_LOGIC_VECTOR(3 downto 0) := "1000";
constant addr_one : STD_LOGIC_VECTOR(3 downto 0) := "1001";
constant addr_unused : STD_LOGIC_VECTOR(3 downto 0) := "1101";
constant addr_z : STD_LOGIC_VECTOR(3 downto 0) := "1110";
constant addr_p : STD_LOGIC_VECTOR(3 downto 0) := "1111";
 
---- help_statuses_for_clarity
constant stat_all_data_readed : STD_LOGIC_VECTOR(5 downto 0) := "111111";
/trunk/rtl/vhdl/commons/properties.vhd
61,45 → 61,35
 
type multiplier_states is (NOP, CALCULATE_START, STOP);
 
type finalizer_states is (FIRST_RUN, NOP,
READ_DATA_HASH_M, READ_DATA_C1, READ_DATA_N, READ_DATA_E, READ_DATA_D2, READ_DATA_CINV,
COUNT_C2, EXP_Z_C2, SAVE_EXP_Z_C2, EXP_P_C2, SAVE_EXP_P_C2, EXP_CONTROL_C2, EXP_END_C2, SAVE_EXP_MULT_C2,
COUNT_Cinv, MULT_CINV, SAVE_MULT_CINV,
COUNT_C, MULT_C, SAVE_MULT_C,
COUNT_M, EXP_Z_M, SAVE_EXP_Z_M, EXP_P_M, SAVE_EXP_P_M, EXP_CONTROL_M, EXP_END_M, SAVE_EXP_M,
MAKE_COMPARE, COMP, COMPARE_RESULT,
INFO_RESULT, SHOW_RESULT, FAIL_STATE);
type exponentiator_states is (FIRST_RUN, NOP,
READ_DATA_BASE, READ_DATA_MODULUS, READ_DATA_EXPONENT, READ_DATA_RESIDUUM,
COUNT_POWER, EXP_Z, SAVE_EXP_Z, EXP_P, SAVE_EXP_P, EXP_CONTROL, EXP_END, SAVE_EXP_MULT,
INFO_RESULT, SHOW_RESULT);
 
type fin_data_ctrl_states is (NOP, PAD_FAIL, PAD_FAIL_NOP, PAD_FAIL_DECODE,
DECODE_IN, READ_DATA, DECODE_READ, DECODE_READ_PROP, MAKE_FINALIZE, OUTPUT_DATA, INFO_STATE,
TEMPORARY_STATE, DATA_TO_OUT_PROPAGATE, DATA_TO_OUT_PROPAGATE2, MOVE_DATA, MOVE_OUTPUT_DATA);
 
---- mnemonics for finalizer
constant mn_read_hash_m : STD_LOGIC_VECTOR(7 downto 0) := "00000001";
constant mn_read_c1 : STD_LOGIC_VECTOR(7 downto 0) := "00000010";
constant mn_read_n : STD_LOGIC_VECTOR(7 downto 0) := "00000011";
constant mn_read_e : STD_LOGIC_VECTOR(7 downto 0) := "00000100";
constant mn_read_d2 : STD_LOGIC_VECTOR(7 downto 0) := "00000110";
constant mn_read_cinv : STD_LOGIC_VECTOR(7 downto 0) := "00000111";
constant mn_finalize : STD_LOGIC_VECTOR(7 downto 0) := "00001000";
constant mn_show_result : STD_LOGIC_VECTOR(7 downto 0) := "00001001";
constant mn_show_status : STD_LOGIC_VECTOR(7 downto 0) := "00001010";
constant mn_prepare_for_data : STD_LOGIC_VECTOR(7 downto 0) := "00001011";
---- mnemonics for exponentiator
constant mn_read_base : STD_LOGIC_VECTOR(2 downto 0) := "000";
constant mn_read_modulus : STD_LOGIC_VECTOR(2 downto 0) := "001";
constant mn_read_exponent : STD_LOGIC_VECTOR(2 downto 0) := "010";
constant mn_read_residuum : STD_LOGIC_VECTOR(2 downto 0) := "011";
constant mn_count_power : STD_LOGIC_VECTOR(2 downto 0) := "100";
constant mn_show_result : STD_LOGIC_VECTOR(2 downto 0) := "101";
constant mn_show_status : STD_LOGIC_VECTOR(2 downto 0) := "110";
constant mn_prepare_for_data : STD_LOGIC_VECTOR(2 downto 0) := "111";
 
---- addresses for memory data
constant addr_hashM : STD_LOGIC_VECTOR(3 downto 0) := "0000";
constant addr_c1 : STD_LOGIC_VECTOR(3 downto 0) := "0001";
constant addr_N : STD_LOGIC_VECTOR(3 downto 0) := "0010";
constant addr_E : STD_LOGIC_VECTOR(3 downto 0) := "0011";
constant addr_d2 : STD_LOGIC_VECTOR(3 downto 0) := "0100";
constant addr_c2 : STD_LOGIC_VECTOR(3 downto 0) := "0101";
constant addr_c : STD_LOGIC_VECTOR(3 downto 0) := "0110";
constant addr_hashMc : STD_LOGIC_VECTOR(3 downto 0) := "0111";
constant addr_cinv : STD_LOGIC_VECTOR(3 downto 0) := "1000";
constant addr_one : STD_LOGIC_VECTOR(3 downto 0) := "1001";
constant addr_unused : STD_LOGIC_VECTOR(3 downto 0) := "1101";
constant addr_z : STD_LOGIC_VECTOR(3 downto 0) := "1110";
constant addr_p : STD_LOGIC_VECTOR(3 downto 0) := "1111";
constant addr_base : STD_LOGIC_VECTOR(3 downto 0) := "0000";
constant addr_modulus : STD_LOGIC_VECTOR(3 downto 0) := "0010";
constant addr_exponent : STD_LOGIC_VECTOR(3 downto 0) := "0100";
constant addr_power : STD_LOGIC_VECTOR(3 downto 0) := "0101";
constant addr_residuum : STD_LOGIC_VECTOR(3 downto 0) := "1000";
constant addr_one : STD_LOGIC_VECTOR(3 downto 0) := "1001";
constant addr_unused : STD_LOGIC_VECTOR(3 downto 0) := "1101";
constant addr_z : STD_LOGIC_VECTOR(3 downto 0) := "1110";
constant addr_p : STD_LOGIC_VECTOR(3 downto 0) := "1111";
 
---- help_statuses_for_clarity
constant stat_all_data_readed : STD_LOGIC_VECTOR(5 downto 0) := "111111";
/trunk/rtl/vhdl/commons/Reg.vhd
0,0 → 1,84
-----------------------------------------------------------------------
---- ----
---- Montgomery modular multiplier and exponentiator ----
---- ----
---- This file is part of the Montgomery modular multiplier ----
---- and exponentiator project ----
---- http://opencores.org/project,mod_mult_exp ----
---- ----
---- Description: ----
---- Register - nothing special. ----
---- To Do: ----
---- ----
---- Author(s): ----
---- - Krzysztof Gajewski, gajos@opencores.org ----
---- k.gajewski@gmail.com ----
---- ----
-----------------------------------------------------------------------
---- ----
---- Copyright (C) 2014 Authors and OPENCORES.ORG ----
---- ----
---- 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.opencores.org/lgpl.shtml ----
---- ----
-----------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use work.properties.ALL;
 
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;
 
-- Uncomment the following library declaration if instantiating
-- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
 
entity Reg is
generic(word_size : integer := WORD_LENGTH);
port(
input : in STD_LOGIC_VECTOR(word_size - 1 downto 0);
output : out STD_LOGIC_VECTOR(word_size - 1 downto 0);
enable : in STD_LOGIC;
clk : in STD_LOGIC;
reset : in STD_LOGIC
);
end Reg;
 
architecture Behavioral of Reg is
 
signal reg : STD_LOGIC_VECTOR(word_size - 1 downto 0);
 
begin
clock : process(clk, reset)
begin
if (reset = '1') then
reg <= (others => '0');
elsif (clk = '1' and clk'Event) then
if (enable = '1') then
reg <= input;
end if;
end if;
end process clock;
output <= reg;
end Behavioral;
 
/trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory_xmdf.tcl
0,0 → 1,263
# The package naming convention is <core_name>_xmdf
package provide blockMemory_xmdf 1.0
 
# This includes some utilities that support common XMDF operations
package require utilities_xmdf
 
# Define a namespace for this package. The name of the name space
# is <core_name>_xmdf
namespace eval ::blockMemory_xmdf {
# Use this to define any statics
}
 
# Function called by client to rebuild the params and port arrays
# Optional when the use context does not require the param or ports
# arrays to be available.
proc ::blockMemory_xmdf::xmdfInit { instance } {
# Variable containing name of library into which module is compiled
# Recommendation: <module_name>
# Required
utilities_xmdf::xmdfSetData $instance Module Attributes Name blockMemory
}
# ::blockMemory_xmdf::xmdfInit
 
# Function called by client to fill in all the xmdf* data variables
# based on the current settings of the parameters
proc ::blockMemory_xmdf::xmdfApplyParams { instance } {
 
set fcount 0
# Array containing libraries that are assumed to exist
# Examples include unisim and xilinxcorelib
# Optional
# In this example, we assume that the unisim library will
# be available to the simulation and synthesis tool
utilities_xmdf::xmdfSetData $instance FileSet $fcount type logical_library
utilities_xmdf::xmdfSetData $instance FileSet $fcount logical_library unisim
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/blk_mem_gen_v7_1_readme.txt
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/doc/blk_mem_gen_ds512.pdf
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/doc/blk_mem_gen_v7_1_vinfo.html
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/example_design/blockMemory_exdes.ucf
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/example_design/blockMemory_exdes.vhd
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/example_design/blockMemory_exdes.xdc
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/example_design/blockMemory_prod.vhd
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/implement.bat
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/implement.sh
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/planAhead_ise.bat
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/planAhead_ise.sh
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/planAhead_ise.tcl
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/planAhead_rdn.bat
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/planAhead_rdn.sh
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/planAhead_rdn.tcl
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/xst.prj
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/xst.scr
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/addr_gen.vhd
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/blockMemory_synth.vhd
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/blockMemory_tb.vhd
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/bmg_stim_gen.vhd
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/bmg_tb_pkg.vhd
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/checker.vhd
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/data_gen.vhd
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/simcmds.tcl
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/simulate_isim.bat
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/simulate_mti.bat
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/simulate_mti.do
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/simulate_mti.sh
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/simulate_ncsim.sh
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/simulate_vcs.sh
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/ucli_commands.key
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/vcs_session.tcl
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/wave_mti.do
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/wave_ncsim.sv
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/random.vhd
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/simcmds.tcl
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/simulate_isim.bat
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/simulate_mti.bat
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/simulate_mti.do
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/simulate_mti.sh
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/simulate_ncsim.sh
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/simulate_vcs.sh
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/ucli_commands.key
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/vcs_session.tcl
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/wave_mti.do
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/wave_ncsim.sv
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory.asy
utilities_xmdf::xmdfSetData $instance FileSet $fcount type asy
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory.ngc
utilities_xmdf::xmdfSetData $instance FileSet $fcount type ngc
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory.sym
utilities_xmdf::xmdfSetData $instance FileSet $fcount type symbol
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory.vhd
utilities_xmdf::xmdfSetData $instance FileSet $fcount type vhdl
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory.vho
utilities_xmdf::xmdfSetData $instance FileSet $fcount type vhdl_template
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory.xco
utilities_xmdf::xmdfSetData $instance FileSet $fcount type coregen_ip
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory_xmdf.tcl
utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path summary.log
utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
incr fcount
 
utilities_xmdf::xmdfSetData $instance FileSet $fcount associated_module blockMemory
incr fcount
 
}
 
# ::gen_comp_name_xmdf::xmdfApplyParams
/trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/example_design/blockMemory_exdes.ucf
0,0 → 1,57
################################################################################
#
# (c) Copyright 2002 - 2010 Xilinx, Inc. All rights reserved.
#
# This file contains confidential and proprietary information
# of Xilinx, Inc. and is protected under U.S. and
# international copyright and other intellectual property
# laws.
#
# DISCLAIMER
# This disclaimer is not a license and does not grant any
# rights to the materials distributed herewith. Except as
# otherwise provided in a valid license issued to you by
# Xilinx, and to the maximum extent permitted by applicable
# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
# (2) Xilinx shall not be liable (whether in contract or tort,
# including negligence, or under any other theory of
# liability) for any loss or damage of any kind or nature
# related to, arising under or in connection with these
# materials, including for any direct, or any indirect,
# special, incidental, or consequential loss or damage
# (including loss of data, profits, goodwill, or any type of
# loss or damage suffered as a result of any action brought
# by a third party) even if such damage or loss was
# reasonably foreseeable or Xilinx had been advised of the
# possibility of the same.
#
# CRITICAL APPLICATIONS
# Xilinx products are not designed or intended to be fail-
# safe, or for use in any application requiring fail-safe
# performance, such as life-support or safety devices or
# systems, Class III medical devices, nuclear facilities,
# applications related to the deployment of airbags, or any
# other applications that could lead to death, personal
# injury, or severe property or environmental damage
# (individually and collectively, "Critical
# Applications"). Customer assumes the sole risk and
# liability of any use of Xilinx products in Critical
# Applications, subject only to applicable laws and
# regulations governing limitations on product liability.
#
# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
# PART OF THIS FILE AT ALL TIMES.
#
################################################################################
 
# Tx Core Period Constraint. This constraint can be modified, and is
# valid as long as it is met after place and route.
NET "CLKA" TNM_NET = "CLKA";
 
TIMESPEC "TS_CLKA" = PERIOD "CLKA" 25 MHZ;
 
################################################################################
/trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/example_design/blockMemory_prod.vhd
0,0 → 1,270
 
 
 
 
 
--------------------------------------------------------------------------------
--
-- BLK MEM GEN v7.1 Core - Top-level wrapper
--
--------------------------------------------------------------------------------
--
-- (c) Copyright 2006-2011 Xilinx, Inc. All rights reserved.
--
-- This file contains confidential and proprietary information
-- of Xilinx, Inc. and is protected under U.S. and
-- international copyright and other intellectual property
-- laws.
--
-- DISCLAIMER
-- This disclaimer is not a license and does not grant any
-- rights to the materials distributed herewith. Except as
-- otherwise provided in a valid license issued to you by
-- Xilinx, and to the maximum extent permitted by applicable
-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
-- (2) Xilinx shall not be liable (whether in contract or tort,
-- including negligence, or under any other theory of
-- liability) for any loss or damage of any kind or nature
-- related to, arising under or in connection with these
-- materials, including for any direct, or any indirect,
-- special, incidental, or consequential loss or damage
-- (including loss of data, profits, goodwill, or any type of
-- loss or damage suffered as a result of any action brought
-- by a third party) even if such damage or loss was
-- reasonably foreseeable or Xilinx had been advised of the
-- possibility of the same.
--
-- CRITICAL APPLICATIONS
-- Xilinx products are not designed or intended to be fail-
-- safe, or for use in any application requiring fail-safe
-- performance, such as life-support or safety devices or
-- systems, Class III medical devices, nuclear facilities,
-- applications related to the deployment of airbags, or any
-- other applications that could lead to death, personal
-- injury, or severe property or environmental damage
-- (individually and collectively, "Critical
-- Applications"). Customer assumes the sole risk and
-- liability of any use of Xilinx products in Critical
-- Applications, subject only to applicable laws and
-- regulations governing limitations on product liability.
--
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
-- PART OF THIS FILE AT ALL TIMES.
--
--------------------------------------------------------------------------------
--
-- Filename: blockMemory_prod.vhd
--
-- Description:
-- This is the top-level BMG wrapper (over BMG core).
--
--------------------------------------------------------------------------------
-- Author: IP Solutions Division
--
-- History: August 31, 2005 - First Release
--------------------------------------------------------------------------------
--
-- Configured Core Parameter Values:
-- (Refer to the SIM Parameters table in the datasheet for more information on
-- the these parameters.)
-- C_FAMILY : spartan3e
-- C_XDEVICEFAMILY : spartan3e
-- C_INTERFACE_TYPE : 0
-- C_ENABLE_32BIT_ADDRESS : 0
-- C_AXI_TYPE : 1
-- C_AXI_SLAVE_TYPE : 0
-- C_AXI_ID_WIDTH : 4
-- C_MEM_TYPE : 0
-- C_BYTE_SIZE : 9
-- C_ALGORITHM : 0
-- C_PRIM_TYPE : 6
-- C_LOAD_INIT_FILE : 0
-- C_INIT_FILE_NAME : no_coe_file_loaded
-- C_USE_DEFAULT_DATA : 0
-- C_DEFAULT_DATA : 0
-- C_RST_TYPE : SYNC
-- C_HAS_RSTA : 1
-- C_RST_PRIORITY_A : CE
-- C_RSTRAM_A : 0
-- C_INITA_VAL : 0
-- C_HAS_ENA : 0
-- C_HAS_REGCEA : 0
-- C_USE_BYTE_WEA : 0
-- C_WEA_WIDTH : 1
-- C_WRITE_MODE_A : READ_FIRST
-- C_WRITE_WIDTH_A : 32
-- C_READ_WIDTH_A : 32
-- C_WRITE_DEPTH_A : 16
-- C_READ_DEPTH_A : 16
-- C_ADDRA_WIDTH : 4
-- C_HAS_RSTB : 0
-- C_RST_PRIORITY_B : CE
-- C_RSTRAM_B : 0
-- C_INITB_VAL : 0
-- C_HAS_ENB : 0
-- C_HAS_REGCEB : 0
-- C_USE_BYTE_WEB : 0
-- C_WEB_WIDTH : 1
-- C_WRITE_MODE_B : WRITE_FIRST
-- C_WRITE_WIDTH_B : 32
-- C_READ_WIDTH_B : 32
-- C_WRITE_DEPTH_B : 16
-- C_READ_DEPTH_B : 16
-- C_ADDRB_WIDTH : 4
-- C_HAS_MEM_OUTPUT_REGS_A : 0
-- C_HAS_MEM_OUTPUT_REGS_B : 0
-- C_HAS_MUX_OUTPUT_REGS_A : 0
-- C_HAS_MUX_OUTPUT_REGS_B : 0
-- C_HAS_SOFTECC_INPUT_REGS_A : 0
-- C_HAS_SOFTECC_OUTPUT_REGS_B : 0
-- C_MUX_PIPELINE_STAGES : 0
-- C_USE_ECC : 0
-- C_USE_SOFTECC : 0
-- C_HAS_INJECTERR : 0
-- C_SIM_COLLISION_CHECK : ALL
-- C_COMMON_CLK : 0
-- C_DISABLE_WARN_BHV_COLL : 0
-- C_DISABLE_WARN_BHV_RANGE : 0
 
--------------------------------------------------------------------------------
-- Library Declarations
--------------------------------------------------------------------------------
 
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
 
LIBRARY UNISIM;
USE UNISIM.VCOMPONENTS.ALL;
 
--------------------------------------------------------------------------------
-- Entity Declaration
--------------------------------------------------------------------------------
ENTITY blockMemory_prod IS
PORT (
--Port A
CLKA : IN STD_LOGIC;
RSTA : IN STD_LOGIC; --opt port
ENA : IN STD_LOGIC; --optional port
REGCEA : IN STD_LOGIC; --optional port
WEA : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
ADDRA : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
DINA : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
DOUTA : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
 
--Port B
CLKB : IN STD_LOGIC;
RSTB : IN STD_LOGIC; --opt port
ENB : IN STD_LOGIC; --optional port
REGCEB : IN STD_LOGIC; --optional port
WEB : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
ADDRB : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
DINB : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
DOUTB : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
 
--ECC
INJECTSBITERR : IN STD_LOGIC; --optional port
INJECTDBITERR : IN STD_LOGIC; --optional port
SBITERR : OUT STD_LOGIC; --optional port
DBITERR : OUT STD_LOGIC; --optional port
RDADDRECC : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --optional port
-- AXI BMG Input and Output Port Declarations
 
-- AXI Global Signals
S_ACLK : IN STD_LOGIC;
S_AXI_AWID : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
S_AXI_AWADDR : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
S_AXI_AWLEN : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
S_AXI_AWSIZE : IN STD_LOGIC_VECTOR(2 DOWNTO 0);
S_AXI_AWBURST : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
S_AXI_AWVALID : IN STD_LOGIC;
S_AXI_AWREADY : OUT STD_LOGIC;
S_AXI_WDATA : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
S_AXI_WSTRB : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
S_AXI_WLAST : IN STD_LOGIC;
S_AXI_WVALID : IN STD_LOGIC;
S_AXI_WREADY : OUT STD_LOGIC;
S_AXI_BID : OUT STD_LOGIC_VECTOR(3 DOWNTO 0):= (OTHERS => '0');
S_AXI_BRESP : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
S_AXI_BVALID : OUT STD_LOGIC;
S_AXI_BREADY : IN STD_LOGIC;
 
-- AXI Full/Lite Slave Read (Write side)
S_AXI_ARID : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
S_AXI_ARADDR : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
S_AXI_ARLEN : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
S_AXI_ARSIZE : IN STD_LOGIC_VECTOR(2 DOWNTO 0);
S_AXI_ARBURST : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
S_AXI_ARVALID : IN STD_LOGIC;
S_AXI_ARREADY : OUT STD_LOGIC;
S_AXI_RID : OUT STD_LOGIC_VECTOR(3 DOWNTO 0):= (OTHERS => '0');
S_AXI_RDATA : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
S_AXI_RRESP : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
S_AXI_RLAST : OUT STD_LOGIC;
S_AXI_RVALID : OUT STD_LOGIC;
S_AXI_RREADY : IN STD_LOGIC;
 
-- AXI Full/Lite Sideband Signals
S_AXI_INJECTSBITERR : IN STD_LOGIC;
S_AXI_INJECTDBITERR : IN STD_LOGIC;
S_AXI_SBITERR : OUT STD_LOGIC;
S_AXI_DBITERR : OUT STD_LOGIC;
S_AXI_RDADDRECC : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
S_ARESETN : IN STD_LOGIC
 
 
);
 
END blockMemory_prod;
 
 
ARCHITECTURE xilinx OF blockMemory_prod IS
 
COMPONENT blockMemory_exdes IS
PORT (
--Port A
RSTA : IN STD_LOGIC; --opt port
WEA : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
ADDRA : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
DINA : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
DOUTA : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
 
CLKA : IN STD_LOGIC
 
 
 
 
);
END COMPONENT;
 
BEGIN
 
bmg0 : blockMemory_exdes
PORT MAP (
--Port A
RSTA => RSTA,
WEA => WEA,
ADDRA => ADDRA,
DINA => DINA,
DOUTA => DOUTA,
 
CLKA => CLKA
 
 
 
);
END xilinx;
/trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/example_design/blockMemory_exdes.xdc
0,0 → 1,54
################################################################################
#
# (c) Copyright 2002 - 2011 Xilinx, Inc. All rights reserved.
#
# This file contains confidential and proprietary information
# of Xilinx, Inc. and is protected under U.S. and
# international copyright and other intellectual property
# laws.
#
# DISCLAIMER
# This disclaimer is not a license and does not grant any
# rights to the materials distributed herewith. Except as
# otherwise provided in a valid license issued to you by
# Xilinx, and to the maximum extent permitted by applicable
# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
# (2) Xilinx shall not be liable (whether in contract or tort,
# including negligence, or under any other theory of
# liability) for any loss or damage of any kind or nature
# related to, arising under or in connection with these
# materials, including for any direct, or any indirect,
# special, incidental, or consequential loss or damage
# (including loss of data, profits, goodwill, or any type of
# loss or damage suffered as a result of any action brought
# by a third party) even if such damage or loss was
# reasonably foreseeable or Xilinx had been advised of the
# possibility of the same.
#
# CRITICAL APPLICATIONS
# Xilinx products are not designed or intended to be fail-
# safe, or for use in any application requiring fail-safe
# performance, such as life-support or safety devices or
# systems, Class III medical devices, nuclear facilities,
# applications related to the deployment of airbags, or any
# other applications that could lead to death, personal
# injury, or severe property or environmental damage
# (individually and collectively, "Critical
# Applications"). Customer assumes the sole risk and
# liability of any use of Xilinx products in Critical
# Applications, subject only to applicable laws and
# regulations governing limitations on product liability.
#
# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
# PART OF THIS FILE AT ALL TIMES.
#
################################################################################
 
# Core Period Constraint. This constraint can be modified, and is
# valid as long as it is met after place and route.
create_clock -name "TS_CLKA" -period 20.0 [ get_ports CLKA ]
################################################################################
/trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/example_design/blockMemory_exdes.vhd
0,0 → 1,166
 
 
 
 
--------------------------------------------------------------------------------
--
-- BLK MEM GEN v7.1 Core - Top-level core wrapper
--
--------------------------------------------------------------------------------
--
-- (c) Copyright 2006-2010 Xilinx, Inc. All rights reserved.
--
-- This file contains confidential and proprietary information
-- of Xilinx, Inc. and is protected under U.S. and
-- international copyright and other intellectual property
-- laws.
--
-- DISCLAIMER
-- This disclaimer is not a license and does not grant any
-- rights to the materials distributed herewith. Except as
-- otherwise provided in a valid license issued to you by
-- Xilinx, and to the maximum extent permitted by applicable
-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
-- (2) Xilinx shall not be liable (whether in contract or tort,
-- including negligence, or under any other theory of
-- liability) for any loss or damage of any kind or nature
-- related to, arising under or in connection with these
-- materials, including for any direct, or any indirect,
-- special, incidental, or consequential loss or damage
-- (including loss of data, profits, goodwill, or any type of
-- loss or damage suffered as a result of any action brought
-- by a third party) even if such damage or loss was
-- reasonably foreseeable or Xilinx had been advised of the
-- possibility of the same.
--
-- CRITICAL APPLICATIONS
-- Xilinx products are not designed or intended to be fail-
-- safe, or for use in any application requiring fail-safe
-- performance, such as life-support or safety devices or
-- systems, Class III medical devices, nuclear facilities,
-- applications related to the deployment of airbags, or any
-- other applications that could lead to death, personal
-- injury, or severe property or environmental damage
-- (individually and collectively, "Critical
-- Applications"). Customer assumes the sole risk and
-- liability of any use of Xilinx products in Critical
-- Applications, subject only to applicable laws and
-- regulations governing limitations on product liability.
--
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
-- PART OF THIS FILE AT ALL TIMES.
 
--------------------------------------------------------------------------------
--
-- Filename: blockMemory_exdes.vhd
--
-- Description:
-- This is the actual BMG core wrapper.
--
--------------------------------------------------------------------------------
-- Author: IP Solutions Division
--
-- History: August 31, 2005 - First Release
--------------------------------------------------------------------------------
--
--------------------------------------------------------------------------------
-- Library Declarations
--------------------------------------------------------------------------------
 
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
 
LIBRARY UNISIM;
USE UNISIM.VCOMPONENTS.ALL;
 
--------------------------------------------------------------------------------
-- Entity Declaration
--------------------------------------------------------------------------------
ENTITY blockMemory_exdes IS
PORT (
--Inputs - Port A
RSTA : IN STD_LOGIC; --opt port
WEA : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
ADDRA : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
DINA : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
DOUTA : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
CLKA : IN STD_LOGIC
 
 
);
 
END blockMemory_exdes;
 
 
ARCHITECTURE xilinx OF blockMemory_exdes IS
 
COMPONENT BUFG IS
PORT (
I : IN STD_ULOGIC;
O : OUT STD_ULOGIC
);
END COMPONENT;
 
COMPONENT blockMemory IS
PORT (
--Port A
RSTA : IN STD_LOGIC; --opt port
WEA : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
ADDRA : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
DINA : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
DOUTA : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
 
CLKA : IN STD_LOGIC
 
 
 
);
END COMPONENT;
 
SIGNAL CLKA_buf : STD_LOGIC;
SIGNAL CLKB_buf : STD_LOGIC;
SIGNAL S_ACLK_buf : STD_LOGIC;
 
BEGIN
 
bufg_A : BUFG
PORT MAP (
I => CLKA,
O => CLKA_buf
);
 
 
 
bmg0 : blockMemory
PORT MAP (
--Port A
RSTA => RSTA,
WEA => WEA,
ADDRA => ADDRA,
DINA => DINA,
DOUTA => DOUTA,
 
CLKA => CLKA_buf
 
 
);
 
END xilinx;
trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/example_design Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/random.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/random.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/random.vhd (revision 5) @@ -0,0 +1,112 @@ + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7_1 Core - Random Number Generator +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006_3010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- +-- Filename: random.vhd +-- +-- Description: +-- Random Generator +-- +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: Sep 12, 2011 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + + + + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + + +ENTITY RANDOM IS + GENERIC ( WIDTH : INTEGER := 32; + SEED : INTEGER :=2 + ); + + PORT ( + CLK : IN STD_LOGIC; + RST : IN STD_LOGIC; + EN : IN STD_LOGIC; + RANDOM_NUM : OUT STD_LOGIC_VECTOR (WIDTH-1 DOWNTO 0) --OUTPUT VECTOR + ); +END RANDOM; + +ARCHITECTURE BEHAVIORAL OF RANDOM IS +BEGIN + PROCESS(CLK) + VARIABLE RAND_TEMP : STD_LOGIC_VECTOR(WIDTH-1 DOWNTO 0):=CONV_STD_LOGIC_VECTOR(SEED,WIDTH); + VARIABLE TEMP : STD_LOGIC := '0'; + BEGIN + IF(RISING_EDGE(CLK)) THEN + IF(RST='1') THEN + RAND_TEMP := CONV_STD_LOGIC_VECTOR(SEED,WIDTH); + ELSE + IF(EN = '1') THEN + TEMP := RAND_TEMP(WIDTH-1) XOR RAND_TEMP(WIDTH-2); + RAND_TEMP(WIDTH-1 DOWNTO 1) := RAND_TEMP(WIDTH-2 DOWNTO 0); + RAND_TEMP(0) := TEMP; + END IF; + END IF; + END IF; + RANDOM_NUM <= RAND_TEMP; + END PROCESS; +END ARCHITECTURE; Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/vcs_session.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/vcs_session.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/vcs_session.tcl (revision 5) @@ -0,0 +1,83 @@ + + + + + + + + +#-------------------------------------------------------------------------------- +#-- +#-- BMG core Demo Testbench +#-- +#-------------------------------------------------------------------------------- +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +# Filename: vcs_session.tcl +# +# Description: +# This is the VCS wave form file. +# +#-------------------------------------------------------------------------------- +if { ![gui_is_db_opened -db {bmg_vcs.vpd}] } { + gui_open_db -design V1 -file bmg_vcs.vpd -nosource +} +gui_set_precision 1ps +gui_set_time_units 1ps + +gui_open_window Wave +gui_sg_create blockMemory_Group +gui_list_add_group -id Wave.1 {blockMemory_Group} + + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/status + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/RSTA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/CLKA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/ADDRA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/DINA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/WEA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/DOUTA + +gui_zoom -window Wave.1 -full Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/simcmds.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/simcmds.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/simcmds.tcl (revision 5) @@ -0,0 +1,63 @@ +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. + + + + + + + +wcfg new +isim set radix hex +wave add /blockMemory_tb/status + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/RSTA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/CLKA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/ADDRA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/DINA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/WEA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/DOUTA +run all +quit Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/simulate_mti.bat =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/simulate_mti.bat (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/simulate_mti.bat (revision 5) @@ -0,0 +1,3 @@ +#-------------------------------------------------------------------------------- + +vsim -c -do simulate_mti.do Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/wave_ncsim.sv =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/wave_ncsim.sv (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/wave_ncsim.sv (revision 5) @@ -0,0 +1,21 @@ + + + + + + + + + +window new WaveWindow -name "Waves for BMG Example Design" +waveform using "Waves for BMG Example Design" + + waveform add -signals /blockMemory_tb/status + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/RSTA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/CLKA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/ADDRA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/DINA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/WEA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/DOUTA + +console submit -using simulator -wait no "run" Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/ucli_commands.key =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/ucli_commands.key (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/ucli_commands.key (revision 5) @@ -0,0 +1,4 @@ +dump -file bmg_vcs.vpd -type VPD +dump -add blockMemory_tb +run +quit Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/simulate_mti.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/simulate_mti.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/simulate_mti.sh (revision 5) @@ -0,0 +1,3 @@ +#-------------------------------------------------------------------------------- + +vsim -c -do simulate_mti.do Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/simulate_ncsim.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/simulate_ncsim.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/simulate_ncsim.sh (revision 5) @@ -0,0 +1,70 @@ +#!/bin/sh +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +#-------------------------------------------------------------------------------- + + +mkdir work +echo "Compiling Core VHDL UNISIM/Behavioral model" +ncvhdl -v93 -work work ../../../blockMemory.vhd \ + ../../example_design/blockMemory_exdes.vhd + +echo "Compiling Test Bench Files" + +ncvhdl -v93 -work work ../bmg_tb_pkg.vhd +ncvhdl -v93 -work work ../random.vhd +ncvhdl -v93 -work work ../data_gen.vhd +ncvhdl -v93 -work work ../addr_gen.vhd +ncvhdl -v93 -work work ../checker.vhd +ncvhdl -v93 -work work ../bmg_stim_gen.vhd +ncvhdl -v93 -work work ../blockMemory_synth.vhd +ncvhdl -v93 -work work ../blockMemory_tb.vhd + +echo "Elaborating Design" +ncelab -access +rwc work.blockMemory_tb + +echo "Simulating Design" +ncsim -gui -input @"simvision -input wave_ncsim.sv" work.blockMemory_tb Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/simulate_vcs.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/simulate_vcs.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/simulate_vcs.sh (revision 5) @@ -0,0 +1,69 @@ +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +#-------------------------------------------------------------------------------- +#!/bin/sh +rm -rf simv* csrc DVEfiles AN.DB + +echo "Compiling Core VHDL UNISIM/Behavioral model" +vhdlan ../../../blockMemory.vhd +vhdlan ../../example_design/blockMemory_exdes.vhd + +echo "Compiling Test Bench Files" +vhdlan ../bmg_tb_pkg.vhd +vhdlan ../random.vhd +vhdlan ../data_gen.vhd +vhdlan ../addr_gen.vhd +vhdlan ../checker.vhd +vhdlan ../bmg_stim_gen.vhd +vhdlan ../blockMemory_synth.vhd +vhdlan ../blockMemory_tb.vhd + +echo "Elaborating Design" +vcs +vcs+lic+wait -debug blockMemory_tb + +echo "Simulating Design" +./simv -ucli -i ucli_commands.key +dve -session vcs_session.tcl Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/simulate_isim.bat =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/simulate_isim.bat (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/simulate_isim.bat (revision 5) @@ -0,0 +1,68 @@ +:: (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +:: +:: This file contains confidential and proprietary information +:: of Xilinx, Inc. and is protected under U.S. and +:: international copyright and other intellectual property +:: laws. +:: +:: DISCLAIMER +:: This disclaimer is not a license and does not grant any +:: rights to the materials distributed herewith. Except as +:: otherwise provided in a valid license issued to you by +:: Xilinx, and to the maximum extent permitted by applicable +:: law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +:: WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +:: AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +:: BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +:: INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +:: (2) Xilinx shall not be liable (whether in contract or tort, +:: including negligence, or under any other theory of +:: liability) for any loss or damage of any kind or nature +:: related to, arising under or in connection with these +:: materials, including for any direct, or any indirect, +:: special, incidental, or consequential loss or damage +:: (including loss of data, profits, goodwill, or any type of +:: loss or damage suffered as a result of any action brought +:: by a third party) even if such damage or loss was +:: reasonably foreseeable or Xilinx had been advised of the +:: possibility of the same. +:: +:: CRITICAL APPLICATIONS +:: Xilinx products are not designed or intended to be fail- +:: safe, or for use in any application requiring fail-safe +:: performance, such as life-support or safety devices or +:: systems, Class III medical devices, nuclear facilities, +:: applications related to the deployment of airbags, or any +:: other applications that could lead to death, personal +:: injury, or severe property or environmental damage +:: (individually and collectively, "Critical +:: Applications"). Customer assumes the sole risk and +:: liability of any use of Xilinx products in Critical +:: Applications, subject only to applicable laws and +:: regulations governing limitations on product liability. +:: +:: THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +:: PART OF THIS FILE AT ALL TIMES. +::-------------------------------------------------------------------------------- + + + +echo "Compiling Core VHDL UNISIM/Behavioral model" +vhpcomp -work work ..\..\..\blockMemory.vhd +vhpcomp -work work ..\..\example_design\blockMemory_exdes.vhd + +echo "Compiling Test Bench Files" + +vhpcomp -work work ..\bmg_tb_pkg.vhd +vhpcomp -work work ..\random.vhd +vhpcomp -work work ..\data_gen.vhd +vhpcomp -work work ..\addr_gen.vhd +vhpcomp -work work ..\checker.vhd +vhpcomp -work work ..\bmg_stim_gen.vhd +vhpcomp -work work ..\blockMemory_synth.vhd +vhpcomp -work work ..\blockMemory_tb.vhd + +fuse work.blockMemory_tb -L unisims -L xilinxcorelib -o blockMemory_tb.exe + + +.\blockMemory_tb.exe -gui -tclbatch simcmds.tcl Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/wave_mti.do =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/wave_mti.do (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/wave_mti.do (revision 5) @@ -0,0 +1,36 @@ + + + + + + + + +onerror {resume} +quietly WaveActivateNextPane {} 0 + + add wave -noupdate /blockMemory_tb/status + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/RSTA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/CLKA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/ADDRA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/DINA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/WEA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/DOUTA + +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {0 ps} 0} +configure wave -namecolwidth 197 +configure wave -valuecolwidth 106 +configure wave -justifyvalue left +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 1 +configure wave -griddelta 40 +configure wave -timeline 0 +configure wave -timelineunits ps +update +WaveRestoreZoom {0 ps} {9464063 ps} Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/simulate_mti.do =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/simulate_mti.do (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional/simulate_mti.do (revision 5) @@ -0,0 +1,74 @@ +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +#-------------------------------------------------------------------------------- + vlib work +vmap work work + +echo "Compiling Core VHDL UNISIM/Behavioral model" +vcom -work work ../../../blockMemory.vhd \ + ../../example_design/blockMemory_exdes.vhd + +echo "Compiling Test Bench Files" + +vcom -work work ../bmg_tb_pkg.vhd +vcom -work work ../random.vhd +vcom -work work ../data_gen.vhd +vcom -work work ../addr_gen.vhd +vcom -work work ../checker.vhd +vcom -work work ../bmg_stim_gen.vhd +vcom -work work ../blockMemory_synth.vhd +vcom -work work ../blockMemory_tb.vhd + +vsim -novopt -t ps -L XilinxCoreLib -L unisim work.blockMemory_tb + +#Disabled waveform to save the disk space +add log -r /* +#Ignore integer warnings at time 0 +set StdArithNoWarnings 1 +run 0 +set StdArithNoWarnings 0 + +run -all Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/functional Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/data_gen.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/data_gen.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/data_gen.vhd (revision 5) @@ -0,0 +1,140 @@ + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7_1 Core - Data Generator +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006_3010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- +-- Filename: data_gen.vhd +-- +-- Description: +-- Data Generator +-- +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: Sep 12, 2011 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + +LIBRARY work; +USE work.BMG_TB_PKG.ALL; + +ENTITY DATA_GEN IS + GENERIC ( DATA_GEN_WIDTH : INTEGER := 32; + DOUT_WIDTH : INTEGER := 32; + DATA_PART_CNT : INTEGER := 1; + SEED : INTEGER := 2 + ); + + PORT ( + CLK : IN STD_LOGIC; + RST : IN STD_LOGIC; + EN : IN STD_LOGIC; + DATA_OUT : OUT STD_LOGIC_VECTOR (DOUT_WIDTH-1 DOWNTO 0) --OUTPUT VECTOR + ); +END DATA_GEN; + +ARCHITECTURE DATA_GEN_ARCH OF DATA_GEN IS + CONSTANT LOOP_COUNT : INTEGER := DIVROUNDUP(DATA_GEN_WIDTH,8); + SIGNAL RAND_DATA : STD_LOGIC_VECTOR(8*LOOP_COUNT-1 DOWNTO 0); + SIGNAL LOCAL_DATA_OUT : STD_LOGIC_VECTOR(DATA_GEN_WIDTH-1 DOWNTO 0); + SIGNAL LOCAL_CNT : INTEGER :=1; + SIGNAL DATA_GEN_I : STD_LOGIC :='0'; +BEGIN + + LOCAL_DATA_OUT <= RAND_DATA(DATA_GEN_WIDTH-1 DOWNTO 0); + DATA_OUT <= LOCAL_DATA_OUT(((DOUT_WIDTH*LOCAL_CNT)-1) DOWNTO ((DOUT_WIDTH*LOCAL_CNT)-DOUT_WIDTH)); + DATA_GEN_I <= '0' WHEN (LOCAL_CNT < DATA_PART_CNT) ELSE EN; + + PROCESS(CLK) + BEGIN + IF(RISING_EDGE (CLK)) THEN + IF(EN ='1' AND (DATA_PART_CNT =1)) THEN + LOCAL_CNT <=1; + ELSIF(EN='1' AND (DATA_PART_CNT>1)) THEN + IF(LOCAL_CNT = 1) THEN + LOCAL_CNT <= LOCAL_CNT+1; + ELSIF(LOCAL_CNT < DATA_PART_CNT) THEN + LOCAL_CNT <= LOCAL_CNT+1; + ELSE + LOCAL_CNT <= 1; + END IF; + ELSE + LOCAL_CNT <= 1; + END IF; + END IF; + END PROCESS; + + RAND_GEN:FOR N IN LOOP_COUNT-1 DOWNTO 0 GENERATE + RAND_GEN_INST:ENTITY work.RANDOM + GENERIC MAP( + WIDTH => 8, + SEED => (SEED+N) + ) + PORT MAP( + CLK => CLK, + RST => RST, + EN => DATA_GEN_I, + RANDOM_NUM => RAND_DATA(8*(N+1)-1 DOWNTO 8*N) + ); + END GENERATE RAND_GEN; + +END ARCHITECTURE; + Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/addr_gen.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/addr_gen.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/addr_gen.vhd (revision 5) @@ -0,0 +1,117 @@ + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7_1 Core - Address Generator +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006_3010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- +-- Filename: addr_gen.vhd +-- +-- Description: +-- Address Generator +-- +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: Sep 12, 2011 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + +LIBRARY work; +USE work.ALL; + +ENTITY ADDR_GEN IS + GENERIC ( C_MAX_DEPTH : INTEGER := 1024 ; + RST_VALUE : STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS=> '0'); + RST_INC : INTEGER := 0); + PORT ( + CLK : IN STD_LOGIC; + RST : IN STD_LOGIC; + EN : IN STD_LOGIC; + LOAD :IN STD_LOGIC; + LOAD_VALUE : IN STD_LOGIC_VECTOR (31 DOWNTO 0) := (OTHERS => '0'); + ADDR_OUT : OUT STD_LOGIC_VECTOR (31 DOWNTO 0) --OUTPUT VECTOR + ); +END ADDR_GEN; + +ARCHITECTURE BEHAVIORAL OF ADDR_GEN IS + SIGNAL ADDR_TEMP : STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS =>'0'); +BEGIN + ADDR_OUT <= ADDR_TEMP; + PROCESS(CLK) + BEGIN + IF(RISING_EDGE(CLK)) THEN + IF(RST='1') THEN + ADDR_TEMP<= RST_VALUE + conv_std_logic_vector(RST_INC,32 ); + ELSE + IF(EN='1') THEN + IF(LOAD='1') THEN + ADDR_TEMP <=LOAD_VALUE; + ELSE + IF(ADDR_TEMP = C_MAX_DEPTH-1) THEN + ADDR_TEMP<= RST_VALUE + conv_std_logic_vector(RST_INC,32 ); + ELSE + ADDR_TEMP <= ADDR_TEMP + '1'; + END IF; + END IF; + END IF; + END IF; + END IF; + END PROCESS; +END ARCHITECTURE; Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/checker.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/checker.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/checker.vhd (revision 5) @@ -0,0 +1,161 @@ + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7_1 Core - Checker +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006_3010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- +-- Filename: checker.vhd +-- +-- Description: +-- Checker +-- +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: Sep 12, 2011 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + +LIBRARY work; +USE work.BMG_TB_PKG.ALL; + +ENTITY CHECKER IS + GENERIC ( WRITE_WIDTH : INTEGER :=32; + READ_WIDTH : INTEGER :=32 + ); + + PORT ( + CLK : IN STD_LOGIC; + RST : IN STD_LOGIC; + EN : IN STD_LOGIC; + DATA_IN : IN STD_LOGIC_VECTOR (READ_WIDTH-1 DOWNTO 0); --OUTPUT VECTOR + STATUS : OUT STD_LOGIC:= '0' + ); +END CHECKER; + +ARCHITECTURE CHECKER_ARCH OF CHECKER IS + SIGNAL EXPECTED_DATA : STD_LOGIC_VECTOR(READ_WIDTH-1 DOWNTO 0); + SIGNAL DATA_IN_R: STD_LOGIC_VECTOR(READ_WIDTH-1 DOWNTO 0); + SIGNAL EN_R : STD_LOGIC := '0'; + SIGNAL EN_2R : STD_LOGIC := '0'; +--DATA PART CNT DEFINES THE ASPECT RATIO AND GIVES THE INFO TO THE DATA GENERATOR TO PROVIDE THE DATA EITHER IN PARTS OR COMPLETE DATA IN ONE SHOT +--IF READ_WIDTH > WRITE_WIDTH DIVROUNDUP RESULTS IN '1' AND DATA GENERATOR GIVES THE DATAOUT EQUALS TO MAX OF (WRITE_WIDTH, READ_WIDTH) +--IF READ_WIDTH < WRITE-WIDTH DIVROUNDUP RESULTS IN > '1' AND DATA GENERATOR GIVES THE DATAOUT IN TERMS OF PARTS(EG 4 PARTS WHEN WRITE_WIDTH 32 AND READ WIDTH 8) + CONSTANT DATA_PART_CNT: INTEGER:= DIVROUNDUP(WRITE_WIDTH,READ_WIDTH); + CONSTANT MAX_WIDTH: INTEGER:= IF_THEN_ELSE((WRITE_WIDTH>READ_WIDTH),WRITE_WIDTH,READ_WIDTH); + SIGNAL ERR_HOLD : STD_LOGIC :='0'; + SIGNAL ERR_DET : STD_LOGIC :='0'; +BEGIN + PROCESS(CLK) + BEGIN + IF(RISING_EDGE(CLK)) THEN + IF(RST= '1') THEN + EN_R <= '0'; + EN_2R <= '0'; + DATA_IN_R <= (OTHERS=>'0'); + ELSE + EN_R <= EN; + EN_2R <= EN_R; + DATA_IN_R <= DATA_IN; + END IF; + END IF; + END PROCESS; + + EXPECTED_DATA_GEN_INST:ENTITY work.DATA_GEN + GENERIC MAP ( DATA_GEN_WIDTH =>MAX_WIDTH, + DOUT_WIDTH => READ_WIDTH, + DATA_PART_CNT => DATA_PART_CNT, + SEED => 2 + ) + PORT MAP ( + CLK => CLK, + RST => RST, + EN => EN_2R, + DATA_OUT => EXPECTED_DATA + ); + + PROCESS(CLK) + BEGIN + IF(RISING_EDGE(CLK)) THEN + IF(EN_2R='1') THEN + IF(EXPECTED_DATA = DATA_IN_R) THEN + ERR_DET<='0'; + ELSE + ERR_DET<= '1'; + END IF; + END IF; + END IF; + END PROCESS; + + PROCESS(CLK,RST) + BEGIN + IF(RST='1') THEN + ERR_HOLD <= '0'; + ELSIF(RISING_EDGE(CLK)) THEN + ERR_HOLD <= ERR_HOLD OR ERR_DET ; + END IF; + END PROCESS; + + STATUS <= ERR_HOLD; + +END ARCHITECTURE; + + + Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/vcs_session.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/vcs_session.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/vcs_session.tcl (revision 5) @@ -0,0 +1,83 @@ + + + + + + + +#-------------------------------------------------------------------------------- +#-- +#-- BMG Generator v8.4 Core Demo Testbench +#-- +#-------------------------------------------------------------------------------- +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +# Filename: vcs_session.tcl +# +# Description: +# This is the VCS wave form file. +# +#-------------------------------------------------------------------------------- + +if { ![gui_is_db_opened -db {bmg_vcs.vpd}] } { + gui_open_db -design V1 -file bmg_vcs.vpd -nosource +} +gui_set_precision 1ps +gui_set_time_units 1ps + +gui_open_window Wave +gui_sg_create blockMemory_Group +gui_list_add_group -id Wave.1 {blockMemory_Group} + + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/status + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/RSTA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/CLKA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/ADDRA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/DINA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/WEA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/DOUTA + +gui_zoom -window Wave.1 -full Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/simcmds.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/simcmds.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/simcmds.tcl (revision 5) @@ -0,0 +1,63 @@ +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. + + + + + + + +wcfg new +isim set radix hex +wave add /blockMemory_tb/status + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/RSTA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/CLKA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/ADDRA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/DINA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/WEA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/DOUTA +run all +quit Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/simulate_mti.bat =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/simulate_mti.bat (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/simulate_mti.bat (revision 5) @@ -0,0 +1,3 @@ +#-------------------------------------------------------------------------------- + +vsim -c -do simulate_mti.do Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/wave_ncsim.sv =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/wave_ncsim.sv (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/wave_ncsim.sv (revision 5) @@ -0,0 +1,20 @@ + + + + + + + + +window new WaveWindow -name "Waves for BMG Example Design" +waveform using "Waves for BMG Example Design" + + + waveform add -signals /blockMemory_tb/status + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/RSTA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/CLKA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/ADDRA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/DINA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/WEA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/DOUTA +console submit -using simulator -wait no "run" Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/ucli_commands.key =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/ucli_commands.key (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/ucli_commands.key (revision 5) @@ -0,0 +1,4 @@ +dump -file bmg_vcs.vpd -type VPD +dump -add blockMemory_tb +run +quit Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/simulate_mti.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/simulate_mti.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/simulate_mti.sh (revision 5) @@ -0,0 +1,3 @@ +#-------------------------------------------------------------------------------- + +vsim -c -do simulate_mti.do Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/simulate_ncsim.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/simulate_ncsim.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/simulate_ncsim.sh (revision 5) @@ -0,0 +1,78 @@ +#!/bin/sh +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +set work work +#-------------------------------------------------------------------------------- +mkdir work + + +ncvhdl -v93 -work work ../../implement/results/routed.vhd + +echo "Compiling Test Bench Files" + +ncvhdl -v93 -work work ../bmg_tb_pkg.vhd +ncvhdl -v93 -work work ../random.vhd +ncvhdl -v93 -work work ../data_gen.vhd +ncvhdl -v93 -work work ../addr_gen.vhd +ncvhdl -v93 -work work ../checker.vhd +ncvhdl -v93 -work work ../bmg_stim_gen.vhd +ncvhdl -v93 -work work ../blockMemory_synth.vhd +ncvhdl -v93 -work work ../blockMemory_tb.vhd + +echo "Compiling SDF file" +ncsdfc ../../implement/results/routed.sdf -output ./routed.sdf.X + +echo "Generating SDF command file" +echo 'COMPILED_SDF_FILE = "routed.sdf.X",' > sdf.cmd +echo 'SCOPE = :blockMemory_synth_inst:BMG_PORT,' >> sdf.cmd +echo 'MTM_CONTROL = "MAXIMUM";' >> sdf.cmd + + +echo "Elaborating Design" +ncelab -access +rwc -sdf_cmd_file sdf.cmd $work.blockMemory_tb + +echo "Simulating Design" +ncsim -gui -input @"simvision -input wave_ncsim.sv" $work.blockMemory_tb Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/simulate_vcs.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/simulate_vcs.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/simulate_vcs.sh (revision 5) @@ -0,0 +1,70 @@ +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +#-------------------------------------------------------------------------------- +#!/bin/sh + +rm -rf simv* csrc DVEfiles AN.DB + +echo "Compiling Core VHDL UNISIM/Behavioral model" +vhdlan ../../implement/results/routed.vhd + +echo "Compiling Test Bench Files" +vhdlan ../bmg_tb_pkg.vhd +vhdlan ../random.vhd +vhdlan ../data_gen.vhd +vhdlan ../addr_gen.vhd +vhdlan ../checker.vhd +vhdlan ../bmg_stim_gen.vhd +vhdlan ../blockMemory_synth.vhd +vhdlan ../blockMemory_tb.vhd + + +echo "Elaborating Design" +vcs +neg_tchk -sdf max:/blockMemory_tb/blockMemory_synth_inst/bmg_port:../../implement/results/routed.sdf +vcs+lic+wait -debug blockMemory_tb + +echo "Simulating Design" +./simv -ucli -i ucli_commands.key +dve -session vcs_session.tcl Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/simulate_isim.bat =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/simulate_isim.bat (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/simulate_isim.bat (revision 5) @@ -0,0 +1,67 @@ +:: (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +:: +:: This file contains confidential and proprietary information +:: of Xilinx, Inc. and is protected under U.S. and +:: international copyright and other intellectual property +:: laws. +:: +:: DISCLAIMER +:: This disclaimer is not a license and does not grant any +:: rights to the materials distributed herewith. Except as +:: otherwise provided in a valid license issued to you by +:: Xilinx, and to the maximum extent permitted by applicable +:: law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +:: WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +:: AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +:: BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +:: INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +:: (2) Xilinx shall not be liable (whether in contract or tort, +:: including negligence, or under any other theory of +:: liability) for any loss or damage of any kind or nature +:: related to, arising under or in connection with these +:: materials, including for any direct, or any indirect, +:: special, incidental, or consequential loss or damage +:: (including loss of data, profits, goodwill, or any type of +:: loss or damage suffered as a result of any action brought +:: by a third party) even if such damage or loss was +:: reasonably foreseeable or Xilinx had been advised of the +:: possibility of the same. +:: +:: CRITICAL APPLICATIONS +:: Xilinx products are not designed or intended to be fail- +:: safe, or for use in any application requiring fail-safe +:: performance, such as life-support or safety devices or +:: systems, Class III medical devices, nuclear facilities, +:: applications related to the deployment of airbags, or any +:: other applications that could lead to death, personal +:: injury, or severe property or environmental damage +:: (individually and collectively, "Critical +:: Applications"). Customer assumes the sole risk and +:: liability of any use of Xilinx products in Critical +:: Applications, subject only to applicable laws and +:: regulations governing limitations on product liability. +:: +:: THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +:: PART OF THIS FILE AT ALL TIMES. +::-------------------------------------------------------------------------------- + + + +echo "Compiling Core VHDL UNISIM/Behavioral model" +vhpcomp -work work ..\..\implement\results\routed.vhd + +echo "Compiling Test Bench Files" + +vhpcomp -work work ..\bmg_tb_pkg.vhd +vhpcomp -work work ..\random.vhd +vhpcomp -work work ..\data_gen.vhd +vhpcomp -work work ..\addr_gen.vhd +vhpcomp -work work ..\checker.vhd +vhpcomp -work work ..\bmg_stim_gen.vhd +vhpcomp -work work ..\blockMemory_synth.vhd +vhpcomp -work work ..\blockMemory_tb.vhd + + + fuse -L simprim work.blockMemory_tb -o blockMemory_tb.exe + +.\blockMemory_tb.exe -sdftyp /blockMemory_tb/blockMemory_synth_inst/bmg_port=..\..\implement\results\routed.sdf -gui -tclbatch simcmds.tcl Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/wave_mti.do =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/wave_mti.do (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/wave_mti.do (revision 5) @@ -0,0 +1,36 @@ + + + + + + + + +onerror {resume} +quietly WaveActivateNextPane {} 0 + + + add wave -noupdate /blockMemory_tb/status + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/RSTA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/CLKA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/ADDRA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/DINA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/WEA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/DOUTA +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {0 ps} 0} +configure wave -namecolwidth 150 +configure wave -valuecolwidth 100 +configure wave -justifyvalue left +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 1 +configure wave -griddelta 40 +configure wave -timeline 0 +configure wave -timelineunits ps +update +WaveRestoreZoom {0 ps} {9464063 ps} Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/simulate_mti.do =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/simulate_mti.do (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing/simulate_mti.do (revision 5) @@ -0,0 +1,75 @@ +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +set work work +#-------------------------------------------------------------------------------- + +vlib work +vmap work work + +echo "Compiling Core VHDL UNISIM/Behavioral model" +vcom -work work ../../implement/results/routed.vhd + +echo "Compiling Test Bench Files" + +vcom -work work ../bmg_tb_pkg.vhd +vcom -work work ../random.vhd +vcom -work work ../data_gen.vhd +vcom -work work ../addr_gen.vhd +vcom -work work ../checker.vhd +vcom -work work ../bmg_stim_gen.vhd +vcom -work work ../blockMemory_synth.vhd +vcom -work work ../blockMemory_tb.vhd + + vsim -novopt -t ps -L simprim +transport_int_delays -sdftyp /blockMemory_tb/blockMemory_synth_inst/bmg_port=../../implement/results/routed.sdf $work.blockMemory_tb -novopt + +#Disabled waveform to save the disk space +add log -r /* +#Ignore integer warnings at time 0 +set StdArithNoWarnings 1 +run 0 +set StdArithNoWarnings 0 + +run -all Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/timing Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/blockMemory_synth.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/blockMemory_synth.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/blockMemory_synth.vhd (revision 5) @@ -0,0 +1,289 @@ + + + + + + + + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7_1 Core - Synthesizable Testbench +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006_3010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- +-- Filename: blockMemory_synth.vhd +-- +-- Description: +-- Synthesizable Testbench +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: Sep 12, 2011 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.NUMERIC_STD.ALL; +USE IEEE.STD_LOGIC_MISC.ALL; + +LIBRARY STD; +USE STD.TEXTIO.ALL; + +--LIBRARY unisim; +--USE unisim.vcomponents.ALL; + +LIBRARY work; +USE work.ALL; +USE work.BMG_TB_PKG.ALL; + +ENTITY blockMemory_synth IS +PORT( + CLK_IN : IN STD_LOGIC; + RESET_IN : IN STD_LOGIC; + STATUS : OUT STD_LOGIC_VECTOR(8 DOWNTO 0) := (OTHERS => '0') --ERROR STATUS OUT OF FPGA + ); +END ENTITY; + +ARCHITECTURE blockMemory_synth_ARCH OF blockMemory_synth IS + + +COMPONENT blockMemory_exdes + PORT ( + --Inputs - Port A + RSTA : IN STD_LOGIC; --opt port + WEA : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + ADDRA : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + DINA : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + DOUTA : OUT STD_LOGIC_VECTOR(31 DOWNTO 0); + CLKA : IN STD_LOGIC + + + ); + +END COMPONENT; + + + SIGNAL CLKA: STD_LOGIC := '0'; + SIGNAL RSTA: STD_LOGIC := '0'; + SIGNAL WEA: STD_LOGIC_VECTOR(0 DOWNTO 0) := (OTHERS => '0'); + SIGNAL WEA_R: STD_LOGIC_VECTOR(0 DOWNTO 0) := (OTHERS => '0'); + SIGNAL ADDRA: STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0'); + SIGNAL ADDRA_R: STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0'); + SIGNAL DINA: STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS => '0'); + SIGNAL DINA_R: STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS => '0'); + SIGNAL DOUTA: STD_LOGIC_VECTOR(31 DOWNTO 0); + SIGNAL CHECKER_EN : STD_LOGIC:='0'; + SIGNAL CHECKER_EN_R : STD_LOGIC:='0'; + SIGNAL STIMULUS_FLOW : STD_LOGIC_VECTOR(22 DOWNTO 0) := (OTHERS =>'0'); + SIGNAL clk_in_i: STD_LOGIC; + + SIGNAL RESET_SYNC_R1 : STD_LOGIC:='1'; + SIGNAL RESET_SYNC_R2 : STD_LOGIC:='1'; + SIGNAL RESET_SYNC_R3 : STD_LOGIC:='1'; + + SIGNAL ITER_R0 : STD_LOGIC := '0'; + SIGNAL ITER_R1 : STD_LOGIC := '0'; + SIGNAL ITER_R2 : STD_LOGIC := '0'; + + SIGNAL ISSUE_FLAG : STD_LOGIC_VECTOR(7 DOWNTO 0) := (OTHERS => '0'); + SIGNAL ISSUE_FLAG_STATUS : STD_LOGIC_VECTOR(7 DOWNTO 0) := (OTHERS => '0'); + + BEGIN + +-- clk_buf: bufg +-- PORT map( +-- i => CLK_IN, +-- o => clk_in_i +-- ); + clk_in_i <= CLK_IN; + CLKA <= clk_in_i; + + RSTA <= RESET_SYNC_R3 AFTER 50 ns; + + + PROCESS(clk_in_i) + BEGIN + IF(RISING_EDGE(clk_in_i)) THEN + RESET_SYNC_R1 <= RESET_IN; + RESET_SYNC_R2 <= RESET_SYNC_R1; + RESET_SYNC_R3 <= RESET_SYNC_R2; + END IF; + END PROCESS; + + +PROCESS(CLKA) +BEGIN + IF(RISING_EDGE(CLKA)) THEN + IF(RESET_SYNC_R3='1') THEN + ISSUE_FLAG_STATUS<= (OTHERS => '0'); + ELSE + ISSUE_FLAG_STATUS <= ISSUE_FLAG_STATUS OR ISSUE_FLAG; + END IF; + END IF; +END PROCESS; + +STATUS(7 DOWNTO 0) <= ISSUE_FLAG_STATUS; + + + + BMG_DATA_CHECKER_INST: ENTITY work.CHECKER + GENERIC MAP ( + WRITE_WIDTH => 32, + READ_WIDTH => 32 ) + PORT MAP ( + CLK => CLKA, + RST => RSTA, + EN => CHECKER_EN_R, + DATA_IN => DOUTA, + STATUS => ISSUE_FLAG(0) + ); + + PROCESS(CLKA) + BEGIN + IF(RISING_EDGE(CLKA)) THEN + IF(RSTA='1') THEN + CHECKER_EN_R <= '0'; + ELSE + CHECKER_EN_R <= CHECKER_EN AFTER 50 ns; + END IF; + END IF; + END PROCESS; + + + BMG_STIM_GEN_INST:ENTITY work.BMG_STIM_GEN + PORT MAP( + CLK => clk_in_i, + RST => RSTA, + ADDRA => ADDRA, + DINA => DINA, + WEA => WEA, + CHECK_DATA => CHECKER_EN + ); + + PROCESS(CLKA) + BEGIN + IF(RISING_EDGE(CLKA)) THEN + IF(RESET_SYNC_R3='1') THEN + STATUS(8) <= '0'; + iter_r2 <= '0'; + iter_r1 <= '0'; + iter_r0 <= '0'; + ELSE + STATUS(8) <= iter_r2; + iter_r2 <= iter_r1; + iter_r1 <= iter_r0; + iter_r0 <= STIMULUS_FLOW(8); + END IF; + END IF; + END PROCESS; + + + PROCESS(CLKA) + BEGIN + IF(RISING_EDGE(CLKA)) THEN + IF(RESET_SYNC_R3='1') THEN + STIMULUS_FLOW <= (OTHERS => '0'); + ELSIF(WEA(0)='1') THEN + STIMULUS_FLOW <= STIMULUS_FLOW+1; + END IF; + END IF; + END PROCESS; + + + + + PROCESS(CLKA) + BEGIN + IF(RISING_EDGE(CLKA)) THEN + IF(RESET_SYNC_R3='1') THEN + WEA_R <= (OTHERS=>'0') AFTER 50 ns; + DINA_R <= (OTHERS=>'0') AFTER 50 ns; + + + ELSE + WEA_R <= WEA AFTER 50 ns; + DINA_R <= DINA AFTER 50 ns; + + END IF; + END IF; + END PROCESS; + + + PROCESS(CLKA) + BEGIN + IF(RISING_EDGE(CLKA)) THEN + IF(RESET_SYNC_R3='1') THEN + ADDRA_R <= (OTHERS=> '0') AFTER 50 ns; + ELSE + ADDRA_R <= ADDRA AFTER 50 ns; + END IF; + END IF; + END PROCESS; + + + BMG_PORT: blockMemory_exdes PORT MAP ( + --Port A + RSTA => RSTA, + WEA => WEA_R, + ADDRA => ADDRA_R, + DINA => DINA_R, + DOUTA => DOUTA, + CLKA => CLKA + + ); +END ARCHITECTURE; Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/blockMemory_tb.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/blockMemory_tb.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/blockMemory_tb.vhd (revision 5) @@ -0,0 +1,129 @@ +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7_1 Core - Top File for the Example Testbench +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006_3010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- Filename: blockMemory_tb.vhd +-- Description: +-- Testbench Top +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: Sep 12, 2011 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + +LIBRARY work; +USE work.ALL; + +ENTITY blockMemory_tb IS +END ENTITY; + + +ARCHITECTURE blockMemory_tb_ARCH OF blockMemory_tb IS + SIGNAL STATUS : STD_LOGIC_VECTOR(8 DOWNTO 0); + SIGNAL CLK : STD_LOGIC := '1'; + SIGNAL RESET : STD_LOGIC; + + BEGIN + + + CLK_GEN: PROCESS BEGIN + CLK <= NOT CLK; + WAIT FOR 100 NS; + CLK <= NOT CLK; + WAIT FOR 100 NS; + END PROCESS; + + RST_GEN: PROCESS BEGIN + RESET <= '1'; + WAIT FOR 1000 NS; + RESET <= '0'; + WAIT; + END PROCESS; + + +--STOP_SIM: PROCESS BEGIN +-- WAIT FOR 200 US; -- STOP SIMULATION AFTER 1 MS +-- ASSERT FALSE +-- REPORT "END SIMULATION TIME REACHED" +-- SEVERITY FAILURE; +--END PROCESS; +-- +PROCESS BEGIN + WAIT UNTIL STATUS(8)='1'; + IF( STATUS(7 downto 0)/="0") THEN + ASSERT false + REPORT "Simulation Failed" + SEVERITY FAILURE; + ELSE + ASSERT false + REPORT "Simulation Complete" + SEVERITY FAILURE; + END IF; +END PROCESS; + + blockMemory_synth_inst:ENTITY work.blockMemory_synth + PORT MAP( + CLK_IN => CLK, + RESET_IN => RESET, + STATUS => STATUS + ); + +END ARCHITECTURE; Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/bmg_stim_gen.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/bmg_stim_gen.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/bmg_stim_gen.vhd (revision 5) @@ -0,0 +1,243 @@ + + + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7_1 Core - Stimulus Generator For Single Port Ram +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006_3010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- +-- Filename: bmg_stim_gen.vhd +-- +-- Description: +-- Stimulus Generation For SRAM +-- 100 Writes and 100 Reads will be performed in a repeatitive loop till the +-- simulation ends +-- +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: Sep 12, 2011 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; +USE IEEE.STD_LOGIC_MISC.ALL; + +LIBRARY work; +USE work.ALL; + +USE work.BMG_TB_PKG.ALL; + + +ENTITY REGISTER_LOGIC_SRAM IS + PORT( + Q : OUT STD_LOGIC; + CLK : IN STD_LOGIC; + RST : IN STD_LOGIC; + D : IN STD_LOGIC + ); +END REGISTER_LOGIC_SRAM; + +ARCHITECTURE REGISTER_ARCH OF REGISTER_LOGIC_SRAM IS + SIGNAL Q_O : STD_LOGIC :='0'; +BEGIN + Q <= Q_O; + FF_BEH: PROCESS(CLK) + BEGIN + IF(RISING_EDGE(CLK)) THEN + IF(RST ='1') THEN + Q_O <= '0'; + ELSE + Q_O <= D; + END IF; + END IF; + END PROCESS; +END REGISTER_ARCH; + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; +USE IEEE.STD_LOGIC_MISC.ALL; + +LIBRARY work; +USE work.ALL; +USE work.BMG_TB_PKG.ALL; + + +ENTITY BMG_STIM_GEN IS + PORT ( + CLK : IN STD_LOGIC; + RST : IN STD_LOGIC; + ADDRA : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0'); + DINA : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS => '0'); + WEA : OUT STD_LOGIC_VECTOR (0 DOWNTO 0) := (OTHERS => '0'); + CHECK_DATA: OUT STD_LOGIC:='0' + ); +END BMG_STIM_GEN; + + +ARCHITECTURE BEHAVIORAL OF BMG_STIM_GEN IS + + CONSTANT ZERO : STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS => '0'); + CONSTANT DATA_PART_CNT_A: INTEGER:= DIVROUNDUP(32,32); + SIGNAL WRITE_ADDR : STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS => '0'); + SIGNAL WRITE_ADDR_INT : STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0'); + SIGNAL READ_ADDR_INT : STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0'); + SIGNAL READ_ADDR : STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS => '0'); + SIGNAL DINA_INT : STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS => '0'); + SIGNAL DO_WRITE : STD_LOGIC := '0'; + SIGNAL DO_READ : STD_LOGIC := '0'; + SIGNAL COUNT_NO : INTEGER :=0; + SIGNAL DO_READ_REG : STD_LOGIC_VECTOR(4 DOWNTO 0) :=(OTHERS => '0'); +BEGIN + WRITE_ADDR_INT(3 DOWNTO 0) <= WRITE_ADDR(3 DOWNTO 0); + READ_ADDR_INT(3 DOWNTO 0) <= READ_ADDR(3 DOWNTO 0); + ADDRA <= IF_THEN_ELSE(DO_WRITE='1',WRITE_ADDR_INT,READ_ADDR_INT) ; + DINA <= DINA_INT ; + + CHECK_DATA <= DO_READ; + +RD_ADDR_GEN_INST:ENTITY work.ADDR_GEN + GENERIC MAP( + C_MAX_DEPTH => 16 + ) + PORT MAP( + CLK => CLK, + RST => RST, + EN => DO_READ, + LOAD => '0', + LOAD_VALUE => ZERO, + ADDR_OUT => READ_ADDR + ); + +WR_ADDR_GEN_INST:ENTITY work.ADDR_GEN + GENERIC MAP( + C_MAX_DEPTH => 16 ) + PORT MAP( + CLK => CLK, + RST => RST, + EN => DO_WRITE, + LOAD => '0', + LOAD_VALUE => ZERO, + ADDR_OUT => WRITE_ADDR + ); + +WR_DATA_GEN_INST:ENTITY work.DATA_GEN + GENERIC MAP ( + DATA_GEN_WIDTH => 32, + DOUT_WIDTH => 32, + DATA_PART_CNT => DATA_PART_CNT_A, + SEED => 2 + ) + PORT MAP ( + CLK => CLK, + RST => RST, + EN => DO_WRITE, + DATA_OUT => DINA_INT + ); + +WR_RD_PROCESS: PROCESS (CLK) +BEGIN + IF(RISING_EDGE(CLK)) THEN + IF(RST='1') THEN + DO_WRITE <= '0'; + DO_READ <= '0'; + COUNT_NO <= 0 ; + ELSIF(COUNT_NO < 4) THEN + DO_WRITE <= '1'; + DO_READ <= '0'; + COUNT_NO <= COUNT_NO + 1; + ELSIF(COUNT_NO< 8) THEN + DO_WRITE <= '0'; + DO_READ <= '1'; + COUNT_NO <= COUNT_NO + 1; + ELSIF(COUNT_NO=8) THEN + DO_WRITE <= '0'; + DO_READ <= '0'; + COUNT_NO <= 0 ; + END IF; + END IF; +END PROCESS; + +BEGIN_SHIFT_REG: FOR I IN 0 TO 4 GENERATE +BEGIN + DFF_RIGHT: IF I=0 GENERATE + BEGIN + SHIFT_INST_0: ENTITY work.REGISTER_LOGIC_SRAM + PORT MAP( + Q => DO_READ_REG(0), + CLK => CLK, + RST => RST, + D => DO_READ + ); + END GENERATE DFF_RIGHT; + DFF_OTHERS: IF ((I>0) AND (I<=4)) GENERATE + BEGIN + SHIFT_INST: ENTITY work.REGISTER_LOGIC_SRAM + PORT MAP( + Q => DO_READ_REG(I), + CLK => CLK, + RST => RST, + D => DO_READ_REG(I-1) + ); + END GENERATE DFF_OTHERS; +END GENERATE BEGIN_SHIFT_REG; + + WEA(0) <= IF_THEN_ELSE(DO_WRITE='1','1','0') ; + +END ARCHITECTURE; Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/bmg_tb_pkg.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/bmg_tb_pkg.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation/bmg_tb_pkg.vhd (revision 5) @@ -0,0 +1,200 @@ + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7_1 Core - Testbench Package +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006_3010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- +-- Filename: bmg_tb_pkg.vhd +-- +-- Description: +-- BMG Testbench Package files +-- +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: Sep 12, 2011 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + +PACKAGE BMG_TB_PKG IS + + FUNCTION DIVROUNDUP ( + DATA_VALUE : INTEGER; + DIVISOR : INTEGER) + RETURN INTEGER; + ------------------------ + FUNCTION IF_THEN_ELSE ( + CONDITION : BOOLEAN; + TRUE_CASE : STD_LOGIC_VECTOR; + FALSE_CASE : STD_LOGIC_VECTOR) + RETURN STD_LOGIC_VECTOR; + ------------------------ + FUNCTION IF_THEN_ELSE ( + CONDITION : BOOLEAN; + TRUE_CASE : STRING; + FALSE_CASE :STRING) + RETURN STRING; + ------------------------ + FUNCTION IF_THEN_ELSE ( + CONDITION : BOOLEAN; + TRUE_CASE : STD_LOGIC; + FALSE_CASE :STD_LOGIC) + RETURN STD_LOGIC; + ------------------------ + FUNCTION IF_THEN_ELSE ( + CONDITION : BOOLEAN; + TRUE_CASE : INTEGER; + FALSE_CASE : INTEGER) + RETURN INTEGER; + ------------------------ + FUNCTION LOG2ROUNDUP ( + DATA_VALUE : INTEGER) + RETURN INTEGER; + +END BMG_TB_PKG; + +PACKAGE BODY BMG_TB_PKG IS + + FUNCTION DIVROUNDUP ( + DATA_VALUE : INTEGER; + DIVISOR : INTEGER) + RETURN INTEGER IS + VARIABLE DIV : INTEGER; + BEGIN + DIV := DATA_VALUE/DIVISOR; + IF ( (DATA_VALUE MOD DIVISOR) /= 0) THEN + DIV := DIV+1; + END IF; + RETURN DIV; + END DIVROUNDUP; + --------------------------------- + FUNCTION IF_THEN_ELSE ( + CONDITION : BOOLEAN; + TRUE_CASE : STD_LOGIC_VECTOR; + FALSE_CASE : STD_LOGIC_VECTOR) + RETURN STD_LOGIC_VECTOR IS + BEGIN + IF NOT CONDITION THEN + RETURN FALSE_CASE; + ELSE + RETURN TRUE_CASE; + END IF; + END IF_THEN_ELSE; + --------------------------------- + FUNCTION IF_THEN_ELSE ( + CONDITION : BOOLEAN; + TRUE_CASE : STD_LOGIC; + FALSE_CASE : STD_LOGIC) + RETURN STD_LOGIC IS + BEGIN + IF NOT CONDITION THEN + RETURN FALSE_CASE; + ELSE + RETURN TRUE_CASE; + END IF; + END IF_THEN_ELSE; + --------------------------------- + FUNCTION IF_THEN_ELSE ( + CONDITION : BOOLEAN; + TRUE_CASE : INTEGER; + FALSE_CASE : INTEGER) + RETURN INTEGER IS + VARIABLE RETVAL : INTEGER := 0; + BEGIN + IF CONDITION=FALSE THEN + RETVAL:=FALSE_CASE; + ELSE + RETVAL:=TRUE_CASE; + END IF; + RETURN RETVAL; + END IF_THEN_ELSE; + --------------------------------- + FUNCTION IF_THEN_ELSE ( + CONDITION : BOOLEAN; + TRUE_CASE : STRING; + FALSE_CASE : STRING) + RETURN STRING IS + BEGIN + IF NOT CONDITION THEN + RETURN FALSE_CASE; + ELSE + RETURN TRUE_CASE; + END IF; + END IF_THEN_ELSE; + ------------------------------- + FUNCTION LOG2ROUNDUP ( + DATA_VALUE : INTEGER) + RETURN INTEGER IS + VARIABLE WIDTH : INTEGER := 0; + VARIABLE CNT : INTEGER := 1; + BEGIN + IF (DATA_VALUE <= 1) THEN + WIDTH := 1; + ELSE + WHILE (CNT < DATA_VALUE) LOOP + WIDTH := WIDTH + 1; + CNT := CNT *2; + END LOOP; + END IF; + RETURN WIDTH; + END LOG2ROUNDUP; + +END BMG_TB_PKG; Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/simulation Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/doc/blk_mem_gen_v7_1_vinfo.html =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/doc/blk_mem_gen_v7_1_vinfo.html (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/doc/blk_mem_gen_v7_1_vinfo.html (revision 5) @@ -0,0 +1,237 @@ + + +blk_mem_gen_v7_1_vinfo + + + +









    +                Core name: Xilinx LogiCORE Block Memory Generator








    +                Version: 7.1








    +                Release: ISE 14.1 / Vivado 2012.1








    +                Release Date: April 24, 2012








    +








    +








    +================================================================================








    +








    +This document contains the following sections:








    +








    +This document contains the following sections:








    +








    +1. Introduction








    +2. New Features








    +  2.1 ISE








    +  2.2 Vivado








    +3. Supported Devices








    +  3.1 ISE








    +  3.2 Vivado








    +4. Resolved Issues








    +  4.1 ISE








    +  4.2 Vivado








    +5. Known Issues








    +  5.1 ISE








    +  5.2 Vivado








    +6. Technical Support








    +7. Core Release History








    +8. Legal Disclaimer








    +








    +================================================================================








    +








    +








    +1. INTRODUCTION








    +








    +For installation instructions for this release, please go to:








    +








    +  www.xilinx.com/ipcenter/coregen/ip_update_install_instructions.htm








    +








    +For system requirements:








    +








    +   www.xilinx.com/ipcenter/coregen/ip_update_system_requirements.htm








    +








    +This file contains release notes for the Xilinx LogiCORE IP Block Memory Generator v7.1








    +solution. For the latest core updates, see the product page at:








    +








    + www.xilinx.com/products/ipcenter/Block_Memory_Generator.htm








    +








    +








    +................................................................................








    +2. NEW FEATURES








    +








    +








    +  2.1 ISE








    +








    +    - ISE 14.1 software support








    +    - Defense Grade Virtex-7Q, Kintex-7Q, Artix-7Q and Zynq-Q, Defense Grade Lower Power Kintex-7QL and Artix-7QL,








    +      and Automotive Zynq device support








    +








    +








    +  2.2 Vivado








    +








    +    - 2012.1 software support








    +    - Defense Grade Virtex-7Q, Kintex-7Q, Artix-7Q and Zynq-Q, Defense Grade Lower Power Kintex-7QL and Artix-7QL,








    +      and Automotive Zynq device support








    +








    +








    +................................................................................








    +3. SUPPORTED DEVICES








    +








    +








    +  3.1 ISE








    +








    +  The following device families are supported by the core for this release.








    +








    +  All 7 Series devices








    +  Zynq-7000 devices








    +  All Virtex-6 devices








    +  All Spartan-6 devices








    +  All Virtex-5 devices








    +  All Spartan-3 devices








    +  All Virtex-4 devices








    +








    +








    +  3.2 Vivado








    +  All 7 Series devices








    +  Zynq-7000 devices








    +








    +








    +................................................................................








    +4. RESOLVED ISSUES








    +








    +








    +The following issues are resolved in Block Memory Generator v7.1:








    +








    +  4.1 ISE








    +








    +








    +  4.2 Vivado








    +








    +








    +................................................................................








    +5. KNOWN ISSUES








    +








    +








    +  5.1 ISE








    +








    +    The following are known issues for v7.1 of this core at time of release:








    +








    +    1. Virtex-6 and Spartan-6: BRAM Memory collision error, when the user selects TDP (write_mode= Read First)








    +      Work around: The user must review the possible scenarios that causes the collission and revise








    +       their design to avoid those situations.








    +      - CR588505








    +








    +      Note: Refer to UG383, 'Conflict Avoidance' section when using TDP Memory - with








    +            Write Mode = Read First in conjunction with asynchronous clocking








    +








    +    2. Power estimation figures in the datasheet are preliminary for Virtex-5 and Spartan-3.








    +








    +    3. Core does not generate for large memories. Depending on the








    +       machine the ISE CORE Generator software runs on, the maximum size of the memory that








    +       can be generated will vary.  For example, a Dual Pentium-4 server








    +       with 2 GB RAM can generate a memory core of size 1.8 MBits or 230 KBytes








    +      - CR 415768








    +      - AR 24034








    +








    +








    +  5.2 Vivado








    +








    +  The most recent information, including known issues, workarounds, and resolutions for








    +  this version is provided in the IP Release Notes User Guide located at








    +








    +         www.xilinx.com/support/documentation/user_guides/xtp025.pdf








    +








    +








    +








    +................................................................................








    +6. TECHNICAL SUPPORT








    +








    +To obtain technical support, create a WebCase at www.xilinx.com/support.








    +Questions are routed to a team with expertise using this product.








    +








    +Xilinx provides technical support for use of this product when used








    +according to the guidelines described in the core documentation, and








    +cannot guarantee timing, functionality, or support of this product for








    +designs that do not follow specified guidelines.








    +








    +








    +








    +7. CORE RELEASE HISTORY








    +








    +Date        By            Version      Description








    +================================================================================








    +04/24/2012  Xilinx, Inc.  7.1          ISE 14.1 and Vivado 2012.1 support; Defense Grade 7 Series and Zynq devices, and Automotive Zynq device support








    +01/18/2011  Xilinx, Inc.  6.3          ISE 13.4 support;Artix7L*, AArtix-7* device support








    +06/22/2011  Xilinx, Inc.  6.2          ISE 13.2 support;Virtex-7L,Kintex-7L,Artix7 and Zynq-7000* device support;








    +03/01/2011  Xilinx, Inc.  6.1          ISE 13.1 support and Virtex-7 and Kintex-7 device support; AXI4/AXI4-Lite Support








    +09/21/2010  Xilinx, Inc.  4.3          ISE 12.3 support








    +07/23/2010  Xilinx, Inc.  4.2          ISE 12.2 support








    +04/19/2010  Xilinx, Inc.  4.1          ISE 12.1 support








    +03/09/2010  Xilinx, Inc.  3.3 rev 2    Fix for V6 Memory collision issue








    +12/02/2009  Xilinx, Inc.  3.3 rev 1    ISE 11.4 support; Spartan-6 Low Power








    +                                       Device support; Automotive Spartan 3A








    +                                       DSP device support








    +09/16/2009  Xilinx, Inc.  3.3          Revised to v3.3








    +06/24/2009  Xilinx, Inc.  3.2          Revised to v3.2








    +04/24/2009  Xilinx, Inc.  3.1          Revised to v3.1








    +09/19/2008  Xilinx, Inc.  2.8          Revised to v2.8








    +03/24/2008  Xilinx, Inc.  2.7          10.1 support; Revised to v2.7








    +10/03/2007  Xilinx, Inc.  2.6          Revised to v2.6








    +07/2007     Xilinx, Inc.  2.5          Revised to v2.5








    +04/2007     Xilinx, Inc.  2.4          Revised to v2.4 rev 1








    +02/2007     Xilinx, Inc.  2.4          Revised to v2.4








    +11/2006     Xilinx, Inc.  2.3          Revised to v2.3








    +09/2006     Xilinx, Inc.  2.2          Revised to v2.2








    +06/2006     Xilinx, Inc.  2.1          Revised to v2.1








    +01/2006     Xilinx, Inc.  1.1          Initial release








    +================================================================================








    +








    +8. Legal Disclaimer








    +








    + (c) Copyright 2006 - 2012 Xilinx, Inc. All rights reserved.








    +








    + This file contains confidential and proprietary information








    + of Xilinx, Inc. and is protected under U.S. and








    + international copyright and other intellectual property








    + laws.








    +








    + DISCLAIMER








    + This disclaimer is not a license and does not grant any








    + rights to the materials distributed herewith. Except as








    + otherwise provided in a valid license issued to you by








    + Xilinx, and to the maximum extent permitted by applicable








    + law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND








    + WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES








    + AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING








    + BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-








    + INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and








    + (2) Xilinx shall not be liable (whether in contract or tort,








    + including negligence, or under any other theory of








    + liability) for any loss or damage of any kind or nature








    + related to, arising under or in connection with these








    + materials, including for any direct, or any indirect,








    + special, incidental, or consequential loss or damage








    + (including loss of data, profits, goodwill, or any type of








    + loss or damage suffered as a result of any action brought








    + by a third party) even if such damage or loss was








    + reasonably foreseeable or Xilinx had been advised of the








    + possibility of the same.








    +








    + CRITICAL APPLICATIONS








    + Xilinx products are not designed or intended to be fail-








    + safe, or for use in any application requiring fail-safe








    + performance, such as life-support or safety devices or








    + systems, Class III medical devices, nuclear facilities,








    + applications related to the deployment of airbags, or any








    + other applications that could lead to death, personal








    + injury, or severe property or environmental damage








    + (individually and collectively, "Critical








    + Applications"). Customer assumes the sole risk and








    + liability of any use of Xilinx products in Critical








    + Applications, subject only to applicable laws and








    + regulations governing limitations on product liability.








    +








    + THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS








    + PART OF THIS FILE AT ALL TIMES.








    +








    +








    +
+ + Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/doc/blk_mem_gen_ds512.pdf =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/doc/blk_mem_gen_ds512.pdf =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/doc/blk_mem_gen_ds512.pdf (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/doc/blk_mem_gen_ds512.pdf (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/doc/blk_mem_gen_ds512.pdf Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/doc =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/doc (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/doc (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/doc Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/blk_mem_gen_v7_1_readme.txt =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/blk_mem_gen_v7_1_readme.txt (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/blk_mem_gen_v7_1_readme.txt (revision 5) @@ -0,0 +1,226 @@ + Core name: Xilinx LogiCORE Block Memory Generator + Version: 7.1 + Release: ISE 14.1 / Vivado 2012.1 + Release Date: April 24, 2012 + + +================================================================================ + +This document contains the following sections: + +This document contains the following sections: + +1. Introduction +2. New Features + 2.1 ISE + 2.2 Vivado +3. Supported Devices + 3.1 ISE + 3.2 Vivado +4. Resolved Issues + 4.1 ISE + 4.2 Vivado +5. Known Issues + 5.1 ISE + 5.2 Vivado +6. Technical Support +7. Core Release History +8. Legal Disclaimer + +================================================================================ + + +1. INTRODUCTION + +For installation instructions for this release, please go to: + + http://www.xilinx.com/ipcenter/coregen/ip_update_install_instructions.htm + +For system requirements: + + http://www.xilinx.com/ipcenter/coregen/ip_update_system_requirements.htm + +This file contains release notes for the Xilinx LogiCORE IP Block Memory Generator v7.1 +solution. For the latest core updates, see the product page at: + + http://www.xilinx.com/products/ipcenter/Block_Memory_Generator.htm + + +................................................................................ +2. NEW FEATURES + + + 2.1 ISE + + - ISE 14.1 software support + - Defense Grade Virtex-7Q, Kintex-7Q, Artix-7Q and Zynq-Q, Defense Grade Lower Power Kintex-7QL and Artix-7QL, + and Automotive Zynq device support + + + 2.2 Vivado + + - 2012.1 software support + - Defense Grade Virtex-7Q, Kintex-7Q, Artix-7Q and Zynq-Q, Defense Grade Lower Power Kintex-7QL and Artix-7QL, + and Automotive Zynq device support + + +................................................................................ +3. SUPPORTED DEVICES + + + 3.1 ISE + + The following device families are supported by the core for this release. + + All 7 Series devices + Zynq-7000 devices + All Virtex-6 devices + All Spartan-6 devices + All Virtex-5 devices + All Spartan-3 devices + All Virtex-4 devices + + + 3.2 Vivado + All 7 Series devices + Zynq-7000 devices + + +................................................................................ +4. RESOLVED ISSUES + + +The following issues are resolved in Block Memory Generator v7.1: + + 4.1 ISE + + + 4.2 Vivado + + +................................................................................ +5. KNOWN ISSUES + + + 5.1 ISE + + The following are known issues for v7.1 of this core at time of release: + + 1. Virtex-6 and Spartan-6: BRAM Memory collision error, when the user selects TDP (write_mode= Read First) + Work around: The user must review the possible scenarios that causes the collission and revise + their design to avoid those situations. + - CR588505 + + Note: Refer to UG383, 'Conflict Avoidance' section when using TDP Memory - with + Write Mode = Read First in conjunction with asynchronous clocking + + 2. Power estimation figures in the datasheet are preliminary for Virtex-5 and Spartan-3. + + 3. Core does not generate for large memories. Depending on the + machine the ISE CORE Generator software runs on, the maximum size of the memory that + can be generated will vary. For example, a Dual Pentium-4 server + with 2 GB RAM can generate a memory core of size 1.8 MBits or 230 KBytes + - CR 415768 + - AR 24034 + + + 5.2 Vivado + + The most recent information, including known issues, workarounds, and resolutions for + this version is provided in the IP Release Notes User Guide located at + + www.xilinx.com/support/documentation/user_guides/xtp025.pdf + + + +................................................................................ +6. TECHNICAL SUPPORT + +To obtain technical support, create a WebCase at www.xilinx.com/support. +Questions are routed to a team with expertise using this product. + +Xilinx provides technical support for use of this product when used +according to the guidelines described in the core documentation, and +cannot guarantee timing, functionality, or support of this product for +designs that do not follow specified guidelines. + + + +7. CORE RELEASE HISTORY + +Date By Version Description +================================================================================ +04/24/2012 Xilinx, Inc. 7.1 ISE 14.1 and Vivado 2012.1 support; Defense Grade 7 Series and Zynq devices, and Automotive Zynq device support +01/18/2011 Xilinx, Inc. 6.3 ISE 13.4 support;Artix7L*, AArtix-7* device support +06/22/2011 Xilinx, Inc. 6.2 ISE 13.2 support;Virtex-7L,Kintex-7L,Artix7 and Zynq-7000* device support; +03/01/2011 Xilinx, Inc. 6.1 ISE 13.1 support and Virtex-7 and Kintex-7 device support; AXI4/AXI4-Lite Support +09/21/2010 Xilinx, Inc. 4.3 ISE 12.3 support +07/23/2010 Xilinx, Inc. 4.2 ISE 12.2 support +04/19/2010 Xilinx, Inc. 4.1 ISE 12.1 support +03/09/2010 Xilinx, Inc. 3.3 rev 2 Fix for V6 Memory collision issue +12/02/2009 Xilinx, Inc. 3.3 rev 1 ISE 11.4 support; Spartan-6 Low Power + Device support; Automotive Spartan 3A + DSP device support +09/16/2009 Xilinx, Inc. 3.3 Revised to v3.3 +06/24/2009 Xilinx, Inc. 3.2 Revised to v3.2 +04/24/2009 Xilinx, Inc. 3.1 Revised to v3.1 +09/19/2008 Xilinx, Inc. 2.8 Revised to v2.8 +03/24/2008 Xilinx, Inc. 2.7 10.1 support; Revised to v2.7 +10/03/2007 Xilinx, Inc. 2.6 Revised to v2.6 +07/2007 Xilinx, Inc. 2.5 Revised to v2.5 +04/2007 Xilinx, Inc. 2.4 Revised to v2.4 rev 1 +02/2007 Xilinx, Inc. 2.4 Revised to v2.4 +11/2006 Xilinx, Inc. 2.3 Revised to v2.3 +09/2006 Xilinx, Inc. 2.2 Revised to v2.2 +06/2006 Xilinx, Inc. 2.1 Revised to v2.1 +01/2006 Xilinx, Inc. 1.1 Initial release +================================================================================ + +8. Legal Disclaimer + + (c) Copyright 2006 - 2012 Xilinx, Inc. All rights reserved. + + This file contains confidential and proprietary information + of Xilinx, Inc. and is protected under U.S. and + international copyright and other intellectual property + laws. + + DISCLAIMER + This disclaimer is not a license and does not grant any + rights to the materials distributed herewith. Except as + otherwise provided in a valid license issued to you by + Xilinx, and to the maximum extent permitted by applicable + law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND + WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES + AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING + BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- + INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and + (2) Xilinx shall not be liable (whether in contract or tort, + including negligence, or under any other theory of + liability) for any loss or damage of any kind or nature + related to, arising under or in connection with these + materials, including for any direct, or any indirect, + special, incidental, or consequential loss or damage + (including loss of data, profits, goodwill, or any type of + loss or damage suffered as a result of any action brought + by a third party) even if such damage or loss was + reasonably foreseeable or Xilinx had been advised of the + possibility of the same. + + CRITICAL APPLICATIONS + Xilinx products are not designed or intended to be fail- + safe, or for use in any application requiring fail-safe + performance, such as life-support or safety devices or + systems, Class III medical devices, nuclear facilities, + applications related to the deployment of airbags, or any + other applications that could lead to death, personal + injury, or severe property or environmental damage + (individually and collectively, "Critical + Applications"). Customer assumes the sole risk and + liability of any use of Xilinx products in Critical + Applications, subject only to applicable laws and + regulations governing limitations on product liability. + + THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS + PART OF THIS FILE AT ALL TIMES. + Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/implement.bat =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/implement.bat (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/implement.bat (revision 5) @@ -0,0 +1,48 @@ + + + + + + + + +rem Clean up the results directory +rmdir /S /Q results +mkdir results + +rem Synthesize the VHDL Wrapper Files + + +echo 'Synthesizing example design with XST'; +xst -ifn xst.scr +copy blockMemory_exdes.ngc .\results\ + + +rem Copy the netlist generated by Coregen +echo 'Copying files from the netlist directory to the results directory' +copy ..\..\blockMemory.ngc results\ + + +rem Copy the constraints files generated by Coregen +echo 'Copying files from constraints directory to results directory' +copy ..\example_design\blockMemory_exdes.ucf results\ + +cd results + +echo 'Running ngdbuild' +ngdbuild -p xc3s500e-fg320-5 blockMemory_exdes + +echo 'Running map' +map blockMemory_exdes -o mapped.ncd -pr i + +echo 'Running par' +par mapped.ncd routed.ncd + +echo 'Running trce' +trce -e 10 routed.ncd mapped.pcf -o routed + +echo 'Running design through bitgen' +bitgen -w routed + +echo 'Running netgen to create gate level VHDL model' +netgen -ofmt vhdl -sim -tm blockMemory_exdes -pcf mapped.pcf -w routed.ncd routed.vhd Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/planAhead_rdn.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/planAhead_rdn.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/planAhead_rdn.tcl (revision 5) @@ -0,0 +1,67 @@ +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. + + +set device xc3s500efg320-5 +set projName blockMemory +set design blockMemory +set projDir [file dirname [info script]] +create_project $projName $projDir/results/$projName -part $device -force +set_property design_mode RTL [current_fileset -srcset] +set top_module blockMemory_exdes +add_files -norecurse {../../example_design/blockMemory_exdes.vhd} +add_files -norecurse {./blockMemory.ngc} +import_files -fileset [get_filesets constrs_1] -force -norecurse {../../example_design/blockMemory_exdes.xdc} +set_property top blockMemory_exdes [get_property srcset [current_run]] +synth_design +opt_design +place_design +route_design +write_sdf -rename_top_module blockMemory_exdes -file routed.sdf +write_vhdl -mode sim routed.vhd +report_timing -nworst 30 -path_type full -file routed.twr +report_drc -file report.drc +write_bitstream -bitgen_options {-g UnconstrainedPins:Allow} Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/planAhead_ise.bat =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/planAhead_ise.bat (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/planAhead_ise.bat (revision 5) @@ -0,0 +1,55 @@ +#!/bin/sh +rem (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +rem +rem This file contains confidential and proprietary information +rem of Xilinx, Inc. and is protected under U.S. and +rem international copyright and other intellectual property +rem laws. +rem +rem DISCLAIMER +rem This disclaimer is not a license and does not grant any +rem rights to the materials distributed herewith. Except as +rem otherwise provided in a valid license issued to you by +rem Xilinx, and to the maximum extent permitted by applicable +rem law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +rem WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +rem AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +rem BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +rem INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +rem (2) Xilinx shall not be liable (whether in contract or tort, +rem including negligence, or under any other theory of +rem liability) for any loss or damage of any kind or nature +rem related to, arising under or in connection with these +rem materials, including for any direct, or any indirect, +rem special, incidental, or consequential loss or damage +rem (including loss of data, profits, goodwill, or any type of +rem loss or damage suffered as a result of any action brought +rem by a third party) even if such damage or loss was +rem reasonably foreseeable or Xilinx had been advised of the +rem possibility of the same. +rem +rem CRITICAL APPLICATIONS +rem Xilinx products are not designed or intended to be fail- +rem safe, or for use in any application requiring fail-safe +rem performance, such as life-support or safety devices or +rem systems, Class III medical devices, nuclear facilities, +rem applications related to the deployment of airbags, or any +rem other applications that could lead to death, personal +rem injury, or severe property or environmental damage +rem (individually and collectively, "Critical +rem Applications"). Customer assumes the sole risk and +rem liability of any use of Xilinx products in Critical +rem Applications, subject only to applicable laws and +rem regulations governing limitations on product liability. +rem +rem THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +rem PART OF THIS FILE AT ALL TIMES. + +rem ----------------------------------------------------------------------------- +rem Script to synthesize and implement the Coregen FIFO Generator +rem ----------------------------------------------------------------------------- +rmdir /S /Q results +mkdir results +cd results +copy ..\..\..\blockMemory.ngc . +planAhead -mode batch -source ..\planAhead_ise.tcl Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/implement.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/implement.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/implement.sh (revision 5) @@ -0,0 +1,48 @@ + + + + + + + + +#!/bin/sh + +# Clean up the results directory +rm -rf results +mkdir results + +#Synthesize the Wrapper Files + +echo 'Synthesizing example design with XST'; +xst -ifn xst.scr +cp blockMemory_exdes.ngc ./results/ + + +# Copy the netlist generated by Coregen +echo 'Copying files from the netlist directory to the results directory' +cp ../../blockMemory.ngc results/ + +# Copy the constraints files generated by Coregen +echo 'Copying files from constraints directory to results directory' +cp ../example_design/blockMemory_exdes.ucf results/ + +cd results + +echo 'Running ngdbuild' +ngdbuild -p xc3s500e-fg320-5 blockMemory_exdes + +echo 'Running map' +map blockMemory_exdes -o mapped.ncd -pr i + +echo 'Running par' +par mapped.ncd routed.ncd + +echo 'Running trce' +trce -e 10 routed.ncd mapped.pcf -o routed + +echo 'Running design through bitgen' +bitgen -w routed + +echo 'Running netgen to create gate level VHDL model' +netgen -ofmt vhdl -sim -tm blockMemory_exdes -pcf mapped.pcf -w routed.ncd routed.vhd Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/xst.scr =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/xst.scr (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/xst.scr (revision 5) @@ -0,0 +1,13 @@ +run +-ifmt VHDL +-ent blockMemory_exdes +-p xc3s500e-fg320-5 +-ifn xst.prj +-write_timing_constraints No +-iobuf YES +-max_fanout 100 +-ofn blockMemory_exdes +-ofmt NGC +-bus_delimiter () +-hierarchy_separator / +-case Maintain Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/planAhead_rdn.bat =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/planAhead_rdn.bat (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/planAhead_rdn.bat (revision 5) @@ -0,0 +1,55 @@ +#!/bin/sh +rem (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +rem +rem This file contains confidential and proprietary information +rem of Xilinx, Inc. and is protected under U.S. and +rem international copyright and other intellectual property +rem laws. +rem +rem DISCLAIMER +rem This disclaimer is not a license and does not grant any +rem rights to the materials distributed herewith. Except as +rem otherwise provided in a valid license issued to you by +rem Xilinx, and to the maximum extent permitted by applicable +rem law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +rem WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +rem AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +rem BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +rem INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +rem (2) Xilinx shall not be liable (whether in contract or tort, +rem including negligence, or under any other theory of +rem liability) for any loss or damage of any kind or nature +rem related to, arising under or in connection with these +rem materials, including for any direct, or any indirect, +rem special, incidental, or consequential loss or damage +rem (including loss of data, profits, goodwill, or any type of +rem loss or damage suffered as a result of any action brought +rem by a third party) even if such damage or loss was +rem reasonably foreseeable or Xilinx had been advised of the +rem possibility of the same. +rem +rem CRITICAL APPLICATIONS +rem Xilinx products are not designed or intended to be fail- +rem safe, or for use in any application requiring fail-safe +rem performance, such as life-support or safety devices or +rem systems, Class III medical devices, nuclear facilities, +rem applications related to the deployment of airbags, or any +rem other applications that could lead to death, personal +rem injury, or severe property or environmental damage +rem (individually and collectively, "Critical +rem Applications"). Customer assumes the sole risk and +rem liability of any use of Xilinx products in Critical +rem Applications, subject only to applicable laws and +rem regulations governing limitations on product liability. +rem +rem THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +rem PART OF THIS FILE AT ALL TIMES. + +rem ----------------------------------------------------------------------------- +rem Script to synthesize and implement the Coregen FIFO Generator +rem ----------------------------------------------------------------------------- +rmdir /S /Q results +mkdir results +cd results +copy ..\..\..\blockMemory.ngc . +planAhead -mode batch -source ..\planAhead_rdn.tcl Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/planAhead_ise.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/planAhead_ise.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/planAhead_ise.sh (revision 5) @@ -0,0 +1,55 @@ +#!/bin/sh +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. + +#----------------------------------------------------------------------------- +# Script to synthesize and implement the Coregen FIFO Generator +#----------------------------------------------------------------------------- +rm -rf results +mkdir results +cd results +cp ../../../blockMemory.ngc . +planAhead -mode batch -source ../planAhead_ise.tcl Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/xst.prj =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/xst.prj (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/xst.prj (revision 5) @@ -0,0 +1 @@ +work ../example_design/blockMemory_exdes.vhd Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/planAhead_rdn.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/planAhead_rdn.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/planAhead_rdn.sh (revision 5) @@ -0,0 +1,55 @@ +#!/bin/sh +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. + +#----------------------------------------------------------------------------- +# Script to synthesize and implement the Coregen FIFO Generator +#----------------------------------------------------------------------------- +rm -rf results +mkdir results +cd results +cp ../../../blockMemory.ngc . +planAhead -mode batch -source ../planAhead_rdn.tcl Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/planAhead_ise.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/planAhead_ise.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement/planAhead_ise.tcl (revision 5) @@ -0,0 +1,67 @@ +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. + + +set device xc3s500efg320-5 +set projName blockMemory +set design blockMemory +set projDir [file dirname [info script]] +create_project $projName $projDir/results/$projName -part $device -force +set_property design_mode RTL [current_fileset -srcset] +set top_module blockMemory_exdes +add_files -norecurse {../../example_design/blockMemory_exdes.vhd} +add_files -norecurse {./blockMemory.ngc} +import_files -fileset [get_filesets constrs_1] -force -norecurse {../../example_design/blockMemory_exdes.xdc} +set_property top blockMemory_exdes [get_property srcset [current_run]] +synth_design +opt_design +place_design +route_design +write_sdf -rename_top_module blockMemory_exdes -file routed.sdf +write_vhdl -mode sim routed.vhd +report_timing -nworst 30 -path_type full -file routed.twr +report_drc -file report.drc +write_bitstream -bitgen_options {-g UnconstrainedPins:Allow} Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory/implement Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.v =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.v (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.v (revision 5) @@ -0,0 +1,180 @@ +/******************************************************************************* +* This file is owned and controlled by Xilinx and must be used solely * +* for design, simulation, implementation and creation of design files * +* limited to Xilinx devices or technologies. Use with non-Xilinx * +* devices or technologies is expressly prohibited and immediately * +* terminates your license. * +* * +* XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" SOLELY * +* FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR XILINX DEVICES. BY * +* PROVIDING THIS DESIGN, CODE, OR INFORMATION AS ONE POSSIBLE * +* IMPLEMENTATION OF THIS FEATURE, APPLICATION OR STANDARD, XILINX IS * +* MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION IS FREE FROM ANY * +* CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE FOR OBTAINING ANY * +* RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY * +* DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE * +* IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR * +* REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF * +* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * +* PARTICULAR PURPOSE. * +* * +* Xilinx products are not intended for use in life support appliances, * +* devices, or systems. Use in such applications are expressly * +* prohibited. * +* * +* (c) Copyright 1995-2013 Xilinx, Inc. * +* All rights reserved. * +*******************************************************************************/ +// You must compile the wrapper file blockMemory.v when simulating +// the core, blockMemory. When compiling the wrapper file, be sure to +// reference the XilinxCoreLib Verilog simulation library. For detailed +// instructions, please refer to the "CORE Generator Help". + +// The synthesis directives "translate_off/translate_on" specified below are +// supported by Xilinx, Mentor Graphics and Synplicity synthesis +// tools. Ensure they are correct for your synthesis tool(s). + +`timescale 1ns/1ps + +module blockMemory( + clka, + rsta, + wea, + addra, + dina, + douta +); + +input clka; +input rsta; +input [0 : 0] wea; +input [3 : 0] addra; +input [511 : 0] dina; +output [511 : 0] douta; + +// synthesis translate_off + + BLK_MEM_GEN_V7_1 #( + .C_ADDRA_WIDTH(4), + .C_ADDRB_WIDTH(4), + .C_ALGORITHM(0), + .C_AXI_ID_WIDTH(4), + .C_AXI_SLAVE_TYPE(0), + .C_AXI_TYPE(1), + .C_BYTE_SIZE(9), + .C_COMMON_CLK(0), + .C_DEFAULT_DATA("0"), + .C_DISABLE_WARN_BHV_COLL(0), + .C_DISABLE_WARN_BHV_RANGE(0), + .C_ENABLE_32BIT_ADDRESS(0), + .C_FAMILY("spartan3"), + .C_HAS_AXI_ID(0), + .C_HAS_ENA(0), + .C_HAS_ENB(0), + .C_HAS_INJECTERR(0), + .C_HAS_MEM_OUTPUT_REGS_A(0), + .C_HAS_MEM_OUTPUT_REGS_B(0), + .C_HAS_MUX_OUTPUT_REGS_A(0), + .C_HAS_MUX_OUTPUT_REGS_B(0), + .C_HAS_REGCEA(0), + .C_HAS_REGCEB(0), + .C_HAS_RSTA(1), + .C_HAS_RSTB(0), + .C_HAS_SOFTECC_INPUT_REGS_A(0), + .C_HAS_SOFTECC_OUTPUT_REGS_B(0), + .C_INIT_FILE_NAME("no_coe_file_loaded"), + .C_INITA_VAL("0"), + .C_INITB_VAL("0"), + .C_INTERFACE_TYPE(0), + .C_LOAD_INIT_FILE(0), + .C_MEM_TYPE(0), + .C_MUX_PIPELINE_STAGES(0), + .C_PRIM_TYPE(6), + .C_READ_DEPTH_A(16), + .C_READ_DEPTH_B(16), + .C_READ_WIDTH_A(512), + .C_READ_WIDTH_B(512), + .C_RST_PRIORITY_A("CE"), + .C_RST_PRIORITY_B("CE"), + .C_RST_TYPE("SYNC"), + .C_RSTRAM_A(0), + .C_RSTRAM_B(0), + .C_SIM_COLLISION_CHECK("ALL"), + .C_USE_BYTE_WEA(0), + .C_USE_BYTE_WEB(0), + .C_USE_DEFAULT_DATA(0), + .C_USE_ECC(0), + .C_USE_SOFTECC(0), + .C_WEA_WIDTH(1), + .C_WEB_WIDTH(1), + .C_WRITE_DEPTH_A(16), + .C_WRITE_DEPTH_B(16), + .C_WRITE_MODE_A("READ_FIRST"), + .C_WRITE_MODE_B("WRITE_FIRST"), + .C_WRITE_WIDTH_A(512), + .C_WRITE_WIDTH_B(512), + .C_XDEVICEFAMILY("spartan3e") + ) + inst ( + .CLKA(clka), + .RSTA(rsta), + .WEA(wea), + .ADDRA(addra), + .DINA(dina), + .DOUTA(douta), + .ENA(), + .REGCEA(), + .CLKB(), + .RSTB(), + .ENB(), + .REGCEB(), + .WEB(), + .ADDRB(), + .DINB(), + .DOUTB(), + .INJECTSBITERR(), + .INJECTDBITERR(), + .SBITERR(), + .DBITERR(), + .RDADDRECC(), + .S_ACLK(), + .S_ARESETN(), + .S_AXI_AWID(), + .S_AXI_AWADDR(), + .S_AXI_AWLEN(), + .S_AXI_AWSIZE(), + .S_AXI_AWBURST(), + .S_AXI_AWVALID(), + .S_AXI_AWREADY(), + .S_AXI_WDATA(), + .S_AXI_WSTRB(), + .S_AXI_WLAST(), + .S_AXI_WVALID(), + .S_AXI_WREADY(), + .S_AXI_BID(), + .S_AXI_BRESP(), + .S_AXI_BVALID(), + .S_AXI_BREADY(), + .S_AXI_ARID(), + .S_AXI_ARADDR(), + .S_AXI_ARLEN(), + .S_AXI_ARSIZE(), + .S_AXI_ARBURST(), + .S_AXI_ARVALID(), + .S_AXI_ARREADY(), + .S_AXI_RID(), + .S_AXI_RDATA(), + .S_AXI_RRESP(), + .S_AXI_RLAST(), + .S_AXI_RVALID(), + .S_AXI_RREADY(), + .S_AXI_INJECTSBITERR(), + .S_AXI_INJECTDBITERR(), + .S_AXI_SBITERR(), + .S_AXI_DBITERR(), + .S_AXI_RDADDRECC() + ); + +// synthesis translate_on + +endmodule Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.ncf =================================================================== Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.ngc =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.ngc (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.ngc (revision 5) @@ -0,0 +1,3 @@ +XILINX-XDB 0.1 STUB 0.1 ASCII +XILINX-XDM V1.6e +$37g44<,[o}e~g`n;"2*73>(-80!?0123456382:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789;87<4FNQWW>WC@KLK7<7>11292>LHW]]0YIJMJB=294;76380BB][[:SQWE96=87;:7<4FNQWW>WUSJ5:1<3??;08JJUSS2~oj0=4?>0087701877586;2996D@_UU8gmkg;;80;2<=4338LQQVR\3NDM1=>:1<27>552F__\XZ5DN@?74<768?0??4@UURVP?BH]]K7?<4?>07877e90w067mom8>=#:1397>LHW]]0JHI\N<283:44<<3CE\XZ5AEFQF95=87;:794FNQWW>AOWI591<3?>;58JJUSS2MC[N1=50?33?10>586?2>1CXZ_UU8Q@DBCZLIH0>4?>008=?OIX\^1MIJ]A=:94;75300BB][[:@FGVG:?29437LJKR@>3:==FLMXJ0<07;@FGVD:56h1JHI\N<283:==FLMXJ0>07;@FGVD:3611JHI\N<4<;?DBCZH6=255NDEPB828f3HNO^L27:1<;?DBCZH63255NDEPA858?3HNO^O2>>99B@ATE4;4j7LJKRC>0>58?3HNO^O2<>99B@ATE4=437LJKRC>6:==FLMXI0;07;@FGVG:06h1JHI\M<983:==FLMXI050<;@NO53=EEDUBBKAPAEFQAVUXZHDLI55MUR]JJCI6:2ICINEPLHAFJVCX\PZN86MCK148GIM609<0OAE=7178GIM5P11H@F0OAEN5:AOOD703JF@M1H@FO>D968GIME=2IGGO?:;BNHG43EKCM\THDXFDD78GIMAP11H@FHW192:?FIJE@^_II?;;BMQAZABFLXJXDAA_HLEK2=DZLK_II94DCKWAWT13MCJ0=08;EKB8469?2NBM1?>>69GMD:6:7=0HDO312<4?AOF48>5;6JFA=36:2=CAH6::394DHC?52803MCJ0<617:FJE97>6?1OEL2>>69GMD:587=0HDO320<4?AOF4;85;6JFA=00:2=CAH698394DHC?60803MCJ0?817:FJE9406>1OEL2=8?58@LG;:04=7IGN<3<4?AOF4::556JFA=12>5803MCJ0>?16:FJE959>2NBM1:16:FJE939>2NBM1816:FJE919>2NBM1616:FJE9?9>2NBN1>17:FJF9776>1OEO2>1?58@LD;9;4<7IGM<01=3>BNJ5;?2:5KIC>21;169GMG:617<0HDL31?58@LD;:94<7IGM<33=3>BNJ5892:5KIC>17;1908;EKA8739?2NBN1<9>69GMG:5?7=0HDL329<4?AOE4;35:6JFB=0=3>BNJ59;245KIC>05?69?2NBN1=>>79GMG:46?1OEO2;>79GMG:26?1OEO29>79GMG:06?1OEO27>79GMG:>6>1OECO30?:8@LHF48:546JFN@>25;>BNFH6:9364DHLB840902NBBL2>7?:8@LHF482546JFN@>2=;199GMKG;:<437IGAA=05:==CAGK7>:07;EKME94?611OECO328<4?AOII58546JFN@>04;g?50?:8@LHF4:;5;6JFN@>0:2=CAGK78394DHLB80803MCEM1817:FJJD:06>1OECO38?58@LHF404<7IGAB=2=<>BNFK6:<364DHLA847902NBBO2>2?:8@LHE489546JFNC>20;>720HD@M<05=<>BNFK6:4364DHLA84?9?2NBBO2>>99GMKD;:9437IGAB=02:==CAGH7>?07;EKMF944611OECL325<;?AOIJ58>255KIO@?638?3MCEN1<8>99GMKD;:1437IGAB=0::2=CAGH7>364DHLA8669i2NBBO2<1;2=<>BNFK68=394DHLA86803MCEN1:17:FJJG:26>1OECL36?58@LHE4>4<7IGAB=:=3>BNFK622:5KIQC?4;13:2=CAYH7=394DHRA878>3MC[N1=50?58@LVE4:4=7IAN<1<4?AIF48:5;6J@A=32:2=CGH6:>394DNC?56803MEJ0<:17:FLE9726>1OCL2>6?58@JG;9>4<7IAN<0:=3>BHI5;22;5KO@>2:2=CGH69<394DNC?64803MEJ0?<17:FLE9446>1OCL2=4?58@JG;:<4<7IAN<34=3>BHI58<2:5KO@>1<;1409;EMB87803MEJ0>>19:FLE956294<7IAN<23=2>BHI595:6J@A=6=2>BHI5?5:6J@A=4=2>BHI5=5:6J@A=:=2>BHI535:6J@B=2=3>BHJ5;;2:5KOC>25;169GKG:6=7=0HBL317<4?AIE48=5;6J@B=3;:2=CGK6:5384DN@?5;1=08;EMA8779?2NDN1<=>69GKG:5;7=0HBL325<4?AIE4;?5;6J@B=05:2=CGK69;394DN@?6=803MEI0?716:FLF949?2NDN1=?>89GKG:493:5;6J@B=12:3=CGK682;5KOC>7:3=CGK6>2;5KOC>5:3=CGK6<2;5KOC>;:3=CGK622:5KOQC?4;13:2=CGYH7=394DNRA878>3ME[N1=50?58@JVE4:437IAZT@>3:<=CG\^J0<>19:FLQQG;98427IAZT@>26;?89GKPRF48>556J@UUC?508>3ME^XL2>6?;8@JSSI5;<245KOTVB84>912NDYYO318<;?AIR\H6:245KOTVB876912NDYYO320<:?AIR\H69>374DNWWE944601OCXZN<36==>BH]]K7>806;EMVPD:5>730HB[[A=04:<=CG\^J0?619:FLQQG;:0437IAZT@>1:<=CG\^J0>>1b:FLQQG;;80;245KOTVB867902NDYYO33?:8@JSSI5>546J@UUC?1;>BH]]K75364DNWWF96912NDYYL311<:?AIR\K6:=374DNWWF975601OCXZM<01==>BH]]H7=906;EMVPG:6=730HB[[B=35:<=CG\^I0<919:FLQQD;91427IAZTC>2=;>15;?89GKPRE4;9556J@UU@?618>3ME^XO2=5?;8@JSSJ58=245KOTVA871912NDYYL329<:?AIR\K695364DNWWF94912NDYYL33119:FLQQD;;8437IAZTC>0:==CG\^I0907;EMVPG:2611OCXZM<7<;?AIR\K6<255KOTVA8=8?3ME^XO26>29FJD511BBDZ__154?LHN\V:;;6GAIU]352=NF@^T;7:KMMQY7=>1BBDZP0758MKOSW9=<7D@FT^2;3>OIA]U;5:5FNHV\4D11BBDZP1758MKOSW8=<7D@FT^3;3>OIA]U:5:5FNHV\5D1D69JJLRX9L=0ECG[_0D4?LHN\V8;;6GAIU]152=NF@^T>?94IOKW[7503@DBXR<;7:KMMQY5=>1BBDZP2758MKOSW;=<7D@FT^0;3>OIA]U95:5FNHV\6D11BBDZP3758MKOSW:=<7D@FT^1;3>OIA]U85:5FNHV\7D1L8;HLJPZ5D?2CEEYQIW\@GBVHQ_RHOJPLPB[VDLO<5_8:R-6=~cWE>0\L\[a:RJJZDR[@NSn6^FN^@VWKGJM?1[_IAAEd9QEHD6>VY8:R]<6b9Q@DBCZLIH0=0l;SFB@ATBKJ6:2n5]D@FGV@ED4;4n7_JNDEPFGF:4294h7_JNDEPFGF:46h1YILJPFHPPPg=UMNINM1>50?;8V@ADMH6;2o5]EFAFF96=8730^HILEC>3:<=U[]K7<7>17:PPPD:7601Y_YL30;2=3>TT\K6;2:5\BHVFVW763ZBYIJQJXUPBGQYIOJo0_E\JG^OJJZUNRL;87^GB_BMOHLUNGGUHDHMD6:QLQWEB?2YYZLBPA69PVSGKWK>0_^\N4:QPVG0<[]K_Y^:4TXRF04=R8&rxxRlck^ofiZabflxjxb| gocwmsceen$emygye^`ooZkbeVmnb"xnlhf-gvruk2_XI_QYIRKAH@5<^JI27[GJW^VZT@5<_LK=7ZKN<1<5?RCF484=7ZKN<3<;?RCF4:0;2;5XE@>0:6=PMK<0[HL30?48S@D;97<0[HL32?:8S@D;;3:5:6YJB=1=g>QUA]OTABJJ_@a8SWOSMVGDHHQM1e9[MIOIP$RON->!1!QWQG&7&8*J_NGF6:ZPPIOE?2RXXRIAD69[WQYQKJh0TRM@RD]JJCI13QniSDji;Yfk[Utne_oydaa119[`hYJiceyZh||inl24>^ceVGbbb|Yesqjkk5gcl{k7>3o4aefqe95=8720mij}a=1=5==edbUfi`Qheo]dakcuajUhy|>6:`ooZkbeVmnbR~}il]tmaro9k1i`fQbel]dakYwz`gT{opdp\w6`0naePmdo\c`hX~>U:Su}{129ahnYjmdUbb}{{_cnlgn733kf`S`kb_nwwtprXjeehgo5mlnahI`khzp>n:6lcobiNahiuq%hggRcjm^efjZp0W8&poRokdsc\slbs`4>'oRokds`\slbs`4>'oRocgnpjpmk:8%iTmugPie]tmaro5=&hSlvf_rnbr`Ysqyo6$jUhc`c`n^aoo86+kVnnjl{ct^fbpd;7$jUoe~omld]tewhXja|Tobbc=1.`[aotikfnSzo}n^`krZtffno6#c^jbwZoiblii|20-a\lduXelgTcxzuu]qabuXi4:'oRfns^ofiZir|ySkhs^`>4)eX`hyTaxvPotvsqqYumnyTm0>#c^jbwZkrpVe~x}{{_sgdwZd:8%iTdl}Prde`ad;7$jUcm~Q}efaff86+kVbjR||t`?2(fYoizUyyl20-a\lduX{flinmPiorvpZtbozUj1="l_icp[via|lihSb{{ptv\v`atWk7; nQfnhv\bljbWgkfi0``_bmf[cokmVfdmikk,b]jjlrfWkg1="l_hljpgYqie7; nQfnugqbdebW}s{i0>#c^nleaYnf`~Tjdbj=1.`[hcjW}s{i0>#c^ov|ZvnxlfbbhQ|t`efw86+kVzye`Q{yqg>2)eXzlkoSikti]b940+kVxnmiQkeqvk[g;6>%iT~hok_vkgpmYf5:8'oR|jae]tmaroWk78>!mPrrv\twohz`~rSl3LE-a\vvrXx{cd~dzv_c?@A)eXzz~Txt~j=R[MG)eXzz~ym`Qn=1.`[wuszhgTn0>#c^qjiZehdecxeb`Pcig`o8GKD%iTy~kPbxvf[rcf59&hSx}j_c{waZqbj4:'oR{|e^ffbdsk|Vnjxl3?,b]vw`Ybkj7; nQzsd]pkcrbkj7; nQxe`]tmaro58&hSzkm_vkgpm;6$jU|~dzj_egspmYf58<'oRy}iug\``vs`Vh6=;"l_vpjp`YjgmoTm0\JAE]EMWUS$jU|~dzj_lmgaZd:_[C_IRHFRRV/gZqua}oT{dj{h^c>77*dW~xbxhQxievk[g;4:%iTtikyibgeehokq4y{mznn2g~5c=edfi`Ahc`rx.ahnYjmdUlicQy7^3/x23:==cagk7==07;ekme976611oeco313<;?aoii5;8255kioc?518?3mcem1?:>99gmkg;9?437igaa=34:==cagk7=507;ekme97>6>1oeco31?:8`lhf4;:546jfn`>15;>bnfh699364dhlb870902nbbl2=7?:8`lhf4;2546jfn`>1=;169gmkg;=7=0hd`n<7<4?aoii5=5;6jfn`>;:2=cagk75364dnwwe96912ndyyo311<:?air|h6:=374dnwwe975601ocxzn<01==>bh}}k7=906;emvpd:6=730hb{{a=35:<=cg|~j0<919:flqqg;91427iazt`>2=;>15;?89gkprf4;9556j`uuc?618>3me~xl2=5?;8`jssi58=245kotvb871912ndyyo329<:?air|h695364dnwwe94912ndyyo33119:flqqg;;8437iazt`>0:==cg|~j0907;emvpd:2611ocxzn<7<;?air|h6<255kotvb8=8?3me~xl26>99mcfdraen97ca=8:pbiiihxR:V"ob.s-p7Zhhagc"ob/rrqeh(uid>0~~zn8:ufe96=87<0{ho30?CDu4?82JKt??>:G87>4}T=909<<4>c6827610j00:nlok{o3eb?7n6?>>:0a4>454?>h26=i57?macd8`776290:60:?>98b882fdd43^:hk4?:082>1g|[<:1>=?51b595650?k31=oom3:&2a<<6k91]=kk52zw2g4<63|;h>7>4}%3`54681>1>|@8o<7)?j5;025>\413>p57?m:d827?{#9oi1>=j4$2c9645<,=l1><<4$0fg>4=#9mi1>=<4i37`>5<#9jk1>8l4n0a:>5=5<#9jk1>=84n0a:>4=5<#9jk1>=84n0a:>6=5<#9jk1>?j4n0a:>4=5<#9jk1>?j4n0a:>6=5<#9jk1>?j4n0a:>0=5<#9jk1>?j4n0a:>2=5<#9jk1>?j4n0a:><=5<#9jk1>?j4n0a:>g=5<#9jk1>?j4n0a:>a=5<#9jk1>?j4n0a:>c=4;h02e?6=,8ij6?2:9j64>=83.:ol4=2e9m5f?=9:10e??8:18'5fg=:;n0b3:1(76g=3483>!7di389h6`>c8822>=n::>1<7*>c`816a=i9j31=:54i310>5<#9jk1>?j4n0a:>4><3`88>7>5$0ab>74c3g;h57?6;:k174<72-;hm7<=d:l2g<<6i21b>>>50;&2gd<5:m1e=n751c98m74a290/=no523f8j4e>28i07d<=b;29 4ef2;8o7c?l9;3g?>o5:90;6)?la;01`>h6k00:i65f20794?"6kh09>i5a1b;95c=5<m6=4+1bc961c5<#9jk1>9k4n0a:>4=i6=4+1bc961c5<#9jk1>9k4n0a:>6=26=4+1bc961c5<#9jk1>9k4n0a:>0=<6=4+1bc961c5<#9jk1>9k4n0a:>2=>6=4+1bc961c5<#9jk1>9k4n0a:><=86=4+1bc961c5<#9jk1>9k4n0a:>g=;6=4+1bc961c5<#9jk1>9k4n0a:>a=5<#9jk1>9k4n0a:>c=4;n00f?6=,8ij6?:j;o3`=?7632e9?l4?:%3`e?43m2d:o44>2:9l66?=83.:ol4=4d9m5f?=9:10c?=7:18'5fg=:=o0b76a=5783>!7di38?i6`>c8822>=h:c`810`=i9j31=:54o377>5<#9jk1>9k4n0a:>4><3f8>?7>5$0ab>72b3g;h57?6;:m117<72-;hm7<;e:l2g<<6i21d>8?50;&2gd<528i07b<;c;29 4ef2;>n7c?l9;3g?>i5<80;6)?la;07a>h6k00:i65`22494?"6kh098h5a1b;95c=:183!7b=3;n46F>f89K5`13n1=<4>2;3f>x"40380e2910e2810e2:10e?;50;&2gd<5<2d:o44?;:k17?6=,8ij6?:4n0a:>4=c`810>h6k00976g=1;29 4ef2;>0b5$0ab>dec881?>of03:1(2:10el950;&2gd0=c`8bg>h6k00=76gn4;29 4ef2hi0b7>5$0ab>dec88b?>of83:1(2k10e4k50;&2gda=c`8bg>h6k00n76g6b;29 4ef2hi0b;:k:44<3`3<6=4+1bc9ef=i9j31=>54i8494?"6kh0jo6`>c8820>=n1<0;6)?la;c`?k7d13;>76gm4;29 4ef2hi0b10eo<50;&2gd8:9jf4<72-;hm7ol;o3`=?7>32ci<7>5$0ab>de5<#9jk1mn5a1b;95g=c`8bg>h6k00:o65fa`83>!7di3kh7c?l9;3g?>o>n3:1(28o07d7;:18'5fg=ij1e=n751g98m4bf290/=no51e;8j4e>2910e2910e0b2;10e:18'5fg=9o>0b5$0ab>7`c881?>o5k3:1(2:10enk50;&2gd4=c`8``>h6k00976gl9;29 4ef2jn0b=83.:ol4ld:l2g<<332ch;7>5$0ab>fbc885?>od=3:1(2>10en:50;&2gd<=c`8``>h6k00j76gl1;29 4ef2jn0b5$0ab>fbc88f?>oek3:1(2o10eol50;&2gd0:9jfd<72-;hm7mk;o3`=?7632ci57>5$0ab>fb5<#9jk1oi5a1b;956=c`8``>h6k00:865fb783>!7di3io7c?l9;36?>oc=3:1(28<07dj;:18'5fg=km1e=n751698ma5=83.:ol4ld:l2g<<6021bh?4?:%3`e?ec3g;h57?6;:kg5?6=,8ij6nj4n0a:>4g<3`n;6=4+1bc9ga=i9j31=o54ibd94?"6kh0hh6`>c882g>=nkk0;6)?la;ag?k7d13;o76gl0;29 4ef2jn0b32e:?44?:%3`e?73<2d:o44n;:m27=<72-;hm7?;4:l2g<0:9l567=83.:ol4>459m5f?=9810c<=?:18'5fg=9=>0b2d83>!7di3;?86`>c8820>=h9;n1<7*>c`8201=i9j31=854o06`>5<#9jk1=9:4n0a:>40<3f;?n7>5$0ab>4233g;h57?8;:m20d<72-;hm7?;4:l2g<<6021d=9750;&2gd<6<=1e=n751898k42?290/=no51568j4e>28k07b?;7;29 4ef28>?7c?l9;3a?>i6h6k00:o65`15094?"6kh0:895a1b;95a=32e:9l4?:%3`e?71=2d:o44n;:m21<<72-;hm7?95:l2g<4?:%3`e?71=2d:o44>0:9l504=83.:ol4>649m5f?=9810c<;>:18'5fg=9??0b4g83>!7di3;=96`>c8820>=h9=o1<7*>c`8220=i9j31=854o04g>5<#9jk1=;;4n0a:>40<3f;=o7>5$0ab>4023g;h57?8;:m22g<72-;hm7?95:l2g<<6021d=;o50;&2gd<6><1e=n751898k40>290/=no51778j4e>28k07b?98;29 4ef28<>7c?l9;3a?>i6>>0;6)?la;351>h6k00:o65`17194?"6kh0::85a1b;95a=51;294~"6m<0:i55G1g;8L4c03f;h:7>5;|`2bd<7280;6=u+1d79527<@8l27E?j7:m235<722wi>8750;cb>5<7s-;n97?lc:J2b<=O9l=0V>75az3e>76=9>0:47?l:0f9e?d=n3;;6p*>c4811==#9>8186*>7287?!70<3>0(<9::59'520=<2.:;:4;;%34"6?k0?7)?8c;68 41c2=1/=:k54:&23c<33-;3<7:4$0:2>1=#918186*>8287?!7?<3>0(<6::59'5=0=<2.:4:4;;%3;"60k0?7)?7c;68 4>c2=1/=5k54:&21=#908186*>9287?!7><3>0(<7::59'5<0=<2.:5:4;;%3:"61k0?7)?6c;68 4?c2=1/=4k54:&2=c<33-;j<7:4$0c2>1=#9h8186*>a287?!7f<3>0("6ik0?7)?nc;68 4gc2=1/=lk54:&2ec<33-;i<7:4$0`2>1=#9k8186*>b287?!7e<3>0("6jk087)?ke;14?!7b8390(:29'5c0=9m80(50;9j6g<72-;hm7!7di38j7c?l9;08?l40290/=no52`9m5f?=;21b>;4?:%3`e?4f3g;h57:4;h06>5<#9jk1>l5a1b;91>=n::0;6)?la;0b?k7d13<07d<=:18'5fg=:h1e=n757:9j64<72-;hm7<3`9=6=4+1bc970=i9j31<65f3583>!7di39>7c?l9;38?l54290/=no5349m5f?=:21b??4?:%3`e?523g;h57=4;h12>5<#9jk1?85a1b;90>=n;90;6)?la;16?k7d13?07d!7di3290/=no56`9m5f?=921b::4?:%3`e?0f3g;h57<4;h45>5<#9jk1:l5a1b;97>=n><0;6)?la;4b?k7d13>07d8;:18'5fg=>h1e=n755:9j26<72-;hm78n;o3`=?0<3`<96=4+1bc92d=i9j31;65f6083>!7di35<#9jk1:l5a1b;9f>=n=j0;6)?la;4b?k7d13i07d;m:18'5fg=>h1e=n75d:9j1d<72-;hm78n;o3`=?c<3`?26=4+1bc92d=i9j31j65f5983>!7di3o2?3:1(28;07d;9:18'5fg=>h1e=n751398m03=83.:ol49a:l2g<<6;21b994?:%3`e?0f3g;h57?;;:k67?6=,8ij6;o4n0a:>43<3`=96=4+1bc92d=i9j31=;54i6394?"6kh0=m6`>c8823>=n?90;6)?la;4b?k7d13;376g9f;29 4ef2?k0bb:9j2f<72-;hm78n;o3`=?7d32c=47>5$0ab>3g5<#9jk1:l5a1b;95`=c`85e>h6k00:j65f8b83>!7di32i7c?l9;28?l>f290/=no58c9m5f?=921b454?:%3`e?>e3g;h57<4;h:4>5<#9jk14o5a1b;97>=n0?0;6)?la;:a?k7d13>07d6::18'5fg=0k1e=n755:9j<1<72-;hm76m;o3`=?0<3`286=4+1bc9!7di32i7c?l9;:8?l>6290/=no58c9m5f?=121b4=4?:%3`e?>e3g;h57o4;h5e>5<#9jk14o5a1b;9f>=n?m0;6)?la;:a?k7d13i07d9l:18'5fg=0k1e=n75d:9j3g<72-;hm76m;o3`=?c<3`=j6=4+1bc9!7di32i7c?l9;33?>o003:1(28;07d98:18'5fg=0k1e=n751398m20=83.:ol47b:l2g<<6;21b;84?:%3`e?>e3g;h57?;;:k40?6=,8ij65l4n0a:>43<3`386=4+1bc9c8823>=n180;6)?la;:a?k7d13;376g60;29 4ef21h0ba290/=no58c9m5f?=9h10e5k50;&2gdb:9j5$0ab>=d5<#9jk14o5a1b;95`=91<7*>c`8;f>h6k00:j65fd`83>!7di3n27c?l9;28?lb?290/=no5d89m5f?=921bh:4?:%3`e?b>3g;h57<4;hf5>5<#9jk1h45a1b;97>=nlo0;6)?la;ff?k7d13:07djk:18'5fg=ll1e=n751:9j`f<72-;hm7jj;o3`=?4<3`ni6=4+1bc9``=i9j31?65`f883>!7di3l37c?l9;28?j`0290/=no5f99m5f?=921dj84?:%3`e?`?3g;h57<4;nd7>5<#9jk1j55a1b;97>=hn:0;6)?la;d;?k7d13>07bh=:18'5fg=n11e=n755:9lb4<72-;hm7h7;o3`=?0<3fl;6=4+1bc9b==i9j31;65`eg83>!7di3l37c?l9;:8?jcb290/=no5f99m5f?=121dii4?:%3`e?`?3g;h57o4;ng`>5<#9jk1j55a1b;9f>=hmh0;6)?la;d;?k7d13i07bk6:18'5fg=n11e=n75d:9la=<72-;hm7h7;o3`=?c<3fo<6=4+1bc9b==i9j31j65`e783>!7di3l37c?l9;33?>ib=3:1(28;07bk;:18'5fg=n11e=n751398k`5=83.:ol4i8:l2g<<6;21di?4?:%3`e?`?3g;h57?;;:mf5?6=,8ij6k64n0a:>43<3f;;<7>5$0ab>c>5<#9jk1j55a1b;952=c`8e<>h6k00:465`fe83>!7di3l37c?l9;3:?>iak3:1(28k07bhm:18'5fg=n11e=n751c98kcg=83.:ol4i8:l2g<<6k21dj;4?:%3`e?`?3g;h57?k;:mff?6=,8ij6k64n0a:>4c<3fo;6=4+1bc9b==i9j31=k54o005>5<#9jk1=?;4n0a:>5=5<#9jk1=?;4n0a:>7=54o03b>5<#9jk1=<74n0a:>5=5<#9jk1=<74n0a:>7=6=4+1bc954?54o037>5<#9jk1=<74n0a:>1=5<#9jk1=<74n0a:>3=5<#9jk1=<74n0a:>==5<#9jk1=<74n0a:>d=5<#9jk1=<74n0a:>f=5<#9jk1=<74n0a:>`=5<#9jk1=<74n0a:>46<3f;;:7>5$0ab>47>3g;h57?>;:m240<72-;hm7?>9:l2g<<6:21d==:50;&2gd<6901e=n751298k464290/=no510;8j4e>28>07b??2;29 4ef28;27c?l9;36?>i6:80;6)?la;32=>h6k00::65`13294?"6kh0:=45a1b;952=32e:=i4?:%3`e?7612d:o44>a:9l54e=83.:ol4>189m5f?=9k10c0b83>!7di3;:56`>c882a>=h99;1<7*>c`825<=i9j31=k54o00a>5<#9jk1=?o4n0a:>5=5<#9jk1=?o4n0a:>7=54}r3g4cf348>57?i0:p60<72:qU>85224;963=::<31?<5rs3194?5|V;901?;6:378973>2::0q~<=:180[45348>57<<;<06=?4b3ty9=7>53z\15>;5=009>63=5881`>{tim0;6?uQae9>60?=0?1vll50;0xZdd<5;?265;4}rc:>5<5sWk270<:9;:7?xuf03:1>vPn8:?11<52z\b0>;5=007}Yi:16>875749~wd4=838pRl<4=37:>222130q~7l:181[?d348>579j;|q:f?6=:rT2n63=58847>{t1h0;6?uQ9`9>60?=><1v4750;0xZ5<5sW3370<:9;40?xu>?3:1>vP67:?11<<1:2wx5;4?:3y]=3=::<319n5rs8794?4|V0?01?;6:4`8yvd32909wSl;;<06=?3f3tyi?7>52z\a7>;5=00>56s|b383>7}Yj;16>875559~wg7=838pRo?4=37:>052?20q~7i:181[?a348>57;k;|q:0?6=:rT2863=58866>{t<80;6>uQ409>60?=<816>875479~w40b2908wS?9e:?11<<6>l16>87517d8yv73=3:1>vP>449>60?=98>0q~?;3;296~X6<:16>8751018yv7393:1>vP>409>60?=9880q~?;0;296~X6<916>8751038yv74n3:1>vP>3g9>60?=99h0q~?87511c8yv74l3:1>vP>3e9>60?=9930q~?87511:8yv74j3:1>vP>3c9>60?=9990q~?8751108yv7413:1>vP>389>60?=9;;0q~?<8;296~X6;116>8751328yv74>3:1>vP>379>60?=98h0q~?<5;296~X6;<16>8751058yv74<3:1>vP>359>60?=99i0q~?<3;296~X6;:16>8751138yv74:3:1>vP>339>60?=n:1v<=>:181[749279944i2:p566=838pR<=?;<06=?`63ty:>k4?:3y]57`<5;?26k>4}r31a?6=:rT:>h5224;9ad=z{88o6=4={_31`>;5=00n56s|15a94?4|V8>h70<:9;g;?xu62l=0q~?;a;296~X6875e39~w42>2909wS?;9:?11<57??0:p511=838pR<:8;<06=?`a3ty:8;4?:3y]510<5;?26ko4}r376?6=:rT:8?5224;9b3=z{89<6=4={_303>;5=00nn6s|13a94?4|V88h70<:9;g3?xu6k:0;6?u21g`95f0<5;?26?m4}r72>5<20r7:jl4>719]14=Y9mh0R;_3`b>X6kl1U=nj4=37:>3b<5;?26;k4=37:>3`<5;?26:>4=37:>a0<5;?268;4=37:>00<5;?26894=37:>0><5;?26i94=37:>0c<5;?268h4=37:>36<5;?26;?4=37:>a><5;?26;84=37:>31<5;?26;74=37:>3d<5;?26io4=37:>=c<5;?265h4=37:><6<5;?264?4=37:>ad<5;?26:84=37:>21<5;?26:64=37:>2?<5;?26im4=37:>2`<5;?265>4=37:>=7<5;?265<4=37:>ab<5;?26594=37:>=><5;?265o4=37:>=e<5;?26ih4=37:>71<5;?26><4=37:>7><5;?26>=4=37:>7?<5;?26>:4=37:>7d<5;?26>84^06g?842138:7S?:8:\226=Y9?=0R<87;_35=>X6>h1U=;l4^04`?[71l2T:8h5Q15d8Z4373W;>=6P>539]505X6=k1U=8m4^07g?[72m2T:9k5Q1728Z4063W;=>6P>659]5304?:5y>5cd=9j<013;o:63>e7822`=z{;9=6=4={_002>;6m?0:>n5rs362>5<5sW8?=63>e78272=z{;>h6=4={_07g>;6m?0:8?5rs373>5<5sW8><63>e78203=z{;?:6=4={_065>;6m?0:8:5rs371>5<5sW8>>63>e7820==z{;?86=4={_067>;6m?0:845rs377>5<5sW8>863>e7820d=z{;?>6=4={_061>;6m?0:8o5rs375>5<5sW8>:63>e7820f=z{;9<6=4={_003>;6m?0:>i5rs31;>5<5sW88463>e7826`=z{;926=4={_00=>;6m?0:>k5rs31b>5<5sW88m63>e78275=z{;9i6=4={_00f>;6m?0:?<5rs31`>5<5sW88o63>e78277=z{;9o6=4={_00`>;6m?0:?>5rs31f>5<5sW88i63>e78271=z{;9m6=4={_00b>;6m?0:?85rs363>5<5sW8?<63>e78273=z{;>96=4={_076>;6m?0:?55rs360>5<5sW8??63>e7827<=z{;>?6=4={_070>;6m?0:?l5rs366>5<5sW8?963>e7827g=z{;>=6=4={_072>;6m?0:?n5rs364>5<5sW8?;63>e7827a=z{;>36=4={_07<>;6m?0:?h5rs36:>5<5sW8?563>e7827c=z{;>j6=4={_07e>;6m?0:8=5rs36a>5<5sW8?n63>e78204=z{;>o6=4={_07`>;6m?0:8>5rs36e>5<5sW8?j63>e78200=z{;;?6=4={_020>;6m?0?=6s|20794?4|V;;>70?j6;;7?xu5:90;6?uQ232894c120l0q~<=b;296~X5:k16=h85a`9~w74a2909wS<=f:?2a3>>50;0xZ75734;n:7oi;|q174<72;qU>>?4=0g5>g67>52z\177=:9l<1n<5rs310>5<5sW88?63>e78a6>{t::>1<73h87p}=3483>7}Y::?013:1>vP=179>5`0=1<1v??8:181[46?27:i;466:p64>=838pR??7;<3f2??03ty9=44?:3y]64?<58o=6464}r02e?6=:rT9=l521d49=<=z{;;i6=4={_02f>;6m?02m6s|20a94?4|V;;h70?j6;;a?xu59m0;6?uQ20f894c120i0q~<>e;296~X59l16=h859e9~w77a2909wS<>f:?2a3<>m2wx>??50;0xZ74634;n:7o?;|q167<72;qU>?<4=0g5>d752z\166=:9l<1m?5rs307>5<5sW89863>e78b7>{t:;?1<73k?7p}=2783>7}Y:;<01vP=269>5`0=i?1v?<7:181[45027:i;4n7:p67?=838pR?<6;<3f2?g?3ty9>l4?:3y]67g<58o=6l74}r01g?6=:rT9>n521d49eg=z{;8n6=4={_01a>;6m?0jh6s|21194?4|V;:870?j6;02?xu58=0;6?uQ216894c12;80q~8m50;7xZ73d34;n:7?jf:?2a3<6mm16=h851da894c128oi7p}=5`83>7}Y:vF>e69~j4`62909wE?j7:m5c4=838pD5<5sA;n;6sa1g494?4|@8o<7p`>f683>7}O9l=0qc?i8;296~N6m>1vb52zJ2a2=zf8lo6=4={I3f3>{i9oo1<7vF>e69~j7662909wE?j7:m654=838pD5<5sA;n;6sa21494?4|@8o<7p`=0683>7}O9l=0qc1vb?>6:181M7b?2we>=o50;0xL4c03td952zJ2a2=zf;:o6=4={I3f3>{i:9o1<7vF>e69~j7762909wE?j7:m644=838pD5<5sA;n;6sa20494?4|@8o<7p`=1683>7}O9l=0qc<>8;296~N6m>1vb??6:181M7b?2we>52zJ2a2=zf;;o6=4={I3f3>{i:8o1<7vF>e69~j7462909wE?j7:m674=838pD5<5sA;n;6sa23494?4|@8o<7p`=2683>7}O9l=0qc<=8;296~N6m>1vb?<6:181M7b?2we>?o50;0xL4c03td9>o4?:3yK5`152zJ2a2=zf;8o6=4={I3f3>{i:;o1<7vF>e69~j7562909wE?j7:m664=838pD5<5sA;n;6sa1da94?7|@8o<7p`>ee83>4}O9l=0qpsr@AAx6=6=:: + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index: trunk/rtl/vhdl/mod_exp/blockMemory32/coregen.cgp =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/coregen.cgp (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/coregen.cgp (revision 5) @@ -0,0 +1,9 @@ +SET busformat = BusFormatAngleBracketNotRipped +SET designentry = VHDL +SET device = xc3s500e +SET devicefamily = spartan3e +SET flowvendor = Other +SET package = fg320 +SET speedgrade = -5 +SET verilogsim = false +SET vhdlsim = true Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.sym =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.sym (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.sym (revision 5) @@ -0,0 +1,27 @@ + + + BLOCK + 2015-2-1T11:33:56 + + + + + + + + blockMemory + + + + + + + + + + + + + + + Index: trunk/rtl/vhdl/mod_exp/blockMemory32/xlnx_auto_0_xdb =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/xlnx_auto_0_xdb (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/xlnx_auto_0_xdb (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory32/xlnx_auto_0_xdb Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory32/gen_blockMemory.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/gen_blockMemory.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/gen_blockMemory.tcl (revision 5) @@ -0,0 +1,37 @@ +## +## Core Generator Run Script, generator for Project Navigator regen command +## + +proc findRtfPath { relativePath } { + set xilenv "" + if { [info exists ::env(XILINX) ] } { + if { [info exists ::env(MYXILINX)] } { + set xilenv [join [list $::env(MYXILINX) $::env(XILINX)] $::xilinx::path_sep ] + } else { + set xilenv $::env(XILINX) + } + } + foreach path [ split $xilenv $::xilinx::path_sep ] { + set fullPath [ file join $path $relativePath ] + if { [ file exists $fullPath ] } { + return $fullPath + } + } + return "" +} + +source [ findRtfPath "data/projnav/scripts/dpm_cgUtils.tcl" ] + +set result [ run_cg_regen "blockMemory" xc3s500e-5fg320 VHDL CURRENT ] + +if { $result == 0 } { + puts "Core Generator regen command completed successfully." +} elseif { $result == 1 } { + puts "Core Generator regen command failed." +} elseif { $result == 3 || $result == 4 } { + # convert 'version check' result to real return range, bypassing any messages. + set result [ expr $result - 3 ] +} else { + puts "Core Generator regen cancelled." +} +exit $result Index: trunk/rtl/vhdl/mod_exp/blockMemory32/_xmsgs/pn_parser.xmsgs =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/_xmsgs/pn_parser.xmsgs (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/_xmsgs/pn_parser.xmsgs (revision 5) @@ -0,0 +1,15 @@ + + + + + + + + + + +Parsing VHDL file "E:/spent i praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/blockMemory.vhd" into library work + + + + Index: trunk/rtl/vhdl/mod_exp/blockMemory32/_xmsgs/cg.xmsgs =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/_xmsgs/cg.xmsgs (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/_xmsgs/cg.xmsgs (revision 5) @@ -0,0 +1,30 @@ + + + +Generating IP... + + +A core named 'blockMemory' already exists in the project. Output products for this core may be overwritten. + + +A core named 'blockMemory' already exists in the project. Output products for this core may be overwritten. + + +Component blk_mem_gen_v7_1 does not have a valid model name for VHDL synthesis + + +Pre-processing HDL files for 'blockMemory'... + + +Finished generation of ASY schematic symbol. + + +Finished FLIST file generation. + + + + Index: trunk/rtl/vhdl/mod_exp/blockMemory32/_xmsgs =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/_xmsgs (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/_xmsgs (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory32/_xmsgs Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory32/tmp/blockMemory.lso =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/tmp/blockMemory.lso (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/tmp/blockMemory.lso (revision 5) @@ -0,0 +1 @@ +work Index: trunk/rtl/vhdl/mod_exp/blockMemory32/tmp/_xmsgs/pn_parser.xmsgs =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/tmp/_xmsgs/pn_parser.xmsgs (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/tmp/_xmsgs/pn_parser.xmsgs (revision 5) @@ -0,0 +1,15 @@ + + + + + + + + + + +Parsing VHDL file "E:/spent i praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/blockMemory.vhd" into library work + + + + Index: trunk/rtl/vhdl/mod_exp/blockMemory32/tmp/_xmsgs/xst.xmsgs =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/tmp/_xmsgs/xst.xmsgs (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/tmp/_xmsgs/xst.xmsgs (revision 5) @@ -0,0 +1,412 @@ + + + +Message file "usenglish/ip.msg" wasn't found. + + +0: (0,0) : 72x256 u:32 + + +0: (0,0) : 72x256 u:32 + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_input_block.vhd" Line 691: Comparison between arrays of unequal length always returns FALSE. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_input_block.vhd" Line 707: Comparison between arrays of unequal length always returns FALSE. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_wrapper_s3.vhd" Line 4199: Range is empty (null range) + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_wrapper_s3.vhd" Line 4199: Assignment ignored + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_wrapper_s3.vhd" Line 4206: Range is empty (null range) + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_wrapper_s3.vhd" Line 4206: Assignment ignored + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_wrapper_s3.vhd" Line 4213: Range is empty (null range) + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_wrapper_s3.vhd" Line 4213: Assignment ignored + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_wrapper_s3.vhd" Line 370: Net <doutb_i[71]> does not have a driver. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_width.vhd" Line 429: Net <dina_pad[71]> does not have a driver. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_width.vhd" Line 433: Net <dinb_pad[71]> does not have a driver. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" Line 1546: Comparison between arrays of unequal length always returns FALSE. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" Line 1559: Comparison between arrays of unequal length always returns FALSE. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <doutb> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <rdaddrecc> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_bid> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_bresp> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_rid> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_rdata> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_rresp> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_rdaddrecc> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <sbiterr> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <dbiterr> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_awready> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_wready> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_bvalid> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_arready> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_rlast> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_rvalid> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_sbiterr> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_dbiterr> of the instance <U0> is unconnected or connected to loadless signal. + + +Input <S_AXI_AWID> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_AWADDR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_AWLEN> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_AWSIZE> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_AWBURST> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_WDATA> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_WSTRB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_ARID> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_ARADDR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_ARLEN> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_ARSIZE> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_ARBURST> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AClk> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_ARESETN> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_AWVALID> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_WLAST> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_WVALID> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_BREADY> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_ARVALID> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_RREADY> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_INJECTSBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_INJECTDBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal 'S_AXI_BID', unconnected in block 'blk_mem_gen_v7_1_xst', is tied to its initial value (0000). + + +Signal <S_AXI_BRESP> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal 'S_AXI_RID', unconnected in block 'blk_mem_gen_v7_1_xst', is tied to its initial value (0000). + + +Signal <S_AXI_RDATA> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_RRESP> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_RDADDRECC> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_AWREADY> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_WREADY> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_BVALID> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_ARREADY> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_RLAST> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_RVALID> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_SBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_DBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Input <WEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <ADDRB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <DINB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <ENA> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEA> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <CLKB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <RSTB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <ENB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <INJECTDBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <INJECTSBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal <INJECTDBITERR_I> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <INJECTSBITERR_I> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Input <REGCEA> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <WEA<3:1>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <WEB<3:1>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <INJECTSBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <INJECTDBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" line 1343: Output port <SBITERR> of the instance <ramloop[0].ram.r> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" line 1343: Output port <DBITERR> of the instance <ramloop[0].ram.r> is unconnected or connected to loadless signal. + + +Signal <RDADDRECC> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <SBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <DBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Input <INJECTSBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <INJECTDBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal 'dina_pad<71:67>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (00000). + + +Signal 'dina_pad<62:58>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (00000). + + +Signal 'dina_pad<53:49>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (00000). + + +Signal 'dina_pad<44:40>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (00000). + + +Signal 'dina_pad<35:31>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (00000). + + +Signal 'dina_pad<26:22>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (00000). + + +Signal 'dina_pad<17:13>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (00000). + + +Signal 'dina_pad<8:4>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (00000). + + +Signal 'dinb_pad<71:67>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (00000). + + +Signal 'dinb_pad<62:58>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (00000). + + +Signal 'dinb_pad<53:49>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (00000). + + +Signal 'dinb_pad<44:40>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (00000). + + +Signal 'dinb_pad<35:31>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (00000). + + +Signal 'dinb_pad<26:22>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (00000). + + +Signal 'dinb_pad<17:13>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (00000). + + +Signal 'dinb_pad<8:4>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (00000). + + +Signal <SBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <DBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Input <ADDRB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <DINB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEA> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <CLKB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <ENB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <WEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal 'doutb_i', unconnected in block 'blk_mem_gen_prim_wrapper_s3', is tied to its initial value (000000000000000000000000000000000000000000000000000000000000000000000000). + + +Input <DOUTB_I> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <RDADDRECC_I> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <CLKB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <SBITERR_I> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <DBITERR_I> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal <RDADDRECC> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <SBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <DBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +HDL ADVISOR - Some clock signals were not automatically buffered by XST with BUFG/BUFR resources. Please use the buffer_type constraint in order to insert these buffers to the clock signals to help prevent skew problems. + + +You have chosen to run a version of XST which is not the default solution +for the specified device family. You are free to use it in order to take +advantage of its enhanced HDL parsing/elaboration capabilities. However, +please be aware that you may be impacted by language support differences. +This version may also result in circuit performance and device utilization +differences for your particular design. You can always revert back to the +default XST solution by setting the "use_new_parser" option to value "no" +on the XST command line or in the XST process properties panel. + + + + Index: trunk/rtl/vhdl/mod_exp/blockMemory32/tmp/_xmsgs =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/tmp/_xmsgs (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/tmp/_xmsgs (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory32/tmp/_xmsgs Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory32/tmp/_cg =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/tmp/_cg (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/tmp/_cg (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory32/tmp/_cg Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory32/tmp =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/tmp (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/tmp (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory32/tmp Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory_flist.txt =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory_flist.txt (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory_flist.txt (revision 5) @@ -0,0 +1,60 @@ +# Output products list for +_xmsgs\pn_parser.xmsgs +blockMemory.asy +blockMemory.gise +blockMemory.ngc +blockMemory.sym +blockMemory.vhd +blockMemory.vho +blockMemory.xco +blockMemory.xise +blockMemory\blk_mem_gen_v7_1_readme.txt +blockMemory\doc\blk_mem_gen_ds512.pdf +blockMemory\doc\blk_mem_gen_v7_1_vinfo.html +blockMemory\example_design\blockMemory_exdes.ucf +blockMemory\example_design\blockMemory_exdes.vhd +blockMemory\example_design\blockMemory_exdes.xdc +blockMemory\example_design\blockMemory_prod.vhd +blockMemory\implement\implement.bat +blockMemory\implement\implement.sh +blockMemory\implement\planAhead_ise.bat +blockMemory\implement\planAhead_ise.sh +blockMemory\implement\planAhead_ise.tcl +blockMemory\implement\planAhead_rdn.bat +blockMemory\implement\planAhead_rdn.sh +blockMemory\implement\planAhead_rdn.tcl +blockMemory\implement\xst.prj +blockMemory\implement\xst.scr +blockMemory\simulation\addr_gen.vhd +blockMemory\simulation\blockMemory_synth.vhd +blockMemory\simulation\blockMemory_tb.vhd +blockMemory\simulation\bmg_stim_gen.vhd +blockMemory\simulation\bmg_tb_pkg.vhd +blockMemory\simulation\checker.vhd +blockMemory\simulation\data_gen.vhd +blockMemory\simulation\functional\simcmds.tcl +blockMemory\simulation\functional\simulate_isim.bat +blockMemory\simulation\functional\simulate_mti.bat +blockMemory\simulation\functional\simulate_mti.do +blockMemory\simulation\functional\simulate_mti.sh +blockMemory\simulation\functional\simulate_ncsim.sh +blockMemory\simulation\functional\simulate_vcs.sh +blockMemory\simulation\functional\ucli_commands.key +blockMemory\simulation\functional\vcs_session.tcl +blockMemory\simulation\functional\wave_mti.do +blockMemory\simulation\functional\wave_ncsim.sv +blockMemory\simulation\random.vhd +blockMemory\simulation\timing\simcmds.tcl +blockMemory\simulation\timing\simulate_isim.bat +blockMemory\simulation\timing\simulate_mti.bat +blockMemory\simulation\timing\simulate_mti.do +blockMemory\simulation\timing\simulate_mti.sh +blockMemory\simulation\timing\simulate_ncsim.sh +blockMemory\simulation\timing\simulate_vcs.sh +blockMemory\simulation\timing\ucli_commands.key +blockMemory\simulation\timing\vcs_session.tcl +blockMemory\simulation\timing\wave_mti.do +blockMemory\simulation\timing\wave_ncsim.sv +blockMemory_flist.txt +blockMemory_xmdf.tcl +summary.log Index: trunk/rtl/vhdl/mod_exp/blockMemory32/coregen.log =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/coregen.log (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/coregen.log (revision 5) @@ -0,0 +1,63 @@ +INFO:sim:172 - Generating IP... +Applying current project options... +Finished applying current project options. +WARNING:sim - A core named 'blockMemory' already exists in the project. Output + products for this core may be overwritten. +Resolving generics for 'blockMemory'... +WARNING:sim - A core named 'blockMemory' already exists in the project. Output + products for this core may be overwritten. +Applying external generics to 'blockMemory'... +Delivering associated files for 'blockMemory'... +WARNING:sim - Component blk_mem_gen_v7_1 does not have a valid model name for + VHDL synthesis +Delivering EJava files for 'blockMemory'... +Generating implementation netlist for 'blockMemory'... +INFO:sim - Pre-processing HDL files for 'blockMemory'... +Running synthesis for 'blockMemory' +Running ngcbuild... +Writing VHO instantiation template for 'blockMemory'... +Writing VHDL behavioral simulation model for 'blockMemory'... +Generating ASY schematic symbol... +INFO:sim:949 - Finished generation of ASY schematic symbol. +Generating SYM schematic symbol for 'blockMemory'... +Generating metadata file... +Generating ISE project... +XCO file found: blockMemory.xco +XMDF file found: blockMemory_xmdf.tcl +Adding E:/spent i +praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp/_c +g/blockMemory.asy -view all -origin_type imported +Adding E:/spent i +praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp/_c +g/blockMemory.ngc -view all -origin_type created +Checking file "E:/spent i +praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp/_c +g/blockMemory.ngc" for project device match ... +File "E:/spent i +praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp/_c +g/blockMemory.ngc" device information matches project device. +Adding E:/spent i +praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp/_c +g/blockMemory.sym -view all -origin_type imported +Adding E:/spent i +praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp/_c +g/blockMemory.vhd -view all -origin_type created +INFO:HDLCompiler:1061 - Parsing VHDL file "E:/spent i + praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp + /_cg/blockMemory.vhd" into library work +INFO:ProjectMgmt - Parsing design hierarchy completed successfully. +Adding E:/spent i +praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp/_c +g/blockMemory.vho -view all -origin_type imported +INFO:TclTasksC:2116 - The automatic calculation of top has been turned-off. + Please set the new top explicitly by running the "project set top" command. + To re-calculate the new top automatically, set the "Auto Implementation Top" + property to true. +Top level has been set to "/blockMemory" +Generating README file... +Generating FLIST file... +INFO:sim:948 - Finished FLIST file generation. +Launching README viewer... +Moving files to output directory... +Finished moving files to output directory +Wrote CGP file for project 'blockMemory'. Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.vhd (revision 5) @@ -0,0 +1,144 @@ +-------------------------------------------------------------------------------- +-- This file is owned and controlled by Xilinx and must be used solely -- +-- for design, simulation, implementation and creation of design files -- +-- limited to Xilinx devices or technologies. Use with non-Xilinx -- +-- devices or technologies is expressly prohibited and immediately -- +-- terminates your license. -- +-- -- +-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" SOLELY -- +-- FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR XILINX DEVICES. BY -- +-- PROVIDING THIS DESIGN, CODE, OR INFORMATION AS ONE POSSIBLE -- +-- IMPLEMENTATION OF THIS FEATURE, APPLICATION OR STANDARD, XILINX IS -- +-- MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION IS FREE FROM ANY -- +-- CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE FOR OBTAINING ANY -- +-- RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY -- +-- DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE -- +-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR -- +-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF -- +-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -- +-- PARTICULAR PURPOSE. -- +-- -- +-- Xilinx products are not intended for use in life support appliances, -- +-- devices, or systems. Use in such applications are expressly -- +-- prohibited. -- +-- -- +-- (c) Copyright 1995-2015 Xilinx, Inc. -- +-- All rights reserved. -- +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- +-- You must compile the wrapper file blockMemory.vhd when simulating +-- the core, blockMemory. When compiling the wrapper file, be sure to +-- reference the XilinxCoreLib VHDL simulation library. For detailed +-- instructions, please refer to the "CORE Generator Help". + +-- The synthesis directives "translate_off/translate_on" specified +-- below are supported by Xilinx, Mentor Graphics and Synplicity +-- synthesis tools. Ensure they are correct for your synthesis tool(s). + +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +-- synthesis translate_off +LIBRARY XilinxCoreLib; +-- synthesis translate_on +ENTITY blockMemory IS + PORT ( + clka : IN STD_LOGIC; + rsta : IN STD_LOGIC; + wea : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + addra : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + dina : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + douta : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) + ); +END blockMemory; + +ARCHITECTURE blockMemory_a OF blockMemory IS +-- synthesis translate_off +COMPONENT wrapped_blockMemory + PORT ( + clka : IN STD_LOGIC; + rsta : IN STD_LOGIC; + wea : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + addra : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + dina : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + douta : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) + ); +END COMPONENT; + +-- Configuration specification + FOR ALL : wrapped_blockMemory USE ENTITY XilinxCoreLib.blk_mem_gen_v7_1(behavioral) + GENERIC MAP ( + c_addra_width => 4, + c_addrb_width => 4, + c_algorithm => 0, + c_axi_id_width => 4, + c_axi_slave_type => 0, + c_axi_type => 1, + c_byte_size => 9, + c_common_clk => 0, + c_default_data => "0", + c_disable_warn_bhv_coll => 0, + c_disable_warn_bhv_range => 0, + c_enable_32bit_address => 0, + c_family => "spartan3", + c_has_axi_id => 0, + c_has_ena => 0, + c_has_enb => 0, + c_has_injecterr => 0, + c_has_mem_output_regs_a => 0, + c_has_mem_output_regs_b => 0, + c_has_mux_output_regs_a => 0, + c_has_mux_output_regs_b => 0, + c_has_regcea => 0, + c_has_regceb => 0, + c_has_rsta => 1, + c_has_rstb => 0, + c_has_softecc_input_regs_a => 0, + c_has_softecc_output_regs_b => 0, + c_init_file_name => "no_coe_file_loaded", + c_inita_val => "0", + c_initb_val => "0", + c_interface_type => 0, + c_load_init_file => 0, + c_mem_type => 0, + c_mux_pipeline_stages => 0, + c_prim_type => 6, + c_read_depth_a => 16, + c_read_depth_b => 16, + c_read_width_a => 32, + c_read_width_b => 32, + c_rst_priority_a => "CE", + c_rst_priority_b => "CE", + c_rst_type => "SYNC", + c_rstram_a => 0, + c_rstram_b => 0, + c_sim_collision_check => "ALL", + c_use_byte_wea => 0, + c_use_byte_web => 0, + c_use_default_data => 0, + c_use_ecc => 0, + c_use_softecc => 0, + c_wea_width => 1, + c_web_width => 1, + c_write_depth_a => 16, + c_write_depth_b => 16, + c_write_mode_a => "READ_FIRST", + c_write_mode_b => "WRITE_FIRST", + c_write_width_a => 32, + c_write_width_b => 32, + c_xdevicefamily => "spartan3e" + ); +-- synthesis translate_on +BEGIN +-- synthesis translate_off +U0 : wrapped_blockMemory + PORT MAP ( + clka => clka, + rsta => rsta, + wea => wea, + addra => addra, + dina => dina, + douta => douta + ); +-- synthesis translate_on + +END blockMemory_a; Index: trunk/rtl/vhdl/mod_exp/blockMemory32/edit_blockMemory.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/edit_blockMemory.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/edit_blockMemory.tcl (revision 5) @@ -0,0 +1,37 @@ +## +## Core Generator Run Script, generator for Project Navigator edit command +## + +proc findRtfPath { relativePath } { + set xilenv "" + if { [info exists ::env(XILINX) ] } { + if { [info exists ::env(MYXILINX)] } { + set xilenv [join [list $::env(MYXILINX) $::env(XILINX)] $::xilinx::path_sep ] + } else { + set xilenv $::env(XILINX) + } + } + foreach path [ split $xilenv $::xilinx::path_sep ] { + set fullPath [ file join $path $relativePath ] + if { [ file exists $fullPath ] } { + return $fullPath + } + } + return "" +} + +source [ findRtfPath "data/projnav/scripts/dpm_cgUtils.tcl" ] + +set result [ run_cg_edit "blockMemory" xc3s500e-5fg320 VHDL ] + +if { $result == 0 } { + puts "Core Generator edit command completed successfully." +} elseif { $result == 1 } { + puts "Core Generator edit command failed." +} elseif { $result == 3 || $result == 4 } { + # convert 'version check' result to real return range, bypassing any messages. + set result [ expr $result - 3 ] +} else { + puts "Core Generator edit cancelled." +} +exit $result Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.gise =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.gise (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.gise (revision 5) @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + 11.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory_beh.cgp =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory_beh.cgp (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory_beh.cgp (revision 5) @@ -0,0 +1,22 @@ +# Date: Sat Dec 22 01:24:09 2012 + +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = false +SET designentry = VHDL +SET device = xc3s500e +SET devicefamily = spartan3e +SET flowvendor = Other +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = fg320 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -5 +SET verilogsim = false +SET vhdlsim = true +SET workingdirectory = .\tmp\ + +# CRC: 46f7aa00 Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.veo =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.veo (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.veo (revision 5) @@ -0,0 +1,70 @@ +/******************************************************************************* +* This file is owned and controlled by Xilinx and must be used solely * +* for design, simulation, implementation and creation of design files * +* limited to Xilinx devices or technologies. Use with non-Xilinx * +* devices or technologies is expressly prohibited and immediately * +* terminates your license. * +* * +* XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" SOLELY * +* FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR XILINX DEVICES. BY * +* PROVIDING THIS DESIGN, CODE, OR INFORMATION AS ONE POSSIBLE * +* IMPLEMENTATION OF THIS FEATURE, APPLICATION OR STANDARD, XILINX IS * +* MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION IS FREE FROM ANY * +* CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE FOR OBTAINING ANY * +* RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY * +* DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE * +* IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR * +* REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF * +* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * +* PARTICULAR PURPOSE. * +* * +* Xilinx products are not intended for use in life support appliances, * +* devices, or systems. Use in such applications are expressly * +* prohibited. * +* * +* (c) Copyright 1995-2013 Xilinx, Inc. * +* All rights reserved. * +*******************************************************************************/ + +/******************************************************************************* +* Generated from core with identifier: xilinx.com:ip:blk_mem_gen:7.1 * +* * +* The Xilinx LogiCORE IP Block Memory Generator replaces the Dual Port * +* Block Memory and Single Port Block Memory LogiCOREs, but is not a * +* direct drop-in replacement. It should be used in all new Xilinx * +* designs. The core supports RAM and ROM functions over a wide range of * +* widths and depths. Use this core to generate block memories with * +* symmetric or asymmetric read and write port widths, as well as cores * +* which can perform simultaneous write operations to separate * +* locations, and simultaneous read operations from the same location. * +* For more information on differences in interface and feature support * +* between this core and the Dual Port Block Memory and Single Port * +* Block Memory LogiCOREs, please consult the data sheet. * +*******************************************************************************/ + +// Interfaces: +// AXI_SLAVE_S_AXI +// AXI_SLAVE +// AXILite_SLAVE_S_AXI +// AXILite_SLAVE + +// The following must be inserted into your Verilog file for this +// core to be instantiated. Change the instance name and port connections +// (in parentheses) to your own signal names. + +//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG +blockMemory your_instance_name ( + .clka(clka), // input clka + .rsta(rsta), // input rsta + .wea(wea), // input [0 : 0] wea + .addra(addra), // input [3 : 0] addra + .dina(dina), // input [511 : 0] dina + .douta(douta) // output [511 : 0] douta +); +// INST_TAG_END ------ End INSTANTIATION Template --------- + +// You must compile the wrapper file blockMemory.v when simulating +// the core, blockMemory. When compiling the wrapper file, be sure to +// reference the XilinxCoreLib Verilog simulation library. For detailed +// instructions, please refer to the "CORE Generator Help". + Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.xco =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.xco (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.xco (revision 5) @@ -0,0 +1,106 @@ +############################################################## +# +# Xilinx Core Generator version 14.2 +# Date: Sun Feb 01 11:31:51 2015 +# +############################################################## +# +# This file contains the customisation parameters for a +# Xilinx CORE Generator IP GUI. It is strongly recommended +# that you do not manually alter this file as it may cause +# unexpected and unsupported behavior. +# +############################################################## +# +# Generated from component: xilinx.com:ip:blk_mem_gen:7.1 +# +############################################################## +# +# BEGIN Project Options +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = false +SET designentry = VHDL +SET device = xc3s500e +SET devicefamily = spartan3e +SET flowvendor = Other +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = fg320 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -5 +SET verilogsim = false +SET vhdlsim = true +# END Project Options +# BEGIN Select +SELECT Block_Memory_Generator xilinx.com:ip:blk_mem_gen:7.1 +# END Select +# BEGIN Parameters +CSET additional_inputs_for_power_estimation=false +CSET algorithm=Fixed_Primitives +CSET assume_synchronous_clk=false +CSET axi_id_width=4 +CSET axi_slave_type=Memory_Slave +CSET axi_type=AXI4_Full +CSET byte_size=9 +CSET coe_file=no_coe_file_loaded +CSET collision_warnings=ALL +CSET component_name=blockMemory +CSET disable_collision_warnings=false +CSET disable_out_of_range_warnings=false +CSET ecc=false +CSET ecctype=No_ECC +CSET enable_32bit_address=false +CSET enable_a=Always_Enabled +CSET enable_b=Always_Enabled +CSET error_injection_type=Single_Bit_Error_Injection +CSET fill_remaining_memory_locations=false +CSET interface_type=Native +CSET load_init_file=false +CSET memory_type=Single_Port_RAM +CSET operating_mode_a=READ_FIRST +CSET operating_mode_b=WRITE_FIRST +CSET output_reset_value_a=0 +CSET output_reset_value_b=0 +CSET pipeline_stages=0 +CSET port_a_clock=100 +CSET port_a_enable_rate=100 +CSET port_a_write_rate=50 +CSET port_b_clock=100 +CSET port_b_enable_rate=100 +CSET port_b_write_rate=50 +CSET primitive=256x72 +CSET read_width_a=32 +CSET read_width_b=32 +CSET register_porta_input_of_softecc=false +CSET register_porta_output_of_memory_core=false +CSET register_porta_output_of_memory_primitives=false +CSET register_portb_output_of_memory_core=false +CSET register_portb_output_of_memory_primitives=false +CSET register_portb_output_of_softecc=false +CSET remaining_memory_locations=0 +CSET reset_memory_latch_a=false +CSET reset_memory_latch_b=false +CSET reset_priority_a=CE +CSET reset_priority_b=CE +CSET reset_type=SYNC +CSET softecc=false +CSET use_axi_id=false +CSET use_byte_write_enable=false +CSET use_error_injection_pins=false +CSET use_regcea_pin=false +CSET use_regceb_pin=false +CSET use_rsta_pin=true +CSET use_rstb_pin=false +CSET write_depth_a=16 +CSET write_width_a=32 +CSET write_width_b=32 +# END Parameters +# BEGIN Extra information +MISC pkg_timestamp=2012-05-01T17:17:26Z +# END Extra information +GENERATE +# CRC: 442de25c Index: trunk/rtl/vhdl/mod_exp/blockMemory32/summary.log =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/summary.log (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/summary.log (revision 5) @@ -0,0 +1,18 @@ + +User Configuration +------------------------------------- +Algorithm : Fixed_Primitives +Memory Type : Single_Port_RAM +Port A Read Width : 32 +Port A Write Width : 32 +Memory Depth : 16 +-------------------------------------------------------------- + +Block RAM resource(s) (18K BRAMs) : 1 +-------------------------------------------------------------- +Clock A Frequency : 100 +Port A Enable Rate : 100 +Port A Write Rate : 50 +---------------------------------------------------------- +Estimated Power for IP : 8.073006 mW +---------------------------------------------------------- Index: trunk/rtl/vhdl/mod_exp/blockMemory32/coregen.cgc =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/coregen.cgc (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/coregen.cgc (revision 5) @@ -0,0 +1,725 @@ + + + xilinx.com + project + coregen + 1.0 + + + blockMemory + + + blockMemory + Native + AXI4_Full + Memory_Slave + false + 4 + Single_Port_RAM + false + No_ECC + false + false + false + Single_Bit_Error_Injection + false + 9 + Fixed_Primitives + 256x72 + false + 64 + 16 + 64 + READ_FIRST + Always_Enabled + 64 + 64 + WRITE_FIRST + Always_Enabled + false + false + false + false + false + false + false + false + 0 + false + no_coe_file_loaded + false + 0 + true + false + CE + 0 + false + false + CE + 0 + SYNC + false + 100 + 50 + 100 + 50 + 100 + 100 + ALL + false + false + spartan3 + spartan3e + E:/spent i praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp/_cg/ + 0 + 1 + 0 + 0 + 4 + 0 + 9 + 0 + 6 + 0 + no_coe_file_loaded + 0 + 0 + SYNC + 1 + CE + 0 + 0 + 0 + 0 + 0 + 1 + READ_FIRST + 64 + 64 + 16 + 16 + 4 + 0 + CE + 0 + 0 + 0 + 0 + 0 + 1 + WRITE_FIRST + 64 + 64 + 16 + 16 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ALL + 0 + 0 + 0 + 0 + + + + + coregen + ./ + ./tmp/ + ./tmp/_cg/ + + + xc3s500e + spartan3e + fg320 + -5 + + + BusFormatAngleBracketNotRipped + VHDL + true + Other + false + false + false + Ngc + false + + + Behavioral + VHDL + false + + + 2012-05-01+17:17 + + + + + customization_generator + + ./summary.log + unknown + Sun Feb 01 11:01:05 GMT 2015 + 0x276B8704 + generationID_4013899584 + + + + model_parameter_resolution_generator + + ./summary.log + unknown + Sun Feb 01 11:01:18 GMT 2015 + 0x276B8704 + generationID_4013899584 + + + + ip_xco_generator + + ./blockMemory.xco + xco + Sun Feb 01 11:01:19 GMT 2015 + 0xB3588484 + generationID_4013899584 + + + + associated_files_generator + + ./blockMemory/blk_mem_gen_v7_1_readme.txt + ignore + txt + Sat Jul 21 06:09:39 GMT 2012 + 0xD29D9619 + generationID_4013899584 + + + ./blockMemory/doc/blk_mem_gen_ds512.pdf + ignore + pdf + Sat Jul 21 06:09:39 GMT 2012 + 0xC67523A8 + generationID_4013899584 + + + ./blockMemory/doc/blk_mem_gen_v7_1_vinfo.html + ignore + unknown + Sat Jul 21 06:09:39 GMT 2012 + 0x19E371FD + generationID_4013899584 + + + + ejava_generator + + ./blockMemory/example_design/blockMemory_exdes.ucf + ignore + ucf + Sun Feb 01 11:01:22 GMT 2015 + 0xC44C6B6D + generationID_4013899584 + + + ./blockMemory/example_design/blockMemory_exdes.vhd + ignore + vhdl + Sun Feb 01 11:01:22 GMT 2015 + 0xC531B9D3 + generationID_4013899584 + + + ./blockMemory/example_design/blockMemory_exdes.xdc + ignore + xdc + Sun Feb 01 11:01:22 GMT 2015 + 0x7684D6D4 + generationID_4013899584 + + + ./blockMemory/example_design/blockMemory_prod.vhd + ignore + vhdl + Sun Feb 01 11:01:22 GMT 2015 + 0xBCC35C04 + generationID_4013899584 + + + ./blockMemory/implement/implement.bat + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x73DC98D0 + generationID_4013899584 + + + ./blockMemory/implement/implement.sh + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0xDA8C5F63 + generationID_4013899584 + + + ./blockMemory/implement/planAhead_ise.bat + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0xAB675294 + generationID_4013899584 + + + ./blockMemory/implement/planAhead_ise.sh + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x2CC3322B + generationID_4013899584 + + + ./blockMemory/implement/planAhead_ise.tcl + ignore + tcl + Sun Feb 01 11:01:22 GMT 2015 + 0xE0D499D8 + generationID_4013899584 + + + ./blockMemory/implement/planAhead_rdn.bat + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0xF18BE2F0 + generationID_4013899584 + + + ./blockMemory/implement/planAhead_rdn.sh + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x762F824F + generationID_4013899584 + + + ./blockMemory/implement/planAhead_rdn.tcl + ignore + tcl + Sun Feb 01 11:01:22 GMT 2015 + 0xE0D499D8 + generationID_4013899584 + + + ./blockMemory/implement/xst.prj + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x49531A1B + generationID_4013899584 + + + ./blockMemory/implement/xst.scr + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x0ACE6523 + generationID_4013899584 + + + ./blockMemory/simulation/addr_gen.vhd + ignore + vhdl + Sun Feb 01 11:01:22 GMT 2015 + 0xC4BD0686 + generationID_4013899584 + + + ./blockMemory/simulation/blockMemory_synth.vhd + ignore + vhdl + Sun Feb 01 11:01:22 GMT 2015 + 0x242B5734 + generationID_4013899584 + + + ./blockMemory/simulation/blockMemory_tb.vhd + ignore + vhdl + Sun Feb 01 11:01:22 GMT 2015 + 0x403EDE43 + generationID_4013899584 + + + ./blockMemory/simulation/bmg_stim_gen.vhd + ignore + vhdl + Sun Feb 01 11:01:22 GMT 2015 + 0xB51AD3DA + generationID_4013899584 + + + ./blockMemory/simulation/bmg_tb_pkg.vhd + ignore + vhdl + Sun Feb 01 11:01:22 GMT 2015 + 0x888E222F + generationID_4013899584 + + + ./blockMemory/simulation/checker.vhd + ignore + vhdl + Sun Feb 01 11:01:22 GMT 2015 + 0x165912E8 + generationID_4013899584 + + + ./blockMemory/simulation/data_gen.vhd + ignore + vhdl + Sun Feb 01 11:01:22 GMT 2015 + 0xAAF37274 + generationID_4013899584 + + + ./blockMemory/simulation/functional/simcmds.tcl + ignore + tcl + Sun Feb 01 11:01:22 GMT 2015 + 0x32EA978C + generationID_4013899584 + + + ./blockMemory/simulation/functional/simulate_isim.bat + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x5732BCC0 + generationID_4013899584 + + + ./blockMemory/simulation/functional/simulate_mti.bat + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x86EA5D67 + generationID_4013899584 + + + ./blockMemory/simulation/functional/simulate_mti.do + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0xFFDC1F87 + generationID_4013899584 + + + ./blockMemory/simulation/functional/simulate_mti.sh + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x86EA5D67 + generationID_4013899584 + + + ./blockMemory/simulation/functional/simulate_ncsim.sh + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x7DAF5A7C + generationID_4013899584 + + + ./blockMemory/simulation/functional/simulate_vcs.sh + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x0377E85E + generationID_4013899584 + + + ./blockMemory/simulation/functional/ucli_commands.key + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x124DD850 + generationID_4013899584 + + + ./blockMemory/simulation/functional/vcs_session.tcl + ignore + tcl + Sun Feb 01 11:01:22 GMT 2015 + 0x65C492A4 + generationID_4013899584 + + + ./blockMemory/simulation/functional/wave_mti.do + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0xD1AE9DBA + generationID_4013899584 + + + ./blockMemory/simulation/functional/wave_ncsim.sv + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0xFA4242CF + generationID_4013899584 + + + ./blockMemory/simulation/random.vhd + ignore + vhdl + Sun Feb 01 11:01:22 GMT 2015 + 0x63A1BAB3 + generationID_4013899584 + + + ./blockMemory/simulation/timing/simcmds.tcl + ignore + tcl + Sun Feb 01 11:01:22 GMT 2015 + 0x32EA978C + generationID_4013899584 + + + ./blockMemory/simulation/timing/simulate_isim.bat + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x4934A6A9 + generationID_4013899584 + + + ./blockMemory/simulation/timing/simulate_mti.bat + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x86EA5D67 + generationID_4013899584 + + + ./blockMemory/simulation/timing/simulate_mti.do + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x73AA9BB8 + generationID_4013899584 + + + ./blockMemory/simulation/timing/simulate_mti.sh + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x86EA5D67 + generationID_4013899584 + + + ./blockMemory/simulation/timing/simulate_ncsim.sh + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0xFBC651DC + generationID_4013899584 + + + ./blockMemory/simulation/timing/simulate_vcs.sh + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x4D9140C3 + generationID_4013899584 + + + ./blockMemory/simulation/timing/ucli_commands.key + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x124DD850 + generationID_4013899584 + + + ./blockMemory/simulation/timing/vcs_session.tcl + ignore + tcl + Sun Feb 01 11:01:22 GMT 2015 + 0xB2A5A6F2 + generationID_4013899584 + + + ./blockMemory/simulation/timing/wave_mti.do + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x9F72A3C7 + generationID_4013899584 + + + ./blockMemory/simulation/timing/wave_ncsim.sv + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x3E2BD0E3 + generationID_4013899584 + + + + ngc_netlist_generator + + ./blockMemory.ngc + ngc + Sun Feb 01 11:03:12 GMT 2015 + 0xB01C4161 + generationID_4013899584 + + + + obfuscate_netlist_generator + + + padded_implementation_netlist_generator + + + instantiation_template_generator + + ./blockMemory.vho + vho + Sun Feb 01 11:03:15 GMT 2015 + 0x533BD793 + generationID_4013899584 + + + + structural_simulation_model_generator + + ./blockMemory.vhd + vhdl + Sun Feb 01 11:03:16 GMT 2015 + 0x4F617396 + generationID_4013899584 + + + + asy_generator + + ./blockMemory.asy + asy + Sun Feb 01 11:03:25 GMT 2015 + 0xD23467E4 + generationID_4013899584 + + + ./summary.log + unknown + Sun Feb 01 11:03:25 GMT 2015 + 0x276B8704 + generationID_4013899584 + + + + xmdf_generator + + ./blockMemory_xmdf.tcl + tclXmdf + tcl + Sun Feb 01 11:03:25 GMT 2015 + 0x0F84EBAC + generationID_4013899584 + + + + ise_generator + + ./_xmsgs/pn_parser.xmsgs + ignore + unknown + Sun Feb 01 11:03:38 GMT 2015 + 0x8B9E9C83 + generationID_4013899584 + + + ./blockMemory.gise + ignore + gise + Sun Feb 01 11:03:38 GMT 2015 + 0x12517467 + generationID_4013899584 + + + ./blockMemory.xise + ignore + xise + Sun Feb 01 11:03:38 GMT 2015 + 0xBEBA0475 + generationID_4013899584 + + + + deliver_readme_generator + + + flist_generator + + ./blockMemory_flist.txt + ignore + txtFlist + txt + Sun Feb 01 11:03:39 GMT 2015 + 0x56F501F4 + generationID_4013899584 + + + + view_readme_generator + + + + + + + + + coregen + ./ + ./tmp/ + ./tmp/_cg/ + + + xc3s500e + spartan3e + fg320 + -5 + + + BusFormatAngleBracketNotRipped + VHDL + true + Other + false + false + false + Ngc + false + + + Behavioral + VHDL + false + + + + + Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.asy =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.asy (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.asy (revision 5) @@ -0,0 +1,29 @@ +Version 4 +SymbolType BLOCK +TEXT 32 32 LEFT 4 blockMemory +RECTANGLE Normal 32 32 544 1376 +LINE Wide 0 80 32 80 +PIN 0 80 LEFT 36 +PINATTR PinName addra[3:0] +PINATTR Polarity IN +LINE Wide 0 112 32 112 +PIN 0 112 LEFT 36 +PINATTR PinName dina[31:0] +PINATTR Polarity IN +LINE Wide 0 208 32 208 +PIN 0 208 LEFT 36 +PINATTR PinName wea[0:0] +PINATTR Polarity IN +LINE Normal 0 240 32 240 +PIN 0 240 LEFT 36 +PINATTR PinName rsta +PINATTR Polarity IN +LINE Normal 0 272 32 272 +PIN 0 272 LEFT 36 +PINATTR PinName clka +PINATTR Polarity IN +LINE Wide 576 80 544 80 +PIN 576 80 RIGHT 36 +PINATTR PinName douta[31:0] +PINATTR Polarity OUT + Index: trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.vho =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.vho (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32/blockMemory.vho (revision 5) @@ -0,0 +1,89 @@ +-------------------------------------------------------------------------------- +-- This file is owned and controlled by Xilinx and must be used solely -- +-- for design, simulation, implementation and creation of design files -- +-- limited to Xilinx devices or technologies. Use with non-Xilinx -- +-- devices or technologies is expressly prohibited and immediately -- +-- terminates your license. -- +-- -- +-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" SOLELY -- +-- FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR XILINX DEVICES. BY -- +-- PROVIDING THIS DESIGN, CODE, OR INFORMATION AS ONE POSSIBLE -- +-- IMPLEMENTATION OF THIS FEATURE, APPLICATION OR STANDARD, XILINX IS -- +-- MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION IS FREE FROM ANY -- +-- CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE FOR OBTAINING ANY -- +-- RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY -- +-- DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE -- +-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR -- +-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF -- +-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -- +-- PARTICULAR PURPOSE. -- +-- -- +-- Xilinx products are not intended for use in life support appliances, -- +-- devices, or systems. Use in such applications are expressly -- +-- prohibited. -- +-- -- +-- (c) Copyright 1995-2015 Xilinx, Inc. -- +-- All rights reserved. -- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- Generated from core with identifier: xilinx.com:ip:blk_mem_gen:7.1 -- +-- -- +-- The Xilinx LogiCORE IP Block Memory Generator replaces the Dual Port -- +-- Block Memory and Single Port Block Memory LogiCOREs, but is not a -- +-- direct drop-in replacement. It should be used in all new Xilinx -- +-- designs. The core supports RAM and ROM functions over a wide range of -- +-- widths and depths. Use this core to generate block memories with -- +-- symmetric or asymmetric read and write port widths, as well as cores -- +-- which can perform simultaneous write operations to separate -- +-- locations, and simultaneous read operations from the same location. -- +-- For more information on differences in interface and feature support -- +-- between this core and the Dual Port Block Memory and Single Port -- +-- Block Memory LogiCOREs, please consult the data sheet. -- +-------------------------------------------------------------------------------- + +-- Interfaces: +-- AXI_SLAVE_S_AXI +-- AXI_SLAVE +-- AXILite_SLAVE_S_AXI +-- AXILite_SLAVE +-- BRAM_PORTA +-- BRAM_PORTA +-- BRAM_PORTB +-- BRAM_PORTB + +-- The following code must appear in the VHDL architecture header: + +------------- Begin Cut here for COMPONENT Declaration ------ COMP_TAG +COMPONENT blockMemory + PORT ( + clka : IN STD_LOGIC; + rsta : IN STD_LOGIC; + wea : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + addra : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + dina : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + douta : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) + ); +END COMPONENT; +-- COMP_TAG_END ------ End COMPONENT Declaration ------------ + +-- The following code must appear in the VHDL architecture +-- body. Substitute your own instance name and net names. + +------------- Begin Cut here for INSTANTIATION Template ----- INST_TAG +your_instance_name : blockMemory + PORT MAP ( + clka => clka, + rsta => rsta, + wea => wea, + addra => addra, + dina => dina, + douta => douta + ); +-- INST_TAG_END ------ End INSTANTIATION Template ------------ + +-- You must compile the wrapper file blockMemory.vhd when simulating +-- the core, blockMemory. When compiling the wrapper file, be sure to +-- reference the XilinxCoreLib VHDL simulation library. For detailed +-- instructions, please refer to the "CORE Generator Help". + Index: trunk/rtl/vhdl/mod_exp/blockMemory32 =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory32 (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory32 (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory32 Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory_xmdf.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory_xmdf.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory_xmdf.tcl (revision 5) @@ -0,0 +1,263 @@ +# The package naming convention is _xmdf +package provide blockMemory_xmdf 1.0 + +# This includes some utilities that support common XMDF operations +package require utilities_xmdf + +# Define a namespace for this package. The name of the name space +# is _xmdf +namespace eval ::blockMemory_xmdf { +# Use this to define any statics +} + +# Function called by client to rebuild the params and port arrays +# Optional when the use context does not require the param or ports +# arrays to be available. +proc ::blockMemory_xmdf::xmdfInit { instance } { +# Variable containing name of library into which module is compiled +# Recommendation: +# Required +utilities_xmdf::xmdfSetData $instance Module Attributes Name blockMemory +} +# ::blockMemory_xmdf::xmdfInit + +# Function called by client to fill in all the xmdf* data variables +# based on the current settings of the parameters +proc ::blockMemory_xmdf::xmdfApplyParams { instance } { + +set fcount 0 +# Array containing libraries that are assumed to exist +# Examples include unisim and xilinxcorelib +# Optional +# In this example, we assume that the unisim library will +# be available to the simulation and synthesis tool +utilities_xmdf::xmdfSetData $instance FileSet $fcount type logical_library +utilities_xmdf::xmdfSetData $instance FileSet $fcount logical_library unisim +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/blk_mem_gen_v7_1_readme.txt +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/doc/blk_mem_gen_ds512.pdf +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/doc/blk_mem_gen_v7_1_vinfo.html +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/example_design/blockMemory_exdes.ucf +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/example_design/blockMemory_exdes.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/example_design/blockMemory_exdes.xdc +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/example_design/blockMemory_prod.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/implement.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/implement.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/planAhead_ise.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/planAhead_ise.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/planAhead_ise.tcl +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/planAhead_rdn.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/planAhead_rdn.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/planAhead_rdn.tcl +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/xst.prj +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/xst.scr +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/addr_gen.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/blockMemory_synth.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/blockMemory_tb.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/bmg_stim_gen.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/bmg_tb_pkg.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/checker.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/data_gen.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/simcmds.tcl +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/simulate_isim.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/simulate_mti.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/simulate_mti.do +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/simulate_mti.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/simulate_ncsim.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/simulate_vcs.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/ucli_commands.key +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/vcs_session.tcl +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/wave_mti.do +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/wave_ncsim.sv +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/random.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/simcmds.tcl +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/simulate_isim.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/simulate_mti.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/simulate_mti.do +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/simulate_mti.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/simulate_ncsim.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/simulate_vcs.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/ucli_commands.key +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/vcs_session.tcl +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/wave_mti.do +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/wave_ncsim.sv +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory.asy +utilities_xmdf::xmdfSetData $instance FileSet $fcount type asy +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory.ngc +utilities_xmdf::xmdfSetData $instance FileSet $fcount type ngc +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory.sym +utilities_xmdf::xmdfSetData $instance FileSet $fcount type symbol +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type vhdl +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory.vho +utilities_xmdf::xmdfSetData $instance FileSet $fcount type vhdl_template +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory.xco +utilities_xmdf::xmdfSetData $instance FileSet $fcount type coregen_ip +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory_xmdf.tcl +utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path summary.log +utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount associated_module blockMemory +incr fcount + +} + +# ::gen_comp_name_xmdf::xmdfApplyParams Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/example_design/blockMemory_prod.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/example_design/blockMemory_prod.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/example_design/blockMemory_prod.vhd (revision 5) @@ -0,0 +1,270 @@ + + + + + + + + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7.1 Core - Top-level wrapper +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006-2011 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. +-- +-------------------------------------------------------------------------------- +-- +-- Filename: blockMemory_prod.vhd +-- +-- Description: +-- This is the top-level BMG wrapper (over BMG core). +-- +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: August 31, 2005 - First Release +-------------------------------------------------------------------------------- +-- +-- Configured Core Parameter Values: +-- (Refer to the SIM Parameters table in the datasheet for more information on +-- the these parameters.) +-- C_FAMILY : spartan3e +-- C_XDEVICEFAMILY : spartan3e +-- C_INTERFACE_TYPE : 0 +-- C_ENABLE_32BIT_ADDRESS : 0 +-- C_AXI_TYPE : 1 +-- C_AXI_SLAVE_TYPE : 0 +-- C_AXI_ID_WIDTH : 4 +-- C_MEM_TYPE : 0 +-- C_BYTE_SIZE : 9 +-- C_ALGORITHM : 0 +-- C_PRIM_TYPE : 6 +-- C_LOAD_INIT_FILE : 0 +-- C_INIT_FILE_NAME : no_coe_file_loaded +-- C_USE_DEFAULT_DATA : 0 +-- C_DEFAULT_DATA : 0 +-- C_RST_TYPE : SYNC +-- C_HAS_RSTA : 1 +-- C_RST_PRIORITY_A : CE +-- C_RSTRAM_A : 0 +-- C_INITA_VAL : 0 +-- C_HAS_ENA : 0 +-- C_HAS_REGCEA : 0 +-- C_USE_BYTE_WEA : 0 +-- C_WEA_WIDTH : 1 +-- C_WRITE_MODE_A : READ_FIRST +-- C_WRITE_WIDTH_A : 512 +-- C_READ_WIDTH_A : 512 +-- C_WRITE_DEPTH_A : 16 +-- C_READ_DEPTH_A : 16 +-- C_ADDRA_WIDTH : 4 +-- C_HAS_RSTB : 0 +-- C_RST_PRIORITY_B : CE +-- C_RSTRAM_B : 0 +-- C_INITB_VAL : 0 +-- C_HAS_ENB : 0 +-- C_HAS_REGCEB : 0 +-- C_USE_BYTE_WEB : 0 +-- C_WEB_WIDTH : 1 +-- C_WRITE_MODE_B : WRITE_FIRST +-- C_WRITE_WIDTH_B : 512 +-- C_READ_WIDTH_B : 512 +-- C_WRITE_DEPTH_B : 16 +-- C_READ_DEPTH_B : 16 +-- C_ADDRB_WIDTH : 4 +-- C_HAS_MEM_OUTPUT_REGS_A : 0 +-- C_HAS_MEM_OUTPUT_REGS_B : 0 +-- C_HAS_MUX_OUTPUT_REGS_A : 0 +-- C_HAS_MUX_OUTPUT_REGS_B : 0 +-- C_HAS_SOFTECC_INPUT_REGS_A : 0 +-- C_HAS_SOFTECC_OUTPUT_REGS_B : 0 +-- C_MUX_PIPELINE_STAGES : 0 +-- C_USE_ECC : 0 +-- C_USE_SOFTECC : 0 +-- C_HAS_INJECTERR : 0 +-- C_SIM_COLLISION_CHECK : ALL +-- C_COMMON_CLK : 0 +-- C_DISABLE_WARN_BHV_COLL : 0 +-- C_DISABLE_WARN_BHV_RANGE : 0 + +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + +LIBRARY UNISIM; +USE UNISIM.VCOMPONENTS.ALL; + +-------------------------------------------------------------------------------- +-- Entity Declaration +-------------------------------------------------------------------------------- +ENTITY blockMemory_prod IS + PORT ( + --Port A + CLKA : IN STD_LOGIC; + RSTA : IN STD_LOGIC; --opt port + ENA : IN STD_LOGIC; --optional port + REGCEA : IN STD_LOGIC; --optional port + WEA : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + ADDRA : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + DINA : IN STD_LOGIC_VECTOR(511 DOWNTO 0); + DOUTA : OUT STD_LOGIC_VECTOR(511 DOWNTO 0); + + --Port B + CLKB : IN STD_LOGIC; + RSTB : IN STD_LOGIC; --opt port + ENB : IN STD_LOGIC; --optional port + REGCEB : IN STD_LOGIC; --optional port + WEB : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + ADDRB : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + DINB : IN STD_LOGIC_VECTOR(511 DOWNTO 0); + DOUTB : OUT STD_LOGIC_VECTOR(511 DOWNTO 0); + + --ECC + INJECTSBITERR : IN STD_LOGIC; --optional port + INJECTDBITERR : IN STD_LOGIC; --optional port + SBITERR : OUT STD_LOGIC; --optional port + DBITERR : OUT STD_LOGIC; --optional port + RDADDRECC : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --optional port + -- AXI BMG Input and Output Port Declarations + + -- AXI Global Signals + S_ACLK : IN STD_LOGIC; + S_AXI_AWID : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + S_AXI_AWADDR : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + S_AXI_AWLEN : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + S_AXI_AWSIZE : IN STD_LOGIC_VECTOR(2 DOWNTO 0); + S_AXI_AWBURST : IN STD_LOGIC_VECTOR(1 DOWNTO 0); + S_AXI_AWVALID : IN STD_LOGIC; + S_AXI_AWREADY : OUT STD_LOGIC; + S_AXI_WDATA : IN STD_LOGIC_VECTOR(511 DOWNTO 0); + S_AXI_WSTRB : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + S_AXI_WLAST : IN STD_LOGIC; + S_AXI_WVALID : IN STD_LOGIC; + S_AXI_WREADY : OUT STD_LOGIC; + S_AXI_BID : OUT STD_LOGIC_VECTOR(3 DOWNTO 0):= (OTHERS => '0'); + S_AXI_BRESP : OUT STD_LOGIC_VECTOR(1 DOWNTO 0); + S_AXI_BVALID : OUT STD_LOGIC; + S_AXI_BREADY : IN STD_LOGIC; + + -- AXI Full/Lite Slave Read (Write side) + S_AXI_ARID : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + S_AXI_ARADDR : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + S_AXI_ARLEN : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + S_AXI_ARSIZE : IN STD_LOGIC_VECTOR(2 DOWNTO 0); + S_AXI_ARBURST : IN STD_LOGIC_VECTOR(1 DOWNTO 0); + S_AXI_ARVALID : IN STD_LOGIC; + S_AXI_ARREADY : OUT STD_LOGIC; + S_AXI_RID : OUT STD_LOGIC_VECTOR(3 DOWNTO 0):= (OTHERS => '0'); + S_AXI_RDATA : OUT STD_LOGIC_VECTOR(511 DOWNTO 0); + S_AXI_RRESP : OUT STD_LOGIC_VECTOR(1 DOWNTO 0); + S_AXI_RLAST : OUT STD_LOGIC; + S_AXI_RVALID : OUT STD_LOGIC; + S_AXI_RREADY : IN STD_LOGIC; + + -- AXI Full/Lite Sideband Signals + S_AXI_INJECTSBITERR : IN STD_LOGIC; + S_AXI_INJECTDBITERR : IN STD_LOGIC; + S_AXI_SBITERR : OUT STD_LOGIC; + S_AXI_DBITERR : OUT STD_LOGIC; + S_AXI_RDADDRECC : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); + S_ARESETN : IN STD_LOGIC + + + ); + +END blockMemory_prod; + + +ARCHITECTURE xilinx OF blockMemory_prod IS + + COMPONENT blockMemory_exdes IS + PORT ( + --Port A + RSTA : IN STD_LOGIC; --opt port + + WEA : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + ADDRA : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + + DINA : IN STD_LOGIC_VECTOR(511 DOWNTO 0); + + DOUTA : OUT STD_LOGIC_VECTOR(511 DOWNTO 0); + + CLKA : IN STD_LOGIC + + + + + ); + END COMPONENT; + +BEGIN + + bmg0 : blockMemory_exdes + PORT MAP ( + --Port A + RSTA => RSTA, + + WEA => WEA, + ADDRA => ADDRA, + + DINA => DINA, + + DOUTA => DOUTA, + + CLKA => CLKA + + + + ); +END xilinx; Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/example_design/blockMemory_exdes.ucf =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/example_design/blockMemory_exdes.ucf (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/example_design/blockMemory_exdes.ucf (revision 5) @@ -0,0 +1,57 @@ +################################################################################ +# +# (c) Copyright 2002 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +# +################################################################################ + +# Tx Core Period Constraint. This constraint can be modified, and is +# valid as long as it is met after place and route. +NET "CLKA" TNM_NET = "CLKA"; + +TIMESPEC "TS_CLKA" = PERIOD "CLKA" 25 MHZ; + +################################################################################ Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/example_design/blockMemory_exdes.xdc =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/example_design/blockMemory_exdes.xdc (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/example_design/blockMemory_exdes.xdc (revision 5) @@ -0,0 +1,54 @@ +################################################################################ +# +# (c) Copyright 2002 - 2011 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +# +################################################################################ + +# Core Period Constraint. This constraint can be modified, and is +# valid as long as it is met after place and route. +create_clock -name "TS_CLKA" -period 20.0 [ get_ports CLKA ] +################################################################################ Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/example_design/blockMemory_exdes.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/example_design/blockMemory_exdes.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/example_design/blockMemory_exdes.vhd (revision 5) @@ -0,0 +1,166 @@ + + + + + + + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7.1 Core - Top-level core wrapper +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006-2010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- +-- Filename: blockMemory_exdes.vhd +-- +-- Description: +-- This is the actual BMG core wrapper. +-- +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: August 31, 2005 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + +LIBRARY UNISIM; +USE UNISIM.VCOMPONENTS.ALL; + +-------------------------------------------------------------------------------- +-- Entity Declaration +-------------------------------------------------------------------------------- +ENTITY blockMemory_exdes IS + PORT ( + --Inputs - Port A + RSTA : IN STD_LOGIC; --opt port + + WEA : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + ADDRA : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + + DINA : IN STD_LOGIC_VECTOR(511 DOWNTO 0); + + DOUTA : OUT STD_LOGIC_VECTOR(511 DOWNTO 0); + CLKA : IN STD_LOGIC + + + ); + +END blockMemory_exdes; + + +ARCHITECTURE xilinx OF blockMemory_exdes IS + + COMPONENT BUFG IS + PORT ( + I : IN STD_ULOGIC; + O : OUT STD_ULOGIC + ); + END COMPONENT; + + COMPONENT blockMemory IS + PORT ( + --Port A + RSTA : IN STD_LOGIC; --opt port + + WEA : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + ADDRA : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + + DINA : IN STD_LOGIC_VECTOR(511 DOWNTO 0); + + DOUTA : OUT STD_LOGIC_VECTOR(511 DOWNTO 0); + + CLKA : IN STD_LOGIC + + + + ); + END COMPONENT; + + SIGNAL CLKA_buf : STD_LOGIC; + SIGNAL CLKB_buf : STD_LOGIC; + SIGNAL S_ACLK_buf : STD_LOGIC; + +BEGIN + + bufg_A : BUFG + PORT MAP ( + I => CLKA, + O => CLKA_buf + ); + + + + bmg0 : blockMemory + PORT MAP ( + --Port A + RSTA => RSTA, + + WEA => WEA, + ADDRA => ADDRA, + + DINA => DINA, + + DOUTA => DOUTA, + + CLKA => CLKA_buf + + + ); + +END xilinx; Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/example_design =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/example_design (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/example_design (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/example_design Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/random.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/random.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/random.vhd (revision 5) @@ -0,0 +1,112 @@ + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7_1 Core - Random Number Generator +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006_3010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- +-- Filename: random.vhd +-- +-- Description: +-- Random Generator +-- +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: Sep 12, 2011 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + + + + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + + +ENTITY RANDOM IS + GENERIC ( WIDTH : INTEGER := 32; + SEED : INTEGER :=2 + ); + + PORT ( + CLK : IN STD_LOGIC; + RST : IN STD_LOGIC; + EN : IN STD_LOGIC; + RANDOM_NUM : OUT STD_LOGIC_VECTOR (WIDTH-1 DOWNTO 0) --OUTPUT VECTOR + ); +END RANDOM; + +ARCHITECTURE BEHAVIORAL OF RANDOM IS +BEGIN + PROCESS(CLK) + VARIABLE RAND_TEMP : STD_LOGIC_VECTOR(WIDTH-1 DOWNTO 0):=CONV_STD_LOGIC_VECTOR(SEED,WIDTH); + VARIABLE TEMP : STD_LOGIC := '0'; + BEGIN + IF(RISING_EDGE(CLK)) THEN + IF(RST='1') THEN + RAND_TEMP := CONV_STD_LOGIC_VECTOR(SEED,WIDTH); + ELSE + IF(EN = '1') THEN + TEMP := RAND_TEMP(WIDTH-1) XOR RAND_TEMP(WIDTH-2); + RAND_TEMP(WIDTH-1 DOWNTO 1) := RAND_TEMP(WIDTH-2 DOWNTO 0); + RAND_TEMP(0) := TEMP; + END IF; + END IF; + END IF; + RANDOM_NUM <= RAND_TEMP; + END PROCESS; +END ARCHITECTURE; Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/vcs_session.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/vcs_session.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/vcs_session.tcl (revision 5) @@ -0,0 +1,83 @@ + + + + + + + + +#-------------------------------------------------------------------------------- +#-- +#-- BMG core Demo Testbench +#-- +#-------------------------------------------------------------------------------- +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +# Filename: vcs_session.tcl +# +# Description: +# This is the VCS wave form file. +# +#-------------------------------------------------------------------------------- +if { ![gui_is_db_opened -db {bmg_vcs.vpd}] } { + gui_open_db -design V1 -file bmg_vcs.vpd -nosource +} +gui_set_precision 1ps +gui_set_time_units 1ps + +gui_open_window Wave +gui_sg_create blockMemory_Group +gui_list_add_group -id Wave.1 {blockMemory_Group} + + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/status + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/RSTA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/CLKA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/ADDRA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/DINA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/WEA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/DOUTA + +gui_zoom -window Wave.1 -full Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/simcmds.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/simcmds.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/simcmds.tcl (revision 5) @@ -0,0 +1,63 @@ +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. + + + + + + + +wcfg new +isim set radix hex +wave add /blockMemory_tb/status + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/RSTA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/CLKA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/ADDRA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/DINA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/WEA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/DOUTA +run all +quit Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/simulate_mti.bat =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/simulate_mti.bat (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/simulate_mti.bat (revision 5) @@ -0,0 +1,3 @@ +#-------------------------------------------------------------------------------- + +vsim -c -do simulate_mti.do Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/wave_ncsim.sv =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/wave_ncsim.sv (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/wave_ncsim.sv (revision 5) @@ -0,0 +1,21 @@ + + + + + + + + + +window new WaveWindow -name "Waves for BMG Example Design" +waveform using "Waves for BMG Example Design" + + waveform add -signals /blockMemory_tb/status + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/RSTA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/CLKA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/ADDRA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/DINA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/WEA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/DOUTA + +console submit -using simulator -wait no "run" Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/ucli_commands.key =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/ucli_commands.key (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/ucli_commands.key (revision 5) @@ -0,0 +1,4 @@ +dump -file bmg_vcs.vpd -type VPD +dump -add blockMemory_tb +run +quit Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/simulate_mti.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/simulate_mti.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/simulate_mti.sh (revision 5) @@ -0,0 +1,3 @@ +#-------------------------------------------------------------------------------- + +vsim -c -do simulate_mti.do Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/simulate_ncsim.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/simulate_ncsim.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/simulate_ncsim.sh (revision 5) @@ -0,0 +1,70 @@ +#!/bin/sh +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +#-------------------------------------------------------------------------------- + + +mkdir work +echo "Compiling Core VHDL UNISIM/Behavioral model" +ncvhdl -v93 -work work ../../../blockMemory.vhd \ + ../../example_design/blockMemory_exdes.vhd + +echo "Compiling Test Bench Files" + +ncvhdl -v93 -work work ../bmg_tb_pkg.vhd +ncvhdl -v93 -work work ../random.vhd +ncvhdl -v93 -work work ../data_gen.vhd +ncvhdl -v93 -work work ../addr_gen.vhd +ncvhdl -v93 -work work ../checker.vhd +ncvhdl -v93 -work work ../bmg_stim_gen.vhd +ncvhdl -v93 -work work ../blockMemory_synth.vhd +ncvhdl -v93 -work work ../blockMemory_tb.vhd + +echo "Elaborating Design" +ncelab -access +rwc work.blockMemory_tb + +echo "Simulating Design" +ncsim -gui -input @"simvision -input wave_ncsim.sv" work.blockMemory_tb Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/simulate_vcs.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/simulate_vcs.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/simulate_vcs.sh (revision 5) @@ -0,0 +1,69 @@ +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +#-------------------------------------------------------------------------------- +#!/bin/sh +rm -rf simv* csrc DVEfiles AN.DB + +echo "Compiling Core VHDL UNISIM/Behavioral model" +vhdlan ../../../blockMemory.vhd +vhdlan ../../example_design/blockMemory_exdes.vhd + +echo "Compiling Test Bench Files" +vhdlan ../bmg_tb_pkg.vhd +vhdlan ../random.vhd +vhdlan ../data_gen.vhd +vhdlan ../addr_gen.vhd +vhdlan ../checker.vhd +vhdlan ../bmg_stim_gen.vhd +vhdlan ../blockMemory_synth.vhd +vhdlan ../blockMemory_tb.vhd + +echo "Elaborating Design" +vcs +vcs+lic+wait -debug blockMemory_tb + +echo "Simulating Design" +./simv -ucli -i ucli_commands.key +dve -session vcs_session.tcl Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/simulate_isim.bat =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/simulate_isim.bat (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/simulate_isim.bat (revision 5) @@ -0,0 +1,68 @@ +:: (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +:: +:: This file contains confidential and proprietary information +:: of Xilinx, Inc. and is protected under U.S. and +:: international copyright and other intellectual property +:: laws. +:: +:: DISCLAIMER +:: This disclaimer is not a license and does not grant any +:: rights to the materials distributed herewith. Except as +:: otherwise provided in a valid license issued to you by +:: Xilinx, and to the maximum extent permitted by applicable +:: law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +:: WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +:: AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +:: BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +:: INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +:: (2) Xilinx shall not be liable (whether in contract or tort, +:: including negligence, or under any other theory of +:: liability) for any loss or damage of any kind or nature +:: related to, arising under or in connection with these +:: materials, including for any direct, or any indirect, +:: special, incidental, or consequential loss or damage +:: (including loss of data, profits, goodwill, or any type of +:: loss or damage suffered as a result of any action brought +:: by a third party) even if such damage or loss was +:: reasonably foreseeable or Xilinx had been advised of the +:: possibility of the same. +:: +:: CRITICAL APPLICATIONS +:: Xilinx products are not designed or intended to be fail- +:: safe, or for use in any application requiring fail-safe +:: performance, such as life-support or safety devices or +:: systems, Class III medical devices, nuclear facilities, +:: applications related to the deployment of airbags, or any +:: other applications that could lead to death, personal +:: injury, or severe property or environmental damage +:: (individually and collectively, "Critical +:: Applications"). Customer assumes the sole risk and +:: liability of any use of Xilinx products in Critical +:: Applications, subject only to applicable laws and +:: regulations governing limitations on product liability. +:: +:: THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +:: PART OF THIS FILE AT ALL TIMES. +::-------------------------------------------------------------------------------- + + + +echo "Compiling Core VHDL UNISIM/Behavioral model" +vhpcomp -work work ..\..\..\blockMemory.vhd +vhpcomp -work work ..\..\example_design\blockMemory_exdes.vhd + +echo "Compiling Test Bench Files" + +vhpcomp -work work ..\bmg_tb_pkg.vhd +vhpcomp -work work ..\random.vhd +vhpcomp -work work ..\data_gen.vhd +vhpcomp -work work ..\addr_gen.vhd +vhpcomp -work work ..\checker.vhd +vhpcomp -work work ..\bmg_stim_gen.vhd +vhpcomp -work work ..\blockMemory_synth.vhd +vhpcomp -work work ..\blockMemory_tb.vhd + +fuse work.blockMemory_tb -L unisims -L xilinxcorelib -o blockMemory_tb.exe + + +.\blockMemory_tb.exe -gui -tclbatch simcmds.tcl Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/wave_mti.do =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/wave_mti.do (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/wave_mti.do (revision 5) @@ -0,0 +1,36 @@ + + + + + + + + +onerror {resume} +quietly WaveActivateNextPane {} 0 + + add wave -noupdate /blockMemory_tb/status + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/RSTA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/CLKA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/ADDRA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/DINA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/WEA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/DOUTA + +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {0 ps} 0} +configure wave -namecolwidth 197 +configure wave -valuecolwidth 106 +configure wave -justifyvalue left +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 1 +configure wave -griddelta 40 +configure wave -timeline 0 +configure wave -timelineunits ps +update +WaveRestoreZoom {0 ps} {9464063 ps} Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/simulate_mti.do =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/simulate_mti.do (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional/simulate_mti.do (revision 5) @@ -0,0 +1,74 @@ +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +#-------------------------------------------------------------------------------- + vlib work +vmap work work + +echo "Compiling Core VHDL UNISIM/Behavioral model" +vcom -work work ../../../blockMemory.vhd \ + ../../example_design/blockMemory_exdes.vhd + +echo "Compiling Test Bench Files" + +vcom -work work ../bmg_tb_pkg.vhd +vcom -work work ../random.vhd +vcom -work work ../data_gen.vhd +vcom -work work ../addr_gen.vhd +vcom -work work ../checker.vhd +vcom -work work ../bmg_stim_gen.vhd +vcom -work work ../blockMemory_synth.vhd +vcom -work work ../blockMemory_tb.vhd + +vsim -novopt -t ps -L XilinxCoreLib -L unisim work.blockMemory_tb + +#Disabled waveform to save the disk space +add log -r /* +#Ignore integer warnings at time 0 +set StdArithNoWarnings 1 +run 0 +set StdArithNoWarnings 0 + +run -all Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/functional Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/data_gen.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/data_gen.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/data_gen.vhd (revision 5) @@ -0,0 +1,140 @@ + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7_1 Core - Data Generator +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006_3010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- +-- Filename: data_gen.vhd +-- +-- Description: +-- Data Generator +-- +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: Sep 12, 2011 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + +LIBRARY work; +USE work.BMG_TB_PKG.ALL; + +ENTITY DATA_GEN IS + GENERIC ( DATA_GEN_WIDTH : INTEGER := 32; + DOUT_WIDTH : INTEGER := 32; + DATA_PART_CNT : INTEGER := 1; + SEED : INTEGER := 2 + ); + + PORT ( + CLK : IN STD_LOGIC; + RST : IN STD_LOGIC; + EN : IN STD_LOGIC; + DATA_OUT : OUT STD_LOGIC_VECTOR (DOUT_WIDTH-1 DOWNTO 0) --OUTPUT VECTOR + ); +END DATA_GEN; + +ARCHITECTURE DATA_GEN_ARCH OF DATA_GEN IS + CONSTANT LOOP_COUNT : INTEGER := DIVROUNDUP(DATA_GEN_WIDTH,8); + SIGNAL RAND_DATA : STD_LOGIC_VECTOR(8*LOOP_COUNT-1 DOWNTO 0); + SIGNAL LOCAL_DATA_OUT : STD_LOGIC_VECTOR(DATA_GEN_WIDTH-1 DOWNTO 0); + SIGNAL LOCAL_CNT : INTEGER :=1; + SIGNAL DATA_GEN_I : STD_LOGIC :='0'; +BEGIN + + LOCAL_DATA_OUT <= RAND_DATA(DATA_GEN_WIDTH-1 DOWNTO 0); + DATA_OUT <= LOCAL_DATA_OUT(((DOUT_WIDTH*LOCAL_CNT)-1) DOWNTO ((DOUT_WIDTH*LOCAL_CNT)-DOUT_WIDTH)); + DATA_GEN_I <= '0' WHEN (LOCAL_CNT < DATA_PART_CNT) ELSE EN; + + PROCESS(CLK) + BEGIN + IF(RISING_EDGE (CLK)) THEN + IF(EN ='1' AND (DATA_PART_CNT =1)) THEN + LOCAL_CNT <=1; + ELSIF(EN='1' AND (DATA_PART_CNT>1)) THEN + IF(LOCAL_CNT = 1) THEN + LOCAL_CNT <= LOCAL_CNT+1; + ELSIF(LOCAL_CNT < DATA_PART_CNT) THEN + LOCAL_CNT <= LOCAL_CNT+1; + ELSE + LOCAL_CNT <= 1; + END IF; + ELSE + LOCAL_CNT <= 1; + END IF; + END IF; + END PROCESS; + + RAND_GEN:FOR N IN LOOP_COUNT-1 DOWNTO 0 GENERATE + RAND_GEN_INST:ENTITY work.RANDOM + GENERIC MAP( + WIDTH => 8, + SEED => (SEED+N) + ) + PORT MAP( + CLK => CLK, + RST => RST, + EN => DATA_GEN_I, + RANDOM_NUM => RAND_DATA(8*(N+1)-1 DOWNTO 8*N) + ); + END GENERATE RAND_GEN; + +END ARCHITECTURE; + Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/addr_gen.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/addr_gen.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/addr_gen.vhd (revision 5) @@ -0,0 +1,117 @@ + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7_1 Core - Address Generator +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006_3010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- +-- Filename: addr_gen.vhd +-- +-- Description: +-- Address Generator +-- +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: Sep 12, 2011 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + +LIBRARY work; +USE work.ALL; + +ENTITY ADDR_GEN IS + GENERIC ( C_MAX_DEPTH : INTEGER := 1024 ; + RST_VALUE : STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS=> '0'); + RST_INC : INTEGER := 0); + PORT ( + CLK : IN STD_LOGIC; + RST : IN STD_LOGIC; + EN : IN STD_LOGIC; + LOAD :IN STD_LOGIC; + LOAD_VALUE : IN STD_LOGIC_VECTOR (31 DOWNTO 0) := (OTHERS => '0'); + ADDR_OUT : OUT STD_LOGIC_VECTOR (31 DOWNTO 0) --OUTPUT VECTOR + ); +END ADDR_GEN; + +ARCHITECTURE BEHAVIORAL OF ADDR_GEN IS + SIGNAL ADDR_TEMP : STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS =>'0'); +BEGIN + ADDR_OUT <= ADDR_TEMP; + PROCESS(CLK) + BEGIN + IF(RISING_EDGE(CLK)) THEN + IF(RST='1') THEN + ADDR_TEMP<= RST_VALUE + conv_std_logic_vector(RST_INC,32 ); + ELSE + IF(EN='1') THEN + IF(LOAD='1') THEN + ADDR_TEMP <=LOAD_VALUE; + ELSE + IF(ADDR_TEMP = C_MAX_DEPTH-1) THEN + ADDR_TEMP<= RST_VALUE + conv_std_logic_vector(RST_INC,32 ); + ELSE + ADDR_TEMP <= ADDR_TEMP + '1'; + END IF; + END IF; + END IF; + END IF; + END IF; + END PROCESS; +END ARCHITECTURE; Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/checker.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/checker.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/checker.vhd (revision 5) @@ -0,0 +1,161 @@ + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7_1 Core - Checker +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006_3010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- +-- Filename: checker.vhd +-- +-- Description: +-- Checker +-- +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: Sep 12, 2011 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + +LIBRARY work; +USE work.BMG_TB_PKG.ALL; + +ENTITY CHECKER IS + GENERIC ( WRITE_WIDTH : INTEGER :=32; + READ_WIDTH : INTEGER :=32 + ); + + PORT ( + CLK : IN STD_LOGIC; + RST : IN STD_LOGIC; + EN : IN STD_LOGIC; + DATA_IN : IN STD_LOGIC_VECTOR (READ_WIDTH-1 DOWNTO 0); --OUTPUT VECTOR + STATUS : OUT STD_LOGIC:= '0' + ); +END CHECKER; + +ARCHITECTURE CHECKER_ARCH OF CHECKER IS + SIGNAL EXPECTED_DATA : STD_LOGIC_VECTOR(READ_WIDTH-1 DOWNTO 0); + SIGNAL DATA_IN_R: STD_LOGIC_VECTOR(READ_WIDTH-1 DOWNTO 0); + SIGNAL EN_R : STD_LOGIC := '0'; + SIGNAL EN_2R : STD_LOGIC := '0'; +--DATA PART CNT DEFINES THE ASPECT RATIO AND GIVES THE INFO TO THE DATA GENERATOR TO PROVIDE THE DATA EITHER IN PARTS OR COMPLETE DATA IN ONE SHOT +--IF READ_WIDTH > WRITE_WIDTH DIVROUNDUP RESULTS IN '1' AND DATA GENERATOR GIVES THE DATAOUT EQUALS TO MAX OF (WRITE_WIDTH, READ_WIDTH) +--IF READ_WIDTH < WRITE-WIDTH DIVROUNDUP RESULTS IN > '1' AND DATA GENERATOR GIVES THE DATAOUT IN TERMS OF PARTS(EG 4 PARTS WHEN WRITE_WIDTH 32 AND READ WIDTH 8) + CONSTANT DATA_PART_CNT: INTEGER:= DIVROUNDUP(WRITE_WIDTH,READ_WIDTH); + CONSTANT MAX_WIDTH: INTEGER:= IF_THEN_ELSE((WRITE_WIDTH>READ_WIDTH),WRITE_WIDTH,READ_WIDTH); + SIGNAL ERR_HOLD : STD_LOGIC :='0'; + SIGNAL ERR_DET : STD_LOGIC :='0'; +BEGIN + PROCESS(CLK) + BEGIN + IF(RISING_EDGE(CLK)) THEN + IF(RST= '1') THEN + EN_R <= '0'; + EN_2R <= '0'; + DATA_IN_R <= (OTHERS=>'0'); + ELSE + EN_R <= EN; + EN_2R <= EN_R; + DATA_IN_R <= DATA_IN; + END IF; + END IF; + END PROCESS; + + EXPECTED_DATA_GEN_INST:ENTITY work.DATA_GEN + GENERIC MAP ( DATA_GEN_WIDTH =>MAX_WIDTH, + DOUT_WIDTH => READ_WIDTH, + DATA_PART_CNT => DATA_PART_CNT, + SEED => 2 + ) + PORT MAP ( + CLK => CLK, + RST => RST, + EN => EN_2R, + DATA_OUT => EXPECTED_DATA + ); + + PROCESS(CLK) + BEGIN + IF(RISING_EDGE(CLK)) THEN + IF(EN_2R='1') THEN + IF(EXPECTED_DATA = DATA_IN_R) THEN + ERR_DET<='0'; + ELSE + ERR_DET<= '1'; + END IF; + END IF; + END IF; + END PROCESS; + + PROCESS(CLK,RST) + BEGIN + IF(RST='1') THEN + ERR_HOLD <= '0'; + ELSIF(RISING_EDGE(CLK)) THEN + ERR_HOLD <= ERR_HOLD OR ERR_DET ; + END IF; + END PROCESS; + + STATUS <= ERR_HOLD; + +END ARCHITECTURE; + + + Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/vcs_session.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/vcs_session.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/vcs_session.tcl (revision 5) @@ -0,0 +1,83 @@ + + + + + + + +#-------------------------------------------------------------------------------- +#-- +#-- BMG Generator v8.4 Core Demo Testbench +#-- +#-------------------------------------------------------------------------------- +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +# Filename: vcs_session.tcl +# +# Description: +# This is the VCS wave form file. +# +#-------------------------------------------------------------------------------- + +if { ![gui_is_db_opened -db {bmg_vcs.vpd}] } { + gui_open_db -design V1 -file bmg_vcs.vpd -nosource +} +gui_set_precision 1ps +gui_set_time_units 1ps + +gui_open_window Wave +gui_sg_create blockMemory_Group +gui_list_add_group -id Wave.1 {blockMemory_Group} + + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/status + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/RSTA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/CLKA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/ADDRA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/DINA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/WEA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/DOUTA + +gui_zoom -window Wave.1 -full Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/simcmds.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/simcmds.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/simcmds.tcl (revision 5) @@ -0,0 +1,63 @@ +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. + + + + + + + +wcfg new +isim set radix hex +wave add /blockMemory_tb/status + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/RSTA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/CLKA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/ADDRA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/DINA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/WEA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/DOUTA +run all +quit Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/simulate_mti.bat =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/simulate_mti.bat (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/simulate_mti.bat (revision 5) @@ -0,0 +1,3 @@ +#-------------------------------------------------------------------------------- + +vsim -c -do simulate_mti.do Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/wave_ncsim.sv =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/wave_ncsim.sv (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/wave_ncsim.sv (revision 5) @@ -0,0 +1,20 @@ + + + + + + + + +window new WaveWindow -name "Waves for BMG Example Design" +waveform using "Waves for BMG Example Design" + + + waveform add -signals /blockMemory_tb/status + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/RSTA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/CLKA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/ADDRA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/DINA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/WEA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/DOUTA +console submit -using simulator -wait no "run" Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/ucli_commands.key =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/ucli_commands.key (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/ucli_commands.key (revision 5) @@ -0,0 +1,4 @@ +dump -file bmg_vcs.vpd -type VPD +dump -add blockMemory_tb +run +quit Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/simulate_mti.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/simulate_mti.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/simulate_mti.sh (revision 5) @@ -0,0 +1,3 @@ +#-------------------------------------------------------------------------------- + +vsim -c -do simulate_mti.do Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/simulate_ncsim.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/simulate_ncsim.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/simulate_ncsim.sh (revision 5) @@ -0,0 +1,78 @@ +#!/bin/sh +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +set work work +#-------------------------------------------------------------------------------- +mkdir work + + +ncvhdl -v93 -work work ../../implement/results/routed.vhd + +echo "Compiling Test Bench Files" + +ncvhdl -v93 -work work ../bmg_tb_pkg.vhd +ncvhdl -v93 -work work ../random.vhd +ncvhdl -v93 -work work ../data_gen.vhd +ncvhdl -v93 -work work ../addr_gen.vhd +ncvhdl -v93 -work work ../checker.vhd +ncvhdl -v93 -work work ../bmg_stim_gen.vhd +ncvhdl -v93 -work work ../blockMemory_synth.vhd +ncvhdl -v93 -work work ../blockMemory_tb.vhd + +echo "Compiling SDF file" +ncsdfc ../../implement/results/routed.sdf -output ./routed.sdf.X + +echo "Generating SDF command file" +echo 'COMPILED_SDF_FILE = "routed.sdf.X",' > sdf.cmd +echo 'SCOPE = :blockMemory_synth_inst:BMG_PORT,' >> sdf.cmd +echo 'MTM_CONTROL = "MAXIMUM";' >> sdf.cmd + + +echo "Elaborating Design" +ncelab -access +rwc -sdf_cmd_file sdf.cmd $work.blockMemory_tb + +echo "Simulating Design" +ncsim -gui -input @"simvision -input wave_ncsim.sv" $work.blockMemory_tb Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/simulate_vcs.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/simulate_vcs.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/simulate_vcs.sh (revision 5) @@ -0,0 +1,70 @@ +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +#-------------------------------------------------------------------------------- +#!/bin/sh + +rm -rf simv* csrc DVEfiles AN.DB + +echo "Compiling Core VHDL UNISIM/Behavioral model" +vhdlan ../../implement/results/routed.vhd + +echo "Compiling Test Bench Files" +vhdlan ../bmg_tb_pkg.vhd +vhdlan ../random.vhd +vhdlan ../data_gen.vhd +vhdlan ../addr_gen.vhd +vhdlan ../checker.vhd +vhdlan ../bmg_stim_gen.vhd +vhdlan ../blockMemory_synth.vhd +vhdlan ../blockMemory_tb.vhd + + +echo "Elaborating Design" +vcs +neg_tchk -sdf max:/blockMemory_tb/blockMemory_synth_inst/bmg_port:../../implement/results/routed.sdf +vcs+lic+wait -debug blockMemory_tb + +echo "Simulating Design" +./simv -ucli -i ucli_commands.key +dve -session vcs_session.tcl Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/simulate_isim.bat =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/simulate_isim.bat (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/simulate_isim.bat (revision 5) @@ -0,0 +1,67 @@ +:: (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +:: +:: This file contains confidential and proprietary information +:: of Xilinx, Inc. and is protected under U.S. and +:: international copyright and other intellectual property +:: laws. +:: +:: DISCLAIMER +:: This disclaimer is not a license and does not grant any +:: rights to the materials distributed herewith. Except as +:: otherwise provided in a valid license issued to you by +:: Xilinx, and to the maximum extent permitted by applicable +:: law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +:: WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +:: AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +:: BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +:: INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +:: (2) Xilinx shall not be liable (whether in contract or tort, +:: including negligence, or under any other theory of +:: liability) for any loss or damage of any kind or nature +:: related to, arising under or in connection with these +:: materials, including for any direct, or any indirect, +:: special, incidental, or consequential loss or damage +:: (including loss of data, profits, goodwill, or any type of +:: loss or damage suffered as a result of any action brought +:: by a third party) even if such damage or loss was +:: reasonably foreseeable or Xilinx had been advised of the +:: possibility of the same. +:: +:: CRITICAL APPLICATIONS +:: Xilinx products are not designed or intended to be fail- +:: safe, or for use in any application requiring fail-safe +:: performance, such as life-support or safety devices or +:: systems, Class III medical devices, nuclear facilities, +:: applications related to the deployment of airbags, or any +:: other applications that could lead to death, personal +:: injury, or severe property or environmental damage +:: (individually and collectively, "Critical +:: Applications"). Customer assumes the sole risk and +:: liability of any use of Xilinx products in Critical +:: Applications, subject only to applicable laws and +:: regulations governing limitations on product liability. +:: +:: THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +:: PART OF THIS FILE AT ALL TIMES. +::-------------------------------------------------------------------------------- + + + +echo "Compiling Core VHDL UNISIM/Behavioral model" +vhpcomp -work work ..\..\implement\results\routed.vhd + +echo "Compiling Test Bench Files" + +vhpcomp -work work ..\bmg_tb_pkg.vhd +vhpcomp -work work ..\random.vhd +vhpcomp -work work ..\data_gen.vhd +vhpcomp -work work ..\addr_gen.vhd +vhpcomp -work work ..\checker.vhd +vhpcomp -work work ..\bmg_stim_gen.vhd +vhpcomp -work work ..\blockMemory_synth.vhd +vhpcomp -work work ..\blockMemory_tb.vhd + + + fuse -L simprim work.blockMemory_tb -o blockMemory_tb.exe + +.\blockMemory_tb.exe -sdftyp /blockMemory_tb/blockMemory_synth_inst/bmg_port=..\..\implement\results\routed.sdf -gui -tclbatch simcmds.tcl Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/wave_mti.do =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/wave_mti.do (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/wave_mti.do (revision 5) @@ -0,0 +1,36 @@ + + + + + + + + +onerror {resume} +quietly WaveActivateNextPane {} 0 + + + add wave -noupdate /blockMemory_tb/status + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/RSTA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/CLKA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/ADDRA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/DINA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/WEA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/DOUTA +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {0 ps} 0} +configure wave -namecolwidth 150 +configure wave -valuecolwidth 100 +configure wave -justifyvalue left +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 1 +configure wave -griddelta 40 +configure wave -timeline 0 +configure wave -timelineunits ps +update +WaveRestoreZoom {0 ps} {9464063 ps} Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/simulate_mti.do =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/simulate_mti.do (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing/simulate_mti.do (revision 5) @@ -0,0 +1,75 @@ +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +set work work +#-------------------------------------------------------------------------------- + +vlib work +vmap work work + +echo "Compiling Core VHDL UNISIM/Behavioral model" +vcom -work work ../../implement/results/routed.vhd + +echo "Compiling Test Bench Files" + +vcom -work work ../bmg_tb_pkg.vhd +vcom -work work ../random.vhd +vcom -work work ../data_gen.vhd +vcom -work work ../addr_gen.vhd +vcom -work work ../checker.vhd +vcom -work work ../bmg_stim_gen.vhd +vcom -work work ../blockMemory_synth.vhd +vcom -work work ../blockMemory_tb.vhd + + vsim -novopt -t ps -L simprim +transport_int_delays -sdftyp /blockMemory_tb/blockMemory_synth_inst/bmg_port=../../implement/results/routed.sdf $work.blockMemory_tb -novopt + +#Disabled waveform to save the disk space +add log -r /* +#Ignore integer warnings at time 0 +set StdArithNoWarnings 1 +run 0 +set StdArithNoWarnings 0 + +run -all Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/timing Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/blockMemory_tb.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/blockMemory_tb.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/blockMemory_tb.vhd (revision 5) @@ -0,0 +1,129 @@ +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7_1 Core - Top File for the Example Testbench +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006_3010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- Filename: blockMemory_tb.vhd +-- Description: +-- Testbench Top +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: Sep 12, 2011 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + +LIBRARY work; +USE work.ALL; + +ENTITY blockMemory_tb IS +END ENTITY; + + +ARCHITECTURE blockMemory_tb_ARCH OF blockMemory_tb IS + SIGNAL STATUS : STD_LOGIC_VECTOR(8 DOWNTO 0); + SIGNAL CLK : STD_LOGIC := '1'; + SIGNAL RESET : STD_LOGIC; + + BEGIN + + + CLK_GEN: PROCESS BEGIN + CLK <= NOT CLK; + WAIT FOR 100 NS; + CLK <= NOT CLK; + WAIT FOR 100 NS; + END PROCESS; + + RST_GEN: PROCESS BEGIN + RESET <= '1'; + WAIT FOR 1000 NS; + RESET <= '0'; + WAIT; + END PROCESS; + + +--STOP_SIM: PROCESS BEGIN +-- WAIT FOR 200 US; -- STOP SIMULATION AFTER 1 MS +-- ASSERT FALSE +-- REPORT "END SIMULATION TIME REACHED" +-- SEVERITY FAILURE; +--END PROCESS; +-- +PROCESS BEGIN + WAIT UNTIL STATUS(8)='1'; + IF( STATUS(7 downto 0)/="0") THEN + ASSERT false + REPORT "Simulation Failed" + SEVERITY FAILURE; + ELSE + ASSERT false + REPORT "Simulation Complete" + SEVERITY FAILURE; + END IF; +END PROCESS; + + blockMemory_synth_inst:ENTITY work.blockMemory_synth + PORT MAP( + CLK_IN => CLK, + RESET_IN => RESET, + STATUS => STATUS + ); + +END ARCHITECTURE; Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/blockMemory_synth.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/blockMemory_synth.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/blockMemory_synth.vhd (revision 5) @@ -0,0 +1,289 @@ + + + + + + + + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7_1 Core - Synthesizable Testbench +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006_3010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- +-- Filename: blockMemory_synth.vhd +-- +-- Description: +-- Synthesizable Testbench +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: Sep 12, 2011 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.NUMERIC_STD.ALL; +USE IEEE.STD_LOGIC_MISC.ALL; + +LIBRARY STD; +USE STD.TEXTIO.ALL; + +--LIBRARY unisim; +--USE unisim.vcomponents.ALL; + +LIBRARY work; +USE work.ALL; +USE work.BMG_TB_PKG.ALL; + +ENTITY blockMemory_synth IS +PORT( + CLK_IN : IN STD_LOGIC; + RESET_IN : IN STD_LOGIC; + STATUS : OUT STD_LOGIC_VECTOR(8 DOWNTO 0) := (OTHERS => '0') --ERROR STATUS OUT OF FPGA + ); +END ENTITY; + +ARCHITECTURE blockMemory_synth_ARCH OF blockMemory_synth IS + + +COMPONENT blockMemory_exdes + PORT ( + --Inputs - Port A + RSTA : IN STD_LOGIC; --opt port + WEA : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + ADDRA : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + DINA : IN STD_LOGIC_VECTOR(511 DOWNTO 0); + DOUTA : OUT STD_LOGIC_VECTOR(511 DOWNTO 0); + CLKA : IN STD_LOGIC + + + ); + +END COMPONENT; + + + SIGNAL CLKA: STD_LOGIC := '0'; + SIGNAL RSTA: STD_LOGIC := '0'; + SIGNAL WEA: STD_LOGIC_VECTOR(0 DOWNTO 0) := (OTHERS => '0'); + SIGNAL WEA_R: STD_LOGIC_VECTOR(0 DOWNTO 0) := (OTHERS => '0'); + SIGNAL ADDRA: STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0'); + SIGNAL ADDRA_R: STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0'); + SIGNAL DINA: STD_LOGIC_VECTOR(511 DOWNTO 0) := (OTHERS => '0'); + SIGNAL DINA_R: STD_LOGIC_VECTOR(511 DOWNTO 0) := (OTHERS => '0'); + SIGNAL DOUTA: STD_LOGIC_VECTOR(511 DOWNTO 0); + SIGNAL CHECKER_EN : STD_LOGIC:='0'; + SIGNAL CHECKER_EN_R : STD_LOGIC:='0'; + SIGNAL STIMULUS_FLOW : STD_LOGIC_VECTOR(22 DOWNTO 0) := (OTHERS =>'0'); + SIGNAL clk_in_i: STD_LOGIC; + + SIGNAL RESET_SYNC_R1 : STD_LOGIC:='1'; + SIGNAL RESET_SYNC_R2 : STD_LOGIC:='1'; + SIGNAL RESET_SYNC_R3 : STD_LOGIC:='1'; + + SIGNAL ITER_R0 : STD_LOGIC := '0'; + SIGNAL ITER_R1 : STD_LOGIC := '0'; + SIGNAL ITER_R2 : STD_LOGIC := '0'; + + SIGNAL ISSUE_FLAG : STD_LOGIC_VECTOR(7 DOWNTO 0) := (OTHERS => '0'); + SIGNAL ISSUE_FLAG_STATUS : STD_LOGIC_VECTOR(7 DOWNTO 0) := (OTHERS => '0'); + + BEGIN + +-- clk_buf: bufg +-- PORT map( +-- i => CLK_IN, +-- o => clk_in_i +-- ); + clk_in_i <= CLK_IN; + CLKA <= clk_in_i; + + RSTA <= RESET_SYNC_R3 AFTER 50 ns; + + + PROCESS(clk_in_i) + BEGIN + IF(RISING_EDGE(clk_in_i)) THEN + RESET_SYNC_R1 <= RESET_IN; + RESET_SYNC_R2 <= RESET_SYNC_R1; + RESET_SYNC_R3 <= RESET_SYNC_R2; + END IF; + END PROCESS; + + +PROCESS(CLKA) +BEGIN + IF(RISING_EDGE(CLKA)) THEN + IF(RESET_SYNC_R3='1') THEN + ISSUE_FLAG_STATUS<= (OTHERS => '0'); + ELSE + ISSUE_FLAG_STATUS <= ISSUE_FLAG_STATUS OR ISSUE_FLAG; + END IF; + END IF; +END PROCESS; + +STATUS(7 DOWNTO 0) <= ISSUE_FLAG_STATUS; + + + + BMG_DATA_CHECKER_INST: ENTITY work.CHECKER + GENERIC MAP ( + WRITE_WIDTH => 512, + READ_WIDTH => 512 ) + PORT MAP ( + CLK => CLKA, + RST => RSTA, + EN => CHECKER_EN_R, + DATA_IN => DOUTA, + STATUS => ISSUE_FLAG(0) + ); + + PROCESS(CLKA) + BEGIN + IF(RISING_EDGE(CLKA)) THEN + IF(RSTA='1') THEN + CHECKER_EN_R <= '0'; + ELSE + CHECKER_EN_R <= CHECKER_EN AFTER 50 ns; + END IF; + END IF; + END PROCESS; + + + BMG_STIM_GEN_INST:ENTITY work.BMG_STIM_GEN + PORT MAP( + CLK => clk_in_i, + RST => RSTA, + ADDRA => ADDRA, + DINA => DINA, + WEA => WEA, + CHECK_DATA => CHECKER_EN + ); + + PROCESS(CLKA) + BEGIN + IF(RISING_EDGE(CLKA)) THEN + IF(RESET_SYNC_R3='1') THEN + STATUS(8) <= '0'; + iter_r2 <= '0'; + iter_r1 <= '0'; + iter_r0 <= '0'; + ELSE + STATUS(8) <= iter_r2; + iter_r2 <= iter_r1; + iter_r1 <= iter_r0; + iter_r0 <= STIMULUS_FLOW(8); + END IF; + END IF; + END PROCESS; + + + PROCESS(CLKA) + BEGIN + IF(RISING_EDGE(CLKA)) THEN + IF(RESET_SYNC_R3='1') THEN + STIMULUS_FLOW <= (OTHERS => '0'); + ELSIF(WEA(0)='1') THEN + STIMULUS_FLOW <= STIMULUS_FLOW+1; + END IF; + END IF; + END PROCESS; + + + + + PROCESS(CLKA) + BEGIN + IF(RISING_EDGE(CLKA)) THEN + IF(RESET_SYNC_R3='1') THEN + WEA_R <= (OTHERS=>'0') AFTER 50 ns; + DINA_R <= (OTHERS=>'0') AFTER 50 ns; + + + ELSE + WEA_R <= WEA AFTER 50 ns; + DINA_R <= DINA AFTER 50 ns; + + END IF; + END IF; + END PROCESS; + + + PROCESS(CLKA) + BEGIN + IF(RISING_EDGE(CLKA)) THEN + IF(RESET_SYNC_R3='1') THEN + ADDRA_R <= (OTHERS=> '0') AFTER 50 ns; + ELSE + ADDRA_R <= ADDRA AFTER 50 ns; + END IF; + END IF; + END PROCESS; + + + BMG_PORT: blockMemory_exdes PORT MAP ( + --Port A + RSTA => RSTA, + WEA => WEA_R, + ADDRA => ADDRA_R, + DINA => DINA_R, + DOUTA => DOUTA, + CLKA => CLKA + + ); +END ARCHITECTURE; Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/bmg_stim_gen.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/bmg_stim_gen.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/bmg_stim_gen.vhd (revision 5) @@ -0,0 +1,243 @@ + + + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7_1 Core - Stimulus Generator For Single Port Ram +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006_3010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- +-- Filename: bmg_stim_gen.vhd +-- +-- Description: +-- Stimulus Generation For SRAM +-- 100 Writes and 100 Reads will be performed in a repeatitive loop till the +-- simulation ends +-- +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: Sep 12, 2011 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; +USE IEEE.STD_LOGIC_MISC.ALL; + +LIBRARY work; +USE work.ALL; + +USE work.BMG_TB_PKG.ALL; + + +ENTITY REGISTER_LOGIC_SRAM IS + PORT( + Q : OUT STD_LOGIC; + CLK : IN STD_LOGIC; + RST : IN STD_LOGIC; + D : IN STD_LOGIC + ); +END REGISTER_LOGIC_SRAM; + +ARCHITECTURE REGISTER_ARCH OF REGISTER_LOGIC_SRAM IS + SIGNAL Q_O : STD_LOGIC :='0'; +BEGIN + Q <= Q_O; + FF_BEH: PROCESS(CLK) + BEGIN + IF(RISING_EDGE(CLK)) THEN + IF(RST ='1') THEN + Q_O <= '0'; + ELSE + Q_O <= D; + END IF; + END IF; + END PROCESS; +END REGISTER_ARCH; + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; +USE IEEE.STD_LOGIC_MISC.ALL; + +LIBRARY work; +USE work.ALL; +USE work.BMG_TB_PKG.ALL; + + +ENTITY BMG_STIM_GEN IS + PORT ( + CLK : IN STD_LOGIC; + RST : IN STD_LOGIC; + ADDRA : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0'); + DINA : OUT STD_LOGIC_VECTOR(511 DOWNTO 0) := (OTHERS => '0'); + WEA : OUT STD_LOGIC_VECTOR (0 DOWNTO 0) := (OTHERS => '0'); + CHECK_DATA: OUT STD_LOGIC:='0' + ); +END BMG_STIM_GEN; + + +ARCHITECTURE BEHAVIORAL OF BMG_STIM_GEN IS + + CONSTANT ZERO : STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS => '0'); + CONSTANT DATA_PART_CNT_A: INTEGER:= DIVROUNDUP(512,512); + SIGNAL WRITE_ADDR : STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS => '0'); + SIGNAL WRITE_ADDR_INT : STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0'); + SIGNAL READ_ADDR_INT : STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0'); + SIGNAL READ_ADDR : STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS => '0'); + SIGNAL DINA_INT : STD_LOGIC_VECTOR(511 DOWNTO 0) := (OTHERS => '0'); + SIGNAL DO_WRITE : STD_LOGIC := '0'; + SIGNAL DO_READ : STD_LOGIC := '0'; + SIGNAL COUNT_NO : INTEGER :=0; + SIGNAL DO_READ_REG : STD_LOGIC_VECTOR(4 DOWNTO 0) :=(OTHERS => '0'); +BEGIN + WRITE_ADDR_INT(3 DOWNTO 0) <= WRITE_ADDR(3 DOWNTO 0); + READ_ADDR_INT(3 DOWNTO 0) <= READ_ADDR(3 DOWNTO 0); + ADDRA <= IF_THEN_ELSE(DO_WRITE='1',WRITE_ADDR_INT,READ_ADDR_INT) ; + DINA <= DINA_INT ; + + CHECK_DATA <= DO_READ; + +RD_ADDR_GEN_INST:ENTITY work.ADDR_GEN + GENERIC MAP( + C_MAX_DEPTH => 16 + ) + PORT MAP( + CLK => CLK, + RST => RST, + EN => DO_READ, + LOAD => '0', + LOAD_VALUE => ZERO, + ADDR_OUT => READ_ADDR + ); + +WR_ADDR_GEN_INST:ENTITY work.ADDR_GEN + GENERIC MAP( + C_MAX_DEPTH => 16 ) + PORT MAP( + CLK => CLK, + RST => RST, + EN => DO_WRITE, + LOAD => '0', + LOAD_VALUE => ZERO, + ADDR_OUT => WRITE_ADDR + ); + +WR_DATA_GEN_INST:ENTITY work.DATA_GEN + GENERIC MAP ( + DATA_GEN_WIDTH => 512, + DOUT_WIDTH => 512, + DATA_PART_CNT => DATA_PART_CNT_A, + SEED => 2 + ) + PORT MAP ( + CLK => CLK, + RST => RST, + EN => DO_WRITE, + DATA_OUT => DINA_INT + ); + +WR_RD_PROCESS: PROCESS (CLK) +BEGIN + IF(RISING_EDGE(CLK)) THEN + IF(RST='1') THEN + DO_WRITE <= '0'; + DO_READ <= '0'; + COUNT_NO <= 0 ; + ELSIF(COUNT_NO < 4) THEN + DO_WRITE <= '1'; + DO_READ <= '0'; + COUNT_NO <= COUNT_NO + 1; + ELSIF(COUNT_NO< 8) THEN + DO_WRITE <= '0'; + DO_READ <= '1'; + COUNT_NO <= COUNT_NO + 1; + ELSIF(COUNT_NO=8) THEN + DO_WRITE <= '0'; + DO_READ <= '0'; + COUNT_NO <= 0 ; + END IF; + END IF; +END PROCESS; + +BEGIN_SHIFT_REG: FOR I IN 0 TO 4 GENERATE +BEGIN + DFF_RIGHT: IF I=0 GENERATE + BEGIN + SHIFT_INST_0: ENTITY work.REGISTER_LOGIC_SRAM + PORT MAP( + Q => DO_READ_REG(0), + CLK => CLK, + RST => RST, + D => DO_READ + ); + END GENERATE DFF_RIGHT; + DFF_OTHERS: IF ((I>0) AND (I<=4)) GENERATE + BEGIN + SHIFT_INST: ENTITY work.REGISTER_LOGIC_SRAM + PORT MAP( + Q => DO_READ_REG(I), + CLK => CLK, + RST => RST, + D => DO_READ_REG(I-1) + ); + END GENERATE DFF_OTHERS; +END GENERATE BEGIN_SHIFT_REG; + + WEA(0) <= IF_THEN_ELSE(DO_WRITE='1','1','0') ; + +END ARCHITECTURE; Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/bmg_tb_pkg.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/bmg_tb_pkg.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation/bmg_tb_pkg.vhd (revision 5) @@ -0,0 +1,200 @@ + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7_1 Core - Testbench Package +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006_3010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- +-- Filename: bmg_tb_pkg.vhd +-- +-- Description: +-- BMG Testbench Package files +-- +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: Sep 12, 2011 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + +PACKAGE BMG_TB_PKG IS + + FUNCTION DIVROUNDUP ( + DATA_VALUE : INTEGER; + DIVISOR : INTEGER) + RETURN INTEGER; + ------------------------ + FUNCTION IF_THEN_ELSE ( + CONDITION : BOOLEAN; + TRUE_CASE : STD_LOGIC_VECTOR; + FALSE_CASE : STD_LOGIC_VECTOR) + RETURN STD_LOGIC_VECTOR; + ------------------------ + FUNCTION IF_THEN_ELSE ( + CONDITION : BOOLEAN; + TRUE_CASE : STRING; + FALSE_CASE :STRING) + RETURN STRING; + ------------------------ + FUNCTION IF_THEN_ELSE ( + CONDITION : BOOLEAN; + TRUE_CASE : STD_LOGIC; + FALSE_CASE :STD_LOGIC) + RETURN STD_LOGIC; + ------------------------ + FUNCTION IF_THEN_ELSE ( + CONDITION : BOOLEAN; + TRUE_CASE : INTEGER; + FALSE_CASE : INTEGER) + RETURN INTEGER; + ------------------------ + FUNCTION LOG2ROUNDUP ( + DATA_VALUE : INTEGER) + RETURN INTEGER; + +END BMG_TB_PKG; + +PACKAGE BODY BMG_TB_PKG IS + + FUNCTION DIVROUNDUP ( + DATA_VALUE : INTEGER; + DIVISOR : INTEGER) + RETURN INTEGER IS + VARIABLE DIV : INTEGER; + BEGIN + DIV := DATA_VALUE/DIVISOR; + IF ( (DATA_VALUE MOD DIVISOR) /= 0) THEN + DIV := DIV+1; + END IF; + RETURN DIV; + END DIVROUNDUP; + --------------------------------- + FUNCTION IF_THEN_ELSE ( + CONDITION : BOOLEAN; + TRUE_CASE : STD_LOGIC_VECTOR; + FALSE_CASE : STD_LOGIC_VECTOR) + RETURN STD_LOGIC_VECTOR IS + BEGIN + IF NOT CONDITION THEN + RETURN FALSE_CASE; + ELSE + RETURN TRUE_CASE; + END IF; + END IF_THEN_ELSE; + --------------------------------- + FUNCTION IF_THEN_ELSE ( + CONDITION : BOOLEAN; + TRUE_CASE : STD_LOGIC; + FALSE_CASE : STD_LOGIC) + RETURN STD_LOGIC IS + BEGIN + IF NOT CONDITION THEN + RETURN FALSE_CASE; + ELSE + RETURN TRUE_CASE; + END IF; + END IF_THEN_ELSE; + --------------------------------- + FUNCTION IF_THEN_ELSE ( + CONDITION : BOOLEAN; + TRUE_CASE : INTEGER; + FALSE_CASE : INTEGER) + RETURN INTEGER IS + VARIABLE RETVAL : INTEGER := 0; + BEGIN + IF CONDITION=FALSE THEN + RETVAL:=FALSE_CASE; + ELSE + RETVAL:=TRUE_CASE; + END IF; + RETURN RETVAL; + END IF_THEN_ELSE; + --------------------------------- + FUNCTION IF_THEN_ELSE ( + CONDITION : BOOLEAN; + TRUE_CASE : STRING; + FALSE_CASE : STRING) + RETURN STRING IS + BEGIN + IF NOT CONDITION THEN + RETURN FALSE_CASE; + ELSE + RETURN TRUE_CASE; + END IF; + END IF_THEN_ELSE; + ------------------------------- + FUNCTION LOG2ROUNDUP ( + DATA_VALUE : INTEGER) + RETURN INTEGER IS + VARIABLE WIDTH : INTEGER := 0; + VARIABLE CNT : INTEGER := 1; + BEGIN + IF (DATA_VALUE <= 1) THEN + WIDTH := 1; + ELSE + WHILE (CNT < DATA_VALUE) LOOP + WIDTH := WIDTH + 1; + CNT := CNT *2; + END LOOP; + END IF; + RETURN WIDTH; + END LOG2ROUNDUP; + +END BMG_TB_PKG; Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/simulation Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/doc/blk_mem_gen_v7_1_vinfo.html =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/doc/blk_mem_gen_v7_1_vinfo.html (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/doc/blk_mem_gen_v7_1_vinfo.html (revision 5) @@ -0,0 +1,237 @@ + + +blk_mem_gen_v7_1_vinfo + + + +









    +                Core name: Xilinx LogiCORE Block Memory Generator








    +                Version: 7.1








    +                Release: ISE 14.1 / Vivado 2012.1








    +                Release Date: April 24, 2012








    +








    +








    +================================================================================








    +








    +This document contains the following sections:








    +








    +This document contains the following sections:








    +








    +1. Introduction








    +2. New Features








    +  2.1 ISE








    +  2.2 Vivado








    +3. Supported Devices








    +  3.1 ISE








    +  3.2 Vivado








    +4. Resolved Issues








    +  4.1 ISE








    +  4.2 Vivado








    +5. Known Issues








    +  5.1 ISE








    +  5.2 Vivado








    +6. Technical Support








    +7. Core Release History








    +8. Legal Disclaimer








    +








    +================================================================================








    +








    +








    +1. INTRODUCTION








    +








    +For installation instructions for this release, please go to:








    +








    +  www.xilinx.com/ipcenter/coregen/ip_update_install_instructions.htm








    +








    +For system requirements:








    +








    +   www.xilinx.com/ipcenter/coregen/ip_update_system_requirements.htm








    +








    +This file contains release notes for the Xilinx LogiCORE IP Block Memory Generator v7.1








    +solution. For the latest core updates, see the product page at:








    +








    + www.xilinx.com/products/ipcenter/Block_Memory_Generator.htm








    +








    +








    +................................................................................








    +2. NEW FEATURES








    +








    +








    +  2.1 ISE








    +








    +    - ISE 14.1 software support








    +    - Defense Grade Virtex-7Q, Kintex-7Q, Artix-7Q and Zynq-Q, Defense Grade Lower Power Kintex-7QL and Artix-7QL,








    +      and Automotive Zynq device support








    +








    +








    +  2.2 Vivado








    +








    +    - 2012.1 software support








    +    - Defense Grade Virtex-7Q, Kintex-7Q, Artix-7Q and Zynq-Q, Defense Grade Lower Power Kintex-7QL and Artix-7QL,








    +      and Automotive Zynq device support








    +








    +








    +................................................................................








    +3. SUPPORTED DEVICES








    +








    +








    +  3.1 ISE








    +








    +  The following device families are supported by the core for this release.








    +








    +  All 7 Series devices








    +  Zynq-7000 devices








    +  All Virtex-6 devices








    +  All Spartan-6 devices








    +  All Virtex-5 devices








    +  All Spartan-3 devices








    +  All Virtex-4 devices








    +








    +








    +  3.2 Vivado








    +  All 7 Series devices








    +  Zynq-7000 devices








    +








    +








    +................................................................................








    +4. RESOLVED ISSUES








    +








    +








    +The following issues are resolved in Block Memory Generator v7.1:








    +








    +  4.1 ISE








    +








    +








    +  4.2 Vivado








    +








    +








    +................................................................................








    +5. KNOWN ISSUES








    +








    +








    +  5.1 ISE








    +








    +    The following are known issues for v7.1 of this core at time of release:








    +








    +    1. Virtex-6 and Spartan-6: BRAM Memory collision error, when the user selects TDP (write_mode= Read First)








    +      Work around: The user must review the possible scenarios that causes the collission and revise








    +       their design to avoid those situations.








    +      - CR588505








    +








    +      Note: Refer to UG383, 'Conflict Avoidance' section when using TDP Memory - with








    +            Write Mode = Read First in conjunction with asynchronous clocking








    +








    +    2. Power estimation figures in the datasheet are preliminary for Virtex-5 and Spartan-3.








    +








    +    3. Core does not generate for large memories. Depending on the








    +       machine the ISE CORE Generator software runs on, the maximum size of the memory that








    +       can be generated will vary.  For example, a Dual Pentium-4 server








    +       with 2 GB RAM can generate a memory core of size 1.8 MBits or 230 KBytes








    +      - CR 415768








    +      - AR 24034








    +








    +








    +  5.2 Vivado








    +








    +  The most recent information, including known issues, workarounds, and resolutions for








    +  this version is provided in the IP Release Notes User Guide located at








    +








    +         www.xilinx.com/support/documentation/user_guides/xtp025.pdf








    +








    +








    +








    +................................................................................








    +6. TECHNICAL SUPPORT








    +








    +To obtain technical support, create a WebCase at www.xilinx.com/support.








    +Questions are routed to a team with expertise using this product.








    +








    +Xilinx provides technical support for use of this product when used








    +according to the guidelines described in the core documentation, and








    +cannot guarantee timing, functionality, or support of this product for








    +designs that do not follow specified guidelines.








    +








    +








    +








    +7. CORE RELEASE HISTORY








    +








    +Date        By            Version      Description








    +================================================================================








    +04/24/2012  Xilinx, Inc.  7.1          ISE 14.1 and Vivado 2012.1 support; Defense Grade 7 Series and Zynq devices, and Automotive Zynq device support








    +01/18/2011  Xilinx, Inc.  6.3          ISE 13.4 support;Artix7L*, AArtix-7* device support








    +06/22/2011  Xilinx, Inc.  6.2          ISE 13.2 support;Virtex-7L,Kintex-7L,Artix7 and Zynq-7000* device support;








    +03/01/2011  Xilinx, Inc.  6.1          ISE 13.1 support and Virtex-7 and Kintex-7 device support; AXI4/AXI4-Lite Support








    +09/21/2010  Xilinx, Inc.  4.3          ISE 12.3 support








    +07/23/2010  Xilinx, Inc.  4.2          ISE 12.2 support








    +04/19/2010  Xilinx, Inc.  4.1          ISE 12.1 support








    +03/09/2010  Xilinx, Inc.  3.3 rev 2    Fix for V6 Memory collision issue








    +12/02/2009  Xilinx, Inc.  3.3 rev 1    ISE 11.4 support; Spartan-6 Low Power








    +                                       Device support; Automotive Spartan 3A








    +                                       DSP device support








    +09/16/2009  Xilinx, Inc.  3.3          Revised to v3.3








    +06/24/2009  Xilinx, Inc.  3.2          Revised to v3.2








    +04/24/2009  Xilinx, Inc.  3.1          Revised to v3.1








    +09/19/2008  Xilinx, Inc.  2.8          Revised to v2.8








    +03/24/2008  Xilinx, Inc.  2.7          10.1 support; Revised to v2.7








    +10/03/2007  Xilinx, Inc.  2.6          Revised to v2.6








    +07/2007     Xilinx, Inc.  2.5          Revised to v2.5








    +04/2007     Xilinx, Inc.  2.4          Revised to v2.4 rev 1








    +02/2007     Xilinx, Inc.  2.4          Revised to v2.4








    +11/2006     Xilinx, Inc.  2.3          Revised to v2.3








    +09/2006     Xilinx, Inc.  2.2          Revised to v2.2








    +06/2006     Xilinx, Inc.  2.1          Revised to v2.1








    +01/2006     Xilinx, Inc.  1.1          Initial release








    +================================================================================








    +








    +8. Legal Disclaimer








    +








    + (c) Copyright 2006 - 2012 Xilinx, Inc. All rights reserved.








    +








    + This file contains confidential and proprietary information








    + of Xilinx, Inc. and is protected under U.S. and








    + international copyright and other intellectual property








    + laws.








    +








    + DISCLAIMER








    + This disclaimer is not a license and does not grant any








    + rights to the materials distributed herewith. Except as








    + otherwise provided in a valid license issued to you by








    + Xilinx, and to the maximum extent permitted by applicable








    + law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND








    + WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES








    + AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING








    + BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-








    + INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and








    + (2) Xilinx shall not be liable (whether in contract or tort,








    + including negligence, or under any other theory of








    + liability) for any loss or damage of any kind or nature








    + related to, arising under or in connection with these








    + materials, including for any direct, or any indirect,








    + special, incidental, or consequential loss or damage








    + (including loss of data, profits, goodwill, or any type of








    + loss or damage suffered as a result of any action brought








    + by a third party) even if such damage or loss was








    + reasonably foreseeable or Xilinx had been advised of the








    + possibility of the same.








    +








    + CRITICAL APPLICATIONS








    + Xilinx products are not designed or intended to be fail-








    + safe, or for use in any application requiring fail-safe








    + performance, such as life-support or safety devices or








    + systems, Class III medical devices, nuclear facilities,








    + applications related to the deployment of airbags, or any








    + other applications that could lead to death, personal








    + injury, or severe property or environmental damage








    + (individually and collectively, "Critical








    + Applications"). Customer assumes the sole risk and








    + liability of any use of Xilinx products in Critical








    + Applications, subject only to applicable laws and








    + regulations governing limitations on product liability.








    +








    + THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS








    + PART OF THIS FILE AT ALL TIMES.








    +








    +








    +
+ + Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/doc/blk_mem_gen_ds512.pdf =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/doc/blk_mem_gen_ds512.pdf =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/doc/blk_mem_gen_ds512.pdf (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/doc/blk_mem_gen_ds512.pdf (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/doc/blk_mem_gen_ds512.pdf Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/doc =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/doc (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/doc (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/doc Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/blk_mem_gen_v7_1_readme.txt =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/blk_mem_gen_v7_1_readme.txt (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/blk_mem_gen_v7_1_readme.txt (revision 5) @@ -0,0 +1,226 @@ + Core name: Xilinx LogiCORE Block Memory Generator + Version: 7.1 + Release: ISE 14.1 / Vivado 2012.1 + Release Date: April 24, 2012 + + +================================================================================ + +This document contains the following sections: + +This document contains the following sections: + +1. Introduction +2. New Features + 2.1 ISE + 2.2 Vivado +3. Supported Devices + 3.1 ISE + 3.2 Vivado +4. Resolved Issues + 4.1 ISE + 4.2 Vivado +5. Known Issues + 5.1 ISE + 5.2 Vivado +6. Technical Support +7. Core Release History +8. Legal Disclaimer + +================================================================================ + + +1. INTRODUCTION + +For installation instructions for this release, please go to: + + http://www.xilinx.com/ipcenter/coregen/ip_update_install_instructions.htm + +For system requirements: + + http://www.xilinx.com/ipcenter/coregen/ip_update_system_requirements.htm + +This file contains release notes for the Xilinx LogiCORE IP Block Memory Generator v7.1 +solution. For the latest core updates, see the product page at: + + http://www.xilinx.com/products/ipcenter/Block_Memory_Generator.htm + + +................................................................................ +2. NEW FEATURES + + + 2.1 ISE + + - ISE 14.1 software support + - Defense Grade Virtex-7Q, Kintex-7Q, Artix-7Q and Zynq-Q, Defense Grade Lower Power Kintex-7QL and Artix-7QL, + and Automotive Zynq device support + + + 2.2 Vivado + + - 2012.1 software support + - Defense Grade Virtex-7Q, Kintex-7Q, Artix-7Q and Zynq-Q, Defense Grade Lower Power Kintex-7QL and Artix-7QL, + and Automotive Zynq device support + + +................................................................................ +3. SUPPORTED DEVICES + + + 3.1 ISE + + The following device families are supported by the core for this release. + + All 7 Series devices + Zynq-7000 devices + All Virtex-6 devices + All Spartan-6 devices + All Virtex-5 devices + All Spartan-3 devices + All Virtex-4 devices + + + 3.2 Vivado + All 7 Series devices + Zynq-7000 devices + + +................................................................................ +4. RESOLVED ISSUES + + +The following issues are resolved in Block Memory Generator v7.1: + + 4.1 ISE + + + 4.2 Vivado + + +................................................................................ +5. KNOWN ISSUES + + + 5.1 ISE + + The following are known issues for v7.1 of this core at time of release: + + 1. Virtex-6 and Spartan-6: BRAM Memory collision error, when the user selects TDP (write_mode= Read First) + Work around: The user must review the possible scenarios that causes the collission and revise + their design to avoid those situations. + - CR588505 + + Note: Refer to UG383, 'Conflict Avoidance' section when using TDP Memory - with + Write Mode = Read First in conjunction with asynchronous clocking + + 2. Power estimation figures in the datasheet are preliminary for Virtex-5 and Spartan-3. + + 3. Core does not generate for large memories. Depending on the + machine the ISE CORE Generator software runs on, the maximum size of the memory that + can be generated will vary. For example, a Dual Pentium-4 server + with 2 GB RAM can generate a memory core of size 1.8 MBits or 230 KBytes + - CR 415768 + - AR 24034 + + + 5.2 Vivado + + The most recent information, including known issues, workarounds, and resolutions for + this version is provided in the IP Release Notes User Guide located at + + www.xilinx.com/support/documentation/user_guides/xtp025.pdf + + + +................................................................................ +6. TECHNICAL SUPPORT + +To obtain technical support, create a WebCase at www.xilinx.com/support. +Questions are routed to a team with expertise using this product. + +Xilinx provides technical support for use of this product when used +according to the guidelines described in the core documentation, and +cannot guarantee timing, functionality, or support of this product for +designs that do not follow specified guidelines. + + + +7. CORE RELEASE HISTORY + +Date By Version Description +================================================================================ +04/24/2012 Xilinx, Inc. 7.1 ISE 14.1 and Vivado 2012.1 support; Defense Grade 7 Series and Zynq devices, and Automotive Zynq device support +01/18/2011 Xilinx, Inc. 6.3 ISE 13.4 support;Artix7L*, AArtix-7* device support +06/22/2011 Xilinx, Inc. 6.2 ISE 13.2 support;Virtex-7L,Kintex-7L,Artix7 and Zynq-7000* device support; +03/01/2011 Xilinx, Inc. 6.1 ISE 13.1 support and Virtex-7 and Kintex-7 device support; AXI4/AXI4-Lite Support +09/21/2010 Xilinx, Inc. 4.3 ISE 12.3 support +07/23/2010 Xilinx, Inc. 4.2 ISE 12.2 support +04/19/2010 Xilinx, Inc. 4.1 ISE 12.1 support +03/09/2010 Xilinx, Inc. 3.3 rev 2 Fix for V6 Memory collision issue +12/02/2009 Xilinx, Inc. 3.3 rev 1 ISE 11.4 support; Spartan-6 Low Power + Device support; Automotive Spartan 3A + DSP device support +09/16/2009 Xilinx, Inc. 3.3 Revised to v3.3 +06/24/2009 Xilinx, Inc. 3.2 Revised to v3.2 +04/24/2009 Xilinx, Inc. 3.1 Revised to v3.1 +09/19/2008 Xilinx, Inc. 2.8 Revised to v2.8 +03/24/2008 Xilinx, Inc. 2.7 10.1 support; Revised to v2.7 +10/03/2007 Xilinx, Inc. 2.6 Revised to v2.6 +07/2007 Xilinx, Inc. 2.5 Revised to v2.5 +04/2007 Xilinx, Inc. 2.4 Revised to v2.4 rev 1 +02/2007 Xilinx, Inc. 2.4 Revised to v2.4 +11/2006 Xilinx, Inc. 2.3 Revised to v2.3 +09/2006 Xilinx, Inc. 2.2 Revised to v2.2 +06/2006 Xilinx, Inc. 2.1 Revised to v2.1 +01/2006 Xilinx, Inc. 1.1 Initial release +================================================================================ + +8. Legal Disclaimer + + (c) Copyright 2006 - 2012 Xilinx, Inc. All rights reserved. + + This file contains confidential and proprietary information + of Xilinx, Inc. and is protected under U.S. and + international copyright and other intellectual property + laws. + + DISCLAIMER + This disclaimer is not a license and does not grant any + rights to the materials distributed herewith. Except as + otherwise provided in a valid license issued to you by + Xilinx, and to the maximum extent permitted by applicable + law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND + WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES + AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING + BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- + INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and + (2) Xilinx shall not be liable (whether in contract or tort, + including negligence, or under any other theory of + liability) for any loss or damage of any kind or nature + related to, arising under or in connection with these + materials, including for any direct, or any indirect, + special, incidental, or consequential loss or damage + (including loss of data, profits, goodwill, or any type of + loss or damage suffered as a result of any action brought + by a third party) even if such damage or loss was + reasonably foreseeable or Xilinx had been advised of the + possibility of the same. + + CRITICAL APPLICATIONS + Xilinx products are not designed or intended to be fail- + safe, or for use in any application requiring fail-safe + performance, such as life-support or safety devices or + systems, Class III medical devices, nuclear facilities, + applications related to the deployment of airbags, or any + other applications that could lead to death, personal + injury, or severe property or environmental damage + (individually and collectively, "Critical + Applications"). Customer assumes the sole risk and + liability of any use of Xilinx products in Critical + Applications, subject only to applicable laws and + regulations governing limitations on product liability. + + THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS + PART OF THIS FILE AT ALL TIMES. + Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/implement.bat =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/implement.bat (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/implement.bat (revision 5) @@ -0,0 +1,48 @@ + + + + + + + + +rem Clean up the results directory +rmdir /S /Q results +mkdir results + +rem Synthesize the VHDL Wrapper Files + + +echo 'Synthesizing example design with XST'; +xst -ifn xst.scr +copy blockMemory_exdes.ngc .\results\ + + +rem Copy the netlist generated by Coregen +echo 'Copying files from the netlist directory to the results directory' +copy ..\..\blockMemory.ngc results\ + + +rem Copy the constraints files generated by Coregen +echo 'Copying files from constraints directory to results directory' +copy ..\example_design\blockMemory_exdes.ucf results\ + +cd results + +echo 'Running ngdbuild' +ngdbuild -p xc3s500e-fg320-5 blockMemory_exdes + +echo 'Running map' +map blockMemory_exdes -o mapped.ncd -pr i + +echo 'Running par' +par mapped.ncd routed.ncd + +echo 'Running trce' +trce -e 10 routed.ncd mapped.pcf -o routed + +echo 'Running design through bitgen' +bitgen -w routed + +echo 'Running netgen to create gate level VHDL model' +netgen -ofmt vhdl -sim -tm blockMemory_exdes -pcf mapped.pcf -w routed.ncd routed.vhd Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/planAhead_rdn.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/planAhead_rdn.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/planAhead_rdn.tcl (revision 5) @@ -0,0 +1,67 @@ +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. + + +set device xc3s500efg320-5 +set projName blockMemory +set design blockMemory +set projDir [file dirname [info script]] +create_project $projName $projDir/results/$projName -part $device -force +set_property design_mode RTL [current_fileset -srcset] +set top_module blockMemory_exdes +add_files -norecurse {../../example_design/blockMemory_exdes.vhd} +add_files -norecurse {./blockMemory.ngc} +import_files -fileset [get_filesets constrs_1] -force -norecurse {../../example_design/blockMemory_exdes.xdc} +set_property top blockMemory_exdes [get_property srcset [current_run]] +synth_design +opt_design +place_design +route_design +write_sdf -rename_top_module blockMemory_exdes -file routed.sdf +write_vhdl -mode sim routed.vhd +report_timing -nworst 30 -path_type full -file routed.twr +report_drc -file report.drc +write_bitstream -bitgen_options {-g UnconstrainedPins:Allow} Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/planAhead_ise.bat =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/planAhead_ise.bat (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/planAhead_ise.bat (revision 5) @@ -0,0 +1,55 @@ +#!/bin/sh +rem (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +rem +rem This file contains confidential and proprietary information +rem of Xilinx, Inc. and is protected under U.S. and +rem international copyright and other intellectual property +rem laws. +rem +rem DISCLAIMER +rem This disclaimer is not a license and does not grant any +rem rights to the materials distributed herewith. Except as +rem otherwise provided in a valid license issued to you by +rem Xilinx, and to the maximum extent permitted by applicable +rem law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +rem WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +rem AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +rem BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +rem INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +rem (2) Xilinx shall not be liable (whether in contract or tort, +rem including negligence, or under any other theory of +rem liability) for any loss or damage of any kind or nature +rem related to, arising under or in connection with these +rem materials, including for any direct, or any indirect, +rem special, incidental, or consequential loss or damage +rem (including loss of data, profits, goodwill, or any type of +rem loss or damage suffered as a result of any action brought +rem by a third party) even if such damage or loss was +rem reasonably foreseeable or Xilinx had been advised of the +rem possibility of the same. +rem +rem CRITICAL APPLICATIONS +rem Xilinx products are not designed or intended to be fail- +rem safe, or for use in any application requiring fail-safe +rem performance, such as life-support or safety devices or +rem systems, Class III medical devices, nuclear facilities, +rem applications related to the deployment of airbags, or any +rem other applications that could lead to death, personal +rem injury, or severe property or environmental damage +rem (individually and collectively, "Critical +rem Applications"). Customer assumes the sole risk and +rem liability of any use of Xilinx products in Critical +rem Applications, subject only to applicable laws and +rem regulations governing limitations on product liability. +rem +rem THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +rem PART OF THIS FILE AT ALL TIMES. + +rem ----------------------------------------------------------------------------- +rem Script to synthesize and implement the Coregen FIFO Generator +rem ----------------------------------------------------------------------------- +rmdir /S /Q results +mkdir results +cd results +copy ..\..\..\blockMemory.ngc . +planAhead -mode batch -source ..\planAhead_ise.tcl Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/implement.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/implement.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/implement.sh (revision 5) @@ -0,0 +1,48 @@ + + + + + + + + +#!/bin/sh + +# Clean up the results directory +rm -rf results +mkdir results + +#Synthesize the Wrapper Files + +echo 'Synthesizing example design with XST'; +xst -ifn xst.scr +cp blockMemory_exdes.ngc ./results/ + + +# Copy the netlist generated by Coregen +echo 'Copying files from the netlist directory to the results directory' +cp ../../blockMemory.ngc results/ + +# Copy the constraints files generated by Coregen +echo 'Copying files from constraints directory to results directory' +cp ../example_design/blockMemory_exdes.ucf results/ + +cd results + +echo 'Running ngdbuild' +ngdbuild -p xc3s500e-fg320-5 blockMemory_exdes + +echo 'Running map' +map blockMemory_exdes -o mapped.ncd -pr i + +echo 'Running par' +par mapped.ncd routed.ncd + +echo 'Running trce' +trce -e 10 routed.ncd mapped.pcf -o routed + +echo 'Running design through bitgen' +bitgen -w routed + +echo 'Running netgen to create gate level VHDL model' +netgen -ofmt vhdl -sim -tm blockMemory_exdes -pcf mapped.pcf -w routed.ncd routed.vhd Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/xst.scr =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/xst.scr (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/xst.scr (revision 5) @@ -0,0 +1,13 @@ +run +-ifmt VHDL +-ent blockMemory_exdes +-p xc3s500e-fg320-5 +-ifn xst.prj +-write_timing_constraints No +-iobuf YES +-max_fanout 100 +-ofn blockMemory_exdes +-ofmt NGC +-bus_delimiter () +-hierarchy_separator / +-case Maintain Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/planAhead_rdn.bat =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/planAhead_rdn.bat (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/planAhead_rdn.bat (revision 5) @@ -0,0 +1,55 @@ +#!/bin/sh +rem (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +rem +rem This file contains confidential and proprietary information +rem of Xilinx, Inc. and is protected under U.S. and +rem international copyright and other intellectual property +rem laws. +rem +rem DISCLAIMER +rem This disclaimer is not a license and does not grant any +rem rights to the materials distributed herewith. Except as +rem otherwise provided in a valid license issued to you by +rem Xilinx, and to the maximum extent permitted by applicable +rem law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +rem WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +rem AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +rem BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +rem INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +rem (2) Xilinx shall not be liable (whether in contract or tort, +rem including negligence, or under any other theory of +rem liability) for any loss or damage of any kind or nature +rem related to, arising under or in connection with these +rem materials, including for any direct, or any indirect, +rem special, incidental, or consequential loss or damage +rem (including loss of data, profits, goodwill, or any type of +rem loss or damage suffered as a result of any action brought +rem by a third party) even if such damage or loss was +rem reasonably foreseeable or Xilinx had been advised of the +rem possibility of the same. +rem +rem CRITICAL APPLICATIONS +rem Xilinx products are not designed or intended to be fail- +rem safe, or for use in any application requiring fail-safe +rem performance, such as life-support or safety devices or +rem systems, Class III medical devices, nuclear facilities, +rem applications related to the deployment of airbags, or any +rem other applications that could lead to death, personal +rem injury, or severe property or environmental damage +rem (individually and collectively, "Critical +rem Applications"). Customer assumes the sole risk and +rem liability of any use of Xilinx products in Critical +rem Applications, subject only to applicable laws and +rem regulations governing limitations on product liability. +rem +rem THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +rem PART OF THIS FILE AT ALL TIMES. + +rem ----------------------------------------------------------------------------- +rem Script to synthesize and implement the Coregen FIFO Generator +rem ----------------------------------------------------------------------------- +rmdir /S /Q results +mkdir results +cd results +copy ..\..\..\blockMemory.ngc . +planAhead -mode batch -source ..\planAhead_rdn.tcl Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/planAhead_ise.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/planAhead_ise.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/planAhead_ise.sh (revision 5) @@ -0,0 +1,55 @@ +#!/bin/sh +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. + +#----------------------------------------------------------------------------- +# Script to synthesize and implement the Coregen FIFO Generator +#----------------------------------------------------------------------------- +rm -rf results +mkdir results +cd results +cp ../../../blockMemory.ngc . +planAhead -mode batch -source ../planAhead_ise.tcl Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/xst.prj =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/xst.prj (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/xst.prj (revision 5) @@ -0,0 +1 @@ +work ../example_design/blockMemory_exdes.vhd Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/planAhead_rdn.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/planAhead_rdn.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/planAhead_rdn.sh (revision 5) @@ -0,0 +1,55 @@ +#!/bin/sh +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. + +#----------------------------------------------------------------------------- +# Script to synthesize and implement the Coregen FIFO Generator +#----------------------------------------------------------------------------- +rm -rf results +mkdir results +cd results +cp ../../../blockMemory.ngc . +planAhead -mode batch -source ../planAhead_rdn.tcl Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/planAhead_ise.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/planAhead_ise.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement/planAhead_ise.tcl (revision 5) @@ -0,0 +1,67 @@ +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. + + +set device xc3s500efg320-5 +set projName blockMemory +set design blockMemory +set projDir [file dirname [info script]] +create_project $projName $projDir/results/$projName -part $device -force +set_property design_mode RTL [current_fileset -srcset] +set top_module blockMemory_exdes +add_files -norecurse {../../example_design/blockMemory_exdes.vhd} +add_files -norecurse {./blockMemory.ngc} +import_files -fileset [get_filesets constrs_1] -force -norecurse {../../example_design/blockMemory_exdes.xdc} +set_property top blockMemory_exdes [get_property srcset [current_run]] +synth_design +opt_design +place_design +route_design +write_sdf -rename_top_module blockMemory_exdes -file routed.sdf +write_vhdl -mode sim routed.vhd +report_timing -nworst 30 -path_type full -file routed.twr +report_drc -file report.drc +write_bitstream -bitgen_options {-g UnconstrainedPins:Allow} Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory/implement Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.v =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.v (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.v (revision 5) @@ -0,0 +1,180 @@ +/******************************************************************************* +* This file is owned and controlled by Xilinx and must be used solely * +* for design, simulation, implementation and creation of design files * +* limited to Xilinx devices or technologies. Use with non-Xilinx * +* devices or technologies is expressly prohibited and immediately * +* terminates your license. * +* * +* XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" SOLELY * +* FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR XILINX DEVICES. BY * +* PROVIDING THIS DESIGN, CODE, OR INFORMATION AS ONE POSSIBLE * +* IMPLEMENTATION OF THIS FEATURE, APPLICATION OR STANDARD, XILINX IS * +* MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION IS FREE FROM ANY * +* CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE FOR OBTAINING ANY * +* RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY * +* DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE * +* IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR * +* REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF * +* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * +* PARTICULAR PURPOSE. * +* * +* Xilinx products are not intended for use in life support appliances, * +* devices, or systems. Use in such applications are expressly * +* prohibited. * +* * +* (c) Copyright 1995-2013 Xilinx, Inc. * +* All rights reserved. * +*******************************************************************************/ +// You must compile the wrapper file blockMemory.v when simulating +// the core, blockMemory. When compiling the wrapper file, be sure to +// reference the XilinxCoreLib Verilog simulation library. For detailed +// instructions, please refer to the "CORE Generator Help". + +// The synthesis directives "translate_off/translate_on" specified below are +// supported by Xilinx, Mentor Graphics and Synplicity synthesis +// tools. Ensure they are correct for your synthesis tool(s). + +`timescale 1ns/1ps + +module blockMemory( + clka, + rsta, + wea, + addra, + dina, + douta +); + +input clka; +input rsta; +input [0 : 0] wea; +input [3 : 0] addra; +input [511 : 0] dina; +output [511 : 0] douta; + +// synthesis translate_off + + BLK_MEM_GEN_V7_1 #( + .C_ADDRA_WIDTH(4), + .C_ADDRB_WIDTH(4), + .C_ALGORITHM(0), + .C_AXI_ID_WIDTH(4), + .C_AXI_SLAVE_TYPE(0), + .C_AXI_TYPE(1), + .C_BYTE_SIZE(9), + .C_COMMON_CLK(0), + .C_DEFAULT_DATA("0"), + .C_DISABLE_WARN_BHV_COLL(0), + .C_DISABLE_WARN_BHV_RANGE(0), + .C_ENABLE_32BIT_ADDRESS(0), + .C_FAMILY("spartan3"), + .C_HAS_AXI_ID(0), + .C_HAS_ENA(0), + .C_HAS_ENB(0), + .C_HAS_INJECTERR(0), + .C_HAS_MEM_OUTPUT_REGS_A(0), + .C_HAS_MEM_OUTPUT_REGS_B(0), + .C_HAS_MUX_OUTPUT_REGS_A(0), + .C_HAS_MUX_OUTPUT_REGS_B(0), + .C_HAS_REGCEA(0), + .C_HAS_REGCEB(0), + .C_HAS_RSTA(1), + .C_HAS_RSTB(0), + .C_HAS_SOFTECC_INPUT_REGS_A(0), + .C_HAS_SOFTECC_OUTPUT_REGS_B(0), + .C_INIT_FILE_NAME("no_coe_file_loaded"), + .C_INITA_VAL("0"), + .C_INITB_VAL("0"), + .C_INTERFACE_TYPE(0), + .C_LOAD_INIT_FILE(0), + .C_MEM_TYPE(0), + .C_MUX_PIPELINE_STAGES(0), + .C_PRIM_TYPE(6), + .C_READ_DEPTH_A(16), + .C_READ_DEPTH_B(16), + .C_READ_WIDTH_A(512), + .C_READ_WIDTH_B(512), + .C_RST_PRIORITY_A("CE"), + .C_RST_PRIORITY_B("CE"), + .C_RST_TYPE("SYNC"), + .C_RSTRAM_A(0), + .C_RSTRAM_B(0), + .C_SIM_COLLISION_CHECK("ALL"), + .C_USE_BYTE_WEA(0), + .C_USE_BYTE_WEB(0), + .C_USE_DEFAULT_DATA(0), + .C_USE_ECC(0), + .C_USE_SOFTECC(0), + .C_WEA_WIDTH(1), + .C_WEB_WIDTH(1), + .C_WRITE_DEPTH_A(16), + .C_WRITE_DEPTH_B(16), + .C_WRITE_MODE_A("READ_FIRST"), + .C_WRITE_MODE_B("WRITE_FIRST"), + .C_WRITE_WIDTH_A(512), + .C_WRITE_WIDTH_B(512), + .C_XDEVICEFAMILY("spartan3e") + ) + inst ( + .CLKA(clka), + .RSTA(rsta), + .WEA(wea), + .ADDRA(addra), + .DINA(dina), + .DOUTA(douta), + .ENA(), + .REGCEA(), + .CLKB(), + .RSTB(), + .ENB(), + .REGCEB(), + .WEB(), + .ADDRB(), + .DINB(), + .DOUTB(), + .INJECTSBITERR(), + .INJECTDBITERR(), + .SBITERR(), + .DBITERR(), + .RDADDRECC(), + .S_ACLK(), + .S_ARESETN(), + .S_AXI_AWID(), + .S_AXI_AWADDR(), + .S_AXI_AWLEN(), + .S_AXI_AWSIZE(), + .S_AXI_AWBURST(), + .S_AXI_AWVALID(), + .S_AXI_AWREADY(), + .S_AXI_WDATA(), + .S_AXI_WSTRB(), + .S_AXI_WLAST(), + .S_AXI_WVALID(), + .S_AXI_WREADY(), + .S_AXI_BID(), + .S_AXI_BRESP(), + .S_AXI_BVALID(), + .S_AXI_BREADY(), + .S_AXI_ARID(), + .S_AXI_ARADDR(), + .S_AXI_ARLEN(), + .S_AXI_ARSIZE(), + .S_AXI_ARBURST(), + .S_AXI_ARVALID(), + .S_AXI_ARREADY(), + .S_AXI_RID(), + .S_AXI_RDATA(), + .S_AXI_RRESP(), + .S_AXI_RLAST(), + .S_AXI_RVALID(), + .S_AXI_RREADY(), + .S_AXI_INJECTSBITERR(), + .S_AXI_INJECTDBITERR(), + .S_AXI_SBITERR(), + .S_AXI_DBITERR(), + .S_AXI_RDADDRECC() + ); + +// synthesis translate_on + +endmodule Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.ncf =================================================================== Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.ngc =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.ngc (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.ngc (revision 5) @@ -0,0 +1,3 @@ +XILINX-XDB 0.1 STUB 0.1 ASCII +XILINX-XDM V1.6e +$d3`44<,[o}e~g`n;"2*73>(-80!?0123456382:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789;87<4FNQWW>WC@KLK7<7>11292>LHW]]0YIJMJB=294;76380BB][[:SQWE96=87;:7<4FNQWW>WUSJ5:1<3??;08JJUSS2~oj0=4?>008770187758c3:y><=kig203)0753=0BB][[:@FGVD:4294:>6:5IORVP?GCL[H7?7>11097>LHW]]0OE]O33;2=54=32@D[YY4KIQ@?7?699;1?6D@_UU8b`atf4:0;2<<44;MVPUSS2ME[M1=50?31?10>586?2>1CXZ_UU8Q@DBCZLIH0>4?>078144=AGZ^X7JFN@>654<768?09<<5IORVP?BNFK6>=<4?>078144=AGZ^X7jfn`>654<768=09<<5OTVSQQ:1<23>36:3E^X][[:EMVPG:2980;2<945009KPRW]]0ocxzn<432>586:2?<6D@_UU8TAD:2>3:5=?5:7;KMTPR=_LH79;4?>008=?OIX\^1MIJ]A=:94;75300BB][[:@FGVG:?29437LJKR@>3:==FLMXJ0<07;@FGVD:56h1JHI\N<283:==FLMXJ0>07;@FGVD:3611JHI\N<4<;?DBCZH6=255NDEPB828f3HNO^L27:1<;?DBCZH63255NDEPA858?3HNO^O2>>99B@ATE4;4j7LJKRC>0>58?3HNO^O2<>99B@ATE4=437LJKRC>6:==FLMXI0;07;@FGVG:06h1JHI\M<983:==FLMXI050<;@NO53=EEDUBBKAPAEFQAVUXZHDLI55MUR]JJCI6:2ICINEPLHAFJVCX\PZN86MCK148GIM609<0OAE=7178GIM5P11H@F0OAEN5:AOOD703JF@M1H@FO>D968GIME=2IGGO?:;BNHG43EKCM\THDXFDD78GIMAP11H@FHW192:?FIJE@^_II?;;BMQAZABFLXJXDAA_HLEK2=DZLK_II94DCKWAWT13MCJ0=08;EKB8469?2NBM1?>>69GMD:6:7=0HDO312<4?AOF48>5;6JFA=36:2=CAH6::394DHC?52803MCJ0<617:FJE97>6?1OEL2>>69GMD:587=0HDO320<4?AOF4;85;6JFA=00:2=CAH698394DHC?60803MCJ0?817:FJE9406>1OEL2=8?58@LG;:04=7IGN<3<4?AOF4::556JFA=12>5803MCJ0>?16:FJE959>2NBM1:16:FJE939>2NBM1816:FJE919>2NBM1616:FJE9?9>2NBN1>17:FJF9776>1OEO2>1?58@LD;9;4<7IGM<01=3>BNJ5;?2:5KIC>21;169GMG:617<0HDL31?58@LD;:94<7IGM<33=3>BNJ5892:5KIC>17;1908;EKA8739?2NBN1<9>69GMG:5?7=0HDL329<4?AOE4;35:6JFB=0=3>BNJ59;245KIC>05?69?2NBN1=>>79GMG:46?1OEO2;>79GMG:26?1OEO29>79GMG:06?1OEO27>79GMG:>6>1OECO30?;8@LHF48:;245KIOC?557912NBBL2>03<:?AOII5;;?374DHLB8463601OECO3117==>BNFH6:<;06;EKME977?730HD@N<02;:<=CAGK7==718:FJJD:68730HD@N<033:<=CAGK7=89GMKG;98?556JFN@>2538>3MCEM1?>7?;8@LHF48;3245KIOC?54?902NBBL2>1?;8@LHF488;245KIOC?577912NBBL2>23<:?AOII5;9?374DHLB8443601OECO3137==>BNFH6:>;06;EKME975?730HD@N<00;:<=CAGK7=?718:FJJD:6:730HD@N<013:<=CAGK7=>?19:FJJD:6;;427IGAA=307;?89GMKG;9:?556JFN@>2738>3MCEM1?<7?;8@LHF4893245KIOC?56?902NBBL2>3?;8@LHF48>;245KIOC?517912NBBL2>43<:?AOII5;??374DHLB8423601OECO3157==>BNFH6:8;06;EKME973?730HD@N<06;:<=CAGK7=9718:FJJD:6<730HD@N<073:<=CAGK7=8?19:FJJD:6=;427IGAA=367;?89GMKG;92138>3MCEM1?:7?;8@LHF48?3245KIOC?50?902NBBL2>5?;8@LHF48<;245KIOC?537912NBBL2>63<:?AOII5;=?374DHLB8403601OECO3177==>BNFH6::;06;EKME971?730HD@N<04;:<=CAGK7=;718:FJJD:6>730HD@N<053:<=CAGK7=:?19:FJJD:6?;427IGAA=347;?89GMKG;9>?556JFN@>2338>3MCEM1?87?;8@LHF48=3245KIOC?52?902NBBL2>7?;8@LHF482;245KIOC?5=7912NBBL2>83<:?AOII5;3?374DHLB84>3601OECO3197==>BNFH6:4;06;EKME97??730HD@N<0:;:<=CAGK7=5718:FJJD:60730HD@N<0;3:<=CAGK7=4?19:FJJD:61;427IGAA=3:7;?89GMKG;90?556JFN@>2=38>3MCEM1?67?;8@LHF4833245KIOC?59?58@LHF48427IGAA=034;?>>89GMKG;:98556JFN@>1468>3MCEM1245KIOC?650912NBBL2=06<:?AOII58;4374DHLB876>611OECO321<:?AOII58:<374DHLB8776601OECO3200==>BNFH69=>06;EKME946<730HD@N<336:<=CAGK7><819:FJJD:59>427IGAA=02<;?99GMKG;:8427IGAA=014;?>89GMKG;:;8556JFN@>1668>3MCEM1<=4?;8@LHF4;8>245KIOC?670912NBBL2=26<:?AOII5894374DHLB874>611OECO323<:?AOII588<374DHLB8756601OECO3220==>BNFH69?>06;EKME944<730HD@N<316:<=CAGK7>>819:FJJD:5;>427IGAA=00<;?99GMKG;::427IGAA=074;?>89GMKG;:=8556JFN@>1068>3MCEM1<;4?;8@LHF4;>>245KIOC?610912NBBL2=46<:?AOII58?4374DHLB872>611OECO325<:?AOII58><374DHLB8736601OECO3240==>BNFH699>06;EKME942<730HD@N<376:<=CAGK7>8819:FJJD:5=>427IGAA=06<;?99GMKG;:<427IGAA=054;?>89GMKG;:?8556JFN@>1268>3MCEM1<94?;8@LHF4;<>245KIOC?630912NBBL2=66<:?AOII58=4374DHLB870>611OECO327<:?AOII58<<374DHLB8716601OECO3260==>BNFH69;>06;EKME940<730HD@N<356:<=CAGK7>:819:FJJD:5?>427IGAA=04<;?99GMKG;:>427IGAA=0;4;?>89GMKG;:18556JFN@>1<68>3MCEM1<74?;8@LHF4;2>245KIOC?6=0912NBBL2=86<:?AOII5834374DHLB87>>611OECO329<:?AOII582<374DHLB87?6601OECO3280==>BNFH695>06;EKME94><730HD@N<3;6:<=CAGK7>4819:FJJD:51>427IGAA=0:<;?99GMKG;:04<7IGAA=0==>BNFH68<=06;EKME9579730HD@N<221:<=CAGK7?==19:FJJD:48=427IGAA=131;?>9>89GMKG;;9=556JFN@>04=8>3MCEM1=?9?:8@LHF4::556JFN@>0558>3MCEM1=>1?;8@LHF4:;9245KIOC?745912NBBL2<15<:?AOII59:9374DHLB8671601OECO3305==>BNFH68=506;EKME9561720HD@N<23==>BNFH68>=06;EKME9559730HD@N<201:<=CAGK7??=19:FJJD:4:=427IGAA=111;?<9>89GMKG;;;=556JFN@>06=8>3MCEM1==9?:8@LHF4:8556JFN@>0758>3MCEM1=<1?;8@LHF4:99245KIOC?765912NBBL2<35<:?AOII5989374DHLB8651601OECO3325==>BNFH68?506;EKME9541720HD@N<21==>BNFH688=06;EKME9539730HD@N<261:<=CAGK7?9=19:FJJD:4<=427IGAA=171;?:9>89GMKG;;==556JFN@>00=8>3MCEM1=;9?:8@LHF4:>556JFN@>0158>3MCEM1=:1?;8@LHF4:?9245KIOC?705912NBBL2<55<:?AOII59>9374DHLB8631601OECO3345==>BNFH689506;EKME9521720HD@N<27==>BNFH68:=06;EKME9519730HD@N<241:<=CAGK7?;=19:FJJD:4>=427IGAA=151;?89>89GMKG;;?=556JFN@>02=8>3MCEM1=99?:8@LHF4:<556JFN@>0358>3MCEM1=81?;8@LHF4:=9245KIOC?725912NBBL2<75<:?AOII59<9374DHLB8611601OECO3365==>BNFH68;506;EKME9501720HD@N<25==>BNFH684=06;EKME95?9730HD@N<2:1:<=CAGK7?5=19:FJJD:40=427IGAA=1;1;?69>89GMKG;;1=556JFN@>0<=8>3MCEM1=79?:8@LHF4:2556JFN@>0=58>3MCEM1=61?;8@LHF4:39245KIOC?7<5912NBBL2<95<:?AOII5929374DHLB86?1601OECO3385==>BNFH685506;EKME95>1720HD@N<2;=3>BNFH68245KIOC?056912NBBL2;00<:?AOII5>;>374DHLB8164601OECO3416==>BNFH6?<806;EKME927>730HD@N<524:<=CAGK78=619:FJJD:380437IGAA=63:<=CAGK78<>19:FJJD:398427IGAA=626;?89GMKG;<8>556JFN@>7508>3MCEM1:>6?;8@LHF4=;<245KIOC?04>912NBBL2;18<;?AOII5>:245KIOC?076912NBBL2;20<:?AOII5>9>374DHLB8144601OECO3436==>BNFH6?>806;EKME925>730HD@N<504:<=CAGK78?619:FJJD:3:0437IGAA=61:<=CAGK78>>19:FJJD:3;8427IGAA=606;?89GMKG;<:>556JFN@>7708>3MCEM1:<6?;8@LHF4=9<245KIOC?06>912NBBL2;38<;?AOII5>8245KIOC?016912NBBL2;40<:?AOII5>?>374DHLB8124601OECO3456==>BNFH6?8806;EKME923>730HD@N<564:<=CAGK789619:FJJD:3<0437IGAA=67:<=CAGK788>19:FJJD:3=8427IGAA=666;?89GMKG;<<>556JFN@>7108>3MCEM1::6?;8@LHF4=?<245KIOC?00>912NBBL2;58<;?AOII5>>245KIOC?036912NBBL2;60<:?AOII5>=>374DHLB8104601OECO3476==>BNFH6?:806;EKME921>730HD@N<544:<=CAGK78;619:FJJD:3>0437IGAA=65:<=CAGK78:>19:FJJD:3?8427IGAA=646;?89GMKG;<>>556JFN@>7308>3MCEM1:86?;8@LHF4==<245KIOC?02>912NBBL2;78<;?AOII5><245KIOC?0=6912NBBL2;80<:?AOII5>3>374DHLB81>4601OECO3496==>BNFH6?4806;EKME92?>730HD@N<5:4:<=CAGK785619:FJJD:300437IGAA=6;:<=CAGK784>19:FJJD:318427IGAA=6:6;?89GMKG;<0>556JFN@>7=08>3MCEM1:66?;8@LHF4=3<245KIOC?0<>912NBBL2;98<;?AOII5>22:5KIOC?0;??>89GMKG;=9;556JFN@>6478>3MCEM1;?3?;8@LHF4<:?245KIOC?153912NBBL2:07<:?AOII5?;;374DHLB806?601OECO351;=<>BNFH6><374DHLB80776k1OECO350394;?>99GMKG;=8437IGAA=71:==CAGK79>07;EKME933611OECO354<;?AOII5?=255KIOC?128?3MCEM1;7>99GMKG;=04<7IGAA=7=<>BNFH6=<364DHLB837902NBBL292?:8@LHF4?9546JFN@>50;>720HD@N<75=<>BNFH6=4364DHLB83?9?2NBBL29>99GMKG;?9437IGAA=52:==CAGK7;?07;EKME914611OECO375<;?AOII5=>255KIOC?338?3MCEM198>99GMKG;?1437IGAA=5::2=CAGK7;364DHLB8=6902NBBL271?:8@LHF418546JFN@>;7;>BNFH63;364DHLB8=>902NBBL279?58@LHF41437IGAA=;3:==CAGK75<07;EKME9?5611OECO392<;?AOII53?255KIOC?=08?3MCEM179>99GMKG;1>437IGAA=;;:==CAGK75408;EKME9?9?2NBBO2?>89GMKD;99:556JFNC>2448>3MCEN1??2?;8@LHE48:8245KIO@?552912NBBO2>04<:?AOIJ5;;:374DHLA8460601OECL311:==>BNFK6:<407;EKMF977601OECL3102==>BNFK6:=<06;EKMF976:730HD@M<030:<=CAGH7=<:19:FJJG:69<427IGAB=322;?89GMKD;982556JFNC>25<8?3MCEN1?>>89GMKD;9;:556JFNC>2648>3MCEN1?=2?;8@LHE4888245KIO@?572912NBBO2>24<:?AOIJ5;9:374DHLA8440601OECL313:==>BNFK6:>407;EKMF975601OECL3122==>BNFK6:?<06;EKMF974:730HD@M<010:<=CAGH7=>:19:FJJG:6;<427IGAB=302;?89GMKD;9:2556JFNC>27<8?3MCEN1?<>89GMKD;9=:556JFNC>2048>3MCEN1?;2?;8@LHE48>8245KIO@?512912NBBO2>44<:?AOIJ5;?:374DHLA8420601OECL315:==>BNFK6:8407;EKMF973601OECL3142==>BNFK6:9<06;EKMF972:730HD@M<070:<=CAGH7=8:19:FJJG:6=<427IGAB=362;?89GMKD;9<2556JFNC>21<8?3MCEN1?:>89GMKD;9?:556JFNC>2248>3MCEN1?92?;8@LHE48<8245KIO@?532912NBBO2>64<:?AOIJ5;=:374DHLA8400601OECL317:==>BNFK6::407;EKMF971601OECL3162==>BNFK6:;<06;EKMF970:730HD@M<050:<=CAGH7=::19:FJJG:6?<427IGAB=342;?89GMKD;9>2556JFNC>23<8?3MCEN1?8>89GMKD;91:556JFNC>2<48>3MCEN1?72?;8@LHE4828245KIO@?5=2912NBBO2>84<:?AOIJ5;3:374DHLA84>0601OECL319:==>BNFK6:4407;EKMF97?601OECL3182==>BNFK6:5<06;EKMF97>:730HD@M<0;0:<=CAGH7=4:19:FJJG:61<427IGAB=3:2;?89GMKD;902556JFNC>2=<8?3MCEN1?6>69GMKD;9730HD@M<323:<=CAGH7>=?19:FJJG:58;427IGAB=037;?;>89GMKD;:9?556JFNC>1438>3MCEN1BNFK69=;06;EKMF946?730HD@M<33;:<=CAGH7><718:FJJG:59730HD@M<303:<=CAGH7>??19:FJJG:5:;427IGAB=017;?89GMKD;:;?556JFNC>1638>3MCEN1<=7?;8@LHE4;83245KIO@?67?902NBBO2=2?;8@LHE4;9;245KIO@?667912NBBO2=33<:?AOIJ588?374DHLA8753601OECL3227==>BNFK69?;06;EKMF944?730HD@M<31;:<=CAGH7>>718:FJJG:5;730HD@M<363:<=CAGH7>9?19:FJJG:5<;427IGAB=077;?89GMKD;:=?556JFNC>1038>3MCEN1<;7?;8@LHE4;>3245KIO@?61?902NBBO2=4?;8@LHE4;?;245KIO@?607912NBBO2=53<:?AOIJ58>?374DHLA8733601OECL3247==>BNFK699;06;EKMF942?730HD@M<37;:<=CAGH7>8718:FJJG:5=730HD@M<343:<=CAGH7>;?19:FJJG:5>;427IGAB=057;?89GMKD;:??556JFNC>1238>3MCEN1<97?;8@LHE4;<3245KIO@?63?902NBBO2=6?;8@LHE4;=;245KIO@?627912NBBO2=73<:?AOIJ58BNFK69;;06;EKMF940?730HD@M<35;:<=CAGH7>:718:FJJG:5?730HD@M<3:3:<=CAGH7>5?19:FJJG:50;427IGAB=0;7;?89GMKD;:1?556JFNC>1<38>3MCEN1<77?;8@LHE4;23245KIO@?6=?902NBBO2=8?;8@LHE4;3;245KIO@?6<7912NBBO2=93<:?AOIJ582?374DHLA87?3601OECL3287==>BNFK695;06;EKMF94>?730HD@M<3;;:<=CAGH7>4718:FJJG:517=0HD@M<3<:?AOIJ59;<374DHLA8666601OECL3310==>BNFK68<>06;EKMF957<730HD@M<226:<=CAGH7?=819:FJJG:48>427IGAB=13<;?>6>99GMKD;;9427IGAB=124;??>>89GMKD;;88556JFNC>0568>3MCEN1=>4?;8@LHE4:;>245KIO@?740912NBBO2<16<:?AOIJ59:4374DHLA867>611OECL330<:?AOIJ599<374DHLA8646601OECL3330==>BNFK68>>06;EKMF955<730HD@M<206:<=CAGH7??819:FJJG:4:>427IGAB=11<;?<6>99GMKD;;;427IGAB=104;?=>>89GMKD;;:8556JFNC>0768>3MCEN1=<4?;8@LHE4:9>245KIO@?760912NBBO2<36<:?AOIJ5984374DHLA865>611OECL332<:?AOIJ59?<374DHLA8626601OECL3350==>BNFK688>06;EKMF953<730HD@M<266:<=CAGH7?9819:FJJG:4<>427IGAB=17<;?:6>99GMKD;;=427IGAB=164;?;>>89GMKD;;<8556JFNC>0168>3MCEN1=:4?;8@LHE4:?>245KIO@?700912NBBO2<56<:?AOIJ59>4374DHLA863>611OECL334<:?AOIJ59=<374DHLA8606601OECL3370==>BNFK68:>06;EKMF951<730HD@M<246:<=CAGH7?;819:FJJG:4>>427IGAB=15<;?86>99GMKD;;?427IGAB=144;?9>>89GMKD;;>8556JFNC>0368>3MCEN1=84?;8@LHE4:=>245KIO@?720912NBBO2<76<:?AOIJ59<4374DHLA861>611OECL336<:?AOIJ593<374DHLA86>6601OECL3390==>BNFK684>06;EKMF95?<730HD@M<2:6:<=CAGH7?5819:FJJG:40>427IGAB=1;<;?66>99GMKD;;1427IGAB=1:4;?7>>89GMKD;;08556JFNC>0=68>3MCEN1=64?;8@LHE4:3>245KIO@?7<0912NBBO2<96<:?AOIJ5924374DHLA86?>611OECL338<4?AOIJ59556JFNC>7458>3MCEN1:?1?;8@LHE4=:9245KIO@?055912NBBO2;05<:?AOIJ5>;9374DHLA8161601OECL3415==>BNFK6?<506;EKMF9271720HD@M<52==>BNFK6?==06;EKMF9269730HD@M<531:<=CAGH78<=19:FJJG:39=427IGAB=621;?89GMKD;<8=556JFNC>75=8>3MCEN1:>9?:8@LHE4=;556JFNC>7658>3MCEN1:=1?;8@LHE4=89245KIO@?075912NBBO2;25<:?AOIJ5>99374DHLA8141601OECL3435==>BNFK6?>506;EKMF9251720HD@M<50==>BNFK6??=06;EKMF9249730HD@M<511:<=CAGH78>=19:FJJG:3;=427IGAB=601;?89GMKD;<:=556JFNC>77=8>3MCEN1:<9?:8@LHE4=9556JFNC>7058>3MCEN1:;1?;8@LHE4=>9245KIO@?015912NBBO2;45<:?AOIJ5>?9374DHLA8121601OECL3455==>BNFK6?8506;EKMF9231720HD@M<56==>BNFK6?9=06;EKMF9229730HD@M<571:<=CAGH788=19:FJJG:3==427IGAB=661;?89GMKD;<<=556JFNC>71=8>3MCEN1::9?:8@LHE4=?556JFNC>7258>3MCEN1:91?;8@LHE4=<9245KIO@?035912NBBO2;65<:?AOIJ5>=9374DHLA8101601OECL3475==>BNFK6?:506;EKMF9211720HD@M<54==>BNFK6?;=06;EKMF9209730HD@M<551:<=CAGH78:=19:FJJG:3?=427IGAB=641;?89GMKD;<>=556JFNC>73=8>3MCEN1:89?:8@LHE4==556JFNC>7<58>3MCEN1:71?;8@LHE4=29245KIO@?0=5912NBBO2;85<:?AOIJ5>39374DHLA81>1601OECL3495==>BNFK6?4506;EKMF92?1720HD@M<5:==>BNFK6?5=06;EKMF92>9730HD@M<5;1:<=CAGH784=19:FJJG:31=427IGAB=6:1;?89GMKD;<0=556JFNC>7==8>3MCEN1:69?:8@LHE4=35;6JFNC>7:<=CAGH79=>19:FJJG:288427IGAB=736;?<>89GMKD;=9>556JFNC>6408>3MCEN1;?6?;8@LHE4<:<245KIO@?15>912NBBO2:08<;?AOIJ5?;245KIO@?1469j2NBBO2:1083:<=CAGH79BNFK6>?364DHLA802902NBBO2:5?:8@LHE4<<546JFNC>63;>99GMKD;>:437IGAB=47:==CAGH7:807;EKMF901611OECL366<;?AOIJ5<3255KIO@?2<803MCEN1818:FJJG:08720HD@M<63=<>BNFK6<>364DHLA825902NBBO284?:8@LHE4>?546JFNC>42;>BNFK6<255KIO@?<58?3MCEN16>>99GMKD;0;437IGAB=:0:==CAGH74907;EKMF9>2611OECL387<;?AOIJ52<255KIO@?<=8?3MCEN166>69GMKD;0720HD@M<82=<>BNFK62=364DHLA8<4902NBBO263?:8@LHE40>546JFNC>:1;>?720HD@M<8:=<>BNFK625394DHLA8<803MC[M1>17:FJTD:66>1OE]O32?;8@LVF4:0;2:5KIQC?7;189GMUD;;3:5;6JFPC>0:3=CGH6;2:5KO@>24;169GKD:6<7=0HBO314<4?AIF48<5;6J@A=34:2=CGH6:4394DNC?5<813MEJ0<08;EMB8769?2NDM1<>>69GKD:5:7=0HBO322<4?AIF4;>5;6J@A=06:2=CGH69:394DNC?62803MEJ0?617:FLE94>6?1OCL2=>69GKD:48730HBO33083:2=CGH68=384DNC?7;01OCO2>3?58@JD;9=4<7IAM<07=3>BHJ5;=2:5KOC>23;12NDN1?17:FLF9476>1OCO2=1?58@JD;:;4<7IAM<31=3>BHJ58?2:5KOC>11;1;08;EMA8719?2NDN1<7>69GKG:517<0HBL32?58@JD;;9427IAM<2394;117:FLTD:66>1OC]O32?;8@JVF4:0;2:5KOQC?7;189GKUD;;3:5;6J@PC>0:==CG\^J0=0n;EMVPD:6894j7IAZT@>2448f3ME^XL2>030n;EMVPD:68=4j7IAZT@>2408f3ME^XL2>0724<8>3ME^XL2>0?c8@JSSI5;:<3o4DNWWE97697k0HB[[A=326;g3?c8@JSSI5;:83o4DNWWE976=7k0HB[[A=322;g7?c8@JSSI5;:43o4DNWWE9761730HB[[A=32:d=CG\^J0<`9GKPRF488:2l5KOTVB84456h1OCXZN<000:d=CG\^J0<<;>`9GKPRF488>2l5KOTVB84416h1OCXZN<004:d=CG\^J0<<7>`9GKPRF4882245KOTVB8449i2NDYYO3122=e>BH]]K7=>?1a:FLQQG;9:85m6J@UUC?5659i2NDYYO3126=e>BH]]K7=>;1a:FLQQG;9:<5m6J@UUC?5619i2NDYYO312:=e>BH]]K7=>719:FLQQG;9:4j7IAZT@>2058f3ME^XL2>402018f3ME^XL2>444j7IAZT@>20=8f3ME^XL2>48<:?AIR\H6:83o4DNWWE97287k0HB[[A=365;g?3o4DNWWE972<7k0HB[[A=361;g;3o4DNWWE97207k0HB[[A=36=;?`9GKPRF48<;2l5KOTVB84066h1OCXZN<041:d=CG\^J0<8<>`9GKPRF48`9GKPRF48<32l5KOTVB840>601OCXZN<04=e>BH]]K7=:>1a:FLQQG;9>;5m6J@UUC?5249i2NDYYO3161=e>BH]]K7=::1a:FLQQG;9>?5m6J@UUC?5209i2NDYYO3165=e>BH]]K7=:61a:FLQQG;9>3556J@UUC?528f3ME^XL2>812<68f3ME^XL2>852<28f3ME^XL2>893o4DNWWE97>;7k0HB[[A=3:0;g?7k0HB[[A=3:<;g1468f3ME^XL2=051428f3ME^XL2=091?c8@JSSI58:>3o4DNWWE946;7k0HB[[A=020;g5?c8@JSSI58::3o4DNWWE946?7k0HB[[A=02<;g9?;8@JSSI58:2l5KOTVB87476h1OCXZN<302:d=CG\^J0?<=>`9GKPRF4;882l5KOTVB87436h1OCXZN<306:d=CG\^J0?<9>`9GKPRF4;8<2l5KOTVB874?6h1OCXZN<30::<=CG\^J0?<1a:FLQQG;:::5m6J@UUC?6679i2NDYYO3220=e>BH]]K7>>=1a:FLQQG;::>5m6J@UUC?6639i2NDYYO3224=e>BH]]K7>>91a:FLQQG;::25m6J@UUC?66?912NDYYO3221078f3ME^XL2=421038f3ME^XL2=4610;g=3o4DNWWE942:7k0HB[[A=067;g93o4DNWWE942>7k0HB[[A=063;g5374DNWWE9426h1OCXZN<343:d=CG\^J0?8>>`9GKPRF4;<92l5KOTVB87046h1OCXZN<347:d=CG\^J0?8:>`9GKPRF4;<=2l5KOTVB87006h1OCXZN<34;:d=CG\^J0?86>89GKPRF4;<5m6J@UUC?6269i2NDYYO3263=e>BH]]K7>:<1a:FLQQG;:>95m6J@UUC?6229i2NDYYO3267=e>BH]]K7>:81a:FLQQG;:>=5m6J@UUC?62>9i2NDYYO326;==>BH]]K7>:0n;EMVPD:5094j7IAZT@>1<48f3ME^XL2=830n;EMVPD:50=4j7IAZT@>1<08f3ME^XL2=871<<8>3ME^XL2=8?c8@JSSI582<3o4DNWWE94>97k0HB[[A=0:6;g=7k0HB[[A=0:2;g1730HB[[A=0::==CG\^J0?0n;EMVPD:4894j7IAZT@>0448f3ME^XL2<030n;EMVPD:48=4j7IAZT@>0408f3ME^XL2<0704<8>3ME^XL2<0?c8@JSSI59:<3o4DNWWE95697k0HB[[A=126;g3?c8@JSSI59:83o4DNWWE956=7k0HB[[A=122;g7?c8@JSSI59:43o4DNWWE9561730HB[[A=12:d=CG\^J0>`9GKPRF4:8:2l5KOTVB86456h1OCXZN<200:d=CG\^J0><;>`9GKPRF4:8>2l5KOTVB86416h1OCXZN<204:d=CG\^J0><7>`9GKPRF4:82245KOTVB8649i2NDYYO3322=e>BH]]K7?>?1a:FLQQG;;:85m6J@UUC?7659i2NDYYO3326=e>BH]]K7?>;1a:FLQQG;;:<5m6J@UUC?7619i2NDYYO332:=e>BH]]K7?>719:FLQQG;;:4j7IAZT@>0058f3ME^XL2<400018f3ME^XL2<444j7IAZT@>00=8f3ME^XL2<48<:?AIR\H6883o4DNWWE95287k0HB[[A=165;g?3o4DNWWE952<7k0HB[[A=161;g;3o4DNWWE95207k0HB[[A=16=;?`9GKPRF4:<;2l5KOTVB86066h1OCXZN<241:d=CG\^J0>8<>`9GKPRF4:88>`9GKPRF4:<32l5KOTVB860>601OCXZN<24=e>BH]]K7?:>1a:FLQQG;;>;5m6J@UUC?7249i2NDYYO3361=e>BH]]K7?::1a:FLQQG;;>?5m6J@UUC?7209i2NDYYO3365=e>BH]]K7?:61a:FLQQG;;>3556J@UUC?728f3ME^XL2<810<68f3ME^XL2<850<28f3ME^XL2<893o4DNWWE95>;7k0HB[[A=1:0;g?7k0HB[[A=1:<;g7468f3ME^XL2;057428f3ME^XL2;091?c8@JSSI5>:>3o4DNWWE926;7k0HB[[A=620;g5?c8@JSSI5>::3o4DNWWE926?7k0HB[[A=62<;g9?;8@JSSI5>:2l5KOTVB81476h1OCXZN<502:d=CG\^J09<=>`9GKPRF4=882l5KOTVB81436h1OCXZN<506:d=CG\^J09<9>`9GKPRF4=8<2l5KOTVB814?6h1OCXZN<50::<=CG\^J09<1a:FLQQG;<::5m6J@UUC?0679i2NDYYO3420=e>BH]]K78>=1a:FLQQG;<:>5m6J@UUC?0639i2NDYYO3424=e>BH]]K78>91a:FLQQG;<:25m6J@UUC?06?912NDYYO3427078f3ME^XL2;427038f3ME^XL2;4670;g>=3o4DNWWE922:7k0HB[[A=667;g>93o4DNWWE922>7k0HB[[A=663;g>5374DNWWE9226h1OCXZN<543:d=CG\^J098>>`9GKPRF4=<92l5KOTVB81046h1OCXZN<547:d=CG\^J098:>`9GKPRF4=<=2l5KOTVB81006h1OCXZN<54;:d=CG\^J0986>89GKPRF4=<5m6J@UUC?0269i2NDYYO3463=e>BH]]K78:<1a:FLQQG;<>95m6J@UUC?0229i2NDYYO3467=e>BH]]K78:81a:FLQQG;<>=5m6J@UUC?02>9i2NDYYO346;==>BH]]K78:0n;EMVPD:3094j7IAZT@>7<48f3ME^XL2;830n;EMVPD:30=4j7IAZT@>7<08f3ME^XL2;877<<8>3ME^XL2;8?c8@JSSI5>2<3o4DNWWE92>97k0HB[[A=6:6;g283o4DNWWE92>=7k0HB[[A=6:2;g243o4DNWWE92>1730HB[[A=6::==CG\^J090n;EMVPD:2894j7IAZT@>6448f3ME^XL2:03<>0n;EMVPD:28=4j7IAZT@>6408f3ME^XL2:07<:0n;EMVPD:2814j7IAZT@>64<8>3ME^XL2:0?c8@JSSI5?:<3m4DNWWE93693:5m6J@UUC?147912NDYYO350<:?AIR\H6>>374DNWWE934601OCXZN<46==>BH]]K79806;EMVPD:2>730HB[[A=74:<=CG\^J08619:FLQQG;=0437IAZT@>6:<=CG\^J0;>19:FLQQG;>8427IAZT@>56;?89GKPRF4?>556J@UUC?208>3ME^XL296?;8@JSSI5<<245KOTVB83>912NDYYO368<;?AIR\H6=245KOTVB826912NDYYO370<:?AIR\H6<>374DNWWE914601OCXZN<66==>BH]]K7;806;EMVPD:0>730HB[[A=54:<=CG\^J0:619:FLQQG;?0437IAZT@>4:<=CG\^J05>19:FLQQG;08427IAZT@>;6;?89GKPRF41>556J@UUC?<08>3ME^XL276?;8@JSSI52<245KOTVB8=>912NDYYO388<;?AIR\H63245KOTVB8<6912NDYYO390<:?AIR\H62>374DNWWE9?4601OCXZN<86==>BH]]K75806;EMVPD:>>730HB[[A=;4:<=CG\^J04619:FLQQG;10437IAZT@>::==CG\^I0=0n;EMVPG:6894j7IAZTC>2448f3ME^XO2>030n;EMVPG:68=4j7IAZTC>2408f3ME^XO2>0724<8>3ME^XO2>0?c8@JSSJ5;:<3o4DNWWF97697k0HB[[B=326;g3?c8@JSSJ5;:83o4DNWWF976=7k0HB[[B=322;g7?c8@JSSJ5;:43o4DNWWF9761730HB[[B=32:d=CG\^I0<`9GKPRE488:2l5KOTVA84456h1OCXZM<000:d=CG\^I0<<;>`9GKPRE488>2l5KOTVA84416h1OCXZM<004:d=CG\^I0<<7>`9GKPRE4882245KOTVA8449i2NDYYL3122=e>BH]]H7=>?1a:FLQQD;9:85m6J@UU@?5659i2NDYYL3126=e>BH]]H7=>;1a:FLQQD;9:<5m6J@UU@?5619i2NDYYL312:=e>BH]]H7=>719:FLQQD;9:4j7IAZTC>2058f3ME^XO2>402018f3ME^XO2>444j7IAZTC>20=8f3ME^XO2>48<:?AIR\K6:83o4DNWWF97287k0HB[[B=365;g?3o4DNWWF972<7k0HB[[B=361;g;3o4DNWWF97207k0HB[[B=36=;?`9GKPRE48<;2l5KOTVA84066h1OCXZM<041:d=CG\^I0<8<>`9GKPRE48`9GKPRE48<32l5KOTVA840>601OCXZM<04=e>BH]]H7=:>1a:FLQQD;9>;5m6J@UU@?5249i2NDYYL3161=e>BH]]H7=::1a:FLQQD;9>?5m6J@UU@?5209i2NDYYL3165=e>BH]]H7=:61a:FLQQD;9>3556J@UU@?528f3ME^XO2>812<68f3ME^XO2>852<28f3ME^XO2>893o4DNWWF97>;7k0HB[[B=3:0;g?7k0HB[[B=3:<;g1468f3ME^XO2=051428f3ME^XO2=091?c8@JSSJ58:>3o4DNWWF946;7k0HB[[B=020;g5?c8@JSSJ58::3o4DNWWF946?7k0HB[[B=02<;g9?;8@JSSJ58:2l5KOTVA87476h1OCXZM<302:d=CG\^I0?<=>`9GKPRE4;882l5KOTVA87436h1OCXZM<306:d=CG\^I0?<9>`9GKPRE4;8<2l5KOTVA874?6h1OCXZM<30::<=CG\^I0?<1a:FLQQD;:::5m6J@UU@?6679i2NDYYL3220=e>BH]]H7>>=1a:FLQQD;::>5m6J@UU@?6639i2NDYYL3224=e>BH]]H7>>91a:FLQQD;::25m6J@UU@?66?912NDYYL3221078f3ME^XO2=421038f3ME^XO2=4610;g=3o4DNWWF942:7k0HB[[B=067;g93o4DNWWF942>7k0HB[[B=063;g5374DNWWF9426h1OCXZM<343:d=CG\^I0?8>>`9GKPRE4;<92l5KOTVA87046h1OCXZM<347:d=CG\^I0?8:>`9GKPRE4;<=2l5KOTVA87006h1OCXZM<34;:d=CG\^I0?86>89GKPRE4;<5m6J@UU@?6269i2NDYYL3263=e>BH]]H7>:<1a:FLQQD;:>95m6J@UU@?6229i2NDYYL3267=e>BH]]H7>:81a:FLQQD;:>=5m6J@UU@?62>9i2NDYYL326;==>BH]]H7>:0n;EMVPG:5094j7IAZTC>1<48f3ME^XO2=830n;EMVPG:50=4j7IAZTC>1<08f3ME^XO2=871<<8>3ME^XO2=8?c8@JSSJ582<3o4DNWWF94>97k0HB[[B=0:6;g=7k0HB[[B=0:2;g1730HB[[B=0::==CG\^I0?0n;EMVPG:4894j7IAZTC>0448f3ME^XO2<030n;EMVPG:48=4j7IAZTC>0408f3ME^XO2<0704<8>3ME^XO2<0?c8@JSSJ59:<3o4DNWWF95697k0HB[[B=126;g3?c8@JSSJ59:83o4DNWWF956=7k0HB[[B=122;g7?c8@JSSJ59:43o4DNWWF9561730HB[[B=12:d=CG\^I0>`9GKPRE4:8:2l5KOTVA86456h1OCXZM<200:d=CG\^I0><;>`9GKPRE4:8>2l5KOTVA86416h1OCXZM<204:d=CG\^I0><7>`9GKPRE4:82245KOTVA8649i2NDYYL3322=e>BH]]H7?>?1a:FLQQD;;:85m6J@UU@?7659i2NDYYL3326=e>BH]]H7?>;1a:FLQQD;;:<5m6J@UU@?7619i2NDYYL332:=e>BH]]H7?>719:FLQQD;;:4j7IAZTC>0058f3ME^XO2<400018f3ME^XO2<444j7IAZTC>00=8f3ME^XO2<48<:?AIR\K6883o4DNWWF95287k0HB[[B=165;g?3o4DNWWF952<7k0HB[[B=161;g;3o4DNWWF95207k0HB[[B=16=;?`9GKPRE4:<;2l5KOTVA86066h1OCXZM<241:d=CG\^I0>8<>`9GKPRE4:88>`9GKPRE4:<32l5KOTVA860>601OCXZM<24=e>BH]]H7?:>1a:FLQQD;;>;5m6J@UU@?7249i2NDYYL3361=e>BH]]H7?::1a:FLQQD;;>?5m6J@UU@?7209i2NDYYL3365=e>BH]]H7?:61a:FLQQD;;>3556J@UU@?728f3ME^XO2<810<68f3ME^XO2<850<28f3ME^XO2<893o4DNWWF95>;7k0HB[[B=1:0;g?7k0HB[[B=1:<;g7468f3ME^XO2;057428f3ME^XO2;091?c8@JSSJ5>:>3o4DNWWF926;7k0HB[[B=620;g5?c8@JSSJ5>::3o4DNWWF926?7k0HB[[B=62<;g9?;8@JSSJ5>:2l5KOTVA81476h1OCXZM<502:d=CG\^I09<=>`9GKPRE4=882l5KOTVA81436h1OCXZM<506:d=CG\^I09<9>`9GKPRE4=8<2l5KOTVA814?6h1OCXZM<50::<=CG\^I09<1a:FLQQD;<::5m6J@UU@?0679i2NDYYL3420=e>BH]]H78>=1a:FLQQD;<:>5m6J@UU@?0639i2NDYYL3424=e>BH]]H78>91a:FLQQD;<:25m6J@UU@?06?912NDYYL3427078f3ME^XO2;427038f3ME^XO2;4670;g>=3o4DNWWF922:7k0HB[[B=667;g>93o4DNWWF922>7k0HB[[B=663;g>5374DNWWF9226h1OCXZM<543:d=CG\^I098>>`9GKPRE4=<92l5KOTVA81046h1OCXZM<547:d=CG\^I098:>`9GKPRE4=<=2l5KOTVA81006h1OCXZM<54;:d=CG\^I0986>89GKPRE4=<5m6J@UU@?0269i2NDYYL3463=e>BH]]H78:<1a:FLQQD;<>95m6J@UU@?0229i2NDYYL3467=e>BH]]H78:81a:FLQQD;<>=5m6J@UU@?02>9i2NDYYL346;==>BH]]H78:0n;EMVPG:3094j7IAZTC>7<48f3ME^XO2;830n;EMVPG:30=4j7IAZTC>7<08f3ME^XO2;877<<8>3ME^XO2;8?c8@JSSJ5>2<3o4DNWWF92>97k0HB[[B=6:6;g283o4DNWWF92>=7k0HB[[B=6:2;g243o4DNWWF92>1730HB[[B=6::==CG\^I090n;EMVPG:2894j7IAZTC>6448f3ME^XO2:03<>0n;EMVPG:28=4j7IAZTC>6408f3ME^XO2:07<:0n;EMVPG:2814j7IAZTC>64<8>3ME^XO2:0?c8@JSSJ5?:<3m4DNWWF93693:5m6J@UU@?147912NDYYL350<:?AIR\K6>>374DNWWF934601OCXZM<46==>BH]]H79806;EMVPG:2>730HB[[B=74:<=CG\^I08619:FLQQD;=0437IAZTC>6:<=CG\^I0;>19:FLQQD;>8427IAZTC>56;?89GKPRE4?>556J@UU@?208>3ME^XO296?;8@JSSJ5<<245KOTVA83>912NDYYL368<;?AIR\K6=245KOTVA826912NDYYL370<:?AIR\K6<>374DNWWF914601OCXZM<66==>BH]]H7;806;EMVPG:0>730HB[[B=54:<=CG\^I0:619:FLQQD;?0437IAZTC>4:<=CG\^I05>19:FLQQD;08427IAZTC>;6;?89GKPRE41>556J@UU@?<08>3ME^XO276?;8@JSSJ52<245KOTVA8=>912NDYYL388<;?AIR\K63245KOTVA8<6912NDYYL390<:?AIR\K62>374DNWWF9?4601OCXZM<86==>BH]]H75806;EMVPG:>>730HB[[B=;4:<=CG\^I04619:FLQQD;10437IAZTC>::6=BFH90ICL>;F18CKB?3@DBX]Q?099JJLRWW9;37D@FTQ]36==NF@^[S==7;HLJPUY7<11BBDZ__17;?LHN\YU;:55FNHVS[5103@DBXR>?7:KMMQY79>1BBDZP0358MKOSW99<7D@FT^273>OIA]U;9:5FNHV\4311BBDZP1358MKOSW89<7D@FT^373>OIA]U:9:5FNHV\531969JJLRX9H=0ECG[_0@4?LHN\V;H;6GAIU]2@2=NF@^T=H94IOKW[4@03@DBXR1BBDZP2358MKOSW;9<7D@FT^073>OIA]U99:5FNHV\631H94IOKW[7@03@DBXR=?7:KMMQY49>1BBDZP3358MKOSW:9<7D@FT^173>OIA]U89:5FNHV\73198;HLJPZ5??2CEEYQ<969JJLRX;H=0ECG[_2@4?LHN\V9H;6GAIU]0@2=NF@^T?H94IOKW[6@13@DBXRO9;HLJPZDc3@DAINZKBHVFVWbV):1roSA:4P@PWe>VNFVH^_DJWb:RJJZDR[GKFI;5_SEMMA`=UIDH::R]<6^Q02f=ULHNO^HML<1<`?WBFLMXNON2>>b9Q@DBCZLIH0?0j;SFB@ATBKJ686=0l;SFB@ATBKJ682l5]E@F\BLTT\k1YIJMJA=294;?c9QABEBJ5:1<374RDE@AG:7601Y_YO30;2=3>TT\H6;245]SU@?4?69?2XXXO2?>69PFLRBZ[;:7^F]EF]F\QTFK]UEKNk4SIPFCZKNFVYBVH?<;RKN[FIKD@YBCCQLHDAH2>UH][IN;6]]V@N\E2=TZ_KGSO:4SRPB0>UTZK<0_YO[UR68P\VB<81^<"v|t^`ooZkbeVmnbh|ntnp,ckgsaoiaj aaukuaZdkcVgnaRijn.tbhlb)kz~yo6[\ES]UMVOEDL90ZNM6;WKFSZR^XL90[HO9;VGB85803^OJ0<>17:UFE9766>1\IL2>2?58S@G;9:4<7ZKN<06=3>QBI5;>2:5XE@>22;1<_LK7=:08;VGB84>9?2]NM1?6>79TAD:66>1\IL2=0?58S@G;:84<7ZKN<30=3>QBI5882:5XE@>10;1<_LK7>808;VGB8709?2]NM1<8>69TAD:507=0[HO328<5?RCF4;4<7ZKN<22=3>QBI59:2:5XE@>06;1<_LK7?>08;VGB8629?2]NM1=:>69TAD:4>7=0[HO336<4?RCF4:25;6YJA=1::3=PMH682:5XE@>74;1<_LK78<08;VGB8149?2]NM1:<>69TAD:3<7=0[HO344<4?RCF4=<5;6YJA=64:2=PMH6?4394WDC?0<813^OJ0908;VGB8069?2]NM1;>>69TAD:2:7=0[HO352<4?RCF4<>5;6YJA=76:<=PMH6>:7>17:UFE9316?1\IL2:>79TAD:16?1\IL28>79TAD:?6?1\IL26>29TAG0<_LH7<394WD@?55803^OI01\IO2>3?58S@D;9=4<7ZKM<07=3>QBJ5;=2:5XEC>23;1<_LH7=508;VGA84?9>2]NN1?17:UFF9476>1\IO2=1?58S@D;:;4<7ZKM<31=3>QBJ58?2:5XEC>11;1<_LH7>;08;VGA8719?2]NN1<7>69TAG:517<0[HL32?58S@D;;94<7ZKM<23=3>QBJ5992:5XEC>07;1<_LH7?908;VGA8639?2]NN1=9>69TAG:4?7=0[HL339<4?RCE4:35:6YJB=1=3>QBJ5>;2:5XEC>75;1<_LH78?08;VGA8159?2]NN1:;>69TAG:3=7=0[HL347<4?RCE4==5;6YJB=6;:2=PMK6?5384WD@?0;1<_LH79=08;VGA8079?2]NN1;=>69TAG:2;7=0[HL355<4?RCE45803^OI08816:UFF939>2]NN1816:UFF919>2]NN1616:UFF9?9k2]YEYKPMNFF[De<_[C_IRC@DD]A5a=_AECET VKB!2-5%US]K*;"<.NSBKJ2>^T\ECI;6V\T^EM@2=_[]U]ONl4X^ALV@YNFOE=7Ujm_Hfe?]boWYxba[k}shmm55=_ldUFmga}Vdppmjh682RoaRCfnnpUawungg90T~z<;Xgp<>gcl{k7<364aefqe97902koho32?c8eabui591<364aefqe959911i`fQbel]dakY`mgoyenQlsup2<>dkcVgnaRijn^rqmhYpam~cS8:`ooZkbeVmnbR~}il]tmaroW<;37obd_lgn[bciWyxbaRyfduj\24>:h6lck^ofiZabfVzye`Qxr`rsawYt;V?:h6lck^ofiZabfVzye`Qxr`rsawYt;V<:h6lck^ofiZabfVzye`Qxr`rsawYt;V=:h6lck^ofiZabfVzye`Qxr`rsawYt;V2m7obd_lgn[bciW}e{==5mlj]nahY`mgU};R?=c:`ooZkbeVmnbRx8_0.#\ljnfq*HC_K/Gdlfvdrhz);?"??;;cnh[hcjWnoeS{9P1^zpp452-a\v`gcW~coxeQm=431(fYu{}U{~da}iu{\e8EB$jUyyQrhmqmqXj4IN nQ}su]w}uc:[PDH nQ}supbiZg:8%iT~~z}al]a95*dWzcfSnaclhqjkkYd`li`1LBC,b]vw`Yeq}oT{ho20-a\qvcXjp~nSzkm=1.`[pubWmommxb{_ecwe86+kVxiRklc<2/gZstmVydjyklc<2/gZqbiV}bhyf21-a\s`dX`nd0?#c^uqmqcXllzdRo217.`[rtn|lUoi}zg_c?22)eX{ciRc`dd]b9WCFLVLB^^Z#c^uqmqcXefnnSo3XRHVF[COU[]&hSz|ftd]tmaroWh7>=?"l_vpjp`Ypam~cSo3:13.`[}bb~`injlcflx?ptdtsig9nqU: vs;;bnhe2=cagk7<374dhlb8467601oeco3113==>bnfh6:7>89gmkg;993546jfn`>24;?89gmkg;98;556jfn`>2578>3mcem1?>3?;8`lhf48;?245kioc?543912nbbl2>17<:?aoii5;:;374dhlb847?601oeco310;=<>bnfh6:=374dhlb8447601oeco3133==>bnfh6:>?06;ekme975;730hd`n<007:<=cagk7=?;19:fjjd:6:?427igaa=313;?89gmkg;9;3546jfn`>26;?89gmkg;9:;556jfn`>2778>3mcem1?<3?;8`lhf489?245kioc?563912nbbl2>37<:?aoii5;8;374dhlb845?601oeco312;=<>bnfh6:?374dhlb8427601oeco3153==>bnfh6:8?06;ekme973;730hd`n<067:<=cagk7=9;19:fjjd:689gmkg;9=3546jfn`>20;?89gmkg;9<;556jfn`>2178>3mcem1?:3?;8`lhf48??245kioc?503912nbbl2>57<:?aoii5;>;374dhlb843?601oeco314;=<>bnfh6:9374dhlb8407601oeco3173==>bnfh6::?06;ekme971;730hd`n<047:<=cagk7=;;19:fjjd:6>?427igaa=353;?89gmkg;9?3546jfn`>22;?89gmkg;9>;556jfn`>2378>3mcem1?83?;8`lhf48=?245kioc?523912nbbl2>77<:?aoii5;<;374dhlb841?601oeco316;=<>bnfh6:;374dhlb84>7601oeco3193==>bnfh6:4?06;ekme97?;730hd`n<0:7:<=cagk7=5;19:fjjd:60?427igaa=3;3;?89gmkg;913546jfn`>2<;?89gmkg;90;556jfn`>2=78>3mcem1?63?;8`lhf483?245kioc?5<3912nbbl2>97<:?aoii5;2;374dhlb84??601oeco318;=<>bnfh6:5394dhlb848>3mcem1bnfh69<:06;ekme9470730hd`n<32::==cagk7>=06;ekme9468730hd`n<332:<=cagk7><<19:fjjd:59:427igaa=020;?89gmkg;:8<556jfn`>1528>3mcem1<>8?;8`lhf4;;2255kioc?648>3mcem1<=0?;8`lhf4;8:245kioc?674912nbbl2=22<:?aoii5898374dhlb8742601oeco3234==>bnfh69>:06;ekme9450730hd`n<30::==cagk7>?06;ekme9448730hd`n<312:<=cagk7>><19:fjjd:5;:427igaa=000;?89gmkg;::<556jfn`>1728>3mcem1<<8?;8`lhf4;92255kioc?668>3mcem1<;0?;8`lhf4;>:245kioc?614912nbbl2=42<:?aoii58?8374dhlb8722601oeco3254==>bnfh698:06;ekme9430730hd`n<36::==cagk7>906;ekme9428730hd`n<372:<=cagk7>8<19:fjjd:5=:427igaa=060;?89gmkg;:<<556jfn`>1128>3mcem1<:8?;8`lhf4;?2255kioc?608>3mcem1<90?;8`lhf4;<:245kioc?634912nbbl2=62<:?aoii58=8374dhlb8702601oeco3274==>bnfh69::06;ekme9410730hd`n<34::==cagk7>;06;ekme9408730hd`n<352:<=cagk7>:<19:fjjd:5?:427igaa=040;?89gmkg;:><556jfn`>1328>3mcem1<88?;8`lhf4;=2255kioc?628>3mcem1<70?;8`lhf4;2:245kioc?6=4912nbbl2=82<:?aoii5838374dhlb87>2601oeco3294==>bnfh694:06;ekme94?0730hd`n<3:::==cagk7>506;ekme94>8730hd`n<3;2:<=cagk7>4<19:fjjd:51:427igaa=0:0;?89gmkg;:0<556jfn`>1=28>3mcem1<68?;8`lhf4;32255kioc?6<803mcem1<19:fjjd:489427igaa=135;?>=>89gmkg;;99556jfn`>0418>3mcem1=?5?;8`lhf4::=245kioc?751912nbbl2<09<:?aoii59;5364dhlb866912nbbl2<11<:?aoii59:=374dhlb8675601oeco3301==>bnfh68=906;ekme956=730hd`n<235:<=cagk7?<919:fjjd:491427igaa=12=;>?19:fjjd:4:9427igaa=115;?<=>89gmkg;;;9556jfn`>0618>3mcem1==5?;8`lhf4:8=245kioc?771912nbbl2<29<:?aoii5995364dhlb864912nbbl2<31<:?aoii598=374dhlb8655601oeco3321==>bnfh68?906;ekme954=730hd`n<215:<=cagk7?>919:fjjd:4;1427igaa=10=;>=19:fjjd:4<9427igaa=175;?:=>89gmkg;;=9556jfn`>0018>3mcem1=;5?;8`lhf4:>=245kioc?711912nbbl2<49<:?aoii59?5364dhlb862912nbbl2<51<:?aoii59>=374dhlb8635601oeco3341==>bnfh689906;ekme952=730hd`n<275:<=cagk7?8919:fjjd:4=1427igaa=16=;>;19:fjjd:4>9427igaa=155;?8=>89gmkg;;?9556jfn`>0218>3mcem1=95?;8`lhf4:<=245kioc?731912nbbl2<69<:?aoii59=5364dhlb860912nbbl2<71<:?aoii59<=374dhlb8615601oeco3361==>bnfh68;906;ekme950=730hd`n<255:<=cagk7?:919:fjjd:4?1427igaa=14=;>919:fjjd:409427igaa=1;5;?6=>89gmkg;;19556jfn`>0<18>3mcem1=75?;8`lhf4:2=245kioc?7=1912nbbl2<89<:?aoii5935364dhlb86>912nbbl2<91<:?aoii592=374dhlb86?5601oeco3381==>bnfh685906;ekme95>=730hd`n<2;5:<=cagk7?4919:fjjd:411427igaa=1:=;>717:fjjd:4601oeco3412==>bnfh6?<<06;ekme927:730hd`n<520:<=cagk78=:19:fjjd:38<427igaa=632;?8>89gmkg;<92556jfn`>74<8?3mcem1:?>89gmkg;<8:556jfn`>7548>3mcem1:>2?;8`lhf4=;8245kioc?042912nbbl2;14<:?aoii5>::374dhlb8170601oeco340:==>bnfh6?=407;ekme926601oeco3432==>bnfh6?><06;ekme925:730hd`n<500:<=cagk78?:19:fjjd:3:<427igaa=612;?89gmkg;<;2556jfn`>76<8?3mcem1:=>89gmkg;<::556jfn`>7748>3mcem1:<2?;8`lhf4=98245kioc?062912nbbl2;34<:?aoii5>8:374dhlb8150601oeco342:==>bnfh6??407;ekme924601oeco3452==>bnfh6?8<06;ekme923:730hd`n<560:<=cagk789:19:fjjd:3<<427igaa=672;?89gmkg;<=2556jfn`>70<8?3mcem1:;>89gmkg;<<:556jfn`>7148>3mcem1::2?;8`lhf4=?8245kioc?002912nbbl2;54<:?aoii5>>:374dhlb8130601oeco344:==>bnfh6?9407;ekme922601oeco3472==>bnfh6?:<06;ekme921:730hd`n<540:<=cagk78;:19:fjjd:3><427igaa=652;?89gmkg;72<8?3mcem1:9>89gmkg;<>:556jfn`>7348>3mcem1:82?;8`lhf4==8245kioc?022912nbbl2;74<:?aoii5><:374dhlb8110601oeco346:==>bnfh6?;407;ekme920601oeco3492==>bnfh6?4<06;ekme92?:730hd`n<5:0:<=cagk785:19:fjjd:30<427igaa=6;2;?89gmkg;<12556jfn`>7<<8?3mcem1:7>89gmkg;<0:556jfn`>7=48>3mcem1:62?;8`lhf4=38245kioc?0<2912nbbl2;94<:?aoii5>2:374dhlb81?0601oeco348:==>bnfh6?5407;ekme92>6>1oeco34?;8`lhf4<:;245kioc?157912nbbl2:03<:?aoii5?;?374dhlb8063601oeco3517==>bnfh6><;06;ekme937?730hd`n<42;:<=cagk79=718:fjjd:28730hd`n<433:g=cagk7999gmkg;=:437igaa=77:==cagk79807;ekme931611oeco356<;?aoii5?3255kioc?1<803mcem1;18:fjjd:18720hd`n<73=<>bnfh6=>364dhlb835902nbbl294?:8`lhf4??546jfn`>52;>bnfh6=255kioc?358?3mcem19>>99gmkg;?;437igaa=50:==cagk7;907;ekme912611oeco377<;?aoii5=<255kioc?3=8?3mcem196>69gmkg;?720hd`n<92=<>bnfh63=364dhlb8=4902nbbl273?:8`lhf41>546jfn`>;1;>bnfh635394dhlb8=8?3mcem17?>99gmkg;18437igaa=;1:==cagk75>07;ekme9?3611oeco394<;?aoii53=255kioc?=28?3mcem177>99gmkg;104<7igaa=;=<>bh}}k7<3o4dnwwe97787k0hb{{a=335;g`9gkprf48;;2l5kotvb84766h1ocxzn<031:d=cg|~j0`9gkprf48;?2l5kotvb84726h1ocxzn<035:d=cg|~j0`9gkprf48;32l5kotvb847>601ocxzn<03=e>bh}}k7=?>1a:flqqg;9;;5m6j`uuc?5749i2ndyyo3131=e>bh}}k7=?:1a:flqqg;9;?5m6j`uuc?5709i2ndyyo3135=e>bh}}k7=?61a:flqqg;9;3556j`uuc?578f3me~xl2>312768f3me~xl2>352728f3me~xl2>393o4dnwwe973;7k0hb{{a=370;g`9gkprf48?82l5kotvb84336h1ocxzn<076:d=cg|~j0<;9>`9gkprf48?<2l5kotvb843?6h1ocxzn<07::<=cg|~j0<;1a:flqqg;9?:5m6j`uuc?5379i2ndyyo3170=e>bh}}k7=;=1a:flqqg;9?>5m6j`uuc?5339i2ndyyo3174=e>bh}}k7=;91a:flqqg;9?25m6j`uuc?53?912ndyyo3172378f3me~xl2>722338f3me~xl2>7623;g7k0hb{{a=3;3;g>`9gkprf48392l5kotvb84?46h1ocxzn<0;7:d=cg|~j0<7:>`9gkprf483=2l5kotvb84?06h1ocxzn<0;;:d=cg|~j0<76>89gkprf483546j`uuc?5;g7k0hb{{a=033;g>`9gkprf4;;92l5kotvb87746h1ocxzn<337:d=cg|~j0??:>`9gkprf4;;=2l5kotvb87706h1ocxzn<33;:d=cg|~j0??6>89gkprf4;;5m6j`uuc?6769i2ndyyo3233=e>bh}}k7>?<1a:flqqg;:;95m6j`uuc?6729i2ndyyo3237=e>bh}}k7>?81a:flqqg;:;=5m6j`uuc?67>9i2ndyyo323;==>bh}}k7>?0n;emvpd:5;94j7iazt`>1748f3me~xl2=330n;emvpd:5;=4j7iazt`>1708f3me~xl2=3717<8>3me~xl2=3?c8`jssi58?<3o4dnwwe94397k0hb{{a=076;g`9gkprf4;?:2l5kotvb87356h1ocxzn<370:d=cg|~j0?;;>`9gkprf4;?>2l5kotvb87316h1ocxzn<374:d=cg|~j0?;7>`9gkprf4;?2245kotvb8739i2ndyyo3272=e>bh}}k7>;?1a:flqqg;:?85m6j`uuc?6359i2ndyyo3276=e>bh}}k7>;;1a:flqqg;:?<5m6j`uuc?6319i2ndyyo327:=e>bh}}k7>;719:flqqg;:?4j7iazt`>1358f3me~xl2=701318f3me~xl2=744j7iazt`>13=8f3me~xl2=78<:?air|h69;3o4dnwwe94?87k0hb{{a=0;5;g`9gkprf4;3;2l5kotvb87?66h1ocxzn<3;1:d=cg|~j0?7<>`9gkprf4;3?2l5kotvb87?26h1ocxzn<3;5:d=cg|~j0?78>`9gkprf4;332l5kotvb87?>601ocxzn<3;=<>bh}}k7>3o4dnwwe95787k0hb{{a=135;g`9gkprf4:;;2l5kotvb86766h1ocxzn<231:d=cg|~j0>?<>`9gkprf4:;?2l5kotvb86726h1ocxzn<235:d=cg|~j0>?8>`9gkprf4:;32l5kotvb867>601ocxzn<23=e>bh}}k7??>1a:flqqg;;;;5m6j`uuc?7749i2ndyyo3331=e>bh}}k7??:1a:flqqg;;;?5m6j`uuc?7709i2ndyyo3335=e>bh}}k7??61a:flqqg;;;3556j`uuc?778f3me~xl2<310768f3me~xl2<350728f3me~xl2<393o4dnwwe953;7k0hb{{a=170;g;=>`9gkprf4:?82l5kotvb86336h1ocxzn<276:d=cg|~j0>;9>`9gkprf4:?<2l5kotvb863?6h1ocxzn<27::<=cg|~j0>;1a:flqqg;;?:5m6j`uuc?7379i2ndyyo3370=e>bh}}k7?;=1a:flqqg;;?>5m6j`uuc?7339i2ndyyo3374=e>bh}}k7?;91a:flqqg;;?25m6j`uuc?73?912ndyyo3370378f3me~xl2<720338f3me~xl2<7603;g7k0hb{{a=1;3;g7>>`9gkprf4:392l5kotvb86?46h1ocxzn<2;7:d=cg|~j0>7:>`9gkprf4:3=2l5kotvb86?06h1ocxzn<2;;:d=cg|~j0>76>89gkprf4:3546j`uuc?7;g;=3o4dnwwe927:7k0hb{{a=637;g;93o4dnwwe927>7k0hb{{a=633;g;5374dnwwe9276h1ocxzn<533:d=cg|~j09?>>`9gkprf4=;92l5kotvb81746h1ocxzn<537:d=cg|~j09?:>`9gkprf4=;=2l5kotvb81706h1ocxzn<53;:d=cg|~j09?6>89gkprf4=;5m6j`uuc?0769i2ndyyo3433=e>bh}}k78?<1a:flqqg;<;95m6j`uuc?0729i2ndyyo3437=e>bh}}k78?81a:flqqg;<;=5m6j`uuc?07>9i2ndyyo343;==>bh}}k78?0n;emvpd:3;94j7iazt`>7748f3me~xl2;330n;emvpd:3;=4j7iazt`>7708f3me~xl2;3777<8>3me~xl2;3?c8`jssi5>?<3o4dnwwe92397k0hb{{a=676;g?83o4dnwwe923=7k0hb{{a=672;g?43o4dnwwe9231730hb{{a=67:d=cg|~j09;?>`9gkprf4=?:2l5kotvb81356h1ocxzn<570:d=cg|~j09;;>`9gkprf4=?>2l5kotvb81316h1ocxzn<574:d=cg|~j09;7>`9gkprf4=?2245kotvb8139i2ndyyo3472=e>bh}}k78;?1a:flqqg;bh}}k78;;1a:flqqg;bh}}k78;719:flqqg;7358f3me~xl2;707318f3me~xl2;744j7iazt`>73=8f3me~xl2;78<:?air|h6?;3o4dnwwe92?87k0hb{{a=6;5;g3?3o4dnwwe92?<7k0hb{{a=6;1;g3;3o4dnwwe92?07k0hb{{a=6;=;?`9gkprf4=3;2l5kotvb81?66h1ocxzn<5;1:d=cg|~j097<>`9gkprf4=3?2l5kotvb81?26h1ocxzn<5;5:d=cg|~j0978>`9gkprf4=332l5kotvb81?>601ocxzn<5;=<>bh}}k783o4dnwwe93787k0hb{{a=735;g`9gkprf4<;;2n5kotvb8076294j7iazt`>6548>3me~xl2:1?;8`jssi5?9245kotvb805912ndyyo355<:?air|h6>9374dnwwe931601ocxzn<45==>bh}}k79506;emvpd:21720hb{{a=7==>bh}}k7:=06;emvpd:19730hb{{a=41:<=cg|~j0;=19:flqqg;>=427iazt`>51;?89gkprf4?=556j`uuc?2=8>3me~xl299?:8`jssi5<556j`uuc?358>3me~xl281?;8`jssi5=9245kotvb825912ndyyo375<:?air|h6<9374dnwwe911601ocxzn<65==>bh}}k7;506;emvpd:01720hb{{a=5==>bh}}k74=06;emvpd:?9730hb{{a=:1:<=cg|~j05=19:flqqg;0=427iazt`>;1;?89gkprf41=556j`uuc?<=8>3me~xl279?:8`jssi52556j`uuc?=58>3me~xl261?;8`jssi539245kotvb8<5912ndyyo395<:?air|h629374dnwwe9?1601ocxzn<85==>bh}}k75506;emvpd:>1720hb{{a=;=<>h`kkb`i<4nn0;?wgjdfe{W=S!r`o-v*u4Wgebbdz!r`o,wutfe'xja?64r`ookjv\9T$ym` }/r1\jjoia}$ym`!|pscn*wgj:11ym`b`oqY1Y+tfe'x$>Qaohljp+tfe&y{~lc!r`o1<>tfeeed|V=R.scn*w)t;Vddecg{.scn+vvuid$ym`<7;scnhjiwS=W%~lc!r.q0[kinf`~%~lc sqpbi+tfe;20~lcconrX1X(uid$y#~=Pnnkmmq(uid%x|ob.scn6==uidfdc}U9]/pbi+t({:Uecd`ft/pbi*uwzhg%~lc=8:pbiiihxR=V"ob.s-p7Zhhagc"ob/rrqeh(uid>0~~zn8:ufe96=87<0{ho30?CDu7b9>1KLuo?9;D90?7|[<:15hl595595650?k31=46k3zl:a<<63g3nm784$8g4>=i57?691d8W<5b2l:m6=4>3254f<<610;<7^:j:d2e>5<6;:=983a?ag713:1=7?tS429=`d=1==1=>=87c;95<77jb;;73?74;>=i57?691:8 <0>20>;7[7j8;0xq<26281~59<50:'=1>=m2hj<44?:524>7<381qC5;94$846>d6>3S9269u6:0195<<6k3w/5h85a178 6g=i9h0(9h5a1c8 <3c281/58m59da8m`7e290/59o5e0c8j<2>2910e4h>:18'=1g=1o:0b4:6:198m2810e4kj:18'=1g=1o:0b4:6:398m2:10eoj8:18'=1g=jm<0b4:6:198mgb2290/59o5be48j<2>2810eoj<:18'=1g=jm<0b4:6:398mgb5290/59o5be48j<2>2:10eoj>:18'=1g=jm<0b4:6:598mgb7290/59o5be48j<2>2<10eomi:18'=1g=jm<0b4:6:798mgeb290/59o5be48j<2>2>10eomk:18'=1g=jm<0b4:6:998mged290/59o5be48j<2>2010eomm:18'=1g=jm<0b4:6:`98mgef290/59o5be48j<2>2k10eom8:18'=1g=jm<0b4:6:b98mge1290/59o5be48j<2>2m10eom::18'=1g=jm<0b4:6:d98mge3290/59o5be48j<2>2o10eom<:18'=1g=jm<0b4:6:028?ldd:3:1(4:n:cf5?k?313;:76gmc083>!?3i3ho:6`648826>=njj:1<7*64`8a`3=i1=31=>54ic`e>5<#1=k1ni84n86:>42<3`hii7>5$86b>gb13g3?57?:;:kaff<72-3?m7lk6:l:0<<6>21bnol50;&:0d28207dlm9;29 <2f2kn=7c7;9;3:?>oej10;6)7;a;`g2>h><00:m65fbc594?">26j6oj9;o;7=?7c32cin94?:%;7e?dc>2d2844>e:9jfg5=83.28l4md79m=1?=9o10eol>:18'=1g=jm<0b4:6:328?lde83:1(4:n:cf5?k?3138:76gmag83>!?3i3ho:6`648816>=njho1<7*64`8a`3=i1=31>>54iccg>5<#1=k1ni84n86:>72<3`hjo7>5$86b>gb13g3?57<:;:kaeg<72-3?m7lk6:l:0<<5>21bnlo50;&:0d290/59o5be48j<2>2;207dln8;29 <2f2kn=7c7;9;0:?>oei?0;6)7;a;`g2>h><009m65fb`794?">26?m4;h`b7?6=,0>j6oj9;o;7=?4c32cim?4?:%;7e?dc>2d2844=e:9jfd7=83.28l4md79m=1?=:o10eoo?:18'=1g=jm<0b4:6:228?ld>n3:1(4:n:cf5?k?3139:76gm9d83>!?3i3ho:6`648806>=nj0n1<7*64`8a`3=i1=31?>54ic;a>5<#1=k1ni84n86:>62<3`h2m7>5$86b>gb13g3?57=:;:ka=<<72-3?m7lk6:l:0<<4>21bn4650;&:0d2:207dl66;29 <2f2kn=7c7;9;1:?>oe1<0;6)7;a;`g2>h><008m65fb8694?">26>m4;h`:6?6=,0>j6oj9;o;7=?5c32ci5=4?:%;7e?dc>2d2844:76gm8b83>!?3i3ho:6`648876>=nj1h1<7*64`8a`3=i1=318>54ic:b>5<#1=k1ni84n86:>12<3`h357>5$86b>gb13g3?57::;:ka<=<72-3?m7lk6:l:0<<3>21bn5950;&:0d2290/59o5be48j<2>2=207dl74;29 <2f2kn=7c7;9;6:?>oe0:0;6)7;a;`g2>h><00?m65fb9094?">269m4;h`;4?6=,0>j6oj9;o;7=?2c32ci;k4?:%;7e?dc>2d2844;e:9jf2c=83.28l4md79m=1?=!?3i3ho:6`648866>=nj>31<7*64`8a`3=i1=319>54ic5;>5<#1=k1ni84n86:>02<3`h<;7>5$86b>gb13g3?57;:;:ka33<72-3?m7lk6:l:0<<2>21bn:;50;&:0d2<207dl83;29 <2f2kn=7c7;9;7:?>oe?;0;6)7;a;`g2>h><00>m65fb6394?">268m4;h`5a?6=,0>j6oj9;o;7=?3c32ci:i4?:%;7e?dc>2d2844:e:9jf3e=83.28l4md79m=1?==o10eo8m:18'=1g=jm<0b4:6:728?ld1i3:1(4:n:cf5?k?313<:76gm6883>!?3i3ho:6`648856>=nj?21<7*64`8a`3=i1=31:>54ic44>5<#1=k1ni84n86:>32<3`h=:7>5$86b>gb13g3?578:;:ka21<72-3?m7lk6:l:0<<1>21bn;=50;&:0d2?207dl91;29 <2f2kn=7c7;9;4:?>oe>90;6)7;a;`g2>h><00=m65fb4d94?">26;m4;h`6`?6=,0>j6oj9;o;7=?0c32ci9n4?:%;7e?dc>2d28449e:9jf0d=83.28l4md79m=1?=>o10eo;7:18'=1g=jm<0b4:6:628?ld2?3:1(4:n:cf5?k?313=:76gm5783>!?3i3ho:6`648846>=nj54ic77>5<#1=k1ni84n86:>22<3`h>?7>5$86b>gb13g3?579:;:ka17<72-3?m7lk6:l:0<<0>21bn8?50;&:0d2>207dl;f;29 <2f2kn=7c7;9;5:?>oeh><00i6=4+95c9fa026:m4;h`7e?6=,0>j6oj9;o;7=?1c32ci844?:%;7e?dc>2d28448e:9jf1>=83.28l4md79m=1?=?o10eo:8:18'=1g=jm<0b4:6:928?ld3>3:1(4:n:cf5?k?3132:76gm4483>!?3i3ho:6`6488;6>=nj=>1<7*64`8a`3=i1=314>54ic61>5<#1=k1ni84n86:>=2<3`h?=7>5$86b>gb13g3?576:;:ka05<72-3?m7lk6:l:0<21bn>h50;&:0d21207dloe;j0;6)7;a;`g2>h><003m65fb2`94?">265m4;h`0=?6=,0>j6oj9;o;7=?>c32ci?:4?:%;7e?dc>2d28447e:9jf60=83.28l4md79m=1?=0o10eo=::18'=1g=jm<0b4:6:828?ld4<3:1(4:n:cf5?k?3133:76gm3283>!?3i3ho:6`6488:6>=nj:81<7*64`8a`3=i1=315>54ic12>5<#1=k1ni84n86:><2<3`h8<7>5$86b>gb13g3?577:;:ka6c<72-3?m7lk6:l:0<<>>21bn?k50;&:0d20207dl=b;29 <2f2kn=7c7;9;;:?>oe:h0;6)7;a;`g2>h><002m65fb3;94?">264m4;h`13?6=,0>j6oj9;o;7=??c32ci>;4?:%;7e?dc>2d28446e:9jf73=83.28l4md79m=1?=1o10eo<;:18'=1g=jm<0b4:6:`28?ld5;3:1(4:n:cf5?k?313k:76gm2083>!?3i3ho:6`6488b6>=nj;:1<7*64`8a`3=i1=31m>54ic3e>5<#1=k1ni84n86:>d2<3`h:i7>5$86b>gb13g3?57o:;:ka5a<72-3?m7lk6:l:0<21bn2h207dl>a;29 <2f2kn=7c7;9;c:?>oe900;6)7;a;`g2>h><00jm65fb0:94?">26lm4;h`21?6=,0>j6oj9;o;7=?gc32ci=94?:%;7e?dc>2d2844ne:9jf45=83.28l4md79m=1?=io10eo?=:18'=1g=jm<0b4:6:c28?ld693:1(4:n:cf5?k?313h:76gm1183>!?3i3ho:6`6488a6>=nj9l1<7*64`8a`3=i1=31n>54ic2f>5<#1=k1ni84n86:>g2<3`h;h7>5$86b>gb13g3?57l:;:ka4g<72-3?m7lk6:l:0<21bn=o50;&:0d290/59o5be48j<2>2k207dl?8;29 <2f2kn=7c7;9;`:?>oe8>0;6)7;a;`g2>h><00im65fb1494?">6=4+95c9fa026om4;h`30?6=,0>j6oj9;o;7=?dc32ci<>4?:%;7e?dc>2d2844me:9jf54=83.28l4md79m=1?=jo10eo>?:18'=1g=jm<0b4:6:b28?lgan3:1(4:n:cf5?k?313i:76gnfd83>!?3i3ho:6`6488`6>=nion1<7*64`8a`3=i1=31o>54i`d`>5<#1=k1ni84n86:>f2<3`kmn7>5$86b>gb13g3?57m:;:kbbd<72-3?m7lk6:l:0<21bmk750;&:0d2j207doi7;29 <2f2kn=7c7;9;a:?>ofn<0;6)7;a;`g2>h><00hm65fag694?">26nm4;hce6?6=,0>j6oj9;o;7=?ec32cjj<4?:%;7e?dc>2d2844le:9jec6=83.28l4md79m=1?=ko10elki:18'=1g=jm<0b4:6:e28?lgbm3:1(4:n:cf5?k?313n:76gnee83>!?3i3ho:6`6488g6>=nili1<7*64`8a`3=i1=31h>54i`g:>5<#1=k1ni84n86:>a2<3`kn47>5$86b>gb13g3?57j:;:kba2<72-3?m7lk6:l:0<21bmh850;&:0d2m207doj4;29 <2f2kn=7c7;9;f:?>ofm:0;6)7;a;`g2>h><00om65fad094?">26im4;hcf4?6=,0>j6oj9;o;7=?bc32cjhh4?:%;7e?dc>2d2844ke:9jeab=83.28l4md79m=1?=lo10eljl:18'=1g=jm<0b4:6:d28?lgcj3:1(4:n:cf5?k?313o:76gnd`83>!?3i3ho:6`6488f6>=nim31<7*64`8a`3=i1=31i>54i`f;>5<#1=k1ni84n86:>`2<3`ko;7>5$86b>gb13g3?57k:;:kb`3<72-3?m7lk6:l:0<21bmi;50;&:0d2l207dok2;29 <2f2kn=7c7;9;g:?>ofl80;6)7;a;`g2>h><00nm65fae294?">26hm4;hc`a?6=,0>j6oj9;o;7=?cc32cjoi4?:%;7e?dc>2d2844je:9jefe=83.28l4md79m=1?=mo10elmm:18'=1g=jm<0b4:6:g28?lgdi3:1(4:n:cf5?k?313l:76gnc983>!?3i3ho:6`6488e6>=nij=1<7*64`8a`3=i1=31j>54i`a5>5<#1=k1ni84n86:>c2<3`kh97>5$86b>gb13g3?57h:;:kbg1<72-3?m7lk6:l:0<21bmn=50;&:0d2o207dol1;29 <2f2kn=7c7;9;d:?>ofk90;6)7;a;`g2>h><00mm65facd94?">26km4;hcag?6=,0>j6oj9;o;7=?`c32cjno4?:%;7e?dc>2d2844ie:9jegg=83.28l4md79m=1?=no10ell6:18'=1g=jm<0b4:6:023?>ofj10;6)7;a;`g2>h><00:<<54i``4>5<#1=k1ni84n86:>46532cjn;4?:%;7e?dc>2d2844>0298mdd2290/59o5be48j<2>28:?76gnb583>!?3i3ho:6`6488240=26<>9;:kbf4<72-3?m7lk6:l:0<<68>10ell?:18'=1g=jm<0b4:6:02;?>ofio0;6)7;a;`g2>h><00:<454i`cf>5<#1=k1ni84n86:>46f32cjmi4?:%;7e?dc>2d2844>0c98mdgd290/59o5be48j<2>28:h76gnac83>!?3i3ho:6`648824a=26<>j;:kbe<<72-3?m7lk6:l:0<<68o10elo8:18'=1g=jm<0b4:6:033?>ofi?0;6)7;a;`g2>h><00:=<54i`c6>5<#1=k1ni84n86:>47532cjm94?:%;7e?dc>2d2844>1298mdg4290/59o5be48j<2>28;?76gna383>!?3i3ho:6`6488250=2610el7i:18'=1g=jm<0b4:6:03;?>of1l0;6)7;a;`g2>h><00:=454i`;`>5<#1=k1ni84n86:>47f32cj5o4?:%;7e?dc>2d2844>1c98md?f290/59o5be48j<2>28;h76gn9883>!?3i3ho:6`648825a=26of1<0;6)7;a;`g2>h><00:><54i`;7>5<#1=k1ni84n86:>44532cj5>4?:%;7e?dc>2d2844>2298md?6290/59o5be48j<2>288?76gn9183>!?3i3ho:6`6488260=26<<9;:kb<`<72-3?m7lk6:l:0<<6:>10el6k:18'=1g=jm<0b4:6:00;?>of0j0;6)7;a;`g2>h><00:>454i`:a>5<#1=k1ni84n86:>44f32cj4l4?:%;7e?dc>2d2844>2c98md>>290/59o5be48j<2>288h76gn8983>!?3i3ho:6`648826a=26<of0:0;6)7;a;`g2>h><00:?<54i`:1>5<#1=k1ni84n86:>45532cj4<4?:%;7e?dc>2d2844>3298md>7290/59o5be48j<2>289?76gn7g83>!?3i3ho:6`6488270=26<=9;:kb3a<72-3?m7lk6:l:0<<6;>10el9n:18'=1g=jm<0b4:6:01;?>of?00;6)7;a;`g2>h><00:?454i`5;>5<#1=k1ni84n86:>45f32cj;:4?:%;7e?dc>2d2844>3c98md11290/59o5be48j<2>289h76gn7483>!?3i3ho:6`648827a=26<=j;:kb36<72-3?m7lk6:l:0<<6;o10el9=:18'=1g=jm<0b4:6:063?>of?80;6)7;a;`g2>h><00:8<54i`4e>5<#1=k1ni84n86:>42532cj:h4?:%;7e?dc>2d2844>4298md0c290/59o5be48j<2>28>?76gn6b83>!?3i3ho:6`6488200=26<:9;:kb2d<72-3?m7lk6:l:0<<6<>10el86:18'=1g=jm<0b4:6:06;?>of>10;6)7;a;`g2>h><00:8454i`44>5<#1=k1ni84n86:>42f32cj:;4?:%;7e?dc>2d2844>4c98md03290/59o5be48j<2>28>h76gn6283>!?3i3ho:6`648820a=26<:j;:kb24<72-3?m7lk6:l:0<<6of=o0;6)7;a;`g2>h><00:9<54i`7f>5<#1=k1ni84n86:>43532cj9i4?:%;7e?dc>2d2844>5298md3d290/59o5be48j<2>28??76gn5c83>!?3i3ho:6`6488210=26<;9;:kb1=<72-3?m7lk6:l:0<<6=>10el;8:18'=1g=jm<0b4:6:07;?>of=?0;6)7;a;`g2>h><00:9454i`76>5<#1=k1ni84n86:>43f32cj994?:%;7e?dc>2d2844>5c98md34290/59o5be48j<2>28?h76gn5383>!?3i3ho:6`648821a=26<;j;:kb15<72-3?m7lk6:l:0<<6=o10el:j:18'=1g=jm<0b4:6:043?>ofh><00::<54i`6`>5<#1=k1ni84n86:>40532cj8o4?:%;7e?dc>2d2844>6298md2f290/59o5be48j<2>28!?3i3ho:6`6488220=36=4+95c9fa026<89;:kb02<72-3?m7lk6:l:0<<6>>10el:9:18'=1g=jm<0b4:6:04;?>of<<0;6)7;a;`g2>h><00::454i`60>5<#1=k1ni84n86:>40f32cj8?4?:%;7e?dc>2d2844>6c98md26290/59o5be48j<2>28!?3i3ho:6`648822a=26<8j;:kb7`<72-3?m7lk6:l:0<<6>o10el=k:18'=1g=jm<0b4:6:053?>of;j0;6)7;a;`g2>h><00:;<54i`1a>5<#1=k1ni84n86:>41532cj?l4?:%;7e?dc>2d2844>7298md5?290/59o5be48j<2>28=?76gn3683>!?3i3ho:6`6488230=26<99;:kb70<72-3?m7lk6:l:0<<6?>10el=;:18'=1g=jm<0b4:6:05;?>of;:0;6)7;a;`g2>h><00:;454i`11>5<#1=k1ni84n86:>41f32cj?<4?:%;7e?dc>2d2844>7c98md57290/59o5be48j<2>28=h76gn2g83>!?3i3ho:6`648823a=26<9j;:kb6f<72-3?m7lk6:l:0<<6?o10elof:h0;6)7;a;`g2>h><00:4<54i`0:>5<#1=k1ni84n86:>4>532cj>54?:%;7e?dc>2d2844>8298md40290/59o5be48j<2>282?76gn2783>!?3i3ho:6`64882<0=6=4+95c9fa026<69;:kb61<72-3?m7lk6:l:0<<60>10el<=:18'=1g=jm<0b4:6:0:;?>of:80;6)7;a;`g2>h><00:4454i`03>5<#1=k1ni84n86:>4>f32cj=k4?:%;7e?dc>2d2844>8c98md7b290/59o5be48j<2>282h76gn1e83>!?3i3ho:6`6488226<6j;:kb5g<72-3?m7lk6:l:0<<60o10el?n:18'=1g=jm<0b4:6:0;3?>of900;6)7;a;`g2>h><00:5<54i`34>5<#1=k1ni84n86:>4?532cj=;4?:%;7e?dc>2d2844>9298md72290/59o5be48j<2>283?76gn1583>!?3i3ho:6`64882=0=26<79;:kb57<72-3?m7lk6:l:0<<61>10el?>:18'=1g=jm<0b4:6:0;;?>of990;6)7;a;`g2>h><00:5454i`2e>5<#1=k1ni84n86:>4?f32cj2d2844>9c98mf6d290/59o5be48j<2>283h76gl0c83>!?3i3ho:6`64882=a=26<7j;:k`4<<72-3?m7lk6:l:0<<61o10en>7:18'=1g=jm<0b4:6:0c3?>od8>0;6)7;a;`g2>h><00:m<54ib25>5<#1=k1ni84n86:>4g532ch<84?:%;7e?dc>2d2844>a298mf63290/59o5be48j<2>28k?76gl0283>!?3i3ho:6`64882e0=2610eohi:18'=1g=jm<0b4:6:0c;?>oenl0;6)7;a;`g2>h><00:m454icdg>5<#1=k1ni84n86:>4gf32cijn4?:%;7e?dc>2d2844>ac98mg`e290/59o5be48j<2>28kh76gmf`83>!?3i3ho:6`64882ea=26oen<0;6)7;a;`g2>h><00:n<54icd7>5<#1=k1ni84n86:>4d532cij>4?:%;7e?dc>2d2844>b298mg`5290/59o5be48j<2>28h?76gmf083>!?3i3ho:6`64882f0=2610eokj:18'=1g=jm<0b4:6:0`;?>oemm0;6)7;a;`g2>h><00:n454icga>5<#1=k1ni84n86:>4df32ciil4?:%;7e?dc>2d2844>bc98mgc>290/59o5be48j<2>28hh76gme983>!?3i3ho:6`64882fa=26oem=0;6)7;a;`g2>h><00:o<54icg0>5<#1=k1ni84n86:>4e532cii?4?:%;7e?dc>2d2844>c298mgc7290/59o5be48j<2>28i?76gmdg83>!?3i3ho:6`64882g0=2610eojl:18'=1g=jm<0b4:6:0a;?>oelk0;6)7;a;`g2>h><00:o454icfb>5<#1=k1ni84n86:>4ef32cih44?:%;7e?dc>2d2844>cc98mgb?290/59o5be48j<2>28ih76gmd583>!?3i3ho:6`64882ga=26oei>0;6)7;a;`g2>h><00:h<54ic;`>5<#1=k1ni84n86:>4b532ci5<4?:%;7e?dc>2d2844>d298mg>1290/59o5be48j<2>28n?76gm7c83>!?3i3ho:6`64882`0=2610eo;6:18'=1g=jm<0b4:6:0f;?>oeh><00:h454ic60>5<#1=k1ni84n86:>4bf32ci?54?:%;7e?dc>2d2844>dc98mg4c290/59o5be48j<2>28nh76gm2383>!?3i3ho:6`64882`a=26>:18'=1g=jm<0b4:6:0g3?>ofn?0;6)7;a;`g2>h><00:i<54i`gb>5<#1=k1ni84n86:>4c532cjhk4?:%;7e?dc>2d2844>e298mdb3290/59o5be48j<2>28o?76gnc883>!?3i3ho:6`64882a0=2610elo7:18'=1g=jm<0b4:6:0g;?>of1m0;6)7;a;`g2>h><00:i454i`;1>5<#1=k1ni84n86:>4cf32cj4:4?:%;7e?dc>2d2844>ec98md1e290/59o5be48j<2>28oh76gn7183>!?3i3ho:6`64882aa=6=4+95c9fa026of<=0;6)7;a;`g2>h><00:j<54i`1:>5<#1=k1ni84n86:>4`532cj>h4?:%;7e?dc>2d2844>f298md44290/59o5be48j<2>28l?76gn1983>!?3i3ho:6`64882b0=2610eoh8:18'=1g=jm<0b4:6:0d;?>oemj0;6)7;a;`g2>h><00:j454icg2>5<#1=k1ni84n86:>4`f32cio44?:%;7e?dc>2d2844>fc98mg3f290/59o5be48j<2>28lh76gnec83>!?3i3ho:6`64882ba=26l:188m`7>2900cij7:18'=1g=lm=0b4:6:198kab1290/59o5de58j<2>2810cij;:18'=1g=lm=0b4:6:398kab4290/59o5de58j<2>2:10cij=:18'=1g=lm=0b4:6:598kab6290/59o5de58j<2>2<10cij?:18'=1g=lm=0b4:6:798kaea290/59o5de58j<2>2>10cimj:18'=1g=lm=0b4:6:998kaec290/59o5de58j<2>2010ciml:18'=1g=lm=0b4:6:`98kaee290/59o5de58j<2>2k10cim7:18'=1g=lm=0b4:6:b98kae0290/59o5de58j<2>2m10cim9:18'=1g=lm=0b4:6:d98kae2290/59o5de58j<2>2o10cim;:18'=1g=lm=0b4:6:028?jbd;3:1(4:n:ef4?k?313;:76akc383>!?3i3no;6`648826>=hlj;1<7*64`8g`2=i1=31=>54oea3>5<#1=k1hi94n86:>42<3fnij7>5$86b>ab03g3?57?:;:mgfa<72-3?m7jk7:l:0<<6>21dhom50;&:0d1e59751698kade290/59o5de58j<2>28207bjma;29 <2f2mn<7c7;9;3:?>icj00;6)7;a;fg3>h><00:m65`dc:94?">26j6ij8;o;7=?7c32eon84?:%;7e?bc?2d2844>e:9l`g2=83.28l4kd69m=1?=9o10cil=:18'=1g=lm=0b4:6:328?jbe93:1(4:n:ef4?k?3138:76akb183>!?3i3no;6`648816>=hlhl1<7*64`8g`2=i1=31>>54oecf>5<#1=k1hi94n86:>72<3fnjh7>5$86b>ab03g3?57<:;:mgef<72-3?m7jk7:l:0<<5>21dhll50;&:0d1e59752698kagf290/59o5de58j<2>2;207bjn9;29 <2f2mn<7c7;9;0:?>ici>0;6)7;a;fg3>h><009m65`d`494?">6=4+95c9`a126?m4;nfb0?6=,0>j6ij8;o;7=?4c32eom>4?:%;7e?bc?2d2844=e:9l`d4=83.28l4kd69m=1?=:o10cio>:18'=1g=lm=0b4:6:228?jbf83:1(4:n:ef4?k?3139:76ak9g83>!?3i3no;6`648806>=hl0o1<7*64`8g`2=i1=31?>54oe;`>5<#1=k1hi94n86:>62<3fn2n7>5$86b>ab03g3?57=:;:mg=d<72-3?m7jk7:l:0<<4>21dh4750;&:0d1e59753698ka??290/59o5de58j<2>2:207bj67;29 <2f2mn<7c7;9;1:?>ic1?0;6)7;a;fg3>h><008m65`d8794?">26>m4;nf:7?6=,0>j6ij8;o;7=?5c32eo5<4?:%;7e?bc?2d2844:76ak8e83>!?3i3no;6`648876>=hl1i1<7*64`8g`2=i1=318>54oe:a>5<#1=k1hi94n86:>12<3fn3m7>5$86b>ab03g3?57::;:mg<<<72-3?m7jk7:l:0<<3>21dh5650;&:0d1e59754698ka>1290/59o5de58j<2>2=207bj75;29 <2f2mn<7c7;9;6:?>ic0=0;6)7;a;fg3>h><00?m65`d9194?">269m4;nf;5?6=,0>j6ij8;o;7=?2c32eo4=4?:%;7e?bc?2d2844;e:9l`2`=83.28l4kd69m=1?=!?3i3no;6`648866>=hl>k1<7*64`8g`2=i1=319>54oe5:>5<#1=k1hi94n86:>02<3fn<47>5$86b>ab03g3?57;:;:mg32<72-3?m7jk7:l:0<<2>21dh:850;&:0d1e59755698ka12290/59o5de58j<2>2<207bj84;29 <2f2mn<7c7;9;7:?>ic?:0;6)7;a;fg3>h><00>m65`d6094?">268m4;nf5b?6=,0>j6ij8;o;7=?3c32eo:h4?:%;7e?bc?2d2844:e:9l`3b=83.28l4kd69m=1?==o10ci8l:18'=1g=lm=0b4:6:728?jb1j3:1(4:n:ef4?k?313<:76ak6`83>!?3i3no;6`648856>=hl?31<7*64`8g`2=i1=31:>54oe4;>5<#1=k1hi94n86:>32<3fn=;7>5$86b>ab03g3?578:;:mg20<72-3?m7jk7:l:0<<1>21dh;:50;&:0d1e59756698ka04290/59o5de58j<2>2?207bj92;29 <2f2mn<7c7;9;4:?>ic>80;6)7;a;fg3>h><00=m65`d7294?">26;m4;nf6a?6=,0>j6ij8;o;7=?0c32eo9i4?:%;7e?bc?2d28449e:9l`0e=83.28l4kd69m=1?=>o10ci;6:18'=1g=lm=0b4:6:628?jb203:1(4:n:ef4?k?313=:76ak5683>!?3i3no;6`648846>=hl<<1<7*64`8g`2=i1=31;>54oe76>5<#1=k1hi94n86:>22<3fn>87>5$86b>ab03g3?579:;:mg16<72-3?m7jk7:l:0<<0>21dh8<50;&:0d1e59757698ka36290/59o5de58j<2>2>207bj:0;29 <2f2mn<7c7;9;5:?>ich><00h6=4+95c9`a126:m4;nf7f?6=,0>j6ij8;o;7=?1c32eo8l4?:%;7e?bc?2d28448e:9l`1?=83.28l4kd69m=1?=?o10ci:7:18'=1g=lm=0b4:6:928?jb3?3:1(4:n:ef4?k?3132:76ak4783>!?3i3no;6`6488;6>=hl=?1<7*64`8g`2=i1=314>54oe60>5<#1=k1hi94n86:>=2<3fn?>7>5$86b>ab03g3?576:;:mg04<72-3?m7jk7:l:0<21dh9>50;&:0d1e59758698ka5a290/59o5de58j<2>21207bjic;m0;6)7;a;fg3>h><003m65`d2a94?">265m4;nf0e?6=,0>j6ij8;o;7=?>c32eo?54?:%;7e?bc?2d28447e:9l`61=83.28l4kd69m=1?=0o10ci=9:18'=1g=lm=0b4:6:828?jb4=3:1(4:n:ef4?k?3133:76ak3583>!?3i3no;6`6488:6>=hl:91<7*64`8g`2=i1=315>54oe11>5<#1=k1hi94n86:><2<3fn8=7>5$86b>ab03g3?577:;:mg75<72-3?m7jk7:l:0<<>>21dh?h50;&:0d1e59759698ka4c290/59o5de58j<2>20207bj=c;29 <2f2mn<7c7;9;;:?>ic:k0;6)7;a;fg3>h><002m65`d3c94?">264m4;nf1j6ij8;o;7=??c32eo>:4?:%;7e?bc?2d28446e:9l`70=83.28l4kd69m=1?=1o10ci<::18'=1g=lm=0b4:6:`28?jb5<3:1(4:n:ef4?k?313k:76ak2383>!?3i3no;6`6488b6>=hl;;1<7*64`8g`2=i1=31m>54oe03>5<#1=k1hi94n86:>d2<3fn:j7>5$86b>ab03g3?57o:;:mg5`<72-3?m7jk7:l:0<21dh1e5975a698ka7d290/59o5de58j<2>2h207bj>b;29 <2f2mn<7c7;9;c:?>ic9h0;6)7;a;fg3>h><00jm65`d0;94?">26lm4;nf22?6=,0>j6ij8;o;7=?gc32eo=84?:%;7e?bc?2d2844ne:9l`42=83.28l4kd69m=1?=io10ci?<:18'=1g=lm=0b4:6:c28?jb6:3:1(4:n:ef4?k?313h:76ak1083>!?3i3no;6`6488a6>=hl8:1<7*64`8g`2=i1=31n>54oe2e>5<#1=k1hi94n86:>g2<3fn;i7>5$86b>ab03g3?57l:;:mg4f<72-3?m7jk7:l:0<21dh=l50;&:0d1e5975b698ka6f290/59o5de58j<2>2k207bj?9;29 <2f2mn<7c7;9;`:?>ic810;6)7;a;fg3>h><00im65`d1594?">26om4;nf31?6=,0>j6ij8;o;7=?dc32eo<94?:%;7e?bc?2d2844me:9l`55=83.28l4kd69m=1?=jo10ci>>:18'=1g=lm=0b4:6:b28?jb783:1(4:n:ef4?k?313i:76alfg83>!?3i3no;6`6488`6>=hkoo1<7*64`8g`2=i1=31o>54obdg>5<#1=k1hi94n86:>f2<3fimo7>5$86b>ab03g3?57m:;:m`bg<72-3?m7jk7:l:0<21doko50;&:0d1e5975c698kf`>290/59o5de58j<2>2j207bmi8;29 <2f2mn<7c7;9;a:?>idn?0;6)7;a;fg3>h><00hm65`cg794?">26nm4;nae7?6=,0>j6ij8;o;7=?ec32ehj?4?:%;7e?bc?2d2844le:9lgc7=83.28l4kd69m=1?=ko10cnh?:18'=1g=lm=0b4:6:e28?jebn3:1(4:n:ef4?k?313n:76aled83>!?3i3no;6`6488g6>=hkln1<7*64`8g`2=i1=31h>54obgb>5<#1=k1hi94n86:>a2<3fin57>5$86b>ab03g3?57j:;:m`a=<72-3?m7jk7:l:0<21doh950;&:0d1e5975d698kfc1290/59o5de58j<2>2m207bmj5;29 <2f2mn<7c7;9;f:?>idm=0;6)7;a;fg3>h><00om65`cd194?">26im4;naf5?6=,0>j6ij8;o;7=?bc32ehhk4?:%;7e?bc?2d2844ke:9lgac=83.28l4kd69m=1?=lo10cnjk:18'=1g=lm=0b4:6:d28?jeck3:1(4:n:ef4?k?313o:76aldc83>!?3i3no;6`6488f6>=hkmk1<7*64`8g`2=i1=31i>54obf:>5<#1=k1hi94n86:>`2<3fio47>5$86b>ab03g3?57k:;:m``2<72-3?m7jk7:l:0<21doi850;&:0d1e5975e698kfb3290/59o5de58j<2>2l207bmk3;29 <2f2mn<7c7;9;g:?>idl;0;6)7;a;fg3>h><00nm65`ce394?">26hm4;na`b?6=,0>j6ij8;o;7=?cc32ehoh4?:%;7e?bc?2d2844je:9lgfb=83.28l4kd69m=1?=mo10cnml:18'=1g=lm=0b4:6:g28?jedj3:1(4:n:ef4?k?313l:76alc883>!?3i3no;6`6488e6>=hkj21<7*64`8g`2=i1=31j>54oba4>5<#1=k1hi94n86:>c2<3fih:7>5$86b>ab03g3?57h:;:m`g0<72-3?m7jk7:l:0<21don:50;&:0d1e5975f698kfe4290/59o5de58j<2>2o207bml2;29 <2f2mn<7c7;9;d:?>idk80;6)7;a;fg3>h><00mm65`cb294?">26km4;naa`?6=,0>j6ij8;o;7=?`c32ehnn4?:%;7e?bc?2d2844ie:9lggd=83.28l4kd69m=1?=no10cnln:18'=1g=lm=0b4:6:023?>idj00;6)7;a;fg3>h><00:<<54ob`;>5<#1=k1hi94n86:>46532ehn:4?:%;7e?bc?2d2844>0298kfd1290/59o5de58j<2>28:?76alb483>!?3i3no;6`6488240=26<>9;:m`f7<72-3?m7jk7:l:0<<68>10cnl>:18'=1g=lm=0b4:6:02;?>idj90;6)7;a;fg3>h><00:<454obce>5<#1=k1hi94n86:>46f32ehmh4?:%;7e?bc?2d2844>0c98kfgc290/59o5de58j<2>28:h76alab83>!?3i3no;6`648824a=26<>j;:m`ed<72-3?m7jk7:l:0<<68o10cno7:18'=1g=lm=0b4:6:033?>idi>0;6)7;a;fg3>h><00:=<54obc5>5<#1=k1hi94n86:>47532ehm84?:%;7e?bc?2d2844>1298kfg3290/59o5de58j<2>28;?76ala283>!?3i3no;6`6488250=2610cno?:18'=1g=lm=0b4:6:03;?>id1o0;6)7;a;fg3>h><00:=454ob;g>5<#1=k1hi94n86:>47f32eh5n4?:%;7e?bc?2d2844>1c98kf?e290/59o5de58j<2>28;h76al9`83>!?3i3no;6`648825a=26id1?0;6)7;a;fg3>h><00:><54ob;6>5<#1=k1hi94n86:>44532eh594?:%;7e?bc?2d2844>2298kf?5290/59o5de58j<2>288?76al9083>!?3i3no;6`6488260=26<<9;:m`10cn6j:18'=1g=lm=0b4:6:00;?>id0m0;6)7;a;fg3>h><00:>454ob:`>5<#1=k1hi94n86:>44f32eh4o4?:%;7e?bc?2d2844>2c98kf>f290/59o5de58j<2>288h76al8883>!?3i3no;6`648826a=26<id0=0;6)7;a;fg3>h><00:?<54ob:0>5<#1=k1hi94n86:>45532eh4?4?:%;7e?bc?2d2844>3298kf>6290/59o5de58j<2>289?76al8183>!?3i3no;6`6488270=26<=9;:m`3`<72-3?m7jk7:l:0<<6;>10cn9m:18'=1g=lm=0b4:6:01;?>id?h0;6)7;a;fg3>h><00:?454ob5:>5<#1=k1hi94n86:>45f32eh;54?:%;7e?bc?2d2844>3c98kf10290/59o5de58j<2>289h76al7783>!?3i3no;6`648827a=6=4+95c9`a126<=j;:m`31<72-3?m7jk7:l:0<<6;o10cn9<:18'=1g=lm=0b4:6:063?>id?;0;6)7;a;fg3>h><00:8<54ob53>5<#1=k1hi94n86:>42532eh:k4?:%;7e?bc?2d2844>4298kf0b290/59o5de58j<2>28>?76al6e83>!?3i3no;6`6488200=26<:9;:m`2g<72-3?m7jk7:l:0<<6<>10cn8n:18'=1g=lm=0b4:6:06;?>id>00;6)7;a;fg3>h><00:8454ob4;>5<#1=k1hi94n86:>42f32eh::4?:%;7e?bc?2d2844>4c98kf02290/59o5de58j<2>28>h76al6583>!?3i3no;6`648820a=26<:j;:m`27<72-3?m7jk7:l:0<<6:18'=1g=lm=0b4:6:073?>id>90;6)7;a;fg3>h><00:9<54ob7e>5<#1=k1hi94n86:>43532eh9h4?:%;7e?bc?2d2844>5298kf3c290/59o5de58j<2>28??76al5b83>!?3i3no;6`6488210=26<;9;:m`1<<72-3?m7jk7:l:0<<6=>10cn;7:18'=1g=lm=0b4:6:07;?>id=>0;6)7;a;fg3>h><00:9454ob75>5<#1=k1hi94n86:>43f32eh984?:%;7e?bc?2d2844>5c98kf33290/59o5de58j<2>28?h76al5283>!?3i3no;6`648821a=26<;j;:m`14<72-3?m7jk7:l:0<<6=o10cn:i:18'=1g=lm=0b4:6:043?>idh><00::<54ob6g>5<#1=k1hi94n86:>40532eh8n4?:%;7e?bc?2d2844>6298kf2e290/59o5de58j<2>28!?3i3no;6`6488220=26=4+95c9`a126<89;:m`0=<72-3?m7jk7:l:0<<6>>10cn:8:18'=1g=lm=0b4:6:04;?>idh><00::454ob67>5<#1=k1hi94n86:>40f32eh8>4?:%;7e?bc?2d2844>6c98kf25290/59o5de58j<2>28!?3i3no;6`648822a=;6=4+95c9`a126<8j;:m`7c<72-3?m7jk7:l:0<<6>o10cn=j:18'=1g=lm=0b4:6:053?>id;m0;6)7;a;fg3>h><00:;<54ob1`>5<#1=k1hi94n86:>41532eh?o4?:%;7e?bc?2d2844>7298kf5>290/59o5de58j<2>28=?76al3983>!?3i3no;6`6488230=26<99;:m`73<72-3?m7jk7:l:0<<6?>10cn=::18'=1g=lm=0b4:6:05;?>id;=0;6)7;a;fg3>h><00:;454ob10>5<#1=k1hi94n86:>41f32eh??4?:%;7e?bc?2d2844>7c98kf56290/59o5de58j<2>28=h76al3183>!?3i3no;6`648823a=26<9j;:m`6a<72-3?m7jk7:l:0<<6?o10cnid:k0;6)7;a;fg3>h><00:4<54ob0b>5<#1=k1hi94n86:>4>532eh>44?:%;7e?bc?2d2844>8298kf4?290/59o5de58j<2>282?76al2683>!?3i3no;6`64882<0=26<69;:m`60<72-3?m7jk7:l:0<<60>10cn<<:18'=1g=lm=0b4:6:0:;?>id:;0;6)7;a;fg3>h><00:4454ob02>5<#1=k1hi94n86:>4>f32eh>=4?:%;7e?bc?2d2844>8c98kf7a290/59o5de58j<2>282h76al1d83>!?3i3no;6`6488226<6j;:m`5f<72-3?m7jk7:l:0<<60o10cn?m:18'=1g=lm=0b4:6:0;3?>id9h0;6)7;a;fg3>h><00:5<54ob3;>5<#1=k1hi94n86:>4?532eh=:4?:%;7e?bc?2d2844>9298kf71290/59o5de58j<2>283?76al1483>!?3i3no;6`64882=0=26<79;:m`56<72-3?m7jk7:l:0<<61>10cn?=:18'=1g=lm=0b4:6:0;;?>id980;6)7;a;fg3>h><00:5454ob33>5<#1=k1hi94n86:>4?f32eh9c98k`6c290/59o5de58j<2>283h76aj0b83>!?3i3no;6`64882=a=26<7j;:mf4d<72-3?m7jk7:l:0<<61o10ch>6:18'=1g=lm=0b4:6:0c3?>ib810;6)7;a;fg3>h><00:m<54od24>5<#1=k1hi94n86:>4g532en<;4?:%;7e?bc?2d2844>a298k`62290/59o5de58j<2>28k?76aj0583>!?3i3no;6`64882e0=2610ch>?:18'=1g=lm=0b4:6:0c;?>icno0;6)7;a;fg3>h><00:m454oedf>5<#1=k1hi94n86:>4gf32eoji4?:%;7e?bc?2d2844>ac98ka`d290/59o5de58j<2>28kh76akfc83>!?3i3no;6`64882ea=26icn?0;6)7;a;fg3>h><00:n<54oed6>5<#1=k1hi94n86:>4d532eoj94?:%;7e?bc?2d2844>b298ka`4290/59o5de58j<2>28h?76akf383>!?3i3no;6`64882f0=2610ciki:18'=1g=lm=0b4:6:0`;?>icml0;6)7;a;fg3>h><00:n454oeg`>5<#1=k1hi94n86:>4df32eoio4?:%;7e?bc?2d2844>bc98kacf290/59o5de58j<2>28hh76ake883>!?3i3no;6`64882fa=26icm<0;6)7;a;fg3>h><00:o<54oeg7>5<#1=k1hi94n86:>4e532eoi>4?:%;7e?bc?2d2844>c298kac6290/59o5de58j<2>28i?76ake183>!?3i3no;6`64882g0=2610cijk:18'=1g=lm=0b4:6:0a;?>iclj0;6)7;a;fg3>h><00:o454oefa>5<#1=k1hi94n86:>4ef32eohl4?:%;7e?bc?2d2844>cc98kab>290/59o5de58j<2>28ih76akd483>!?3i3no;6`64882ga=26ici10;6)7;a;fg3>h><00:h<54oe;g>5<#1=k1hi94n86:>4b532eo5?4?:%;7e?bc?2d2844>d298ka>0290/59o5de58j<2>28n?76ak7b83>!?3i3no;6`64882`0=2610ci;n:18'=1g=lm=0b4:6:0f;?>ich><00:h454oe67>5<#1=k1hi94n86:>4bf32eo?44?:%;7e?bc?2d2844>dc98ka4b290/59o5de58j<2>28nh76ak2283>!?3i3no;6`64882`a=26=:18'=1g=lm=0b4:6:0g3?>idn>0;6)7;a;fg3>h><00:i<54obga>5<#1=k1hi94n86:>4c532ehi=4?:%;7e?bc?2d2844>e298kfb2290/59o5de58j<2>28o?76alc`83>!?3i3no;6`64882a0=2610cno6:18'=1g=lm=0b4:6:0g;?>id1l0;6)7;a;fg3>h><00:i454ob;0>5<#1=k1hi94n86:>4cf32eh454?:%;7e?bc?2d2844>ec98kf1d290/59o5de58j<2>28oh76al7083>!?3i3no;6`64882aa=26id<<0;6)7;a;fg3>h><00:j<54ob1b>5<#1=k1hi94n86:>4`532eh>k4?:%;7e?bc?2d2844>f298kf43290/59o5de58j<2>28l?76al1883>!?3i3no;6`64882b0=2610cih7:18'=1g=lm=0b4:6:0d;?>icmm0;6)7;a;fg3>h><00:j454oeg1>5<#1=k1hi94n86:>4`f32eool4?:%;7e?bc?2d2844>fc98ka3e290/59o5de58j<2>28lh76aleb83>!?3i3no;6`64882ba=265<7s-3=97798:J:a6=O1?=0c4:9:188yg?1>3:145o5a;63e~N>>>1/5;;59g08^6?=lr=197?k:g823?>=>3;n6<>51982e?7e28<1q)=7:39j=0>=83.28l46569m=1?=821b58:50;&:0d<>=:1e59750:9j=<`=83.28l469d9m=1?=821b54j50;&:0d<>1l1e59751:9j=1l1e59753:9j=1l1e59755:9j=<>=83.28l469d9m=1?=>21b54850;&:0d<>1l1e59757:9j=<3=83.28l469d9m=1?=021b54:50;&:0d<>1l1e59759:9j=<5=83.28l469d9m=1?=i21b54<50;&:0d<>1l1e5975b:9j=<7=83.28l469d9m=1?=k21b54>50;&:0d<>1l1e5975d:9j==`=83.28l469d9m=1?=m21b55k50;&:0d<>1l1e5975f:9j==b=83.28l469d9m=1?=9910e46m:18'=1g=10o0b4:6:038?l??i3:1(4:n:8;f?k?313;976g68883>!?3i332i6`648827>=n1121<7*64`8:=`=i1=31=954i8:4>5<#1=k154k4n86:>43<3`33:7>5$86b>1l1e59751998m<>4290/59o598g8j<2>28307d772;29 <2f203n7c7;9;3b?>o>090;6)7;a;;:a>h><00:n65f96d94?">26j647j;o;7=?7b32c2;n4?:%;7e??>m2d2844>f:9j=2d=83.28l469d9m=1?=:910e49n:18'=1g=10o0b4:6:338?l?013:1(4:n:8;f?k?3138976g67983>!?3i332i6`648817>=n1>=1<7*64`8:=`=i1=31>954i856>5<#1=k154k4n86:>73<3`3<87>5$86b>1l1e59752998m<16290/59o598g8j<2>2;307d780;29 <2f203n7c7;9;0b?>o>>o0;6)7;a;;:a>h><009n65f97g94?">26?j4;h;5g?6=,0>j647j;o;7=?4b32c2m94?:%;7e??>m2d2844=f:9j=d5=83.28l469d9m=1?=;910e4o=:18'=1g=10o0b4:6:238?l?f93:1(4:n:8;f?k?3139976g6a183>!?3i332i6`648807>=n10=1<7*64`8:=`=i1=31?954i8:`>5<#1=k154k4n86:>63<3`33=7>5$86b>1l1e59753998m73=83.28l4=4:l:0<<732c9?7>5$86b>7226<54i3094?">o593:1(4:n:368j<2>2:10e?;j:18'=1g=:2810e?;n:18'=1g=:290/59o524f8j<2>2:10e?;7:18'=1g=:2<10e?;9:18'=1g=:2>10e?;;:18'=1g=:2010e?;=:18'=1g=:2k10e?:j:18'=1g=:2m10e?:l:18'=1g=:2o10e?:n:18'=1g=:!?3i38>h6`648826>=n:==1<7*64`811a=i1=31=>54i365>5<#1=k1>8j4n86:>42<3`8?97>5$86b>73c3g3?57?:;:k106<72-3?m7<:d:l:0<<6>21b>9<50;&:0d<5=m1e59751698m726290/59o524f8j<2>28207d<;0;29 <2f2;?o7c7;9;3:?>o5;o0;6)7;a;06`>h><00:m65f22g94?">26j6?;k;o;7=?7c32c9?o4?:%;7e?42l2d2844>e:9j66g=83.28l4=5e9m=1?=9o10e?=7:18'=1g=:!?3i38>h6`648816>=n::?1<7*64`811a=i1=31>>54i317>5<#1=k1>8j4n86:>72<3`88?7>5$86b>73c3g3?57<:;:k177<72-3?m7<:d:l:0<<5>21b>>?50;&:0d<5=m1e59752698m757290/59o524f8j<2>2;207d<=f;29 <2f2;?o7c7;9;0:?>o5:m0;6)7;a;06`>h><009m65f23a94?">26?m4;h01e?6=,0>j6?;k;o;7=?4c32c9>44?:%;7e?42l2d2844=e:9j67>=83.28l4=5e9m=1?=:o10e?<8:18'=1g=:3:1(4:n:37g?k?3139:76g=2483>!?3i38>h6`648806>=n:;>1<7*64`811a=i1=31?>54i301>5<#1=k1>8j4n86:>62<3`89=7>5$86b>73c3g3?57=:;:k165<72-3?m7<:d:l:0<<4>21b>2:207d<>d;29 <2f2;?o7c7;9;1:?>o59j0;6)7;a;06`>h><008m65f20`94?">26>m4;h02=?6=,0>j6?;k;o;7=?5c32c9=:4?:%;7e?42l2d2844:76g=1283>!?3i38>h6`648876>=n:881<7*64`811a=i1=318>54i332>5<#1=k1>8j4n86:>12<3`8:<7>5$86b>73c3g3?57::;:k14c<72-3?m7<:d:l:0<<3>21b>=k50;&:0d<5=m1e59754698m76d290/59o524f8j<2>2=207do58h0;6)7;a;06`>h><00?m65f21;94?">269m4;h033?6=,0>j6?;k;o;7=?2c32c9<;4?:%;7e?42l2d2844;e:9j653=83.28l4=5e9m=1?=;:18'=1g=:!?3i38>h6`648866>=n:9:1<7*64`811a=i1=319>54i0de>5<#1=k1>8j4n86:>02<3`;mi7>5$86b>73c3g3?57;:;:k2ba<72-3?m7<:d:l:0<<2>21b=km50;&:0d<5=m1e59755698m4`e290/59o524f8j<2>2<207d?ia;29 <2f2;?o7c7;9;7:?>o6n00;6)7;a;06`>h><00>m65f1g:94?">268m4;h3e1?6=,0>j6?;k;o;7=?3c32c:j94?:%;7e?42l2d2844:e:9j5c5=83.28l4=5e9m=1?==o10ef183>!?3i38>h6`648856>=n9ll1<7*64`811a=i1=31:>54i0gf>5<#1=k1>8j4n86:>32<3`;nh7>5$86b>73c3g3?578:;:k2ag<72-3?m7<:d:l:0<<1>21b=ho50;&:0d<5=m1e59756698m4c>290/59o524f8j<2>2?207d?j8;29 <2f2;?o7c7;9;4:?>o6m>0;6)7;a;06`>h><00=m65f1d494?">6=4+95c960b26;m4;h3f0?6=,0>j6?;k;o;7=?0c32c:i>4?:%;7e?42l2d28449e:9j5`4=83.28l4=5e9m=1?=>o10ede83>!?3i38>h6`648846>=n9mi1<7*64`811a=i1=31;>54i0fa>5<#1=k1>8j4n86:>22<3`;om7>5$86b>73c3g3?579:;:k2`<<72-3?m7<:d:l:0<<0>21b=i650;&:0d<5=m1e59757698m4b0290/59o524f8j<2>2>207d?k6;29 <2f2;?o7c7;9;5:?>o6l=0;6)7;a;06`>h><0026:m4;h3g5?6=,0>j6?;k;o;7=?1c32c:h=4?:%;7e?42l2d28448e:9j5f`=83.28l4=5e9m=1?=?o10ecb83>!?3i38>h6`6488;6>=n9jh1<7*64`811a=i1=314>54i0a:>5<#1=k1>8j4n86:>=2<3`;h47>5$86b>73c3g3?576:;:k2g2<72-3?m7<:d:l:0<21b=n850;&:0d<5=m1e59758698m4e2290/59o524f8j<2>21207d?l4;29 <2f2;?o7c7;9;::?>o6k:0;6)7;a;06`>h><003m65f1b094?">265m4;h3`4?6=,0>j6?;k;o;7=?>c32c:nh4?:%;7e?42l2d28447e:9j5gb=83.28l4=5e9m=1?=0o10eb`83>!?3i38>h6`6488:6>=n9k31<7*64`811a=i1=315>54i0`;>5<#1=k1>8j4n86:><2<3`;i;7>5$86b>73c3g3?577:;:k2f3<72-3?m7<:d:l:0<<>>21b=o;50;&:0d<5=m1e59759698m4d4290/59o524f8j<2>20207d?m2;29 <2f2;?o7c7;9;;:?>o6j80;6)7;a;06`>h><002m65f1c294?">264m4;h3ba?6=,0>j6?;k;o;7=??c32c:mi4?:%;7e?42l2d28446e:9j5de=83.28l4=5e9m=1?=1o10ea983>!?3i38>h6`6488b6>=n9h=1<7*64`811a=i1=31m>54i0c5>5<#1=k1>8j4n86:>d2<3`;j97>5$86b>73c3g3?57o:;:k2e1<72-3?m7<:d:l:0<21b=l=50;&:0d<5=m1e5975a698m4g5290/59o524f8j<2>2h207d?n1;29 <2f2;?o7c7;9;c:?>o6i90;6)7;a;06`>h><00jm65f18d94?">26lm4;h3:g?6=,0>j6?;k;o;7=?gc32c:5o4?:%;7e?42l2d2844ne:9j503:1(4:n:37g?k?313h:76g>9683>!?3i38>h6`6488a6>=n90<1<7*64`811a=i1=31n>54i0;6>5<#1=k1>8j4n86:>g2<3`;287>5$86b>73c3g3?57l:;:k2=7<72-3?m7<:d:l:0<21b=4?50;&:0d<5=m1e5975b698m4?7290/59o524f8j<2>2k207d?7f;29 <2f2;?o7c7;9;`:?>o60l0;6)7;a;06`>h><00im65f19f94?">26om4;h3;f?6=,0>j6?;k;o;7=?dc32c:4l4?:%;7e?42l2d2844me:9j5=?=83.28l4=5e9m=1?=jo10e<68:18'=1g=:3:1(4:n:37g?k?313i:76g>8483>!?3i38>h6`6488`6>=n91>1<7*64`811a=i1=31o>54i0:0>5<#1=k1>8j4n86:>f2<3`;3>7>5$86b>73c3g3?57m:;:k2<4<72-3?m7<:d:l:0<21b=5>50;&:0d<5=m1e5975c698m41a290/59o524f8j<2>2j207d?8e;29 <2f2;?o7c7;9;a:?>o6?j0;6)7;a;06`>h><00hm65f16`94?">26nm4;h34=?6=,0>j6?;k;o;7=?ec32c:;54?:%;7e?42l2d2844le:9j521=83.28l4=5e9m=1?=ko10e<99:18'=1g=:7583>!?3i38>h6`6488g6>=n9>91<7*64`811a=i1=31h>54i053>5<#1=k1>8j4n86:>a2<3`;=j7>5$86b>73c3g3?57j:;:k22`<72-3?m7<:d:l:0<21b=;j50;&:0d<5=m1e5975d698m40d290/59o524f8j<2>2m207d?9b;29 <2f2;?o7c7;9;f:?>o6>h0;6)7;a;06`>h><00om65f17;94?">26im4;h353?6=,0>j6?;k;o;7=?bc32c::84?:%;7e?42l2d2844ke:9j532=83.28l4=5e9m=1?=lo10e<8<:18'=1g=:6083>!?3i38>h6`6488f6>=n9?:1<7*64`811a=i1=31i>54i07e>5<#1=k1>8j4n86:>`2<3`;>i7>5$86b>73c3g3?57k:;:k21a<72-3?m7<:d:l:0<21b=8m50;&:0d<5=m1e5975e698m43f290/59o524f8j<2>2l207d?:9;29 <2f2;?o7c7;9;g:?>o6=10;6)7;a;06`>h><00nm65f14594?">26hm4;h361?6=,0>j6?;k;o;7=?cc32c:994?:%;7e?42l2d2844je:9j505=83.28l4=5e9m=1?=mo10e<;=:18'=1g=:4g83>!?3i38>h6`6488e6>=n9=o1<7*64`811a=i1=31j>54i06g>5<#1=k1>8j4n86:>c2<3`;?o7>5$86b>73c3g3?57h:;:k20g<72-3?m7<:d:l:0<21b=9o50;&:0d<5=m1e5975f698m42>290/59o524f8j<2>2o207d?;8;29 <2f2;?o7c7;9;d:?>o6<>0;6)7;a;06`>h><00mm65f15494?">?6=4+95c960b26km4;h377?6=,0>j6?;k;o;7=?`c32c:8?4?:%;7e?42l2d2844ie:9j517=83.28l4=5e9m=1?=no10e<:?:18'=1g=:o6;o0;6)7;a;06`>h><00:<<54i01f>5<#1=k1>8j4n86:>46532c:?i4?:%;7e?42l2d2844>0298m45d290/59o524f8j<2>28:?76g>3c83>!?3i38>h6`6488240=26<>9;:k27=<72-3?m7<:d:l:0<<68>10e<=8:18'=1g=:o6;?0;6)7;a;06`>h><00:<454i016>5<#1=k1>8j4n86:>46f32c:?94?:%;7e?42l2d2844>0c98m454290/59o524f8j<2>28:h76g>3383>!?3i38>h6`648824a=26<>j;:k275<72-3?m7<:d:l:0<<68o10e<o6:m0;6)7;a;06`>h><00:=<54i00`>5<#1=k1>8j4n86:>47532c:>o4?:%;7e?42l2d2844>1298m44f290/59o524f8j<2>28;?76g>2883>!?3i38>h6`6488250=2610e<<9:18'=1g=:o6:<0;6)7;a;06`>h><00:=454i000>5<#1=k1>8j4n86:>47f32c:>?4?:%;7e?42l2d2844>1c98m446290/59o524f8j<2>28;h76g>2183>!?3i38>h6`648825a=26o69j0;6)7;a;06`>h><00:><54i03a>5<#1=k1>8j4n86:>44532c:=l4?:%;7e?42l2d2844>2298m47?290/59o524f8j<2>288?76g>1683>!?3i38>h6`6488260=26<<9;:k250<72-3?m7<:d:l:0<<6:>10eo69:0;6)7;a;06`>h><00:>454i031>5<#1=k1>8j4n86:>44f32c:=<4?:%;7e?42l2d2844>2c98m477290/59o524f8j<2>288h76g>0g83>!?3i38>h6`648826a=26<m:18'=1g=:o68h0;6)7;a;06`>h><00:?<54i02:>5<#1=k1>8j4n86:>45532c:<54?:%;7e?42l2d2844>3298m460290/59o524f8j<2>289?76g>0783>!?3i38>h6`6488270=6=4+95c960b26<=9;:k241<72-3?m7<:d:l:0<<6;>10e<>>:18'=1g=:o6890;6)7;a;06`>h><00:?454igd94?">26<=m;:ke`?6=,0>j6?;k;o;7=?74k21bjn4?:%;7e?42l2d2844>3e98mcd=83.28l4=5e9m=1?=9:o07dhn:18'=1g=:oa13:1(4:n:37g?k?313;?<65ff983>!?3i38>h6`6488204=5<#1=k1>8j4n86:>42432cm87>5$86b>73c3g3?57?;4:9jb6<72-3?m7<:d:l:0<<6<<10ek<50;&:0d<5=m1e59751548?l`6290/59o524f8j<2>28><76gi0;29 <2f2;?o7c7;9;37<>=nmo0;6)7;a;06`>h><00:8454idg94?">26<:m;:kff?6=,0>j6?;k;o;7=?73k21bil4?:%;7e?42l2d2844>4e98m`?=83.28l4=5e9m=1?=9=o07dk7:18'=1g=:ob?3:1(4:n:37g?k?313;><65fe783>!?3i38>h6`6488214=5<#1=k1>8j4n86:>43432cn?7>5$86b>73c3g3?57?:4:9ja7<72-3?m7<:d:l:0<<6=<10eh>50;&:0d<5=m1e59751448?lba290/59o524f8j<2>28?<76gke;29 <2f2;?o7c7;9;36<>=nlm0;6)7;a;06`>h><00:9454iea94?">26<;m;:kge?6=,0>j6?;k;o;7=?72k21bh44?:%;7e?42l2d2844>5e98ma>=83.28l4=5e9m=1?=9oc=3:1(4:n:37g?k?313;=<65fd583>!?3i38>h6`6488224=5<#1=k1>8j4n86:>40432co=7>5$86b>73c3g3?57?94:9j`5<72-3?m7<:d:l:0<<6><10enh50;&:0d<5=m1e59751748?leb290/59o524f8j<2>28<<76gld;29 <2f2;?o7c7;9;35<>=nkj0;6)7;a;06`>h><00::454ibc94?">26<8m;:k`j6?;k;o;7=?71k21bo:4?:%;7e?42l2d2844>6e98mf0=83.28l4=5e9m=1?=9?o07dm::18'=1g=:od<3:1(4:n:37g?k?313;<<65fc283>!?3i38>h6`6488234=5<#1=k1>8j4n86:>41432cij7>5$86b>73c3g3?57?84:9jf`<72-3?m7<:d:l:0<<6?<10eoj50;&:0d<5=m1e59751648?ldd290/59o524f8j<2>28=<76gmb;29 <2f2;?o7c7;9;34<>=njh0;6)7;a;06`>h><00:;454ic;94?">26<9m;:ka3?6=,0>j6?;k;o;7=?70k21bn;4?:%;7e?42l2d2844>7e98mg2=83.28l4=5e9m=1?=9>o07dl<:18'=1g=:oe:3:1(4:n:37g?k?313;3<65fb083>!?3i38>h6`64882<4=5<#1=k1>8j4n86:>4>432cji7>5$86b>73c3g3?57?74:9jea<72-3?m7<:d:l:0<<60<10elm50;&:0d<5=m1e59751948?lge290/59o524f8j<2>282<76gn9;29 <2f2;?o7c7;9;3;<>=ni10;6)7;a;06`>h><00:4454i`594?">26<6m;:kb1?6=,0>j6?;k;o;7=?7?k21bm94?:%;7e?42l2d2844>8e98md5=83.28l4=5e9m=1?=91o07do=:18'=1g=:of93:1(4:n:37g?k?313;2<65fa183>!?3i38>h6`64882=4=5<#1=k1>8j4n86:>4?432c2o7>5$86b>73c3g3?57?64:9j=g<72-3?m7<:d:l:0<<61<10e4o50;&:0d<5=m1e59751848?l?>290/59o524f8j<2>283<76g68;29 <2f2;?o7c7;9;3:<>=n1>0;6)7;a;06`>h><00:5454i8494?">6=4+95c960b26<7m;:k1=6<72-3?m7<:d:l:0<<61j10e?7=:18'=1g=:o5180;6)7;a;06`>h><00:5h54i3;3>5<#1=k1>8j4n86:>4?a32c94k4?:%;7e?42l2d2844>a198m7>b290/59o524f8j<2>28k:76g=8e83>!?3i38>h6`64882e7=26o5010;6)7;a;06`>h><00:m;54i3:4>5<#1=k1>8j4n86:>4g032c94;4?:%;7e?42l2d2844>a998m7>2290/59o524f8j<2>28k276g=8583>!?3i38>h6`64882ed=26:18'=1g=:o5090;6)7;a;06`>h><00:mh54i35e>5<#1=k1>8j4n86:>4ga32c9;i4?:%;7e?42l2d2844>b198m71d290/59o524f8j<2>28h:76g=7c83>!?3i38>h6`64882f7=26o5?>0;6)7;a;06`>h><00:n;54i355>5<#1=k1>8j4n86:>4d032c9;84?:%;7e?42l2d2844>b998m713290/59o524f8j<2>28h276g=7383>!?3i38>h6`64882fd=26o5>l0;6)7;a;06`>h><00:nh54i34g>5<#1=k1>8j4n86:>4da32c9:n4?:%;7e?42l2d2844>c198m70e290/59o524f8j<2>28i:76g=6`83>!?3i38>h6`64882g7=26o5><0;6)7;a;06`>h><00:o;54i347>5<#1=k1>8j4n86:>4e032c9:>4?:%;7e?42l2d2844>c998m705290/59o524f8j<2>28i276g=6083>!?3i38>h6`64882gd=26o5h><00:oh54i367>5<#1=k1>8j4n86:>4ea32c9?44?:%;7e?42l2d2844>d198m74b290/59o524f8j<2>28n:76g=2283>!?3i38>h6`64882`7=26=:18'=1g=:o6n>0;6)7;a;06`>h><00:h;54i0g`>5<#1=k1>8j4n86:>4b032c:i=4?:%;7e?42l2d2844>d998m4b2290/59o524f8j<2>28n276g>c`83>!?3i38>h6`64882`d=26o61l0;6)7;a;06`>h><00:hh54i0;0>5<#1=k1>8j4n86:>4ba32c:454?:%;7e?42l2d2844>e198m41c290/59o524f8j<2>28o:76g>7083>!?3i38>h6`64882a7=26o6<<0;6)7;a;06`>h><00:i;54i01b>5<#1=k1>8j4n86:>4c032c:>k4?:%;7e?42l2d2844>e998m443290/59o524f8j<2>28o276g>1883>!?3i38>h6`64882ad=2628on76gj1;29 <2f2;?o7c7;9;3fb>=nl?0;6)7;a;06`>h><00:j=54ib`94?">26j6?;k;o;7=?7a;21bml4?:%;7e?42l2d2844>f598m<`=83.28l4=5e9m=1?=9o?07d<64;29 <2f2;?o7c7;9;3e2>=n:131<7*64`811a=i1=31=k94;h04a?6=,0>j6?;k;o;7=?7a021b>:=50;&:0d<5=m1e59751g;8?l4103:1(4:n:37g?k?313;mm65f24294?">5$86b>73c3g3?57?ic:9j524=83.28l4=5e9m=1?=9on07d??3;29 <2f2;?o7c7;9;3ea>=n1=0;6)7;a;06`>h><00:jk54i87b>5<#1=k15874n86:>5=26=54i8fb>5<#1=k15i74n86:>5=26<54i8f4>5<#1=k15i74n86:>7=26>54i8f6>5<#1=k15i74n86:>1=26854i8f0>5<#1=k15i74n86:>3=26:54i8f3>5<#1=k15i74n86:>==26454i8af>5<#1=k15i74n86:>d=26o54i8a`>5<#1=k15i74n86:>f=26i54i8ab>5<#1=k15i74n86:>`=26k54i8a;>5<#1=k15i74n86:>46<3`3h:7>5$86b>3g3?57?>;:k:g0<72-3?m77k9:l:0<<6:21b5n:50;&:0d<>l01e59751298m28>07d7l2;29 <2f20n27c7;9;36?>o>k80;6)7;a;;g=>h><00::65f9b294?">26<64;h;aa?6=,0>j64j6;o;7=?7>32c2ni4?:%;7e??c12d2844>a:9j=gd=83.28l46d89m=1?=9k10e4ln:18'=1g=1m30b4:6:0a8?l?e13:1(4:n:8f:?k?313;o76g6b983>!?3i33o56`64882a>=n1k=1<7*64`8:`<=i1=31=k54i8`5>5<#1=k15i74n86:>76<3`3i97>5$86b>3g3?57<>;:k:f1<72-3?m77k9:l:0<<5:21b5o=50;&:0d<>l01e59752298m2;>07d7m0;29 <2f20n27c7;9;06?>o>io0;6)7;a;;g=>h><009:65f9`g94?">26?64;h;bg?6=,0>j64j6;o;7=?4>32c2mo4?:%;7e??c12d2844=a:9j=dg=83.28l46d89m=1?=:k10e4o6:18'=1g=1m30b4:6:3a8?l?f03:1(4:n:8f:?k?3138o76g6a683>!?3i33o56`64881a>=n1ml1<7*64`8:`<=i1=31>k54i8ff>5<#1=k15i74n86:>66<3`3oh7>5$86b>3g3?57=>;:k:`f<72-3?m77k9:l:0<<4:21b5il50;&:0d<>l01e59753298m2:>07d7l7;29 <2f20n27c7;9;16?>o>jj0;6)7;a;;g=>h><008:65f9c394?">26>64;h13>5<#1=k1>k5a95;94>=n:l0;6)7;a;0e?k?313;07d>j7>5$86b>13b3g3?57>4;h66`?6=,0>j69;j;o;7=?7<3`>>n7>5$86b>13b3g3?57<4;h66e?6=,0>j69;j;o;7=?5<3`>>57>5$86b>13b3g3?57:4;h66j69;j;o;7=?3<3`>>;7>5$86b>13b3g3?5784;h662?6=,0>j69;j;o;7=?1<3`>>97>5$86b>13b3g3?5764;h660?6=,0>j69;j;o;7=??<3`>>?7>5$86b>13b3g3?57o4;h666?6=,0>j69;j;o;7=?d<3`>?j7>5$86b>13b3g3?57m4;h67a?6=,0>j69;j;o;7=?b<3`>?h7>5$86b>13b3g3?57k4;h67g?6=,0>j69;j;o;7=?`<3`>?n7>5$86b>13b3g3?57??;:k70d<72-3?m7::e:l:0<<6921b89750;&:0d<3=l1e59751398m12?290/59o544g8j<2>28907d:;7;29 <2f2=?n7c7;9;37?>o3h><00:965f45694?">86=4+95c900c26<94;h676?6=,0>j69;j;o;7=?7?32c?8<4?:%;7e?22m2d2844>9:9j016=83.28l4;5d9m=1?=9h10e9=i:18'=1g=<!?3i3>>i6`64882`>=n<:i1<7*64`871`=i1=31=h54i51a>5<#1=k188k4n86:>4`<3`>857>5$86b>13b3g3?57950;&:0d<3=l1e59752398m151290/59o544g8j<2>2;907d:<5;29 <2f2=?n7c7;9;07?>o3;=0;6)7;a;66a>h><009965f42194?">26?94;h605?6=,0>j69;j;o;7=?4?32c??=4?:%;7e?22m2d2844=9:9j07c=83.28l4;5d9m=1?=:h10e9!?3i3>>i6`64881`>=n<;k1<7*64`871`=i1=31>h54i50:>5<#1=k188k4n86:>7`<3`>947>5$86b>13b3g3?57=?;:k762<72-3?m7::e:l:0<<4921b8?850;&:0d<3=l1e59753398m142290/59o544g8j<2>2:907d:=3;29 <2f2=?n7c7;9;17?>o3:;0;6)7;a;66a>h><008965f43394?">26>94;h62b?6=,0>j69;j;o;7=?5?32c?=h4?:%;7e?22m2d2844<9:9j04b=83.28l4;5d9m=1?=;h10e9?l:18'=1g=<!?3i3>>i6`64880`>=n<821<7*64`871`=i1=31?h54i534>5<#1=k188k4n86:>6`<3`>::7>5$86b>13b3g3?57:?;:k750<72-3?m7::e:l:0<<3921b8<:50;&:0d<3=l1e59754398m174290/59o544g8j<2>2=907d:>2;29 <2f2=?n7c7;9;67?>o3980;6)7;a;66a>h><00?965f40294?">26994;h63`?6=,0>j69;j;o;7=?2?32c?n:18'=1g=<h76g;0983>!?3i3>>i6`64887`>=n<9=1<7*64`871`=i1=318h54i525>5<#1=k188k4n86:>1`<3`>;97>5$86b>13b3g3?57;?;:k741<72-3?m7::e:l:0<<2921b8=<50;&:0d<3=l1e59755398m166290/59o544g8j<2>2<907d:?0;29 <2f2=?n7c7;9;77?>o4no0;6)7;a;66a>h><00>965f3gg94?">26894;h1eg?6=,0>j69;j;o;7=?3?32c8jo4?:%;7e?22m2d2844:9:9j7cg=83.28l4;5d9m=1?==h10e>h6:18'=1g=<!?3i3>>i6`64886`>=n;o?1<7*64`871`=i1=319h54i2d7>5<#1=k188k4n86:>0`<3`9m?7>5$86b>13b3g3?578?;:k0b7<72-3?m7::e:l:0<<1921b?k?50;&:0d<3=l1e59756398m6`7290/59o544g8j<2>2?907d=jf;29 <2f2=?n7c7;9;47?>o4ml0;6)7;a;66a>h><00=965f3da94?">26;94;h1fe?6=,0>j69;j;o;7=?0?32c8i44?:%;7e?22m2d284499:9j7`>=83.28l4;5d9m=1?=>h10e>k8:18'=1g=<3:1(4:n:57f?k?313!?3i3>>i6`64885`>=n;l>1<7*64`871`=i1=31:h54i2g0>5<#1=k188k4n86:>3`<3`9n<7>5$86b>13b3g3?579?;:k0`c<72-3?m7::e:l:0<<0921b?ik50;&:0d<3=l1e59757398m6bc290/59o544g8j<2>2>907d=kc;29 <2f2=?n7c7;9;57?>o4lk0;6)7;a;66a>h><00<965f3ec94?">26:94;h1gj69;j;o;7=?1?32c8h:4?:%;7e?22m2d284489:9j7a3=83.28l4;5d9m=1?=?h10e>j;:18'=1g=<!?3i3>>i6`64884`>=n;m;1<7*64`871`=i1=31;h54i2f3>5<#1=k188k4n86:>2`<3`9hj7>5$86b>13b3g3?576?;:k0g`<72-3?m7::e:l:0<21907d=la;29 <2f2=?n7c7;9;:7?>o4k00;6)7;a;66a>h><003965f3b:94?">26594;h1`2?6=,0>j69;j;o;7=?>?32c8o84?:%;7e?22m2d284479:9j7f2=83.28l4;5d9m=1?=0h10e>m<:18'=1g=<!?3i3>>i6`6488;`>=n;kl1<7*64`871`=i1=314h54i2`f>5<#1=k188k4n86:>=`<3`9ih7>5$86b>13b3g3?577?;:k0ff<72-3?m7::e:l:0<<>921b?ol50;&:0d<3=l1e59759398m6df290/59o544g8j<2>20907d=m9;29 <2f2=?n7c7;9;;7?>o4j10;6)7;a;66a>h><002965f3c594?">26494;h1a0?6=,0>j69;j;o;7=???32c8n>4?:%;7e?22m2d284469:9j7g4=83.28l4;5d9m=1?=1h10e>l>:18'=1g=<!?3i3>>i6`6488:`>=n;ho1<7*64`871`=i1=315h54i2cg>5<#1=k188k4n86:><`<3`9jo7>5$86b>13b3g3?57o?;:k0eg<72-3?m7::e:l:0<2h907d=n7;29 <2f2=?n7c7;9;c7?>o4i?0;6)7;a;66a>h><00j965f3`794?">26l94;h1b7?6=,0>j69;j;o;7=?g?32c8m?4?:%;7e?22m2d2844n9:9j7d7=83.28l4;5d9m=1?=ih10e>o?:18'=1g=<m3:1(4:n:57f?k?313kh76g<9e83>!?3i3>>i6`6488b`>=n;0i1<7*64`871`=i1=31mh54i2;a>5<#1=k188k4n86:>d`<3`92m7>5$86b>13b3g3?57l?;:k0=<<72-3?m7::e:l:0<2k907d=66;29 <2f2=?n7c7;9;`7?>o41<0;6)7;a;66a>h><00i965f38194?">26o94;h1:5?6=,0>j69;j;o;7=?d?32c85=4?:%;7e?22m2d2844m9:9j7=`=83.28l4;5d9m=1?=jh10e>6j:18'=1g=<!?3i3>>i6`6488a`>=n;1h1<7*64`871`=i1=31nh54i2:b>5<#1=k188k4n86:>g`<3`9347>5$86b>13b3g3?57m?;:k0<2<72-3?m7::e:l:0<2290/59o544g8j<2>2j907d=74;29 <2f2=?n7c7;9;a7?>o40:0;6)7;a;66a>h><00h965f39094?">26n94;h1;4?6=,0>j69;j;o;7=?e?32c8;k4?:%;7e?22m2d2844l9:9j72b=83.28l4;5d9m=1?=kh10e>9l:18'=1g=<!?3i3>>i6`6488``>=n;>31<7*64`871`=i1=31oh54i25;>5<#1=k188k4n86:>f`<3`9<;7>5$86b>13b3g3?57j?;:k033<72-3?m7::e:l:0<2m907d=81;29 <2f2=?n7c7;9;f7?>o4?90;6)7;a;66a>h><00o965f37d94?">26i94;h15`?6=,0>j69;j;o;7=?b?32c8:n4?:%;7e?22m2d2844k9:9j73d=83.28l4;5d9m=1?=lh10e>8n:18'=1g=<!?3i3>>i6`6488g`>=n;?<1<7*64`871`=i1=31hh54i246>5<#1=k188k4n86:>a`<3`9=87>5$86b>13b3g3?57k?;:k026<72-3?m7::e:l:0<2l907d=90;29 <2f2=?n7c7;9;g7?>o4=o0;6)7;a;66a>h><00n965f34g94?">26h94;h16f?6=,0>j69;j;o;7=?c?32c89l4?:%;7e?22m2d2844j9:9j70?=83.28l4;5d9m=1?=mh10e>;7:18'=1g=<!?3i3>>i6`6488f`>=n;5<#1=k188k4n86:>``<3`9>?7>5$86b>13b3g3?57h?;:k017<72-3?m7::e:l:0<50;&:0d<3=l1e5975f398m62a290/59o544g8j<2>2o907d=;e;29 <2f2=?n7c7;9;d7?>o4h><00m965f35a94?">i6=4+95c900c26k94;h17e?6=,0>j69;j;o;7=?`?32c8844?:%;7e?22m2d2844i9:9j71>=83.28l4;5d9m=1?=nh10e>:8:18'=1g=<!?3i3>>i6`6488e`>=n;=91<7*64`871`=i1=31jh54i261>5<#1=k188k4n86:>c`<3`9?=7>5$86b>13b3g3?57??0:9j716=83.28l4;5d9m=1?=99;07d==n;:o1<7*64`871`=i1=31===4;h10`?6=,0>j69;j;o;7=?77<21b?>m50;&:0d<3=l1e59751178?l54i3:1(4:n:57f?k?313;;:65f32;94?">5$86b>13b3g3?57??8:9j761=83.28l4;5d9m=1?=99307d=<6;29 <2f2=?n7c7;9;33e>=n;:?1<7*64`871`=i1=31==l4;h100?6=,0>j69;j;o;7=?77k21b?>=50;&:0d<3=l1e597511f8?l54:3:1(4:n:57f?k?313;;i65f32394?">5$86b>13b3g3?57?>0:9j77c=83.28l4;5d9m=1?=98;07d==d;29 <2f2=?n7c7;9;326>=n;;i1<7*64`871`=i1=31=<=4;h11f?6=,0>j69;j;o;7=?76<21b??o50;&:0d<3=l1e59751078?l5513:1(4:n:57f?k?313;::65f33:94?">5$86b>13b3g3?57?>8:9j770=83.28l4;5d9m=1?=98307d==4;29 <2f2=?n7c7;9;32e>=n;;91<7*64`871`=i1=31=j69;j;o;7=?76k21b???50;&:0d<3=l1e597510f8?l5583:1(4:n:57f?k?313;:i65f30d94?">5$86b>13b3g3?57?=0:9j74b=83.28l4;5d9m=1?=9;;07d=>c;29 <2f2=?n7c7;9;316>=n;8h1<7*64`871`=i1=31=?=4;h12=?6=,0>j69;j;o;7=?75<21b?<650;&:0d<3=l1e59751378?l56?3:1(4:n:57f?k?313;9:65f30494?">5$86b>13b3g3?57?=8:9j742=83.28l4;5d9m=1?=9;307d=>3;29 <2f2=?n7c7;9;31e>=n;881<7*64`871`=i1=31=?l4;h125?6=,0>j69;j;o;7=?75k21b?<>50;&:0d<3=l1e597513f8?l57m3:1(4:n:57f?k?313;9i65f31f94?">5$86b>13b3g3?57?<0:9j75d=83.28l4;5d9m=1?=9:;07d=?a;29 <2f2=?n7c7;9;306>=n;931<7*64`871`=i1=31=>=4;h13j69;j;o;7=?74<21b?=950;&:0d<3=l1e59751278?l57>3:1(4:n:57f?k?313;8:65f31794?">7>5$86b>13b3g3?57?<8:9j757=83.28l4;5d9m=1?=9:307d=?0;29 <2f2=?n7c7;9;30e>=n:ol1<7*64`871`=i1=31=>l4;h0ea?6=,0>j69;j;o;7=?74k21b>kj50;&:0d<3=l1e597512f8?l4ak3:1(4:n:57f?k?313;8i65f2g`94?">5$86b>13b3g3?57?;0:9j6c?=83.28l4;5d9m=1?=9=;07d=n:o<1<7*64`871`=i1=31=9=4;h0e1?6=,0>j69;j;o;7=?73<21b>k:50;&:0d<3=l1e59751578?l4a;3:1(4:n:57f?k?313;?:65f2g094?">5$86b>13b3g3?57?;8:9j6c6=83.28l4;5d9m=1?=9=307d=n:lo1<7*64`871`=i1=31=9l4;h0fg?6=,0>j69;j;o;7=?73k21b>hl50;&:0d<3=l1e597515f8?l4bi3:1(4:n:57f?k?313;?i65f2d;94?">5$86b>13b3g3?57?:0:9j6`1=83.28l4;5d9m=1?=9<;07d=n:l?1<7*64`871`=i1=31=8=4;h0f0?6=,0>j69;j;o;7=?72<21b>h=50;&:0d<3=l1e59751478?l4b93:1(4:n:57f?k?313;>:65f2d294?">5$86b>13b3g3?57?:8:9j6ac=83.28l4;5d9m=1?=9<307d=n:mi1<7*64`871`=i1=31=8l4;h0gf?6=,0>j69;j;o;7=?72k21b>io50;&:0d<3=l1e597514f8?l4c13:1(4:n:57f?k?313;>i65f2e:94?">5$86b>13b3g3?57?90:9j6a3=83.28l4;5d9m=1?=9?;07d=n:m91<7*64`871`=i1=31=;=4;h0g6?6=,0>j69;j;o;7=?71<21b>i?50;&:0d<3=l1e59751778?l4c83:1(4:n:57f?k?313;=:65f2bd94?">5$86b>13b3g3?57?98:9j6fb=83.28l4;5d9m=1?=9?307d=n:jk1<7*64`871`=i1=31=;l4;h0`=?6=,0>j69;j;o;7=?71k21b>n650;&:0d<3=l1e597517f8?l4d?3:1(4:n:57f?k?313;=i65f2b494?">5$86b>13b3g3?57?80:9j6f2=83.28l4;5d9m=1?=9>;07d=n:j81<7*64`871`=i1=31=:=4;h0`4?6=,0>j69;j;o;7=?70<21b>oh50;&:0d<3=l1e59751678?l4em3:1(4:n:57f?k?313;<:65f2cf94?">5$86b>13b3g3?57?88:9j6gd=83.28l4;5d9m=1?=9>307d=n:k31<7*64`871`=i1=31=:l4;h0aj69;j;o;7=?70k21b>o950;&:0d<3=l1e597516f8?l4e=3:1(4:n:57f?k?313;5$86b>13b3g3?57?70:9j6g4=83.28l4;5d9m=1?=91;07d=n:k:1<7*64`871`=i1=31=5=4;h0bb?6=,0>j69;j;o;7=?7?<21b>lk50;&:0d<3=l1e59751978?l4fl3:1(4:n:57f?k?313;3:65f2`a94?">5$86b>13b3g3?57?78:9j6d?=83.28l4;5d9m=1?=91307d=n:h=1<7*64`871`=i1=31=5l4;h0b2?6=,0>j69;j;o;7=?7?k21b>l;50;&:0d<3=l1e597519f8?l4f<3:1(4:n:57f?k?313;3i65f2`194?">7>5$86b>13b3g3?57?60:9j6d7=83.28l4;5d9m=1?=90;07d<6f;29 <2f2=?n7c7;9;3:6>=n:0o1<7*64`871`=i1=31=4=4;h0:`?6=,0>j69;j;o;7=?7><21b>4m50;&:0d<3=l1e59751878?l4>j3:1(4:n:57f?k?313;2:65f28c94?">5$86b>13b3g3?57?68:9j6<>=83.28l4;5d9m=1?=90307d<67;29 <2f2=?n7c7;9;3:e>=n:0<1<7*64`871`=i1=31=4l4;h6:0?6=,0>j69;j;o;7=?7>k21b84=50;&:0d<3=l1e597518f8?l2>:3:1(4:n:57f?k?313;2i65f48394?">2<7>5$86b>13b3g3?57?n0:9j0=`=83.28l4;5d9m=1?=9h;07d:7e;29 <2f2=?n7c7;9;3b6>=n<1n1<7*64`871`=i1=31=l=4;h6;g?6=,0>j69;j;o;7=?7f<21b85l50;&:0d<3=l1e59751`78?l2?13:1(4:n:57f?k?313;j:65f49:94?">3;7>5$86b>13b3g3?57?n8:9j0=0=83.28l4;5d9m=1?=9h307d:75;29 <2f2=?n7c7;9;3be>=n<1>1<7*64`871`=i1=31=ll4;h6;7?6=,0>j69;j;o;7=?7fk21b85<50;&:0d<3=l1e59751`f8?l2?93:1(4:n:57f?k?313;ji65f49294?">5$86b>13b3g3?57?m0:9j02b=83.28l4;5d9m=1?=9k;07d:8c;29 <2f2=?n7c7;9;3a6>=n<>h1<7*64`871`=i1=31=o=4;h64e?6=,0>j69;j;o;7=?7e<21b8:750;&:0d<3=l1e59751c78?l2003:1(4:n:57f?k?313;i:65f46594?"><:7>5$86b>13b3g3?57?m8:9j023=83.28l4;5d9m=1?=9k307d:83;29 <2f2=?n7c7;9;3ae>=n<>81<7*64`871`=i1=31=ol4;h645?6=,0>j69;j;o;7=?7ek21b8:>50;&:0d<3=l1e59751cf8?l21n3:1(4:n:57f?k?313;ii65f47g94?">=h7>5$86b>13b3g3?57?l0:9j03e=83.28l4;5d9m=1?=9j;07d:9b;29 <2f2=?n7c7;9;3`6>=nj69;j;o;7=?7d<21b8;950;&:0d<3=l1e59751b78?l21>3:1(4:n:57f?k?313;h:65f47794?">=87>5$86b>13b3g3?57?l8:9j035=83.28l4;5d9m=1?=9j307d:92;29 <2f2=?n7c7;9;3`e>=nj69;j;o;7=?7dk21b88m50;&:0d<3=l1e59751bf8?l2283:1(4:n:57f?k?313;hi65f45794?">8m7>5$86b>13b3g3?57?k0:9j07`=83.28l4;5d9m=1?=9m;07d:=4;29 <2f2=?n7c7;9;3g6>=n<831<7*64`871`=i1=31=i=4;h63a?6=,0>j69;j;o;7=?7c<21b8==50;&:0d<3=l1e59751e78?l5a03:1(4:n:57f?k?313;o:65f3df94?">5$86b>13b3g3?57?k8:9j7a0=83.28l4;5d9m=1?=9m307d=lb;29 <2f2=?n7c7;9;3ge>=n;j:1<7*64`871`=i1=31=il4;h1a1?6=,0>j69;j;o;7=?7ck21b?lo50;&:0d<3=l1e59751ef8?l5>n3:1(4:n:57f?k?313;oi65f38694?">5$86b>13b3g3?57?j0:9j72c=83.28l4;5d9m=1?=9l;07d=82;29 <2f2=?n7c7;9;3f6>=n;?=1<7*64`871`=i1=31=h=4;h16g?6=,0>j69;j;o;7=?7b<21b?8?50;&:0d<3=l1e59751d78?l53>3:1(4:n:57f?k?313;n:65f32`94?">5$86b>13b3g3?57?j8:9j773=83.28l4;5d9m=1?=9l307d=>a;29 <2f2=?n7c7;9;3fe>=n;9l1<7*64`871`=i1=31=hl4;h137?6=,0>j69;j;o;7=?7bk21b>k650;&:0d<3=l1e59751df8?l4bl3:1(4:n:57f?k?313;ni65f2d094?">5$86b>13b3g3?57?i0:9j6fe=83.28l4;5d9m=1?=9o;07d=n:k<1<7*64`871`=i1=31=k=4;h0bf?6=,0>j69;j;o;7=?7a<21b>l>50;&:0d<3=l1e59751g78?l2>=3:1(4:n:57f?k?313;m:65f49c94?">5$86b>13b3g3?57?i8:9j022=83.28l4;5d9m=1?=9o307d:99;29 <2f2=?n7c7;9;3ee>=n<<;1<7*64`871`=i1=31=kl4;h1f6?6=,0>j69;j;o;7=?7ak21b?:=50;&:0d<3=l1e59751gf8?l57<3:1(4:n:57f?k?313;mi65f28794?">:6=44i9gf>5<k<1<7*64`85f0=i1=31<65`6c694?">=h>k81<7*64`85f0=i1=31>65`6c394?">=h>k:1<7*64`85f0=i1=31865`6`d94?">=h>ho1<7*64`85f0=i1=31:65`6`f94?">=h>hi1<7*64`85f0=i1=31465`6``94?">=h>hk1<7*64`85f0=i1=31m65`6`;94?">=h>h<1<7*64`85f0=i1=31o65`6`794?">=h>h>1<7*64`85f0=i1=31i65`6`194?">=h>h81<7*64`85f0=i1=31==54o7c2>5<#1=k1:o;4n86:>47<3f5$86b>3d23g3?57?=;:m5=c<72-3?m78m5:l:0<<6;21d:4k50;&:0d<1j<1e59751598k3?c290/59o56c78j<2>28?07b86b;29 <2f2?h>7c7;9;35?>i11h0;6)7;a;4a1>h><00:;65`68;94?">26<74;n4:3?6=,0>j6;l:;o;7=?7f32e=5;4?:%;7e?0e=2d2844>b:9l2<3=83.28l49b49m=1?=9j10c;7;:18'=1g=>k?0b4:6:0f8?j0>;3:1(4:n:7`6?k?313;n76a99383>!?3i3=h>0:1<7*64`85f0=i1=31>=54o7:e>5<#1=k1:o;4n86:>77<3f<3i7>5$86b>3d23g3?57<=;:m5e290/59o56c78j<2>2;?07b87a;29 <2f2?h>7c7;9;05?>i1000;6)7;a;4a1>h><009;65`69:94?">26?74;n4;1?6=,0>j6;l:;o;7=?4f32e=494?:%;7e?0e=2d2844=b:9l2=5=83.28l49b49m=1?=:j10c;6=:18'=1g=>k?0b4:6:3f8?j0?93:1(4:n:7`6?k?3138n76a98183>!?3i3=h>>l1<7*64`85f0=i1=31?=54o75f>5<#1=k1:o;4n86:>67<3f<5$86b>3d23g3?57==;:m53f<72-3?m78m5:l:0<<4;21d::o50;&:0d<1j<1e59753598k31>290/59o56c78j<2>2:?07b888;29 <2f2?h>7c7;9;15?>i1?>0;6)7;a;4a1>h><008;65`66494?">6=4+95c92g326>74;n440?6=,0>j6;l:;o;7=?5f32e=;>4?:%;7e?0e=2d2844:18'=1g=>k?0b4:6:2f8?j01n3:1(4:n:7`6?k?3139n76a96d83>!?3i3=h>?n1<7*64`85f0=i1=318=54o74`>5<#1=k1:o;4n86:>17<3f<=n7>5$86b>3d23g3?57:=;:m52d<72-3?m78m5:l:0<<3;21d:;750;&:0d<1j<1e59754598k30?290/59o56c78j<2>2=?07b897;29 <2f2?h>7c7;9;65?>i1>?0;6)7;a;4a1>h><00?;65`67694?">26974;n456?6=,0>j6;l:;o;7=?2f32e=:<4?:%;7e?0e=2d2844;b:9l236=83.28l49b49m=1?=k?0b4:6:5f8?j02m3:1(4:n:7`6?k?313>n76a95e83>!?3i3=h>5<#1=k1:o;4n86:>07<3f<>57>5$86b>3d23g3?57;=;:m51=<72-3?m78m5:l:0<<2;21d:8950;&:0d<1j<1e59755598k331290/59o56c78j<2>27c7;9;75?>i1==0;6)7;a;4a1>h><00>;65`64194?">26874;n465?6=,0>j6;l:;o;7=?3f32e=9=4?:%;7e?0e=2d2844:b:9l21c=83.28l49b49m=1?==j10c;:k:18'=1g=>k?0b4:6:4f8?j03k3:1(4:n:7`6?k?313?n76a94c83>!?3i3=h>=k1<7*64`85f0=i1=31:=54o76:>5<#1=k1:o;4n86:>37<3f5$86b>3d23g3?578=;:m502<72-3?m78m5:l:0<<1;21d:9850;&:0d<1j<1e59756598k322290/59o56c78j<2>2??07b8;3;29 <2f2?h>7c7;9;45?>i1<;0;6)7;a;4a1>h><00=;65`65394?">;6=4+95c92g326;74;n40b?6=,0>j6;l:;o;7=?0f32e=?h4?:%;7e?0e=2d28449b:9l26b=83.28l49b49m=1?=>j10c;=l:18'=1g=>k?0b4:6:7f8?j04j3:1(4:n:7`6?k?313!?3i3=h>:=1<7*64`85f0=i1=31;=54o715>5<#1=k1:o;4n86:>27<3f<897>5$86b>3d23g3?579=;:m571<72-3?m78m5:l:0<<0;21d:>=50;&:0d<1j<1e59757598k355290/59o56c78j<2>2>?07b8<1;29 <2f2?h>7c7;9;55?>i1;90;6)7;a;4a1>h><00<;65`63d94?">26:74;n41g?6=,0>j6;l:;o;7=?1f32e=>o4?:%;7e?0e=2d28448b:9l27g=83.28l49b49m=1?=?j10c;<6:18'=1g=>k?0b4:6:6f8?j0503:1(4:n:7`6?k?313=n76a92683>!?3i3=h>;<1<7*64`85f0=i1=314=54o706>5<#1=k1:o;4n86:>=7<3f<987>5$86b>3d23g3?576=;:m566<72-3?m78m5:l:0<21?07b8>f;29 <2f2?h>7c7;9;:5?>i19l0;6)7;a;4a1>h><003;65`60f94?">26574;n42f?6=,0>j6;l:;o;7=?>f32e==l4?:%;7e?0e=2d28447b:9l24?=83.28l49b49m=1?=0j10c;?7:18'=1g=>k?0b4:6:9f8?j06>3:1(4:n:7`6?k?3132n76a91483>!?3i3=h>8>1<7*64`85f0=i1=315=54o730>5<#1=k1:o;4n86:><7<3f<:>7>5$86b>3d23g3?577=;:m554<72-3?m78m5:l:0<<>;21d:<>50;&:0d<1j<1e59759598k36a290/59o56c78j<2>20?07b8?e;29 <2f2?h>7c7;9;;5?>i18m0;6)7;a;4a1>h><002;65`61`94?">26474;n43=?6=,0>j6;l:;o;7=??f32e=<54?:%;7e?0e=2d28446b:9l251=83.28l49b49m=1?=1j10c;>9:18'=1g=>k?0b4:6:8f8?j07=3:1(4:n:7`6?k?3133n76a90583>!?3i3=h>991<7*64`85f0=i1=31m=54o721>5<#1=k1:o;4n86:>d7<3f<;<7>5$86b>3d23g3?57o=;:m6bc<72-3?m78m5:l:0<2h?07b;ic;29 <2f2?h>7c7;9;c5?>i2nk0;6)7;a;4a1>h><00j;65`5gc94?">26l74;n7ej6;l:;o;7=?gf32e>j:4?:%;7e?0e=2d2844nb:9l1c3=83.28l49b49m=1?=ij10c8h;:18'=1g=>k?0b4:6:`f8?j3a;3:1(4:n:7`6?k?313kn76a:f383>!?3i3=h=o;1<7*64`85f0=i1=31n=54o4d3>5<#1=k1:o;4n86:>g7<3f?nj7>5$86b>3d23g3?57l=;:m6a`<72-3?m78m5:l:0<2k?07b;ja;29 <2f2?h>7c7;9;`5?>i2m00;6)7;a;4a1>h><00i;65`5d:94?">26o74;n7f2?6=,0>j6;l:;o;7=?df32e>i84?:%;7e?0e=2d2844mb:9l1`2=83.28l49b49m=1?=jj10c8k<:18'=1g=>k?0b4:6:cf8?j3b:3:1(4:n:7`6?k?313hn76a:e083>!?3i3=h=ml1<7*64`85f0=i1=31o=54o4ff>5<#1=k1:o;4n86:>f7<3f?oh7>5$86b>3d23g3?57m=;:m6`f<72-3?m78m5:l:0<2j?07b;k9;29 <2f2?h>7c7;9;a5?>i2l10;6)7;a;4a1>h><00h;65`5e594?">26n74;n7g0?6=,0>j6;l:;o;7=?ef32e>h>4?:%;7e?0e=2d2844lb:9l1a4=83.28l49b49m=1?=kj10c8j>:18'=1g=>k?0b4:6:bf8?j3c83:1(4:n:7`6?k?313in76a:cg83>!?3i3=h=jo1<7*64`85f0=i1=31h=54o4ag>5<#1=k1:o;4n86:>a7<3f?ho7>5$86b>3d23g3?57j=;:m6gg<72-3?m78m5:l:0<2m?07b;l6;29 <2f2?h>7c7;9;f5?>i2k<0;6)7;a;4a1>h><00o;65`5b694?">26i74;n7`6?6=,0>j6;l:;o;7=?bf32e>o<4?:%;7e?0e=2d2844kb:9l1f6=83.28l49b49m=1?=lj10c8li:18'=1g=>k?0b4:6:ef8?j3el3:1(4:n:7`6?k?313nn76a:bb83>!?3i3=h=kh1<7*64`85f0=i1=31i=54o4`b>5<#1=k1:o;4n86:>`7<3f?i57>5$86b>3d23g3?57k=;:m6f=<72-3?m78m5:l:0<2l?07b;m5;29 <2f2?h>7c7;9;g5?>i2j=0;6)7;a;4a1>h><00n;65`5c094?">26h74;n7a4?6=,0>j6;l:;o;7=?cf32e>mk4?:%;7e?0e=2d2844jb:9l1dc=83.28l49b49m=1?=mj10c8ok:18'=1g=>k?0b4:6:df8?j3fk3:1(4:n:7`6?k?313on76a:ac83>!?3i3=h=hk1<7*64`85f0=i1=31j=54o4c:>5<#1=k1:o;4n86:>c7<3f?j;7>5$86b>3d23g3?57h=;:m6e3<72-3?m78m5:l:0<2o?07b;n3;29 <2f2?h>7c7;9;d5?>i2i;0;6)7;a;4a1>h><00m;65`5`394?">26k74;n7:b?6=,0>j6;l:;o;7=?`f32e>5h4?:%;7e?0e=2d2844ib:9l1k?0b4:6:gf8?j3>i3:1(4:n:7`6?k?313ln76a:9883>!?3i3=h=021<7*64`85f0=i1=31==>4;n7:3?6=,0>j6;l:;o;7=?77921d94850;&:0d<1j<1e59751108?j3>=3:1(4:n:7`6?k?313;;?65`58694?">5$86b>3d23g3?57??5:9l1<7=83.28l49b49m=1?=99<07b;60;29 <2f2?h>7c7;9;333>=h=1l1<7*64`85f0=i1=31==64;n7;a?6=,0>j6;l:;o;7=?77121d95j50;&:0d<1j<1e597511c8?j3?k3:1(4:n:7`6?k?313;;n65`59`94?">5$86b>3d23g3?57??d:9l1=?=83.28l49b49m=1?=99o07b;78;29 <2f2?h>7c7;9;33b>=h=1<1<7*64`85f0=i1=31=<>4;n7;1?6=,0>j6;l:;o;7=?76921d95:50;&:0d<1j<1e59751008?j3?;3:1(4:n:7`6?k?313;:?65`59094?">5$86b>3d23g3?57?>5:9l1=6=83.28l49b49m=1?=98<07b;8f;29 <2f2?h>7c7;9;323>=h=>o1<7*64`85f0=i1=31=<64;n74`?6=,0>j6;l:;o;7=?76121d9:l50;&:0d<1j<1e597510c8?j30i3:1(4:n:7`6?k?313;:n65`56;94?">5$86b>3d23g3?57?>d:9l121=83.28l49b49m=1?=98o07b;86;29 <2f2?h>7c7;9;32b>=h=>?1<7*64`85f0=i1=31=?>4;n740?6=,0>j6;l:;o;7=?75921d9:=50;&:0d<1j<1e59751308?j30:3:1(4:n:7`6?k?313;9?65`56294?">5$86b>3d23g3?57?=5:9l13c=83.28l49b49m=1?=9;<07b;9d;29 <2f2?h>7c7;9;313>=h=?i1<7*64`85f0=i1=31=?64;n75f?6=,0>j6;l:;o;7=?75121d9;o50;&:0d<1j<1e597513c8?j3113:1(4:n:7`6?k?313;9n65`57:94?">5$86b>3d23g3?57?=d:9l133=83.28l49b49m=1?=9;o07b;94;29 <2f2?h>7c7;9;31b>=h=?91<7*64`85f0=i1=31=>>4;n756?6=,0>j6;l:;o;7=?74921d9;?50;&:0d<1j<1e59751208?j3183:1(4:n:7`6?k?313;8?65`54d94?">i7>5$86b>3d23g3?57?<5:9l10b=83.28l49b49m=1?=9:<07b;:c;29 <2f2?h>7c7;9;303>=h=<31<7*64`85f0=i1=31=>64;n76j6;l:;o;7=?74121d98950;&:0d<1j<1e597512c8?j32>3:1(4:n:7`6?k?313;8n65`54794?">87>5$86b>3d23g3?57?7c7;9;30b>=h=<;1<7*64`85f0=i1=31=9>4;n764?6=,0>j6;l:;o;7=?73921d99k50;&:0d<1j<1e59751508?j33l3:1(4:n:7`6?k?313;??65`55a94?">5$86b>3d23g3?57?;5:9l11g=83.28l49b49m=1?=9=<07b;;9;29 <2f2?h>7c7;9;373>=h==21<7*64`85f0=i1=31=964;n773?6=,0>j6;l:;o;7=?73121d99850;&:0d<1j<1e597515c8?j33=3:1(4:n:7`6?k?313;?n65`55194?">7>5$86b>3d23g3?57?;d:9l117=83.28l49b49m=1?=9=o07b;;0;29 <2f2?h>7c7;9;37b>=h=:l1<7*64`85f0=i1=31=8>4;n70a?6=,0>j6;l:;o;7=?72921d9>j50;&:0d<1j<1e59751408?j34k3:1(4:n:7`6?k?313;>?65`52`94?">5$86b>3d23g3?57?:5:9l16>=83.28l49b49m=1?=9<<07b;<7;29 <2f2?h>7c7;9;363>=h=:<1<7*64`85f0=i1=31=864;n701?6=,0>j6;l:;o;7=?72121d9>:50;&:0d<1j<1e597514c8?j34;3:1(4:n:7`6?k?313;>n65`52094?">5$86b>3d23g3?57?:d:9l166=83.28l49b49m=1?=97c7;9;36b>=h=;n1<7*64`85f0=i1=31=;>4;n71g?6=,0>j6;l:;o;7=?71921d9?l50;&:0d<1j<1e59751708?j35i3:1(4:n:7`6?k?313;=?65`53;94?">5$86b>3d23g3?57?95:9l171=83.28l49b49m=1?=9?<07b;=6;29 <2f2?h>7c7;9;353>=h=;?1<7*64`85f0=i1=31=;64;n710?6=,0>j6;l:;o;7=?71121d9?<50;&:0d<1j<1e597517c8?j3593:1(4:n:7`6?k?313;=n65`53294?">5$86b>3d23g3?57?9d:9l14c=83.28l49b49m=1?=9?o07b;>d;29 <2f2?h>7c7;9;35b>=h=8i1<7*64`85f0=i1=31=:>4;n72f?6=,0>j6;l:;o;7=?70921d95$86b>3d23g3?57?85:9l143=83.28l49b49m=1?=9><07b;>4;29 <2f2?h>7c7;9;343>=h=891<7*64`85f0=i1=31=:64;n726?6=,0>j6;l:;o;7=?70121d95$86b>3d23g3?57?8d:9l15e=83.28l49b49m=1?=9>o07b;?b;29 <2f2?h>7c7;9;34b>=h=9k1<7*64`85f0=i1=31=5>4;n73=?6=,0>j6;l:;o;7=?7?921d9=650;&:0d<1j<1e59751908?j37?3:1(4:n:7`6?k?313;3?65`51494?">5$86b>3d23g3?57?75:9l152=83.28l49b49m=1?=91<07b;?3;29 <2f2?h>7c7;9;3;3>=h=9;1<7*64`85f0=i1=31=564;n734?6=,0>j6;l:;o;7=?7?121d8kh50;&:0d<1j<1e597519c8?j2am3:1(4:n:7`6?k?313;3n65`4gf94?">mo7>5$86b>3d23g3?57?7d:9l0cd=83.28l49b49m=1?=91o07b:ia;29 <2f2?h>7c7;9;3;b>=h4;n6ej6;l:;o;7=?7>921d8k850;&:0d<1j<1e59751808?j2a=3:1(4:n:7`6?k?313;2?65`4g694?">m?7>5$86b>3d23g3?57?65:9l0c4=83.28l49b49m=1?=90<07b:i1;29 <2f2?h>7c7;9;3:3>=hj6;l:;o;7=?7>121d8hk50;&:0d<1j<1e597518c8?j2bl3:1(4:n:7`6?k?313;2n65`6d`94?">5$86b>3d23g3?57?6d:9l2`?=83.28l49b49m=1?=90o07b8j8;29 <2f2?h>7c7;9;3:b>=h>l=1<7*64`85f0=i1=31=l>4;n4f2?6=,0>j6;l:;o;7=?7f921d:h;50;&:0d<1j<1e59751`08?j0b<3:1(4:n:7`6?k?313;j?65`6d194?">7>5$86b>3d23g3?57?n5:9l2`6=83.28l49b49m=1?=9h<07b8kf;29 <2f2?h>7c7;9;3b3>=h>mo1<7*64`85f0=i1=31=l64;n4g`?6=,0>j6;l:;o;7=?7f121d:im50;&:0d<1j<1e59751`c8?j0cj3:1(4:n:7`6?k?313;jn65`6ec94?">5$86b>3d23g3?57?nd:9l2a>=83.28l49b49m=1?=9ho07b8k7;29 <2f2?h>7c7;9;3bb>=h>m?1<7*64`85f0=i1=31=o>4;n4g0?6=,0>j6;l:;o;7=?7e921d:i=50;&:0d<1j<1e59751c08?j0c:3:1(4:n:7`6?k?313;i?65`6e394?">5$86b>3d23g3?57?m5:9l2f`=83.28l49b49m=1?=9k<07b8le;29 <2f2?h>7c7;9;3a3>=h>jn1<7*64`85f0=i1=31=o64;n4`g?6=,0>j6;l:;o;7=?7e121d:no50;&:0d<1j<1e59751cc8?j0d13:1(4:n:7`6?k?313;in65`6b:94?">5$86b>3d23g3?57?md:9l2f0=83.28l49b49m=1?=9ko07b8l5;29 <2f2?h>7c7;9;3ab>=h>j>1<7*64`85f0=i1=31=n>4;n4`7?6=,0>j6;l:;o;7=?7d921d:n<50;&:0d<1j<1e59751b08?j0d93:1(4:n:7`6?k?313;h?65`6cd94?">5$86b>3d23g3?57?l5:9l2gb=83.28l49b49m=1?=9j<07b8mc;29 <2f2?h>7c7;9;3`3>=h>kh1<7*64`85f0=i1=31=n64;n4ae?6=,0>j6;l:;o;7=?7d121d:o750;&:0d<1j<1e59751bc8?j0e03:1(4:n:7`6?k?313;hn65`6c594?">5$86b>3d23g3?57?ld:9l2d1=83.28l49b49m=1?=9jo07b86c;29 <2f2?h>7c7;9;3`b>=h>0;1<7*64`85f0=i1=31=i>4;n4;2?6=,0>j6;l:;o;7=?7c921d::l50;&:0d<1j<1e59751e08?j0083:1(4:n:7`6?k?313;o?65`67794?">m7>5$86b>3d23g3?57?k5:9l21`=83.28l49b49m=1?=9m<07b8;4;29 <2f2?h>7c7;9;3g3>=h>:21<7*64`85f0=i1=31=i64;n41`?6=,0>j6;l:;o;7=?7c121d:?<50;&:0d<1j<1e59751ec8?j06?3:1(4:n:7`6?k?313;on65`61a94?">5$86b>3d23g3?57?kd:9l1c0=83.28l49b49m=1?=9mo07b;jb;29 <2f2?h>7c7;9;3gb>=h=l:1<7*64`85f0=i1=31=h>4;n7g1?6=,0>j6;l:;o;7=?7b921d9n750;&:0d<1j<1e59751d08?j3em3:1(4:n:7`6?k?313;n?65`5c194?">5$86b>3d23g3?57?j5:9l17c7;9;3f3>=h=1=1<7*64`85f0=i1=31=h64;n74g?6=,0>j6;l:;o;7=?7b121d9:?50;&:0d<1j<1e59751dc8?j31>3:1(4:n:7`6?k?313;nn65`54c94?">5$86b>3d23g3?57?jd:9l112=83.28l49b49m=1?=9lo07b;<9;29 <2f2?h>7c7;9;3fb>=h=;o1<7*64`85f0=i1=31=k>4;n717?6=,0>j6;l:;o;7=?7a921d9<650;&:0d<1j<1e59751g08?j37l3:1(4:n:7`6?k?313;m?65`51094?">m;7>5$86b>3d23g3?57?i5:9l2`e=83.28l49b49m=1?=9o<07b8j1;29 <2f2?h>7c7;9;3e3>=h>m<1<7*64`85f0=i1=31=k64;n4`f?6=,0>j6;l:;o;7=?7a121d:n>50;&:0d<1j<1e59751gc8?j0f03:1(4:n:7`6?k?313;mn65`62;94?">5$86b>3d23g3?57?id:9l10d=83.28l49b49m=1?=9oo07b:jc;29 <2f2?h>7c7;9;3eb>=h0k=1<7*64`8;f3=i1=31<65`8c794?">=h0k91<7*64`8;f3=i1=31>65`8c094?">=h0k;1<7*64`8;f3=i1=31865`8c294?">=h0hl1<7*64`8;f3=i1=31:65`8`g94?">=h0hn1<7*64`8;f3=i1=31465`8`a94?">=h0hh1<7*64`8;f3=i1=31m65`8`c94?">=h0h=1<7*64`8;f3=i1=31o65`8`494?">=h0h?1<7*64`8;f3=i1=31i65`8`694?">=h0h91<7*64`8;f3=i1=31==54o9c1>5<#1=k14o84n86:>47<3f2j=7>5$86b>=d13g3?57?=;:m;e5<72-3?m76m6:l:0<<6;21d44h50;&:0d28?07b66c;29 <2f21h=7c7;9;35?>i?1k0;6)7;a;:a2>h><00:;65`88c94?">26<74;n::j65l9;o;7=?7f32e35:4?:%;7e?>e>2d2844>b:9l<<0=83.28l47b79m=1?=9j10c57::18'=1g=0k<0b4:6:0f8?j>><3:1(4:n:9`5?k?313;n76a79283>!?3i32i:6`64882b>=h00;1<7*64`8;f3=i1=31>=54o9;3>5<#1=k14o84n86:>77<3f23j7>5$86b>=d13g3?57<=;:m;<`<72-3?m76m6:l:0<<5;21d45j50;&:0dd290/59o58c48j<2>2;?07b67b;29 <2f21h=7c7;9;05?>i?0h0;6)7;a;:a2>h><009;65`89;94?">26?74;n:;2?6=,0>j65l9;o;7=?4f32e3484?:%;7e?>e>2d2844=b:9l<=2=83.28l47b79m=1?=:j10c56<:18'=1g=0k<0b4:6:3f8?j>?:3:1(4:n:9`5?k?3138n76a78083>!?3i32i:6`64881b>=h01:1<7*64`8;f3=i1=31?=54o95e>5<#1=k14o84n86:>67<3f25$86b>=d13g3?57==;:m;3a<72-3?m76m6:l:0<<4;21d4:l50;&:0d2:?07b689;29 <2f21h=7c7;9;15?>i??10;6)7;a;:a2>h><008;65`86594?">26>74;n:41?6=,0>j65l9;o;7=?5f32e3;94?:%;7e?>e>2d2844083:1(4:n:9`5?k?3139n76a76g83>!?3i32i:6`64880b>=h0?o1<7*64`8;f3=i1=318=54o94g>5<#1=k14o84n86:>17<3f2=o7>5$86b>=d13g3?57:=;:m;2g<72-3?m76m6:l:0<<3;21d4;o50;&:0d290/59o58c48j<2>2=?07b698;29 <2f21h=7c7;9;65?>i?>>0;6)7;a;:a2>h><00?;65`87794?">26974;n:57?6=,0>j65l9;o;7=?2f32e3:?4?:%;7e?>e>2d2844;b:9l<37=83.28l47b79m=1?=2n3:1(4:n:9`5?k?313>n76a75d83>!?3i32i:6`64887b>=h05<#1=k14o84n86:>07<3f2>m7>5$86b>=d13g3?57;=;:m;1<<72-3?m76m6:l:0<<2;21d48650;&:0d2i?=<0;6)7;a;:a2>h><00>;65`84694?">26874;n:66?6=,0>j65l9;o;7=?3f32e39<4?:%;7e?>e>2d2844:b:9l<1`=83.28l47b79m=1?==j10c5:j:18'=1g=0k<0b4:6:4f8?j>3l3:1(4:n:9`5?k?313?n76a74b83>!?3i32i:6`64886b>=h0=h1<7*64`8;f3=i1=31:=54o96b>5<#1=k14o84n86:>37<3f2?57>5$86b>=d13g3?578=;:m;0=<72-3?m76m6:l:0<<1;21d49950;&:0d2??07b6;4;29 <2f21h=7c7;9;45?>i?<:0;6)7;a;:a2>h><00=;65`85094?">:6=4+95c926;74;n:74?6=,0>j65l9;o;7=?0f32e3?k4?:%;7e?>e>2d28449b:9l<6c=83.28l47b79m=1?=>j10c5=k:18'=1g=0k<0b4:6:7f8?j>4k3:1(4:n:9`5?k?313!?3i32i:6`64885b>=h0:21<7*64`8;f3=i1=31;=54o914>5<#1=k14o84n86:>27<3f28:7>5$86b>=d13g3?579=;:m;70<72-3?m76m6:l:0<<0;21d4>:50;&:0d2>?07b6<2;29 <2f21h=7c7;9;55?>i?;80;6)7;a;:a2>h><00<;65`82294?">26:74;n:1`?6=,0>j65l9;o;7=?1f32e3>n4?:%;7e?>e>2d28448b:9l<7d=83.28l47b79m=1?=?j10c5513:1(4:n:9`5?k?313=n76a72983>!?3i32i:6`64884b>=h0;=1<7*64`8;f3=i1=314=54o905>5<#1=k14o84n86:>=7<3f2997>5$86b>=d13g3?576=;:m;61<72-3?m76m6:l:0<21?07b6=0;29 <2f21h=7c7;9;:5?>i?9o0;6)7;a;:a2>h><003;65`80g94?">26574;n:2g?6=,0>j65l9;o;7=?>f32e3=o4?:%;7e?>e>2d28447b:9l<4g=83.28l47b79m=1?=0j10c5?6:18'=1g=0k<0b4:6:9f8?j>6?3:1(4:n:9`5?k?3132n76a71783>!?3i32i:6`6488;b>=h08?1<7*64`8;f3=i1=315=54o937>5<#1=k14o84n86:><7<3f2:?7>5$86b>=d13g3?577=;:m;57<72-3?m76m6:l:0<<>;21d420?07b6?f;29 <2f21h=7c7;9;;5?>i?8l0;6)7;a;:a2>h><002;65`81a94?">26474;n:3e?6=,0>j65l9;o;7=??f32e3<44?:%;7e?>e>2d28446b:9l<5>=83.28l47b79m=1?=1j10c5>8:18'=1g=0k<0b4:6:8f8?j>7>3:1(4:n:9`5?k?3133n76a70483>!?3i32i:6`6488:b>=h09>1<7*64`8;f3=i1=31m=54o920>5<#1=k14o84n86:>d7<3f2;=7>5$86b>=d13g3?57o=;:m;45<72-3?m76m6:l:0<2h?07b9id;29 <2f21h=7c7;9;c5?>i0nj0;6)7;a;:a2>h><00j;65`7g`94?">lj6=4+95c926l74;n5e=?6=,0>j65l9;o;7=?gf32ee>2d2844nb:9l3c0=83.28l47b79m=1?=ij10c:h::18'=1g=0k<0b4:6:`f8?j1a<3:1(4:n:9`5?k?313kn76a8f283>!?3i32i:6`6488bb>=h?o81<7*64`8;f3=i1=31n=54o6d2>5<#1=k14o84n86:>g7<3f=m<7>5$86b>=d13g3?57l=;:m4ac<72-3?m76m6:l:0<2k?07b9jb;29 <2f21h=7c7;9;`5?>i0mh0;6)7;a;:a2>h><00i;65`7d;94?">o36=4+95c926o74;n5f3?6=,0>j65l9;o;7=?df32ee>2d2844mb:9l3`3=83.28l47b79m=1?=jj10c:k;:18'=1g=0k<0b4:6:cf8?j1b;3:1(4:n:9`5?k?313hn76a8e383>!?3i32i:6`6488ab>=h?l:1<7*64`8;f3=i1=31o=54o6fe>5<#1=k14o84n86:>f7<3f=oi7>5$86b>=d13g3?57m=;:m4`a<72-3?m76m6:l:0<2j?07b9ka;29 <2f21h=7c7;9;a5?>i0l00;6)7;a;:a2>h><00h;65`7e:94?">n<6=4+95c926n74;n5g1?6=,0>j65l9;o;7=?ef32ee>2d2844lb:9l3a5=83.28l47b79m=1?=kj10c:j=:18'=1g=0k<0b4:6:bf8?j1c93:1(4:n:9`5?k?313in76a8d183>!?3i32i:6`6488`b>=h?jl1<7*64`8;f3=i1=31h=54o6af>5<#1=k14o84n86:>a7<3f=hh7>5$86b>=d13g3?57j=;:m4gf<72-3?m76m6:l:0<2m?07b9l7;29 <2f21h=7c7;9;f5?>i0k?0;6)7;a;:a2>h><00o;65`7b794?">i?6=4+95c926i74;n5`7?6=,0>j65l9;o;7=?bf32ee>2d2844kb:9l3f7=83.28l47b79m=1?=lj10c:m?:18'=1g=0k<0b4:6:ef8?j1em3:1(4:n:9`5?k?313nn76a8be83>!?3i32i:6`6488gb>=h?ki1<7*64`8;f3=i1=31i=54o6`a>5<#1=k14o84n86:>`7<3f=im7>5$86b>=d13g3?57k=;:m4f<<72-3?m76m6:l:0<2l?07b9m6;29 <2f21h=7c7;9;g5?>i0j<0;6)7;a;:a2>h><00n;65`7c194?">h96=4+95c926h74;n5a5?6=,0>j65l9;o;7=?cf32ee>2d2844jb:9l3d`=83.28l47b79m=1?=mj10c:oj:18'=1g=0k<0b4:6:df8?j1fl3:1(4:n:9`5?k?313on76a8ab83>!?3i32i:6`6488fb>=h?hh1<7*64`8;f3=i1=31j=54o6cb>5<#1=k14o84n86:>c7<3f=j47>5$86b>=d13g3?57h=;:m4e2<72-3?m76m6:l:0<2o?07b9n4;29 <2f21h=7c7;9;d5?>i0i:0;6)7;a;:a2>h><00m;65`7`094?">k:6=4+95c926k74;n5b4?6=,0>j65l9;o;7=?`f32e<5k4?:%;7e?>e>2d2844ib:9l3j3:1(4:n:9`5?k?313ln76a89`83>!?3i32i:6`6488eb>=h?031<7*64`8;f3=i1=31==>4;n5:j65l9;o;7=?77921d;4950;&:0d>3:1(4:n:9`5?k?313;;?65`78794?">5$86b>=d13g3?57??5:9l3<4=83.28l47b79m=1?=99<07b961;29 <2f21h=7c7;9;333>=h?0:1<7*64`8;f3=i1=31==64;n5;b?6=,0>j65l9;o;7=?77121d;5k50;&:0d5$86b>=d13g3?57??d:9l3=g=83.28l47b79m=1?=99o07b979;29 <2f21h=7c7;9;33b>=h?1=1<7*64`8;f3=i1=31=<>4;n5;2?6=,0>j65l9;o;7=?76921d;5;50;&:0d7>5$86b>=d13g3?57?>5:9l3=7=83.28l47b79m=1?=98<07b970;29 <2f21h=7c7;9;323>=h?>l1<7*64`8;f3=i1=31=<64;n54a?6=,0>j65l9;o;7=?76121d;:m50;&:0d5$86b>=d13g3?57?>d:9l32>=83.28l47b79m=1?=98o07b987;29 <2f21h=7c7;9;32b>=h?><1<7*64`8;f3=i1=31=?>4;n541?6=,0>j65l9;o;7=?75921d;::50;&:0d5$86b>=d13g3?57?=5:9l33`=83.28l47b79m=1?=9;<07b99e;29 <2f21h=7c7;9;313>=h??n1<7*64`8;f3=i1=31=?64;n55g?6=,0>j65l9;o;7=?75121d;;l50;&:0d5$86b>=d13g3?57?=d:9l330=83.28l47b79m=1?=9;o07b995;29 <2f21h=7c7;9;31b>=h??>1<7*64`8;f3=i1=31=>>4;n557?6=,0>j65l9;o;7=?74921d;;<50;&:0dj7>5$86b>=d13g3?57?<5:9l30c=83.28l47b79m=1?=9:<07b9:d;29 <2f21h=7c7;9;303>=h?64;n56=?6=,0>j65l9;o;7=?74121d;8650;&:0d97>5$86b>=d13g3?57?=h?<81<7*64`8;f3=i1=31=9>4;n565?6=,0>j65l9;o;7=?73921d;9h50;&:0d5$86b>=d13g3?57?;5:9l31d=83.28l47b79m=1?=9=<07b9;a;29 <2f21h=7c7;9;373>=h?=31<7*64`8;f3=i1=31=964;n57j65l9;o;7=?73121d;9950;&:0d3:1(4:n:9`5?k?313;?n65`75694?">5$86b>=d13g3?57?;d:9l314=83.28l47b79m=1?=9=o07b9;1;29 <2f21h=7c7;9;37b>=h?=:1<7*64`8;f3=i1=31=8>4;n50b?6=,0>j65l9;o;7=?72921d;>k50;&:0d?65`72a94?">5$86b>=d13g3?57?:5:9l36?=83.28l47b79m=1?=9<<07b9<8;29 <2f21h=7c7;9;363>=h?:=1<7*64`8;f3=i1=31=864;n502?6=,0>j65l9;o;7=?72121d;>;50;&:0dn65`72194?">7>5$86b>=d13g3?57?:d:9l367=83.28l47b79m=1?=9=h?;o1<7*64`8;f3=i1=31=;>4;n51`?6=,0>j65l9;o;7=?71921d;?m50;&:0d5$86b>=d13g3?57?95:9l37>=83.28l47b79m=1?=9?<07b9=7;29 <2f21h=7c7;9;353>=h?;<1<7*64`8;f3=i1=31=;64;n511?6=,0>j65l9;o;7=?71121d;?=50;&:0d5$86b>=d13g3?57?9d:9l34`=83.28l47b79m=1?=9?o07b9>e;29 <2f21h=7c7;9;35b>=h?8n1<7*64`8;f3=i1=31=:>4;n52g?6=,0>j65l9;o;7=?70921d;5$86b>=d13g3?57?85:9l340=83.28l47b79m=1?=9><07b9>5;29 <2f21h=7c7;9;343>=h?8>1<7*64`8;f3=i1=31=:64;n527?6=,0>j65l9;o;7=?70121d;<<50;&:0d5$86b>=d13g3?57?8d:9l35b=83.28l47b79m=1?=9>o07b9?c;29 <2f21h=7c7;9;34b>=h?9h1<7*64`8;f3=i1=31=5>4;n53e?6=,0>j65l9;o;7=?7?921d;=750;&:0d5$86b>=d13g3?57?75:9l353=83.28l47b79m=1?=91<07b9?4;29 <2f21h=7c7;9;3;3>=h?981<7*64`8;f3=i1=31=564;n535?6=,0>j65l9;o;7=?7?121d;=>50;&:0d5$86b>=d13g3?57?7d:9l2ce=83.28l47b79m=1?=91o07b8ib;29 <2f21h=7c7;9;3;b>=h>ok1<7*64`8;f3=i1=31=4>4;n4e=?6=,0>j65l9;o;7=?7>921d:k950;&:0d3:1(4:n:9`5?k?313;2?65`6g794?">5$86b>=d13g3?57?65:9l2c5=83.28l47b79m=1?=90<07b8i2;29 <2f21h=7c7;9;3:3>=h>o;1<7*64`8;f3=i1=31=464;n4e4?6=,0>j65l9;o;7=?7>121d:hh50;&:0d5$86b>=d13g3?57?6d:9l<`g=83.28l47b79m=1?=90o07b6j9;29 <2f21h=7c7;9;3:b>=h0l21<7*64`8;f3=i1=31=l>4;n:f3?6=,0>j65l9;o;7=?7f921d4h850;&:0db=3:1(4:n:9`5?k?313;j?65`8d694?">5$86b>=d13g3?57?n5:9l<`7=83.28l47b79m=1?=9h<07b6j0;29 <2f21h=7c7;9;3b3>=h0ml1<7*64`8;f3=i1=31=l64;n:ga?6=,0>j65l9;o;7=?7f121d4ij50;&:0dck3:1(4:n:9`5?k?313;jn65`8e`94?">5$86b>=d13g3?57?nd:9l=h0m<1<7*64`8;f3=i1=31=o>4;n:g1?6=,0>j65l9;o;7=?7e921d4i:50;&:0dc;3:1(4:n:9`5?k?313;i?65`8e094?">5$86b>=d13g3?57?m5:9l=h0jo1<7*64`8;f3=i1=31=o64;n:``?6=,0>j65l9;o;7=?7e121d4nl50;&:0ddi3:1(4:n:9`5?k?313;in65`8b;94?">5$86b>=d13g3?57?md:9l=h0j?1<7*64`8;f3=i1=31=n>4;n:`0?6=,0>j65l9;o;7=?7d921d4n=50;&:0dd:3:1(4:n:9`5?k?313;h?65`8b294?">5$86b>=d13g3?57?l5:9l=h0ki1<7*64`8;f3=i1=31=n64;n:af?6=,0>j65l9;o;7=?7d121d4oo50;&:0de13:1(4:n:9`5?k?313;hn65`8c:94?">5$86b>=d13g3?57?ld:9l=83.28l47b79m=1?=9jo07b66d;29 <2f21h=7c7;9;3`b>=h0081<7*64`8;f3=i1=31=i>4;n:;3?6=,0>j65l9;o;7=?7c921d4:m50;&:0d093:1(4:n:9`5?k?313;o?65`87494?">n7>5$86b>=d13g3?57?k5:9l<06=83.28l47b79m=1?=9m<07b6;5;29 <2f21h=7c7;9;3g3>=h0:31<7*64`8;f3=i1=31=i64;n:1a?6=,0>j65l9;o;7=?7c121d4?=50;&:0d603:1(4:n:9`5?k?313;on65`81f94?">7>5$86b>=d13g3?57?kd:9l3c1=83.28l47b79m=1?=9mo07b9jc;29 <2f21h=7c7;9;3gb>=h?l;1<7*64`8;f3=i1=31=h>4;n5g2?6=,0>j65l9;o;7=?7b921d;no50;&:0d5$86b>=d13g3?57?j5:9l3=h?121<7*64`8;f3=i1=31=h64;n54`?6=,0>j65l9;o;7=?7b121d;:<50;&:0d<7>5$86b>=d13g3?57?jd:9l313=83.28l47b79m=1?=9lo07b9=h?;l1<7*64`8;f3=i1=31=k>4;n510?6=,0>j65l9;o;7=?7a921d;<750;&:0d5$86b>=d13g3?57?i5:9l<`b=83.28l47b79m=1?=9o<07b6j2;29 <2f21h=7c7;9;3e3>=h0m=1<7*64`8;f3=i1=31=k64;n:`g?6=,0>j65l9;o;7=?7a121d4n?50;&:0df13:1(4:n:9`5?k?313;mn65`82c94?">5$86b>=d13g3?57?id:9l30e=83.28l47b79m=1?=9oo07b8jd;29 <2f21h=7c7;9;3eb>=h1<;1<7*64`8:15=i1=31<65`95d94?">=h1=o1<7*64`8:15=i1=31>65`95f94?">=h1>d>m<0;6<4?:1y'=33=1?20D4k<;I;53>i>><028n5G9d18L<003S926lu>f;03>47=9;0:87?::`8a>f4;;%:e0?2<,1l>695+8g490>"?n>0?7)6i8;68 =`>2=1/4ko54:&;bg<33-2mo7:4$9dg>1=#0oo186*7fg87?!?783>0(4>>:59'=54=<2.2<>4;;%;30?2<,0:>695+91490>">8>0?7)7?8;68 <6>2=1/5=o54:&:4g<33-3;o7:4$82g>1=#19o186*60g87?!?683>0(4?>:59'=44=<2.2=>4;;%;20?2<,0;>695+90490>">9>0?7)7>8;68 <7>2=1/51=#18o186*61g87?!?583>0(4<>:59'=74=<2.2>>4;;%;10?2<,08>695+93490>">:>0?7)7=8;68 <4>2=1/5?o54:&:6g<33-39o7:4$80g>1=#1;o186*62g87?!?483>0(4=>:59'=64=<2.2?>4;;%;00?2<,09>695+92490>">;>0?7)7<8;68 <5>2=1/5>o53:&:7g<43-3>i7=8;%;54?5<,0<:6>5+9d29=04<,0o:64;=;h62>5<!?3i38j7c7;9;28?l4>290/59o52`9m=1?=921b>54?:%;7e?4f3g3?57<4;h04>5<#1=k1>l5a95;97>=n:?0;6)7;a;0b?k?313>07d<::18'=1g=:h1e59755:9j66<72-3?m7!?3i38j7c7;9;:8?l51290/59o5349m=1?=821b?94?:%;7e?523g3?57?4;h10>5<#1=k1?85a95;96>=n;;0;6)7;a;16?k?313907d=>:18'=1g=;<1e59754:9j75<72-3?m7=:;o;7=?3<3`8n6=4+95c970=i1=31:65f2e83>!?3i39>7c7;9;58?l4d290/59o5349m=1?=021b:o4?:%;7e?0f3g3?57>4;h4:>5<#1=k1:l5a95;95>=n>>0;6)7;a;4b?k?313807d89:18'=1g=>h1e59753:9j20<72-3?m78n;o;7=?2<3`!?3i35<#1=k1:l5a95;9=>=n=o0;6)7;a;4b?k?313k07d;j:18'=1g=>h1e5975b:9j1f<72-3?m78n;o;7=?e<3`?i6=4+95c92d=i1=31h65f5`83>!?3i3290/59o56`9m=1?=n21b954?:%;7e?0f3g3?57??;:k63?6=,0>j6;o4n86:>47<3`?=6=4+95c92d=i1=31=?54i4794?">=n==0;6)7;a;4b?k?313;?76g:3;29 <2f2?k0b4:6:078?l15290/59o56`9m=1?=9?10e:?50;&:0d<1i2d2844>7:9j35<72-3?m78n;o;7=?7?32c=j7>5$86b>3g26<74;h4f>5<#1=k1:l5a95;95d=h><00:n65f6b83>!?3i3o103:1(4:n:7c8j<2>28n07d;k:18'=1g=>h1e59751d98m04=83.28l49a:l:0<<6n21b4n4?:%;7e?>e3g3?57>4;h:b>5<#1=k14o5a95;95>=n010;6)7;a;:a?k?313807d68:18'=1g=0k1e59753:9j<3<72-3?m76m;o;7=?2<3`2>6=4+95c9!?3i32i7c7;9;48?l>4290/59o58c9m=1?=?21b4?4?:%;7e?>e3g3?5764;h:2>5<#1=k14o5a95;9=>=n090;6)7;a;:a?k?313k07d9i:18'=1g=0k1e5975b:9j3a<72-3?m76m;o;7=?e<3`=h6=4+95c9!?3i32i7c7;9;g8?l1f290/59o58c9m=1?=n21b;44?:%;7e?>e3g3?57??;:k4j65l4n86:>47<3`=<6=4+95c9=n?<0;6)7;a;:a?k?313;?76g84;29 <2f21h0b4:6:078?l?4290/59o58c9m=1?=9?10e4<50;&:0d7:9j=4<72-3?m76m;o;7=?7?32c2<7>5$86b>=d26<74;h:e>5<#1=k14o5a95;95d=h><00:n65f8e83>!?3i32i7c7;9;3`?>o?13:1(4:n:9`8j<2>28n07d9j:18'=1g=0k1e59751d98m25=83.28l47b:l:0<<6n21b84o50;&:0d<3101e59750:9j0<>=83.28l4;989m=1?=921b84950;&:0d<3101e59752:9j0<0=83.28l4;989m=1?=;21b84h50;&:0d<31l1e59750:9j028;07b:n4;29 <2f2=h37c7;9;31?>i3i:0;6)7;a;6a<>h><00:?65`4`094?">26<;4;n6`4?6=,0>j69l7;o;7=?7132e?nk4?:%;7e?2e02d2844>7:9l0gc=83.28l4;b99m=1?=9110c9lk:18'=1g=!?3i3>i46`64882f>=h5<#1=k18o64n86:>4b<3f>jn7>5$86b>1d?3g3?57?j;:m7e5<72-3?m7:m8:l:0<<6n21d8h850;&:0d<3m<1e59750:9l0`2=83.28l4;e49m=1?=921d8h=50;&:0d<3m<1e59752:9l0`4=83.28l4;e49m=1?=;21d8io50;&:0d<3l01e59750:9l0a>=83.28l4;d89m=1?=921d8i850;&:0d<3l01e59752:9l0a3=83.28l4;d89m=1?=;21d8i:50;&:0d<3l01e59754:9l0a5=83.28l4;d89m=1?==21d8i<50;&:0d<3l01e59756:9l0a7=83.28l4;d89m=1?=?21d8i>50;&:0d<3l01e59758:9l0f`=83.28l4;d89m=1?=121d8nk50;&:0d<3l01e5975a:9l0fb=83.28l4;d89m=1?=j21d8nl50;&:0d<3l01e5975c:9l0fg=83.28l4;d89m=1?=l21d8n750;&:0d<3l01e5975e:9l0f>=83.28l4;d89m=1?=n21d8n950;&:0d<3l01e59751198k1e1290/59o54e;8j<2>28;07b:l5;29 <2f2=n27c7;9;31?>i3k=0;6)7;a;6g=>h><00:?65`4b194?">26<;4;n6f5?6=,0>j69j6;o;7=?7132e?i=4?:%;7e?2c12d2844>7:9l0a`=83.28l4;d89m=1?=9110c9jj:18'=1g=!?3i3>o56`64882f>=h5<#1=k18i74n86:>4b<3f>ho7>5$86b>1b>3g3?57?j;:m7g4<72-3?m7:k9:l:0<<6n21d8hl50;&:0d<3mh1e59750:9l0`?=83.28l4;e`9m=1?=921d8h650;&:0d<3mh1e59752:9l0`1=83.28l4;e`9m=1?=;21vnh?=:18be?6=8r.2:8464b9K=`5<@0<<7W=6:`y2b?4728;1=?4>4;36>da<3>0(5h::59'"?nk0?7)6ic;68 =`c2=1/4kk54:&;bc<33-3;<7:4$822>1=#198186*60287?!?7<3>0(4>::59'=50=<2.2<:4;;%;3">8k0?7)7?c;68 <6c2=1/5=k54:&:4c<33-3:<7:4$832>1=#188186*61287?!?6<3>0(4?::59'=40=<2.2=:4;;%;2">9k0?7)7>c;68 <7c2=1/51=#1;8186*62287?!?5<3>0(4<::59'=70=<2.2>:4;;%;1">:k0?7)7=c;68 <4c2=1/5?k54:&:6c<33-38<7:4$812>1=#1:8186*63287?!?4<3>0(4=::59'=60=<2.2?:4;;%;0">;k087)7:e;14?!?18390(48>:29'=`6=1<80(4k>:871?l262900e9850;9j<`c=831b4hh50;9j=34=831b5;=50;9j=3g=831b5l;50;9j6g<72-3?m7!?3i38j7c7;9;08?l40290/59o52`9m=1?=;21b>;4?:%;7e?4f3g3?57:4;h06>5<#1=k1>l5a95;91>=n::0;6)7;a;0b?k?313<07d<=:18'=1g=:h1e59757:9j64<72-3?m7<3`9=6=4+95c970=i1=31<65f3583>!?3i39>7c7;9;38?l54290/59o5349m=1?=:21b??4?:%;7e?523g3?57=4;h12>5<#1=k1?85a95;90>=n;90;6)7;a;16?k?313?07d!?3i3290/59o56`9m=1?=921b::4?:%;7e?0f3g3?57<4;h45>5<#1=k1:l5a95;97>=n><0;6)7;a;4b?k?313>07d8;:18'=1g=>h1e59755:9j26<72-3?m78n;o;7=?0<3`<96=4+95c92d=i1=31;65f6083>!?3i35<#1=k1:l5a95;9f>=n=j0;6)7;a;4b?k?313i07d;m:18'=1g=>h1e5975d:9j1d<72-3?m78n;o;7=?c<3`?26=4+95c92d=i1=31j65f5983>!?3i3o2?3:1(4:n:7c8j<2>28;07d;9:18'=1g=>h1e59751398m03=83.28l49a:l:0<<6;21b994?:%;7e?0f3g3?57?;;:k67?6=,0>j6;o4n86:>43<3`=96=4+95c92d=i1=31=;54i6394?">=n?90;6)7;a;4b?k?313;376g9f;29 <2f2?k0b4:6:0;8?l0b290/59o56`9m=1?=9h10e;j50;&:0d<1i2d2844>b:9j2f<72-3?m78n;o;7=?7d32c=47>5$86b>3g265<#1=k1:l5a95;95`=h><00:j65f8b83>!?3i32i7c7;9;28?l>f290/59o58c9m=1?=921b454?:%;7e?>e3g3?57<4;h:4>5<#1=k14o5a95;97>=n0?0;6)7;a;:a?k?313>07d6::18'=1g=0k1e59755:9j<1<72-3?m76m;o;7=?0<3`286=4+95c9!?3i32i7c7;9;:8?l>6290/59o58c9m=1?=121b4=4?:%;7e?>e3g3?57o4;h5e>5<#1=k14o5a95;9f>=n?m0;6)7;a;:a?k?313i07d9l:18'=1g=0k1e5975d:9j3g<72-3?m76m;o;7=?c<3`=j6=4+95c9!?3i32i7c7;9;33?>o003:1(4:n:9`8j<2>28;07d98:18'=1g=0k1e59751398m20=83.28l47b:l:0<<6;21b;84?:%;7e?>e3g3?57?;;:k40?6=,0>j65l4n86:>43<3`386=4+95c9=n180;6)7;a;:a?k?313;376g60;29 <2f21h0b4:6:0;8?l>a290/59o58c9m=1?=9h10e5k50;&:0db:9j5$86b>=d265<#1=k14o5a95;95`=91<7*64`8;f>h><00:j65f48c94?">=n<021<7*64`87=<=i1=31=65f48594?">=n<0<1<7*64`87=<=i1=31?65f48d94?">=n<0n1<7*64`87=`=i1=31=65f48a94?">=n<0h1<7*64`87=`=i1=31?65`4c;94?">=h=h1<7*64`87f==i1=31?65`4c194?">=h=h=h=h=h=h6=4+95c90g>26j69l7;o;7=?7532e?m>4?:%;7e?2e02d2844>3:9l0d4=83.28l4;b99m=1?=9=10c9o>:18'=1g=!?3i3>i46`648823>=h5<#1=k18o64n86:>4?<3f>io7>5$86b>1d?3g3?57?n;:m7fg<72-3?m7:m8:l:0<<6j21d8oo50;&:0d<3j11e59751b98k1d1290/59o54c:8j<2>28n07b:nb;29 <2f2=h37c7;9;3f?>i3i90;6)7;a;6a<>h><00:j65`4d494?">=h1<7*64`87a0=i1=31=65`4d194?">=h=h=h=h=h=h=h=h=h26j69j6;o;7=?7532e?o94?:%;7e?2c12d2844>3:9l0f5=83.28l4;d89m=1?=9=10c9m=:18'=1g=!?3i3>o56`648823>=h5<#1=k18i74n86:>4?<3f>oh7>5$86b>1b>3g3?57?n;:m7`f<72-3?m7:k9:l:0<<6j21d8il50;&:0d<3l01e59751b98k1b0290/59o54e;8j<2>28n07b:lc;29 <2f2=n27c7;9;3f?>i3k80;6)7;a;6g=>h><00:j65`4d`94?">=h=h5d}6n38;61=#0o<186*7f687?!>a03>0(5h6:59'"?no0?7)7?0;68 <662=1/5=<54:&:46<33-3;87:4$826>1=#19<186*60687?!?703>0(4>6:59'=5g=<2.2">8o0?7)7>0;68 <762=1/5<<54:&:56<33-3:87:4$836>1=#18<186*61687?!?603>0(4?6:59'=4g=<2.2=o4;;%;2g?2<,0;o695+90g90>">9o0?7)7=0;68 <462=1/5?<54:&:66<33-3987:4$806>1=#1;<186*62687?!?503>0(4<6:59'=7g=<2.2>o4;;%;1g?2<,08o695+93g90>">:o0?7)7<0;68 <562=1/5><54:&:76<33-3887:4$816>1=#1:<186*63687?!?403>0(4=6:59'=6g=;2.2?o4<;%;6a?503-3=<7=4$842>6=#1l:158<4$8g2><353`>:6=44i5494?=n0lo1<75f8dd94?=n1?81<75f97194?=n1?k1<75f9`794?=n:k0;6)7;a;0b?k?313:07d<6:18'=1g=:h1e59751:9j6=<72-3?m7!?3i38j7c7;9;68?l42290/59o52`9m=1?==21b>>4?:%;7e?4f3g3?5784;h01>5<#1=k1>l5a95;93>=n:80;6)7;a;0b?k?313207d=9:18'=1g=;<1e59750:9j71<72-3?m7=:;o;7=?7<3`986=4+95c970=i1=31>65f3383>!?3i39>7c7;9;18?l56290/59o5349m=1?=<21b?=4?:%;7e?523g3?57;4;h0f>5<#1=k1?85a95;92>=n:m0;6)7;a;16?k?313=07d!?3i35<#1=k1:l5a95;91>=n>:0;6)7;a;4b?k?313<07d8=:18'=1g=>h1e59757:9j24<72-3?m78n;o;7=?><3`<;6=4+95c92d=i1=31565f5g83>!?3i35<#1=k1:l5a95;9`>=n=h0;6)7;a;4b?k?313o07d;6:18'=1g=>h1e5975f:9j1=<72-3?m78n;o;7=?7732c>;7>5$86b>3g265<#1=k1:l5a95;957=h><00:?65f5583>!?3i3o2;3:1(4:n:7c8j<2>28?07d9=:18'=1g=>h1e59751798m27=83.28l49a:l:0<<6?21b;=4?:%;7e?0f3g3?57?7;:k5b?6=,0>j6;o4n86:>4?<3`=n>j0;6)7;a;4b?k?313;h76g98;29 <2f2?k0b4:6:0f8?l3c290/59o56`9m=1?=9l10e8<50;&:0d<1i2d2844>f:9j!?3i32i7c7;9;08?l>0290/59o58c9m=1?=;21b4;4?:%;7e?>e3g3?57:4;h:6>5<#1=k14o5a95;91>=n0=0;6)7;a;:a?k?313<07d6<:18'=1g=0k1e59757:9j<7<72-3?m76m;o;7=?><3`2:6=4+95c9!?3i32i7c7;9;c8?l1a290/59o58c9m=1?=j21b;i4?:%;7e?>e3g3?57m4;h5`>5<#1=k14o5a95;9`>=n?k0;6)7;a;:a?k?313o07d9n:18'=1g=0k1e5975f:9j3<<72-3?m76m;o;7=?7732c<47>5$86b>=d265<#1=k14o5a95;957=<1<7*64`8;f>h><00:?65f7483>!?3i32i7c7;9;37?>o0<3:1(4:n:9`8j<2>28?07d7<:18'=1g=0k1e59751798m<4=83.28l47b:l:0<<6?21b5<4?:%;7e?>e3g3?57?7;:k:4?6=,0>j65l4n86:>4?<3`2m6=4+95c9=n0m0;6)7;a;:a?k?313;h76g79;29 <2f21h0b4:6:0f8?l1b290/59o58c9m=1?=9l10e:=50;&:0df:9j021d8o>50;&:0d<3j11e59757:9l0d`=83.28l4;b99m=1?=021d8lk50;&:0d<3j11e59759:9l0db=83.28l4;b99m=1?=i21d8lm50;&:0d<3j11e5975b:9l0dg=83.28l4;b99m=1?=k21d8l750;&:0d<3j11e5975d:9l0d>=83.28l4;b99m=1?=m21d8l950;&:0d<3j11e5975f:9l0d0=83.28l4;b99m=1?=9910c9o::18'=1g=!?3i3>i46`648827>=h5<#1=k18o64n86:>43<3f>h<7>5$86b>1d?3g3?57?9;:m7fc<72-3?m7:m8:l:0<<6?21d8ok50;&:0d<3j11e59751998k1dc290/59o54c:8j<2>28307b:mc;29 <2f2=h37c7;9;3b?>i3jk0;6)7;a;6a<>h><00:n65`4cc94?">26j69l7;o;7=?7b32e?m=4?:%;7e?2e02d2844>f:9l0`0=83.28l4;e49m=1?=821d8h:50;&:0d<3m<1e59751:9l0`5=83.28l4;e49m=1?=:21d8h<50;&:0d<3m<1e59753:9l0ag=83.28l4;d89m=1?=821d8i650;&:0d<3l01e59751:9l0a0=83.28l4;d89m=1?=:21d8i;50;&:0d<3l01e59753:9l0a2=83.28l4;d89m=1?=<21d8i=50;&:0d<3l01e59755:9l0a4=83.28l4;d89m=1?=>21d8i?50;&:0d<3l01e59757:9l0a6=83.28l4;d89m=1?=021d8nh50;&:0d<3l01e59759:9l0fc=83.28l4;d89m=1?=i21d8nj50;&:0d<3l01e5975b:9l0fd=83.28l4;d89m=1?=k21d8no50;&:0d<3l01e5975d:9l0f?=83.28l4;d89m=1?=m21d8n650;&:0d<3l01e5975f:9l0f1=83.28l4;d89m=1?=9910c9m9:18'=1g=!?3i3>o56`648827>=h5<#1=k18i74n86:>43<3f>n=7>5$86b>1b>3g3?57?9;:m7a5<72-3?m7:k9:l:0<<6?21d8ih50;&:0d<3l01e59751998k1bb290/59o54e;8j<2>28307b:kd;29 <2f2=n27c7;9;3b?>i3lj0;6)7;a;6g=>h><00:n65`4e`94?">26j69j6;o;7=?7b32e?o<4?:%;7e?2c12d2844>f:9l0`d=83.28l4;e`9m=1?=821d8h750;&:0d<3mh1e59751:9l0`>=83.28l4;e`9m=1?=:21d8h950;&:0d<3mh1e59753:9~f`73290jm7>50z&:20<>2hq:j76l4m:b8g>x"><<0n==5+8g090>"?n:0?7)6i4;68 =`22=1/4k854:&;b2<33-2m47:4$9d:>1=#0ok186*7fc87?!>ak3>0(5hk:59'">8:0?7)7?4;68 <622=1/5=854:&:42<33-3;47:4$82:>1=#19k186*60c87?!?7k3>0(4>k:59'=5c=<2.2">9:0?7)7>4;68 <722=1/5<854:&:52<33-3:47:4$83:>1=#18k186*61c87?!?6k3>0(4?k:59'=4c=<2.2=k4;;%;14?2<,08:695+93090>">::0?7)7=4;68 <422=1/5?854:&:62<33-3947:4$80:>1=#1;k186*62c87?!?5k3>0(4k4;;%;04?2<,09:695+92090>">;:0?7)7<4;68 <522=1/5>854:&:72<33-3847:4$81:>1=#1:k1?6*63c80?!?2m39<7)790;18 <062:1/5h>59408 :188m10=831b4hk50;9j<``=831b5;<50;9j=35=831b5;o50;9j=d3=831b>o4?:%;7e?4f3g3?57>4;h0:>5<#1=k1>l5a95;95>=n:10;6)7;a;0b?k?313807d<8:18'=1g=:h1e59753:9j63<72-3?m76=4+95c96d=i1=31965f2283>!?3i38j7c7;9;48?l45290/59o52`9m=1?=?21b><4?:%;7e?4f3g3?5764;h15>5<#1=k1?85a95;94>=n;=0;6)7;a;16?k?313;07d=<:18'=1g=;<1e59752:9j77<72-3?m7=:;o;7=?5<3`9:6=4+95c970=i1=31865f3183>!?3i39>7c7;9;78?l4b290/59o5349m=1?=>21b>i4?:%;7e?523g3?5794;h0`>5<#1=k1?85a95;9<>=n>k0;6)7;a;4b?k?313:07d86:18'=1g=>h1e59751:9j22<72-3?m78n;o;7=?4<3`<=6=4+95c92d=i1=31?65f6483>!?3i34?:%;7e?0f3g3?5784;h41>5<#1=k1:l5a95;93>=n>80;6)7;a;4b?k?313207d8?:18'=1g=>h1e59759:9j1c<72-3?m78n;o;7=?g<3`?n6=4+95c92d=i1=31n65f5b83>!?3i35<#1=k1:l5a95;9b>=n=10;6)7;a;4b?k?313;;76g:7;29 <2f2?k0b4:6:038?l31290/59o56`9m=1?=9;10e8;50;&:0d<1i2d2844>3:9j11<72-3?m78n;o;7=?7332c>?7>5$86b>3g26<;4;h51>5<#1=k1:l5a95;953=;1<7*64`85e>h><00:;65f7183>!?3i3o1n3:1(4:n:7c8j<2>28307d8j:18'=1g=>h1e59751`98m3b=83.28l49a:l:0<<6j21b:n4?:%;7e?0f3g3?57?l;:k5j6;o4n86:>4b<3`?o6=4+95c92d=i1=31=h54i4094?">=n0j0;6)7;a;:a?k?313:07d6n:18'=1g=0k1e59751:9j<=<72-3?m76m;o;7=?4<3`2<6=4+95c9!?3i32i7c7;9;68?l>2290/59o58c9m=1?==21b494?:%;7e?>e3g3?5784;h:0>5<#1=k14o5a95;93>=n0;0;6)7;a;:a?k?313207d6>:18'=1g=0k1e59759:9j<5<72-3?m76m;o;7=?g<3`=m6=4+95c9!?3i32i7c7;9;a8?l1d290/59o58c9m=1?=l21b;o4?:%;7e?>e3g3?57k4;h5b>5<#1=k14o5a95;9b>=n?00;6)7;a;:a?k?313;;76g88;29 <2f21h0b4:6:038?l10290/59o58c9m=1?=9;10e:850;&:0d3:9j30<72-3?m76m;o;7=?7332c<87>5$86b>=d26<;4;h;0>5<#1=k14o5a95;953=h><00:;65f9083>!?3i32i7c7;9;3;?>o>83:1(4:n:9`8j<2>28307d6i:18'=1g=0k1e59751`98m=c=83.28l47b:l:0<<6j21b4i4?:%;7e?>e3g3?57?l;:k;=?6=,0>j65l4n86:>4b<3`=n6=4+95c9=n<0k1<7*64`87=<=i1=31<65f48:94?">=n<0=1<7*64`87=<=i1=31>65f48494?">=n<0l1<7*64`87=`=i1=31<65f48f94?">=n<0i1<7*64`87=`=i1=31>65f48`94?">=h=h65`4c694?">=h=h=h=h=h=h=h5<#1=k18o64n86:>47<3f>j87>5$86b>1d?3g3?57?=;:m7e6<72-3?m7:m8:l:0<<6;21d8l<50;&:0d<3j11e59751598k1g6290/59o54c:8j<2>28?07b:l0;29 <2f2=h37c7;9;35?>i3jo0;6)7;a;6a<>h><00:;65`4cg94?">26<74;n6ag?6=,0>j69l7;o;7=?7f32e?no4?:%;7e?2e02d2844>b:9l0gg=83.28l4;b99m=1?=9j10c9l9:18'=1g=!?3i3>i46`64882b>=h=h65`4d094?">=h=h65`4e794?">=h1<7*64`87`<=i1=31865`4e194?">=h=h=h=h=h=h5<#1=k18i74n86:>47<3f>h97>5$86b>1b>3g3?57?=;:m7g1<72-3?m7:k9:l:0<<6;21d8n=50;&:0d<3l01e59751598k1e5290/59o54e;8j<2>28?07b:j1;29 <2f2=n27c7;9;35?>i3m90;6)7;a;6g=>h><00:;65`4ed94?">26<74;n6g`?6=,0>j69j6;o;7=?7f32e?hn4?:%;7e?2c12d2844>b:9l0ad=83.28l4;d89m=1?=9j10c9j8:18'=1g=!?3i3>o56`64882b>=h=h65`4d594?">=zjl;>6=4na;294~">><028n5G9d18L<003S926lu>f;03>47=9;0:87?::`8a>f4;;%:e0?2<,1l>695+8g490>"?n>0?7)6i8;68 =`>2=1/4ko54:&;bg<33-2mo7:4$9dg>1=#0oo186*7fg87?!?783>0(4>>:59'=54=<2.2<>4;;%;30?2<,0:>695+91490>">8>0?7)7?8;68 <6>2=1/5=o54:&:4g<33-3;o7:4$82g>1=#19o186*60g87?!?683>0(4?>:59'=44=<2.2=>4;;%;20?2<,0;>695+90490>">9>0?7)7>8;68 <7>2=1/51=#18o186*61g87?!?583>0(4<>:59'=74=<2.2>>4;;%;10?2<,08>695+93490>">:>0?7)7=8;68 <4>2=1/5?o54:&:6g<33-39o7:4$80g>1=#1;o186*62g87?!?483>0(4=>:59'=64=<2.2?>4;;%;00?2<,09>695+92490>">;>0?7)7<8;68 <5>2=1/5>o53:&:7g<43-3>i7=8;%;54?5<,0<:6>5+9d29=04<,0o:64;=;h62>5<!?3i38j7c7;9;28?l4>290/59o52`9m=1?=921b>54?:%;7e?4f3g3?57<4;h04>5<#1=k1>l5a95;97>=n:?0;6)7;a;0b?k?313>07d<::18'=1g=:h1e59755:9j66<72-3?m7!?3i38j7c7;9;:8?l51290/59o5349m=1?=821b?94?:%;7e?523g3?57?4;h10>5<#1=k1?85a95;96>=n;;0;6)7;a;16?k?313907d=>:18'=1g=;<1e59754:9j75<72-3?m7=:;o;7=?3<3`8n6=4+95c970=i1=31:65f2e83>!?3i39>7c7;9;58?l4d290/59o5349m=1?=021b:o4?:%;7e?0f3g3?57>4;h4:>5<#1=k1:l5a95;95>=n>>0;6)7;a;4b?k?313807d89:18'=1g=>h1e59753:9j20<72-3?m78n;o;7=?2<3`!?3i35<#1=k1:l5a95;9=>=n=o0;6)7;a;4b?k?313k07d;j:18'=1g=>h1e5975b:9j1f<72-3?m78n;o;7=?e<3`?i6=4+95c92d=i1=31h65f5`83>!?3i3290/59o56`9m=1?=n21b954?:%;7e?0f3g3?57??;:k63?6=,0>j6;o4n86:>47<3`?=6=4+95c92d=i1=31=?54i4794?">=n==0;6)7;a;4b?k?313;?76g:3;29 <2f2?k0b4:6:078?l15290/59o56`9m=1?=9?10e:?50;&:0d<1i2d2844>7:9j35<72-3?m78n;o;7=?7?32c=j7>5$86b>3g26<74;h4f>5<#1=k1:l5a95;95d=h><00:n65f6b83>!?3i3o103:1(4:n:7c8j<2>28n07d;k:18'=1g=>h1e59751d98m04=83.28l49a:l:0<<6n21b4n4?:%;7e?>e3g3?57>4;h:b>5<#1=k14o5a95;95>=n010;6)7;a;:a?k?313807d68:18'=1g=0k1e59753:9j<3<72-3?m76m;o;7=?2<3`2>6=4+95c9!?3i32i7c7;9;48?l>4290/59o58c9m=1?=?21b4?4?:%;7e?>e3g3?5764;h:2>5<#1=k14o5a95;9=>=n090;6)7;a;:a?k?313k07d9i:18'=1g=0k1e5975b:9j3a<72-3?m76m;o;7=?e<3`=h6=4+95c9!?3i32i7c7;9;g8?l1f290/59o58c9m=1?=n21b;44?:%;7e?>e3g3?57??;:k4j65l4n86:>47<3`=<6=4+95c9=n?<0;6)7;a;:a?k?313;?76g84;29 <2f21h0b4:6:078?l?4290/59o58c9m=1?=9?10e4<50;&:0d7:9j=4<72-3?m76m;o;7=?7?32c2<7>5$86b>=d26<74;h:e>5<#1=k14o5a95;95d=h><00:n65f8e83>!?3i32i7c7;9;3`?>o?13:1(4:n:9`8j<2>28n07d9j:18'=1g=0k1e59751d98m25=83.28l47b:l:0<<6n21b84o50;&:0d<3101e59750:9j0<>=83.28l4;989m=1?=921b84950;&:0d<3101e59752:9j0<0=83.28l4;989m=1?=;21b84h50;&:0d<31l1e59750:9j028;07b:n4;29 <2f2=h37c7;9;31?>i3i:0;6)7;a;6a<>h><00:?65`4`094?">26<;4;n6`4?6=,0>j69l7;o;7=?7132e?nk4?:%;7e?2e02d2844>7:9l0gc=83.28l4;b99m=1?=9110c9lk:18'=1g=!?3i3>i46`64882f>=h5<#1=k18o64n86:>4b<3f>jn7>5$86b>1d?3g3?57?j;:m7e5<72-3?m7:m8:l:0<<6n21d8h850;&:0d<3m<1e59750:9l0`2=83.28l4;e49m=1?=921d8h=50;&:0d<3m<1e59752:9l0`4=83.28l4;e49m=1?=;21d8io50;&:0d<3l01e59750:9l0a>=83.28l4;d89m=1?=921d8i850;&:0d<3l01e59752:9l0a3=83.28l4;d89m=1?=;21d8i:50;&:0d<3l01e59754:9l0a5=83.28l4;d89m=1?==21d8i<50;&:0d<3l01e59756:9l0a7=83.28l4;d89m=1?=?21d8i>50;&:0d<3l01e59758:9l0f`=83.28l4;d89m=1?=121d8nk50;&:0d<3l01e5975a:9l0fb=83.28l4;d89m=1?=j21d8nl50;&:0d<3l01e5975c:9l0fg=83.28l4;d89m=1?=l21d8n750;&:0d<3l01e5975e:9l0f>=83.28l4;d89m=1?=n21d8n950;&:0d<3l01e59751198k1e1290/59o54e;8j<2>28;07b:l5;29 <2f2=n27c7;9;31?>i3k=0;6)7;a;6g=>h><00:?65`4b194?">26<;4;n6f5?6=,0>j69j6;o;7=?7132e?i=4?:%;7e?2c12d2844>7:9l0a`=83.28l4;d89m=1?=9110c9jj:18'=1g=!?3i3>o56`64882f>=h5<#1=k18i74n86:>4b<3f>ho7>5$86b>1b>3g3?57?j;:m7g4<72-3?m7:k9:l:0<<6n21d8hl50;&:0d<3mh1e59750:9l0`?=83.28l4;e`9m=1?=921d8h650;&:0d<3mh1e59752:9l0`1=83.28l4;e`9m=1?=;21vnh?9:18be?6=8r.2:8464b9K=`5<@0<<7W=6:`y2b?4728;1=?4>4;36>da<3>0(5h::59'"?nk0?7)6ic;68 =`c2=1/4kk54:&;bc<33-3;<7:4$822>1=#198186*60287?!?7<3>0(4>::59'=50=<2.2<:4;;%;3">8k0?7)7?c;68 <6c2=1/5=k54:&:4c<33-3:<7:4$832>1=#188186*61287?!?6<3>0(4?::59'=40=<2.2=:4;;%;2">9k0?7)7>c;68 <7c2=1/51=#1;8186*62287?!?5<3>0(4<::59'=70=<2.2>:4;;%;1">:k0?7)7=c;68 <4c2=1/5?k54:&:6c<33-38<7:4$812>1=#1:8186*63287?!?4<3>0(4=::59'=60=<2.2?:4;;%;0">;k087)7:e;14?!?18390(48>:29'=`6=1<80(4k>:871?l262900e9850;9j<`c=831b4hh50;9j=34=831b5;=50;9j=3g=831b5l;50;9j6g<72-3?m7!?3i38j7c7;9;08?l40290/59o52`9m=1?=;21b>;4?:%;7e?4f3g3?57:4;h06>5<#1=k1>l5a95;91>=n::0;6)7;a;0b?k?313<07d<=:18'=1g=:h1e59757:9j64<72-3?m7<3`9=6=4+95c970=i1=31<65f3583>!?3i39>7c7;9;38?l54290/59o5349m=1?=:21b??4?:%;7e?523g3?57=4;h12>5<#1=k1?85a95;90>=n;90;6)7;a;16?k?313?07d!?3i3290/59o56`9m=1?=921b::4?:%;7e?0f3g3?57<4;h45>5<#1=k1:l5a95;97>=n><0;6)7;a;4b?k?313>07d8;:18'=1g=>h1e59755:9j26<72-3?m78n;o;7=?0<3`<96=4+95c92d=i1=31;65f6083>!?3i35<#1=k1:l5a95;9f>=n=j0;6)7;a;4b?k?313i07d;m:18'=1g=>h1e5975d:9j1d<72-3?m78n;o;7=?c<3`?26=4+95c92d=i1=31j65f5983>!?3i3o2?3:1(4:n:7c8j<2>28;07d;9:18'=1g=>h1e59751398m03=83.28l49a:l:0<<6;21b994?:%;7e?0f3g3?57?;;:k67?6=,0>j6;o4n86:>43<3`=96=4+95c92d=i1=31=;54i6394?">=n?90;6)7;a;4b?k?313;376g9f;29 <2f2?k0b4:6:0;8?l0b290/59o56`9m=1?=9h10e;j50;&:0d<1i2d2844>b:9j2f<72-3?m78n;o;7=?7d32c=47>5$86b>3g265<#1=k1:l5a95;95`=h><00:j65f8b83>!?3i32i7c7;9;28?l>f290/59o58c9m=1?=921b454?:%;7e?>e3g3?57<4;h:4>5<#1=k14o5a95;97>=n0?0;6)7;a;:a?k?313>07d6::18'=1g=0k1e59755:9j<1<72-3?m76m;o;7=?0<3`286=4+95c9!?3i32i7c7;9;:8?l>6290/59o58c9m=1?=121b4=4?:%;7e?>e3g3?57o4;h5e>5<#1=k14o5a95;9f>=n?m0;6)7;a;:a?k?313i07d9l:18'=1g=0k1e5975d:9j3g<72-3?m76m;o;7=?c<3`=j6=4+95c9!?3i32i7c7;9;33?>o003:1(4:n:9`8j<2>28;07d98:18'=1g=0k1e59751398m20=83.28l47b:l:0<<6;21b;84?:%;7e?>e3g3?57?;;:k40?6=,0>j65l4n86:>43<3`386=4+95c9=n180;6)7;a;:a?k?313;376g60;29 <2f21h0b4:6:0;8?l>a290/59o58c9m=1?=9h10e5k50;&:0db:9j5$86b>=d265<#1=k14o5a95;95`=91<7*64`8;f>h><00:j65f48c94?">=n<021<7*64`87=<=i1=31=65f48594?">=n<0<1<7*64`87=<=i1=31?65f48d94?">=n<0n1<7*64`87=`=i1=31=65f48a94?">=n<0h1<7*64`87=`=i1=31?65`4c;94?">=h=h1<7*64`87f==i1=31?65`4c194?">=h=h=h=h=h=h6=4+95c90g>26j69l7;o;7=?7532e?m>4?:%;7e?2e02d2844>3:9l0d4=83.28l4;b99m=1?=9=10c9o>:18'=1g=!?3i3>i46`648823>=h5<#1=k18o64n86:>4?<3f>io7>5$86b>1d?3g3?57?n;:m7fg<72-3?m7:m8:l:0<<6j21d8oo50;&:0d<3j11e59751b98k1d1290/59o54c:8j<2>28n07b:nb;29 <2f2=h37c7;9;3f?>i3i90;6)7;a;6a<>h><00:j65`4d494?">=h1<7*64`87a0=i1=31=65`4d194?">=h=h=h=h=h=h=h=h=h26j69j6;o;7=?7532e?o94?:%;7e?2c12d2844>3:9l0f5=83.28l4;d89m=1?=9=10c9m=:18'=1g=!?3i3>o56`648823>=h5<#1=k18i74n86:>4?<3f>oh7>5$86b>1b>3g3?57?n;:m7`f<72-3?m7:k9:l:0<<6j21d8il50;&:0d<3l01e59751b98k1b0290/59o54e;8j<2>28n07b:lc;29 <2f2=n27c7;9;3f?>i3k80;6)7;a;6g=>h><00:j65`4d`94?">=h=h5d}6n38;61=#0o<186*7f687?!>a03>0(5h6:59'"?no0?7)7?0;68 <662=1/5=<54:&:46<33-3;87:4$826>1=#19<186*60687?!?703>0(4>6:59'=5g=<2.2">8o0?7)7>0;68 <762=1/5<<54:&:56<33-3:87:4$836>1=#18<186*61687?!?603>0(4?6:59'=4g=<2.2=o4;;%;2g?2<,0;o695+90g90>">9o0?7)7=0;68 <462=1/5?<54:&:66<33-3987:4$806>1=#1;<186*62687?!?503>0(4<6:59'=7g=<2.2>o4;;%;1g?2<,08o695+93g90>">:o0?7)7<0;68 <562=1/5><54:&:76<33-3887:4$816>1=#1:<186*63687?!?403>0(4=6:59'=6g=;2.2?o4<;%;6a?503-3=<7=4$842>6=#1l:158<4$8g2><353`>:6=44i5494?=n0lo1<75f8dd94?=n1?81<75f97194?=n1?k1<75f9`794?=n:k0;6)7;a;0b?k?313:07d<6:18'=1g=:h1e59751:9j6=<72-3?m7!?3i38j7c7;9;68?l42290/59o52`9m=1?==21b>>4?:%;7e?4f3g3?5784;h01>5<#1=k1>l5a95;93>=n:80;6)7;a;0b?k?313207d=9:18'=1g=;<1e59750:9j71<72-3?m7=:;o;7=?7<3`986=4+95c970=i1=31>65f3383>!?3i39>7c7;9;18?l56290/59o5349m=1?=<21b?=4?:%;7e?523g3?57;4;h0f>5<#1=k1?85a95;92>=n:m0;6)7;a;16?k?313=07d!?3i35<#1=k1:l5a95;91>=n>:0;6)7;a;4b?k?313<07d8=:18'=1g=>h1e59757:9j24<72-3?m78n;o;7=?><3`<;6=4+95c92d=i1=31565f5g83>!?3i35<#1=k1:l5a95;9`>=n=h0;6)7;a;4b?k?313o07d;6:18'=1g=>h1e5975f:9j1=<72-3?m78n;o;7=?7732c>;7>5$86b>3g265<#1=k1:l5a95;957=h><00:?65f5583>!?3i3o2;3:1(4:n:7c8j<2>28?07d9=:18'=1g=>h1e59751798m27=83.28l49a:l:0<<6?21b;=4?:%;7e?0f3g3?57?7;:k5b?6=,0>j6;o4n86:>4?<3`=n>j0;6)7;a;4b?k?313;h76g98;29 <2f2?k0b4:6:0f8?l3c290/59o56`9m=1?=9l10e8<50;&:0d<1i2d2844>f:9j!?3i32i7c7;9;08?l>0290/59o58c9m=1?=;21b4;4?:%;7e?>e3g3?57:4;h:6>5<#1=k14o5a95;91>=n0=0;6)7;a;:a?k?313<07d6<:18'=1g=0k1e59757:9j<7<72-3?m76m;o;7=?><3`2:6=4+95c9!?3i32i7c7;9;c8?l1a290/59o58c9m=1?=j21b;i4?:%;7e?>e3g3?57m4;h5`>5<#1=k14o5a95;9`>=n?k0;6)7;a;:a?k?313o07d9n:18'=1g=0k1e5975f:9j3<<72-3?m76m;o;7=?7732c<47>5$86b>=d265<#1=k14o5a95;957=<1<7*64`8;f>h><00:?65f7483>!?3i32i7c7;9;37?>o0<3:1(4:n:9`8j<2>28?07d7<:18'=1g=0k1e59751798m<4=83.28l47b:l:0<<6?21b5<4?:%;7e?>e3g3?57?7;:k:4?6=,0>j65l4n86:>4?<3`2m6=4+95c9=n0m0;6)7;a;:a?k?313;h76g79;29 <2f21h0b4:6:0f8?l1b290/59o58c9m=1?=9l10e:=50;&:0df:9j021d8o>50;&:0d<3j11e59757:9l0d`=83.28l4;b99m=1?=021d8lk50;&:0d<3j11e59759:9l0db=83.28l4;b99m=1?=i21d8lm50;&:0d<3j11e5975b:9l0dg=83.28l4;b99m=1?=k21d8l750;&:0d<3j11e5975d:9l0d>=83.28l4;b99m=1?=m21d8l950;&:0d<3j11e5975f:9l0d0=83.28l4;b99m=1?=9910c9o::18'=1g=!?3i3>i46`648827>=h5<#1=k18o64n86:>43<3f>h<7>5$86b>1d?3g3?57?9;:m7fc<72-3?m7:m8:l:0<<6?21d8ok50;&:0d<3j11e59751998k1dc290/59o54c:8j<2>28307b:mc;29 <2f2=h37c7;9;3b?>i3jk0;6)7;a;6a<>h><00:n65`4cc94?">26j69l7;o;7=?7b32e?m=4?:%;7e?2e02d2844>f:9l0`0=83.28l4;e49m=1?=821d8h:50;&:0d<3m<1e59751:9l0`5=83.28l4;e49m=1?=:21d8h<50;&:0d<3m<1e59753:9l0ag=83.28l4;d89m=1?=821d8i650;&:0d<3l01e59751:9l0a0=83.28l4;d89m=1?=:21d8i;50;&:0d<3l01e59753:9l0a2=83.28l4;d89m=1?=<21d8i=50;&:0d<3l01e59755:9l0a4=83.28l4;d89m=1?=>21d8i?50;&:0d<3l01e59757:9l0a6=83.28l4;d89m=1?=021d8nh50;&:0d<3l01e59759:9l0fc=83.28l4;d89m=1?=i21d8nj50;&:0d<3l01e5975b:9l0fd=83.28l4;d89m=1?=k21d8no50;&:0d<3l01e5975d:9l0f?=83.28l4;d89m=1?=m21d8n650;&:0d<3l01e5975f:9l0f1=83.28l4;d89m=1?=9910c9m9:18'=1g=!?3i3>o56`648827>=h5<#1=k18i74n86:>43<3f>n=7>5$86b>1b>3g3?57?9;:m7a5<72-3?m7:k9:l:0<<6?21d8ih50;&:0d<3l01e59751998k1bb290/59o54e;8j<2>28307b:kd;29 <2f2=n27c7;9;3b?>i3lj0;6)7;a;6g=>h><00:n65`4e`94?">26j69j6;o;7=?7b32e?o<4?:%;7e?2c12d2844>f:9l0`d=83.28l4;e`9m=1?=821d8h750;&:0d<3mh1e59751:9l0`>=83.28l4;e`9m=1?=:21d8h950;&:0d<3mh1e59753:9~f`7?290jm7>50z&:20<>2hq:j76l4m:b8g>x"><<0n==5+8g090>"?n:0?7)6i4;68 =`22=1/4k854:&;b2<33-2m47:4$9d:>1=#0ok186*7fc87?!>ak3>0(5hk:59'">8:0?7)7?4;68 <622=1/5=854:&:42<33-3;47:4$82:>1=#19k186*60c87?!?7k3>0(4>k:59'=5c=<2.2">9:0?7)7>4;68 <722=1/5<854:&:52<33-3:47:4$83:>1=#18k186*61c87?!?6k3>0(4?k:59'=4c=<2.2=k4;;%;14?2<,08:695+93090>">::0?7)7=4;68 <422=1/5?854:&:62<33-3947:4$80:>1=#1;k186*62c87?!?5k3>0(4k4;;%;04?2<,09:695+92090>">;:0?7)7<4;68 <522=1/5>854:&:72<33-3847:4$81:>1=#1:k1?6*63c80?!?2m39<7)790;18 <062:1/5h>59408 :188m10=831b4hk50;9j<``=831b5;<50;9j=35=831b5;o50;9j=d3=831b>o4?:%;7e?4f3g3?57>4;h0:>5<#1=k1>l5a95;95>=n:10;6)7;a;0b?k?313807d<8:18'=1g=:h1e59753:9j63<72-3?m76=4+95c96d=i1=31965f2283>!?3i38j7c7;9;48?l45290/59o52`9m=1?=?21b><4?:%;7e?4f3g3?5764;h15>5<#1=k1?85a95;94>=n;=0;6)7;a;16?k?313;07d=<:18'=1g=;<1e59752:9j77<72-3?m7=:;o;7=?5<3`9:6=4+95c970=i1=31865f3183>!?3i39>7c7;9;78?l4b290/59o5349m=1?=>21b>i4?:%;7e?523g3?5794;h0`>5<#1=k1?85a95;9<>=n>k0;6)7;a;4b?k?313:07d86:18'=1g=>h1e59751:9j22<72-3?m78n;o;7=?4<3`<=6=4+95c92d=i1=31?65f6483>!?3i34?:%;7e?0f3g3?5784;h41>5<#1=k1:l5a95;93>=n>80;6)7;a;4b?k?313207d8?:18'=1g=>h1e59759:9j1c<72-3?m78n;o;7=?g<3`?n6=4+95c92d=i1=31n65f5b83>!?3i35<#1=k1:l5a95;9b>=n=10;6)7;a;4b?k?313;;76g:7;29 <2f2?k0b4:6:038?l31290/59o56`9m=1?=9;10e8;50;&:0d<1i2d2844>3:9j11<72-3?m78n;o;7=?7332c>?7>5$86b>3g26<;4;h51>5<#1=k1:l5a95;953=;1<7*64`85e>h><00:;65f7183>!?3i3o1n3:1(4:n:7c8j<2>28307d8j:18'=1g=>h1e59751`98m3b=83.28l49a:l:0<<6j21b:n4?:%;7e?0f3g3?57?l;:k5j6;o4n86:>4b<3`?o6=4+95c92d=i1=31=h54i4094?">=n0j0;6)7;a;:a?k?313:07d6n:18'=1g=0k1e59751:9j<=<72-3?m76m;o;7=?4<3`2<6=4+95c9!?3i32i7c7;9;68?l>2290/59o58c9m=1?==21b494?:%;7e?>e3g3?5784;h:0>5<#1=k14o5a95;93>=n0;0;6)7;a;:a?k?313207d6>:18'=1g=0k1e59759:9j<5<72-3?m76m;o;7=?g<3`=m6=4+95c9!?3i32i7c7;9;a8?l1d290/59o58c9m=1?=l21b;o4?:%;7e?>e3g3?57k4;h5b>5<#1=k14o5a95;9b>=n?00;6)7;a;:a?k?313;;76g88;29 <2f21h0b4:6:038?l10290/59o58c9m=1?=9;10e:850;&:0d3:9j30<72-3?m76m;o;7=?7332c<87>5$86b>=d26<;4;h;0>5<#1=k14o5a95;953=h><00:;65f9083>!?3i32i7c7;9;3;?>o>83:1(4:n:9`8j<2>28307d6i:18'=1g=0k1e59751`98m=c=83.28l47b:l:0<<6j21b4i4?:%;7e?>e3g3?57?l;:k;=?6=,0>j65l4n86:>4b<3`=n6=4+95c9=n<0k1<7*64`87=<=i1=31<65f48:94?">=n<0=1<7*64`87=<=i1=31>65f48494?">=n<0l1<7*64`87=`=i1=31<65f48f94?">=n<0i1<7*64`87=`=i1=31>65f48`94?">=h=h65`4c694?">=h=h=h=h=h=h=h5<#1=k18o64n86:>47<3f>j87>5$86b>1d?3g3?57?=;:m7e6<72-3?m7:m8:l:0<<6;21d8l<50;&:0d<3j11e59751598k1g6290/59o54c:8j<2>28?07b:l0;29 <2f2=h37c7;9;35?>i3jo0;6)7;a;6a<>h><00:;65`4cg94?">26<74;n6ag?6=,0>j69l7;o;7=?7f32e?no4?:%;7e?2e02d2844>b:9l0gg=83.28l4;b99m=1?=9j10c9l9:18'=1g=!?3i3>i46`64882b>=h=h65`4d094?">=h=h65`4e794?">=h1<7*64`87`<=i1=31865`4e194?">=h=h=h=h=h=h5<#1=k18i74n86:>47<3f>h97>5$86b>1b>3g3?57?=;:m7g1<72-3?m7:k9:l:0<<6;21d8n=50;&:0d<3l01e59751598k1e5290/59o54e;8j<2>28?07b:j1;29 <2f2=n27c7;9;35?>i3m90;6)7;a;6g=>h><00:;65`4ed94?">26<74;n6g`?6=,0>j69j6;o;7=?7f32e?hn4?:%;7e?2c12d2844>b:9l0ad=83.28l4;d89m=1?=9j10c9j8:18'=1g=!?3i3>o56`64882b>=h=h65`4d594?">=z{0?36=4>1z\:1==:m8;15;<4=d32><0434o:>7792:?f57<>>:16i<=597089`7420<870k>4;;56>;b9=02:>52e079=34<5l;>648<;a41=1?801h?8:840?8c6033=>63j198:26=z{01z\:2g=:m8;15;o4=d32>779a:?f57<>i<16i<=597c89`7420k>70k>4;;5e>;b9=02m852e079=3g<5l;>64o:;a41=1?k01h?8:8c6?8c6033=m63j198:e0=z{;?1<7?>{_06?8c6938=70k>1;12?8c6:38=70k>2;12?8c6;38=70k>3;12?8c6<38=70k>4;12?8c6=38=70k>5;12?8c6>38=70k>6;12?8c6?38=70k>7;12?8c6038=70k>8;12?xu5;3:1=a47=:<16ia44=:<16i<<5319>a45=:<16i<=5319>a42=:<16i<:5319>a43=:<16i<;5319>a40=:<16i<85319>a41=:<16i<95319>a4>=:<16i<65319~w74=83;:wS<=;7<52e03967=:m8;1>i52e00967=:m881>i52e01967=:m891>i52e06967=:m8>1>i52e07967=:m8?1>i52e04967=:m8<1>i52e05967=:m8=1>i52e0:967=:m821>i5rs356>5<5sW8<963j1087=c=z{;=?6=4={_040>;b9803o6s|26094?4|V;=970k>1;:b?xu5?80;6?uQ26389`762120q~<80;296~X5?916i2wx>;k50;0xZ70b34o:=76:;|q12a<72;qU>;j4=d32>=252z\12f=:m8;14>5rs34a>5<5sW8=n63j1087=a=z{;;b9803>6s|27;94?4|V;<270k>1;:2?xu5>>0;6?uQ27589`7621:0q~<96;296~X5>?16i;:50;0xZ70334o:=79l;|q126<72;qU>;=4=d32>2d7>52z\127=:m8;1;l5rs342>5<5sW8==63j1087=f=z{;<;6=4={_054>;b980<56s|24d94?4|V;?m70k>1;5;?xu5=k0;6?uQ24`89`762>=0q~<;f;296~X5>750;0xZ75>34o:=79;;|q16`<72;qU>?k4=d32><552z\166=:m8;15?5rs33;>5<5sW8:463j1087=g=z{;:o6=4={_03`>;b9802=6s|21094?4|V;:970k>1;;3?xu6n>0;6?uQ1g589`7621l0q~?jc;296~X6mj16i2c52z\2fc=:m8;1;>5rs0`7>5<5sW;i863j1087=d=z{8k26=4={_3b=>;b980=n6s|18g94?4|V83n70k>1;4:?xu61:0;6?uQ18189`762?=0q~?78;296~X60116i35n7>52z\21g=:m8;1:?5rs073>5<5sW;><63j1087===z{8>>6=4={_371>;b980==6s|12c94?4|V89j70k>1;43?xu6:o0;6?uQ13d89`7622909wS?>9:?f54<2k2wx==k50;0xZ46b34o:=7;m;|q247<72;qU==<4=d32>0g0>0q~on:181[gf34o:=7;<;|q:b?6=:rT2j63j10846>{t:0>1<77}Y:1301h?>:5;5?xu5?l0;6?uQ26g89`762>:0q~<83;296~X5?:16i8>50;0xZ73734o:=78k;|q2a4<72;qU=h?4=d32>3e7>52z\237=:m8;1:55rs020>5<5sW;;?63j1086`>{t1=0;6?uQ959>a47==;1vn:50;0xZf2<5l;9697i;|q`7?6=:rTh?63j138;g>{tk;0;6?uQc39>a44=0h1vn?50;0xZf7<5l;96564}r`e>5<5sWhm70k>2;:4?xuem3:1>vPme:?f572wxni4?:3y]fa=:m881485rsca94?4|Vki01h?=:968yvde2909wSlm;43tyim7>52z\ae>;b9;0?5i5rsc;94?4|Vk301h?=:908yvd?2909wSl7;63tyi;7>52z\a3>;b9;03<6s|b783>7}Yj?16i<<57g9~wg2=838pRo:4=d31>2b=0q~ol:181[gd34o:>799;|qbf?6=:rTjn63j13841>{ti00;6?uQa89>a44=?=1vl650;0xZd><5l;964=4}rc4>5<5sWk<70k>2;;1?xuf>3:1>vPn6:?f57<31k1vl;50;0xZd3<5l;964?4}rc7>5<5sWk?70k>2;;3?xuf;3:1>vPn3:?f57>3ty2i7>52z\:a>;b9;07}Y1m16i<<5729~w1?f3ty2n7>52z\:f>;b9;0=n6s|9`83>7}Y1h16i<<5689~w31?27n=?495:p=3<72;qU5;52e00921=z{0?1<7:181[4>927n=?491:p6<6=838pR?7?;;b9;0>o6s|29a94?4|V;2h70k>2;7a?xu50k0;6?uQ29`89`752?2909wS<78:?f57<31>1v?68:181[4??27n=?4:8:p6=0=838pR?69;;b9;0>86s|29094?4|V;2970k>2;70?xu5080;6?uQ29389`752>80q~<70;296~X50916i<<5709~w71a2909wS<8f:?f57<31?1v?9k:181[40l27n=?480:p62e=838pR?9l;;b9;0=o6s|26:94?4|V;=370k>2;4;?xu5?>0;6?uQ26589`7524:?f56<31o1v47c:p544=838pRf3ty:=<4?:3y]547<5l;86564}r324?6=:rT:==52e019<2=z{8:m6=4={_33b>;b9:03:6s|11f94?4|V8:o70k>3;:6?xu68j0;6?uQ11a89`7421>0q~??b;296~X68k16i<=5829~w46f2909wS??a:?f56<31m1v<>6:181[77127n=>472:p55>=838pR<>7;63ty:<:4?:3y]551<5l;865>4}r332?6=:rT:<;52e0193c=z{8:>6=4={_331>;b9:03;5`?xu6880;6?uQ11389`742>h0q~??0;296~X68916i<=57`9~wc`=838pRkh4=d30>1?d3tymi7>52z\ea>;b9:0<56s|fe83>7}Ynm16i<=5799~wce=838pRkm4=d30>21485:pb<<72;qUj452e01931=z{o21<71<763j128;b>{tn80;6?uQf09>a45=0l1vk>50;0xZc6<5l;865j4}rge>5<5sWom70k>3;::?xubm3:1>vPje:?f56<0m2wxii4?:3y]aa=:m891;>5rsd`94?4|Vlh01h?<:5;b?xubi3:1>vPja:?f56<1j2wxi44?:3y]a<=:m891:45rsd:94?4|Vl201h?<:758yvc02909wSk8;52z\f2>;b9:0=96s|e483>7}Ym<16i<=5659~w`2=838pRh:4=d30>354;999~w`6=838pRh>4=d30>374:f:p`a<72;qUhi52e0191`=z{mi1<7{tl00;6?uQd89>a45==01vi650;0xZa><5l;86978;|qg3?6=:rTo;63j1286<>{tl<0;6?uQd49>a45==>1vi:50;0xZa2<5l;86884}rf0>5<5sWn870k>3;76?xuc:3:1>vPk2:?f56<2<2wxh<4?:3y]`4=:m8919>5rse294?4|Vm:01h?<:608yvea2909wSmi;52z\`a>;b9:0?5;5rsbf94?4|Vjn01h?<:628yved2909wSml;52z\`e>;b9:0=i6s|c883>7}Yk016i<=56e9~wf>=838pRn64=d30>3e27n=>4:d:pg0<72;qUo852e01917=z{8<86=4={_357>;b9=0?5k5rs041>5<5sW;=>63j158;g>{t9?;1<76183>7}Y9?:01h?;:9:8yv72n3:1>vP>5g9>a42=0>1v<;j:181[72m27n=9476:p50b=838pR<;k;23ty:9n4?:3y]50e<5l;?65:4}r36e?6=:rT:9l52e069<6=z{8?26=4={_36=>;b9=0?5i5rs07;>5<5sW;>463j158;6>{t9<=1<75783>7}Y9<<01h?;:928yv72=3:1>vP>549>a42=?o1v<;;:181[72<27n=948d:p505=838pR<;<;m6=4={_37b>;b9=0?5n5rs06f>5<5sW;?i63j1584=>{t9=n1<74b83>7}Y9=i01h?;:658yv73j3:1>vP>4c9>a42=??1v<:n:181[73i27n=9485:p51?=838pR<:6;<5l;?64=4}r373?6=:rT:8:52e069=7=z{8>=6=4={_372>;b9=0?5o5rs067>5<5sW;?863j158:5>{t9=91<74383>7}Y9=801h?;:9d8yv7393:1>vP>409>a42=0l1v<:?:181[73827n=947d:p56`=838pR<=i;>3ty:?h4?:3y]56c<5l;?6:k4}r30`?6=:rT:?i52e06936=z{89h6=4={_30g>;b9=0?5l5rs01a>5<5sW;8n63j1585f>{t9:31<73983>7}Y9:201h?;:758yv74?3:1>vP>369>a42=>?1v<=9:181[74>27n=9495:p563=838pR<=:;52e06927=z{8996=4={_306>;b9=0?555rs012>5<5sW;8=63j15855>{t9::1<72d83>7}Y9;o01h?;:4d8yv75l3:1>vP>2e9>a42==l1v<l4?:3y]57g<5l;?68o4}r31=?6=:rT:>452e0691<=z{8836=4={_31<>;b9=0?5:5rs004>5<5sW;9;63j1586<>{t9;<1<72483>7}Y9;?01h?;:448yv75;3:1>vP>229>a42==<1v<<=:181[75:27n=94:4:p577=838pR<<>;=4?:3y]576<5l;?6:<4}r32b?6=:rT:=k52e06934=z{8;n6=4={_32a>;b9=0?5;5rs03g>5<5sW;:h63j15844>{t98i1<71c83>7}Y98h01h?;:7g8yv76i3:1>vP>1`9>a42=>m1v;b9<0?5k5rs0`1>5<5sW;i>63j148;g>{t9k;1<7b183>7}Y9k:01h?::9:8yv7fn3:1>vP>ag9>a43=0>1v23ty:mn4?:3y]5de<5l;>65:4}r3bf?6=:rT:mo52e079<6=z{8kj6=4={_3be>;b9<0?5i5rs0c;>5<5sW;j463j148;6>{t9h=1<7a783>7}Y9h<01h?::928yv7f=3:1>vP>a49>a43=?o1v6:l4}r3b5?6=:rT:m<52e0793d=z{8k;6=4={_3b4>;b9<0?5n5rs0;e>5<5sW;2j63j1484=>{t90n1<79b83>7}Y90i01h?::658yv7>j3:1>vP>9c9>a43=??1v<7n:181[7>i27n=8485:p5<5l;>64=4}r3:3?6=:rT:5:52e079=7=z{83=6=4={_3:2>;b9<0?5o5rs0;6>5<5sW;2963j148:5>{t90>1<79383>7}Y90801h?::9d8yv7>93:1>vP>909>a43=0l1v<7?:181[7>827n=847d:p5=`=838pR<6i;>3ty:4h4?:3y]5=c<5l;>6:k4}r3;`?6=:rT:4i52e07936=z{82h6=4={_3;g>;b9<0?5l5rs0:a>5<5sW;3n63j1485f>{t91k1<78883>7}Y91301h?::758yv7??3:1>vP>869>a43=>?1v<69:181[7?>27n=8495:p5=3=838pR<6:;6;=4}r3;7?6=:rT:4>52e07927=z{8296=4={_3;6>;b9<0?555rs0:2>5<5sW;3=63j14855>{t91:1<77g83>7}Y9>l01h?::4d8yv70m3:1>vP>7d9>a43==l1v<9l:181[70k27n=84:c:p52d=838pR<9m;68o4}r34=?6=:rT:;452e0791<=z{8=36=4={_34<>;b9<0?5:5rs054>5<5sW;<;63j1486<>{t9><1<77483>7}Y9>?01h?::448yv70<3:1>vP>759>a43==<1v<9<:181[70;27n=84:4:p526=838pR<9?;6:<4}r35a?6=:rT::h52e07934=z{8;b9<0?5;5rs04`>5<5sW;=o63j14844>{t9?h1<76`83>7}Y9?k01h?::7g8yv7113:1>vP>689>a43=>m1v<87:181[71027n=849c:p531=838pR<88;68j4}r350?6=:rT::952e07917=z{;:?6=4={_030>;b9?0?5k5rs320>5<5sW8;?63j178;g>{t:9;1<732j7p}=0183>7}Y:9:01h?9:9:8yv7an3:1>vP>fg9>a40=0>1v23ty:jn4?:3y]5ce<5l;=65:4}r3ef?6=:rT:jo52e049<6=z{8lj6=4={_3ee>;b9?0?5i5rs0d:>5<5sW;m563j178;6>{t9o21<732:7p}>f783>7}Y9o<01h?9:928yv7a=3:1>vP>f49>a40=?o1v;b9?0?5n5rs0ge>5<5sW;nj63j1784=>{t9lo1<73=37p}>ee83>7}Y9ln01h?9:658yv7bj3:1>vP>ec9>a40=??1v<5l;=64=4}r3f3?6=:rT:i:52e049=7=z{8o=6=4={_3f2>;b9?0?5o5rs0g6>5<5sW;n963j178:5>{t9l>1<733;7p}>e283>7}Y9l901h?9:9d8yv7b:3:1>vP>e39>a40=0l1v>3ty:hi4?:3y]5ab<5l;=6:k4}r3gg?6=:rT:hn52e04936=z{8ni6=4={_3gf>;b9?0?5l5rs0fb>5<5sW;om63j1785f>{t9m31<73<27p}>d983>7}Y9m201h?9:758yv7c?3:1>vP>d69>a40=>?1v27n=;495:p5a2=838pR4?:3y]5a5<5l;=6;=4}r3g6?6=:rT:h?52e04927=z{8n:6=4={_3g5>;b9?0?555rs0f3>5<5sW;o<63j17855>{t9jl1<73<;7p}>cd83>7}Y9jo01h?9:4d8yv7dl3:1>vP>ce9>a40==l1v;b9?0?5:5rs0a5>5<5sW;h:63j1786<>{t9j?1<73?<7p}>c583>7}Y9j>01h?9:448yv7d;3:1>vP>c29>a40==<1v;;b9?0?5;5rs0``>5<5sW;io63j17844>{t9kh1<73b`83>7}Y9kk01h?9:7g8yv7e13:1>vP>b89>a40=>m1v;b9>0?5k5rs370>5<5sW8>?63j168;g>{t:<81<77}Y:<;01h?8:9:8yv43m3:1>vP=4d9>a41=0>1v?:k:181[43l27n=:476:p61e=838pR?:l;23ty98o4?:3y]61d<5l;<65:4}r07e?6=:rT98l52e059<6=z{;>26=4={_07=>;b9>0?5i5rs36;>5<5sW8?463j168;6>{t:==1<77}Y:=<01h?8:928yv43=3:1>vP=449>a41=?o1v?:<:181[43;27n=:48d:p614=838pR?:=;;b9>0?5n5rs31f>5<5sW88i63j1684=>{t::n1<77}Y::i01h?8:658yv44j3:1>vP=3c9>a41=??1v?=n:181[44i27n=:485:p66>=838pR?=7;6=4={_001>;b9>0?5o5rs317>5<5sW88863j168:5>{t::91<77}Y::801h?8:9d8yv4493:1>vP=309>a41=0l1v?=?:181[44827n=:47d:p67`=838pR?>3ty9>i4?:3y]67b<5l;<6:k4}r01g?6=:rT9>n52e05936=z{;8i6=4={_01f>;b9>0?5l5rs30b>5<5sW89m63j1685f>{t:;31<77}Y:;201h?8:758yv45?3:1>vP=269>a41=>?1v?<9:181[45>27n=:495:p673=838pR?<:;94?:3y]672<5l;<6;=4}r016?6=:rT9>?52e05927=z{;8:6=4={_015>;b9>0?555rs303>5<5sW89<63j16855>{t:8l1<77}Y:8o01h?8:4d8yv46l3:1>vP=1e9>a41==l1v??l:181[46k27n=:4:c:p64d=838pR??m;;b9>0?5:5rs335>5<5sW8::63j1686<>{t:8?1<77}Y:8>01h?8:448yv46;3:1>vP=129>a41==<1v??=:181[46:27n=:4:4:p647=838pR??>;;b9>0?5;5rs32`>5<5sW8;o63j16844>{t:9h1<77}Y:9k01h?8:7g8yv4713:1>vP=089>a41=>m1v?>7:181[47027n=:49c:p651=838pR?>8;;b9103?6s|24a94?4|V;?h70k>8;5b?xu5=h0;6?uQ24c89`7?2080q~<:9;296~X5=016i<65729~w73?2909wS<:8:?f5=<1:2wx>8950;0xZ73034o:47;6;|q113<72;qU>884=d3;>2797>52z\110=:m8219?5rs5394?76sW>:70k>1;62?8c693>=70k>2;62?8c6:3>=70k>3;62?8c6;3>=70k>4;62?8c6<3>=70k>5;62?8c6=3>=70k>6;62?8c6>3>=70k>7;62?8c6?3>=70k>8;62?8c603>=7p}7ed83>47|V1on70k>1;:fa>;b9803ik52e009<`c<5l;965ki;bm27n=>47eg9>a42=0lo01h?;:9ge?8c6=32ni63j148;ac=:m8<14hk4=d35>=ca34o:;76je:?f527}Y>jn01h?>:5ga?xu1kj0;6?uQ6ba89`762=nj7p}9c`83>7}Y>jk01h?>:5f;?xu1k00;6?uQ6b;89`762=n=7p}9c983>7}Y>j201h?>:5f6?xu1k>0;6?uQ6b589`762=n?7p}9c783>7}Y>j<01h?>:5f0?xu1k<0;6?uQ6b789`762=n97p}9c583>7}Y>j>01h?>:5f2?xu1k:0;6?uQ6b189`762=o27p}9c383>7}Y>j801h?>:5f3?xu1k80;6?uQ6b389`762=im7p}9bg83>7}Y>kl01h?>:5af?xu1jl0;6?uQ6cg89`762=io7p}9be83>7}Y>kn01h?>:5aa?xu1jj0;6?uQ6ca89`762=ij7p}9bc83>7}Y>kh01h?>:5a:?xu1jh0;6?uQ6cc89`762=i37p}9b883>7}Y>k301h?>:5g;?xu1j10;6?uQ6c:89`762=i<7p}9b683>7}Y>k=01h?>:5a5?xu1j:0;6?uQ6c189`762=i>7p}9a683>7}Y>h=01h?>:5a7?xu11j0;6?uQ68a89`762=i87p}99083>7}Y>0;01h?>:5a1?xu10?0;6?uQ69489`762=o:7p}97c83>7}Y>>h01h?>:5g3?xu1?90;6?uQ66289`762=o<7p}96483>7}Y>??01h?>:5fe?xu1=h0;6?uQ64c89`762=nn7p}94g83>7}Y>=l01h?>:5fg?xu1<=0;6?uQ65689`762=nh7p}93983>7}Y>:201h?>:5fa?xu1:m0;6?uQ63f89`762=n<7p}92383>7}Y>;801h?>:5a`?xu19>0;6?uQ60589`762=i:7p}90b83>7}Y>9i01h?>:5g5?xu1880;6?uQ61389`762=h27p}:f783>7}Y=o<01h?>:5`4?xu2mk0;6?uQ5d`89`762=h>7p}:e183>7}Y=l:01h?>:5`7?xu2l<0;6?uQ5e789`762=h87p}:c883>7}Y=j301h?>:5`1?xu2jl0;6?uQ5cg89`762=h:7p}:b283>7}Y=k901h?>:5`3?xu2i10;6?uQ5`:89`762=o?7p}:9e83>7}Y=0n01h?>:5ce?xu21;0;6?uQ58089`762=kn7p}:8683>7}Y=1=01h?>:5cg?xu2?j0;6?uQ56a89`762=kh7p}:7083>7}Y=>;01h?>:5cb?xu2>?0;6?uQ57489`762=k27p}:5`83>7}Y=:5c;?xu27}Y==>01h?>:5g0?xu2;00;6?uQ52;89`762=k=7p}:2d83>7}Y=;o01h?>:5c6?xu2::0;6?uQ53189`762=k?7p}:1983>7}Y=8201h?>:5c0?xu28m0;6?uQ51f89`762=k97p}:0383>7}Y=9801h?>:5c2?xu3n>0;6?uQ4g589`762=i;7p}9eb83>7}Y>li01h?>:5`e?xu1m80;6?uQ6d389`762=o97p}9d783>7}Y>m<01h?>:5`f?xu1kk0;6?uQ6b`89`762=ho7p}9c183>7}Y>j:01h?>:5``?xu1i10;6?uQ6`:89`762=hi7p}93883>7}Y>:301h?>:5`b?xu2kh0;6?uQ5bc89`762=h=7p}:5c83>7}Y=:5ca?xu3mj0;6?uQ4da89`762=k;7p}:1b83>7}Y=8i01h?=:5ga?xu29k0;6?uQ50`89`752=nj7p}:1`83>7}Y=8k01h?=:5f;?xu2900;6?uQ50;89`752=n=7p}:1683>7}Y=8=01h?=:5f6?xu29?0;6?uQ50489`752=n?7p}:1483>7}Y=8?01h?=:5f0?xu29=0;6?uQ50689`752=n97p}:1283>7}Y=8901h?=:5f2?xu29;0;6?uQ50089`752=o27p}:1083>7}Y=8;01h?=:5f3?xu2990;6?uQ50289`752=im7p}:0g83>7}Y=9l01h?=:5af?xu28l0;6?uQ51g89`752=io7p}:0b83>7}Y=9i01h?=:5aa?xu28k0;6?uQ51`89`752=ij7p}:0`83>7}Y=9k01h?=:5a:?xu2800;6?uQ51;89`752=i37p}:0983>7}Y=9201h?=:5g;?xu28>0;6?uQ51589`752=i<7p}:0783>7}Y=9<01h?=:5a5?xu28<0;6?uQ51789`752=i>7p}:0583>7}Y=9>01h?=:5a7?xu28:0;6?uQ51189`752=i87p}:0083>7}Y=9;01h?=:5a1?xu2890;6?uQ51289`752=o:7p};fg83>7}Y7}Y7}Y7}Y7}Y7}Y01h?=:5g5?xu3n:0;6?uQ4g189`752=h27p};f383>7}Y7p};f183>7}Y7}Y7}Y>lh01h?=:5`3?xu1mh0;6?uQ6dc89`752=o?7p}9e883>7}Y>l301h?=:5ce?xu1m10;6?uQ6d:89`752=kn7p}9e683>7}Y>l=01h?=:5cg?xu1m?0;6?uQ6d489`752=kh7p}9e483>7}Y>l?01h?=:5cb?xu1m=0;6?uQ6d689`752=k27p}9e283>7}Y>l901h?=:5c;?xu1m;0;6?uQ6d089`752=k<7p}9e183>7}Y>l:01h?=:5g0?xu1lo0;6?uQ6ed89`752=k=7p}9dd83>7}Y>mo01h?=:5c6?xu1lm0;6?uQ6ef89`752=k?7p}9db83>7}Y>mi01h?=:5c0?xu1lk0;6?uQ6e`89`752=k97p}9d`83>7}Y>mk01h?=:5c2?xu1l00;6?uQ6e;89`752=i;7p}9d983>7}Y>m201h?=:5`e?xu1l>0;6?uQ6e589`752=o97p}9d483>7}Y>m?01h?=:5`f?xu1l=0;6?uQ6e689`752=ho7p}9d283>7}Y>m901h?=:5``?xu1l;0;6?uQ6e089`752=hi7p}9d083>7}Y>m;01h?=:5`b?xu1l90;6?uQ6e289`752=h=7p}9cg83>7}Y>jl01h?=:5ca?xu1kl0;6?uQ6bg89`752=k;7p}:6b83>7}Y=?i01h?<:5ga?xu2>k0;6?uQ57`89`742=nj7p}:6`83>7}Y=?k01h?<:5f;?xu2>00;6?uQ57;89`742=n=7p}:6983>7}Y=?201h?<:5f6?xu2>>0;6?uQ57589`742=n?7p}:6483>7}Y=??01h?<:5f0?xu2>=0;6?uQ57689`742=n97p}:6283>7}Y=?901h?<:5f2?xu2>;0;6?uQ57089`742=o27p}:6083>7}Y=?;01h?<:5f3?xu2>90;6?uQ57289`742=im7p}:5g83>7}Y=7}Y=7}Y=<301h?<:5a:?xu2=10;6?uQ54:89`742=i37p}:5683>7}Y=<=01h?<:5g;?xu2=?0;6?uQ54489`742=i<7p}:5483>7}Y=7p}:5283>7}Y=<901h?<:5a7?xu2=;0;6?uQ54089`742=i87p}:5083>7}Y=<;01h?<:5a1?xu2=90;6?uQ54289`742=o:7p}:4d83>7}Y==o01h?<:5g3?xu27}Y==i01h?<:5fe?xu27}Y==k01h?<:5fg?xu2<00;6?uQ55;89`742=nh7p}:4983>7}Y==201h?<:5fa?xu2<>0;6?uQ55589`742=n<7p}:4783>7}Y==<01h?<:5a`?xu2<<0;6?uQ55789`742=i:7p}:4283>7}Y==901h?<:5g5?xu2<;0;6?uQ55089`742=h27p}:4083>7}Y==;01h?<:5`4?xu2<90;6?uQ55289`742=h>7p}:3g83>7}Y=:l01h?<:5`7?xu2;l0;6?uQ52g89`742=h87p}:3e83>7}Y=:n01h?<:5`1?xu2;j0;6?uQ52a89`742=h:7p}:3c83>7}Y=:h01h?<:5`3?xu2;h0;6?uQ52c89`742=o?7p}:3983>7}Y=:201h?<:5ce?xu2;>0;6?uQ52589`742=kn7p}:3783>7}Y=:<01h?<:5cg?xu2;<0;6?uQ52789`742=kh7p}:3583>7}Y=:>01h?<:5cb?xu2;:0;6?uQ52189`742=k27p}:3383>7}Y=:801h?<:5c;?xu2;80;6?uQ52389`742=k<7p}:3183>7}Y=::01h?<:5g0?xu2:o0;6?uQ53d89`742=k=7p}:2e83>7}Y=;n01h?<:5c6?xu2:j0;6?uQ53a89`742=k?7p}:2c83>7}Y=;h01h?<:5c0?xu2:h0;6?uQ53c89`742=k97p}:2883>7}Y=;301h?<:5c2?xu2:10;6?uQ53:89`742=i;7p}:2683>7}Y=;=01h?<:5`e?xu2:?0;6?uQ53489`742=o97p}:2483>7}Y=;?01h?<:5`f?xu2:=0;6?uQ53689`742=ho7p}:2383>7}Y=;801h?<:5``?xu2:80;6?uQ53389`742=hi7p}:2183>7}Y=;:01h?<:5`b?xu29o0;6?uQ50d89`742=h=7p}:1d83>7}Y=8o01h?<:5ca?xu29m0;6?uQ50f89`742=k;7p}:bc83>7}Y=kh01h?;:5ga?xu2jh0;6?uQ5cc89`732=nj7p}:b883>7}Y=k301h?;:5f;?xu2j10;6?uQ5c:89`732=n=7p}:b683>7}Y=k=01h?;:5f6?xu2j?0;6?uQ5c489`732=n?7p}:b483>7}Y=k?01h?;:5f0?xu2j=0;6?uQ5c689`732=n97p}:b383>7}Y=k801h?;:5f2?xu2j80;6?uQ5c389`732=o27p}:b183>7}Y=k:01h?;:5f3?xu2io0;6?uQ5`d89`732=im7p}:ad83>7}Y=ho01h?;:5af?xu2im0;6?uQ5`f89`732=io7p}:ab83>7}Y=hi01h?;:5aa?xu2ik0;6?uQ5``89`732=ij7p}:a`83>7}Y=hk01h?;:5a:?xu2i00;6?uQ5`;89`732=i37p}:a683>7}Y=h=01h?;:5g;?xu2i?0;6?uQ5`489`732=i<7p}:a483>7}Y=h?01h?;:5a5?xu2i=0;6?uQ5`689`732=i>7p}:a283>7}Y=h901h?;:5a7?xu2i;0;6?uQ5`089`732=i87p}:a083>7}Y=h;01h?;:5a1?xu2i90;6?uQ5`289`732=o:7p}:9g83>7}Y=0l01h?;:5g3?xu21l0;6?uQ58g89`732=o<7p}:9b83>7}Y=0i01h?;:5fe?xu21k0;6?uQ58`89`732=nn7p}:9`83>7}Y=0k01h?;:5fg?xu2100;6?uQ58;89`732=nh7p}:9983>7}Y=0201h?;:5fa?xu21>0;6?uQ58589`732=n<7p}:9783>7}Y=0<01h?;:5a`?xu21<0;6?uQ58789`732=i:7p}:9583>7}Y=0>01h?;:5g5?xu21:0;6?uQ58189`732=h27p}:9083>7}Y=0;01h?;:5`4?xu2190;6?uQ58289`732=h>7p}:8g83>7}Y=1l01h?;:5`7?xu20l0;6?uQ59g89`732=h87p}:8e83>7}Y=1n01h?;:5`1?xu20j0;6?uQ59a89`732=h:7p}:8c83>7}Y=1h01h?;:5`3?xu20h0;6?uQ59c89`732=o?7p}:8883>7}Y=1301h?;:5ce?xu2010;6?uQ59:89`732=kn7p}:8783>7}Y=1<01h?;:5cg?xu20<0;6?uQ59789`732=kh7p}:8583>7}Y=1>01h?;:5cb?xu20:0;6?uQ59189`732=k27p}:8383>7}Y=1801h?;:5c;?xu2080;6?uQ59389`732=k<7p}:8183>7}Y=1:01h?;:5g0?xu2?o0;6?uQ56d89`732=k=7p}:7d83>7}Y=>o01h?;:5c6?xu2?m0;6?uQ56f89`732=k?7p}:7c83>7}Y=>h01h?;:5c0?xu2?h0;6?uQ56c89`732=k97p}:7883>7}Y=>301h?;:5c2?xu2?10;6?uQ56:89`732=i;7p}:7683>7}Y=>=01h?;:5`e?xu2??0;6?uQ56489`732=o97p}:7483>7}Y=>?01h?;:5`f?xu2?=0;6?uQ56689`732=ho7p}:7283>7}Y=>901h?;:5``?xu2?;0;6?uQ56089`732=hi7p}:7183>7}Y=>:01h?;:5`b?xu2>o0;6?uQ57d89`732=h=7p}:6d83>7}Y=?o01h?;:5ca?xu2>m0;6?uQ57f89`732=k;7p}90c83>7}Y>9h01h?::5ga?xu18h0;6?uQ61c89`722=nj7p}90883>7}Y>9301h?::5f;?xu1810;6?uQ61:89`722=n=7p}90683>7}Y>9=01h?::5f6?xu18?0;6?uQ61489`722=n?7p}90483>7}Y>9?01h?::5f0?xu18=0;6?uQ61689`722=n97p}90283>7}Y>9901h?::5f2?xu18;0;6?uQ61089`722=o27p}90183>7}Y>9:01h?::5f3?xu2no0;6?uQ5gd89`722=im7p}:fd83>7}Y=oo01h?::5af?xu2nm0;6?uQ5gf89`722=io7p}:fb83>7}Y=oi01h?::5aa?xu2nk0;6?uQ5g`89`722=ij7p}:f`83>7}Y=ok01h?::5a:?xu2n00;6?uQ5g;89`722=i37p}:f983>7}Y=o201h?::5g;?xu2n>0;6?uQ5g589`722=i<7p}:f483>7}Y=o?01h?::5a5?xu2n=0;6?uQ5g689`722=i>7p}:f283>7}Y=o901h?::5a7?xu2n;0;6?uQ5g089`722=i87p}:f083>7}Y=o;01h?::5a1?xu2n90;6?uQ5g289`722=o:7p}:eg83>7}Y=ll01h?::5g3?xu2ml0;6?uQ5dg89`722=o<7p}:ee83>7}Y=ln01h?::5fe?xu2mj0;6?uQ5da89`722=nn7p}:e`83>7}Y=lk01h?::5fg?xu2m00;6?uQ5d;89`722=nh7p}:e983>7}Y=l201h?::5fa?xu2m>0;6?uQ5d589`722=n<7p}:e783>7}Y=l<01h?::5a`?xu2m<0;6?uQ5d789`722=i:7p}:e583>7}Y=l>01h?::5g5?xu2m:0;6?uQ5d189`722=h27p}:e383>7}Y=l801h?::5`4?xu2m80;6?uQ5d389`722=h>7p}:dg83>7}Y=ml01h?::5`7?xu2ll0;6?uQ5eg89`722=h87p}:de83>7}Y=mn01h?::5`1?xu2lj0;6?uQ5ea89`722=h:7p}:dc83>7}Y=mh01h?::5`3?xu2lh0;6?uQ5ec89`722=o?7p}:d883>7}Y=m301h?::5ce?xu2l10;6?uQ5e:89`722=kn7p}:d683>7}Y=m=01h?::5cg?xu2l?0;6?uQ5e489`722=kh7p}:d583>7}Y=m>01h?::5cb?xu2l:0;6?uQ5e189`722=k27p}:d383>7}Y=m801h?::5c;?xu2l80;6?uQ5e389`722=k<7p}:d183>7}Y=m:01h?::5g0?xu2ko0;6?uQ5bd89`722=k=7p}:cd83>7}Y=jo01h?::5c6?xu2km0;6?uQ5bf89`722=k?7p}:cb83>7}Y=ji01h?::5c0?xu2kk0;6?uQ5b`89`722=k97p}:c983>7}Y=j201h?::5c2?xu2k>0;6?uQ5b589`722=i;7p}:c783>7}Y=j<01h?::5`e?xu2k<0;6?uQ5b789`722=o97p}:c583>7}Y=j>01h?::5`f?xu2k:0;6?uQ5b189`722=ho7p}:c383>7}Y=j801h?::5``?xu2k80;6?uQ5b389`722=hi7p}:c183>7}Y=j:01h?::5`b?xu2jo0;6?uQ5cd89`722=h=7p}:be83>7}Y=kn01h?::5ca?xu2jj0;6?uQ5ca89`722=k;7p}95b83>7}Y>7}Y><301h?9:5f;?xu1=10;6?uQ64:89`712=n=7p}95683>7}Y><=01h?9:5f6?xu1=?0;6?uQ64489`712=n?7p}95483>7}Y>7}Y><901h?9:5f2?xu1=;0;6?uQ64089`712=o27p}95083>7}Y><;01h?9:5f3?xu1=90;6?uQ64289`712=im7p}94d83>7}Y>=o01h?9:5af?xu17}Y>=i01h?9:5aa?xu17}Y>=k01h?9:5a:?xu1<00;6?uQ65;89`712=i37p}94983>7}Y>=201h?9:5g;?xu1<>0;6?uQ65589`712=i<7p}94783>7}Y>=<01h?9:5a5?xu1<<0;6?uQ65789`712=i>7p}94283>7}Y>=901h?9:5a7?xu1<;0;6?uQ65089`712=i87p}94083>7}Y>=;01h?9:5a1?xu1<90;6?uQ65289`712=o:7p}93g83>7}Y>:l01h?9:5g3?xu1;l0;6?uQ62g89`712=o<7p}93e83>7}Y>:n01h?9:5fe?xu1;j0;6?uQ62a89`712=nn7p}93c83>7}Y>:h01h?9:5fg?xu1;h0;6?uQ62c89`712=nh7p}93683>7}Y>:=01h?9:5fa?xu1;?0;6?uQ62489`712=n<7p}93483>7}Y>:?01h?9:5a`?xu1;=0;6?uQ62689`712=i:7p}93283>7}Y>:901h?9:5g5?xu1;;0;6?uQ62089`712=h27p}93083>7}Y>:;01h?9:5`4?xu1;90;6?uQ62289`712=h>7p}92g83>7}Y>;l01h?9:5`7?xu1:l0;6?uQ63g89`712=h87p}92b83>7}Y>;i01h?9:5`1?xu1:k0;6?uQ63`89`712=h:7p}92`83>7}Y>;k01h?9:5`3?xu1:00;6?uQ63;89`712=o?7p}92983>7}Y>;201h?9:5ce?xu1:>0;6?uQ63589`712=kn7p}92783>7}Y>;<01h?9:5cg?xu1:<0;6?uQ63789`712=kh7p}92583>7}Y>;>01h?9:5cb?xu1::0;6?uQ63189`712=k27p}92083>7}Y>;;01h?9:5c;?xu1:90;6?uQ63289`712=k<7p}91g83>7}Y>8l01h?9:5g0?xu19l0;6?uQ60g89`712=k=7p}91e83>7}Y>8n01h?9:5c6?xu19j0;6?uQ60a89`712=k?7p}91c83>7}Y>8h01h?9:5c0?xu19h0;6?uQ60c89`712=k97p}91883>7}Y>8301h?9:5c2?xu1910;6?uQ60:89`712=i;7p}91783>7}Y>8<01h?9:5`e?xu19<0;6?uQ60789`712=o97p}91583>7}Y>8>01h?9:5`f?xu19:0;6?uQ60189`712=ho7p}91383>7}Y>8801h?9:5``?xu1980;6?uQ60389`712=hi7p}91183>7}Y>8:01h?9:5`b?xu18o0;6?uQ61d89`712=h=7p}90d83>7}Y>9o01h?9:5ca?xu18m0;6?uQ61f89`712=k;7p}9ab83>7}Y>hi01h?8:5ga?xu1ik0;6?uQ6``89`702=nj7p}9a`83>7}Y>hk01h?8:5f;?xu1i00;6?uQ6`;89`702=n=7p}9a783>7}Y>h<01h?8:5f6?xu1i<0;6?uQ6`789`702=n?7p}9a583>7}Y>h>01h?8:5f0?xu1i:0;6?uQ6`189`702=n97p}9a383>7}Y>h801h?8:5f2?xu1i80;6?uQ6`389`702=o27p}9a183>7}Y>h:01h?8:5f3?xu11o0;6?uQ68d89`702=im7p}99d83>7}Y>0o01h?8:5af?xu11m0;6?uQ68f89`702=io7p}99c83>7}Y>0h01h?8:5aa?xu11h0;6?uQ68c89`702=ij7p}99883>7}Y>0301h?8:5a:?xu1110;6?uQ68:89`702=i37p}99683>7}Y>0=01h?8:5g;?xu11?0;6?uQ68489`702=i<7p}99483>7}Y>0?01h?8:5a5?xu11=0;6?uQ68689`702=i>7p}99283>7}Y>0901h?8:5a7?xu11;0;6?uQ68089`702=i87p}99183>7}Y>0:01h?8:5a1?xu10o0;6?uQ69d89`702=o:7p}98d83>7}Y>1o01h?8:5g3?xu10m0;6?uQ69f89`702=o<7p}98b83>7}Y>1i01h?8:5fe?xu10k0;6?uQ69`89`702=nn7p}98`83>7}Y>1k01h?8:5fg?xu1000;6?uQ69;89`702=nh7p}98983>7}Y>1201h?8:5fa?xu10>0;6?uQ69589`702=n<7p}98483>7}Y>1?01h?8:5a`?xu10=0;6?uQ69689`702=i:7p}98283>7}Y>1901h?8:5g5?xu10;0;6?uQ69089`702=h27p}98083>7}Y>1;01h?8:5`4?xu1090;6?uQ69289`702=h>7p}97g83>7}Y>>l01h?8:5`7?xu1?l0;6?uQ66g89`702=h87p}97e83>7}Y>>n01h?8:5`1?xu1?j0;6?uQ66a89`702=h:7p}97`83>7}Y>>k01h?8:5`3?xu1?00;6?uQ66;89`702=o?7p}97983>7}Y>>201h?8:5ce?xu1?>0;6?uQ66589`702=kn7p}97783>7}Y>><01h?8:5cg?xu1?<0;6?uQ66789`702=kh7p}97583>7}Y>>>01h?8:5cb?xu1?:0;6?uQ66189`702=k27p}97383>7}Y>>801h?8:5c;?xu1?80;6?uQ66389`702=k<7p}96g83>7}Y>?l01h?8:5g0?xu1>l0;6?uQ67g89`702=k=7p}96e83>7}Y>?n01h?8:5c6?xu1>j0;6?uQ67a89`702=k?7p}96c83>7}Y>?h01h?8:5c0?xu1>h0;6?uQ67c89`702=k97p}96883>7}Y>?301h?8:5c2?xu1>10;6?uQ67:89`702=i;7p}96683>7}Y>?=01h?8:5`e?xu1>?0;6?uQ67489`702=o97p}96583>7}Y>?>01h?8:5`f?xu1>:0;6?uQ67189`702=ho7p}96383>7}Y>?801h?8:5``?xu1>80;6?uQ67389`702=hi7p}96183>7}Y>?:01h?8:5`b?xu1=o0;6?uQ64d89`702=h=7p}95d83>7}Y>7}Y>k<01h?7:5f2?xu1j=0;6?uQ6c689`7?2=i37p}9b383>7}Y>k801h?7:5g3?xu1j80;6?uQ6c389`7?2=i:7p}9b183>7}Y>k:01h?7:5`3?xu1io0;6?uQ6`d89`7?2=k<7p}9ad83>7}Y>ho01h?7:5`e?xu1im0;6?uQ6`f89`7?2=k;7p}64283><}:1l?15984=d32>7e<5l;96?m4=d30>7e<5l;?6?m4=d36>7e<5l;=6?m4=d34>7e<5l;36?m4}r72>5<50oq65h:58g28Z0734o:=7=;;;b9809=6P85b9]3fdX?mm1U:k64^620?[17m2T<=45Q7368Z24a3W=8m6P8449]306?i7S997:\437=Y?>n0R:67;_5:7>X01l1U;l74^6`7?[1en2T8:\;66=Y0;o0R5=6;_:71>X?=91U48l4^945?[>092T3;n5Q8958Z=?53W22h6P7a99]X?jl1U4oh4^9a3?[>d:2T3o>5Q8b68Z=e23W2h:6P7c69]7==;7=<;34o:>7=;;7=9;_:`b>;b9;09=6P7d19]X?l01U4io4^9fa?[>ck2T3hi5Q8eg8Z=ba3W2n<6P7e09]<`5X?mh1U4hl4^9g`?[0bm2T=ik5Q6g28Z3`63W6P9f29]2c27S8i6:\5b2=Y>o30R;hn;_4ef>X1nj1U:kj4^7df?[0an2T<<=5Q7138Z2653W=;86P8049]350:<7S9?8:\44<=Y?9k0R:>m;_53g>X08m1U;=h4^633?[1692T<=?5Q7018Z2733W=:96P8179]341;37S9>a:\45g=Y?8i0R:?k;34o:?7=;;;b9:09=6P81g9]3768:7S9=2:\466=Y?;?0R:<9;_513>X0:11U;?74^60b?[15j2T<>n5Q73f8Z24b3W=8<6P8309]364987S9<4:\470=Y?:<0R:=8;_50<>X0;01U;>l4^61`?[14l2T>?7S9;6:\402=Y?=20R::6;_57e>X0?6P8559]303?=7S9:7:\41==Y?<30R:;n;_56`>X0=l1U;8h4^643?[1192T<:?5Q7718Z2033W==96P8679]33><27S99a:\42g=Y??i0R:8k;34o:87=;;;b9=09=6P86g9]326=:7S983:\431=Y?>?0R:99;_543>X0?11U;:74^65b?[10j2T<;n5Q76g8Z21a3W=3<6P8809]3=4287S974:\4<0=Y?1<0R:68;_5;=>X00h1U;5l4^6:`?[1?l2T<4h5Q79d8Z2?73W=2=6P8939]3<23>7S966:\4=2=Y?020R:76;_5:e>X01k1U;4m4^6;g?[1>n2Tk=7S9n7:\4e==Y?hk0R:om;_5bg>X0im1U;lk4^6ce?[1e82Th37S9m9:\4fd=Y?kh0R:ll;34o:97=;;;b9<09=6P8bd9]3f6i:7S9l2:\4g6=Y?j>0R:m:;_5`2>X0k>1U;n64^6a:?[1dk2Tn87S9k4:\4`0=Y?m=0R:j7;_5g=>X0lh1U;il4^6f`?[1cl2T6P8e29]3`2o>7S9j6:\4a2=Y?l20R:k6;_5fe>X0mk1U;hj4^6gf?[1bn2Tl=7S9i8:\4b<=Y?ok0R:hm;_5eg>X0nm1U;kk4^6de?[>782T3<<5Q8118Z=633W2;96P7079]<51l;34o::7=;;;b9?09=6P70g9]<462:\;56=Y08>0R5?:;_:22>X?9>1U4<74^93b?[>6j2T3=n5Q80f8Z=7b3W2:j6P7219]<77X?:01U4?o4^90a?[>5k2T3>i5Q83d8Z=573W28=6P7339]<65X?;j1U4>j4^91f?[>4n2T38=5Q8538Z=253W2??6P7459]<10<7S6;8:\;0<=Y0=k0R5:m;_:7g>X?292T39?5Q8418Z=333W2>96P7579]<0134o:;7=;;;b9>09=6P75g9]<360R58:;_:53>X?>11U4;74^94b?[>1j2T3:n5Q87f8Z=0b3W2=j6P7719]<24<0R598;_:4<>X??01U4:o4^95a?[>0l2T3;h5Q86d8Z=>73W23=6P7839]<=5X?0k1U45m4^9:g?[>?m2T34k5Q8828Z=?63W22?6P7959]<<3X?1j1U44k4^9;e?[>f82T3m<5Q8`08Z=g43W2j86P7a49]27n=54:7:?f5=<2027n=54;969>a4>==h16i<655c9>a4>==j16i<655d9>a4>==o16i<65619>a4>=>816i<6548:89`7?2?901h?7:7689`7?2??01h?7:7489`7?2?=01h?7:7;89`7?2?h01h?7:5;b?8c603=n70k>8;::?8c6032o70k>8;:f?8c6032m70k>8;;3?8c6033:70k>8;6:f>;b9102?63j19840>;b910<963j19842>;b910<;63j1984<>;b910<563j1987=f=:m821;o52e0:93f=:m821;i52e0:93c=:m8214=52e0:9<4=:m8214?52e0:90=3<5l;36584=d3;>=1<5l;36564=d3;>=g<5l;365m4=d3;>1?a34o:47<8;X?io1U4o>4^9`2?[>e:2T3n>5Q8c78Z=d03twx59=50;6x9=70796;;60>;>>?029;529749<`c52z\`4`=:1?<18hm4}ra4`?6=:rTh;i52974910d52z\`af=:1?<19no4}rf6f?6=:rTo9o52974926?52z\ggd=:1?<1:l64}rff6?6=:rToi?5297492f652z\gaa=:1?<1:nl4}rfe52z\f46=:1?<1:h?4}rg3a?6=:rTn52z\`5<=:1?<18k94}ra10?6=:rTh>952974915452z\`6c=:1?<19=j4}ra0e?6=:rTh?l52974914>52z\`00=:1?<19?=4}ra64?6=:rTh9=52974917cn7>52z\`1g=:1?<19>74}ra52?6=:rTh:;52974911252z\`34=:1?<199h4}ra4g?6=:rTh;n52974910g52z\`<==:1?<19;84}ra:7?6=:rTh5>52974912752z\`=`=:1?<19:m4}rab=?6=:rThm45297491=152z\`f1=:1?<194<4}raab?6=:rThnk529749152z\`gd=:1?<19l64}rag1?6=:rThh85297491g552z\`a5=:1?<19ok4}raff?6=:rThio5297491f?52z\`b2=:1?<19i;4}rf36?6=:rTo52z\g4a=:1?<19hl4}rf252z\g66=:1?<1:=?4}rf1a?6=:rTo>h52974925e52z\g7<=:1?<1:<94}rf70?6=:rTo8952974927452z\g0c=:1?<1:?j4}rf6e?6=:rTo9l52974926>52z\g23=:1?<1:9:4}rf45?6=:rTo;<52974921`52z\g3f=:1?<1:8o4}rf;3?6=:rTo4:5297492337>52z\g=7=:1?<1::>4}rf:`?6=:rTo5i52974922d52z\ge==:1?<1:584}rfa7?6=:rTon>5297492<752z\gf`=:1?<1:4m4}rf`=?6=:rToo45297492d152z\g`0=:1?<1:o=4}rfg=?6=:rToh45297492g152z\g`d=:1?<1:o64}rfgf?6=:rToho5297492g?52z\g`f=:1?<1:oo4}rfg`?6=:rTohi5297492gd52z\g``=:1?<1:om4}rfgb?6=:rTohk5297492gb52z\ga5=:1?<1:ok4}rff5?6=:rToi<5297492g`52z\ga6=:1?<1:n?4}rff0?6=:rToi95297492f452z\ga0=:1?<1:n=4}rff2?6=:rToi;5297492f252z\ga2=:1?<1:n;4}rff52z\ga<=:1?<1:n94}rffe?6=:rToil5297492f>52z\gag=:1?<1:n74}rffg?6=:rToin5297492fg52z\ga`=:1?<1:nm4}rffb?6=:rToik5297492fb52z\gb5=:1?<1:nk4}rfe5?6=:rToj<5297492f`7>52z\gb7=:1?<1:i>4}rfe7?6=:rToj>5297492a752z\gb1=:1?<1:i<4}rfe1?6=:rToj85297492a552z\gb3=:1?<1:i:4}rfe3?6=:rToj:5297492a352z\gb<=:1?<1:i94}rfee?6=:rTojl5297492a>52z\gbg=:1?<1:i74}rfeg?6=:rTojn5297492ag52z\gba=:1?<1:il4}rfea?6=:rTojh5297492ae52z\gbc=:1?<1:ij4}rg34?6=:rTn<=5297492ac52z\f44=:1?<1:ih4}rg36?6=:rTn52z\f41=:1?<1:h<4}rg31?6=:rTn<85297492`552z\f43=:1?<1:h:4}rg33?6=:rTn<:5297492`352z\f4==:1?<1:h84}rg3=?6=:rTn<45297492`152z\f4d=:1?<1:h64}rg3f?6=:rTn52z\f4f=:1?<1:ho4}rg3`?6=:rTn52z\`4c=:1?<18hj4}ra24?6=:rTh==5297490`c52z\`54=:1?<18hh4}ra26?6=:rTh=?5297490c652z\`56=:1?<18k?4}ra20?6=:rTh=95297490c452z\`50=:1?<18k=4}ra22?6=:rTh=;5297490c252z\`52=:1?<18k;4}ra252z\`5d=:1?<18k64}ra2f?6=:rTh=o5297490c?52z\`5f=:1?<18ko4}ra2`?6=:rTh=i5297490cd52z\`5`=:1?<18km4}ra2b?6=:rTh=k5297490cb52z\`65=:1?<18kk4}ra15?6=:rTh><5297490c`7>52z\`67=:1?<19=>4}ra17?6=:rTh>>52974915752z\`60=:1?<19==4}ra12?6=:rTh>;52974915252z\`62=:1?<19=;4}ra1552974915052z\`6<=:1?<19=94}ra1e?6=:rTh>l52974915>52z\`6g=:1?<19=74}ra1g?6=:rTh>n52974915g52z\`6a=:1?<19=l4}ra1a?6=:rTh>h52974915e52z\`75=:1?<19=k4}ra05?6=:rTh?<52974915`7>52z\`77=:1?<19<>4}ra07?6=:rTh?>52974914752z\`71=:1?<19<<4}ra01?6=:rTh?852974914552z\`73=:1?<19<:4}ra03?6=:rTh?:52974914352z\`7==:1?<19<84}ra0=?6=:rTh?452974914152z\`7g=:1?<19<74}ra0g?6=:rTh?n52974914g52z\`7a=:1?<1952z\`7c=:1?<1952z\`04=:1?<1952z\`06=:1?<19??4}ra70?6=:rTh8952974917452z\`03=:1?<19?:4}ra73?6=:rTh8:52974917352z\`0==:1?<19?84}ra7=?6=:rTh8452974917152z\`0d=:1?<19?64}ra7f?6=:rTh8o52974917?52z\`0f=:1?<19?o4}ra7`?6=:rTh8i52974917d52z\`0`=:1?<19?m4}ra7b?6=:rTh8k52974917b=7>52z\`14=:1?<19?h4}ra66?6=:rTh9?529749166?7>52z\`16=:1?<19>?4}ra60?6=:rTh9952974916497>52z\`10=:1?<19>=4}ra62?6=:rTh9;529749162;7>52z\`12=:1?<19>;4}ra657>52z\`1<=:1?<19>94}ra6e?6=:rTh9l52974916>o7>52z\`1f=:1?<19>o4}ra6`?6=:rTh9i52974916di7>52z\`1`=:1?<19>m4}ra6b?6=:rTh9k52974916b52z\`25=:1?<19>k4}ra55?6=:rTh:<52974916`7>52z\`27=:1?<199>4}ra57?6=:rTh:>52974911752z\`21=:1?<199<4}ra51?6=:rTh:852974911552z\`22=:1?<199;4}ra552z\`2<=:1?<19994}ra5e?6=:rTh:l52974911>52z\`2g=:1?<19974}ra5g?6=:rTh:n52974911g52z\`2a=:1?<199l4}ra5a?6=:rTh:h52974911e52z\`2c=:1?<199j4}ra44?6=:rTh;=52974911c7>52z\`37=:1?<198>4}ra47?6=:rTh;>52974910752z\`31=:1?<198<4}ra41?6=:rTh;852974910552z\`33=:1?<198:4}ra43?6=:rTh;:52974910352z\`3==:1?<19884}ra4=?6=:rTh;452974910152z\`3d=:1?<19864}ra4f?6=:rTh;o52974910?52z\`3`=:1?<198m4}ra4b?6=:rTh;k52974910b52z\`<5=:1?<198k4}ra;5?6=:rTh4<52974910`7>52z\`<7=:1?<19;>4}ra;7?6=:rTh4>52974913752z\`<1=:1?<19;<4}ra;1?6=:rTh4852974913552z\`<3=:1?<19;:4}ra;3?6=:rTh4:52974913352z\`<<=:1?<19;94}ra;e?6=:rTh4l52974913>52z\`52z\`52z\`52z\`=4=:1?<19;h4}ra:6?6=:rTh5?52974912652z\`=1=:1?<19:<4}ra:1?6=:rTh5852974912552z\`=3=:1?<19::4}ra:3?6=:rTh5:52974912352z\`===:1?<19:84}ra:=?6=:rTh5452974912152z\`=d=:1?<19:64}ra:f?6=:rTh5o52974912?52z\`=f=:1?<19:o4}ra:`?6=:rTh5i52974912d52z\`=c=:1?<19:j4}rab4?6=:rThm=52974912c52z\`e4=:1?<19:h4}rab6?6=:rThm?5297491=652z\`e6=:1?<195?4}rab0?6=:rThm95297491=452z\`e0=:1?<195=4}rab2?6=:rThm;5297491=252z\`e2=:1?<195;4}rab52z\`ed=:1?<19564}rabf?6=:rThmo5297491=?52z\`ef=:1?<195o4}rab`?6=:rThmi5297491=d52z\`e`=:1?<195m4}rabb?6=:rThmk5297491=b52z\`f5=:1?<195k4}raa5?6=:rThn<5297491=`7>52z\`f7=:1?<194>4}raa7?6=:rThn>5297491<752z\`f0=:1?<194=4}raa2?6=:rThn;5297491<252z\`f2=:1?<194;4}raa52z\`f<=:1?<19494}raae?6=:rThnl5297491<>52z\`fg=:1?<19474}raag?6=:rThnn529749152z\`fa=:1?<194l4}raaa?6=:rThnh529749152z\`g5=:1?<194k4}ra`5?6=:rTho<5297491<`7>52z\`g7=:1?<19l>4}ra`7?6=:rTho>5297491d752z\`g1=:1?<19l<4}ra`1?6=:rTho85297491d552z\`g3=:1?<19l:4}ra`3?6=:rTho:5297491d352z\`g==:1?<19l84}ra`=?6=:rTho45297491d152z\`gg=:1?<19l74}ra`g?6=:rThon5297491dg52z\`ga=:1?<19ll4}ra`a?6=:rThoh5297491de52z\`gc=:1?<19lj4}rag4?6=:rThh=5297491dc52z\``4=:1?<19lh4}rag6?6=:rThh?5297491g652z\``6=:1?<19o?4}rag0?6=:rThh95297491g452z\``3=:1?<19o:4}rag3?6=:rThh:5297491g352z\``==:1?<19o84}rag=?6=:rThh45297491g152z\``d=:1?<19o64}ragf?6=:rThho5297491g?52z\``f=:1?<19oo4}rag`?6=:rThhi5297491gd52z\```=:1?<19om4}ragb?6=:rThhk5297491gb52z\`a4=:1?<19oh4}raf6?6=:rThi?5297491f652z\`a6=:1?<19n?4}raf0?6=:rThi95297491f452z\`a0=:1?<19n=4}raf2?6=:rThi;5297491f252z\`a2=:1?<19n;4}raf52z\`a<=:1?<19n94}rafe?6=:rThil5297491f>52z\`aa=:1?<19nl4}rafa?6=:rThih5297491fe52z\`ac=:1?<19nj4}rae4?6=:rThj=5297491fc52z\`b4=:1?<19nh4}rae6?6=:rThj?5297491a652z\`b6=:1?<19i?4}rae0?6=:rThj95297491a452z\`b0=:1?<19i=4}rae2?6=:rThj;5297491a252z\`b==:1?<19i84}rae=?6=:rThj45297491a152z\`bd=:1?<19i64}raef?6=:rThjo5297491a?52z\`bf=:1?<19io4}rae`?6=:rThji5297491ad52z\`b`=:1?<19im4}raeb?6=:rThjk5297491ab52z\g45=:1?<19ik4}rf35?6=:rTo<<5297491a`52z\g46=:1?<19h?4}rf30?6=:rTo<95297491`452z\g40=:1?<19h=4}rf32?6=:rTo<;5297491`252z\g42=:1?<19h;4}rf352z\g4<=:1?<19h94}rf3e?6=:rTo52z\g4g=:1?<19h74}rf3g?6=:rTo52z\g4`=:1?<19hm4}rf3b?6=:rTo52z\g55=:1?<19hk4}rf25?6=:rTo=<5297491``7>52z\g57=:1?<19k>4}rf27?6=:rTo=>5297491c752z\g51=:1?<19k<4}rf21?6=:rTo=85297491c552z\g53=:1?<19k:4}rf23?6=:rTo=:5297491c352z\g5<=:1?<19k94}rf2e?6=:rTo=l5297491c>52z\g5g=:1?<19k74}rf2g?6=:rTo=n5297491cg52z\g5a=:1?<19kl4}rf2a?6=:rTo=h5297491ce52z\g5c=:1?<19kj4}rf14?6=:rTo>=5297491cc52z\g64=:1?<19kh4}rf16?6=:rTo>?52974925652z\g61=:1?<1:=<4}rf11?6=:rTo>852974925552z\g63=:1?<1:=:4}rf13?6=:rTo>:52974925352z\g6==:1?<1:=84}rf1=?6=:rTo>452974925152z\g6d=:1?<1:=64}rf1f?6=:rTo>o52974925?52z\g6f=:1?<1:=o4}rf1`?6=:rTo>i52974925d52z\g6c=:1?<1:=j4}rf04?6=:rTo?=52974925c52z\g74=:1?<1:=h4}rf06?6=:rTo??52974924652z\g76=:1?<1:52z\g70=:1?<1:<=4}rf02?6=:rTo?;52974924252z\g72=:1?<1:<;4}rf052z\g7d=:1?<1:<64}rf0f?6=:rTo?o52974924?52z\g7f=:1?<1:52z\g7`=:1?<1:52z\g05=:1?<1:7>52z\g07=:1?<1:?>4}rf77?6=:rTo8>52974927752z\g00=:1?<1:?=4}rf72?6=:rTo8;52974927252z\g02=:1?<1:?;4}rf752z\g0<=:1?<1:?94}rf7e?6=:rTo8l52974927>52z\g0g=:1?<1:?74}rf7g?6=:rTo8n52974927g52z\g0a=:1?<1:?l4}rf7a?6=:rTo8h52974927e<7>52z\g15=:1?<1:?k4}rf65?6=:rTo9<52974927`>7>52z\g17=:1?<1:>>4}rf67?6=:rTo9>52974926787>52z\g11=:1?<1:><4}rf61?6=:rTo98529749265:7>52z\g13=:1?<1:>:4}rf63?6=:rTo9:52974926347>52z\g1==:1?<1:>84}rf6=?6=:rTo94529749261o7>52z\g1f=:1?<1:>o4}rf6`?6=:rTo9i52974926di7>52z\g1`=:1?<1:>m4}rf6b?6=:rTo9k52974926b52z\g25=:1?<1:>k4}rf55?6=:rTo:<52974926`7>52z\g27=:1?<1:9>4}rf57?6=:rTo:>52974921752z\g21=:1?<1:9<4}rf51?6=:rTo:852974921552z\g22=:1?<1:9;4}rf552z\g2<=:1?<1:994}rf5e?6=:rTo:l52974921>52z\g2g=:1?<1:974}rf5g?6=:rTo:n52974921g52z\g2a=:1?<1:9l4}rf5a?6=:rTo:h52974921e52z\g2c=:1?<1:9j4}rf44?6=:rTo;=52974921c7>52z\g37=:1?<1:8>4}rf47?6=:rTo;>52974920752z\g31=:1?<1:8<4}rf41?6=:rTo;852974920552z\g33=:1?<1:8:4}rf43?6=:rTo;:52974920352z\g3==:1?<1:884}rf4=?6=:rTo;452974920152z\g3d=:1?<1:864}rf4f?6=:rTo;o52974920?52z\g3a=:1?<1:8l4}rf4a?6=:rTo;h52974920e52z\g3c=:1?<1:8j4}rf;4?6=:rTo4=52974920c52z\g<4=:1?<1:8h4}rf;6?6=:rTo4?52974923652z\g<6=:1?<1:;?4}rf;0?6=:rTo4952974923452z\g<0=:1?<1:;=4}rf;2?6=:rTo4;52974923252z\g<==:1?<1:;84}rf;=?6=:rTo4452974923152z\g52z\g52z\g<`=:1?<1:;m4}rf;b?6=:rTo4k52974923b52z\g=5=:1?<1:;k4}rf:5?6=:rTo5<52974923`52z\g=6=:1?<1::?4}rf:0?6=:rTo5952974922452z\g=0=:1?<1::=4}rf:2?6=:rTo5;52974922252z\g=2=:1?<1::;4}rf:52z\g=<=:1?<1::94}rf:e?6=:rTo5l52974922>52z\g=g=:1?<1::74}rf:g?6=:rTo5n52974922g52z\g=`=:1?<1::m4}rf:b?6=:rTo5k52974922b52z\ge5=:1?<1::k4}rfb5?6=:rTom<52974922`7>52z\ge7=:1?<1:5>4}rfb7?6=:rTom>5297492=752z\ge1=:1?<1:5<4}rfb1?6=:rTom85297492=552z\ge3=:1?<1:5:4}rfb3?6=:rTom:5297492=352z\ge<=:1?<1:594}rfbe?6=:rToml5297492=>52z\geg=:1?<1:574}rfbg?6=:rTomn5297492=g52z\gea=:1?<1:5l4}rfba?6=:rTomh5297492=e52z\gec=:1?<1:5j4}rfa4?6=:rTon=5297492=c52z\gf4=:1?<1:5h4}rfa6?6=:rTon?5297492<652z\gf1=:1?<1:4<4}rfa1?6=:rTon85297492<552z\gf3=:1?<1:4:4}rfa3?6=:rTon:5297492<352z\gf==:1?<1:484}rfa=?6=:rTon45297492<152z\gfd=:1?<1:464}rfaf?6=:rTono529749252z\gff=:1?<1:4o4}rfa`?6=:rToni529749252z\gfc=:1?<1:4j4}rf`4?6=:rToo=529749252z\gg4=:1?<1:4h4}rf`6?6=:rToo?5297492d652z\gg6=:1?<1:l?4}rf`0?6=:rToo95297492d452z\gg0=:1?<1:l=4}rf`2?6=:rToo;5297492d252z\gg2=:1?<1:l;4}rf`52z\ggg=:1?<1:l74}rf`g?6=:rToon5297492dg52z\gga=:1?<1:ll4}rf`a?6=:rTooh5297492de52z\ggc=:1?<1:lj4}rfg4?6=:rToh=5297492dc52z\g`4=:1?<1:lh4}rfg6?6=:rToh?5297492g652z\g`6=:1?<1:o?4}rfg0?6=:rToh95297492g452z\g`3=:1?<1:o:4}rfg52z\b4f=:1?<18<5rs`2g>5<5sWk;h636678:0>{ti>i1<73;;?6s|ad`94?4|Vhoi70796;346>{tj3;n=6s|bb;94?4|Vki270796;064>{tjl;1<738=46s|bda94?4|Vkoh70796;047>{tjo=1<738{tk9n1<738286s|a0:94?4|Vh;370796;;e?xuf::0;6?uQa3189<012hk0q~o=e;296~Xf:l165;85b49~wd5>2909wSo<9:?:23a0m7>52z\b1d=:1?<1i<5rs`46>5<5sWk=9636678fg>{ti>:1<73l<7p}n7c83>7}Yi>h01489:021?xuf0>0;6?uQa9589<0128:n7p}n9383>7}Yi0801489:03:?xuf1m0;6?uQa8f89<01288?7p}na983>7}Yih201489:00e?xufj:0;6?uQac189<01289j7p}nbd83>7}Yiko01489:066?xufk00;6?uQab;89<0128?;7p}nd583>7}Yim>01489:07a?xuflo0;6?uQaed89<0128<=7p}ne`83>7}Yilk01489:052?xufn?0;6?uQag489<0128=o7p}m0083>7}Yj9;01489:0:;?xue8j0;6?uQb1a89<0128387p}m1683>7}Yj8=01489:0;f?xue:;0;6?uQb3089<0128k27p}m2e83>7}Yj;n01489:0`7?xue;10;6?uQb2:89<0128hm7p}m4283>7}Yj=901489:0ab?xue7p}m5883>7}Yj<301489:0g3?xue><0;6?uQb7789<0128oh7p}m7183>7}Yj>:01489:0d4?xue?k0;6?uQb6`89<012;:97p}m8783>7}Yj1<01489:32g?xue180;6?uQb8389<012;;37p}m9b83>7}Yj0i01489:300?xuei>0;6?uQb`589<012;8n7p}mb383>7}Yjk801489:31:?xuejm0;6?uQbcf89<012;>?7p}mc983>7}Yjj201489:36e?xuel=0;6?uQbe689<012;?i7p}md983>7}Yjm201489:37e?xuel00;6?uQbe;89<012;<;7p}md`83>7}Yjmk01489:342?xuelk0;6?uQbe`89<012;<97p}mdb83>7}Yjmi01489:340?xuelm0;6?uQbef89<012;7}Yjmo01489:346?xuelo0;6?uQbed89<012;<=7p}me183>7}Yjl:01489:344?xuem;0;6?uQbd089<012;<27p}me283>7}Yjl901489:34b?xuem=0;6?uQbd689<012;7}Yjl?01489:34`?xuem?0;6?uQbd489<012;7}Yjl=01489:34f?xuem10;6?uQbd:89<012;7}Yjl301489:353?xuemh0;6?uQbdc89<012;=:7p}mec83>7}Yjlh01489:351?xuemm0;6?uQbdf89<012;=?7p}med83>7}Yjlo01489:356?xuemo0;6?uQbdd89<012;==7p}mf183>7}Yjo:01489:354?xuen80;6?uQbg389<012;=37p}mf383>7}Yjo801489:35:?xuen:0;6?uQbg189<012;=j7p}mf583>7}Yjo>01489:35a?xuen<0;6?uQbg789<012;=h7p}mf783>7}Yjo<01489:35g?xuen10;6?uQbg:89<012;=m7p}mf883>7}Yjo301489:3:3?xuenh0;6?uQbgc89<012;2:7p}mfc83>7}Yjoh01489:3:1?xuenj0;6?uQbga89<012;287p}mfe83>7}Yjon01489:3:7?xuenl0;6?uQbgg89<012;2>7p}mfg83>7}Yjol01489:3:5?xud890;6?uQc1289<012;2<7p}l0083>7}Yk9;01489:3:;?xud8:0;6?uQc1189<012;2j7p}l0583>7}Yk9>01489:3:a?xud8<0;6?uQc1789<012;2h7p}l0783>7}Yk9<01489:3:g?xud8>0;6?uQc1589<012;2n7p}l0983>7}Yk9201489:3:e?xud800;6?uQc1;89<012;3;7p}l0`83>7}Yk9k01489:3;2?xud8k0;6?uQc1`89<012;397p}l0b83>7}Yk9i01489:3;0?xuf8l0;6?uQa1g89<0120?0q~o?f;296~Xf8o165;85979~wd772909wSo>0:?:23<>?2wxm52z\b56=:1?<15l5rs`37>5<5sWk:8636678:f>{ti8?1<733h7p}n1783>7}Yi8<01489:8f8yvg6?3:1>vPn169>=30=1l1vl?6:181[g61272:;4n0:pe4g=838pRl?n;<;52?g63tyj=o4?:3y]e4d<50<=6l<4}rc2g?6=:rTj=n529749e6=z{h;o6=4={_c2`>;>>?0j86s|a0g94?4|Vh;n70796;c6?xuf9o0;6?uQa0d89<012h<0q~o=0;296~Xf:9165;85a69~wd462909wSo=1:?:23dd52z\b60=:1?<1mn5rs`05>5<5sWk9:636678b`>{ti;=1<73kn7p}n2983>7}Yi;201489:`d8yvg513:1>vPn289>=30=j91vln4?:3y]e7e<50<=6o=4}rc1`?6=:rTj>i529749f1=z{h8m6=4={_c1b>;>>?0i:6s|a2294?4|Vh9;70796;`4?xuf;80;6?uQa2389<012k20q~o<2;296~Xf;;165;85b89~wd542909wSo<3:?:23:50;0xZd53343=:7lm;|qb70<72;qUm>;4=845>ge52z\b73=:1?<1ni5rs`14>5<5sWk8;636678aa>{ti:21<73hm7p}n3`83>7}Yi:k01489:b38yvg4j3:1>vPn3c9>=30=k;1vl=l:181[g4k272:;4l3:pe6b=838pRl=k;<;52?e33tyj?h4?:3y]e6c<50<=6n;4}rc0b?6=:rTj?k529749g3=z{h>;6=4={_c74>;>>?0h;6s|a5394?4|Vh>:70796;a;?xuf<;0;6?uQa5089<012j30q~o;3;296~Xf<:165;85c`9~wd222909wSo;5:?:23fc52z\b0==:1?<1ok5rs`6:>5<5sWk?5636678g4>{ti=k1<73n:7p}n4c83>7}Yi=h01489:e08yvg3k3:1>vPn4b9>=30=l:1vl:k:181[g3l272:;4k4:pe1c=838pRl:j;<;52?b23tyj9=4?:3y]e06<50<=6i94}rc65?6=:rTj9<529749`==z{h?96=4={_c66>;>>?0o56s|a4194?4|Vh?870796;fb?xuf==0;6?uQa4689<012mh0q~o:5;296~Xf=<165;85db9~wd312909wSo:6:?:23a`57>52z\b1<=:1?<1i=5rs`7a>5<5sWk>n636678f6>{ti3o87p}n5e83>7}YivPn5d9>=30=m<1vl;i:181[g2n272:;4j6:pe36=838pRl8?;<;52?c03tyj:<4?:3y]e37<50<=6h64}rc56?6=:rTj:?529749a<=z{h<86=4={_c57>;>>?0nm6s|a7694?4|Vh?0;6?uQa7489<012ln0q~o97;296~Xf>>165;85ed9~wd0?2909wSo98:?:23343=:7h?;|qb2d<72;qUm;o4=845>c752z\b2g=:1?<1j?5rs`4`>5<5sWk=o636678e7>{ti?n1<73l?7p}n6d83>7}Yi?o01489:g78yvg1n3:1>vPn6g9>=30=n?1vl9>:181[g09272:;4i8:pe24=838pRl9=;<;52?`>3tyj;>4?:3y]e25<50<=6ko4}rc40?6=:rTj;9529749bg=z{h=>6=4={_c41>;>>?0mo6s|a6494?4|Vh==70796;dg?xuf?>0;6?uQa6589<012oo0q~o88;296~Xf?1165;85fg9~wd1>2909wSo89:?:23<6891vl9n:181[g0i272:;4>009~wd1c2909wSo8d:?:23<68=1vl9j:181[g0m272:;4>049~wd1a2909wSo8f:?:23<68?1vl6?:181[g?8272:;4>069~wd>62909wSo71:?:23<6811vl6=:181[g?:272:;4>089~wd>42909wSo73:?:23<68h1vl6;:181[g?<272:;4>0c9~wd>22909wSo75:?:23<68j1vl69:181[g?>272:;4>0e9~wd>?2909wSo78:?:23<68o1vl66:181[g?1272:;4>119~wd>f2909wSo7a:?:23<6981vl6m:181[g?j272:;4>139~wd>d2909wSo7c:?:23<69:1vl6k:181[g?l272:;4>159~wd>b2909wSo7e:?:23<69<1vl6i:181[g?n272:;4>179~wd?72909wSo60:?:23<69>1vl7>:181[g>9272:;4>199~wd?42909wSo63:?:23<69h1vl7;:181[g><272:;4>1c9~wd?22909wSo65:?:23<69j1vl79:181[g>>272:;4>1e9~wd?02909wSo67:?:23<69l1vl77:181[g>0272:;4>1g9~wd?>2909wSo69:?:23<6:91vl7n:181[g>i272:;4>209~wd?e2909wSo6b:?:23<6:;1vl7l:181[g>k272:;4>229~wd?b2909wSo6e:?:23<6:<1vl7i:181[g>n272:;4>279~wdg72909wSon0:?:23<6:>1vlo>:181[gf9272:;4>299~wdg52909wSon2:?:23<6:01vlo<:181[gf;272:;4>2`9~wdg32909wSon4:?:23<6:k1vlo::181[gf=272:;4>2b9~wdg12909wSon6:?:23<6:m1vlo8:181[gf?272:;4>2d9~wdg>2909wSon9:?:23<6;91vlon:181[gfi272:;4>309~wdge2909wSonb:?:23<6;;1vlol:181[gfk272:;4>329~wdgc2909wSond:?:23<6;=1vloj:181[gfm272:;4>349~wdga2909wSonf:?:23<6;?1vll?:181[ge8272:;4>369~wdd62909wSom1:?:23<6;11vll=:181[ge:272:;4>389~wdd32909wSom4:?:23<6;k1vll::181[ge=272:;4>3b9~wdd12909wSom6:?:23<6;m1vll8:181[ge?272:;4>3d9~wdd?2909wSom8:?:23<6;o1vll6:181[ge1272:;4>419~wddf2909wSoma:?:23<6<81vllm:181[gej272:;4>439~wddd2909wSomc:?:23<6<:1vllk:181[gel272:;4>459~wdda2909wSomf:?:23<6469~wde62909wSol1:?:23<6<11vlm=:181[gd:272:;4>489~wde42909wSol3:?:23<64c9~wde22909wSol5:?:23<6272:;4>4e9~wde02909wSol7:?:23<64g9~wdef2909wSola:?:23<6=81vlmm:181[gdj272:;4>539~wded2909wSolc:?:23<6=:1vlmk:181[gdl272:;4>559~wdeb2909wSole:?:23<6=<1vlmi:181[gdn272:;4>579~wdb72909wSok0:?:23<6=>1vlj>:181[gc9272:;4>599~wdb52909wSok2:?:23<6=01vlj<:181[gc;272:;4>5`9~wdb22909wSok5:?:23<6=j1vlj9:181[gc>272:;4>5e9~wdb02909wSok7:?:23<6=l1vlj7:181[gc0272:;4>5g9~wdb>2909wSok9:?:23<6>91vljn:181[gci272:;4>609~wdbe2909wSokb:?:23<6>;1vljl:181[gck272:;4>629~wdbc2909wSokd:?:23<6>=1vljj:181[gcm272:;4>649~wdc72909wSoj0:?:23<6>>1vlk>:181[gb9272:;4>699~wdc52909wSoj2:?:23<6>01vlk<:181[gb;272:;4>6`9~wdc32909wSoj4:?:23<6>k1vlk::181[gb=272:;4>6b9~wdc12909wSoj6:?:23<6>m1vlk8:181[gb?272:;4>6d9~wdc?2909wSoj8:?:23<6>o1vlk6:181[gb1272:;4>719~wdcd2909wSojc:?:23<6?:1vlkk:181[gbl272:;4>759~wdcb2909wSoje:?:23<6?<1vlki:181[gbn272:;4>779~wd`72909wSoi0:?:23<6?>1vlh>:181[ga9272:;4>799~wd`52909wSoi2:?:23<6?01vlh<:181[ga;272:;4>7`9~wd`32909wSoi4:?:23<6?k1vlh::181[ga=272:;4>7b9~wd`02909wSoi7:?:23<6?l1vlh7:181[ga0272:;4>7g9~wd`>2909wSoi9:?:23<6091vlhn:181[gai272:;4>809~wd`e2909wSoib:?:23<60;1vlhl:181[gak272:;4>829~wd`c2909wSoid:?:23<60=1vlhj:181[gam272:;4>849~wd`a2909wSoif:?:23<60?1vo>?:181[d78272:;4>869~wg652909wSl?2:?:23<6001vo><:181[d7;272:;4>8`9~wg632909wSl?4:?:23<60k1vo>::181[d7=272:;4>8b9~wg612909wSl?6:?:23<60m1vo>8:181[d7?272:;4>8d9~wg6?2909wSl?8:?:23<60o1vo>6:181[d71272:;4>919~wg6f2909wSl?a:?:23<6181vo>m:181[d7j272:;4>939~wg6c2909wSl?d:?:23<61=1vo>j:181[d7m272:;4>949~wg6a2909wSl?f:?:23<61?1vo??:181[d68272:;4>969~wg762909wSl>1:?:23<6111vo?=:181[d6:272:;4>989~wg742909wSl>3:?:23<61h1vo?;:181[d6<272:;4>9c9~wg722909wSl>5:?:23<61j1vo?9:181[d6>272:;4>9e9~wg7?2909wSl>8:?:23<61o1vo?6:181[d61272:;4>a19~wg7f2909wSl>a:?:23<6i81vo?m:181[d6j272:;4>a39~wg7d2909wSl>c:?:23<6i:1vo?k:181[d6l272:;4>a59~wg7b2909wSl>e:?:23<6i<1vo?i:181[d6n272:;4>a79~wg472909wSl=0:?:23<6i>1vo<>:181[d59272:;4>a99~wg442909wSl=3:?:23<6ih1vo<;:181[d5<272:;4>ac9~wg422909wSl=5:?:23<6ij1vo<9:181[d5>272:;4>ae9~wg402909wSl=7:?:23<6il1vo<7:181[d50272:;4>ag9~wg4>2909wSl=9:?:23<6j91vob09~wg4e2909wSl=b:?:23<6j;1vob29~wg4b2909wSl=e:?:23<6j<1vob79~wg572909wSl<0:?:23<6j>1vo=>:181[d49272:;4>b99~wg552909wSl<2:?:23<6j01vo=<:181[d4;272:;4>b`9~wg532909wSl<4:?:23<6jk1vo=::181[d4=272:;4>bb9~wg512909wSl<6:?:23<6jm1vo=8:181[d4?272:;4>bd9~wg5>2909wSl<9:?:23<6k91vo=n:181[d4i272:;4>c09~wg5e2909wSlc29~wg5c2909wSlc49~wg5a2909wSlc69~wg262909wSl;1:?:23<6k11vo:=:181[d3:272:;4>c89~wg232909wSl;4:?:23<6kk1vo:::181[d3=272:;4>cb9~wg212909wSl;6:?:23<6km1vo:8:181[d3?272:;4>cd9~wg2?2909wSl;8:?:23<6ko1vo:6:181[d31272:;4>d19~wg2f2909wSl;a:?:23<6l81vo:m:181[d3j272:;4>d39~wg2d2909wSl;c:?:23<6l:1vo:k:181[d3l272:;4>d59~wg2a2909wSl;f:?:23<6l?1vo;?:181[d28272:;4>d69~wg362909wSl:1:?:23<6l11vo;=:181[d2:272:;4>d89~wg342909wSl:3:?:23<6lh1vo;;:181[d2<272:;4>dc9~wg322909wSl:5:?:23<6lj1vo;9:181[d2>272:;4>de9~wg302909wSl:7:?:23<6ll1vo;7:181[d20272:;4>dg9~wg3e2909wSl:b:?:23<6m;1vo;l:181[d2k272:;4>e29~wg3c2909wSl:d:?:23<6m=1vo;j:181[d2m272:;4>e49~wg3a2909wSl:f:?:23<6m?1vo8?:181[d18272:;4>e69~wg062909wSl91:?:23<6m11vo8=:181[d1:272:;4>e89~wg042909wSl93:?:23<6mh1vo8;:181[d1<272:;4>ec9~wg012909wSl96:?:23<6mm1vo88:181[d1?272:;4>ed9~wg0?2909wSl98:?:23<6mo1vo86:181[d11272:;4>f19~wg0f2909wSl9a:?:23<6n81vo8m:181[d1j272:;4>f39~wg0d2909wSl9c:?:23<6n:1vo8k:181[d1l272:;4>f59~wg0b2909wSl9e:?:23<6n<1vo8i:181[d1n272:;4>f79~wg162909wSl81:?:23<6n11vo9=:181[d0:272:;4>f89~wg142909wSl83:?:23<6nh1vo9;:181[d0<272:;4>fc9~wg122909wSl85:?:23<6nj1vo99:181[d0>272:;4>fe9~wg102909wSl87:?:23<6nl1vo97:181[d00272:;4>fg9~wg1>2909wSl89:?:23<5891vo9n:181[d0i272:;4=009~wg1d2909wSl8c:?:23<58:1vo9k:181[d0l272:;4=059~wg1b2909wSl8e:?:23<58<1vo9i:181[d0n272:;4=079~wg>72909wSl70:?:23<58>1vo6>:181[d?9272:;4=099~wg>52909wSl72:?:23<5801vo6<:181[d?;272:;4=0`9~wg>32909wSl74:?:23<58k1vo6::181[d?=272:;4=0b9~wg>02909wSl77:?:23<58l1vo67:181[d?0272:;4=0g9~wg>>2909wSl79:?:23<5991vo6n:181[d?i272:;4=109~wg>e2909wSl7b:?:23<59;1vo6l:181[d?k272:;4=129~wg>c2909wSl7d:?:23<59=1vo6j:181[d?m272:;4=149~wg>a2909wSl7f:?:23<59?1vo7?:181[d>8272:;4=169~wg?52909wSl62:?:23<5901vo7<:181[d>;272:;4=1`9~wg?32909wSl64:?:23<59k1vo7::181[d>=272:;4=1b9~wg?12909wSl66:?:23<59m1vo78:181[d>?272:;4=1d9~wg??2909wSl68:?:23<59o1vo76:181[d>1272:;4=219~wg?f2909wSl6a:?:23<5:81vo7m:181[d>j272:;4=239~wg?c2909wSl6d:?:23<5:=1vo7j:181[d>m272:;4=249~wg?a2909wSl6f:?:23<5:?1voo?:181[df8272:;4=269~wgg62909wSln1:?:23<5:11voo=:181[df:272:;4=289~wgg42909wSln3:?:23<5:h1voo;:181[df<272:;4=2c9~wgg22909wSln5:?:23<5:j1voo9:181[df>272:;4=2e9~wgg?2909wSln8:?:23<5:o1voo6:181[df1272:;4=319~wggf2909wSlna:?:23<5;81voom:181[dfj272:;4=339~wggd2909wSlnc:?:23<5;:1vook:181[dfl272:;4=359~wggb2909wSlne:?:23<5;<1vooi:181[dfn272:;4=379~wgd72909wSlm0:?:23<5;>1vol>:181[de9272:;4=399~wgd42909wSlm3:?:23<5;h1vol;:181[de<272:;4=3c9~wgd22909wSlm5:?:23<5;j1vol9:181[de>272:;4=3e9~wgd02909wSlm7:?:23<5;l1vol7:181[de0272:;4=3g9~wgd>2909wSlm9:?:23<5<91voln:181[dei272:;4=409~wgde2909wSlmb:?:23<5<;1voll:181[dek272:;4=429~wgdb2909wSlme:?:23<5<<1voli:181[den272:;4=479~wge72909wSll0:?:23<5<>1vom>:181[dd9272:;4=499~wge52909wSll2:?:23<5<01vom<:181[dd;272:;4=4`9~wge32909wSll4:?:23<51voj>:181[dc9272:;4=599~wgb52909wSlk2:?:23<5=01voj<:181[dc;272:;4=5`9~wgb22909wSlk5:?:23<5=j1voj8:181[dc?272:;4=5d9~w7552z\:b4=:1?<1>85rsd3a>5<4irTn=o529749=<`<50<=647k;<;52??>k272:;469c9>=30=10k01489:8;:?8?1>3324636678:=3=:1?<154;4=845>1;165;8598389<01203;70796;;;b>;>>?024h529749==b<50<=646m;<;52???i272:;46889>=30=11201489:8:4?8?1>333:636678:<0=:1?<155:4=845><>4343=:7772:?:23<>09165;8596d89<0120=n70796;;4`>;>>?02;n529749=2d<50<=649n;<;52??01272:;46799>=30=1>=01489:856?8?1>33<8636678:36=:1?<15:<4=845><16343=:7780:?:23<>>o165;8597g89<0120;>>?02m9529749=d5<50<=64o=;<;52??f9272:;46a19>=30=10=01489:8:`?8?1>333=636678:33=:1?<15;l4}rg2=?6=:rTn=4529749=0>50;0xL<003td::50;0xL<003td::??50;0xL<003td::?<50;0xL<003td::?=50;0xL<003td::?:50;0xL<003td::?;50;0xL<003td::?850;0xL<003td::?950;0xL<003td::?650;0xL<003td::?750;0xL<003td::?o50;0xL<003td::?l50;0xL<003td::?m50;0xL<003td::?j50;0xL<003td::?k50;0xL<003td::?h50;0xL<003td::>>50;0xL<003td::>?50;0xL<003td::><50;0xL<003td::>=50;0xL<003td::>:50;0xL<003td::>;50;0xL<003td::>850;0xL<003td::>950;0xL<003td::>650;0xL<003td::>750;0xL<003td::>o50;0xL<003td::>l50;0xL<003td::>m50;0xL<003td::>j50;0xL<003td::>k50;0xL<003td::>h50;0xL<003td::9>50;0xL<003td::9?50;0xL<003td::9<50;0xL<003td::9=50;0xL<003td::9:50;0xL<003td::9;50;0xL<003td::9850;0xL<003td::9950;0xL<003td::9650;0xL<003td::9750;0xL<003td::9o50;0xL<003td::9l50;0xL<003td::9m50;0xL<003td::9j50;0xL<003td::9k50;0xL<003td::9h50;0xL<003td::8>50;0xL<003td::8?50;0xL<003td::8<50;0xL<003td::8=50;0xL<003td::8:50;0xL<003td::8;50;0xL<003td::8850;0xL<003td::8950;0xL<003td::8650;0xL<003td::8750;0xL<003td::8o50;0xL<003td::8l50;0xL<003td::8m50;0xL<003td::8j50;0xL<003td::8k50;0xL<003td::8h50;0xL<003td::;>50;0xL<003td::;?50;0xL<003td::;<50;0xL<003td::;=50;0xL<003td::;:50;0xL<003td::;;50;0xL<003td::;850;0xL<003td::;950;0xL<003td::;650;0xL<003td::;750;0xL<003td::;o50;0xL<003td::;l50;0xL<003td::;m50;0xL<003td::;j50;0xL<003td::;k50;0xL<003td::;h50;0xL<003td:::>50;0xL<003td:::?50;0xL<003td:::<50;0xL<003td:::=50;0xL<003td::::50;0xL<003td:::;50;0xL<003td:::850;0xL<003td:::950;0xL<003td:::650;0xL<003td:::750;0xL<003td:::o50;0xL<003td:::l50;0xL<003td:::m50;0xL<003td:::j50;0xL<003td:::k50;0xL<003td:::h50;0xL<003td::5>50;0xL<003td::5?50;0xL<003td::5<50;0xL<003td::5=50;0xL<003td::5:50;0xL<003td::5;50;0xL<003td::5850;0xL<003td::5950;0xL<003td::5650;0xL<003td::5750;0xL<003td::5o50;0xL<003td::5l50;0xL<003td::5m50;0xL<003td::5j50;0xL<003td::5k50;0xL<003td::5h50;0xL<003td::4>50;0xL<003td::4?50;0xL<003td::4<50;0xL<003td::4=50;0xL<003td::4:50;0xL<003td::4;50;0xL<003td::4850;0xL<003td::4950;0xL<003td::4650;0xL<003td::4750;0xL<003td::4o50;0xL<003td::4l50;0xL<003td::4m50;0xL<003td::4j50;0xL<003td::4k50;0xL<003td::4h50;0xL<003td::l>50;0xL<003td::l?50;0xL<003td::l<50;0xL<003td::l=50;0xL<003td::l:50;0xL<003td::l;50;0xL<003td::l850;0xL<003td::l950;0xL<003td::l650;0xL<003td::l750;0xL<003td::lo50;0xL<003td::ll50;0xL<003td::lm50;0xL<003td::lj50;0xL<003td::lk50;0xL<003td::lh50;0xL<003td::o>50;0xL<003td::o?50;0xL<003td::o<50;0xL<003td::o=50;0xL<003td::o:50;0xL<003td::o;50;0xL<003td::o850;0xL<003td::o950;0xL<003td::o650;0xL<003td::o750;0xL<003td::oo50;0xL<003td::ol50;0xL<003td::om50;0xL<003td::oj50;0xL<003td::ok50;0xL<003td::oh50;0xL<003td::n>50;0xL<003td::n?50;0xL<003td::n<50;0xL<003td::n=50;0xL<003td::n:50;0xL<003td::n;50;0xL<003td::n850;0xL<003td::n950;0xL<003td::n650;0xL<003td::n750;0xL<003td::no50;0xL<003td::nl50;0xL<003td::nm50;0xL<003td::nj50;0xL<003td::nk50;0xL<003td::nh50;0xL<003td::i>50;0xL<003td::i?50;0xL<003td::i<50;0xL<003td::i=50;0xL<003td::i:50;0xL<003td::i;50;0xL<003td::i850;0xL<003td::i950;0xL<003td::i650;0xL<003td::i750;0xL<003td::io50;0xL<003td::il50;0xL<003td::im50;0xL<003td::ij50;0xL<003td::ik50;0xL<003td::ih50;0xL<003td::h>50;0xL<003td::h?50;0xL<003td::h<50;0xL<003td::h=50;0xL<003td::h:50;0xL<003td::h;50;0xL<003td::h850;0xL<003td::h950;0xL<003td::h650;0xL<003td::h750;0xL<003td::ho50;0xL<003td::hl50;0xL<003td::hm50;0xL<003td::hj50;0xL<003td::hk50;0xL<003td::hh50;0xL<003td::k>50;0xL<003td::k?50;0xL<003td::k<50;0xL<003td::k=50;0xL<003td::k:50;0xL<003td::k;50;0xL<003td::k850;0xL<003td::k950;0xL<003td::k650;0xL<003td::k750;0xL<003td::ko50;0xL<003td::kl50;0xL<003td::km50;0xL<003td::kj50;0xL<003td::kk50;0xL<003td::kh50;0xL<003td:;=>50;0xL<003td:;=?50;0xL<003td:;=<50;0xL<003td:;==50;0xL<003td:;=:50;0xL<003td:;=;50;0xL<003td:;=850;0xL<003td:;=950;0xL<003td:;=650;0xL<003td:;=750;0xL<003td:;=o50;0xL<003td:;=l50;0xL<003td:;=m50;0xL<003td:;=j50;0xL<003td:;=k50;0xL<003td:;=h50;0xL<003td:;<>50;0xL<003td:;50;0xL<003td:;??50;0xL<003td:;?<50;0xL<003td:;?=50;0xL<003td:;?:50;0xL<003td:;?;50;0xL<003td:;?850;0xL<003td:;?950;0xL<003td:;?650;0xL<003td:;?750;0xL<003td:;?o50;0xL<003td:;?l50;0xL<003td:;?m50;0xL<003td:;?j50;0xL<003td:;?k50;0xL<003td:;?h50;0xL<003td:;>>50;0xL<003td:;>?50;0xL<003td:;><50;0xL<003td:;>=50;0xL<003td:;>:50;0xL<003td:;>;50;0xL<003td:;>850;0xL<003td:;>950;0xL<003td:;>650;0xL<003td:;>750;0xL<003td:;>o50;0xL<003td:;>l50;0xL<003td:;>m50;0xL<003td:;>j50;0xL<003td:;>k50;0xL<003td:;>h50;0xL<003td:;9>50;0xL<003td:;9?50;0xL<003td:;9<50;0xL<003td:;9=50;0xL<003td:;9:50;0xL<003td:;9;50;0xL<003td:;9850;0xL<003td:;9950;0xL<003td:;9650;0xL<003td:;9750;0xL<003td:;9o50;0xL<003td:;9l50;0xL<003td:;9m50;0xL<003td:;9j50;0xL<003td:;9k50;0xL<003td:;9h50;0xL<003td:;8>50;0xL<003td:;8?50;0xL<003td:;8<50;0xL<003td:;8=50;0xL<003td:;8:50;0xL<003td:;8;50;0xL<003td:;8850;0xL<003td:;8950;0xL<003td:;8650;0xL<003td:;8750;0xL<003td:;8o50;0xL<003td:;8l50;0xL<003td:;8m50;0xL<003td:;8j50;0xL<003td:;8k50;0xL<003td:;8h50;0xL<003td:;;>50;0xL<003td:;;?50;0xL<003td:;;<50;0xL<003td:;;=50;0xL<003td:;;:50;0xL<003td:;;;50;0xL<003td:;;850;0xL<003td:;;950;0xL<003td:;;650;0xL<003td:;;750;0xL<003td:;;o50;0xL<003td:;;l50;0xL<003td:;;m50;0xL<003td:;;j50;0xL<003td:;;k50;0xL<003td:;;h50;0xL<003td:;:>50;0xL<003td:;:?50;0xL<003td:;:<50;0xL<003td:;:=50;0xL<003td:;::50;0xL<003td:;:;50;0xL<003td:;:850;0xL<003td:;:950;0xL<003td:;:650;0xL<003td:;:750;0xL<003td:;:o50;0xL<003td:;:l50;0xL<003td:;:m50;0xL<003td:;:j50;0xL<003td:;:k50;0xL<003td:;:h50;0xL<003td:;5>50;0xL<003td:;5?50;0xL<003td:;5<50;0xL<003td:;5=50;0xL<003td:;5:50;0xL<003td:;5;50;0xL<003td:;5850;0xL<003td:;5950;0xL<003td:;5650;0xL<003td:;5750;0xL<003td:;5o50;0xL<003td:;5l50;0xL<003td:;5m50;0xL<003td:;5j50;0xL<003td:;5k50;0xL<003td:;5h50;0xL<003td:;4>50;0xL<003td:;4?50;0xL<003td:;4<50;0xL<003td:;4=50;0xL<003td:;4:50;0xL<003td:;4;50;0xL<003td:;4850;0xL<003td:;4950;0xL<003td:;4650;0xL<003td:;4750;0xL<003td:;4o50;0xL<003td:;4l50;0xL<003td:;4m50;0xL<003td:;4j50;0xL<003td:;4k50;0xL<003td:;4h50;0xL<003td:;l>50;0xL<003td:;l?50;0xL<003td:;l<50;0xL<003td:;l=50;0xL<003td:;l:50;0xL<003td:;l;50;0xL<003td:;l850;0xL<003td:;l950;0xL<003td:;l650;0xL<003td:;l750;0xL<003td:;lo50;0xL<003td:;ll50;0xL<003td:;lm50;0xL<003td:;lj50;0xL<003td:;lk50;0xL<003td:;lh50;0xL<003td:;o>50;0xL<003td:;o?50;0xL<003td:;o<50;0xL<003td:;o=50;0xL<003td:;o:50;0xL<003td:;o;50;0xL<003td:;o850;0xL<003td:;o950;0xL<003td:;o650;0xL<003td:;o750;0xL<003td:;oo50;0xL<003td:;ol50;0xL<003td:;om50;0xL<003td:;oj50;0xL<003td:;ok50;0xL<003td:;oh50;0xL<003td:;n>50;0xL<003td:;n?50;0xL<003td:;n<50;0xL<003td:;n=50;0xL<003td:;n:50;0xL<003td:;n;50;0xL<003td:;n850;0xL<003td:;n950;0xL<003td:;n650;0xL<003td:;n750;0xL<003td:;no50;0xL<003td:;nl50;0xL<003td:;nm50;0xL<003td:;nj50;0xL<003td:;nk50;0xL<003td:;nh50;0xL<003td:;i>50;0xL<003td:;i?50;0xL<003td:;i<50;0xL<003td:;i=50;0xL<003td:;i:50;0xL<003td:;i;50;0xL<003td:;i850;0xL<003td:;i950;0xL<003td:;i650;0xL<003td:;i750;0xL<003td:;io50;0xL<003td:;il50;0xL<003td:;im50;0xL<003td:;ij50;0xL<003td:;ik50;0xL<003td:;ih50;0xL<003td:;h>50;0xL<003td:;h?50;0xL<003td:;h<50;0xL<003td:;h=50;0xL<003td:;h:50;0xL<003td:;h;50;0xL<003td:;h850;0xL<003td:;h950;0xL<003td:;h650;0xL<003td:;h750;0xL<003td:;ho50;0xL<003td:;hl50;0xL<003td:;hm50;0xL<003td:;hj50;0xL<003td:;hk50;0xL<003td:;hh50;0xL<003td:;k>50;0xL<003td:;k?50;0xL<003td:;k<50;0xL<003td:;k=50;0xL<003td:;k:50;0xL<003td:;k;50;0xL<003td:;k850;0xL<003td:;k950;0xL<003td:;k650;0xL<003td:;k750;0xL<003td:;ko50;0xL<003td:;kl50;0xL<003td:;km50;0xL<003td:;kj50;0xL<003td:;kk50;0xL<003td:;kh50;0xL<003td:4=>50;0xL<003td:4=?50;0xL<003td:4=<50;0xL<003td:4==50;0xL<003td:4=:50;0xL<003td:4=;50;0xL<003td:4=850;0xL<003td:4=950;0xL<003td:4=650;0xL<003td:4=750;0xL<003td:4=o50;0xL<003td:4=l50;0xL<003td:4=m50;0xL<003td:4=j50;0xL<003td:4=k50;0xL<003td:4=h50;0xL<003td:4<>50;0xL<003td:450;0xL<003td:4??50;0xL<003td:4?<50;0xL<003td:4?=50;0xL<003td:4?:50;0xL<003td:4?;50;0xL<003td:4?850;0xL<003td:4?950;0xL<003td:4?650;0xL<003td:4?750;0xL<003td:4?o50;0xL<003td:4?l50;0xL<003td:4?m50;0xL<003td:4?j50;0xL<003td:4?k50;0xL<003td:4?h50;0xL<003td:4>>50;0xL<003td:4>?50;0xL<003td:4><50;0xL<003td:4>=50;0xL<003td:4>:50;0xL<003td:4>;50;0xL<003td:4>850;0xL<003td:4>950;0xL<003td:4>650;0xL<003td:4>750;0xL<003td:4>o50;0xL<003td:4>l50;0xL<003td:4>m50;0xL<003td:4>j50;0xL<003td:4>k50;0xL<003td:4>h50;0xL<003td:49>50;0xL<003td:49?50;0xL<003td:49<50;0xL<003td:49=50;0xL<003td:49:50;0xL<003td:49;50;0xL<003td:49850;0xL<003td:49950;0xL<003td:49650;0xL<003td:49750;0xL<003td:49o50;0xL<003td:49l50;0xL<003td:49m50;0xL<003td:49j50;0xL<003td:49k50;0xL<003td:49h50;0xL<003td:48>50;0xL<003td:48?50;0xL<003td:48<50;0xL<003td:48=50;0xL<003td:48:50;0xL<003td:48;50;0xL<003td:48850;0xL<003td:48950;0xL<003td:48650;0xL<003td:48750;0xL<003td:48o50;0xL<003td:48l50;0xL<003td:48m50;0xL<003td:48j50;0xL<003td:48k50;0xL<003td:48h50;0xL<003td:4;>50;0xL<003td:4;?50;0xL<003td:4;<50;0xL<003td:4;=50;0xL<003td:4;:50;0xL<003td:4;;50;0xL<003td:4;850;0xL<003td:4;950;0xL<003td:4;650;0xL<003td:4;750;0xL<003td:4;o50;0xL<003td:4;l50;0xL<003td:4;m50;0xL<003td:4;j50;0xL<003td:4;k50;0xL<003td:4;h50;0xL<003td:4:>50;0xL<003td:4:?50;0xL<003td:4:<50;0xL<003td:4:=50;0xL<003td:4::50;0xL<003td:4:;50;0xL<003td:4:850;0xL<003td:4:950;0xL<003td:4:650;0xL<003td:4:750;0xL<003td:4:o50;0xL<003td:4:l50;0xL<003td:4:m50;0xL<003td:4:j50;0xL<003td:4:k50;0xL<003td:4:h50;0xL<003td:45>50;0xL<003td:45?50;0xL<003td:45<50;0xL<003td:45=50;0xL<003td:45:50;0xL<003td:45;50;0xL<003td:45850;0xL<003td:45950;0xL<003td:45650;0xL<003td:45750;0xL<003td:45o50;0xL<003td:45l50;0xL<003td:45m50;0xL<003td:45j50;0xL<003td:45k50;0xL<003td:45h50;0xL<003td:44>50;0xL<003td:44?50;0xL<003td:44<50;0xL<003td:44=50;0xL<003td:44:50;0xL<003td:44;50;0xL<003td:44850;0xL<003td:44950;0xL<003td:44650;0xL<003td:44750;0xL<003td:44o50;0xL<003td:44l50;0xL<003td:44m50;0xL<003td:44j50;0xL<003td:44k50;0xL<003td:44h50;0xL<003td:4l>50;0xL<003td:4l?50;0xL<003td:4l<50;0xL<003td:4l=50;0xL<003td:4l:50;0xL<003td:4l;50;0xL<003td:4l850;0xL<003td:4l950;0xL<003td:4l650;0xL<003td:4l750;0xL<003td:4lo50;0xL<003td:4ll50;0xL<003td:4lm50;0xL<003td:4lj50;0xL<003td:4lk50;0xL<003td:4lh50;0xL<003td:4o>50;0xL<003td:4o?50;0xL<003td:4o<50;0xL<003td:4o=50;0xL<003td:4o:50;0xL<003td:4o;50;0xL<003td:4o850;0xL<003td:4o950;0xL<003td:4o650;0xL<003td:4o750;0xL<003td:4oo50;0xL<003td:4ol50;0xL<003td:4om50;0xL<003td:4oj50;0xL<003td:4ok50;0xL<003td:4oh50;0xL<003td:4n>50;0xL<003td:4n?50;0xL<003td:4n<50;0xL<003td:4n=50;0xL<003td:4n:50;0xL<003td:4n;50;0xL<003td:4n850;0xL<003td:4n950;0xL<003td:4n650;0xL<003td:4n750;0xL<003td:4no50;0xL<003td:4nl50;0xL<003td:4nm50;0xL<003td:4nj50;0xL<003td:4nk50;0xL<003td:4nh50;0xL<003td:4i>50;0xL<003td:4i?50;0xL<003td:4i<50;0xL<003td:4i=50;0xL<003td:4i:50;0xL<003td:4i;50;0xL<003td:4i850;0xL<003td:4i950;0xL<003td:4i650;0xL<003td:4i750;0xL<003td:4io50;0xL<003td:4il50;0xL<003td:4im50;0xL<003td:4ij50;0xL<003td:4ik50;0xL<003td:4ih50;0xL<003td:4h>50;0xL<003td:4h?50;0xL<003td:4h<50;0xL<003td:4h=50;0xL<003td:4h:50;0xL<003td:4h;50;0xL<003td:4h850;0xL<003td:4h950;0xL<003td:4h650;0xL<003td:4h750;0xL<003td:4ho50;0xL<003td:4hl50;0xL<003td:4hm50;0xL<003td:4hj50;0xL<003td:4hk50;0xL<003td:4hh50;0xL<003td:4k>50;0xL<003td:4k?50;0xL<003td:4k<50;0xL<003td:4k=50;0xL<003td:4k:50;0xL<003td:4k;50;0xL<003td:4k850;0xL<003td:4k950;0xL<003td:4k650;0xL<003td:4k750;0xL<003td:4ko50;0xL<003td:4kl50;0xL<003td:4km50;0xL<003td:4kj50;0xL<003td:4kk50;0xL<003td:4kh50;0xL<003td:5=>50;0xL<003td:5=?50;0xL<003td:5=<50;0xL<003td:5==50;0xL<003td:5=:50;0xL<003td:5=;50;0xL<003td:5=850;0xL<003td:5=950;0xL<003td:5=650;0xL<003td:5=750;0xL<003td:5=o50;0xL<003td:5=l50;0xL<003td:5=m50;0xL<003td:5=j50;0xL<003td:5=k50;0xL<003td:5=h50;0xL<003td:5<>50;0xL<003td:550;0xL<003td:5??50;0xL<003td:5?<50;0xL<003td:5?=50;0xL<003td:5?:50;0xL<003td:5?;50;0xL<003td:5?850;0xL<003td:5?950;0xL<003td:5?650;0xL<003td:5?750;0xL<003td:5?o50;0xL<003td:5?l50;0xL<003td:5?m50;0xL<003td:5?j50;0xL<003td:5?k50;0xL<003td:5?h50;0xL<003td:5>>50;0xL<003td:5>?50;0xL<003td:5><50;0xL<003td:5>=50;0xL<003td:5>:50;0xL<003td:5>;50;0xL<003td:5>850;0xL<003td:5>950;0xL<003td:5>650;0xL<003td:5>750;0xL<003td:5>o50;0xL<003td:5>l50;0xL<003td:5>m50;0xL<003td:5>j50;0xL<003td:5>k50;0xL<003td:5>h50;0xL<003td:59>50;0xL<003td:59?50;0xL<003td:59<50;0xL<003td:59=50;0xL<003td:59:50;0xL<003td:59;50;0xL<003td:59850;0xL<003td:59950;0xL<003td:59650;0xL<003td:59750;0xL<003td:59o50;0xL<003td:59l50;0xL<003td:59m50;0xL<003td:59j50;0xL<003td:59k50;0xL<003td:59h50;0xL<003td:58>50;0xL<003td:58?50;0xL<003td:58<50;0xL<003td:58=50;0xL<003td:58:50;0xL<003td:58;50;0xL<003td:58850;0xL<003td:58950;0xL<003td:58650;0xL<003td:58750;0xL<003td:58o50;0xL<003td:58l50;0xL<003td:58m50;0xL<003td:58j50;0xL<003td:58k50;0xL<003td:58h50;0xL<003td:5;>50;0xL<003td:5;?50;0xL<003td:5;<50;0xL<003td:5;=50;0xL<003td:5;:50;0xL<003td:5;;50;0xL<003td:5;850;0xL<003td:5;950;0xL<003td:5;650;0xL<003td:5;750;0xL<003td:5;o50;0xL<003td:5;l50;0xL<003td:5;m50;0xL<003td:5;j50;0xL<003td:5;k50;0xL<003td:5;h50;0xL<003td:5:>50;0xL<003td:5:?50;0xL<003td:5:<50;0xL<003td:5:=50;0xL<003td:5::50;0xL<003td:5:;50;0xL<003td:5:850;0xL<003td:5:950;0xL<003td:5:650;0xL<003td:5:750;0xL<003td:5:o50;0xL<003td:5:l50;0xL<003td:5:m50;0xL<003td:5:j50;0xL<003td:5:k50;0xL<003td:5:h50;0xL<003td:55>50;0xL<003td:55?50;0xL<003td:55<50;0xL<003td:55=50;0xL<003td:55:50;0xL<003td:55;50;0xL<003td:55850;0xL<003td:55950;0xL<003td:55650;0xL<003td:55750;0xL<003td:55o50;0xL<003td:55l50;0xL<003td:55m50;0xL<003td:55j50;0xL<003td:55k50;0xL<003td:55h50;0xL<003td:54>50;0xL<003td:54?50;0xL<003td:54<50;0xL<003td:54=50;0xL<003td:54:50;0xL<003td:54;50;0xL<003td:54850;0xL<003td:54950;0xL<003td:54650;0xL<003td:54750;0xL<003td:54o50;0xL<003td:54l50;0xL<003td:54m50;0xL<003td:54j50;0xL<003td:54k50;0xL<003td:54h50;0xL<003td:5l>50;0xL<003td:5l?50;0xL<003td:5l<50;0xL<003td:5l=50;0xL<003td:5l:50;0xL<003td:5l;50;0xL<003td:5l850;0xL<003td:5l950;0xL<003td:5l650;0xL<003td:5l750;0xL<003td:5lo50;0xL<003td:5ll50;0xL<003td:5lm50;0xL<003td:5lj50;0xL<003td:5lk50;0xL<003td:5lh50;0xL<003td:5o>50;0xL<003td:5o?50;0xL<003td:5o<50;0xL<003td:5o=50;0xL<003td:5o:50;0xL<003td:5o;50;0xL<003td:5o850;0xL<003td:5o950;0xL<003td:5o650;0xL<003td:5o750;0xL<003td:5oo50;0xL<003td:5ol50;0xL<003td:5om50;0xL<003td:5oj50;0xL<003td:5ok50;0xL<003td:5oh50;0xL<003td:5n>50;0xL<003td:5n?50;0xL<003td:5n<50;0xL<003td:5n=50;0xL<003td:5n:50;0xL<003td:5n;50;0xL<003td:5n850;0xL<003td:5n950;0xL<003td:5n650;0xL<003td:5n750;0xL<003td:5no50;0xL<003td:5nl50;0xL<003td:5nm50;0xL<003td:5nj50;0xL<003td:5nk50;0xL<003td:5nh50;0xL<003td:5i>50;0xL<003td:5i?50;0xL<003td:5i<50;0xL<003td:5i=50;0xL<003td:5i:50;0xL<003td:5i;50;0xL<003td:5i850;0xL<003td:5i950;0xL<003td:5i650;0xL<003td:5i750;0xL<003td:5io50;0xL<003td:5il50;0xL<003td:5im50;0xL<003td:5ij50;0xL<003td:5ik50;0xL<003td:5ih50;0xL<003td:5h>50;0xL<003td:5h?50;0xL<003td:5h<50;0xL<003td:5h=50;0xL<003td:5h:50;0xL<003td:5h;50;0xL<003td:5h850;0xL<003td:5h950;0xL<003td:5h650;0xL<003td:5h750;0xL<003td:5ho50;0xL<003td:5hl50;0xL<003td:5hm50;0xL<003td:5hj50;0xL<003td:5hk50;0xL<003td:5hh50;0xL<003td:5k>50;0xL<003td:5k?50;0xL<003td:5k<50;0xL<003td:5k=50;0xL<003td:5k:50;0xL<003td:5k;50;0xL<003td:5k850;0xL<003td:5k950;0xL<003td:5k650;0xL<003td:5k750;0xL<003td:5ko50;0xL<003td:5kl50;0xL<003td:5km50;0xL<003td:5kj50;0xL<003td:5kk50;0xL<003td:5kh50;0xL<003td:m=>50;0xL<003td:m=?50;0xL<003td:m=<50;0xL<003td:m==50;0xL<003td:m=:50;0xL<003td:m=;50;0xL<003td:m=850;0xL<003td:m=950;0xL<003td:m=650;0xL<003td:m=750;0xL<003td:m=o50;0xL<003td:m=l50;0xL<003td:m=m50;0xL<003td::==50;3xL<003td::=:50;3xL<003twvqMNL{0g23?e59>8i>:sO@Cy3yEFWstJK \ No newline at end of file Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.xise =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.xise (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.xise (revision 5) @@ -0,0 +1,386 @@ + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.sym =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.sym (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.sym (revision 5) @@ -0,0 +1,27 @@ + + + BLOCK + 2015-2-1T10:47:44 + + + + + + + + blockMemory + + + + + + + + + + + + + + + Index: trunk/rtl/vhdl/mod_exp/blockMemory512/coregen.cgp =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/coregen.cgp (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/coregen.cgp (revision 5) @@ -0,0 +1,9 @@ +SET busformat = BusFormatAngleBracketNotRipped +SET designentry = Verilog +SET device = xc3s500e +SET devicefamily = spartan3e +SET flowvendor = Other +SET package = fg320 +SET speedgrade = -5 +SET verilogsim = true +SET vhdlsim = false Index: trunk/rtl/vhdl/mod_exp/blockMemory512/gen_blockMemory.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/gen_blockMemory.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/gen_blockMemory.tcl (revision 5) @@ -0,0 +1,37 @@ +## +## Core Generator Run Script, generator for Project Navigator regen command +## + +proc findRtfPath { relativePath } { + set xilenv "" + if { [info exists ::env(XILINX) ] } { + if { [info exists ::env(MYXILINX)] } { + set xilenv [join [list $::env(MYXILINX) $::env(XILINX)] $::xilinx::path_sep ] + } else { + set xilenv $::env(XILINX) + } + } + foreach path [ split $xilenv $::xilinx::path_sep ] { + set fullPath [ file join $path $relativePath ] + if { [ file exists $fullPath ] } { + return $fullPath + } + } + return "" +} + +source [ findRtfPath "data/projnav/scripts/dpm_cgUtils.tcl" ] + +set result [ run_cg_regen "blockMemory" xc3s500e-5fg320 VHDL CURRENT ] + +if { $result == 0 } { + puts "Core Generator regen command completed successfully." +} elseif { $result == 1 } { + puts "Core Generator regen command failed." +} elseif { $result == 3 || $result == 4 } { + # convert 'version check' result to real return range, bypassing any messages. + set result [ expr $result - 3 ] +} else { + puts "Core Generator regen cancelled." +} +exit $result Index: trunk/rtl/vhdl/mod_exp/blockMemory512/xlnx_auto_0_xdb =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/xlnx_auto_0_xdb (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/xlnx_auto_0_xdb (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory512/xlnx_auto_0_xdb Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory512/_xmsgs/pn_parser.xmsgs =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/_xmsgs/pn_parser.xmsgs (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/_xmsgs/pn_parser.xmsgs (revision 5) @@ -0,0 +1,15 @@ + + + + + + + + + + +Parsing VHDL file "E:/spent i praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/blockMemory.vhd" into library work + + + + Index: trunk/rtl/vhdl/mod_exp/blockMemory512/_xmsgs/cg.xmsgs =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/_xmsgs/cg.xmsgs (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/_xmsgs/cg.xmsgs (revision 5) @@ -0,0 +1,27 @@ + + + +Generating IP... + + +A core named 'blockMemory' already exists in the project. Output products for this core may be overwritten. + + +Component blk_mem_gen_v7_1 does not have a valid model name for VHDL synthesis + + +Pre-processing HDL files for 'blockMemory'... + + +Finished generation of ASY schematic symbol. + + +Finished FLIST file generation. + + + + Index: trunk/rtl/vhdl/mod_exp/blockMemory512/_xmsgs =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/_xmsgs (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/_xmsgs (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory512/_xmsgs Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory512/tmp/blockMemory.lso =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/tmp/blockMemory.lso (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/tmp/blockMemory.lso (revision 5) @@ -0,0 +1 @@ +work Index: trunk/rtl/vhdl/mod_exp/blockMemory512/tmp/_xmsgs/pn_parser.xmsgs =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/tmp/_xmsgs/pn_parser.xmsgs (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/tmp/_xmsgs/pn_parser.xmsgs (revision 5) @@ -0,0 +1,15 @@ + + + + + + + + + + +Parsing VHDL file "E:/spent i praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/blockMemory.vhd" into library work + + + + Index: trunk/rtl/vhdl/mod_exp/blockMemory512/tmp/_xmsgs/xst.xmsgs =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/tmp/_xmsgs/xst.xmsgs (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/tmp/_xmsgs/xst.xmsgs (revision 5) @@ -0,0 +1,748 @@ + + + +Message file "usenglish/ip.msg" wasn't found. + + +0: (0,0) : 72x256 u:72 + + +1: (72,0) : 72x256 u:72 + + +2: (144,0) : 72x256 u:72 + + +3: (216,0) : 72x256 u:72 + + +4: (288,0) : 72x256 u:72 + + +5: (360,0) : 72x256 u:72 + + +6: (432,0) : 72x256 u:72 + + +7: (504,0) : 72x256 u:8 + + +0: (0,0) : 72x256 u:72 + + +1: (72,0) : 72x256 u:72 + + +2: (144,0) : 72x256 u:72 + + +3: (216,0) : 72x256 u:72 + + +4: (288,0) : 72x256 u:72 + + +5: (360,0) : 72x256 u:72 + + +6: (432,0) : 72x256 u:72 + + +7: (504,0) : 72x256 u:8 + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_input_block.vhd" Line 691: Comparison between arrays of unequal length always returns FALSE. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_input_block.vhd" Line 707: Comparison between arrays of unequal length always returns FALSE. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_wrapper_s3.vhd" Line 4199: Range is empty (null range) + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_wrapper_s3.vhd" Line 4199: Assignment ignored + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_wrapper_s3.vhd" Line 4206: Range is empty (null range) + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_wrapper_s3.vhd" Line 4206: Assignment ignored + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_wrapper_s3.vhd" Line 4213: Range is empty (null range) + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_wrapper_s3.vhd" Line 4213: Assignment ignored + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_wrapper_s3.vhd" Line 370: Net <doutb_i[71]> does not have a driver. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_width.vhd" Line 429: Net <dina_pad[71]> does not have a driver. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_width.vhd" Line 433: Net <dinb_pad[71]> does not have a driver. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" Line 1546: Comparison between arrays of unequal length always returns FALSE. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" Line 1559: Comparison between arrays of unequal length always returns FALSE. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <doutb> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <rdaddrecc> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_bid> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_bresp> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_rid> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_rdata> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_rresp> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_rdaddrecc> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <sbiterr> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <dbiterr> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_awready> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_wready> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_bvalid> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_arready> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_rlast> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_rvalid> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_sbiterr> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_dbiterr> of the instance <U0> is unconnected or connected to loadless signal. + + +Input <S_AXI_AWID> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_AWADDR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_AWLEN> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_AWSIZE> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_AWBURST> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_WDATA> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_WSTRB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_ARID> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_ARADDR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_ARLEN> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_ARSIZE> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_ARBURST> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AClk> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_ARESETN> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_AWVALID> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_WLAST> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_WVALID> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_BREADY> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_ARVALID> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_RREADY> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_INJECTSBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_INJECTDBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal 'S_AXI_BID', unconnected in block 'blk_mem_gen_v7_1_xst', is tied to its initial value (0000). + + +Signal <S_AXI_BRESP> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal 'S_AXI_RID', unconnected in block 'blk_mem_gen_v7_1_xst', is tied to its initial value (0000). + + +Signal <S_AXI_RDATA> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_RRESP> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_RDADDRECC> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_AWREADY> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_WREADY> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_BVALID> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_ARREADY> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_RLAST> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_RVALID> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_SBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_DBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Input <WEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <ADDRB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <DINB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <ENA> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEA> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <CLKB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <RSTB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <ENB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <INJECTDBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <INJECTSBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal <INJECTDBITERR_I> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <INJECTSBITERR_I> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Input <REGCEA> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <WEA<56:1>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <WEB<56:1>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <INJECTSBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <INJECTDBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" line 1343: Output port <SBITERR> of the instance <ramloop[0].ram.r> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" line 1343: Output port <DBITERR> of the instance <ramloop[0].ram.r> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" line 1343: Output port <SBITERR> of the instance <ramloop[1].ram.r> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" line 1343: Output port <DBITERR> of the instance <ramloop[1].ram.r> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" line 1343: Output port <SBITERR> of the instance <ramloop[2].ram.r> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" line 1343: Output port <DBITERR> of the instance <ramloop[2].ram.r> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" line 1343: Output port <SBITERR> of the instance <ramloop[3].ram.r> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" line 1343: Output port <DBITERR> of the instance <ramloop[3].ram.r> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" line 1343: Output port <SBITERR> of the instance <ramloop[4].ram.r> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" line 1343: Output port <DBITERR> of the instance <ramloop[4].ram.r> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" line 1343: Output port <SBITERR> of the instance <ramloop[5].ram.r> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" line 1343: Output port <DBITERR> of the instance <ramloop[5].ram.r> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" line 1343: Output port <SBITERR> of the instance <ramloop[6].ram.r> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" line 1343: Output port <DBITERR> of the instance <ramloop[6].ram.r> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" line 1343: Output port <SBITERR> of the instance <ramloop[7].ram.r> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" line 1343: Output port <DBITERR> of the instance <ramloop[7].ram.r> is unconnected or connected to loadless signal. + + +Signal <RDADDRECC> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <SBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <DBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Input <INJECTSBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <INJECTDBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal <SBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <DBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Input <ADDRB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <DINB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEA> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <CLKB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <ENB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <WEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal 'doutb_i', unconnected in block 'blk_mem_gen_prim_wrapper_s3_1', is tied to its initial value (000000000000000000000000000000000000000000000000000000000000000000000000). + + +Input <INJECTSBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <INJECTDBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal <SBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <DBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Input <ADDRB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <DINB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEA> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <CLKB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <ENB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <WEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal 'doutb_i', unconnected in block 'blk_mem_gen_prim_wrapper_s3_2', is tied to its initial value (000000000000000000000000000000000000000000000000000000000000000000000000). + + +Input <INJECTSBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <INJECTDBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal <SBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <DBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Input <ADDRB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <DINB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEA> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <CLKB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <ENB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <WEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal 'doutb_i', unconnected in block 'blk_mem_gen_prim_wrapper_s3_3', is tied to its initial value (000000000000000000000000000000000000000000000000000000000000000000000000). + + +Input <INJECTSBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <INJECTDBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal <SBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <DBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Input <ADDRB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <DINB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEA> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <CLKB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <ENB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <WEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal 'doutb_i', unconnected in block 'blk_mem_gen_prim_wrapper_s3_4', is tied to its initial value (000000000000000000000000000000000000000000000000000000000000000000000000). + + +Input <INJECTSBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <INJECTDBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal <SBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <DBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Input <ADDRB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <DINB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEA> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <CLKB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <ENB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <WEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal 'doutb_i', unconnected in block 'blk_mem_gen_prim_wrapper_s3_5', is tied to its initial value (000000000000000000000000000000000000000000000000000000000000000000000000). + + +Input <INJECTSBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <INJECTDBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal <SBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <DBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Input <ADDRB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <DINB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEA> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <CLKB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <ENB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <WEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal 'doutb_i', unconnected in block 'blk_mem_gen_prim_wrapper_s3_6', is tied to its initial value (000000000000000000000000000000000000000000000000000000000000000000000000). + + +Input <INJECTSBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <INJECTDBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal <SBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <DBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Input <ADDRB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <DINB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEA> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <CLKB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <ENB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <WEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal 'doutb_i', unconnected in block 'blk_mem_gen_prim_wrapper_s3_7', is tied to its initial value (000000000000000000000000000000000000000000000000000000000000000000000000). + + +Input <INJECTSBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <INJECTDBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal 'dina_pad<71:64>', unconnected in block 'blk_mem_gen_prim_width_8', is tied to its initial value (00000000). + + +Signal 'dina_pad<62:55>', unconnected in block 'blk_mem_gen_prim_width_8', is tied to its initial value (00000000). + + +Signal 'dina_pad<53:46>', unconnected in block 'blk_mem_gen_prim_width_8', is tied to its initial value (00000000). + + +Signal 'dina_pad<44:37>', unconnected in block 'blk_mem_gen_prim_width_8', is tied to its initial value (00000000). + + +Signal 'dina_pad<35:28>', unconnected in block 'blk_mem_gen_prim_width_8', is tied to its initial value (00000000). + + +Signal 'dina_pad<26:19>', unconnected in block 'blk_mem_gen_prim_width_8', is tied to its initial value (00000000). + + +Signal 'dina_pad<17:10>', unconnected in block 'blk_mem_gen_prim_width_8', is tied to its initial value (00000000). + + +Signal 'dina_pad<8:1>', unconnected in block 'blk_mem_gen_prim_width_8', is tied to its initial value (00000000). + + +Signal 'dinb_pad<71:64>', unconnected in block 'blk_mem_gen_prim_width_8', is tied to its initial value (00000000). + + +Signal 'dinb_pad<62:55>', unconnected in block 'blk_mem_gen_prim_width_8', is tied to its initial value (00000000). + + +Signal 'dinb_pad<53:46>', unconnected in block 'blk_mem_gen_prim_width_8', is tied to its initial value (00000000). + + +Signal 'dinb_pad<44:37>', unconnected in block 'blk_mem_gen_prim_width_8', is tied to its initial value (00000000). + + +Signal 'dinb_pad<35:28>', unconnected in block 'blk_mem_gen_prim_width_8', is tied to its initial value (00000000). + + +Signal 'dinb_pad<26:19>', unconnected in block 'blk_mem_gen_prim_width_8', is tied to its initial value (00000000). + + +Signal 'dinb_pad<17:10>', unconnected in block 'blk_mem_gen_prim_width_8', is tied to its initial value (00000000). + + +Signal 'dinb_pad<8:1>', unconnected in block 'blk_mem_gen_prim_width_8', is tied to its initial value (00000000). + + +Signal <SBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <DBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Input <ADDRB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <DINB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEA> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <CLKB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <ENB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <WEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal 'doutb_i', unconnected in block 'blk_mem_gen_prim_wrapper_s3_8', is tied to its initial value (000000000000000000000000000000000000000000000000000000000000000000000000). + + +Input <DOUTB_I> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <RDADDRECC_I> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <CLKB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <SBITERR_I> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <DBITERR_I> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal <RDADDRECC> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <SBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <DBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +HDL ADVISOR - Some clock signals were not automatically buffered by XST with BUFG/BUFR resources. Please use the buffer_type constraint in order to insert these buffers to the clock signals to help prevent skew problems. + + +You have chosen to run a version of XST which is not the default solution +for the specified device family. You are free to use it in order to take +advantage of its enhanced HDL parsing/elaboration capabilities. However, +please be aware that you may be impacted by language support differences. +This version may also result in circuit performance and device utilization +differences for your particular design. You can always revert back to the +default XST solution by setting the "use_new_parser" option to value "no" +on the XST command line or in the XST process properties panel. + + + + Index: trunk/rtl/vhdl/mod_exp/blockMemory512/tmp/_xmsgs =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/tmp/_xmsgs (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/tmp/_xmsgs (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory512/tmp/_xmsgs Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory512/tmp/_cg =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/tmp/_cg (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/tmp/_cg (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory512/tmp/_cg Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory512/tmp =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/tmp (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/tmp (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory512/tmp Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory_flist.txt =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory_flist.txt (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory_flist.txt (revision 5) @@ -0,0 +1,60 @@ +# Output products list for +_xmsgs\pn_parser.xmsgs +blockMemory.asy +blockMemory.gise +blockMemory.ngc +blockMemory.sym +blockMemory.vhd +blockMemory.vho +blockMemory.xco +blockMemory.xise +blockMemory\blk_mem_gen_v7_1_readme.txt +blockMemory\doc\blk_mem_gen_ds512.pdf +blockMemory\doc\blk_mem_gen_v7_1_vinfo.html +blockMemory\example_design\blockMemory_exdes.ucf +blockMemory\example_design\blockMemory_exdes.vhd +blockMemory\example_design\blockMemory_exdes.xdc +blockMemory\example_design\blockMemory_prod.vhd +blockMemory\implement\implement.bat +blockMemory\implement\implement.sh +blockMemory\implement\planAhead_ise.bat +blockMemory\implement\planAhead_ise.sh +blockMemory\implement\planAhead_ise.tcl +blockMemory\implement\planAhead_rdn.bat +blockMemory\implement\planAhead_rdn.sh +blockMemory\implement\planAhead_rdn.tcl +blockMemory\implement\xst.prj +blockMemory\implement\xst.scr +blockMemory\simulation\addr_gen.vhd +blockMemory\simulation\blockMemory_synth.vhd +blockMemory\simulation\blockMemory_tb.vhd +blockMemory\simulation\bmg_stim_gen.vhd +blockMemory\simulation\bmg_tb_pkg.vhd +blockMemory\simulation\checker.vhd +blockMemory\simulation\data_gen.vhd +blockMemory\simulation\functional\simcmds.tcl +blockMemory\simulation\functional\simulate_isim.bat +blockMemory\simulation\functional\simulate_mti.bat +blockMemory\simulation\functional\simulate_mti.do +blockMemory\simulation\functional\simulate_mti.sh +blockMemory\simulation\functional\simulate_ncsim.sh +blockMemory\simulation\functional\simulate_vcs.sh +blockMemory\simulation\functional\ucli_commands.key +blockMemory\simulation\functional\vcs_session.tcl +blockMemory\simulation\functional\wave_mti.do +blockMemory\simulation\functional\wave_ncsim.sv +blockMemory\simulation\random.vhd +blockMemory\simulation\timing\simcmds.tcl +blockMemory\simulation\timing\simulate_isim.bat +blockMemory\simulation\timing\simulate_mti.bat +blockMemory\simulation\timing\simulate_mti.do +blockMemory\simulation\timing\simulate_mti.sh +blockMemory\simulation\timing\simulate_ncsim.sh +blockMemory\simulation\timing\simulate_vcs.sh +blockMemory\simulation\timing\ucli_commands.key +blockMemory\simulation\timing\vcs_session.tcl +blockMemory\simulation\timing\wave_mti.do +blockMemory\simulation\timing\wave_ncsim.sv +blockMemory_flist.txt +blockMemory_xmdf.tcl +summary.log Index: trunk/rtl/vhdl/mod_exp/blockMemory512/coregen.log =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/coregen.log (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/coregen.log (revision 5) @@ -0,0 +1,60 @@ +INFO:sim:172 - Generating IP... +Applying current project options... +Finished applying current project options. +Resolving generics for 'blockMemory'... +WARNING:sim - A core named 'blockMemory' already exists in the project. Output + products for this core may be overwritten. +Applying external generics to 'blockMemory'... +Delivering associated files for 'blockMemory'... +WARNING:sim - Component blk_mem_gen_v7_1 does not have a valid model name for + VHDL synthesis +Delivering EJava files for 'blockMemory'... +Generating implementation netlist for 'blockMemory'... +INFO:sim - Pre-processing HDL files for 'blockMemory'... +Running synthesis for 'blockMemory' +Running ngcbuild... +Writing VHO instantiation template for 'blockMemory'... +Writing VHDL behavioral simulation model for 'blockMemory'... +Generating ASY schematic symbol... +INFO:sim:949 - Finished generation of ASY schematic symbol. +Generating SYM schematic symbol for 'blockMemory'... +Generating metadata file... +Generating ISE project... +XCO file found: blockMemory.xco +XMDF file found: blockMemory_xmdf.tcl +Adding E:/spent i +praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp/_c +g/blockMemory.asy -view all -origin_type imported +Adding E:/spent i +praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp/_c +g/blockMemory.ngc -view all -origin_type created +Checking file "E:/spent i +praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp/_c +g/blockMemory.ngc" for project device match ... +File "E:/spent i +praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp/_c +g/blockMemory.ngc" device information matches project device. +Adding E:/spent i +praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp/_c +g/blockMemory.sym -view all -origin_type imported +Adding E:/spent i +praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp/_c +g/blockMemory.vhd -view all -origin_type created +INFO:HDLCompiler:1061 - Parsing VHDL file "E:/spent i + praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp + /_cg/blockMemory.vhd" into library work +INFO:ProjectMgmt - Parsing design hierarchy completed successfully. +Adding E:/spent i +praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp/_c +g/blockMemory.vho -view all -origin_type imported +INFO:TclTasksC:2116 - The automatic calculation of top has been turned-off. + Please set the new top explicitly by running the "project set top" command. + To re-calculate the new top automatically, set the "Auto Implementation Top" + property to true. +Top level has been set to "/blockMemory" +Generating README file... +Generating FLIST file... +INFO:sim:948 - Finished FLIST file generation. +Moving files to output directory... +Finished moving files to output directory +Wrote CGP file for project 'blockMemory'. Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.vhd (revision 5) @@ -0,0 +1,144 @@ +-------------------------------------------------------------------------------- +-- This file is owned and controlled by Xilinx and must be used solely -- +-- for design, simulation, implementation and creation of design files -- +-- limited to Xilinx devices or technologies. Use with non-Xilinx -- +-- devices or technologies is expressly prohibited and immediately -- +-- terminates your license. -- +-- -- +-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" SOLELY -- +-- FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR XILINX DEVICES. BY -- +-- PROVIDING THIS DESIGN, CODE, OR INFORMATION AS ONE POSSIBLE -- +-- IMPLEMENTATION OF THIS FEATURE, APPLICATION OR STANDARD, XILINX IS -- +-- MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION IS FREE FROM ANY -- +-- CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE FOR OBTAINING ANY -- +-- RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY -- +-- DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE -- +-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR -- +-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF -- +-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -- +-- PARTICULAR PURPOSE. -- +-- -- +-- Xilinx products are not intended for use in life support appliances, -- +-- devices, or systems. Use in such applications are expressly -- +-- prohibited. -- +-- -- +-- (c) Copyright 1995-2015 Xilinx, Inc. -- +-- All rights reserved. -- +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- +-- You must compile the wrapper file blockMemory.vhd when simulating +-- the core, blockMemory. When compiling the wrapper file, be sure to +-- reference the XilinxCoreLib VHDL simulation library. For detailed +-- instructions, please refer to the "CORE Generator Help". + +-- The synthesis directives "translate_off/translate_on" specified +-- below are supported by Xilinx, Mentor Graphics and Synplicity +-- synthesis tools. Ensure they are correct for your synthesis tool(s). + +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +-- synthesis translate_off +LIBRARY XilinxCoreLib; +-- synthesis translate_on +ENTITY blockMemory IS + PORT ( + clka : IN STD_LOGIC; + rsta : IN STD_LOGIC; + wea : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + addra : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + dina : IN STD_LOGIC_VECTOR(511 DOWNTO 0); + douta : OUT STD_LOGIC_VECTOR(511 DOWNTO 0) + ); +END blockMemory; + +ARCHITECTURE blockMemory_a OF blockMemory IS +-- synthesis translate_off +COMPONENT wrapped_blockMemory + PORT ( + clka : IN STD_LOGIC; + rsta : IN STD_LOGIC; + wea : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + addra : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + dina : IN STD_LOGIC_VECTOR(511 DOWNTO 0); + douta : OUT STD_LOGIC_VECTOR(511 DOWNTO 0) + ); +END COMPONENT; + +-- Configuration specification + FOR ALL : wrapped_blockMemory USE ENTITY XilinxCoreLib.blk_mem_gen_v7_1(behavioral) + GENERIC MAP ( + c_addra_width => 4, + c_addrb_width => 4, + c_algorithm => 0, + c_axi_id_width => 4, + c_axi_slave_type => 0, + c_axi_type => 1, + c_byte_size => 9, + c_common_clk => 0, + c_default_data => "0", + c_disable_warn_bhv_coll => 0, + c_disable_warn_bhv_range => 0, + c_enable_32bit_address => 0, + c_family => "spartan3", + c_has_axi_id => 0, + c_has_ena => 0, + c_has_enb => 0, + c_has_injecterr => 0, + c_has_mem_output_regs_a => 0, + c_has_mem_output_regs_b => 0, + c_has_mux_output_regs_a => 0, + c_has_mux_output_regs_b => 0, + c_has_regcea => 0, + c_has_regceb => 0, + c_has_rsta => 1, + c_has_rstb => 0, + c_has_softecc_input_regs_a => 0, + c_has_softecc_output_regs_b => 0, + c_init_file_name => "no_coe_file_loaded", + c_inita_val => "0", + c_initb_val => "0", + c_interface_type => 0, + c_load_init_file => 0, + c_mem_type => 0, + c_mux_pipeline_stages => 0, + c_prim_type => 6, + c_read_depth_a => 16, + c_read_depth_b => 16, + c_read_width_a => 512, + c_read_width_b => 512, + c_rst_priority_a => "CE", + c_rst_priority_b => "CE", + c_rst_type => "SYNC", + c_rstram_a => 0, + c_rstram_b => 0, + c_sim_collision_check => "ALL", + c_use_byte_wea => 0, + c_use_byte_web => 0, + c_use_default_data => 0, + c_use_ecc => 0, + c_use_softecc => 0, + c_wea_width => 1, + c_web_width => 1, + c_write_depth_a => 16, + c_write_depth_b => 16, + c_write_mode_a => "READ_FIRST", + c_write_mode_b => "WRITE_FIRST", + c_write_width_a => 512, + c_write_width_b => 512, + c_xdevicefamily => "spartan3e" + ); +-- synthesis translate_on +BEGIN +-- synthesis translate_off +U0 : wrapped_blockMemory + PORT MAP ( + clka => clka, + rsta => rsta, + wea => wea, + addra => addra, + dina => dina, + douta => douta + ); +-- synthesis translate_on + +END blockMemory_a; Index: trunk/rtl/vhdl/mod_exp/blockMemory512/edit_blockMemory.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/edit_blockMemory.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/edit_blockMemory.tcl (revision 5) @@ -0,0 +1,37 @@ +## +## Core Generator Run Script, generator for Project Navigator edit command +## + +proc findRtfPath { relativePath } { + set xilenv "" + if { [info exists ::env(XILINX) ] } { + if { [info exists ::env(MYXILINX)] } { + set xilenv [join [list $::env(MYXILINX) $::env(XILINX)] $::xilinx::path_sep ] + } else { + set xilenv $::env(XILINX) + } + } + foreach path [ split $xilenv $::xilinx::path_sep ] { + set fullPath [ file join $path $relativePath ] + if { [ file exists $fullPath ] } { + return $fullPath + } + } + return "" +} + +source [ findRtfPath "data/projnav/scripts/dpm_cgUtils.tcl" ] + +set result [ run_cg_edit "blockMemory" xc3s500e-5fg320 VHDL ] + +if { $result == 0 } { + puts "Core Generator edit command completed successfully." +} elseif { $result == 1 } { + puts "Core Generator edit command failed." +} elseif { $result == 3 || $result == 4 } { + # convert 'version check' result to real return range, bypassing any messages. + set result [ expr $result - 3 ] +} else { + puts "Core Generator edit cancelled." +} +exit $result Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory_beh.cgp =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory_beh.cgp (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory_beh.cgp (revision 5) @@ -0,0 +1,22 @@ +# Date: Sat Dec 22 01:24:09 2012 + +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = false +SET designentry = VHDL +SET device = xc3s500e +SET devicefamily = spartan3e +SET flowvendor = Other +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = fg320 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -5 +SET verilogsim = false +SET vhdlsim = true +SET workingdirectory = .\tmp\ + +# CRC: 46f7aa00 Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.gise =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.gise (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.gise (revision 5) @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + 11.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.veo =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.veo (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.veo (revision 5) @@ -0,0 +1,70 @@ +/******************************************************************************* +* This file is owned and controlled by Xilinx and must be used solely * +* for design, simulation, implementation and creation of design files * +* limited to Xilinx devices or technologies. Use with non-Xilinx * +* devices or technologies is expressly prohibited and immediately * +* terminates your license. * +* * +* XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" SOLELY * +* FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR XILINX DEVICES. BY * +* PROVIDING THIS DESIGN, CODE, OR INFORMATION AS ONE POSSIBLE * +* IMPLEMENTATION OF THIS FEATURE, APPLICATION OR STANDARD, XILINX IS * +* MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION IS FREE FROM ANY * +* CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE FOR OBTAINING ANY * +* RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY * +* DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE * +* IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR * +* REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF * +* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * +* PARTICULAR PURPOSE. * +* * +* Xilinx products are not intended for use in life support appliances, * +* devices, or systems. Use in such applications are expressly * +* prohibited. * +* * +* (c) Copyright 1995-2013 Xilinx, Inc. * +* All rights reserved. * +*******************************************************************************/ + +/******************************************************************************* +* Generated from core with identifier: xilinx.com:ip:blk_mem_gen:7.1 * +* * +* The Xilinx LogiCORE IP Block Memory Generator replaces the Dual Port * +* Block Memory and Single Port Block Memory LogiCOREs, but is not a * +* direct drop-in replacement. It should be used in all new Xilinx * +* designs. The core supports RAM and ROM functions over a wide range of * +* widths and depths. Use this core to generate block memories with * +* symmetric or asymmetric read and write port widths, as well as cores * +* which can perform simultaneous write operations to separate * +* locations, and simultaneous read operations from the same location. * +* For more information on differences in interface and feature support * +* between this core and the Dual Port Block Memory and Single Port * +* Block Memory LogiCOREs, please consult the data sheet. * +*******************************************************************************/ + +// Interfaces: +// AXI_SLAVE_S_AXI +// AXI_SLAVE +// AXILite_SLAVE_S_AXI +// AXILite_SLAVE + +// The following must be inserted into your Verilog file for this +// core to be instantiated. Change the instance name and port connections +// (in parentheses) to your own signal names. + +//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG +blockMemory your_instance_name ( + .clka(clka), // input clka + .rsta(rsta), // input rsta + .wea(wea), // input [0 : 0] wea + .addra(addra), // input [3 : 0] addra + .dina(dina), // input [511 : 0] dina + .douta(douta) // output [511 : 0] douta +); +// INST_TAG_END ------ End INSTANTIATION Template --------- + +// You must compile the wrapper file blockMemory.v when simulating +// the core, blockMemory. When compiling the wrapper file, be sure to +// reference the XilinxCoreLib Verilog simulation library. For detailed +// instructions, please refer to the "CORE Generator Help". + Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.xco =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.xco (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.xco (revision 5) @@ -0,0 +1,106 @@ +############################################################## +# +# Xilinx Core Generator version 14.2 +# Date: Sun Feb 01 10:45:16 2015 +# +############################################################## +# +# This file contains the customisation parameters for a +# Xilinx CORE Generator IP GUI. It is strongly recommended +# that you do not manually alter this file as it may cause +# unexpected and unsupported behavior. +# +############################################################## +# +# Generated from component: xilinx.com:ip:blk_mem_gen:7.1 +# +############################################################## +# +# BEGIN Project Options +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = false +SET designentry = VHDL +SET device = xc3s500e +SET devicefamily = spartan3e +SET flowvendor = Other +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = fg320 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -5 +SET verilogsim = false +SET vhdlsim = true +# END Project Options +# BEGIN Select +SELECT Block_Memory_Generator xilinx.com:ip:blk_mem_gen:7.1 +# END Select +# BEGIN Parameters +CSET additional_inputs_for_power_estimation=false +CSET algorithm=Fixed_Primitives +CSET assume_synchronous_clk=false +CSET axi_id_width=4 +CSET axi_slave_type=Memory_Slave +CSET axi_type=AXI4_Full +CSET byte_size=9 +CSET coe_file=no_coe_file_loaded +CSET collision_warnings=ALL +CSET component_name=blockMemory +CSET disable_collision_warnings=false +CSET disable_out_of_range_warnings=false +CSET ecc=false +CSET ecctype=No_ECC +CSET enable_32bit_address=false +CSET enable_a=Always_Enabled +CSET enable_b=Always_Enabled +CSET error_injection_type=Single_Bit_Error_Injection +CSET fill_remaining_memory_locations=false +CSET interface_type=Native +CSET load_init_file=false +CSET memory_type=Single_Port_RAM +CSET operating_mode_a=READ_FIRST +CSET operating_mode_b=WRITE_FIRST +CSET output_reset_value_a=0 +CSET output_reset_value_b=0 +CSET pipeline_stages=0 +CSET port_a_clock=100 +CSET port_a_enable_rate=100 +CSET port_a_write_rate=50 +CSET port_b_clock=100 +CSET port_b_enable_rate=100 +CSET port_b_write_rate=50 +CSET primitive=256x72 +CSET read_width_a=512 +CSET read_width_b=512 +CSET register_porta_input_of_softecc=false +CSET register_porta_output_of_memory_core=false +CSET register_porta_output_of_memory_primitives=false +CSET register_portb_output_of_memory_core=false +CSET register_portb_output_of_memory_primitives=false +CSET register_portb_output_of_softecc=false +CSET remaining_memory_locations=0 +CSET reset_memory_latch_a=false +CSET reset_memory_latch_b=false +CSET reset_priority_a=CE +CSET reset_priority_b=CE +CSET reset_type=SYNC +CSET softecc=false +CSET use_axi_id=false +CSET use_byte_write_enable=false +CSET use_error_injection_pins=false +CSET use_regcea_pin=false +CSET use_regceb_pin=false +CSET use_rsta_pin=true +CSET use_rstb_pin=false +CSET write_depth_a=16 +CSET write_width_a=512 +CSET write_width_b=512 +# END Parameters +# BEGIN Extra information +MISC pkg_timestamp=2012-05-01T17:17:26Z +# END Extra information +GENERATE +# CRC: 7654b1f0 Index: trunk/rtl/vhdl/mod_exp/blockMemory512/summary.log =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/summary.log (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/summary.log (revision 5) @@ -0,0 +1,18 @@ + +User Configuration +------------------------------------- +Algorithm : Fixed_Primitives +Memory Type : Single_Port_RAM +Port A Read Width : 512 +Port A Write Width : 512 +Memory Depth : 16 +-------------------------------------------------------------- + +Block RAM resource(s) (18K BRAMs) : 8 +-------------------------------------------------------------- +Clock A Frequency : 100 +Port A Enable Rate : 100 +Port A Write Rate : 50 +---------------------------------------------------------- +Estimated Power for IP : 75.800499 mW +---------------------------------------------------------- Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.asy =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.asy (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.asy (revision 5) @@ -0,0 +1,29 @@ +Version 4 +SymbolType BLOCK +TEXT 32 32 LEFT 4 blockMemory +RECTANGLE Normal 32 32 544 1376 +LINE Wide 0 80 32 80 +PIN 0 80 LEFT 36 +PINATTR PinName addra[3:0] +PINATTR Polarity IN +LINE Wide 0 112 32 112 +PIN 0 112 LEFT 36 +PINATTR PinName dina[511:0] +PINATTR Polarity IN +LINE Wide 0 208 32 208 +PIN 0 208 LEFT 36 +PINATTR PinName wea[0:0] +PINATTR Polarity IN +LINE Normal 0 240 32 240 +PIN 0 240 LEFT 36 +PINATTR PinName rsta +PINATTR Polarity IN +LINE Normal 0 272 32 272 +PIN 0 272 LEFT 36 +PINATTR PinName clka +PINATTR Polarity IN +LINE Wide 576 80 544 80 +PIN 576 80 RIGHT 36 +PINATTR PinName douta[511:0] +PINATTR Polarity OUT + Index: trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.vho =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.vho (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512/blockMemory.vho (revision 5) @@ -0,0 +1,89 @@ +-------------------------------------------------------------------------------- +-- This file is owned and controlled by Xilinx and must be used solely -- +-- for design, simulation, implementation and creation of design files -- +-- limited to Xilinx devices or technologies. Use with non-Xilinx -- +-- devices or technologies is expressly prohibited and immediately -- +-- terminates your license. -- +-- -- +-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" SOLELY -- +-- FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR XILINX DEVICES. BY -- +-- PROVIDING THIS DESIGN, CODE, OR INFORMATION AS ONE POSSIBLE -- +-- IMPLEMENTATION OF THIS FEATURE, APPLICATION OR STANDARD, XILINX IS -- +-- MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION IS FREE FROM ANY -- +-- CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE FOR OBTAINING ANY -- +-- RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY -- +-- DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE -- +-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR -- +-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF -- +-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -- +-- PARTICULAR PURPOSE. -- +-- -- +-- Xilinx products are not intended for use in life support appliances, -- +-- devices, or systems. Use in such applications are expressly -- +-- prohibited. -- +-- -- +-- (c) Copyright 1995-2015 Xilinx, Inc. -- +-- All rights reserved. -- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- Generated from core with identifier: xilinx.com:ip:blk_mem_gen:7.1 -- +-- -- +-- The Xilinx LogiCORE IP Block Memory Generator replaces the Dual Port -- +-- Block Memory and Single Port Block Memory LogiCOREs, but is not a -- +-- direct drop-in replacement. It should be used in all new Xilinx -- +-- designs. The core supports RAM and ROM functions over a wide range of -- +-- widths and depths. Use this core to generate block memories with -- +-- symmetric or asymmetric read and write port widths, as well as cores -- +-- which can perform simultaneous write operations to separate -- +-- locations, and simultaneous read operations from the same location. -- +-- For more information on differences in interface and feature support -- +-- between this core and the Dual Port Block Memory and Single Port -- +-- Block Memory LogiCOREs, please consult the data sheet. -- +-------------------------------------------------------------------------------- + +-- Interfaces: +-- AXI_SLAVE_S_AXI +-- AXI_SLAVE +-- AXILite_SLAVE_S_AXI +-- AXILite_SLAVE +-- BRAM_PORTA +-- BRAM_PORTA +-- BRAM_PORTB +-- BRAM_PORTB + +-- The following code must appear in the VHDL architecture header: + +------------- Begin Cut here for COMPONENT Declaration ------ COMP_TAG +COMPONENT blockMemory + PORT ( + clka : IN STD_LOGIC; + rsta : IN STD_LOGIC; + wea : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + addra : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + dina : IN STD_LOGIC_VECTOR(511 DOWNTO 0); + douta : OUT STD_LOGIC_VECTOR(511 DOWNTO 0) + ); +END COMPONENT; +-- COMP_TAG_END ------ End COMPONENT Declaration ------------ + +-- The following code must appear in the VHDL architecture +-- body. Substitute your own instance name and net names. + +------------- Begin Cut here for INSTANTIATION Template ----- INST_TAG +your_instance_name : blockMemory + PORT MAP ( + clka => clka, + rsta => rsta, + wea => wea, + addra => addra, + dina => dina, + douta => douta + ); +-- INST_TAG_END ------ End INSTANTIATION Template ------------ + +-- You must compile the wrapper file blockMemory.vhd when simulating +-- the core, blockMemory. When compiling the wrapper file, be sure to +-- reference the XilinxCoreLib VHDL simulation library. For detailed +-- instructions, please refer to the "CORE Generator Help". + Index: trunk/rtl/vhdl/mod_exp/blockMemory512 =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory512 (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory512 (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory512 Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/ModExpSM.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/ModExpSM.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/ModExpSM.vhd (revision 5) @@ -0,0 +1,528 @@ +----------------------------------------------------------------------- +---- ---- +---- Montgomery modular multiplier and exponentiator ---- +---- ---- +---- This file is part of the Montgomery modular multiplier ---- +---- and exponentiator project ---- +---- http://opencores.org/project,mod_mult_exp ---- +---- ---- +---- Description: ---- +---- This is state machine of the Montgomery modular ---- +---- exponentiator. It controls all the registers, block memory ---- +---- and the exponentiation process. ---- +---- ---- +---- To Do: ---- +---- Description ---- +---- Author(s): ---- +---- - Krzysztof Gajewski, gajos@opencores.org ---- +---- k.gajewski@gmail.com ---- +---- ---- +----------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2014 Authors and OPENCORES.ORG ---- +---- ---- +---- 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.opencores.org/lgpl.shtml ---- +---- ---- +----------------------------------------------------------------------- +library IEEE; +use work.properties.ALL; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; +use IEEE.NUMERIC_STD.ALL; + +-- Uncomment the following library declaration if using +-- arithmetic functions with Signed or Unsigned values +--use IEEE.NUMERIC_STD.ALL; + +-- Uncomment the following library declaration if instantiating +-- any Xilinx primitives in this code. +--library UNISIM; +--use UNISIM.VComponents.all; + +entity ModExpSM is + generic( + word_size : integer := WORD_LENGTH; + word_binary : integer := WORD_INTEGER + ); + port ( + data_in_ready : in STD_LOGIC; + clk : in STD_LOGIC; + exp_ctrl : in STD_LOGIC_VECTOR(2 downto 0); + reset : in STD_LOGIC; + in_mux_control : out STD_LOGIC_VECTOR(1 downto 0); + -- finalizer end status + ready : out STD_LOGIC; + -- control for multiplier + modMultStart : out STD_LOGIC; + modMultReady : in STD_LOGIC; + -- control for memory and registers + addr_dataA : out STD_LOGIC_VECTOR(3 downto 0); + addr_dataB : out STD_LOGIC_VECTOR(3 downto 0); + regData_EnA : out STD_LOGIC_vector(0 downto 0); + regData_EnB : out STD_LOGIC_vector(0 downto 0); + regData_EnC : out STD_LOGIC; + regData_EnExponent : out STD_LOGIC; + ExponentData : in STD_LOGIC_VECTOR(word_size - 1 downto 0); + memory_reset : out std_logic + ); +end ModExpSM; + +architecture Behavioral of ModExpSM is + +-- Enable signals for registers and block memory +signal regDataEnA : STD_LOGIC_vector(0 downto 0); +signal regDataEnB : STD_LOGIC_vector(0 downto 0); +signal regDataEnC : STD_LOGIC; +signal regDataEnD2 : STD_LOGIC; + +-- states data +signal state : exponentiator_states; +signal next_state : exponentiator_states; + +-- addres data for block memory ''registers'' +signal addr_reg_A : STD_LOGIC_VECTOR(3 downto 0); +signal addr_reg_B : STD_LOGIC_VECTOR(3 downto 0); + +-- signal informing about first exponentiation in given word +signal first_exp : STD_LOGIC; + +-- signal for counting the iterations during exponentiation +signal position_counter : std_logic_vector(word_binary downto 0); + +begin + -- signals assigment + regData_EnA <= regDataEnA; + regData_EnB <= regDataEnB; + regData_EnC <= regDataEnC; + regData_EnExponent <= regDataEnD2; + addr_dataA <= addr_reg_A; + addr_dataB <= addr_reg_B; + + -- State machine process + SM : process(data_in_ready, exp_ctrl, modMultReady, state, position_counter) + begin + case state is + when FIRST_RUN => + -- Preparing the core before the exponentiation + in_mux_control <= "10"; + ready <= '0'; + modMultStart <= '0'; + regDataEnA <= "0"; + regDataEnB <= "0"; + regDataEnC <= '0'; + regDataEnD2 <= '0'; + addr_reg_A <= addr_unused; + addr_reg_B <= addr_unused; + first_exp <= '1'; + next_state <= NOP; + -- ''No operation'' during waiting for the command and suitable data + when NOP => + in_mux_control <= "11"; + ready <= '0'; + modMultStart <= '0'; + first_exp <= '1'; + regDataEnA <= "1"; + regDataEnB <= "1"; + regDataEnC <= '0'; + regDataEnD2 <= '0'; + -- Read base + if (exp_ctrl = mn_read_base) and (data_in_ready = '1') then + addr_reg_A <= addr_base; + addr_reg_B <= addr_base; + next_state <= READ_DATA_BASE; + -- Read modulus + elsif (exp_ctrl = mn_read_modulus) and (data_in_ready = '1') then + regDataEnC <= '1'; + addr_reg_A <= addr_modulus; + addr_reg_B <= addr_modulus; + next_state <= READ_DATA_MODULUS; + -- Read exponent + elsif (exp_ctrl = mn_read_exponent) and (data_in_ready = '1') then + regDataEnD2 <= '1'; + addr_reg_A <= addr_exponent; + addr_reg_B <= addr_exponent; + next_state <= READ_DATA_EXPONENT; + -- Read residuum + elsif (exp_ctrl = mn_read_residuum) and (data_in_ready = '1') then + addr_reg_A <= addr_residuum; + addr_reg_B <= addr_residuum; + next_state <= READ_DATA_RESIDUUM; + -- Read power + elsif (exp_ctrl = mn_count_power) then + in_mux_control <= "01"; + addr_reg_A <= addr_one; + addr_reg_B <= addr_one; + next_state <= COUNT_POWER; + -- Prepare the exponentiator for the new data + -- i.e. wrong data was readed first. More important + -- prepare is after the exponentiation (SHOW_RESULT) + elsif (exp_ctrl = mn_prepare_for_data) then + addr_reg_A <= addr_unused; + addr_reg_B <= addr_unused; + regDataEnA <= "0"; + regDataEnB <= "0"; + regDataEnC <= '0'; + regDataEnD2 <= '0'; + next_state <= FIRST_RUN; + -- in case of unpredicted ''command'' appear + else + addr_reg_A <= addr_unused; + addr_reg_B <= addr_unused; + regDataEnA <= "0"; + regDataEnB <= "0"; + regDataEnC <= '0'; + regDataEnD2 <= '0'; + next_state <= NOP; + end if; + -- ''READ'' states differs only by the addres under + -- which the data are written. + -- State for reading base of the exponentiation + when READ_DATA_BASE => + in_mux_control <= "11"; + ready <= '0'; + modMultStart <= '0'; + addr_reg_A <= addr_base; + addr_reg_B <= addr_base; + regDataEnA <= "1"; + regDataEnB <= "1"; + regDataEnC <= '0'; + regDataEnD2 <= '0'; + next_state <= NOP; + first_exp <= '1'; + -- State for reading the modulus + when READ_DATA_MODULUS => + in_mux_control <= "11"; + ready <= '0'; + modMultStart <= '0'; + addr_reg_A <= addr_modulus; + addr_reg_B <= addr_modulus; + regDataEnA <= "1"; + regDataEnB <= "1"; + regDataEnC <= '1'; + regDataEnD2 <= '0'; + next_state <= NOP; + first_exp <= '1'; + -- State for reading the exponent + when READ_DATA_EXPONENT => + in_mux_control <= "11"; + ready <= '0'; + modMultStart <= '0'; + addr_reg_A <= addr_exponent; + addr_reg_B <= addr_exponent; + regDataEnA <= "1"; + regDataEnB <= "1"; + regDataEnC <= '0'; + regDataEnD2 <= '1'; + next_state <= NOP; + first_exp <= '1'; + -- State for reading the residuum + when READ_DATA_RESIDUUM => + in_mux_control <= "11"; + ready <= '0'; + modMultStart <= '0'; + addr_reg_A <= addr_residuum; + addr_reg_B <= addr_residuum; + regDataEnA <= "1"; + regDataEnB <= "1"; + regDataEnC <= '0'; + regDataEnD2 <= '0'; + next_state <= NOP; + first_exp <= '1'; + -- State for preparing the system for the exponentiation + -- First pre computed value ''Z'' - prepare data + when COUNT_POWER => + in_mux_control <= "10"; + ready <= '0'; + modMultStart <= '0'; + regDataEnA <= "0"; + regDataEnB <= "0"; + regDataEnC <= '0'; + regDataEnD2 <= '0'; + addr_reg_A <= addr_one; + addr_reg_B <= addr_residuum; + first_exp <= '1'; + next_state <= EXP_Z; + -- ''Z'' multiplying - in case if it is first computation or no + -- system behaves a little bit different + when EXP_Z => + regDataEnC <= '0'; + regDataEnD2 <= '0'; + regDataEnD2 <= '0'; + ready <= '0'; + in_mux_control <= "10"; + modMultStart <= '1'; + -- If end of multiplying + if (modMultReady = '1') then + addr_reg_A <= addr_z; + addr_reg_B <= addr_z; + regDataEnA <= "1"; + regDataEnB <= "1"; + if (first_exp = '1') then + first_exp <= '1'; + else + first_exp <= '0'; + end if; + next_state <= SAVE_EXP_Z; + else + -- During first exponentiation it is ''Z precomputing'' + if (first_exp = '1') then + first_exp <= '1'; + addr_reg_A <= addr_one; + addr_reg_B <= addr_residuum; + -- in another case computing related with the algorithm + else + first_exp <= '0'; + if (ExponentData(conv_integer(position_counter)) = '1') then + addr_reg_A <= addr_z; + addr_reg_B <= addr_p; + else + addr_reg_A <= addr_p; + addr_reg_B <= addr_p; + end if; + end if; + regDataEnA <= "0"; + regDataEnB <= "0"; + next_state <= EXP_Z; + end if; + -- Svaing the ''Z'' calculation result + when SAVE_EXP_Z => + modMultStart <= '0'; + ready <= '0'; + in_mux_control <= "10"; + regDataEnA <= "0"; + regDataEnB <= "0"; + regDataEnC <= '0'; + regDataEnD2 <= '0'; + -- Preparing for the ''P'' precalculation in case first + -- calculation of the exponentiation + if (first_exp = '1') then + first_exp <= '1'; + addr_reg_A <= addr_base; + addr_reg_B <= addr_residuum; + next_state <= EXP_P; + -- In another case ''P'' square is performed + else + first_exp <= '0'; + addr_reg_A <= addr_p; + addr_reg_B <= addr_p; + next_state <= EXP_P; + end if; + -- ''P'' multiplying - in case if it is first computation or no + -- system behaves a little bit different + when EXP_P => + modMultStart <= '1'; + ready <= '0'; + in_mux_control <= "10"; + regDataEnC <= '0'; + regDataEnD2 <= '0'; + -- If end of multiplying + if (modMultReady = '1') then + addr_reg_A <= addr_p; + addr_reg_B <= addr_p; + regDataEnA <= "1"; + regDataEnB <= "1"; + if (first_exp = '1') then + first_exp <= '1'; + else + first_exp <= '0'; + end if; + next_state <= SAVE_EXP_P; + else + -- During first exponentiation it is ''P precomputing'' + if (first_exp = '1') then + first_exp <= '1'; + addr_reg_A <= addr_base; + addr_reg_B <= addr_residuum; + -- in another case computing related with the algorithm + else + first_exp <= '0'; + addr_reg_A <= addr_p; + addr_reg_B <= addr_p; + end if; + regDataEnA <= "0"; + regDataEnB <= "0"; + next_state <= EXP_P; + end if; + -- Svaing the ''P'' calculation result + when SAVE_EXP_P => + ready <= '0'; + modMultStart <= '0'; + in_mux_control <= "10"; + regDataEnA <= "0"; + regDataEnB <= "0"; + regDataEnC <= '0'; + regDataEnD2 <= '0'; + addr_reg_A <= addr_p; + addr_reg_B <= addr_p; + first_exp <= '0'; + next_state <= EXP_CONTROL; + -- State controlling the exponentiation process + -- related to compute ''Z'' or ''P'' element + when EXP_CONTROL => + ready <= '0'; + modMultStart <= '0'; + in_mux_control <= "10"; + regDataEnA <= "0"; + regDataEnB <= "0"; + regDataEnC <= '0'; + regDataEnD2 <= '0'; + -- Checking if it was last exponentiation (if yes + -- post computing stage is performed) + -- modify for change key size by properties + -- (historical remark) + if (position_counter(word_binary - 1) = '1') then + addr_reg_A <= addr_one; + addr_reg_B <= addr_z; + next_state <= EXP_END; + -- in another case algorithm 'stage' checking is made + else + if (ExponentData(conv_integer(position_counter)) = '1') then + addr_reg_A <= addr_z; + addr_reg_B <= addr_p; + next_state <= EXP_Z; + else + addr_reg_A <= addr_p; + addr_reg_B <= addr_p; + next_state <= EXP_P; + end if; + end if; + first_exp <= '0'; + -- Algorithm ''post computing'' + when EXP_END => + modMultStart <= '1'; + ready <= '0'; + in_mux_control <= "10"; + addr_reg_A <= addr_one; + addr_reg_B <= addr_z; + -- if end of ''post computing'' multiplying + -- save result + if (modMultReady = '1') then + addr_reg_A <= addr_power; + addr_reg_B <= addr_power; + regDataEnA <= "1"; + regDataEnB <= "1"; + regDataEnC <= '0'; + regDataEnD2 <= '0'; + next_state <= SAVE_EXP_MULT; + -- in another case ''wait'' for the end + else + regDataEnA <= "0"; + regDataEnB <= "0"; + regDataEnC <= '0'; + regDataEnD2 <= '0'; + next_state <= EXP_END; + end if; + first_exp <= '0'; + -- save step + when SAVE_EXP_MULT => + in_mux_control <= "10"; + modMultStart <= '0'; + ready <= '0'; + addr_reg_A <= addr_power; + addr_reg_B <= addr_power; + regDataEnA <= "1"; + regDataEnB <= "1"; + regDataEnC <= '0'; + regDataEnD2 <= '0'; + first_exp <= '1'; + next_state <= INFO_RESULT; + -- Stage informing ''the world'' about end of + -- exponentiation + when INFO_RESULT => + modMultStart <= '0'; + in_mux_control <= "10"; + ready <= '1'; + addr_reg_A <= addr_power; + addr_reg_B <= addr_power; + regDataEnA <= "0"; + regDataEnB <= "0"; + regDataEnC <= '0'; + regDataEnD2 <= '0'; + if (exp_ctrl = mn_show_result) then + next_state <= SHOW_RESULT; + else + next_state <= INFO_RESULT; + end if; + first_exp <= '1'; + -- Show result + when SHOW_RESULT => + ready <= '1'; + in_mux_control <= "10"; + modMultStart <= '0'; + addr_reg_A <= addr_power; + addr_reg_B <= addr_power; + regDataEnA <= "0"; + regDataEnB <= "0"; + regDataEnC <= '0'; + regDataEnD2 <= '0'; + -- Here we are waiting until ''prepare data'' command + -- appears + if (exp_ctrl = mn_prepare_for_data) then + next_state <= FIRST_RUN; + else + next_state <= SHOW_RESULT; + end if; + first_exp <= '1'; + end case; + end process SM; + + -- Process resetting the block memory and registers before each exponentiation + memory_reset_proc : process(clk, reset, state) + begin + if (reset = '1') then + memory_reset <= '1'; + elsif (clk = '1' and clk'Event) then + if (state = FIRST_RUN) then + memory_reset <= '1'; + else + memory_reset <= '0'; + end if; + end if; + end process memory_reset_proc; + + -- State change process + state_modifier : process (clk, reset) + begin + if (reset = '1') then + state <= FIRST_RUN; + elsif (clk = '1' and clk'Event) then + state <= next_state; + end if; + end process state_modifier; + + -- Counter process for the control of the exponentiation number iteration + counter_modifier : process (state, clk, reset) + begin + if (clk = '1' and clk'Event) then + if (reset = '1') then + position_counter <= (others => '1'); + elsif (state = SAVE_EXP_P) then + position_counter <= position_counter + 1; + elsif (state = EXP_END) then + position_counter <= (others => '1'); + else + position_counter <= position_counter; + end if; + end if; + end process counter_modifier; + +end Behavioral; \ No newline at end of file Index: trunk/rtl/vhdl/mod_exp/ModExp.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/ModExp.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/ModExp.vhd (revision 5) @@ -0,0 +1,287 @@ +----------------------------------------------------------------------- +---- ---- +---- Montgomery modular multiplier and exponentiator ---- +---- ---- +---- This file is part of the Montgomery modular multiplier ---- +---- and exponentiator project ---- +---- http://opencores.org/project,mod_mult_exp ---- +---- ---- +---- Description: ---- +---- Montgomery modular exponentiator main module. It combines ---- +---- all subomponents. It takes four numbers as the input: ---- +---- base, power, modulus and Montgomery residuum ---- +---- (2^(2*word_length) mod N) and results the modular ---- +---- exponentiation A^B mod M. ---- +---- In fact input data are read through one input controlled by ---- +---- the ctrl input. ---- +---- To Do: ---- +---- ---- +---- Author(s): ---- +---- - Krzysztof Gajewski, gajos@opencores.org ---- +---- k.gajewski@gmail.com ---- +---- ---- +----------------------------------------------------------------------- +---- ---- +---- Copyright (C) 2014 Authors and OPENCORES.ORG ---- +---- ---- +---- 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.opencores.org/lgpl.shtml ---- +---- ---- +----------------------------------------------------------------------- +library IEEE; +use work.properties.ALL; +use IEEE.STD_LOGIC_1164.ALL; + +-- Uncomment the following library declaration if using +-- arithmetic functions with Signed or Unsigned values +--use IEEE.NUMERIC_STD.ALL; + +-- Uncomment the following library declaration if instantiating +-- any Xilinx primitives in this code. +--library UNISIM; +--use UNISIM.VComponents.all; + +entity ModExp is + generic ( + word_size : integer := WORD_LENGTH; + word_binary : integer := WORD_INTEGER + ); + Port ( + input : in STD_LOGIC_VECTOR(word_size - 1 downto 0); + ctrl : in STD_LOGIC_VECTOR(2 downto 0); + clk : in STD_LOGIC; + reset : in STD_LOGIC; + data_in_ready : in STD_LOGIC; + ready : out STD_LOGIC; + output : out STD_LOGIC_VECTOR(word_size - 1 downto 0) + ); +end ModExp; + +architecture Behavioral of ModExp is + +-- Montgomery modular multiplier component +component ModularMultiplierIterative is + generic ( + word_size : integer := WORD_LENGTH + ); + port ( + A : in STD_LOGIC_VECTOR(word_size - 1 downto 0); -- multiplicand + B : in STD_LOGIC_VECTOR(word_size - 1 downto 0); -- multiplier + M : in STD_LOGIC_VECTOR(word_size - 1 downto 0); -- modulus + start : in STD_LOGIC; + product : out STD_LOGIC_VECTOR(word_size - 1 downto 0); -- product + ready : out STD_LOGIC; + clk : in STD_LOGIC + ); +end component ModularMultiplierIterative; + +-- Block memory component generated through ISE +-- It is used like multiple cell register +COMPONENT blockMemory + PORT ( + clka : in STD_LOGIC; + rsta : in STD_LOGIC; + wea : in STD_LOGIC_VECTOR(0 DOWNTO 0); + addra : in STD_LOGIC_VECTOR(3 DOWNTO 0); + dina : in STD_LOGIC_VECTOR(word_size - 1 DOWNTO 0); + douta : out STD_LOGIC_VECTOR(word_size - 1 DOWNTO 0) + ); +END COMPONENT; + +-- Register +component Reg is + generic( + word_size : integer := WORD_LENGTH + ); + port( + input : in STD_LOGIC_VECTOR(word_size - 1 downto 0); + output : out STD_LOGIC_VECTOR(word_size - 1 downto 0); + enable : in STD_LOGIC; + clk : in STD_LOGIC; + reset : in STD_LOGIC + ); +end component Reg; + +-- Multiplexer +component MontMult4inMux is + generic ( + word_size : integer := WORD_LENGTH - 1 + ); + port ( + ctrl : in STD_LOGIC_VECTOR(1 downto 0); + zero : in STD_LOGIC_VECTOR(word_size downto 0); + M : in STD_LOGIC_VECTOR(word_size downto 0); + Y : in STD_LOGIC_VECTOR(word_size downto 0); + YplusM : in STD_LOGIC_VECTOR(word_size downto 0); + output : out STD_LOGIC_VECTOR(word_size downto 0) + ); +end component MontMult4inMux; + +-- State machine +component ModExpSM is + generic( + word_size : integer := WORD_LENGTH; + word_binary : integer := WORD_INTEGER + ); + port ( + data_in_ready : in STD_LOGIC; + clk : in STD_LOGIC; + exp_ctrl : in STD_LOGIC_VECTOR(2 downto 0); + reset : in STD_LOGIC; + in_mux_control : out STD_LOGIC_VECTOR(1 downto 0); + -- finalizer end status + ready : out STD_LOGIC; + -- control for multiplier + modMultStart : out STD_LOGIC; + modMultReady : in STD_LOGIC; + -- control for memory and registers + addr_dataA : out STD_LOGIC_VECTOR(3 downto 0); + addr_dataB : out STD_LOGIC_VECTOR(3 downto 0); + regData_EnA : out STD_LOGIC_VECTOR(0 downto 0); + regData_EnB : out STD_LOGIC_VECTOR(0 downto 0); + regData_EnC : out STD_LOGIC; + regData_EnExponent : out STD_LOGIC; + ExponentData : in STD_LOGIC_VECTOR(word_size - 1 downto 0); + memory_reset : out STD_LOGIC + ); +end component ModExpSM; + +-- data registers signals +signal addr_dataA : STD_LOGIC_VECTOR(3 downto 0); +signal addr_dataB : STD_LOGIC_VECTOR(3 downto 0); + +signal memDataLoadA : STD_LOGIC_VECTOR(0 downto 0); +signal memDataLoadB : STD_LOGIC_VECTOR(0 downto 0); +signal memDataLoadC : STD_LOGIC; +signal memDataLoadExponent : STD_LOGIC; + +signal memDataA : STD_LOGIC_VECTOR(word_size - 1 downto 0); +signal memDataB : STD_LOGIC_VECTOR(word_size - 1 downto 0); +signal memDataC : STD_LOGIC_VECTOR(word_size - 1 downto 0); +signal memDataExponent : STD_LOGIC_VECTOR(word_size - 1 downto 0); +signal memoryIn : STD_LOGIC_VECTOR(word_size - 1 downto 0); + +signal in_mux_control : STD_LOGIC_VECTOR(1 downto 0); + +-- signal for multiplier +signal multStart : STD_LOGIC; +signal multReady : STD_LOGIC; +signal modMultToBuffer : STD_LOGIC_VECTOR(word_size - 1 downto 0); + +signal zero : STD_LOGIC_VECTOR(word_size - 1 downto 0) := (others => '0'); +signal one : STD_LOGIC_VECTOR(word_size - 1 downto 0) := (0 => '1', others => '0'); + +signal memory_reset : STD_LOGIC; + +begin + -- connections between components + zero <= (others => '0'); + one <= (0 => '1', others => '0'); + + -- Montgomery modular multiplier component + modMult : ModularMultiplierIterative + port map ( + A => memDataA, + B => memDataB, + M => memDataC, + start => multStart, + product => modMultToBuffer, + ready => multReady, + clk => clk + ); + + -- Multiplexer + mux : MontMult4inMux + port map ( + ctrl => in_mux_control, + zero => zero, + M => one, + Y => modMultToBuffer, + YplusM => input, + output => memoryIn + ); + + -- Block memory for the first input of the multiplier + memoryA : blockMemory + port map ( + clka => clk, + rsta => memory_reset, + wea => memDataLoadA, + addra => addr_dataA, + dina => memoryIn, + douta => memDataA + ); + + -- Block memory for the second input of the multiplier + memoryB : blockMemory + port map ( + clka => clk, + rsta => memory_reset, + wea => memDataLoadB, + addra => addr_dataB, + dina => memoryIn, + douta => memDataB + ); + + -- Register for the modulus for the multiplier + memoryModulus : Reg + port map ( + input => memoryIn, + output => memDataC, + enable => memDataLoadC, + clk => clk, + reset => memory_reset + ); + + -- Register for the exponent - it feeds also the state machine for the control of the exponentiation process + memoryExponent : Reg + port map ( + input => memoryIn, + output => memDataExponent, + enable => memDataLoadExponent, + clk => clk, + reset => memory_reset + ); + + -- State machine of the Montgomery modular exponentiator + stateMachine : ModExpSM + port map( + data_in_ready => data_in_ready, + clk => clk, + exp_ctrl => ctrl, + reset => reset, + in_mux_control => in_mux_control, + ready => ready, + modMultStart => multStart, + modMultReady => multReady, + addr_dataA => addr_dataA, + addr_dataB => addr_dataB, + regData_EnA => memDataLoadA, + regData_EnB => memDataLoadB, + regData_EnC => memDataLoadC, + regData_EnExponent => memDataLoadExponent, + ExponentData => memDataExponent, + memory_reset => memory_reset + ); + + output <= memDataA; + +end Behavioral; \ No newline at end of file Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory_xmdf.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory_xmdf.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory_xmdf.tcl (revision 5) @@ -0,0 +1,259 @@ +# The package naming convention is _xmdf +package provide blockMemory_xmdf 1.0 + +# This includes some utilities that support common XMDF operations +package require utilities_xmdf + +# Define a namespace for this package. The name of the name space +# is _xmdf +namespace eval ::blockMemory_xmdf { +# Use this to define any statics +} + +# Function called by client to rebuild the params and port arrays +# Optional when the use context does not require the param or ports +# arrays to be available. +proc ::blockMemory_xmdf::xmdfInit { instance } { +# Variable containing name of library into which module is compiled +# Recommendation: +# Required +utilities_xmdf::xmdfSetData $instance Module Attributes Name blockMemory +} +# ::blockMemory_xmdf::xmdfInit + +# Function called by client to fill in all the xmdf* data variables +# based on the current settings of the parameters +proc ::blockMemory_xmdf::xmdfApplyParams { instance } { + +set fcount 0 +# Array containing libraries that are assumed to exist +# Examples include unisim and xilinxcorelib +# Optional +# In this example, we assume that the unisim library will +# be available to the simulation and synthesis tool +utilities_xmdf::xmdfSetData $instance FileSet $fcount type logical_library +utilities_xmdf::xmdfSetData $instance FileSet $fcount logical_library unisim +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/blk_mem_gen_v7_1_readme.txt +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/doc/blk_mem_gen_ds512.pdf +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/doc/blk_mem_gen_v7_1_vinfo.html +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/example_design/blockMemory_exdes.ucf +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/example_design/blockMemory_exdes.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/example_design/blockMemory_exdes.xdc +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/example_design/blockMemory_prod.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/implement.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/implement.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/planAhead_ise.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/planAhead_ise.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/planAhead_ise.tcl +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/planAhead_rdn.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/planAhead_rdn.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/planAhead_rdn.tcl +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/xst.prj +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/implement/xst.scr +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/addr_gen.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/blockMemory_synth.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/blockMemory_tb.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/bmg_stim_gen.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/bmg_tb_pkg.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/checker.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/data_gen.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/simcmds.tcl +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/simulate_isim.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/simulate_mti.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/simulate_mti.do +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/simulate_mti.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/simulate_ncsim.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/simulate_vcs.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/ucli_commands.key +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/vcs_session.tcl +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/wave_mti.do +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/functional/wave_ncsim.sv +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/random.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/simcmds.tcl +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/simulate_isim.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/simulate_mti.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/simulate_mti.do +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/simulate_mti.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/simulate_ncsim.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/simulate_vcs.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/ucli_commands.key +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/vcs_session.tcl +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/wave_mti.do +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory/simulation/timing/wave_ncsim.sv +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory.asy +utilities_xmdf::xmdfSetData $instance FileSet $fcount type asy +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory.ngc +utilities_xmdf::xmdfSetData $instance FileSet $fcount type ngc +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type vhdl +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory.vho +utilities_xmdf::xmdfSetData $instance FileSet $fcount type vhdl_template +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory.xco +utilities_xmdf::xmdfSetData $instance FileSet $fcount type coregen_ip +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blockMemory_xmdf.tcl +utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path summary.log +utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount associated_module blockMemory +incr fcount + +} + +# ::gen_comp_name_xmdf::xmdfApplyParams Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/example_design/blockMemory_exdes.ucf =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/example_design/blockMemory_exdes.ucf (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/example_design/blockMemory_exdes.ucf (revision 5) @@ -0,0 +1,57 @@ +################################################################################ +# +# (c) Copyright 2002 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +# +################################################################################ + +# Tx Core Period Constraint. This constraint can be modified, and is +# valid as long as it is met after place and route. +NET "CLKA" TNM_NET = "CLKA"; + +TIMESPEC "TS_CLKA" = PERIOD "CLKA" 25 MHZ; + +################################################################################ Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/example_design/blockMemory_prod.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/example_design/blockMemory_prod.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/example_design/blockMemory_prod.vhd (revision 5) @@ -0,0 +1,270 @@ + + + + + + + + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7.1 Core - Top-level wrapper +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006-2011 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. +-- +-------------------------------------------------------------------------------- +-- +-- Filename: blockMemory_prod.vhd +-- +-- Description: +-- This is the top-level BMG wrapper (over BMG core). +-- +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: August 31, 2005 - First Release +-------------------------------------------------------------------------------- +-- +-- Configured Core Parameter Values: +-- (Refer to the SIM Parameters table in the datasheet for more information on +-- the these parameters.) +-- C_FAMILY : spartan3e +-- C_XDEVICEFAMILY : spartan3e +-- C_INTERFACE_TYPE : 0 +-- C_ENABLE_32BIT_ADDRESS : 0 +-- C_AXI_TYPE : 1 +-- C_AXI_SLAVE_TYPE : 0 +-- C_AXI_ID_WIDTH : 4 +-- C_MEM_TYPE : 0 +-- C_BYTE_SIZE : 9 +-- C_ALGORITHM : 0 +-- C_PRIM_TYPE : 6 +-- C_LOAD_INIT_FILE : 0 +-- C_INIT_FILE_NAME : no_coe_file_loaded +-- C_USE_DEFAULT_DATA : 0 +-- C_DEFAULT_DATA : 0 +-- C_RST_TYPE : SYNC +-- C_HAS_RSTA : 1 +-- C_RST_PRIORITY_A : CE +-- C_RSTRAM_A : 0 +-- C_INITA_VAL : 0 +-- C_HAS_ENA : 0 +-- C_HAS_REGCEA : 0 +-- C_USE_BYTE_WEA : 0 +-- C_WEA_WIDTH : 1 +-- C_WRITE_MODE_A : READ_FIRST +-- C_WRITE_WIDTH_A : 64 +-- C_READ_WIDTH_A : 64 +-- C_WRITE_DEPTH_A : 16 +-- C_READ_DEPTH_A : 16 +-- C_ADDRA_WIDTH : 4 +-- C_HAS_RSTB : 0 +-- C_RST_PRIORITY_B : CE +-- C_RSTRAM_B : 0 +-- C_INITB_VAL : 0 +-- C_HAS_ENB : 0 +-- C_HAS_REGCEB : 0 +-- C_USE_BYTE_WEB : 0 +-- C_WEB_WIDTH : 1 +-- C_WRITE_MODE_B : WRITE_FIRST +-- C_WRITE_WIDTH_B : 64 +-- C_READ_WIDTH_B : 64 +-- C_WRITE_DEPTH_B : 16 +-- C_READ_DEPTH_B : 16 +-- C_ADDRB_WIDTH : 4 +-- C_HAS_MEM_OUTPUT_REGS_A : 0 +-- C_HAS_MEM_OUTPUT_REGS_B : 0 +-- C_HAS_MUX_OUTPUT_REGS_A : 0 +-- C_HAS_MUX_OUTPUT_REGS_B : 0 +-- C_HAS_SOFTECC_INPUT_REGS_A : 0 +-- C_HAS_SOFTECC_OUTPUT_REGS_B : 0 +-- C_MUX_PIPELINE_STAGES : 0 +-- C_USE_ECC : 0 +-- C_USE_SOFTECC : 0 +-- C_HAS_INJECTERR : 0 +-- C_SIM_COLLISION_CHECK : ALL +-- C_COMMON_CLK : 0 +-- C_DISABLE_WARN_BHV_COLL : 0 +-- C_DISABLE_WARN_BHV_RANGE : 0 + +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + +LIBRARY UNISIM; +USE UNISIM.VCOMPONENTS.ALL; + +-------------------------------------------------------------------------------- +-- Entity Declaration +-------------------------------------------------------------------------------- +ENTITY blockMemory_prod IS + PORT ( + --Port A + CLKA : IN STD_LOGIC; + RSTA : IN STD_LOGIC; --opt port + ENA : IN STD_LOGIC; --optional port + REGCEA : IN STD_LOGIC; --optional port + WEA : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + ADDRA : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + DINA : IN STD_LOGIC_VECTOR(63 DOWNTO 0); + DOUTA : OUT STD_LOGIC_VECTOR(63 DOWNTO 0); + + --Port B + CLKB : IN STD_LOGIC; + RSTB : IN STD_LOGIC; --opt port + ENB : IN STD_LOGIC; --optional port + REGCEB : IN STD_LOGIC; --optional port + WEB : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + ADDRB : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + DINB : IN STD_LOGIC_VECTOR(63 DOWNTO 0); + DOUTB : OUT STD_LOGIC_VECTOR(63 DOWNTO 0); + + --ECC + INJECTSBITERR : IN STD_LOGIC; --optional port + INJECTDBITERR : IN STD_LOGIC; --optional port + SBITERR : OUT STD_LOGIC; --optional port + DBITERR : OUT STD_LOGIC; --optional port + RDADDRECC : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --optional port + -- AXI BMG Input and Output Port Declarations + + -- AXI Global Signals + S_ACLK : IN STD_LOGIC; + S_AXI_AWID : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + S_AXI_AWADDR : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + S_AXI_AWLEN : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + S_AXI_AWSIZE : IN STD_LOGIC_VECTOR(2 DOWNTO 0); + S_AXI_AWBURST : IN STD_LOGIC_VECTOR(1 DOWNTO 0); + S_AXI_AWVALID : IN STD_LOGIC; + S_AXI_AWREADY : OUT STD_LOGIC; + S_AXI_WDATA : IN STD_LOGIC_VECTOR(63 DOWNTO 0); + S_AXI_WSTRB : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + S_AXI_WLAST : IN STD_LOGIC; + S_AXI_WVALID : IN STD_LOGIC; + S_AXI_WREADY : OUT STD_LOGIC; + S_AXI_BID : OUT STD_LOGIC_VECTOR(3 DOWNTO 0):= (OTHERS => '0'); + S_AXI_BRESP : OUT STD_LOGIC_VECTOR(1 DOWNTO 0); + S_AXI_BVALID : OUT STD_LOGIC; + S_AXI_BREADY : IN STD_LOGIC; + + -- AXI Full/Lite Slave Read (Write side) + S_AXI_ARID : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + S_AXI_ARADDR : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + S_AXI_ARLEN : IN STD_LOGIC_VECTOR(7 DOWNTO 0); + S_AXI_ARSIZE : IN STD_LOGIC_VECTOR(2 DOWNTO 0); + S_AXI_ARBURST : IN STD_LOGIC_VECTOR(1 DOWNTO 0); + S_AXI_ARVALID : IN STD_LOGIC; + S_AXI_ARREADY : OUT STD_LOGIC; + S_AXI_RID : OUT STD_LOGIC_VECTOR(3 DOWNTO 0):= (OTHERS => '0'); + S_AXI_RDATA : OUT STD_LOGIC_VECTOR(63 DOWNTO 0); + S_AXI_RRESP : OUT STD_LOGIC_VECTOR(1 DOWNTO 0); + S_AXI_RLAST : OUT STD_LOGIC; + S_AXI_RVALID : OUT STD_LOGIC; + S_AXI_RREADY : IN STD_LOGIC; + + -- AXI Full/Lite Sideband Signals + S_AXI_INJECTSBITERR : IN STD_LOGIC; + S_AXI_INJECTDBITERR : IN STD_LOGIC; + S_AXI_SBITERR : OUT STD_LOGIC; + S_AXI_DBITERR : OUT STD_LOGIC; + S_AXI_RDADDRECC : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); + S_ARESETN : IN STD_LOGIC + + + ); + +END blockMemory_prod; + + +ARCHITECTURE xilinx OF blockMemory_prod IS + + COMPONENT blockMemory_exdes IS + PORT ( + --Port A + RSTA : IN STD_LOGIC; --opt port + + WEA : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + ADDRA : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + + DINA : IN STD_LOGIC_VECTOR(63 DOWNTO 0); + + DOUTA : OUT STD_LOGIC_VECTOR(63 DOWNTO 0); + + CLKA : IN STD_LOGIC + + + + + ); + END COMPONENT; + +BEGIN + + bmg0 : blockMemory_exdes + PORT MAP ( + --Port A + RSTA => RSTA, + + WEA => WEA, + ADDRA => ADDRA, + + DINA => DINA, + + DOUTA => DOUTA, + + CLKA => CLKA + + + + ); +END xilinx; Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/example_design/blockMemory_exdes.xdc =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/example_design/blockMemory_exdes.xdc (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/example_design/blockMemory_exdes.xdc (revision 5) @@ -0,0 +1,54 @@ +################################################################################ +# +# (c) Copyright 2002 - 2011 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +# +################################################################################ + +# Core Period Constraint. This constraint can be modified, and is +# valid as long as it is met after place and route. +create_clock -name "TS_CLKA" -period 20.0 [ get_ports CLKA ] +################################################################################ Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/example_design/blockMemory_exdes.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/example_design/blockMemory_exdes.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/example_design/blockMemory_exdes.vhd (revision 5) @@ -0,0 +1,166 @@ + + + + + + + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7.1 Core - Top-level core wrapper +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006-2010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- +-- Filename: blockMemory_exdes.vhd +-- +-- Description: +-- This is the actual BMG core wrapper. +-- +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: August 31, 2005 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + +LIBRARY UNISIM; +USE UNISIM.VCOMPONENTS.ALL; + +-------------------------------------------------------------------------------- +-- Entity Declaration +-------------------------------------------------------------------------------- +ENTITY blockMemory_exdes IS + PORT ( + --Inputs - Port A + RSTA : IN STD_LOGIC; --opt port + + WEA : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + ADDRA : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + + DINA : IN STD_LOGIC_VECTOR(63 DOWNTO 0); + + DOUTA : OUT STD_LOGIC_VECTOR(63 DOWNTO 0); + CLKA : IN STD_LOGIC + + + ); + +END blockMemory_exdes; + + +ARCHITECTURE xilinx OF blockMemory_exdes IS + + COMPONENT BUFG IS + PORT ( + I : IN STD_ULOGIC; + O : OUT STD_ULOGIC + ); + END COMPONENT; + + COMPONENT blockMemory IS + PORT ( + --Port A + RSTA : IN STD_LOGIC; --opt port + + WEA : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + ADDRA : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + + DINA : IN STD_LOGIC_VECTOR(63 DOWNTO 0); + + DOUTA : OUT STD_LOGIC_VECTOR(63 DOWNTO 0); + + CLKA : IN STD_LOGIC + + + + ); + END COMPONENT; + + SIGNAL CLKA_buf : STD_LOGIC; + SIGNAL CLKB_buf : STD_LOGIC; + SIGNAL S_ACLK_buf : STD_LOGIC; + +BEGIN + + bufg_A : BUFG + PORT MAP ( + I => CLKA, + O => CLKA_buf + ); + + + + bmg0 : blockMemory + PORT MAP ( + --Port A + RSTA => RSTA, + + WEA => WEA, + ADDRA => ADDRA, + + DINA => DINA, + + DOUTA => DOUTA, + + CLKA => CLKA_buf + + + ); + +END xilinx; Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/example_design =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/example_design (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/example_design (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/example_design Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/random.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/random.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/random.vhd (revision 5) @@ -0,0 +1,112 @@ + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7_1 Core - Random Number Generator +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006_3010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- +-- Filename: random.vhd +-- +-- Description: +-- Random Generator +-- +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: Sep 12, 2011 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + + + + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + + +ENTITY RANDOM IS + GENERIC ( WIDTH : INTEGER := 32; + SEED : INTEGER :=2 + ); + + PORT ( + CLK : IN STD_LOGIC; + RST : IN STD_LOGIC; + EN : IN STD_LOGIC; + RANDOM_NUM : OUT STD_LOGIC_VECTOR (WIDTH-1 DOWNTO 0) --OUTPUT VECTOR + ); +END RANDOM; + +ARCHITECTURE BEHAVIORAL OF RANDOM IS +BEGIN + PROCESS(CLK) + VARIABLE RAND_TEMP : STD_LOGIC_VECTOR(WIDTH-1 DOWNTO 0):=CONV_STD_LOGIC_VECTOR(SEED,WIDTH); + VARIABLE TEMP : STD_LOGIC := '0'; + BEGIN + IF(RISING_EDGE(CLK)) THEN + IF(RST='1') THEN + RAND_TEMP := CONV_STD_LOGIC_VECTOR(SEED,WIDTH); + ELSE + IF(EN = '1') THEN + TEMP := RAND_TEMP(WIDTH-1) XOR RAND_TEMP(WIDTH-2); + RAND_TEMP(WIDTH-1 DOWNTO 1) := RAND_TEMP(WIDTH-2 DOWNTO 0); + RAND_TEMP(0) := TEMP; + END IF; + END IF; + END IF; + RANDOM_NUM <= RAND_TEMP; + END PROCESS; +END ARCHITECTURE; Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/vcs_session.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/vcs_session.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/vcs_session.tcl (revision 5) @@ -0,0 +1,83 @@ + + + + + + + + +#-------------------------------------------------------------------------------- +#-- +#-- BMG core Demo Testbench +#-- +#-------------------------------------------------------------------------------- +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +# Filename: vcs_session.tcl +# +# Description: +# This is the VCS wave form file. +# +#-------------------------------------------------------------------------------- +if { ![gui_is_db_opened -db {bmg_vcs.vpd}] } { + gui_open_db -design V1 -file bmg_vcs.vpd -nosource +} +gui_set_precision 1ps +gui_set_time_units 1ps + +gui_open_window Wave +gui_sg_create blockMemory_Group +gui_list_add_group -id Wave.1 {blockMemory_Group} + + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/status + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/RSTA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/CLKA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/ADDRA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/DINA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/WEA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/DOUTA + +gui_zoom -window Wave.1 -full Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/simcmds.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/simcmds.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/simcmds.tcl (revision 5) @@ -0,0 +1,63 @@ +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. + + + + + + + +wcfg new +isim set radix hex +wave add /blockMemory_tb/status + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/RSTA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/CLKA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/ADDRA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/DINA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/WEA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/DOUTA +run all +quit Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/simulate_mti.bat =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/simulate_mti.bat (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/simulate_mti.bat (revision 5) @@ -0,0 +1,3 @@ +#-------------------------------------------------------------------------------- + +vsim -c -do simulate_mti.do Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/wave_ncsim.sv =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/wave_ncsim.sv (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/wave_ncsim.sv (revision 5) @@ -0,0 +1,21 @@ + + + + + + + + + +window new WaveWindow -name "Waves for BMG Example Design" +waveform using "Waves for BMG Example Design" + + waveform add -signals /blockMemory_tb/status + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/RSTA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/CLKA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/ADDRA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/DINA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/WEA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/DOUTA + +console submit -using simulator -wait no "run" Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/ucli_commands.key =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/ucli_commands.key (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/ucli_commands.key (revision 5) @@ -0,0 +1,4 @@ +dump -file bmg_vcs.vpd -type VPD +dump -add blockMemory_tb +run +quit Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/simulate_ncsim.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/simulate_ncsim.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/simulate_ncsim.sh (revision 5) @@ -0,0 +1,70 @@ +#!/bin/sh +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +#-------------------------------------------------------------------------------- + + +mkdir work +echo "Compiling Core VHDL UNISIM/Behavioral model" +ncvhdl -v93 -work work ../../../blockMemory.vhd \ + ../../example_design/blockMemory_exdes.vhd + +echo "Compiling Test Bench Files" + +ncvhdl -v93 -work work ../bmg_tb_pkg.vhd +ncvhdl -v93 -work work ../random.vhd +ncvhdl -v93 -work work ../data_gen.vhd +ncvhdl -v93 -work work ../addr_gen.vhd +ncvhdl -v93 -work work ../checker.vhd +ncvhdl -v93 -work work ../bmg_stim_gen.vhd +ncvhdl -v93 -work work ../blockMemory_synth.vhd +ncvhdl -v93 -work work ../blockMemory_tb.vhd + +echo "Elaborating Design" +ncelab -access +rwc work.blockMemory_tb + +echo "Simulating Design" +ncsim -gui -input @"simvision -input wave_ncsim.sv" work.blockMemory_tb Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/simulate_mti.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/simulate_mti.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/simulate_mti.sh (revision 5) @@ -0,0 +1,3 @@ +#-------------------------------------------------------------------------------- + +vsim -c -do simulate_mti.do Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/simulate_vcs.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/simulate_vcs.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/simulate_vcs.sh (revision 5) @@ -0,0 +1,69 @@ +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +#-------------------------------------------------------------------------------- +#!/bin/sh +rm -rf simv* csrc DVEfiles AN.DB + +echo "Compiling Core VHDL UNISIM/Behavioral model" +vhdlan ../../../blockMemory.vhd +vhdlan ../../example_design/blockMemory_exdes.vhd + +echo "Compiling Test Bench Files" +vhdlan ../bmg_tb_pkg.vhd +vhdlan ../random.vhd +vhdlan ../data_gen.vhd +vhdlan ../addr_gen.vhd +vhdlan ../checker.vhd +vhdlan ../bmg_stim_gen.vhd +vhdlan ../blockMemory_synth.vhd +vhdlan ../blockMemory_tb.vhd + +echo "Elaborating Design" +vcs +vcs+lic+wait -debug blockMemory_tb + +echo "Simulating Design" +./simv -ucli -i ucli_commands.key +dve -session vcs_session.tcl Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/simulate_isim.bat =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/simulate_isim.bat (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/simulate_isim.bat (revision 5) @@ -0,0 +1,68 @@ +:: (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +:: +:: This file contains confidential and proprietary information +:: of Xilinx, Inc. and is protected under U.S. and +:: international copyright and other intellectual property +:: laws. +:: +:: DISCLAIMER +:: This disclaimer is not a license and does not grant any +:: rights to the materials distributed herewith. Except as +:: otherwise provided in a valid license issued to you by +:: Xilinx, and to the maximum extent permitted by applicable +:: law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +:: WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +:: AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +:: BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +:: INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +:: (2) Xilinx shall not be liable (whether in contract or tort, +:: including negligence, or under any other theory of +:: liability) for any loss or damage of any kind or nature +:: related to, arising under or in connection with these +:: materials, including for any direct, or any indirect, +:: special, incidental, or consequential loss or damage +:: (including loss of data, profits, goodwill, or any type of +:: loss or damage suffered as a result of any action brought +:: by a third party) even if such damage or loss was +:: reasonably foreseeable or Xilinx had been advised of the +:: possibility of the same. +:: +:: CRITICAL APPLICATIONS +:: Xilinx products are not designed or intended to be fail- +:: safe, or for use in any application requiring fail-safe +:: performance, such as life-support or safety devices or +:: systems, Class III medical devices, nuclear facilities, +:: applications related to the deployment of airbags, or any +:: other applications that could lead to death, personal +:: injury, or severe property or environmental damage +:: (individually and collectively, "Critical +:: Applications"). Customer assumes the sole risk and +:: liability of any use of Xilinx products in Critical +:: Applications, subject only to applicable laws and +:: regulations governing limitations on product liability. +:: +:: THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +:: PART OF THIS FILE AT ALL TIMES. +::-------------------------------------------------------------------------------- + + + +echo "Compiling Core VHDL UNISIM/Behavioral model" +vhpcomp -work work ..\..\..\blockMemory.vhd +vhpcomp -work work ..\..\example_design\blockMemory_exdes.vhd + +echo "Compiling Test Bench Files" + +vhpcomp -work work ..\bmg_tb_pkg.vhd +vhpcomp -work work ..\random.vhd +vhpcomp -work work ..\data_gen.vhd +vhpcomp -work work ..\addr_gen.vhd +vhpcomp -work work ..\checker.vhd +vhpcomp -work work ..\bmg_stim_gen.vhd +vhpcomp -work work ..\blockMemory_synth.vhd +vhpcomp -work work ..\blockMemory_tb.vhd + +fuse work.blockMemory_tb -L unisims -L xilinxcorelib -o blockMemory_tb.exe + + +.\blockMemory_tb.exe -gui -tclbatch simcmds.tcl Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/wave_mti.do =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/wave_mti.do (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/wave_mti.do (revision 5) @@ -0,0 +1,36 @@ + + + + + + + + +onerror {resume} +quietly WaveActivateNextPane {} 0 + + add wave -noupdate /blockMemory_tb/status + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/RSTA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/CLKA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/ADDRA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/DINA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/WEA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/DOUTA + +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {0 ps} 0} +configure wave -namecolwidth 197 +configure wave -valuecolwidth 106 +configure wave -justifyvalue left +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 1 +configure wave -griddelta 40 +configure wave -timeline 0 +configure wave -timelineunits ps +update +WaveRestoreZoom {0 ps} {9464063 ps} Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/simulate_mti.do =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/simulate_mti.do (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional/simulate_mti.do (revision 5) @@ -0,0 +1,74 @@ +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +#-------------------------------------------------------------------------------- + vlib work +vmap work work + +echo "Compiling Core VHDL UNISIM/Behavioral model" +vcom -work work ../../../blockMemory.vhd \ + ../../example_design/blockMemory_exdes.vhd + +echo "Compiling Test Bench Files" + +vcom -work work ../bmg_tb_pkg.vhd +vcom -work work ../random.vhd +vcom -work work ../data_gen.vhd +vcom -work work ../addr_gen.vhd +vcom -work work ../checker.vhd +vcom -work work ../bmg_stim_gen.vhd +vcom -work work ../blockMemory_synth.vhd +vcom -work work ../blockMemory_tb.vhd + +vsim -novopt -t ps -L XilinxCoreLib -L unisim work.blockMemory_tb + +#Disabled waveform to save the disk space +add log -r /* +#Ignore integer warnings at time 0 +set StdArithNoWarnings 1 +run 0 +set StdArithNoWarnings 0 + +run -all Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/functional Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/data_gen.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/data_gen.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/data_gen.vhd (revision 5) @@ -0,0 +1,140 @@ + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7_1 Core - Data Generator +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006_3010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- +-- Filename: data_gen.vhd +-- +-- Description: +-- Data Generator +-- +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: Sep 12, 2011 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + +LIBRARY work; +USE work.BMG_TB_PKG.ALL; + +ENTITY DATA_GEN IS + GENERIC ( DATA_GEN_WIDTH : INTEGER := 32; + DOUT_WIDTH : INTEGER := 32; + DATA_PART_CNT : INTEGER := 1; + SEED : INTEGER := 2 + ); + + PORT ( + CLK : IN STD_LOGIC; + RST : IN STD_LOGIC; + EN : IN STD_LOGIC; + DATA_OUT : OUT STD_LOGIC_VECTOR (DOUT_WIDTH-1 DOWNTO 0) --OUTPUT VECTOR + ); +END DATA_GEN; + +ARCHITECTURE DATA_GEN_ARCH OF DATA_GEN IS + CONSTANT LOOP_COUNT : INTEGER := DIVROUNDUP(DATA_GEN_WIDTH,8); + SIGNAL RAND_DATA : STD_LOGIC_VECTOR(8*LOOP_COUNT-1 DOWNTO 0); + SIGNAL LOCAL_DATA_OUT : STD_LOGIC_VECTOR(DATA_GEN_WIDTH-1 DOWNTO 0); + SIGNAL LOCAL_CNT : INTEGER :=1; + SIGNAL DATA_GEN_I : STD_LOGIC :='0'; +BEGIN + + LOCAL_DATA_OUT <= RAND_DATA(DATA_GEN_WIDTH-1 DOWNTO 0); + DATA_OUT <= LOCAL_DATA_OUT(((DOUT_WIDTH*LOCAL_CNT)-1) DOWNTO ((DOUT_WIDTH*LOCAL_CNT)-DOUT_WIDTH)); + DATA_GEN_I <= '0' WHEN (LOCAL_CNT < DATA_PART_CNT) ELSE EN; + + PROCESS(CLK) + BEGIN + IF(RISING_EDGE (CLK)) THEN + IF(EN ='1' AND (DATA_PART_CNT =1)) THEN + LOCAL_CNT <=1; + ELSIF(EN='1' AND (DATA_PART_CNT>1)) THEN + IF(LOCAL_CNT = 1) THEN + LOCAL_CNT <= LOCAL_CNT+1; + ELSIF(LOCAL_CNT < DATA_PART_CNT) THEN + LOCAL_CNT <= LOCAL_CNT+1; + ELSE + LOCAL_CNT <= 1; + END IF; + ELSE + LOCAL_CNT <= 1; + END IF; + END IF; + END PROCESS; + + RAND_GEN:FOR N IN LOOP_COUNT-1 DOWNTO 0 GENERATE + RAND_GEN_INST:ENTITY work.RANDOM + GENERIC MAP( + WIDTH => 8, + SEED => (SEED+N) + ) + PORT MAP( + CLK => CLK, + RST => RST, + EN => DATA_GEN_I, + RANDOM_NUM => RAND_DATA(8*(N+1)-1 DOWNTO 8*N) + ); + END GENERATE RAND_GEN; + +END ARCHITECTURE; + Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/addr_gen.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/addr_gen.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/addr_gen.vhd (revision 5) @@ -0,0 +1,117 @@ + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7_1 Core - Address Generator +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006_3010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- +-- Filename: addr_gen.vhd +-- +-- Description: +-- Address Generator +-- +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: Sep 12, 2011 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + +LIBRARY work; +USE work.ALL; + +ENTITY ADDR_GEN IS + GENERIC ( C_MAX_DEPTH : INTEGER := 1024 ; + RST_VALUE : STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS=> '0'); + RST_INC : INTEGER := 0); + PORT ( + CLK : IN STD_LOGIC; + RST : IN STD_LOGIC; + EN : IN STD_LOGIC; + LOAD :IN STD_LOGIC; + LOAD_VALUE : IN STD_LOGIC_VECTOR (31 DOWNTO 0) := (OTHERS => '0'); + ADDR_OUT : OUT STD_LOGIC_VECTOR (31 DOWNTO 0) --OUTPUT VECTOR + ); +END ADDR_GEN; + +ARCHITECTURE BEHAVIORAL OF ADDR_GEN IS + SIGNAL ADDR_TEMP : STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS =>'0'); +BEGIN + ADDR_OUT <= ADDR_TEMP; + PROCESS(CLK) + BEGIN + IF(RISING_EDGE(CLK)) THEN + IF(RST='1') THEN + ADDR_TEMP<= RST_VALUE + conv_std_logic_vector(RST_INC,32 ); + ELSE + IF(EN='1') THEN + IF(LOAD='1') THEN + ADDR_TEMP <=LOAD_VALUE; + ELSE + IF(ADDR_TEMP = C_MAX_DEPTH-1) THEN + ADDR_TEMP<= RST_VALUE + conv_std_logic_vector(RST_INC,32 ); + ELSE + ADDR_TEMP <= ADDR_TEMP + '1'; + END IF; + END IF; + END IF; + END IF; + END IF; + END PROCESS; +END ARCHITECTURE; Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/checker.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/checker.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/checker.vhd (revision 5) @@ -0,0 +1,161 @@ + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7_1 Core - Checker +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006_3010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- +-- Filename: checker.vhd +-- +-- Description: +-- Checker +-- +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: Sep 12, 2011 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + +LIBRARY work; +USE work.BMG_TB_PKG.ALL; + +ENTITY CHECKER IS + GENERIC ( WRITE_WIDTH : INTEGER :=32; + READ_WIDTH : INTEGER :=32 + ); + + PORT ( + CLK : IN STD_LOGIC; + RST : IN STD_LOGIC; + EN : IN STD_LOGIC; + DATA_IN : IN STD_LOGIC_VECTOR (READ_WIDTH-1 DOWNTO 0); --OUTPUT VECTOR + STATUS : OUT STD_LOGIC:= '0' + ); +END CHECKER; + +ARCHITECTURE CHECKER_ARCH OF CHECKER IS + SIGNAL EXPECTED_DATA : STD_LOGIC_VECTOR(READ_WIDTH-1 DOWNTO 0); + SIGNAL DATA_IN_R: STD_LOGIC_VECTOR(READ_WIDTH-1 DOWNTO 0); + SIGNAL EN_R : STD_LOGIC := '0'; + SIGNAL EN_2R : STD_LOGIC := '0'; +--DATA PART CNT DEFINES THE ASPECT RATIO AND GIVES THE INFO TO THE DATA GENERATOR TO PROVIDE THE DATA EITHER IN PARTS OR COMPLETE DATA IN ONE SHOT +--IF READ_WIDTH > WRITE_WIDTH DIVROUNDUP RESULTS IN '1' AND DATA GENERATOR GIVES THE DATAOUT EQUALS TO MAX OF (WRITE_WIDTH, READ_WIDTH) +--IF READ_WIDTH < WRITE-WIDTH DIVROUNDUP RESULTS IN > '1' AND DATA GENERATOR GIVES THE DATAOUT IN TERMS OF PARTS(EG 4 PARTS WHEN WRITE_WIDTH 32 AND READ WIDTH 8) + CONSTANT DATA_PART_CNT: INTEGER:= DIVROUNDUP(WRITE_WIDTH,READ_WIDTH); + CONSTANT MAX_WIDTH: INTEGER:= IF_THEN_ELSE((WRITE_WIDTH>READ_WIDTH),WRITE_WIDTH,READ_WIDTH); + SIGNAL ERR_HOLD : STD_LOGIC :='0'; + SIGNAL ERR_DET : STD_LOGIC :='0'; +BEGIN + PROCESS(CLK) + BEGIN + IF(RISING_EDGE(CLK)) THEN + IF(RST= '1') THEN + EN_R <= '0'; + EN_2R <= '0'; + DATA_IN_R <= (OTHERS=>'0'); + ELSE + EN_R <= EN; + EN_2R <= EN_R; + DATA_IN_R <= DATA_IN; + END IF; + END IF; + END PROCESS; + + EXPECTED_DATA_GEN_INST:ENTITY work.DATA_GEN + GENERIC MAP ( DATA_GEN_WIDTH =>MAX_WIDTH, + DOUT_WIDTH => READ_WIDTH, + DATA_PART_CNT => DATA_PART_CNT, + SEED => 2 + ) + PORT MAP ( + CLK => CLK, + RST => RST, + EN => EN_2R, + DATA_OUT => EXPECTED_DATA + ); + + PROCESS(CLK) + BEGIN + IF(RISING_EDGE(CLK)) THEN + IF(EN_2R='1') THEN + IF(EXPECTED_DATA = DATA_IN_R) THEN + ERR_DET<='0'; + ELSE + ERR_DET<= '1'; + END IF; + END IF; + END IF; + END PROCESS; + + PROCESS(CLK,RST) + BEGIN + IF(RST='1') THEN + ERR_HOLD <= '0'; + ELSIF(RISING_EDGE(CLK)) THEN + ERR_HOLD <= ERR_HOLD OR ERR_DET ; + END IF; + END PROCESS; + + STATUS <= ERR_HOLD; + +END ARCHITECTURE; + + + Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/vcs_session.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/vcs_session.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/vcs_session.tcl (revision 5) @@ -0,0 +1,83 @@ + + + + + + + +#-------------------------------------------------------------------------------- +#-- +#-- BMG Generator v8.4 Core Demo Testbench +#-- +#-------------------------------------------------------------------------------- +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +# Filename: vcs_session.tcl +# +# Description: +# This is the VCS wave form file. +# +#-------------------------------------------------------------------------------- + +if { ![gui_is_db_opened -db {bmg_vcs.vpd}] } { + gui_open_db -design V1 -file bmg_vcs.vpd -nosource +} +gui_set_precision 1ps +gui_set_time_units 1ps + +gui_open_window Wave +gui_sg_create blockMemory_Group +gui_list_add_group -id Wave.1 {blockMemory_Group} + + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/status + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/RSTA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/CLKA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/ADDRA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/DINA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/WEA + gui_sg_addsignal -group blockMemory_Group /blockMemory_tb/blockMemory_synth_inst/bmg_port/DOUTA + +gui_zoom -window Wave.1 -full Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/simcmds.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/simcmds.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/simcmds.tcl (revision 5) @@ -0,0 +1,63 @@ +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. + + + + + + + +wcfg new +isim set radix hex +wave add /blockMemory_tb/status + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/RSTA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/CLKA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/ADDRA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/DINA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/WEA + wave add /blockMemory_tb/blockMemory_synth_inst/BMG_PORT/DOUTA +run all +quit Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/simulate_mti.bat =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/simulate_mti.bat (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/simulate_mti.bat (revision 5) @@ -0,0 +1,3 @@ +#-------------------------------------------------------------------------------- + +vsim -c -do simulate_mti.do Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/wave_ncsim.sv =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/wave_ncsim.sv (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/wave_ncsim.sv (revision 5) @@ -0,0 +1,20 @@ + + + + + + + + +window new WaveWindow -name "Waves for BMG Example Design" +waveform using "Waves for BMG Example Design" + + + waveform add -signals /blockMemory_tb/status + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/RSTA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/CLKA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/ADDRA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/DINA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/WEA + waveform add -signals /blockMemory_tb/blockMemory_synth_inst/bmg_port/DOUTA +console submit -using simulator -wait no "run" Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/ucli_commands.key =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/ucli_commands.key (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/ucli_commands.key (revision 5) @@ -0,0 +1,4 @@ +dump -file bmg_vcs.vpd -type VPD +dump -add blockMemory_tb +run +quit Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/simulate_mti.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/simulate_mti.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/simulate_mti.sh (revision 5) @@ -0,0 +1,3 @@ +#-------------------------------------------------------------------------------- + +vsim -c -do simulate_mti.do Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/simulate_ncsim.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/simulate_ncsim.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/simulate_ncsim.sh (revision 5) @@ -0,0 +1,78 @@ +#!/bin/sh +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +set work work +#-------------------------------------------------------------------------------- +mkdir work + + +ncvhdl -v93 -work work ../../implement/results/routed.vhd + +echo "Compiling Test Bench Files" + +ncvhdl -v93 -work work ../bmg_tb_pkg.vhd +ncvhdl -v93 -work work ../random.vhd +ncvhdl -v93 -work work ../data_gen.vhd +ncvhdl -v93 -work work ../addr_gen.vhd +ncvhdl -v93 -work work ../checker.vhd +ncvhdl -v93 -work work ../bmg_stim_gen.vhd +ncvhdl -v93 -work work ../blockMemory_synth.vhd +ncvhdl -v93 -work work ../blockMemory_tb.vhd + +echo "Compiling SDF file" +ncsdfc ../../implement/results/routed.sdf -output ./routed.sdf.X + +echo "Generating SDF command file" +echo 'COMPILED_SDF_FILE = "routed.sdf.X",' > sdf.cmd +echo 'SCOPE = :blockMemory_synth_inst:BMG_PORT,' >> sdf.cmd +echo 'MTM_CONTROL = "MAXIMUM";' >> sdf.cmd + + +echo "Elaborating Design" +ncelab -access +rwc -sdf_cmd_file sdf.cmd $work.blockMemory_tb + +echo "Simulating Design" +ncsim -gui -input @"simvision -input wave_ncsim.sv" $work.blockMemory_tb Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/simulate_vcs.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/simulate_vcs.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/simulate_vcs.sh (revision 5) @@ -0,0 +1,70 @@ +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +#-------------------------------------------------------------------------------- +#!/bin/sh + +rm -rf simv* csrc DVEfiles AN.DB + +echo "Compiling Core VHDL UNISIM/Behavioral model" +vhdlan ../../implement/results/routed.vhd + +echo "Compiling Test Bench Files" +vhdlan ../bmg_tb_pkg.vhd +vhdlan ../random.vhd +vhdlan ../data_gen.vhd +vhdlan ../addr_gen.vhd +vhdlan ../checker.vhd +vhdlan ../bmg_stim_gen.vhd +vhdlan ../blockMemory_synth.vhd +vhdlan ../blockMemory_tb.vhd + + +echo "Elaborating Design" +vcs +neg_tchk -sdf max:/blockMemory_tb/blockMemory_synth_inst/bmg_port:../../implement/results/routed.sdf +vcs+lic+wait -debug blockMemory_tb + +echo "Simulating Design" +./simv -ucli -i ucli_commands.key +dve -session vcs_session.tcl Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/simulate_isim.bat =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/simulate_isim.bat (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/simulate_isim.bat (revision 5) @@ -0,0 +1,67 @@ +:: (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +:: +:: This file contains confidential and proprietary information +:: of Xilinx, Inc. and is protected under U.S. and +:: international copyright and other intellectual property +:: laws. +:: +:: DISCLAIMER +:: This disclaimer is not a license and does not grant any +:: rights to the materials distributed herewith. Except as +:: otherwise provided in a valid license issued to you by +:: Xilinx, and to the maximum extent permitted by applicable +:: law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +:: WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +:: AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +:: BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +:: INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +:: (2) Xilinx shall not be liable (whether in contract or tort, +:: including negligence, or under any other theory of +:: liability) for any loss or damage of any kind or nature +:: related to, arising under or in connection with these +:: materials, including for any direct, or any indirect, +:: special, incidental, or consequential loss or damage +:: (including loss of data, profits, goodwill, or any type of +:: loss or damage suffered as a result of any action brought +:: by a third party) even if such damage or loss was +:: reasonably foreseeable or Xilinx had been advised of the +:: possibility of the same. +:: +:: CRITICAL APPLICATIONS +:: Xilinx products are not designed or intended to be fail- +:: safe, or for use in any application requiring fail-safe +:: performance, such as life-support or safety devices or +:: systems, Class III medical devices, nuclear facilities, +:: applications related to the deployment of airbags, or any +:: other applications that could lead to death, personal +:: injury, or severe property or environmental damage +:: (individually and collectively, "Critical +:: Applications"). Customer assumes the sole risk and +:: liability of any use of Xilinx products in Critical +:: Applications, subject only to applicable laws and +:: regulations governing limitations on product liability. +:: +:: THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +:: PART OF THIS FILE AT ALL TIMES. +::-------------------------------------------------------------------------------- + + + +echo "Compiling Core VHDL UNISIM/Behavioral model" +vhpcomp -work work ..\..\implement\results\routed.vhd + +echo "Compiling Test Bench Files" + +vhpcomp -work work ..\bmg_tb_pkg.vhd +vhpcomp -work work ..\random.vhd +vhpcomp -work work ..\data_gen.vhd +vhpcomp -work work ..\addr_gen.vhd +vhpcomp -work work ..\checker.vhd +vhpcomp -work work ..\bmg_stim_gen.vhd +vhpcomp -work work ..\blockMemory_synth.vhd +vhpcomp -work work ..\blockMemory_tb.vhd + + + fuse -L simprim work.blockMemory_tb -o blockMemory_tb.exe + +.\blockMemory_tb.exe -sdftyp /blockMemory_tb/blockMemory_synth_inst/bmg_port=..\..\implement\results\routed.sdf -gui -tclbatch simcmds.tcl Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/wave_mti.do =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/wave_mti.do (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/wave_mti.do (revision 5) @@ -0,0 +1,36 @@ + + + + + + + + +onerror {resume} +quietly WaveActivateNextPane {} 0 + + + add wave -noupdate /blockMemory_tb/status + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/RSTA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/CLKA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/ADDRA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/DINA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/WEA + add wave -noupdate /blockMemory_tb/blockMemory_synth_inst/bmg_port/DOUTA +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {0 ps} 0} +configure wave -namecolwidth 150 +configure wave -valuecolwidth 100 +configure wave -justifyvalue left +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 1 +configure wave -griddelta 40 +configure wave -timeline 0 +configure wave -timelineunits ps +update +WaveRestoreZoom {0 ps} {9464063 ps} Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/simulate_mti.do =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/simulate_mti.do (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing/simulate_mti.do (revision 5) @@ -0,0 +1,75 @@ +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +set work work +#-------------------------------------------------------------------------------- + +vlib work +vmap work work + +echo "Compiling Core VHDL UNISIM/Behavioral model" +vcom -work work ../../implement/results/routed.vhd + +echo "Compiling Test Bench Files" + +vcom -work work ../bmg_tb_pkg.vhd +vcom -work work ../random.vhd +vcom -work work ../data_gen.vhd +vcom -work work ../addr_gen.vhd +vcom -work work ../checker.vhd +vcom -work work ../bmg_stim_gen.vhd +vcom -work work ../blockMemory_synth.vhd +vcom -work work ../blockMemory_tb.vhd + + vsim -novopt -t ps -L simprim +transport_int_delays -sdftyp /blockMemory_tb/blockMemory_synth_inst/bmg_port=../../implement/results/routed.sdf $work.blockMemory_tb -novopt + +#Disabled waveform to save the disk space +add log -r /* +#Ignore integer warnings at time 0 +set StdArithNoWarnings 1 +run 0 +set StdArithNoWarnings 0 + +run -all Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/timing Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/blockMemory_tb.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/blockMemory_tb.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/blockMemory_tb.vhd (revision 5) @@ -0,0 +1,129 @@ +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7_1 Core - Top File for the Example Testbench +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006_3010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- Filename: blockMemory_tb.vhd +-- Description: +-- Testbench Top +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: Sep 12, 2011 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + +LIBRARY work; +USE work.ALL; + +ENTITY blockMemory_tb IS +END ENTITY; + + +ARCHITECTURE blockMemory_tb_ARCH OF blockMemory_tb IS + SIGNAL STATUS : STD_LOGIC_VECTOR(8 DOWNTO 0); + SIGNAL CLK : STD_LOGIC := '1'; + SIGNAL RESET : STD_LOGIC; + + BEGIN + + + CLK_GEN: PROCESS BEGIN + CLK <= NOT CLK; + WAIT FOR 100 NS; + CLK <= NOT CLK; + WAIT FOR 100 NS; + END PROCESS; + + RST_GEN: PROCESS BEGIN + RESET <= '1'; + WAIT FOR 1000 NS; + RESET <= '0'; + WAIT; + END PROCESS; + + +--STOP_SIM: PROCESS BEGIN +-- WAIT FOR 200 US; -- STOP SIMULATION AFTER 1 MS +-- ASSERT FALSE +-- REPORT "END SIMULATION TIME REACHED" +-- SEVERITY FAILURE; +--END PROCESS; +-- +PROCESS BEGIN + WAIT UNTIL STATUS(8)='1'; + IF( STATUS(7 downto 0)/="0") THEN + ASSERT false + REPORT "Simulation Failed" + SEVERITY FAILURE; + ELSE + ASSERT false + REPORT "Simulation Complete" + SEVERITY FAILURE; + END IF; +END PROCESS; + + blockMemory_synth_inst:ENTITY work.blockMemory_synth + PORT MAP( + CLK_IN => CLK, + RESET_IN => RESET, + STATUS => STATUS + ); + +END ARCHITECTURE; Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/blockMemory_synth.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/blockMemory_synth.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/blockMemory_synth.vhd (revision 5) @@ -0,0 +1,289 @@ + + + + + + + + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7_1 Core - Synthesizable Testbench +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006_3010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- +-- Filename: blockMemory_synth.vhd +-- +-- Description: +-- Synthesizable Testbench +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: Sep 12, 2011 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.NUMERIC_STD.ALL; +USE IEEE.STD_LOGIC_MISC.ALL; + +LIBRARY STD; +USE STD.TEXTIO.ALL; + +--LIBRARY unisim; +--USE unisim.vcomponents.ALL; + +LIBRARY work; +USE work.ALL; +USE work.BMG_TB_PKG.ALL; + +ENTITY blockMemory_synth IS +PORT( + CLK_IN : IN STD_LOGIC; + RESET_IN : IN STD_LOGIC; + STATUS : OUT STD_LOGIC_VECTOR(8 DOWNTO 0) := (OTHERS => '0') --ERROR STATUS OUT OF FPGA + ); +END ENTITY; + +ARCHITECTURE blockMemory_synth_ARCH OF blockMemory_synth IS + + +COMPONENT blockMemory_exdes + PORT ( + --Inputs - Port A + RSTA : IN STD_LOGIC; --opt port + WEA : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + ADDRA : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + DINA : IN STD_LOGIC_VECTOR(63 DOWNTO 0); + DOUTA : OUT STD_LOGIC_VECTOR(63 DOWNTO 0); + CLKA : IN STD_LOGIC + + + ); + +END COMPONENT; + + + SIGNAL CLKA: STD_LOGIC := '0'; + SIGNAL RSTA: STD_LOGIC := '0'; + SIGNAL WEA: STD_LOGIC_VECTOR(0 DOWNTO 0) := (OTHERS => '0'); + SIGNAL WEA_R: STD_LOGIC_VECTOR(0 DOWNTO 0) := (OTHERS => '0'); + SIGNAL ADDRA: STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0'); + SIGNAL ADDRA_R: STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0'); + SIGNAL DINA: STD_LOGIC_VECTOR(63 DOWNTO 0) := (OTHERS => '0'); + SIGNAL DINA_R: STD_LOGIC_VECTOR(63 DOWNTO 0) := (OTHERS => '0'); + SIGNAL DOUTA: STD_LOGIC_VECTOR(63 DOWNTO 0); + SIGNAL CHECKER_EN : STD_LOGIC:='0'; + SIGNAL CHECKER_EN_R : STD_LOGIC:='0'; + SIGNAL STIMULUS_FLOW : STD_LOGIC_VECTOR(22 DOWNTO 0) := (OTHERS =>'0'); + SIGNAL clk_in_i: STD_LOGIC; + + SIGNAL RESET_SYNC_R1 : STD_LOGIC:='1'; + SIGNAL RESET_SYNC_R2 : STD_LOGIC:='1'; + SIGNAL RESET_SYNC_R3 : STD_LOGIC:='1'; + + SIGNAL ITER_R0 : STD_LOGIC := '0'; + SIGNAL ITER_R1 : STD_LOGIC := '0'; + SIGNAL ITER_R2 : STD_LOGIC := '0'; + + SIGNAL ISSUE_FLAG : STD_LOGIC_VECTOR(7 DOWNTO 0) := (OTHERS => '0'); + SIGNAL ISSUE_FLAG_STATUS : STD_LOGIC_VECTOR(7 DOWNTO 0) := (OTHERS => '0'); + + BEGIN + +-- clk_buf: bufg +-- PORT map( +-- i => CLK_IN, +-- o => clk_in_i +-- ); + clk_in_i <= CLK_IN; + CLKA <= clk_in_i; + + RSTA <= RESET_SYNC_R3 AFTER 50 ns; + + + PROCESS(clk_in_i) + BEGIN + IF(RISING_EDGE(clk_in_i)) THEN + RESET_SYNC_R1 <= RESET_IN; + RESET_SYNC_R2 <= RESET_SYNC_R1; + RESET_SYNC_R3 <= RESET_SYNC_R2; + END IF; + END PROCESS; + + +PROCESS(CLKA) +BEGIN + IF(RISING_EDGE(CLKA)) THEN + IF(RESET_SYNC_R3='1') THEN + ISSUE_FLAG_STATUS<= (OTHERS => '0'); + ELSE + ISSUE_FLAG_STATUS <= ISSUE_FLAG_STATUS OR ISSUE_FLAG; + END IF; + END IF; +END PROCESS; + +STATUS(7 DOWNTO 0) <= ISSUE_FLAG_STATUS; + + + + BMG_DATA_CHECKER_INST: ENTITY work.CHECKER + GENERIC MAP ( + WRITE_WIDTH => 64, + READ_WIDTH => 64 ) + PORT MAP ( + CLK => CLKA, + RST => RSTA, + EN => CHECKER_EN_R, + DATA_IN => DOUTA, + STATUS => ISSUE_FLAG(0) + ); + + PROCESS(CLKA) + BEGIN + IF(RISING_EDGE(CLKA)) THEN + IF(RSTA='1') THEN + CHECKER_EN_R <= '0'; + ELSE + CHECKER_EN_R <= CHECKER_EN AFTER 50 ns; + END IF; + END IF; + END PROCESS; + + + BMG_STIM_GEN_INST:ENTITY work.BMG_STIM_GEN + PORT MAP( + CLK => clk_in_i, + RST => RSTA, + ADDRA => ADDRA, + DINA => DINA, + WEA => WEA, + CHECK_DATA => CHECKER_EN + ); + + PROCESS(CLKA) + BEGIN + IF(RISING_EDGE(CLKA)) THEN + IF(RESET_SYNC_R3='1') THEN + STATUS(8) <= '0'; + iter_r2 <= '0'; + iter_r1 <= '0'; + iter_r0 <= '0'; + ELSE + STATUS(8) <= iter_r2; + iter_r2 <= iter_r1; + iter_r1 <= iter_r0; + iter_r0 <= STIMULUS_FLOW(8); + END IF; + END IF; + END PROCESS; + + + PROCESS(CLKA) + BEGIN + IF(RISING_EDGE(CLKA)) THEN + IF(RESET_SYNC_R3='1') THEN + STIMULUS_FLOW <= (OTHERS => '0'); + ELSIF(WEA(0)='1') THEN + STIMULUS_FLOW <= STIMULUS_FLOW+1; + END IF; + END IF; + END PROCESS; + + + + + PROCESS(CLKA) + BEGIN + IF(RISING_EDGE(CLKA)) THEN + IF(RESET_SYNC_R3='1') THEN + WEA_R <= (OTHERS=>'0') AFTER 50 ns; + DINA_R <= (OTHERS=>'0') AFTER 50 ns; + + + ELSE + WEA_R <= WEA AFTER 50 ns; + DINA_R <= DINA AFTER 50 ns; + + END IF; + END IF; + END PROCESS; + + + PROCESS(CLKA) + BEGIN + IF(RISING_EDGE(CLKA)) THEN + IF(RESET_SYNC_R3='1') THEN + ADDRA_R <= (OTHERS=> '0') AFTER 50 ns; + ELSE + ADDRA_R <= ADDRA AFTER 50 ns; + END IF; + END IF; + END PROCESS; + + + BMG_PORT: blockMemory_exdes PORT MAP ( + --Port A + RSTA => RSTA, + WEA => WEA_R, + ADDRA => ADDRA_R, + DINA => DINA_R, + DOUTA => DOUTA, + CLKA => CLKA + + ); +END ARCHITECTURE; Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/bmg_stim_gen.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/bmg_stim_gen.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/bmg_stim_gen.vhd (revision 5) @@ -0,0 +1,243 @@ + + + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7_1 Core - Stimulus Generator For Single Port Ram +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006_3010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- +-- Filename: bmg_stim_gen.vhd +-- +-- Description: +-- Stimulus Generation For SRAM +-- 100 Writes and 100 Reads will be performed in a repeatitive loop till the +-- simulation ends +-- +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: Sep 12, 2011 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; +USE IEEE.STD_LOGIC_MISC.ALL; + +LIBRARY work; +USE work.ALL; + +USE work.BMG_TB_PKG.ALL; + + +ENTITY REGISTER_LOGIC_SRAM IS + PORT( + Q : OUT STD_LOGIC; + CLK : IN STD_LOGIC; + RST : IN STD_LOGIC; + D : IN STD_LOGIC + ); +END REGISTER_LOGIC_SRAM; + +ARCHITECTURE REGISTER_ARCH OF REGISTER_LOGIC_SRAM IS + SIGNAL Q_O : STD_LOGIC :='0'; +BEGIN + Q <= Q_O; + FF_BEH: PROCESS(CLK) + BEGIN + IF(RISING_EDGE(CLK)) THEN + IF(RST ='1') THEN + Q_O <= '0'; + ELSE + Q_O <= D; + END IF; + END IF; + END PROCESS; +END REGISTER_ARCH; + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; +USE IEEE.STD_LOGIC_MISC.ALL; + +LIBRARY work; +USE work.ALL; +USE work.BMG_TB_PKG.ALL; + + +ENTITY BMG_STIM_GEN IS + PORT ( + CLK : IN STD_LOGIC; + RST : IN STD_LOGIC; + ADDRA : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0'); + DINA : OUT STD_LOGIC_VECTOR(63 DOWNTO 0) := (OTHERS => '0'); + WEA : OUT STD_LOGIC_VECTOR (0 DOWNTO 0) := (OTHERS => '0'); + CHECK_DATA: OUT STD_LOGIC:='0' + ); +END BMG_STIM_GEN; + + +ARCHITECTURE BEHAVIORAL OF BMG_STIM_GEN IS + + CONSTANT ZERO : STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS => '0'); + CONSTANT DATA_PART_CNT_A: INTEGER:= DIVROUNDUP(64,64); + SIGNAL WRITE_ADDR : STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS => '0'); + SIGNAL WRITE_ADDR_INT : STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0'); + SIGNAL READ_ADDR_INT : STD_LOGIC_VECTOR(3 DOWNTO 0) := (OTHERS => '0'); + SIGNAL READ_ADDR : STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS => '0'); + SIGNAL DINA_INT : STD_LOGIC_VECTOR(63 DOWNTO 0) := (OTHERS => '0'); + SIGNAL DO_WRITE : STD_LOGIC := '0'; + SIGNAL DO_READ : STD_LOGIC := '0'; + SIGNAL COUNT_NO : INTEGER :=0; + SIGNAL DO_READ_REG : STD_LOGIC_VECTOR(4 DOWNTO 0) :=(OTHERS => '0'); +BEGIN + WRITE_ADDR_INT(3 DOWNTO 0) <= WRITE_ADDR(3 DOWNTO 0); + READ_ADDR_INT(3 DOWNTO 0) <= READ_ADDR(3 DOWNTO 0); + ADDRA <= IF_THEN_ELSE(DO_WRITE='1',WRITE_ADDR_INT,READ_ADDR_INT) ; + DINA <= DINA_INT ; + + CHECK_DATA <= DO_READ; + +RD_ADDR_GEN_INST:ENTITY work.ADDR_GEN + GENERIC MAP( + C_MAX_DEPTH => 16 + ) + PORT MAP( + CLK => CLK, + RST => RST, + EN => DO_READ, + LOAD => '0', + LOAD_VALUE => ZERO, + ADDR_OUT => READ_ADDR + ); + +WR_ADDR_GEN_INST:ENTITY work.ADDR_GEN + GENERIC MAP( + C_MAX_DEPTH => 16 ) + PORT MAP( + CLK => CLK, + RST => RST, + EN => DO_WRITE, + LOAD => '0', + LOAD_VALUE => ZERO, + ADDR_OUT => WRITE_ADDR + ); + +WR_DATA_GEN_INST:ENTITY work.DATA_GEN + GENERIC MAP ( + DATA_GEN_WIDTH => 64, + DOUT_WIDTH => 64, + DATA_PART_CNT => DATA_PART_CNT_A, + SEED => 2 + ) + PORT MAP ( + CLK => CLK, + RST => RST, + EN => DO_WRITE, + DATA_OUT => DINA_INT + ); + +WR_RD_PROCESS: PROCESS (CLK) +BEGIN + IF(RISING_EDGE(CLK)) THEN + IF(RST='1') THEN + DO_WRITE <= '0'; + DO_READ <= '0'; + COUNT_NO <= 0 ; + ELSIF(COUNT_NO < 4) THEN + DO_WRITE <= '1'; + DO_READ <= '0'; + COUNT_NO <= COUNT_NO + 1; + ELSIF(COUNT_NO< 8) THEN + DO_WRITE <= '0'; + DO_READ <= '1'; + COUNT_NO <= COUNT_NO + 1; + ELSIF(COUNT_NO=8) THEN + DO_WRITE <= '0'; + DO_READ <= '0'; + COUNT_NO <= 0 ; + END IF; + END IF; +END PROCESS; + +BEGIN_SHIFT_REG: FOR I IN 0 TO 4 GENERATE +BEGIN + DFF_RIGHT: IF I=0 GENERATE + BEGIN + SHIFT_INST_0: ENTITY work.REGISTER_LOGIC_SRAM + PORT MAP( + Q => DO_READ_REG(0), + CLK => CLK, + RST => RST, + D => DO_READ + ); + END GENERATE DFF_RIGHT; + DFF_OTHERS: IF ((I>0) AND (I<=4)) GENERATE + BEGIN + SHIFT_INST: ENTITY work.REGISTER_LOGIC_SRAM + PORT MAP( + Q => DO_READ_REG(I), + CLK => CLK, + RST => RST, + D => DO_READ_REG(I-1) + ); + END GENERATE DFF_OTHERS; +END GENERATE BEGIN_SHIFT_REG; + + WEA(0) <= IF_THEN_ELSE(DO_WRITE='1','1','0') ; + +END ARCHITECTURE; Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/bmg_tb_pkg.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/bmg_tb_pkg.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation/bmg_tb_pkg.vhd (revision 5) @@ -0,0 +1,200 @@ + +-------------------------------------------------------------------------------- +-- +-- BLK MEM GEN v7_1 Core - Testbench Package +-- +-------------------------------------------------------------------------------- +-- +-- (c) Copyright 2006_3010 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. + +-------------------------------------------------------------------------------- +-- +-- Filename: bmg_tb_pkg.vhd +-- +-- Description: +-- BMG Testbench Package files +-- +-------------------------------------------------------------------------------- +-- Author: IP Solutions Division +-- +-- History: Sep 12, 2011 - First Release +-------------------------------------------------------------------------------- +-- +-------------------------------------------------------------------------------- +-- Library Declarations +-------------------------------------------------------------------------------- + + +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.STD_LOGIC_ARITH.ALL; +USE IEEE.STD_LOGIC_UNSIGNED.ALL; + +PACKAGE BMG_TB_PKG IS + + FUNCTION DIVROUNDUP ( + DATA_VALUE : INTEGER; + DIVISOR : INTEGER) + RETURN INTEGER; + ------------------------ + FUNCTION IF_THEN_ELSE ( + CONDITION : BOOLEAN; + TRUE_CASE : STD_LOGIC_VECTOR; + FALSE_CASE : STD_LOGIC_VECTOR) + RETURN STD_LOGIC_VECTOR; + ------------------------ + FUNCTION IF_THEN_ELSE ( + CONDITION : BOOLEAN; + TRUE_CASE : STRING; + FALSE_CASE :STRING) + RETURN STRING; + ------------------------ + FUNCTION IF_THEN_ELSE ( + CONDITION : BOOLEAN; + TRUE_CASE : STD_LOGIC; + FALSE_CASE :STD_LOGIC) + RETURN STD_LOGIC; + ------------------------ + FUNCTION IF_THEN_ELSE ( + CONDITION : BOOLEAN; + TRUE_CASE : INTEGER; + FALSE_CASE : INTEGER) + RETURN INTEGER; + ------------------------ + FUNCTION LOG2ROUNDUP ( + DATA_VALUE : INTEGER) + RETURN INTEGER; + +END BMG_TB_PKG; + +PACKAGE BODY BMG_TB_PKG IS + + FUNCTION DIVROUNDUP ( + DATA_VALUE : INTEGER; + DIVISOR : INTEGER) + RETURN INTEGER IS + VARIABLE DIV : INTEGER; + BEGIN + DIV := DATA_VALUE/DIVISOR; + IF ( (DATA_VALUE MOD DIVISOR) /= 0) THEN + DIV := DIV+1; + END IF; + RETURN DIV; + END DIVROUNDUP; + --------------------------------- + FUNCTION IF_THEN_ELSE ( + CONDITION : BOOLEAN; + TRUE_CASE : STD_LOGIC_VECTOR; + FALSE_CASE : STD_LOGIC_VECTOR) + RETURN STD_LOGIC_VECTOR IS + BEGIN + IF NOT CONDITION THEN + RETURN FALSE_CASE; + ELSE + RETURN TRUE_CASE; + END IF; + END IF_THEN_ELSE; + --------------------------------- + FUNCTION IF_THEN_ELSE ( + CONDITION : BOOLEAN; + TRUE_CASE : STD_LOGIC; + FALSE_CASE : STD_LOGIC) + RETURN STD_LOGIC IS + BEGIN + IF NOT CONDITION THEN + RETURN FALSE_CASE; + ELSE + RETURN TRUE_CASE; + END IF; + END IF_THEN_ELSE; + --------------------------------- + FUNCTION IF_THEN_ELSE ( + CONDITION : BOOLEAN; + TRUE_CASE : INTEGER; + FALSE_CASE : INTEGER) + RETURN INTEGER IS + VARIABLE RETVAL : INTEGER := 0; + BEGIN + IF CONDITION=FALSE THEN + RETVAL:=FALSE_CASE; + ELSE + RETVAL:=TRUE_CASE; + END IF; + RETURN RETVAL; + END IF_THEN_ELSE; + --------------------------------- + FUNCTION IF_THEN_ELSE ( + CONDITION : BOOLEAN; + TRUE_CASE : STRING; + FALSE_CASE : STRING) + RETURN STRING IS + BEGIN + IF NOT CONDITION THEN + RETURN FALSE_CASE; + ELSE + RETURN TRUE_CASE; + END IF; + END IF_THEN_ELSE; + ------------------------------- + FUNCTION LOG2ROUNDUP ( + DATA_VALUE : INTEGER) + RETURN INTEGER IS + VARIABLE WIDTH : INTEGER := 0; + VARIABLE CNT : INTEGER := 1; + BEGIN + IF (DATA_VALUE <= 1) THEN + WIDTH := 1; + ELSE + WHILE (CNT < DATA_VALUE) LOOP + WIDTH := WIDTH + 1; + CNT := CNT *2; + END LOOP; + END IF; + RETURN WIDTH; + END LOG2ROUNDUP; + +END BMG_TB_PKG; Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/simulation Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/doc/blk_mem_gen_v7_1_vinfo.html =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/doc/blk_mem_gen_v7_1_vinfo.html (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/doc/blk_mem_gen_v7_1_vinfo.html (revision 5) @@ -0,0 +1,237 @@ + + +blk_mem_gen_v7_1_vinfo + + + +









    +                Core name: Xilinx LogiCORE Block Memory Generator








    +                Version: 7.1








    +                Release: ISE 14.1 / Vivado 2012.1








    +                Release Date: April 24, 2012








    +








    +








    +================================================================================








    +








    +This document contains the following sections:








    +








    +This document contains the following sections:








    +








    +1. Introduction








    +2. New Features








    +  2.1 ISE








    +  2.2 Vivado








    +3. Supported Devices








    +  3.1 ISE








    +  3.2 Vivado








    +4. Resolved Issues








    +  4.1 ISE








    +  4.2 Vivado








    +5. Known Issues








    +  5.1 ISE








    +  5.2 Vivado








    +6. Technical Support








    +7. Core Release History








    +8. Legal Disclaimer








    +








    +================================================================================








    +








    +








    +1. INTRODUCTION








    +








    +For installation instructions for this release, please go to:








    +








    +  www.xilinx.com/ipcenter/coregen/ip_update_install_instructions.htm








    +








    +For system requirements:








    +








    +   www.xilinx.com/ipcenter/coregen/ip_update_system_requirements.htm








    +








    +This file contains release notes for the Xilinx LogiCORE IP Block Memory Generator v7.1








    +solution. For the latest core updates, see the product page at:








    +








    + www.xilinx.com/products/ipcenter/Block_Memory_Generator.htm








    +








    +








    +................................................................................








    +2. NEW FEATURES








    +








    +








    +  2.1 ISE








    +








    +    - ISE 14.1 software support








    +    - Defense Grade Virtex-7Q, Kintex-7Q, Artix-7Q and Zynq-Q, Defense Grade Lower Power Kintex-7QL and Artix-7QL,








    +      and Automotive Zynq device support








    +








    +








    +  2.2 Vivado








    +








    +    - 2012.1 software support








    +    - Defense Grade Virtex-7Q, Kintex-7Q, Artix-7Q and Zynq-Q, Defense Grade Lower Power Kintex-7QL and Artix-7QL,








    +      and Automotive Zynq device support








    +








    +








    +................................................................................








    +3. SUPPORTED DEVICES








    +








    +








    +  3.1 ISE








    +








    +  The following device families are supported by the core for this release.








    +








    +  All 7 Series devices








    +  Zynq-7000 devices








    +  All Virtex-6 devices








    +  All Spartan-6 devices








    +  All Virtex-5 devices








    +  All Spartan-3 devices








    +  All Virtex-4 devices








    +








    +








    +  3.2 Vivado








    +  All 7 Series devices








    +  Zynq-7000 devices








    +








    +








    +................................................................................








    +4. RESOLVED ISSUES








    +








    +








    +The following issues are resolved in Block Memory Generator v7.1:








    +








    +  4.1 ISE








    +








    +








    +  4.2 Vivado








    +








    +








    +................................................................................








    +5. KNOWN ISSUES








    +








    +








    +  5.1 ISE








    +








    +    The following are known issues for v7.1 of this core at time of release:








    +








    +    1. Virtex-6 and Spartan-6: BRAM Memory collision error, when the user selects TDP (write_mode= Read First)








    +      Work around: The user must review the possible scenarios that causes the collission and revise








    +       their design to avoid those situations.








    +      - CR588505








    +








    +      Note: Refer to UG383, 'Conflict Avoidance' section when using TDP Memory - with








    +            Write Mode = Read First in conjunction with asynchronous clocking








    +








    +    2. Power estimation figures in the datasheet are preliminary for Virtex-5 and Spartan-3.








    +








    +    3. Core does not generate for large memories. Depending on the








    +       machine the ISE CORE Generator software runs on, the maximum size of the memory that








    +       can be generated will vary.  For example, a Dual Pentium-4 server








    +       with 2 GB RAM can generate a memory core of size 1.8 MBits or 230 KBytes








    +      - CR 415768








    +      - AR 24034








    +








    +








    +  5.2 Vivado








    +








    +  The most recent information, including known issues, workarounds, and resolutions for








    +  this version is provided in the IP Release Notes User Guide located at








    +








    +         www.xilinx.com/support/documentation/user_guides/xtp025.pdf








    +








    +








    +








    +................................................................................








    +6. TECHNICAL SUPPORT








    +








    +To obtain technical support, create a WebCase at www.xilinx.com/support.








    +Questions are routed to a team with expertise using this product.








    +








    +Xilinx provides technical support for use of this product when used








    +according to the guidelines described in the core documentation, and








    +cannot guarantee timing, functionality, or support of this product for








    +designs that do not follow specified guidelines.








    +








    +








    +








    +7. CORE RELEASE HISTORY








    +








    +Date        By            Version      Description








    +================================================================================








    +04/24/2012  Xilinx, Inc.  7.1          ISE 14.1 and Vivado 2012.1 support; Defense Grade 7 Series and Zynq devices, and Automotive Zynq device support








    +01/18/2011  Xilinx, Inc.  6.3          ISE 13.4 support;Artix7L*, AArtix-7* device support








    +06/22/2011  Xilinx, Inc.  6.2          ISE 13.2 support;Virtex-7L,Kintex-7L,Artix7 and Zynq-7000* device support;








    +03/01/2011  Xilinx, Inc.  6.1          ISE 13.1 support and Virtex-7 and Kintex-7 device support; AXI4/AXI4-Lite Support








    +09/21/2010  Xilinx, Inc.  4.3          ISE 12.3 support








    +07/23/2010  Xilinx, Inc.  4.2          ISE 12.2 support








    +04/19/2010  Xilinx, Inc.  4.1          ISE 12.1 support








    +03/09/2010  Xilinx, Inc.  3.3 rev 2    Fix for V6 Memory collision issue








    +12/02/2009  Xilinx, Inc.  3.3 rev 1    ISE 11.4 support; Spartan-6 Low Power








    +                                       Device support; Automotive Spartan 3A








    +                                       DSP device support








    +09/16/2009  Xilinx, Inc.  3.3          Revised to v3.3








    +06/24/2009  Xilinx, Inc.  3.2          Revised to v3.2








    +04/24/2009  Xilinx, Inc.  3.1          Revised to v3.1








    +09/19/2008  Xilinx, Inc.  2.8          Revised to v2.8








    +03/24/2008  Xilinx, Inc.  2.7          10.1 support; Revised to v2.7








    +10/03/2007  Xilinx, Inc.  2.6          Revised to v2.6








    +07/2007     Xilinx, Inc.  2.5          Revised to v2.5








    +04/2007     Xilinx, Inc.  2.4          Revised to v2.4 rev 1








    +02/2007     Xilinx, Inc.  2.4          Revised to v2.4








    +11/2006     Xilinx, Inc.  2.3          Revised to v2.3








    +09/2006     Xilinx, Inc.  2.2          Revised to v2.2








    +06/2006     Xilinx, Inc.  2.1          Revised to v2.1








    +01/2006     Xilinx, Inc.  1.1          Initial release








    +================================================================================








    +








    +8. Legal Disclaimer








    +








    + (c) Copyright 2006 - 2012 Xilinx, Inc. All rights reserved.








    +








    + This file contains confidential and proprietary information








    + of Xilinx, Inc. and is protected under U.S. and








    + international copyright and other intellectual property








    + laws.








    +








    + DISCLAIMER








    + This disclaimer is not a license and does not grant any








    + rights to the materials distributed herewith. Except as








    + otherwise provided in a valid license issued to you by








    + Xilinx, and to the maximum extent permitted by applicable








    + law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND








    + WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES








    + AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING








    + BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-








    + INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and








    + (2) Xilinx shall not be liable (whether in contract or tort,








    + including negligence, or under any other theory of








    + liability) for any loss or damage of any kind or nature








    + related to, arising under or in connection with these








    + materials, including for any direct, or any indirect,








    + special, incidental, or consequential loss or damage








    + (including loss of data, profits, goodwill, or any type of








    + loss or damage suffered as a result of any action brought








    + by a third party) even if such damage or loss was








    + reasonably foreseeable or Xilinx had been advised of the








    + possibility of the same.








    +








    + CRITICAL APPLICATIONS








    + Xilinx products are not designed or intended to be fail-








    + safe, or for use in any application requiring fail-safe








    + performance, such as life-support or safety devices or








    + systems, Class III medical devices, nuclear facilities,








    + applications related to the deployment of airbags, or any








    + other applications that could lead to death, personal








    + injury, or severe property or environmental damage








    + (individually and collectively, "Critical








    + Applications"). Customer assumes the sole risk and








    + liability of any use of Xilinx products in Critical








    + Applications, subject only to applicable laws and








    + regulations governing limitations on product liability.








    +








    + THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS








    + PART OF THIS FILE AT ALL TIMES.








    +








    +








    +
+ + Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/doc/blk_mem_gen_ds512.pdf =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/doc/blk_mem_gen_ds512.pdf =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/doc/blk_mem_gen_ds512.pdf (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/doc/blk_mem_gen_ds512.pdf (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/doc/blk_mem_gen_ds512.pdf Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/doc =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/doc (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/doc (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/doc Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/blk_mem_gen_v7_1_readme.txt =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/blk_mem_gen_v7_1_readme.txt (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/blk_mem_gen_v7_1_readme.txt (revision 5) @@ -0,0 +1,226 @@ + Core name: Xilinx LogiCORE Block Memory Generator + Version: 7.1 + Release: ISE 14.1 / Vivado 2012.1 + Release Date: April 24, 2012 + + +================================================================================ + +This document contains the following sections: + +This document contains the following sections: + +1. Introduction +2. New Features + 2.1 ISE + 2.2 Vivado +3. Supported Devices + 3.1 ISE + 3.2 Vivado +4. Resolved Issues + 4.1 ISE + 4.2 Vivado +5. Known Issues + 5.1 ISE + 5.2 Vivado +6. Technical Support +7. Core Release History +8. Legal Disclaimer + +================================================================================ + + +1. INTRODUCTION + +For installation instructions for this release, please go to: + + http://www.xilinx.com/ipcenter/coregen/ip_update_install_instructions.htm + +For system requirements: + + http://www.xilinx.com/ipcenter/coregen/ip_update_system_requirements.htm + +This file contains release notes for the Xilinx LogiCORE IP Block Memory Generator v7.1 +solution. For the latest core updates, see the product page at: + + http://www.xilinx.com/products/ipcenter/Block_Memory_Generator.htm + + +................................................................................ +2. NEW FEATURES + + + 2.1 ISE + + - ISE 14.1 software support + - Defense Grade Virtex-7Q, Kintex-7Q, Artix-7Q and Zynq-Q, Defense Grade Lower Power Kintex-7QL and Artix-7QL, + and Automotive Zynq device support + + + 2.2 Vivado + + - 2012.1 software support + - Defense Grade Virtex-7Q, Kintex-7Q, Artix-7Q and Zynq-Q, Defense Grade Lower Power Kintex-7QL and Artix-7QL, + and Automotive Zynq device support + + +................................................................................ +3. SUPPORTED DEVICES + + + 3.1 ISE + + The following device families are supported by the core for this release. + + All 7 Series devices + Zynq-7000 devices + All Virtex-6 devices + All Spartan-6 devices + All Virtex-5 devices + All Spartan-3 devices + All Virtex-4 devices + + + 3.2 Vivado + All 7 Series devices + Zynq-7000 devices + + +................................................................................ +4. RESOLVED ISSUES + + +The following issues are resolved in Block Memory Generator v7.1: + + 4.1 ISE + + + 4.2 Vivado + + +................................................................................ +5. KNOWN ISSUES + + + 5.1 ISE + + The following are known issues for v7.1 of this core at time of release: + + 1. Virtex-6 and Spartan-6: BRAM Memory collision error, when the user selects TDP (write_mode= Read First) + Work around: The user must review the possible scenarios that causes the collission and revise + their design to avoid those situations. + - CR588505 + + Note: Refer to UG383, 'Conflict Avoidance' section when using TDP Memory - with + Write Mode = Read First in conjunction with asynchronous clocking + + 2. Power estimation figures in the datasheet are preliminary for Virtex-5 and Spartan-3. + + 3. Core does not generate for large memories. Depending on the + machine the ISE CORE Generator software runs on, the maximum size of the memory that + can be generated will vary. For example, a Dual Pentium-4 server + with 2 GB RAM can generate a memory core of size 1.8 MBits or 230 KBytes + - CR 415768 + - AR 24034 + + + 5.2 Vivado + + The most recent information, including known issues, workarounds, and resolutions for + this version is provided in the IP Release Notes User Guide located at + + www.xilinx.com/support/documentation/user_guides/xtp025.pdf + + + +................................................................................ +6. TECHNICAL SUPPORT + +To obtain technical support, create a WebCase at www.xilinx.com/support. +Questions are routed to a team with expertise using this product. + +Xilinx provides technical support for use of this product when used +according to the guidelines described in the core documentation, and +cannot guarantee timing, functionality, or support of this product for +designs that do not follow specified guidelines. + + + +7. CORE RELEASE HISTORY + +Date By Version Description +================================================================================ +04/24/2012 Xilinx, Inc. 7.1 ISE 14.1 and Vivado 2012.1 support; Defense Grade 7 Series and Zynq devices, and Automotive Zynq device support +01/18/2011 Xilinx, Inc. 6.3 ISE 13.4 support;Artix7L*, AArtix-7* device support +06/22/2011 Xilinx, Inc. 6.2 ISE 13.2 support;Virtex-7L,Kintex-7L,Artix7 and Zynq-7000* device support; +03/01/2011 Xilinx, Inc. 6.1 ISE 13.1 support and Virtex-7 and Kintex-7 device support; AXI4/AXI4-Lite Support +09/21/2010 Xilinx, Inc. 4.3 ISE 12.3 support +07/23/2010 Xilinx, Inc. 4.2 ISE 12.2 support +04/19/2010 Xilinx, Inc. 4.1 ISE 12.1 support +03/09/2010 Xilinx, Inc. 3.3 rev 2 Fix for V6 Memory collision issue +12/02/2009 Xilinx, Inc. 3.3 rev 1 ISE 11.4 support; Spartan-6 Low Power + Device support; Automotive Spartan 3A + DSP device support +09/16/2009 Xilinx, Inc. 3.3 Revised to v3.3 +06/24/2009 Xilinx, Inc. 3.2 Revised to v3.2 +04/24/2009 Xilinx, Inc. 3.1 Revised to v3.1 +09/19/2008 Xilinx, Inc. 2.8 Revised to v2.8 +03/24/2008 Xilinx, Inc. 2.7 10.1 support; Revised to v2.7 +10/03/2007 Xilinx, Inc. 2.6 Revised to v2.6 +07/2007 Xilinx, Inc. 2.5 Revised to v2.5 +04/2007 Xilinx, Inc. 2.4 Revised to v2.4 rev 1 +02/2007 Xilinx, Inc. 2.4 Revised to v2.4 +11/2006 Xilinx, Inc. 2.3 Revised to v2.3 +09/2006 Xilinx, Inc. 2.2 Revised to v2.2 +06/2006 Xilinx, Inc. 2.1 Revised to v2.1 +01/2006 Xilinx, Inc. 1.1 Initial release +================================================================================ + +8. Legal Disclaimer + + (c) Copyright 2006 - 2012 Xilinx, Inc. All rights reserved. + + This file contains confidential and proprietary information + of Xilinx, Inc. and is protected under U.S. and + international copyright and other intellectual property + laws. + + DISCLAIMER + This disclaimer is not a license and does not grant any + rights to the materials distributed herewith. Except as + otherwise provided in a valid license issued to you by + Xilinx, and to the maximum extent permitted by applicable + law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND + WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES + AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING + BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- + INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and + (2) Xilinx shall not be liable (whether in contract or tort, + including negligence, or under any other theory of + liability) for any loss or damage of any kind or nature + related to, arising under or in connection with these + materials, including for any direct, or any indirect, + special, incidental, or consequential loss or damage + (including loss of data, profits, goodwill, or any type of + loss or damage suffered as a result of any action brought + by a third party) even if such damage or loss was + reasonably foreseeable or Xilinx had been advised of the + possibility of the same. + + CRITICAL APPLICATIONS + Xilinx products are not designed or intended to be fail- + safe, or for use in any application requiring fail-safe + performance, such as life-support or safety devices or + systems, Class III medical devices, nuclear facilities, + applications related to the deployment of airbags, or any + other applications that could lead to death, personal + injury, or severe property or environmental damage + (individually and collectively, "Critical + Applications"). Customer assumes the sole risk and + liability of any use of Xilinx products in Critical + Applications, subject only to applicable laws and + regulations governing limitations on product liability. + + THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS + PART OF THIS FILE AT ALL TIMES. + Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/implement.bat =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/implement.bat (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/implement.bat (revision 5) @@ -0,0 +1,48 @@ + + + + + + + + +rem Clean up the results directory +rmdir /S /Q results +mkdir results + +rem Synthesize the VHDL Wrapper Files + + +echo 'Synthesizing example design with XST'; +xst -ifn xst.scr +copy blockMemory_exdes.ngc .\results\ + + +rem Copy the netlist generated by Coregen +echo 'Copying files from the netlist directory to the results directory' +copy ..\..\blockMemory.ngc results\ + + +rem Copy the constraints files generated by Coregen +echo 'Copying files from constraints directory to results directory' +copy ..\example_design\blockMemory_exdes.ucf results\ + +cd results + +echo 'Running ngdbuild' +ngdbuild -p xc3s500e-fg320-5 blockMemory_exdes + +echo 'Running map' +map blockMemory_exdes -o mapped.ncd -pr i + +echo 'Running par' +par mapped.ncd routed.ncd + +echo 'Running trce' +trce -e 10 routed.ncd mapped.pcf -o routed + +echo 'Running design through bitgen' +bitgen -w routed + +echo 'Running netgen to create gate level VHDL model' +netgen -ofmt vhdl -sim -tm blockMemory_exdes -pcf mapped.pcf -w routed.ncd routed.vhd Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/planAhead_rdn.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/planAhead_rdn.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/planAhead_rdn.tcl (revision 5) @@ -0,0 +1,67 @@ +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. + + +set device xc3s500efg320-5 +set projName blockMemory +set design blockMemory +set projDir [file dirname [info script]] +create_project $projName $projDir/results/$projName -part $device -force +set_property design_mode RTL [current_fileset -srcset] +set top_module blockMemory_exdes +add_files -norecurse {../../example_design/blockMemory_exdes.vhd} +add_files -norecurse {./blockMemory.ngc} +import_files -fileset [get_filesets constrs_1] -force -norecurse {../../example_design/blockMemory_exdes.xdc} +set_property top blockMemory_exdes [get_property srcset [current_run]] +synth_design +opt_design +place_design +route_design +write_sdf -rename_top_module blockMemory_exdes -file routed.sdf +write_vhdl -mode sim routed.vhd +report_timing -nworst 30 -path_type full -file routed.twr +report_drc -file report.drc +write_bitstream -bitgen_options {-g UnconstrainedPins:Allow} Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/planAhead_ise.bat =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/planAhead_ise.bat (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/planAhead_ise.bat (revision 5) @@ -0,0 +1,55 @@ +#!/bin/sh +rem (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +rem +rem This file contains confidential and proprietary information +rem of Xilinx, Inc. and is protected under U.S. and +rem international copyright and other intellectual property +rem laws. +rem +rem DISCLAIMER +rem This disclaimer is not a license and does not grant any +rem rights to the materials distributed herewith. Except as +rem otherwise provided in a valid license issued to you by +rem Xilinx, and to the maximum extent permitted by applicable +rem law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +rem WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +rem AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +rem BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +rem INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +rem (2) Xilinx shall not be liable (whether in contract or tort, +rem including negligence, or under any other theory of +rem liability) for any loss or damage of any kind or nature +rem related to, arising under or in connection with these +rem materials, including for any direct, or any indirect, +rem special, incidental, or consequential loss or damage +rem (including loss of data, profits, goodwill, or any type of +rem loss or damage suffered as a result of any action brought +rem by a third party) even if such damage or loss was +rem reasonably foreseeable or Xilinx had been advised of the +rem possibility of the same. +rem +rem CRITICAL APPLICATIONS +rem Xilinx products are not designed or intended to be fail- +rem safe, or for use in any application requiring fail-safe +rem performance, such as life-support or safety devices or +rem systems, Class III medical devices, nuclear facilities, +rem applications related to the deployment of airbags, or any +rem other applications that could lead to death, personal +rem injury, or severe property or environmental damage +rem (individually and collectively, "Critical +rem Applications"). Customer assumes the sole risk and +rem liability of any use of Xilinx products in Critical +rem Applications, subject only to applicable laws and +rem regulations governing limitations on product liability. +rem +rem THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +rem PART OF THIS FILE AT ALL TIMES. + +rem ----------------------------------------------------------------------------- +rem Script to synthesize and implement the Coregen FIFO Generator +rem ----------------------------------------------------------------------------- +rmdir /S /Q results +mkdir results +cd results +copy ..\..\..\blockMemory.ngc . +planAhead -mode batch -source ..\planAhead_ise.tcl Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/implement.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/implement.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/implement.sh (revision 5) @@ -0,0 +1,48 @@ + + + + + + + + +#!/bin/sh + +# Clean up the results directory +rm -rf results +mkdir results + +#Synthesize the Wrapper Files + +echo 'Synthesizing example design with XST'; +xst -ifn xst.scr +cp blockMemory_exdes.ngc ./results/ + + +# Copy the netlist generated by Coregen +echo 'Copying files from the netlist directory to the results directory' +cp ../../blockMemory.ngc results/ + +# Copy the constraints files generated by Coregen +echo 'Copying files from constraints directory to results directory' +cp ../example_design/blockMemory_exdes.ucf results/ + +cd results + +echo 'Running ngdbuild' +ngdbuild -p xc3s500e-fg320-5 blockMemory_exdes + +echo 'Running map' +map blockMemory_exdes -o mapped.ncd -pr i + +echo 'Running par' +par mapped.ncd routed.ncd + +echo 'Running trce' +trce -e 10 routed.ncd mapped.pcf -o routed + +echo 'Running design through bitgen' +bitgen -w routed + +echo 'Running netgen to create gate level VHDL model' +netgen -ofmt vhdl -sim -tm blockMemory_exdes -pcf mapped.pcf -w routed.ncd routed.vhd Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/xst.scr =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/xst.scr (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/xst.scr (revision 5) @@ -0,0 +1,13 @@ +run +-ifmt VHDL +-ent blockMemory_exdes +-p xc3s500e-fg320-5 +-ifn xst.prj +-write_timing_constraints No +-iobuf YES +-max_fanout 100 +-ofn blockMemory_exdes +-ofmt NGC +-bus_delimiter () +-hierarchy_separator / +-case Maintain Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/planAhead_rdn.bat =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/planAhead_rdn.bat (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/planAhead_rdn.bat (revision 5) @@ -0,0 +1,55 @@ +#!/bin/sh +rem (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +rem +rem This file contains confidential and proprietary information +rem of Xilinx, Inc. and is protected under U.S. and +rem international copyright and other intellectual property +rem laws. +rem +rem DISCLAIMER +rem This disclaimer is not a license and does not grant any +rem rights to the materials distributed herewith. Except as +rem otherwise provided in a valid license issued to you by +rem Xilinx, and to the maximum extent permitted by applicable +rem law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +rem WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +rem AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +rem BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +rem INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +rem (2) Xilinx shall not be liable (whether in contract or tort, +rem including negligence, or under any other theory of +rem liability) for any loss or damage of any kind or nature +rem related to, arising under or in connection with these +rem materials, including for any direct, or any indirect, +rem special, incidental, or consequential loss or damage +rem (including loss of data, profits, goodwill, or any type of +rem loss or damage suffered as a result of any action brought +rem by a third party) even if such damage or loss was +rem reasonably foreseeable or Xilinx had been advised of the +rem possibility of the same. +rem +rem CRITICAL APPLICATIONS +rem Xilinx products are not designed or intended to be fail- +rem safe, or for use in any application requiring fail-safe +rem performance, such as life-support or safety devices or +rem systems, Class III medical devices, nuclear facilities, +rem applications related to the deployment of airbags, or any +rem other applications that could lead to death, personal +rem injury, or severe property or environmental damage +rem (individually and collectively, "Critical +rem Applications"). Customer assumes the sole risk and +rem liability of any use of Xilinx products in Critical +rem Applications, subject only to applicable laws and +rem regulations governing limitations on product liability. +rem +rem THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +rem PART OF THIS FILE AT ALL TIMES. + +rem ----------------------------------------------------------------------------- +rem Script to synthesize and implement the Coregen FIFO Generator +rem ----------------------------------------------------------------------------- +rmdir /S /Q results +mkdir results +cd results +copy ..\..\..\blockMemory.ngc . +planAhead -mode batch -source ..\planAhead_rdn.tcl Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/planAhead_ise.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/planAhead_ise.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/planAhead_ise.sh (revision 5) @@ -0,0 +1,55 @@ +#!/bin/sh +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. + +#----------------------------------------------------------------------------- +# Script to synthesize and implement the Coregen FIFO Generator +#----------------------------------------------------------------------------- +rm -rf results +mkdir results +cd results +cp ../../../blockMemory.ngc . +planAhead -mode batch -source ../planAhead_ise.tcl Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/xst.prj =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/xst.prj (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/xst.prj (revision 5) @@ -0,0 +1 @@ +work ../example_design/blockMemory_exdes.vhd Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/planAhead_rdn.sh =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/planAhead_rdn.sh (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/planAhead_rdn.sh (revision 5) @@ -0,0 +1,55 @@ +#!/bin/sh +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. + +#----------------------------------------------------------------------------- +# Script to synthesize and implement the Coregen FIFO Generator +#----------------------------------------------------------------------------- +rm -rf results +mkdir results +cd results +cp ../../../blockMemory.ngc . +planAhead -mode batch -source ../planAhead_rdn.tcl Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/planAhead_ise.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/planAhead_ise.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement/planAhead_ise.tcl (revision 5) @@ -0,0 +1,67 @@ +# (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. + + +set device xc3s500efg320-5 +set projName blockMemory +set design blockMemory +set projDir [file dirname [info script]] +create_project $projName $projDir/results/$projName -part $device -force +set_property design_mode RTL [current_fileset -srcset] +set top_module blockMemory_exdes +add_files -norecurse {../../example_design/blockMemory_exdes.vhd} +add_files -norecurse {./blockMemory.ngc} +import_files -fileset [get_filesets constrs_1] -force -norecurse {../../example_design/blockMemory_exdes.xdc} +set_property top blockMemory_exdes [get_property srcset [current_run]] +synth_design +opt_design +place_design +route_design +write_sdf -rename_top_module blockMemory_exdes -file routed.sdf +write_vhdl -mode sim routed.vhd +report_timing -nworst 30 -path_type full -file routed.twr +report_drc -file report.drc +write_bitstream -bitgen_options {-g UnconstrainedPins:Allow} Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory/implement Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.v =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.v (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.v (revision 5) @@ -0,0 +1,180 @@ +/******************************************************************************* +* This file is owned and controlled by Xilinx and must be used solely * +* for design, simulation, implementation and creation of design files * +* limited to Xilinx devices or technologies. Use with non-Xilinx * +* devices or technologies is expressly prohibited and immediately * +* terminates your license. * +* * +* XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" SOLELY * +* FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR XILINX DEVICES. BY * +* PROVIDING THIS DESIGN, CODE, OR INFORMATION AS ONE POSSIBLE * +* IMPLEMENTATION OF THIS FEATURE, APPLICATION OR STANDARD, XILINX IS * +* MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION IS FREE FROM ANY * +* CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE FOR OBTAINING ANY * +* RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY * +* DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE * +* IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR * +* REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF * +* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * +* PARTICULAR PURPOSE. * +* * +* Xilinx products are not intended for use in life support appliances, * +* devices, or systems. Use in such applications are expressly * +* prohibited. * +* * +* (c) Copyright 1995-2013 Xilinx, Inc. * +* All rights reserved. * +*******************************************************************************/ +// You must compile the wrapper file blockMemory.v when simulating +// the core, blockMemory. When compiling the wrapper file, be sure to +// reference the XilinxCoreLib Verilog simulation library. For detailed +// instructions, please refer to the "CORE Generator Help". + +// The synthesis directives "translate_off/translate_on" specified below are +// supported by Xilinx, Mentor Graphics and Synplicity synthesis +// tools. Ensure they are correct for your synthesis tool(s). + +`timescale 1ns/1ps + +module blockMemory( + clka, + rsta, + wea, + addra, + dina, + douta +); + +input clka; +input rsta; +input [0 : 0] wea; +input [3 : 0] addra; +input [511 : 0] dina; +output [511 : 0] douta; + +// synthesis translate_off + + BLK_MEM_GEN_V7_1 #( + .C_ADDRA_WIDTH(4), + .C_ADDRB_WIDTH(4), + .C_ALGORITHM(0), + .C_AXI_ID_WIDTH(4), + .C_AXI_SLAVE_TYPE(0), + .C_AXI_TYPE(1), + .C_BYTE_SIZE(9), + .C_COMMON_CLK(0), + .C_DEFAULT_DATA("0"), + .C_DISABLE_WARN_BHV_COLL(0), + .C_DISABLE_WARN_BHV_RANGE(0), + .C_ENABLE_32BIT_ADDRESS(0), + .C_FAMILY("spartan3"), + .C_HAS_AXI_ID(0), + .C_HAS_ENA(0), + .C_HAS_ENB(0), + .C_HAS_INJECTERR(0), + .C_HAS_MEM_OUTPUT_REGS_A(0), + .C_HAS_MEM_OUTPUT_REGS_B(0), + .C_HAS_MUX_OUTPUT_REGS_A(0), + .C_HAS_MUX_OUTPUT_REGS_B(0), + .C_HAS_REGCEA(0), + .C_HAS_REGCEB(0), + .C_HAS_RSTA(1), + .C_HAS_RSTB(0), + .C_HAS_SOFTECC_INPUT_REGS_A(0), + .C_HAS_SOFTECC_OUTPUT_REGS_B(0), + .C_INIT_FILE_NAME("no_coe_file_loaded"), + .C_INITA_VAL("0"), + .C_INITB_VAL("0"), + .C_INTERFACE_TYPE(0), + .C_LOAD_INIT_FILE(0), + .C_MEM_TYPE(0), + .C_MUX_PIPELINE_STAGES(0), + .C_PRIM_TYPE(6), + .C_READ_DEPTH_A(16), + .C_READ_DEPTH_B(16), + .C_READ_WIDTH_A(512), + .C_READ_WIDTH_B(512), + .C_RST_PRIORITY_A("CE"), + .C_RST_PRIORITY_B("CE"), + .C_RST_TYPE("SYNC"), + .C_RSTRAM_A(0), + .C_RSTRAM_B(0), + .C_SIM_COLLISION_CHECK("ALL"), + .C_USE_BYTE_WEA(0), + .C_USE_BYTE_WEB(0), + .C_USE_DEFAULT_DATA(0), + .C_USE_ECC(0), + .C_USE_SOFTECC(0), + .C_WEA_WIDTH(1), + .C_WEB_WIDTH(1), + .C_WRITE_DEPTH_A(16), + .C_WRITE_DEPTH_B(16), + .C_WRITE_MODE_A("READ_FIRST"), + .C_WRITE_MODE_B("WRITE_FIRST"), + .C_WRITE_WIDTH_A(512), + .C_WRITE_WIDTH_B(512), + .C_XDEVICEFAMILY("spartan3e") + ) + inst ( + .CLKA(clka), + .RSTA(rsta), + .WEA(wea), + .ADDRA(addra), + .DINA(dina), + .DOUTA(douta), + .ENA(), + .REGCEA(), + .CLKB(), + .RSTB(), + .ENB(), + .REGCEB(), + .WEB(), + .ADDRB(), + .DINB(), + .DOUTB(), + .INJECTSBITERR(), + .INJECTDBITERR(), + .SBITERR(), + .DBITERR(), + .RDADDRECC(), + .S_ACLK(), + .S_ARESETN(), + .S_AXI_AWID(), + .S_AXI_AWADDR(), + .S_AXI_AWLEN(), + .S_AXI_AWSIZE(), + .S_AXI_AWBURST(), + .S_AXI_AWVALID(), + .S_AXI_AWREADY(), + .S_AXI_WDATA(), + .S_AXI_WSTRB(), + .S_AXI_WLAST(), + .S_AXI_WVALID(), + .S_AXI_WREADY(), + .S_AXI_BID(), + .S_AXI_BRESP(), + .S_AXI_BVALID(), + .S_AXI_BREADY(), + .S_AXI_ARID(), + .S_AXI_ARADDR(), + .S_AXI_ARLEN(), + .S_AXI_ARSIZE(), + .S_AXI_ARBURST(), + .S_AXI_ARVALID(), + .S_AXI_ARREADY(), + .S_AXI_RID(), + .S_AXI_RDATA(), + .S_AXI_RRESP(), + .S_AXI_RLAST(), + .S_AXI_RVALID(), + .S_AXI_RREADY(), + .S_AXI_INJECTSBITERR(), + .S_AXI_INJECTDBITERR(), + .S_AXI_SBITERR(), + .S_AXI_DBITERR(), + .S_AXI_RDADDRECC() + ); + +// synthesis translate_on + +endmodule Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.ncf =================================================================== Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.ngc =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.ngc (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.ngc (revision 5) @@ -0,0 +1,3 @@ +XILINX-XDB 0.1 STUB 0.1 ASCII +XILINX-XDM V1.6e +$20644<,[o}e~g`n;"2*73>(-80!?0123456382:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789;87<4FNQWW>WC@KLK7<7>11292>LHW]]0YIJMJB=294;76380BB][[:SQWE96=87;:7<4FNQWW>WUSJ5:1<3??;08JJUSS2~oj0=4?>008770187758c3:y><=kig203)0753=0BB][[:@FGVD:4294:>6:5IORVP?GCL[H7?7>11097>LHW]]0OE]O33;2=54=32@D[YY4KIQ@?7?699;1?6D@_UU8b`atf4:0;2<<44;MVPUSS2ME[M1=50?31?10>586?2>1CXZ_UU8Q@DBCZLIH0>4?>01821586;2:0;2<=4658JJUSS2mcem18<:1<21>032F__\XZ5DNWWE904294:968;:NWWTPR=LF__N18<:1<21>032F__\XZ5dnwwe904294:<665IORVP?QBI5=1<3??;98JJUSS2^OI0:4?>008=?OIX\^1MIJ]A=:94;75300BB][[:@FGVG:?29437LJKR@>3:==FLMXJ0<07;@FGVD:56h1JHI\N<283:==FLMXJ0>07;@FGVD:3611JHI\N<4<;?DBCZH6=255NDEPB828f3HNO^L27:1<;?DBCZH63255NDEPA858?3HNO^O2>>99B@ATE4;4j7LJKRC>0>58?3HNO^O2<>99B@ATE4=437LJKRC>6:==FLMXI0;07;@FGVG:06h1JHI\M<983:==FLMXI050<;@NO53=EEDUBBKAPAEFQAVUXZHDLI55MUR]JJCI6:2ICINEPLHAFJVCX\PZN86MCK148GIM609<0OAE=7178GIM5P11H@F0OAEN5:AOOD703JF@M1H@FO>D968GIME=2IGGO?:;BNHG43EKCM\THDXFDD78GIMAP11H@FHW192:?FIJE@^_II?;;BMQAZABFLXJXDAA_HLEK2=DZLK_II94DCKWAWT13MCJ0=08;EKB8469?2NBM1?>>69GMD:6:7=0HDO312<4?AOF48>5;6JFA=36:2=CAH6::394DHC?52803MCJ0<617:FJE97>6?1OEL2>>69GMD:587=0HDO320<4?AOF4;85;6JFA=00:2=CAH698394DHC?60803MCJ0?817:FJE9406>1OEL2=8?58@LG;:04=7IGN<3<4?AOF4::556JFA=12>5803MCJ0>?16:FJE959>2NBM1:16:FJE939>2NBM1816:FJE919>2NBM1616:FJE9?9>2NBN1>17:FJF9776>1OEO2>1?58@LD;9;4<7IGM<01=3>BNJ5;?2:5KIC>21;169GMG:617<0HDL31?58@LD;:94<7IGM<33=3>BNJ5892:5KIC>17;1908;EKA8739?2NBN1<9>69GMG:5?7=0HDL329<4?AOE4;35:6JFB=0=3>BNJ59;245KIC>05?69?2NBN1=>>79GMG:46?1OEO2;>79GMG:26?1OEO29>79GMG:06?1OEO27>79GMG:>6>1OECO30?:8@LHF48:546JFN@>25;>BNFH6:9364DHLB840902NBBL2>7?:8@LHF482546JFN@>2=;199GMKG;:<437IGAA=05:==CAGK7>:07;EKME94?611OECO328<4?AOII58546JFN@>04;>?18:FJJD:4:720HD@N<21=<>BNFH688364DHLB863902NBBL2<6?:8@LHF4:=546JFN@>0<;>717:FJJD:4611OECO341<;?AOII5>:255KIOC?078?3MCEM1:<>99GMKG;<=437IGAA=66:==CAGK78;07;EKME920611OECO349<;?AOII5>22:5KIOC?0;>18:FJJD:29720HD@N<40=<>BNFH6>?364DHLB802902NBBL2:5?:8@LHF4<<546JFN@>63;>`9GMKG;>:0;255KIOC?26803MCEM1817:FJJD:06>1OECO38?58@LHF404<7IGAB=2=<>BNFK6:<364DHLA847902NBBO2>2?:8@LHE489546JFNC>20;>720HD@M<05=<>BNFK6:4364DHLA84?9?2NBBO2>>99GMKD;:9437IGAB=02:==CAGH7>?07;EKMF944611OECL325<;?AOIJ58>255KIO@?638?3MCEN1<8>99GMKD;:1437IGAB=0::2=CAGH7>364DHLA866902NBBO2<1?:8@LHE4:8546JFNC>07;>:18:FJJG:4=720HD@M<24=<>BNFK68;364DHLA86>902NBBO2<9?58@LHE4:437IGAB=63:==CAGH78<07;EKMF925611OECL342<;?AOIJ5>?255KIO@?008?3MCEN1:9>99GMKD;<>437IGAB=6;:==CAGH78408;EKMF92902NBBO2:0?:8@LHE4<;546JFNC>66;>BNFK6>:364DHLA801902NBBO2:8?:8@LHE4<35;6JFNC>6:==CAGH7:=07;EKMF906611OECL3631OECL36?58@LHE4>4<7IGAB=:=3>BNFK622:5KIQC?4;13:2=CAYH7=394DHRA878>3MC[N1=50?58@LVE4:4=7IAN<1<4?AIF48:5;6J@A=32:2=CGH6:>394DNC?56803MEJ0<:17:FLE9726>1OCL2>6?58@JG;9>4<7IAN<0:=3>BHI5;22;5KO@>2:2=CGH69<394DNC?64803MEJ0?<17:FLE9446>1OCL2=4?58@JG;:<4<7IAN<34=3>BHI58<2:5KO@>1<;1409;EMB87803MEJ0>>19:FLE956294<7IAN<23=2>BHI595:6J@A=6=2>BHI5?5:6J@A=4=2>BHI5=5:6J@A=:=2>BHI535:6J@B=2=3>BHJ5;;2:5KOC>25;169GKG:6=7=0HBL317<4?AIE48=5;6J@B=3;:2=CGK6:5384DN@?5;1=08;EMA8779?2NDN1<=>69GKG:5;7=0HBL325<4?AIE4;?5;6J@B=05:2=CGK69;394DN@?6=803MEI0?716:FLF949?2NDN1=?>89GKG:493:5;6J@B=12:3=CGK682;5KOC>7:3=CGK6>2;5KOC>5:3=CGK6<2;5KOC>;:3=CGK622:5KOQC?4;13:2=CGYH7=394DNRA878>3ME[N1=50?58@JVE4:437IAZT@>3:<=CG\^J0<>19:FLQQG;98427IAZT@>26;?89GKPRF48>556J@UUC?508>3ME^XL2>6?;8@JSSI5;<245KOTVB84>912NDYYO318<;?AIR\H6:245KOTVB876912NDYYO320<:?AIR\H69>374DNWWE944601OCXZN<36==>BH]]K7>806;EMVPD:5>730HB[[A=04:<=CG\^J0?619:FLQQG;:0437IAZT@>1:<=CG\^J0>>19:FLQQG;;8427IAZT@>06;?89GKPRF4:>556J@UUC?708>3ME^XL2<6?;8@JSSI59<245KOTVB86>912NDYYO338<;?AIR\H68245KOTVB816912NDYYO340<:?AIR\H6?>374DNWWE924601OCXZN<56==>BH]]K78806;EMVPD:3>730HB[[A=64:<=CG\^J09619:FLQQG;<0437IAZT@>7:<=CG\^J08>19:FLQQG;=8427IAZT@>66;?89GKPRF4<>556J@UUC?108>3ME^XL2:6?;8@JSSI5?<245KOTVB80>912NDYYO358<;?AIR\H6>245KOTVB836912NDYYO360<:?AIR\H6=>3l4DNWWE90429427IAZT@>57;>BH]]K75364DNWWF96912NDYYL311<:?AIR\K6:=374DNWWF975601OCXZM<01==>BH]]H7=906;EMVPG:6=730HB[[B=35:<=CG\^I0<919:FLQQD;91427IAZTC>2=;>15;?89GKPRE4;9556J@UU@?618>3ME^XO2=5?;8@JSSJ58=245KOTVA871912NDYYL329<:?AIR\K695364DNWWF94912NDYYL331<:?AIR\K68=374DNWWF955601OCXZM<21==>BH]]H7?906;EMVPG:4=730HB[[B=15:<=CG\^I0>919:FLQQD;;1427IAZTC>0=;>75;?89GKPRE4=9556J@UU@?018>3ME^XO2;5?;8@JSSJ5>=245KOTVA811912NDYYL349<:?AIR\K6?5364DNWWF92912NDYYL351<:?AIR\K6>=374DNWWF935601OCXZM<41==>BH]]H79906;EMVPG:2=730HB[[B=75:<=CG\^I08919:FLQQD;=1427IAZTC>6=;>9427IAZTC>55;?c9GKPRE4?91<374DNWWF904611OCXZM<7<;?AIR\K6<255KOTVA8=8?3ME^XO26>29FJD511BBDZ__154?LHN\V:;;6GAIU]352=NF@^T;7:KMMQY7=>1BBDZP0758MKOSW9=<7D@FT^2;3>OIA]U;5:5FNHV\4D11BBDZP1758MKOSW8=<7D@FT^3;3>OIA]U:5:5FNHV\5D1D69JJLRX9L=0ECG[_0D4?LHN\V8;;6GAIU]152=NF@^T>?94IOKW[7503@DBXR<;7:KMMQY5=>1BBDZP2758MKOSW;=<7D@FT^0;3>OIA]U95:5FNHV\6D11BBDZP3758MKOSW:=<7D@FT^1;3>OIA]U85:5FNHV\7D1L8;HLJPZ5D?2CEEYQIW\@GBVHQ_RHOJPLPB[VDLO<5_8:R-6=~cWE>0\L\[a:RJJZDR[@NSn6^FN^@VWKGJM?1[_IAAEd9QEHD6>VY8:R]<6b9Q@DBCZLIH0=0l;SFB@ATBKJ6:2n5]D@FGV@ED4;4n7_JNDEPFGF:4294h7_JNDEPFGF:46h1YILJPFHPPPg=UMNINM1>50?;8V@ADMH6;2o5]EFAFF96=8730^HILEC>3:<=U[]K7<7>17:PPPD:7601Y_YL30;2=3>TT\K6;2:5\BHVFVW763ZBYIJQJXUPBGQYIOJo0_E\JG^OJJZUNRL;87^GB_BMOHLUNGGUHDHMD6:QLQWEB?2YYZLBPA69PVSGKWK>0_^\N4:QPVG0<[]K_Y^:4TXRF04=R8&rxxRlck^ofiZabflxjxb| gocwmsceen$emygye^`ooZkbeVmnb"xnlhf-gvruk2_XI_QYIRKAH@5<^JI27[GJW^VZT@5<_LK=7ZKN<1<5?RCF484=7ZKN<3<5?RCF4:4=7ZKN<5<5?RCF4<4=7ZKN<7<;?RCF4>0;2;5XE@>4:6=PMK<0[HL30?48S@D;97<0[HL32?48S@D;;7<0[HL34?48S@D;=7<0[HL36?:8S@D;?3:5:6YJB=5=g>QUA]OTABJJ_@a8SWOSMVGDHHQM1e9[MIOIP$RON->!1!QWQG&7&8*J_NGF6:ZPPIOE?2RXXRIAD69[WQYQKJh0TRM@RD]JJCI13QniSDji;Yfk[Utne_oydaa119[`hYJiceyZh||inl24>^ceVGbbb|Yesqjkk5gcl{k7>3o4aefqe95=8720mij}a=1=5==edbUfi`Qheo]dakcuajUhy|>6:`ooZkbeVmnbR~}il]tmaro9k1i`fQbel]dakYwz`gT{opdp\w6`0naePmdo\c`hX~>U:Su}{129ahnYjmdUbb}{{_cnlgn733kf`S`kb_nwwtprXjeehgo5mlnahI`khzp>n:6lcobiNahiuq%hggRcjm^efjZp0W8&poRokdsc\slbs`4>'oRokds`\slbs`4>'oRocgnpjpmk:8%iTmugPie]tmaro5=&hSlvf_rnbr`Ysqyo6$jUhc`c`n^aoo86+kVnnjl{ct^fbpd;7$jUoe~omld]tewhXja|Tobbc=1.`[aotikfnSzo}n^`krZtffno6#c^jbwZoiblii|20-a\lduXelgTcxzuu]qabuXi4:'oRfns^ofiZir|ySkhs^`>4)eX`hyTaxvPotvsqqYumnyTm0>#c^jbwZkrpVe~x}{{_sgdwZd:8%iTdl}Prde`ad;7$jUcm~Q}efaff86+kVbjR||t`?2(fYoizUyyl20-a\lduX{flinmPiorvpZtbozUj1="l_icp[via|lihSb{{ptv\v`atWk7; nQfnhv\bljbWgkfi0``_bmf[cokmVfdmikk,b]jjlrfWkg1="l_hljpgYqie7; nQfnugqbdebW}s{i0>#c^nleaYnf`~Tjdbj=1.`[hcjW}s{i0>#c^ov|ZvnxlfbbhQ|t`efw86+kVzye`Q{yqg>2)eXzlkoSikti]b940+kVxnmiQkeqvk[g;6>%iT~hok_vkgpmYf5?>'oR|jae]tmaroWk7=8!mPrrv\twohz`~rSl3LE-a\vvrXx{cd~dzv_c?@A)eXzz~Txt~j=R[MG)eXzz~ym`Qn=1.`[wuszhgTn0>#c^qjiZehdecxeb`Pcig`o8GKD%iTy~kPbxvf[rcf59&hSx}j_c{waZqbj4:'oR{|e^ffbdsk|Vnjxl3?,b]vw`Ybkj7; nQzsd]pkcrbkj7; nQxe`]tmaro58&hSzkm_vkgpm;6$jU|~dzj_egspmYf58<'oRy}iug\``vs`Vh6=;"l_vpjp`YjgmoTm0\JAE]EMWUS$jU|~dzj_lmgaZd:_[C_IRHFRRV/gZqua}oT{dj{h^c>21*dW~xbxhQxievk[g;1<%iTtikyibgeehokq4y{mznn2g~5c=edfi`Ahc`rx.ahnYjmdUlicQy7^3/x23:==cagk7==07;ekme976611oeco313<;?aoii5;8255kioc?518?3mcem1?:>99gmkg;9?437igaa=34:==cagk7=507;ekme97>6>1oeco31?:8`lhf4;:546jfn`>15;>bnfh699364dhlb870902nbbl2=7?:8`lhf4;2546jfn`>1=;199gmkg;;<437igaa=15:==cagk7?:07;ekme95?611oeco338<4?aoii59546jfn`>74;>bnfh6?8364dhlb813902nbbl2;6?:8`lhf4==546jfn`>7<;>99gmkg;==437igaa=76:==cagk79;07;ekme930611oeco359<;?aoii5?22:5kioc?1;>18:fjjd:19720hd`n<70=e>bnfh6=?7>18:fjjd:1;7=0hd`n<7<4?aoii5=5;6jfn`>;:2=cagk75364dnwwe96912ndyyo311<:?air|h6:=374dnwwe975601ocxzn<01==>bh}}k7=906;emvpd:6=730hb{{a=35:<=cg|~j0<919:flqqg;91427iazt`>2=;>15;?89gkprf4;9556j`uuc?618>3me~xl2=5?;8`jssi58=245kotvb871912ndyyo329<:?air|h695364dnwwe94912ndyyo331<:?air|h68=374dnwwe955601ocxzn<21==>bh}}k7?906;emvpd:4=730hb{{a=15:<=cg|~j0>919:flqqg;;1427iazt`>0=;>75;?89gkprf4=9556j`uuc?018>3me~xl2;5?;8`jssi5>=245kotvb811912ndyyo349<:?air|h6?5364dnwwe92912ndyyo351<:?air|h6>=374dnwwe935601ocxzn<41==>bh}}k79906;emvpd:2=730hb{{a=75:<=cg|~j08919:flqqg;=1427iazt`>6=;>9427iazt`>55;?c9gkprf4?91<374dnwwe904611ocxzn<7<;?air|h6<255kotvb8=8?3me~xl26>99mcfdraen97ca=8:pbiiihxR:V"ob.s-p7Zhhagc"ob/rrqeh(uid>0~~zn8:ufe96=87<0{ho30?CDu2702JKt?76:G87>4}T=909444=46827610j00:mhoj{o0;3?7n6?66:364>454?>h260_9k530d94?74;>=i57?ned:8`7?>290:60:?>98b882e`bd3^99k4?:082>=g|[<:1>57525595650?k31=lkkc:&12<<5<91]>5852zw104<63|8?>7>4}%072=q26<=51882g?{#:1>1>4;4$2c964o4$37g>4=#:5o4i207>5<#:=k1??=4n36:>5=26=54i3:g>5<#:=k1>5k4n36:>4=26?54i3:a>5<#:=k1>5k4n36:>6=26=54i3f4>5<#:=k1>i64n36:>4=26?54i3f6>5<#:=k1>i64n36:>6=26954i3f1>5<#:=k1>i64n36:>0=26;54i3f3>5<#:=k1>i64n36:>2=26554i3af>5<#:=k1>i64n36:><=26l54i3a`>5<#:=k1>i64n36:>g=26n54i3ab>5<#:=k1>i64n36:>a=26h54i3a4>5<#:=k1>i64n36:>c=26<>4;h0`1?6=,;>j6?j7;o07=?7632c9o94?:%07e?4c02d9844>2:9j6f5=83.98l4=d99m61?=9:10e?m=:18'61g=:m20b?:6:068?l4d93:1(?:n:3f;?k4313;>76g=c183>!43i38o46`=48822>=n:kl1<7*=4`81`==i:=31=:54i3`g>5<#:=k1>i64n36:>4><3`8io7>5$36b>7b?3g8?57?6;:k1fg<72-8?m7oo50;&10d<5l11e>9751c98m7d>290/>9o52e:8j72>28i07do5j>0;6)<;a;0g<>h5<00:i65f2c494?"56=4+25c96a>26?>4;h0a0?6=,;>j6?j7;o07=?4632c9n?4?:%07e?4c02d9844=2:9j6g7=83.98l4=d99m61?=::10e?l?:18'61g=:m20b?:6:368?l4fn3:1(?:n:3f;?k43138>76g=ad83>!43i38o46`=48812>=n:hn1<7*=4`81`==i:=31>:54i3c`>5<#:=k1>i64n36:>7><3`8jn7>5$36b>7b?3g8?57<6;:k1ed<72-8?m7l750;&10d<5l11e>9752c98m7g0290/>9o52e:8j72>2;i07do5i<0;6)<;a;0g<>h5<009i65f2`694?"526>>4;h0b6?6=,;>j6?j7;o07=?5632c9m<4?:%07e?4c02d9844<2:9j6d6=83.98l4=d99m61?=;:10e?7i:18'61g=:m20b?:6:268?l4>m3:1(?:n:3f;?k43139>76g=de83>!43i38o46`=48802>=n:mi1<7*=4`81`==i:=31?:54i3fa>5<#:=k1>i64n36:>6><3`8om7>5$36b>7b?3g8?57=6;:k1`1<72-8?m7n750;&10d<5l11e>9753c98m7db290/>9o52e:8j72>2:i07do5i10;6)<;a;0g<>h5<008i65f28f94?"55<26=54o23;>5<#:=k1?<74n36:>4=26?54o235>5<#:=k1?<74n36:>6=26954o230>5<#:=k1?<74n36:>0=26;54o232>5<#:=k1?<74n36:>2=26554o22e>5<#:=k1?<74n36:><=26l54o22g>5<#:=k1?<74n36:>g=26n54o22a>5<#:=k1?<74n36:>a=26h54o22;>5<#:=k1?<74n36:>c=26<>4;n132?6=,;>j6>?6;o07=?7632e8<84?:%07e?5612d9844>2:9l752=83.98l4<189m61?=9:10c>><:18'61g=;830b?:6:068?j57:3:1(?:n:23:?k4313;>76a<0083>!43i39:56`=48822>=h;9:1<7*=4`805<=i:=31=:54o3df>5<#:=k1?<74n36:>4><3f8mh7>5$36b>67>3g8?57?6;:m1bf<72-8?m7=>9:l10<<6i21d>kl50;&10d<4901e>9751c98k7`f290/>9o530;8j72>28i07bi5n10;6)<;a;12=>h5<00:i65`2g594?"526?>4;n0e1?6=,;>j6>?6;o07=?4632e9j>4?:%07e?5612d9844=2:9l6c4=83.98l4<189m61?=::10c?h>:18'61g=;830b?:6:368?j4a83:1(?:n:23:?k43138>76a=eg83>!43i39:56`=48812>=h:lo1<7*=4`805<=i:=31>:54o3gg>5<#:=k1?<74n36:>7><3f8no7>5$36b>67>3g8?57<6;:m1ag<72-8?m7=>9:l10<<5i21d>ho50;&10d<4901e>9752c98k7c?290/>9o530;8j72>2;i07bi5m?0;6)<;a;12=>h5<009i65`2d794?"526>>4;n0f7?6=,;>j6>?6;o07=?5632e9i?4?:%07e?5612d9844<2:9l6`7=83.98l4<189m61?=;:10c?k?:18'61g=;830b?:6:268?j4cn3:1(?:n:23:?k43139>76a<1d83>!43i39:56`=48802>=h;8n1<7*=4`805<=i:=31?:54o23`>5<#:=k1?<74n36:>6><3f9:n7>5$36b>67>3g8?57=6;:m050<72-8?m7=>9:l10<<4i21d?=o50;&10d<4901e>9753c98k7`a290/>9o530;8j72>2:i07bi5m00;6)<;a;12=>h5<008i65`2eg94?"5:183!41=38=46F=809K631=6=44}c052?6=9;21?76n{I053>"5><095=5U388g2<228n1j7?8:985>4c=990:47?n:0`9536g=5983>!43i38>;6`=4883?>o5==0;6)<;a;067>h5<00;76g=7283>!43i38<>6`=4883?>o5?80;6)<;a;046>h5<00:76g=7183>!43i38<>6`=4881?>o5>o0;6)<;a;046>h5<00876g=6d83>!43i38<>6`=4887?>o5>m0;6)<;a;046>h5<00>76g=6b83>!43i38<>6`=4885?>o5>k0;6)<;a;046>h5<00<76g=5;29 72f2;>0b?:6:198m75=83.98l4=4:l10<<632c9>7>5$36b>7226?54i3394?"5oc83:1(?:n:bd8j72>2910enk50;&10d;:k``?6=,;>j6nh4n36:>7=h5<00876gla;29 72f2jl0b?:6:598mf?=83.98l4lf:l10<<232ch47>5$36b>f`26;54ib594?"5od>3:1(?:n:bd8j72>2110en;50;&10dj6nh4n36:>d=h5<00i76gl2;29 72f2jl0b?:6:b98mf7=83.98l4lf:l10<5$36b>f`26h54icg94?"5oel3:1(?:n:bd8j72>28:07dll:18'61g=ko1e>9751098mgd=83.98l4lf:l10<<6:21bnl4?:%07e?ea3g8?57?<;:ka=?6=,;>j6nh4n36:>42<3`h36=4+25c9gc=i:=31=854ic594?"5=nj?0;6)<;a;ae?k4313;<76gm4;29 72f2jl0b?:6:0:8?ld4290/>9o5cg9m61?=9010eo<50;&10da:9jf4<72-8?m7mi;o07=?7e32ci<7>5$36b>f`265<#:=k1ok5a25;95a=h5<00:i65fae83>!43i3im7c<;9;3e?>ofk3:1(?:n:bd8j72>2;:07dom:18'61g=ko1e>9752098md?=83.98l4lf:l10<<5:21bm54?:%07e?ea3g8?57<<;:kb3?6=,;>j6nh4n36:>72<3`k=6=4+25c9gc=i:=31>854i`794?"5=ni=0;6)<;a;ae?k43138<76gn3;29 72f2jl0b?:6:3:8?lg5290/>9o5cg9m61?=:010el?50;&10d5$36b>f`26?m4;h;g>5<#:=k1ok5a25;96a=h5<009i65f9c83>!43i3im7c<;9;0e?>o>i3:1(?:n:bd8j72>2::07d76:18'61g=ko1e>9753098m<>=83.98l4lf:l10<<4:21b5:4?:%07e?ea3g8?57=<;:k:2?6=,;>j6nh4n36:>62<3`3>6=4+25c9gc=i:=31?854ie694?"5=nl:0;6)<;a;ae?k43139<76gk2;29 72f2jl0b?:6:2:8?lb6290/>9o5cg9m61?=;010enl50;&10d5$36b>f`26>m4;hcb>5<#:=k1ok5a25;97a=h5<008i65f9583>!43i3im7c<;9;1e?>o5=h0;6)<;a;06=>h5<00;76g=5783>!43i38>96`=4883?>o5?m0;6)<;a;04g>h5<00;76g=7c83>!43i38o5?h0;6)<;a;04g>h5<00976g=7883>!43i38o5?10;6)<;a;04g>h5<00?76g=7683>!43i38o5??0;6)<;a;04g>h5<00=76g=7483>!43i38o483:1(?:n:3d8j72>2910e?k50;&10d<5n2d9844>;:k1`?6=,;>j6?h4n36:>7=h5<00876g>1083>!43i3;:<6`=4883?>o68o0;6)<;a;324>h5<00:76g>0d83>!43i3;:<6`=4881?>o68m0;6)<;a;324>h5<00876g>0c83>!43i3;:<6`=4887?>o68h0;6)<;a;324>h5<00>76g>0883>!43i3;:<6`=4885?>o6810;6)<;a;324>h5<00<76g>0683>!43i3;:<6`=488;?>o68?0;6)<;a;324>h5<00276g>0483>!43i3;:<6`=488b?>o68=0;6)<;a;324>h5<00i76g>0283>!43i3;:<6`=488`?>o68;0;6)<;a;324>h5<00o76g>0183>!43i3;:<6`=488f?>oan3:1(?:n:033?k4313l07dhj:18'61g=98:0b?:6:028?l`c290/>9o51028j72>28;07dhl:18'61g=98:0b?:6:008?l`e290/>9o51028j72>28907dhn:18'61g=98:0b?:6:068?l`>290/>9o51028j72>28?07dh7:18'61g=98:0b?:6:048?l`0290/>9o51028j72>28=07dh::18'61g=98:0b?:6:0:8?l`3290/>9o51028j72>28307dh<:18'61g=98:0b?:6:0c8?l`5290/>9o51028j72>28h07dh>:18'61g=98:0b?:6:0a8?l`7290/>9o51028j72>28n07dki:18'61g=98:0b?:6:0g8?lcb290/>9o51028j72>28l07dkk:18'61g=98:0b?:6:328?lcd290/>9o51028j72>2;;07dkn:18'61g=98:0b?:6:308?lc>290/>9o51028j72>2;907dk7:18'61g=98:0b?:6:368?lc0290/>9o51028j72>2;?07dk9:18'61g=98:0b?:6:348?lc2290/>9o51028j72>2;=07dk;:18'61g=98:0b?:6:3:8?lc4290/>9o51028j72>2;307dk=:18'61g=98:0b?:6:3c8?lc6290/>9o51028j72>2;h07dji:18'61g=98:0b?:6:3a8?lbb290/>9o51028j72>2;n07djk:18'61g=98:0b?:6:3g8?lbd290/>9o51028j72>2;l07djm:18'61g=98:0b?:6:228?lbf290/>9o51028j72>2:;07dj6:18'61g=98:0b?:6:208?lb?290/>9o51028j72>2:907dj8:18'61g=98:0b?:6:268?lb1290/>9o51028j72>2:?07d?>5;29 72f28;;7c<;9;15?>o69=0;6)<;a;324>h5<008;65f10194?"526>74;h33g?6=,;>j60:l10<<4k21bio4?:%07e?7682d98440:l10<<4m21bh84?:%07e?7682d98445;h00`?6=3`88o7>5;n3bj65$36b>4g03g8?57?4;n3b1?6=,;>j65$36b>4g03g8?57=4;n3b6?6=,;>j65$36b>4g03g8?57;4;n3b4?6=,;>j65$36b>4g03g8?5794;n3:a?6=,;>j6<3f;2h7>5$36b>4g03g8?5774;n3:g?6=,;>j65$36b>4g03g8?57l4;n3:e?6=,;>j65$36b>4g03g8?57j4;n3:3?6=,;>j65$36b>4g03g8?57h4;n3:1?6=,;>j61:9l5<5=83.98l4>a69m61?=9;10c<7=:18'61g=9h=0b?:6:018?j7>93:1(?:n:0c4?k4313;?76a>9183>!43i3;j;6`=48821>=h91l1<7*=4`82e2=i:=31=;54o0:f>5<#:=k1=l94n36:>41<3f;3o7>5$36b>4g03g8?57?7;:m21e>9751`98k4>>290/>9o51`58j72>28h07b?78;29 72f28k<7c<;9;3`?>i60>0;6)<;a;3b3>h5<00:h65`19494?"56=4+25c95d126j64?:%07e?7f?2d9844=1:9l5=7=83.98l4>a69m61?=:;10c<6?:18'61g=9h=0b?:6:318?j70n3:1(?:n:0c4?k43138?76a>7d83>!43i3;j;6`=48811>=h9>n1<7*=4`82e2=i:=31>;54o05`>5<#:=k1=l94n36:>71<3f;5$36b>4g03g8?57<7;:m23d<72-8?m7?n7:l10<<5121d=:750;&10d<6i>1e>9752`98k41?290/>9o51`58j72>2;h07b?86;29 72f28k<7c<;9;0`?>i6?<0;6)<;a;3b3>h5<009h65`16694?"526?h4;n346?6=,;>j6a69m61?=;;10c<8i:18'61g=9h=0b?:6:218?j71m3:1(?:n:0c4?k43139?76a>6e83>!43i3;j;6`=48801>=h9hi1<7*=4`82e2=i:=31?;54o0ca>5<#:=k1=l94n36:>61<3f;jm7>5$36b>4g03g8?57=7;:m2e<<72-8?m7?n7:l10<<4121d=l=50;&10d<6i>1e>9753`98k4??290/>9o51`58j72>2:h07b?7d;29 72f28k<7c<;9;1`?>i60;0;6)<;a;3b3>h5<008h65`16594?"526>h4;n3f=?6=,;>j65$36b>4c?3g8?57?4;n3f2?6=,;>j65$36b>4c?3g8?57=4;n3f7?6=,;>j67>5$36b>4c?3g8?57;4;n3f5?6=,;>j65$36b>4c?3g8?5794;n3gb?6=,;>j6<3f;oi7>5$36b>4c?3g8?5774;n3g`?6=,;>j65$36b>4c?3g8?57l4;n3gf?6=,;>j65$36b>4c?3g8?57j4;n3gj65$36b>4c?3g8?57h4;n3g2?6=,;>j61:9l5a2=83.98l4>e99m61?=9;10cd083>!43i3;n46`=48821>=h9m:1<7*=4`82a==i:=31=;54o0ae>5<#:=k1=h64n36:>41<3f;hh7>5$36b>4c?3g8?57?7;:m2gf<72-8?m7?j8:l10<<6121d=nl50;&10d<6m11e>9751`98k4ef290/>9o51d:8j72>28h07b?l9;29 72f28o37c<;9;3`?>i6k10;6)<;a;3f<>h5<00:h65`1b594?"526j6e99m61?=:;10c:18'61g=9l20b?:6:318?j7d83:1(?:n:0g;?k43138?76a>bg83>!43i3;n46`=48811>=h9ko1<7*=4`82a==i:=31>;54o0`g>5<#:=k1=h64n36:>71<3f;io7>5$36b>4c?3g8?57<7;:m2fg<72-8?m7?j8:l10<<5121d=oo50;&10d<6m11e>9752`98k4d>290/>9o51d:8j72>2;h07b?m7;29 72f28o37c<;9;0`?>i6j?0;6)<;a;3f<>h5<009h65`1c794?"526?h4;n3a7?6=,;>j6e99m61?=;;10cad83>!43i3;n46`=48801>=h9ln1<7*=4`82a==i:=31?;54o0g`>5<#:=k1=h64n36:>61<3f;nn7>5$36b>4c?3g8?57=7;:m2ad<72-8?m7?j8:l10<<4121d=h:50;&10d<6m11e>9753`98k4b>290/>9o51d:8j72>2:h07b?le;29 72f28o37c<;9;1`?>i6k:0;6)<;a;3f<>h5<008h65`1c:94?"526>h4;n065?6=,;>j6?;?;o07=?6<3f8?j7>5$36b>7373g8?57?4;n07a?6=,;>j6?;?;o07=?4<3f8?h7>5$36b>7373g8?57=4;n06f?6=3f?:6=44b3:0>5<6290;w)<95;05<>N5081C>;94o365>5<7>51;294~"5><0:j<5G2938L7003f;m<7>5;|`064<72hk1<7>t$346>72d3A83=6F=669Y7<=4>1;31>42=9<0j6o4l:e8~ 7222:8;7)?i2;68 4`42=1/=k:54:&2b0<33-;m:7:4$0d4>1=#9o2186*>f887?!7ai3>0("5880?7)=:54:&140<33-8;:7:4$324>1=#:92186*=0887?!47i3>0(?>m:59'65e=<2.9"5980?7)<>2;68 7742=1/><:54:&150<33-8::7:4$334>1=#:82186*=1887?!46i3>0(??m:59'64e=<2.9=i4;;%02a?2<,;;m695+23290>"5:80?7)<=2;68 7442=1/>?:54:&160<33-89:7:4$304>1=#:;2186*=2887?!45i3>0(?i4;;%01a?2<,;8m695+22290>"5;80?7)<<2;68 7542=1/>>:54:&170<33-88:7:4$314>1=#::2186*=3887?!44i390(?=m:29'60c=;>1/>;>53:&124<43-85;h3fb?6=3`8=>7>5;h057?6=3`8=m7>5;h040?6=3`8i6=4+25c96d=i:=31<65f2883>!43i38j7c<;9;38?l4?290/>9o52`9m61?=:21b>:4?:%07e?4f3g8?57=4;h05>5<#:=k1>l5a25;90>=n:<0;6)<;a;0b?k4313?07d<<:18'61g=:h1e>9756:9j67<72-8?m7!43i39>7c<;9;28?l53290/>9o5349m61?=921b?>4?:%07e?523g8?57<4;h11>5<#:=k1?85a25;97>=n;80;6)<;a;16?k4313>07d=?:18'61g=;<1e>9755:9j6`<72-8?m7=:;o07=?0<3`8o6=4+25c970=i:=31;65f2b83>!43i39>7c<;9;:8?l0e290/>9o56`9m61?=821b:44?:%07e?0f3g8?57?4;h44>5<#:=k1:l5a25;96>=n>?0;6)<;a;4b?k4313907d8::18'61g=>h1e>9754:9j21<72-8?m78n;o07=?3<3`<86=4+25c92d=i:=31:65f6383>!43i39o56`9m61?=021b:=4?:%07e?0f3g8?5774;h7e>5<#:=k1:l5a25;9e>=n=l0;6)<;a;4b?k4313h07d;l:18'61g=>h1e>975c:9j1g<72-8?m78n;o07=?b<3`?j6=4+25c92d=i:=31i65f5883>!43i39o56`9m61?=9910e8950;&10d<1i2d9844>1:9j13<72-8?m78n;o07=?7532c>97>5$36b>3g26<=4;h77>5<#:=k1:l5a25;951=h5<00:965f7383>!43i3o093:1(?:n:7c8j72>28=07d9?:18'61g=>h1e>9751998m3`=83.98l49a:l10<<6121b:h4?:%07e?0f3g8?57?n;:k5`?6=,;>j6;o4n36:>4d<3`=n=m0;6)<;a;4b?k4313;n76g:2;29 72f2?k0b?:6:0d8?l>d290/>9o58c9m61?=821b4l4?:%07e?>e3g8?57?4;h:;>5<#:=k14o5a25;96>=n0>0;6)<;a;:a?k4313907d69:18'61g=0k1e>9754:9j<0<72-8?m76m;o07=?3<3`2?6=4+25c9!43i32i7c<;9;58?l>5290/>9o58c9m61?=021b4<4?:%07e?>e3g8?5774;h:3>5<#:=k14o5a25;9e>=n?o0;6)<;a;:a?k4313h07d9k:18'61g=0k1e>975c:9j3f<72-8?m76m;o07=?b<3`=i6=4+25c9!43i32i7c<;9;d8?l1>290/>9o58c9m61?=9910e:650;&10d1:9j32<72-8?m76m;o07=?7532c<:7>5$36b>=d26<=4;h56>5<#:=k14o5a25;951=>1<7*=4`8;f>h5<00:965f9283>!43i32i7c<;9;35?>o>:3:1(?:n:9`8j72>28=07d7>:18'61g=0k1e>9751998m<6=83.98l47b:l10<<6121b4k4?:%07e?>e3g8?57?n;:k;a?6=,;>j65l4n36:>4d<3`2o6=4+25c9=n?l0;6)<;a;:a?k4313;n76g83;29 72f21h0b?:6:0d8?l76i3:1(?:n:03:?k4313:07d?>8;29 72f28;27c<;9;38?l76?3:1(?:n:03:?k4313807d?>6;29 72f28;27c<;9;18?l76n3:1(?:n:03f?k4313:07d?>d;29 72f28;n7c<;9;38?l76k3:1(?:n:03f?k4313807d?>b;29 72f28;n7c<;9;18?j7413:1(?:n:01;?k4313:07b?<7;29 72f28937c<;9;38?j74=3:1(?:n:01;?k4313807b?<4;29 72f28937c<;9;18?j74;3:1(?:n:01;?k4313>07b?<2;29 72f28937c<;9;78?j7493:1(?:n:01;?k4313<07b?<0;29 72f28937c<;9;58?j75n3:1(?:n:01;?k4313207b?=e;29 72f28937c<;9;;8?j75l3:1(?:n:01;?k4313k07b?=c;29 72f28937c<;9;`8?j75i3:1(?:n:01;?k4313i07b?=9;29 72f28937c<;9;f8?j7503:1(?:n:01;?k4313o07b?=7;29 72f28937c<;9;d8?j75>3:1(?:n:01;?k4313;;76a>2483>!43i3;846`=48825>=h9;>1<7*=4`827==i:=31=?54o000>5<#:=k1=>64n36:>45<3f;9>7>5$36b>45?3g8?57?;;:m264<72-8?m7?<8:l10<<6=21d=9>50;&10d<6;11e>9751798k45a290/>9o512:8j72>28=07b?i6;m0;6)<;a;30<>h5<00:565`12a94?"526j6<=7;o07=?7d32e:?;4?:%07e?7402d9844>d:9l57d=83.98l4>399m61?=9l10c<3:1(?:n:046?k4313:07b?94;29 72f28<>7c<;9;38?j71;3:1(?:n:046?k4313807b?92;29 72f28<>7c<;9;18?j72i3:1(?:n:07:?k4313:07b?:8;29 72f28?27c<;9;38?j72>3:1(?:n:07:?k4313807b?:5;29 72f28?27c<;9;18?j72<3:1(?:n:07:?k4313>07b?:3;29 72f28?27c<;9;78?j72:3:1(?:n:07:?k4313<07b?:1;29 72f28?27c<;9;58?j7283:1(?:n:07:?k4313207b?;f;29 72f28?27c<;9;;8?j73m3:1(?:n:07:?k4313k07b?;d;29 72f28?27c<;9;`8?j73j3:1(?:n:07:?k4313i07b?;a;29 72f28?27c<;9;f8?j7313:1(?:n:07:?k4313o07b?;8;29 72f28?27c<;9;d8?j73?3:1(?:n:07:?k4313;;76a>4783>!43i3;>56`=48825>=h9=?1<7*=4`821<=i:=31=?54o067>5<#:=k1=874n36:>45<3f;??7>5$36b>43>3g8?57?;;:m207<72-8?m7?:9:l10<<6=21d=;?50;&10d<6=01e>9751798k407290/>9o514;8j72>28=07b?:f;29 72f28?27c<;9;3;?>i6=l0;6)<;a;36=>h5<00:565`14f94?"526j6<;6;o07=?7d32e:9:4?:%07e?7212d9844>d:9l51e=83.98l4>589m61?=9l10c<:>:18'61g=9<30b?:6:0d8?j71j3:1(?:n:04b?k4313:07b?99;29 72f28uQ24:896462;<970==1;057>{t:?h1<7=t^34a?855938=m63<208131=z{;?1<7=t^37896462;<01><>:238yv442908wS<<;<115?423499=7=?;|q16?6=;rT9>63<20817>;4:809i6s|2083>6}Y:816???5239>777=:m1vi>50;0xZa6<5:8:65m4}raf>5<5sWin70==1;:b?xudl3:1>vPld:?064<>:948yve>2909wSm6;<115?>23tyh47>52z\`<>;4:80386s|c683>7}Yk>16???5829~wf0=838pRn84=202>=46=4={_a6?855932:7p}l4;296~Xd<278><470:pg6<72;qUo>5233393c=z{j81<7n0q~m>:181[e63499=79l;|qab?6=:rTij63<2084f>{tjl0;6?uQbd9>777=?h1voj50;0xZgb<5:8:6:74}r``>5<5sWhh70==1;5;?xuej3:1>vPmb:?064<0?2wxnl4?:3y]fd=:;;;1;;5rsc;94?4|Vk301><>:678yvd?2909wSl7;<115?133tyi;7>52z\a3>;4:802?6s|b783>7}Yj?16???5939~wg2=838pRo:4=202><7<47f:pf4<72;qUn<523339<`=z{k:1<7{tim0;6?uQae9>777=?:1vlm50;0xZde<5:8:6;l4}rca>5<5sWki70==1;4:?xuf13:1>vPn9:?064<1?2wxm54?:3y]e==:;;;1:;5rs`594?4|Vh=01><>:778yvg12909wSo9;<115?033tyj97>52z\b1>;4:80=?6s|a583>7}Yi=16???5639~wd5=838pRl=4=202>37<4:f:pe5<72;qUm=5233391`=z{0o1<7{t1k0;6?uQ9c9>777==01v4o50;0xZ5<5sW3270==1;74?xu>03:1>vP68:?064<2>2wx5:4?:3y]=2=:;;;1985rs8494?4|V0<01><>:468yv?22909wS7:;<115?343tyo87>52z\g0>;4:80<>6s|d283>7}Yl:16???5709~wa4=838pRi<4=202>26<49e:pg5<72;qUo=5233392a=z{k?1<7{t1=0;6?uQ959>777==;1v9?50;1xZ17<5:8:69?4=202>1053z\2a`=:;;;1=hk4=202>4ca3ty:m54?:3y]5d><5:8:6<;n;|q2e3<72;qU=l84=202>43?3ty:m84?:3y]5d3<5:8:6<;9;|q2e1<72;qU=l:4=202>4323ty:m?4?:3y]5d4<5:8:6<;;;|q2e4<72;qU=l?4=202>4343ty:m=4?:3y]5d6<5:8:6<;=;|q2=c<72;qU=4h4=202>4363ty:5h4?:3y]542a3ty:5n4?:3y]542c3ty:5l4?:3y]542f3ty:5:4?:3y]5<1<5:8:6<:6;|q2=3<72;qU=484=202>42?3ty:584?:3y]5<3<5:8:6<:8;|q2=1<72;qU=4:4=202>4213ty:5>4?:3y]5<5<5:8:6<::;|q2=7<72;qU=4<4=202>4233ty:5<4?:3y]5<7<5:8:6<:<;|q2=5<72;qU=4>4=202>4253ty:4k4?:3y]5=`<5:8:6<8>;|q2<`<72;qU=5k4=202>4073ty:4n4?:3y]5=e<5:8:6<;i;|q243b3ty:4l4?:3y]5=g<5:8:6<;k;|q2<<<72;qU=574=202>43d3ty:454?:3y]5=><5:8:6<;m;|q2<2<72;qU=594=202>4303ty:4;4?:3y]5=0<5:8:6<:l;|q2<0<72;qU=5;4=202>4263ty:494?:3y]5=2<5:8:6<=6;|q2<6<72;qU=5=4=202>4503ty:4<4?:3y]5=7<5:8:6<=:;|q2<5<72;qU=5>4=202>4533ty:;k4?:3y]52`<5:8:6<=<;|q23`<72;qU=:k4=202>4553ty:;i4?:3y]52b<5:8:6<=>;|q23f<72;qU=:m4=202>4573ty:;o4?:3y]52d<5:8:6<44b3ty:;44?:3y]52?<5:8:6<44d3ty:;;4?:3y]520<5:8:6<44>3ty:;94?:3y]522<5:8:6<<7;|q236<72;qU=:=4=202>4403ty:;?4?:3y]524<5:8:6<<9;|q234<72;qU=:?4=202>4423ty:;=4?:3y]526<5:8:6<<;;|q22c<72;qU=;h4=202>4443ty::h4?:3y]53c<5:8:6<<=;|q22a<72;qU=;j4=202>4463ty:mn4?:3y]5de<5:8:6<:?;|q2eg<72;qU=ll4=202>45a3ty:ml4?:3y]5dg<5:8:6<=j;|q2e<<72;qU=l74=202>45c3ty:m>4?:3y]5d5<5:8:6<=l;|q2==<72;qU=464=202>45e3ty:4i4?:3y]5=b<5:8:6<=n;|q2<7<72;qU=5<4=202>4513ty:;:4?:3y]521<5:8:6<4473ty98>4?:3y>6=5=:=<01><>:3a8yv36290>4v3=8382b5=Y=81U>8l4^372?[43n2T98h5Q25f8964628;=70==1;323>;4:80:=552333954g<5:8:6<4>1e9>777=98l01><>:35896462:801><>:3:896462:901><>:3;896462:>01><>:3`896462:<0Rc29]5fcX6il1U=lh4^0`3?[7e92T:n?5Q1c18Z4d33W;i96P>b79]5g1X6jo1U=n>4^0a2?[7d:2T:o95Q1b78Z4e13W;h;6P>c99]5f?X6l81U=i<4^0f0?[7c<2T:h85Q1e48Z4b03W;o46P>d`9]5adX6m;1U=h=4^0g6?[7b>2T:i:5Q1d;8yxu5<:0;69u22919610<5;<=6?;;;<052?42>279:;4>ed9~w7bb2909wSj1v?k6:181[4b1279:;4>769~w7`32909wS8e9~w66f2909wS=?a:?123<6111v>?::181[56=279:;4>a29~w67e2909wS=>b:?123<6i01v>?l:181[56k279:;4>a`9~w67c2909wS=>d:?123<6ik1v>?j:181[56m279:;4>ab9~w7ba2909wSm1v?k?:181[4b8279:;4>6d9~w7c62909wSo1v?k=:181[4b:279:;4>719~w7c42909wS739~w7c22909wS279:;4>759~w7c02909wS779~w7cf2909wS789~w7cd2909wS7c9~w7cb2909wS7e9~w7`72909wS:181[4a9279:;4>7g9~w7`52909wS809~w7`22909wS279:;4>859~w7`02909wS879~w7`>2909wS1v?hn:181[4ai279:;4>899~w7`e2909wS8`9~w7`c2909wS8b9~w6672909wS=?0:?123<60l1v>>>:181[579279:;4>8g9~w6652909wS=?2:?123<6191v>><:181[57;279:;4>909~w6632909wS=?4:?123<61;1v>>::181[57=279:;4>929~w6612909wS=?6:?123<61=1v>>8:181[57?279:;4>949~w66?2909wS=?8:?123<61?1v>>6:181[571279:;4>969~w66e2909wS=?b:?123<6101v>>l:181[57k279:;4>9`9~w66c2909wS=?d:?123<61k1v>>j:181[57m279:;4>9b9~w66a2909wS=?f:?123<61m1v>??:181[568279:;4>9d9~w6762909wS=>1:?123<61o1v>?=:181[56:279:;4>a19~w6742909wS=>3:?123<6i81v>?;:181[56<279:;4>a39~w6712909wS=>6:?123<6i=1v>?8:181[56?279:;4>a49~w67?2909wS=>8:?123<6i?1v>?n:181[56i279:;4>a99~w7?d2909wS<6c:?123<392wx>4j50;0xZ7?c348=:77;;|q1e=<72;qU>l64=345><`52z\1f6=::?<1ml5rs3`f>5<5sW8ii63=678a1>{t:j31<73i;7p}=d583>7}Y:m>01?89:b`8yv4ci3:1>vP=d`9>630=l81v?jm:181[4cj279:;4k2:p6ae=838pR?jl;<052?b43ty9hi4?:3y]6ab<5;<=6i:4}r0:a?6=:rT95h522749=0=z{;3m6=4={_0:b>;5>?02:6s|2`294?4|V;k;70<96;;4?xu5i80;6?uQ2`3897012020q~;85989~w7g42909wSi2wx>l:50;0xZ7g3348=:77m;|q1e0<72;qU>l;4=345>52z\1e3=::?<15i5rs3c4>5<5sW8j;63=678:a>{t:h31<73k;7p}=a`83>7}Y:hk01?89:`38yv4fj3:1>vP=ac9>630=i;1v?ol:181[4fk279:;4n3:p6db=838pR?ok;<052?g33ty9mh4?:3y]6dc<5;<=6l;4}r0bb?6=:rT9mk522749e3=z{;h;6=4={_0a4>;5>?0j;6s|2c394?4|V;h:70<96;c;?xu5j;0;6?uQ2c0897012h30q~;85ac9~w7d22909wSo850;0xZ7d1348=:7ok;|q1f2<72;qU>o94=345>dc52z\1f==::?<1mk5rs3`:>5<5sW8i563=678a4>{t:kk1<73h:7p}=bc83>7}Y:kh01?89:c08yv4ek3:1>vP=bb9>630=j:1v?lk:181[4el279:;4m4:p6g`=838pR?li;<052?d13ty9o=4?:3y]6f6<5;<=6o94}r0`5?6=:rT9o<522749f==z{;i96=4={_0`6>;5>?0i56s|2b194?4|V;i870<96;`b?xu5k=0;6?uQ2b6897012kh0q~;85bb9~w7e12909wSn950;0xZ7e0348=:7lj;|q1g=<72;qU>n64=345>g`52z\1gd=::?<1o<5rs3aa>5<5sW8hn63=678`6>{t:ji1<73i87p}=ce83>7}Y:jn01?89:b68yv4dm3:1>vP=cd9>630=k<1v?mi:181[4dn279:;4l6:p6a6=838pR?j?;<052?e03ty9h<4?:3y]6a7<5;<=6n64}r0g6?6=:rT9h?522749g<=z{;n86=4={_0g7>;5>?0hm6s|2e794?4|V;n>70<96;a`?xu5l?0;6?uQ2e4897012jn0q~16>;85cd9~w7b>2909wS5l50;0xZ7>e348=:7<>;|q15m4=345>7452z\1>5rs3:e>5<5sW83j63=67811>{t;;>1<77t^207?841>38:>4=345>70a348=:7<9e:?123<5>m16>;8527a897012;7}Y;;801?89:37;?x{i:o<1<70;6?uG2758yk4a03:1>vF=669~j7`>2909wE<97:m6cg=838pD?88;|l1bg<72;qC>;94}o0eg?6=:rB9::5rn3dg>5<5sA8=;6sa2gg94?4|@;<<7p`=fg83>7}O:?=0qc=?0;296~N5>>1vb>>>:181M41?2we?=<50;0xL7003td8<>4?:3yK63152zJ122=zf::>6=4={I053>{i;9<1<70;6?uG2758yk5703:1>vF=669~j66>2909wE<97:m75g=838pD?88;|l04g<72;qC>;94}o13g?6=:rB9::5rn22g>5<5sA8=;6sa31g94?4|@;<<7p`<0g83>7}O:?=0qc=>0;296~N5>>1vb>?>:181M41?2we?<<50;0xL7003td8=>4?:3yK63152zJ122=zf:;>6=4={I053>{i;8<1<70;6?uG2758yk5603:1>vF=669~j67>2909wE<97:m74g=838pD?88;|l05g<72;qC>;94}o12g?6=:rB9::5rn23g>5<5sA8=;6sa30g94?4|@;<<7p`<1g83>7}O:?=0qc==0;296~N5>>1vb><>:181M41?2we??<50;0xL7003td8>>4?:3yK63152zJ122=zf:8>6=4={I053>{i;;<1<70;6?uG2758yk5503:1>vF=669~j64>2909wE<97:m77g=838pD?88;|l06g<72;qC>;94}o11g?6=:rB9::5rn20g>5<5sA8=;6sa33g94?4|@;<<7p`<2g83>7}O:?=0qc=<0;296~N5>>1vb>=>:181M41?2we?><50;0xL7003td8?>4?:3yK63152zJ122=zf:9>6=4={I053>{i;:<1<70;6?uG2758yk5403:1>vF=669~j65>2909wE<97:m76g=838pD?88;|l07g<72;qC>;94}o10g?6=:rB9::5rn21g>5<5sA8=;6sa32g94?4|@;<<7p`<3g83>7}O:?=0qc=;0;296~N5>>1vb>:>:181M41?2we?9<50;0xL7003td88>4?:3yK63152zJ122=zf:>>6=4={I053>{i;=<1<70;6?uG2758yk5303:1>vF=669~j62>2909wE<97:m71g=838pD?88;|l00g<72;qC>;94}o17g?6=:rB9::5rn26g>5<5sA8=;6sa35g94?4|@;<<7p`<4g83>7}O:?=0qc=:0;296~N5>>1vb>;>:181M41?2we?8<50;0xL7003td89>4?:3yK63187>52zJ122=zf:?>6=4={I053>{i;<<1<70;6?uG2758yk5203:1>vF=669~j63>2909wE<97:m70g=838pD?88;|l01g<72;qC>;94}o16g?6=:rB9::5rn27g>5<5sA8=;6sa34g94?4|@;<<7p`<5g83>7}O:?=0qc=90;296~N5>>1vb>8>:181M41?2we?;<50;0xL7003td8:>4?:3yK63152zJ122=zf:<>6=4={I053>{i;?<1<7>0;6?uG2758yk5103:1>vF=669~j60>2909wE<97:m73g=838pD?88;|l02g<72;qC>;94}o15g?6=:rB9::5rn24g>5<5sA8=;6sa37g94?4|@;<<7p`<6g83>7}O:?=0qc=80;296~N5>>1vb>9>:181M41?2we?:<50;0xL7003td8;>4?:3yK63152zJ122=zf:=>6=4={I053>{i;><1<70;6?uG2758yk5003:1>vF=669~j61>2909wE<97:m72g=838pD?88;|l03g<72;qC>;94}o14g?6=:rB9::5rn25g>5<5sA8=;6sa2g694?7|@;<<7p`=f483>4}O:?=0qpsr@AAx05>= + + BLOCK + 2015-2-1T10:47:44 + + + + + + + + blockMemory + + + + + + + + + + + + + + + Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.xise =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.xise (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.xise (revision 5) @@ -0,0 +1,386 @@ + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index: trunk/rtl/vhdl/mod_exp/blockMemory64/xlnx_auto_0_xdb =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/xlnx_auto_0_xdb (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/xlnx_auto_0_xdb (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory64/xlnx_auto_0_xdb Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory64/gen_blockMemory.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/gen_blockMemory.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/gen_blockMemory.tcl (revision 5) @@ -0,0 +1,37 @@ +## +## Core Generator Run Script, generator for Project Navigator regen command +## + +proc findRtfPath { relativePath } { + set xilenv "" + if { [info exists ::env(XILINX) ] } { + if { [info exists ::env(MYXILINX)] } { + set xilenv [join [list $::env(MYXILINX) $::env(XILINX)] $::xilinx::path_sep ] + } else { + set xilenv $::env(XILINX) + } + } + foreach path [ split $xilenv $::xilinx::path_sep ] { + set fullPath [ file join $path $relativePath ] + if { [ file exists $fullPath ] } { + return $fullPath + } + } + return "" +} + +source [ findRtfPath "data/projnav/scripts/dpm_cgUtils.tcl" ] + +set result [ run_cg_regen "blockMemory" xc3s500e-5fg320 VHDL CURRENT ] + +if { $result == 0 } { + puts "Core Generator regen command completed successfully." +} elseif { $result == 1 } { + puts "Core Generator regen command failed." +} elseif { $result == 3 || $result == 4 } { + # convert 'version check' result to real return range, bypassing any messages. + set result [ expr $result - 3 ] +} else { + puts "Core Generator regen cancelled." +} +exit $result Index: trunk/rtl/vhdl/mod_exp/blockMemory64/_xmsgs/cg.xmsgs =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/_xmsgs/cg.xmsgs (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/_xmsgs/cg.xmsgs (revision 5) @@ -0,0 +1,27 @@ + + + +Generating IP... + + +A core named 'blockMemory' already exists in the project. Output products for this core may be overwritten. + + +Component blk_mem_gen_v7_1 does not have a valid model name for VHDL synthesis + + +Pre-processing HDL files for 'blockMemory'... + + +Finished generation of ASY schematic symbol. + + +Finished FLIST file generation. + + + + Index: trunk/rtl/vhdl/mod_exp/blockMemory64/_xmsgs/pn_parser.xmsgs =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/_xmsgs/pn_parser.xmsgs (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/_xmsgs/pn_parser.xmsgs (revision 5) @@ -0,0 +1,15 @@ + + + + + + + + + + +Parsing VHDL file "E:/spent i praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/blockMemory.vhd" into library work + + + + Index: trunk/rtl/vhdl/mod_exp/blockMemory64/_xmsgs =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/_xmsgs (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/_xmsgs (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory64/_xmsgs Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory64/tmp/blockMemory.lso =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/tmp/blockMemory.lso (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/tmp/blockMemory.lso (revision 5) @@ -0,0 +1 @@ +work Index: trunk/rtl/vhdl/mod_exp/blockMemory64/tmp/_xmsgs/pn_parser.xmsgs =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/tmp/_xmsgs/pn_parser.xmsgs (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/tmp/_xmsgs/pn_parser.xmsgs (revision 5) @@ -0,0 +1,15 @@ + + + + + + + + + + +Parsing VHDL file "E:/spent i praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/blockMemory.vhd" into library work + + + + Index: trunk/rtl/vhdl/mod_exp/blockMemory64/tmp/_xmsgs/xst.xmsgs =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/tmp/_xmsgs/xst.xmsgs (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/tmp/_xmsgs/xst.xmsgs (revision 5) @@ -0,0 +1,412 @@ + + + +Message file "usenglish/ip.msg" wasn't found. + + +0: (0,0) : 72x256 u:64 + + +0: (0,0) : 72x256 u:64 + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_input_block.vhd" Line 691: Comparison between arrays of unequal length always returns FALSE. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_input_block.vhd" Line 707: Comparison between arrays of unequal length always returns FALSE. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_wrapper_s3.vhd" Line 4199: Range is empty (null range) + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_wrapper_s3.vhd" Line 4199: Assignment ignored + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_wrapper_s3.vhd" Line 4206: Range is empty (null range) + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_wrapper_s3.vhd" Line 4206: Assignment ignored + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_wrapper_s3.vhd" Line 4213: Range is empty (null range) + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_wrapper_s3.vhd" Line 4213: Assignment ignored + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_wrapper_s3.vhd" Line 370: Net <doutb_i[71]> does not have a driver. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_width.vhd" Line 429: Net <dina_pad[71]> does not have a driver. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_prim_width.vhd" Line 433: Net <dinb_pad[71]> does not have a driver. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" Line 1546: Comparison between arrays of unequal length always returns FALSE. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" Line 1559: Comparison between arrays of unequal length always returns FALSE. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <doutb> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <rdaddrecc> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_bid> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_bresp> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_rid> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_rdata> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_rresp> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_rdaddrecc> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <sbiterr> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <dbiterr> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_awready> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_wready> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_bvalid> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_arready> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_rlast> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_rvalid> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_sbiterr> of the instance <U0> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blockMemory.vhd" line 161: Output port <s_axi_dbiterr> of the instance <U0> is unconnected or connected to loadless signal. + + +Input <S_AXI_AWID> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_AWADDR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_AWLEN> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_AWSIZE> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_AWBURST> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_WDATA> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_WSTRB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_ARID> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_ARADDR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_ARLEN> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_ARSIZE> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_ARBURST> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AClk> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_ARESETN> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_AWVALID> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_WLAST> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_WVALID> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_BREADY> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_ARVALID> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_RREADY> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_INJECTSBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <S_AXI_INJECTDBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal 'S_AXI_BID', unconnected in block 'blk_mem_gen_v7_1_xst', is tied to its initial value (0000). + + +Signal <S_AXI_BRESP> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal 'S_AXI_RID', unconnected in block 'blk_mem_gen_v7_1_xst', is tied to its initial value (0000). + + +Signal <S_AXI_RDATA> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_RRESP> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_RDADDRECC> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_AWREADY> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_WREADY> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_BVALID> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_ARREADY> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_RLAST> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_RVALID> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_SBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <S_AXI_DBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Input <WEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <ADDRB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <DINB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <ENA> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEA> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <CLKB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <RSTB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <ENB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <INJECTDBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <INJECTSBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal <INJECTDBITERR_I> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <INJECTSBITERR_I> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Input <REGCEA> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <WEA<7:1>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <WEB<7:1>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <INJECTSBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <INJECTDBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" line 1343: Output port <SBITERR> of the instance <ramloop[0].ram.r> is unconnected or connected to loadless signal. + + +"E:\spent i praca\OpenCores\ModMultExp_opencores_edition\rtl\vhdl\mod_exp\blockMemory\tmp\_cg\_dbg\blk_mem_gen_v7_1\blk_mem_gen_generic_cstr.vhd" line 1343: Output port <DBITERR> of the instance <ramloop[0].ram.r> is unconnected or connected to loadless signal. + + +Signal <RDADDRECC> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <SBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <DBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Input <INJECTSBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <INJECTDBITERR> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal 'dina_pad<71>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (0). + + +Signal 'dina_pad<62>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (0). + + +Signal 'dina_pad<53>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (0). + + +Signal 'dina_pad<44>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (0). + + +Signal 'dina_pad<35>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (0). + + +Signal 'dina_pad<26>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (0). + + +Signal 'dina_pad<17>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (0). + + +Signal 'dina_pad<8>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (0). + + +Signal 'dinb_pad<71>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (0). + + +Signal 'dinb_pad<62>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (0). + + +Signal 'dinb_pad<53>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (0). + + +Signal 'dinb_pad<44>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (0). + + +Signal 'dinb_pad<35>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (0). + + +Signal 'dinb_pad<26>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (0). + + +Signal 'dinb_pad<17>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (0). + + +Signal 'dinb_pad<8>', unconnected in block 'blk_mem_gen_prim_width', is tied to its initial value (0). + + +Signal <SBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <DBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Input <ADDRB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <DINB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEA> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <CLKB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <ENB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <REGCEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <WEB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal 'doutb_i', unconnected in block 'blk_mem_gen_prim_wrapper_s3', is tied to its initial value (000000000000000000000000000000000000000000000000000000000000000000000000). + + +Input <DOUTB_I> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <RDADDRECC_I> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <CLKB> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <SBITERR_I> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Input <DBITERR_I> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. + + +Signal <RDADDRECC> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <SBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +Signal <DBITERR> is used but never assigned. This sourceless signal will be automatically connected to value GND. + + +HDL ADVISOR - Some clock signals were not automatically buffered by XST with BUFG/BUFR resources. Please use the buffer_type constraint in order to insert these buffers to the clock signals to help prevent skew problems. + + +You have chosen to run a version of XST which is not the default solution +for the specified device family. You are free to use it in order to take +advantage of its enhanced HDL parsing/elaboration capabilities. However, +please be aware that you may be impacted by language support differences. +This version may also result in circuit performance and device utilization +differences for your particular design. You can always revert back to the +default XST solution by setting the "use_new_parser" option to value "no" +on the XST command line or in the XST process properties panel. + + + + Index: trunk/rtl/vhdl/mod_exp/blockMemory64/tmp/_xmsgs =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/tmp/_xmsgs (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/tmp/_xmsgs (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory64/tmp/_xmsgs Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory64/tmp/_cg =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/tmp/_cg (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/tmp/_cg (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory64/tmp/_cg Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory64/tmp =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/tmp (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/tmp (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory64/tmp Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory_flist.txt =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory_flist.txt (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory_flist.txt (revision 5) @@ -0,0 +1,59 @@ +# Output products list for +_xmsgs\pn_parser.xmsgs +blockMemory.asy +blockMemory.gise +blockMemory.ngc +blockMemory.vhd +blockMemory.vho +blockMemory.xco +blockMemory.xise +blockMemory\blk_mem_gen_v7_1_readme.txt +blockMemory\doc\blk_mem_gen_ds512.pdf +blockMemory\doc\blk_mem_gen_v7_1_vinfo.html +blockMemory\example_design\blockMemory_exdes.ucf +blockMemory\example_design\blockMemory_exdes.vhd +blockMemory\example_design\blockMemory_exdes.xdc +blockMemory\example_design\blockMemory_prod.vhd +blockMemory\implement\implement.bat +blockMemory\implement\implement.sh +blockMemory\implement\planAhead_ise.bat +blockMemory\implement\planAhead_ise.sh +blockMemory\implement\planAhead_ise.tcl +blockMemory\implement\planAhead_rdn.bat +blockMemory\implement\planAhead_rdn.sh +blockMemory\implement\planAhead_rdn.tcl +blockMemory\implement\xst.prj +blockMemory\implement\xst.scr +blockMemory\simulation\addr_gen.vhd +blockMemory\simulation\blockMemory_synth.vhd +blockMemory\simulation\blockMemory_tb.vhd +blockMemory\simulation\bmg_stim_gen.vhd +blockMemory\simulation\bmg_tb_pkg.vhd +blockMemory\simulation\checker.vhd +blockMemory\simulation\data_gen.vhd +blockMemory\simulation\functional\simcmds.tcl +blockMemory\simulation\functional\simulate_isim.bat +blockMemory\simulation\functional\simulate_mti.bat +blockMemory\simulation\functional\simulate_mti.do +blockMemory\simulation\functional\simulate_mti.sh +blockMemory\simulation\functional\simulate_ncsim.sh +blockMemory\simulation\functional\simulate_vcs.sh +blockMemory\simulation\functional\ucli_commands.key +blockMemory\simulation\functional\vcs_session.tcl +blockMemory\simulation\functional\wave_mti.do +blockMemory\simulation\functional\wave_ncsim.sv +blockMemory\simulation\random.vhd +blockMemory\simulation\timing\simcmds.tcl +blockMemory\simulation\timing\simulate_isim.bat +blockMemory\simulation\timing\simulate_mti.bat +blockMemory\simulation\timing\simulate_mti.do +blockMemory\simulation\timing\simulate_mti.sh +blockMemory\simulation\timing\simulate_ncsim.sh +blockMemory\simulation\timing\simulate_vcs.sh +blockMemory\simulation\timing\ucli_commands.key +blockMemory\simulation\timing\vcs_session.tcl +blockMemory\simulation\timing\wave_mti.do +blockMemory\simulation\timing\wave_ncsim.sv +blockMemory_flist.txt +blockMemory_xmdf.tcl +summary.log Index: trunk/rtl/vhdl/mod_exp/blockMemory64/coregen.log =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/coregen.log (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/coregen.log (revision 5) @@ -0,0 +1,60 @@ +INFO:sim:172 - Generating IP... +Applying current project options... +Finished applying current project options. +Resolving generics for 'blockMemory'... +WARNING:sim - A core named 'blockMemory' already exists in the project. Output + products for this core may be overwritten. +Applying external generics to 'blockMemory'... +Delivering associated files for 'blockMemory'... +WARNING:sim - Component blk_mem_gen_v7_1 does not have a valid model name for + VHDL synthesis +Delivering EJava files for 'blockMemory'... +Generating implementation netlist for 'blockMemory'... +INFO:sim - Pre-processing HDL files for 'blockMemory'... +Running synthesis for 'blockMemory' +Running ngcbuild... +Writing VHO instantiation template for 'blockMemory'... +Writing VHDL behavioral simulation model for 'blockMemory'... +Generating ASY schematic symbol... +INFO:sim:949 - Finished generation of ASY schematic symbol. +Generating SYM schematic symbol for 'blockMemory'... +Generating metadata file... +Generating ISE project... +XCO file found: blockMemory.xco +XMDF file found: blockMemory_xmdf.tcl +Adding E:/spent i +praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp/_c +g/blockMemory.asy -view all -origin_type imported +Adding E:/spent i +praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp/_c +g/blockMemory.ngc -view all -origin_type created +Checking file "E:/spent i +praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp/_c +g/blockMemory.ngc" for project device match ... +File "E:/spent i +praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp/_c +g/blockMemory.ngc" device information matches project device. +Adding E:/spent i +praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp/_c +g/blockMemory.sym -view all -origin_type imported +Adding E:/spent i +praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp/_c +g/blockMemory.vhd -view all -origin_type created +INFO:HDLCompiler:1061 - Parsing VHDL file "E:/spent i + praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp + /_cg/blockMemory.vhd" into library work +INFO:ProjectMgmt - Parsing design hierarchy completed successfully. +Adding E:/spent i +praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp/_c +g/blockMemory.vho -view all -origin_type imported +INFO:TclTasksC:2116 - The automatic calculation of top has been turned-off. + Please set the new top explicitly by running the "project set top" command. + To re-calculate the new top automatically, set the "Auto Implementation Top" + property to true. +Top level has been set to "/blockMemory" +Generating README file... +Generating FLIST file... +INFO:sim:948 - Finished FLIST file generation. +Moving files to output directory... +Finished moving files to output directory +Wrote CGP file for project 'blockMemory'. Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.vhd =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.vhd (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.vhd (revision 5) @@ -0,0 +1,144 @@ +-------------------------------------------------------------------------------- +-- This file is owned and controlled by Xilinx and must be used solely -- +-- for design, simulation, implementation and creation of design files -- +-- limited to Xilinx devices or technologies. Use with non-Xilinx -- +-- devices or technologies is expressly prohibited and immediately -- +-- terminates your license. -- +-- -- +-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" SOLELY -- +-- FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR XILINX DEVICES. BY -- +-- PROVIDING THIS DESIGN, CODE, OR INFORMATION AS ONE POSSIBLE -- +-- IMPLEMENTATION OF THIS FEATURE, APPLICATION OR STANDARD, XILINX IS -- +-- MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION IS FREE FROM ANY -- +-- CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE FOR OBTAINING ANY -- +-- RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY -- +-- DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE -- +-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR -- +-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF -- +-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -- +-- PARTICULAR PURPOSE. -- +-- -- +-- Xilinx products are not intended for use in life support appliances, -- +-- devices, or systems. Use in such applications are expressly -- +-- prohibited. -- +-- -- +-- (c) Copyright 1995-2015 Xilinx, Inc. -- +-- All rights reserved. -- +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- +-- You must compile the wrapper file blockMemory.vhd when simulating +-- the core, blockMemory. When compiling the wrapper file, be sure to +-- reference the XilinxCoreLib VHDL simulation library. For detailed +-- instructions, please refer to the "CORE Generator Help". + +-- The synthesis directives "translate_off/translate_on" specified +-- below are supported by Xilinx, Mentor Graphics and Synplicity +-- synthesis tools. Ensure they are correct for your synthesis tool(s). + +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +-- synthesis translate_off +LIBRARY XilinxCoreLib; +-- synthesis translate_on +ENTITY blockMemory IS + PORT ( + clka : IN STD_LOGIC; + rsta : IN STD_LOGIC; + wea : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + addra : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + dina : IN STD_LOGIC_VECTOR(63 DOWNTO 0); + douta : OUT STD_LOGIC_VECTOR(63 DOWNTO 0) + ); +END blockMemory; + +ARCHITECTURE blockMemory_a OF blockMemory IS +-- synthesis translate_off +COMPONENT wrapped_blockMemory + PORT ( + clka : IN STD_LOGIC; + rsta : IN STD_LOGIC; + wea : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + addra : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + dina : IN STD_LOGIC_VECTOR(63 DOWNTO 0); + douta : OUT STD_LOGIC_VECTOR(63 DOWNTO 0) + ); +END COMPONENT; + +-- Configuration specification + FOR ALL : wrapped_blockMemory USE ENTITY XilinxCoreLib.blk_mem_gen_v7_1(behavioral) + GENERIC MAP ( + c_addra_width => 4, + c_addrb_width => 4, + c_algorithm => 0, + c_axi_id_width => 4, + c_axi_slave_type => 0, + c_axi_type => 1, + c_byte_size => 9, + c_common_clk => 0, + c_default_data => "0", + c_disable_warn_bhv_coll => 0, + c_disable_warn_bhv_range => 0, + c_enable_32bit_address => 0, + c_family => "spartan3", + c_has_axi_id => 0, + c_has_ena => 0, + c_has_enb => 0, + c_has_injecterr => 0, + c_has_mem_output_regs_a => 0, + c_has_mem_output_regs_b => 0, + c_has_mux_output_regs_a => 0, + c_has_mux_output_regs_b => 0, + c_has_regcea => 0, + c_has_regceb => 0, + c_has_rsta => 1, + c_has_rstb => 0, + c_has_softecc_input_regs_a => 0, + c_has_softecc_output_regs_b => 0, + c_init_file_name => "no_coe_file_loaded", + c_inita_val => "0", + c_initb_val => "0", + c_interface_type => 0, + c_load_init_file => 0, + c_mem_type => 0, + c_mux_pipeline_stages => 0, + c_prim_type => 6, + c_read_depth_a => 16, + c_read_depth_b => 16, + c_read_width_a => 64, + c_read_width_b => 64, + c_rst_priority_a => "CE", + c_rst_priority_b => "CE", + c_rst_type => "SYNC", + c_rstram_a => 0, + c_rstram_b => 0, + c_sim_collision_check => "ALL", + c_use_byte_wea => 0, + c_use_byte_web => 0, + c_use_default_data => 0, + c_use_ecc => 0, + c_use_softecc => 0, + c_wea_width => 1, + c_web_width => 1, + c_write_depth_a => 16, + c_write_depth_b => 16, + c_write_mode_a => "READ_FIRST", + c_write_mode_b => "WRITE_FIRST", + c_write_width_a => 64, + c_write_width_b => 64, + c_xdevicefamily => "spartan3e" + ); +-- synthesis translate_on +BEGIN +-- synthesis translate_off +U0 : wrapped_blockMemory + PORT MAP ( + clka => clka, + rsta => rsta, + wea => wea, + addra => addra, + dina => dina, + douta => douta + ); +-- synthesis translate_on + +END blockMemory_a; Index: trunk/rtl/vhdl/mod_exp/blockMemory64/edit_blockMemory.tcl =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/edit_blockMemory.tcl (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/edit_blockMemory.tcl (revision 5) @@ -0,0 +1,37 @@ +## +## Core Generator Run Script, generator for Project Navigator edit command +## + +proc findRtfPath { relativePath } { + set xilenv "" + if { [info exists ::env(XILINX) ] } { + if { [info exists ::env(MYXILINX)] } { + set xilenv [join [list $::env(MYXILINX) $::env(XILINX)] $::xilinx::path_sep ] + } else { + set xilenv $::env(XILINX) + } + } + foreach path [ split $xilenv $::xilinx::path_sep ] { + set fullPath [ file join $path $relativePath ] + if { [ file exists $fullPath ] } { + return $fullPath + } + } + return "" +} + +source [ findRtfPath "data/projnav/scripts/dpm_cgUtils.tcl" ] + +set result [ run_cg_edit "blockMemory" xc3s500e-5fg320 VHDL ] + +if { $result == 0 } { + puts "Core Generator edit command completed successfully." +} elseif { $result == 1 } { + puts "Core Generator edit command failed." +} elseif { $result == 3 || $result == 4 } { + # convert 'version check' result to real return range, bypassing any messages. + set result [ expr $result - 3 ] +} else { + puts "Core Generator edit cancelled." +} +exit $result Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.gise =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.gise (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.gise (revision 5) @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + 11.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory_beh.cgp =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory_beh.cgp (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory_beh.cgp (revision 5) @@ -0,0 +1,22 @@ +# Date: Sat Dec 22 01:24:09 2012 + +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = false +SET designentry = VHDL +SET device = xc3s500e +SET devicefamily = spartan3e +SET flowvendor = Other +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = fg320 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -5 +SET verilogsim = false +SET vhdlsim = true +SET workingdirectory = .\tmp\ + +# CRC: 46f7aa00 Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.xco =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.xco (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.xco (revision 5) @@ -0,0 +1,106 @@ +############################################################## +# +# Xilinx Core Generator version 14.2 +# Date: Sun Feb 01 11:01:19 2015 +# +############################################################## +# +# This file contains the customisation parameters for a +# Xilinx CORE Generator IP GUI. It is strongly recommended +# that you do not manually alter this file as it may cause +# unexpected and unsupported behavior. +# +############################################################## +# +# Generated from component: xilinx.com:ip:blk_mem_gen:7.1 +# +############################################################## +# +# BEGIN Project Options +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = false +SET designentry = VHDL +SET device = xc3s500e +SET devicefamily = spartan3e +SET flowvendor = Other +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = fg320 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -5 +SET verilogsim = false +SET vhdlsim = true +# END Project Options +# BEGIN Select +SELECT Block_Memory_Generator xilinx.com:ip:blk_mem_gen:7.1 +# END Select +# BEGIN Parameters +CSET additional_inputs_for_power_estimation=false +CSET algorithm=Fixed_Primitives +CSET assume_synchronous_clk=false +CSET axi_id_width=4 +CSET axi_slave_type=Memory_Slave +CSET axi_type=AXI4_Full +CSET byte_size=9 +CSET coe_file=no_coe_file_loaded +CSET collision_warnings=ALL +CSET component_name=blockMemory +CSET disable_collision_warnings=false +CSET disable_out_of_range_warnings=false +CSET ecc=false +CSET ecctype=No_ECC +CSET enable_32bit_address=false +CSET enable_a=Always_Enabled +CSET enable_b=Always_Enabled +CSET error_injection_type=Single_Bit_Error_Injection +CSET fill_remaining_memory_locations=false +CSET interface_type=Native +CSET load_init_file=false +CSET memory_type=Single_Port_RAM +CSET operating_mode_a=READ_FIRST +CSET operating_mode_b=WRITE_FIRST +CSET output_reset_value_a=0 +CSET output_reset_value_b=0 +CSET pipeline_stages=0 +CSET port_a_clock=100 +CSET port_a_enable_rate=100 +CSET port_a_write_rate=50 +CSET port_b_clock=100 +CSET port_b_enable_rate=100 +CSET port_b_write_rate=50 +CSET primitive=256x72 +CSET read_width_a=64 +CSET read_width_b=64 +CSET register_porta_input_of_softecc=false +CSET register_porta_output_of_memory_core=false +CSET register_porta_output_of_memory_primitives=false +CSET register_portb_output_of_memory_core=false +CSET register_portb_output_of_memory_primitives=false +CSET register_portb_output_of_softecc=false +CSET remaining_memory_locations=0 +CSET reset_memory_latch_a=false +CSET reset_memory_latch_b=false +CSET reset_priority_a=CE +CSET reset_priority_b=CE +CSET reset_type=SYNC +CSET softecc=false +CSET use_axi_id=false +CSET use_byte_write_enable=false +CSET use_error_injection_pins=false +CSET use_regcea_pin=false +CSET use_regceb_pin=false +CSET use_rsta_pin=true +CSET use_rstb_pin=false +CSET write_depth_a=16 +CSET write_width_a=64 +CSET write_width_b=64 +# END Parameters +# BEGIN Extra information +MISC pkg_timestamp=2012-05-01T17:17:26Z +# END Extra information +GENERATE +# CRC: b6414ecb Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.veo =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.veo (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.veo (revision 5) @@ -0,0 +1,70 @@ +/******************************************************************************* +* This file is owned and controlled by Xilinx and must be used solely * +* for design, simulation, implementation and creation of design files * +* limited to Xilinx devices or technologies. Use with non-Xilinx * +* devices or technologies is expressly prohibited and immediately * +* terminates your license. * +* * +* XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" SOLELY * +* FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR XILINX DEVICES. BY * +* PROVIDING THIS DESIGN, CODE, OR INFORMATION AS ONE POSSIBLE * +* IMPLEMENTATION OF THIS FEATURE, APPLICATION OR STANDARD, XILINX IS * +* MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION IS FREE FROM ANY * +* CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE FOR OBTAINING ANY * +* RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY * +* DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE * +* IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR * +* REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF * +* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * +* PARTICULAR PURPOSE. * +* * +* Xilinx products are not intended for use in life support appliances, * +* devices, or systems. Use in such applications are expressly * +* prohibited. * +* * +* (c) Copyright 1995-2013 Xilinx, Inc. * +* All rights reserved. * +*******************************************************************************/ + +/******************************************************************************* +* Generated from core with identifier: xilinx.com:ip:blk_mem_gen:7.1 * +* * +* The Xilinx LogiCORE IP Block Memory Generator replaces the Dual Port * +* Block Memory and Single Port Block Memory LogiCOREs, but is not a * +* direct drop-in replacement. It should be used in all new Xilinx * +* designs. The core supports RAM and ROM functions over a wide range of * +* widths and depths. Use this core to generate block memories with * +* symmetric or asymmetric read and write port widths, as well as cores * +* which can perform simultaneous write operations to separate * +* locations, and simultaneous read operations from the same location. * +* For more information on differences in interface and feature support * +* between this core and the Dual Port Block Memory and Single Port * +* Block Memory LogiCOREs, please consult the data sheet. * +*******************************************************************************/ + +// Interfaces: +// AXI_SLAVE_S_AXI +// AXI_SLAVE +// AXILite_SLAVE_S_AXI +// AXILite_SLAVE + +// The following must be inserted into your Verilog file for this +// core to be instantiated. Change the instance name and port connections +// (in parentheses) to your own signal names. + +//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG +blockMemory your_instance_name ( + .clka(clka), // input clka + .rsta(rsta), // input rsta + .wea(wea), // input [0 : 0] wea + .addra(addra), // input [3 : 0] addra + .dina(dina), // input [511 : 0] dina + .douta(douta) // output [511 : 0] douta +); +// INST_TAG_END ------ End INSTANTIATION Template --------- + +// You must compile the wrapper file blockMemory.v when simulating +// the core, blockMemory. When compiling the wrapper file, be sure to +// reference the XilinxCoreLib Verilog simulation library. For detailed +// instructions, please refer to the "CORE Generator Help". + Index: trunk/rtl/vhdl/mod_exp/blockMemory64/summary.log =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/summary.log (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/summary.log (revision 5) @@ -0,0 +1,18 @@ + +User Configuration +------------------------------------- +Algorithm : Fixed_Primitives +Memory Type : Single_Port_RAM +Port A Read Width : 64 +Port A Write Width : 64 +Memory Depth : 16 +-------------------------------------------------------------- + +Block RAM resource(s) (18K BRAMs) : 1 +-------------------------------------------------------------- +Clock A Frequency : 100 +Port A Enable Rate : 100 +Port A Write Rate : 50 +---------------------------------------------------------- +Estimated Power for IP : 9.504473 mW +---------------------------------------------------------- Index: trunk/rtl/vhdl/mod_exp/blockMemory64/coregen.cgc =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/coregen.cgc (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/coregen.cgc (revision 5) @@ -0,0 +1,725 @@ + + + xilinx.com + project + coregen + 1.0 + + + blockMemory + + + blockMemory + Native + AXI4_Full + Memory_Slave + false + 4 + Single_Port_RAM + false + No_ECC + false + false + false + Single_Bit_Error_Injection + false + 9 + Fixed_Primitives + 256x72 + false + 64 + 16 + 64 + READ_FIRST + Always_Enabled + 64 + 64 + WRITE_FIRST + Always_Enabled + false + false + false + false + false + false + false + false + 0 + false + no_coe_file_loaded + false + 0 + true + false + CE + 0 + false + false + CE + 0 + SYNC + false + 100 + 50 + 100 + 50 + 100 + 100 + ALL + false + false + spartan3 + spartan3e + E:/spent i praca/OpenCores/ModMultExp_opencores_edition/rtl/vhdl/mod_exp/blockMemory/tmp/_cg/ + 0 + 1 + 0 + 0 + 4 + 0 + 9 + 0 + 6 + 0 + no_coe_file_loaded + 0 + 0 + SYNC + 1 + CE + 0 + 0 + 0 + 0 + 0 + 1 + READ_FIRST + 64 + 64 + 16 + 16 + 4 + 0 + CE + 0 + 0 + 0 + 0 + 0 + 1 + WRITE_FIRST + 64 + 64 + 16 + 16 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ALL + 0 + 0 + 0 + 0 + + + + + coregen + ./ + ./tmp/ + ./tmp/_cg/ + + + xc3s500e + spartan3e + fg320 + -5 + + + BusFormatAngleBracketNotRipped + VHDL + true + Other + false + false + false + Ngc + false + + + Behavioral + VHDL + false + + + 2012-05-01+17:17 + + + + + customization_generator + + ./summary.log + unknown + Sun Feb 01 11:01:05 GMT 2015 + 0x276B8704 + generationID_4013899584 + + + + model_parameter_resolution_generator + + ./summary.log + unknown + Sun Feb 01 11:01:18 GMT 2015 + 0x276B8704 + generationID_4013899584 + + + + ip_xco_generator + + ./blockMemory.xco + xco + Sun Feb 01 11:01:19 GMT 2015 + 0xB3588484 + generationID_4013899584 + + + + associated_files_generator + + ./blockMemory/blk_mem_gen_v7_1_readme.txt + ignore + txt + Sat Jul 21 06:09:39 GMT 2012 + 0xD29D9619 + generationID_4013899584 + + + ./blockMemory/doc/blk_mem_gen_ds512.pdf + ignore + pdf + Sat Jul 21 06:09:39 GMT 2012 + 0xC67523A8 + generationID_4013899584 + + + ./blockMemory/doc/blk_mem_gen_v7_1_vinfo.html + ignore + unknown + Sat Jul 21 06:09:39 GMT 2012 + 0x19E371FD + generationID_4013899584 + + + + ejava_generator + + ./blockMemory/example_design/blockMemory_exdes.ucf + ignore + ucf + Sun Feb 01 11:01:22 GMT 2015 + 0xC44C6B6D + generationID_4013899584 + + + ./blockMemory/example_design/blockMemory_exdes.vhd + ignore + vhdl + Sun Feb 01 11:01:22 GMT 2015 + 0xC531B9D3 + generationID_4013899584 + + + ./blockMemory/example_design/blockMemory_exdes.xdc + ignore + xdc + Sun Feb 01 11:01:22 GMT 2015 + 0x7684D6D4 + generationID_4013899584 + + + ./blockMemory/example_design/blockMemory_prod.vhd + ignore + vhdl + Sun Feb 01 11:01:22 GMT 2015 + 0xBCC35C04 + generationID_4013899584 + + + ./blockMemory/implement/implement.bat + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x73DC98D0 + generationID_4013899584 + + + ./blockMemory/implement/implement.sh + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0xDA8C5F63 + generationID_4013899584 + + + ./blockMemory/implement/planAhead_ise.bat + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0xAB675294 + generationID_4013899584 + + + ./blockMemory/implement/planAhead_ise.sh + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x2CC3322B + generationID_4013899584 + + + ./blockMemory/implement/planAhead_ise.tcl + ignore + tcl + Sun Feb 01 11:01:22 GMT 2015 + 0xE0D499D8 + generationID_4013899584 + + + ./blockMemory/implement/planAhead_rdn.bat + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0xF18BE2F0 + generationID_4013899584 + + + ./blockMemory/implement/planAhead_rdn.sh + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x762F824F + generationID_4013899584 + + + ./blockMemory/implement/planAhead_rdn.tcl + ignore + tcl + Sun Feb 01 11:01:22 GMT 2015 + 0xE0D499D8 + generationID_4013899584 + + + ./blockMemory/implement/xst.prj + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x49531A1B + generationID_4013899584 + + + ./blockMemory/implement/xst.scr + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x0ACE6523 + generationID_4013899584 + + + ./blockMemory/simulation/addr_gen.vhd + ignore + vhdl + Sun Feb 01 11:01:22 GMT 2015 + 0xC4BD0686 + generationID_4013899584 + + + ./blockMemory/simulation/blockMemory_synth.vhd + ignore + vhdl + Sun Feb 01 11:01:22 GMT 2015 + 0x242B5734 + generationID_4013899584 + + + ./blockMemory/simulation/blockMemory_tb.vhd + ignore + vhdl + Sun Feb 01 11:01:22 GMT 2015 + 0x403EDE43 + generationID_4013899584 + + + ./blockMemory/simulation/bmg_stim_gen.vhd + ignore + vhdl + Sun Feb 01 11:01:22 GMT 2015 + 0xB51AD3DA + generationID_4013899584 + + + ./blockMemory/simulation/bmg_tb_pkg.vhd + ignore + vhdl + Sun Feb 01 11:01:22 GMT 2015 + 0x888E222F + generationID_4013899584 + + + ./blockMemory/simulation/checker.vhd + ignore + vhdl + Sun Feb 01 11:01:22 GMT 2015 + 0x165912E8 + generationID_4013899584 + + + ./blockMemory/simulation/data_gen.vhd + ignore + vhdl + Sun Feb 01 11:01:22 GMT 2015 + 0xAAF37274 + generationID_4013899584 + + + ./blockMemory/simulation/functional/simcmds.tcl + ignore + tcl + Sun Feb 01 11:01:22 GMT 2015 + 0x32EA978C + generationID_4013899584 + + + ./blockMemory/simulation/functional/simulate_isim.bat + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x5732BCC0 + generationID_4013899584 + + + ./blockMemory/simulation/functional/simulate_mti.bat + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x86EA5D67 + generationID_4013899584 + + + ./blockMemory/simulation/functional/simulate_mti.do + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0xFFDC1F87 + generationID_4013899584 + + + ./blockMemory/simulation/functional/simulate_mti.sh + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x86EA5D67 + generationID_4013899584 + + + ./blockMemory/simulation/functional/simulate_ncsim.sh + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x7DAF5A7C + generationID_4013899584 + + + ./blockMemory/simulation/functional/simulate_vcs.sh + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x0377E85E + generationID_4013899584 + + + ./blockMemory/simulation/functional/ucli_commands.key + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x124DD850 + generationID_4013899584 + + + ./blockMemory/simulation/functional/vcs_session.tcl + ignore + tcl + Sun Feb 01 11:01:22 GMT 2015 + 0x65C492A4 + generationID_4013899584 + + + ./blockMemory/simulation/functional/wave_mti.do + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0xD1AE9DBA + generationID_4013899584 + + + ./blockMemory/simulation/functional/wave_ncsim.sv + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0xFA4242CF + generationID_4013899584 + + + ./blockMemory/simulation/random.vhd + ignore + vhdl + Sun Feb 01 11:01:22 GMT 2015 + 0x63A1BAB3 + generationID_4013899584 + + + ./blockMemory/simulation/timing/simcmds.tcl + ignore + tcl + Sun Feb 01 11:01:22 GMT 2015 + 0x32EA978C + generationID_4013899584 + + + ./blockMemory/simulation/timing/simulate_isim.bat + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x4934A6A9 + generationID_4013899584 + + + ./blockMemory/simulation/timing/simulate_mti.bat + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x86EA5D67 + generationID_4013899584 + + + ./blockMemory/simulation/timing/simulate_mti.do + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x73AA9BB8 + generationID_4013899584 + + + ./blockMemory/simulation/timing/simulate_mti.sh + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x86EA5D67 + generationID_4013899584 + + + ./blockMemory/simulation/timing/simulate_ncsim.sh + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0xFBC651DC + generationID_4013899584 + + + ./blockMemory/simulation/timing/simulate_vcs.sh + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x4D9140C3 + generationID_4013899584 + + + ./blockMemory/simulation/timing/ucli_commands.key + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x124DD850 + generationID_4013899584 + + + ./blockMemory/simulation/timing/vcs_session.tcl + ignore + tcl + Sun Feb 01 11:01:22 GMT 2015 + 0xB2A5A6F2 + generationID_4013899584 + + + ./blockMemory/simulation/timing/wave_mti.do + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x9F72A3C7 + generationID_4013899584 + + + ./blockMemory/simulation/timing/wave_ncsim.sv + ignore + unknown + Sun Feb 01 11:01:22 GMT 2015 + 0x3E2BD0E3 + generationID_4013899584 + + + + ngc_netlist_generator + + ./blockMemory.ngc + ngc + Sun Feb 01 11:03:12 GMT 2015 + 0xB01C4161 + generationID_4013899584 + + + + obfuscate_netlist_generator + + + padded_implementation_netlist_generator + + + instantiation_template_generator + + ./blockMemory.vho + vho + Sun Feb 01 11:03:15 GMT 2015 + 0x533BD793 + generationID_4013899584 + + + + structural_simulation_model_generator + + ./blockMemory.vhd + vhdl + Sun Feb 01 11:03:16 GMT 2015 + 0x4F617396 + generationID_4013899584 + + + + asy_generator + + ./blockMemory.asy + asy + Sun Feb 01 11:03:25 GMT 2015 + 0xD23467E4 + generationID_4013899584 + + + ./summary.log + unknown + Sun Feb 01 11:03:25 GMT 2015 + 0x276B8704 + generationID_4013899584 + + + + xmdf_generator + + ./blockMemory_xmdf.tcl + tclXmdf + tcl + Sun Feb 01 11:03:25 GMT 2015 + 0x0F84EBAC + generationID_4013899584 + + + + ise_generator + + ./_xmsgs/pn_parser.xmsgs + ignore + unknown + Sun Feb 01 11:03:38 GMT 2015 + 0x8B9E9C83 + generationID_4013899584 + + + ./blockMemory.gise + ignore + gise + Sun Feb 01 11:03:38 GMT 2015 + 0x12517467 + generationID_4013899584 + + + ./blockMemory.xise + ignore + xise + Sun Feb 01 11:03:38 GMT 2015 + 0xBEBA0475 + generationID_4013899584 + + + + deliver_readme_generator + + + flist_generator + + ./blockMemory_flist.txt + ignore + txtFlist + txt + Sun Feb 01 11:03:39 GMT 2015 + 0x56F501F4 + generationID_4013899584 + + + + view_readme_generator + + + + + + + + + coregen + ./ + ./tmp/ + ./tmp/_cg/ + + + xc3s500e + spartan3e + fg320 + -5 + + + BusFormatAngleBracketNotRipped + VHDL + true + Other + false + false + false + Ngc + false + + + Behavioral + VHDL + false + + + + + Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.vho =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.vho (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.vho (revision 5) @@ -0,0 +1,89 @@ +-------------------------------------------------------------------------------- +-- This file is owned and controlled by Xilinx and must be used solely -- +-- for design, simulation, implementation and creation of design files -- +-- limited to Xilinx devices or technologies. Use with non-Xilinx -- +-- devices or technologies is expressly prohibited and immediately -- +-- terminates your license. -- +-- -- +-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" SOLELY -- +-- FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR XILINX DEVICES. BY -- +-- PROVIDING THIS DESIGN, CODE, OR INFORMATION AS ONE POSSIBLE -- +-- IMPLEMENTATION OF THIS FEATURE, APPLICATION OR STANDARD, XILINX IS -- +-- MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION IS FREE FROM ANY -- +-- CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE FOR OBTAINING ANY -- +-- RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY -- +-- DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE -- +-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR -- +-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF -- +-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -- +-- PARTICULAR PURPOSE. -- +-- -- +-- Xilinx products are not intended for use in life support appliances, -- +-- devices, or systems. Use in such applications are expressly -- +-- prohibited. -- +-- -- +-- (c) Copyright 1995-2015 Xilinx, Inc. -- +-- All rights reserved. -- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- Generated from core with identifier: xilinx.com:ip:blk_mem_gen:7.1 -- +-- -- +-- The Xilinx LogiCORE IP Block Memory Generator replaces the Dual Port -- +-- Block Memory and Single Port Block Memory LogiCOREs, but is not a -- +-- direct drop-in replacement. It should be used in all new Xilinx -- +-- designs. The core supports RAM and ROM functions over a wide range of -- +-- widths and depths. Use this core to generate block memories with -- +-- symmetric or asymmetric read and write port widths, as well as cores -- +-- which can perform simultaneous write operations to separate -- +-- locations, and simultaneous read operations from the same location. -- +-- For more information on differences in interface and feature support -- +-- between this core and the Dual Port Block Memory and Single Port -- +-- Block Memory LogiCOREs, please consult the data sheet. -- +-------------------------------------------------------------------------------- + +-- Interfaces: +-- AXI_SLAVE_S_AXI +-- AXI_SLAVE +-- AXILite_SLAVE_S_AXI +-- AXILite_SLAVE +-- BRAM_PORTA +-- BRAM_PORTA +-- BRAM_PORTB +-- BRAM_PORTB + +-- The following code must appear in the VHDL architecture header: + +------------- Begin Cut here for COMPONENT Declaration ------ COMP_TAG +COMPONENT blockMemory + PORT ( + clka : IN STD_LOGIC; + rsta : IN STD_LOGIC; + wea : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + addra : IN STD_LOGIC_VECTOR(3 DOWNTO 0); + dina : IN STD_LOGIC_VECTOR(63 DOWNTO 0); + douta : OUT STD_LOGIC_VECTOR(63 DOWNTO 0) + ); +END COMPONENT; +-- COMP_TAG_END ------ End COMPONENT Declaration ------------ + +-- The following code must appear in the VHDL architecture +-- body. Substitute your own instance name and net names. + +------------- Begin Cut here for INSTANTIATION Template ----- INST_TAG +your_instance_name : blockMemory + PORT MAP ( + clka => clka, + rsta => rsta, + wea => wea, + addra => addra, + dina => dina, + douta => douta + ); +-- INST_TAG_END ------ End INSTANTIATION Template ------------ + +-- You must compile the wrapper file blockMemory.vhd when simulating +-- the core, blockMemory. When compiling the wrapper file, be sure to +-- reference the XilinxCoreLib VHDL simulation library. For detailed +-- instructions, please refer to the "CORE Generator Help". + Index: trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.asy =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.asy (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64/blockMemory.asy (revision 5) @@ -0,0 +1,29 @@ +Version 4 +SymbolType BLOCK +TEXT 32 32 LEFT 4 blockMemory +RECTANGLE Normal 32 32 544 1376 +LINE Wide 0 80 32 80 +PIN 0 80 LEFT 36 +PINATTR PinName addra[3:0] +PINATTR Polarity IN +LINE Wide 0 112 32 112 +PIN 0 112 LEFT 36 +PINATTR PinName dina[63:0] +PINATTR Polarity IN +LINE Wide 0 208 32 208 +PIN 0 208 LEFT 36 +PINATTR PinName wea[0:0] +PINATTR Polarity IN +LINE Normal 0 240 32 240 +PIN 0 240 LEFT 36 +PINATTR PinName rsta +PINATTR Polarity IN +LINE Normal 0 272 32 272 +PIN 0 272 LEFT 36 +PINATTR PinName clka +PINATTR Polarity IN +LINE Wide 576 80 544 80 +PIN 576 80 RIGHT 36 +PINATTR PinName douta[63:0] +PINATTR Polarity OUT + Index: trunk/rtl/vhdl/mod_exp/blockMemory64 =================================================================== --- trunk/rtl/vhdl/mod_exp/blockMemory64 (nonexistent) +++ trunk/rtl/vhdl/mod_exp/blockMemory64 (revision 5)
trunk/rtl/vhdl/mod_exp/blockMemory64 Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: trunk/sim/rtl_sim/bin/ModExp512bitTB_stx_beh.prj =================================================================== --- trunk/sim/rtl_sim/bin/ModExp512bitTB_stx_beh.prj (nonexistent) +++ trunk/sim/rtl_sim/bin/ModExp512bitTB_stx_beh.prj (revision 5) @@ -0,0 +1,9 @@ +vhdl isim_temp "../../../rtl/vhdl/mod_exp/blockMemory512/blockMemory.vhd" +vhdl isim_temp "../../../rtl/vhdl/commons/properties.vhd" +vhdl isim_temp "../../../rtl/vhdl/mod_mult/ModMultIter_SM.vhd" +vhdl isim_temp "../../../rtl/vhdl/commons/MontMult4inMux.vhd" +vhdl isim_temp "../../../rtl/vhdl/mod_mult/ModularMultiplierIterative.vhd" +vhdl isim_temp "../../../rtl/vhdl/mod_exp/ModExpSM.vhd" +vhdl isim_temp "../../../rtl/vhdl/commons/Reg.vhd" +vhdl isim_temp "../../../rtl/vhdl/mod_exp/ModExp.vhd" +vhdl isim_temp "../../../bench/vhdl/mod_exp/ModExp512bitTB.vhd" Index: trunk/sim/rtl_sim/bin/ModExp64bitTB_stx_beh.prj =================================================================== --- trunk/sim/rtl_sim/bin/ModExp64bitTB_stx_beh.prj (nonexistent) +++ trunk/sim/rtl_sim/bin/ModExp64bitTB_stx_beh.prj (revision 5) @@ -0,0 +1,9 @@ +vhdl isim_temp "../../../rtl/vhdl/mod_exp/blockMemory64/blockMemory.vhd" +vhdl isim_temp "../../../rtl/vhdl/commons/properties_64bit.vhd" +vhdl isim_temp "../../../rtl/vhdl/mod_mult/ModMultIter_SM.vhd" +vhdl isim_temp "../../../rtl/vhdl/commons/MontMult4inMux.vhd" +vhdl isim_temp "../../../rtl/vhdl/mod_mult/ModularMultiplierIterative.vhd" +vhdl isim_temp "../../../rtl/vhdl/mod_exp/ModExpSM.vhd" +vhdl isim_temp "../../../rtl/vhdl/commons/Reg.vhd" +vhdl isim_temp "../../../rtl/vhdl/mod_exp/ModExp.vhd" +vhdl isim_temp "../../../bench/vhdl/mod_exp/ModExp64bitTB.vhd" Index: trunk/sim/rtl_sim/bin/ModExp512bitTB_beh.prj =================================================================== --- trunk/sim/rtl_sim/bin/ModExp512bitTB_beh.prj (nonexistent) +++ trunk/sim/rtl_sim/bin/ModExp512bitTB_beh.prj (revision 5) @@ -0,0 +1,9 @@ +vhdl work "../../../rtl/vhdl/mod_exp/blockMemory512/blockMemory.vhd" +vhdl work "../../../rtl/vhdl/commons/properties.vhd" +vhdl work "../../../rtl/vhdl/mod_mult/ModMultIter_SM.vhd" +vhdl work "../../../rtl/vhdl/commons/MontMult4inMux.vhd" +vhdl work "../../../rtl/vhdl/mod_mult/ModularMultiplierIterative.vhd" +vhdl work "../../../rtl/vhdl/commons/Reg.vhd" +vhdl work "../../../rtl/vhdl/mod_exp/ModExpSM.vhd" +vhdl work "../../../rtl/vhdl/mod_exp/ModExp.vhd" +vhdl work "../../../bench/vhdl/mod_exp/ModExp512bitTB.vhd" Index: trunk/sim/rtl_sim/bin/ModExp64bitTB_beh.prj =================================================================== --- trunk/sim/rtl_sim/bin/ModExp64bitTB_beh.prj (nonexistent) +++ trunk/sim/rtl_sim/bin/ModExp64bitTB_beh.prj (revision 5) @@ -0,0 +1,9 @@ +vhdl work "../../../rtl/vhdl/mod_exp/blockMemory64/blockMemory.vhd" +vhdl work "../../../rtl/vhdl/commons/properties_64bit.vhd" +vhdl work "../../../rtl/vhdl/mod_mult/ModMultIter_SM.vhd" +vhdl work "../../../rtl/vhdl/commons/MontMult4inMux.vhd" +vhdl work "../../../rtl/vhdl/mod_mult/ModularMultiplierIterative.vhd" +vhdl work "../../../rtl/vhdl/mod_exp/ModExpSM.vhd" +vhdl work "../../../rtl/vhdl/commons/Reg.vhd" +vhdl work "../../../rtl/vhdl/mod_exp/ModExp.vhd" +vhdl work "../../../bench/vhdl/mod_exp/ModExp64bitTB.vhd" Index: trunk/sim/rtl_sim/bin/ModExp32bitTB_stx_beh.prj =================================================================== --- trunk/sim/rtl_sim/bin/ModExp32bitTB_stx_beh.prj (nonexistent) +++ trunk/sim/rtl_sim/bin/ModExp32bitTB_stx_beh.prj (revision 5) @@ -0,0 +1,9 @@ +vhdl isim_temp "../../../rtl/vhdl/mod_exp/blockMemory32/blockMemory.vhd" +vhdl isim_temp "../../../rtl/vhdl/commons/properties_32bit.vhd" +vhdl isim_temp "../../../rtl/vhdl/mod_mult/ModMultIter_SM.vhd" +vhdl isim_temp "../../../rtl/vhdl/commons/MontMult4inMux.vhd" +vhdl isim_temp "../../../rtl/vhdl/mod_mult/ModularMultiplierIterative.vhd" +vhdl isim_temp "../../../rtl/vhdl/mod_exp/ModExpSM.vhd" +vhdl isim_temp "../../../rtl/vhdl/commons/Reg.vhd" +vhdl isim_temp "../../../rtl/vhdl/mod_exp/ModExp.vhd" +vhdl isim_temp "../../../bench/vhdl/mod_exp/ModExp32bitTB.vhd" Index: trunk/sim/rtl_sim/bin/Makefile =================================================================== --- trunk/sim/rtl_sim/bin/Makefile (revision 4) +++ trunk/sim/rtl_sim/bin/Makefile (revision 5) @@ -16,6 +16,7 @@ $(RM) *.xmsgs $(RM) ./fuseRelaunch.cmd $(RM) *.exe + $(RM) *.wdb exports: export DISPLAY=:0 @@ -24,7 +25,7 @@ export PATH=${XILINX}/bin/${SYSOP} export LD_LIBRARY_PATH=${XILINX}/lib/${SYSOP} -ModMult32: +ModMult32: exports $(VHPCOMP) -work isim_temp -intstyle ise -prj ./ModularMultiplierIterative32bitTB_stx_beh.prj $(FUSE) -intstyle ise -incremental -o ModularMultiplierIterative32bitTB_isim_beh.exe -prj ./ModularMultiplierIterative32bitTB_beh.prj work.ModularMultiplierIterative32bitTB @@ -31,14 +32,35 @@ run_ModMult32: exports ModMult32 "./ModularMultiplierIterative32bitTB_isim_beh.exe" -intstyle ise -tclbatch isim.cmd -wdb "./ModularMultiplierIterative32bitTB_isim_beh.wdb" -ModMult64: +ModMult64: exports $(FUSE) -intstyle ise -incremental -o ModularMultiplierIterative64bitTB_isim_beh.exe -prj ./ModularMultiplierIterative64bitTB_beh.prj work.ModularMultiplierIterative64bitTB run_ModMult64: exports ModMult64 "./ModularMultiplierIterative64bitTB_isim_beh.exe" -intstyle ise -tclbatch isim.cmd -wdb "ModularMultiplierIterative64bitTB_isim_beh.wdb" -ModMult512: +ModMult512: exports $(FUSE) -intstyle ise -incremental -o ModularMultiplierIterative512bitTB_isim_beh.exe -prj ./ModularMultiplierIterative512bitTB_beh.prj work.ModularMultiplierIterative512bitTB run_ModMult512: exports ModMult512 - "./ModularMultiplierIterative512bitTB_isim_beh.exe" -intstyle ise -tclbatch isim.cmd -wdb "ModularMultiplierIterative512bitTB_isim_beh.wdb" \ No newline at end of file + "./ModularMultiplierIterative512bitTB_isim_beh.exe" -intstyle ise -tclbatch isim.cmd -wdb "ModularMultiplierIterative512bitTB_isim_beh.wdb" + +ModExp32: exports + $(VHPCOMP) -work isim_temp -intstyle ise -prj ./ModExp32bitTB_stx_beh.prj + $(FUSE) -intstyle ise -incremental -o ModExp32bitTB_isim_beh.exe -prj ./ModExp32bitTB_beh.prj work.ModExp32bitTB + +run_ModExp32: exports ModExp32 + "./ModExp32bitTB_isim_beh.exe" -intstyle ise -tclbatch isim.cmd -wdb "./ModExp32bitTB_isim_beh.wdb" + +ModExp64: exports + $(VHPCOMP) -work isim_temp -intstyle ise -prj ./ModExp64bitTB_stx_beh.prj + $(FUSE) -intstyle ise -incremental -o ModExp64bitTB_isim_beh.exe -prj ./ModExp64bitTB_beh.prj work.ModExp64bitTB + +run_ModExp64: exports ModExp64 + "./ModExp64bitTB_isim_beh.exe" -intstyle ise -tclbatch isim.cmd -wdb "./ModExp64bitTB_isim_beh.wdb" + +ModExp512: exports + $(VHPCOMP) -work isim_temp -intstyle ise -prj ./ModExp512bitTB_stx_beh.prj + $(FUSE) -intstyle ise -incremental -o ModExp512bitTB_isim_beh.exe -prj ./ModExp512bitTB_beh.prj work.ModExp512bitTB + +run_ModExp512: exports ModExp512 + "./ModExp512bitTB_isim_beh.exe" -intstyle ise -tclbatch isim.cmd -wdb "./ModExp512bitTB_isim_beh.wdb"
/trunk/sim/rtl_sim/bin/ModExp32bitTB_beh.prj
0,0 → 1,9
vhdl work "../../../rtl/vhdl/mod_exp/blockMemory32/blockMemory.vhd"
vhdl work "../../../rtl/vhdl/commons/properties_32bit.vhd"
vhdl work "../../../rtl/vhdl/mod_mult/ModMultIter_SM.vhd"
vhdl work "../../../rtl/vhdl/commons/MontMult4inMux.vhd"
vhdl work "../../../rtl/vhdl/mod_mult/ModularMultiplierIterative.vhd"
vhdl work "../../../rtl/vhdl/commons/Reg.vhd"
vhdl work "../../../rtl/vhdl/mod_exp/ModExpSM.vhd"
vhdl work "../../../rtl/vhdl/mod_exp/ModExp.vhd"
vhdl work "../../../bench/vhdl/mod_exp/ModExp32bitTB.vhd"
/trunk/syn/XC3ES500/mod_exp/ModExp64.prj
0,0 → 1,8
vhdl work "../../../rtl/vhdl/mod_exp/blockMemory64/blockMemory.vhd"
vhdl work "../../../rtl/vhdl/commons/properties_64bit.vhd"
vhdl work "../../../rtl/vhdl/mod_mult/ModMultIter_SM.vhd"
vhdl work "../../../rtl/vhdl/commons/MontMult4inMux.vhd"
vhdl work "../../../rtl/vhdl/mod_mult/ModularMultiplierIterative.vhd"
vhdl work "../../../rtl/vhdl/commons/Reg.vhd"
vhdl work "../../../rtl/vhdl/mod_exp/ModExpSM.vhd"
vhdl work "../../../rtl/vhdl/mod_exp/ModExp.vhd"
/trunk/syn/XC3ES500/mod_exp/ModExp512.xst
0,0 → 1,57
set -tmpdir "xst/projnav.tmp"
set -xsthdpdir "xst"
run
-ifn ModExp512.prj
-ifmt mixed
-ofn ModExp
-ofmt NGC
-p xc3s500e-5-fg320
-top ModExp
-opt_mode Speed
-opt_level 1
-iuc NO
-keep_hierarchy Soft
-netlist_hierarchy As_Optimized
-rtlview Yes
-glob_opt AllClockNets
-read_cores YES
-sd {"../../../rtl/vhdl/mod_exp/blockMemory512" }
-write_timing_constraints NO
-cross_clock_analysis NO
-hierarchy_separator /
-bus_delimiter <>
-case Maintain
-slice_utilization_ratio 100
-bram_utilization_ratio 100
-verilog2001 YES
-fsm_extract YES -fsm_encoding Auto
-safe_implementation No
-fsm_style LUT
-ram_extract Yes
-ram_style Auto
-rom_extract Yes
-mux_style Auto
-decoder_extract YES
-priority_extract Yes
-shreg_extract YES
-shift_extract YES
-xor_collapse YES
-rom_style Auto
-auto_bram_packing NO
-mux_extract Yes
-resource_sharing YES
-async_to_sync NO
-mult_style Auto
-iobuf YES
-max_fanout 100000
-bufg 24
-register_duplication YES
-register_balancing No
-slice_packing YES
-optimize_primitives NO
-use_clock_enable Yes
-use_sync_set Yes
-use_sync_reset Yes
-iob Auto
-equivalent_register_removal YES
-slice_utilization_ratio_maxmargin 5
/trunk/syn/XC3ES500/mod_exp/ModExp.ut
0,0 → 1,22
-w
-g DebugBitstream:No
-g Binary:no
-g CRC:Enable
-g ConfigRate:1
-g ProgPin:PullUp
-g DonePin:PullUp
-g TckPin:PullUp
-g TdiPin:PullUp
-g TdoPin:PullUp
-g TmsPin:PullUp
-g UnusedPin:PullDown
-g UserID:0xFFFFFFFF
-g DCMShutdown:Disable
-g StartUpClk:CClk
-g DONE_cycle:4
-g GTS_cycle:5
-g GWE_cycle:6
-g LCK_cycle:NoWait
-g Security:None
-g DonePipe:Yes
-g DriveDone:No
/trunk/syn/XC3ES500/mod_exp/ModExp64.xst
0,0 → 1,57
set -tmpdir "xst/projnav.tmp"
set -xsthdpdir "xst"
run
-ifn ModExp64.prj
-ifmt mixed
-ofn ModExp
-ofmt NGC
-p xc3s500e-5-fg320
-top ModExp
-opt_mode Speed
-opt_level 1
-iuc NO
-keep_hierarchy Soft
-netlist_hierarchy As_Optimized
-rtlview Yes
-glob_opt AllClockNets
-read_cores YES
-sd {"../../../rtl/vhdl/mod_exp/blockMemory64" }
-write_timing_constraints NO
-cross_clock_analysis NO
-hierarchy_separator /
-bus_delimiter <>
-case Maintain
-slice_utilization_ratio 100
-bram_utilization_ratio 100
-verilog2001 YES
-fsm_extract YES -fsm_encoding Auto
-safe_implementation No
-fsm_style LUT
-ram_extract Yes
-ram_style Auto
-rom_extract Yes
-mux_style Auto
-decoder_extract YES
-priority_extract Yes
-shreg_extract YES
-shift_extract YES
-xor_collapse YES
-rom_style Auto
-auto_bram_packing NO
-mux_extract Yes
-resource_sharing YES
-async_to_sync NO
-mult_style Auto
-iobuf YES
-max_fanout 100000
-bufg 24
-register_duplication YES
-register_balancing No
-slice_packing YES
-optimize_primitives NO
-use_clock_enable Yes
-use_sync_set Yes
-use_sync_reset Yes
-iob Auto
-equivalent_register_removal YES
-slice_utilization_ratio_maxmargin 5
/trunk/syn/XC3ES500/mod_exp/ModExp32.prj
0,0 → 1,8
vhdl work "../../../rtl/vhdl/mod_exp/blockMemory32/blockMemory.vhd"
vhdl work "../../../rtl/vhdl/commons/properties_32bit.vhd"
vhdl work "../../../rtl/vhdl/mod_mult/ModMultIter_SM.vhd"
vhdl work "../../../rtl/vhdl/commons/MontMult4inMux.vhd"
vhdl work "../../../rtl/vhdl/mod_mult/ModularMultiplierIterative.vhd"
vhdl work "../../../rtl/vhdl/commons/Reg.vhd"
vhdl work "../../../rtl/vhdl/mod_exp/ModExpSM.vhd"
vhdl work "../../../rtl/vhdl/mod_exp/ModExp.vhd"
/trunk/syn/XC3ES500/mod_exp/Makefile
0,0 → 1,58
PROJECT=mont-exp
 
RM=/bin/rm -rf
CP=/bin/cp
 
PLATFORM=xc3s500e-fg320-5
 
XILINX_DIR="D:/Programy/Xilinx/14.2/ISE_DS/ISE/bin/nt64/"
XST_DIR=$(XILINX_DIR)"xst.exe"
NGDBUILD_DIR=$(XILINX_DIR)"ngdbuild.exe"
MAP=$(XILINX_DIR)"map.exe"
PAR=$(XILINX_DIR)"par.exe"
TRCE=$(XILINX_DIR)"trce.exe"
BITGEN=$(XILINX_DIR)"bitgen.exe"
 
clean: clean_postgen
$(RM) "./out/"*.*
$(RM) "./log/"*.*
$(RM) "./out/"
$(RM) "./log/"
 
clean_postgen:
$(RM) "./_xmsgs"
$(RM) "./_ngo"
$(RM) "./xlnx_auto_0_xdb"
$(RM) "./xst"
$(RM) *_vhdl.prj *.bgn *.bld *.csv *.drc *.lso *.map *.mrp *.ncd *.ngc *.ngd *.ngm *.ngr *.pad *.par *.pcf *.ptwx *.syr *.twr *.twx *.unroutes *.xpi *.xwbt
 
synthesize: clean
mkdir "./xst"
mkdir "./xst/projnav.tmp"
mkdir "./out/"
mkdir "./log/"
 
$(XST_DIR) -intstyle ise -ifn "./ModExp$(word).xst" -ofn "./ModExp.syr"
 
translate: synthesize
$(NGDBUILD_DIR) -intstyle ise -dd _ngo -sd "../../../rtl/vhdl/mod_exp/blockMemory$(word)" -nt timestamp -i -p $(PLATFORM) "ModExp.ngc" ModExp.ngd
 
map: translate
$(MAP) -intstyle ise -p $(PLATFORM) -cm area -ir off -pr off -c 100 -o ModExp_map.ncd ModExp.ngd ModExp.pcf
 
par: map
$(PAR) -w -intstyle ise -ol high -t 1 ModExp_map.ncd ModExp.ncd ModExp.pcf
 
trce: par
$(TRCE) -intstyle ise -v 3 -s 4 -n 3 -fastpaths -xml ModExp.twx ModExp.ncd -o ModExp.twr ModExp.pcf
 
bitgen: trce
$(BITGEN) -intstyle ise -f ModExp.ut ModExp.ncd
 
postgen:
mv *.log ./log
mv *.xrpt ./log
mv *.txt ./log
mv *.xml ./log
mv *.html ./log
mv *.bit ./out
/trunk/syn/XC3ES500/mod_exp/ModExp512.prj
0,0 → 1,8
vhdl work "../../../rtl/vhdl/mod_exp/blockMemory512/blockMemory.vhd"
vhdl work "../../../rtl/vhdl/commons/properties.vhd"
vhdl work "../../../rtl/vhdl/mod_mult/ModMultIter_SM.vhd"
vhdl work "../../../rtl/vhdl/commons/MontMult4inMux.vhd"
vhdl work "../../../rtl/vhdl/mod_mult/ModularMultiplierIterative.vhd"
vhdl work "../../../rtl/vhdl/commons/Reg.vhd"
vhdl work "../../../rtl/vhdl/mod_exp/ModExpSM.vhd"
vhdl work "../../../rtl/vhdl/mod_exp/ModExp.vhd"
/trunk/syn/XC3ES500/mod_exp/ModExp32.xst
0,0 → 1,57
set -tmpdir "xst/projnav.tmp"
set -xsthdpdir "xst"
run
-ifn ModExp32.prj
-ifmt mixed
-ofn ModExp
-ofmt NGC
-p xc3s500e-5-fg320
-top ModExp
-opt_mode Speed
-opt_level 1
-iuc NO
-keep_hierarchy Soft
-netlist_hierarchy As_Optimized
-rtlview Yes
-glob_opt AllClockNets
-read_cores YES
-sd {"../../../rtl/vhdl/mod_exp/blockMemory32" }
-write_timing_constraints NO
-cross_clock_analysis NO
-hierarchy_separator /
-bus_delimiter <>
-case Maintain
-slice_utilization_ratio 100
-bram_utilization_ratio 100
-verilog2001 YES
-fsm_extract YES -fsm_encoding Auto
-safe_implementation No
-fsm_style LUT
-ram_extract Yes
-ram_style Auto
-rom_extract Yes
-mux_style Auto
-decoder_extract YES
-priority_extract Yes
-shreg_extract YES
-shift_extract YES
-xor_collapse YES
-rom_style Auto
-auto_bram_packing NO
-mux_extract Yes
-resource_sharing YES
-async_to_sync NO
-mult_style Auto
-iobuf YES
-max_fanout 100000
-bufg 24
-register_duplication YES
-register_balancing No
-slice_packing YES
-optimize_primitives NO
-use_clock_enable Yes
-use_sync_set Yes
-use_sync_reset Yes
-iob Auto
-equivalent_register_removal YES
-slice_utilization_ratio_maxmargin 5
trunk/syn/XC3ES500/mod_exp Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property

powered by: WebSVN 2.1.0

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